aboutsummaryrefslogtreecommitdiff
path: root/lib/unicode/prop/uprop_get_nfkc_qc.c
blob: 18d1d0fb008f20bc3c290763d5dd79976f14df68 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
/* This file is autogenerated by gen/prop/nfXX_qc; DO NOT EDIT. */

/* The macros.h include may be unused */

#include "_bsearch.h"
#include "macros.h"
#include "rune.h"
#include "unicode/prop.h"

static constexpr enum uprop_nfkc_qc lookup_lat1[] = {
	NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y,
	NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y,
	NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y,
	NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y,
	NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y,
	NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y,
	NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y,
	NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y,
	NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y,
	NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y,
	NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y,
	NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y,
	NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y,
	NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y,
	NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y,
	NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y,
	NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y,
	NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y,
	NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y,
	NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y,
	NFKC_QC_N, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y,
	NFKC_QC_N, NFKC_QC_Y, NFKC_QC_N, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_N,
	NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_N, NFKC_QC_N, NFKC_QC_N, NFKC_QC_N, NFKC_QC_Y, NFKC_QC_Y,
	NFKC_QC_N, NFKC_QC_N, NFKC_QC_N, NFKC_QC_Y, NFKC_QC_N, NFKC_QC_N, NFKC_QC_N, NFKC_QC_Y,
	NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y,
	NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y,
	NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y,
	NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y,
	NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y,
	NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y,
	NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y,
	NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y, NFKC_QC_Y,
};

static const struct {
	rune lo, hi;
	enum uprop_nfkc_qc val;
} lookup[] = {
	{RUNE_C(0x000132), RUNE_C(0x000133), NFKC_QC_N},
	{RUNE_C(0x00013F), RUNE_C(0x000140), NFKC_QC_N},
	{RUNE_C(0x000149), RUNE_C(0x000149), NFKC_QC_N},
	{RUNE_C(0x00017F), RUNE_C(0x00017F), NFKC_QC_N},
	{RUNE_C(0x0001C4), RUNE_C(0x0001CC), NFKC_QC_N},
	{RUNE_C(0x0001F1), RUNE_C(0x0001F3), NFKC_QC_N},
	{RUNE_C(0x0002B0), RUNE_C(0x0002B8), NFKC_QC_N},
	{RUNE_C(0x0002D8), RUNE_C(0x0002DD), NFKC_QC_N},
	{RUNE_C(0x0002E0), RUNE_C(0x0002E4), NFKC_QC_N},
	{RUNE_C(0x000300), RUNE_C(0x000304), NFKC_QC_M},
	{RUNE_C(0x000306), RUNE_C(0x00030C), NFKC_QC_M},
	{RUNE_C(0x00030F), RUNE_C(0x00030F), NFKC_QC_M},
	{RUNE_C(0x000311), RUNE_C(0x000311), NFKC_QC_M},
	{RUNE_C(0x000313), RUNE_C(0x000314), NFKC_QC_M},
	{RUNE_C(0x00031B), RUNE_C(0x00031B), NFKC_QC_M},
	{RUNE_C(0x000323), RUNE_C(0x000328), NFKC_QC_M},
	{RUNE_C(0x00032D), RUNE_C(0x00032E), NFKC_QC_M},
	{RUNE_C(0x000330), RUNE_C(0x000331), NFKC_QC_M},
	{RUNE_C(0x000338), RUNE_C(0x000338), NFKC_QC_M},
	{RUNE_C(0x000340), RUNE_C(0x000341), NFKC_QC_N},
	{RUNE_C(0x000342), RUNE_C(0x000342), NFKC_QC_M},
	{RUNE_C(0x000343), RUNE_C(0x000344), NFKC_QC_N},
	{RUNE_C(0x000345), RUNE_C(0x000345), NFKC_QC_M},
	{RUNE_C(0x000374), RUNE_C(0x000374), NFKC_QC_N},
	{RUNE_C(0x00037A), RUNE_C(0x00037A), NFKC_QC_N},
	{RUNE_C(0x00037E), RUNE_C(0x00037E), NFKC_QC_N},
	{RUNE_C(0x000384), RUNE_C(0x000385), NFKC_QC_N},
	{RUNE_C(0x000387), RUNE_C(0x000387), NFKC_QC_N},
	{RUNE_C(0x0003D0), RUNE_C(0x0003D6), NFKC_QC_N},
	{RUNE_C(0x0003F0), RUNE_C(0x0003F2), NFKC_QC_N},
	{RUNE_C(0x0003F4), RUNE_C(0x0003F5), NFKC_QC_N},
	{RUNE_C(0x0003F9), RUNE_C(0x0003F9), NFKC_QC_N},
	{RUNE_C(0x000587), RUNE_C(0x000587), NFKC_QC_N},
	{RUNE_C(0x000653), RUNE_C(0x000655), NFKC_QC_M},
	{RUNE_C(0x000675), RUNE_C(0x000678), NFKC_QC_N},
	{RUNE_C(0x00093C), RUNE_C(0x00093C), NFKC_QC_M},
	{RUNE_C(0x000958), RUNE_C(0x00095F), NFKC_QC_N},
	{RUNE_C(0x0009BE), RUNE_C(0x0009BE), NFKC_QC_M},
	{RUNE_C(0x0009D7), RUNE_C(0x0009D7), NFKC_QC_M},
	{RUNE_C(0x0009DC), RUNE_C(0x0009DD), NFKC_QC_N},
	{RUNE_C(0x0009DF), RUNE_C(0x0009DF), NFKC_QC_N},
	{RUNE_C(0x000A33), RUNE_C(0x000A33), NFKC_QC_N},
	{RUNE_C(0x000A36), RUNE_C(0x000A36), NFKC_QC_N},
	{RUNE_C(0x000A59), RUNE_C(0x000A5B), NFKC_QC_N},
	{RUNE_C(0x000A5E), RUNE_C(0x000A5E), NFKC_QC_N},
	{RUNE_C(0x000B3E), RUNE_C(0x000B3E), NFKC_QC_M},
	{RUNE_C(0x000B56), RUNE_C(0x000B57), NFKC_QC_M},
	{RUNE_C(0x000B5C), RUNE_C(0x000B5D), NFKC_QC_N},
	{RUNE_C(0x000BBE), RUNE_C(0x000BBE), NFKC_QC_M},
	{RUNE_C(0x000BD7), RUNE_C(0x000BD7), NFKC_QC_M},
	{RUNE_C(0x000C56), RUNE_C(0x000C56), NFKC_QC_M},
	{RUNE_C(0x000CC2), RUNE_C(0x000CC2), NFKC_QC_M},
	{RUNE_C(0x000CD5), RUNE_C(0x000CD6), NFKC_QC_M},
	{RUNE_C(0x000D3E), RUNE_C(0x000D3E), NFKC_QC_M},
	{RUNE_C(0x000D57), RUNE_C(0x000D57), NFKC_QC_M},
	{RUNE_C(0x000DCA), RUNE_C(0x000DCA), NFKC_QC_M},
	{RUNE_C(0x000DCF), RUNE_C(0x000DCF), NFKC_QC_M},
	{RUNE_C(0x000DDF), RUNE_C(0x000DDF), NFKC_QC_M},
	{RUNE_C(0x000E33), RUNE_C(0x000E33), NFKC_QC_N},
	{RUNE_C(0x000EB3), RUNE_C(0x000EB3), NFKC_QC_N},
	{RUNE_C(0x000EDC), RUNE_C(0x000EDD), NFKC_QC_N},
	{RUNE_C(0x000F0C), RUNE_C(0x000F0C), NFKC_QC_N},
	{RUNE_C(0x000F43), RUNE_C(0x000F43), NFKC_QC_N},
	{RUNE_C(0x000F4D), RUNE_C(0x000F4D), NFKC_QC_N},
	{RUNE_C(0x000F52), RUNE_C(0x000F52), NFKC_QC_N},
	{RUNE_C(0x000F57), RUNE_C(0x000F57), NFKC_QC_N},
	{RUNE_C(0x000F5C), RUNE_C(0x000F5C), NFKC_QC_N},
	{RUNE_C(0x000F69), RUNE_C(0x000F69), NFKC_QC_N},
	{RUNE_C(0x000F73), RUNE_C(0x000F73), NFKC_QC_N},
	{RUNE_C(0x000F75), RUNE_C(0x000F79), NFKC_QC_N},
	{RUNE_C(0x000F81), RUNE_C(0x000F81), NFKC_QC_N},
	{RUNE_C(0x000F93), RUNE_C(0x000F93), NFKC_QC_N},
	{RUNE_C(0x000F9D), RUNE_C(0x000F9D), NFKC_QC_N},
	{RUNE_C(0x000FA2), RUNE_C(0x000FA2), NFKC_QC_N},
	{RUNE_C(0x000FA7), RUNE_C(0x000FA7), NFKC_QC_N},
	{RUNE_C(0x000FAC), RUNE_C(0x000FAC), NFKC_QC_N},
	{RUNE_C(0x000FB9), RUNE_C(0x000FB9), NFKC_QC_N},
	{RUNE_C(0x00102E), RUNE_C(0x00102E), NFKC_QC_M},
	{RUNE_C(0x0010FC), RUNE_C(0x0010FC), NFKC_QC_N},
	{RUNE_C(0x001161), RUNE_C(0x001175), NFKC_QC_M},
	{RUNE_C(0x0011A8), RUNE_C(0x0011C2), NFKC_QC_M},
	{RUNE_C(0x001B35), RUNE_C(0x001B35), NFKC_QC_M},
	{RUNE_C(0x001D2C), RUNE_C(0x001D2E), NFKC_QC_N},
	{RUNE_C(0x001D30), RUNE_C(0x001D3A), NFKC_QC_N},
	{RUNE_C(0x001D3C), RUNE_C(0x001D4D), NFKC_QC_N},
	{RUNE_C(0x001D4F), RUNE_C(0x001D6A), NFKC_QC_N},
	{RUNE_C(0x001D78), RUNE_C(0x001D78), NFKC_QC_N},
	{RUNE_C(0x001D9B), RUNE_C(0x001DBF), NFKC_QC_N},
	{RUNE_C(0x001E9A), RUNE_C(0x001E9B), NFKC_QC_N},
	{RUNE_C(0x001F71), RUNE_C(0x001F71), NFKC_QC_N},
	{RUNE_C(0x001F73), RUNE_C(0x001F73), NFKC_QC_N},
	{RUNE_C(0x001F75), RUNE_C(0x001F75), NFKC_QC_N},
	{RUNE_C(0x001F77), RUNE_C(0x001F77), NFKC_QC_N},
	{RUNE_C(0x001F79), RUNE_C(0x001F79), NFKC_QC_N},
	{RUNE_C(0x001F7B), RUNE_C(0x001F7B), NFKC_QC_N},
	{RUNE_C(0x001F7D), RUNE_C(0x001F7D), NFKC_QC_N},
	{RUNE_C(0x001FBB), RUNE_C(0x001FBB), NFKC_QC_N},
	{RUNE_C(0x001FBD), RUNE_C(0x001FC1), NFKC_QC_N},
	{RUNE_C(0x001FC9), RUNE_C(0x001FC9), NFKC_QC_N},
	{RUNE_C(0x001FCB), RUNE_C(0x001FCB), NFKC_QC_N},
	{RUNE_C(0x001FCD), RUNE_C(0x001FCF), NFKC_QC_N},
	{RUNE_C(0x001FD3), RUNE_C(0x001FD3), NFKC_QC_N},
	{RUNE_C(0x001FDB), RUNE_C(0x001FDB), NFKC_QC_N},
	{RUNE_C(0x001FDD), RUNE_C(0x001FDF), NFKC_QC_N},
	{RUNE_C(0x001FE3), RUNE_C(0x001FE3), NFKC_QC_N},
	{RUNE_C(0x001FEB), RUNE_C(0x001FEB), NFKC_QC_N},
	{RUNE_C(0x001FED), RUNE_C(0x001FEF), NFKC_QC_N},
	{RUNE_C(0x001FF9), RUNE_C(0x001FF9), NFKC_QC_N},
	{RUNE_C(0x001FFB), RUNE_C(0x001FFB), NFKC_QC_N},
	{RUNE_C(0x001FFD), RUNE_C(0x001FFE), NFKC_QC_N},
	{RUNE_C(0x002000), RUNE_C(0x00200A), NFKC_QC_N},
	{RUNE_C(0x002011), RUNE_C(0x002011), NFKC_QC_N},
	{RUNE_C(0x002017), RUNE_C(0x002017), NFKC_QC_N},
	{RUNE_C(0x002024), RUNE_C(0x002026), NFKC_QC_N},
	{RUNE_C(0x00202F), RUNE_C(0x00202F), NFKC_QC_N},
	{RUNE_C(0x002033), RUNE_C(0x002034), NFKC_QC_N},
	{RUNE_C(0x002036), RUNE_C(0x002037), NFKC_QC_N},
	{RUNE_C(0x00203C), RUNE_C(0x00203C), NFKC_QC_N},
	{RUNE_C(0x00203E), RUNE_C(0x00203E), NFKC_QC_N},
	{RUNE_C(0x002047), RUNE_C(0x002049), NFKC_QC_N},
	{RUNE_C(0x002057), RUNE_C(0x002057), NFKC_QC_N},
	{RUNE_C(0x00205F), RUNE_C(0x00205F), NFKC_QC_N},
	{RUNE_C(0x002070), RUNE_C(0x002071), NFKC_QC_N},
	{RUNE_C(0x002074), RUNE_C(0x00208E), NFKC_QC_N},
	{RUNE_C(0x002090), RUNE_C(0x00209C), NFKC_QC_N},
	{RUNE_C(0x0020A8), RUNE_C(0x0020A8), NFKC_QC_N},
	{RUNE_C(0x002100), RUNE_C(0x002103), NFKC_QC_N},
	{RUNE_C(0x002105), RUNE_C(0x002107), NFKC_QC_N},
	{RUNE_C(0x002109), RUNE_C(0x002113), NFKC_QC_N},
	{RUNE_C(0x002115), RUNE_C(0x002116), NFKC_QC_N},
	{RUNE_C(0x002119), RUNE_C(0x00211D), NFKC_QC_N},
	{RUNE_C(0x002120), RUNE_C(0x002122), NFKC_QC_N},
	{RUNE_C(0x002124), RUNE_C(0x002124), NFKC_QC_N},
	{RUNE_C(0x002126), RUNE_C(0x002126), NFKC_QC_N},
	{RUNE_C(0x002128), RUNE_C(0x002128), NFKC_QC_N},
	{RUNE_C(0x00212A), RUNE_C(0x00212D), NFKC_QC_N},
	{RUNE_C(0x00212F), RUNE_C(0x002131), NFKC_QC_N},
	{RUNE_C(0x002133), RUNE_C(0x002139), NFKC_QC_N},
	{RUNE_C(0x00213B), RUNE_C(0x002140), NFKC_QC_N},
	{RUNE_C(0x002145), RUNE_C(0x002149), NFKC_QC_N},
	{RUNE_C(0x002150), RUNE_C(0x00217F), NFKC_QC_N},
	{RUNE_C(0x002189), RUNE_C(0x002189), NFKC_QC_N},
	{RUNE_C(0x00222C), RUNE_C(0x00222D), NFKC_QC_N},
	{RUNE_C(0x00222F), RUNE_C(0x002230), NFKC_QC_N},
	{RUNE_C(0x002329), RUNE_C(0x00232A), NFKC_QC_N},
	{RUNE_C(0x002460), RUNE_C(0x0024EA), NFKC_QC_N},
	{RUNE_C(0x002A0C), RUNE_C(0x002A0C), NFKC_QC_N},
	{RUNE_C(0x002A74), RUNE_C(0x002A76), NFKC_QC_N},
	{RUNE_C(0x002ADC), RUNE_C(0x002ADC), NFKC_QC_N},
	{RUNE_C(0x002C7C), RUNE_C(0x002C7D), NFKC_QC_N},
	{RUNE_C(0x002D6F), RUNE_C(0x002D6F), NFKC_QC_N},
	{RUNE_C(0x002E9F), RUNE_C(0x002E9F), NFKC_QC_N},
	{RUNE_C(0x002EF3), RUNE_C(0x002EF3), NFKC_QC_N},
	{RUNE_C(0x002F00), RUNE_C(0x002FD5), NFKC_QC_N},
	{RUNE_C(0x003000), RUNE_C(0x003000), NFKC_QC_N},
	{RUNE_C(0x003036), RUNE_C(0x003036), NFKC_QC_N},
	{RUNE_C(0x003038), RUNE_C(0x00303A), NFKC_QC_N},
	{RUNE_C(0x003099), RUNE_C(0x00309A), NFKC_QC_M},
	{RUNE_C(0x00309B), RUNE_C(0x00309C), NFKC_QC_N},
	{RUNE_C(0x00309F), RUNE_C(0x00309F), NFKC_QC_N},
	{RUNE_C(0x0030FF), RUNE_C(0x0030FF), NFKC_QC_N},
	{RUNE_C(0x003131), RUNE_C(0x00318E), NFKC_QC_N},
	{RUNE_C(0x003192), RUNE_C(0x00319F), NFKC_QC_N},
	{RUNE_C(0x003200), RUNE_C(0x00321E), NFKC_QC_N},
	{RUNE_C(0x003220), RUNE_C(0x003247), NFKC_QC_N},
	{RUNE_C(0x003250), RUNE_C(0x00327E), NFKC_QC_N},
	{RUNE_C(0x003280), RUNE_C(0x0033FF), NFKC_QC_N},
	{RUNE_C(0x00A69C), RUNE_C(0x00A69D), NFKC_QC_N},
	{RUNE_C(0x00A770), RUNE_C(0x00A770), NFKC_QC_N},
	{RUNE_C(0x00A7F2), RUNE_C(0x00A7F4), NFKC_QC_N},
	{RUNE_C(0x00A7F8), RUNE_C(0x00A7F9), NFKC_QC_N},
	{RUNE_C(0x00AB5C), RUNE_C(0x00AB5F), NFKC_QC_N},
	{RUNE_C(0x00AB69), RUNE_C(0x00AB69), NFKC_QC_N},
	{RUNE_C(0x00F900), RUNE_C(0x00FA0D), NFKC_QC_N},
	{RUNE_C(0x00FA10), RUNE_C(0x00FA10), NFKC_QC_N},
	{RUNE_C(0x00FA12), RUNE_C(0x00FA12), NFKC_QC_N},
	{RUNE_C(0x00FA15), RUNE_C(0x00FA1E), NFKC_QC_N},
	{RUNE_C(0x00FA20), RUNE_C(0x00FA20), NFKC_QC_N},
	{RUNE_C(0x00FA22), RUNE_C(0x00FA22), NFKC_QC_N},
	{RUNE_C(0x00FA25), RUNE_C(0x00FA26), NFKC_QC_N},
	{RUNE_C(0x00FA2A), RUNE_C(0x00FA6D), NFKC_QC_N},
	{RUNE_C(0x00FA70), RUNE_C(0x00FAD9), NFKC_QC_N},
	{RUNE_C(0x00FB00), RUNE_C(0x00FB06), NFKC_QC_N},
	{RUNE_C(0x00FB13), RUNE_C(0x00FB17), NFKC_QC_N},
	{RUNE_C(0x00FB1D), RUNE_C(0x00FB1D), NFKC_QC_N},
	{RUNE_C(0x00FB1F), RUNE_C(0x00FB36), NFKC_QC_N},
	{RUNE_C(0x00FB38), RUNE_C(0x00FB3C), NFKC_QC_N},
	{RUNE_C(0x00FB3E), RUNE_C(0x00FB3E), NFKC_QC_N},
	{RUNE_C(0x00FB40), RUNE_C(0x00FB41), NFKC_QC_N},
	{RUNE_C(0x00FB43), RUNE_C(0x00FB44), NFKC_QC_N},
	{RUNE_C(0x00FB46), RUNE_C(0x00FBB1), NFKC_QC_N},
	{RUNE_C(0x00FBD3), RUNE_C(0x00FD3D), NFKC_QC_N},
	{RUNE_C(0x00FD50), RUNE_C(0x00FD8F), NFKC_QC_N},
	{RUNE_C(0x00FD92), RUNE_C(0x00FDC7), NFKC_QC_N},
	{RUNE_C(0x00FDF0), RUNE_C(0x00FDFC), NFKC_QC_N},
	{RUNE_C(0x00FE10), RUNE_C(0x00FE19), NFKC_QC_N},
	{RUNE_C(0x00FE30), RUNE_C(0x00FE44), NFKC_QC_N},
	{RUNE_C(0x00FE47), RUNE_C(0x00FE52), NFKC_QC_N},
	{RUNE_C(0x00FE54), RUNE_C(0x00FE66), NFKC_QC_N},
	{RUNE_C(0x00FE68), RUNE_C(0x00FE6B), NFKC_QC_N},
	{RUNE_C(0x00FE70), RUNE_C(0x00FE72), NFKC_QC_N},
	{RUNE_C(0x00FE74), RUNE_C(0x00FE74), NFKC_QC_N},
	{RUNE_C(0x00FE76), RUNE_C(0x00FEFC), NFKC_QC_N},
	{RUNE_C(0x00FF01), RUNE_C(0x00FFBE), NFKC_QC_N},
	{RUNE_C(0x00FFC2), RUNE_C(0x00FFC7), NFKC_QC_N},
	{RUNE_C(0x00FFCA), RUNE_C(0x00FFCF), NFKC_QC_N},
	{RUNE_C(0x00FFD2), RUNE_C(0x00FFD7), NFKC_QC_N},
	{RUNE_C(0x00FFDA), RUNE_C(0x00FFDC), NFKC_QC_N},
	{RUNE_C(0x00FFE0), RUNE_C(0x00FFE6), NFKC_QC_N},
	{RUNE_C(0x00FFE8), RUNE_C(0x00FFEE), NFKC_QC_N},
	{RUNE_C(0x010781), RUNE_C(0x010785), NFKC_QC_N},
	{RUNE_C(0x010787), RUNE_C(0x0107B0), NFKC_QC_N},
	{RUNE_C(0x0107B2), RUNE_C(0x0107BA), NFKC_QC_N},
	{RUNE_C(0x0110BA), RUNE_C(0x0110BA), NFKC_QC_M},
	{RUNE_C(0x011127), RUNE_C(0x011127), NFKC_QC_M},
	{RUNE_C(0x01133E), RUNE_C(0x01133E), NFKC_QC_M},
	{RUNE_C(0x011357), RUNE_C(0x011357), NFKC_QC_M},
	{RUNE_C(0x0114B0), RUNE_C(0x0114B0), NFKC_QC_M},
	{RUNE_C(0x0114BA), RUNE_C(0x0114BA), NFKC_QC_M},
	{RUNE_C(0x0114BD), RUNE_C(0x0114BD), NFKC_QC_M},
	{RUNE_C(0x0115AF), RUNE_C(0x0115AF), NFKC_QC_M},
	{RUNE_C(0x011930), RUNE_C(0x011930), NFKC_QC_M},
	{RUNE_C(0x01D15E), RUNE_C(0x01D164), NFKC_QC_N},
	{RUNE_C(0x01D1BB), RUNE_C(0x01D1C0), NFKC_QC_N},
	{RUNE_C(0x01D400), RUNE_C(0x01D454), NFKC_QC_N},
	{RUNE_C(0x01D456), RUNE_C(0x01D49C), NFKC_QC_N},
	{RUNE_C(0x01D49E), RUNE_C(0x01D49F), NFKC_QC_N},
	{RUNE_C(0x01D4A2), RUNE_C(0x01D4A2), NFKC_QC_N},
	{RUNE_C(0x01D4A5), RUNE_C(0x01D4A6), NFKC_QC_N},
	{RUNE_C(0x01D4A9), RUNE_C(0x01D4AC), NFKC_QC_N},
	{RUNE_C(0x01D4AE), RUNE_C(0x01D4B9), NFKC_QC_N},
	{RUNE_C(0x01D4BB), RUNE_C(0x01D4BB), NFKC_QC_N},
	{RUNE_C(0x01D4BD), RUNE_C(0x01D4C3), NFKC_QC_N},
	{RUNE_C(0x01D4C5), RUNE_C(0x01D505), NFKC_QC_N},
	{RUNE_C(0x01D507), RUNE_C(0x01D50A), NFKC_QC_N},
	{RUNE_C(0x01D50D), RUNE_C(0x01D514), NFKC_QC_N},
	{RUNE_C(0x01D516), RUNE_C(0x01D51C), NFKC_QC_N},
	{RUNE_C(0x01D51E), RUNE_C(0x01D539), NFKC_QC_N},
	{RUNE_C(0x01D53B), RUNE_C(0x01D53E), NFKC_QC_N},
	{RUNE_C(0x01D540), RUNE_C(0x01D544), NFKC_QC_N},
	{RUNE_C(0x01D546), RUNE_C(0x01D546), NFKC_QC_N},
	{RUNE_C(0x01D54A), RUNE_C(0x01D550), NFKC_QC_N},
	{RUNE_C(0x01D552), RUNE_C(0x01D6A5), NFKC_QC_N},
	{RUNE_C(0x01D6A8), RUNE_C(0x01D7CB), NFKC_QC_N},
	{RUNE_C(0x01D7CE), RUNE_C(0x01D7FF), NFKC_QC_N},
	{RUNE_C(0x01E030), RUNE_C(0x01E06D), NFKC_QC_N},
	{RUNE_C(0x01EE00), RUNE_C(0x01EE03), NFKC_QC_N},
	{RUNE_C(0x01EE05), RUNE_C(0x01EE1F), NFKC_QC_N},
	{RUNE_C(0x01EE21), RUNE_C(0x01EE22), NFKC_QC_N},
	{RUNE_C(0x01EE24), RUNE_C(0x01EE24), NFKC_QC_N},
	{RUNE_C(0x01EE27), RUNE_C(0x01EE27), NFKC_QC_N},
	{RUNE_C(0x01EE29), RUNE_C(0x01EE32), NFKC_QC_N},
	{RUNE_C(0x01EE34), RUNE_C(0x01EE37), NFKC_QC_N},
	{RUNE_C(0x01EE39), RUNE_C(0x01EE39), NFKC_QC_N},
	{RUNE_C(0x01EE3B), RUNE_C(0x01EE3B), NFKC_QC_N},
	{RUNE_C(0x01EE42), RUNE_C(0x01EE42), NFKC_QC_N},
	{RUNE_C(0x01EE47), RUNE_C(0x01EE47), NFKC_QC_N},
	{RUNE_C(0x01EE49), RUNE_C(0x01EE49), NFKC_QC_N},
	{RUNE_C(0x01EE4B), RUNE_C(0x01EE4B), NFKC_QC_N},
	{RUNE_C(0x01EE4D), RUNE_C(0x01EE4F), NFKC_QC_N},
	{RUNE_C(0x01EE51), RUNE_C(0x01EE52), NFKC_QC_N},
	{RUNE_C(0x01EE54), RUNE_C(0x01EE54), NFKC_QC_N},
	{RUNE_C(0x01EE57), RUNE_C(0x01EE57), NFKC_QC_N},
	{RUNE_C(0x01EE59), RUNE_C(0x01EE59), NFKC_QC_N},
	{RUNE_C(0x01EE5B), RUNE_C(0x01EE5B), NFKC_QC_N},
	{RUNE_C(0x01EE5D), RUNE_C(0x01EE5D), NFKC_QC_N},
	{RUNE_C(0x01EE5F), RUNE_C(0x01EE5F), NFKC_QC_N},
	{RUNE_C(0x01EE61), RUNE_C(0x01EE62), NFKC_QC_N},
	{RUNE_C(0x01EE64), RUNE_C(0x01EE64), NFKC_QC_N},
	{RUNE_C(0x01EE67), RUNE_C(0x01EE6A), NFKC_QC_N},
	{RUNE_C(0x01EE6C), RUNE_C(0x01EE72), NFKC_QC_N},
	{RUNE_C(0x01EE74), RUNE_C(0x01EE77), NFKC_QC_N},
	{RUNE_C(0x01EE79), RUNE_C(0x01EE7C), NFKC_QC_N},
	{RUNE_C(0x01EE7E), RUNE_C(0x01EE7E), NFKC_QC_N},
	{RUNE_C(0x01EE80), RUNE_C(0x01EE89), NFKC_QC_N},
	{RUNE_C(0x01EE8B), RUNE_C(0x01EE9B), NFKC_QC_N},
	{RUNE_C(0x01EEA1), RUNE_C(0x01EEA3), NFKC_QC_N},
	{RUNE_C(0x01EEA5), RUNE_C(0x01EEA9), NFKC_QC_N},
	{RUNE_C(0x01EEAB), RUNE_C(0x01EEBB), NFKC_QC_N},
	{RUNE_C(0x01F100), RUNE_C(0x01F10A), NFKC_QC_N},
	{RUNE_C(0x01F110), RUNE_C(0x01F12E), NFKC_QC_N},
	{RUNE_C(0x01F130), RUNE_C(0x01F14F), NFKC_QC_N},
	{RUNE_C(0x01F16A), RUNE_C(0x01F16C), NFKC_QC_N},
	{RUNE_C(0x01F190), RUNE_C(0x01F190), NFKC_QC_N},
	{RUNE_C(0x01F200), RUNE_C(0x01F202), NFKC_QC_N},
	{RUNE_C(0x01F210), RUNE_C(0x01F23B), NFKC_QC_N},
	{RUNE_C(0x01F240), RUNE_C(0x01F248), NFKC_QC_N},
	{RUNE_C(0x01F250), RUNE_C(0x01F251), NFKC_QC_N},
	{RUNE_C(0x01FBF0), RUNE_C(0x01FBF9), NFKC_QC_N},
	{RUNE_C(0x02F800), RUNE_C(0x02FA1D), NFKC_QC_N},
};

_MLIB_DEFINE_BSEARCH(enum uprop_nfkc_qc, lookup, NFKC_QC_Y)

enum uprop_nfkc_qc
uprop_get_nfkc_qc(rune ch)
{
	return ch < lengthof(lookup_lat1) ? lookup_lat1[ch] : mlib_lookup(ch);
}