1/*-
2 * Copyright (c) 1993
3 *	The Regents of the University of California.  All rights reserved.
4 *
5 * This code is derived from software contributed to Berkeley by
6 * Paul Borman at Krystal Technologies.
7 *
8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions
10 * are met:
11 * 1. Redistributions of source code must retain the above copyright
12 *    notice, this list of conditions and the following disclaimer.
13 * 2. Redistributions in binary form must reproduce the above copyright
14 *    notice, this list of conditions and the following disclaimer in the
15 *    documentation and/or other materials provided with the distribution.
16 * 4. Neither the name of the University nor the names of its contributors
17 *    may be used to endorse or promote products derived from this software
18 *    without specific prior written permission.
19 *
20 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
21 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
24 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
26 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
27 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
29 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
30 * SUCH DAMAGE.
31 */
32
33#if defined(LIBC_SCCS) && !defined(lint)
34static char sccsid[] = "@(#)table.c	8.1 (Berkeley) 6/27/93";
35#endif /* LIBC_SCCS and not lint */
36#include <sys/cdefs.h>
37__FBSDID("$FreeBSD: src/lib/libc/locale/table.c,v 1.28 2007/01/09 00:28:00 imp Exp $");
38
39#include "xlocale_private.h"
40
41#include <ctype.h>
42#include <runetype.h>
43#include <wchar.h>
44#include "mblocal.h"
45
46/* _DefaultRuneLocale is depreciated; _DefaultRuneXLocale is used instead */
47_RuneLocale _DefaultRuneLocale __attribute__((section("__DATA,__constrw"))) = {
48    _RUNE_MAGIC_A,
49    "NONE",
50    NULL,
51    NULL,
52    0xFFFD,
53
54    {	/*00*/	_CTYPE_C,
55		_CTYPE_C,
56		_CTYPE_C,
57		_CTYPE_C,
58		_CTYPE_C,
59		_CTYPE_C,
60		_CTYPE_C,
61		_CTYPE_C,
62	/*08*/	_CTYPE_C,
63		_CTYPE_C|_CTYPE_S|_CTYPE_B,
64		_CTYPE_C|_CTYPE_S,
65		_CTYPE_C|_CTYPE_S,
66		_CTYPE_C|_CTYPE_S,
67		_CTYPE_C|_CTYPE_S,
68		_CTYPE_C,
69		_CTYPE_C,
70	/*10*/	_CTYPE_C,
71		_CTYPE_C,
72		_CTYPE_C,
73		_CTYPE_C,
74		_CTYPE_C,
75		_CTYPE_C,
76		_CTYPE_C,
77		_CTYPE_C,
78	/*18*/	_CTYPE_C,
79		_CTYPE_C,
80		_CTYPE_C,
81		_CTYPE_C,
82		_CTYPE_C,
83		_CTYPE_C,
84		_CTYPE_C,
85		_CTYPE_C,
86	/*20*/	_CTYPE_S|_CTYPE_B|_CTYPE_R,
87		_CTYPE_P|_CTYPE_R|_CTYPE_G,
88		_CTYPE_P|_CTYPE_R|_CTYPE_G,
89		_CTYPE_P|_CTYPE_R|_CTYPE_G,
90		_CTYPE_P|_CTYPE_R|_CTYPE_G,
91		_CTYPE_P|_CTYPE_R|_CTYPE_G,
92		_CTYPE_P|_CTYPE_R|_CTYPE_G,
93		_CTYPE_P|_CTYPE_R|_CTYPE_G,
94	/*28*/	_CTYPE_P|_CTYPE_R|_CTYPE_G,
95		_CTYPE_P|_CTYPE_R|_CTYPE_G,
96		_CTYPE_P|_CTYPE_R|_CTYPE_G,
97		_CTYPE_P|_CTYPE_R|_CTYPE_G,
98		_CTYPE_P|_CTYPE_R|_CTYPE_G,
99		_CTYPE_P|_CTYPE_R|_CTYPE_G,
100		_CTYPE_P|_CTYPE_R|_CTYPE_G,
101		_CTYPE_P|_CTYPE_R|_CTYPE_G,
102	/*30*/	_CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|0,
103		_CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|1,
104		_CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|2,
105		_CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|3,
106		_CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|4,
107		_CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|5,
108		_CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|6,
109		_CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|7,
110	/*38*/	_CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|8,
111		_CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|9,
112		_CTYPE_P|_CTYPE_R|_CTYPE_G,
113		_CTYPE_P|_CTYPE_R|_CTYPE_G,
114		_CTYPE_P|_CTYPE_R|_CTYPE_G,
115		_CTYPE_P|_CTYPE_R|_CTYPE_G,
116		_CTYPE_P|_CTYPE_R|_CTYPE_G,
117		_CTYPE_P|_CTYPE_R|_CTYPE_G,
118	/*40*/	_CTYPE_P|_CTYPE_R|_CTYPE_G,
119		_CTYPE_U|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A|10,
120		_CTYPE_U|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A|11,
121		_CTYPE_U|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A|12,
122		_CTYPE_U|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A|13,
123		_CTYPE_U|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A|14,
124		_CTYPE_U|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A|15,
125		_CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A,
126	/*48*/	_CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A,
127		_CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A,
128		_CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A,
129		_CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A,
130		_CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A,
131		_CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A,
132		_CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A,
133		_CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A,
134	/*50*/	_CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A,
135		_CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A,
136		_CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A,
137		_CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A,
138		_CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A,
139		_CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A,
140		_CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A,
141		_CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A,
142	/*58*/	_CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A,
143		_CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A,
144		_CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A,
145		_CTYPE_P|_CTYPE_R|_CTYPE_G,
146		_CTYPE_P|_CTYPE_R|_CTYPE_G,
147		_CTYPE_P|_CTYPE_R|_CTYPE_G,
148		_CTYPE_P|_CTYPE_R|_CTYPE_G,
149		_CTYPE_P|_CTYPE_R|_CTYPE_G,
150	/*60*/	_CTYPE_P|_CTYPE_R|_CTYPE_G,
151		_CTYPE_L|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A|10,
152		_CTYPE_L|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A|11,
153		_CTYPE_L|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A|12,
154		_CTYPE_L|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A|13,
155		_CTYPE_L|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A|14,
156		_CTYPE_L|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A|15,
157		_CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A,
158	/*68*/	_CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A,
159		_CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A,
160		_CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A,
161		_CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A,
162		_CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A,
163		_CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A,
164		_CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A,
165		_CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A,
166	/*70*/	_CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A,
167		_CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A,
168		_CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A,
169		_CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A,
170		_CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A,
171		_CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A,
172		_CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A,
173		_CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A,
174	/*78*/	_CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A,
175		_CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A,
176		_CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A,
177		_CTYPE_P|_CTYPE_R|_CTYPE_G,
178		_CTYPE_P|_CTYPE_R|_CTYPE_G,
179		_CTYPE_P|_CTYPE_R|_CTYPE_G,
180		_CTYPE_P|_CTYPE_R|_CTYPE_G,
181		_CTYPE_C,
182    },
183    {	0x00,	0x01,	0x02,	0x03,	0x04,	0x05,	0x06,	0x07,
184     	0x08,	0x09,	0x0a,	0x0b,	0x0c,	0x0d,	0x0e,	0x0f,
185	0x10,	0x11,	0x12,	0x13,	0x14,	0x15,	0x16,	0x17,
186     	0x18,	0x19,	0x1a,	0x1b,	0x1c,	0x1d,	0x1e,	0x1f,
187	0x20,	0x21,	0x22,	0x23,	0x24,	0x25,	0x26,	0x27,
188     	0x28,	0x29,	0x2a,	0x2b,	0x2c,	0x2d,	0x2e,	0x2f,
189	0x30,	0x31,	0x32,	0x33,	0x34,	0x35,	0x36,	0x37,
190     	0x38,	0x39,	0x3a,	0x3b,	0x3c,	0x3d,	0x3e,	0x3f,
191	0x40,	'a',	'b',	'c',	'd',	'e',	'f',	'g',
192     	'h',	'i',	'j',	'k',	'l',	'm',	'n',	'o',
193	'p',	'q',	'r',	's',	't',	'u',	'v',	'w',
194     	'x',	'y',	'z',	0x5b,	0x5c,	0x5d,	0x5e,	0x5f,
195	0x60,	'a',	'b',	'c',	'd',	'e',	'f',	'g',
196     	'h',	'i',	'j',	'k',	'l',	'm',	'n',	'o',
197	'p',	'q',	'r',	's',	't',	'u',	'v',	'w',
198     	'x',	'y',	'z',	0x7b,	0x7c,	0x7d,	0x7e,	0x7f,
199	0x80,	0x81,	0x82,	0x83,	0x84,	0x85,	0x86,	0x87,
200     	0x88,	0x89,	0x8a,	0x8b,	0x8c,	0x8d,	0x8e,	0x8f,
201	0x90,	0x91,	0x92,	0x93,	0x94,	0x95,	0x96,	0x97,
202     	0x98,	0x99,	0x9a,	0x9b,	0x9c,	0x9d,	0x9e,	0x9f,
203	0xa0,	0xa1,	0xa2,	0xa3,	0xa4,	0xa5,	0xa6,	0xa7,
204     	0xa8,	0xa9,	0xaa,	0xab,	0xac,	0xad,	0xae,	0xaf,
205	0xb0,	0xb1,	0xb2,	0xb3,	0xb4,	0xb5,	0xb6,	0xb7,
206     	0xb8,	0xb9,	0xba,	0xbb,	0xbc,	0xbd,	0xbe,	0xbf,
207	0xc0,	0xc1,	0xc2,	0xc3,	0xc4,	0xc5,	0xc6,	0xc7,
208     	0xc8,	0xc9,	0xca,	0xcb,	0xcc,	0xcd,	0xce,	0xcf,
209	0xd0,	0xd1,	0xd2,	0xd3,	0xd4,	0xd5,	0xd6,	0xd7,
210     	0xd8,	0xd9,	0xda,	0xdb,	0xdc,	0xdd,	0xde,	0xdf,
211	0xe0,	0xe1,	0xe2,	0xe3,	0xe4,	0xe5,	0xe6,	0xe7,
212     	0xe8,	0xe9,	0xea,	0xeb,	0xec,	0xed,	0xee,	0xef,
213	0xf0,	0xf1,	0xf2,	0xf3,	0xf4,	0xf5,	0xf6,	0xf7,
214     	0xf8,	0xf9,	0xfa,	0xfb,	0xfc,	0xfd,	0xfe,	0xff,
215    },
216    {	0x00,	0x01,	0x02,	0x03,	0x04,	0x05,	0x06,	0x07,
217     	0x08,	0x09,	0x0a,	0x0b,	0x0c,	0x0d,	0x0e,	0x0f,
218	0x10,	0x11,	0x12,	0x13,	0x14,	0x15,	0x16,	0x17,
219     	0x18,	0x19,	0x1a,	0x1b,	0x1c,	0x1d,	0x1e,	0x1f,
220	0x20,	0x21,	0x22,	0x23,	0x24,	0x25,	0x26,	0x27,
221     	0x28,	0x29,	0x2a,	0x2b,	0x2c,	0x2d,	0x2e,	0x2f,
222	0x30,	0x31,	0x32,	0x33,	0x34,	0x35,	0x36,	0x37,
223     	0x38,	0x39,	0x3a,	0x3b,	0x3c,	0x3d,	0x3e,	0x3f,
224	0x40,	'A',	'B',	'C',	'D',	'E',	'F',	'G',
225     	'H',	'I',	'J',	'K',	'L',	'M',	'N',	'O',
226	'P',	'Q',	'R',	'S',	'T',	'U',	'V',	'W',
227     	'X',	'Y',	'Z',	0x5b,	0x5c,	0x5d,	0x5e,	0x5f,
228	0x60,	'A',	'B',	'C',	'D',	'E',	'F',	'G',
229     	'H',	'I',	'J',	'K',	'L',	'M',	'N',	'O',
230	'P',	'Q',	'R',	'S',	'T',	'U',	'V',	'W',
231     	'X',	'Y',	'Z',	0x7b,	0x7c,	0x7d,	0x7e,	0x7f,
232	0x80,	0x81,	0x82,	0x83,	0x84,	0x85,	0x86,	0x87,
233     	0x88,	0x89,	0x8a,	0x8b,	0x8c,	0x8d,	0x8e,	0x8f,
234	0x90,	0x91,	0x92,	0x93,	0x94,	0x95,	0x96,	0x97,
235     	0x98,	0x99,	0x9a,	0x9b,	0x9c,	0x9d,	0x9e,	0x9f,
236	0xa0,	0xa1,	0xa2,	0xa3,	0xa4,	0xa5,	0xa6,	0xa7,
237     	0xa8,	0xa9,	0xaa,	0xab,	0xac,	0xad,	0xae,	0xaf,
238	0xb0,	0xb1,	0xb2,	0xb3,	0xb4,	0xb5,	0xb6,	0xb7,
239     	0xb8,	0xb9,	0xba,	0xbb,	0xbc,	0xbd,	0xbe,	0xbf,
240	0xc0,	0xc1,	0xc2,	0xc3,	0xc4,	0xc5,	0xc6,	0xc7,
241     	0xc8,	0xc9,	0xca,	0xcb,	0xcc,	0xcd,	0xce,	0xcf,
242	0xd0,	0xd1,	0xd2,	0xd3,	0xd4,	0xd5,	0xd6,	0xd7,
243     	0xd8,	0xd9,	0xda,	0xdb,	0xdc,	0xdd,	0xde,	0xdf,
244	0xe0,	0xe1,	0xe2,	0xe3,	0xe4,	0xe5,	0xe6,	0xe7,
245     	0xe8,	0xe9,	0xea,	0xeb,	0xec,	0xed,	0xee,	0xef,
246	0xf0,	0xf1,	0xf2,	0xf3,	0xf4,	0xf5,	0xf6,	0xf7,
247     	0xf8,	0xf9,	0xfa,	0xfb,	0xfc,	0xfd,	0xfe,	0xff,
248    },
249};
250
251struct __xlocale_st_runelocale _DefaultRuneXLocale __attribute__((section("__DATA,__constrw"))) = {
252    0,
253    XPERMANENT,
254    "C",
255    1,
256    256,
257    _none_mbrtowc,
258    _none_mbsinit,
259    _none_mbsnrtowcs,
260    _none_wcrtomb,
261    _none_wcsnrtombs,
262    sizeof(struct __xlocale_st_runelocale),
263    {
264	_RUNE_MAGIC_A,
265	"NONE",
266	NULL,
267	NULL,
268	0xFFFD,
269
270	{	/*00*/	_CTYPE_C,
271		    _CTYPE_C,
272		    _CTYPE_C,
273		    _CTYPE_C,
274		    _CTYPE_C,
275		    _CTYPE_C,
276		    _CTYPE_C,
277		    _CTYPE_C,
278	    /*08*/	_CTYPE_C,
279		    _CTYPE_C|_CTYPE_S|_CTYPE_B,
280		    _CTYPE_C|_CTYPE_S,
281		    _CTYPE_C|_CTYPE_S,
282		    _CTYPE_C|_CTYPE_S,
283		    _CTYPE_C|_CTYPE_S,
284		    _CTYPE_C,
285		    _CTYPE_C,
286	    /*10*/	_CTYPE_C,
287		    _CTYPE_C,
288		    _CTYPE_C,
289		    _CTYPE_C,
290		    _CTYPE_C,
291		    _CTYPE_C,
292		    _CTYPE_C,
293		    _CTYPE_C,
294	    /*18*/	_CTYPE_C,
295		    _CTYPE_C,
296		    _CTYPE_C,
297		    _CTYPE_C,
298		    _CTYPE_C,
299		    _CTYPE_C,
300		    _CTYPE_C,
301		    _CTYPE_C,
302	    /*20*/	_CTYPE_S|_CTYPE_B|_CTYPE_R,
303		    _CTYPE_P|_CTYPE_R|_CTYPE_G,
304		    _CTYPE_P|_CTYPE_R|_CTYPE_G,
305		    _CTYPE_P|_CTYPE_R|_CTYPE_G,
306		    _CTYPE_P|_CTYPE_R|_CTYPE_G,
307		    _CTYPE_P|_CTYPE_R|_CTYPE_G,
308		    _CTYPE_P|_CTYPE_R|_CTYPE_G,
309		    _CTYPE_P|_CTYPE_R|_CTYPE_G,
310	    /*28*/	_CTYPE_P|_CTYPE_R|_CTYPE_G,
311		    _CTYPE_P|_CTYPE_R|_CTYPE_G,
312		    _CTYPE_P|_CTYPE_R|_CTYPE_G,
313		    _CTYPE_P|_CTYPE_R|_CTYPE_G,
314		    _CTYPE_P|_CTYPE_R|_CTYPE_G,
315		    _CTYPE_P|_CTYPE_R|_CTYPE_G,
316		    _CTYPE_P|_CTYPE_R|_CTYPE_G,
317		    _CTYPE_P|_CTYPE_R|_CTYPE_G,
318	    /*30*/	_CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|0,
319		    _CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|1,
320		    _CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|2,
321		    _CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|3,
322		    _CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|4,
323		    _CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|5,
324		    _CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|6,
325		    _CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|7,
326	    /*38*/	_CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|8,
327		    _CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|9,
328		    _CTYPE_P|_CTYPE_R|_CTYPE_G,
329		    _CTYPE_P|_CTYPE_R|_CTYPE_G,
330		    _CTYPE_P|_CTYPE_R|_CTYPE_G,
331		    _CTYPE_P|_CTYPE_R|_CTYPE_G,
332		    _CTYPE_P|_CTYPE_R|_CTYPE_G,
333		    _CTYPE_P|_CTYPE_R|_CTYPE_G,
334	    /*40*/	_CTYPE_P|_CTYPE_R|_CTYPE_G,
335		    _CTYPE_U|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A|10,
336		    _CTYPE_U|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A|11,
337		    _CTYPE_U|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A|12,
338		    _CTYPE_U|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A|13,
339		    _CTYPE_U|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A|14,
340		    _CTYPE_U|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A|15,
341		    _CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A,
342	    /*48*/	_CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A,
343		    _CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A,
344		    _CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A,
345		    _CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A,
346		    _CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A,
347		    _CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A,
348		    _CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A,
349		    _CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A,
350	    /*50*/	_CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A,
351		    _CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A,
352		    _CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A,
353		    _CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A,
354		    _CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A,
355		    _CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A,
356		    _CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A,
357		    _CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A,
358	    /*58*/	_CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A,
359		    _CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A,
360		    _CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A,
361		    _CTYPE_P|_CTYPE_R|_CTYPE_G,
362		    _CTYPE_P|_CTYPE_R|_CTYPE_G,
363		    _CTYPE_P|_CTYPE_R|_CTYPE_G,
364		    _CTYPE_P|_CTYPE_R|_CTYPE_G,
365		    _CTYPE_P|_CTYPE_R|_CTYPE_G,
366	    /*60*/	_CTYPE_P|_CTYPE_R|_CTYPE_G,
367		    _CTYPE_L|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A|10,
368		    _CTYPE_L|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A|11,
369		    _CTYPE_L|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A|12,
370		    _CTYPE_L|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A|13,
371		    _CTYPE_L|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A|14,
372		    _CTYPE_L|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A|15,
373		    _CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A,
374	    /*68*/	_CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A,
375		    _CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A,
376		    _CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A,
377		    _CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A,
378		    _CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A,
379		    _CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A,
380		    _CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A,
381		    _CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A,
382	    /*70*/	_CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A,
383		    _CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A,
384		    _CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A,
385		    _CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A,
386		    _CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A,
387		    _CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A,
388		    _CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A,
389		    _CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A,
390	    /*78*/	_CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A,
391		    _CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A,
392		    _CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A,
393		    _CTYPE_P|_CTYPE_R|_CTYPE_G,
394		    _CTYPE_P|_CTYPE_R|_CTYPE_G,
395		    _CTYPE_P|_CTYPE_R|_CTYPE_G,
396		    _CTYPE_P|_CTYPE_R|_CTYPE_G,
397		    _CTYPE_C,
398	},
399	{	0x00,	0x01,	0x02,	0x03,	0x04,	0x05,	0x06,	0x07,
400	    0x08,	0x09,	0x0a,	0x0b,	0x0c,	0x0d,	0x0e,	0x0f,
401	    0x10,	0x11,	0x12,	0x13,	0x14,	0x15,	0x16,	0x17,
402	    0x18,	0x19,	0x1a,	0x1b,	0x1c,	0x1d,	0x1e,	0x1f,
403	    0x20,	0x21,	0x22,	0x23,	0x24,	0x25,	0x26,	0x27,
404	    0x28,	0x29,	0x2a,	0x2b,	0x2c,	0x2d,	0x2e,	0x2f,
405	    0x30,	0x31,	0x32,	0x33,	0x34,	0x35,	0x36,	0x37,
406	    0x38,	0x39,	0x3a,	0x3b,	0x3c,	0x3d,	0x3e,	0x3f,
407	    0x40,	'a',	'b',	'c',	'd',	'e',	'f',	'g',
408	    'h',	'i',	'j',	'k',	'l',	'm',	'n',	'o',
409	    'p',	'q',	'r',	's',	't',	'u',	'v',	'w',
410	    'x',	'y',	'z',	0x5b,	0x5c,	0x5d,	0x5e,	0x5f,
411	    0x60,	'a',	'b',	'c',	'd',	'e',	'f',	'g',
412	    'h',	'i',	'j',	'k',	'l',	'm',	'n',	'o',
413	    'p',	'q',	'r',	's',	't',	'u',	'v',	'w',
414	    'x',	'y',	'z',	0x7b,	0x7c,	0x7d,	0x7e,	0x7f,
415	    0x80,	0x81,	0x82,	0x83,	0x84,	0x85,	0x86,	0x87,
416	    0x88,	0x89,	0x8a,	0x8b,	0x8c,	0x8d,	0x8e,	0x8f,
417	    0x90,	0x91,	0x92,	0x93,	0x94,	0x95,	0x96,	0x97,
418	    0x98,	0x99,	0x9a,	0x9b,	0x9c,	0x9d,	0x9e,	0x9f,
419	    0xa0,	0xa1,	0xa2,	0xa3,	0xa4,	0xa5,	0xa6,	0xa7,
420	    0xa8,	0xa9,	0xaa,	0xab,	0xac,	0xad,	0xae,	0xaf,
421	    0xb0,	0xb1,	0xb2,	0xb3,	0xb4,	0xb5,	0xb6,	0xb7,
422	    0xb8,	0xb9,	0xba,	0xbb,	0xbc,	0xbd,	0xbe,	0xbf,
423	    0xc0,	0xc1,	0xc2,	0xc3,	0xc4,	0xc5,	0xc6,	0xc7,
424	    0xc8,	0xc9,	0xca,	0xcb,	0xcc,	0xcd,	0xce,	0xcf,
425	    0xd0,	0xd1,	0xd2,	0xd3,	0xd4,	0xd5,	0xd6,	0xd7,
426	    0xd8,	0xd9,	0xda,	0xdb,	0xdc,	0xdd,	0xde,	0xdf,
427	    0xe0,	0xe1,	0xe2,	0xe3,	0xe4,	0xe5,	0xe6,	0xe7,
428	    0xe8,	0xe9,	0xea,	0xeb,	0xec,	0xed,	0xee,	0xef,
429	    0xf0,	0xf1,	0xf2,	0xf3,	0xf4,	0xf5,	0xf6,	0xf7,
430	    0xf8,	0xf9,	0xfa,	0xfb,	0xfc,	0xfd,	0xfe,	0xff,
431	},
432	{	0x00,	0x01,	0x02,	0x03,	0x04,	0x05,	0x06,	0x07,
433	    0x08,	0x09,	0x0a,	0x0b,	0x0c,	0x0d,	0x0e,	0x0f,
434	    0x10,	0x11,	0x12,	0x13,	0x14,	0x15,	0x16,	0x17,
435	    0x18,	0x19,	0x1a,	0x1b,	0x1c,	0x1d,	0x1e,	0x1f,
436	    0x20,	0x21,	0x22,	0x23,	0x24,	0x25,	0x26,	0x27,
437	    0x28,	0x29,	0x2a,	0x2b,	0x2c,	0x2d,	0x2e,	0x2f,
438	    0x30,	0x31,	0x32,	0x33,	0x34,	0x35,	0x36,	0x37,
439	    0x38,	0x39,	0x3a,	0x3b,	0x3c,	0x3d,	0x3e,	0x3f,
440	    0x40,	'A',	'B',	'C',	'D',	'E',	'F',	'G',
441	    'H',	'I',	'J',	'K',	'L',	'M',	'N',	'O',
442	    'P',	'Q',	'R',	'S',	'T',	'U',	'V',	'W',
443	    'X',	'Y',	'Z',	0x5b,	0x5c,	0x5d,	0x5e,	0x5f,
444	    0x60,	'A',	'B',	'C',	'D',	'E',	'F',	'G',
445	    'H',	'I',	'J',	'K',	'L',	'M',	'N',	'O',
446	    'P',	'Q',	'R',	'S',	'T',	'U',	'V',	'W',
447	    'X',	'Y',	'Z',	0x7b,	0x7c,	0x7d,	0x7e,	0x7f,
448	    0x80,	0x81,	0x82,	0x83,	0x84,	0x85,	0x86,	0x87,
449	    0x88,	0x89,	0x8a,	0x8b,	0x8c,	0x8d,	0x8e,	0x8f,
450	    0x90,	0x91,	0x92,	0x93,	0x94,	0x95,	0x96,	0x97,
451	    0x98,	0x99,	0x9a,	0x9b,	0x9c,	0x9d,	0x9e,	0x9f,
452	    0xa0,	0xa1,	0xa2,	0xa3,	0xa4,	0xa5,	0xa6,	0xa7,
453	    0xa8,	0xa9,	0xaa,	0xab,	0xac,	0xad,	0xae,	0xaf,
454	    0xb0,	0xb1,	0xb2,	0xb3,	0xb4,	0xb5,	0xb6,	0xb7,
455	    0xb8,	0xb9,	0xba,	0xbb,	0xbc,	0xbd,	0xbe,	0xbf,
456	    0xc0,	0xc1,	0xc2,	0xc3,	0xc4,	0xc5,	0xc6,	0xc7,
457	    0xc8,	0xc9,	0xca,	0xcb,	0xcc,	0xcd,	0xce,	0xcf,
458	    0xd0,	0xd1,	0xd2,	0xd3,	0xd4,	0xd5,	0xd6,	0xd7,
459	    0xd8,	0xd9,	0xda,	0xdb,	0xdc,	0xdd,	0xde,	0xdf,
460	    0xe0,	0xe1,	0xe2,	0xe3,	0xe4,	0xe5,	0xe6,	0xe7,
461	    0xe8,	0xe9,	0xea,	0xeb,	0xec,	0xed,	0xee,	0xef,
462	    0xf0,	0xf1,	0xf2,	0xf3,	0xf4,	0xf5,	0xf6,	0xf7,
463	    0xf8,	0xf9,	0xfa,	0xfb,	0xfc,	0xfd,	0xfe,	0xff,
464	},
465    },
466};
467
468_RuneLocale *_CurrentRuneLocale = &_DefaultRuneXLocale._CurrentRuneLocale;
469