Imported Upstream version 1.8.15
[platform/upstream/doxygen.git] / qtools / qstring.cpp
1 /****************************************************************************
2 ** 
3 **
4 ** Implementation of the QString class and related Unicode functions
5 **
6 ** Created : 920722
7 **
8 ** Copyright (C) 1992-2000 Trolltech AS.  All rights reserved.
9 **
10 ** This file is part of the tools module of the Qt GUI Toolkit.
11 **
12 ** This file may be distributed under the terms of the Q Public License
13 ** as defined by Trolltech AS of Norway and appearing in the file
14 ** LICENSE.QPL included in the packaging of this file.
15 **
16 ** This file may be distributed and/or modified under the terms of the
17 ** GNU General Public License version 2 as published by the Free Software
18 ** Foundation and appearing in the file LICENSE.GPL included in the
19 ** packaging of this file.
20 **
21 ** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition
22 ** licenses may use this file in accordance with the Qt Commercial License
23 ** Agreement provided with the Software.
24 **
25 ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
26 ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
27 **
28 ** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for
29 **   information about Qt Commercial License Agreements.
30 ** See http://www.trolltech.com/qpl/ for QPL licensing information.
31 ** See http://www.trolltech.com/gpl/ for GPL licensing information.
32 **
33 ** Contact info@trolltech.com if any conditions of this licensing are
34 ** not clear to you.
35 **
36 **********************************************************************/
37
38 // Don't define it while compiling this module, or USERS of Qt will
39 // not be able to link.
40 #ifdef QT_NO_CAST_ASCII
41 #undef QT_NO_CAST_ASCII
42 #endif
43
44 #include "qstring.h"
45 #include "qregexp.h"
46 #include "qdatastream.h"
47 #include "qtextcodec.h"
48 #include "qstack.h"
49 #include <stdio.h>
50 #include <stdlib.h>
51 #include <stdarg.h>
52 #include <ctype.h>
53 #include <limits.h>
54
55
56 /* -------------------------------------------------------------------------
57  * unicode information
58  * these tables are generated from the unicode reference file
59  * ftp://ftp.unicode.org/Public/3.0-Update/UnicodeData-3.0.0.html
60  *
61  * Lars Knoll <knoll@mpi-hd.mpg.de>
62  * -------------------------------------------------------------------------
63  */
64
65 /* Perl script to generate (run perl -x tools/qstring.cpp)
66
67 #!perl
68
69 sub numberize
70 {
71     my(%r, $n, $id);
72     for $id ( @_ ) {
73         $id="" if $id eq "EMPTY";
74         $r{$id}=$n++;
75     }
76     return %r;
77 }
78
79
80 # Code to integer mappings...
81 #
82 %category_code = numberize(qw{
83       EMPTY
84       Mn Mc Me
85       Nd Nl No
86       Zs Zl Zp
87       Cc Cf Cs Co Cn
88
89       Lu Ll Lt Lm Lo
90       Pc Pd Ps Pe Pi Pf Po
91       Sm Sc Sk So
92 });
93 %bidi_category_code = numberize(qw{
94       L R EN ES ET AN CS B S WS ON LRE LRO AL RLE RLO PDF NSM BN});
95 %character_decomposition_tag = numberize(qw{
96       <single> <canonical> <font> <noBreak> <initial> <medial>
97       <final> <isolated> <circle> <super> <sub> <vertical>
98       <wide> <narrow> <small> <square> <compat> <fraction>
99 });
100 %mirrored_code = numberize(qw{N Y});
101
102 %joining_code = numberize(qw{U D R C});
103
104 # Read data into hashes...
105 #
106 open IN, "UnicodeData.txt";
107 $position = 1;
108 while (<IN>) {
109     @fields = split /;/;
110     $code = shift @fields;
111     for $n (qw{
112       name category combining_class bidi_category
113       character_decomposition decimal_digit_value digit_value
114       numeric_value mirrored oldname comment
115       uppercase lowercase titlecase})
116     {
117         $id = shift @fields;
118         $codes = "${n}_code";
119         if ( defined %$codes && defined $$codes{$id} ) {
120             $id = $$codes{$id};
121         }
122         ${$n}{$code}=$id;
123     }
124     $decomp = $character_decomposition{$code};
125     if ( length $decomp == 0 ) {
126         $decomp = "<single>";
127     }
128     if (substr($decomp, 0, 1) ne '<') {
129         $decomp = "<canonical> " . $decomp;
130     }
131     @fields = split(" ", $decomp);
132     $tag = shift @fields;
133     $tag = $character_decomposition_tag{$tag};
134     $decomp = join( ", 0x", @fields );
135     $decomp = "0x".$decomp;
136     $decomposition{$code} = $decomp;
137     $decomposition_tag{$code} = $tag;
138     $decomposition_pos{$code} = $position;
139     $len = scalar(@fields);
140     $decomposition_len{$code} = $len;
141
142 #   we use canonical decompositions longer than 1 char
143 #   and all arabic ligatures for the ligature table
144     if(($len > 1 and $tag == 1) or ($tag > 3 and $tag < 8)) {
145 #      ligature to add...
146         $start = shift @fields;
147         $ligature{$start} = $ligature{$start}." ".$code;
148     }
149
150 #   adjust position
151     if($len != 0) {
152         $position += $len + 3;
153     }
154
155
156 }
157
158 open IN2, "ArabicShaping.txt";
159 $position = 1;
160 while (<IN2>) {
161     @fields = split /;/;
162     $code = shift @fields;
163     $dummy = shift @fields;
164     $join = shift @fields;
165     $join =~ s/ //g;
166     $join = $joining_code{$join};
167     $joining{$code}=$join;
168 }
169
170 # Build pages...
171 #
172 $rowtable_txt =
173     "static const Q_UINT8 * const unicode_info[256] = {";
174 for $row ( 0..255 ) {
175     $nonzero=0;
176     $txt = "";
177     for $cell ( 0..255 ) {
178         $code = sprintf("%02X%02X",$row,$cell);
179         $info = $category{$code};
180         $info = 0 if !defined $info;
181         $txt .= "\n    " if $cell%8 == 0;
182         $txt .= "$info, ";
183     }
184     $therow = $row{$txt};
185     if ( !defined $therow ) {
186         $size+=256;
187         $therow = "ui_".sprintf("%02X",$row);
188         $rowtext{$therow} =
189             "static const Q_UINT8 ${therow}[] = {$txt\n};\n\n";
190         $row{$txt}=$therow;
191     }
192     $rowtable_txt .= "\n    " if $row%8 == 0;
193     $rowtable_txt .= "$therow, ";
194 }
195
196 print "// START OF GENERATED DATA\n\n";
197 print "#ifndef QT_NO_UNICODETABLES\n\n";
198
199 # Print pages...
200 #
201 for $r ( sort keys %rowtext ) {
202     print $rowtext{$r};
203 }
204 print "$rowtable_txt\n};\n";
205 $size += 256*4;
206 print "// $size bytes\n\n";
207
208 # Build decomposition tables
209 #
210 $rowtable_txt =
211     "static const Q_UINT16 * const decomposition_info[256] = {";
212 $table_txt =
213     "static const Q_UINT16 decomposition_map[] = {\n    0,\n";
214 for $row ( 0..255 ) {
215     $nonzero=0;
216     $txt = "";
217     for $cell ( 0..255 ) {
218         $code = sprintf("%02X%02X",$row,$cell);
219         $txt .= "\n   " if $cell%8 == 0;
220         if( $decomposition_tag{$code} != 0 ) {
221             $txt .= " $decomposition_pos{$code},";
222             $table_txt .= "    $decomposition_tag{$code},";
223             $table_txt .= " 0x$code,";
224             $table_txt .= " $decomposition{$code}, 0,\n";
225             $size += 2 * $decomposition_len{$code} + 6;
226         } else {
227             $txt .= " 0,";
228         }
229     }
230     $therow = $row{$txt};
231     if ( !defined $therow ) {
232         $size+=512;
233         $therow = "di_".sprintf("%02X",$row);
234         $dec_rowtext{$therow} =
235             "static const Q_UINT16 ${therow}[] = {$txt\n};\n\n";
236         $row{$txt}=$therow;
237     }
238     $rowtable_txt .= "\n    " if $row%8 == 0;
239     $rowtable_txt .= "$therow, ";
240 }
241
242 # Print decomposition tables
243 #
244 print "$table_txt\n};\n\n";
245 for $r ( sort keys %dec_rowtext ) {
246     print $dec_rowtext{$r};
247 }
248 print "$rowtable_txt\n};\n";
249 $size += 256*4;
250 print "// $size bytes\n\n";
251
252
253 # build ligature tables
254 #
255 $size = 0;
256 $position = 1;
257 $rowtable_txt =
258     "static const Q_UINT16 * const ligature_info[256] = {";
259 $table_txt =
260     "static const Q_UINT16 ligature_map[] = {\n    0,\n";
261 for $lig_row ( 0..255 ) {
262     $nonzero=0;
263     $txt = "";
264     for $cell ( 0..255 ) {
265         $code = sprintf("%02X%02X",$lig_row,$cell);
266         $txt .= "\n   " if $cell%8 == 0;
267         if( defined $ligature{$code} ) {
268             $txt .= " $position,";
269             @ligature = split(" ", $ligature{$code});
270 #           we need to sort ligatures according to their length.
271 #           long ones have to come first!
272             @ligature_sort = sort { $decomposition_len{$b} <=>  $decomposition_len{$a} } @ligature;
273 #           now replace each code by it's position in
274 #           the decomposition map.
275             undef(@lig_pos);
276             for $n (@ligature_sort) {
277                 push(@lig_pos, $decomposition_pos{$n});
278             }
279 #           debug info
280             if( 0 ) {
281                 print "ligatures: $ligature{$code}\n";
282                 $sort = join(" ", @ligature_sort);
283                 print "sorted   : $sort\n";
284             }
285             $lig = join(", ", @lig_pos);
286             $table_txt .= "    $lig, 0,\n";
287             $size += 2 * scalar(@ligature) + 2;
288             $position += scalar(@ligature) + 1;
289         } else {
290             $txt .= " 0,";
291         }
292     }
293     $therow = $lig_row{$txt};
294     if ( !defined $therow ) {
295         $size+=512;
296         $therow = "li_".sprintf("%02X",$lig_row);
297         $lig_rowtext{$therow} =
298             "static const Q_UINT16 ${therow}[] = {$txt\n};\n\n";
299         $lig_row{$txt}=$therow;
300     }
301     $rowtable_txt .= "\n    " if $lig_row%8 == 0;
302     $rowtable_txt .= "$therow, ";
303 }
304
305 # Print ligature tables
306 #
307 print "$table_txt\n};\n\n";
308 for $r ( sort keys %lig_rowtext ) {
309     print $lig_rowtext{$r};
310 }
311 print "$rowtable_txt\n};\n";
312 $size += 256*4;
313 print "// $size bytes\n\n";
314
315
316
317 # Build direction/joining/mirrored pages...
318 #
319 $rowtable_txt =
320     "static const Q_UINT8 * const direction_info[256] = {";
321 for $dir_row ( 0..255 ) {
322     $nonzero=0;
323     $txt = "";
324     for $cell ( 0..255 ) {
325         $code = sprintf("%02X%02X",$dir_row,$cell);
326         $dir = $bidi_category{$code};
327         $dir = 0 if !defined $dir;
328         $join = $joining{$code};
329         $join = 0 if !defined $join;
330         $mirr = $mirrored{$code};
331         $mirr = 0 if !defined $mirr;
332         $info = $dir + 32*$join + 128*$mirr;
333         $txt .= "\n    " if $cell%8 == 0;
334         $txt .= "$info, ";
335     }
336     $therow = $dir_row{$txt};
337     if ( !defined $therow ) {
338         $size+=256;
339         $therow = "dir_".sprintf("%02X",$dir_row);
340         $dir_rowtext{$therow} =
341             "static const Q_UINT8 ${therow}[] = {$txt\n};\n\n";
342         $dir_row{$txt}=$therow;
343     }
344     $rowtable_txt .= "\n    " if $dir_row%8 == 0;
345     $rowtable_txt .= "$therow, ";
346 }
347
348 # Print pages...
349 #
350 for $r ( sort keys %dir_rowtext ) {
351     print $dir_rowtext{$r};
352 }
353 print "$rowtable_txt\n};\n";
354 $size += 256*4;
355 print "// $size bytes\n\n";
356
357
358
359 print "#endif\n\n";
360 print "// END OF GENERATED DATA\n\n";
361
362
363 __END__
364
365 */
366
367
368 // START OF GENERATED DATA
369
370 static const Q_UINT8 ui_00[] = {
371     10, 10, 10, 10, 10, 10, 10, 10,
372     10, 10, 10, 10, 10, 10, 10, 10,
373     10, 10, 10, 10, 10, 10, 10, 10,
374     10, 10, 10, 10, 10, 10, 10, 10,
375     7, 26, 26, 26, 28, 26, 26, 26,
376     22, 23, 26, 27, 26, 21, 26, 26,
377     4, 4, 4, 4, 4, 4, 4, 4,
378     4, 4, 26, 26, 27, 27, 27, 26,
379     26, 15, 15, 15, 15, 15, 15, 15,
380     15, 15, 15, 15, 15, 15, 15, 15,
381     15, 15, 15, 15, 15, 15, 15, 15,
382     15, 15, 15, 22, 26, 23, 29, 20,
383     29, 16, 16, 16, 16, 16, 16, 16,
384     16, 16, 16, 16, 16, 16, 16, 16,
385     16, 16, 16, 16, 16, 16, 16, 16,
386     16, 16, 16, 22, 27, 23, 27, 10,
387     10, 10, 10, 10, 10, 10, 10, 10,
388     10, 10, 10, 10, 10, 10, 10, 10,
389     10, 10, 10, 10, 10, 10, 10, 10,
390     10, 10, 10, 10, 10, 10, 10, 10,
391     7, 26, 28, 28, 28, 28, 30, 30,
392     29, 30, 16, 24, 27, 21, 30, 29,
393     30, 27, 6, 6, 29, 16, 30, 26,
394     29, 6, 16, 25, 6, 6, 6, 26,
395     15, 15, 15, 15, 15, 15, 15, 15,
396     15, 15, 15, 15, 15, 15, 15, 15,
397     15, 15, 15, 15, 15, 15, 15, 27,
398     15, 15, 15, 15, 15, 15, 15, 16,
399     16, 16, 16, 16, 16, 16, 16, 16,
400     16, 16, 16, 16, 16, 16, 16, 16,
401     16, 16, 16, 16, 16, 16, 16, 27,
402     16, 16, 16, 16, 16, 16, 16, 16,
403 };
404
405 #ifndef QT_NO_UNICODETABLES
406
407 static const Q_UINT8 ui_01[] = {
408     15, 16, 15, 16, 15, 16, 15, 16,
409     15, 16, 15, 16, 15, 16, 15, 16,
410     15, 16, 15, 16, 15, 16, 15, 16,
411     15, 16, 15, 16, 15, 16, 15, 16,
412     15, 16, 15, 16, 15, 16, 15, 16,
413     15, 16, 15, 16, 15, 16, 15, 16,
414     15, 16, 15, 16, 15, 16, 15, 16,
415     16, 15, 16, 15, 16, 15, 16, 15,
416     16, 15, 16, 15, 16, 15, 16, 15,
417     16, 16, 15, 16, 15, 16, 15, 16,
418     15, 16, 15, 16, 15, 16, 15, 16,
419     15, 16, 15, 16, 15, 16, 15, 16,
420     15, 16, 15, 16, 15, 16, 15, 16,
421     15, 16, 15, 16, 15, 16, 15, 16,
422     15, 16, 15, 16, 15, 16, 15, 16,
423     15, 15, 16, 15, 16, 15, 16, 16,
424     16, 15, 15, 16, 15, 16, 15, 15,
425     16, 15, 15, 15, 16, 16, 15, 15,
426     15, 15, 16, 15, 15, 16, 15, 15,
427     15, 16, 16, 16, 15, 15, 16, 15,
428     15, 16, 15, 16, 15, 16, 15, 15,
429     16, 15, 16, 16, 15, 16, 15, 15,
430     16, 15, 15, 15, 16, 15, 16, 15,
431     15, 16, 16, 19, 15, 16, 16, 16,
432     19, 19, 19, 19, 15, 17, 16, 15,
433     17, 16, 15, 17, 16, 15, 16, 15,
434     16, 15, 16, 15, 16, 15, 16, 15,
435     16, 15, 16, 15, 16, 16, 15, 16,
436     15, 16, 15, 16, 15, 16, 15, 16,
437     15, 16, 15, 16, 15, 16, 15, 16,
438     16, 15, 17, 16, 15, 16, 15, 15,
439     15, 16, 15, 16, 15, 16, 15, 16,
440 };
441
442 static const Q_UINT8 ui_02[] = {
443     15, 16, 15, 16, 15, 16, 15, 16,
444     15, 16, 15, 16, 15, 16, 15, 16,
445     15, 16, 15, 16, 15, 16, 15, 16,
446     15, 16, 15, 16, 15, 16, 15, 16,
447     0, 0, 15, 16, 15, 16, 15, 16,
448     15, 16, 15, 16, 15, 16, 15, 16,
449     15, 16, 15, 16, 0, 0, 0, 0,
450     0, 0, 0, 0, 0, 0, 0, 0,
451     0, 0, 0, 0, 0, 0, 0, 0,
452     0, 0, 0, 0, 0, 0, 0, 0,
453     16, 16, 16, 16, 16, 16, 16, 16,
454     16, 16, 16, 16, 16, 16, 16, 16,
455     16, 16, 16, 16, 16, 16, 16, 16,
456     16, 16, 16, 16, 16, 16, 16, 16,
457     16, 16, 16, 16, 16, 16, 16, 16,
458     16, 16, 16, 16, 16, 16, 16, 16,
459     16, 16, 16, 16, 16, 16, 16, 16,
460     16, 16, 16, 16, 16, 16, 16, 16,
461     16, 16, 16, 16, 16, 16, 16, 16,
462     16, 16, 16, 16, 16, 16, 16, 16,
463     16, 16, 16, 16, 16, 16, 16, 16,
464     16, 16, 16, 16, 16, 16, 0, 0,
465     18, 18, 18, 18, 18, 18, 18, 18,
466     18, 29, 29, 18, 18, 18, 18, 18,
467     18, 18, 29, 29, 29, 29, 29, 29,
468     29, 29, 29, 29, 29, 29, 29, 29,
469     18, 18, 29, 29, 29, 29, 29, 29,
470     29, 29, 29, 29, 29, 29, 29, 29,
471     18, 18, 18, 18, 18, 29, 29, 29,
472     29, 29, 29, 29, 29, 29, 18, 0,
473     0, 0, 0, 0, 0, 0, 0, 0,
474     0, 0, 0, 0, 0, 0, 0, 0,
475 };
476
477 static const Q_UINT8 ui_03[] = {
478     1, 1, 1, 1, 1, 1, 1, 1,
479     1, 1, 1, 1, 1, 1, 1, 1,
480     1, 1, 1, 1, 1, 1, 1, 1,
481     1, 1, 1, 1, 1, 1, 1, 1,
482     1, 1, 1, 1, 1, 1, 1, 1,
483     1, 1, 1, 1, 1, 1, 1, 1,
484     1, 1, 1, 1, 1, 1, 1, 1,
485     1, 1, 1, 1, 1, 1, 1, 1,
486     1, 1, 1, 1, 1, 1, 1, 1,
487     1, 1, 1, 1, 1, 1, 1, 0,
488     0, 0, 0, 0, 0, 0, 0, 0,
489     0, 0, 0, 0, 0, 0, 0, 0,
490     1, 1, 1, 0, 0, 0, 0, 0,
491     0, 0, 0, 0, 0, 0, 0, 0,
492     0, 0, 0, 0, 29, 29, 0, 0,
493     0, 0, 18, 0, 0, 0, 26, 0,
494     0, 0, 0, 0, 29, 29, 15, 26,
495     15, 15, 15, 0, 15, 0, 15, 15,
496     16, 15, 15, 15, 15, 15, 15, 15,
497     15, 15, 15, 15, 15, 15, 15, 15,
498     15, 15, 0, 15, 15, 15, 15, 15,
499     15, 15, 15, 15, 16, 16, 16, 16,
500     16, 16, 16, 16, 16, 16, 16, 16,
501     16, 16, 16, 16, 16, 16, 16, 16,
502     16, 16, 16, 16, 16, 16, 16, 16,
503     16, 16, 16, 16, 16, 16, 16, 0,
504     16, 16, 15, 15, 15, 16, 16, 16,
505     0, 0, 15, 16, 15, 16, 15, 16,
506     15, 16, 15, 16, 15, 16, 15, 16,
507     15, 16, 15, 16, 15, 16, 15, 16,
508     16, 16, 16, 16, 0, 0, 0, 0,
509     0, 0, 0, 0, 0, 0, 0, 0,
510 };
511
512 static const Q_UINT8 ui_04[] = {
513     15, 15, 15, 15, 15, 15, 15, 15,
514     15, 15, 15, 15, 15, 15, 15, 15,
515     15, 15, 15, 15, 15, 15, 15, 15,
516     15, 15, 15, 15, 15, 15, 15, 15,
517     15, 15, 15, 15, 15, 15, 15, 15,
518     15, 15, 15, 15, 15, 15, 15, 15,
519     16, 16, 16, 16, 16, 16, 16, 16,
520     16, 16, 16, 16, 16, 16, 16, 16,
521     16, 16, 16, 16, 16, 16, 16, 16,
522     16, 16, 16, 16, 16, 16, 16, 16,
523     16, 16, 16, 16, 16, 16, 16, 16,
524     16, 16, 16, 16, 16, 16, 16, 16,
525     15, 16, 15, 16, 15, 16, 15, 16,
526     15, 16, 15, 16, 15, 16, 15, 16,
527     15, 16, 15, 16, 15, 16, 15, 16,
528     15, 16, 15, 16, 15, 16, 15, 16,
529     15, 16, 30, 1, 1, 1, 1, 0,
530     3, 3, 0, 0, 15, 16, 15, 16,
531     15, 16, 15, 16, 15, 16, 15, 16,
532     15, 16, 15, 16, 15, 16, 15, 16,
533     15, 16, 15, 16, 15, 16, 15, 16,
534     15, 16, 15, 16, 15, 16, 15, 16,
535     15, 16, 15, 16, 15, 16, 15, 16,
536     15, 16, 15, 16, 15, 16, 15, 16,
537     15, 15, 16, 15, 16, 0, 0, 15,
538     16, 0, 0, 15, 16, 0, 0, 0,
539     15, 16, 15, 16, 15, 16, 15, 16,
540     15, 16, 15, 16, 15, 16, 15, 16,
541     15, 16, 15, 16, 15, 16, 15, 16,
542     15, 16, 15, 16, 15, 16, 15, 16,
543     15, 16, 15, 16, 15, 16, 0, 0,
544     15, 16, 0, 0, 0, 0, 0, 0,
545 };
546
547 static const Q_UINT8 ui_05[] = {
548     0, 0, 0, 0, 0, 0, 0, 0,
549     0, 0, 0, 0, 0, 0, 0, 0,
550     0, 0, 0, 0, 0, 0, 0, 0,
551     0, 0, 0, 0, 0, 0, 0, 0,
552     0, 0, 0, 0, 0, 0, 0, 0,
553     0, 0, 0, 0, 0, 0, 0, 0,
554     0, 15, 15, 15, 15, 15, 15, 15,
555     15, 15, 15, 15, 15, 15, 15, 15,
556     15, 15, 15, 15, 15, 15, 15, 15,
557     15, 15, 15, 15, 15, 15, 15, 15,
558     15, 15, 15, 15, 15, 15, 15, 0,
559     0, 18, 26, 26, 26, 26, 26, 26,
560     0, 16, 16, 16, 16, 16, 16, 16,
561     16, 16, 16, 16, 16, 16, 16, 16,
562     16, 16, 16, 16, 16, 16, 16, 16,
563     16, 16, 16, 16, 16, 16, 16, 16,
564     16, 16, 16, 16, 16, 16, 16, 16,
565     0, 26, 21, 0, 0, 0, 0, 0,
566     0, 1, 1, 1, 1, 1, 1, 1,
567     1, 1, 1, 1, 1, 1, 1, 1,
568     1, 1, 0, 1, 1, 1, 1, 1,
569     1, 1, 1, 1, 1, 1, 1, 1,
570     1, 1, 1, 1, 1, 1, 1, 1,
571     1, 1, 0, 1, 1, 1, 26, 1,
572     26, 1, 1, 26, 1, 0, 0, 0,
573     0, 0, 0, 0, 0, 0, 0, 0,
574     19, 19, 19, 19, 19, 19, 19, 19,
575     19, 19, 19, 19, 19, 19, 19, 19,
576     19, 19, 19, 19, 19, 19, 19, 19,
577     19, 19, 19, 0, 0, 0, 0, 0,
578     19, 19, 19, 26, 26, 0, 0, 0,
579     0, 0, 0, 0, 0, 0, 0, 0,
580 };
581
582 static const Q_UINT8 ui_06[] = {
583     0, 0, 0, 0, 0, 0, 0, 0,
584     0, 0, 0, 0, 26, 0, 0, 0,
585     0, 0, 0, 0, 0, 0, 0, 0,
586     0, 0, 0, 26, 0, 0, 0, 26,
587     0, 19, 19, 19, 19, 19, 19, 19,
588     19, 19, 19, 19, 19, 19, 19, 19,
589     19, 19, 19, 19, 19, 19, 19, 19,
590     19, 19, 19, 0, 0, 0, 0, 0,
591     18, 19, 19, 19, 19, 19, 19, 19,
592     19, 19, 19, 1, 1, 1, 1, 1,
593     1, 1, 1, 1, 1, 1, 0, 0,
594     0, 0, 0, 0, 0, 0, 0, 0,
595     4, 4, 4, 4, 4, 4, 4, 4,
596     4, 4, 26, 26, 26, 26, 0, 0,
597     1, 19, 19, 19, 19, 19, 19, 19,
598     19, 19, 19, 19, 19, 19, 19, 19,
599     19, 19, 19, 19, 19, 19, 19, 19,
600     19, 19, 19, 19, 19, 19, 19, 19,
601     19, 19, 19, 19, 19, 19, 19, 19,
602     19, 19, 19, 19, 19, 19, 19, 19,
603     19, 19, 19, 19, 19, 19, 19, 19,
604     19, 19, 19, 19, 19, 19, 19, 19,
605     19, 19, 19, 19, 19, 19, 19, 19,
606     19, 19, 19, 19, 19, 19, 19, 19,
607     19, 19, 19, 19, 19, 19, 19, 19,
608     19, 19, 19, 19, 19, 19, 19, 19,
609     19, 19, 19, 19, 26, 19, 1, 1,
610     1, 1, 1, 1, 1, 3, 3, 1,
611     1, 1, 1, 1, 1, 18, 18, 1,
612     1, 30, 1, 1, 1, 1, 0, 0,
613     4, 4, 4, 4, 4, 4, 4, 4,
614     4, 4, 19, 19, 19, 30, 30, 0,
615 };
616
617 static const Q_UINT8 ui_07[] = {
618     26, 26, 26, 26, 26, 26, 26, 26,
619     26, 26, 26, 26, 26, 26, 0, 11,
620     19, 1, 19, 19, 19, 19, 19, 19,
621     19, 19, 19, 19, 19, 19, 19, 19,
622     19, 19, 19, 19, 19, 19, 19, 19,
623     19, 19, 19, 19, 19, 0, 0, 0,
624     1, 1, 1, 1, 1, 1, 1, 1,
625     1, 1, 1, 1, 1, 1, 1, 1,
626     1, 1, 1, 1, 1, 1, 1, 1,
627     1, 1, 1, 0, 0, 0, 0, 0,
628     0, 0, 0, 0, 0, 0, 0, 0,
629     0, 0, 0, 0, 0, 0, 0, 0,
630     0, 0, 0, 0, 0, 0, 0, 0,
631     0, 0, 0, 0, 0, 0, 0, 0,
632     0, 0, 0, 0, 0, 0, 0, 0,
633     0, 0, 0, 0, 0, 0, 0, 0,
634     19, 19, 19, 19, 19, 19, 19, 19,
635     19, 19, 19, 19, 19, 19, 19, 19,
636     19, 19, 19, 19, 19, 19, 19, 19,
637     19, 19, 19, 19, 19, 19, 19, 19,
638     19, 19, 19, 19, 19, 19, 1, 1,
639     1, 1, 1, 1, 1, 1, 1, 1,
640     1, 0, 0, 0, 0, 0, 0, 0,
641     0, 0, 0, 0, 0, 0, 0, 0,
642     0, 0, 0, 0, 0, 0, 0, 0,
643     0, 0, 0, 0, 0, 0, 0, 0,
644     0, 0, 0, 0, 0, 0, 0, 0,
645     0, 0, 0, 0, 0, 0, 0, 0,
646     0, 0, 0, 0, 0, 0, 0, 0,
647     0, 0, 0, 0, 0, 0, 0, 0,
648     0, 0, 0, 0, 0, 0, 0, 0,
649     0, 0, 0, 0, 0, 0, 0, 0,
650 };
651
652 static const Q_UINT8 ui_08[] = {
653     0, 0, 0, 0, 0, 0, 0, 0,
654     0, 0, 0, 0, 0, 0, 0, 0,
655     0, 0, 0, 0, 0, 0, 0, 0,
656     0, 0, 0, 0, 0, 0, 0, 0,
657     0, 0, 0, 0, 0, 0, 0, 0,
658     0, 0, 0, 0, 0, 0, 0, 0,
659     0, 0, 0, 0, 0, 0, 0, 0,
660     0, 0, 0, 0, 0, 0, 0, 0,
661     0, 0, 0, 0, 0, 0, 0, 0,
662     0, 0, 0, 0, 0, 0, 0, 0,
663     0, 0, 0, 0, 0, 0, 0, 0,
664     0, 0, 0, 0, 0, 0, 0, 0,
665     0, 0, 0, 0, 0, 0, 0, 0,
666     0, 0, 0, 0, 0, 0, 0, 0,
667     0, 0, 0, 0, 0, 0, 0, 0,
668     0, 0, 0, 0, 0, 0, 0, 0,
669     0, 0, 0, 0, 0, 0, 0, 0,
670     0, 0, 0, 0, 0, 0, 0, 0,
671     0, 0, 0, 0, 0, 0, 0, 0,
672     0, 0, 0, 0, 0, 0, 0, 0,
673     0, 0, 0, 0, 0, 0, 0, 0,
674     0, 0, 0, 0, 0, 0, 0, 0,
675     0, 0, 0, 0, 0, 0, 0, 0,
676     0, 0, 0, 0, 0, 0, 0, 0,
677     0, 0, 0, 0, 0, 0, 0, 0,
678     0, 0, 0, 0, 0, 0, 0, 0,
679     0, 0, 0, 0, 0, 0, 0, 0,
680     0, 0, 0, 0, 0, 0, 0, 0,
681     0, 0, 0, 0, 0, 0, 0, 0,
682     0, 0, 0, 0, 0, 0, 0, 0,
683     0, 0, 0, 0, 0, 0, 0, 0,
684     0, 0, 0, 0, 0, 0, 0, 0,
685 };
686
687 static const Q_UINT8 ui_09[] = {
688     0, 1, 1, 2, 0, 19, 19, 19,
689     19, 19, 19, 19, 19, 19, 19, 19,
690     19, 19, 19, 19, 19, 19, 19, 19,
691     19, 19, 19, 19, 19, 19, 19, 19,
692     19, 19, 19, 19, 19, 19, 19, 19,
693     19, 19, 19, 19, 19, 19, 19, 19,
694     19, 19, 19, 19, 19, 19, 19, 19,
695     19, 19, 0, 0, 1, 19, 2, 2,
696     2, 1, 1, 1, 1, 1, 1, 1,
697     1, 2, 2, 2, 2, 1, 0, 0,
698     19, 1, 1, 1, 1, 0, 0, 0,
699     19, 19, 19, 19, 19, 19, 19, 19,
700     19, 19, 1, 1, 26, 26, 4, 4,
701     4, 4, 4, 4, 4, 4, 4, 4,
702     26, 0, 0, 0, 0, 0, 0, 0,
703     0, 0, 0, 0, 0, 0, 0, 0,
704     0, 1, 2, 2, 0, 19, 19, 19,
705     19, 19, 19, 19, 19, 0, 0, 19,
706     19, 0, 0, 19, 19, 19, 19, 19,
707     19, 19, 19, 19, 19, 19, 19, 19,
708     19, 19, 19, 19, 19, 19, 19, 19,
709     19, 0, 19, 19, 19, 19, 19, 19,
710     19, 0, 19, 0, 0, 0, 19, 19,
711     19, 19, 0, 0, 1, 0, 2, 2,
712     2, 1, 1, 1, 1, 0, 0, 2,
713     2, 0, 0, 2, 2, 1, 0, 0,
714     0, 0, 0, 0, 0, 0, 0, 2,
715     0, 0, 0, 0, 19, 19, 0, 19,
716     19, 19, 1, 1, 0, 0, 4, 4,
717     4, 4, 4, 4, 4, 4, 4, 4,
718     19, 19, 28, 28, 6, 6, 6, 6,
719     6, 6, 30, 0, 0, 0, 0, 0,
720 };
721
722 static const Q_UINT8 ui_0A[] = {
723     0, 0, 1, 0, 0, 19, 19, 19,
724     19, 19, 19, 0, 0, 0, 0, 19,
725     19, 0, 0, 19, 19, 19, 19, 19,
726     19, 19, 19, 19, 19, 19, 19, 19,
727     19, 19, 19, 19, 19, 19, 19, 19,
728     19, 0, 19, 19, 19, 19, 19, 19,
729     19, 0, 19, 19, 0, 19, 19, 0,
730     19, 19, 0, 0, 1, 0, 2, 2,
731     2, 1, 1, 0, 0, 0, 0, 1,
732     1, 0, 0, 1, 1, 1, 0, 0,
733     0, 0, 0, 0, 0, 0, 0, 0,
734     0, 19, 19, 19, 19, 0, 19, 0,
735     0, 0, 0, 0, 0, 0, 4, 4,
736     4, 4, 4, 4, 4, 4, 4, 4,
737     1, 1, 19, 19, 19, 0, 0, 0,
738     0, 0, 0, 0, 0, 0, 0, 0,
739     0, 1, 1, 2, 0, 19, 19, 19,
740     19, 19, 19, 19, 0, 19, 0, 19,
741     19, 19, 0, 19, 19, 19, 19, 19,
742     19, 19, 19, 19, 19, 19, 19, 19,
743     19, 19, 19, 19, 19, 19, 19, 19,
744     19, 0, 19, 19, 19, 19, 19, 19,
745     19, 0, 19, 19, 0, 19, 19, 19,
746     19, 19, 0, 0, 1, 19, 2, 2,
747     2, 1, 1, 1, 1, 1, 0, 1,
748     1, 2, 0, 2, 2, 1, 0, 0,
749     19, 0, 0, 0, 0, 0, 0, 0,
750     0, 0, 0, 0, 0, 0, 0, 0,
751     19, 0, 0, 0, 0, 0, 4, 4,
752     4, 4, 4, 4, 4, 4, 4, 4,
753     0, 0, 0, 0, 0, 0, 0, 0,
754     0, 0, 0, 0, 0, 0, 0, 0,
755 };
756
757 static const Q_UINT8 ui_0B[] = {
758     0, 1, 2, 2, 0, 19, 19, 19,
759     19, 19, 19, 19, 19, 0, 0, 19,
760     19, 0, 0, 19, 19, 19, 19, 19,
761     19, 19, 19, 19, 19, 19, 19, 19,
762     19, 19, 19, 19, 19, 19, 19, 19,
763     19, 0, 19, 19, 19, 19, 19, 19,
764     19, 0, 19, 19, 0, 0, 19, 19,
765     19, 19, 0, 0, 1, 19, 2, 1,
766     2, 1, 1, 1, 0, 0, 0, 2,
767     2, 0, 0, 2, 2, 1, 0, 0,
768     0, 0, 0, 0, 0, 0, 1, 2,
769     0, 0, 0, 0, 19, 19, 0, 19,
770     19, 19, 0, 0, 0, 0, 4, 4,
771     4, 4, 4, 4, 4, 4, 4, 4,
772     30, 0, 0, 0, 0, 0, 0, 0,
773     0, 0, 0, 0, 0, 0, 0, 0,
774     0, 0, 1, 2, 0, 19, 19, 19,
775     19, 19, 19, 0, 0, 0, 19, 19,
776     19, 0, 19, 19, 19, 19, 0, 0,
777     0, 19, 19, 0, 19, 0, 19, 19,
778     0, 0, 0, 19, 19, 0, 0, 0,
779     19, 19, 19, 0, 0, 0, 19, 19,
780     19, 19, 19, 19, 19, 19, 0, 19,
781     19, 19, 0, 0, 0, 0, 2, 2,
782     1, 2, 2, 0, 0, 0, 2, 2,
783     2, 0, 2, 2, 2, 1, 0, 0,
784     0, 0, 0, 0, 0, 0, 0, 2,
785     0, 0, 0, 0, 0, 0, 0, 0,
786     0, 0, 0, 0, 0, 0, 0, 4,
787     4, 4, 4, 4, 4, 4, 4, 4,
788     6, 6, 6, 0, 0, 0, 0, 0,
789     0, 0, 0, 0, 0, 0, 0, 0,
790 };
791
792 static const Q_UINT8 ui_0C[] = {
793     0, 2, 2, 2, 0, 19, 19, 19,
794     19, 19, 19, 19, 19, 0, 19, 19,
795     19, 0, 19, 19, 19, 19, 19, 19,
796     19, 19, 19, 19, 19, 19, 19, 19,
797     19, 19, 19, 19, 19, 19, 19, 19,
798     19, 0, 19, 19, 19, 19, 19, 19,
799     19, 19, 19, 19, 0, 19, 19, 19,
800     19, 19, 0, 0, 0, 0, 1, 1,
801     1, 2, 2, 2, 2, 0, 1, 1,
802     1, 0, 1, 1, 1, 1, 0, 0,
803     0, 0, 0, 0, 0, 1, 1, 0,
804     0, 0, 0, 0, 0, 0, 0, 0,
805     19, 19, 0, 0, 0, 0, 4, 4,
806     4, 4, 4, 4, 4, 4, 4, 4,
807     0, 0, 0, 0, 0, 0, 0, 0,
808     0, 0, 0, 0, 0, 0, 0, 0,
809     0, 0, 2, 2, 0, 19, 19, 19,
810     19, 19, 19, 19, 19, 0, 19, 19,
811     19, 0, 19, 19, 19, 19, 19, 19,
812     19, 19, 19, 19, 19, 19, 19, 19,
813     19, 19, 19, 19, 19, 19, 19, 19,
814     19, 0, 19, 19, 19, 19, 19, 19,
815     19, 19, 19, 19, 0, 19, 19, 19,
816     19, 19, 0, 0, 0, 0, 2, 1,
817     2, 2, 2, 2, 2, 0, 1, 2,
818     2, 0, 2, 2, 1, 1, 0, 0,
819     0, 0, 0, 0, 0, 2, 2, 0,
820     0, 0, 0, 0, 0, 0, 19, 0,
821     19, 19, 0, 0, 0, 0, 4, 4,
822     4, 4, 4, 4, 4, 4, 4, 4,
823     0, 0, 0, 0, 0, 0, 0, 0,
824     0, 0, 0, 0, 0, 0, 0, 0,
825 };
826
827 static const Q_UINT8 ui_0D[] = {
828     0, 0, 2, 2, 0, 19, 19, 19,
829     19, 19, 19, 19, 19, 0, 19, 19,
830     19, 0, 19, 19, 19, 19, 19, 19,
831     19, 19, 19, 19, 19, 19, 19, 19,
832     19, 19, 19, 19, 19, 19, 19, 19,
833     19, 0, 19, 19, 19, 19, 19, 19,
834     19, 19, 19, 19, 19, 19, 19, 19,
835     19, 19, 0, 0, 0, 0, 2, 2,
836     2, 1, 1, 1, 0, 0, 2, 2,
837     2, 0, 2, 2, 2, 1, 0, 0,
838     0, 0, 0, 0, 0, 0, 0, 2,
839     0, 0, 0, 0, 0, 0, 0, 0,
840     19, 19, 0, 0, 0, 0, 4, 4,
841     4, 4, 4, 4, 4, 4, 4, 4,
842     0, 0, 0, 0, 0, 0, 0, 0,
843     0, 0, 0, 0, 0, 0, 0, 0,
844     0, 0, 2, 2, 0, 19, 19, 19,
845     19, 19, 19, 19, 19, 19, 19, 19,
846     19, 19, 19, 19, 19, 19, 19, 0,
847     0, 0, 19, 19, 19, 19, 19, 19,
848     19, 19, 19, 19, 19, 19, 19, 19,
849     19, 19, 19, 19, 19, 19, 19, 19,
850     19, 19, 0, 19, 19, 19, 19, 19,
851     19, 19, 19, 19, 0, 19, 0, 0,
852     19, 19, 19, 19, 19, 19, 19, 0,
853     0, 0, 1, 0, 0, 0, 0, 2,
854     2, 2, 1, 1, 1, 0, 1, 0,
855     2, 2, 2, 2, 2, 2, 2, 2,
856     0, 0, 0, 0, 0, 0, 0, 0,
857     0, 0, 0, 0, 0, 0, 0, 0,
858     0, 0, 2, 2, 26, 0, 0, 0,
859     0, 0, 0, 0, 0, 0, 0, 0,
860 };
861
862 static const Q_UINT8 ui_0E[] = {
863     0, 19, 19, 19, 19, 19, 19, 19,
864     19, 19, 19, 19, 19, 19, 19, 19,
865     19, 19, 19, 19, 19, 19, 19, 19,
866     19, 19, 19, 19, 19, 19, 19, 19,
867     19, 19, 19, 19, 19, 19, 19, 19,
868     19, 19, 19, 19, 19, 19, 19, 19,
869     19, 1, 19, 19, 1, 1, 1, 1,
870     1, 1, 1, 0, 0, 0, 0, 28,
871     19, 19, 19, 19, 19, 19, 18, 1,
872     1, 1, 1, 1, 1, 1, 1, 26,
873     4, 4, 4, 4, 4, 4, 4, 4,
874     4, 4, 26, 26, 0, 0, 0, 0,
875     0, 0, 0, 0, 0, 0, 0, 0,
876     0, 0, 0, 0, 0, 0, 0, 0,
877     0, 0, 0, 0, 0, 0, 0, 0,
878     0, 0, 0, 0, 0, 0, 0, 0,
879     0, 19, 19, 0, 19, 0, 0, 19,
880     19, 0, 19, 0, 0, 19, 0, 0,
881     0, 0, 0, 0, 19, 19, 19, 19,
882     0, 19, 19, 19, 19, 19, 19, 19,
883     0, 19, 19, 19, 0, 19, 0, 19,
884     0, 0, 19, 19, 0, 19, 19, 19,
885     19, 1, 19, 19, 1, 1, 1, 1,
886     1, 1, 0, 1, 1, 19, 0, 0,
887     19, 19, 19, 19, 19, 0, 18, 0,
888     1, 1, 1, 1, 1, 1, 0, 0,
889     4, 4, 4, 4, 4, 4, 4, 4,
890     4, 4, 0, 0, 19, 19, 0, 0,
891     0, 0, 0, 0, 0, 0, 0, 0,
892     0, 0, 0, 0, 0, 0, 0, 0,
893     0, 0, 0, 0, 0, 0, 0, 0,
894     0, 0, 0, 0, 0, 0, 0, 0,
895 };
896
897 static const Q_UINT8 ui_0F[] = {
898     19, 30, 30, 30, 26, 26, 26, 26,
899     26, 26, 26, 26, 26, 26, 26, 26,
900     26, 26, 26, 30, 30, 30, 30, 30,
901     1, 1, 30, 30, 30, 30, 30, 30,
902     4, 4, 4, 4, 4, 4, 4, 4,
903     4, 4, 6, 6, 6, 6, 6, 6,
904     6, 6, 6, 6, 30, 1, 30, 1,
905     30, 1, 22, 23, 22, 23, 2, 2,
906     19, 19, 19, 19, 19, 19, 19, 19,
907     0, 19, 19, 19, 19, 19, 19, 19,
908     19, 19, 19, 19, 19, 19, 19, 19,
909     19, 19, 19, 19, 19, 19, 19, 19,
910     19, 19, 19, 19, 19, 19, 19, 19,
911     19, 19, 19, 0, 0, 0, 0, 0,
912     0, 1, 1, 1, 1, 1, 1, 1,
913     1, 1, 1, 1, 1, 1, 1, 2,
914     1, 1, 1, 1, 1, 26, 1, 1,
915     19, 19, 19, 19, 0, 0, 0, 0,
916     1, 1, 1, 1, 1, 1, 1, 1,
917     0, 1, 1, 1, 1, 1, 1, 1,
918     1, 1, 1, 1, 1, 1, 1, 1,
919     1, 1, 1, 1, 1, 1, 1, 1,
920     1, 1, 1, 1, 1, 1, 1, 1,
921     1, 1, 1, 1, 1, 0, 30, 30,
922     30, 30, 30, 30, 30, 30, 1, 30,
923     30, 30, 30, 30, 30, 0, 0, 30,
924     0, 0, 0, 0, 0, 0, 0, 0,
925     0, 0, 0, 0, 0, 0, 0, 0,
926     0, 0, 0, 0, 0, 0, 0, 0,
927     0, 0, 0, 0, 0, 0, 0, 0,
928     0, 0, 0, 0, 0, 0, 0, 0,
929     0, 0, 0, 0, 0, 0, 0, 0,
930 };
931
932 static const Q_UINT8 ui_10[] = {
933     19, 19, 19, 19, 19, 19, 19, 19,
934     19, 19, 19, 19, 19, 19, 19, 19,
935     19, 19, 19, 19, 19, 19, 19, 19,
936     19, 19, 19, 19, 19, 19, 19, 19,
937     19, 19, 0, 19, 19, 19, 19, 19,
938     0, 19, 19, 0, 2, 1, 1, 1,
939     1, 2, 1, 0, 0, 0, 1, 1,
940     2, 1, 0, 0, 0, 0, 0, 0,
941     4, 4, 4, 4, 4, 4, 4, 4,
942     4, 4, 26, 26, 26, 26, 26, 26,
943     19, 19, 19, 19, 19, 19, 2, 2,
944     1, 1, 0, 0, 0, 0, 0, 0,
945     0, 0, 0, 0, 0, 0, 0, 0,
946     0, 0, 0, 0, 0, 0, 0, 0,
947     0, 0, 0, 0, 0, 0, 0, 0,
948     0, 0, 0, 0, 0, 0, 0, 0,
949     0, 0, 0, 0, 0, 0, 0, 0,
950     0, 0, 0, 0, 0, 0, 0, 0,
951     0, 0, 0, 0, 0, 0, 0, 0,
952     0, 0, 0, 0, 0, 0, 0, 0,
953     15, 15, 15, 15, 15, 15, 15, 15,
954     15, 15, 15, 15, 15, 15, 15, 15,
955     15, 15, 15, 15, 15, 15, 15, 15,
956     15, 15, 15, 15, 15, 15, 15, 15,
957     15, 15, 15, 15, 15, 15, 0, 0,
958     0, 0, 0, 0, 0, 0, 0, 0,
959     19, 19, 19, 19, 19, 19, 19, 19,
960     19, 19, 19, 19, 19, 19, 19, 19,
961     19, 19, 19, 19, 19, 19, 19, 19,
962     19, 19, 19, 19, 19, 19, 19, 19,
963     19, 19, 19, 19, 19, 19, 19, 0,
964     0, 0, 0, 26, 0, 0, 0, 0,
965 };
966
967 static const Q_UINT8 ui_11[] = {
968     19, 19, 19, 19, 19, 19, 19, 19,
969     19, 19, 19, 19, 19, 19, 19, 19,
970     19, 19, 19, 19, 19, 19, 19, 19,
971     19, 19, 19, 19, 19, 19, 19, 19,
972     19, 19, 19, 19, 19, 19, 19, 19,
973     19, 19, 19, 19, 19, 19, 19, 19,
974     19, 19, 19, 19, 19, 19, 19, 19,
975     19, 19, 19, 19, 19, 19, 19, 19,
976     19, 19, 19, 19, 19, 19, 19, 19,
977     19, 19, 19, 19, 19, 19, 19, 19,
978     19, 19, 19, 19, 19, 19, 19, 19,
979     19, 19, 0, 0, 0, 0, 0, 19,
980     19, 19, 19, 19, 19, 19, 19, 19,
981     19, 19, 19, 19, 19, 19, 19, 19,
982     19, 19, 19, 19, 19, 19, 19, 19,
983     19, 19, 19, 19, 19, 19, 19, 19,
984     19, 19, 19, 19, 19, 19, 19, 19,
985     19, 19, 19, 19, 19, 19, 19, 19,
986     19, 19, 19, 19, 19, 19, 19, 19,
987     19, 19, 19, 19, 19, 19, 19, 19,
988     19, 19, 19, 0, 0, 0, 0, 0,
989     19, 19, 19, 19, 19, 19, 19, 19,
990     19, 19, 19, 19, 19, 19, 19, 19,
991     19, 19, 19, 19, 19, 19, 19, 19,
992     19, 19, 19, 19, 19, 19, 19, 19,
993     19, 19, 19, 19, 19, 19, 19, 19,
994     19, 19, 19, 19, 19, 19, 19, 19,
995     19, 19, 19, 19, 19, 19, 19, 19,
996     19, 19, 19, 19, 19, 19, 19, 19,
997     19, 19, 19, 19, 19, 19, 19, 19,
998     19, 19, 19, 19, 19, 19, 19, 19,
999     19, 19, 0, 0, 0, 0, 0, 0,
1000 };
1001
1002 static const Q_UINT8 ui_12[] = {
1003     19, 19, 19, 19, 19, 19, 19, 0,
1004     19, 19, 19, 19, 19, 19, 19, 19,
1005     19, 19, 19, 19, 19, 19, 19, 19,
1006     19, 19, 19, 19, 19, 19, 19, 19,
1007     19, 19, 19, 19, 19, 19, 19, 19,
1008     19, 19, 19, 19, 19, 19, 19, 19,
1009     19, 19, 19, 19, 19, 19, 19, 19,
1010     19, 19, 19, 19, 19, 19, 19, 19,
1011     19, 19, 19, 19, 19, 19, 19, 0,
1012     19, 0, 19, 19, 19, 19, 0, 0,
1013     19, 19, 19, 19, 19, 19, 19, 0,
1014     19, 0, 19, 19, 19, 19, 0, 0,
1015     19, 19, 19, 19, 19, 19, 19, 19,
1016     19, 19, 19, 19, 19, 19, 19, 19,
1017     19, 19, 19, 19, 19, 19, 19, 19,
1018     19, 19, 19, 19, 19, 19, 19, 19,
1019     19, 19, 19, 19, 19, 19, 19, 0,
1020     19, 0, 19, 19, 19, 19, 0, 0,
1021     19, 19, 19, 19, 19, 19, 19, 19,
1022     19, 19, 19, 19, 19, 19, 19, 19,
1023     19, 19, 19, 19, 19, 19, 19, 19,
1024     19, 19, 19, 19, 19, 19, 19, 0,
1025     19, 0, 19, 19, 19, 19, 0, 0,
1026     19, 19, 19, 19, 19, 19, 19, 0,
1027     19, 0, 19, 19, 19, 19, 0, 0,
1028     19, 19, 19, 19, 19, 19, 19, 0,
1029     19, 19, 19, 19, 19, 19, 19, 0,
1030     19, 19, 19, 19, 19, 19, 19, 19,
1031     19, 19, 19, 19, 19, 19, 19, 19,
1032     19, 19, 19, 19, 19, 19, 19, 0,
1033     19, 19, 19, 19, 19, 19, 19, 19,
1034     19, 19, 19, 19, 19, 19, 19, 19,
1035 };
1036
1037 static const Q_UINT8 ui_13[] = {
1038     19, 19, 19, 19, 19, 19, 19, 19,
1039     19, 19, 19, 19, 19, 19, 19, 0,
1040     19, 0, 19, 19, 19, 19, 0, 0,
1041     19, 19, 19, 19, 19, 19, 19, 0,
1042     19, 19, 19, 19, 19, 19, 19, 19,
1043     19, 19, 19, 19, 19, 19, 19, 19,
1044     19, 19, 19, 19, 19, 19, 19, 19,
1045     19, 19, 19, 19, 19, 19, 19, 19,
1046     19, 19, 19, 19, 19, 19, 19, 0,
1047     19, 19, 19, 19, 19, 19, 19, 19,
1048     19, 19, 19, 19, 19, 19, 19, 19,
1049     19, 19, 19, 0, 0, 0, 0, 0,
1050     0, 26, 26, 26, 26, 26, 26, 26,
1051     26, 4, 4, 4, 4, 4, 4, 4,
1052     4, 4, 6, 6, 6, 6, 6, 6,
1053     6, 6, 6, 6, 6, 0, 0, 0,
1054     0, 0, 0, 0, 0, 0, 0, 0,
1055     0, 0, 0, 0, 0, 0, 0, 0,
1056     0, 0, 0, 0, 0, 0, 0, 0,
1057     0, 0, 0, 0, 0, 0, 0, 0,
1058     19, 19, 19, 19, 19, 19, 19, 19,
1059     19, 19, 19, 19, 19, 19, 19, 19,
1060     19, 19, 19, 19, 19, 19, 19, 19,
1061     19, 19, 19, 19, 19, 19, 19, 19,
1062     19, 19, 19, 19, 19, 19, 19, 19,
1063     19, 19, 19, 19, 19, 19, 19, 19,
1064     19, 19, 19, 19, 19, 19, 19, 19,
1065     19, 19, 19, 19, 19, 19, 19, 19,
1066     19, 19, 19, 19, 19, 19, 19, 19,
1067     19, 19, 19, 19, 19, 19, 19, 19,
1068     19, 19, 19, 19, 19, 0, 0, 0,
1069     0, 0, 0, 0, 0, 0, 0, 0,
1070 };
1071
1072 static const Q_UINT8 ui_14[] = {
1073     0, 19, 19, 19, 19, 19, 19, 19,
1074     19, 19, 19, 19, 19, 19, 19, 19,
1075     19, 19, 19, 19, 19, 19, 19, 19,
1076     19, 19, 19, 19, 19, 19, 19, 19,
1077     19, 19, 19, 19, 19, 19, 19, 19,
1078     19, 19, 19, 19, 19, 19, 19, 19,
1079     19, 19, 19, 19, 19, 19, 19, 19,
1080     19, 19, 19, 19, 19, 19, 19, 19,
1081     19, 19, 19, 19, 19, 19, 19, 19,
1082     19, 19, 19, 19, 19, 19, 19, 19,
1083     19, 19, 19, 19, 19, 19, 19, 19,
1084     19, 19, 19, 19, 19, 19, 19, 19,
1085     19, 19, 19, 19, 19, 19, 19, 19,
1086     19, 19, 19, 19, 19, 19, 19, 19,
1087     19, 19, 19, 19, 19, 19, 19, 19,
1088     19, 19, 19, 19, 19, 19, 19, 19,
1089     19, 19, 19, 19, 19, 19, 19, 19,
1090     19, 19, 19, 19, 19, 19, 19, 19,
1091     19, 19, 19, 19, 19, 19, 19, 19,
1092     19, 19, 19, 19, 19, 19, 19, 19,
1093     19, 19, 19, 19, 19, 19, 19, 19,
1094     19, 19, 19, 19, 19, 19, 19, 19,
1095     19, 19, 19, 19, 19, 19, 19, 19,
1096     19, 19, 19, 19, 19, 19, 19, 19,
1097     19, 19, 19, 19, 19, 19, 19, 19,
1098     19, 19, 19, 19, 19, 19, 19, 19,
1099     19, 19, 19, 19, 19, 19, 19, 19,
1100     19, 19, 19, 19, 19, 19, 19, 19,
1101     19, 19, 19, 19, 19, 19, 19, 19,
1102     19, 19, 19, 19, 19, 19, 19, 19,
1103     19, 19, 19, 19, 19, 19, 19, 19,
1104     19, 19, 19, 19, 19, 19, 19, 19,
1105 };
1106
1107 static const Q_UINT8 ui_15[] = {
1108     19, 19, 19, 19, 19, 19, 19, 19,
1109     19, 19, 19, 19, 19, 19, 19, 19,
1110     19, 19, 19, 19, 19, 19, 19, 19,
1111     19, 19, 19, 19, 19, 19, 19, 19,
1112     19, 19, 19, 19, 19, 19, 19, 19,
1113     19, 19, 19, 19, 19, 19, 19, 19,
1114     19, 19, 19, 19, 19, 19, 19, 19,
1115     19, 19, 19, 19, 19, 19, 19, 19,
1116     19, 19, 19, 19, 19, 19, 19, 19,
1117     19, 19, 19, 19, 19, 19, 19, 19,
1118     19, 19, 19, 19, 19, 19, 19, 19,
1119     19, 19, 19, 19, 19, 19, 19, 19,
1120     19, 19, 19, 19, 19, 19, 19, 19,
1121     19, 19, 19, 19, 19, 19, 19, 19,
1122     19, 19, 19, 19, 19, 19, 19, 19,
1123     19, 19, 19, 19, 19, 19, 19, 19,
1124     19, 19, 19, 19, 19, 19, 19, 19,
1125     19, 19, 19, 19, 19, 19, 19, 19,
1126     19, 19, 19, 19, 19, 19, 19, 19,
1127     19, 19, 19, 19, 19, 19, 19, 19,
1128     19, 19, 19, 19, 19, 19, 19, 19,
1129     19, 19, 19, 19, 19, 19, 19, 19,
1130     19, 19, 19, 19, 19, 19, 19, 19,
1131     19, 19, 19, 19, 19, 19, 19, 19,
1132     19, 19, 19, 19, 19, 19, 19, 19,
1133     19, 19, 19, 19, 19, 19, 19, 19,
1134     19, 19, 19, 19, 19, 19, 19, 19,
1135     19, 19, 19, 19, 19, 19, 19, 19,
1136     19, 19, 19, 19, 19, 19, 19, 19,
1137     19, 19, 19, 19, 19, 19, 19, 19,
1138     19, 19, 19, 19, 19, 19, 19, 19,
1139     19, 19, 19, 19, 19, 19, 19, 19,
1140 };
1141
1142 static const Q_UINT8 ui_16[] = {
1143     19, 19, 19, 19, 19, 19, 19, 19,
1144     19, 19, 19, 19, 19, 19, 19, 19,
1145     19, 19, 19, 19, 19, 19, 19, 19,
1146     19, 19, 19, 19, 19, 19, 19, 19,
1147     19, 19, 19, 19, 19, 19, 19, 19,
1148     19, 19, 19, 19, 19, 19, 19, 19,
1149     19, 19, 19, 19, 19, 19, 19, 19,
1150     19, 19, 19, 19, 19, 19, 19, 19,
1151     19, 19, 19, 19, 19, 19, 19, 19,
1152     19, 19, 19, 19, 19, 19, 19, 19,
1153     19, 19, 19, 19, 19, 19, 19, 19,
1154     19, 19, 19, 19, 19, 19, 19, 19,
1155     19, 19, 19, 19, 19, 19, 19, 19,
1156     19, 19, 19, 19, 19, 26, 26, 19,
1157     19, 19, 19, 19, 19, 19, 19, 0,
1158     0, 0, 0, 0, 0, 0, 0, 0,
1159     7, 19, 19, 19, 19, 19, 19, 19,
1160     19, 19, 19, 19, 19, 19, 19, 19,
1161     19, 19, 19, 19, 19, 19, 19, 19,
1162     19, 19, 19, 22, 23, 0, 0, 0,
1163     19, 19, 19, 19, 19, 19, 19, 19,
1164     19, 19, 19, 19, 19, 19, 19, 19,
1165     19, 19, 19, 19, 19, 19, 19, 19,
1166     19, 19, 19, 19, 19, 19, 19, 19,
1167     19, 19, 19, 19, 19, 19, 19, 19,
1168     19, 19, 19, 19, 19, 19, 19, 19,
1169     19, 19, 19, 19, 19, 19, 19, 19,
1170     19, 19, 19, 19, 19, 19, 19, 19,
1171     19, 19, 19, 19, 19, 19, 19, 19,
1172     19, 19, 19, 26, 26, 26, 6, 6,
1173     6, 0, 0, 0, 0, 0, 0, 0,
1174     0, 0, 0, 0, 0, 0, 0, 0,
1175 };
1176
1177 static const Q_UINT8 ui_17[] = {
1178     0, 0, 0, 0, 0, 0, 0, 0,
1179     0, 0, 0, 0, 0, 0, 0, 0,
1180     0, 0, 0, 0, 0, 0, 0, 0,
1181     0, 0, 0, 0, 0, 0, 0, 0,
1182     0, 0, 0, 0, 0, 0, 0, 0,
1183     0, 0, 0, 0, 0, 0, 0, 0,
1184     0, 0, 0, 0, 0, 0, 0, 0,
1185     0, 0, 0, 0, 0, 0, 0, 0,
1186     0, 0, 0, 0, 0, 0, 0, 0,
1187     0, 0, 0, 0, 0, 0, 0, 0,
1188     0, 0, 0, 0, 0, 0, 0, 0,
1189     0, 0, 0, 0, 0, 0, 0, 0,
1190     0, 0, 0, 0, 0, 0, 0, 0,
1191     0, 0, 0, 0, 0, 0, 0, 0,
1192     0, 0, 0, 0, 0, 0, 0, 0,
1193     0, 0, 0, 0, 0, 0, 0, 0,
1194     19, 19, 19, 19, 19, 19, 19, 19,
1195     19, 19, 19, 19, 19, 19, 19, 19,
1196     19, 19, 19, 19, 19, 19, 19, 19,
1197     19, 19, 19, 19, 19, 19, 19, 19,
1198     19, 19, 19, 19, 19, 19, 19, 19,
1199     19, 19, 19, 19, 19, 19, 19, 19,
1200     19, 19, 19, 19, 2, 2, 2, 1,
1201     1, 1, 1, 1, 1, 1, 2, 2,
1202     2, 2, 2, 2, 2, 2, 1, 2,
1203     2, 1, 1, 1, 1, 1, 1, 1,
1204     1, 1, 1, 1, 26, 26, 26, 26,
1205     26, 26, 26, 28, 26, 0, 0, 0,
1206     4, 4, 4, 4, 4, 4, 4, 4,
1207     4, 4, 0, 0, 0, 0, 0, 0,
1208     0, 0, 0, 0, 0, 0, 0, 0,
1209     0, 0, 0, 0, 0, 0, 0, 0,
1210 };
1211
1212 static const Q_UINT8 ui_18[] = {
1213     26, 26, 26, 26, 26, 26, 21, 26,
1214     26, 26, 26, 11, 11, 11, 11, 0,
1215     4, 4, 4, 4, 4, 4, 4, 4,
1216     4, 4, 0, 0, 0, 0, 0, 0,
1217     19, 19, 19, 19, 19, 19, 19, 19,
1218     19, 19, 19, 19, 19, 19, 19, 19,
1219     19, 19, 19, 19, 19, 19, 19, 19,
1220     19, 19, 19, 19, 19, 19, 19, 19,
1221     19, 19, 19, 18, 19, 19, 19, 19,
1222     19, 19, 19, 19, 19, 19, 19, 19,
1223     19, 19, 19, 19, 19, 19, 19, 19,
1224     19, 19, 19, 19, 19, 19, 19, 19,
1225     19, 19, 19, 19, 19, 19, 19, 19,
1226     19, 19, 19, 19, 19, 19, 19, 19,
1227     19, 19, 19, 19, 19, 19, 19, 19,
1228     0, 0, 0, 0, 0, 0, 0, 0,
1229     19, 19, 19, 19, 19, 19, 19, 19,
1230     19, 19, 19, 19, 19, 19, 19, 19,
1231     19, 19, 19, 19, 19, 19, 19, 19,
1232     19, 19, 19, 19, 19, 19, 19, 19,
1233     19, 19, 19, 19, 19, 19, 19, 19,
1234     19, 1, 0, 0, 0, 0, 0, 0,
1235     0, 0, 0, 0, 0, 0, 0, 0,
1236     0, 0, 0, 0, 0, 0, 0, 0,
1237     0, 0, 0, 0, 0, 0, 0, 0,
1238     0, 0, 0, 0, 0, 0, 0, 0,
1239     0, 0, 0, 0, 0, 0, 0, 0,
1240     0, 0, 0, 0, 0, 0, 0, 0,
1241     0, 0, 0, 0, 0, 0, 0, 0,
1242     0, 0, 0, 0, 0, 0, 0, 0,
1243     0, 0, 0, 0, 0, 0, 0, 0,
1244     0, 0, 0, 0, 0, 0, 0, 0,
1245 };
1246
1247 static const Q_UINT8 ui_1E[] = {
1248     15, 16, 15, 16, 15, 16, 15, 16,
1249     15, 16, 15, 16, 15, 16, 15, 16,
1250     15, 16, 15, 16, 15, 16, 15, 16,
1251     15, 16, 15, 16, 15, 16, 15, 16,
1252     15, 16, 15, 16, 15, 16, 15, 16,
1253     15, 16, 15, 16, 15, 16, 15, 16,
1254     15, 16, 15, 16, 15, 16, 15, 16,
1255     15, 16, 15, 16, 15, 16, 15, 16,
1256     15, 16, 15, 16, 15, 16, 15, 16,
1257     15, 16, 15, 16, 15, 16, 15, 16,
1258     15, 16, 15, 16, 15, 16, 15, 16,
1259     15, 16, 15, 16, 15, 16, 15, 16,
1260     15, 16, 15, 16, 15, 16, 15, 16,
1261     15, 16, 15, 16, 15, 16, 15, 16,
1262     15, 16, 15, 16, 15, 16, 15, 16,
1263     15, 16, 15, 16, 15, 16, 15, 16,
1264     15, 16, 15, 16, 15, 16, 15, 16,
1265     15, 16, 15, 16, 15, 16, 15, 16,
1266     15, 16, 15, 16, 15, 16, 16, 16,
1267     16, 16, 16, 16, 0, 0, 0, 0,
1268     15, 16, 15, 16, 15, 16, 15, 16,
1269     15, 16, 15, 16, 15, 16, 15, 16,
1270     15, 16, 15, 16, 15, 16, 15, 16,
1271     15, 16, 15, 16, 15, 16, 15, 16,
1272     15, 16, 15, 16, 15, 16, 15, 16,
1273     15, 16, 15, 16, 15, 16, 15, 16,
1274     15, 16, 15, 16, 15, 16, 15, 16,
1275     15, 16, 15, 16, 15, 16, 15, 16,
1276     15, 16, 15, 16, 15, 16, 15, 16,
1277     15, 16, 15, 16, 15, 16, 15, 16,
1278     15, 16, 15, 16, 15, 16, 15, 16,
1279     15, 16, 0, 0, 0, 0, 0, 0,
1280 };
1281
1282 static const Q_UINT8 ui_1F[] = {
1283     16, 16, 16, 16, 16, 16, 16, 16,
1284     15, 15, 15, 15, 15, 15, 15, 15,
1285     16, 16, 16, 16, 16, 16, 0, 0,
1286     15, 15, 15, 15, 15, 15, 0, 0,
1287     16, 16, 16, 16, 16, 16, 16, 16,
1288     15, 15, 15, 15, 15, 15, 15, 15,
1289     16, 16, 16, 16, 16, 16, 16, 16,
1290     15, 15, 15, 15, 15, 15, 15, 15,
1291     16, 16, 16, 16, 16, 16, 0, 0,
1292     15, 15, 15, 15, 15, 15, 0, 0,
1293     16, 16, 16, 16, 16, 16, 16, 16,
1294     0, 15, 0, 15, 0, 15, 0, 15,
1295     16, 16, 16, 16, 16, 16, 16, 16,
1296     15, 15, 15, 15, 15, 15, 15, 15,
1297     16, 16, 16, 16, 16, 16, 16, 16,
1298     16, 16, 16, 16, 16, 16, 0, 0,
1299     16, 16, 16, 16, 16, 16, 16, 16,
1300     17, 17, 17, 17, 17, 17, 17, 17,
1301     16, 16, 16, 16, 16, 16, 16, 16,
1302     17, 17, 17, 17, 17, 17, 17, 17,
1303     16, 16, 16, 16, 16, 16, 16, 16,
1304     17, 17, 17, 17, 17, 17, 17, 17,
1305     16, 16, 16, 16, 16, 0, 16, 16,
1306     15, 15, 15, 15, 17, 29, 16, 29,
1307     29, 29, 16, 16, 16, 0, 16, 16,
1308     15, 15, 15, 15, 17, 29, 29, 29,
1309     16, 16, 16, 16, 0, 0, 16, 16,
1310     15, 15, 15, 15, 0, 29, 29, 29,
1311     16, 16, 16, 16, 16, 16, 16, 16,
1312     15, 15, 15, 15, 15, 29, 29, 29,
1313     0, 0, 16, 16, 16, 0, 16, 16,
1314     15, 15, 15, 15, 17, 29, 29, 0,
1315 };
1316
1317 static const Q_UINT8 ui_20[] = {
1318     7, 7, 7, 7, 7, 7, 7, 7,
1319     7, 7, 7, 7, 11, 11, 11, 11,
1320     21, 21, 21, 21, 21, 21, 26, 26,
1321     24, 25, 22, 24, 24, 25, 22, 24,
1322     26, 26, 26, 26, 26, 26, 26, 26,
1323     8, 9, 11, 11, 11, 11, 11, 7,
1324     26, 26, 26, 26, 26, 26, 26, 26,
1325     26, 24, 25, 26, 26, 26, 26, 20,
1326     20, 26, 26, 26, 27, 22, 23, 0,
1327     26, 26, 26, 26, 26, 26, 0, 0,
1328     0, 0, 0, 0, 0, 0, 0, 0,
1329     0, 0, 0, 0, 0, 0, 0, 0,
1330     0, 0, 0, 0, 0, 0, 0, 0,
1331     0, 0, 11, 11, 11, 11, 11, 11,
1332     6, 0, 0, 0, 6, 6, 6, 6,
1333     6, 6, 27, 27, 27, 22, 23, 16,
1334     6, 6, 6, 6, 6, 6, 6, 6,
1335     6, 6, 27, 27, 27, 22, 23, 0,
1336     0, 0, 0, 0, 0, 0, 0, 0,
1337     0, 0, 0, 0, 0, 0, 0, 0,
1338     28, 28, 28, 28, 28, 28, 28, 28,
1339     28, 28, 28, 28, 28, 28, 28, 28,
1340     0, 0, 0, 0, 0, 0, 0, 0,
1341     0, 0, 0, 0, 0, 0, 0, 0,
1342     0, 0, 0, 0, 0, 0, 0, 0,
1343     0, 0, 0, 0, 0, 0, 0, 0,
1344     1, 1, 1, 1, 1, 1, 1, 1,
1345     1, 1, 1, 1, 1, 3, 3, 3,
1346     3, 1, 3, 3, 0, 0, 0, 0,
1347     0, 0, 0, 0, 0, 0, 0, 0,
1348     0, 0, 0, 0, 0, 0, 0, 0,
1349     0, 0, 0, 0, 0, 0, 0, 0,
1350 };
1351
1352 static const Q_UINT8 ui_21[] = {
1353     30, 30, 15, 30, 30, 30, 30, 15,
1354     30, 30, 16, 15, 15, 15, 16, 16,
1355     15, 15, 15, 16, 30, 15, 30, 30,
1356     30, 15, 15, 15, 15, 15, 30, 30,
1357     30, 30, 30, 30, 15, 30, 15, 30,
1358     15, 30, 15, 15, 15, 15, 30, 16,
1359     15, 15, 30, 15, 16, 19, 19, 19,
1360     19, 16, 30, 0, 0, 0, 0, 0,
1361     0, 0, 0, 0, 0, 0, 0, 0,
1362     0, 0, 0, 0, 0, 0, 0, 0,
1363     0, 0, 0, 6, 6, 6, 6, 6,
1364     6, 6, 6, 6, 6, 6, 6, 6,
1365     5, 5, 5, 5, 5, 5, 5, 5,
1366     5, 5, 5, 5, 5, 5, 5, 5,
1367     5, 5, 5, 5, 5, 5, 5, 5,
1368     5, 5, 5, 5, 5, 5, 5, 5,
1369     5, 5, 5, 5, 0, 0, 0, 0,
1370     0, 0, 0, 0, 0, 0, 0, 0,
1371     27, 27, 27, 27, 27, 30, 30, 30,
1372     30, 30, 27, 27, 30, 30, 30, 30,
1373     27, 30, 30, 27, 30, 30, 27, 30,
1374     30, 30, 30, 30, 30, 30, 27, 30,
1375     30, 30, 30, 30, 30, 30, 30, 30,
1376     30, 30, 30, 30, 30, 30, 30, 30,
1377     30, 30, 30, 30, 30, 30, 30, 30,
1378     30, 30, 30, 30, 30, 30, 27, 27,
1379     30, 30, 27, 30, 27, 30, 30, 30,
1380     30, 30, 30, 30, 30, 30, 30, 30,
1381     30, 30, 30, 30, 30, 30, 30, 30,
1382     30, 30, 30, 30, 30, 30, 30, 30,
1383     30, 30, 30, 30, 0, 0, 0, 0,
1384     0, 0, 0, 0, 0, 0, 0, 0,
1385 };
1386
1387 static const Q_UINT8 ui_22[] = {
1388     27, 27, 27, 27, 27, 27, 27, 27,
1389     27, 27, 27, 27, 27, 27, 27, 27,
1390     27, 27, 27, 27, 27, 27, 27, 27,
1391     27, 27, 27, 27, 27, 27, 27, 27,
1392     27, 27, 27, 27, 27, 27, 27, 27,
1393     27, 27, 27, 27, 27, 27, 27, 27,
1394     27, 27, 27, 27, 27, 27, 27, 27,
1395     27, 27, 27, 27, 27, 27, 27, 27,
1396     27, 27, 27, 27, 27, 27, 27, 27,
1397     27, 27, 27, 27, 27, 27, 27, 27,
1398     27, 27, 27, 27, 27, 27, 27, 27,
1399     27, 27, 27, 27, 27, 27, 27, 27,
1400     27, 27, 27, 27, 27, 27, 27, 27,
1401     27, 27, 27, 27, 27, 27, 27, 27,
1402     27, 27, 27, 27, 27, 27, 27, 27,
1403     27, 27, 27, 27, 27, 27, 27, 27,
1404     27, 27, 27, 27, 27, 27, 27, 27,
1405     27, 27, 27, 27, 27, 27, 27, 27,
1406     27, 27, 27, 27, 27, 27, 27, 27,
1407     27, 27, 27, 27, 27, 27, 27, 27,
1408     27, 27, 27, 27, 27, 27, 27, 27,
1409     27, 27, 27, 27, 27, 27, 27, 27,
1410     27, 27, 27, 27, 27, 27, 27, 27,
1411     27, 27, 27, 27, 27, 27, 27, 27,
1412     27, 27, 27, 27, 27, 27, 27, 27,
1413     27, 27, 27, 27, 27, 27, 27, 27,
1414     27, 27, 27, 27, 27, 27, 27, 27,
1415     27, 27, 27, 27, 27, 27, 27, 27,
1416     27, 27, 27, 27, 27, 27, 27, 27,
1417     27, 27, 27, 27, 27, 27, 27, 27,
1418     27, 27, 0, 0, 0, 0, 0, 0,
1419     0, 0, 0, 0, 0, 0, 0, 0,
1420 };
1421
1422 static const Q_UINT8 ui_23[] = {
1423     30, 30, 30, 30, 30, 30, 30, 30,
1424     27, 27, 27, 27, 30, 30, 30, 30,
1425     30, 30, 30, 30, 30, 30, 30, 30,
1426     30, 30, 30, 30, 30, 30, 30, 30,
1427     27, 27, 30, 30, 30, 30, 30, 30,
1428     30, 22, 23, 30, 30, 30, 30, 30,
1429     30, 30, 30, 30, 30, 30, 30, 30,
1430     30, 30, 30, 30, 30, 30, 30, 30,
1431     30, 30, 30, 30, 30, 30, 30, 30,
1432     30, 30, 30, 30, 30, 30, 30, 30,
1433     30, 30, 30, 30, 30, 30, 30, 30,
1434     30, 30, 30, 30, 30, 30, 30, 30,
1435     30, 30, 30, 30, 30, 30, 30, 30,
1436     30, 30, 30, 30, 30, 30, 30, 30,
1437     30, 30, 30, 30, 30, 30, 30, 30,
1438     30, 30, 30, 30, 0, 30, 30, 30,
1439     30, 30, 30, 30, 30, 30, 30, 30,
1440     30, 30, 30, 30, 30, 30, 30, 30,
1441     30, 30, 30, 30, 30, 30, 30, 30,
1442     30, 30, 30, 0, 0, 0, 0, 0,
1443     0, 0, 0, 0, 0, 0, 0, 0,
1444     0, 0, 0, 0, 0, 0, 0, 0,
1445     0, 0, 0, 0, 0, 0, 0, 0,
1446     0, 0, 0, 0, 0, 0, 0, 0,
1447     0, 0, 0, 0, 0, 0, 0, 0,
1448     0, 0, 0, 0, 0, 0, 0, 0,
1449     0, 0, 0, 0, 0, 0, 0, 0,
1450     0, 0, 0, 0, 0, 0, 0, 0,
1451     0, 0, 0, 0, 0, 0, 0, 0,
1452     0, 0, 0, 0, 0, 0, 0, 0,
1453     0, 0, 0, 0, 0, 0, 0, 0,
1454     0, 0, 0, 0, 0, 0, 0, 0,
1455 };
1456
1457 static const Q_UINT8 ui_24[] = {
1458     30, 30, 30, 30, 30, 30, 30, 30,
1459     30, 30, 30, 30, 30, 30, 30, 30,
1460     30, 30, 30, 30, 30, 30, 30, 30,
1461     30, 30, 30, 30, 30, 30, 30, 30,
1462     30, 30, 30, 30, 30, 30, 30, 0,
1463     0, 0, 0, 0, 0, 0, 0, 0,
1464     0, 0, 0, 0, 0, 0, 0, 0,
1465     0, 0, 0, 0, 0, 0, 0, 0,
1466     30, 30, 30, 30, 30, 30, 30, 30,
1467     30, 30, 30, 0, 0, 0, 0, 0,
1468     0, 0, 0, 0, 0, 0, 0, 0,
1469     0, 0, 0, 0, 0, 0, 0, 0,
1470     6, 6, 6, 6, 6, 6, 6, 6,
1471     6, 6, 6, 6, 6, 6, 6, 6,
1472     6, 6, 6, 6, 6, 6, 6, 6,
1473     6, 6, 6, 6, 6, 6, 6, 6,
1474     6, 6, 6, 6, 6, 6, 6, 6,
1475     6, 6, 6, 6, 6, 6, 6, 6,
1476     6, 6, 6, 6, 6, 6, 6, 6,
1477     6, 6, 6, 6, 30, 30, 30, 30,
1478     30, 30, 30, 30, 30, 30, 30, 30,
1479     30, 30, 30, 30, 30, 30, 30, 30,
1480     30, 30, 30, 30, 30, 30, 30, 30,
1481     30, 30, 30, 30, 30, 30, 30, 30,
1482     30, 30, 30, 30, 30, 30, 30, 30,
1483     30, 30, 30, 30, 30, 30, 30, 30,
1484     30, 30, 30, 30, 30, 30, 30, 30,
1485     30, 30, 30, 30, 30, 30, 30, 30,
1486     30, 30, 30, 30, 30, 30, 30, 30,
1487     30, 30, 6, 0, 0, 0, 0, 0,
1488     0, 0, 0, 0, 0, 0, 0, 0,
1489     0, 0, 0, 0, 0, 0, 0, 0,
1490 };
1491
1492 static const Q_UINT8 ui_25[] = {
1493     30, 30, 30, 30, 30, 30, 30, 30,
1494     30, 30, 30, 30, 30, 30, 30, 30,
1495     30, 30, 30, 30, 30, 30, 30, 30,
1496     30, 30, 30, 30, 30, 30, 30, 30,
1497     30, 30, 30, 30, 30, 30, 30, 30,
1498     30, 30, 30, 30, 30, 30, 30, 30,
1499     30, 30, 30, 30, 30, 30, 30, 30,
1500     30, 30, 30, 30, 30, 30, 30, 30,
1501     30, 30, 30, 30, 30, 30, 30, 30,
1502     30, 30, 30, 30, 30, 30, 30, 30,
1503     30, 30, 30, 30, 30, 30, 30, 30,
1504     30, 30, 30, 30, 30, 30, 30, 30,
1505     30, 30, 30, 30, 30, 30, 30, 30,
1506     30, 30, 30, 30, 30, 30, 30, 30,
1507     30, 30, 30, 30, 30, 30, 30, 30,
1508     30, 30, 30, 30, 30, 30, 30, 30,
1509     30, 30, 30, 30, 30, 30, 30, 30,
1510     30, 30, 30, 30, 30, 30, 30, 30,
1511     30, 30, 30, 30, 30, 30, 0, 0,
1512     0, 0, 0, 0, 0, 0, 0, 0,
1513     30, 30, 30, 30, 30, 30, 30, 30,
1514     30, 30, 30, 30, 30, 30, 30, 30,
1515     30, 30, 30, 30, 30, 30, 30, 27,
1516     30, 30, 30, 30, 30, 30, 30, 30,
1517     30, 27, 30, 30, 30, 30, 30, 30,
1518     30, 30, 30, 30, 30, 30, 30, 30,
1519     30, 30, 30, 30, 30, 30, 30, 30,
1520     30, 30, 30, 30, 30, 30, 30, 30,
1521     30, 30, 30, 30, 30, 30, 30, 30,
1522     30, 30, 30, 30, 30, 30, 30, 30,
1523     30, 30, 30, 30, 30, 30, 30, 30,
1524     0, 0, 0, 0, 0, 0, 0, 0,
1525 };
1526
1527 static const Q_UINT8 ui_26[] = {
1528     30, 30, 30, 30, 30, 30, 30, 30,
1529     30, 30, 30, 30, 30, 30, 30, 30,
1530     30, 30, 30, 30, 0, 0, 0, 0,
1531     0, 30, 30, 30, 30, 30, 30, 30,
1532     30, 30, 30, 30, 30, 30, 30, 30,
1533     30, 30, 30, 30, 30, 30, 30, 30,
1534     30, 30, 30, 30, 30, 30, 30, 30,
1535     30, 30, 30, 30, 30, 30, 30, 30,
1536     30, 30, 30, 30, 30, 30, 30, 30,
1537     30, 30, 30, 30, 30, 30, 30, 30,
1538     30, 30, 30, 30, 30, 30, 30, 30,
1539     30, 30, 30, 30, 30, 30, 30, 30,
1540     30, 30, 30, 30, 30, 30, 30, 30,
1541     30, 30, 30, 30, 30, 30, 30, 27,
1542     30, 30, 0, 0, 0, 0, 0, 0,
1543     0, 0, 0, 0, 0, 0, 0, 0,
1544     0, 0, 0, 0, 0, 0, 0, 0,
1545     0, 0, 0, 0, 0, 0, 0, 0,
1546     0, 0, 0, 0, 0, 0, 0, 0,
1547     0, 0, 0, 0, 0, 0, 0, 0,
1548     0, 0, 0, 0, 0, 0, 0, 0,
1549     0, 0, 0, 0, 0, 0, 0, 0,
1550     0, 0, 0, 0, 0, 0, 0, 0,
1551     0, 0, 0, 0, 0, 0, 0, 0,
1552     0, 0, 0, 0, 0, 0, 0, 0,
1553     0, 0, 0, 0, 0, 0, 0, 0,
1554     0, 0, 0, 0, 0, 0, 0, 0,
1555     0, 0, 0, 0, 0, 0, 0, 0,
1556     0, 0, 0, 0, 0, 0, 0, 0,
1557     0, 0, 0, 0, 0, 0, 0, 0,
1558     0, 0, 0, 0, 0, 0, 0, 0,
1559     0, 0, 0, 0, 0, 0, 0, 0,
1560 };
1561
1562 static const Q_UINT8 ui_27[] = {
1563     0, 30, 30, 30, 30, 0, 30, 30,
1564     30, 30, 0, 0, 30, 30, 30, 30,
1565     30, 30, 30, 30, 30, 30, 30, 30,
1566     30, 30, 30, 30, 30, 30, 30, 30,
1567     30, 30, 30, 30, 30, 30, 30, 30,
1568     0, 30, 30, 30, 30, 30, 30, 30,
1569     30, 30, 30, 30, 30, 30, 30, 30,
1570     30, 30, 30, 30, 30, 30, 30, 30,
1571     30, 30, 30, 30, 30, 30, 30, 30,
1572     30, 30, 30, 30, 0, 30, 0, 30,
1573     30, 30, 30, 0, 0, 0, 30, 0,
1574     30, 30, 30, 30, 30, 30, 30, 0,
1575     0, 30, 30, 30, 30, 30, 30, 30,
1576     0, 0, 0, 0, 0, 0, 0, 0,
1577     0, 0, 0, 0, 0, 0, 6, 6,
1578     6, 6, 6, 6, 6, 6, 6, 6,
1579     6, 6, 6, 6, 6, 6, 6, 6,
1580     6, 6, 6, 6, 6, 6, 6, 6,
1581     6, 6, 6, 6, 30, 0, 0, 0,
1582     30, 30, 30, 30, 30, 30, 30, 30,
1583     30, 30, 30, 30, 30, 30, 30, 30,
1584     30, 30, 30, 30, 30, 30, 30, 30,
1585     0, 30, 30, 30, 30, 30, 30, 30,
1586     30, 30, 30, 30, 30, 30, 30, 0,
1587     0, 0, 0, 0, 0, 0, 0, 0,
1588     0, 0, 0, 0, 0, 0, 0, 0,
1589     0, 0, 0, 0, 0, 0, 0, 0,
1590     0, 0, 0, 0, 0, 0, 0, 0,
1591     0, 0, 0, 0, 0, 0, 0, 0,
1592     0, 0, 0, 0, 0, 0, 0, 0,
1593     0, 0, 0, 0, 0, 0, 0, 0,
1594     0, 0, 0, 0, 0, 0, 0, 0,
1595 };
1596
1597 static const Q_UINT8 ui_28[] = {
1598     30, 30, 30, 30, 30, 30, 30, 30,
1599     30, 30, 30, 30, 30, 30, 30, 30,
1600     30, 30, 30, 30, 30, 30, 30, 30,
1601     30, 30, 30, 30, 30, 30, 30, 30,
1602     30, 30, 30, 30, 30, 30, 30, 30,
1603     30, 30, 30, 30, 30, 30, 30, 30,
1604     30, 30, 30, 30, 30, 30, 30, 30,
1605     30, 30, 30, 30, 30, 30, 30, 30,
1606     30, 30, 30, 30, 30, 30, 30, 30,
1607     30, 30, 30, 30, 30, 30, 30, 30,
1608     30, 30, 30, 30, 30, 30, 30, 30,
1609     30, 30, 30, 30, 30, 30, 30, 30,
1610     30, 30, 30, 30, 30, 30, 30, 30,
1611     30, 30, 30, 30, 30, 30, 30, 30,
1612     30, 30, 30, 30, 30, 30, 30, 30,
1613     30, 30, 30, 30, 30, 30, 30, 30,
1614     30, 30, 30, 30, 30, 30, 30, 30,
1615     30, 30, 30, 30, 30, 30, 30, 30,
1616     30, 30, 30, 30, 30, 30, 30, 30,
1617     30, 30, 30, 30, 30, 30, 30, 30,
1618     30, 30, 30, 30, 30, 30, 30, 30,
1619     30, 30, 30, 30, 30, 30, 30, 30,
1620     30, 30, 30, 30, 30, 30, 30, 30,
1621     30, 30, 30, 30, 30, 30, 30, 30,
1622     30, 30, 30, 30, 30, 30, 30, 30,
1623     30, 30, 30, 30, 30, 30, 30, 30,
1624     30, 30, 30, 30, 30, 30, 30, 30,
1625     30, 30, 30, 30, 30, 30, 30, 30,
1626     30, 30, 30, 30, 30, 30, 30, 30,
1627     30, 30, 30, 30, 30, 30, 30, 30,
1628     30, 30, 30, 30, 30, 30, 30, 30,
1629     30, 30, 30, 30, 30, 30, 30, 30,
1630 };
1631
1632 static const Q_UINT8 ui_2E[] = {
1633     0, 0, 0, 0, 0, 0, 0, 0,
1634     0, 0, 0, 0, 0, 0, 0, 0,
1635     0, 0, 0, 0, 0, 0, 0, 0,
1636     0, 0, 0, 0, 0, 0, 0, 0,
1637     0, 0, 0, 0, 0, 0, 0, 0,
1638     0, 0, 0, 0, 0, 0, 0, 0,
1639     0, 0, 0, 0, 0, 0, 0, 0,
1640     0, 0, 0, 0, 0, 0, 0, 0,
1641     0, 0, 0, 0, 0, 0, 0, 0,
1642     0, 0, 0, 0, 0, 0, 0, 0,
1643     0, 0, 0, 0, 0, 0, 0, 0,
1644     0, 0, 0, 0, 0, 0, 0, 0,
1645     0, 0, 0, 0, 0, 0, 0, 0,
1646     0, 0, 0, 0, 0, 0, 0, 0,
1647     0, 0, 0, 0, 0, 0, 0, 0,
1648     0, 0, 0, 0, 0, 0, 0, 0,
1649     30, 30, 30, 30, 30, 30, 30, 30,
1650     30, 30, 30, 30, 30, 30, 30, 30,
1651     30, 30, 30, 30, 30, 30, 30, 30,
1652     30, 30, 0, 30, 30, 30, 30, 30,
1653     30, 30, 30, 30, 30, 30, 30, 30,
1654     30, 30, 30, 30, 30, 30, 30, 30,
1655     30, 30, 30, 30, 30, 30, 30, 30,
1656     30, 30, 30, 30, 30, 30, 30, 30,
1657     30, 30, 30, 30, 30, 30, 30, 30,
1658     30, 30, 30, 30, 30, 30, 30, 30,
1659     30, 30, 30, 30, 30, 30, 30, 30,
1660     30, 30, 30, 30, 30, 30, 30, 30,
1661     30, 30, 30, 30, 30, 30, 30, 30,
1662     30, 30, 30, 30, 30, 30, 30, 30,
1663     30, 30, 30, 30, 0, 0, 0, 0,
1664     0, 0, 0, 0, 0, 0, 0, 0,
1665 };
1666
1667 static const Q_UINT8 ui_2F[] = {
1668     30, 30, 30, 30, 30, 30, 30, 30,
1669     30, 30, 30, 30, 30, 30, 30, 30,
1670     30, 30, 30, 30, 30, 30, 30, 30,
1671     30, 30, 30, 30, 30, 30, 30, 30,
1672     30, 30, 30, 30, 30, 30, 30, 30,
1673     30, 30, 30, 30, 30, 30, 30, 30,
1674     30, 30, 30, 30, 30, 30, 30, 30,
1675     30, 30, 30, 30, 30, 30, 30, 30,
1676     30, 30, 30, 30, 30, 30, 30, 30,
1677     30, 30, 30, 30, 30, 30, 30, 30,
1678     30, 30, 30, 30, 30, 30, 30, 30,
1679     30, 30, 30, 30, 30, 30, 30, 30,
1680     30, 30, 30, 30, 30, 30, 30, 30,
1681     30, 30, 30, 30, 30, 30, 30, 30,
1682     30, 30, 30, 30, 30, 30, 30, 30,
1683     30, 30, 30, 30, 30, 30, 30, 30,
1684     30, 30, 30, 30, 30, 30, 30, 30,
1685     30, 30, 30, 30, 30, 30, 30, 30,
1686     30, 30, 30, 30, 30, 30, 30, 30,
1687     30, 30, 30, 30, 30, 30, 30, 30,
1688     30, 30, 30, 30, 30, 30, 30, 30,
1689     30, 30, 30, 30, 30, 30, 30, 30,
1690     30, 30, 30, 30, 30, 30, 30, 30,
1691     30, 30, 30, 30, 30, 30, 30, 30,
1692     30, 30, 30, 30, 30, 30, 30, 30,
1693     30, 30, 30, 30, 30, 30, 30, 30,
1694     30, 30, 30, 30, 30, 30, 0, 0,
1695     0, 0, 0, 0, 0, 0, 0, 0,
1696     0, 0, 0, 0, 0, 0, 0, 0,
1697     0, 0, 0, 0, 0, 0, 0, 0,
1698     30, 30, 30, 30, 30, 30, 30, 30,
1699     30, 30, 30, 30, 0, 0, 0, 0,
1700 };
1701
1702 static const Q_UINT8 ui_30[] = {
1703     7, 26, 26, 26, 30, 18, 19, 5,
1704     22, 23, 22, 23, 22, 23, 22, 23,
1705     22, 23, 30, 30, 22, 23, 22, 23,
1706     22, 23, 22, 23, 21, 22, 23, 23,
1707     30, 5, 5, 5, 5, 5, 5, 5,
1708     5, 5, 1, 1, 1, 1, 1, 1,
1709     21, 18, 18, 18, 18, 18, 30, 30,
1710     5, 5, 5, 0, 0, 0, 30, 30,
1711     0, 19, 19, 19, 19, 19, 19, 19,
1712     19, 19, 19, 19, 19, 19, 19, 19,
1713     19, 19, 19, 19, 19, 19, 19, 19,
1714     19, 19, 19, 19, 19, 19, 19, 19,
1715     19, 19, 19, 19, 19, 19, 19, 19,
1716     19, 19, 19, 19, 19, 19, 19, 19,
1717     19, 19, 19, 19, 19, 19, 19, 19,
1718     19, 19, 19, 19, 19, 19, 19, 19,
1719     19, 19, 19, 19, 19, 19, 19, 19,
1720     19, 19, 19, 19, 19, 19, 19, 19,
1721     19, 19, 19, 19, 19, 0, 0, 0,
1722     0, 1, 1, 29, 29, 18, 18, 0,
1723     0, 19, 19, 19, 19, 19, 19, 19,
1724     19, 19, 19, 19, 19, 19, 19, 19,
1725     19, 19, 19, 19, 19, 19, 19, 19,
1726     19, 19, 19, 19, 19, 19, 19, 19,
1727     19, 19, 19, 19, 19, 19, 19, 19,
1728     19, 19, 19, 19, 19, 19, 19, 19,
1729     19, 19, 19, 19, 19, 19, 19, 19,
1730     19, 19, 19, 19, 19, 19, 19, 19,
1731     19, 19, 19, 19, 19, 19, 19, 19,
1732     19, 19, 19, 19, 19, 19, 19, 19,
1733     19, 19, 19, 19, 19, 19, 19, 19,
1734     19, 19, 19, 20, 18, 18, 18, 0,
1735 };
1736
1737 static const Q_UINT8 ui_31[] = {
1738     0, 0, 0, 0, 0, 19, 19, 19,
1739     19, 19, 19, 19, 19, 19, 19, 19,
1740     19, 19, 19, 19, 19, 19, 19, 19,
1741     19, 19, 19, 19, 19, 19, 19, 19,
1742     19, 19, 19, 19, 19, 19, 19, 19,
1743     19, 19, 19, 19, 19, 0, 0, 0,
1744     0, 19, 19, 19, 19, 19, 19, 19,
1745     19, 19, 19, 19, 19, 19, 19, 19,
1746     19, 19, 19, 19, 19, 19, 19, 19,
1747     19, 19, 19, 19, 19, 19, 19, 19,
1748     19, 19, 19, 19, 19, 19, 19, 19,
1749     19, 19, 19, 19, 19, 19, 19, 19,
1750     19, 19, 19, 19, 19, 19, 19, 19,
1751     19, 19, 19, 19, 19, 19, 19, 19,
1752     19, 19, 19, 19, 19, 19, 19, 19,
1753     19, 19, 19, 19, 19, 19, 19, 19,
1754     19, 19, 19, 19, 19, 19, 19, 19,
1755     19, 19, 19, 19, 19, 19, 19, 0,
1756     30, 30, 6, 6, 6, 6, 30, 30,
1757     30, 30, 30, 30, 30, 30, 30, 30,
1758     19, 19, 19, 19, 19, 19, 19, 19,
1759     19, 19, 19, 19, 19, 19, 19, 19,
1760     19, 19, 19, 19, 19, 19, 19, 19,
1761     0, 0, 0, 0, 0, 0, 0, 0,
1762     0, 0, 0, 0, 0, 0, 0, 0,
1763     0, 0, 0, 0, 0, 0, 0, 0,
1764     0, 0, 0, 0, 0, 0, 0, 0,
1765     0, 0, 0, 0, 0, 0, 0, 0,
1766     0, 0, 0, 0, 0, 0, 0, 0,
1767     0, 0, 0, 0, 0, 0, 0, 0,
1768     0, 0, 0, 0, 0, 0, 0, 0,
1769     0, 0, 0, 0, 0, 0, 0, 0,
1770 };
1771
1772 static const Q_UINT8 ui_32[] = {
1773     30, 30, 30, 30, 30, 30, 30, 30,
1774     30, 30, 30, 30, 30, 30, 30, 30,
1775     30, 30, 30, 30, 30, 30, 30, 30,
1776     30, 30, 30, 30, 30, 0, 0, 0,
1777     6, 6, 6, 6, 6, 6, 6, 6,
1778     6, 6, 30, 30, 30, 30, 30, 30,
1779     30, 30, 30, 30, 30, 30, 30, 30,
1780     30, 30, 30, 30, 30, 30, 30, 30,
1781     30, 30, 30, 30, 0, 0, 0, 0,
1782     0, 0, 0, 0, 0, 0, 0, 0,
1783     0, 0, 0, 0, 0, 0, 0, 0,
1784     0, 0, 0, 0, 0, 0, 0, 0,
1785     30, 30, 30, 30, 30, 30, 30, 30,
1786     30, 30, 30, 30, 30, 30, 30, 30,
1787     30, 30, 30, 30, 30, 30, 30, 30,
1788     30, 30, 30, 30, 0, 0, 0, 30,
1789     6, 6, 6, 6, 6, 6, 6, 6,
1790     6, 6, 30, 30, 30, 30, 30, 30,
1791     30, 30, 30, 30, 30, 30, 30, 30,
1792     30, 30, 30, 30, 30, 30, 30, 30,
1793     30, 30, 30, 30, 30, 30, 30, 30,
1794     30, 30, 30, 30, 30, 30, 30, 30,
1795     30, 0, 0, 0, 0, 0, 0, 0,
1796     0, 0, 0, 0, 0, 0, 0, 0,
1797     30, 30, 30, 30, 30, 30, 30, 30,
1798     30, 30, 30, 30, 0, 0, 0, 0,
1799     30, 30, 30, 30, 30, 30, 30, 30,
1800     30, 30, 30, 30, 30, 30, 30, 30,
1801     30, 30, 30, 30, 30, 30, 30, 30,
1802     30, 30, 30, 30, 30, 30, 30, 30,
1803     30, 30, 30, 30, 30, 30, 30, 30,
1804     30, 30, 30, 30, 30, 30, 30, 0,
1805 };
1806
1807 static const Q_UINT8 ui_33[] = {
1808     30, 30, 30, 30, 30, 30, 30, 30,
1809     30, 30, 30, 30, 30, 30, 30, 30,
1810     30, 30, 30, 30, 30, 30, 30, 30,
1811     30, 30, 30, 30, 30, 30, 30, 30,
1812     30, 30, 30, 30, 30, 30, 30, 30,
1813     30, 30, 30, 30, 30, 30, 30, 30,
1814     30, 30, 30, 30, 30, 30, 30, 30,
1815     30, 30, 30, 30, 30, 30, 30, 30,
1816     30, 30, 30, 30, 30, 30, 30, 30,
1817     30, 30, 30, 30, 30, 30, 30, 30,
1818     30, 30, 30, 30, 30, 30, 30, 30,
1819     30, 30, 30, 30, 30, 30, 30, 30,
1820     30, 30, 30, 30, 30, 30, 30, 30,
1821     30, 30, 30, 30, 30, 30, 30, 30,
1822     30, 30, 30, 30, 30, 30, 30, 0,
1823     0, 0, 0, 30, 30, 30, 30, 30,
1824     30, 30, 30, 30, 30, 30, 30, 30,
1825     30, 30, 30, 30, 30, 30, 30, 30,
1826     30, 30, 30, 30, 30, 30, 30, 30,
1827     30, 30, 30, 30, 30, 30, 30, 30,
1828     30, 30, 30, 30, 30, 30, 30, 30,
1829     30, 30, 30, 30, 30, 30, 30, 30,
1830     30, 30, 30, 30, 30, 30, 30, 30,
1831     30, 30, 30, 30, 30, 30, 30, 30,
1832     30, 30, 30, 30, 30, 30, 30, 30,
1833     30, 30, 30, 30, 30, 30, 30, 30,
1834     30, 30, 30, 30, 30, 30, 30, 30,
1835     30, 30, 30, 30, 30, 30, 0, 0,
1836     30, 30, 30, 30, 30, 30, 30, 30,
1837     30, 30, 30, 30, 30, 30, 30, 30,
1838     30, 30, 30, 30, 30, 30, 30, 30,
1839     30, 30, 30, 30, 30, 30, 30, 0,
1840 };
1841
1842 static const Q_UINT8 ui_34[] = {
1843     19, 0, 0, 0, 0, 0, 0, 0,
1844     0, 0, 0, 0, 0, 0, 0, 0,
1845     0, 0, 0, 0, 0, 0, 0, 0,
1846     0, 0, 0, 0, 0, 0, 0, 0,
1847     0, 0, 0, 0, 0, 0, 0, 0,
1848     0, 0, 0, 0, 0, 0, 0, 0,
1849     0, 0, 0, 0, 0, 0, 0, 0,
1850     0, 0, 0, 0, 0, 0, 0, 0,
1851     0, 0, 0, 0, 0, 0, 0, 0,
1852     0, 0, 0, 0, 0, 0, 0, 0,
1853     0, 0, 0, 0, 0, 0, 0, 0,
1854     0, 0, 0, 0, 0, 0, 0, 0,
1855     0, 0, 0, 0, 0, 0, 0, 0,
1856     0, 0, 0, 0, 0, 0, 0, 0,
1857     0, 0, 0, 0, 0, 0, 0, 0,
1858     0, 0, 0, 0, 0, 0, 0, 0,
1859     0, 0, 0, 0, 0, 0, 0, 0,
1860     0, 0, 0, 0, 0, 0, 0, 0,
1861     0, 0, 0, 0, 0, 0, 0, 0,
1862     0, 0, 0, 0, 0, 0, 0, 0,
1863     0, 0, 0, 0, 0, 0, 0, 0,
1864     0, 0, 0, 0, 0, 0, 0, 0,
1865     0, 0, 0, 0, 0, 0, 0, 0,
1866     0, 0, 0, 0, 0, 0, 0, 0,
1867     0, 0, 0, 0, 0, 0, 0, 0,
1868     0, 0, 0, 0, 0, 0, 0, 0,
1869     0, 0, 0, 0, 0, 0, 0, 0,
1870     0, 0, 0, 0, 0, 0, 0, 0,
1871     0, 0, 0, 0, 0, 0, 0, 0,
1872     0, 0, 0, 0, 0, 0, 0, 0,
1873     0, 0, 0, 0, 0, 0, 0, 0,
1874     0, 0, 0, 0, 0, 0, 0, 0,
1875 };
1876
1877 static const Q_UINT8 ui_4D[] = {
1878     0, 0, 0, 0, 0, 0, 0, 0,
1879     0, 0, 0, 0, 0, 0, 0, 0,
1880     0, 0, 0, 0, 0, 0, 0, 0,
1881     0, 0, 0, 0, 0, 0, 0, 0,
1882     0, 0, 0, 0, 0, 0, 0, 0,
1883     0, 0, 0, 0, 0, 0, 0, 0,
1884     0, 0, 0, 0, 0, 0, 0, 0,
1885     0, 0, 0, 0, 0, 0, 0, 0,
1886     0, 0, 0, 0, 0, 0, 0, 0,
1887     0, 0, 0, 0, 0, 0, 0, 0,
1888     0, 0, 0, 0, 0, 0, 0, 0,
1889     0, 0, 0, 0, 0, 0, 0, 0,
1890     0, 0, 0, 0, 0, 0, 0, 0,
1891     0, 0, 0, 0, 0, 0, 0, 0,
1892     0, 0, 0, 0, 0, 0, 0, 0,
1893     0, 0, 0, 0, 0, 0, 0, 0,
1894     0, 0, 0, 0, 0, 0, 0, 0,
1895     0, 0, 0, 0, 0, 0, 0, 0,
1896     0, 0, 0, 0, 0, 0, 0, 0,
1897     0, 0, 0, 0, 0, 0, 0, 0,
1898     0, 0, 0, 0, 0, 0, 0, 0,
1899     0, 0, 0, 0, 0, 0, 0, 0,
1900     0, 0, 0, 0, 0, 19, 0, 0,
1901     0, 0, 0, 0, 0, 0, 0, 0,
1902     0, 0, 0, 0, 0, 0, 0, 0,
1903     0, 0, 0, 0, 0, 0, 0, 0,
1904     0, 0, 0, 0, 0, 0, 0, 0,
1905     0, 0, 0, 0, 0, 0, 0, 0,
1906     0, 0, 0, 0, 0, 0, 0, 0,
1907     0, 0, 0, 0, 0, 0, 0, 0,
1908     0, 0, 0, 0, 0, 0, 0, 0,
1909     0, 0, 0, 0, 0, 0, 0, 0,
1910 };
1911
1912 static const Q_UINT8 ui_9F[] = {
1913     0, 0, 0, 0, 0, 0, 0, 0,
1914     0, 0, 0, 0, 0, 0, 0, 0,
1915     0, 0, 0, 0, 0, 0, 0, 0,
1916     0, 0, 0, 0, 0, 0, 0, 0,
1917     0, 0, 0, 0, 0, 0, 0, 0,
1918     0, 0, 0, 0, 0, 0, 0, 0,
1919     0, 0, 0, 0, 0, 0, 0, 0,
1920     0, 0, 0, 0, 0, 0, 0, 0,
1921     0, 0, 0, 0, 0, 0, 0, 0,
1922     0, 0, 0, 0, 0, 0, 0, 0,
1923     0, 0, 0, 0, 0, 0, 0, 0,
1924     0, 0, 0, 0, 0, 0, 0, 0,
1925     0, 0, 0, 0, 0, 0, 0, 0,
1926     0, 0, 0, 0, 0, 0, 0, 0,
1927     0, 0, 0, 0, 0, 0, 0, 0,
1928     0, 0, 0, 0, 0, 0, 0, 0,
1929     0, 0, 0, 0, 0, 0, 0, 0,
1930     0, 0, 0, 0, 0, 0, 0, 0,
1931     0, 0, 0, 0, 0, 0, 0, 0,
1932     0, 0, 0, 0, 0, 0, 0, 0,
1933     0, 0, 0, 0, 0, 19, 0, 0,
1934     0, 0, 0, 0, 0, 0, 0, 0,
1935     0, 0, 0, 0, 0, 0, 0, 0,
1936     0, 0, 0, 0, 0, 0, 0, 0,
1937     0, 0, 0, 0, 0, 0, 0, 0,
1938     0, 0, 0, 0, 0, 0, 0, 0,
1939     0, 0, 0, 0, 0, 0, 0, 0,
1940     0, 0, 0, 0, 0, 0, 0, 0,
1941     0, 0, 0, 0, 0, 0, 0, 0,
1942     0, 0, 0, 0, 0, 0, 0, 0,
1943     0, 0, 0, 0, 0, 0, 0, 0,
1944     0, 0, 0, 0, 0, 0, 0, 0,
1945 };
1946
1947 static const Q_UINT8 ui_A4[] = {
1948     19, 19, 19, 19, 19, 19, 19, 19,
1949     19, 19, 19, 19, 19, 19, 19, 19,
1950     19, 19, 19, 19, 19, 19, 19, 19,
1951     19, 19, 19, 19, 19, 19, 19, 19,
1952     19, 19, 19, 19, 19, 19, 19, 19,
1953     19, 19, 19, 19, 19, 19, 19, 19,
1954     19, 19, 19, 19, 19, 19, 19, 19,
1955     19, 19, 19, 19, 19, 19, 19, 19,
1956     19, 19, 19, 19, 19, 19, 19, 19,
1957     19, 19, 19, 19, 19, 19, 19, 19,
1958     19, 19, 19, 19, 19, 19, 19, 19,
1959     19, 19, 19, 19, 19, 19, 19, 19,
1960     19, 19, 19, 19, 19, 19, 19, 19,
1961     19, 19, 19, 19, 19, 19, 19, 19,
1962     19, 19, 19, 19, 19, 19, 19, 19,
1963     19, 19, 19, 19, 19, 19, 19, 19,
1964     19, 19, 19, 19, 19, 19, 19, 19,
1965     19, 19, 19, 19, 19, 0, 0, 0,
1966     30, 30, 30, 30, 30, 30, 30, 30,
1967     30, 30, 30, 30, 30, 30, 30, 30,
1968     30, 30, 0, 0, 30, 30, 30, 30,
1969     30, 30, 30, 30, 30, 30, 30, 30,
1970     30, 30, 30, 30, 0, 30, 30, 30,
1971     30, 30, 30, 30, 30, 30, 30, 30,
1972     30, 0, 30, 30, 30, 0, 30, 0,
1973     0, 0, 0, 0, 0, 0, 0, 0,
1974     0, 0, 0, 0, 0, 0, 0, 0,
1975     0, 0, 0, 0, 0, 0, 0, 0,
1976     0, 0, 0, 0, 0, 0, 0, 0,
1977     0, 0, 0, 0, 0, 0, 0, 0,
1978     0, 0, 0, 0, 0, 0, 0, 0,
1979     0, 0, 0, 0, 0, 0, 0, 0,
1980 };
1981
1982 static const Q_UINT8 ui_D7[] = {
1983     0, 0, 0, 0, 0, 0, 0, 0,
1984     0, 0, 0, 0, 0, 0, 0, 0,
1985     0, 0, 0, 0, 0, 0, 0, 0,
1986     0, 0, 0, 0, 0, 0, 0, 0,
1987     0, 0, 0, 0, 0, 0, 0, 0,
1988     0, 0, 0, 0, 0, 0, 0, 0,
1989     0, 0, 0, 0, 0, 0, 0, 0,
1990     0, 0, 0, 0, 0, 0, 0, 0,
1991     0, 0, 0, 0, 0, 0, 0, 0,
1992     0, 0, 0, 0, 0, 0, 0, 0,
1993     0, 0, 0, 0, 0, 0, 0, 0,
1994     0, 0, 0, 0, 0, 0, 0, 0,
1995     0, 0, 0, 0, 0, 0, 0, 0,
1996     0, 0, 0, 0, 0, 0, 0, 0,
1997     0, 0, 0, 0, 0, 0, 0, 0,
1998     0, 0, 0, 0, 0, 0, 0, 0,
1999     0, 0, 0, 0, 0, 0, 0, 0,
2000     0, 0, 0, 0, 0, 0, 0, 0,
2001     0, 0, 0, 0, 0, 0, 0, 0,
2002     0, 0, 0, 0, 0, 0, 0, 0,
2003     0, 0, 0, 19, 0, 0, 0, 0,
2004     0, 0, 0, 0, 0, 0, 0, 0,
2005     0, 0, 0, 0, 0, 0, 0, 0,
2006     0, 0, 0, 0, 0, 0, 0, 0,
2007     0, 0, 0, 0, 0, 0, 0, 0,
2008     0, 0, 0, 0, 0, 0, 0, 0,
2009     0, 0, 0, 0, 0, 0, 0, 0,
2010     0, 0, 0, 0, 0, 0, 0, 0,
2011     0, 0, 0, 0, 0, 0, 0, 0,
2012     0, 0, 0, 0, 0, 0, 0, 0,
2013     0, 0, 0, 0, 0, 0, 0, 0,
2014     0, 0, 0, 0, 0, 0, 0, 0,
2015 };
2016
2017 static const Q_UINT8 ui_D8[] = {
2018     12, 0, 0, 0, 0, 0, 0, 0,
2019     0, 0, 0, 0, 0, 0, 0, 0,
2020     0, 0, 0, 0, 0, 0, 0, 0,
2021     0, 0, 0, 0, 0, 0, 0, 0,
2022     0, 0, 0, 0, 0, 0, 0, 0,
2023     0, 0, 0, 0, 0, 0, 0, 0,
2024     0, 0, 0, 0, 0, 0, 0, 0,
2025     0, 0, 0, 0, 0, 0, 0, 0,
2026     0, 0, 0, 0, 0, 0, 0, 0,
2027     0, 0, 0, 0, 0, 0, 0, 0,
2028     0, 0, 0, 0, 0, 0, 0, 0,
2029     0, 0, 0, 0, 0, 0, 0, 0,
2030     0, 0, 0, 0, 0, 0, 0, 0,
2031     0, 0, 0, 0, 0, 0, 0, 0,
2032     0, 0, 0, 0, 0, 0, 0, 0,
2033     0, 0, 0, 0, 0, 0, 0, 0,
2034     0, 0, 0, 0, 0, 0, 0, 0,
2035     0, 0, 0, 0, 0, 0, 0, 0,
2036     0, 0, 0, 0, 0, 0, 0, 0,
2037     0, 0, 0, 0, 0, 0, 0, 0,
2038     0, 0, 0, 0, 0, 0, 0, 0,
2039     0, 0, 0, 0, 0, 0, 0, 0,
2040     0, 0, 0, 0, 0, 0, 0, 0,
2041     0, 0, 0, 0, 0, 0, 0, 0,
2042     0, 0, 0, 0, 0, 0, 0, 0,
2043     0, 0, 0, 0, 0, 0, 0, 0,
2044     0, 0, 0, 0, 0, 0, 0, 0,
2045     0, 0, 0, 0, 0, 0, 0, 0,
2046     0, 0, 0, 0, 0, 0, 0, 0,
2047     0, 0, 0, 0, 0, 0, 0, 0,
2048     0, 0, 0, 0, 0, 0, 0, 0,
2049     0, 0, 0, 0, 0, 0, 0, 0,
2050 };
2051
2052 static const Q_UINT8 ui_DB[] = {
2053     0, 0, 0, 0, 0, 0, 0, 0,
2054     0, 0, 0, 0, 0, 0, 0, 0,
2055     0, 0, 0, 0, 0, 0, 0, 0,
2056     0, 0, 0, 0, 0, 0, 0, 0,
2057     0, 0, 0, 0, 0, 0, 0, 0,
2058     0, 0, 0, 0, 0, 0, 0, 0,
2059     0, 0, 0, 0, 0, 0, 0, 0,
2060     0, 0, 0, 0, 0, 0, 0, 0,
2061     0, 0, 0, 0, 0, 0, 0, 0,
2062     0, 0, 0, 0, 0, 0, 0, 0,
2063     0, 0, 0, 0, 0, 0, 0, 0,
2064     0, 0, 0, 0, 0, 0, 0, 0,
2065     0, 0, 0, 0, 0, 0, 0, 0,
2066     0, 0, 0, 0, 0, 0, 0, 0,
2067     0, 0, 0, 0, 0, 0, 0, 0,
2068     0, 0, 0, 0, 0, 0, 0, 12,
2069     12, 0, 0, 0, 0, 0, 0, 0,
2070     0, 0, 0, 0, 0, 0, 0, 0,
2071     0, 0, 0, 0, 0, 0, 0, 0,
2072     0, 0, 0, 0, 0, 0, 0, 0,
2073     0, 0, 0, 0, 0, 0, 0, 0,
2074     0, 0, 0, 0, 0, 0, 0, 0,
2075     0, 0, 0, 0, 0, 0, 0, 0,
2076     0, 0, 0, 0, 0, 0, 0, 0,
2077     0, 0, 0, 0, 0, 0, 0, 0,
2078     0, 0, 0, 0, 0, 0, 0, 0,
2079     0, 0, 0, 0, 0, 0, 0, 0,
2080     0, 0, 0, 0, 0, 0, 0, 0,
2081     0, 0, 0, 0, 0, 0, 0, 0,
2082     0, 0, 0, 0, 0, 0, 0, 0,
2083     0, 0, 0, 0, 0, 0, 0, 0,
2084     0, 0, 0, 0, 0, 0, 0, 12,
2085 };
2086
2087 static const Q_UINT8 ui_DF[] = {
2088     0, 0, 0, 0, 0, 0, 0, 0,
2089     0, 0, 0, 0, 0, 0, 0, 0,
2090     0, 0, 0, 0, 0, 0, 0, 0,
2091     0, 0, 0, 0, 0, 0, 0, 0,
2092     0, 0, 0, 0, 0, 0, 0, 0,
2093     0, 0, 0, 0, 0, 0, 0, 0,
2094     0, 0, 0, 0, 0, 0, 0, 0,
2095     0, 0, 0, 0, 0, 0, 0, 0,
2096     0, 0, 0, 0, 0, 0, 0, 0,
2097     0, 0, 0, 0, 0, 0, 0, 0,
2098     0, 0, 0, 0, 0, 0, 0, 0,
2099     0, 0, 0, 0, 0, 0, 0, 0,
2100     0, 0, 0, 0, 0, 0, 0, 0,
2101     0, 0, 0, 0, 0, 0, 0, 0,
2102     0, 0, 0, 0, 0, 0, 0, 0,
2103     0, 0, 0, 0, 0, 0, 0, 0,
2104     0, 0, 0, 0, 0, 0, 0, 0,
2105     0, 0, 0, 0, 0, 0, 0, 0,
2106     0, 0, 0, 0, 0, 0, 0, 0,
2107     0, 0, 0, 0, 0, 0, 0, 0,
2108     0, 0, 0, 0, 0, 0, 0, 0,
2109     0, 0, 0, 0, 0, 0, 0, 0,
2110     0, 0, 0, 0, 0, 0, 0, 0,
2111     0, 0, 0, 0, 0, 0, 0, 0,
2112     0, 0, 0, 0, 0, 0, 0, 0,
2113     0, 0, 0, 0, 0, 0, 0, 0,
2114     0, 0, 0, 0, 0, 0, 0, 0,
2115     0, 0, 0, 0, 0, 0, 0, 0,
2116     0, 0, 0, 0, 0, 0, 0, 0,
2117     0, 0, 0, 0, 0, 0, 0, 0,
2118     0, 0, 0, 0, 0, 0, 0, 0,
2119     0, 0, 0, 0, 0, 0, 0, 12,
2120 };
2121
2122 static const Q_UINT8 ui_E0[] = {
2123     13, 0, 0, 0, 0, 0, 0, 0,
2124     0, 0, 0, 0, 0, 0, 0, 0,
2125     0, 0, 0, 0, 0, 0, 0, 0,
2126     0, 0, 0, 0, 0, 0, 0, 0,
2127     0, 0, 0, 0, 0, 0, 0, 0,
2128     0, 0, 0, 0, 0, 0, 0, 0,
2129     0, 0, 0, 0, 0, 0, 0, 0,
2130     0, 0, 0, 0, 0, 0, 0, 0,
2131     0, 0, 0, 0, 0, 0, 0, 0,
2132     0, 0, 0, 0, 0, 0, 0, 0,
2133     0, 0, 0, 0, 0, 0, 0, 0,
2134     0, 0, 0, 0, 0, 0, 0, 0,
2135     0, 0, 0, 0, 0, 0, 0, 0,
2136     0, 0, 0, 0, 0, 0, 0, 0,
2137     0, 0, 0, 0, 0, 0, 0, 0,
2138     0, 0, 0, 0, 0, 0, 0, 0,
2139     0, 0, 0, 0, 0, 0, 0, 0,
2140     0, 0, 0, 0, 0, 0, 0, 0,
2141     0, 0, 0, 0, 0, 0, 0, 0,
2142     0, 0, 0, 0, 0, 0, 0, 0,
2143     0, 0, 0, 0, 0, 0, 0, 0,
2144     0, 0, 0, 0, 0, 0, 0, 0,
2145     0, 0, 0, 0, 0, 0, 0, 0,
2146     0, 0, 0, 0, 0, 0, 0, 0,
2147     0, 0, 0, 0, 0, 0, 0, 0,
2148     0, 0, 0, 0, 0, 0, 0, 0,
2149     0, 0, 0, 0, 0, 0, 0, 0,
2150     0, 0, 0, 0, 0, 0, 0, 0,
2151     0, 0, 0, 0, 0, 0, 0, 0,
2152     0, 0, 0, 0, 0, 0, 0, 0,
2153     0, 0, 0, 0, 0, 0, 0, 0,
2154     0, 0, 0, 0, 0, 0, 0, 0,
2155 };
2156
2157 static const Q_UINT8 ui_F8[] = {
2158     0, 0, 0, 0, 0, 0, 0, 0,
2159     0, 0, 0, 0, 0, 0, 0, 0,
2160     0, 0, 0, 0, 0, 0, 0, 0,
2161     0, 0, 0, 0, 0, 0, 0, 0,
2162     0, 0, 0, 0, 0, 0, 0, 0,
2163     0, 0, 0, 0, 0, 0, 0, 0,
2164     0, 0, 0, 0, 0, 0, 0, 0,
2165     0, 0, 0, 0, 0, 0, 0, 0,
2166     0, 0, 0, 0, 0, 0, 0, 0,
2167     0, 0, 0, 0, 0, 0, 0, 0,
2168     0, 0, 0, 0, 0, 0, 0, 0,
2169     0, 0, 0, 0, 0, 0, 0, 0,
2170     0, 0, 0, 0, 0, 0, 0, 0,
2171     0, 0, 0, 0, 0, 0, 0, 0,
2172     0, 0, 0, 0, 0, 0, 0, 0,
2173     0, 0, 0, 0, 0, 0, 0, 0,
2174     0, 0, 0, 0, 0, 0, 0, 0,
2175     0, 0, 0, 0, 0, 0, 0, 0,
2176     0, 0, 0, 0, 0, 0, 0, 0,
2177     0, 0, 0, 0, 0, 0, 0, 0,
2178     0, 0, 0, 0, 0, 0, 0, 0,
2179     0, 0, 0, 0, 0, 0, 0, 0,
2180     0, 0, 0, 0, 0, 0, 0, 0,
2181     0, 0, 0, 0, 0, 0, 0, 0,
2182     0, 0, 0, 0, 0, 0, 0, 0,
2183     0, 0, 0, 0, 0, 0, 0, 0,
2184     0, 0, 0, 0, 0, 0, 0, 0,
2185     0, 0, 0, 0, 0, 0, 0, 0,
2186     0, 0, 0, 0, 0, 0, 0, 0,
2187     0, 0, 0, 0, 0, 0, 0, 0,
2188     0, 0, 0, 0, 0, 0, 0, 0,
2189     0, 0, 0, 0, 0, 0, 0, 13,
2190 };
2191
2192 static const Q_UINT8 ui_FA[] = {
2193     19, 19, 19, 19, 19, 19, 19, 19,
2194     19, 19, 19, 19, 19, 19, 19, 19,
2195     19, 19, 19, 19, 19, 19, 19, 19,
2196     19, 19, 19, 19, 19, 19, 19, 19,
2197     19, 19, 19, 19, 19, 19, 19, 19,
2198     19, 19, 19, 19, 19, 19, 0, 0,
2199     0, 0, 0, 0, 0, 0, 0, 0,
2200     0, 0, 0, 0, 0, 0, 0, 0,
2201     0, 0, 0, 0, 0, 0, 0, 0,
2202     0, 0, 0, 0, 0, 0, 0, 0,
2203     0, 0, 0, 0, 0, 0, 0, 0,
2204     0, 0, 0, 0, 0, 0, 0, 0,
2205     0, 0, 0, 0, 0, 0, 0, 0,
2206     0, 0, 0, 0, 0, 0, 0, 0,
2207     0, 0, 0, 0, 0, 0, 0, 0,
2208     0, 0, 0, 0, 0, 0, 0, 0,
2209     0, 0, 0, 0, 0, 0, 0, 0,
2210     0, 0, 0, 0, 0, 0, 0, 0,
2211     0, 0, 0, 0, 0, 0, 0, 0,
2212     0, 0, 0, 0, 0, 0, 0, 0,
2213     0, 0, 0, 0, 0, 0, 0, 0,
2214     0, 0, 0, 0, 0, 0, 0, 0,
2215     0, 0, 0, 0, 0, 0, 0, 0,
2216     0, 0, 0, 0, 0, 0, 0, 0,
2217     0, 0, 0, 0, 0, 0, 0, 0,
2218     0, 0, 0, 0, 0, 0, 0, 0,
2219     0, 0, 0, 0, 0, 0, 0, 0,
2220     0, 0, 0, 0, 0, 0, 0, 0,
2221     0, 0, 0, 0, 0, 0, 0, 0,
2222     0, 0, 0, 0, 0, 0, 0, 0,
2223     0, 0, 0, 0, 0, 0, 0, 0,
2224     0, 0, 0, 0, 0, 0, 0, 0,
2225 };
2226
2227 static const Q_UINT8 ui_FB[] = {
2228     16, 16, 16, 16, 16, 16, 16, 0,
2229     0, 0, 0, 0, 0, 0, 0, 0,
2230     0, 0, 0, 16, 16, 16, 16, 16,
2231     0, 0, 0, 0, 0, 19, 1, 19,
2232     19, 19, 19, 19, 19, 19, 19, 19,
2233     19, 27, 19, 19, 19, 19, 19, 19,
2234     19, 19, 19, 19, 19, 19, 19, 0,
2235     19, 19, 19, 19, 19, 0, 19, 0,
2236     19, 19, 0, 19, 19, 0, 19, 19,
2237     19, 19, 19, 19, 19, 19, 19, 19,
2238     19, 19, 19, 19, 19, 19, 19, 19,
2239     19, 19, 19, 19, 19, 19, 19, 19,
2240     19, 19, 19, 19, 19, 19, 19, 19,
2241     19, 19, 19, 19, 19, 19, 19, 19,
2242     19, 19, 19, 19, 19, 19, 19, 19,
2243     19, 19, 19, 19, 19, 19, 19, 19,
2244     19, 19, 19, 19, 19, 19, 19, 19,
2245     19, 19, 19, 19, 19, 19, 19, 19,
2246     19, 19, 19, 19, 19, 19, 19, 19,
2247     19, 19, 19, 19, 19, 19, 19, 19,
2248     19, 19, 19, 19, 19, 19, 19, 19,
2249     19, 19, 19, 19, 19, 19, 19, 19,
2250     19, 19, 0, 0, 0, 0, 0, 0,
2251     0, 0, 0, 0, 0, 0, 0, 0,
2252     0, 0, 0, 0, 0, 0, 0, 0,
2253     0, 0, 0, 0, 0, 0, 0, 0,
2254     0, 0, 0, 19, 19, 19, 19, 19,
2255     19, 19, 19, 19, 19, 19, 19, 19,
2256     19, 19, 19, 19, 19, 19, 19, 19,
2257     19, 19, 19, 19, 19, 19, 19, 19,
2258     19, 19, 19, 19, 19, 19, 19, 19,
2259     19, 19, 19, 19, 19, 19, 19, 19,
2260 };
2261
2262 static const Q_UINT8 ui_FD[] = {
2263     19, 19, 19, 19, 19, 19, 19, 19,
2264     19, 19, 19, 19, 19, 19, 19, 19,
2265     19, 19, 19, 19, 19, 19, 19, 19,
2266     19, 19, 19, 19, 19, 19, 19, 19,
2267     19, 19, 19, 19, 19, 19, 19, 19,
2268     19, 19, 19, 19, 19, 19, 19, 19,
2269     19, 19, 19, 19, 19, 19, 19, 19,
2270     19, 19, 19, 19, 19, 19, 22, 23,
2271     0, 0, 0, 0, 0, 0, 0, 0,
2272     0, 0, 0, 0, 0, 0, 0, 0,
2273     19, 19, 19, 19, 19, 19, 19, 19,
2274     19, 19, 19, 19, 19, 19, 19, 19,
2275     19, 19, 19, 19, 19, 19, 19, 19,
2276     19, 19, 19, 19, 19, 19, 19, 19,
2277     19, 19, 19, 19, 19, 19, 19, 19,
2278     19, 19, 19, 19, 19, 19, 19, 19,
2279     19, 19, 19, 19, 19, 19, 19, 19,
2280     19, 19, 19, 19, 19, 19, 19, 19,
2281     0, 0, 19, 19, 19, 19, 19, 19,
2282     19, 19, 19, 19, 19, 19, 19, 19,
2283     19, 19, 19, 19, 19, 19, 19, 19,
2284     19, 19, 19, 19, 19, 19, 19, 19,
2285     19, 19, 19, 19, 19, 19, 19, 19,
2286     19, 19, 19, 19, 19, 19, 19, 19,
2287     19, 19, 19, 19, 19, 19, 19, 19,
2288     0, 0, 0, 0, 0, 0, 0, 0,
2289     0, 0, 0, 0, 0, 0, 0, 0,
2290     0, 0, 0, 0, 0, 0, 0, 0,
2291     0, 0, 0, 0, 0, 0, 0, 0,
2292     0, 0, 0, 0, 0, 0, 0, 0,
2293     19, 19, 19, 19, 19, 19, 19, 19,
2294     19, 19, 19, 19, 0, 0, 0, 0,
2295 };
2296
2297 static const Q_UINT8 ui_FE[] = {
2298     0, 0, 0, 0, 0, 0, 0, 0,
2299     0, 0, 0, 0, 0, 0, 0, 0,
2300     0, 0, 0, 0, 0, 0, 0, 0,
2301     0, 0, 0, 0, 0, 0, 0, 0,
2302     1, 1, 1, 1, 0, 0, 0, 0,
2303     0, 0, 0, 0, 0, 0, 0, 0,
2304     26, 21, 21, 20, 20, 22, 23, 22,
2305     23, 22, 23, 22, 23, 22, 23, 22,
2306     23, 22, 23, 22, 23, 0, 0, 0,
2307     0, 26, 26, 26, 26, 20, 20, 20,
2308     26, 26, 26, 0, 26, 26, 26, 26,
2309     21, 22, 23, 22, 23, 22, 23, 26,
2310     26, 26, 27, 21, 27, 27, 27, 0,
2311     26, 28, 26, 26, 0, 0, 0, 0,
2312     19, 19, 19, 0, 19, 0, 19, 19,
2313     19, 19, 19, 19, 19, 19, 19, 19,
2314     19, 19, 19, 19, 19, 19, 19, 19,
2315     19, 19, 19, 19, 19, 19, 19, 19,
2316     19, 19, 19, 19, 19, 19, 19, 19,
2317     19, 19, 19, 19, 19, 19, 19, 19,
2318     19, 19, 19, 19, 19, 19, 19, 19,
2319     19, 19, 19, 19, 19, 19, 19, 19,
2320     19, 19, 19, 19, 19, 19, 19, 19,
2321     19, 19, 19, 19, 19, 19, 19, 19,
2322     19, 19, 19, 19, 19, 19, 19, 19,
2323     19, 19, 19, 19, 19, 19, 19, 19,
2324     19, 19, 19, 19, 19, 19, 19, 19,
2325     19, 19, 19, 19, 19, 19, 19, 19,
2326     19, 19, 19, 19, 19, 19, 19, 19,
2327     19, 19, 19, 19, 19, 19, 19, 19,
2328     19, 19, 19, 19, 19, 19, 19, 19,
2329     19, 19, 19, 19, 19, 0, 0, 11,
2330 };
2331
2332 static const Q_UINT8 ui_FF[] = {
2333     0, 26, 26, 26, 28, 26, 26, 26,
2334     22, 23, 26, 27, 26, 21, 26, 26,
2335     4, 4, 4, 4, 4, 4, 4, 4,
2336     4, 4, 26, 26, 27, 27, 27, 26,
2337     26, 15, 15, 15, 15, 15, 15, 15,
2338     15, 15, 15, 15, 15, 15, 15, 15,
2339     15, 15, 15, 15, 15, 15, 15, 15,
2340     15, 15, 15, 22, 26, 23, 29, 20,
2341     29, 16, 16, 16, 16, 16, 16, 16,
2342     16, 16, 16, 16, 16, 16, 16, 16,
2343     16, 16, 16, 16, 16, 16, 16, 16,
2344     16, 16, 16, 22, 27, 23, 27, 0,
2345     0, 26, 22, 23, 26, 20, 19, 19,
2346     19, 19, 19, 19, 19, 19, 19, 19,
2347     18, 19, 19, 19, 19, 19, 19, 19,
2348     19, 19, 19, 19, 19, 19, 19, 19,
2349     19, 19, 19, 19, 19, 19, 19, 19,
2350     19, 19, 19, 19, 19, 19, 19, 19,
2351     19, 19, 19, 19, 19, 19, 19, 19,
2352     19, 19, 19, 19, 19, 19, 18, 18,
2353     19, 19, 19, 19, 19, 19, 19, 19,
2354     19, 19, 19, 19, 19, 19, 19, 19,
2355     19, 19, 19, 19, 19, 19, 19, 19,
2356     19, 19, 19, 19, 19, 19, 19, 0,
2357     0, 0, 19, 19, 19, 19, 19, 19,
2358     0, 0, 19, 19, 19, 19, 19, 19,
2359     0, 0, 19, 19, 19, 19, 19, 19,
2360     0, 0, 19, 19, 19, 0, 0, 0,
2361     28, 28, 27, 29, 30, 28, 28, 0,
2362     30, 27, 27, 27, 27, 30, 30, 0,
2363     0, 0, 0, 0, 0, 0, 0, 0,
2364     0, 11, 11, 11, 30, 30, 0, 0,
2365 };
2366
2367 static const Q_UINT8 * const unicode_info[256] = {
2368     ui_00, ui_01, ui_02, ui_03, ui_04, ui_05, ui_06, ui_07,
2369     ui_08, ui_09, ui_0A, ui_0B, ui_0C, ui_0D, ui_0E, ui_0F,
2370     ui_10, ui_11, ui_12, ui_13, ui_14, ui_15, ui_16, ui_17,
2371     ui_18, ui_08, ui_08, ui_08, ui_08, ui_08, ui_1E, ui_1F,
2372     ui_20, ui_21, ui_22, ui_23, ui_24, ui_25, ui_26, ui_27,
2373     ui_28, ui_08, ui_08, ui_08, ui_08, ui_08, ui_2E, ui_2F,
2374     ui_30, ui_31, ui_32, ui_33, ui_34, ui_08, ui_08, ui_08,
2375     ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08,
2376     ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08,
2377     ui_08, ui_08, ui_08, ui_08, ui_08, ui_4D, ui_34, ui_08,
2378     ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08,
2379     ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08,
2380     ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08,
2381     ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08,
2382     ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08,
2383     ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08,
2384     ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08,
2385     ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08,
2386     ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08,
2387     ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_9F,
2388     ui_15, ui_15, ui_15, ui_15, ui_A4, ui_08, ui_08, ui_08,
2389     ui_08, ui_08, ui_08, ui_08, ui_34, ui_08, ui_08, ui_08,
2390     ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08,
2391     ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08,
2392     ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08,
2393     ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08,
2394     ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_D7,
2395     ui_D8, ui_08, ui_08, ui_DB, ui_D8, ui_08, ui_08, ui_DF,
2396     ui_E0, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08,
2397     ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08,
2398     ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08,
2399     ui_F8, ui_15, ui_FA, ui_FB, ui_15, ui_FD, ui_FE, ui_FF,
2400 };
2401 // 15616 bytes
2402
2403 static const Q_UINT16 decomposition_map [] = {
2404     0,
2405     3, 0x00A0, 0x0020, 0,
2406     16, 0x00A8, 0x0020, 0x0308, 0,
2407     9, 0x00AA, 0x0061, 0,
2408     16, 0x00AF, 0x0020, 0x0304, 0,
2409     9, 0x00B2, 0x0032, 0,
2410     9, 0x00B3, 0x0033, 0,
2411     16, 0x00B4, 0x0020, 0x0301, 0,
2412     16, 0x00B5, 0x03BC, 0,
2413     16, 0x00B8, 0x0020, 0x0327, 0,
2414     9, 0x00B9, 0x0031, 0,
2415     9, 0x00BA, 0x006F, 0,
2416     17, 0x00BC, 0x0031, 0x2044, 0x0034, 0,
2417     17, 0x00BD, 0x0031, 0x2044, 0x0032, 0,
2418     17, 0x00BE, 0x0033, 0x2044, 0x0034, 0,
2419     1, 0x00C0, 0x0041, 0x0300, 0,
2420     1, 0x00C1, 0x0041, 0x0301, 0,
2421     1, 0x00C2, 0x0041, 0x0302, 0,
2422     1, 0x00C3, 0x0041, 0x0303, 0,
2423     1, 0x00C4, 0x0041, 0x0308, 0,
2424     1, 0x00C5, 0x0041, 0x030A, 0,
2425     1, 0x00C7, 0x0043, 0x0327, 0,
2426     1, 0x00C8, 0x0045, 0x0300, 0,
2427     1, 0x00C9, 0x0045, 0x0301, 0,
2428     1, 0x00CA, 0x0045, 0x0302, 0,
2429     1, 0x00CB, 0x0045, 0x0308, 0,
2430     1, 0x00CC, 0x0049, 0x0300, 0,
2431     1, 0x00CD, 0x0049, 0x0301, 0,
2432     1, 0x00CE, 0x0049, 0x0302, 0,
2433     1, 0x00CF, 0x0049, 0x0308, 0,
2434     1, 0x00D1, 0x004E, 0x0303, 0,
2435     1, 0x00D2, 0x004F, 0x0300, 0,
2436     1, 0x00D3, 0x004F, 0x0301, 0,
2437     1, 0x00D4, 0x004F, 0x0302, 0,
2438     1, 0x00D5, 0x004F, 0x0303, 0,
2439     1, 0x00D6, 0x004F, 0x0308, 0,
2440     1, 0x00D9, 0x0055, 0x0300, 0,
2441     1, 0x00DA, 0x0055, 0x0301, 0,
2442     1, 0x00DB, 0x0055, 0x0302, 0,
2443     1, 0x00DC, 0x0055, 0x0308, 0,
2444     1, 0x00DD, 0x0059, 0x0301, 0,
2445     1, 0x00E0, 0x0061, 0x0300, 0,
2446     1, 0x00E1, 0x0061, 0x0301, 0,
2447     1, 0x00E2, 0x0061, 0x0302, 0,
2448     1, 0x00E3, 0x0061, 0x0303, 0,
2449     1, 0x00E4, 0x0061, 0x0308, 0,
2450     1, 0x00E5, 0x0061, 0x030A, 0,
2451     1, 0x00E7, 0x0063, 0x0327, 0,
2452     1, 0x00E8, 0x0065, 0x0300, 0,
2453     1, 0x00E9, 0x0065, 0x0301, 0,
2454     1, 0x00EA, 0x0065, 0x0302, 0,
2455     1, 0x00EB, 0x0065, 0x0308, 0,
2456     1, 0x00EC, 0x0069, 0x0300, 0,
2457     1, 0x00ED, 0x0069, 0x0301, 0,
2458     1, 0x00EE, 0x0069, 0x0302, 0,
2459     1, 0x00EF, 0x0069, 0x0308, 0,
2460     1, 0x00F1, 0x006E, 0x0303, 0,
2461     1, 0x00F2, 0x006F, 0x0300, 0,
2462     1, 0x00F3, 0x006F, 0x0301, 0,
2463     1, 0x00F4, 0x006F, 0x0302, 0,
2464     1, 0x00F5, 0x006F, 0x0303, 0,
2465     1, 0x00F6, 0x006F, 0x0308, 0,
2466     1, 0x00F9, 0x0075, 0x0300, 0,
2467     1, 0x00FA, 0x0075, 0x0301, 0,
2468     1, 0x00FB, 0x0075, 0x0302, 0,
2469     1, 0x00FC, 0x0075, 0x0308, 0,
2470     1, 0x00FD, 0x0079, 0x0301, 0,
2471     1, 0x00FF, 0x0079, 0x0308, 0,
2472     1, 0x0100, 0x0041, 0x0304, 0,
2473     1, 0x0101, 0x0061, 0x0304, 0,
2474     1, 0x0102, 0x0041, 0x0306, 0,
2475     1, 0x0103, 0x0061, 0x0306, 0,
2476     1, 0x0104, 0x0041, 0x0328, 0,
2477     1, 0x0105, 0x0061, 0x0328, 0,
2478     1, 0x0106, 0x0043, 0x0301, 0,
2479     1, 0x0107, 0x0063, 0x0301, 0,
2480     1, 0x0108, 0x0043, 0x0302, 0,
2481     1, 0x0109, 0x0063, 0x0302, 0,
2482     1, 0x010A, 0x0043, 0x0307, 0,
2483     1, 0x010B, 0x0063, 0x0307, 0,
2484     1, 0x010C, 0x0043, 0x030C, 0,
2485     1, 0x010D, 0x0063, 0x030C, 0,
2486     1, 0x010E, 0x0044, 0x030C, 0,
2487     1, 0x010F, 0x0064, 0x030C, 0,
2488     1, 0x0112, 0x0045, 0x0304, 0,
2489     1, 0x0113, 0x0065, 0x0304, 0,
2490     1, 0x0114, 0x0045, 0x0306, 0,
2491     1, 0x0115, 0x0065, 0x0306, 0,
2492     1, 0x0116, 0x0045, 0x0307, 0,
2493     1, 0x0117, 0x0065, 0x0307, 0,
2494     1, 0x0118, 0x0045, 0x0328, 0,
2495     1, 0x0119, 0x0065, 0x0328, 0,
2496     1, 0x011A, 0x0045, 0x030C, 0,
2497     1, 0x011B, 0x0065, 0x030C, 0,
2498     1, 0x011C, 0x0047, 0x0302, 0,
2499     1, 0x011D, 0x0067, 0x0302, 0,
2500     1, 0x011E, 0x0047, 0x0306, 0,
2501     1, 0x011F, 0x0067, 0x0306, 0,
2502     1, 0x0120, 0x0047, 0x0307, 0,
2503     1, 0x0121, 0x0067, 0x0307, 0,
2504     1, 0x0122, 0x0047, 0x0327, 0,
2505     1, 0x0123, 0x0067, 0x0327, 0,
2506     1, 0x0124, 0x0048, 0x0302, 0,
2507     1, 0x0125, 0x0068, 0x0302, 0,
2508     1, 0x0128, 0x0049, 0x0303, 0,
2509     1, 0x0129, 0x0069, 0x0303, 0,
2510     1, 0x012A, 0x0049, 0x0304, 0,
2511     1, 0x012B, 0x0069, 0x0304, 0,
2512     1, 0x012C, 0x0049, 0x0306, 0,
2513     1, 0x012D, 0x0069, 0x0306, 0,
2514     1, 0x012E, 0x0049, 0x0328, 0,
2515     1, 0x012F, 0x0069, 0x0328, 0,
2516     1, 0x0130, 0x0049, 0x0307, 0,
2517     16, 0x0132, 0x0049, 0x004A, 0,
2518     16, 0x0133, 0x0069, 0x006A, 0,
2519     1, 0x0134, 0x004A, 0x0302, 0,
2520     1, 0x0135, 0x006A, 0x0302, 0,
2521     1, 0x0136, 0x004B, 0x0327, 0,
2522     1, 0x0137, 0x006B, 0x0327, 0,
2523     1, 0x0139, 0x004C, 0x0301, 0,
2524     1, 0x013A, 0x006C, 0x0301, 0,
2525     1, 0x013B, 0x004C, 0x0327, 0,
2526     1, 0x013C, 0x006C, 0x0327, 0,
2527     1, 0x013D, 0x004C, 0x030C, 0,
2528     1, 0x013E, 0x006C, 0x030C, 0,
2529     16, 0x013F, 0x004C, 0x00B7, 0,
2530     16, 0x0140, 0x006C, 0x00B7, 0,
2531     1, 0x0143, 0x004E, 0x0301, 0,
2532     1, 0x0144, 0x006E, 0x0301, 0,
2533     1, 0x0145, 0x004E, 0x0327, 0,
2534     1, 0x0146, 0x006E, 0x0327, 0,
2535     1, 0x0147, 0x004E, 0x030C, 0,
2536     1, 0x0148, 0x006E, 0x030C, 0,
2537     16, 0x0149, 0x02BC, 0x006E, 0,
2538     1, 0x014C, 0x004F, 0x0304, 0,
2539     1, 0x014D, 0x006F, 0x0304, 0,
2540     1, 0x014E, 0x004F, 0x0306, 0,
2541     1, 0x014F, 0x006F, 0x0306, 0,
2542     1, 0x0150, 0x004F, 0x030B, 0,
2543     1, 0x0151, 0x006F, 0x030B, 0,
2544     1, 0x0154, 0x0052, 0x0301, 0,
2545     1, 0x0155, 0x0072, 0x0301, 0,
2546     1, 0x0156, 0x0052, 0x0327, 0,
2547     1, 0x0157, 0x0072, 0x0327, 0,
2548     1, 0x0158, 0x0052, 0x030C, 0,
2549     1, 0x0159, 0x0072, 0x030C, 0,
2550     1, 0x015A, 0x0053, 0x0301, 0,
2551     1, 0x015B, 0x0073, 0x0301, 0,
2552     1, 0x015C, 0x0053, 0x0302, 0,
2553     1, 0x015D, 0x0073, 0x0302, 0,
2554     1, 0x015E, 0x0053, 0x0327, 0,
2555     1, 0x015F, 0x0073, 0x0327, 0,
2556     1, 0x0160, 0x0053, 0x030C, 0,
2557     1, 0x0161, 0x0073, 0x030C, 0,
2558     1, 0x0162, 0x0054, 0x0327, 0,
2559     1, 0x0163, 0x0074, 0x0327, 0,
2560     1, 0x0164, 0x0054, 0x030C, 0,
2561     1, 0x0165, 0x0074, 0x030C, 0,
2562     1, 0x0168, 0x0055, 0x0303, 0,
2563     1, 0x0169, 0x0075, 0x0303, 0,
2564     1, 0x016A, 0x0055, 0x0304, 0,
2565     1, 0x016B, 0x0075, 0x0304, 0,
2566     1, 0x016C, 0x0055, 0x0306, 0,
2567     1, 0x016D, 0x0075, 0x0306, 0,
2568     1, 0x016E, 0x0055, 0x030A, 0,
2569     1, 0x016F, 0x0075, 0x030A, 0,
2570     1, 0x0170, 0x0055, 0x030B, 0,
2571     1, 0x0171, 0x0075, 0x030B, 0,
2572     1, 0x0172, 0x0055, 0x0328, 0,
2573     1, 0x0173, 0x0075, 0x0328, 0,
2574     1, 0x0174, 0x0057, 0x0302, 0,
2575     1, 0x0175, 0x0077, 0x0302, 0,
2576     1, 0x0176, 0x0059, 0x0302, 0,
2577     1, 0x0177, 0x0079, 0x0302, 0,
2578     1, 0x0178, 0x0059, 0x0308, 0,
2579     1, 0x0179, 0x005A, 0x0301, 0,
2580     1, 0x017A, 0x007A, 0x0301, 0,
2581     1, 0x017B, 0x005A, 0x0307, 0,
2582     1, 0x017C, 0x007A, 0x0307, 0,
2583     1, 0x017D, 0x005A, 0x030C, 0,
2584     1, 0x017E, 0x007A, 0x030C, 0,
2585     16, 0x017F, 0x0073, 0,
2586     1, 0x01A0, 0x004F, 0x031B, 0,
2587     1, 0x01A1, 0x006F, 0x031B, 0,
2588     1, 0x01AF, 0x0055, 0x031B, 0,
2589     1, 0x01B0, 0x0075, 0x031B, 0,
2590     16, 0x01C4, 0x0044, 0x017D, 0,
2591     16, 0x01C5, 0x0044, 0x017E, 0,
2592     16, 0x01C6, 0x0064, 0x017E, 0,
2593     16, 0x01C7, 0x004C, 0x004A, 0,
2594     16, 0x01C8, 0x004C, 0x006A, 0,
2595     16, 0x01C9, 0x006C, 0x006A, 0,
2596     16, 0x01CA, 0x004E, 0x004A, 0,
2597     16, 0x01CB, 0x004E, 0x006A, 0,
2598     16, 0x01CC, 0x006E, 0x006A, 0,
2599     1, 0x01CD, 0x0041, 0x030C, 0,
2600     1, 0x01CE, 0x0061, 0x030C, 0,
2601     1, 0x01CF, 0x0049, 0x030C, 0,
2602     1, 0x01D0, 0x0069, 0x030C, 0,
2603     1, 0x01D1, 0x004F, 0x030C, 0,
2604     1, 0x01D2, 0x006F, 0x030C, 0,
2605     1, 0x01D3, 0x0055, 0x030C, 0,
2606     1, 0x01D4, 0x0075, 0x030C, 0,
2607     1, 0x01D5, 0x00DC, 0x0304, 0,
2608     1, 0x01D6, 0x00FC, 0x0304, 0,
2609     1, 0x01D7, 0x00DC, 0x0301, 0,
2610     1, 0x01D8, 0x00FC, 0x0301, 0,
2611     1, 0x01D9, 0x00DC, 0x030C, 0,
2612     1, 0x01DA, 0x00FC, 0x030C, 0,
2613     1, 0x01DB, 0x00DC, 0x0300, 0,
2614     1, 0x01DC, 0x00FC, 0x0300, 0,
2615     1, 0x01DE, 0x00C4, 0x0304, 0,
2616     1, 0x01DF, 0x00E4, 0x0304, 0,
2617     1, 0x01E0, 0x0226, 0x0304, 0,
2618     1, 0x01E1, 0x0227, 0x0304, 0,
2619     1, 0x01E2, 0x00C6, 0x0304, 0,
2620     1, 0x01E3, 0x00E6, 0x0304, 0,
2621     1, 0x01E6, 0x0047, 0x030C, 0,
2622     1, 0x01E7, 0x0067, 0x030C, 0,
2623     1, 0x01E8, 0x004B, 0x030C, 0,
2624     1, 0x01E9, 0x006B, 0x030C, 0,
2625     1, 0x01EA, 0x004F, 0x0328, 0,
2626     1, 0x01EB, 0x006F, 0x0328, 0,
2627     1, 0x01EC, 0x01EA, 0x0304, 0,
2628     1, 0x01ED, 0x01EB, 0x0304, 0,
2629     1, 0x01EE, 0x01B7, 0x030C, 0,
2630     1, 0x01EF, 0x0292, 0x030C, 0,
2631     1, 0x01F0, 0x006A, 0x030C, 0,
2632     16, 0x01F1, 0x0044, 0x005A, 0,
2633     16, 0x01F2, 0x0044, 0x007A, 0,
2634     16, 0x01F3, 0x0064, 0x007A, 0,
2635     1, 0x01F4, 0x0047, 0x0301, 0,
2636     1, 0x01F5, 0x0067, 0x0301, 0,
2637     1, 0x01F8, 0x004E, 0x0300, 0,
2638     1, 0x01F9, 0x006E, 0x0300, 0,
2639     1, 0x01FA, 0x00C5, 0x0301, 0,
2640     1, 0x01FB, 0x00E5, 0x0301, 0,
2641     1, 0x01FC, 0x00C6, 0x0301, 0,
2642     1, 0x01FD, 0x00E6, 0x0301, 0,
2643     1, 0x01FE, 0x00D8, 0x0301, 0,
2644     1, 0x01FF, 0x00F8, 0x0301, 0,
2645     1, 0x0200, 0x0041, 0x030F, 0,
2646     1, 0x0201, 0x0061, 0x030F, 0,
2647     1, 0x0202, 0x0041, 0x0311, 0,
2648     1, 0x0203, 0x0061, 0x0311, 0,
2649     1, 0x0204, 0x0045, 0x030F, 0,
2650     1, 0x0205, 0x0065, 0x030F, 0,
2651     1, 0x0206, 0x0045, 0x0311, 0,
2652     1, 0x0207, 0x0065, 0x0311, 0,
2653     1, 0x0208, 0x0049, 0x030F, 0,
2654     1, 0x0209, 0x0069, 0x030F, 0,
2655     1, 0x020A, 0x0049, 0x0311, 0,
2656     1, 0x020B, 0x0069, 0x0311, 0,
2657     1, 0x020C, 0x004F, 0x030F, 0,
2658     1, 0x020D, 0x006F, 0x030F, 0,
2659     1, 0x020E, 0x004F, 0x0311, 0,
2660     1, 0x020F, 0x006F, 0x0311, 0,
2661     1, 0x0210, 0x0052, 0x030F, 0,
2662     1, 0x0211, 0x0072, 0x030F, 0,
2663     1, 0x0212, 0x0052, 0x0311, 0,
2664     1, 0x0213, 0x0072, 0x0311, 0,
2665     1, 0x0214, 0x0055, 0x030F, 0,
2666     1, 0x0215, 0x0075, 0x030F, 0,
2667     1, 0x0216, 0x0055, 0x0311, 0,
2668     1, 0x0217, 0x0075, 0x0311, 0,
2669     1, 0x0218, 0x0053, 0x0326, 0,
2670     1, 0x0219, 0x0073, 0x0326, 0,
2671     1, 0x021A, 0x0054, 0x0326, 0,
2672     1, 0x021B, 0x0074, 0x0326, 0,
2673     1, 0x021E, 0x0048, 0x030C, 0,
2674     1, 0x021F, 0x0068, 0x030C, 0,
2675     1, 0x0226, 0x0041, 0x0307, 0,
2676     1, 0x0227, 0x0061, 0x0307, 0,
2677     1, 0x0228, 0x0045, 0x0327, 0,
2678     1, 0x0229, 0x0065, 0x0327, 0,
2679     1, 0x022A, 0x00D6, 0x0304, 0,
2680     1, 0x022B, 0x00F6, 0x0304, 0,
2681     1, 0x022C, 0x00D5, 0x0304, 0,
2682     1, 0x022D, 0x00F5, 0x0304, 0,
2683     1, 0x022E, 0x004F, 0x0307, 0,
2684     1, 0x022F, 0x006F, 0x0307, 0,
2685     1, 0x0230, 0x022E, 0x0304, 0,
2686     1, 0x0231, 0x022F, 0x0304, 0,
2687     1, 0x0232, 0x0059, 0x0304, 0,
2688     1, 0x0233, 0x0079, 0x0304, 0,
2689     9, 0x02B0, 0x0068, 0,
2690     9, 0x02B1, 0x0266, 0,
2691     9, 0x02B2, 0x006A, 0,
2692     9, 0x02B3, 0x0072, 0,
2693     9, 0x02B4, 0x0279, 0,
2694     9, 0x02B5, 0x027B, 0,
2695     9, 0x02B6, 0x0281, 0,
2696     9, 0x02B7, 0x0077, 0,
2697     9, 0x02B8, 0x0079, 0,
2698     16, 0x02D8, 0x0020, 0x0306, 0,
2699     16, 0x02D9, 0x0020, 0x0307, 0,
2700     16, 0x02DA, 0x0020, 0x030A, 0,
2701     16, 0x02DB, 0x0020, 0x0328, 0,
2702     16, 0x02DC, 0x0020, 0x0303, 0,
2703     16, 0x02DD, 0x0020, 0x030B, 0,
2704     9, 0x02E0, 0x0263, 0,
2705     9, 0x02E1, 0x006C, 0,
2706     9, 0x02E2, 0x0073, 0,
2707     9, 0x02E3, 0x0078, 0,
2708     9, 0x02E4, 0x0295, 0,
2709     1, 0x0340, 0x0300, 0,
2710     1, 0x0341, 0x0301, 0,
2711     1, 0x0343, 0x0313, 0,
2712     1, 0x0344, 0x0308, 0x0301, 0,
2713     1, 0x0374, 0x02B9, 0,
2714     16, 0x037A, 0x0020, 0x0345, 0,
2715     1, 0x037E, 0x003B, 0,
2716     16, 0x0384, 0x0020, 0x0301, 0,
2717     1, 0x0385, 0x00A8, 0x0301, 0,
2718     1, 0x0386, 0x0391, 0x0301, 0,
2719     1, 0x0387, 0x00B7, 0,
2720     1, 0x0388, 0x0395, 0x0301, 0,
2721     1, 0x0389, 0x0397, 0x0301, 0,
2722     1, 0x038A, 0x0399, 0x0301, 0,
2723     1, 0x038C, 0x039F, 0x0301, 0,
2724     1, 0x038E, 0x03A5, 0x0301, 0,
2725     1, 0x038F, 0x03A9, 0x0301, 0,
2726     1, 0x0390, 0x03CA, 0x0301, 0,
2727     1, 0x03AA, 0x0399, 0x0308, 0,
2728     1, 0x03AB, 0x03A5, 0x0308, 0,
2729     1, 0x03AC, 0x03B1, 0x0301, 0,
2730     1, 0x03AD, 0x03B5, 0x0301, 0,
2731     1, 0x03AE, 0x03B7, 0x0301, 0,
2732     1, 0x03AF, 0x03B9, 0x0301, 0,
2733     1, 0x03B0, 0x03CB, 0x0301, 0,
2734     1, 0x03CA, 0x03B9, 0x0308, 0,
2735     1, 0x03CB, 0x03C5, 0x0308, 0,
2736     1, 0x03CC, 0x03BF, 0x0301, 0,
2737     1, 0x03CD, 0x03C5, 0x0301, 0,
2738     1, 0x03CE, 0x03C9, 0x0301, 0,
2739     16, 0x03D0, 0x03B2, 0,
2740     16, 0x03D1, 0x03B8, 0,
2741     16, 0x03D2, 0x03A5, 0,
2742     1, 0x03D3, 0x03D2, 0x0301, 0,
2743     1, 0x03D4, 0x03D2, 0x0308, 0,
2744     16, 0x03D5, 0x03C6, 0,
2745     16, 0x03D6, 0x03C0, 0,
2746     16, 0x03F0, 0x03BA, 0,
2747     16, 0x03F1, 0x03C1, 0,
2748     16, 0x03F2, 0x03C2, 0,
2749     1, 0x0400, 0x0415, 0x0300, 0,
2750     1, 0x0401, 0x0415, 0x0308, 0,
2751     1, 0x0403, 0x0413, 0x0301, 0,
2752     1, 0x0407, 0x0406, 0x0308, 0,
2753     1, 0x040C, 0x041A, 0x0301, 0,
2754     1, 0x040D, 0x0418, 0x0300, 0,
2755     1, 0x040E, 0x0423, 0x0306, 0,
2756     1, 0x0419, 0x0418, 0x0306, 0,
2757     1, 0x0439, 0x0438, 0x0306, 0,
2758     1, 0x0450, 0x0435, 0x0300, 0,
2759     1, 0x0451, 0x0435, 0x0308, 0,
2760     1, 0x0453, 0x0433, 0x0301, 0,
2761     1, 0x0457, 0x0456, 0x0308, 0,
2762     1, 0x045C, 0x043A, 0x0301, 0,
2763     1, 0x045D, 0x0438, 0x0300, 0,
2764     1, 0x045E, 0x0443, 0x0306, 0,
2765     1, 0x0476, 0x0474, 0x030F, 0,
2766     1, 0x0477, 0x0475, 0x030F, 0,
2767     1, 0x04C1, 0x0416, 0x0306, 0,
2768     1, 0x04C2, 0x0436, 0x0306, 0,
2769     1, 0x04D0, 0x0410, 0x0306, 0,
2770     1, 0x04D1, 0x0430, 0x0306, 0,
2771     1, 0x04D2, 0x0410, 0x0308, 0,
2772     1, 0x04D3, 0x0430, 0x0308, 0,
2773     1, 0x04D6, 0x0415, 0x0306, 0,
2774     1, 0x04D7, 0x0435, 0x0306, 0,
2775     1, 0x04DA, 0x04D8, 0x0308, 0,
2776     1, 0x04DB, 0x04D9, 0x0308, 0,
2777     1, 0x04DC, 0x0416, 0x0308, 0,
2778     1, 0x04DD, 0x0436, 0x0308, 0,
2779     1, 0x04DE, 0x0417, 0x0308, 0,
2780     1, 0x04DF, 0x0437, 0x0308, 0,
2781     1, 0x04E2, 0x0418, 0x0304, 0,
2782     1, 0x04E3, 0x0438, 0x0304, 0,
2783     1, 0x04E4, 0x0418, 0x0308, 0,
2784     1, 0x04E5, 0x0438, 0x0308, 0,
2785     1, 0x04E6, 0x041E, 0x0308, 0,
2786     1, 0x04E7, 0x043E, 0x0308, 0,
2787     1, 0x04EA, 0x04E8, 0x0308, 0,
2788     1, 0x04EB, 0x04E9, 0x0308, 0,
2789     1, 0x04EC, 0x042D, 0x0308, 0,
2790     1, 0x04ED, 0x044D, 0x0308, 0,
2791     1, 0x04EE, 0x0423, 0x0304, 0,
2792     1, 0x04EF, 0x0443, 0x0304, 0,
2793     1, 0x04F0, 0x0423, 0x0308, 0,
2794     1, 0x04F1, 0x0443, 0x0308, 0,
2795     1, 0x04F2, 0x0423, 0x030B, 0,
2796     1, 0x04F3, 0x0443, 0x030B, 0,
2797     1, 0x04F4, 0x0427, 0x0308, 0,
2798     1, 0x04F5, 0x0447, 0x0308, 0,
2799     1, 0x04F8, 0x042B, 0x0308, 0,
2800     1, 0x04F9, 0x044B, 0x0308, 0,
2801     16, 0x0587, 0x0565, 0x0582, 0,
2802     1, 0x0622, 0x0627, 0x0653, 0,
2803     1, 0x0623, 0x0627, 0x0654, 0,
2804     1, 0x0624, 0x0648, 0x0654, 0,
2805     1, 0x0625, 0x0627, 0x0655, 0,
2806     1, 0x0626, 0x064A, 0x0654, 0,
2807     16, 0x0675, 0x0627, 0x0674, 0,
2808     16, 0x0676, 0x0648, 0x0674, 0,
2809     16, 0x0677, 0x06C7, 0x0674, 0,
2810     16, 0x0678, 0x064A, 0x0674, 0,
2811     1, 0x06C0, 0x06D5, 0x0654, 0,
2812     1, 0x06C2, 0x06C1, 0x0654, 0,
2813     1, 0x06D3, 0x06D2, 0x0654, 0,
2814     1, 0x0929, 0x0928, 0x093C, 0,
2815     1, 0x0931, 0x0930, 0x093C, 0,
2816     1, 0x0934, 0x0933, 0x093C, 0,
2817     1, 0x0958, 0x0915, 0x093C, 0,
2818     1, 0x0959, 0x0916, 0x093C, 0,
2819     1, 0x095A, 0x0917, 0x093C, 0,
2820     1, 0x095B, 0x091C, 0x093C, 0,
2821     1, 0x095C, 0x0921, 0x093C, 0,
2822     1, 0x095D, 0x0922, 0x093C, 0,
2823     1, 0x095E, 0x092B, 0x093C, 0,
2824     1, 0x095F, 0x092F, 0x093C, 0,
2825     1, 0x09CB, 0x09C7, 0x09BE, 0,
2826     1, 0x09CC, 0x09C7, 0x09D7, 0,
2827     1, 0x09DC, 0x09A1, 0x09BC, 0,
2828     1, 0x09DD, 0x09A2, 0x09BC, 0,
2829     1, 0x09DF, 0x09AF, 0x09BC, 0,
2830     1, 0x0A33, 0x0A32, 0x0A3C, 0,
2831     1, 0x0A36, 0x0A38, 0x0A3C, 0,
2832     1, 0x0A59, 0x0A16, 0x0A3C, 0,
2833     1, 0x0A5A, 0x0A17, 0x0A3C, 0,
2834     1, 0x0A5B, 0x0A1C, 0x0A3C, 0,
2835     1, 0x0A5E, 0x0A2B, 0x0A3C, 0,
2836     1, 0x0B48, 0x0B47, 0x0B56, 0,
2837     1, 0x0B4B, 0x0B47, 0x0B3E, 0,
2838     1, 0x0B4C, 0x0B47, 0x0B57, 0,
2839     1, 0x0B5C, 0x0B21, 0x0B3C, 0,
2840     1, 0x0B5D, 0x0B22, 0x0B3C, 0,
2841     1, 0x0B94, 0x0B92, 0x0BD7, 0,
2842     1, 0x0BCA, 0x0BC6, 0x0BBE, 0,
2843     1, 0x0BCB, 0x0BC7, 0x0BBE, 0,
2844     1, 0x0BCC, 0x0BC6, 0x0BD7, 0,
2845     1, 0x0C48, 0x0C46, 0x0C56, 0,
2846     1, 0x0CC0, 0x0CBF, 0x0CD5, 0,
2847     1, 0x0CC7, 0x0CC6, 0x0CD5, 0,
2848     1, 0x0CC8, 0x0CC6, 0x0CD6, 0,
2849     1, 0x0CCA, 0x0CC6, 0x0CC2, 0,
2850     1, 0x0CCB, 0x0CCA, 0x0CD5, 0,
2851     1, 0x0D4A, 0x0D46, 0x0D3E, 0,
2852     1, 0x0D4B, 0x0D47, 0x0D3E, 0,
2853     1, 0x0D4C, 0x0D46, 0x0D57, 0,
2854     1, 0x0DDA, 0x0DD9, 0x0DCA, 0,
2855     1, 0x0DDC, 0x0DD9, 0x0DCF, 0,
2856     1, 0x0DDD, 0x0DDC, 0x0DCA, 0,
2857     1, 0x0DDE, 0x0DD9, 0x0DDF, 0,
2858     16, 0x0E33, 0x0E4D, 0x0E32, 0,
2859     16, 0x0EB3, 0x0ECD, 0x0EB2, 0,
2860     16, 0x0EDC, 0x0EAB, 0x0E99, 0,
2861     16, 0x0EDD, 0x0EAB, 0x0EA1, 0,
2862     3, 0x0F0C, 0x0F0B, 0,
2863     1, 0x0F43, 0x0F42, 0x0FB7, 0,
2864     1, 0x0F4D, 0x0F4C, 0x0FB7, 0,
2865     1, 0x0F52, 0x0F51, 0x0FB7, 0,
2866     1, 0x0F57, 0x0F56, 0x0FB7, 0,
2867     1, 0x0F5C, 0x0F5B, 0x0FB7, 0,
2868     1, 0x0F69, 0x0F40, 0x0FB5, 0,
2869     1, 0x0F73, 0x0F71, 0x0F72, 0,
2870     1, 0x0F75, 0x0F71, 0x0F74, 0,
2871     1, 0x0F76, 0x0FB2, 0x0F80, 0,
2872     16, 0x0F77, 0x0FB2, 0x0F81, 0,
2873     1, 0x0F78, 0x0FB3, 0x0F80, 0,
2874     16, 0x0F79, 0x0FB3, 0x0F81, 0,
2875     1, 0x0F81, 0x0F71, 0x0F80, 0,
2876     1, 0x0F93, 0x0F92, 0x0FB7, 0,
2877     1, 0x0F9D, 0x0F9C, 0x0FB7, 0,
2878     1, 0x0FA2, 0x0FA1, 0x0FB7, 0,
2879     1, 0x0FA7, 0x0FA6, 0x0FB7, 0,
2880     1, 0x0FAC, 0x0FAB, 0x0FB7, 0,
2881     1, 0x0FB9, 0x0F90, 0x0FB5, 0,
2882     1, 0x1026, 0x1025, 0x102E, 0,
2883     1, 0x1E00, 0x0041, 0x0325, 0,
2884     1, 0x1E01, 0x0061, 0x0325, 0,
2885     1, 0x1E02, 0x0042, 0x0307, 0,
2886     1, 0x1E03, 0x0062, 0x0307, 0,
2887     1, 0x1E04, 0x0042, 0x0323, 0,
2888     1, 0x1E05, 0x0062, 0x0323, 0,
2889     1, 0x1E06, 0x0042, 0x0331, 0,
2890     1, 0x1E07, 0x0062, 0x0331, 0,
2891     1, 0x1E08, 0x00C7, 0x0301, 0,
2892     1, 0x1E09, 0x00E7, 0x0301, 0,
2893     1, 0x1E0A, 0x0044, 0x0307, 0,
2894     1, 0x1E0B, 0x0064, 0x0307, 0,
2895     1, 0x1E0C, 0x0044, 0x0323, 0,
2896     1, 0x1E0D, 0x0064, 0x0323, 0,
2897     1, 0x1E0E, 0x0044, 0x0331, 0,
2898     1, 0x1E0F, 0x0064, 0x0331, 0,
2899     1, 0x1E10, 0x0044, 0x0327, 0,
2900     1, 0x1E11, 0x0064, 0x0327, 0,
2901     1, 0x1E12, 0x0044, 0x032D, 0,
2902     1, 0x1E13, 0x0064, 0x032D, 0,
2903     1, 0x1E14, 0x0112, 0x0300, 0,
2904     1, 0x1E15, 0x0113, 0x0300, 0,
2905     1, 0x1E16, 0x0112, 0x0301, 0,
2906     1, 0x1E17, 0x0113, 0x0301, 0,
2907     1, 0x1E18, 0x0045, 0x032D, 0,
2908     1, 0x1E19, 0x0065, 0x032D, 0,
2909     1, 0x1E1A, 0x0045, 0x0330, 0,
2910     1, 0x1E1B, 0x0065, 0x0330, 0,
2911     1, 0x1E1C, 0x0228, 0x0306, 0,
2912     1, 0x1E1D, 0x0229, 0x0306, 0,
2913     1, 0x1E1E, 0x0046, 0x0307, 0,
2914     1, 0x1E1F, 0x0066, 0x0307, 0,
2915     1, 0x1E20, 0x0047, 0x0304, 0,
2916     1, 0x1E21, 0x0067, 0x0304, 0,
2917     1, 0x1E22, 0x0048, 0x0307, 0,
2918     1, 0x1E23, 0x0068, 0x0307, 0,
2919     1, 0x1E24, 0x0048, 0x0323, 0,
2920     1, 0x1E25, 0x0068, 0x0323, 0,
2921     1, 0x1E26, 0x0048, 0x0308, 0,
2922     1, 0x1E27, 0x0068, 0x0308, 0,
2923     1, 0x1E28, 0x0048, 0x0327, 0,
2924     1, 0x1E29, 0x0068, 0x0327, 0,
2925     1, 0x1E2A, 0x0048, 0x032E, 0,
2926     1, 0x1E2B, 0x0068, 0x032E, 0,
2927     1, 0x1E2C, 0x0049, 0x0330, 0,
2928     1, 0x1E2D, 0x0069, 0x0330, 0,
2929     1, 0x1E2E, 0x00CF, 0x0301, 0,
2930     1, 0x1E2F, 0x00EF, 0x0301, 0,
2931     1, 0x1E30, 0x004B, 0x0301, 0,
2932     1, 0x1E31, 0x006B, 0x0301, 0,
2933     1, 0x1E32, 0x004B, 0x0323, 0,
2934     1, 0x1E33, 0x006B, 0x0323, 0,
2935     1, 0x1E34, 0x004B, 0x0331, 0,
2936     1, 0x1E35, 0x006B, 0x0331, 0,
2937     1, 0x1E36, 0x004C, 0x0323, 0,
2938     1, 0x1E37, 0x006C, 0x0323, 0,
2939     1, 0x1E38, 0x1E36, 0x0304, 0,
2940     1, 0x1E39, 0x1E37, 0x0304, 0,
2941     1, 0x1E3A, 0x004C, 0x0331, 0,
2942     1, 0x1E3B, 0x006C, 0x0331, 0,
2943     1, 0x1E3C, 0x004C, 0x032D, 0,
2944     1, 0x1E3D, 0x006C, 0x032D, 0,
2945     1, 0x1E3E, 0x004D, 0x0301, 0,
2946     1, 0x1E3F, 0x006D, 0x0301, 0,
2947     1, 0x1E40, 0x004D, 0x0307, 0,
2948     1, 0x1E41, 0x006D, 0x0307, 0,
2949     1, 0x1E42, 0x004D, 0x0323, 0,
2950     1, 0x1E43, 0x006D, 0x0323, 0,
2951     1, 0x1E44, 0x004E, 0x0307, 0,
2952     1, 0x1E45, 0x006E, 0x0307, 0,
2953     1, 0x1E46, 0x004E, 0x0323, 0,
2954     1, 0x1E47, 0x006E, 0x0323, 0,
2955     1, 0x1E48, 0x004E, 0x0331, 0,
2956     1, 0x1E49, 0x006E, 0x0331, 0,
2957     1, 0x1E4A, 0x004E, 0x032D, 0,
2958     1, 0x1E4B, 0x006E, 0x032D, 0,
2959     1, 0x1E4C, 0x00D5, 0x0301, 0,
2960     1, 0x1E4D, 0x00F5, 0x0301, 0,
2961     1, 0x1E4E, 0x00D5, 0x0308, 0,
2962     1, 0x1E4F, 0x00F5, 0x0308, 0,
2963     1, 0x1E50, 0x014C, 0x0300, 0,
2964     1, 0x1E51, 0x014D, 0x0300, 0,
2965     1, 0x1E52, 0x014C, 0x0301, 0,
2966     1, 0x1E53, 0x014D, 0x0301, 0,
2967     1, 0x1E54, 0x0050, 0x0301, 0,
2968     1, 0x1E55, 0x0070, 0x0301, 0,
2969     1, 0x1E56, 0x0050, 0x0307, 0,
2970     1, 0x1E57, 0x0070, 0x0307, 0,
2971     1, 0x1E58, 0x0052, 0x0307, 0,
2972     1, 0x1E59, 0x0072, 0x0307, 0,
2973     1, 0x1E5A, 0x0052, 0x0323, 0,
2974     1, 0x1E5B, 0x0072, 0x0323, 0,
2975     1, 0x1E5C, 0x1E5A, 0x0304, 0,
2976     1, 0x1E5D, 0x1E5B, 0x0304, 0,
2977     1, 0x1E5E, 0x0052, 0x0331, 0,
2978     1, 0x1E5F, 0x0072, 0x0331, 0,
2979     1, 0x1E60, 0x0053, 0x0307, 0,
2980     1, 0x1E61, 0x0073, 0x0307, 0,
2981     1, 0x1E62, 0x0053, 0x0323, 0,
2982     1, 0x1E63, 0x0073, 0x0323, 0,
2983     1, 0x1E64, 0x015A, 0x0307, 0,
2984     1, 0x1E65, 0x015B, 0x0307, 0,
2985     1, 0x1E66, 0x0160, 0x0307, 0,
2986     1, 0x1E67, 0x0161, 0x0307, 0,
2987     1, 0x1E68, 0x1E62, 0x0307, 0,
2988     1, 0x1E69, 0x1E63, 0x0307, 0,
2989     1, 0x1E6A, 0x0054, 0x0307, 0,
2990     1, 0x1E6B, 0x0074, 0x0307, 0,
2991     1, 0x1E6C, 0x0054, 0x0323, 0,
2992     1, 0x1E6D, 0x0074, 0x0323, 0,
2993     1, 0x1E6E, 0x0054, 0x0331, 0,
2994     1, 0x1E6F, 0x0074, 0x0331, 0,
2995     1, 0x1E70, 0x0054, 0x032D, 0,
2996     1, 0x1E71, 0x0074, 0x032D, 0,
2997     1, 0x1E72, 0x0055, 0x0324, 0,
2998     1, 0x1E73, 0x0075, 0x0324, 0,
2999     1, 0x1E74, 0x0055, 0x0330, 0,
3000     1, 0x1E75, 0x0075, 0x0330, 0,
3001     1, 0x1E76, 0x0055, 0x032D, 0,
3002     1, 0x1E77, 0x0075, 0x032D, 0,
3003     1, 0x1E78, 0x0168, 0x0301, 0,
3004     1, 0x1E79, 0x0169, 0x0301, 0,
3005     1, 0x1E7A, 0x016A, 0x0308, 0,
3006     1, 0x1E7B, 0x016B, 0x0308, 0,
3007     1, 0x1E7C, 0x0056, 0x0303, 0,
3008     1, 0x1E7D, 0x0076, 0x0303, 0,
3009     1, 0x1E7E, 0x0056, 0x0323, 0,
3010     1, 0x1E7F, 0x0076, 0x0323, 0,
3011     1, 0x1E80, 0x0057, 0x0300, 0,
3012     1, 0x1E81, 0x0077, 0x0300, 0,
3013     1, 0x1E82, 0x0057, 0x0301, 0,
3014     1, 0x1E83, 0x0077, 0x0301, 0,
3015     1, 0x1E84, 0x0057, 0x0308, 0,
3016     1, 0x1E85, 0x0077, 0x0308, 0,
3017     1, 0x1E86, 0x0057, 0x0307, 0,
3018     1, 0x1E87, 0x0077, 0x0307, 0,
3019     1, 0x1E88, 0x0057, 0x0323, 0,
3020     1, 0x1E89, 0x0077, 0x0323, 0,
3021     1, 0x1E8A, 0x0058, 0x0307, 0,
3022     1, 0x1E8B, 0x0078, 0x0307, 0,
3023     1, 0x1E8C, 0x0058, 0x0308, 0,
3024     1, 0x1E8D, 0x0078, 0x0308, 0,
3025     1, 0x1E8E, 0x0059, 0x0307, 0,
3026     1, 0x1E8F, 0x0079, 0x0307, 0,
3027     1, 0x1E90, 0x005A, 0x0302, 0,
3028     1, 0x1E91, 0x007A, 0x0302, 0,
3029     1, 0x1E92, 0x005A, 0x0323, 0,
3030     1, 0x1E93, 0x007A, 0x0323, 0,
3031     1, 0x1E94, 0x005A, 0x0331, 0,
3032     1, 0x1E95, 0x007A, 0x0331, 0,
3033     1, 0x1E96, 0x0068, 0x0331, 0,
3034     1, 0x1E97, 0x0074, 0x0308, 0,
3035     1, 0x1E98, 0x0077, 0x030A, 0,
3036     1, 0x1E99, 0x0079, 0x030A, 0,
3037     16, 0x1E9A, 0x0061, 0x02BE, 0,
3038     1, 0x1E9B, 0x017F, 0x0307, 0,
3039     1, 0x1EA0, 0x0041, 0x0323, 0,
3040     1, 0x1EA1, 0x0061, 0x0323, 0,
3041     1, 0x1EA2, 0x0041, 0x0309, 0,
3042     1, 0x1EA3, 0x0061, 0x0309, 0,
3043     1, 0x1EA4, 0x00C2, 0x0301, 0,
3044     1, 0x1EA5, 0x00E2, 0x0301, 0,
3045     1, 0x1EA6, 0x00C2, 0x0300, 0,
3046     1, 0x1EA7, 0x00E2, 0x0300, 0,
3047     1, 0x1EA8, 0x00C2, 0x0309, 0,
3048     1, 0x1EA9, 0x00E2, 0x0309, 0,
3049     1, 0x1EAA, 0x00C2, 0x0303, 0,
3050     1, 0x1EAB, 0x00E2, 0x0303, 0,
3051     1, 0x1EAC, 0x1EA0, 0x0302, 0,
3052     1, 0x1EAD, 0x1EA1, 0x0302, 0,
3053     1, 0x1EAE, 0x0102, 0x0301, 0,
3054     1, 0x1EAF, 0x0103, 0x0301, 0,
3055     1, 0x1EB0, 0x0102, 0x0300, 0,
3056     1, 0x1EB1, 0x0103, 0x0300, 0,
3057     1, 0x1EB2, 0x0102, 0x0309, 0,
3058     1, 0x1EB3, 0x0103, 0x0309, 0,
3059     1, 0x1EB4, 0x0102, 0x0303, 0,
3060     1, 0x1EB5, 0x0103, 0x0303, 0,
3061     1, 0x1EB6, 0x1EA0, 0x0306, 0,
3062     1, 0x1EB7, 0x1EA1, 0x0306, 0,
3063     1, 0x1EB8, 0x0045, 0x0323, 0,
3064     1, 0x1EB9, 0x0065, 0x0323, 0,
3065     1, 0x1EBA, 0x0045, 0x0309, 0,
3066     1, 0x1EBB, 0x0065, 0x0309, 0,
3067     1, 0x1EBC, 0x0045, 0x0303, 0,
3068     1, 0x1EBD, 0x0065, 0x0303, 0,
3069     1, 0x1EBE, 0x00CA, 0x0301, 0,
3070     1, 0x1EBF, 0x00EA, 0x0301, 0,
3071     1, 0x1EC0, 0x00CA, 0x0300, 0,
3072     1, 0x1EC1, 0x00EA, 0x0300, 0,
3073     1, 0x1EC2, 0x00CA, 0x0309, 0,
3074     1, 0x1EC3, 0x00EA, 0x0309, 0,
3075     1, 0x1EC4, 0x00CA, 0x0303, 0,
3076     1, 0x1EC5, 0x00EA, 0x0303, 0,
3077     1, 0x1EC6, 0x1EB8, 0x0302, 0,
3078     1, 0x1EC7, 0x1EB9, 0x0302, 0,
3079     1, 0x1EC8, 0x0049, 0x0309, 0,
3080     1, 0x1EC9, 0x0069, 0x0309, 0,
3081     1, 0x1ECA, 0x0049, 0x0323, 0,
3082     1, 0x1ECB, 0x0069, 0x0323, 0,
3083     1, 0x1ECC, 0x004F, 0x0323, 0,
3084     1, 0x1ECD, 0x006F, 0x0323, 0,
3085     1, 0x1ECE, 0x004F, 0x0309, 0,
3086     1, 0x1ECF, 0x006F, 0x0309, 0,
3087     1, 0x1ED0, 0x00D4, 0x0301, 0,
3088     1, 0x1ED1, 0x00F4, 0x0301, 0,
3089     1, 0x1ED2, 0x00D4, 0x0300, 0,
3090     1, 0x1ED3, 0x00F4, 0x0300, 0,
3091     1, 0x1ED4, 0x00D4, 0x0309, 0,
3092     1, 0x1ED5, 0x00F4, 0x0309, 0,
3093     1, 0x1ED6, 0x00D4, 0x0303, 0,
3094     1, 0x1ED7, 0x00F4, 0x0303, 0,
3095     1, 0x1ED8, 0x1ECC, 0x0302, 0,
3096     1, 0x1ED9, 0x1ECD, 0x0302, 0,
3097     1, 0x1EDA, 0x01A0, 0x0301, 0,
3098     1, 0x1EDB, 0x01A1, 0x0301, 0,
3099     1, 0x1EDC, 0x01A0, 0x0300, 0,
3100     1, 0x1EDD, 0x01A1, 0x0300, 0,
3101     1, 0x1EDE, 0x01A0, 0x0309, 0,
3102     1, 0x1EDF, 0x01A1, 0x0309, 0,
3103     1, 0x1EE0, 0x01A0, 0x0303, 0,
3104     1, 0x1EE1, 0x01A1, 0x0303, 0,
3105     1, 0x1EE2, 0x01A0, 0x0323, 0,
3106     1, 0x1EE3, 0x01A1, 0x0323, 0,
3107     1, 0x1EE4, 0x0055, 0x0323, 0,
3108     1, 0x1EE5, 0x0075, 0x0323, 0,
3109     1, 0x1EE6, 0x0055, 0x0309, 0,
3110     1, 0x1EE7, 0x0075, 0x0309, 0,
3111     1, 0x1EE8, 0x01AF, 0x0301, 0,
3112     1, 0x1EE9, 0x01B0, 0x0301, 0,
3113     1, 0x1EEA, 0x01AF, 0x0300, 0,
3114     1, 0x1EEB, 0x01B0, 0x0300, 0,
3115     1, 0x1EEC, 0x01AF, 0x0309, 0,
3116     1, 0x1EED, 0x01B0, 0x0309, 0,
3117     1, 0x1EEE, 0x01AF, 0x0303, 0,
3118     1, 0x1EEF, 0x01B0, 0x0303, 0,
3119     1, 0x1EF0, 0x01AF, 0x0323, 0,
3120     1, 0x1EF1, 0x01B0, 0x0323, 0,
3121     1, 0x1EF2, 0x0059, 0x0300, 0,
3122     1, 0x1EF3, 0x0079, 0x0300, 0,
3123     1, 0x1EF4, 0x0059, 0x0323, 0,
3124     1, 0x1EF5, 0x0079, 0x0323, 0,
3125     1, 0x1EF6, 0x0059, 0x0309, 0,
3126     1, 0x1EF7, 0x0079, 0x0309, 0,
3127     1, 0x1EF8, 0x0059, 0x0303, 0,
3128     1, 0x1EF9, 0x0079, 0x0303, 0,
3129     1, 0x1F00, 0x03B1, 0x0313, 0,
3130     1, 0x1F01, 0x03B1, 0x0314, 0,
3131     1, 0x1F02, 0x1F00, 0x0300, 0,
3132     1, 0x1F03, 0x1F01, 0x0300, 0,
3133     1, 0x1F04, 0x1F00, 0x0301, 0,
3134     1, 0x1F05, 0x1F01, 0x0301, 0,
3135     1, 0x1F06, 0x1F00, 0x0342, 0,
3136     1, 0x1F07, 0x1F01, 0x0342, 0,
3137     1, 0x1F08, 0x0391, 0x0313, 0,
3138     1, 0x1F09, 0x0391, 0x0314, 0,
3139     1, 0x1F0A, 0x1F08, 0x0300, 0,
3140     1, 0x1F0B, 0x1F09, 0x0300, 0,
3141     1, 0x1F0C, 0x1F08, 0x0301, 0,
3142     1, 0x1F0D, 0x1F09, 0x0301, 0,
3143     1, 0x1F0E, 0x1F08, 0x0342, 0,
3144     1, 0x1F0F, 0x1F09, 0x0342, 0,
3145     1, 0x1F10, 0x03B5, 0x0313, 0,
3146     1, 0x1F11, 0x03B5, 0x0314, 0,
3147     1, 0x1F12, 0x1F10, 0x0300, 0,
3148     1, 0x1F13, 0x1F11, 0x0300, 0,
3149     1, 0x1F14, 0x1F10, 0x0301, 0,
3150     1, 0x1F15, 0x1F11, 0x0301, 0,
3151     1, 0x1F18, 0x0395, 0x0313, 0,
3152     1, 0x1F19, 0x0395, 0x0314, 0,
3153     1, 0x1F1A, 0x1F18, 0x0300, 0,
3154     1, 0x1F1B, 0x1F19, 0x0300, 0,
3155     1, 0x1F1C, 0x1F18, 0x0301, 0,
3156     1, 0x1F1D, 0x1F19, 0x0301, 0,
3157     1, 0x1F20, 0x03B7, 0x0313, 0,
3158     1, 0x1F21, 0x03B7, 0x0314, 0,
3159     1, 0x1F22, 0x1F20, 0x0300, 0,
3160     1, 0x1F23, 0x1F21, 0x0300, 0,
3161     1, 0x1F24, 0x1F20, 0x0301, 0,
3162     1, 0x1F25, 0x1F21, 0x0301, 0,
3163     1, 0x1F26, 0x1F20, 0x0342, 0,
3164     1, 0x1F27, 0x1F21, 0x0342, 0,
3165     1, 0x1F28, 0x0397, 0x0313, 0,
3166     1, 0x1F29, 0x0397, 0x0314, 0,
3167     1, 0x1F2A, 0x1F28, 0x0300, 0,
3168     1, 0x1F2B, 0x1F29, 0x0300, 0,
3169     1, 0x1F2C, 0x1F28, 0x0301, 0,
3170     1, 0x1F2D, 0x1F29, 0x0301, 0,
3171     1, 0x1F2E, 0x1F28, 0x0342, 0,
3172     1, 0x1F2F, 0x1F29, 0x0342, 0,
3173     1, 0x1F30, 0x03B9, 0x0313, 0,
3174     1, 0x1F31, 0x03B9, 0x0314, 0,
3175     1, 0x1F32, 0x1F30, 0x0300, 0,
3176     1, 0x1F33, 0x1F31, 0x0300, 0,
3177     1, 0x1F34, 0x1F30, 0x0301, 0,
3178     1, 0x1F35, 0x1F31, 0x0301, 0,
3179     1, 0x1F36, 0x1F30, 0x0342, 0,
3180     1, 0x1F37, 0x1F31, 0x0342, 0,
3181     1, 0x1F38, 0x0399, 0x0313, 0,
3182     1, 0x1F39, 0x0399, 0x0314, 0,
3183     1, 0x1F3A, 0x1F38, 0x0300, 0,
3184     1, 0x1F3B, 0x1F39, 0x0300, 0,
3185     1, 0x1F3C, 0x1F38, 0x0301, 0,
3186     1, 0x1F3D, 0x1F39, 0x0301, 0,
3187     1, 0x1F3E, 0x1F38, 0x0342, 0,
3188     1, 0x1F3F, 0x1F39, 0x0342, 0,
3189     1, 0x1F40, 0x03BF, 0x0313, 0,
3190     1, 0x1F41, 0x03BF, 0x0314, 0,
3191     1, 0x1F42, 0x1F40, 0x0300, 0,
3192     1, 0x1F43, 0x1F41, 0x0300, 0,
3193     1, 0x1F44, 0x1F40, 0x0301, 0,
3194     1, 0x1F45, 0x1F41, 0x0301, 0,
3195     1, 0x1F48, 0x039F, 0x0313, 0,
3196     1, 0x1F49, 0x039F, 0x0314, 0,
3197     1, 0x1F4A, 0x1F48, 0x0300, 0,
3198     1, 0x1F4B, 0x1F49, 0x0300, 0,
3199     1, 0x1F4C, 0x1F48, 0x0301, 0,
3200     1, 0x1F4D, 0x1F49, 0x0301, 0,
3201     1, 0x1F50, 0x03C5, 0x0313, 0,
3202     1, 0x1F51, 0x03C5, 0x0314, 0,
3203     1, 0x1F52, 0x1F50, 0x0300, 0,
3204     1, 0x1F53, 0x1F51, 0x0300, 0,
3205     1, 0x1F54, 0x1F50, 0x0301, 0,
3206     1, 0x1F55, 0x1F51, 0x0301, 0,
3207     1, 0x1F56, 0x1F50, 0x0342, 0,
3208     1, 0x1F57, 0x1F51, 0x0342, 0,
3209     1, 0x1F59, 0x03A5, 0x0314, 0,
3210     1, 0x1F5B, 0x1F59, 0x0300, 0,
3211     1, 0x1F5D, 0x1F59, 0x0301, 0,
3212     1, 0x1F5F, 0x1F59, 0x0342, 0,
3213     1, 0x1F60, 0x03C9, 0x0313, 0,
3214     1, 0x1F61, 0x03C9, 0x0314, 0,
3215     1, 0x1F62, 0x1F60, 0x0300, 0,
3216     1, 0x1F63, 0x1F61, 0x0300, 0,
3217     1, 0x1F64, 0x1F60, 0x0301, 0,
3218     1, 0x1F65, 0x1F61, 0x0301, 0,
3219     1, 0x1F66, 0x1F60, 0x0342, 0,
3220     1, 0x1F67, 0x1F61, 0x0342, 0,
3221     1, 0x1F68, 0x03A9, 0x0313, 0,
3222     1, 0x1F69, 0x03A9, 0x0314, 0,
3223     1, 0x1F6A, 0x1F68, 0x0300, 0,
3224     1, 0x1F6B, 0x1F69, 0x0300, 0,
3225     1, 0x1F6C, 0x1F68, 0x0301, 0,
3226     1, 0x1F6D, 0x1F69, 0x0301, 0,
3227     1, 0x1F6E, 0x1F68, 0x0342, 0,
3228     1, 0x1F6F, 0x1F69, 0x0342, 0,
3229     1, 0x1F70, 0x03B1, 0x0300, 0,
3230     1, 0x1F71, 0x03AC, 0,
3231     1, 0x1F72, 0x03B5, 0x0300, 0,
3232     1, 0x1F73, 0x03AD, 0,
3233     1, 0x1F74, 0x03B7, 0x0300, 0,
3234     1, 0x1F75, 0x03AE, 0,
3235     1, 0x1F76, 0x03B9, 0x0300, 0,
3236     1, 0x1F77, 0x03AF, 0,
3237     1, 0x1F78, 0x03BF, 0x0300, 0,
3238     1, 0x1F79, 0x03CC, 0,
3239     1, 0x1F7A, 0x03C5, 0x0300, 0,
3240     1, 0x1F7B, 0x03CD, 0,
3241     1, 0x1F7C, 0x03C9, 0x0300, 0,
3242     1, 0x1F7D, 0x03CE, 0,
3243     1, 0x1F80, 0x1F00, 0x0345, 0,
3244     1, 0x1F81, 0x1F01, 0x0345, 0,
3245     1, 0x1F82, 0x1F02, 0x0345, 0,
3246     1, 0x1F83, 0x1F03, 0x0345, 0,
3247     1, 0x1F84, 0x1F04, 0x0345, 0,
3248     1, 0x1F85, 0x1F05, 0x0345, 0,
3249     1, 0x1F86, 0x1F06, 0x0345, 0,
3250     1, 0x1F87, 0x1F07, 0x0345, 0,
3251     1, 0x1F88, 0x1F08, 0x0345, 0,
3252     1, 0x1F89, 0x1F09, 0x0345, 0,
3253     1, 0x1F8A, 0x1F0A, 0x0345, 0,
3254     1, 0x1F8B, 0x1F0B, 0x0345, 0,
3255     1, 0x1F8C, 0x1F0C, 0x0345, 0,
3256     1, 0x1F8D, 0x1F0D, 0x0345, 0,
3257     1, 0x1F8E, 0x1F0E, 0x0345, 0,
3258     1, 0x1F8F, 0x1F0F, 0x0345, 0,
3259     1, 0x1F90, 0x1F20, 0x0345, 0,
3260     1, 0x1F91, 0x1F21, 0x0345, 0,
3261     1, 0x1F92, 0x1F22, 0x0345, 0,
3262     1, 0x1F93, 0x1F23, 0x0345, 0,
3263     1, 0x1F94, 0x1F24, 0x0345, 0,
3264     1, 0x1F95, 0x1F25, 0x0345, 0,
3265     1, 0x1F96, 0x1F26, 0x0345, 0,
3266     1, 0x1F97, 0x1F27, 0x0345, 0,
3267     1, 0x1F98, 0x1F28, 0x0345, 0,
3268     1, 0x1F99, 0x1F29, 0x0345, 0,
3269     1, 0x1F9A, 0x1F2A, 0x0345, 0,
3270     1, 0x1F9B, 0x1F2B, 0x0345, 0,
3271     1, 0x1F9C, 0x1F2C, 0x0345, 0,
3272     1, 0x1F9D, 0x1F2D, 0x0345, 0,
3273     1, 0x1F9E, 0x1F2E, 0x0345, 0,
3274     1, 0x1F9F, 0x1F2F, 0x0345, 0,
3275     1, 0x1FA0, 0x1F60, 0x0345, 0,
3276     1, 0x1FA1, 0x1F61, 0x0345, 0,
3277     1, 0x1FA2, 0x1F62, 0x0345, 0,
3278     1, 0x1FA3, 0x1F63, 0x0345, 0,
3279     1, 0x1FA4, 0x1F64, 0x0345, 0,
3280     1, 0x1FA5, 0x1F65, 0x0345, 0,
3281     1, 0x1FA6, 0x1F66, 0x0345, 0,
3282     1, 0x1FA7, 0x1F67, 0x0345, 0,
3283     1, 0x1FA8, 0x1F68, 0x0345, 0,
3284     1, 0x1FA9, 0x1F69, 0x0345, 0,
3285     1, 0x1FAA, 0x1F6A, 0x0345, 0,
3286     1, 0x1FAB, 0x1F6B, 0x0345, 0,
3287     1, 0x1FAC, 0x1F6C, 0x0345, 0,
3288     1, 0x1FAD, 0x1F6D, 0x0345, 0,
3289     1, 0x1FAE, 0x1F6E, 0x0345, 0,
3290     1, 0x1FAF, 0x1F6F, 0x0345, 0,
3291     1, 0x1FB0, 0x03B1, 0x0306, 0,
3292     1, 0x1FB1, 0x03B1, 0x0304, 0,
3293     1, 0x1FB2, 0x1F70, 0x0345, 0,
3294     1, 0x1FB3, 0x03B1, 0x0345, 0,
3295     1, 0x1FB4, 0x03AC, 0x0345, 0,
3296     1, 0x1FB6, 0x03B1, 0x0342, 0,
3297     1, 0x1FB7, 0x1FB6, 0x0345, 0,
3298     1, 0x1FB8, 0x0391, 0x0306, 0,
3299     1, 0x1FB9, 0x0391, 0x0304, 0,
3300     1, 0x1FBA, 0x0391, 0x0300, 0,
3301     1, 0x1FBB, 0x0386, 0,
3302     1, 0x1FBC, 0x0391, 0x0345, 0,
3303     16, 0x1FBD, 0x0020, 0x0313, 0,
3304     1, 0x1FBE, 0x03B9, 0,
3305     16, 0x1FBF, 0x0020, 0x0313, 0,
3306     16, 0x1FC0, 0x0020, 0x0342, 0,
3307     1, 0x1FC1, 0x00A8, 0x0342, 0,
3308     1, 0x1FC2, 0x1F74, 0x0345, 0,
3309     1, 0x1FC3, 0x03B7, 0x0345, 0,
3310     1, 0x1FC4, 0x03AE, 0x0345, 0,
3311     1, 0x1FC6, 0x03B7, 0x0342, 0,
3312     1, 0x1FC7, 0x1FC6, 0x0345, 0,
3313     1, 0x1FC8, 0x0395, 0x0300, 0,
3314     1, 0x1FC9, 0x0388, 0,
3315     1, 0x1FCA, 0x0397, 0x0300, 0,
3316     1, 0x1FCB, 0x0389, 0,
3317     1, 0x1FCC, 0x0397, 0x0345, 0,
3318     1, 0x1FCD, 0x1FBF, 0x0300, 0,
3319     1, 0x1FCE, 0x1FBF, 0x0301, 0,
3320     1, 0x1FCF, 0x1FBF, 0x0342, 0,
3321     1, 0x1FD0, 0x03B9, 0x0306, 0,
3322     1, 0x1FD1, 0x03B9, 0x0304, 0,
3323     1, 0x1FD2, 0x03CA, 0x0300, 0,
3324     1, 0x1FD3, 0x0390, 0,
3325     1, 0x1FD6, 0x03B9, 0x0342, 0,
3326     1, 0x1FD7, 0x03CA, 0x0342, 0,
3327     1, 0x1FD8, 0x0399, 0x0306, 0,
3328     1, 0x1FD9, 0x0399, 0x0304, 0,
3329     1, 0x1FDA, 0x0399, 0x0300, 0,
3330     1, 0x1FDB, 0x038A, 0,
3331     1, 0x1FDD, 0x1FFE, 0x0300, 0,
3332     1, 0x1FDE, 0x1FFE, 0x0301, 0,
3333     1, 0x1FDF, 0x1FFE, 0x0342, 0,
3334     1, 0x1FE0, 0x03C5, 0x0306, 0,
3335     1, 0x1FE1, 0x03C5, 0x0304, 0,
3336     1, 0x1FE2, 0x03CB, 0x0300, 0,
3337     1, 0x1FE3, 0x03B0, 0,
3338     1, 0x1FE4, 0x03C1, 0x0313, 0,
3339     1, 0x1FE5, 0x03C1, 0x0314, 0,
3340     1, 0x1FE6, 0x03C5, 0x0342, 0,
3341     1, 0x1FE7, 0x03CB, 0x0342, 0,
3342     1, 0x1FE8, 0x03A5, 0x0306, 0,
3343     1, 0x1FE9, 0x03A5, 0x0304, 0,
3344     1, 0x1FEA, 0x03A5, 0x0300, 0,
3345     1, 0x1FEB, 0x038E, 0,
3346     1, 0x1FEC, 0x03A1, 0x0314, 0,
3347     1, 0x1FED, 0x00A8, 0x0300, 0,
3348     1, 0x1FEE, 0x0385, 0,
3349     1, 0x1FEF, 0x0060, 0,
3350     1, 0x1FF2, 0x1F7C, 0x0345, 0,
3351     1, 0x1FF3, 0x03C9, 0x0345, 0,
3352     1, 0x1FF4, 0x03CE, 0x0345, 0,
3353     1, 0x1FF6, 0x03C9, 0x0342, 0,
3354     1, 0x1FF7, 0x1FF6, 0x0345, 0,
3355     1, 0x1FF8, 0x039F, 0x0300, 0,
3356     1, 0x1FF9, 0x038C, 0,
3357     1, 0x1FFA, 0x03A9, 0x0300, 0,
3358     1, 0x1FFB, 0x038F, 0,
3359     1, 0x1FFC, 0x03A9, 0x0345, 0,
3360     1, 0x1FFD, 0x00B4, 0,
3361     16, 0x1FFE, 0x0020, 0x0314, 0,
3362     1, 0x2000, 0x2002, 0,
3363     1, 0x2001, 0x2003, 0,
3364     16, 0x2002, 0x0020, 0,
3365     16, 0x2003, 0x0020, 0,
3366     16, 0x2004, 0x0020, 0,
3367     16, 0x2005, 0x0020, 0,
3368     16, 0x2006, 0x0020, 0,
3369     3, 0x2007, 0x0020, 0,
3370     16, 0x2008, 0x0020, 0,
3371     16, 0x2009, 0x0020, 0,
3372     16, 0x200A, 0x0020, 0,
3373     3, 0x2011, 0x2010, 0,
3374     16, 0x2017, 0x0020, 0x0333, 0,
3375     16, 0x2024, 0x002E, 0,
3376     16, 0x2025, 0x002E, 0x002E, 0,
3377     16, 0x2026, 0x002E, 0x002E, 0x002E, 0,
3378     3, 0x202F, 0x0020, 0,
3379     16, 0x2033, 0x2032, 0x2032, 0,
3380     16, 0x2034, 0x2032, 0x2032, 0x2032, 0,
3381     16, 0x2036, 0x2035, 0x2035, 0,
3382     16, 0x2037, 0x2035, 0x2035, 0x2035, 0,
3383     16, 0x203C, 0x0021, 0x0021, 0,
3384     16, 0x203E, 0x0020, 0x0305, 0,
3385     16, 0x2048, 0x003F, 0x0021, 0,
3386     16, 0x2049, 0x0021, 0x003F, 0,
3387     9, 0x2070, 0x0030, 0,
3388     9, 0x2074, 0x0034, 0,
3389     9, 0x2075, 0x0035, 0,
3390     9, 0x2076, 0x0036, 0,
3391     9, 0x2077, 0x0037, 0,
3392     9, 0x2078, 0x0038, 0,
3393     9, 0x2079, 0x0039, 0,
3394     9, 0x207A, 0x002B, 0,
3395     9, 0x207B, 0x2212, 0,
3396     9, 0x207C, 0x003D, 0,
3397     9, 0x207D, 0x0028, 0,
3398     9, 0x207E, 0x0029, 0,
3399     9, 0x207F, 0x006E, 0,
3400     10, 0x2080, 0x0030, 0,
3401     10, 0x2081, 0x0031, 0,
3402     10, 0x2082, 0x0032, 0,
3403     10, 0x2083, 0x0033, 0,
3404     10, 0x2084, 0x0034, 0,
3405     10, 0x2085, 0x0035, 0,
3406     10, 0x2086, 0x0036, 0,
3407     10, 0x2087, 0x0037, 0,
3408     10, 0x2088, 0x0038, 0,
3409     10, 0x2089, 0x0039, 0,
3410     10, 0x208A, 0x002B, 0,
3411     10, 0x208B, 0x2212, 0,
3412     10, 0x208C, 0x003D, 0,
3413     10, 0x208D, 0x0028, 0,
3414     10, 0x208E, 0x0029, 0,
3415     16, 0x20A8, 0x0052, 0x0073, 0,
3416     16, 0x2100, 0x0061, 0x002F, 0x0063, 0,
3417     16, 0x2101, 0x0061, 0x002F, 0x0073, 0,
3418     2, 0x2102, 0x0043, 0,
3419     16, 0x2103, 0x00B0, 0x0043, 0,
3420     16, 0x2105, 0x0063, 0x002F, 0x006F, 0,
3421     16, 0x2106, 0x0063, 0x002F, 0x0075, 0,
3422     16, 0x2107, 0x0190, 0,
3423     16, 0x2109, 0x00B0, 0x0046, 0,
3424     2, 0x210A, 0x0067, 0,
3425     2, 0x210B, 0x0048, 0,
3426     2, 0x210C, 0x0048, 0,
3427     2, 0x210D, 0x0048, 0,
3428     2, 0x210E, 0x0068, 0,
3429     2, 0x210F, 0x0127, 0,
3430     2, 0x2110, 0x0049, 0,
3431     2, 0x2111, 0x0049, 0,
3432     2, 0x2112, 0x004C, 0,
3433     2, 0x2113, 0x006C, 0,
3434     2, 0x2115, 0x004E, 0,
3435     16, 0x2116, 0x004E, 0x006F, 0,
3436     2, 0x2119, 0x0050, 0,
3437     2, 0x211A, 0x0051, 0,
3438     2, 0x211B, 0x0052, 0,
3439     2, 0x211C, 0x0052, 0,
3440     2, 0x211D, 0x0052, 0,
3441     9, 0x2120, 0x0053, 0x004D, 0,
3442     16, 0x2121, 0x0054, 0x0045, 0x004C, 0,
3443     9, 0x2122, 0x0054, 0x004D, 0,
3444     2, 0x2124, 0x005A, 0,
3445     1, 0x2126, 0x03A9, 0,
3446     2, 0x2128, 0x005A, 0,
3447     1, 0x212A, 0x004B, 0,
3448     1, 0x212B, 0x00C5, 0,
3449     2, 0x212C, 0x0042, 0,
3450     2, 0x212D, 0x0043, 0,
3451     2, 0x212F, 0x0065, 0,
3452     2, 0x2130, 0x0045, 0,
3453     2, 0x2131, 0x0046, 0,
3454     2, 0x2133, 0x004D, 0,
3455     2, 0x2134, 0x006F, 0,
3456     16, 0x2135, 0x05D0, 0,
3457     16, 0x2136, 0x05D1, 0,
3458     16, 0x2137, 0x05D2, 0,
3459     16, 0x2138, 0x05D3, 0,
3460     2, 0x2139, 0x0069, 0,
3461     17, 0x2153, 0x0031, 0x2044, 0x0033, 0,
3462     17, 0x2154, 0x0032, 0x2044, 0x0033, 0,
3463     17, 0x2155, 0x0031, 0x2044, 0x0035, 0,
3464     17, 0x2156, 0x0032, 0x2044, 0x0035, 0,
3465     17, 0x2157, 0x0033, 0x2044, 0x0035, 0,
3466     17, 0x2158, 0x0034, 0x2044, 0x0035, 0,
3467     17, 0x2159, 0x0031, 0x2044, 0x0036, 0,
3468     17, 0x215A, 0x0035, 0x2044, 0x0036, 0,
3469     17, 0x215B, 0x0031, 0x2044, 0x0038, 0,
3470     17, 0x215C, 0x0033, 0x2044, 0x0038, 0,
3471     17, 0x215D, 0x0035, 0x2044, 0x0038, 0,
3472     17, 0x215E, 0x0037, 0x2044, 0x0038, 0,
3473     17, 0x215F, 0x0031, 0x2044, 0,
3474     16, 0x2160, 0x0049, 0,
3475     16, 0x2161, 0x0049, 0x0049, 0,
3476     16, 0x2162, 0x0049, 0x0049, 0x0049, 0,
3477     16, 0x2163, 0x0049, 0x0056, 0,
3478     16, 0x2164, 0x0056, 0,
3479     16, 0x2165, 0x0056, 0x0049, 0,
3480     16, 0x2166, 0x0056, 0x0049, 0x0049, 0,
3481     16, 0x2167, 0x0056, 0x0049, 0x0049, 0x0049, 0,
3482     16, 0x2168, 0x0049, 0x0058, 0,
3483     16, 0x2169, 0x0058, 0,
3484     16, 0x216A, 0x0058, 0x0049, 0,
3485     16, 0x216B, 0x0058, 0x0049, 0x0049, 0,
3486     16, 0x216C, 0x004C, 0,
3487     16, 0x216D, 0x0043, 0,
3488     16, 0x216E, 0x0044, 0,
3489     16, 0x216F, 0x004D, 0,
3490     16, 0x2170, 0x0069, 0,
3491     16, 0x2171, 0x0069, 0x0069, 0,
3492     16, 0x2172, 0x0069, 0x0069, 0x0069, 0,
3493     16, 0x2173, 0x0069, 0x0076, 0,
3494     16, 0x2174, 0x0076, 0,
3495     16, 0x2175, 0x0076, 0x0069, 0,
3496     16, 0x2176, 0x0076, 0x0069, 0x0069, 0,
3497     16, 0x2177, 0x0076, 0x0069, 0x0069, 0x0069, 0,
3498     16, 0x2178, 0x0069, 0x0078, 0,
3499     16, 0x2179, 0x0078, 0,
3500     16, 0x217A, 0x0078, 0x0069, 0,
3501     16, 0x217B, 0x0078, 0x0069, 0x0069, 0,
3502     16, 0x217C, 0x006C, 0,
3503     16, 0x217D, 0x0063, 0,
3504     16, 0x217E, 0x0064, 0,
3505     16, 0x217F, 0x006D, 0,
3506     1, 0x219A, 0x2190, 0x0338, 0,
3507     1, 0x219B, 0x2192, 0x0338, 0,
3508     1, 0x21AE, 0x2194, 0x0338, 0,
3509     1, 0x21CD, 0x21D0, 0x0338, 0,
3510     1, 0x21CE, 0x21D4, 0x0338, 0,
3511     1, 0x21CF, 0x21D2, 0x0338, 0,
3512     1, 0x2204, 0x2203, 0x0338, 0,
3513     1, 0x2209, 0x2208, 0x0338, 0,
3514     1, 0x220C, 0x220B, 0x0338, 0,
3515     1, 0x2224, 0x2223, 0x0338, 0,
3516     1, 0x2226, 0x2225, 0x0338, 0,
3517     16, 0x222C, 0x222B, 0x222B, 0,
3518     16, 0x222D, 0x222B, 0x222B, 0x222B, 0,
3519     16, 0x222F, 0x222E, 0x222E, 0,
3520     16, 0x2230, 0x222E, 0x222E, 0x222E, 0,
3521     1, 0x2241, 0x223C, 0x0338, 0,
3522     1, 0x2244, 0x2243, 0x0338, 0,
3523     1, 0x2247, 0x2245, 0x0338, 0,
3524     1, 0x2249, 0x2248, 0x0338, 0,
3525     1, 0x2260, 0x003D, 0x0338, 0,
3526     1, 0x2262, 0x2261, 0x0338, 0,
3527     1, 0x226D, 0x224D, 0x0338, 0,
3528     1, 0x226E, 0x003C, 0x0338, 0,
3529     1, 0x226F, 0x003E, 0x0338, 0,
3530     1, 0x2270, 0x2264, 0x0338, 0,
3531     1, 0x2271, 0x2265, 0x0338, 0,
3532     1, 0x2274, 0x2272, 0x0338, 0,
3533     1, 0x2275, 0x2273, 0x0338, 0,
3534     1, 0x2278, 0x2276, 0x0338, 0,
3535     1, 0x2279, 0x2277, 0x0338, 0,
3536     1, 0x2280, 0x227A, 0x0338, 0,
3537     1, 0x2281, 0x227B, 0x0338, 0,
3538     1, 0x2284, 0x2282, 0x0338, 0,
3539     1, 0x2285, 0x2283, 0x0338, 0,
3540     1, 0x2288, 0x2286, 0x0338, 0,
3541     1, 0x2289, 0x2287, 0x0338, 0,
3542     1, 0x22AC, 0x22A2, 0x0338, 0,
3543     1, 0x22AD, 0x22A8, 0x0338, 0,
3544     1, 0x22AE, 0x22A9, 0x0338, 0,
3545     1, 0x22AF, 0x22AB, 0x0338, 0,
3546     1, 0x22E0, 0x227C, 0x0338, 0,
3547     1, 0x22E1, 0x227D, 0x0338, 0,
3548     1, 0x22E2, 0x2291, 0x0338, 0,
3549     1, 0x22E3, 0x2292, 0x0338, 0,
3550     1, 0x22EA, 0x22B2, 0x0338, 0,
3551     1, 0x22EB, 0x22B3, 0x0338, 0,
3552     1, 0x22EC, 0x22B4, 0x0338, 0,
3553     1, 0x22ED, 0x22B5, 0x0338, 0,
3554     1, 0x2329, 0x3008, 0,
3555     1, 0x232A, 0x3009, 0,
3556     8, 0x2460, 0x0031, 0,
3557     8, 0x2461, 0x0032, 0,
3558     8, 0x2462, 0x0033, 0,
3559     8, 0x2463, 0x0034, 0,
3560     8, 0x2464, 0x0035, 0,
3561     8, 0x2465, 0x0036, 0,
3562     8, 0x2466, 0x0037, 0,
3563     8, 0x2467, 0x0038, 0,
3564     8, 0x2468, 0x0039, 0,
3565     8, 0x2469, 0x0031, 0x0030, 0,
3566     8, 0x246A, 0x0031, 0x0031, 0,
3567     8, 0x246B, 0x0031, 0x0032, 0,
3568     8, 0x246C, 0x0031, 0x0033, 0,
3569     8, 0x246D, 0x0031, 0x0034, 0,
3570     8, 0x246E, 0x0031, 0x0035, 0,
3571     8, 0x246F, 0x0031, 0x0036, 0,
3572     8, 0x2470, 0x0031, 0x0037, 0,
3573     8, 0x2471, 0x0031, 0x0038, 0,
3574     8, 0x2472, 0x0031, 0x0039, 0,
3575     8, 0x2473, 0x0032, 0x0030, 0,
3576     16, 0x2474, 0x0028, 0x0031, 0x0029, 0,
3577     16, 0x2475, 0x0028, 0x0032, 0x0029, 0,
3578     16, 0x2476, 0x0028, 0x0033, 0x0029, 0,
3579     16, 0x2477, 0x0028, 0x0034, 0x0029, 0,
3580     16, 0x2478, 0x0028, 0x0035, 0x0029, 0,
3581     16, 0x2479, 0x0028, 0x0036, 0x0029, 0,
3582     16, 0x247A, 0x0028, 0x0037, 0x0029, 0,
3583     16, 0x247B, 0x0028, 0x0038, 0x0029, 0,
3584     16, 0x247C, 0x0028, 0x0039, 0x0029, 0,
3585     16, 0x247D, 0x0028, 0x0031, 0x0030, 0x0029, 0,
3586     16, 0x247E, 0x0028, 0x0031, 0x0031, 0x0029, 0,
3587     16, 0x247F, 0x0028, 0x0031, 0x0032, 0x0029, 0,
3588     16, 0x2480, 0x0028, 0x0031, 0x0033, 0x0029, 0,
3589     16, 0x2481, 0x0028, 0x0031, 0x0034, 0x0029, 0,
3590     16, 0x2482, 0x0028, 0x0031, 0x0035, 0x0029, 0,
3591     16, 0x2483, 0x0028, 0x0031, 0x0036, 0x0029, 0,
3592     16, 0x2484, 0x0028, 0x0031, 0x0037, 0x0029, 0,
3593     16, 0x2485, 0x0028, 0x0031, 0x0038, 0x0029, 0,
3594     16, 0x2486, 0x0028, 0x0031, 0x0039, 0x0029, 0,
3595     16, 0x2487, 0x0028, 0x0032, 0x0030, 0x0029, 0,
3596     16, 0x2488, 0x0031, 0x002E, 0,
3597     16, 0x2489, 0x0032, 0x002E, 0,
3598     16, 0x248A, 0x0033, 0x002E, 0,
3599     16, 0x248B, 0x0034, 0x002E, 0,
3600     16, 0x248C, 0x0035, 0x002E, 0,
3601     16, 0x248D, 0x0036, 0x002E, 0,
3602     16, 0x248E, 0x0037, 0x002E, 0,
3603     16, 0x248F, 0x0038, 0x002E, 0,
3604     16, 0x2490, 0x0039, 0x002E, 0,
3605     16, 0x2491, 0x0031, 0x0030, 0x002E, 0,
3606     16, 0x2492, 0x0031, 0x0031, 0x002E, 0,
3607     16, 0x2493, 0x0031, 0x0032, 0x002E, 0,
3608     16, 0x2494, 0x0031, 0x0033, 0x002E, 0,
3609     16, 0x2495, 0x0031, 0x0034, 0x002E, 0,
3610     16, 0x2496, 0x0031, 0x0035, 0x002E, 0,
3611     16, 0x2497, 0x0031, 0x0036, 0x002E, 0,
3612     16, 0x2498, 0x0031, 0x0037, 0x002E, 0,
3613     16, 0x2499, 0x0031, 0x0038, 0x002E, 0,
3614     16, 0x249A, 0x0031, 0x0039, 0x002E, 0,
3615     16, 0x249B, 0x0032, 0x0030, 0x002E, 0,
3616     16, 0x249C, 0x0028, 0x0061, 0x0029, 0,
3617     16, 0x249D, 0x0028, 0x0062, 0x0029, 0,
3618     16, 0x249E, 0x0028, 0x0063, 0x0029, 0,
3619     16, 0x249F, 0x0028, 0x0064, 0x0029, 0,
3620     16, 0x24A0, 0x0028, 0x0065, 0x0029, 0,
3621     16, 0x24A1, 0x0028, 0x0066, 0x0029, 0,
3622     16, 0x24A2, 0x0028, 0x0067, 0x0029, 0,
3623     16, 0x24A3, 0x0028, 0x0068, 0x0029, 0,
3624     16, 0x24A4, 0x0028, 0x0069, 0x0029, 0,
3625     16, 0x24A5, 0x0028, 0x006A, 0x0029, 0,
3626     16, 0x24A6, 0x0028, 0x006B, 0x0029, 0,
3627     16, 0x24A7, 0x0028, 0x006C, 0x0029, 0,
3628     16, 0x24A8, 0x0028, 0x006D, 0x0029, 0,
3629     16, 0x24A9, 0x0028, 0x006E, 0x0029, 0,
3630     16, 0x24AA, 0x0028, 0x006F, 0x0029, 0,
3631     16, 0x24AB, 0x0028, 0x0070, 0x0029, 0,
3632     16, 0x24AC, 0x0028, 0x0071, 0x0029, 0,
3633     16, 0x24AD, 0x0028, 0x0072, 0x0029, 0,
3634     16, 0x24AE, 0x0028, 0x0073, 0x0029, 0,
3635     16, 0x24AF, 0x0028, 0x0074, 0x0029, 0,
3636     16, 0x24B0, 0x0028, 0x0075, 0x0029, 0,
3637     16, 0x24B1, 0x0028, 0x0076, 0x0029, 0,
3638     16, 0x24B2, 0x0028, 0x0077, 0x0029, 0,
3639     16, 0x24B3, 0x0028, 0x0078, 0x0029, 0,
3640     16, 0x24B4, 0x0028, 0x0079, 0x0029, 0,
3641     16, 0x24B5, 0x0028, 0x007A, 0x0029, 0,
3642     8, 0x24B6, 0x0041, 0,
3643     8, 0x24B7, 0x0042, 0,
3644     8, 0x24B8, 0x0043, 0,
3645     8, 0x24B9, 0x0044, 0,
3646     8, 0x24BA, 0x0045, 0,
3647     8, 0x24BB, 0x0046, 0,
3648     8, 0x24BC, 0x0047, 0,
3649     8, 0x24BD, 0x0048, 0,
3650     8, 0x24BE, 0x0049, 0,
3651     8, 0x24BF, 0x004A, 0,
3652     8, 0x24C0, 0x004B, 0,
3653     8, 0x24C1, 0x004C, 0,
3654     8, 0x24C2, 0x004D, 0,
3655     8, 0x24C3, 0x004E, 0,
3656     8, 0x24C4, 0x004F, 0,
3657     8, 0x24C5, 0x0050, 0,
3658     8, 0x24C6, 0x0051, 0,
3659     8, 0x24C7, 0x0052, 0,
3660     8, 0x24C8, 0x0053, 0,
3661     8, 0x24C9, 0x0054, 0,
3662     8, 0x24CA, 0x0055, 0,
3663     8, 0x24CB, 0x0056, 0,
3664     8, 0x24CC, 0x0057, 0,
3665     8, 0x24CD, 0x0058, 0,
3666     8, 0x24CE, 0x0059, 0,
3667     8, 0x24CF, 0x005A, 0,
3668     8, 0x24D0, 0x0061, 0,
3669     8, 0x24D1, 0x0062, 0,
3670     8, 0x24D2, 0x0063, 0,
3671     8, 0x24D3, 0x0064, 0,
3672     8, 0x24D4, 0x0065, 0,
3673     8, 0x24D5, 0x0066, 0,
3674     8, 0x24D6, 0x0067, 0,
3675     8, 0x24D7, 0x0068, 0,
3676     8, 0x24D8, 0x0069, 0,
3677     8, 0x24D9, 0x006A, 0,
3678     8, 0x24DA, 0x006B, 0,
3679     8, 0x24DB, 0x006C, 0,
3680     8, 0x24DC, 0x006D, 0,
3681     8, 0x24DD, 0x006E, 0,
3682     8, 0x24DE, 0x006F, 0,
3683     8, 0x24DF, 0x0070, 0,
3684     8, 0x24E0, 0x0071, 0,
3685     8, 0x24E1, 0x0072, 0,
3686     8, 0x24E2, 0x0073, 0,
3687     8, 0x24E3, 0x0074, 0,
3688     8, 0x24E4, 0x0075, 0,
3689     8, 0x24E5, 0x0076, 0,
3690     8, 0x24E6, 0x0077, 0,
3691     8, 0x24E7, 0x0078, 0,
3692     8, 0x24E8, 0x0079, 0,
3693     8, 0x24E9, 0x007A, 0,
3694     8, 0x24EA, 0x0030, 0,
3695     16, 0x2E9F, 0x6BCD, 0,
3696     16, 0x2EF3, 0x9F9F, 0,
3697     16, 0x2F00, 0x4E00, 0,
3698     16, 0x2F01, 0x4E28, 0,
3699     16, 0x2F02, 0x4E36, 0,
3700     16, 0x2F03, 0x4E3F, 0,
3701     16, 0x2F04, 0x4E59, 0,
3702     16, 0x2F05, 0x4E85, 0,
3703     16, 0x2F06, 0x4E8C, 0,
3704     16, 0x2F07, 0x4EA0, 0,
3705     16, 0x2F08, 0x4EBA, 0,
3706     16, 0x2F09, 0x513F, 0,
3707     16, 0x2F0A, 0x5165, 0,
3708     16, 0x2F0B, 0x516B, 0,
3709     16, 0x2F0C, 0x5182, 0,
3710     16, 0x2F0D, 0x5196, 0,
3711     16, 0x2F0E, 0x51AB, 0,
3712     16, 0x2F0F, 0x51E0, 0,
3713     16, 0x2F10, 0x51F5, 0,
3714     16, 0x2F11, 0x5200, 0,
3715     16, 0x2F12, 0x529B, 0,
3716     16, 0x2F13, 0x52F9, 0,
3717     16, 0x2F14, 0x5315, 0,
3718     16, 0x2F15, 0x531A, 0,
3719     16, 0x2F16, 0x5338, 0,
3720     16, 0x2F17, 0x5341, 0,
3721     16, 0x2F18, 0x535C, 0,
3722     16, 0x2F19, 0x5369, 0,
3723     16, 0x2F1A, 0x5382, 0,
3724     16, 0x2F1B, 0x53B6, 0,
3725     16, 0x2F1C, 0x53C8, 0,
3726     16, 0x2F1D, 0x53E3, 0,
3727     16, 0x2F1E, 0x56D7, 0,
3728     16, 0x2F1F, 0x571F, 0,
3729     16, 0x2F20, 0x58EB, 0,
3730     16, 0x2F21, 0x5902, 0,
3731     16, 0x2F22, 0x590A, 0,
3732     16, 0x2F23, 0x5915, 0,
3733     16, 0x2F24, 0x5927, 0,
3734     16, 0x2F25, 0x5973, 0,
3735     16, 0x2F26, 0x5B50, 0,
3736     16, 0x2F27, 0x5B80, 0,
3737     16, 0x2F28, 0x5BF8, 0,
3738     16, 0x2F29, 0x5C0F, 0,
3739     16, 0x2F2A, 0x5C22, 0,
3740     16, 0x2F2B, 0x5C38, 0,
3741     16, 0x2F2C, 0x5C6E, 0,
3742     16, 0x2F2D, 0x5C71, 0,
3743     16, 0x2F2E, 0x5DDB, 0,
3744     16, 0x2F2F, 0x5DE5, 0,
3745     16, 0x2F30, 0x5DF1, 0,
3746     16, 0x2F31, 0x5DFE, 0,
3747     16, 0x2F32, 0x5E72, 0,
3748     16, 0x2F33, 0x5E7A, 0,
3749     16, 0x2F34, 0x5E7F, 0,
3750     16, 0x2F35, 0x5EF4, 0,
3751     16, 0x2F36, 0x5EFE, 0,
3752     16, 0x2F37, 0x5F0B, 0,
3753     16, 0x2F38, 0x5F13, 0,
3754     16, 0x2F39, 0x5F50, 0,
3755     16, 0x2F3A, 0x5F61, 0,
3756     16, 0x2F3B, 0x5F73, 0,
3757     16, 0x2F3C, 0x5FC3, 0,
3758     16, 0x2F3D, 0x6208, 0,
3759     16, 0x2F3E, 0x6236, 0,
3760     16, 0x2F3F, 0x624B, 0,
3761     16, 0x2F40, 0x652F, 0,
3762     16, 0x2F41, 0x6534, 0,
3763     16, 0x2F42, 0x6587, 0,
3764     16, 0x2F43, 0x6597, 0,
3765     16, 0x2F44, 0x65A4, 0,
3766     16, 0x2F45, 0x65B9, 0,
3767     16, 0x2F46, 0x65E0, 0,
3768     16, 0x2F47, 0x65E5, 0,
3769     16, 0x2F48, 0x66F0, 0,
3770     16, 0x2F49, 0x6708, 0,
3771     16, 0x2F4A, 0x6728, 0,
3772     16, 0x2F4B, 0x6B20, 0,
3773     16, 0x2F4C, 0x6B62, 0,
3774     16, 0x2F4D, 0x6B79, 0,
3775     16, 0x2F4E, 0x6BB3, 0,
3776     16, 0x2F4F, 0x6BCB, 0,
3777     16, 0x2F50, 0x6BD4, 0,
3778     16, 0x2F51, 0x6BDB, 0,
3779     16, 0x2F52, 0x6C0F, 0,
3780     16, 0x2F53, 0x6C14, 0,
3781     16, 0x2F54, 0x6C34, 0,
3782     16, 0x2F55, 0x706B, 0,
3783     16, 0x2F56, 0x722A, 0,
3784     16, 0x2F57, 0x7236, 0,
3785     16, 0x2F58, 0x723B, 0,
3786     16, 0x2F59, 0x723F, 0,
3787     16, 0x2F5A, 0x7247, 0,
3788     16, 0x2F5B, 0x7259, 0,
3789     16, 0x2F5C, 0x725B, 0,
3790     16, 0x2F5D, 0x72AC, 0,
3791     16, 0x2F5E, 0x7384, 0,
3792     16, 0x2F5F, 0x7389, 0,
3793     16, 0x2F60, 0x74DC, 0,
3794     16, 0x2F61, 0x74E6, 0,
3795     16, 0x2F62, 0x7518, 0,
3796     16, 0x2F63, 0x751F, 0,
3797     16, 0x2F64, 0x7528, 0,
3798     16, 0x2F65, 0x7530, 0,
3799     16, 0x2F66, 0x758B, 0,
3800     16, 0x2F67, 0x7592, 0,
3801     16, 0x2F68, 0x7676, 0,
3802     16, 0x2F69, 0x767D, 0,
3803     16, 0x2F6A, 0x76AE, 0,
3804     16, 0x2F6B, 0x76BF, 0,
3805     16, 0x2F6C, 0x76EE, 0,
3806     16, 0x2F6D, 0x77DB, 0,
3807     16, 0x2F6E, 0x77E2, 0,
3808     16, 0x2F6F, 0x77F3, 0,
3809     16, 0x2F70, 0x793A, 0,
3810     16, 0x2F71, 0x79B8, 0,
3811     16, 0x2F72, 0x79BE, 0,
3812     16, 0x2F73, 0x7A74, 0,
3813     16, 0x2F74, 0x7ACB, 0,
3814     16, 0x2F75, 0x7AF9, 0,
3815     16, 0x2F76, 0x7C73, 0,
3816     16, 0x2F77, 0x7CF8, 0,
3817     16, 0x2F78, 0x7F36, 0,
3818     16, 0x2F79, 0x7F51, 0,
3819     16, 0x2F7A, 0x7F8A, 0,
3820     16, 0x2F7B, 0x7FBD, 0,
3821     16, 0x2F7C, 0x8001, 0,
3822     16, 0x2F7D, 0x800C, 0,
3823     16, 0x2F7E, 0x8012, 0,
3824     16, 0x2F7F, 0x8033, 0,
3825     16, 0x2F80, 0x807F, 0,
3826     16, 0x2F81, 0x8089, 0,
3827     16, 0x2F82, 0x81E3, 0,
3828     16, 0x2F83, 0x81EA, 0,
3829     16, 0x2F84, 0x81F3, 0,
3830     16, 0x2F85, 0x81FC, 0,
3831     16, 0x2F86, 0x820C, 0,
3832     16, 0x2F87, 0x821B, 0,
3833     16, 0x2F88, 0x821F, 0,
3834     16, 0x2F89, 0x826E, 0,
3835     16, 0x2F8A, 0x8272, 0,
3836     16, 0x2F8B, 0x8278, 0,
3837     16, 0x2F8C, 0x864D, 0,
3838     16, 0x2F8D, 0x866B, 0,
3839     16, 0x2F8E, 0x8840, 0,
3840     16, 0x2F8F, 0x884C, 0,
3841     16, 0x2F90, 0x8863, 0,
3842     16, 0x2F91, 0x897E, 0,
3843     16, 0x2F92, 0x898B, 0,
3844     16, 0x2F93, 0x89D2, 0,
3845     16, 0x2F94, 0x8A00, 0,
3846     16, 0x2F95, 0x8C37, 0,
3847     16, 0x2F96, 0x8C46, 0,
3848     16, 0x2F97, 0x8C55, 0,
3849     16, 0x2F98, 0x8C78, 0,
3850     16, 0x2F99, 0x8C9D, 0,
3851     16, 0x2F9A, 0x8D64, 0,
3852     16, 0x2F9B, 0x8D70, 0,
3853     16, 0x2F9C, 0x8DB3, 0,
3854     16, 0x2F9D, 0x8EAB, 0,
3855     16, 0x2F9E, 0x8ECA, 0,
3856     16, 0x2F9F, 0x8F9B, 0,
3857     16, 0x2FA0, 0x8FB0, 0,
3858     16, 0x2FA1, 0x8FB5, 0,
3859     16, 0x2FA2, 0x9091, 0,
3860     16, 0x2FA3, 0x9149, 0,
3861     16, 0x2FA4, 0x91C6, 0,
3862     16, 0x2FA5, 0x91CC, 0,
3863     16, 0x2FA6, 0x91D1, 0,
3864     16, 0x2FA7, 0x9577, 0,
3865     16, 0x2FA8, 0x9580, 0,
3866     16, 0x2FA9, 0x961C, 0,
3867     16, 0x2FAA, 0x96B6, 0,
3868     16, 0x2FAB, 0x96B9, 0,
3869     16, 0x2FAC, 0x96E8, 0,
3870     16, 0x2FAD, 0x9751, 0,
3871     16, 0x2FAE, 0x975E, 0,
3872     16, 0x2FAF, 0x9762, 0,
3873     16, 0x2FB0, 0x9769, 0,
3874     16, 0x2FB1, 0x97CB, 0,
3875     16, 0x2FB2, 0x97ED, 0,
3876     16, 0x2FB3, 0x97F3, 0,
3877     16, 0x2FB4, 0x9801, 0,
3878     16, 0x2FB5, 0x98A8, 0,
3879     16, 0x2FB6, 0x98DB, 0,
3880     16, 0x2FB7, 0x98DF, 0,
3881     16, 0x2FB8, 0x9996, 0,
3882     16, 0x2FB9, 0x9999, 0,
3883     16, 0x2FBA, 0x99AC, 0,
3884     16, 0x2FBB, 0x9AA8, 0,
3885     16, 0x2FBC, 0x9AD8, 0,
3886     16, 0x2FBD, 0x9ADF, 0,
3887     16, 0x2FBE, 0x9B25, 0,
3888     16, 0x2FBF, 0x9B2F, 0,
3889     16, 0x2FC0, 0x9B32, 0,
3890     16, 0x2FC1, 0x9B3C, 0,
3891     16, 0x2FC2, 0x9B5A, 0,
3892     16, 0x2FC3, 0x9CE5, 0,
3893     16, 0x2FC4, 0x9E75, 0,
3894     16, 0x2FC5, 0x9E7F, 0,
3895     16, 0x2FC6, 0x9EA5, 0,
3896     16, 0x2FC7, 0x9EBB, 0,
3897     16, 0x2FC8, 0x9EC3, 0,
3898     16, 0x2FC9, 0x9ECD, 0,
3899     16, 0x2FCA, 0x9ED1, 0,
3900     16, 0x2FCB, 0x9EF9, 0,
3901     16, 0x2FCC, 0x9EFD, 0,
3902     16, 0x2FCD, 0x9F0E, 0,
3903     16, 0x2FCE, 0x9F13, 0,
3904     16, 0x2FCF, 0x9F20, 0,
3905     16, 0x2FD0, 0x9F3B, 0,
3906     16, 0x2FD1, 0x9F4A, 0,
3907     16, 0x2FD2, 0x9F52, 0,
3908     16, 0x2FD3, 0x9F8D, 0,
3909     16, 0x2FD4, 0x9F9C, 0,
3910     16, 0x2FD5, 0x9FA0, 0,
3911     12, 0x3000, 0x0020, 0,
3912     16, 0x3036, 0x3012, 0,
3913     16, 0x3038, 0x5341, 0,
3914     16, 0x3039, 0x5344, 0,
3915     16, 0x303A, 0x5345, 0,
3916     1, 0x304C, 0x304B, 0x3099, 0,
3917     1, 0x304E, 0x304D, 0x3099, 0,
3918     1, 0x3050, 0x304F, 0x3099, 0,
3919     1, 0x3052, 0x3051, 0x3099, 0,
3920     1, 0x3054, 0x3053, 0x3099, 0,
3921     1, 0x3056, 0x3055, 0x3099, 0,
3922     1, 0x3058, 0x3057, 0x3099, 0,
3923     1, 0x305A, 0x3059, 0x3099, 0,
3924     1, 0x305C, 0x305B, 0x3099, 0,
3925     1, 0x305E, 0x305D, 0x3099, 0,
3926     1, 0x3060, 0x305F, 0x3099, 0,
3927     1, 0x3062, 0x3061, 0x3099, 0,
3928     1, 0x3065, 0x3064, 0x3099, 0,
3929     1, 0x3067, 0x3066, 0x3099, 0,
3930     1, 0x3069, 0x3068, 0x3099, 0,
3931     1, 0x3070, 0x306F, 0x3099, 0,
3932     1, 0x3071, 0x306F, 0x309A, 0,
3933     1, 0x3073, 0x3072, 0x3099, 0,
3934     1, 0x3074, 0x3072, 0x309A, 0,
3935     1, 0x3076, 0x3075, 0x3099, 0,
3936     1, 0x3077, 0x3075, 0x309A, 0,
3937     1, 0x3079, 0x3078, 0x3099, 0,
3938     1, 0x307A, 0x3078, 0x309A, 0,
3939     1, 0x307C, 0x307B, 0x3099, 0,
3940     1, 0x307D, 0x307B, 0x309A, 0,
3941     1, 0x3094, 0x3046, 0x3099, 0,
3942     16, 0x309B, 0x0020, 0x3099, 0,
3943     16, 0x309C, 0x0020, 0x309A, 0,
3944     1, 0x309E, 0x309D, 0x3099, 0,
3945     1, 0x30AC, 0x30AB, 0x3099, 0,
3946     1, 0x30AE, 0x30AD, 0x3099, 0,
3947     1, 0x30B0, 0x30AF, 0x3099, 0,
3948     1, 0x30B2, 0x30B1, 0x3099, 0,
3949     1, 0x30B4, 0x30B3, 0x3099, 0,
3950     1, 0x30B6, 0x30B5, 0x3099, 0,
3951     1, 0x30B8, 0x30B7, 0x3099, 0,
3952     1, 0x30BA, 0x30B9, 0x3099, 0,
3953     1, 0x30BC, 0x30BB, 0x3099, 0,
3954     1, 0x30BE, 0x30BD, 0x3099, 0,
3955     1, 0x30C0, 0x30BF, 0x3099, 0,
3956     1, 0x30C2, 0x30C1, 0x3099, 0,
3957     1, 0x30C5, 0x30C4, 0x3099, 0,
3958     1, 0x30C7, 0x30C6, 0x3099, 0,
3959     1, 0x30C9, 0x30C8, 0x3099, 0,
3960     1, 0x30D0, 0x30CF, 0x3099, 0,
3961     1, 0x30D1, 0x30CF, 0x309A, 0,
3962     1, 0x30D3, 0x30D2, 0x3099, 0,
3963     1, 0x30D4, 0x30D2, 0x309A, 0,
3964     1, 0x30D6, 0x30D5, 0x3099, 0,
3965     1, 0x30D7, 0x30D5, 0x309A, 0,
3966     1, 0x30D9, 0x30D8, 0x3099, 0,
3967     1, 0x30DA, 0x30D8, 0x309A, 0,
3968     1, 0x30DC, 0x30DB, 0x3099, 0,
3969     1, 0x30DD, 0x30DB, 0x309A, 0,
3970     1, 0x30F4, 0x30A6, 0x3099, 0,
3971     1, 0x30F7, 0x30EF, 0x3099, 0,
3972     1, 0x30F8, 0x30F0, 0x3099, 0,
3973     1, 0x30F9, 0x30F1, 0x3099, 0,
3974     1, 0x30FA, 0x30F2, 0x3099, 0,
3975     1, 0x30FE, 0x30FD, 0x3099, 0,
3976     16, 0x3131, 0x1100, 0,
3977     16, 0x3132, 0x1101, 0,
3978     16, 0x3133, 0x11AA, 0,
3979     16, 0x3134, 0x1102, 0,
3980     16, 0x3135, 0x11AC, 0,
3981     16, 0x3136, 0x11AD, 0,
3982     16, 0x3137, 0x1103, 0,
3983     16, 0x3138, 0x1104, 0,
3984     16, 0x3139, 0x1105, 0,
3985     16, 0x313A, 0x11B0, 0,
3986     16, 0x313B, 0x11B1, 0,
3987     16, 0x313C, 0x11B2, 0,
3988     16, 0x313D, 0x11B3, 0,
3989     16, 0x313E, 0x11B4, 0,
3990     16, 0x313F, 0x11B5, 0,
3991     16, 0x3140, 0x111A, 0,
3992     16, 0x3141, 0x1106, 0,
3993     16, 0x3142, 0x1107, 0,
3994     16, 0x3143, 0x1108, 0,
3995     16, 0x3144, 0x1121, 0,
3996     16, 0x3145, 0x1109, 0,
3997     16, 0x3146, 0x110A, 0,
3998     16, 0x3147, 0x110B, 0,
3999     16, 0x3148, 0x110C, 0,
4000     16, 0x3149, 0x110D, 0,
4001     16, 0x314A, 0x110E, 0,
4002     16, 0x314B, 0x110F, 0,
4003     16, 0x314C, 0x1110, 0,
4004     16, 0x314D, 0x1111, 0,
4005     16, 0x314E, 0x1112, 0,
4006     16, 0x314F, 0x1161, 0,
4007     16, 0x3150, 0x1162, 0,
4008     16, 0x3151, 0x1163, 0,
4009     16, 0x3152, 0x1164, 0,
4010     16, 0x3153, 0x1165, 0,
4011     16, 0x3154, 0x1166, 0,
4012     16, 0x3155, 0x1167, 0,
4013     16, 0x3156, 0x1168, 0,
4014     16, 0x3157, 0x1169, 0,
4015     16, 0x3158, 0x116A, 0,
4016     16, 0x3159, 0x116B, 0,
4017     16, 0x315A, 0x116C, 0,
4018     16, 0x315B, 0x116D, 0,
4019     16, 0x315C, 0x116E, 0,
4020     16, 0x315D, 0x116F, 0,
4021     16, 0x315E, 0x1170, 0,
4022     16, 0x315F, 0x1171, 0,
4023     16, 0x3160, 0x1172, 0,
4024     16, 0x3161, 0x1173, 0,
4025     16, 0x3162, 0x1174, 0,
4026     16, 0x3163, 0x1175, 0,
4027     16, 0x3164, 0x1160, 0,
4028     16, 0x3165, 0x1114, 0,
4029     16, 0x3166, 0x1115, 0,
4030     16, 0x3167, 0x11C7, 0,
4031     16, 0x3168, 0x11C8, 0,
4032     16, 0x3169, 0x11CC, 0,
4033     16, 0x316A, 0x11CE, 0,
4034     16, 0x316B, 0x11D3, 0,
4035     16, 0x316C, 0x11D7, 0,
4036     16, 0x316D, 0x11D9, 0,
4037     16, 0x316E, 0x111C, 0,
4038     16, 0x316F, 0x11DD, 0,
4039     16, 0x3170, 0x11DF, 0,
4040     16, 0x3171, 0x111D, 0,
4041     16, 0x3172, 0x111E, 0,
4042     16, 0x3173, 0x1120, 0,
4043     16, 0x3174, 0x1122, 0,
4044     16, 0x3175, 0x1123, 0,
4045     16, 0x3176, 0x1127, 0,
4046     16, 0x3177, 0x1129, 0,
4047     16, 0x3178, 0x112B, 0,
4048     16, 0x3179, 0x112C, 0,
4049     16, 0x317A, 0x112D, 0,
4050     16, 0x317B, 0x112E, 0,
4051     16, 0x317C, 0x112F, 0,
4052     16, 0x317D, 0x1132, 0,
4053     16, 0x317E, 0x1136, 0,
4054     16, 0x317F, 0x1140, 0,
4055     16, 0x3180, 0x1147, 0,
4056     16, 0x3181, 0x114C, 0,
4057     16, 0x3182, 0x11F1, 0,
4058     16, 0x3183, 0x11F2, 0,
4059     16, 0x3184, 0x1157, 0,
4060     16, 0x3185, 0x1158, 0,
4061     16, 0x3186, 0x1159, 0,
4062     16, 0x3187, 0x1184, 0,
4063     16, 0x3188, 0x1185, 0,
4064     16, 0x3189, 0x1188, 0,
4065     16, 0x318A, 0x1191, 0,
4066     16, 0x318B, 0x1192, 0,
4067     16, 0x318C, 0x1194, 0,
4068     16, 0x318D, 0x119E, 0,
4069     16, 0x318E, 0x11A1, 0,
4070     9, 0x3192, 0x4E00, 0,
4071     9, 0x3193, 0x4E8C, 0,
4072     9, 0x3194, 0x4E09, 0,
4073     9, 0x3195, 0x56DB, 0,
4074     9, 0x3196, 0x4E0A, 0,
4075     9, 0x3197, 0x4E2D, 0,
4076     9, 0x3198, 0x4E0B, 0,
4077     9, 0x3199, 0x7532, 0,
4078     9, 0x319A, 0x4E59, 0,
4079     9, 0x319B, 0x4E19, 0,
4080     9, 0x319C, 0x4E01, 0,
4081     9, 0x319D, 0x5929, 0,
4082     9, 0x319E, 0x5730, 0,
4083     9, 0x319F, 0x4EBA, 0,
4084     16, 0x3200, 0x0028, 0x1100, 0x0029, 0,
4085     16, 0x3201, 0x0028, 0x1102, 0x0029, 0,
4086     16, 0x3202, 0x0028, 0x1103, 0x0029, 0,
4087     16, 0x3203, 0x0028, 0x1105, 0x0029, 0,
4088     16, 0x3204, 0x0028, 0x1106, 0x0029, 0,
4089     16, 0x3205, 0x0028, 0x1107, 0x0029, 0,
4090     16, 0x3206, 0x0028, 0x1109, 0x0029, 0,
4091     16, 0x3207, 0x0028, 0x110B, 0x0029, 0,
4092     16, 0x3208, 0x0028, 0x110C, 0x0029, 0,
4093     16, 0x3209, 0x0028, 0x110E, 0x0029, 0,
4094     16, 0x320A, 0x0028, 0x110F, 0x0029, 0,
4095     16, 0x320B, 0x0028, 0x1110, 0x0029, 0,
4096     16, 0x320C, 0x0028, 0x1111, 0x0029, 0,
4097     16, 0x320D, 0x0028, 0x1112, 0x0029, 0,
4098     16, 0x320E, 0x0028, 0x1100, 0x1161, 0x0029, 0,
4099     16, 0x320F, 0x0028, 0x1102, 0x1161, 0x0029, 0,
4100     16, 0x3210, 0x0028, 0x1103, 0x1161, 0x0029, 0,
4101     16, 0x3211, 0x0028, 0x1105, 0x1161, 0x0029, 0,
4102     16, 0x3212, 0x0028, 0x1106, 0x1161, 0x0029, 0,
4103     16, 0x3213, 0x0028, 0x1107, 0x1161, 0x0029, 0,
4104     16, 0x3214, 0x0028, 0x1109, 0x1161, 0x0029, 0,
4105     16, 0x3215, 0x0028, 0x110B, 0x1161, 0x0029, 0,
4106     16, 0x3216, 0x0028, 0x110C, 0x1161, 0x0029, 0,
4107     16, 0x3217, 0x0028, 0x110E, 0x1161, 0x0029, 0,
4108     16, 0x3218, 0x0028, 0x110F, 0x1161, 0x0029, 0,
4109     16, 0x3219, 0x0028, 0x1110, 0x1161, 0x0029, 0,
4110     16, 0x321A, 0x0028, 0x1111, 0x1161, 0x0029, 0,
4111     16, 0x321B, 0x0028, 0x1112, 0x1161, 0x0029, 0,
4112     16, 0x321C, 0x0028, 0x110C, 0x116E, 0x0029, 0,
4113     16, 0x3220, 0x0028, 0x4E00, 0x0029, 0,
4114     16, 0x3221, 0x0028, 0x4E8C, 0x0029, 0,
4115     16, 0x3222, 0x0028, 0x4E09, 0x0029, 0,
4116     16, 0x3223, 0x0028, 0x56DB, 0x0029, 0,
4117     16, 0x3224, 0x0028, 0x4E94, 0x0029, 0,
4118     16, 0x3225, 0x0028, 0x516D, 0x0029, 0,
4119     16, 0x3226, 0x0028, 0x4E03, 0x0029, 0,
4120     16, 0x3227, 0x0028, 0x516B, 0x0029, 0,
4121     16, 0x3228, 0x0028, 0x4E5D, 0x0029, 0,
4122     16, 0x3229, 0x0028, 0x5341, 0x0029, 0,
4123     16, 0x322A, 0x0028, 0x6708, 0x0029, 0,
4124     16, 0x322B, 0x0028, 0x706B, 0x0029, 0,
4125     16, 0x322C, 0x0028, 0x6C34, 0x0029, 0,
4126     16, 0x322D, 0x0028, 0x6728, 0x0029, 0,
4127     16, 0x322E, 0x0028, 0x91D1, 0x0029, 0,
4128     16, 0x322F, 0x0028, 0x571F, 0x0029, 0,
4129     16, 0x3230, 0x0028, 0x65E5, 0x0029, 0,
4130     16, 0x3231, 0x0028, 0x682A, 0x0029, 0,
4131     16, 0x3232, 0x0028, 0x6709, 0x0029, 0,
4132     16, 0x3233, 0x0028, 0x793E, 0x0029, 0,
4133     16, 0x3234, 0x0028, 0x540D, 0x0029, 0,
4134     16, 0x3235, 0x0028, 0x7279, 0x0029, 0,
4135     16, 0x3236, 0x0028, 0x8CA1, 0x0029, 0,
4136     16, 0x3237, 0x0028, 0x795D, 0x0029, 0,
4137     16, 0x3238, 0x0028, 0x52B4, 0x0029, 0,
4138     16, 0x3239, 0x0028, 0x4EE3, 0x0029, 0,
4139     16, 0x323A, 0x0028, 0x547C, 0x0029, 0,
4140     16, 0x323B, 0x0028, 0x5B66, 0x0029, 0,
4141     16, 0x323C, 0x0028, 0x76E3, 0x0029, 0,
4142     16, 0x323D, 0x0028, 0x4F01, 0x0029, 0,
4143     16, 0x323E, 0x0028, 0x8CC7, 0x0029, 0,
4144     16, 0x323F, 0x0028, 0x5354, 0x0029, 0,
4145     16, 0x3240, 0x0028, 0x796D, 0x0029, 0,
4146     16, 0x3241, 0x0028, 0x4F11, 0x0029, 0,
4147     16, 0x3242, 0x0028, 0x81EA, 0x0029, 0,
4148     16, 0x3243, 0x0028, 0x81F3, 0x0029, 0,
4149     8, 0x3260, 0x1100, 0,
4150     8, 0x3261, 0x1102, 0,
4151     8, 0x3262, 0x1103, 0,
4152     8, 0x3263, 0x1105, 0,
4153     8, 0x3264, 0x1106, 0,
4154     8, 0x3265, 0x1107, 0,
4155     8, 0x3266, 0x1109, 0,
4156     8, 0x3267, 0x110B, 0,
4157     8, 0x3268, 0x110C, 0,
4158     8, 0x3269, 0x110E, 0,
4159     8, 0x326A, 0x110F, 0,
4160     8, 0x326B, 0x1110, 0,
4161     8, 0x326C, 0x1111, 0,
4162     8, 0x326D, 0x1112, 0,
4163     8, 0x326E, 0x1100, 0x1161, 0,
4164     8, 0x326F, 0x1102, 0x1161, 0,
4165     8, 0x3270, 0x1103, 0x1161, 0,
4166     8, 0x3271, 0x1105, 0x1161, 0,
4167     8, 0x3272, 0x1106, 0x1161, 0,
4168     8, 0x3273, 0x1107, 0x1161, 0,
4169     8, 0x3274, 0x1109, 0x1161, 0,
4170     8, 0x3275, 0x110B, 0x1161, 0,
4171     8, 0x3276, 0x110C, 0x1161, 0,
4172     8, 0x3277, 0x110E, 0x1161, 0,
4173     8, 0x3278, 0x110F, 0x1161, 0,
4174     8, 0x3279, 0x1110, 0x1161, 0,
4175     8, 0x327A, 0x1111, 0x1161, 0,
4176     8, 0x327B, 0x1112, 0x1161, 0,
4177     8, 0x3280, 0x4E00, 0,
4178     8, 0x3281, 0x4E8C, 0,
4179     8, 0x3282, 0x4E09, 0,
4180     8, 0x3283, 0x56DB, 0,
4181     8, 0x3284, 0x4E94, 0,
4182     8, 0x3285, 0x516D, 0,
4183     8, 0x3286, 0x4E03, 0,
4184     8, 0x3287, 0x516B, 0,
4185     8, 0x3288, 0x4E5D, 0,
4186     8, 0x3289, 0x5341, 0,
4187     8, 0x328A, 0x6708, 0,
4188     8, 0x328B, 0x706B, 0,
4189     8, 0x328C, 0x6C34, 0,
4190     8, 0x328D, 0x6728, 0,
4191     8, 0x328E, 0x91D1, 0,
4192     8, 0x328F, 0x571F, 0,
4193     8, 0x3290, 0x65E5, 0,
4194     8, 0x3291, 0x682A, 0,
4195     8, 0x3292, 0x6709, 0,
4196     8, 0x3293, 0x793E, 0,
4197     8, 0x3294, 0x540D, 0,
4198     8, 0x3295, 0x7279, 0,
4199     8, 0x3296, 0x8CA1, 0,
4200     8, 0x3297, 0x795D, 0,
4201     8, 0x3298, 0x52B4, 0,
4202     8, 0x3299, 0x79D8, 0,
4203     8, 0x329A, 0x7537, 0,
4204     8, 0x329B, 0x5973, 0,
4205     8, 0x329C, 0x9069, 0,
4206     8, 0x329D, 0x512A, 0,
4207     8, 0x329E, 0x5370, 0,
4208     8, 0x329F, 0x6CE8, 0,
4209     8, 0x32A0, 0x9805, 0,
4210     8, 0x32A1, 0x4F11, 0,
4211     8, 0x32A2, 0x5199, 0,
4212     8, 0x32A3, 0x6B63, 0,
4213     8, 0x32A4, 0x4E0A, 0,
4214     8, 0x32A5, 0x4E2D, 0,
4215     8, 0x32A6, 0x4E0B, 0,
4216     8, 0x32A7, 0x5DE6, 0,
4217     8, 0x32A8, 0x53F3, 0,
4218     8, 0x32A9, 0x533B, 0,
4219     8, 0x32AA, 0x5B97, 0,
4220     8, 0x32AB, 0x5B66, 0,
4221     8, 0x32AC, 0x76E3, 0,
4222     8, 0x32AD, 0x4F01, 0,
4223     8, 0x32AE, 0x8CC7, 0,
4224     8, 0x32AF, 0x5354, 0,
4225     8, 0x32B0, 0x591C, 0,
4226     16, 0x32C0, 0x0031, 0x6708, 0,
4227     16, 0x32C1, 0x0032, 0x6708, 0,
4228     16, 0x32C2, 0x0033, 0x6708, 0,
4229     16, 0x32C3, 0x0034, 0x6708, 0,
4230     16, 0x32C4, 0x0035, 0x6708, 0,
4231     16, 0x32C5, 0x0036, 0x6708, 0,
4232     16, 0x32C6, 0x0037, 0x6708, 0,
4233     16, 0x32C7, 0x0038, 0x6708, 0,
4234     16, 0x32C8, 0x0039, 0x6708, 0,
4235     16, 0x32C9, 0x0031, 0x0030, 0x6708, 0,
4236     16, 0x32CA, 0x0031, 0x0031, 0x6708, 0,
4237     16, 0x32CB, 0x0031, 0x0032, 0x6708, 0,
4238     8, 0x32D0, 0x30A2, 0,
4239     8, 0x32D1, 0x30A4, 0,
4240     8, 0x32D2, 0x30A6, 0,
4241     8, 0x32D3, 0x30A8, 0,
4242     8, 0x32D4, 0x30AA, 0,
4243     8, 0x32D5, 0x30AB, 0,
4244     8, 0x32D6, 0x30AD, 0,
4245     8, 0x32D7, 0x30AF, 0,
4246     8, 0x32D8, 0x30B1, 0,
4247     8, 0x32D9, 0x30B3, 0,
4248     8, 0x32DA, 0x30B5, 0,
4249     8, 0x32DB, 0x30B7, 0,
4250     8, 0x32DC, 0x30B9, 0,
4251     8, 0x32DD, 0x30BB, 0,
4252     8, 0x32DE, 0x30BD, 0,
4253     8, 0x32DF, 0x30BF, 0,
4254     8, 0x32E0, 0x30C1, 0,
4255     8, 0x32E1, 0x30C4, 0,
4256     8, 0x32E2, 0x30C6, 0,
4257     8, 0x32E3, 0x30C8, 0,
4258     8, 0x32E4, 0x30CA, 0,
4259     8, 0x32E5, 0x30CB, 0,
4260     8, 0x32E6, 0x30CC, 0,
4261     8, 0x32E7, 0x30CD, 0,
4262     8, 0x32E8, 0x30CE, 0,
4263     8, 0x32E9, 0x30CF, 0,
4264     8, 0x32EA, 0x30D2, 0,
4265     8, 0x32EB, 0x30D5, 0,
4266     8, 0x32EC, 0x30D8, 0,
4267     8, 0x32ED, 0x30DB, 0,
4268     8, 0x32EE, 0x30DE, 0,
4269     8, 0x32EF, 0x30DF, 0,
4270     8, 0x32F0, 0x30E0, 0,
4271     8, 0x32F1, 0x30E1, 0,
4272     8, 0x32F2, 0x30E2, 0,
4273     8, 0x32F3, 0x30E4, 0,
4274     8, 0x32F4, 0x30E6, 0,
4275     8, 0x32F5, 0x30E8, 0,
4276     8, 0x32F6, 0x30E9, 0,
4277     8, 0x32F7, 0x30EA, 0,
4278     8, 0x32F8, 0x30EB, 0,
4279     8, 0x32F9, 0x30EC, 0,
4280     8, 0x32FA, 0x30ED, 0,
4281     8, 0x32FB, 0x30EF, 0,
4282     8, 0x32FC, 0x30F0, 0,
4283     8, 0x32FD, 0x30F1, 0,
4284     8, 0x32FE, 0x30F2, 0,
4285     15, 0x3300, 0x30A2, 0x30D1, 0x30FC, 0x30C8, 0,
4286     15, 0x3301, 0x30A2, 0x30EB, 0x30D5, 0x30A1, 0,
4287     15, 0x3302, 0x30A2, 0x30F3, 0x30DA, 0x30A2, 0,
4288     15, 0x3303, 0x30A2, 0x30FC, 0x30EB, 0,
4289     15, 0x3304, 0x30A4, 0x30CB, 0x30F3, 0x30B0, 0,
4290     15, 0x3305, 0x30A4, 0x30F3, 0x30C1, 0,
4291     15, 0x3306, 0x30A6, 0x30A9, 0x30F3, 0,
4292     15, 0x3307, 0x30A8, 0x30B9, 0x30AF, 0x30FC, 0x30C9, 0,
4293     15, 0x3308, 0x30A8, 0x30FC, 0x30AB, 0x30FC, 0,
4294     15, 0x3309, 0x30AA, 0x30F3, 0x30B9, 0,
4295     15, 0x330A, 0x30AA, 0x30FC, 0x30E0, 0,
4296     15, 0x330B, 0x30AB, 0x30A4, 0x30EA, 0,
4297     15, 0x330C, 0x30AB, 0x30E9, 0x30C3, 0x30C8, 0,
4298     15, 0x330D, 0x30AB, 0x30ED, 0x30EA, 0x30FC, 0,
4299     15, 0x330E, 0x30AC, 0x30ED, 0x30F3, 0,
4300     15, 0x330F, 0x30AC, 0x30F3, 0x30DE, 0,
4301     15, 0x3310, 0x30AE, 0x30AC, 0,
4302     15, 0x3311, 0x30AE, 0x30CB, 0x30FC, 0,
4303     15, 0x3312, 0x30AD, 0x30E5, 0x30EA, 0x30FC, 0,
4304     15, 0x3313, 0x30AE, 0x30EB, 0x30C0, 0x30FC, 0,
4305     15, 0x3314, 0x30AD, 0x30ED, 0,
4306     15, 0x3315, 0x30AD, 0x30ED, 0x30B0, 0x30E9, 0x30E0, 0,
4307     15, 0x3316, 0x30AD, 0x30ED, 0x30E1, 0x30FC, 0x30C8, 0x30EB, 0,
4308     15, 0x3317, 0x30AD, 0x30ED, 0x30EF, 0x30C3, 0x30C8, 0,
4309     15, 0x3318, 0x30B0, 0x30E9, 0x30E0, 0,
4310     15, 0x3319, 0x30B0, 0x30E9, 0x30E0, 0x30C8, 0x30F3, 0,
4311     15, 0x331A, 0x30AF, 0x30EB, 0x30BC, 0x30A4, 0x30ED, 0,
4312     15, 0x331B, 0x30AF, 0x30ED, 0x30FC, 0x30CD, 0,
4313     15, 0x331C, 0x30B1, 0x30FC, 0x30B9, 0,
4314     15, 0x331D, 0x30B3, 0x30EB, 0x30CA, 0,
4315     15, 0x331E, 0x30B3, 0x30FC, 0x30DD, 0,
4316     15, 0x331F, 0x30B5, 0x30A4, 0x30AF, 0x30EB, 0,
4317     15, 0x3320, 0x30B5, 0x30F3, 0x30C1, 0x30FC, 0x30E0, 0,
4318     15, 0x3321, 0x30B7, 0x30EA, 0x30F3, 0x30B0, 0,
4319     15, 0x3322, 0x30BB, 0x30F3, 0x30C1, 0,
4320     15, 0x3323, 0x30BB, 0x30F3, 0x30C8, 0,
4321     15, 0x3324, 0x30C0, 0x30FC, 0x30B9, 0,
4322     15, 0x3325, 0x30C7, 0x30B7, 0,
4323     15, 0x3326, 0x30C9, 0x30EB, 0,
4324     15, 0x3327, 0x30C8, 0x30F3, 0,
4325     15, 0x3328, 0x30CA, 0x30CE, 0,
4326     15, 0x3329, 0x30CE, 0x30C3, 0x30C8, 0,
4327     15, 0x332A, 0x30CF, 0x30A4, 0x30C4, 0,
4328     15, 0x332B, 0x30D1, 0x30FC, 0x30BB, 0x30F3, 0x30C8, 0,
4329     15, 0x332C, 0x30D1, 0x30FC, 0x30C4, 0,
4330     15, 0x332D, 0x30D0, 0x30FC, 0x30EC, 0x30EB, 0,
4331     15, 0x332E, 0x30D4, 0x30A2, 0x30B9, 0x30C8, 0x30EB, 0,
4332     15, 0x332F, 0x30D4, 0x30AF, 0x30EB, 0,
4333     15, 0x3330, 0x30D4, 0x30B3, 0,
4334     15, 0x3331, 0x30D3, 0x30EB, 0,
4335     15, 0x3332, 0x30D5, 0x30A1, 0x30E9, 0x30C3, 0x30C9, 0,
4336     15, 0x3333, 0x30D5, 0x30A3, 0x30FC, 0x30C8, 0,
4337     15, 0x3334, 0x30D6, 0x30C3, 0x30B7, 0x30A7, 0x30EB, 0,
4338     15, 0x3335, 0x30D5, 0x30E9, 0x30F3, 0,
4339     15, 0x3336, 0x30D8, 0x30AF, 0x30BF, 0x30FC, 0x30EB, 0,
4340     15, 0x3337, 0x30DA, 0x30BD, 0,
4341     15, 0x3338, 0x30DA, 0x30CB, 0x30D2, 0,
4342     15, 0x3339, 0x30D8, 0x30EB, 0x30C4, 0,
4343     15, 0x333A, 0x30DA, 0x30F3, 0x30B9, 0,
4344     15, 0x333B, 0x30DA, 0x30FC, 0x30B8, 0,
4345     15, 0x333C, 0x30D9, 0x30FC, 0x30BF, 0,
4346     15, 0x333D, 0x30DD, 0x30A4, 0x30F3, 0x30C8, 0,
4347     15, 0x333E, 0x30DC, 0x30EB, 0x30C8, 0,
4348     15, 0x333F, 0x30DB, 0x30F3, 0,
4349     15, 0x3340, 0x30DD, 0x30F3, 0x30C9, 0,
4350     15, 0x3341, 0x30DB, 0x30FC, 0x30EB, 0,
4351     15, 0x3342, 0x30DB, 0x30FC, 0x30F3, 0,
4352     15, 0x3343, 0x30DE, 0x30A4, 0x30AF, 0x30ED, 0,
4353     15, 0x3344, 0x30DE, 0x30A4, 0x30EB, 0,
4354     15, 0x3345, 0x30DE, 0x30C3, 0x30CF, 0,
4355     15, 0x3346, 0x30DE, 0x30EB, 0x30AF, 0,
4356     15, 0x3347, 0x30DE, 0x30F3, 0x30B7, 0x30E7, 0x30F3, 0,
4357     15, 0x3348, 0x30DF, 0x30AF, 0x30ED, 0x30F3, 0,
4358     15, 0x3349, 0x30DF, 0x30EA, 0,
4359     15, 0x334A, 0x30DF, 0x30EA, 0x30D0, 0x30FC, 0x30EB, 0,
4360     15, 0x334B, 0x30E1, 0x30AC, 0,
4361     15, 0x334C, 0x30E1, 0x30AC, 0x30C8, 0x30F3, 0,
4362     15, 0x334D, 0x30E1, 0x30FC, 0x30C8, 0x30EB, 0,
4363     15, 0x334E, 0x30E4, 0x30FC, 0x30C9, 0,
4364     15, 0x334F, 0x30E4, 0x30FC, 0x30EB, 0,
4365     15, 0x3350, 0x30E6, 0x30A2, 0x30F3, 0,
4366     15, 0x3351, 0x30EA, 0x30C3, 0x30C8, 0x30EB, 0,
4367     15, 0x3352, 0x30EA, 0x30E9, 0,
4368     15, 0x3353, 0x30EB, 0x30D4, 0x30FC, 0,
4369     15, 0x3354, 0x30EB, 0x30FC, 0x30D6, 0x30EB, 0,
4370     15, 0x3355, 0x30EC, 0x30E0, 0,
4371     15, 0x3356, 0x30EC, 0x30F3, 0x30C8, 0x30B2, 0x30F3, 0,
4372     15, 0x3357, 0x30EF, 0x30C3, 0x30C8, 0,
4373     16, 0x3358, 0x0030, 0x70B9, 0,
4374     16, 0x3359, 0x0031, 0x70B9, 0,
4375     16, 0x335A, 0x0032, 0x70B9, 0,
4376     16, 0x335B, 0x0033, 0x70B9, 0,
4377     16, 0x335C, 0x0034, 0x70B9, 0,
4378     16, 0x335D, 0x0035, 0x70B9, 0,
4379     16, 0x335E, 0x0036, 0x70B9, 0,
4380     16, 0x335F, 0x0037, 0x70B9, 0,
4381     16, 0x3360, 0x0038, 0x70B9, 0,
4382     16, 0x3361, 0x0039, 0x70B9, 0,
4383     16, 0x3362, 0x0031, 0x0030, 0x70B9, 0,
4384     16, 0x3363, 0x0031, 0x0031, 0x70B9, 0,
4385     16, 0x3364, 0x0031, 0x0032, 0x70B9, 0,
4386     16, 0x3365, 0x0031, 0x0033, 0x70B9, 0,
4387     16, 0x3366, 0x0031, 0x0034, 0x70B9, 0,
4388     16, 0x3367, 0x0031, 0x0035, 0x70B9, 0,
4389     16, 0x3368, 0x0031, 0x0036, 0x70B9, 0,
4390     16, 0x3369, 0x0031, 0x0037, 0x70B9, 0,
4391     16, 0x336A, 0x0031, 0x0038, 0x70B9, 0,
4392     16, 0x336B, 0x0031, 0x0039, 0x70B9, 0,
4393     16, 0x336C, 0x0032, 0x0030, 0x70B9, 0,
4394     16, 0x336D, 0x0032, 0x0031, 0x70B9, 0,
4395     16, 0x336E, 0x0032, 0x0032, 0x70B9, 0,
4396     16, 0x336F, 0x0032, 0x0033, 0x70B9, 0,
4397     16, 0x3370, 0x0032, 0x0034, 0x70B9, 0,
4398     15, 0x3371, 0x0068, 0x0050, 0x0061, 0,
4399     15, 0x3372, 0x0064, 0x0061, 0,
4400     15, 0x3373, 0x0041, 0x0055, 0,
4401     15, 0x3374, 0x0062, 0x0061, 0x0072, 0,
4402     15, 0x3375, 0x006F, 0x0056, 0,
4403     15, 0x3376, 0x0070, 0x0063, 0,
4404     15, 0x337B, 0x5E73, 0x6210, 0,
4405     15, 0x337C, 0x662D, 0x548C, 0,
4406     15, 0x337D, 0x5927, 0x6B63, 0,
4407     15, 0x337E, 0x660E, 0x6CBB, 0,
4408     15, 0x337F, 0x682A, 0x5F0F, 0x4F1A, 0x793E, 0,
4409     15, 0x3380, 0x0070, 0x0041, 0,
4410     15, 0x3381, 0x006E, 0x0041, 0,
4411     15, 0x3382, 0x03BC, 0x0041, 0,
4412     15, 0x3383, 0x006D, 0x0041, 0,
4413     15, 0x3384, 0x006B, 0x0041, 0,
4414     15, 0x3385, 0x004B, 0x0042, 0,
4415     15, 0x3386, 0x004D, 0x0042, 0,
4416     15, 0x3387, 0x0047, 0x0042, 0,
4417     15, 0x3388, 0x0063, 0x0061, 0x006C, 0,
4418     15, 0x3389, 0x006B, 0x0063, 0x0061, 0x006C, 0,
4419     15, 0x338A, 0x0070, 0x0046, 0,
4420     15, 0x338B, 0x006E, 0x0046, 0,
4421     15, 0x338C, 0x03BC, 0x0046, 0,
4422     15, 0x338D, 0x03BC, 0x0067, 0,
4423     15, 0x338E, 0x006D, 0x0067, 0,
4424     15, 0x338F, 0x006B, 0x0067, 0,
4425     15, 0x3390, 0x0048, 0x007A, 0,
4426     15, 0x3391, 0x006B, 0x0048, 0x007A, 0,
4427     15, 0x3392, 0x004D, 0x0048, 0x007A, 0,
4428     15, 0x3393, 0x0047, 0x0048, 0x007A, 0,
4429     15, 0x3394, 0x0054, 0x0048, 0x007A, 0,
4430     15, 0x3395, 0x03BC, 0x2113, 0,
4431     15, 0x3396, 0x006D, 0x2113, 0,
4432     15, 0x3397, 0x0064, 0x2113, 0,
4433     15, 0x3398, 0x006B, 0x2113, 0,
4434     15, 0x3399, 0x0066, 0x006D, 0,
4435     15, 0x339A, 0x006E, 0x006D, 0,
4436     15, 0x339B, 0x03BC, 0x006D, 0,
4437     15, 0x339C, 0x006D, 0x006D, 0,
4438     15, 0x339D, 0x0063, 0x006D, 0,
4439     15, 0x339E, 0x006B, 0x006D, 0,
4440     15, 0x339F, 0x006D, 0x006D, 0x00B2, 0,
4441     15, 0x33A0, 0x0063, 0x006D, 0x00B2, 0,
4442     15, 0x33A1, 0x006D, 0x00B2, 0,
4443     15, 0x33A2, 0x006B, 0x006D, 0x00B2, 0,
4444     15, 0x33A3, 0x006D, 0x006D, 0x00B3, 0,
4445     15, 0x33A4, 0x0063, 0x006D, 0x00B3, 0,
4446     15, 0x33A5, 0x006D, 0x00B3, 0,
4447     15, 0x33A6, 0x006B, 0x006D, 0x00B3, 0,
4448     15, 0x33A7, 0x006D, 0x2215, 0x0073, 0,
4449     15, 0x33A8, 0x006D, 0x2215, 0x0073, 0x00B2, 0,
4450     15, 0x33A9, 0x0050, 0x0061, 0,
4451     15, 0x33AA, 0x006B, 0x0050, 0x0061, 0,
4452     15, 0x33AB, 0x004D, 0x0050, 0x0061, 0,
4453     15, 0x33AC, 0x0047, 0x0050, 0x0061, 0,
4454     15, 0x33AD, 0x0072, 0x0061, 0x0064, 0,
4455     15, 0x33AE, 0x0072, 0x0061, 0x0064, 0x2215, 0x0073, 0,
4456     15, 0x33AF, 0x0072, 0x0061, 0x0064, 0x2215, 0x0073, 0x00B2, 0,
4457     15, 0x33B0, 0x0070, 0x0073, 0,
4458     15, 0x33B1, 0x006E, 0x0073, 0,
4459     15, 0x33B2, 0x03BC, 0x0073, 0,
4460     15, 0x33B3, 0x006D, 0x0073, 0,
4461     15, 0x33B4, 0x0070, 0x0056, 0,
4462     15, 0x33B5, 0x006E, 0x0056, 0,
4463     15, 0x33B6, 0x03BC, 0x0056, 0,
4464     15, 0x33B7, 0x006D, 0x0056, 0,
4465     15, 0x33B8, 0x006B, 0x0056, 0,
4466     15, 0x33B9, 0x004D, 0x0056, 0,
4467     15, 0x33BA, 0x0070, 0x0057, 0,
4468     15, 0x33BB, 0x006E, 0x0057, 0,
4469     15, 0x33BC, 0x03BC, 0x0057, 0,
4470     15, 0x33BD, 0x006D, 0x0057, 0,
4471     15, 0x33BE, 0x006B, 0x0057, 0,
4472     15, 0x33BF, 0x004D, 0x0057, 0,
4473     15, 0x33C0, 0x006B, 0x03A9, 0,
4474     15, 0x33C1, 0x004D, 0x03A9, 0,
4475     15, 0x33C2, 0x0061, 0x002E, 0x006D, 0x002E, 0,
4476     15, 0x33C3, 0x0042, 0x0071, 0,
4477     15, 0x33C4, 0x0063, 0x0063, 0,
4478     15, 0x33C5, 0x0063, 0x0064, 0,
4479     15, 0x33C6, 0x0043, 0x2215, 0x006B, 0x0067, 0,
4480     15, 0x33C7, 0x0043, 0x006F, 0x002E, 0,
4481     15, 0x33C8, 0x0064, 0x0042, 0,
4482     15, 0x33C9, 0x0047, 0x0079, 0,
4483     15, 0x33CA, 0x0068, 0x0061, 0,
4484     15, 0x33CB, 0x0048, 0x0050, 0,
4485     15, 0x33CC, 0x0069, 0x006E, 0,
4486     15, 0x33CD, 0x004B, 0x004B, 0,
4487     15, 0x33CE, 0x004B, 0x004D, 0,
4488     15, 0x33CF, 0x006B, 0x0074, 0,
4489     15, 0x33D0, 0x006C, 0x006D, 0,
4490     15, 0x33D1, 0x006C, 0x006E, 0,
4491     15, 0x33D2, 0x006C, 0x006F, 0x0067, 0,
4492     15, 0x33D3, 0x006C, 0x0078, 0,
4493     15, 0x33D4, 0x006D, 0x0062, 0,
4494     15, 0x33D5, 0x006D, 0x0069, 0x006C, 0,
4495     15, 0x33D6, 0x006D, 0x006F, 0x006C, 0,
4496     15, 0x33D7, 0x0050, 0x0048, 0,
4497     15, 0x33D8, 0x0070, 0x002E, 0x006D, 0x002E, 0,
4498     15, 0x33D9, 0x0050, 0x0050, 0x004D, 0,
4499     15, 0x33DA, 0x0050, 0x0052, 0,
4500     15, 0x33DB, 0x0073, 0x0072, 0,
4501     15, 0x33DC, 0x0053, 0x0076, 0,
4502     15, 0x33DD, 0x0057, 0x0062, 0,
4503     16, 0x33E0, 0x0031, 0x65E5, 0,
4504     16, 0x33E1, 0x0032, 0x65E5, 0,
4505     16, 0x33E2, 0x0033, 0x65E5, 0,
4506     16, 0x33E3, 0x0034, 0x65E5, 0,
4507     16, 0x33E4, 0x0035, 0x65E5, 0,
4508     16, 0x33E5, 0x0036, 0x65E5, 0,
4509     16, 0x33E6, 0x0037, 0x65E5, 0,
4510     16, 0x33E7, 0x0038, 0x65E5, 0,
4511     16, 0x33E8, 0x0039, 0x65E5, 0,
4512     16, 0x33E9, 0x0031, 0x0030, 0x65E5, 0,
4513     16, 0x33EA, 0x0031, 0x0031, 0x65E5, 0,
4514     16, 0x33EB, 0x0031, 0x0032, 0x65E5, 0,
4515     16, 0x33EC, 0x0031, 0x0033, 0x65E5, 0,
4516     16, 0x33ED, 0x0031, 0x0034, 0x65E5, 0,
4517     16, 0x33EE, 0x0031, 0x0035, 0x65E5, 0,
4518     16, 0x33EF, 0x0031, 0x0036, 0x65E5, 0,
4519     16, 0x33F0, 0x0031, 0x0037, 0x65E5, 0,
4520     16, 0x33F1, 0x0031, 0x0038, 0x65E5, 0,
4521     16, 0x33F2, 0x0031, 0x0039, 0x65E5, 0,
4522     16, 0x33F3, 0x0032, 0x0030, 0x65E5, 0,
4523     16, 0x33F4, 0x0032, 0x0031, 0x65E5, 0,
4524     16, 0x33F5, 0x0032, 0x0032, 0x65E5, 0,
4525     16, 0x33F6, 0x0032, 0x0033, 0x65E5, 0,
4526     16, 0x33F7, 0x0032, 0x0034, 0x65E5, 0,
4527     16, 0x33F8, 0x0032, 0x0035, 0x65E5, 0,
4528     16, 0x33F9, 0x0032, 0x0036, 0x65E5, 0,
4529     16, 0x33FA, 0x0032, 0x0037, 0x65E5, 0,
4530     16, 0x33FB, 0x0032, 0x0038, 0x65E5, 0,
4531     16, 0x33FC, 0x0032, 0x0039, 0x65E5, 0,
4532     16, 0x33FD, 0x0033, 0x0030, 0x65E5, 0,
4533     16, 0x33FE, 0x0033, 0x0031, 0x65E5, 0,
4534     1, 0xF900, 0x8C48, 0,
4535     1, 0xF901, 0x66F4, 0,
4536     1, 0xF902, 0x8ECA, 0,
4537     1, 0xF903, 0x8CC8, 0,
4538     1, 0xF904, 0x6ED1, 0,
4539     1, 0xF905, 0x4E32, 0,
4540     1, 0xF906, 0x53E5, 0,
4541     1, 0xF907, 0x9F9C, 0,
4542     1, 0xF908, 0x9F9C, 0,
4543     1, 0xF909, 0x5951, 0,
4544     1, 0xF90A, 0x91D1, 0,
4545     1, 0xF90B, 0x5587, 0,
4546     1, 0xF90C, 0x5948, 0,
4547     1, 0xF90D, 0x61F6, 0,
4548     1, 0xF90E, 0x7669, 0,
4549     1, 0xF90F, 0x7F85, 0,
4550     1, 0xF910, 0x863F, 0,
4551     1, 0xF911, 0x87BA, 0,
4552     1, 0xF912, 0x88F8, 0,
4553     1, 0xF913, 0x908F, 0,
4554     1, 0xF914, 0x6A02, 0,
4555     1, 0xF915, 0x6D1B, 0,
4556     1, 0xF916, 0x70D9, 0,
4557     1, 0xF917, 0x73DE, 0,
4558     1, 0xF918, 0x843D, 0,
4559     1, 0xF919, 0x916A, 0,
4560     1, 0xF91A, 0x99F1, 0,
4561     1, 0xF91B, 0x4E82, 0,
4562     1, 0xF91C, 0x5375, 0,
4563     1, 0xF91D, 0x6B04, 0,
4564     1, 0xF91E, 0x721B, 0,
4565     1, 0xF91F, 0x862D, 0,
4566     1, 0xF920, 0x9E1E, 0,
4567     1, 0xF921, 0x5D50, 0,
4568     1, 0xF922, 0x6FEB, 0,
4569     1, 0xF923, 0x85CD, 0,
4570     1, 0xF924, 0x8964, 0,
4571     1, 0xF925, 0x62C9, 0,
4572     1, 0xF926, 0x81D8, 0,
4573     1, 0xF927, 0x881F, 0,
4574     1, 0xF928, 0x5ECA, 0,
4575     1, 0xF929, 0x6717, 0,
4576     1, 0xF92A, 0x6D6A, 0,
4577     1, 0xF92B, 0x72FC, 0,
4578     1, 0xF92C, 0x90CE, 0,
4579     1, 0xF92D, 0x4F86, 0,
4580     1, 0xF92E, 0x51B7, 0,
4581     1, 0xF92F, 0x52DE, 0,
4582     1, 0xF930, 0x64C4, 0,
4583     1, 0xF931, 0x6AD3, 0,
4584     1, 0xF932, 0x7210, 0,
4585     1, 0xF933, 0x76E7, 0,
4586     1, 0xF934, 0x8001, 0,
4587     1, 0xF935, 0x8606, 0,
4588     1, 0xF936, 0x865C, 0,
4589     1, 0xF937, 0x8DEF, 0,
4590     1, 0xF938, 0x9732, 0,
4591     1, 0xF939, 0x9B6F, 0,
4592     1, 0xF93A, 0x9DFA, 0,
4593     1, 0xF93B, 0x788C, 0,
4594     1, 0xF93C, 0x797F, 0,
4595     1, 0xF93D, 0x7DA0, 0,
4596     1, 0xF93E, 0x83C9, 0,
4597     1, 0xF93F, 0x9304, 0,
4598     1, 0xF940, 0x9E7F, 0,
4599     1, 0xF941, 0x8AD6, 0,
4600     1, 0xF942, 0x58DF, 0,
4601     1, 0xF943, 0x5F04, 0,
4602     1, 0xF944, 0x7C60, 0,
4603     1, 0xF945, 0x807E, 0,
4604     1, 0xF946, 0x7262, 0,
4605     1, 0xF947, 0x78CA, 0,
4606     1, 0xF948, 0x8CC2, 0,
4607     1, 0xF949, 0x96F7, 0,
4608     1, 0xF94A, 0x58D8, 0,
4609     1, 0xF94B, 0x5C62, 0,
4610     1, 0xF94C, 0x6A13, 0,
4611     1, 0xF94D, 0x6DDA, 0,
4612     1, 0xF94E, 0x6F0F, 0,
4613     1, 0xF94F, 0x7D2F, 0,
4614     1, 0xF950, 0x7E37, 0,
4615     1, 0xF951, 0x96FB, 0,
4616     1, 0xF952, 0x52D2, 0,
4617     1, 0xF953, 0x808B, 0,
4618     1, 0xF954, 0x51DC, 0,
4619     1, 0xF955, 0x51CC, 0,
4620     1, 0xF956, 0x7A1C, 0,
4621     1, 0xF957, 0x7DBE, 0,
4622     1, 0xF958, 0x83F1, 0,
4623     1, 0xF959, 0x9675, 0,
4624     1, 0xF95A, 0x8B80, 0,
4625     1, 0xF95B, 0x62CF, 0,
4626     1, 0xF95C, 0x6A02, 0,
4627     1, 0xF95D, 0x8AFE, 0,
4628     1, 0xF95E, 0x4E39, 0,
4629     1, 0xF95F, 0x5BE7, 0,
4630     1, 0xF960, 0x6012, 0,
4631     1, 0xF961, 0x7387, 0,
4632     1, 0xF962, 0x7570, 0,
4633     1, 0xF963, 0x5317, 0,
4634     1, 0xF964, 0x78FB, 0,
4635     1, 0xF965, 0x4FBF, 0,
4636     1, 0xF966, 0x5FA9, 0,
4637     1, 0xF967, 0x4E0D, 0,
4638     1, 0xF968, 0x6CCC, 0,
4639     1, 0xF969, 0x6578, 0,
4640     1, 0xF96A, 0x7D22, 0,
4641     1, 0xF96B, 0x53C3, 0,
4642     1, 0xF96C, 0x585E, 0,
4643     1, 0xF96D, 0x7701, 0,
4644     1, 0xF96E, 0x8449, 0,
4645     1, 0xF96F, 0x8AAA, 0,
4646     1, 0xF970, 0x6BBA, 0,
4647     1, 0xF971, 0x8FB0, 0,
4648     1, 0xF972, 0x6C88, 0,
4649     1, 0xF973, 0x62FE, 0,
4650     1, 0xF974, 0x82E5, 0,
4651     1, 0xF975, 0x63A0, 0,
4652     1, 0xF976, 0x7565, 0,
4653     1, 0xF977, 0x4EAE, 0,
4654     1, 0xF978, 0x5169, 0,
4655     1, 0xF979, 0x51C9, 0,
4656     1, 0xF97A, 0x6881, 0,
4657     1, 0xF97B, 0x7CE7, 0,
4658     1, 0xF97C, 0x826F, 0,
4659     1, 0xF97D, 0x8AD2, 0,
4660     1, 0xF97E, 0x91CF, 0,
4661     1, 0xF97F, 0x52F5, 0,
4662     1, 0xF980, 0x5442, 0,
4663     1, 0xF981, 0x5973, 0,
4664     1, 0xF982, 0x5EEC, 0,
4665     1, 0xF983, 0x65C5, 0,
4666     1, 0xF984, 0x6FFE, 0,
4667     1, 0xF985, 0x792A, 0,
4668     1, 0xF986, 0x95AD, 0,
4669     1, 0xF987, 0x9A6A, 0,
4670     1, 0xF988, 0x9E97, 0,
4671     1, 0xF989, 0x9ECE, 0,
4672     1, 0xF98A, 0x529B, 0,
4673     1, 0xF98B, 0x66C6, 0,
4674     1, 0xF98C, 0x6B77, 0,
4675     1, 0xF98D, 0x8F62, 0,
4676     1, 0xF98E, 0x5E74, 0,
4677     1, 0xF98F, 0x6190, 0,
4678     1, 0xF990, 0x6200, 0,
4679     1, 0xF991, 0x649A, 0,
4680     1, 0xF992, 0x6F23, 0,
4681     1, 0xF993, 0x7149, 0,
4682     1, 0xF994, 0x7489, 0,
4683     1, 0xF995, 0x79CA, 0,
4684     1, 0xF996, 0x7DF4, 0,
4685     1, 0xF997, 0x806F, 0,
4686     1, 0xF998, 0x8F26, 0,
4687     1, 0xF999, 0x84EE, 0,
4688     1, 0xF99A, 0x9023, 0,
4689     1, 0xF99B, 0x934A, 0,
4690     1, 0xF99C, 0x5217, 0,
4691     1, 0xF99D, 0x52A3, 0,
4692     1, 0xF99E, 0x54BD, 0,
4693     1, 0xF99F, 0x70C8, 0,
4694     1, 0xF9A0, 0x88C2, 0,
4695     1, 0xF9A1, 0x8AAA, 0,
4696     1, 0xF9A2, 0x5EC9, 0,
4697     1, 0xF9A3, 0x5FF5, 0,
4698     1, 0xF9A4, 0x637B, 0,
4699     1, 0xF9A5, 0x6BAE, 0,
4700     1, 0xF9A6, 0x7C3E, 0,
4701     1, 0xF9A7, 0x7375, 0,
4702     1, 0xF9A8, 0x4EE4, 0,
4703     1, 0xF9A9, 0x56F9, 0,
4704     1, 0xF9AA, 0x5BE7, 0,
4705     1, 0xF9AB, 0x5DBA, 0,
4706     1, 0xF9AC, 0x601C, 0,
4707     1, 0xF9AD, 0x73B2, 0,
4708     1, 0xF9AE, 0x7469, 0,
4709     1, 0xF9AF, 0x7F9A, 0,
4710     1, 0xF9B0, 0x8046, 0,
4711     1, 0xF9B1, 0x9234, 0,
4712     1, 0xF9B2, 0x96F6, 0,
4713     1, 0xF9B3, 0x9748, 0,
4714     1, 0xF9B4, 0x9818, 0,
4715     1, 0xF9B5, 0x4F8B, 0,
4716     1, 0xF9B6, 0x79AE, 0,
4717     1, 0xF9B7, 0x91B4, 0,
4718     1, 0xF9B8, 0x96B8, 0,
4719     1, 0xF9B9, 0x60E1, 0,
4720     1, 0xF9BA, 0x4E86, 0,
4721     1, 0xF9BB, 0x50DA, 0,
4722     1, 0xF9BC, 0x5BEE, 0,
4723     1, 0xF9BD, 0x5C3F, 0,
4724     1, 0xF9BE, 0x6599, 0,
4725     1, 0xF9BF, 0x6A02, 0,
4726     1, 0xF9C0, 0x71CE, 0,
4727     1, 0xF9C1, 0x7642, 0,
4728     1, 0xF9C2, 0x84FC, 0,
4729     1, 0xF9C3, 0x907C, 0,
4730     1, 0xF9C4, 0x9F8D, 0,
4731     1, 0xF9C5, 0x6688, 0,
4732     1, 0xF9C6, 0x962E, 0,
4733     1, 0xF9C7, 0x5289, 0,
4734     1, 0xF9C8, 0x677B, 0,
4735     1, 0xF9C9, 0x67F3, 0,
4736     1, 0xF9CA, 0x6D41, 0,
4737     1, 0xF9CB, 0x6E9C, 0,
4738     1, 0xF9CC, 0x7409, 0,
4739     1, 0xF9CD, 0x7559, 0,
4740     1, 0xF9CE, 0x786B, 0,
4741     1, 0xF9CF, 0x7D10, 0,
4742     1, 0xF9D0, 0x985E, 0,
4743     1, 0xF9D1, 0x516D, 0,
4744     1, 0xF9D2, 0x622E, 0,
4745     1, 0xF9D3, 0x9678, 0,
4746     1, 0xF9D4, 0x502B, 0,
4747     1, 0xF9D5, 0x5D19, 0,
4748     1, 0xF9D6, 0x6DEA, 0,
4749     1, 0xF9D7, 0x8F2A, 0,
4750     1, 0xF9D8, 0x5F8B, 0,
4751     1, 0xF9D9, 0x6144, 0,
4752     1, 0xF9DA, 0x6817, 0,
4753     1, 0xF9DB, 0x7387, 0,
4754     1, 0xF9DC, 0x9686, 0,
4755     1, 0xF9DD, 0x5229, 0,
4756     1, 0xF9DE, 0x540F, 0,
4757     1, 0xF9DF, 0x5C65, 0,
4758     1, 0xF9E0, 0x6613, 0,
4759     1, 0xF9E1, 0x674E, 0,
4760     1, 0xF9E2, 0x68A8, 0,
4761     1, 0xF9E3, 0x6CE5, 0,
4762     1, 0xF9E4, 0x7406, 0,
4763     1, 0xF9E5, 0x75E2, 0,
4764     1, 0xF9E6, 0x7F79, 0,
4765     1, 0xF9E7, 0x88CF, 0,
4766     1, 0xF9E8, 0x88E1, 0,
4767     1, 0xF9E9, 0x91CC, 0,
4768     1, 0xF9EA, 0x96E2, 0,
4769     1, 0xF9EB, 0x533F, 0,
4770     1, 0xF9EC, 0x6EBA, 0,
4771     1, 0xF9ED, 0x541D, 0,
4772     1, 0xF9EE, 0x71D0, 0,
4773     1, 0xF9EF, 0x7498, 0,
4774     1, 0xF9F0, 0x85FA, 0,
4775     1, 0xF9F1, 0x96A3, 0,
4776     1, 0xF9F2, 0x9C57, 0,
4777     1, 0xF9F3, 0x9E9F, 0,
4778     1, 0xF9F4, 0x6797, 0,
4779     1, 0xF9F5, 0x6DCB, 0,
4780     1, 0xF9F6, 0x81E8, 0,
4781     1, 0xF9F7, 0x7ACB, 0,
4782     1, 0xF9F8, 0x7B20, 0,
4783     1, 0xF9F9, 0x7C92, 0,
4784     1, 0xF9FA, 0x72C0, 0,
4785     1, 0xF9FB, 0x7099, 0,
4786     1, 0xF9FC, 0x8B58, 0,
4787     1, 0xF9FD, 0x4EC0, 0,
4788     1, 0xF9FE, 0x8336, 0,
4789     1, 0xF9FF, 0x523A, 0,
4790     1, 0xFA00, 0x5207, 0,
4791     1, 0xFA01, 0x5EA6, 0,
4792     1, 0xFA02, 0x62D3, 0,
4793     1, 0xFA03, 0x7CD6, 0,
4794     1, 0xFA04, 0x5B85, 0,
4795     1, 0xFA05, 0x6D1E, 0,
4796     1, 0xFA06, 0x66B4, 0,
4797     1, 0xFA07, 0x8F3B, 0,
4798     1, 0xFA08, 0x884C, 0,
4799     1, 0xFA09, 0x964D, 0,
4800     1, 0xFA0A, 0x898B, 0,
4801     1, 0xFA0B, 0x5ED3, 0,
4802     1, 0xFA0C, 0x5140, 0,
4803     1, 0xFA0D, 0x55C0, 0,
4804     1, 0xFA10, 0x585A, 0,
4805     1, 0xFA12, 0x6674, 0,
4806     1, 0xFA15, 0x51DE, 0,
4807     1, 0xFA16, 0x732A, 0,
4808     1, 0xFA17, 0x76CA, 0,
4809     1, 0xFA18, 0x793C, 0,
4810     1, 0xFA19, 0x795E, 0,
4811     1, 0xFA1A, 0x7965, 0,
4812     1, 0xFA1B, 0x798F, 0,
4813     1, 0xFA1C, 0x9756, 0,
4814     1, 0xFA1D, 0x7CBE, 0,
4815     1, 0xFA1E, 0x7FBD, 0,
4816     1, 0xFA20, 0x8612, 0,
4817     1, 0xFA22, 0x8AF8, 0,
4818     1, 0xFA25, 0x9038, 0,
4819     1, 0xFA26, 0x90FD, 0,
4820     1, 0xFA2A, 0x98EF, 0,
4821     1, 0xFA2B, 0x98FC, 0,
4822     1, 0xFA2C, 0x9928, 0,
4823     1, 0xFA2D, 0x9DB4, 0,
4824     16, 0xFB00, 0x0066, 0x0066, 0,
4825     16, 0xFB01, 0x0066, 0x0069, 0,
4826     16, 0xFB02, 0x0066, 0x006C, 0,
4827     16, 0xFB03, 0x0066, 0x0066, 0x0069, 0,
4828     16, 0xFB04, 0x0066, 0x0066, 0x006C, 0,
4829     16, 0xFB05, 0x017F, 0x0074, 0,
4830     16, 0xFB06, 0x0073, 0x0074, 0,
4831     16, 0xFB13, 0x0574, 0x0576, 0,
4832     16, 0xFB14, 0x0574, 0x0565, 0,
4833     16, 0xFB15, 0x0574, 0x056B, 0,
4834     16, 0xFB16, 0x057E, 0x0576, 0,
4835     16, 0xFB17, 0x0574, 0x056D, 0,
4836     1, 0xFB1D, 0x05D9, 0x05B4, 0,
4837     1, 0xFB1F, 0x05F2, 0x05B7, 0,
4838     2, 0xFB20, 0x05E2, 0,
4839     2, 0xFB21, 0x05D0, 0,
4840     2, 0xFB22, 0x05D3, 0,
4841     2, 0xFB23, 0x05D4, 0,
4842     2, 0xFB24, 0x05DB, 0,
4843     2, 0xFB25, 0x05DC, 0,
4844     2, 0xFB26, 0x05DD, 0,
4845     2, 0xFB27, 0x05E8, 0,
4846     2, 0xFB28, 0x05EA, 0,
4847     2, 0xFB29, 0x002B, 0,
4848     1, 0xFB2A, 0x05E9, 0x05C1, 0,
4849     1, 0xFB2B, 0x05E9, 0x05C2, 0,
4850     1, 0xFB2C, 0xFB49, 0x05C1, 0,
4851     1, 0xFB2D, 0xFB49, 0x05C2, 0,
4852     1, 0xFB2E, 0x05D0, 0x05B7, 0,
4853     1, 0xFB2F, 0x05D0, 0x05B8, 0,
4854     1, 0xFB30, 0x05D0, 0x05BC, 0,
4855     1, 0xFB31, 0x05D1, 0x05BC, 0,
4856     1, 0xFB32, 0x05D2, 0x05BC, 0,
4857     1, 0xFB33, 0x05D3, 0x05BC, 0,
4858     1, 0xFB34, 0x05D4, 0x05BC, 0,
4859     1, 0xFB35, 0x05D5, 0x05BC, 0,
4860     1, 0xFB36, 0x05D6, 0x05BC, 0,
4861     1, 0xFB38, 0x05D8, 0x05BC, 0,
4862     1, 0xFB39, 0x05D9, 0x05BC, 0,
4863     1, 0xFB3A, 0x05DA, 0x05BC, 0,
4864     1, 0xFB3B, 0x05DB, 0x05BC, 0,
4865     1, 0xFB3C, 0x05DC, 0x05BC, 0,
4866     1, 0xFB3E, 0x05DE, 0x05BC, 0,
4867     1, 0xFB40, 0x05E0, 0x05BC, 0,
4868     1, 0xFB41, 0x05E1, 0x05BC, 0,
4869     1, 0xFB43, 0x05E3, 0x05BC, 0,
4870     1, 0xFB44, 0x05E4, 0x05BC, 0,
4871     1, 0xFB46, 0x05E6, 0x05BC, 0,
4872     1, 0xFB47, 0x05E7, 0x05BC, 0,
4873     1, 0xFB48, 0x05E8, 0x05BC, 0,
4874     1, 0xFB49, 0x05E9, 0x05BC, 0,
4875     1, 0xFB4A, 0x05EA, 0x05BC, 0,
4876     1, 0xFB4B, 0x05D5, 0x05B9, 0,
4877     1, 0xFB4C, 0x05D1, 0x05BF, 0,
4878     1, 0xFB4D, 0x05DB, 0x05BF, 0,
4879     1, 0xFB4E, 0x05E4, 0x05BF, 0,
4880     16, 0xFB4F, 0x05D0, 0x05DC, 0,
4881     7, 0xFB50, 0x0671, 0,
4882     6, 0xFB51, 0x0671, 0,
4883     7, 0xFB52, 0x067B, 0,
4884     6, 0xFB53, 0x067B, 0,
4885     4, 0xFB54, 0x067B, 0,
4886     5, 0xFB55, 0x067B, 0,
4887     7, 0xFB56, 0x067E, 0,
4888     6, 0xFB57, 0x067E, 0,
4889     4, 0xFB58, 0x067E, 0,
4890     5, 0xFB59, 0x067E, 0,
4891     7, 0xFB5A, 0x0680, 0,
4892     6, 0xFB5B, 0x0680, 0,
4893     4, 0xFB5C, 0x0680, 0,
4894     5, 0xFB5D, 0x0680, 0,
4895     7, 0xFB5E, 0x067A, 0,
4896     6, 0xFB5F, 0x067A, 0,
4897     4, 0xFB60, 0x067A, 0,
4898     5, 0xFB61, 0x067A, 0,
4899     7, 0xFB62, 0x067F, 0,
4900     6, 0xFB63, 0x067F, 0,
4901     4, 0xFB64, 0x067F, 0,
4902     5, 0xFB65, 0x067F, 0,
4903     7, 0xFB66, 0x0679, 0,
4904     6, 0xFB67, 0x0679, 0,
4905     4, 0xFB68, 0x0679, 0,
4906     5, 0xFB69, 0x0679, 0,
4907     7, 0xFB6A, 0x06A4, 0,
4908     6, 0xFB6B, 0x06A4, 0,
4909     4, 0xFB6C, 0x06A4, 0,
4910     5, 0xFB6D, 0x06A4, 0,
4911     7, 0xFB6E, 0x06A6, 0,
4912     6, 0xFB6F, 0x06A6, 0,
4913     4, 0xFB70, 0x06A6, 0,
4914     5, 0xFB71, 0x06A6, 0,
4915     7, 0xFB72, 0x0684, 0,
4916     6, 0xFB73, 0x0684, 0,
4917     4, 0xFB74, 0x0684, 0,
4918     5, 0xFB75, 0x0684, 0,
4919     7, 0xFB76, 0x0683, 0,
4920     6, 0xFB77, 0x0683, 0,
4921     4, 0xFB78, 0x0683, 0,
4922     5, 0xFB79, 0x0683, 0,
4923     7, 0xFB7A, 0x0686, 0,
4924     6, 0xFB7B, 0x0686, 0,
4925     4, 0xFB7C, 0x0686, 0,
4926     5, 0xFB7D, 0x0686, 0,
4927     7, 0xFB7E, 0x0687, 0,
4928     6, 0xFB7F, 0x0687, 0,
4929     4, 0xFB80, 0x0687, 0,
4930     5, 0xFB81, 0x0687, 0,
4931     7, 0xFB82, 0x068D, 0,
4932     6, 0xFB83, 0x068D, 0,
4933     7, 0xFB84, 0x068C, 0,
4934     6, 0xFB85, 0x068C, 0,
4935     7, 0xFB86, 0x068E, 0,
4936     6, 0xFB87, 0x068E, 0,
4937     7, 0xFB88, 0x0688, 0,
4938     6, 0xFB89, 0x0688, 0,
4939     7, 0xFB8A, 0x0698, 0,
4940     6, 0xFB8B, 0x0698, 0,
4941     7, 0xFB8C, 0x0691, 0,
4942     6, 0xFB8D, 0x0691, 0,
4943     7, 0xFB8E, 0x06A9, 0,
4944     6, 0xFB8F, 0x06A9, 0,
4945     4, 0xFB90, 0x06A9, 0,
4946     5, 0xFB91, 0x06A9, 0,
4947     7, 0xFB92, 0x06AF, 0,
4948     6, 0xFB93, 0x06AF, 0,
4949     4, 0xFB94, 0x06AF, 0,
4950     5, 0xFB95, 0x06AF, 0,
4951     7, 0xFB96, 0x06B3, 0,
4952     6, 0xFB97, 0x06B3, 0,
4953     4, 0xFB98, 0x06B3, 0,
4954     5, 0xFB99, 0x06B3, 0,
4955     7, 0xFB9A, 0x06B1, 0,
4956     6, 0xFB9B, 0x06B1, 0,
4957     4, 0xFB9C, 0x06B1, 0,
4958     5, 0xFB9D, 0x06B1, 0,
4959     7, 0xFB9E, 0x06BA, 0,
4960     6, 0xFB9F, 0x06BA, 0,
4961     7, 0xFBA0, 0x06BB, 0,
4962     6, 0xFBA1, 0x06BB, 0,
4963     4, 0xFBA2, 0x06BB, 0,
4964     5, 0xFBA3, 0x06BB, 0,
4965     7, 0xFBA4, 0x06C0, 0,
4966     6, 0xFBA5, 0x06C0, 0,
4967     7, 0xFBA6, 0x06C1, 0,
4968     6, 0xFBA7, 0x06C1, 0,
4969     4, 0xFBA8, 0x06C1, 0,
4970     5, 0xFBA9, 0x06C1, 0,
4971     7, 0xFBAA, 0x06BE, 0,
4972     6, 0xFBAB, 0x06BE, 0,
4973     4, 0xFBAC, 0x06BE, 0,
4974     5, 0xFBAD, 0x06BE, 0,
4975     7, 0xFBAE, 0x06D2, 0,
4976     6, 0xFBAF, 0x06D2, 0,
4977     7, 0xFBB0, 0x06D3, 0,
4978     6, 0xFBB1, 0x06D3, 0,
4979     7, 0xFBD3, 0x06AD, 0,
4980     6, 0xFBD4, 0x06AD, 0,
4981     4, 0xFBD5, 0x06AD, 0,
4982     5, 0xFBD6, 0x06AD, 0,
4983     7, 0xFBD7, 0x06C7, 0,
4984     6, 0xFBD8, 0x06C7, 0,
4985     7, 0xFBD9, 0x06C6, 0,
4986     6, 0xFBDA, 0x06C6, 0,
4987     7, 0xFBDB, 0x06C8, 0,
4988     6, 0xFBDC, 0x06C8, 0,
4989     7, 0xFBDD, 0x0677, 0,
4990     7, 0xFBDE, 0x06CB, 0,
4991     6, 0xFBDF, 0x06CB, 0,
4992     7, 0xFBE0, 0x06C5, 0,
4993     6, 0xFBE1, 0x06C5, 0,
4994     7, 0xFBE2, 0x06C9, 0,
4995     6, 0xFBE3, 0x06C9, 0,
4996     7, 0xFBE4, 0x06D0, 0,
4997     6, 0xFBE5, 0x06D0, 0,
4998     4, 0xFBE6, 0x06D0, 0,
4999     5, 0xFBE7, 0x06D0, 0,
5000     4, 0xFBE8, 0x0649, 0,
5001     5, 0xFBE9, 0x0649, 0,
5002     7, 0xFBEA, 0x0626, 0x0627, 0,
5003     6, 0xFBEB, 0x0626, 0x0627, 0,
5004     7, 0xFBEC, 0x0626, 0x06D5, 0,
5005     6, 0xFBED, 0x0626, 0x06D5, 0,
5006     7, 0xFBEE, 0x0626, 0x0648, 0,
5007     6, 0xFBEF, 0x0626, 0x0648, 0,
5008     7, 0xFBF0, 0x0626, 0x06C7, 0,
5009     6, 0xFBF1, 0x0626, 0x06C7, 0,
5010     7, 0xFBF2, 0x0626, 0x06C6, 0,
5011     6, 0xFBF3, 0x0626, 0x06C6, 0,
5012     7, 0xFBF4, 0x0626, 0x06C8, 0,
5013     6, 0xFBF5, 0x0626, 0x06C8, 0,
5014     7, 0xFBF6, 0x0626, 0x06D0, 0,
5015     6, 0xFBF7, 0x0626, 0x06D0, 0,
5016     4, 0xFBF8, 0x0626, 0x06D0, 0,
5017     7, 0xFBF9, 0x0626, 0x0649, 0,
5018     6, 0xFBFA, 0x0626, 0x0649, 0,
5019     4, 0xFBFB, 0x0626, 0x0649, 0,
5020     7, 0xFBFC, 0x06CC, 0,
5021     6, 0xFBFD, 0x06CC, 0,
5022     4, 0xFBFE, 0x06CC, 0,
5023     5, 0xFBFF, 0x06CC, 0,
5024     7, 0xFC00, 0x0626, 0x062C, 0,
5025     7, 0xFC01, 0x0626, 0x062D, 0,
5026     7, 0xFC02, 0x0626, 0x0645, 0,
5027     7, 0xFC03, 0x0626, 0x0649, 0,
5028     7, 0xFC04, 0x0626, 0x064A, 0,
5029     7, 0xFC05, 0x0628, 0x062C, 0,
5030     7, 0xFC06, 0x0628, 0x062D, 0,
5031     7, 0xFC07, 0x0628, 0x062E, 0,
5032     7, 0xFC08, 0x0628, 0x0645, 0,
5033     7, 0xFC09, 0x0628, 0x0649, 0,
5034     7, 0xFC0A, 0x0628, 0x064A, 0,
5035     7, 0xFC0B, 0x062A, 0x062C, 0,
5036     7, 0xFC0C, 0x062A, 0x062D, 0,
5037     7, 0xFC0D, 0x062A, 0x062E, 0,
5038     7, 0xFC0E, 0x062A, 0x0645, 0,
5039     7, 0xFC0F, 0x062A, 0x0649, 0,
5040     7, 0xFC10, 0x062A, 0x064A, 0,
5041     7, 0xFC11, 0x062B, 0x062C, 0,
5042     7, 0xFC12, 0x062B, 0x0645, 0,
5043     7, 0xFC13, 0x062B, 0x0649, 0,
5044     7, 0xFC14, 0x062B, 0x064A, 0,
5045     7, 0xFC15, 0x062C, 0x062D, 0,
5046     7, 0xFC16, 0x062C, 0x0645, 0,
5047     7, 0xFC17, 0x062D, 0x062C, 0,
5048     7, 0xFC18, 0x062D, 0x0645, 0,
5049     7, 0xFC19, 0x062E, 0x062C, 0,
5050     7, 0xFC1A, 0x062E, 0x062D, 0,
5051     7, 0xFC1B, 0x062E, 0x0645, 0,
5052     7, 0xFC1C, 0x0633, 0x062C, 0,
5053     7, 0xFC1D, 0x0633, 0x062D, 0,
5054     7, 0xFC1E, 0x0633, 0x062E, 0,
5055     7, 0xFC1F, 0x0633, 0x0645, 0,
5056     7, 0xFC20, 0x0635, 0x062D, 0,
5057     7, 0xFC21, 0x0635, 0x0645, 0,
5058     7, 0xFC22, 0x0636, 0x062C, 0,
5059     7, 0xFC23, 0x0636, 0x062D, 0,
5060     7, 0xFC24, 0x0636, 0x062E, 0,
5061     7, 0xFC25, 0x0636, 0x0645, 0,
5062     7, 0xFC26, 0x0637, 0x062D, 0,
5063     7, 0xFC27, 0x0637, 0x0645, 0,
5064     7, 0xFC28, 0x0638, 0x0645, 0,
5065     7, 0xFC29, 0x0639, 0x062C, 0,
5066     7, 0xFC2A, 0x0639, 0x0645, 0,
5067     7, 0xFC2B, 0x063A, 0x062C, 0,
5068     7, 0xFC2C, 0x063A, 0x0645, 0,
5069     7, 0xFC2D, 0x0641, 0x062C, 0,
5070     7, 0xFC2E, 0x0641, 0x062D, 0,
5071     7, 0xFC2F, 0x0641, 0x062E, 0,
5072     7, 0xFC30, 0x0641, 0x0645, 0,
5073     7, 0xFC31, 0x0641, 0x0649, 0,
5074     7, 0xFC32, 0x0641, 0x064A, 0,
5075     7, 0xFC33, 0x0642, 0x062D, 0,
5076     7, 0xFC34, 0x0642, 0x0645, 0,
5077     7, 0xFC35, 0x0642, 0x0649, 0,
5078     7, 0xFC36, 0x0642, 0x064A, 0,
5079     7, 0xFC37, 0x0643, 0x0627, 0,
5080     7, 0xFC38, 0x0643, 0x062C, 0,
5081     7, 0xFC39, 0x0643, 0x062D, 0,
5082     7, 0xFC3A, 0x0643, 0x062E, 0,
5083     7, 0xFC3B, 0x0643, 0x0644, 0,
5084     7, 0xFC3C, 0x0643, 0x0645, 0,
5085     7, 0xFC3D, 0x0643, 0x0649, 0,
5086     7, 0xFC3E, 0x0643, 0x064A, 0,
5087     7, 0xFC3F, 0x0644, 0x062C, 0,
5088     7, 0xFC40, 0x0644, 0x062D, 0,
5089     7, 0xFC41, 0x0644, 0x062E, 0,
5090     7, 0xFC42, 0x0644, 0x0645, 0,
5091     7, 0xFC43, 0x0644, 0x0649, 0,
5092     7, 0xFC44, 0x0644, 0x064A, 0,
5093     7, 0xFC45, 0x0645, 0x062C, 0,
5094     7, 0xFC46, 0x0645, 0x062D, 0,
5095     7, 0xFC47, 0x0645, 0x062E, 0,
5096     7, 0xFC48, 0x0645, 0x0645, 0,
5097     7, 0xFC49, 0x0645, 0x0649, 0,
5098     7, 0xFC4A, 0x0645, 0x064A, 0,
5099     7, 0xFC4B, 0x0646, 0x062C, 0,
5100     7, 0xFC4C, 0x0646, 0x062D, 0,
5101     7, 0xFC4D, 0x0646, 0x062E, 0,
5102     7, 0xFC4E, 0x0646, 0x0645, 0,
5103     7, 0xFC4F, 0x0646, 0x0649, 0,
5104     7, 0xFC50, 0x0646, 0x064A, 0,
5105     7, 0xFC51, 0x0647, 0x062C, 0,
5106     7, 0xFC52, 0x0647, 0x0645, 0,
5107     7, 0xFC53, 0x0647, 0x0649, 0,
5108     7, 0xFC54, 0x0647, 0x064A, 0,
5109     7, 0xFC55, 0x064A, 0x062C, 0,
5110     7, 0xFC56, 0x064A, 0x062D, 0,
5111     7, 0xFC57, 0x064A, 0x062E, 0,
5112     7, 0xFC58, 0x064A, 0x0645, 0,
5113     7, 0xFC59, 0x064A, 0x0649, 0,
5114     7, 0xFC5A, 0x064A, 0x064A, 0,
5115     7, 0xFC5B, 0x0630, 0x0670, 0,
5116     7, 0xFC5C, 0x0631, 0x0670, 0,
5117     7, 0xFC5D, 0x0649, 0x0670, 0,
5118     7, 0xFC5E, 0x0020, 0x064C, 0x0651, 0,
5119     7, 0xFC5F, 0x0020, 0x064D, 0x0651, 0,
5120     7, 0xFC60, 0x0020, 0x064E, 0x0651, 0,
5121     7, 0xFC61, 0x0020, 0x064F, 0x0651, 0,
5122     7, 0xFC62, 0x0020, 0x0650, 0x0651, 0,
5123     7, 0xFC63, 0x0020, 0x0651, 0x0670, 0,
5124     6, 0xFC64, 0x0626, 0x0631, 0,
5125     6, 0xFC65, 0x0626, 0x0632, 0,
5126     6, 0xFC66, 0x0626, 0x0645, 0,
5127     6, 0xFC67, 0x0626, 0x0646, 0,
5128     6, 0xFC68, 0x0626, 0x0649, 0,
5129     6, 0xFC69, 0x0626, 0x064A, 0,
5130     6, 0xFC6A, 0x0628, 0x0631, 0,
5131     6, 0xFC6B, 0x0628, 0x0632, 0,
5132     6, 0xFC6C, 0x0628, 0x0645, 0,
5133     6, 0xFC6D, 0x0628, 0x0646, 0,
5134     6, 0xFC6E, 0x0628, 0x0649, 0,
5135     6, 0xFC6F, 0x0628, 0x064A, 0,
5136     6, 0xFC70, 0x062A, 0x0631, 0,
5137     6, 0xFC71, 0x062A, 0x0632, 0,
5138     6, 0xFC72, 0x062A, 0x0645, 0,
5139     6, 0xFC73, 0x062A, 0x0646, 0,
5140     6, 0xFC74, 0x062A, 0x0649, 0,
5141     6, 0xFC75, 0x062A, 0x064A, 0,
5142     6, 0xFC76, 0x062B, 0x0631, 0,
5143     6, 0xFC77, 0x062B, 0x0632, 0,
5144     6, 0xFC78, 0x062B, 0x0645, 0,
5145     6, 0xFC79, 0x062B, 0x0646, 0,
5146     6, 0xFC7A, 0x062B, 0x0649, 0,
5147     6, 0xFC7B, 0x062B, 0x064A, 0,
5148     6, 0xFC7C, 0x0641, 0x0649, 0,
5149     6, 0xFC7D, 0x0641, 0x064A, 0,
5150     6, 0xFC7E, 0x0642, 0x0649, 0,
5151     6, 0xFC7F, 0x0642, 0x064A, 0,
5152     6, 0xFC80, 0x0643, 0x0627, 0,
5153     6, 0xFC81, 0x0643, 0x0644, 0,
5154     6, 0xFC82, 0x0643, 0x0645, 0,
5155     6, 0xFC83, 0x0643, 0x0649, 0,
5156     6, 0xFC84, 0x0643, 0x064A, 0,
5157     6, 0xFC85, 0x0644, 0x0645, 0,
5158     6, 0xFC86, 0x0644, 0x0649, 0,
5159     6, 0xFC87, 0x0644, 0x064A, 0,
5160     6, 0xFC88, 0x0645, 0x0627, 0,
5161     6, 0xFC89, 0x0645, 0x0645, 0,
5162     6, 0xFC8A, 0x0646, 0x0631, 0,
5163     6, 0xFC8B, 0x0646, 0x0632, 0,
5164     6, 0xFC8C, 0x0646, 0x0645, 0,
5165     6, 0xFC8D, 0x0646, 0x0646, 0,
5166     6, 0xFC8E, 0x0646, 0x0649, 0,
5167     6, 0xFC8F, 0x0646, 0x064A, 0,
5168     6, 0xFC90, 0x0649, 0x0670, 0,
5169     6, 0xFC91, 0x064A, 0x0631, 0,
5170     6, 0xFC92, 0x064A, 0x0632, 0,
5171     6, 0xFC93, 0x064A, 0x0645, 0,
5172     6, 0xFC94, 0x064A, 0x0646, 0,
5173     6, 0xFC95, 0x064A, 0x0649, 0,
5174     6, 0xFC96, 0x064A, 0x064A, 0,
5175     4, 0xFC97, 0x0626, 0x062C, 0,
5176     4, 0xFC98, 0x0626, 0x062D, 0,
5177     4, 0xFC99, 0x0626, 0x062E, 0,
5178     4, 0xFC9A, 0x0626, 0x0645, 0,
5179     4, 0xFC9B, 0x0626, 0x0647, 0,
5180     4, 0xFC9C, 0x0628, 0x062C, 0,
5181     4, 0xFC9D, 0x0628, 0x062D, 0,
5182     4, 0xFC9E, 0x0628, 0x062E, 0,
5183     4, 0xFC9F, 0x0628, 0x0645, 0,
5184     4, 0xFCA0, 0x0628, 0x0647, 0,
5185     4, 0xFCA1, 0x062A, 0x062C, 0,
5186     4, 0xFCA2, 0x062A, 0x062D, 0,
5187     4, 0xFCA3, 0x062A, 0x062E, 0,
5188     4, 0xFCA4, 0x062A, 0x0645, 0,
5189     4, 0xFCA5, 0x062A, 0x0647, 0,
5190     4, 0xFCA6, 0x062B, 0x0645, 0,
5191     4, 0xFCA7, 0x062C, 0x062D, 0,
5192     4, 0xFCA8, 0x062C, 0x0645, 0,
5193     4, 0xFCA9, 0x062D, 0x062C, 0,
5194     4, 0xFCAA, 0x062D, 0x0645, 0,
5195     4, 0xFCAB, 0x062E, 0x062C, 0,
5196     4, 0xFCAC, 0x062E, 0x0645, 0,
5197     4, 0xFCAD, 0x0633, 0x062C, 0,
5198     4, 0xFCAE, 0x0633, 0x062D, 0,
5199     4, 0xFCAF, 0x0633, 0x062E, 0,
5200     4, 0xFCB0, 0x0633, 0x0645, 0,
5201     4, 0xFCB1, 0x0635, 0x062D, 0,
5202     4, 0xFCB2, 0x0635, 0x062E, 0,
5203     4, 0xFCB3, 0x0635, 0x0645, 0,
5204     4, 0xFCB4, 0x0636, 0x062C, 0,
5205     4, 0xFCB5, 0x0636, 0x062D, 0,
5206     4, 0xFCB6, 0x0636, 0x062E, 0,
5207     4, 0xFCB7, 0x0636, 0x0645, 0,
5208     4, 0xFCB8, 0x0637, 0x062D, 0,
5209     4, 0xFCB9, 0x0638, 0x0645, 0,
5210     4, 0xFCBA, 0x0639, 0x062C, 0,
5211     4, 0xFCBB, 0x0639, 0x0645, 0,
5212     4, 0xFCBC, 0x063A, 0x062C, 0,
5213     4, 0xFCBD, 0x063A, 0x0645, 0,
5214     4, 0xFCBE, 0x0641, 0x062C, 0,
5215     4, 0xFCBF, 0x0641, 0x062D, 0,
5216     4, 0xFCC0, 0x0641, 0x062E, 0,
5217     4, 0xFCC1, 0x0641, 0x0645, 0,
5218     4, 0xFCC2, 0x0642, 0x062D, 0,
5219     4, 0xFCC3, 0x0642, 0x0645, 0,
5220     4, 0xFCC4, 0x0643, 0x062C, 0,
5221     4, 0xFCC5, 0x0643, 0x062D, 0,
5222     4, 0xFCC6, 0x0643, 0x062E, 0,
5223     4, 0xFCC7, 0x0643, 0x0644, 0,
5224     4, 0xFCC8, 0x0643, 0x0645, 0,
5225     4, 0xFCC9, 0x0644, 0x062C, 0,
5226     4, 0xFCCA, 0x0644, 0x062D, 0,
5227     4, 0xFCCB, 0x0644, 0x062E, 0,
5228     4, 0xFCCC, 0x0644, 0x0645, 0,
5229     4, 0xFCCD, 0x0644, 0x0647, 0,
5230     4, 0xFCCE, 0x0645, 0x062C, 0,
5231     4, 0xFCCF, 0x0645, 0x062D, 0,
5232     4, 0xFCD0, 0x0645, 0x062E, 0,
5233     4, 0xFCD1, 0x0645, 0x0645, 0,
5234     4, 0xFCD2, 0x0646, 0x062C, 0,
5235     4, 0xFCD3, 0x0646, 0x062D, 0,
5236     4, 0xFCD4, 0x0646, 0x062E, 0,
5237     4, 0xFCD5, 0x0646, 0x0645, 0,
5238     4, 0xFCD6, 0x0646, 0x0647, 0,
5239     4, 0xFCD7, 0x0647, 0x062C, 0,
5240     4, 0xFCD8, 0x0647, 0x0645, 0,
5241     4, 0xFCD9, 0x0647, 0x0670, 0,
5242     4, 0xFCDA, 0x064A, 0x062C, 0,
5243     4, 0xFCDB, 0x064A, 0x062D, 0,
5244     4, 0xFCDC, 0x064A, 0x062E, 0,
5245     4, 0xFCDD, 0x064A, 0x0645, 0,
5246     4, 0xFCDE, 0x064A, 0x0647, 0,
5247     5, 0xFCDF, 0x0626, 0x0645, 0,
5248     5, 0xFCE0, 0x0626, 0x0647, 0,
5249     5, 0xFCE1, 0x0628, 0x0645, 0,
5250     5, 0xFCE2, 0x0628, 0x0647, 0,
5251     5, 0xFCE3, 0x062A, 0x0645, 0,
5252     5, 0xFCE4, 0x062A, 0x0647, 0,
5253     5, 0xFCE5, 0x062B, 0x0645, 0,
5254     5, 0xFCE6, 0x062B, 0x0647, 0,
5255     5, 0xFCE7, 0x0633, 0x0645, 0,
5256     5, 0xFCE8, 0x0633, 0x0647, 0,
5257     5, 0xFCE9, 0x0634, 0x0645, 0,
5258     5, 0xFCEA, 0x0634, 0x0647, 0,
5259     5, 0xFCEB, 0x0643, 0x0644, 0,
5260     5, 0xFCEC, 0x0643, 0x0645, 0,
5261     5, 0xFCED, 0x0644, 0x0645, 0,
5262     5, 0xFCEE, 0x0646, 0x0645, 0,
5263     5, 0xFCEF, 0x0646, 0x0647, 0,
5264     5, 0xFCF0, 0x064A, 0x0645, 0,
5265     5, 0xFCF1, 0x064A, 0x0647, 0,
5266     5, 0xFCF2, 0x0640, 0x064E, 0x0651, 0,
5267     5, 0xFCF3, 0x0640, 0x064F, 0x0651, 0,
5268     5, 0xFCF4, 0x0640, 0x0650, 0x0651, 0,
5269     7, 0xFCF5, 0x0637, 0x0649, 0,
5270     7, 0xFCF6, 0x0637, 0x064A, 0,
5271     7, 0xFCF7, 0x0639, 0x0649, 0,
5272     7, 0xFCF8, 0x0639, 0x064A, 0,
5273     7, 0xFCF9, 0x063A, 0x0649, 0,
5274     7, 0xFCFA, 0x063A, 0x064A, 0,
5275     7, 0xFCFB, 0x0633, 0x0649, 0,
5276     7, 0xFCFC, 0x0633, 0x064A, 0,
5277     7, 0xFCFD, 0x0634, 0x0649, 0,
5278     7, 0xFCFE, 0x0634, 0x064A, 0,
5279     7, 0xFCFF, 0x062D, 0x0649, 0,
5280     7, 0xFD00, 0x062D, 0x064A, 0,
5281     7, 0xFD01, 0x062C, 0x0649, 0,
5282     7, 0xFD02, 0x062C, 0x064A, 0,
5283     7, 0xFD03, 0x062E, 0x0649, 0,
5284     7, 0xFD04, 0x062E, 0x064A, 0,
5285     7, 0xFD05, 0x0635, 0x0649, 0,
5286     7, 0xFD06, 0x0635, 0x064A, 0,
5287     7, 0xFD07, 0x0636, 0x0649, 0,
5288     7, 0xFD08, 0x0636, 0x064A, 0,
5289     7, 0xFD09, 0x0634, 0x062C, 0,
5290     7, 0xFD0A, 0x0634, 0x062D, 0,
5291     7, 0xFD0B, 0x0634, 0x062E, 0,
5292     7, 0xFD0C, 0x0634, 0x0645, 0,
5293     7, 0xFD0D, 0x0634, 0x0631, 0,
5294     7, 0xFD0E, 0x0633, 0x0631, 0,
5295     7, 0xFD0F, 0x0635, 0x0631, 0,
5296     7, 0xFD10, 0x0636, 0x0631, 0,
5297     6, 0xFD11, 0x0637, 0x0649, 0,
5298     6, 0xFD12, 0x0637, 0x064A, 0,
5299     6, 0xFD13, 0x0639, 0x0649, 0,
5300     6, 0xFD14, 0x0639, 0x064A, 0,
5301     6, 0xFD15, 0x063A, 0x0649, 0,
5302     6, 0xFD16, 0x063A, 0x064A, 0,
5303     6, 0xFD17, 0x0633, 0x0649, 0,
5304     6, 0xFD18, 0x0633, 0x064A, 0,
5305     6, 0xFD19, 0x0634, 0x0649, 0,
5306     6, 0xFD1A, 0x0634, 0x064A, 0,
5307     6, 0xFD1B, 0x062D, 0x0649, 0,
5308     6, 0xFD1C, 0x062D, 0x064A, 0,
5309     6, 0xFD1D, 0x062C, 0x0649, 0,
5310     6, 0xFD1E, 0x062C, 0x064A, 0,
5311     6, 0xFD1F, 0x062E, 0x0649, 0,
5312     6, 0xFD20, 0x062E, 0x064A, 0,
5313     6, 0xFD21, 0x0635, 0x0649, 0,
5314     6, 0xFD22, 0x0635, 0x064A, 0,
5315     6, 0xFD23, 0x0636, 0x0649, 0,
5316     6, 0xFD24, 0x0636, 0x064A, 0,
5317     6, 0xFD25, 0x0634, 0x062C, 0,
5318     6, 0xFD26, 0x0634, 0x062D, 0,
5319     6, 0xFD27, 0x0634, 0x062E, 0,
5320     6, 0xFD28, 0x0634, 0x0645, 0,
5321     6, 0xFD29, 0x0634, 0x0631, 0,
5322     6, 0xFD2A, 0x0633, 0x0631, 0,
5323     6, 0xFD2B, 0x0635, 0x0631, 0,
5324     6, 0xFD2C, 0x0636, 0x0631, 0,
5325     4, 0xFD2D, 0x0634, 0x062C, 0,
5326     4, 0xFD2E, 0x0634, 0x062D, 0,
5327     4, 0xFD2F, 0x0634, 0x062E, 0,
5328     4, 0xFD30, 0x0634, 0x0645, 0,
5329     4, 0xFD31, 0x0633, 0x0647, 0,
5330     4, 0xFD32, 0x0634, 0x0647, 0,
5331     4, 0xFD33, 0x0637, 0x0645, 0,
5332     5, 0xFD34, 0x0633, 0x062C, 0,
5333     5, 0xFD35, 0x0633, 0x062D, 0,
5334     5, 0xFD36, 0x0633, 0x062E, 0,
5335     5, 0xFD37, 0x0634, 0x062C, 0,
5336     5, 0xFD38, 0x0634, 0x062D, 0,
5337     5, 0xFD39, 0x0634, 0x062E, 0,
5338     5, 0xFD3A, 0x0637, 0x0645, 0,
5339     5, 0xFD3B, 0x0638, 0x0645, 0,
5340     6, 0xFD3C, 0x0627, 0x064B, 0,
5341     7, 0xFD3D, 0x0627, 0x064B, 0,
5342     4, 0xFD50, 0x062A, 0x062C, 0x0645, 0,
5343     6, 0xFD51, 0x062A, 0x062D, 0x062C, 0,
5344     4, 0xFD52, 0x062A, 0x062D, 0x062C, 0,
5345     4, 0xFD53, 0x062A, 0x062D, 0x0645, 0,
5346     4, 0xFD54, 0x062A, 0x062E, 0x0645, 0,
5347     4, 0xFD55, 0x062A, 0x0645, 0x062C, 0,
5348     4, 0xFD56, 0x062A, 0x0645, 0x062D, 0,
5349     4, 0xFD57, 0x062A, 0x0645, 0x062E, 0,
5350     6, 0xFD58, 0x062C, 0x0645, 0x062D, 0,
5351     4, 0xFD59, 0x062C, 0x0645, 0x062D, 0,
5352     6, 0xFD5A, 0x062D, 0x0645, 0x064A, 0,
5353     6, 0xFD5B, 0x062D, 0x0645, 0x0649, 0,
5354     4, 0xFD5C, 0x0633, 0x062D, 0x062C, 0,
5355     4, 0xFD5D, 0x0633, 0x062C, 0x062D, 0,
5356     6, 0xFD5E, 0x0633, 0x062C, 0x0649, 0,
5357     6, 0xFD5F, 0x0633, 0x0645, 0x062D, 0,
5358     4, 0xFD60, 0x0633, 0x0645, 0x062D, 0,
5359     4, 0xFD61, 0x0633, 0x0645, 0x062C, 0,
5360     6, 0xFD62, 0x0633, 0x0645, 0x0645, 0,
5361     4, 0xFD63, 0x0633, 0x0645, 0x0645, 0,
5362     6, 0xFD64, 0x0635, 0x062D, 0x062D, 0,
5363     4, 0xFD65, 0x0635, 0x062D, 0x062D, 0,
5364     6, 0xFD66, 0x0635, 0x0645, 0x0645, 0,
5365     6, 0xFD67, 0x0634, 0x062D, 0x0645, 0,
5366     4, 0xFD68, 0x0634, 0x062D, 0x0645, 0,
5367     6, 0xFD69, 0x0634, 0x062C, 0x064A, 0,
5368     6, 0xFD6A, 0x0634, 0x0645, 0x062E, 0,
5369     4, 0xFD6B, 0x0634, 0x0645, 0x062E, 0,
5370     6, 0xFD6C, 0x0634, 0x0645, 0x0645, 0,
5371     4, 0xFD6D, 0x0634, 0x0645, 0x0645, 0,
5372     6, 0xFD6E, 0x0636, 0x062D, 0x0649, 0,
5373     6, 0xFD6F, 0x0636, 0x062E, 0x0645, 0,
5374     4, 0xFD70, 0x0636, 0x062E, 0x0645, 0,
5375     6, 0xFD71, 0x0637, 0x0645, 0x062D, 0,
5376     4, 0xFD72, 0x0637, 0x0645, 0x062D, 0,
5377     4, 0xFD73, 0x0637, 0x0645, 0x0645, 0,
5378     6, 0xFD74, 0x0637, 0x0645, 0x064A, 0,
5379     6, 0xFD75, 0x0639, 0x062C, 0x0645, 0,
5380     6, 0xFD76, 0x0639, 0x0645, 0x0645, 0,
5381     4, 0xFD77, 0x0639, 0x0645, 0x0645, 0,
5382     6, 0xFD78, 0x0639, 0x0645, 0x0649, 0,
5383     6, 0xFD79, 0x063A, 0x0645, 0x0645, 0,
5384     6, 0xFD7A, 0x063A, 0x0645, 0x064A, 0,
5385     6, 0xFD7B, 0x063A, 0x0645, 0x0649, 0,
5386     6, 0xFD7C, 0x0641, 0x062E, 0x0645, 0,
5387     4, 0xFD7D, 0x0641, 0x062E, 0x0645, 0,
5388     6, 0xFD7E, 0x0642, 0x0645, 0x062D, 0,
5389     6, 0xFD7F, 0x0642, 0x0645, 0x0645, 0,
5390     6, 0xFD80, 0x0644, 0x062D, 0x0645, 0,
5391     6, 0xFD81, 0x0644, 0x062D, 0x064A, 0,
5392     6, 0xFD82, 0x0644, 0x062D, 0x0649, 0,
5393     4, 0xFD83, 0x0644, 0x062C, 0x062C, 0,
5394     6, 0xFD84, 0x0644, 0x062C, 0x062C, 0,
5395     6, 0xFD85, 0x0644, 0x062E, 0x0645, 0,
5396     4, 0xFD86, 0x0644, 0x062E, 0x0645, 0,
5397     6, 0xFD87, 0x0644, 0x0645, 0x062D, 0,
5398     4, 0xFD88, 0x0644, 0x0645, 0x062D, 0,
5399     4, 0xFD89, 0x0645, 0x062D, 0x062C, 0,
5400     4, 0xFD8A, 0x0645, 0x062D, 0x0645, 0,
5401     6, 0xFD8B, 0x0645, 0x062D, 0x064A, 0,
5402     4, 0xFD8C, 0x0645, 0x062C, 0x062D, 0,
5403     4, 0xFD8D, 0x0645, 0x062C, 0x0645, 0,
5404     4, 0xFD8E, 0x0645, 0x062E, 0x062C, 0,
5405     4, 0xFD8F, 0x0645, 0x062E, 0x0645, 0,
5406     4, 0xFD92, 0x0645, 0x062C, 0x062E, 0,
5407     4, 0xFD93, 0x0647, 0x0645, 0x062C, 0,
5408     4, 0xFD94, 0x0647, 0x0645, 0x0645, 0,
5409     4, 0xFD95, 0x0646, 0x062D, 0x0645, 0,
5410     6, 0xFD96, 0x0646, 0x062D, 0x0649, 0,
5411     6, 0xFD97, 0x0646, 0x062C, 0x0645, 0,
5412     4, 0xFD98, 0x0646, 0x062C, 0x0645, 0,
5413     6, 0xFD99, 0x0646, 0x062C, 0x0649, 0,
5414     6, 0xFD9A, 0x0646, 0x0645, 0x064A, 0,
5415     6, 0xFD9B, 0x0646, 0x0645, 0x0649, 0,
5416     6, 0xFD9C, 0x064A, 0x0645, 0x0645, 0,
5417     4, 0xFD9D, 0x064A, 0x0645, 0x0645, 0,
5418     6, 0xFD9E, 0x0628, 0x062E, 0x064A, 0,
5419     6, 0xFD9F, 0x062A, 0x062C, 0x064A, 0,
5420     6, 0xFDA0, 0x062A, 0x062C, 0x0649, 0,
5421     6, 0xFDA1, 0x062A, 0x062E, 0x064A, 0,
5422     6, 0xFDA2, 0x062A, 0x062E, 0x0649, 0,
5423     6, 0xFDA3, 0x062A, 0x0645, 0x064A, 0,
5424     6, 0xFDA4, 0x062A, 0x0645, 0x0649, 0,
5425     6, 0xFDA5, 0x062C, 0x0645, 0x064A, 0,
5426     6, 0xFDA6, 0x062C, 0x062D, 0x0649, 0,
5427     6, 0xFDA7, 0x062C, 0x0645, 0x0649, 0,
5428     6, 0xFDA8, 0x0633, 0x062E, 0x0649, 0,
5429     6, 0xFDA9, 0x0635, 0x062D, 0x064A, 0,
5430     6, 0xFDAA, 0x0634, 0x062D, 0x064A, 0,
5431     6, 0xFDAB, 0x0636, 0x062D, 0x064A, 0,
5432     6, 0xFDAC, 0x0644, 0x062C, 0x064A, 0,
5433     6, 0xFDAD, 0x0644, 0x0645, 0x064A, 0,
5434     6, 0xFDAE, 0x064A, 0x062D, 0x064A, 0,
5435     6, 0xFDAF, 0x064A, 0x062C, 0x064A, 0,
5436     6, 0xFDB0, 0x064A, 0x0645, 0x064A, 0,
5437     6, 0xFDB1, 0x0645, 0x0645, 0x064A, 0,
5438     6, 0xFDB2, 0x0642, 0x0645, 0x064A, 0,
5439     6, 0xFDB3, 0x0646, 0x062D, 0x064A, 0,
5440     4, 0xFDB4, 0x0642, 0x0645, 0x062D, 0,
5441     4, 0xFDB5, 0x0644, 0x062D, 0x0645, 0,
5442     6, 0xFDB6, 0x0639, 0x0645, 0x064A, 0,
5443     6, 0xFDB7, 0x0643, 0x0645, 0x064A, 0,
5444     4, 0xFDB8, 0x0646, 0x062C, 0x062D, 0,
5445     6, 0xFDB9, 0x0645, 0x062E, 0x064A, 0,
5446     4, 0xFDBA, 0x0644, 0x062C, 0x0645, 0,
5447     6, 0xFDBB, 0x0643, 0x0645, 0x0645, 0,
5448     6, 0xFDBC, 0x0644, 0x062C, 0x0645, 0,
5449     6, 0xFDBD, 0x0646, 0x062C, 0x062D, 0,
5450     6, 0xFDBE, 0x062C, 0x062D, 0x064A, 0,
5451     6, 0xFDBF, 0x062D, 0x062C, 0x064A, 0,
5452     6, 0xFDC0, 0x0645, 0x062C, 0x064A, 0,
5453     6, 0xFDC1, 0x0641, 0x0645, 0x064A, 0,
5454     6, 0xFDC2, 0x0628, 0x062D, 0x064A, 0,
5455     4, 0xFDC3, 0x0643, 0x0645, 0x0645, 0,
5456     4, 0xFDC4, 0x0639, 0x062C, 0x0645, 0,
5457     4, 0xFDC5, 0x0635, 0x0645, 0x0645, 0,
5458     6, 0xFDC6, 0x0633, 0x062E, 0x064A, 0,
5459     6, 0xFDC7, 0x0646, 0x062C, 0x064A, 0,
5460     7, 0xFDF0, 0x0635, 0x0644, 0x06D2, 0,
5461     7, 0xFDF1, 0x0642, 0x0644, 0x06D2, 0,
5462     7, 0xFDF2, 0x0627, 0x0644, 0x0644, 0x0647, 0,
5463     7, 0xFDF3, 0x0627, 0x0643, 0x0628, 0x0631, 0,
5464     7, 0xFDF4, 0x0645, 0x062D, 0x0645, 0x062F, 0,
5465     7, 0xFDF5, 0x0635, 0x0644, 0x0639, 0x0645, 0,
5466     7, 0xFDF6, 0x0631, 0x0633, 0x0648, 0x0644, 0,
5467     7, 0xFDF7, 0x0639, 0x0644, 0x064A, 0x0647, 0,
5468     7, 0xFDF8, 0x0648, 0x0633, 0x0644, 0x0645, 0,
5469     7, 0xFDF9, 0x0635, 0x0644, 0x0649, 0,
5470     7, 0xFDFA, 0x0635, 0x0644, 0x0649, 0x0020, 0x0627, 0x0644, 0x0644, 0x0647, 0x0020, 0x0639, 0x0644, 0x064A, 0x0647, 0x0020, 0x0648, 0x0633, 0x0644, 0x0645, 0,
5471     7, 0xFDFB, 0x062C, 0x0644, 0x0020, 0x062C, 0x0644, 0x0627, 0x0644, 0x0647, 0,
5472     11, 0xFE30, 0x2025, 0,
5473     11, 0xFE31, 0x2014, 0,
5474     11, 0xFE32, 0x2013, 0,
5475     11, 0xFE33, 0x005F, 0,
5476     11, 0xFE34, 0x005F, 0,
5477     11, 0xFE35, 0x0028, 0,
5478     11, 0xFE36, 0x0029, 0,
5479     11, 0xFE37, 0x007B, 0,
5480     11, 0xFE38, 0x007D, 0,
5481     11, 0xFE39, 0x3014, 0,
5482     11, 0xFE3A, 0x3015, 0,
5483     11, 0xFE3B, 0x3010, 0,
5484     11, 0xFE3C, 0x3011, 0,
5485     11, 0xFE3D, 0x300A, 0,
5486     11, 0xFE3E, 0x300B, 0,
5487     11, 0xFE3F, 0x3008, 0,
5488     11, 0xFE40, 0x3009, 0,
5489     11, 0xFE41, 0x300C, 0,
5490     11, 0xFE42, 0x300D, 0,
5491     11, 0xFE43, 0x300E, 0,
5492     11, 0xFE44, 0x300F, 0,
5493     16, 0xFE49, 0x203E, 0,
5494     16, 0xFE4A, 0x203E, 0,
5495     16, 0xFE4B, 0x203E, 0,
5496     16, 0xFE4C, 0x203E, 0,
5497     16, 0xFE4D, 0x005F, 0,
5498     16, 0xFE4E, 0x005F, 0,
5499     16, 0xFE4F, 0x005F, 0,
5500     14, 0xFE50, 0x002C, 0,
5501     14, 0xFE51, 0x3001, 0,
5502     14, 0xFE52, 0x002E, 0,
5503     14, 0xFE54, 0x003B, 0,
5504     14, 0xFE55, 0x003A, 0,
5505     14, 0xFE56, 0x003F, 0,
5506     14, 0xFE57, 0x0021, 0,
5507     14, 0xFE58, 0x2014, 0,
5508     14, 0xFE59, 0x0028, 0,
5509     14, 0xFE5A, 0x0029, 0,
5510     14, 0xFE5B, 0x007B, 0,
5511     14, 0xFE5C, 0x007D, 0,
5512     14, 0xFE5D, 0x3014, 0,
5513     14, 0xFE5E, 0x3015, 0,
5514     14, 0xFE5F, 0x0023, 0,
5515     14, 0xFE60, 0x0026, 0,
5516     14, 0xFE61, 0x002A, 0,
5517     14, 0xFE62, 0x002B, 0,
5518     14, 0xFE63, 0x002D, 0,
5519     14, 0xFE64, 0x003C, 0,
5520     14, 0xFE65, 0x003E, 0,
5521     14, 0xFE66, 0x003D, 0,
5522     14, 0xFE68, 0x005C, 0,
5523     14, 0xFE69, 0x0024, 0,
5524     14, 0xFE6A, 0x0025, 0,
5525     14, 0xFE6B, 0x0040, 0,
5526     7, 0xFE70, 0x0020, 0x064B, 0,
5527     5, 0xFE71, 0x0640, 0x064B, 0,
5528     7, 0xFE72, 0x0020, 0x064C, 0,
5529     7, 0xFE74, 0x0020, 0x064D, 0,
5530     7, 0xFE76, 0x0020, 0x064E, 0,
5531     5, 0xFE77, 0x0640, 0x064E, 0,
5532     7, 0xFE78, 0x0020, 0x064F, 0,
5533     5, 0xFE79, 0x0640, 0x064F, 0,
5534     7, 0xFE7A, 0x0020, 0x0650, 0,
5535     5, 0xFE7B, 0x0640, 0x0650, 0,
5536     7, 0xFE7C, 0x0020, 0x0651, 0,
5537     5, 0xFE7D, 0x0640, 0x0651, 0,
5538     7, 0xFE7E, 0x0020, 0x0652, 0,
5539     5, 0xFE7F, 0x0640, 0x0652, 0,
5540     7, 0xFE80, 0x0621, 0,
5541     7, 0xFE81, 0x0622, 0,
5542     6, 0xFE82, 0x0622, 0,
5543     7, 0xFE83, 0x0623, 0,
5544     6, 0xFE84, 0x0623, 0,
5545     7, 0xFE85, 0x0624, 0,
5546     6, 0xFE86, 0x0624, 0,
5547     7, 0xFE87, 0x0625, 0,
5548     6, 0xFE88, 0x0625, 0,
5549     7, 0xFE89, 0x0626, 0,
5550     6, 0xFE8A, 0x0626, 0,
5551     4, 0xFE8B, 0x0626, 0,
5552     5, 0xFE8C, 0x0626, 0,
5553     7, 0xFE8D, 0x0627, 0,
5554     6, 0xFE8E, 0x0627, 0,
5555     7, 0xFE8F, 0x0628, 0,
5556     6, 0xFE90, 0x0628, 0,
5557     4, 0xFE91, 0x0628, 0,
5558     5, 0xFE92, 0x0628, 0,
5559     7, 0xFE93, 0x0629, 0,
5560     6, 0xFE94, 0x0629, 0,
5561     7, 0xFE95, 0x062A, 0,
5562     6, 0xFE96, 0x062A, 0,
5563     4, 0xFE97, 0x062A, 0,
5564     5, 0xFE98, 0x062A, 0,
5565     7, 0xFE99, 0x062B, 0,
5566     6, 0xFE9A, 0x062B, 0,
5567     4, 0xFE9B, 0x062B, 0,
5568     5, 0xFE9C, 0x062B, 0,
5569     7, 0xFE9D, 0x062C, 0,
5570     6, 0xFE9E, 0x062C, 0,
5571     4, 0xFE9F, 0x062C, 0,
5572     5, 0xFEA0, 0x062C, 0,
5573     7, 0xFEA1, 0x062D, 0,
5574     6, 0xFEA2, 0x062D, 0,
5575     4, 0xFEA3, 0x062D, 0,
5576     5, 0xFEA4, 0x062D, 0,
5577     7, 0xFEA5, 0x062E, 0,
5578     6, 0xFEA6, 0x062E, 0,
5579     4, 0xFEA7, 0x062E, 0,
5580     5, 0xFEA8, 0x062E, 0,
5581     7, 0xFEA9, 0x062F, 0,
5582     6, 0xFEAA, 0x062F, 0,
5583     7, 0xFEAB, 0x0630, 0,
5584     6, 0xFEAC, 0x0630, 0,
5585     7, 0xFEAD, 0x0631, 0,
5586     6, 0xFEAE, 0x0631, 0,
5587     7, 0xFEAF, 0x0632, 0,
5588     6, 0xFEB0, 0x0632, 0,
5589     7, 0xFEB1, 0x0633, 0,
5590     6, 0xFEB2, 0x0633, 0,
5591     4, 0xFEB3, 0x0633, 0,
5592     5, 0xFEB4, 0x0633, 0,
5593     7, 0xFEB5, 0x0634, 0,
5594     6, 0xFEB6, 0x0634, 0,
5595     4, 0xFEB7, 0x0634, 0,
5596     5, 0xFEB8, 0x0634, 0,
5597     7, 0xFEB9, 0x0635, 0,
5598     6, 0xFEBA, 0x0635, 0,
5599     4, 0xFEBB, 0x0635, 0,
5600     5, 0xFEBC, 0x0635, 0,
5601     7, 0xFEBD, 0x0636, 0,
5602     6, 0xFEBE, 0x0636, 0,
5603     4, 0xFEBF, 0x0636, 0,
5604     5, 0xFEC0, 0x0636, 0,
5605     7, 0xFEC1, 0x0637, 0,
5606     6, 0xFEC2, 0x0637, 0,
5607     4, 0xFEC3, 0x0637, 0,
5608     5, 0xFEC4, 0x0637, 0,
5609     7, 0xFEC5, 0x0638, 0,
5610     6, 0xFEC6, 0x0638, 0,
5611     4, 0xFEC7, 0x0638, 0,
5612     5, 0xFEC8, 0x0638, 0,
5613     7, 0xFEC9, 0x0639, 0,
5614     6, 0xFECA, 0x0639, 0,
5615     4, 0xFECB, 0x0639, 0,
5616     5, 0xFECC, 0x0639, 0,
5617     7, 0xFECD, 0x063A, 0,
5618     6, 0xFECE, 0x063A, 0,
5619     4, 0xFECF, 0x063A, 0,
5620     5, 0xFED0, 0x063A, 0,
5621     7, 0xFED1, 0x0641, 0,
5622     6, 0xFED2, 0x0641, 0,
5623     4, 0xFED3, 0x0641, 0,
5624     5, 0xFED4, 0x0641, 0,
5625     7, 0xFED5, 0x0642, 0,
5626     6, 0xFED6, 0x0642, 0,
5627     4, 0xFED7, 0x0642, 0,
5628     5, 0xFED8, 0x0642, 0,
5629     7, 0xFED9, 0x0643, 0,
5630     6, 0xFEDA, 0x0643, 0,
5631     4, 0xFEDB, 0x0643, 0,
5632     5, 0xFEDC, 0x0643, 0,
5633     7, 0xFEDD, 0x0644, 0,
5634     6, 0xFEDE, 0x0644, 0,
5635     4, 0xFEDF, 0x0644, 0,
5636     5, 0xFEE0, 0x0644, 0,
5637     7, 0xFEE1, 0x0645, 0,
5638     6, 0xFEE2, 0x0645, 0,
5639     4, 0xFEE3, 0x0645, 0,
5640     5, 0xFEE4, 0x0645, 0,
5641     7, 0xFEE5, 0x0646, 0,
5642     6, 0xFEE6, 0x0646, 0,
5643     4, 0xFEE7, 0x0646, 0,
5644     5, 0xFEE8, 0x0646, 0,
5645     7, 0xFEE9, 0x0647, 0,
5646     6, 0xFEEA, 0x0647, 0,
5647     4, 0xFEEB, 0x0647, 0,
5648     5, 0xFEEC, 0x0647, 0,
5649     7, 0xFEED, 0x0648, 0,
5650     6, 0xFEEE, 0x0648, 0,
5651     7, 0xFEEF, 0x0649, 0,
5652     6, 0xFEF0, 0x0649, 0,
5653     7, 0xFEF1, 0x064A, 0,
5654     6, 0xFEF2, 0x064A, 0,
5655     4, 0xFEF3, 0x064A, 0,
5656     5, 0xFEF4, 0x064A, 0,
5657     7, 0xFEF5, 0x0644, 0x0622, 0,
5658     6, 0xFEF6, 0x0644, 0x0622, 0,
5659     7, 0xFEF7, 0x0644, 0x0623, 0,
5660     6, 0xFEF8, 0x0644, 0x0623, 0,
5661     7, 0xFEF9, 0x0644, 0x0625, 0,
5662     6, 0xFEFA, 0x0644, 0x0625, 0,
5663     7, 0xFEFB, 0x0644, 0x0627, 0,
5664     6, 0xFEFC, 0x0644, 0x0627, 0,
5665     12, 0xFF01, 0x0021, 0,
5666     12, 0xFF02, 0x0022, 0,
5667     12, 0xFF03, 0x0023, 0,
5668     12, 0xFF04, 0x0024, 0,
5669     12, 0xFF05, 0x0025, 0,
5670     12, 0xFF06, 0x0026, 0,
5671     12, 0xFF07, 0x0027, 0,
5672     12, 0xFF08, 0x0028, 0,
5673     12, 0xFF09, 0x0029, 0,
5674     12, 0xFF0A, 0x002A, 0,
5675     12, 0xFF0B, 0x002B, 0,
5676     12, 0xFF0C, 0x002C, 0,
5677     12, 0xFF0D, 0x002D, 0,
5678     12, 0xFF0E, 0x002E, 0,
5679     12, 0xFF0F, 0x002F, 0,
5680     12, 0xFF10, 0x0030, 0,
5681     12, 0xFF11, 0x0031, 0,
5682     12, 0xFF12, 0x0032, 0,
5683     12, 0xFF13, 0x0033, 0,
5684     12, 0xFF14, 0x0034, 0,
5685     12, 0xFF15, 0x0035, 0,
5686     12, 0xFF16, 0x0036, 0,
5687     12, 0xFF17, 0x0037, 0,
5688     12, 0xFF18, 0x0038, 0,
5689     12, 0xFF19, 0x0039, 0,
5690     12, 0xFF1A, 0x003A, 0,
5691     12, 0xFF1B, 0x003B, 0,
5692     12, 0xFF1C, 0x003C, 0,
5693     12, 0xFF1D, 0x003D, 0,
5694     12, 0xFF1E, 0x003E, 0,
5695     12, 0xFF1F, 0x003F, 0,
5696     12, 0xFF20, 0x0040, 0,
5697     12, 0xFF21, 0x0041, 0,
5698     12, 0xFF22, 0x0042, 0,
5699     12, 0xFF23, 0x0043, 0,
5700     12, 0xFF24, 0x0044, 0,
5701     12, 0xFF25, 0x0045, 0,
5702     12, 0xFF26, 0x0046, 0,
5703     12, 0xFF27, 0x0047, 0,
5704     12, 0xFF28, 0x0048, 0,
5705     12, 0xFF29, 0x0049, 0,
5706     12, 0xFF2A, 0x004A, 0,
5707     12, 0xFF2B, 0x004B, 0,
5708     12, 0xFF2C, 0x004C, 0,
5709     12, 0xFF2D, 0x004D, 0,
5710     12, 0xFF2E, 0x004E, 0,
5711     12, 0xFF2F, 0x004F, 0,
5712     12, 0xFF30, 0x0050, 0,
5713     12, 0xFF31, 0x0051, 0,
5714     12, 0xFF32, 0x0052, 0,
5715     12, 0xFF33, 0x0053, 0,
5716     12, 0xFF34, 0x0054, 0,
5717     12, 0xFF35, 0x0055, 0,
5718     12, 0xFF36, 0x0056, 0,
5719     12, 0xFF37, 0x0057, 0,
5720     12, 0xFF38, 0x0058, 0,
5721     12, 0xFF39, 0x0059, 0,
5722     12, 0xFF3A, 0x005A, 0,
5723     12, 0xFF3B, 0x005B, 0,
5724     12, 0xFF3C, 0x005C, 0,
5725     12, 0xFF3D, 0x005D, 0,
5726     12, 0xFF3E, 0x005E, 0,
5727     12, 0xFF3F, 0x005F, 0,
5728     12, 0xFF40, 0x0060, 0,
5729     12, 0xFF41, 0x0061, 0,
5730     12, 0xFF42, 0x0062, 0,
5731     12, 0xFF43, 0x0063, 0,
5732     12, 0xFF44, 0x0064, 0,
5733     12, 0xFF45, 0x0065, 0,
5734     12, 0xFF46, 0x0066, 0,
5735     12, 0xFF47, 0x0067, 0,
5736     12, 0xFF48, 0x0068, 0,
5737     12, 0xFF49, 0x0069, 0,
5738     12, 0xFF4A, 0x006A, 0,
5739     12, 0xFF4B, 0x006B, 0,
5740     12, 0xFF4C, 0x006C, 0,
5741     12, 0xFF4D, 0x006D, 0,
5742     12, 0xFF4E, 0x006E, 0,
5743     12, 0xFF4F, 0x006F, 0,
5744     12, 0xFF50, 0x0070, 0,
5745     12, 0xFF51, 0x0071, 0,
5746     12, 0xFF52, 0x0072, 0,
5747     12, 0xFF53, 0x0073, 0,
5748     12, 0xFF54, 0x0074, 0,
5749     12, 0xFF55, 0x0075, 0,
5750     12, 0xFF56, 0x0076, 0,
5751     12, 0xFF57, 0x0077, 0,
5752     12, 0xFF58, 0x0078, 0,
5753     12, 0xFF59, 0x0079, 0,
5754     12, 0xFF5A, 0x007A, 0,
5755     12, 0xFF5B, 0x007B, 0,
5756     12, 0xFF5C, 0x007C, 0,
5757     12, 0xFF5D, 0x007D, 0,
5758     12, 0xFF5E, 0x007E, 0,
5759     13, 0xFF61, 0x3002, 0,
5760     13, 0xFF62, 0x300C, 0,
5761     13, 0xFF63, 0x300D, 0,
5762     13, 0xFF64, 0x3001, 0,
5763     13, 0xFF65, 0x30FB, 0,
5764     13, 0xFF66, 0x30F2, 0,
5765     13, 0xFF67, 0x30A1, 0,
5766     13, 0xFF68, 0x30A3, 0,
5767     13, 0xFF69, 0x30A5, 0,
5768     13, 0xFF6A, 0x30A7, 0,
5769     13, 0xFF6B, 0x30A9, 0,
5770     13, 0xFF6C, 0x30E3, 0,
5771     13, 0xFF6D, 0x30E5, 0,
5772     13, 0xFF6E, 0x30E7, 0,
5773     13, 0xFF6F, 0x30C3, 0,
5774     13, 0xFF70, 0x30FC, 0,
5775     13, 0xFF71, 0x30A2, 0,
5776     13, 0xFF72, 0x30A4, 0,
5777     13, 0xFF73, 0x30A6, 0,
5778     13, 0xFF74, 0x30A8, 0,
5779     13, 0xFF75, 0x30AA, 0,
5780     13, 0xFF76, 0x30AB, 0,
5781     13, 0xFF77, 0x30AD, 0,
5782     13, 0xFF78, 0x30AF, 0,
5783     13, 0xFF79, 0x30B1, 0,
5784     13, 0xFF7A, 0x30B3, 0,
5785     13, 0xFF7B, 0x30B5, 0,
5786     13, 0xFF7C, 0x30B7, 0,
5787     13, 0xFF7D, 0x30B9, 0,
5788     13, 0xFF7E, 0x30BB, 0,
5789     13, 0xFF7F, 0x30BD, 0,
5790     13, 0xFF80, 0x30BF, 0,
5791     13, 0xFF81, 0x30C1, 0,
5792     13, 0xFF82, 0x30C4, 0,
5793     13, 0xFF83, 0x30C6, 0,
5794     13, 0xFF84, 0x30C8, 0,
5795     13, 0xFF85, 0x30CA, 0,
5796     13, 0xFF86, 0x30CB, 0,
5797     13, 0xFF87, 0x30CC, 0,
5798     13, 0xFF88, 0x30CD, 0,
5799     13, 0xFF89, 0x30CE, 0,
5800     13, 0xFF8A, 0x30CF, 0,
5801     13, 0xFF8B, 0x30D2, 0,
5802     13, 0xFF8C, 0x30D5, 0,
5803     13, 0xFF8D, 0x30D8, 0,
5804     13, 0xFF8E, 0x30DB, 0,
5805     13, 0xFF8F, 0x30DE, 0,
5806     13, 0xFF90, 0x30DF, 0,
5807     13, 0xFF91, 0x30E0, 0,
5808     13, 0xFF92, 0x30E1, 0,
5809     13, 0xFF93, 0x30E2, 0,
5810     13, 0xFF94, 0x30E4, 0,
5811     13, 0xFF95, 0x30E6, 0,
5812     13, 0xFF96, 0x30E8, 0,
5813     13, 0xFF97, 0x30E9, 0,
5814     13, 0xFF98, 0x30EA, 0,
5815     13, 0xFF99, 0x30EB, 0,
5816     13, 0xFF9A, 0x30EC, 0,
5817     13, 0xFF9B, 0x30ED, 0,
5818     13, 0xFF9C, 0x30EF, 0,
5819     13, 0xFF9D, 0x30F3, 0,
5820     13, 0xFF9E, 0x3099, 0,
5821     13, 0xFF9F, 0x309A, 0,
5822     13, 0xFFA0, 0x3164, 0,
5823     13, 0xFFA1, 0x3131, 0,
5824     13, 0xFFA2, 0x3132, 0,
5825     13, 0xFFA3, 0x3133, 0,
5826     13, 0xFFA4, 0x3134, 0,
5827     13, 0xFFA5, 0x3135, 0,
5828     13, 0xFFA6, 0x3136, 0,
5829     13, 0xFFA7, 0x3137, 0,
5830     13, 0xFFA8, 0x3138, 0,
5831     13, 0xFFA9, 0x3139, 0,
5832     13, 0xFFAA, 0x313A, 0,
5833     13, 0xFFAB, 0x313B, 0,
5834     13, 0xFFAC, 0x313C, 0,
5835     13, 0xFFAD, 0x313D, 0,
5836     13, 0xFFAE, 0x313E, 0,
5837     13, 0xFFAF, 0x313F, 0,
5838     13, 0xFFB0, 0x3140, 0,
5839     13, 0xFFB1, 0x3141, 0,
5840     13, 0xFFB2, 0x3142, 0,
5841     13, 0xFFB3, 0x3143, 0,
5842     13, 0xFFB4, 0x3144, 0,
5843     13, 0xFFB5, 0x3145, 0,
5844     13, 0xFFB6, 0x3146, 0,
5845     13, 0xFFB7, 0x3147, 0,
5846     13, 0xFFB8, 0x3148, 0,
5847     13, 0xFFB9, 0x3149, 0,
5848     13, 0xFFBA, 0x314A, 0,
5849     13, 0xFFBB, 0x314B, 0,
5850     13, 0xFFBC, 0x314C, 0,
5851     13, 0xFFBD, 0x314D, 0,
5852     13, 0xFFBE, 0x314E, 0,
5853     13, 0xFFC2, 0x314F, 0,
5854     13, 0xFFC3, 0x3150, 0,
5855     13, 0xFFC4, 0x3151, 0,
5856     13, 0xFFC5, 0x3152, 0,
5857     13, 0xFFC6, 0x3153, 0,
5858     13, 0xFFC7, 0x3154, 0,
5859     13, 0xFFCA, 0x3155, 0,
5860     13, 0xFFCB, 0x3156, 0,
5861     13, 0xFFCC, 0x3157, 0,
5862     13, 0xFFCD, 0x3158, 0,
5863     13, 0xFFCE, 0x3159, 0,
5864     13, 0xFFCF, 0x315A, 0,
5865     13, 0xFFD2, 0x315B, 0,
5866     13, 0xFFD3, 0x315C, 0,
5867     13, 0xFFD4, 0x315D, 0,
5868     13, 0xFFD5, 0x315E, 0,
5869     13, 0xFFD6, 0x315F, 0,
5870     13, 0xFFD7, 0x3160, 0,
5871     13, 0xFFDA, 0x3161, 0,
5872     13, 0xFFDB, 0x3162, 0,
5873     13, 0xFFDC, 0x3163, 0,
5874     12, 0xFFE0, 0x00A2, 0,
5875     12, 0xFFE1, 0x00A3, 0,
5876     12, 0xFFE2, 0x00AC, 0,
5877     12, 0xFFE3, 0x00AF, 0,
5878     12, 0xFFE4, 0x00A6, 0,
5879     12, 0xFFE5, 0x00A5, 0,
5880     12, 0xFFE6, 0x20A9, 0,
5881     13, 0xFFE8, 0x2502, 0,
5882     13, 0xFFE9, 0x2190, 0,
5883     13, 0xFFEA, 0x2191, 0,
5884     13, 0xFFEB, 0x2192, 0,
5885     13, 0xFFEC, 0x2193, 0,
5886     13, 0xFFED, 0x25A0, 0,
5887     13, 0xFFEE, 0x25CB, 0,
5888
5889 };
5890
5891 static const Q_UINT16 di_00[] = {
5892     0, 0, 0, 0, 0, 0, 0, 0,
5893     0, 0, 0, 0, 0, 0, 0, 0,
5894     0, 0, 0, 0, 0, 0, 0, 0,
5895     0, 0, 0, 0, 0, 0, 0, 0,
5896     0, 0, 0, 0, 0, 0, 0, 0,
5897     0, 0, 0, 0, 0, 0, 0, 0,
5898     0, 0, 0, 0, 0, 0, 0, 0,
5899     0, 0, 0, 0, 0, 0, 0, 0,
5900     0, 0, 0, 0, 0, 0, 0, 0,
5901     0, 0, 0, 0, 0, 0, 0, 0,
5902     0, 0, 0, 0, 0, 0, 0, 0,
5903     0, 0, 0, 0, 0, 0, 0, 0,
5904     0, 0, 0, 0, 0, 0, 0, 0,
5905     0, 0, 0, 0, 0, 0, 0, 0,
5906     0, 0, 0, 0, 0, 0, 0, 0,
5907     0, 0, 0, 0, 0, 0, 0, 0,
5908     0, 0, 0, 0, 0, 0, 0, 0,
5909     0, 0, 0, 0, 0, 0, 0, 0,
5910     0, 0, 0, 0, 0, 0, 0, 0,
5911     0, 0, 0, 0, 0, 0, 0, 0,
5912     1, 0, 0, 0, 0, 0, 0, 0,
5913     5, 0, 10, 0, 0, 0, 0, 14,
5914     0, 0, 19, 23, 27, 32, 0, 0,
5915     36, 41, 45, 0, 49, 55, 61, 0,
5916     67, 72, 77, 82, 87, 92, 0, 97,
5917     102, 107, 112, 117, 122, 127, 132, 137,
5918     0, 142, 147, 152, 157, 162, 167, 0,
5919     0, 172, 177, 182, 187, 192, 0, 0,
5920     197, 202, 207, 212, 217, 222, 0, 227,
5921     232, 237, 242, 247, 252, 257, 262, 267,
5922     0, 272, 277, 282, 287, 292, 297, 0,
5923     0, 302, 307, 312, 317, 322, 0, 327,
5924 };
5925
5926 static const Q_UINT16 di_01[] = {
5927     332, 337, 342, 347, 352, 357, 362, 367,
5928     372, 377, 382, 387, 392, 397, 402, 407,
5929     0, 0, 412, 417, 422, 427, 432, 437,
5930     442, 447, 452, 457, 462, 467, 472, 477,
5931     482, 487, 492, 497, 502, 507, 0, 0,
5932     512, 517, 522, 527, 532, 537, 542, 547,
5933     552, 0, 557, 562, 567, 572, 577, 582,
5934     0, 587, 592, 597, 602, 607, 612, 617,
5935     622, 0, 0, 627, 632, 637, 642, 647,
5936     652, 657, 0, 0, 662, 667, 672, 677,
5937     682, 687, 0, 0, 692, 697, 702, 707,
5938     712, 717, 722, 727, 732, 737, 742, 747,
5939     752, 757, 762, 767, 772, 777, 0, 0,
5940     782, 787, 792, 797, 802, 807, 812, 817,
5941     822, 827, 832, 837, 842, 847, 852, 857,
5942     862, 867, 872, 877, 882, 887, 892, 897,
5943     0, 0, 0, 0, 0, 0, 0, 0,
5944     0, 0, 0, 0, 0, 0, 0, 0,
5945     0, 0, 0, 0, 0, 0, 0, 0,
5946     0, 0, 0, 0, 0, 0, 0, 0,
5947     901, 906, 0, 0, 0, 0, 0, 0,
5948     0, 0, 0, 0, 0, 0, 0, 911,
5949     916, 0, 0, 0, 0, 0, 0, 0,
5950     0, 0, 0, 0, 0, 0, 0, 0,
5951     0, 0, 0, 0, 921, 926, 931, 936,
5952     941, 946, 951, 956, 961, 966, 971, 976,
5953     981, 986, 991, 996, 1001, 1006, 1011, 1016,
5954     1021, 1026, 1031, 1036, 1041, 0, 1046, 1051,
5955     1056, 1061, 1066, 1071, 0, 0, 1076, 1081,
5956     1086, 1091, 1096, 1101, 1106, 1111, 1116, 1121,
5957     1126, 1131, 1136, 1141, 1146, 1151, 0, 0,
5958     1156, 1161, 1166, 1171, 1176, 1181, 1186, 1191,
5959 };
5960
5961 static const Q_UINT16 di_02[] = {
5962     1196, 1201, 1206, 1211, 1216, 1221, 1226, 1231,
5963     1236, 1241, 1246, 1251, 1256, 1261, 1266, 1271,
5964     1276, 1281, 1286, 1291, 1296, 1301, 1306, 1311,
5965     1316, 1321, 1326, 1331, 0, 0, 1336, 1341,
5966     0, 0, 0, 0, 0, 0, 1346, 1351,
5967     1356, 1361, 1366, 1371, 1376, 1381, 1386, 1391,
5968     1396, 1401, 1406, 1411, 0, 0, 0, 0,
5969     0, 0, 0, 0, 0, 0, 0, 0,
5970     0, 0, 0, 0, 0, 0, 0, 0,
5971     0, 0, 0, 0, 0, 0, 0, 0,
5972     0, 0, 0, 0, 0, 0, 0, 0,
5973     0, 0, 0, 0, 0, 0, 0, 0,
5974     0, 0, 0, 0, 0, 0, 0, 0,
5975     0, 0, 0, 0, 0, 0, 0, 0,
5976     0, 0, 0, 0, 0, 0, 0, 0,
5977     0, 0, 0, 0, 0, 0, 0, 0,
5978     0, 0, 0, 0, 0, 0, 0, 0,
5979     0, 0, 0, 0, 0, 0, 0, 0,
5980     0, 0, 0, 0, 0, 0, 0, 0,
5981     0, 0, 0, 0, 0, 0, 0, 0,
5982     0, 0, 0, 0, 0, 0, 0, 0,
5983     0, 0, 0, 0, 0, 0, 0, 0,
5984     1416, 1420, 1424, 1428, 1432, 1436, 1440, 1444,
5985     1448, 0, 0, 0, 0, 0, 0, 0,
5986     0, 0, 0, 0, 0, 0, 0, 0,
5987     0, 0, 0, 0, 0, 0, 0, 0,
5988     0, 0, 0, 0, 0, 0, 0, 0,
5989     1452, 1457, 1462, 1467, 1472, 1477, 0, 0,
5990     1482, 1486, 1490, 1494, 1498, 0, 0, 0,
5991     0, 0, 0, 0, 0, 0, 0, 0,
5992     0, 0, 0, 0, 0, 0, 0, 0,
5993     0, 0, 0, 0, 0, 0, 0, 0,
5994 };
5995
5996 static const Q_UINT16 di_03[] = {
5997     0, 0, 0, 0, 0, 0, 0, 0,
5998     0, 0, 0, 0, 0, 0, 0, 0,
5999     0, 0, 0, 0, 0, 0, 0, 0,
6000     0, 0, 0, 0, 0, 0, 0, 0,
6001     0, 0, 0, 0, 0, 0, 0, 0,
6002     0, 0, 0, 0, 0, 0, 0, 0,
6003     0, 0, 0, 0, 0, 0, 0, 0,
6004     0, 0, 0, 0, 0, 0, 0, 0,
6005     1502, 1506, 0, 1510, 1514, 0, 0, 0,
6006     0, 0, 0, 0, 0, 0, 0, 0,
6007     0, 0, 0, 0, 0, 0, 0, 0,
6008     0, 0, 0, 0, 0, 0, 0, 0,
6009     0, 0, 0, 0, 0, 0, 0, 0,
6010     0, 0, 0, 0, 0, 0, 0, 0,
6011     0, 0, 0, 0, 1519, 0, 0, 0,
6012     0, 0, 1523, 0, 0, 0, 1528, 0,
6013     0, 0, 0, 0, 1532, 1537, 1542, 1547,
6014     1551, 1556, 1561, 0, 1566, 0, 1571, 1576,
6015     1581, 0, 0, 0, 0, 0, 0, 0,
6016     0, 0, 0, 0, 0, 0, 0, 0,
6017     0, 0, 0, 0, 0, 0, 0, 0,
6018     0, 0, 1586, 1591, 1596, 1601, 1606, 1611,
6019     1616, 0, 0, 0, 0, 0, 0, 0,
6020     0, 0, 0, 0, 0, 0, 0, 0,
6021     0, 0, 0, 0, 0, 0, 0, 0,
6022     0, 0, 1621, 1626, 1631, 1636, 1641, 0,
6023     1646, 1650, 1654, 1658, 1663, 1668, 1672, 0,
6024     0, 0, 0, 0, 0, 0, 0, 0,
6025     0, 0, 0, 0, 0, 0, 0, 0,
6026     0, 0, 0, 0, 0, 0, 0, 0,
6027     1676, 1680, 1684, 0, 0, 0, 0, 0,
6028     0, 0, 0, 0, 0, 0, 0, 0,
6029 };
6030
6031 static const Q_UINT16 di_04[] = {
6032     1688, 1693, 0, 1698, 0, 0, 0, 1703,
6033     0, 0, 0, 0, 1708, 1713, 1718, 0,
6034     0, 0, 0, 0, 0, 0, 0, 0,
6035     0, 1723, 0, 0, 0, 0, 0, 0,
6036     0, 0, 0, 0, 0, 0, 0, 0,
6037     0, 0, 0, 0, 0, 0, 0, 0,
6038     0, 0, 0, 0, 0, 0, 0, 0,
6039     0, 1728, 0, 0, 0, 0, 0, 0,
6040     0, 0, 0, 0, 0, 0, 0, 0,
6041     0, 0, 0, 0, 0, 0, 0, 0,
6042     1733, 1738, 0, 1743, 0, 0, 0, 1748,
6043     0, 0, 0, 0, 1753, 1758, 1763, 0,
6044     0, 0, 0, 0, 0, 0, 0, 0,
6045     0, 0, 0, 0, 0, 0, 0, 0,
6046     0, 0, 0, 0, 0, 0, 1768, 1773,
6047     0, 0, 0, 0, 0, 0, 0, 0,
6048     0, 0, 0, 0, 0, 0, 0, 0,
6049     0, 0, 0, 0, 0, 0, 0, 0,
6050     0, 0, 0, 0, 0, 0, 0, 0,
6051     0, 0, 0, 0, 0, 0, 0, 0,
6052     0, 0, 0, 0, 0, 0, 0, 0,
6053     0, 0, 0, 0, 0, 0, 0, 0,
6054     0, 0, 0, 0, 0, 0, 0, 0,
6055     0, 0, 0, 0, 0, 0, 0, 0,
6056     0, 1778, 1783, 0, 0, 0, 0, 0,
6057     0, 0, 0, 0, 0, 0, 0, 0,
6058     1788, 1793, 1798, 1803, 0, 0, 1808, 1813,
6059     0, 0, 1818, 1823, 1828, 1833, 1838, 1843,
6060     0, 0, 1848, 1853, 1858, 1863, 1868, 1873,
6061     0, 0, 1878, 1883, 1888, 1893, 1898, 1903,
6062     1908, 1913, 1918, 1923, 1928, 1933, 0, 0,
6063     1938, 1943, 0, 0, 0, 0, 0, 0,
6064 };
6065
6066 static const Q_UINT16 di_05[] = {
6067     0, 0, 0, 0, 0, 0, 0, 0,
6068     0, 0, 0, 0, 0, 0, 0, 0,
6069     0, 0, 0, 0, 0, 0, 0, 0,
6070     0, 0, 0, 0, 0, 0, 0, 0,
6071     0, 0, 0, 0, 0, 0, 0, 0,
6072     0, 0, 0, 0, 0, 0, 0, 0,
6073     0, 0, 0, 0, 0, 0, 0, 0,
6074     0, 0, 0, 0, 0, 0, 0, 0,
6075     0, 0, 0, 0, 0, 0, 0, 0,
6076     0, 0, 0, 0, 0, 0, 0, 0,
6077     0, 0, 0, 0, 0, 0, 0, 0,
6078     0, 0, 0, 0, 0, 0, 0, 0,
6079     0, 0, 0, 0, 0, 0, 0, 0,
6080     0, 0, 0, 0, 0, 0, 0, 0,
6081     0, 0, 0, 0, 0, 0, 0, 0,
6082     0, 0, 0, 0, 0, 0, 0, 0,
6083     0, 0, 0, 0, 0, 0, 0, 1948,
6084     0, 0, 0, 0, 0, 0, 0, 0,
6085     0, 0, 0, 0, 0, 0, 0, 0,
6086     0, 0, 0, 0, 0, 0, 0, 0,
6087     0, 0, 0, 0, 0, 0, 0, 0,
6088     0, 0, 0, 0, 0, 0, 0, 0,
6089     0, 0, 0, 0, 0, 0, 0, 0,
6090     0, 0, 0, 0, 0, 0, 0, 0,
6091     0, 0, 0, 0, 0, 0, 0, 0,
6092     0, 0, 0, 0, 0, 0, 0, 0,
6093     0, 0, 0, 0, 0, 0, 0, 0,
6094     0, 0, 0, 0, 0, 0, 0, 0,
6095     0, 0, 0, 0, 0, 0, 0, 0,
6096     0, 0, 0, 0, 0, 0, 0, 0,
6097     0, 0, 0, 0, 0, 0, 0, 0,
6098     0, 0, 0, 0, 0, 0, 0, 0,
6099 };
6100
6101 static const Q_UINT16 di_06[] = {
6102     0, 0, 0, 0, 0, 0, 0, 0,
6103     0, 0, 0, 0, 0, 0, 0, 0,
6104     0, 0, 0, 0, 0, 0, 0, 0,
6105     0, 0, 0, 0, 0, 0, 0, 0,
6106     0, 0, 1953, 1958, 1963, 1968, 1973, 0,
6107     0, 0, 0, 0, 0, 0, 0, 0,
6108     0, 0, 0, 0, 0, 0, 0, 0,
6109     0, 0, 0, 0, 0, 0, 0, 0,
6110     0, 0, 0, 0, 0, 0, 0, 0,
6111     0, 0, 0, 0, 0, 0, 0, 0,
6112     0, 0, 0, 0, 0, 0, 0, 0,
6113     0, 0, 0, 0, 0, 0, 0, 0,
6114     0, 0, 0, 0, 0, 0, 0, 0,
6115     0, 0, 0, 0, 0, 0, 0, 0,
6116     0, 0, 0, 0, 0, 1978, 1983, 1988,
6117     1993, 0, 0, 0, 0, 0, 0, 0,
6118     0, 0, 0, 0, 0, 0, 0, 0,
6119     0, 0, 0, 0, 0, 0, 0, 0,
6120     0, 0, 0, 0, 0, 0, 0, 0,
6121     0, 0, 0, 0, 0, 0, 0, 0,
6122     0, 0, 0, 0, 0, 0, 0, 0,
6123     0, 0, 0, 0, 0, 0, 0, 0,
6124     0, 0, 0, 0, 0, 0, 0, 0,
6125     0, 0, 0, 0, 0, 0, 0, 0,
6126     1998, 0, 2003, 0, 0, 0, 0, 0,
6127     0, 0, 0, 0, 0, 0, 0, 0,
6128     0, 0, 0, 2008, 0, 0, 0, 0,
6129     0, 0, 0, 0, 0, 0, 0, 0,
6130     0, 0, 0, 0, 0, 0, 0, 0,
6131     0, 0, 0, 0, 0, 0, 0, 0,
6132     0, 0, 0, 0, 0, 0, 0, 0,
6133     0, 0, 0, 0, 0, 0, 0, 0,
6134 };
6135
6136 static const Q_UINT16 di_07[] = {
6137     0, 0, 0, 0, 0, 0, 0, 0,
6138     0, 0, 0, 0, 0, 0, 0, 0,
6139     0, 0, 0, 0, 0, 0, 0, 0,
6140     0, 0, 0, 0, 0, 0, 0, 0,
6141     0, 0, 0, 0, 0, 0, 0, 0,
6142     0, 0, 0, 0, 0, 0, 0, 0,
6143     0, 0, 0, 0, 0, 0, 0, 0,
6144     0, 0, 0, 0, 0, 0, 0, 0,
6145     0, 0, 0, 0, 0, 0, 0, 0,
6146     0, 0, 0, 0, 0, 0, 0, 0,
6147     0, 0, 0, 0, 0, 0, 0, 0,
6148     0, 0, 0, 0, 0, 0, 0, 0,
6149     0, 0, 0, 0, 0, 0, 0, 0,
6150     0, 0, 0, 0, 0, 0, 0, 0,
6151     0, 0, 0, 0, 0, 0, 0, 0,
6152     0, 0, 0, 0, 0, 0, 0, 0,
6153     0, 0, 0, 0, 0, 0, 0, 0,
6154     0, 0, 0, 0, 0, 0, 0, 0,
6155     0, 0, 0, 0, 0, 0, 0, 0,
6156     0, 0, 0, 0, 0, 0, 0, 0,
6157     0, 0, 0, 0, 0, 0, 0, 0,
6158     0, 0, 0, 0, 0, 0, 0, 0,
6159     0, 0, 0, 0, 0, 0, 0, 0,
6160     0, 0, 0, 0, 0, 0, 0, 0,
6161     0, 0, 0, 0, 0, 0, 0, 0,
6162     0, 0, 0, 0, 0, 0, 0, 0,
6163     0, 0, 0, 0, 0, 0, 0, 0,
6164     0, 0, 0, 0, 0, 0, 0, 0,
6165     0, 0, 0, 0, 0, 0, 0, 0,
6166     0, 0, 0, 0, 0, 0, 0, 0,
6167     0, 0, 0, 0, 0, 0, 0, 0,
6168     0, 0, 0, 0, 0, 0, 0, 0,
6169 };
6170
6171 static const Q_UINT16 di_09[] = {
6172     0, 0, 0, 0, 0, 0, 0, 0,
6173     0, 0, 0, 0, 0, 0, 0, 0,
6174     0, 0, 0, 0, 0, 0, 0, 0,
6175     0, 0, 0, 0, 0, 0, 0, 0,
6176     0, 0, 0, 0, 0, 0, 0, 0,
6177     0, 2013, 0, 0, 0, 0, 0, 0,
6178     0, 2018, 0, 0, 2023, 0, 0, 0,
6179     0, 0, 0, 0, 0, 0, 0, 0,
6180     0, 0, 0, 0, 0, 0, 0, 0,
6181     0, 0, 0, 0, 0, 0, 0, 0,
6182     0, 0, 0, 0, 0, 0, 0, 0,
6183     2028, 2033, 2038, 2043, 2048, 2053, 2058, 2063,
6184     0, 0, 0, 0, 0, 0, 0, 0,
6185     0, 0, 0, 0, 0, 0, 0, 0,
6186     0, 0, 0, 0, 0, 0, 0, 0,
6187     0, 0, 0, 0, 0, 0, 0, 0,
6188     0, 0, 0, 0, 0, 0, 0, 0,
6189     0, 0, 0, 0, 0, 0, 0, 0,
6190     0, 0, 0, 0, 0, 0, 0, 0,
6191     0, 0, 0, 0, 0, 0, 0, 0,
6192     0, 0, 0, 0, 0, 0, 0, 0,
6193     0, 0, 0, 0, 0, 0, 0, 0,
6194     0, 0, 0, 0, 0, 0, 0, 0,
6195     0, 0, 0, 0, 0, 0, 0, 0,
6196     0, 0, 0, 0, 0, 0, 0, 0,
6197     0, 0, 0, 2068, 2073, 0, 0, 0,
6198     0, 0, 0, 0, 0, 0, 0, 0,
6199     0, 0, 0, 0, 2078, 2083, 0, 2088,
6200     0, 0, 0, 0, 0, 0, 0, 0,
6201     0, 0, 0, 0, 0, 0, 0, 0,
6202     0, 0, 0, 0, 0, 0, 0, 0,
6203     0, 0, 0, 0, 0, 0, 0, 0,
6204 };
6205
6206 static const Q_UINT16 di_0A[] = {
6207     0, 0, 0, 0, 0, 0, 0, 0,
6208     0, 0, 0, 0, 0, 0, 0, 0,
6209     0, 0, 0, 0, 0, 0, 0, 0,
6210     0, 0, 0, 0, 0, 0, 0, 0,
6211     0, 0, 0, 0, 0, 0, 0, 0,
6212     0, 0, 0, 0, 0, 0, 0, 0,
6213     0, 0, 0, 2093, 0, 0, 2098, 0,
6214     0, 0, 0, 0, 0, 0, 0, 0,
6215     0, 0, 0, 0, 0, 0, 0, 0,
6216     0, 0, 0, 0, 0, 0, 0, 0,
6217     0, 0, 0, 0, 0, 0, 0, 0,
6218     0, 2103, 2108, 2113, 0, 0, 2118, 0,
6219     0, 0, 0, 0, 0, 0, 0, 0,
6220     0, 0, 0, 0, 0, 0, 0, 0,
6221     0, 0, 0, 0, 0, 0, 0, 0,
6222     0, 0, 0, 0, 0, 0, 0, 0,
6223     0, 0, 0, 0, 0, 0, 0, 0,
6224     0, 0, 0, 0, 0, 0, 0, 0,
6225     0, 0, 0, 0, 0, 0, 0, 0,
6226     0, 0, 0, 0, 0, 0, 0, 0,
6227     0, 0, 0, 0, 0, 0, 0, 0,
6228     0, 0, 0, 0, 0, 0, 0, 0,
6229     0, 0, 0, 0, 0, 0, 0, 0,
6230     0, 0, 0, 0, 0, 0, 0, 0,
6231     0, 0, 0, 0, 0, 0, 0, 0,
6232     0, 0, 0, 0, 0, 0, 0, 0,
6233     0, 0, 0, 0, 0, 0, 0, 0,
6234     0, 0, 0, 0, 0, 0, 0, 0,
6235     0, 0, 0, 0, 0, 0, 0, 0,
6236     0, 0, 0, 0, 0, 0, 0, 0,
6237     0, 0, 0, 0, 0, 0, 0, 0,
6238     0, 0, 0, 0, 0, 0, 0, 0,
6239 };
6240
6241 static const Q_UINT16 di_0B[] = {
6242     0, 0, 0, 0, 0, 0, 0, 0,
6243     0, 0, 0, 0, 0, 0, 0, 0,
6244     0, 0, 0, 0, 0, 0, 0, 0,
6245     0, 0, 0, 0, 0, 0, 0, 0,
6246     0, 0, 0, 0, 0, 0, 0, 0,
6247     0, 0, 0, 0, 0, 0, 0, 0,
6248     0, 0, 0, 0, 0, 0, 0, 0,
6249     0, 0, 0, 0, 0, 0, 0, 0,
6250     0, 0, 0, 0, 0, 0, 0, 0,
6251     2123, 0, 0, 2128, 2133, 0, 0, 0,
6252     0, 0, 0, 0, 0, 0, 0, 0,
6253     0, 0, 0, 0, 2138, 2143, 0, 0,
6254     0, 0, 0, 0, 0, 0, 0, 0,
6255     0, 0, 0, 0, 0, 0, 0, 0,
6256     0, 0, 0, 0, 0, 0, 0, 0,
6257     0, 0, 0, 0, 0, 0, 0, 0,
6258     0, 0, 0, 0, 0, 0, 0, 0,
6259     0, 0, 0, 0, 0, 0, 0, 0,
6260     0, 0, 0, 0, 2148, 0, 0, 0,
6261     0, 0, 0, 0, 0, 0, 0, 0,
6262     0, 0, 0, 0, 0, 0, 0, 0,
6263     0, 0, 0, 0, 0, 0, 0, 0,
6264     0, 0, 0, 0, 0, 0, 0, 0,
6265     0, 0, 0, 0, 0, 0, 0, 0,
6266     0, 0, 0, 0, 0, 0, 0, 0,
6267     0, 0, 2153, 2158, 2163, 0, 0, 0,
6268     0, 0, 0, 0, 0, 0, 0, 0,
6269     0, 0, 0, 0, 0, 0, 0, 0,
6270     0, 0, 0, 0, 0, 0, 0, 0,
6271     0, 0, 0, 0, 0, 0, 0, 0,
6272     0, 0, 0, 0, 0, 0, 0, 0,
6273     0, 0, 0, 0, 0, 0, 0, 0,
6274 };
6275
6276 static const Q_UINT16 di_0C[] = {
6277     0, 0, 0, 0, 0, 0, 0, 0,
6278     0, 0, 0, 0, 0, 0, 0, 0,
6279     0, 0, 0, 0, 0, 0, 0, 0,
6280     0, 0, 0, 0, 0, 0, 0, 0,
6281     0, 0, 0, 0, 0, 0, 0, 0,
6282     0, 0, 0, 0, 0, 0, 0, 0,
6283     0, 0, 0, 0, 0, 0, 0, 0,
6284     0, 0, 0, 0, 0, 0, 0, 0,
6285     0, 0, 0, 0, 0, 0, 0, 0,
6286     2168, 0, 0, 0, 0, 0, 0, 0,
6287     0, 0, 0, 0, 0, 0, 0, 0,
6288     0, 0, 0, 0, 0, 0, 0, 0,
6289     0, 0, 0, 0, 0, 0, 0, 0,
6290     0, 0, 0, 0, 0, 0, 0, 0,
6291     0, 0, 0, 0, 0, 0, 0, 0,
6292     0, 0, 0, 0, 0, 0, 0, 0,
6293     0, 0, 0, 0, 0, 0, 0, 0,
6294     0, 0, 0, 0, 0, 0, 0, 0,
6295     0, 0, 0, 0, 0, 0, 0, 0,
6296     0, 0, 0, 0, 0, 0, 0, 0,
6297     0, 0, 0, 0, 0, 0, 0, 0,
6298     0, 0, 0, 0, 0, 0, 0, 0,
6299     0, 0, 0, 0, 0, 0, 0, 0,
6300     0, 0, 0, 0, 0, 0, 0, 0,
6301     2173, 0, 0, 0, 0, 0, 0, 2178,
6302     2183, 0, 2188, 2193, 0, 0, 0, 0,
6303     0, 0, 0, 0, 0, 0, 0, 0,
6304     0, 0, 0, 0, 0, 0, 0, 0,
6305     0, 0, 0, 0, 0, 0, 0, 0,
6306     0, 0, 0, 0, 0, 0, 0, 0,
6307     0, 0, 0, 0, 0, 0, 0, 0,
6308     0, 0, 0, 0, 0, 0, 0, 0,
6309 };
6310
6311 static const Q_UINT16 di_0D[] = {
6312     0, 0, 0, 0, 0, 0, 0, 0,
6313     0, 0, 0, 0, 0, 0, 0, 0,
6314     0, 0, 0, 0, 0, 0, 0, 0,
6315     0, 0, 0, 0, 0, 0, 0, 0,
6316     0, 0, 0, 0, 0, 0, 0, 0,
6317     0, 0, 0, 0, 0, 0, 0, 0,
6318     0, 0, 0, 0, 0, 0, 0, 0,
6319     0, 0, 0, 0, 0, 0, 0, 0,
6320     0, 0, 0, 0, 0, 0, 0, 0,
6321     0, 0, 2198, 2203, 2208, 0, 0, 0,
6322     0, 0, 0, 0, 0, 0, 0, 0,
6323     0, 0, 0, 0, 0, 0, 0, 0,
6324     0, 0, 0, 0, 0, 0, 0, 0,
6325     0, 0, 0, 0, 0, 0, 0, 0,
6326     0, 0, 0, 0, 0, 0, 0, 0,
6327     0, 0, 0, 0, 0, 0, 0, 0,
6328     0, 0, 0, 0, 0, 0, 0, 0,
6329     0, 0, 0, 0, 0, 0, 0, 0,
6330     0, 0, 0, 0, 0, 0, 0, 0,
6331     0, 0, 0, 0, 0, 0, 0, 0,
6332     0, 0, 0, 0, 0, 0, 0, 0,
6333     0, 0, 0, 0, 0, 0, 0, 0,
6334     0, 0, 0, 0, 0, 0, 0, 0,
6335     0, 0, 0, 0, 0, 0, 0, 0,
6336     0, 0, 0, 0, 0, 0, 0, 0,
6337     0, 0, 0, 0, 0, 0, 0, 0,
6338     0, 0, 0, 0, 0, 0, 0, 0,
6339     0, 0, 2213, 0, 2218, 2223, 2228, 0,
6340     0, 0, 0, 0, 0, 0, 0, 0,
6341     0, 0, 0, 0, 0, 0, 0, 0,
6342     0, 0, 0, 0, 0, 0, 0, 0,
6343     0, 0, 0, 0, 0, 0, 0, 0,
6344 };
6345
6346 static const Q_UINT16 di_0E[] = {
6347     0, 0, 0, 0, 0, 0, 0, 0,
6348     0, 0, 0, 0, 0, 0, 0, 0,
6349     0, 0, 0, 0, 0, 0, 0, 0,
6350     0, 0, 0, 0, 0, 0, 0, 0,
6351     0, 0, 0, 0, 0, 0, 0, 0,
6352     0, 0, 0, 0, 0, 0, 0, 0,
6353     0, 0, 0, 2233, 0, 0, 0, 0,
6354     0, 0, 0, 0, 0, 0, 0, 0,
6355     0, 0, 0, 0, 0, 0, 0, 0,
6356     0, 0, 0, 0, 0, 0, 0, 0,
6357     0, 0, 0, 0, 0, 0, 0, 0,
6358     0, 0, 0, 0, 0, 0, 0, 0,
6359     0, 0, 0, 0, 0, 0, 0, 0,
6360     0, 0, 0, 0, 0, 0, 0, 0,
6361     0, 0, 0, 0, 0, 0, 0, 0,
6362     0, 0, 0, 0, 0, 0, 0, 0,
6363     0, 0, 0, 0, 0, 0, 0, 0,
6364     0, 0, 0, 0, 0, 0, 0, 0,
6365     0, 0, 0, 0, 0, 0, 0, 0,
6366     0, 0, 0, 0, 0, 0, 0, 0,
6367     0, 0, 0, 0, 0, 0, 0, 0,
6368     0, 0, 0, 0, 0, 0, 0, 0,
6369     0, 0, 0, 2238, 0, 0, 0, 0,
6370     0, 0, 0, 0, 0, 0, 0, 0,
6371     0, 0, 0, 0, 0, 0, 0, 0,
6372     0, 0, 0, 0, 0, 0, 0, 0,
6373     0, 0, 0, 0, 0, 0, 0, 0,
6374     0, 0, 0, 0, 2243, 2248, 0, 0,
6375     0, 0, 0, 0, 0, 0, 0, 0,
6376     0, 0, 0, 0, 0, 0, 0, 0,
6377     0, 0, 0, 0, 0, 0, 0, 0,
6378     0, 0, 0, 0, 0, 0, 0, 0,
6379 };
6380
6381 static const Q_UINT16 di_0F[] = {
6382     0, 0, 0, 0, 0, 0, 0, 0,
6383     0, 0, 0, 0, 2253, 0, 0, 0,
6384     0, 0, 0, 0, 0, 0, 0, 0,
6385     0, 0, 0, 0, 0, 0, 0, 0,
6386     0, 0, 0, 0, 0, 0, 0, 0,
6387     0, 0, 0, 0, 0, 0, 0, 0,
6388     0, 0, 0, 0, 0, 0, 0, 0,
6389     0, 0, 0, 0, 0, 0, 0, 0,
6390     0, 0, 0, 2257, 0, 0, 0, 0,
6391     0, 0, 0, 0, 0, 2262, 0, 0,
6392     0, 0, 2267, 0, 0, 0, 0, 2272,
6393     0, 0, 0, 0, 2277, 0, 0, 0,
6394     0, 0, 0, 0, 0, 0, 0, 0,
6395     0, 2282, 0, 0, 0, 0, 0, 0,
6396     0, 0, 0, 2287, 0, 2292, 2297, 2302,
6397     2307, 2312, 0, 0, 0, 0, 0, 0,
6398     0, 2317, 0, 0, 0, 0, 0, 0,
6399     0, 0, 0, 0, 0, 0, 0, 0,
6400     0, 0, 0, 2322, 0, 0, 0, 0,
6401     0, 0, 0, 0, 0, 2327, 0, 0,
6402     0, 0, 2332, 0, 0, 0, 0, 2337,
6403     0, 0, 0, 0, 2342, 0, 0, 0,
6404     0, 0, 0, 0, 0, 0, 0, 0,
6405     0, 2347, 0, 0, 0, 0, 0, 0,
6406     0, 0, 0, 0, 0, 0, 0, 0,
6407     0, 0, 0, 0, 0, 0, 0, 0,
6408     0, 0, 0, 0, 0, 0, 0, 0,
6409     0, 0, 0, 0, 0, 0, 0, 0,
6410     0, 0, 0, 0, 0, 0, 0, 0,
6411     0, 0, 0, 0, 0, 0, 0, 0,
6412     0, 0, 0, 0, 0, 0, 0, 0,
6413     0, 0, 0, 0, 0, 0, 0, 0,
6414 };
6415
6416 static const Q_UINT16 di_10[] = {
6417     0, 0, 0, 0, 0, 0, 0, 0,
6418     0, 0, 0, 0, 0, 0, 0, 0,
6419     0, 0, 0, 0, 0, 0, 0, 0,
6420     0, 0, 0, 0, 0, 0, 0, 0,
6421     0, 0, 0, 0, 0, 0, 2352, 0,
6422     0, 0, 0, 0, 0, 0, 0, 0,
6423     0, 0, 0, 0, 0, 0, 0, 0,
6424     0, 0, 0, 0, 0, 0, 0, 0,
6425     0, 0, 0, 0, 0, 0, 0, 0,
6426     0, 0, 0, 0, 0, 0, 0, 0,
6427     0, 0, 0, 0, 0, 0, 0, 0,
6428     0, 0, 0, 0, 0, 0, 0, 0,
6429     0, 0, 0, 0, 0, 0, 0, 0,
6430     0, 0, 0, 0, 0, 0, 0, 0,
6431     0, 0, 0, 0, 0, 0, 0, 0,
6432     0, 0, 0, 0, 0, 0, 0, 0,
6433     0, 0, 0, 0, 0, 0, 0, 0,
6434     0, 0, 0, 0, 0, 0, 0, 0,
6435     0, 0, 0, 0, 0, 0, 0, 0,
6436     0, 0, 0, 0, 0, 0, 0, 0,
6437     0, 0, 0, 0, 0, 0, 0, 0,
6438     0, 0, 0, 0, 0, 0, 0, 0,
6439     0, 0, 0, 0, 0, 0, 0, 0,
6440     0, 0, 0, 0, 0, 0, 0, 0,
6441     0, 0, 0, 0, 0, 0, 0, 0,
6442     0, 0, 0, 0, 0, 0, 0, 0,
6443     0, 0, 0, 0, 0, 0, 0, 0,
6444     0, 0, 0, 0, 0, 0, 0, 0,
6445     0, 0, 0, 0, 0, 0, 0, 0,
6446     0, 0, 0, 0, 0, 0, 0, 0,
6447     0, 0, 0, 0, 0, 0, 0, 0,
6448     0, 0, 0, 0, 0, 0, 0, 0,
6449 };
6450
6451 static const Q_UINT16 di_1E[] = {
6452     2357, 2362, 2367, 2372, 2377, 2382, 2387, 2392,
6453     2397, 2402, 2407, 2412, 2417, 2422, 2427, 2432,
6454     2437, 2442, 2447, 2452, 2457, 2462, 2467, 2472,
6455     2477, 2482, 2487, 2492, 2497, 2502, 2507, 2512,
6456     2517, 2522, 2527, 2532, 2537, 2542, 2547, 2552,
6457     2557, 2562, 2567, 2572, 2577, 2582, 2587, 2592,
6458     2597, 2602, 2607, 2612, 2617, 2622, 2627, 2632,
6459     2637, 2642, 2647, 2652, 2657, 2662, 2667, 2672,
6460     2677, 2682, 2687, 2692, 2697, 2702, 2707, 2712,
6461     2717, 2722, 2727, 2732, 2737, 2742, 2747, 2752,
6462     2757, 2762, 2767, 2772, 2777, 2782, 2787, 2792,
6463     2797, 2802, 2807, 2812, 2817, 2822, 2827, 2832,
6464     2837, 2842, 2847, 2852, 2857, 2862, 2867, 2872,
6465     2877, 2882, 2887, 2892, 2897, 2902, 2907, 2912,
6466     2917, 2922, 2927, 2932, 2937, 2942, 2947, 2952,
6467     2957, 2962, 2967, 2972, 2977, 2982, 2987, 2992,
6468     2997, 3002, 3007, 3012, 3017, 3022, 3027, 3032,
6469     3037, 3042, 3047, 3052, 3057, 3062, 3067, 3072,
6470     3077, 3082, 3087, 3092, 3097, 3102, 3107, 3112,
6471     3117, 3122, 3127, 3132, 0, 0, 0, 0,
6472     3137, 3142, 3147, 3152, 3157, 3162, 3167, 3172,
6473     3177, 3182, 3187, 3192, 3197, 3202, 3207, 3212,
6474     3217, 3222, 3227, 3232, 3237, 3242, 3247, 3252,
6475     3257, 3262, 3267, 3272, 3277, 3282, 3287, 3292,
6476     3297, 3302, 3307, 3312, 3317, 3322, 3327, 3332,
6477     3337, 3342, 3347, 3352, 3357, 3362, 3367, 3372,
6478     3377, 3382, 3387, 3392, 3397, 3402, 3407, 3412,
6479     3417, 3422, 3427, 3432, 3437, 3442, 3447, 3452,
6480     3457, 3462, 3467, 3472, 3477, 3482, 3487, 3492,
6481     3497, 3502, 3507, 3512, 3517, 3522, 3527, 3532,
6482     3537, 3542, 3547, 3552, 3557, 3562, 3567, 3572,
6483     3577, 3582, 0, 0, 0, 0, 0, 0,
6484 };
6485
6486 static const Q_UINT16 di_1F[] = {
6487     3587, 3592, 3597, 3602, 3607, 3612, 3617, 3622,
6488     3627, 3632, 3637, 3642, 3647, 3652, 3657, 3662,
6489     3667, 3672, 3677, 3682, 3687, 3692, 0, 0,
6490     3697, 3702, 3707, 3712, 3717, 3722, 0, 0,
6491     3727, 3732, 3737, 3742, 3747, 3752, 3757, 3762,
6492     3767, 3772, 3777, 3782, 3787, 3792, 3797, 3802,
6493     3807, 3812, 3817, 3822, 3827, 3832, 3837, 3842,
6494     3847, 3852, 3857, 3862, 3867, 3872, 3877, 3882,
6495     3887, 3892, 3897, 3902, 3907, 3912, 0, 0,
6496     3917, 3922, 3927, 3932, 3937, 3942, 0, 0,
6497     3947, 3952, 3957, 3962, 3967, 3972, 3977, 3982,
6498     0, 3987, 0, 3992, 0, 3997, 0, 4002,
6499     4007, 4012, 4017, 4022, 4027, 4032, 4037, 4042,
6500     4047, 4052, 4057, 4062, 4067, 4072, 4077, 4082,
6501     4087, 4092, 4096, 4101, 4105, 4110, 4114, 4119,
6502     4123, 4128, 4132, 4137, 4141, 4146, 0, 0,
6503     4150, 4155, 4160, 4165, 4170, 4175, 4180, 4185,
6504     4190, 4195, 4200, 4205, 4210, 4215, 4220, 4225,
6505     4230, 4235, 4240, 4245, 4250, 4255, 4260, 4265,
6506     4270, 4275, 4280, 4285, 4290, 4295, 4300, 4305,
6507     4310, 4315, 4320, 4325, 4330, 4335, 4340, 4345,
6508     4350, 4355, 4360, 4365, 4370, 4375, 4380, 4385,
6509     4390, 4395, 4400, 4405, 4410, 0, 4415, 4420,
6510     4425, 4430, 4435, 4440, 4444, 4449, 4454, 4458,
6511     4463, 4468, 4473, 4478, 4483, 0, 4488, 4493,
6512     4498, 4503, 4507, 4512, 4516, 4521, 4526, 4531,
6513     4536, 4541, 4546, 4551, 0, 0, 4555, 4560,
6514     4565, 4570, 4575, 4580, 0, 4584, 4589, 4594,
6515     4599, 4604, 4609, 4614, 4618, 4623, 4628, 4633,
6516     4638, 4643, 4648, 4653, 4657, 4662, 4667, 4671,
6517     0, 0, 4675, 4680, 4685, 0, 4690, 4695,
6518     4700, 4705, 4709, 4714, 4718, 4723, 4727, 0,
6519 };
6520
6521 static const Q_UINT16 di_20[] = {
6522     4732, 4736, 4740, 4744, 4748, 4752, 4756, 4760,
6523     4764, 4768, 4772, 0, 0, 0, 0, 0,
6524     0, 4776, 0, 0, 0, 0, 0, 4780,
6525     0, 0, 0, 0, 0, 0, 0, 0,
6526     0, 0, 0, 0, 4785, 4789, 4794, 0,
6527     0, 0, 0, 0, 0, 0, 0, 4800,
6528     0, 0, 0, 4804, 4809, 0, 4815, 4820,
6529     0, 0, 0, 0, 4826, 0, 4831, 0,
6530     0, 0, 0, 0, 0, 0, 0, 0,
6531     4836, 4841, 0, 0, 0, 0, 0, 0,
6532     0, 0, 0, 0, 0, 0, 0, 0,
6533     0, 0, 0, 0, 0, 0, 0, 0,
6534     0, 0, 0, 0, 0, 0, 0, 0,
6535     0, 0, 0, 0, 0, 0, 0, 0,
6536     4846, 0, 0, 0, 4850, 4854, 4858, 4862,
6537     4866, 4870, 4874, 4878, 4882, 4886, 4890, 4894,
6538     4898, 4902, 4906, 4910, 4914, 4918, 4922, 4926,
6539     4930, 4934, 4938, 4942, 4946, 4950, 4954, 0,
6540     0, 0, 0, 0, 0, 0, 0, 0,
6541     0, 0, 0, 0, 0, 0, 0, 0,
6542     0, 0, 0, 0, 0, 0, 0, 0,
6543     4958, 0, 0, 0, 0, 0, 0, 0,
6544     0, 0, 0, 0, 0, 0, 0, 0,
6545     0, 0, 0, 0, 0, 0, 0, 0,
6546     0, 0, 0, 0, 0, 0, 0, 0,
6547     0, 0, 0, 0, 0, 0, 0, 0,
6548     0, 0, 0, 0, 0, 0, 0, 0,
6549     0, 0, 0, 0, 0, 0, 0, 0,
6550     0, 0, 0, 0, 0, 0, 0, 0,
6551     0, 0, 0, 0, 0, 0, 0, 0,
6552     0, 0, 0, 0, 0, 0, 0, 0,
6553     0, 0, 0, 0, 0, 0, 0, 0,
6554 };
6555
6556 static const Q_UINT16 di_21[] = {
6557     4963, 4969, 4975, 4979, 0, 4984, 4990, 4996,
6558     0, 5000, 5005, 5009, 5013, 5017, 5021, 5025,
6559     5029, 5033, 5037, 5041, 0, 5045, 5049, 0,
6560     0, 5054, 5058, 5062, 5066, 5070, 0, 0,
6561     5074, 5079, 5085, 0, 5090, 0, 5094, 0,
6562     5098, 0, 5102, 5106, 5110, 5114, 0, 5118,
6563     5122, 5126, 0, 5130, 5134, 5138, 5142, 5146,
6564     5150, 5154, 0, 0, 0, 0, 0, 0,
6565     0, 0, 0, 0, 0, 0, 0, 0,
6566     0, 0, 0, 0, 0, 0, 0, 0,
6567     0, 0, 0, 5158, 5164, 5170, 5176, 5182,
6568     5188, 5194, 5200, 5206, 5212, 5218, 5224, 5230,
6569     5235, 5239, 5244, 5250, 5255, 5259, 5264, 5270,
6570     5277, 5282, 5286, 5291, 5297, 5301, 5305, 5309,
6571     5313, 5317, 5322, 5328, 5333, 5337, 5342, 5348,
6572     5355, 5360, 5364, 5369, 5375, 5379, 5383, 5387,
6573     0, 0, 0, 0, 0, 0, 0, 0,
6574     0, 0, 0, 0, 0, 0, 0, 0,
6575     0, 0, 0, 0, 0, 0, 0, 0,
6576     0, 0, 5391, 5396, 0, 0, 0, 0,
6577     0, 0, 0, 0, 0, 0, 0, 0,
6578     0, 0, 0, 0, 0, 0, 5401, 0,
6579     0, 0, 0, 0, 0, 0, 0, 0,
6580     0, 0, 0, 0, 0, 0, 0, 0,
6581     0, 0, 0, 0, 0, 0, 0, 0,
6582     0, 0, 0, 0, 0, 5406, 5411, 5416,
6583     0, 0, 0, 0, 0, 0, 0, 0,
6584     0, 0, 0, 0, 0, 0, 0, 0,
6585     0, 0, 0, 0, 0, 0, 0, 0,
6586     0, 0, 0, 0, 0, 0, 0, 0,
6587     0, 0, 0, 0, 0, 0, 0, 0,
6588     0, 0, 0, 0, 0, 0, 0, 0,
6589 };
6590
6591 static const Q_UINT16 di_22[] = {
6592     0, 0, 0, 0, 5421, 0, 0, 0,
6593     0, 5426, 0, 0, 5431, 0, 0, 0,
6594     0, 0, 0, 0, 0, 0, 0, 0,
6595     0, 0, 0, 0, 0, 0, 0, 0,
6596     0, 0, 0, 0, 5436, 0, 5441, 0,
6597     0, 0, 0, 0, 5446, 5451, 0, 5457,
6598     5462, 0, 0, 0, 0, 0, 0, 0,
6599     0, 0, 0, 0, 0, 0, 0, 0,
6600     0, 5468, 0, 0, 5473, 0, 0, 5478,
6601     0, 5483, 0, 0, 0, 0, 0, 0,
6602     0, 0, 0, 0, 0, 0, 0, 0,
6603     0, 0, 0, 0, 0, 0, 0, 0,
6604     5488, 0, 5493, 0, 0, 0, 0, 0,
6605     0, 0, 0, 0, 0, 5498, 5503, 5508,
6606     5513, 5518, 0, 0, 5523, 5528, 0, 0,
6607     5533, 5538, 0, 0, 0, 0, 0, 0,
6608     5543, 5548, 0, 0, 5553, 5558, 0, 0,
6609     5563, 5568, 0, 0, 0, 0, 0, 0,
6610     0, 0, 0, 0, 0, 0, 0, 0,
6611     0, 0, 0, 0, 0, 0, 0, 0,
6612     0, 0, 0, 0, 0, 0, 0, 0,
6613     0, 0, 0, 0, 5573, 5578, 5583, 5588,
6614     0, 0, 0, 0, 0, 0, 0, 0,
6615     0, 0, 0, 0, 0, 0, 0, 0,
6616     0, 0, 0, 0, 0, 0, 0, 0,
6617     0, 0, 0, 0, 0, 0, 0, 0,
6618     0, 0, 0, 0, 0, 0, 0, 0,
6619     0, 0, 0, 0, 0, 0, 0, 0,
6620     5593, 5598, 5603, 5608, 0, 0, 0, 0,
6621     0, 0, 5613, 5618, 5623, 5628, 0, 0,
6622     0, 0, 0, 0, 0, 0, 0, 0,
6623     0, 0, 0, 0, 0, 0, 0, 0,
6624 };
6625
6626 static const Q_UINT16 di_23[] = {
6627     0, 0, 0, 0, 0, 0, 0, 0,
6628     0, 0, 0, 0, 0, 0, 0, 0,
6629     0, 0, 0, 0, 0, 0, 0, 0,
6630     0, 0, 0, 0, 0, 0, 0, 0,
6631     0, 0, 0, 0, 0, 0, 0, 0,
6632     0, 5633, 5637, 0, 0, 0, 0, 0,
6633     0, 0, 0, 0, 0, 0, 0, 0,
6634     0, 0, 0, 0, 0, 0, 0, 0,
6635     0, 0, 0, 0, 0, 0, 0, 0,
6636     0, 0, 0, 0, 0, 0, 0, 0,
6637     0, 0, 0, 0, 0, 0, 0, 0,
6638     0, 0, 0, 0, 0, 0, 0, 0,
6639     0, 0, 0, 0, 0, 0, 0, 0,
6640     0, 0, 0, 0, 0, 0, 0, 0,
6641     0, 0, 0, 0, 0, 0, 0, 0,
6642     0, 0, 0, 0, 0, 0, 0, 0,
6643     0, 0, 0, 0, 0, 0, 0, 0,
6644     0, 0, 0, 0, 0, 0, 0, 0,
6645     0, 0, 0, 0, 0, 0, 0, 0,
6646     0, 0, 0, 0, 0, 0, 0, 0,
6647     0, 0, 0, 0, 0, 0, 0, 0,
6648     0, 0, 0, 0, 0, 0, 0, 0,
6649     0, 0, 0, 0, 0, 0, 0, 0,
6650     0, 0, 0, 0, 0, 0, 0, 0,
6651     0, 0, 0, 0, 0, 0, 0, 0,
6652     0, 0, 0, 0, 0, 0, 0, 0,
6653     0, 0, 0, 0, 0, 0, 0, 0,
6654     0, 0, 0, 0, 0, 0, 0, 0,
6655     0, 0, 0, 0, 0, 0, 0, 0,
6656     0, 0, 0, 0, 0, 0, 0, 0,
6657     0, 0, 0, 0, 0, 0, 0, 0,
6658     0, 0, 0, 0, 0, 0, 0, 0,
6659 };
6660
6661 static const Q_UINT16 di_24[] = {
6662     0, 0, 0, 0, 0, 0, 0, 0,
6663     0, 0, 0, 0, 0, 0, 0, 0,
6664     0, 0, 0, 0, 0, 0, 0, 0,
6665     0, 0, 0, 0, 0, 0, 0, 0,
6666     0, 0, 0, 0, 0, 0, 0, 0,
6667     0, 0, 0, 0, 0, 0, 0, 0,
6668     0, 0, 0, 0, 0, 0, 0, 0,
6669     0, 0, 0, 0, 0, 0, 0, 0,
6670     0, 0, 0, 0, 0, 0, 0, 0,
6671     0, 0, 0, 0, 0, 0, 0, 0,
6672     0, 0, 0, 0, 0, 0, 0, 0,
6673     0, 0, 0, 0, 0, 0, 0, 0,
6674     5641, 5645, 5649, 5653, 5657, 5661, 5665, 5669,
6675     5673, 5677, 5682, 5687, 5692, 5697, 5702, 5707,
6676     5712, 5717, 5722, 5727, 5732, 5738, 5744, 5750,
6677     5756, 5762, 5768, 5774, 5780, 5786, 5793, 5800,
6678     5807, 5814, 5821, 5828, 5835, 5842, 5849, 5856,
6679     5863, 5868, 5873, 5878, 5883, 5888, 5893, 5898,
6680     5903, 5908, 5914, 5920, 5926, 5932, 5938, 5944,
6681     5950, 5956, 5962, 5968, 5974, 5980, 5986, 5992,
6682     5998, 6004, 6010, 6016, 6022, 6028, 6034, 6040,
6683     6046, 6052, 6058, 6064, 6070, 6076, 6082, 6088,
6684     6094, 6100, 6106, 6112, 6118, 6124, 6130, 6134,
6685     6138, 6142, 6146, 6150, 6154, 6158, 6162, 6166,
6686     6170, 6174, 6178, 6182, 6186, 6190, 6194, 6198,
6687     6202, 6206, 6210, 6214, 6218, 6222, 6226, 6230,
6688     6234, 6238, 6242, 6246, 6250, 6254, 6258, 6262,
6689     6266, 6270, 6274, 6278, 6282, 6286, 6290, 6294,
6690     6298, 6302, 6306, 6310, 6314, 6318, 6322, 6326,
6691     6330, 6334, 6338, 0, 0, 0, 0, 0,
6692     0, 0, 0, 0, 0, 0, 0, 0,
6693     0, 0, 0, 0, 0, 0, 0, 0,
6694 };
6695
6696 static const Q_UINT16 di_2E[] = {
6697     0, 0, 0, 0, 0, 0, 0, 0,
6698     0, 0, 0, 0, 0, 0, 0, 0,
6699     0, 0, 0, 0, 0, 0, 0, 0,
6700     0, 0, 0, 0, 0, 0, 0, 0,
6701     0, 0, 0, 0, 0, 0, 0, 0,
6702     0, 0, 0, 0, 0, 0, 0, 0,
6703     0, 0, 0, 0, 0, 0, 0, 0,
6704     0, 0, 0, 0, 0, 0, 0, 0,
6705     0, 0, 0, 0, 0, 0, 0, 0,
6706     0, 0, 0, 0, 0, 0, 0, 0,
6707     0, 0, 0, 0, 0, 0, 0, 0,
6708     0, 0, 0, 0, 0, 0, 0, 0,
6709     0, 0, 0, 0, 0, 0, 0, 0,
6710     0, 0, 0, 0, 0, 0, 0, 0,
6711     0, 0, 0, 0, 0, 0, 0, 0,
6712     0, 0, 0, 0, 0, 0, 0, 0,
6713     0, 0, 0, 0, 0, 0, 0, 0,
6714     0, 0, 0, 0, 0, 0, 0, 0,
6715     0, 0, 0, 0, 0, 0, 0, 0,
6716     0, 0, 0, 0, 0, 0, 0, 6342,
6717     0, 0, 0, 0, 0, 0, 0, 0,
6718     0, 0, 0, 0, 0, 0, 0, 0,
6719     0, 0, 0, 0, 0, 0, 0, 0,
6720     0, 0, 0, 0, 0, 0, 0, 0,
6721     0, 0, 0, 0, 0, 0, 0, 0,
6722     0, 0, 0, 0, 0, 0, 0, 0,
6723     0, 0, 0, 0, 0, 0, 0, 0,
6724     0, 0, 0, 0, 0, 0, 0, 0,
6725     0, 0, 0, 0, 0, 0, 0, 0,
6726     0, 0, 0, 0, 0, 0, 0, 0,
6727     0, 0, 0, 6346, 0, 0, 0, 0,
6728     0, 0, 0, 0, 0, 0, 0, 0,
6729 };
6730
6731 static const Q_UINT16 di_2F[] = {
6732     6350, 6354, 6358, 6362, 6366, 6370, 6374, 6378,
6733     6382, 6386, 6390, 6394, 6398, 6402, 6406, 6410,
6734     6414, 6418, 6422, 6426, 6430, 6434, 6438, 6442,
6735     6446, 6450, 6454, 6458, 6462, 6466, 6470, 6474,
6736     6478, 6482, 6486, 6490, 6494, 6498, 6502, 6506,
6737     6510, 6514, 6518, 6522, 6526, 6530, 6534, 6538,
6738     6542, 6546, 6550, 6554, 6558, 6562, 6566, 6570,
6739     6574, 6578, 6582, 6586, 6590, 6594, 6598, 6602,
6740     6606, 6610, 6614, 6618, 6622, 6626, 6630, 6634,
6741     6638, 6642, 6646, 6650, 6654, 6658, 6662, 6666,
6742     6670, 6674, 6678, 6682, 6686, 6690, 6694, 6698,
6743     6702, 6706, 6710, 6714, 6718, 6722, 6726, 6730,
6744     6734, 6738, 6742, 6746, 6750, 6754, 6758, 6762,
6745     6766, 6770, 6774, 6778, 6782, 6786, 6790, 6794,
6746     6798, 6802, 6806, 6810, 6814, 6818, 6822, 6826,
6747     6830, 6834, 6838, 6842, 6846, 6850, 6854, 6858,
6748     6862, 6866, 6870, 6874, 6878, 6882, 6886, 6890,
6749     6894, 6898, 6902, 6906, 6910, 6914, 6918, 6922,
6750     6926, 6930, 6934, 6938, 6942, 6946, 6950, 6954,
6751     6958, 6962, 6966, 6970, 6974, 6978, 6982, 6986,
6752     6990, 6994, 6998, 7002, 7006, 7010, 7014, 7018,
6753     7022, 7026, 7030, 7034, 7038, 7042, 7046, 7050,
6754     7054, 7058, 7062, 7066, 7070, 7074, 7078, 7082,
6755     7086, 7090, 7094, 7098, 7102, 7106, 7110, 7114,
6756     7118, 7122, 7126, 7130, 7134, 7138, 7142, 7146,
6757     7150, 7154, 7158, 7162, 7166, 7170, 7174, 7178,
6758     7182, 7186, 7190, 7194, 7198, 7202, 0, 0,
6759     0, 0, 0, 0, 0, 0, 0, 0,
6760     0, 0, 0, 0, 0, 0, 0, 0,
6761     0, 0, 0, 0, 0, 0, 0, 0,
6762     0, 0, 0, 0, 0, 0, 0, 0,
6763     0, 0, 0, 0, 0, 0, 0, 0,
6764 };
6765
6766 static const Q_UINT16 di_30[] = {
6767     7206, 0, 0, 0, 0, 0, 0, 0,
6768     0, 0, 0, 0, 0, 0, 0, 0,
6769     0, 0, 0, 0, 0, 0, 0, 0,
6770     0, 0, 0, 0, 0, 0, 0, 0,
6771     0, 0, 0, 0, 0, 0, 0, 0,
6772     0, 0, 0, 0, 0, 0, 0, 0,
6773     0, 0, 0, 0, 0, 0, 7210, 0,
6774     7214, 7218, 7222, 0, 0, 0, 0, 0,
6775     0, 0, 0, 0, 0, 0, 0, 0,
6776     0, 0, 0, 0, 7226, 0, 7231, 0,
6777     7236, 0, 7241, 0, 7246, 0, 7251, 0,
6778     7256, 0, 7261, 0, 7266, 0, 7271, 0,
6779     7276, 0, 7281, 0, 0, 7286, 0, 7291,
6780     0, 7296, 0, 0, 0, 0, 0, 0,
6781     7301, 7306, 0, 7311, 7316, 0, 7321, 7326,
6782     0, 7331, 7336, 0, 7341, 7346, 0, 0,
6783     0, 0, 0, 0, 0, 0, 0, 0,
6784     0, 0, 0, 0, 0, 0, 0, 0,
6785     0, 0, 0, 0, 7351, 0, 0, 0,
6786     0, 0, 0, 7356, 7361, 0, 7366, 0,
6787     0, 0, 0, 0, 0, 0, 0, 0,
6788     0, 0, 0, 0, 7371, 0, 7376, 0,
6789     7381, 0, 7386, 0, 7391, 0, 7396, 0,
6790     7401, 0, 7406, 0, 7411, 0, 7416, 0,
6791     7421, 0, 7426, 0, 0, 7431, 0, 7436,
6792     0, 7441, 0, 0, 0, 0, 0, 0,
6793     7446, 7451, 0, 7456, 7461, 0, 7466, 7471,
6794     0, 7476, 7481, 0, 7486, 7491, 0, 0,
6795     0, 0, 0, 0, 0, 0, 0, 0,
6796     0, 0, 0, 0, 0, 0, 0, 0,
6797     0, 0, 0, 0, 7496, 0, 0, 7501,
6798     7506, 7511, 7516, 0, 0, 0, 7521, 0,
6799 };
6800
6801 static const Q_UINT16 di_31[] = {
6802     0, 0, 0, 0, 0, 0, 0, 0,
6803     0, 0, 0, 0, 0, 0, 0, 0,
6804     0, 0, 0, 0, 0, 0, 0, 0,
6805     0, 0, 0, 0, 0, 0, 0, 0,
6806     0, 0, 0, 0, 0, 0, 0, 0,
6807     0, 0, 0, 0, 0, 0, 0, 0,
6808     0, 7526, 7530, 7534, 7538, 7542, 7546, 7550,
6809     7554, 7558, 7562, 7566, 7570, 7574, 7578, 7582,
6810     7586, 7590, 7594, 7598, 7602, 7606, 7610, 7614,
6811     7618, 7622, 7626, 7630, 7634, 7638, 7642, 7646,
6812     7650, 7654, 7658, 7662, 7666, 7670, 7674, 7678,
6813     7682, 7686, 7690, 7694, 7698, 7702, 7706, 7710,
6814     7714, 7718, 7722, 7726, 7730, 7734, 7738, 7742,
6815     7746, 7750, 7754, 7758, 7762, 7766, 7770, 7774,
6816     7778, 7782, 7786, 7790, 7794, 7798, 7802, 7806,
6817     7810, 7814, 7818, 7822, 7826, 7830, 7834, 7838,
6818     7842, 7846, 7850, 7854, 7858, 7862, 7866, 7870,
6819     7874, 7878, 7882, 7886, 7890, 7894, 7898, 0,
6820     0, 0, 7902, 7906, 7910, 7914, 7918, 7922,
6821     7926, 7930, 7934, 7938, 7942, 7946, 7950, 7954,
6822     0, 0, 0, 0, 0, 0, 0, 0,
6823     0, 0, 0, 0, 0, 0, 0, 0,
6824     0, 0, 0, 0, 0, 0, 0, 0,
6825     0, 0, 0, 0, 0, 0, 0, 0,
6826     0, 0, 0, 0, 0, 0, 0, 0,
6827     0, 0, 0, 0, 0, 0, 0, 0,
6828     0, 0, 0, 0, 0, 0, 0, 0,
6829     0, 0, 0, 0, 0, 0, 0, 0,
6830     0, 0, 0, 0, 0, 0, 0, 0,
6831     0, 0, 0, 0, 0, 0, 0, 0,
6832     0, 0, 0, 0, 0, 0, 0, 0,
6833     0, 0, 0, 0, 0, 0, 0, 0,
6834 };
6835
6836 static const Q_UINT16 di_32[] = {
6837     7958, 7964, 7970, 7976, 7982, 7988, 7994, 8000,
6838     8006, 8012, 8018, 8024, 8030, 8036, 8042, 8049,
6839     8056, 8063, 8070, 8077, 8084, 8091, 8098, 8105,
6840     8112, 8119, 8126, 8133, 8140, 0, 0, 0,
6841     8147, 8153, 8159, 8165, 8171, 8177, 8183, 8189,
6842     8195, 8201, 8207, 8213, 8219, 8225, 8231, 8237,
6843     8243, 8249, 8255, 8261, 8267, 8273, 8279, 8285,
6844     8291, 8297, 8303, 8309, 8315, 8321, 8327, 8333,
6845     8339, 8345, 8351, 8357, 0, 0, 0, 0,
6846     0, 0, 0, 0, 0, 0, 0, 0,
6847     0, 0, 0, 0, 0, 0, 0, 0,
6848     0, 0, 0, 0, 0, 0, 0, 0,
6849     8363, 8367, 8371, 8375, 8379, 8383, 8387, 8391,
6850     8395, 8399, 8403, 8407, 8411, 8415, 8419, 8424,
6851     8429, 8434, 8439, 8444, 8449, 8454, 8459, 8464,
6852     8469, 8474, 8479, 8484, 0, 0, 0, 0,
6853     8489, 8493, 8497, 8501, 8505, 8509, 8513, 8517,
6854     8521, 8525, 8529, 8533, 8537, 8541, 8545, 8549,
6855     8553, 8557, 8561, 8565, 8569, 8573, 8577, 8581,
6856     8585, 8589, 8593, 8597, 8601, 8605, 8609, 8613,
6857     8617, 8621, 8625, 8629, 8633, 8637, 8641, 8645,
6858     8649, 8653, 8657, 8661, 8665, 8669, 8673, 8677,
6859     8681, 0, 0, 0, 0, 0, 0, 0,
6860     0, 0, 0, 0, 0, 0, 0, 0,
6861     8685, 8690, 8695, 8700, 8705, 8710, 8715, 8720,
6862     8725, 8730, 8736, 8742, 0, 0, 0, 0,
6863     8748, 8752, 8756, 8760, 8764, 8768, 8772, 8776,
6864     8780, 8784, 8788, 8792, 8796, 8800, 8804, 8808,
6865     8812, 8816, 8820, 8824, 8828, 8832, 8836, 8840,
6866     8844, 8848, 8852, 8856, 8860, 8864, 8868, 8872,
6867     8876, 8880, 8884, 8888, 8892, 8896, 8900, 8904,
6868     8908, 8912, 8916, 8920, 8924, 8928, 8932, 0,
6869 };
6870
6871 static const Q_UINT16 di_33[] = {
6872     8936, 8943, 8950, 8957, 8963, 8970, 8976, 8982,
6873     8990, 8997, 9003, 9009, 9015, 9022, 9029, 9035,
6874     9041, 9046, 9052, 9059, 9066, 9071, 9079, 9088,
6875     9096, 9102, 9110, 9118, 9125, 9131, 9137, 9143,
6876     9150, 9158, 9165, 9171, 9177, 9183, 9188, 9193,
6877     9198, 9203, 9209, 9215, 9223, 9229, 9236, 9244,
6878     9250, 9255, 9260, 9268, 9275, 9283, 9289, 9297,
6879     9302, 9308, 9314, 9320, 9326, 9332, 9339, 9345,
6880     9350, 9356, 9362, 9368, 9375, 9381, 9387, 9393,
6881     9401, 9408, 9413, 9421, 9426, 9433, 9440, 9446,
6882     9452, 9458, 9465, 9470, 9476, 9483, 9488, 9496,
6883     9502, 9507, 9512, 9517, 9522, 9527, 9532, 9537,
6884     9542, 9547, 9552, 9558, 9564, 9570, 9576, 9582,
6885     9588, 9594, 9600, 9606, 9612, 9618, 9624, 9630,
6886     9636, 9642, 9648, 9653, 9658, 9664, 9669, 0,
6887     0, 0, 0, 9674, 9679, 9684, 9689, 9694,
6888     9701, 9706, 9711, 9716, 9721, 9726, 9731, 9736,
6889     9741, 9747, 9754, 9759, 9764, 9769, 9774, 9779,
6890     9784, 9789, 9795, 9801, 9807, 9813, 9818, 9823,
6891     9828, 9833, 9838, 9843, 9848, 9853, 9858, 9863,
6892     9869, 9875, 9880, 9886, 9892, 9898, 9903, 9909,
6893     9915, 9922, 9927, 9933, 9939, 9945, 9951, 9959,
6894     9968, 9973, 9978, 9983, 9988, 9993, 9998, 10003,
6895     10008, 10013, 10018, 10023, 10028, 10033, 10038, 10043,
6896     10048, 10053, 10058, 10065, 10070, 10075, 10080, 10087,
6897     10093, 10098, 10103, 10108, 10113, 10118, 10123, 10128,
6898     10133, 10138, 10143, 10149, 10154, 10159, 10165, 10171,
6899     10176, 10183, 10189, 10194, 10199, 10204, 0, 0,
6900     10209, 10214, 10219, 10224, 10229, 10234, 10239, 10244,
6901     10249, 10254, 10260, 10266, 10272, 10278, 10284, 10290,
6902     10296, 10302, 10308, 10314, 10320, 10326, 10332, 10338,
6903     10344, 10350, 10356, 10362, 10368, 10374, 10380, 0,
6904 };
6905
6906 static const Q_UINT16 di_F9[] = {
6907     10386, 10390, 10394, 10398, 10402, 10406, 10410, 10414,
6908     10418, 10422, 10426, 10430, 10434, 10438, 10442, 10446,
6909     10450, 10454, 10458, 10462, 10466, 10470, 10474, 10478,
6910     10482, 10486, 10490, 10494, 10498, 10502, 10506, 10510,
6911     10514, 10518, 10522, 10526, 10530, 10534, 10538, 10542,
6912     10546, 10550, 10554, 10558, 10562, 10566, 10570, 10574,
6913     10578, 10582, 10586, 10590, 10594, 10598, 10602, 10606,
6914     10610, 10614, 10618, 10622, 10626, 10630, 10634, 10638,
6915     10642, 10646, 10650, 10654, 10658, 10662, 10666, 10670,
6916     10674, 10678, 10682, 10686, 10690, 10694, 10698, 10702,
6917     10706, 10710, 10714, 10718, 10722, 10726, 10730, 10734,
6918     10738, 10742, 10746, 10750, 10754, 10758, 10762, 10766,
6919     10770, 10774, 10778, 10782, 10786, 10790, 10794, 10798,
6920     10802, 10806, 10810, 10814, 10818, 10822, 10826, 10830,
6921     10834, 10838, 10842, 10846, 10850, 10854, 10858, 10862,
6922     10866, 10870, 10874, 10878, 10882, 10886, 10890, 10894,
6923     10898, 10902, 10906, 10910, 10914, 10918, 10922, 10926,
6924     10930, 10934, 10938, 10942, 10946, 10950, 10954, 10958,
6925     10962, 10966, 10970, 10974, 10978, 10982, 10986, 10990,
6926     10994, 10998, 11002, 11006, 11010, 11014, 11018, 11022,
6927     11026, 11030, 11034, 11038, 11042, 11046, 11050, 11054,
6928     11058, 11062, 11066, 11070, 11074, 11078, 11082, 11086,
6929     11090, 11094, 11098, 11102, 11106, 11110, 11114, 11118,
6930     11122, 11126, 11130, 11134, 11138, 11142, 11146, 11150,
6931     11154, 11158, 11162, 11166, 11170, 11174, 11178, 11182,
6932     11186, 11190, 11194, 11198, 11202, 11206, 11210, 11214,
6933     11218, 11222, 11226, 11230, 11234, 11238, 11242, 11246,
6934     11250, 11254, 11258, 11262, 11266, 11270, 11274, 11278,
6935     11282, 11286, 11290, 11294, 11298, 11302, 11306, 11310,
6936     11314, 11318, 11322, 11326, 11330, 11334, 11338, 11342,
6937     11346, 11350, 11354, 11358, 11362, 11366, 11370, 11374,
6938     11378, 11382, 11386, 11390, 11394, 11398, 11402, 11406,
6939 };
6940
6941 static const Q_UINT16 di_FA[] = {
6942     11410, 11414, 11418, 11422, 11426, 11430, 11434, 11438,
6943     11442, 11446, 11450, 11454, 11458, 11462, 0, 0,
6944     11466, 0, 11470, 0, 0, 11474, 11478, 11482,
6945     11486, 11490, 11494, 11498, 11502, 11506, 11510, 0,
6946     11514, 0, 11518, 0, 0, 11522, 11526, 0,
6947     0, 0, 11530, 11534, 11538, 11542, 0, 0,
6948     0, 0, 0, 0, 0, 0, 0, 0,
6949     0, 0, 0, 0, 0, 0, 0, 0,
6950     0, 0, 0, 0, 0, 0, 0, 0,
6951     0, 0, 0, 0, 0, 0, 0, 0,
6952     0, 0, 0, 0, 0, 0, 0, 0,
6953     0, 0, 0, 0, 0, 0, 0, 0,
6954     0, 0, 0, 0, 0, 0, 0, 0,
6955     0, 0, 0, 0, 0, 0, 0, 0,
6956     0, 0, 0, 0, 0, 0, 0, 0,
6957     0, 0, 0, 0, 0, 0, 0, 0,
6958     0, 0, 0, 0, 0, 0, 0, 0,
6959     0, 0, 0, 0, 0, 0, 0, 0,
6960     0, 0, 0, 0, 0, 0, 0, 0,
6961     0, 0, 0, 0, 0, 0, 0, 0,
6962     0, 0, 0, 0, 0, 0, 0, 0,
6963     0, 0, 0, 0, 0, 0, 0, 0,
6964     0, 0, 0, 0, 0, 0, 0, 0,
6965     0, 0, 0, 0, 0, 0, 0, 0,
6966     0, 0, 0, 0, 0, 0, 0, 0,
6967     0, 0, 0, 0, 0, 0, 0, 0,
6968     0, 0, 0, 0, 0, 0, 0, 0,
6969     0, 0, 0, 0, 0, 0, 0, 0,
6970     0, 0, 0, 0, 0, 0, 0, 0,
6971     0, 0, 0, 0, 0, 0, 0, 0,
6972     0, 0, 0, 0, 0, 0, 0, 0,
6973     0, 0, 0, 0, 0, 0, 0, 0,
6974 };
6975
6976 static const Q_UINT16 di_FB[] = {
6977     11546, 11551, 11556, 11561, 11567, 11573, 11578, 0,
6978     0, 0, 0, 0, 0, 0, 0, 0,
6979     0, 0, 0, 11583, 11588, 11593, 11598, 11603,
6980     0, 0, 0, 0, 0, 11608, 0, 11613,
6981     11618, 11622, 11626, 11630, 11634, 11638, 11642, 11646,
6982     11650, 11654, 11658, 11663, 11668, 11673, 11678, 11683,
6983     11688, 11693, 11698, 11703, 11708, 11713, 11718, 0,
6984     11723, 11728, 11733, 11738, 11743, 0, 11748, 0,
6985     11753, 11758, 0, 11763, 11768, 0, 11773, 11778,
6986     11783, 11788, 11793, 11798, 11803, 11808, 11813, 11818,
6987     11823, 11827, 11831, 11835, 11839, 11843, 11847, 11851,
6988     11855, 11859, 11863, 11867, 11871, 11875, 11879, 11883,
6989     11887, 11891, 11895, 11899, 11903, 11907, 11911, 11915,
6990     11919, 11923, 11927, 11931, 11935, 11939, 11943, 11947,
6991     11951, 11955, 11959, 11963, 11967, 11971, 11975, 11979,
6992     11983, 11987, 11991, 11995, 11999, 12003, 12007, 12011,
6993     12015, 12019, 12023, 12027, 12031, 12035, 12039, 12043,
6994     12047, 12051, 12055, 12059, 12063, 12067, 12071, 12075,
6995     12079, 12083, 12087, 12091, 12095, 12099, 12103, 12107,
6996     12111, 12115, 12119, 12123, 12127, 12131, 12135, 12139,
6997     12143, 12147, 12151, 12155, 12159, 12163, 12167, 12171,
6998     12175, 12179, 12183, 12187, 12191, 12195, 12199, 12203,
6999     12207, 12211, 0, 0, 0, 0, 0, 0,
7000     0, 0, 0, 0, 0, 0, 0, 0,
7001     0, 0, 0, 0, 0, 0, 0, 0,
7002     0, 0, 0, 0, 0, 0, 0, 0,
7003     0, 0, 0, 12215, 12219, 12223, 12227, 12231,
7004     12235, 12239, 12243, 12247, 12251, 12255, 12259, 12263,
7005     12267, 12271, 12275, 12279, 12283, 12287, 12291, 12295,
7006     12299, 12303, 12307, 12312, 12317, 12322, 12327, 12332,
7007     12337, 12342, 12347, 12352, 12357, 12362, 12367, 12372,
7008     12377, 12382, 12387, 12392, 12397, 12401, 12405, 12409,
7009 };
7010
7011 static const Q_UINT16 di_FC[] = {
7012     12413, 12418, 12423, 12428, 12433, 12438, 12443, 12448,
7013     12453, 12458, 12463, 12468, 12473, 12478, 12483, 12488,
7014     12493, 12498, 12503, 12508, 12513, 12518, 12523, 12528,
7015     12533, 12538, 12543, 12548, 12553, 12558, 12563, 12568,
7016     12573, 12578, 12583, 12588, 12593, 12598, 12603, 12608,
7017     12613, 12618, 12623, 12628, 12633, 12638, 12643, 12648,
7018     12653, 12658, 12663, 12668, 12673, 12678, 12683, 12688,
7019     12693, 12698, 12703, 12708, 12713, 12718, 12723, 12728,
7020     12733, 12738, 12743, 12748, 12753, 12758, 12763, 12768,
7021     12773, 12778, 12783, 12788, 12793, 12798, 12803, 12808,
7022     12813, 12818, 12823, 12828, 12833, 12838, 12843, 12848,
7023     12853, 12858, 12863, 12868, 12873, 12878, 12883, 12889,
7024     12895, 12901, 12907, 12913, 12919, 12924, 12929, 12934,
7025     12939, 12944, 12949, 12954, 12959, 12964, 12969, 12974,
7026     12979, 12984, 12989, 12994, 12999, 13004, 13009, 13014,
7027     13019, 13024, 13029, 13034, 13039, 13044, 13049, 13054,
7028     13059, 13064, 13069, 13074, 13079, 13084, 13089, 13094,
7029     13099, 13104, 13109, 13114, 13119, 13124, 13129, 13134,
7030     13139, 13144, 13149, 13154, 13159, 13164, 13169, 13174,
7031     13179, 13184, 13189, 13194, 13199, 13204, 13209, 13214,
7032     13219, 13224, 13229, 13234, 13239, 13244, 13249, 13254,
7033     13259, 13264, 13269, 13274, 13279, 13284, 13289, 13294,
7034     13299, 13304, 13309, 13314, 13319, 13324, 13329, 13334,
7035     13339, 13344, 13349, 13354, 13359, 13364, 13369, 13374,
7036     13379, 13384, 13389, 13394, 13399, 13404, 13409, 13414,
7037     13419, 13424, 13429, 13434, 13439, 13444, 13449, 13454,
7038     13459, 13464, 13469, 13474, 13479, 13484, 13489, 13494,
7039     13499, 13504, 13509, 13514, 13519, 13524, 13529, 13534,
7040     13539, 13544, 13549, 13554, 13559, 13564, 13569, 13574,
7041     13579, 13584, 13589, 13594, 13599, 13604, 13609, 13614,
7042     13619, 13624, 13629, 13635, 13641, 13647, 13652, 13657,
7043     13662, 13667, 13672, 13677, 13682, 13687, 13692, 13697,
7044 };
7045
7046 static const Q_UINT16 di_FD[] = {
7047     13702, 13707, 13712, 13717, 13722, 13727, 13732, 13737,
7048     13742, 13747, 13752, 13757, 13762, 13767, 13772, 13777,
7049     13782, 13787, 13792, 13797, 13802, 13807, 13812, 13817,
7050     13822, 13827, 13832, 13837, 13842, 13847, 13852, 13857,
7051     13862, 13867, 13872, 13877, 13882, 13887, 13892, 13897,
7052     13902, 13907, 13912, 13917, 13922, 13927, 13932, 13937,
7053     13942, 13947, 13952, 13957, 13962, 13967, 13972, 13977,
7054     13982, 13987, 13992, 13997, 14002, 14007, 0, 0,
7055     0, 0, 0, 0, 0, 0, 0, 0,
7056     0, 0, 0, 0, 0, 0, 0, 0,
7057     14012, 14018, 14024, 14030, 14036, 14042, 14048, 14054,
7058     14060, 14066, 14072, 14078, 14084, 14090, 14096, 14102,
7059     14108, 14114, 14120, 14126, 14132, 14138, 14144, 14150,
7060     14156, 14162, 14168, 14174, 14180, 14186, 14192, 14198,
7061     14204, 14210, 14216, 14222, 14228, 14234, 14240, 14246,
7062     14252, 14258, 14264, 14270, 14276, 14282, 14288, 14294,
7063     14300, 14306, 14312, 14318, 14324, 14330, 14336, 14342,
7064     14348, 14354, 14360, 14366, 14372, 14378, 14384, 14390,
7065     0, 0, 14396, 14402, 14408, 14414, 14420, 14426,
7066     14432, 14438, 14444, 14450, 14456, 14462, 14468, 14474,
7067     14480, 14486, 14492, 14498, 14504, 14510, 14516, 14522,
7068     14528, 14534, 14540, 14546, 14552, 14558, 14564, 14570,
7069     14576, 14582, 14588, 14594, 14600, 14606, 14612, 14618,
7070     14624, 14630, 14636, 14642, 14648, 14654, 14660, 14666,
7071     14672, 14678, 14684, 14690, 14696, 14702, 14708, 14714,
7072     0, 0, 0, 0, 0, 0, 0, 0,
7073     0, 0, 0, 0, 0, 0, 0, 0,
7074     0, 0, 0, 0, 0, 0, 0, 0,
7075     0, 0, 0, 0, 0, 0, 0, 0,
7076     0, 0, 0, 0, 0, 0, 0, 0,
7077     14720, 14726, 14732, 14739, 14746, 14753, 14760, 14767,
7078     14774, 14781, 14787, 14808, 0, 0, 0, 0,
7079 };
7080
7081 static const Q_UINT16 di_FE[] = {
7082     0, 0, 0, 0, 0, 0, 0, 0,
7083     0, 0, 0, 0, 0, 0, 0, 0,
7084     0, 0, 0, 0, 0, 0, 0, 0,
7085     0, 0, 0, 0, 0, 0, 0, 0,
7086     0, 0, 0, 0, 0, 0, 0, 0,
7087     0, 0, 0, 0, 0, 0, 0, 0,
7088     14819, 14823, 14827, 14831, 14835, 14839, 14843, 14847,
7089     14851, 14855, 14859, 14863, 14867, 14871, 14875, 14879,
7090     14883, 14887, 14891, 14895, 14899, 0, 0, 0,
7091     0, 14903, 14907, 14911, 14915, 14919, 14923, 14927,
7092     14931, 14935, 14939, 0, 14943, 14947, 14951, 14955,
7093     14959, 14963, 14967, 14971, 14975, 14979, 14983, 14987,
7094     14991, 14995, 14999, 15003, 15007, 15011, 15015, 0,
7095     15019, 15023, 15027, 15031, 0, 0, 0, 0,
7096     15035, 15040, 15045, 0, 15050, 0, 15055, 15060,
7097     15065, 15070, 15075, 15080, 15085, 15090, 15095, 15100,
7098     15105, 15109, 15113, 15117, 15121, 15125, 15129, 15133,
7099     15137, 15141, 15145, 15149, 15153, 15157, 15161, 15165,
7100     15169, 15173, 15177, 15181, 15185, 15189, 15193, 15197,
7101     15201, 15205, 15209, 15213, 15217, 15221, 15225, 15229,
7102     15233, 15237, 15241, 15245, 15249, 15253, 15257, 15261,
7103     15265, 15269, 15273, 15277, 15281, 15285, 15289, 15293,
7104     15297, 15301, 15305, 15309, 15313, 15317, 15321, 15325,
7105     15329, 15333, 15337, 15341, 15345, 15349, 15353, 15357,
7106     15361, 15365, 15369, 15373, 15377, 15381, 15385, 15389,
7107     15393, 15397, 15401, 15405, 15409, 15413, 15417, 15421,
7108     15425, 15429, 15433, 15437, 15441, 15445, 15449, 15453,
7109     15457, 15461, 15465, 15469, 15473, 15477, 15481, 15485,
7110     15489, 15493, 15497, 15501, 15505, 15509, 15513, 15517,
7111     15521, 15525, 15529, 15533, 15537, 15541, 15545, 15549,
7112     15553, 15557, 15561, 15565, 15569, 15573, 15578, 15583,
7113     15588, 15593, 15598, 15603, 15608, 0, 0, 0,
7114 };
7115
7116 static const Q_UINT16 di_FF[] = {
7117     0, 15613, 15617, 15621, 15625, 15629, 15633, 15637,
7118     15641, 15645, 15649, 15653, 15657, 15661, 15665, 15669,
7119     15673, 15677, 15681, 15685, 15689, 15693, 15697, 15701,
7120     15705, 15709, 15713, 15717, 15721, 15725, 15729, 15733,
7121     15737, 15741, 15745, 15749, 15753, 15757, 15761, 15765,
7122     15769, 15773, 15777, 15781, 15785, 15789, 15793, 15797,
7123     15801, 15805, 15809, 15813, 15817, 15821, 15825, 15829,
7124     15833, 15837, 15841, 15845, 15849, 15853, 15857, 15861,
7125     15865, 15869, 15873, 15877, 15881, 15885, 15889, 15893,
7126     15897, 15901, 15905, 15909, 15913, 15917, 15921, 15925,
7127     15929, 15933, 15937, 15941, 15945, 15949, 15953, 15957,
7128     15961, 15965, 15969, 15973, 15977, 15981, 15985, 0,
7129     0, 15989, 15993, 15997, 16001, 16005, 16009, 16013,
7130     16017, 16021, 16025, 16029, 16033, 16037, 16041, 16045,
7131     16049, 16053, 16057, 16061, 16065, 16069, 16073, 16077,
7132     16081, 16085, 16089, 16093, 16097, 16101, 16105, 16109,
7133     16113, 16117, 16121, 16125, 16129, 16133, 16137, 16141,
7134     16145, 16149, 16153, 16157, 16161, 16165, 16169, 16173,
7135     16177, 16181, 16185, 16189, 16193, 16197, 16201, 16205,
7136     16209, 16213, 16217, 16221, 16225, 16229, 16233, 16237,
7137     16241, 16245, 16249, 16253, 16257, 16261, 16265, 16269,
7138     16273, 16277, 16281, 16285, 16289, 16293, 16297, 16301,
7139     16305, 16309, 16313, 16317, 16321, 16325, 16329, 16333,
7140     16337, 16341, 16345, 16349, 16353, 16357, 16361, 0,
7141     0, 0, 16365, 16369, 16373, 16377, 16381, 16385,
7142     0, 0, 16389, 16393, 16397, 16401, 16405, 16409,
7143     0, 0, 16413, 16417, 16421, 16425, 16429, 16433,
7144     0, 0, 16437, 16441, 16445, 0, 0, 0,
7145     16449, 16453, 16457, 16461, 16465, 16469, 16473, 0,
7146     16477, 16481, 16485, 16489, 16493, 16497, 16501, 0,
7147     0, 0, 0, 0, 0, 0, 0, 0,
7148     0, 0, 0, 0, 0, 0, 0, 0,
7149 };
7150
7151 static const Q_UINT16 * const decomposition_info[256] = {
7152     di_00, di_01, di_02, di_03, di_04, di_05, di_06, di_07,
7153     di_07, di_09, di_0A, di_0B, di_0C, di_0D, di_0E, di_0F,
7154     di_10, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7155     di_07, di_07, di_07, di_07, di_07, di_07, di_1E, di_1F,
7156     di_20, di_21, di_22, di_23, di_24, di_07, di_07, di_07,
7157     di_07, di_07, di_07, di_07, di_07, di_07, di_2E, di_2F,
7158     di_30, di_31, di_32, di_33, di_07, di_07, di_07, di_07,
7159     di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7160     di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7161     di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7162     di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7163     di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7164     di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7165     di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7166     di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7167     di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7168     di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7169     di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7170     di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7171     di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7172     di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7173     di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7174     di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7175     di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7176     di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7177     di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7178     di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7179     di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7180     di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7181     di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7182     di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7183     di_07, di_F9, di_FA, di_FB, di_FC, di_FD, di_FE, di_FF,
7184 };
7185 // 68080 bytes
7186
7187 static const Q_UINT16 ligature_map [] = {
7188     0,
7189     12883, 12889, 12895, 12901, 12907, 12913, 15035, 15045, 15050, 15055, 15065, 15075, 15085, 15095, 0,
7190     5503, 0,
7191     5488, 0,
7192     5508, 0,
7193     67, 72, 77, 82, 87, 92, 332, 342, 352, 966, 1196, 1206, 1346, 2357, 3137, 3147, 0,
7194     2367, 2377, 2387, 0,
7195     97, 362, 372, 382, 392, 0,
7196     402, 2407, 2417, 2427, 2437, 2447, 0,
7197     102, 107, 112, 117, 412, 422, 432, 442, 452, 1216, 1226, 1356, 2477, 2487, 3257, 3267, 3277, 0,
7198     2507, 0,
7199     462, 472, 482, 492, 1076, 1146, 2517, 0,
7200     502, 1336, 2527, 2537, 2547, 2557, 2567, 0,
7201     122, 127, 132, 137, 512, 522, 532, 542, 552, 976, 1236, 1246, 2577, 3337, 3347, 0,
7202     567, 0,
7203     577, 1086, 2597, 2607, 2617, 0,
7204     587, 597, 607, 2627, 2647, 2657, 0,
7205     2667, 2677, 2687, 0,
7206     142, 627, 637, 647, 1156, 2697, 2707, 2717, 2727, 0,
7207     147, 152, 157, 162, 167, 662, 672, 682, 901, 986, 1096, 1256, 1266, 1386, 3357, 3367, 0,
7208     2777, 2787, 0,
7209     692, 702, 712, 1276, 1286, 2797, 2807, 2827, 0,
7210     722, 732, 742, 752, 1316, 2837, 2847, 0,
7211     762, 772, 1326, 2887, 2897, 2907, 2917, 0,
7212     172, 177, 182, 187, 782, 792, 802, 812, 822, 832, 911, 996, 1296, 1306, 2927, 2937, 2947, 3477, 3487, 0,
7213     2977, 2987, 0,
7214     842, 2997, 3007, 3017, 3027, 3037, 0,
7215     3047, 3057, 0,
7216     192, 852, 862, 1406, 3067, 3547, 3557, 3567, 3577, 0,
7217     867, 877, 887, 3077, 3087, 3097, 0,
7218     197, 202, 207, 212, 217, 222, 337, 347, 357, 971, 1201, 1211, 1351, 2362, 3142, 3152, 0,
7219     2372, 2382, 2392, 0,
7220     227, 367, 377, 387, 397, 0,
7221     407, 2412, 2422, 2432, 2442, 2452, 0,
7222     232, 237, 242, 247, 417, 427, 437, 447, 457, 1221, 1231, 1361, 2482, 2492, 3262, 3272, 3282, 0,
7223     2512, 0,
7224     467, 477, 487, 497, 1081, 1151, 2522, 0,
7225     507, 1341, 2532, 2542, 2552, 2562, 2572, 3107, 0,
7226     252, 257, 262, 267, 517, 527, 537, 547, 981, 1241, 1251, 2582, 3342, 3352, 0,
7227     572, 1126, 0,
7228     582, 1091, 2602, 2612, 2622, 0,
7229     592, 602, 612, 2632, 2652, 2662, 0,
7230     2672, 2682, 2692, 0,
7231     272, 632, 642, 652, 1161, 2702, 2712, 2722, 2732, 0,
7232     277, 282, 287, 292, 297, 667, 677, 687, 906, 991, 1101, 1261, 1271, 1391, 3362, 3372, 0,
7233     2782, 2792, 0,
7234     697, 707, 717, 1281, 1291, 2802, 2812, 2832, 0,
7235     727, 737, 747, 757, 1321, 2842, 2852, 0,
7236     767, 777, 1331, 2892, 2902, 2912, 2922, 3112, 0,
7237     302, 307, 312, 317, 787, 797, 807, 817, 827, 837, 916, 1001, 1301, 1311, 2932, 2942, 2952, 3482, 3492, 0,
7238     2982, 2992, 0,
7239     847, 3002, 3012, 3022, 3032, 3042, 3117, 0,
7240     3052, 3062, 0,
7241     322, 327, 857, 1411, 3072, 3122, 3552, 3562, 3572, 3582, 0,
7242     872, 882, 892, 3082, 3092, 3102, 0,
7243     1537, 4468, 4662, 0,
7244     3157, 3167, 3177, 3187, 0,
7245     1046, 0,
7246     1166, 0,
7247     1066, 1176, 0,
7248     2397, 0,
7249     3287, 3297, 3307, 3317, 0,
7250     2587, 0,
7251     3377, 3387, 3397, 3407, 0,
7252     1376, 2737, 2747, 0,
7253     1366, 0,
7254     1186, 0,
7255     1006, 1016, 1026, 1036, 0,
7256     3162, 3172, 3182, 3192, 0,
7257     1051, 0,
7258     1171, 0,
7259     1071, 1181, 0,
7260     2402, 0,
7261     3292, 3302, 3312, 3322, 0,
7262     2592, 0,
7263     3382, 3392, 3402, 3412, 0,
7264     1381, 2742, 2752, 0,
7265     1371, 0,
7266     1191, 0,
7267     1011, 1021, 1031, 1041, 0,
7268     3207, 3217, 3227, 3237, 0,
7269     3212, 3222, 3232, 3242, 0,
7270     2457, 2467, 0,
7271     2462, 2472, 0,
7272     2757, 2767, 0,
7273     2762, 2772, 0,
7274     2857, 0,
7275     2862, 0,
7276     2867, 0,
7277     2872, 0,
7278     2957, 0,
7279     2962, 0,
7280     2967, 0,
7281     2972, 0,
7282     3132, 0,
7283     3427, 3437, 3447, 3457, 3467, 0,
7284     3432, 3442, 3452, 3462, 3472, 0,
7285     3497, 3507, 3517, 3527, 3537, 0,
7286     3502, 3512, 3522, 3532, 3542, 0,
7287     1116, 0,
7288     1106, 0,
7289     1111, 0,
7290     1056, 0,
7291     1061, 0,
7292     2497, 0,
7293     2502, 0,
7294     1396, 0,
7295     1401, 0,
7296     1121, 0,
7297     1514, 0,
7298     1542, 3627, 3632, 4425, 4430, 4435, 4444, 0,
7299     1551, 3697, 3702, 4498, 0,
7300     1556, 3767, 3772, 4507, 4516, 0,
7301     1561, 1586, 3847, 3852, 4565, 4570, 4575, 0,
7302     1566, 3917, 3922, 4700, 0,
7303     4657, 0,
7304     1571, 1591, 3987, 4638, 4643, 4648, 0,
7305     1576, 4047, 4052, 4709, 4718, 0,
7306     4410, 0,
7307     4483, 0,
7308     1596, 3587, 3592, 4087, 4390, 4395, 4405, 4415, 0,
7309     1601, 3667, 3672, 4096, 0,
7310     1606, 3727, 3732, 4105, 4478, 4488, 0,
7311     1611, 1621, 3807, 3812, 4114, 4536, 4541, 4555, 0,
7312     1631, 3887, 3892, 4123, 0,
7313     4618, 4623, 0,
7314     1626, 1636, 3947, 3952, 4132, 4599, 4604, 4628, 0,
7315     1641, 4007, 4012, 4141, 4680, 4690, 0,
7316     1581, 4546, 4560, 0,
7317     1616, 4609, 4633, 0,
7318     4685, 0,
7319     1658, 1663, 0,
7320     1703, 0,
7321     1788, 1798, 0,
7322     1698, 0,
7323     1688, 1693, 1808, 0,
7324     1778, 1828, 0,
7325     1838, 0,
7326     1713, 1723, 1848, 1858, 0,
7327     1708, 0,
7328     1868, 0,
7329     1718, 1898, 1908, 1918, 0,
7330     1928, 0,
7331     1938, 0,
7332     1888, 0,
7333     1793, 1803, 0,
7334     1743, 0,
7335     1733, 1738, 1813, 0,
7336     1783, 1833, 0,
7337     1843, 0,
7338     1728, 1758, 1853, 1863, 0,
7339     1753, 0,
7340     1873, 0,
7341     1763, 1903, 1913, 1923, 0,
7342     1933, 0,
7343     1943, 0,
7344     1893, 0,
7345     1748, 0,
7346     1768, 0,
7347     1773, 0,
7348     1818, 0,
7349     1823, 0,
7350     1878, 0,
7351     1883, 0,
7352     11678, 11683, 11688, 0,
7353     11693, 11803, 0,
7354     11698, 0,
7355     11703, 0,
7356     11708, 0,
7357     11713, 11798, 0,
7358     11718, 0,
7359     11723, 0,
7360     11608, 11728, 0,
7361     11733, 0,
7362     11738, 11808, 0,
7363     11743, 0,
7364     11748, 0,
7365     11753, 0,
7366     11758, 0,
7367     11763, 0,
7368     11768, 11813, 0,
7369     11773, 0,
7370     11778, 0,
7371     11783, 0,
7372     11658, 11663, 11788, 0,
7373     11793, 0,
7374     11613, 0,
7375     15105, 0,
7376     15109, 15113, 0,
7377     15117, 15121, 0,
7378     15125, 15129, 0,
7379     15133, 15137, 0,
7380     12307, 12312, 12317, 12322, 12327, 12332, 12337, 12342, 12347, 12352, 12357, 12362, 12367, 12372, 12377, 12382, 12387, 12392, 12413, 12418, 12423, 12428, 12433, 12919, 12924, 12929, 12934, 12939, 12944, 13174, 13179, 13184, 13189, 13194, 13534, 13539, 15141, 15145, 15149, 15153, 0,
7381     14732, 14739, 1958, 1968, 14007, 14002, 1953, 15157, 15161, 0,
7382     14468, 14684, 12448, 12453, 12458, 12463, 12949, 12954, 12959, 12964, 12969, 12974, 13199, 13204, 13209, 13214, 13219, 13544, 13549, 12438, 12443, 15165, 15169, 15173, 15177, 0,
7383     15181, 15185, 0,
7384     14012, 14018, 14024, 14030, 14036, 14042, 14048, 14054, 14474, 14480, 14486, 14492, 14498, 14504, 13229, 13234, 13239, 13244, 13559, 13554, 12468, 12473, 12478, 12483, 12488, 12493, 12979, 12984, 12989, 12994, 12999, 13004, 13224, 15189, 15193, 15197, 15201, 0,
7385     12498, 12503, 12508, 12513, 13009, 13014, 13019, 13024, 13029, 13034, 13249, 13564, 13569, 15205, 15209, 15213, 15217, 0,
7386     14808, 14660, 14060, 14066, 14510, 14516, 14522, 12518, 12523, 13254, 13259, 13707, 13712, 13847, 13852, 15221, 15225, 15229, 15233, 0,
7387     14072, 14078, 14666, 13264, 13269, 13697, 13702, 13842, 13837, 12528, 12533, 15237, 15241, 15245, 15249, 0,
7388     12538, 12543, 12548, 13274, 13279, 13717, 13722, 13857, 13862, 15253, 15257, 15261, 15265, 0,
7389     15269, 15273, 0,
7390     12868, 15277, 15281, 0,
7391     14760, 12873, 15285, 15289, 0,
7392     15293, 15297, 0,
7393     14084, 14090, 14096, 14102, 14108, 14114, 14120, 14126, 14528, 14708, 13677, 13682, 13772, 13817, 13822, 13912, 13947, 13962, 13967, 13972, 12553, 12558, 12563, 12568, 13284, 13289, 13294, 13299, 13574, 13579, 15301, 15305, 15309, 15313, 0,
7394     14150, 14156, 14162, 14168, 14174, 14180, 14186, 14540, 13767, 13827, 13832, 13887, 13892, 13897, 13902, 13907, 13927, 13932, 13937, 13942, 13952, 13977, 13982, 13987, 13584, 13589, 13687, 13692, 13747, 13752, 13757, 13762, 15317, 15321, 15325, 15329, 0,
7395     14787, 14753, 14781, 14138, 14132, 14144, 14534, 14702, 14720, 12573, 12578, 13304, 13309, 13314, 13727, 13732, 13777, 13872, 13917, 13867, 15333, 15337, 15341, 15345, 0,
7396     14192, 14198, 14204, 14546, 13319, 13324, 13329, 13334, 13737, 13742, 13782, 13877, 13882, 13922, 12583, 12588, 12593, 12598, 15349, 15353, 15357, 15361, 0,
7397     14210, 14216, 14222, 14228, 13647, 13652, 13787, 13792, 13992, 13957, 12603, 12608, 13339, 15365, 15369, 15373, 15377, 0,
7398     12613, 13344, 13997, 15381, 15385, 15389, 15393, 0,
7399     14767, 14696, 14234, 14240, 14246, 14252, 14612, 12618, 12623, 13349, 13354, 13657, 13662, 13797, 13802, 15397, 15401, 15405, 15409, 0,
7400     14258, 14264, 14270, 13359, 13364, 13667, 13672, 13812, 13807, 12628, 12633, 15413, 15417, 15421, 15425, 0,
7401     13629, 13635, 13641, 15040, 15060, 15070, 15080, 15090, 15100, 0,
7402     14276, 14282, 14678, 12653, 12658, 12663, 13039, 13044, 13369, 13374, 13379, 13384, 12638, 12643, 12648, 15429, 15433, 15437, 15441, 0,
7403     14600, 14726, 14294, 14288, 14588, 12668, 12673, 12678, 12683, 13049, 13054, 13389, 13394, 15445, 15449, 15453, 15457, 0,
7404     14618, 14642, 14690, 12703, 12708, 12713, 12718, 12723, 13059, 13064, 13069, 13074, 13079, 13399, 13404, 13409, 13414, 13419, 13594, 13599, 12688, 12693, 12698, 15461, 15465, 15469, 15473, 0,
7405     14648, 14300, 14306, 14312, 14318, 14324, 14330, 14336, 14342, 14348, 14552, 14558, 14606, 14636, 12728, 12733, 12738, 12743, 12748, 12753, 13084, 13089, 13094, 13424, 13429, 13434, 13439, 13444, 13604, 15573, 15578, 15583, 15588, 15593, 15598, 15603, 15608, 15477, 15481, 15485, 15489, 0,
7406     14746, 14354, 14360, 14366, 14372, 14378, 14384, 14390, 14396, 14582, 14630, 14672, 12758, 12763, 12768, 12773, 12778, 12783, 13099, 13104, 13449, 13454, 13459, 13464, 15493, 15497, 15501, 15505, 0,
7407     14414, 14420, 14426, 14432, 14438, 14444, 14450, 14594, 14624, 14654, 14714, 13134, 13469, 13474, 13479, 13484, 13489, 13609, 13614, 12788, 12793, 12798, 12803, 12808, 12813, 13109, 13114, 13119, 13124, 13129, 15509, 15513, 15517, 15521, 0,
7408     14402, 14408, 12823, 12828, 12833, 13494, 13504, 13499, 12818, 15525, 15529, 15533, 15537, 0,
7409     14774, 1963, 15541, 15545, 0,
7410     12878, 13139, 12299, 12303, 15549, 15553, 0,
7411     14456, 14462, 14564, 14570, 14576, 12858, 12863, 13144, 13149, 13154, 13159, 13164, 13169, 13509, 13514, 13519, 13524, 13529, 13619, 13624, 1973, 12838, 12843, 12848, 12853, 15557, 15561, 15565, 15569, 0,
7412     11823, 11827, 0,
7413     12255, 0,
7414     11911, 11915, 11919, 11923, 0,
7415     11879, 11883, 11887, 11891, 0,
7416     11831, 11835, 11839, 11843, 0,
7417     11847, 11851, 11855, 11859, 0,
7418     11895, 11899, 11903, 11907, 0,
7419     11863, 11867, 11871, 11875, 0,
7420     11975, 11979, 11983, 11987, 0,
7421     11959, 11963, 11967, 11971, 0,
7422     11991, 11995, 11999, 12003, 0,
7423     12007, 12011, 12015, 12019, 0,
7424     12047, 12051, 0,
7425     12031, 12035, 0,
7426     12023, 12027, 0,
7427     12039, 12043, 0,
7428     12063, 12067, 0,
7429     12055, 12059, 0,
7430     11927, 11931, 11935, 11939, 0,
7431     11943, 11947, 11951, 11955, 0,
7432     12071, 12075, 12079, 12083, 0,
7433     12215, 12219, 12223, 12227, 0,
7434     12087, 12091, 12095, 12099, 0,
7435     12119, 12123, 12127, 12131, 0,
7436     12103, 12107, 12111, 12115, 0,
7437     12135, 12139, 0,
7438     12143, 12147, 12151, 12155, 0,
7439     12183, 12187, 12191, 12195, 0,
7440     12159, 12163, 0,
7441     2003, 12167, 12171, 12175, 12179, 0,
7442     12267, 12271, 0,
7443     12239, 12243, 0,
7444     12231, 12235, 0,
7445     12247, 12251, 0,
7446     12275, 12279, 0,
7447     12259, 12263, 0,
7448     12397, 12401, 12405, 12409, 0,
7449     12283, 12287, 12291, 12295, 0,
7450     2008, 12199, 12203, 0,
7451     12207, 12211, 0,
7452     1998, 0,
7453     2028, 0,
7454     2033, 0,
7455     2038, 0,
7456     2043, 0,
7457     2048, 0,
7458     2053, 0,
7459     2013, 0,
7460     2058, 0,
7461     2063, 0,
7462     2018, 0,
7463     2023, 0,
7464     2078, 0,
7465     2083, 0,
7466     2088, 0,
7467     2068, 2073, 0,
7468     2103, 0,
7469     2108, 0,
7470     2113, 0,
7471     2118, 0,
7472     2093, 0,
7473     2098, 0,
7474     2138, 0,
7475     2143, 0,
7476     2123, 2128, 2133, 0,
7477     2148, 0,
7478     2153, 2163, 0,
7479     2158, 0,
7480     2168, 0,
7481     2173, 0,
7482     2178, 2183, 2188, 0,
7483     2193, 0,
7484     2198, 2208, 0,
7485     2203, 0,
7486     2213, 2218, 2228, 0,
7487     2223, 0,
7488     2282, 0,
7489     2257, 0,
7490     2262, 0,
7491     2267, 0,
7492     2272, 0,
7493     2277, 0,
7494     2287, 2292, 2317, 0,
7495     2347, 0,
7496     2322, 0,
7497     2327, 0,
7498     2332, 0,
7499     2337, 0,
7500     2342, 0,
7501     2297, 0,
7502     2307, 0,
7503     2352, 0,
7504     2637, 0,
7505     2642, 0,
7506     2817, 0,
7507     2822, 0,
7508     2877, 0,
7509     2882, 0,
7510     3197, 3247, 0,
7511     3202, 3252, 0,
7512     3327, 0,
7513     3332, 0,
7514     3417, 0,
7515     3422, 0,
7516     3597, 3607, 3617, 4150, 0,
7517     3602, 3612, 3622, 4155, 0,
7518     4160, 0,
7519     4165, 0,
7520     4170, 0,
7521     4175, 0,
7522     4180, 0,
7523     4185, 0,
7524     3637, 3647, 3657, 4190, 0,
7525     3642, 3652, 3662, 4195, 0,
7526     4200, 0,
7527     4205, 0,
7528     4210, 0,
7529     4215, 0,
7530     4220, 0,
7531     4225, 0,
7532     3677, 3687, 0,
7533     3682, 3692, 0,
7534     3707, 3717, 0,
7535     3712, 3722, 0,
7536     3737, 3747, 3757, 4230, 0,
7537     3742, 3752, 3762, 4235, 0,
7538     4240, 0,
7539     4245, 0,
7540     4250, 0,
7541     4255, 0,
7542     4260, 0,
7543     4265, 0,
7544     3777, 3787, 3797, 4270, 0,
7545     3782, 3792, 3802, 4275, 0,
7546     4280, 0,
7547     4285, 0,
7548     4290, 0,
7549     4295, 0,
7550     4300, 0,
7551     4305, 0,
7552     3817, 3827, 3837, 0,
7553     3822, 3832, 3842, 0,
7554     3857, 3867, 3877, 0,
7555     3862, 3872, 3882, 0,
7556     3897, 3907, 0,
7557     3902, 3912, 0,
7558     3927, 3937, 0,
7559     3932, 3942, 0,
7560     3957, 3967, 3977, 0,
7561     3962, 3972, 3982, 0,
7562     3992, 3997, 4002, 0,
7563     4017, 4027, 4037, 4310, 0,
7564     4022, 4032, 4042, 4315, 0,
7565     4320, 0,
7566     4325, 0,
7567     4330, 0,
7568     4335, 0,
7569     4340, 0,
7570     4345, 0,
7571     4057, 4067, 4077, 4350, 0,
7572     4062, 4072, 4082, 4355, 0,
7573     4360, 0,
7574     4365, 0,
7575     4370, 0,
7576     4375, 0,
7577     4380, 0,
7578     4385, 0,
7579     4400, 0,
7580     4473, 0,
7581     4675, 0,
7582     4420, 0,
7583     4521, 4526, 4531, 0,
7584     4493, 0,
7585     4695, 0,
7586     4584, 4589, 4594, 0,
7587     5391, 0,
7588     5396, 0,
7589     5401, 0,
7590     5406, 0,
7591     5416, 0,
7592     5411, 0,
7593     5421, 0,
7594     5426, 0,
7595     5431, 0,
7596     5436, 0,
7597     5441, 0,
7598     5468, 0,
7599     5473, 0,
7600     5478, 0,
7601     5483, 0,
7602     5498, 0,
7603     5493, 0,
7604     5513, 0,
7605     5518, 0,
7606     5523, 0,
7607     5528, 0,
7608     5533, 0,
7609     5538, 0,
7610     5543, 0,
7611     5548, 0,
7612     5593, 0,
7613     5598, 0,
7614     5553, 0,
7615     5558, 0,
7616     5563, 0,
7617     5568, 0,
7618     5603, 0,
7619     5608, 0,
7620     5573, 0,
7621     5578, 0,
7622     5583, 0,
7623     5588, 0,
7624     5613, 0,
7625     5618, 0,
7626     5623, 0,
7627     5628, 0,
7628     7351, 0,
7629     7226, 0,
7630     7231, 0,
7631     7236, 0,
7632     7241, 0,
7633     7246, 0,
7634     7251, 0,
7635     7256, 0,
7636     7261, 0,
7637     7266, 0,
7638     7271, 0,
7639     7276, 0,
7640     7281, 0,
7641     7286, 0,
7642     7291, 0,
7643     7296, 0,
7644     7301, 7306, 0,
7645     7311, 7316, 0,
7646     7321, 7326, 0,
7647     7331, 7336, 0,
7648     7341, 7346, 0,
7649     7366, 0,
7650     7496, 0,
7651     7371, 0,
7652     7376, 0,
7653     7381, 0,
7654     7386, 0,
7655     7391, 0,
7656     7396, 0,
7657     7401, 0,
7658     7406, 0,
7659     7411, 0,
7660     7416, 0,
7661     7421, 0,
7662     7426, 0,
7663     7431, 0,
7664     7436, 0,
7665     7441, 0,
7666     7446, 7451, 0,
7667     7456, 7461, 0,
7668     7466, 7471, 0,
7669     7476, 7481, 0,
7670     7486, 7491, 0,
7671     7501, 0,
7672     7506, 0,
7673     7511, 0,
7674     7516, 0,
7675     7521, 0,
7676     11668, 11673, 0,
7677
7678 };
7679
7680 static const Q_UINT16 li_00[] = {
7681     0, 0, 0, 0, 0, 0, 0, 0,
7682     0, 0, 0, 0, 0, 0, 0, 0,
7683     0, 0, 0, 0, 0, 0, 0, 0,
7684     0, 0, 0, 0, 0, 0, 0, 0,
7685     1, 0, 0, 0, 0, 0, 0, 0,
7686     0, 0, 0, 0, 0, 0, 0, 0,
7687     0, 0, 0, 0, 0, 0, 0, 0,
7688     0, 0, 0, 0, 16, 18, 20, 0,
7689     0, 22, 39, 43, 49, 56, 74, 76,
7690     84, 92, 108, 110, 116, 123, 127, 137,
7691     154, 0, 157, 166, 174, 182, 202, 205,
7692     212, 215, 225, 0, 0, 0, 0, 0,
7693     0, 232, 249, 253, 259, 266, 284, 286,
7694     294, 303, 318, 321, 327, 334, 338, 348,
7695     365, 0, 368, 377, 385, 394, 414, 417,
7696     425, 428, 439, 0, 0, 0, 0, 0,
7697     0, 0, 0, 0, 0, 0, 0, 0,
7698     0, 0, 0, 0, 0, 0, 0, 0,
7699     0, 0, 0, 0, 0, 0, 0, 0,
7700     0, 0, 0, 0, 0, 0, 0, 0,
7701     0, 0, 0, 0, 0, 0, 0, 0,
7702     446, 0, 0, 0, 0, 0, 0, 0,
7703     0, 0, 0, 0, 0, 0, 0, 0,
7704     0, 0, 0, 0, 0, 0, 0, 0,
7705     0, 0, 450, 0, 455, 457, 459, 462,
7706     0, 0, 464, 0, 0, 0, 0, 469,
7707     0, 0, 0, 0, 471, 476, 480, 0,
7708     482, 0, 0, 0, 484, 0, 0, 0,
7709     0, 0, 489, 0, 494, 496, 498, 501,
7710     0, 0, 503, 0, 0, 0, 0, 508,
7711     0, 0, 0, 0, 510, 515, 519, 0,
7712     521, 0, 0, 0, 523, 0, 0, 0,
7713 };
7714
7715 static const Q_UINT16 li_01[] = {
7716     0, 0, 528, 533, 0, 0, 0, 0,
7717     0, 0, 0, 0, 0, 0, 0, 0,
7718     0, 0, 538, 541, 0, 0, 0, 0,
7719     0, 0, 0, 0, 0, 0, 0, 0,
7720     0, 0, 0, 0, 0, 0, 0, 0,
7721     0, 0, 0, 0, 0, 0, 0, 0,
7722     0, 0, 0, 0, 0, 0, 0, 0,
7723     0, 0, 0, 0, 0, 0, 0, 0,
7724     0, 0, 0, 0, 0, 0, 0, 0,
7725     0, 0, 0, 0, 544, 547, 0, 0,
7726     0, 0, 0, 0, 0, 0, 0, 0,
7727     0, 0, 550, 552, 0, 0, 0, 0,
7728     554, 556, 0, 0, 0, 0, 0, 0,
7729     558, 560, 562, 564, 0, 0, 0, 0,
7730     0, 0, 0, 0, 0, 0, 0, 0,
7731     0, 0, 0, 0, 0, 0, 0, 566,
7732     0, 0, 0, 0, 0, 0, 0, 0,
7733     0, 0, 0, 0, 0, 0, 0, 0,
7734     0, 0, 0, 0, 0, 0, 0, 0,
7735     0, 0, 0, 0, 0, 0, 0, 0,
7736     568, 574, 0, 0, 0, 0, 0, 0,
7737     0, 0, 0, 0, 0, 0, 0, 580,
7738     586, 0, 0, 0, 0, 0, 0, 592,
7739     0, 0, 0, 0, 0, 0, 0, 0,
7740     0, 0, 0, 0, 0, 0, 0, 0,
7741     0, 0, 0, 0, 0, 0, 0, 0,
7742     0, 0, 0, 0, 0, 0, 0, 0,
7743     0, 0, 0, 0, 0, 0, 0, 0,
7744     0, 0, 0, 0, 0, 0, 0, 0,
7745     0, 0, 594, 596, 0, 0, 0, 0,
7746     0, 0, 0, 0, 0, 0, 0, 0,
7747     0, 0, 0, 0, 0, 0, 0, 0,
7748 };
7749
7750 static const Q_UINT16 li_02[] = {
7751     0, 0, 0, 0, 0, 0, 0, 0,
7752     0, 0, 0, 0, 0, 0, 0, 0,
7753     0, 0, 0, 0, 0, 0, 0, 0,
7754     0, 0, 0, 0, 0, 0, 0, 0,
7755     0, 0, 0, 0, 0, 0, 598, 600,
7756     602, 604, 0, 0, 0, 0, 606, 608,
7757     0, 0, 0, 0, 0, 0, 0, 0,
7758     0, 0, 0, 0, 0, 0, 0, 0,
7759     0, 0, 0, 0, 0, 0, 0, 0,
7760     0, 0, 0, 0, 0, 0, 0, 0,
7761     0, 0, 0, 0, 0, 0, 0, 0,
7762     0, 0, 0, 0, 0, 0, 0, 0,
7763     0, 0, 0, 0, 0, 0, 0, 0,
7764     0, 0, 0, 0, 0, 0, 0, 0,
7765     0, 0, 0, 0, 0, 0, 0, 0,
7766     0, 0, 0, 0, 0, 0, 0, 0,
7767     0, 0, 0, 0, 0, 0, 0, 0,
7768     0, 0, 0, 0, 0, 0, 0, 0,
7769     0, 0, 610, 0, 0, 0, 0, 0,
7770     0, 0, 0, 0, 0, 0, 0, 0,
7771     0, 0, 0, 0, 0, 0, 0, 0,
7772     0, 0, 0, 0, 0, 0, 0, 0,
7773     0, 0, 0, 0, 0, 0, 0, 0,
7774     0, 0, 0, 0, 0, 0, 0, 0,
7775     0, 0, 0, 0, 0, 0, 0, 0,
7776     0, 0, 0, 0, 0, 0, 0, 0,
7777     0, 0, 0, 0, 0, 0, 0, 0,
7778     0, 0, 0, 0, 0, 0, 0, 0,
7779     0, 0, 0, 0, 0, 0, 0, 0,
7780     0, 0, 0, 0, 0, 0, 0, 0,
7781     0, 0, 0, 0, 0, 0, 0, 0,
7782     0, 0, 0, 0, 0, 0, 0, 0,
7783 };
7784
7785 static const Q_UINT16 li_03[] = {
7786     0, 0, 0, 0, 0, 0, 0, 0,
7787     612, 0, 0, 0, 0, 0, 0, 0,
7788     0, 0, 0, 0, 0, 0, 0, 0,
7789     0, 0, 0, 0, 0, 0, 0, 0,
7790     0, 0, 0, 0, 0, 0, 0, 0,
7791     0, 0, 0, 0, 0, 0, 0, 0,
7792     0, 0, 0, 0, 0, 0, 0, 0,
7793     0, 0, 0, 0, 0, 0, 0, 0,
7794     0, 0, 0, 0, 0, 0, 0, 0,
7795     0, 0, 0, 0, 0, 0, 0, 0,
7796     0, 0, 0, 0, 0, 0, 0, 0,
7797     0, 0, 0, 0, 0, 0, 0, 0,
7798     0, 0, 0, 0, 0, 0, 0, 0,
7799     0, 0, 0, 0, 0, 0, 0, 0,
7800     0, 0, 0, 0, 0, 0, 0, 0,
7801     0, 0, 0, 0, 0, 0, 0, 0,
7802     0, 0, 0, 0, 0, 0, 0, 0,
7803     0, 0, 0, 0, 0, 0, 0, 0,
7804     0, 614, 0, 0, 0, 622, 0, 627,
7805     0, 633, 0, 0, 0, 0, 0, 641,
7806     0, 646, 0, 0, 0, 648, 0, 0,
7807     0, 655, 0, 0, 661, 0, 663, 0,
7808     0, 665, 0, 0, 0, 674, 0, 679,
7809     0, 686, 0, 0, 0, 0, 0, 695,
7810     0, 700, 0, 0, 0, 703, 0, 0,
7811     0, 712, 719, 723, 0, 0, 727, 0,
7812     0, 0, 729, 0, 0, 0, 0, 0,
7813     0, 0, 0, 0, 0, 0, 0, 0,
7814     0, 0, 0, 0, 0, 0, 0, 0,
7815     0, 0, 0, 0, 0, 0, 0, 0,
7816     0, 0, 0, 0, 0, 0, 0, 0,
7817     0, 0, 0, 0, 0, 0, 0, 0,
7818 };
7819
7820 static const Q_UINT16 li_04[] = {
7821     0, 0, 0, 0, 0, 0, 732, 0,
7822     0, 0, 0, 0, 0, 0, 0, 0,
7823     734, 0, 0, 737, 0, 739, 743, 746,
7824     748, 0, 753, 0, 0, 0, 755, 0,
7825     0, 0, 0, 757, 0, 0, 0, 762,
7826     0, 0, 0, 764, 0, 766, 0, 0,
7827     768, 0, 0, 771, 0, 773, 777, 780,
7828     782, 0, 787, 0, 0, 0, 789, 0,
7829     0, 0, 0, 791, 0, 0, 0, 796,
7830     0, 0, 0, 798, 0, 800, 0, 0,
7831     0, 0, 0, 0, 0, 0, 802, 0,
7832     0, 0, 0, 0, 0, 0, 0, 0,
7833     0, 0, 0, 0, 0, 0, 0, 0,
7834     0, 0, 0, 0, 0, 0, 0, 0,
7835     0, 0, 0, 0, 804, 806, 0, 0,
7836     0, 0, 0, 0, 0, 0, 0, 0,
7837     0, 0, 0, 0, 0, 0, 0, 0,
7838     0, 0, 0, 0, 0, 0, 0, 0,
7839     0, 0, 0, 0, 0, 0, 0, 0,
7840     0, 0, 0, 0, 0, 0, 0, 0,
7841     0, 0, 0, 0, 0, 0, 0, 0,
7842     0, 0, 0, 0, 0, 0, 0, 0,
7843     0, 0, 0, 0, 0, 0, 0, 0,
7844     0, 0, 0, 0, 0, 0, 0, 0,
7845     0, 0, 0, 0, 0, 0, 0, 0,
7846     0, 0, 0, 0, 0, 0, 0, 0,
7847     0, 0, 0, 0, 0, 0, 0, 0,
7848     808, 810, 0, 0, 0, 0, 0, 0,
7849     0, 0, 0, 0, 0, 0, 0, 0,
7850     812, 814, 0, 0, 0, 0, 0, 0,
7851     0, 0, 0, 0, 0, 0, 0, 0,
7852     0, 0, 0, 0, 0, 0, 0, 0,
7853 };
7854
7855 static const Q_UINT16 li_05[] = {
7856     0, 0, 0, 0, 0, 0, 0, 0,
7857     0, 0, 0, 0, 0, 0, 0, 0,
7858     0, 0, 0, 0, 0, 0, 0, 0,
7859     0, 0, 0, 0, 0, 0, 0, 0,
7860     0, 0, 0, 0, 0, 0, 0, 0,
7861     0, 0, 0, 0, 0, 0, 0, 0,
7862     0, 0, 0, 0, 0, 0, 0, 0,
7863     0, 0, 0, 0, 0, 0, 0, 0,
7864     0, 0, 0, 0, 0, 0, 0, 0,
7865     0, 0, 0, 0, 0, 0, 0, 0,
7866     0, 0, 0, 0, 0, 0, 0, 0,
7867     0, 0, 0, 0, 0, 0, 0, 0,
7868     0, 0, 0, 0, 0, 0, 0, 0,
7869     0, 0, 0, 0, 0, 0, 0, 0,
7870     0, 0, 0, 0, 0, 0, 0, 0,
7871     0, 0, 0, 0, 0, 0, 0, 0,
7872     0, 0, 0, 0, 0, 0, 0, 0,
7873     0, 0, 0, 0, 0, 0, 0, 0,
7874     0, 0, 0, 0, 0, 0, 0, 0,
7875     0, 0, 0, 0, 0, 0, 0, 0,
7876     0, 0, 0, 0, 0, 0, 0, 0,
7877     0, 0, 0, 0, 0, 0, 0, 0,
7878     0, 0, 0, 0, 0, 0, 0, 0,
7879     0, 0, 0, 0, 0, 0, 0, 0,
7880     0, 0, 0, 0, 0, 0, 0, 0,
7881     0, 0, 0, 0, 0, 0, 0, 0,
7882     816, 820, 823, 825, 827, 829, 832, 0,
7883     834, 836, 839, 841, 844, 0, 846, 0,
7884     848, 850, 0, 852, 854, 0, 857, 859,
7885     861, 863, 867, 0, 0, 0, 0, 0,
7886     0, 0, 869, 0, 0, 0, 0, 0,
7887     0, 0, 0, 0, 0, 0, 0, 0,
7888 };
7889
7890 static const Q_UINT16 li_06[] = {
7891     0, 0, 0, 0, 0, 0, 0, 0,
7892     0, 0, 0, 0, 0, 0, 0, 0,
7893     0, 0, 0, 0, 0, 0, 0, 0,
7894     0, 0, 0, 0, 0, 0, 0, 0,
7895     0, 871, 873, 876, 879, 882, 885, 926,
7896     936, 962, 965, 1003, 1021, 1041, 1057, 1071,
7897     1074, 1078, 1083, 1086, 1121, 1158, 1183, 1206,
7898     1224, 1232, 1252, 0, 0, 0, 0, 0,
7899     1268, 1278, 1298, 1316, 1344, 1386, 1415, 1450,
7900     1464, 1469, 1476, 0, 0, 0, 0, 0,
7901     0, 0, 0, 0, 0, 0, 0, 0,
7902     0, 0, 0, 0, 0, 0, 0, 0,
7903     0, 0, 0, 0, 0, 0, 0, 0,
7904     0, 0, 0, 0, 0, 0, 0, 0,
7905     0, 1506, 0, 0, 0, 0, 0, 1509,
7906     0, 1511, 1516, 1521, 0, 0, 1526, 1531,
7907     1536, 0, 0, 1541, 1546, 0, 1551, 1556,
7908     1561, 0, 0, 0, 1564, 1567, 1570, 0,
7909     0, 1573, 0, 0, 0, 0, 0, 0,
7910     1576, 0, 0, 0, 0, 0, 0, 0,
7911     0, 0, 0, 0, 1579, 0, 1584, 0,
7912     0, 1589, 0, 0, 0, 1594, 0, 1599,
7913     0, 1604, 0, 1609, 0, 0, 0, 0,
7914     0, 0, 1614, 1617, 0, 0, 1622, 0,
7915     1627, 1630, 0, 0, 0, 1636, 1639, 1642,
7916     1645, 1648, 0, 1651, 1654, 0, 0, 0,
7917     1659, 0, 1664, 1668, 0, 1671, 0, 0,
7918     0, 0, 0, 0, 0, 0, 0, 0,
7919     0, 0, 0, 0, 0, 0, 0, 0,
7920     0, 0, 0, 0, 0, 0, 0, 0,
7921     0, 0, 0, 0, 0, 0, 0, 0,
7922     0, 0, 0, 0, 0, 0, 0, 0,
7923 };
7924
7925 static const Q_UINT16 li_07[] = {
7926     0, 0, 0, 0, 0, 0, 0, 0,
7927     0, 0, 0, 0, 0, 0, 0, 0,
7928     0, 0, 0, 0, 0, 0, 0, 0,
7929     0, 0, 0, 0, 0, 0, 0, 0,
7930     0, 0, 0, 0, 0, 0, 0, 0,
7931     0, 0, 0, 0, 0, 0, 0, 0,
7932     0, 0, 0, 0, 0, 0, 0, 0,
7933     0, 0, 0, 0, 0, 0, 0, 0,
7934     0, 0, 0, 0, 0, 0, 0, 0,
7935     0, 0, 0, 0, 0, 0, 0, 0,
7936     0, 0, 0, 0, 0, 0, 0, 0,
7937     0, 0, 0, 0, 0, 0, 0, 0,
7938     0, 0, 0, 0, 0, 0, 0, 0,
7939     0, 0, 0, 0, 0, 0, 0, 0,
7940     0, 0, 0, 0, 0, 0, 0, 0,
7941     0, 0, 0, 0, 0, 0, 0, 0,
7942     0, 0, 0, 0, 0, 0, 0, 0,
7943     0, 0, 0, 0, 0, 0, 0, 0,
7944     0, 0, 0, 0, 0, 0, 0, 0,
7945     0, 0, 0, 0, 0, 0, 0, 0,
7946     0, 0, 0, 0, 0, 0, 0, 0,
7947     0, 0, 0, 0, 0, 0, 0, 0,
7948     0, 0, 0, 0, 0, 0, 0, 0,
7949     0, 0, 0, 0, 0, 0, 0, 0,
7950     0, 0, 0, 0, 0, 0, 0, 0,
7951     0, 0, 0, 0, 0, 0, 0, 0,
7952     0, 0, 0, 0, 0, 0, 0, 0,
7953     0, 0, 0, 0, 0, 0, 0, 0,
7954     0, 0, 0, 0, 0, 0, 0, 0,
7955     0, 0, 0, 0, 0, 0, 0, 0,
7956     0, 0, 0, 0, 0, 0, 0, 0,
7957     0, 0, 0, 0, 0, 0, 0, 0,
7958 };
7959
7960 static const Q_UINT16 li_09[] = {
7961     0, 0, 0, 0, 0, 0, 0, 0,
7962     0, 0, 0, 0, 0, 0, 0, 0,
7963     0, 0, 0, 0, 0, 1673, 1675, 1677,
7964     0, 0, 0, 0, 1679, 0, 0, 0,
7965     0, 1681, 1683, 0, 0, 0, 0, 0,
7966     1685, 0, 0, 1687, 0, 0, 0, 1689,
7967     1691, 0, 0, 1693, 0, 0, 0, 0,
7968     0, 0, 0, 0, 0, 0, 0, 0,
7969     0, 0, 0, 0, 0, 0, 0, 0,
7970     0, 0, 0, 0, 0, 0, 0, 0,
7971     0, 0, 0, 0, 0, 0, 0, 0,
7972     0, 0, 0, 0, 0, 0, 0, 0,
7973     0, 0, 0, 0, 0, 0, 0, 0,
7974     0, 0, 0, 0, 0, 0, 0, 0,
7975     0, 0, 0, 0, 0, 0, 0, 0,
7976     0, 0, 0, 0, 0, 0, 0, 0,
7977     0, 0, 0, 0, 0, 0, 0, 0,
7978     0, 0, 0, 0, 0, 0, 0, 0,
7979     0, 0, 0, 0, 0, 0, 0, 0,
7980     0, 0, 0, 0, 0, 0, 0, 0,
7981     0, 1695, 1697, 0, 0, 0, 0, 0,
7982     0, 0, 0, 0, 0, 0, 0, 1699,
7983     0, 0, 0, 0, 0, 0, 0, 0,
7984     0, 0, 0, 0, 0, 0, 0, 0,
7985     0, 0, 0, 0, 0, 0, 0, 1701,
7986     0, 0, 0, 0, 0, 0, 0, 0,
7987     0, 0, 0, 0, 0, 0, 0, 0,
7988     0, 0, 0, 0, 0, 0, 0, 0,
7989     0, 0, 0, 0, 0, 0, 0, 0,
7990     0, 0, 0, 0, 0, 0, 0, 0,
7991     0, 0, 0, 0, 0, 0, 0, 0,
7992     0, 0, 0, 0, 0, 0, 0, 0,
7993 };
7994
7995 static const Q_UINT16 li_0A[] = {
7996     0, 0, 0, 0, 0, 0, 0, 0,
7997     0, 0, 0, 0, 0, 0, 0, 0,
7998     0, 0, 0, 0, 0, 0, 1704, 1706,
7999     0, 0, 0, 0, 1708, 0, 0, 0,
8000     0, 0, 0, 0, 0, 0, 0, 0,
8001     0, 0, 0, 1710, 0, 0, 0, 0,
8002     0, 0, 1712, 0, 0, 0, 0, 0,
8003     1714, 0, 0, 0, 0, 0, 0, 0,
8004     0, 0, 0, 0, 0, 0, 0, 0,
8005     0, 0, 0, 0, 0, 0, 0, 0,
8006     0, 0, 0, 0, 0, 0, 0, 0,
8007     0, 0, 0, 0, 0, 0, 0, 0,
8008     0, 0, 0, 0, 0, 0, 0, 0,
8009     0, 0, 0, 0, 0, 0, 0, 0,
8010     0, 0, 0, 0, 0, 0, 0, 0,
8011     0, 0, 0, 0, 0, 0, 0, 0,
8012     0, 0, 0, 0, 0, 0, 0, 0,
8013     0, 0, 0, 0, 0, 0, 0, 0,
8014     0, 0, 0, 0, 0, 0, 0, 0,
8015     0, 0, 0, 0, 0, 0, 0, 0,
8016     0, 0, 0, 0, 0, 0, 0, 0,
8017     0, 0, 0, 0, 0, 0, 0, 0,
8018     0, 0, 0, 0, 0, 0, 0, 0,
8019     0, 0, 0, 0, 0, 0, 0, 0,
8020     0, 0, 0, 0, 0, 0, 0, 0,
8021     0, 0, 0, 0, 0, 0, 0, 0,
8022     0, 0, 0, 0, 0, 0, 0, 0,
8023     0, 0, 0, 0, 0, 0, 0, 0,
8024     0, 0, 0, 0, 0, 0, 0, 0,
8025     0, 0, 0, 0, 0, 0, 0, 0,
8026     0, 0, 0, 0, 0, 0, 0, 0,
8027     0, 0, 0, 0, 0, 0, 0, 0,
8028 };
8029
8030 static const Q_UINT16 li_0B[] = {
8031     0, 0, 0, 0, 0, 0, 0, 0,
8032     0, 0, 0, 0, 0, 0, 0, 0,
8033     0, 0, 0, 0, 0, 0, 0, 0,
8034     0, 0, 0, 0, 0, 0, 0, 0,
8035     0, 1716, 1718, 0, 0, 0, 0, 0,
8036     0, 0, 0, 0, 0, 0, 0, 0,
8037     0, 0, 0, 0, 0, 0, 0, 0,
8038     0, 0, 0, 0, 0, 0, 0, 0,
8039     0, 0, 0, 0, 0, 0, 0, 1720,
8040     0, 0, 0, 0, 0, 0, 0, 0,
8041     0, 0, 0, 0, 0, 0, 0, 0,
8042     0, 0, 0, 0, 0, 0, 0, 0,
8043     0, 0, 0, 0, 0, 0, 0, 0,
8044     0, 0, 0, 0, 0, 0, 0, 0,
8045     0, 0, 0, 0, 0, 0, 0, 0,
8046     0, 0, 0, 0, 0, 0, 0, 0,
8047     0, 0, 0, 0, 0, 0, 0, 0,
8048     0, 0, 0, 0, 0, 0, 0, 0,
8049     0, 0, 1724, 0, 0, 0, 0, 0,
8050     0, 0, 0, 0, 0, 0, 0, 0,
8051     0, 0, 0, 0, 0, 0, 0, 0,
8052     0, 0, 0, 0, 0, 0, 0, 0,
8053     0, 0, 0, 0, 0, 0, 0, 0,
8054     0, 0, 0, 0, 0, 0, 0, 0,
8055     0, 0, 0, 0, 0, 0, 1726, 1729,
8056     0, 0, 0, 0, 0, 0, 0, 0,
8057     0, 0, 0, 0, 0, 0, 0, 0,
8058     0, 0, 0, 0, 0, 0, 0, 0,
8059     0, 0, 0, 0, 0, 0, 0, 0,
8060     0, 0, 0, 0, 0, 0, 0, 0,
8061     0, 0, 0, 0, 0, 0, 0, 0,
8062     0, 0, 0, 0, 0, 0, 0, 0,
8063 };
8064
8065 static const Q_UINT16 li_0C[] = {
8066     0, 0, 0, 0, 0, 0, 0, 0,
8067     0, 0, 0, 0, 0, 0, 0, 0,
8068     0, 0, 0, 0, 0, 0, 0, 0,
8069     0, 0, 0, 0, 0, 0, 0, 0,
8070     0, 0, 0, 0, 0, 0, 0, 0,
8071     0, 0, 0, 0, 0, 0, 0, 0,
8072     0, 0, 0, 0, 0, 0, 0, 0,
8073     0, 0, 0, 0, 0, 0, 0, 0,
8074     0, 0, 0, 0, 0, 0, 1731, 0,
8075     0, 0, 0, 0, 0, 0, 0, 0,
8076     0, 0, 0, 0, 0, 0, 0, 0,
8077     0, 0, 0, 0, 0, 0, 0, 0,
8078     0, 0, 0, 0, 0, 0, 0, 0,
8079     0, 0, 0, 0, 0, 0, 0, 0,
8080     0, 0, 0, 0, 0, 0, 0, 0,
8081     0, 0, 0, 0, 0, 0, 0, 0,
8082     0, 0, 0, 0, 0, 0, 0, 0,
8083     0, 0, 0, 0, 0, 0, 0, 0,
8084     0, 0, 0, 0, 0, 0, 0, 0,
8085     0, 0, 0, 0, 0, 0, 0, 0,
8086     0, 0, 0, 0, 0, 0, 0, 0,
8087     0, 0, 0, 0, 0, 0, 0, 0,
8088     0, 0, 0, 0, 0, 0, 0, 0,
8089     0, 0, 0, 0, 0, 0, 0, 1733,
8090     0, 0, 0, 0, 0, 0, 1735, 0,
8091     0, 0, 1739, 0, 0, 0, 0, 0,
8092     0, 0, 0, 0, 0, 0, 0, 0,
8093     0, 0, 0, 0, 0, 0, 0, 0,
8094     0, 0, 0, 0, 0, 0, 0, 0,
8095     0, 0, 0, 0, 0, 0, 0, 0,
8096     0, 0, 0, 0, 0, 0, 0, 0,
8097     0, 0, 0, 0, 0, 0, 0, 0,
8098 };
8099
8100 static const Q_UINT16 li_0D[] = {
8101     0, 0, 0, 0, 0, 0, 0, 0,
8102     0, 0, 0, 0, 0, 0, 0, 0,
8103     0, 0, 0, 0, 0, 0, 0, 0,
8104     0, 0, 0, 0, 0, 0, 0, 0,
8105     0, 0, 0, 0, 0, 0, 0, 0,
8106     0, 0, 0, 0, 0, 0, 0, 0,
8107     0, 0, 0, 0, 0, 0, 0, 0,
8108     0, 0, 0, 0, 0, 0, 0, 0,
8109     0, 0, 0, 0, 0, 0, 1741, 1744,
8110     0, 0, 0, 0, 0, 0, 0, 0,
8111     0, 0, 0, 0, 0, 0, 0, 0,
8112     0, 0, 0, 0, 0, 0, 0, 0,
8113     0, 0, 0, 0, 0, 0, 0, 0,
8114     0, 0, 0, 0, 0, 0, 0, 0,
8115     0, 0, 0, 0, 0, 0, 0, 0,
8116     0, 0, 0, 0, 0, 0, 0, 0,
8117     0, 0, 0, 0, 0, 0, 0, 0,
8118     0, 0, 0, 0, 0, 0, 0, 0,
8119     0, 0, 0, 0, 0, 0, 0, 0,
8120     0, 0, 0, 0, 0, 0, 0, 0,
8121     0, 0, 0, 0, 0, 0, 0, 0,
8122     0, 0, 0, 0, 0, 0, 0, 0,
8123     0, 0, 0, 0, 0, 0, 0, 0,
8124     0, 0, 0, 0, 0, 0, 0, 0,
8125     0, 0, 0, 0, 0, 0, 0, 0,
8126     0, 0, 0, 0, 0, 0, 0, 0,
8127     0, 0, 0, 0, 0, 0, 0, 0,
8128     0, 1746, 0, 0, 1750, 0, 0, 0,
8129     0, 0, 0, 0, 0, 0, 0, 0,
8130     0, 0, 0, 0, 0, 0, 0, 0,
8131     0, 0, 0, 0, 0, 0, 0, 0,
8132     0, 0, 0, 0, 0, 0, 0, 0,
8133 };
8134
8135 static const Q_UINT16 li_0F[] = {
8136     0, 0, 0, 0, 0, 0, 0, 0,
8137     0, 0, 0, 0, 0, 0, 0, 0,
8138     0, 0, 0, 0, 0, 0, 0, 0,
8139     0, 0, 0, 0, 0, 0, 0, 0,
8140     0, 0, 0, 0, 0, 0, 0, 0,
8141     0, 0, 0, 0, 0, 0, 0, 0,
8142     0, 0, 0, 0, 0, 0, 0, 0,
8143     0, 0, 0, 0, 0, 0, 0, 0,
8144     1752, 0, 1754, 0, 0, 0, 0, 0,
8145     0, 0, 0, 0, 1756, 0, 0, 0,
8146     0, 1758, 0, 0, 0, 0, 1760, 0,
8147     0, 0, 0, 1762, 0, 0, 0, 0,
8148     0, 0, 0, 0, 0, 0, 0, 0,
8149     0, 0, 0, 0, 0, 0, 0, 0,
8150     0, 1764, 0, 0, 0, 0, 0, 0,
8151     0, 0, 0, 0, 0, 0, 0, 0,
8152     0, 0, 0, 0, 0, 0, 0, 0,
8153     0, 0, 0, 0, 0, 0, 0, 0,
8154     1768, 0, 1770, 0, 0, 0, 0, 0,
8155     0, 0, 0, 0, 1772, 0, 0, 0,
8156     0, 1774, 0, 0, 0, 0, 1776, 0,
8157     0, 0, 0, 1778, 0, 0, 0, 0,
8158     0, 0, 1780, 1782, 0, 0, 0, 0,
8159     0, 0, 0, 0, 0, 0, 0, 0,
8160     0, 0, 0, 0, 0, 0, 0, 0,
8161     0, 0, 0, 0, 0, 0, 0, 0,
8162     0, 0, 0, 0, 0, 0, 0, 0,
8163     0, 0, 0, 0, 0, 0, 0, 0,
8164     0, 0, 0, 0, 0, 0, 0, 0,
8165     0, 0, 0, 0, 0, 0, 0, 0,
8166     0, 0, 0, 0, 0, 0, 0, 0,
8167     0, 0, 0, 0, 0, 0, 0, 0,
8168 };
8169
8170 static const Q_UINT16 li_10[] = {
8171     0, 0, 0, 0, 0, 0, 0, 0,
8172     0, 0, 0, 0, 0, 0, 0, 0,
8173     0, 0, 0, 0, 0, 0, 0, 0,
8174     0, 0, 0, 0, 0, 0, 0, 0,
8175     0, 0, 0, 0, 0, 1784, 0, 0,
8176     0, 0, 0, 0, 0, 0, 0, 0,
8177     0, 0, 0, 0, 0, 0, 0, 0,
8178     0, 0, 0, 0, 0, 0, 0, 0,
8179     0, 0, 0, 0, 0, 0, 0, 0,
8180     0, 0, 0, 0, 0, 0, 0, 0,
8181     0, 0, 0, 0, 0, 0, 0, 0,
8182     0, 0, 0, 0, 0, 0, 0, 0,
8183     0, 0, 0, 0, 0, 0, 0, 0,
8184     0, 0, 0, 0, 0, 0, 0, 0,
8185     0, 0, 0, 0, 0, 0, 0, 0,
8186     0, 0, 0, 0, 0, 0, 0, 0,
8187     0, 0, 0, 0, 0, 0, 0, 0,
8188     0, 0, 0, 0, 0, 0, 0, 0,
8189     0, 0, 0, 0, 0, 0, 0, 0,
8190     0, 0, 0, 0, 0, 0, 0, 0,
8191     0, 0, 0, 0, 0, 0, 0, 0,
8192     0, 0, 0, 0, 0, 0, 0, 0,
8193     0, 0, 0, 0, 0, 0, 0, 0,
8194     0, 0, 0, 0, 0, 0, 0, 0,
8195     0, 0, 0, 0, 0, 0, 0, 0,
8196     0, 0, 0, 0, 0, 0, 0, 0,
8197     0, 0, 0, 0, 0, 0, 0, 0,
8198     0, 0, 0, 0, 0, 0, 0, 0,
8199     0, 0, 0, 0, 0, 0, 0, 0,
8200     0, 0, 0, 0, 0, 0, 0, 0,
8201     0, 0, 0, 0, 0, 0, 0, 0,
8202     0, 0, 0, 0, 0, 0, 0, 0,
8203 };
8204
8205 static const Q_UINT16 li_1E[] = {
8206     0, 0, 0, 0, 0, 0, 0, 0,
8207     0, 0, 0, 0, 0, 0, 0, 0,
8208     0, 0, 0, 0, 0, 0, 0, 0,
8209     0, 0, 0, 0, 0, 0, 0, 0,
8210     0, 0, 0, 0, 0, 0, 0, 0,
8211     0, 0, 0, 0, 0, 0, 0, 0,
8212     0, 0, 0, 0, 0, 0, 1786, 1788,
8213     0, 0, 0, 0, 0, 0, 0, 0,
8214     0, 0, 0, 0, 0, 0, 0, 0,
8215     0, 0, 0, 0, 0, 0, 0, 0,
8216     0, 0, 0, 0, 0, 0, 0, 0,
8217     0, 0, 1790, 1792, 0, 0, 0, 0,
8218     0, 0, 1794, 1796, 0, 0, 0, 0,
8219     0, 0, 0, 0, 0, 0, 0, 0,
8220     0, 0, 0, 0, 0, 0, 0, 0,
8221     0, 0, 0, 0, 0, 0, 0, 0,
8222     0, 0, 0, 0, 0, 0, 0, 0,
8223     0, 0, 0, 0, 0, 0, 0, 0,
8224     0, 0, 0, 0, 0, 0, 0, 0,
8225     0, 0, 0, 0, 0, 0, 0, 0,
8226     1798, 1801, 0, 0, 0, 0, 0, 0,
8227     0, 0, 0, 0, 0, 0, 0, 0,
8228     0, 0, 0, 0, 0, 0, 0, 0,
8229     1804, 1806, 0, 0, 0, 0, 0, 0,
8230     0, 0, 0, 0, 0, 0, 0, 0,
8231     0, 0, 0, 0, 1808, 1810, 0, 0,
8232     0, 0, 0, 0, 0, 0, 0, 0,
8233     0, 0, 0, 0, 0, 0, 0, 0,
8234     0, 0, 0, 0, 0, 0, 0, 0,
8235     0, 0, 0, 0, 0, 0, 0, 0,
8236     0, 0, 0, 0, 0, 0, 0, 0,
8237     0, 0, 0, 0, 0, 0, 0, 0,
8238 };
8239
8240 static const Q_UINT16 li_1F[] = {
8241     1812, 1817, 1822, 1824, 1826, 1828, 1830, 1832,
8242     1834, 1839, 1844, 1846, 1848, 1850, 1852, 1854,
8243     1856, 1859, 0, 0, 0, 0, 0, 0,
8244     1862, 1865, 0, 0, 0, 0, 0, 0,
8245     1868, 1873, 1878, 1880, 1882, 1884, 1886, 1888,
8246     1890, 1895, 1900, 1902, 1904, 1906, 1908, 1910,
8247     1912, 1916, 0, 0, 0, 0, 0, 0,
8248     1920, 1924, 0, 0, 0, 0, 0, 0,
8249     1928, 1931, 0, 0, 0, 0, 0, 0,
8250     1934, 1937, 0, 0, 0, 0, 0, 0,
8251     1940, 1944, 0, 0, 0, 0, 0, 0,
8252     0, 1948, 0, 0, 0, 0, 0, 0,
8253     1952, 1957, 1962, 1964, 1966, 1968, 1970, 1972,
8254     1974, 1979, 1984, 1986, 1988, 1990, 1992, 1994,
8255     1996, 0, 0, 0, 1998, 0, 0, 0,
8256     0, 0, 0, 0, 2000, 0, 0, 0,
8257     0, 0, 0, 0, 0, 0, 0, 0,
8258     0, 0, 0, 0, 0, 0, 0, 0,
8259     0, 0, 0, 0, 0, 0, 0, 0,
8260     0, 0, 0, 0, 0, 0, 0, 0,
8261     0, 0, 0, 0, 0, 0, 0, 0,
8262     0, 0, 0, 0, 0, 0, 0, 0,
8263     0, 0, 0, 0, 0, 0, 2002, 0,
8264     0, 0, 0, 0, 0, 0, 0, 2004,
8265     0, 0, 0, 0, 0, 0, 2008, 0,
8266     0, 0, 0, 0, 0, 0, 0, 0,
8267     0, 0, 0, 0, 0, 0, 0, 0,
8268     0, 0, 0, 0, 0, 0, 0, 0,
8269     0, 0, 0, 0, 0, 0, 0, 0,
8270     0, 0, 0, 0, 0, 0, 0, 0,
8271     0, 0, 0, 0, 0, 0, 2010, 0,
8272     0, 0, 0, 0, 0, 0, 2012, 0,
8273 };
8274
8275 static const Q_UINT16 li_21[] = {
8276     0, 0, 0, 0, 0, 0, 0, 0,
8277     0, 0, 0, 0, 0, 0, 0, 0,
8278     0, 0, 0, 0, 0, 0, 0, 0,
8279     0, 0, 0, 0, 0, 0, 0, 0,
8280     0, 0, 0, 0, 0, 0, 0, 0,
8281     0, 0, 0, 0, 0, 0, 0, 0,
8282     0, 0, 0, 0, 0, 0, 0, 0,
8283     0, 0, 0, 0, 0, 0, 0, 0,
8284     0, 0, 0, 0, 0, 0, 0, 0,
8285     0, 0, 0, 0, 0, 0, 0, 0,
8286     0, 0, 0, 0, 0, 0, 0, 0,
8287     0, 0, 0, 0, 0, 0, 0, 0,
8288     0, 0, 0, 0, 0, 0, 0, 0,
8289     0, 0, 0, 0, 0, 0, 0, 0,
8290     0, 0, 0, 0, 0, 0, 0, 0,
8291     0, 0, 0, 0, 0, 0, 0, 0,
8292     0, 0, 0, 0, 0, 0, 0, 0,
8293     0, 0, 0, 0, 0, 0, 0, 0,
8294     2016, 0, 2018, 0, 2020, 0, 0, 0,
8295     0, 0, 0, 0, 0, 0, 0, 0,
8296     0, 0, 0, 0, 0, 0, 0, 0,
8297     0, 0, 0, 0, 0, 0, 0, 0,
8298     0, 0, 0, 0, 0, 0, 0, 0,
8299     0, 0, 0, 0, 0, 0, 0, 0,
8300     0, 0, 0, 0, 0, 0, 0, 0,
8301     0, 0, 0, 0, 0, 0, 0, 0,
8302     2022, 0, 2024, 0, 2026, 0, 0, 0,
8303     0, 0, 0, 0, 0, 0, 0, 0,
8304     0, 0, 0, 0, 0, 0, 0, 0,
8305     0, 0, 0, 0, 0, 0, 0, 0,
8306     0, 0, 0, 0, 0, 0, 0, 0,
8307     0, 0, 0, 0, 0, 0, 0, 0,
8308 };
8309
8310 static const Q_UINT16 li_22[] = {
8311     0, 0, 0, 2028, 0, 0, 0, 0,
8312     2030, 0, 0, 2032, 0, 0, 0, 0,
8313     0, 0, 0, 0, 0, 0, 0, 0,
8314     0, 0, 0, 0, 0, 0, 0, 0,
8315     0, 0, 0, 2034, 0, 2036, 0, 0,
8316     0, 0, 0, 0, 0, 0, 0, 0,
8317     0, 0, 0, 0, 0, 0, 0, 0,
8318     0, 0, 0, 0, 2038, 0, 0, 0,
8319     0, 0, 0, 2040, 0, 2042, 0, 0,
8320     2044, 0, 0, 0, 0, 2046, 0, 0,
8321     0, 0, 0, 0, 0, 0, 0, 0,
8322     0, 0, 0, 0, 0, 0, 0, 0,
8323     0, 2048, 0, 0, 2050, 2052, 0, 0,
8324     0, 0, 0, 0, 0, 0, 0, 0,
8325     0, 0, 2054, 2056, 0, 0, 2058, 2060,
8326     0, 0, 2062, 2064, 2066, 2068, 0, 0,
8327     0, 0, 2070, 2072, 0, 0, 2074, 2076,
8328     0, 0, 0, 0, 0, 0, 0, 0,
8329     0, 2078, 2080, 0, 0, 0, 0, 0,
8330     0, 0, 0, 0, 0, 0, 0, 0,
8331     0, 0, 2082, 0, 0, 0, 0, 0,
8332     2084, 2086, 0, 2088, 0, 0, 0, 0,
8333     0, 0, 2090, 2092, 2094, 2096, 0, 0,
8334     0, 0, 0, 0, 0, 0, 0, 0,
8335     0, 0, 0, 0, 0, 0, 0, 0,
8336     0, 0, 0, 0, 0, 0, 0, 0,
8337     0, 0, 0, 0, 0, 0, 0, 0,
8338     0, 0, 0, 0, 0, 0, 0, 0,
8339     0, 0, 0, 0, 0, 0, 0, 0,
8340     0, 0, 0, 0, 0, 0, 0, 0,
8341     0, 0, 0, 0, 0, 0, 0, 0,
8342     0, 0, 0, 0, 0, 0, 0, 0,
8343 };
8344
8345 static const Q_UINT16 li_30[] = {
8346     0, 0, 0, 0, 0, 0, 0, 0,
8347     0, 0, 0, 0, 0, 0, 0, 0,
8348     0, 0, 0, 0, 0, 0, 0, 0,
8349     0, 0, 0, 0, 0, 0, 0, 0,
8350     0, 0, 0, 0, 0, 0, 0, 0,
8351     0, 0, 0, 0, 0, 0, 0, 0,
8352     0, 0, 0, 0, 0, 0, 0, 0,
8353     0, 0, 0, 0, 0, 0, 0, 0,
8354     0, 0, 0, 0, 0, 0, 2098, 0,
8355     0, 0, 0, 2100, 0, 2102, 0, 2104,
8356     0, 2106, 0, 2108, 0, 2110, 0, 2112,
8357     0, 2114, 0, 2116, 0, 2118, 0, 2120,
8358     0, 2122, 0, 0, 2124, 0, 2126, 0,
8359     2128, 0, 0, 0, 0, 0, 0, 2130,
8360     0, 0, 2133, 0, 0, 2136, 0, 0,
8361     2139, 0, 0, 2142, 0, 0, 0, 0,
8362     0, 0, 0, 0, 0, 0, 0, 0,
8363     0, 0, 0, 0, 0, 0, 0, 0,
8364     0, 0, 0, 0, 0, 0, 0, 0,
8365     0, 0, 0, 0, 0, 2145, 0, 0,
8366     0, 0, 0, 0, 0, 0, 2147, 0,
8367     0, 0, 0, 2149, 0, 2151, 0, 2153,
8368     0, 2155, 0, 2157, 0, 2159, 0, 2161,
8369     0, 2163, 0, 2165, 0, 2167, 0, 2169,
8370     0, 2171, 0, 0, 2173, 0, 2175, 0,
8371     2177, 0, 0, 0, 0, 0, 0, 2179,
8372     0, 0, 2182, 0, 0, 2185, 0, 0,
8373     2188, 0, 0, 2191, 0, 0, 0, 0,
8374     0, 0, 0, 0, 0, 0, 0, 0,
8375     0, 0, 0, 0, 0, 0, 0, 2194,
8376     2196, 2198, 2200, 0, 0, 0, 0, 0,
8377     0, 0, 0, 0, 0, 2202, 0, 0,
8378 };
8379
8380 static const Q_UINT16 li_FB[] = {
8381     0, 0, 0, 0, 0, 0, 0, 0,
8382     0, 0, 0, 0, 0, 0, 0, 0,
8383     0, 0, 0, 0, 0, 0, 0, 0,
8384     0, 0, 0, 0, 0, 0, 0, 0,
8385     0, 0, 0, 0, 0, 0, 0, 0,
8386     0, 0, 0, 0, 0, 0, 0, 0,
8387     0, 0, 0, 0, 0, 0, 0, 0,
8388     0, 0, 0, 0, 0, 0, 0, 0,
8389     0, 0, 0, 0, 0, 0, 0, 0,
8390     0, 2204, 0, 0, 0, 0, 0, 0,
8391     0, 0, 0, 0, 0, 0, 0, 0,
8392     0, 0, 0, 0, 0, 0, 0, 0,
8393     0, 0, 0, 0, 0, 0, 0, 0,
8394     0, 0, 0, 0, 0, 0, 0, 0,
8395     0, 0, 0, 0, 0, 0, 0, 0,
8396     0, 0, 0, 0, 0, 0, 0, 0,
8397     0, 0, 0, 0, 0, 0, 0, 0,
8398     0, 0, 0, 0, 0, 0, 0, 0,
8399     0, 0, 0, 0, 0, 0, 0, 0,
8400     0, 0, 0, 0, 0, 0, 0, 0,
8401     0, 0, 0, 0, 0, 0, 0, 0,
8402     0, 0, 0, 0, 0, 0, 0, 0,
8403     0, 0, 0, 0, 0, 0, 0, 0,
8404     0, 0, 0, 0, 0, 0, 0, 0,
8405     0, 0, 0, 0, 0, 0, 0, 0,
8406     0, 0, 0, 0, 0, 0, 0, 0,
8407     0, 0, 0, 0, 0, 0, 0, 0,
8408     0, 0, 0, 0, 0, 0, 0, 0,
8409     0, 0, 0, 0, 0, 0, 0, 0,
8410     0, 0, 0, 0, 0, 0, 0, 0,
8411     0, 0, 0, 0, 0, 0, 0, 0,
8412     0, 0, 0, 0, 0, 0, 0, 0,
8413 };
8414
8415 static const Q_UINT16 * const ligature_info[256] = {
8416     li_00, li_01, li_02, li_03, li_04, li_05, li_06, li_07,
8417     li_07, li_09, li_0A, li_0B, li_0C, li_0D, li_07, li_0F,
8418     li_10, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8419     li_07, li_07, li_07, li_07, li_07, li_07, li_1E, li_1F,
8420     li_07, li_21, li_22, li_07, li_07, li_07, li_07, li_07,
8421     li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8422     li_30, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8423     li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8424     li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8425     li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8426     li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8427     li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8428     li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8429     li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8430     li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8431     li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8432     li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8433     li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8434     li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8435     li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8436     li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8437     li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8438     li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8439     li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8440     li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8441     li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8442     li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8443     li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8444     li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8445     li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8446     li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8447     li_07, li_07, li_07, li_FB, li_07, li_07, li_07, li_07,
8448 };
8449 // 16188 bytes
8450
8451 static const Q_UINT8 dir_00[] = {
8452     18, 18, 18, 18, 18, 18, 18, 18,
8453     18, 8, 7, 8, 9, 7, 18, 18,
8454     18, 18, 18, 18, 18, 18, 18, 18,
8455     18, 18, 18, 18, 7, 7, 7, 8,
8456     9, 10, 10, 4, 4, 4, 10, 10,
8457     138, 138, 10, 4, 6, 4, 6, 3,
8458     2, 2, 2, 2, 2, 2, 2, 2,
8459     2, 2, 6, 10, 138, 10, 138, 10,
8460     10, 0, 0, 0, 0, 0, 0, 0,
8461     0, 0, 0, 0, 0, 0, 0, 0,
8462     0, 0, 0, 0, 0, 0, 0, 0,
8463     0, 0, 0, 138, 10, 138, 10, 10,
8464     10, 0, 0, 0, 0, 0, 0, 0,
8465     0, 0, 0, 0, 0, 0, 0, 0,
8466     0, 0, 0, 0, 0, 0, 0, 0,
8467     0, 0, 0, 138, 10, 138, 10, 18,
8468     18, 18, 18, 18, 18, 7, 18, 18,
8469     18, 18, 18, 18, 18, 18, 18, 18,
8470     18, 18, 18, 18, 18, 18, 18, 18,
8471     18, 18, 18, 18, 18, 18, 18, 18,
8472     6, 10, 4, 4, 4, 4, 10, 10,
8473     10, 10, 0, 138, 10, 10, 10, 10,
8474     4, 4, 2, 2, 10, 0, 10, 10,
8475     10, 2, 0, 138, 10, 10, 10, 10,
8476     0, 0, 0, 0, 0, 0, 0, 0,
8477     0, 0, 0, 0, 0, 0, 0, 0,
8478     0, 0, 0, 0, 0, 0, 0, 10,
8479     0, 0, 0, 0, 0, 0, 0, 0,
8480     0, 0, 0, 0, 0, 0, 0, 0,
8481     0, 0, 0, 0, 0, 0, 0, 0,
8482     0, 0, 0, 0, 0, 0, 0, 10,
8483     0, 0, 0, 0, 0, 0, 0, 0,
8484 };
8485
8486 static const Q_UINT8 dir_01[] = {
8487     0, 0, 0, 0, 0, 0, 0, 0,
8488     0, 0, 0, 0, 0, 0, 0, 0,
8489     0, 0, 0, 0, 0, 0, 0, 0,
8490     0, 0, 0, 0, 0, 0, 0, 0,
8491     0, 0, 0, 0, 0, 0, 0, 0,
8492     0, 0, 0, 0, 0, 0, 0, 0,
8493     0, 0, 0, 0, 0, 0, 0, 0,
8494     0, 0, 0, 0, 0, 0, 0, 0,
8495     0, 0, 0, 0, 0, 0, 0, 0,
8496     0, 0, 0, 0, 0, 0, 0, 0,
8497     0, 0, 0, 0, 0, 0, 0, 0,
8498     0, 0, 0, 0, 0, 0, 0, 0,
8499     0, 0, 0, 0, 0, 0, 0, 0,
8500     0, 0, 0, 0, 0, 0, 0, 0,
8501     0, 0, 0, 0, 0, 0, 0, 0,
8502     0, 0, 0, 0, 0, 0, 0, 0,
8503     0, 0, 0, 0, 0, 0, 0, 0,
8504     0, 0, 0, 0, 0, 0, 0, 0,
8505     0, 0, 0, 0, 0, 0, 0, 0,
8506     0, 0, 0, 0, 0, 0, 0, 0,
8507     0, 0, 0, 0, 0, 0, 0, 0,
8508     0, 0, 0, 0, 0, 0, 0, 0,
8509     0, 0, 0, 0, 0, 0, 0, 0,
8510     0, 0, 0, 0, 0, 0, 0, 0,
8511     0, 0, 0, 0, 0, 0, 0, 0,
8512     0, 0, 0, 0, 0, 0, 0, 0,
8513     0, 0, 0, 0, 0, 0, 0, 0,
8514     0, 0, 0, 0, 0, 0, 0, 0,
8515     0, 0, 0, 0, 0, 0, 0, 0,
8516     0, 0, 0, 0, 0, 0, 0, 0,
8517     0, 0, 0, 0, 0, 0, 0, 0,
8518     0, 0, 0, 0, 0, 0, 0, 0,
8519 };
8520
8521 static const Q_UINT8 dir_02[] = {
8522     0, 0, 0, 0, 0, 0, 0, 0,
8523     0, 0, 0, 0, 0, 0, 0, 0,
8524     0, 0, 0, 0, 0, 0, 0, 0,
8525     0, 0, 0, 0, 0, 0, 0, 0,
8526     0, 0, 0, 0, 0, 0, 0, 0,
8527     0, 0, 0, 0, 0, 0, 0, 0,
8528     0, 0, 0, 0, 0, 0, 0, 0,
8529     0, 0, 0, 0, 0, 0, 0, 0,
8530     0, 0, 0, 0, 0, 0, 0, 0,
8531     0, 0, 0, 0, 0, 0, 0, 0,
8532     0, 0, 0, 0, 0, 0, 0, 0,
8533     0, 0, 0, 0, 0, 0, 0, 0,
8534     0, 0, 0, 0, 0, 0, 0, 0,
8535     0, 0, 0, 0, 0, 0, 0, 0,
8536     0, 0, 0, 0, 0, 0, 0, 0,
8537     0, 0, 0, 0, 0, 0, 0, 0,
8538     0, 0, 0, 0, 0, 0, 0, 0,
8539     0, 0, 0, 0, 0, 0, 0, 0,
8540     0, 0, 0, 0, 0, 0, 0, 0,
8541     0, 0, 0, 0, 0, 0, 0, 0,
8542     0, 0, 0, 0, 0, 0, 0, 0,
8543     0, 0, 0, 0, 0, 0, 0, 0,
8544     0, 0, 0, 0, 0, 0, 0, 0,
8545     0, 10, 10, 0, 0, 0, 0, 0,
8546     0, 0, 10, 10, 10, 10, 10, 10,
8547     10, 10, 10, 10, 10, 10, 10, 10,
8548     0, 0, 10, 10, 10, 10, 10, 10,
8549     10, 10, 10, 10, 10, 10, 10, 10,
8550     0, 0, 0, 0, 0, 10, 10, 10,
8551     10, 10, 10, 10, 10, 10, 0, 0,
8552     0, 0, 0, 0, 0, 0, 0, 0,
8553     0, 0, 0, 0, 0, 0, 0, 0,
8554 };
8555
8556 static const Q_UINT8 dir_03[] = {
8557     17, 17, 17, 17, 17, 17, 17, 17,
8558     17, 17, 17, 17, 17, 17, 17, 17,
8559     17, 17, 17, 17, 17, 17, 17, 17,
8560     17, 17, 17, 17, 17, 17, 17, 17,
8561     17, 17, 17, 17, 17, 17, 17, 17,
8562     17, 17, 17, 17, 17, 17, 17, 17,
8563     17, 17, 17, 17, 17, 17, 17, 17,
8564     17, 17, 17, 17, 17, 17, 17, 17,
8565     17, 17, 17, 17, 17, 17, 17, 17,
8566     17, 17, 17, 17, 17, 17, 17, 0,
8567     0, 0, 0, 0, 0, 0, 0, 0,
8568     0, 0, 0, 0, 0, 0, 0, 0,
8569     17, 17, 17, 0, 0, 0, 0, 0,
8570     0, 0, 0, 0, 0, 0, 0, 0,
8571     0, 0, 0, 0, 10, 10, 0, 0,
8572     0, 0, 0, 0, 0, 0, 10, 0,
8573     0, 0, 0, 0, 10, 10, 0, 10,
8574     0, 0, 0, 0, 0, 0, 0, 0,
8575     0, 0, 0, 0, 0, 0, 0, 0,
8576     0, 0, 0, 0, 0, 0, 0, 0,
8577     0, 0, 0, 0, 0, 0, 0, 0,
8578     0, 0, 0, 0, 0, 0, 0, 0,
8579     0, 0, 0, 0, 0, 0, 0, 0,
8580     0, 0, 0, 0, 0, 0, 0, 0,
8581     0, 0, 0, 0, 0, 0, 0, 0,
8582     0, 0, 0, 0, 0, 0, 0, 0,
8583     0, 0, 0, 0, 0, 0, 0, 0,
8584     0, 0, 0, 0, 0, 0, 0, 0,
8585     0, 0, 0, 0, 0, 0, 0, 0,
8586     0, 0, 0, 0, 0, 0, 0, 0,
8587     0, 0, 0, 0, 0, 0, 0, 0,
8588     0, 0, 0, 0, 0, 0, 0, 0,
8589 };
8590
8591 static const Q_UINT8 dir_04[] = {
8592     0, 0, 0, 0, 0, 0, 0, 0,
8593     0, 0, 0, 0, 0, 0, 0, 0,
8594     0, 0, 0, 0, 0, 0, 0, 0,
8595     0, 0, 0, 0, 0, 0, 0, 0,
8596     0, 0, 0, 0, 0, 0, 0, 0,
8597     0, 0, 0, 0, 0, 0, 0, 0,
8598     0, 0, 0, 0, 0, 0, 0, 0,
8599     0, 0, 0, 0, 0, 0, 0, 0,
8600     0, 0, 0, 0, 0, 0, 0, 0,
8601     0, 0, 0, 0, 0, 0, 0, 0,
8602     0, 0, 0, 0, 0, 0, 0, 0,
8603     0, 0, 0, 0, 0, 0, 0, 0,
8604     0, 0, 0, 0, 0, 0, 0, 0,
8605     0, 0, 0, 0, 0, 0, 0, 0,
8606     0, 0, 0, 0, 0, 0, 0, 0,
8607     0, 0, 0, 0, 0, 0, 0, 0,
8608     0, 0, 0, 17, 17, 17, 17, 0,
8609     17, 17, 0, 0, 0, 0, 0, 0,
8610     0, 0, 0, 0, 0, 0, 0, 0,
8611     0, 0, 0, 0, 0, 0, 0, 0,
8612     0, 0, 0, 0, 0, 0, 0, 0,
8613     0, 0, 0, 0, 0, 0, 0, 0,
8614     0, 0, 0, 0, 0, 0, 0, 0,
8615     0, 0, 0, 0, 0, 0, 0, 0,
8616     0, 0, 0, 0, 0, 0, 0, 0,
8617     0, 0, 0, 0, 0, 0, 0, 0,
8618     0, 0, 0, 0, 0, 0, 0, 0,
8619     0, 0, 0, 0, 0, 0, 0, 0,
8620     0, 0, 0, 0, 0, 0, 0, 0,
8621     0, 0, 0, 0, 0, 0, 0, 0,
8622     0, 0, 0, 0, 0, 0, 0, 0,
8623     0, 0, 0, 0, 0, 0, 0, 0,
8624 };
8625
8626 static const Q_UINT8 dir_05[] = {
8627     0, 0, 0, 0, 0, 0, 0, 0,
8628     0, 0, 0, 0, 0, 0, 0, 0,
8629     0, 0, 0, 0, 0, 0, 0, 0,
8630     0, 0, 0, 0, 0, 0, 0, 0,
8631     0, 0, 0, 0, 0, 0, 0, 0,
8632     0, 0, 0, 0, 0, 0, 0, 0,
8633     0, 0, 0, 0, 0, 0, 0, 0,
8634     0, 0, 0, 0, 0, 0, 0, 0,
8635     0, 0, 0, 0, 0, 0, 0, 0,
8636     0, 0, 0, 0, 0, 0, 0, 0,
8637     0, 0, 0, 0, 0, 0, 0, 0,
8638     0, 0, 0, 0, 0, 0, 0, 0,
8639     0, 0, 0, 0, 0, 0, 0, 0,
8640     0, 0, 0, 0, 0, 0, 0, 0,
8641     0, 0, 0, 0, 0, 0, 0, 0,
8642     0, 0, 0, 0, 0, 0, 0, 0,
8643     0, 0, 0, 0, 0, 0, 0, 0,
8644     0, 0, 10, 0, 0, 0, 0, 0,
8645     0, 17, 17, 17, 17, 17, 17, 17,
8646     17, 17, 17, 17, 17, 17, 17, 17,
8647     17, 17, 0, 17, 17, 17, 17, 17,
8648     17, 17, 17, 17, 17, 17, 17, 17,
8649     17, 17, 17, 17, 17, 17, 17, 17,
8650     17, 17, 0, 17, 17, 17, 1, 17,
8651     1, 17, 17, 1, 17, 0, 0, 0,
8652     0, 0, 0, 0, 0, 0, 0, 0,
8653     1, 1, 1, 1, 1, 1, 1, 1,
8654     1, 1, 1, 1, 1, 1, 1, 1,
8655     1, 1, 1, 1, 1, 1, 1, 1,
8656     1, 1, 1, 0, 0, 0, 0, 0,
8657     1, 1, 1, 1, 1, 0, 0, 0,
8658     0, 0, 0, 0, 0, 0, 0, 0,
8659 };
8660
8661 static const Q_UINT8 dir_06[] = {
8662     0, 0, 0, 0, 0, 0, 0, 0,
8663     0, 0, 0, 0, 6, 0, 0, 0,
8664     0, 0, 0, 0, 0, 0, 0, 0,
8665     0, 0, 0, 13, 0, 0, 0, 13,
8666     0, 13, 77, 77, 77, 77, 45, 77,
8667     45, 77, 45, 45, 45, 45, 45, 77,
8668     77, 77, 77, 45, 45, 45, 45, 45,
8669     45, 45, 45, 0, 0, 0, 0, 0,
8670     109, 45, 45, 45, 45, 45, 45, 45,
8671     77, 77, 45, 17, 17, 17, 17, 17,
8672     17, 17, 17, 17, 17, 17, 0, 0,
8673     0, 0, 0, 0, 0, 0, 0, 0,
8674     5, 5, 5, 5, 5, 5, 5, 5,
8675     5, 5, 4, 5, 5, 13, 0, 0,
8676     17, 13, 77, 77, 13, 77, 77, 77,
8677     45, 45, 45, 45, 45, 45, 45, 45,
8678     45, 45, 45, 45, 45, 45, 45, 45,
8679     77, 77, 77, 77, 77, 77, 77, 77,
8680     77, 77, 77, 77, 77, 77, 77, 77,
8681     77, 77, 45, 45, 45, 45, 45, 45,
8682     45, 45, 45, 45, 45, 45, 45, 45,
8683     45, 45, 45, 45, 45, 45, 45, 45,
8684     45, 45, 45, 45, 45, 45, 45, 45,
8685     45, 45, 45, 45, 45, 45, 45, 45,
8686     77, 45, 77, 77, 77, 77, 77, 77,
8687     77, 77, 77, 77, 45, 77, 45, 77,
8688     45, 45, 77, 77, 13, 13, 17, 17,
8689     17, 17, 17, 17, 17, 17, 17, 17,
8690     17, 17, 17, 17, 17, 13, 13, 17,
8691     17, 10, 17, 17, 17, 17, 0, 0,
8692     2, 2, 2, 2, 2, 2, 2, 2,
8693     2, 2, 45, 45, 45, 13, 13, 0,
8694 };
8695
8696 static const Q_UINT8 dir_07[] = {
8697     13, 13, 13, 13, 13, 13, 13, 13,
8698     13, 13, 13, 13, 13, 13, 0, 18,
8699     77, 17, 45, 45, 45, 77, 77, 77,
8700     77, 77, 45, 45, 45, 45, 77, 45,
8701     45, 45, 45, 45, 45, 45, 45, 45,
8702     77, 45, 77, 45, 77, 0, 0, 0,
8703     17, 17, 17, 17, 17, 17, 17, 17,
8704     17, 17, 17, 17, 17, 17, 17, 17,
8705     17, 17, 17, 17, 17, 17, 17, 17,
8706     17, 17, 17, 0, 0, 0, 0, 0,
8707     0, 0, 0, 0, 0, 0, 0, 0,
8708     0, 0, 0, 0, 0, 0, 0, 0,
8709     0, 0, 0, 0, 0, 0, 0, 0,
8710     0, 0, 0, 0, 0, 0, 0, 0,
8711     0, 0, 0, 0, 0, 0, 0, 0,
8712     0, 0, 0, 0, 0, 0, 0, 0,
8713     13, 13, 13, 13, 13, 13, 13, 13,
8714     13, 13, 13, 13, 13, 13, 13, 13,
8715     13, 13, 13, 13, 13, 13, 13, 13,
8716     13, 13, 13, 13, 13, 13, 13, 13,
8717     13, 13, 13, 13, 13, 13, 17, 17,
8718     17, 17, 17, 17, 17, 17, 17, 17,
8719     17, 0, 0, 0, 0, 0, 0, 0,
8720     0, 0, 0, 0, 0, 0, 0, 0,
8721     0, 0, 0, 0, 0, 0, 0, 0,
8722     0, 0, 0, 0, 0, 0, 0, 0,
8723     0, 0, 0, 0, 0, 0, 0, 0,
8724     0, 0, 0, 0, 0, 0, 0, 0,
8725     0, 0, 0, 0, 0, 0, 0, 0,
8726     0, 0, 0, 0, 0, 0, 0, 0,
8727     0, 0, 0, 0, 0, 0, 0, 0,
8728     0, 0, 0, 0, 0, 0, 0, 0,
8729 };
8730
8731 static const Q_UINT8 dir_09[] = {
8732     0, 17, 17, 0, 0, 0, 0, 0,
8733     0, 0, 0, 0, 0, 0, 0, 0,
8734     0, 0, 0, 0, 0, 0, 0, 0,
8735     0, 0, 0, 0, 0, 0, 0, 0,
8736     0, 0, 0, 0, 0, 0, 0, 0,
8737     0, 0, 0, 0, 0, 0, 0, 0,
8738     0, 0, 0, 0, 0, 0, 0, 0,
8739     0, 0, 0, 0, 17, 0, 0, 0,
8740     0, 17, 17, 17, 17, 17, 17, 17,
8741     17, 0, 0, 0, 0, 17, 0, 0,
8742     0, 17, 17, 17, 17, 0, 0, 0,
8743     0, 0, 0, 0, 0, 0, 0, 0,
8744     0, 0, 17, 17, 0, 0, 0, 0,
8745     0, 0, 0, 0, 0, 0, 0, 0,
8746     0, 0, 0, 0, 0, 0, 0, 0,
8747     0, 0, 0, 0, 0, 0, 0, 0,
8748     0, 17, 0, 0, 0, 0, 0, 0,
8749     0, 0, 0, 0, 0, 0, 0, 0,
8750     0, 0, 0, 0, 0, 0, 0, 0,
8751     0, 0, 0, 0, 0, 0, 0, 0,
8752     0, 0, 0, 0, 0, 0, 0, 0,
8753     0, 0, 0, 0, 0, 0, 0, 0,
8754     0, 0, 0, 0, 0, 0, 0, 0,
8755     0, 0, 0, 0, 17, 0, 0, 0,
8756     0, 17, 17, 17, 17, 0, 0, 0,
8757     0, 0, 0, 0, 0, 17, 0, 0,
8758     0, 0, 0, 0, 0, 0, 0, 0,
8759     0, 0, 0, 0, 0, 0, 0, 0,
8760     0, 0, 17, 17, 0, 0, 0, 0,
8761     0, 0, 0, 0, 0, 0, 0, 0,
8762     0, 0, 4, 4, 0, 0, 0, 0,
8763     0, 0, 0, 0, 0, 0, 0, 0,
8764 };
8765
8766 static const Q_UINT8 dir_0A[] = {
8767     0, 0, 17, 0, 0, 0, 0, 0,
8768     0, 0, 0, 0, 0, 0, 0, 0,
8769     0, 0, 0, 0, 0, 0, 0, 0,
8770     0, 0, 0, 0, 0, 0, 0, 0,
8771     0, 0, 0, 0, 0, 0, 0, 0,
8772     0, 0, 0, 0, 0, 0, 0, 0,
8773     0, 0, 0, 0, 0, 0, 0, 0,
8774     0, 0, 0, 0, 17, 0, 0, 0,
8775     0, 17, 17, 0, 0, 0, 0, 17,
8776     17, 0, 0, 17, 17, 17, 0, 0,
8777     0, 0, 0, 0, 0, 0, 0, 0,
8778     0, 0, 0, 0, 0, 0, 0, 0,
8779     0, 0, 0, 0, 0, 0, 0, 0,
8780     0, 0, 0, 0, 0, 0, 0, 0,
8781     17, 17, 0, 0, 0, 0, 0, 0,
8782     0, 0, 0, 0, 0, 0, 0, 0,
8783     0, 17, 17, 0, 0, 0, 0, 0,
8784     0, 0, 0, 0, 0, 0, 0, 0,
8785     0, 0, 0, 0, 0, 0, 0, 0,
8786     0, 0, 0, 0, 0, 0, 0, 0,
8787     0, 0, 0, 0, 0, 0, 0, 0,
8788     0, 0, 0, 0, 0, 0, 0, 0,
8789     0, 0, 0, 0, 0, 0, 0, 0,
8790     0, 0, 0, 0, 17, 0, 0, 0,
8791     0, 17, 17, 17, 17, 17, 0, 17,
8792     17, 0, 0, 0, 0, 17, 0, 0,
8793     0, 0, 0, 0, 0, 0, 0, 0,
8794     0, 0, 0, 0, 0, 0, 0, 0,
8795     0, 0, 0, 0, 0, 0, 0, 0,
8796     0, 0, 0, 0, 0, 0, 0, 0,
8797     0, 0, 0, 0, 0, 0, 0, 0,
8798     0, 0, 0, 0, 0, 0, 0, 0,
8799 };
8800
8801 static const Q_UINT8 dir_0B[] = {
8802     0, 17, 0, 0, 0, 0, 0, 0,
8803     0, 0, 0, 0, 0, 0, 0, 0,
8804     0, 0, 0, 0, 0, 0, 0, 0,
8805     0, 0, 0, 0, 0, 0, 0, 0,
8806     0, 0, 0, 0, 0, 0, 0, 0,
8807     0, 0, 0, 0, 0, 0, 0, 0,
8808     0, 0, 0, 0, 0, 0, 0, 0,
8809     0, 0, 0, 0, 17, 0, 0, 17,
8810     0, 17, 17, 17, 0, 0, 0, 0,
8811     0, 0, 0, 0, 0, 17, 0, 0,
8812     0, 0, 0, 0, 0, 0, 17, 0,
8813     0, 0, 0, 0, 0, 0, 0, 0,
8814     0, 0, 0, 0, 0, 0, 0, 0,
8815     0, 0, 0, 0, 0, 0, 0, 0,
8816     0, 0, 0, 0, 0, 0, 0, 0,
8817     0, 0, 0, 0, 0, 0, 0, 0,
8818     0, 0, 17, 0, 0, 0, 0, 0,
8819     0, 0, 0, 0, 0, 0, 0, 0,
8820     0, 0, 0, 0, 0, 0, 0, 0,
8821     0, 0, 0, 0, 0, 0, 0, 0,
8822     0, 0, 0, 0, 0, 0, 0, 0,
8823     0, 0, 0, 0, 0, 0, 0, 0,
8824     0, 0, 0, 0, 0, 0, 0, 0,
8825     0, 0, 0, 0, 0, 0, 0, 0,
8826     17, 0, 0, 0, 0, 0, 0, 0,
8827     0, 0, 0, 0, 0, 17, 0, 0,
8828     0, 0, 0, 0, 0, 0, 0, 0,
8829     0, 0, 0, 0, 0, 0, 0, 0,
8830     0, 0, 0, 0, 0, 0, 0, 0,
8831     0, 0, 0, 0, 0, 0, 0, 0,
8832     0, 0, 0, 0, 0, 0, 0, 0,
8833     0, 0, 0, 0, 0, 0, 0, 0,
8834 };
8835
8836 static const Q_UINT8 dir_0C[] = {
8837     0, 0, 0, 0, 0, 0, 0, 0,
8838     0, 0, 0, 0, 0, 0, 0, 0,
8839     0, 0, 0, 0, 0, 0, 0, 0,
8840     0, 0, 0, 0, 0, 0, 0, 0,
8841     0, 0, 0, 0, 0, 0, 0, 0,
8842     0, 0, 0, 0, 0, 0, 0, 0,
8843     0, 0, 0, 0, 0, 0, 0, 0,
8844     0, 0, 0, 0, 0, 0, 17, 17,
8845     17, 0, 0, 0, 0, 0, 17, 17,
8846     17, 0, 17, 17, 17, 17, 0, 0,
8847     0, 0, 0, 0, 0, 17, 17, 0,
8848     0, 0, 0, 0, 0, 0, 0, 0,
8849     0, 0, 0, 0, 0, 0, 0, 0,
8850     0, 0, 0, 0, 0, 0, 0, 0,
8851     0, 0, 0, 0, 0, 0, 0, 0,
8852     0, 0, 0, 0, 0, 0, 0, 0,
8853     0, 0, 0, 0, 0, 0, 0, 0,
8854     0, 0, 0, 0, 0, 0, 0, 0,
8855     0, 0, 0, 0, 0, 0, 0, 0,
8856     0, 0, 0, 0, 0, 0, 0, 0,
8857     0, 0, 0, 0, 0, 0, 0, 0,
8858     0, 0, 0, 0, 0, 0, 0, 0,
8859     0, 0, 0, 0, 0, 0, 0, 0,
8860     0, 0, 0, 0, 0, 0, 0, 17,
8861     0, 0, 0, 0, 0, 0, 17, 0,
8862     0, 0, 0, 0, 17, 17, 0, 0,
8863     0, 0, 0, 0, 0, 0, 0, 0,
8864     0, 0, 0, 0, 0, 0, 0, 0,
8865     0, 0, 0, 0, 0, 0, 0, 0,
8866     0, 0, 0, 0, 0, 0, 0, 0,
8867     0, 0, 0, 0, 0, 0, 0, 0,
8868     0, 0, 0, 0, 0, 0, 0, 0,
8869 };
8870
8871 static const Q_UINT8 dir_0D[] = {
8872     0, 0, 0, 0, 0, 0, 0, 0,
8873     0, 0, 0, 0, 0, 0, 0, 0,
8874     0, 0, 0, 0, 0, 0, 0, 0,
8875     0, 0, 0, 0, 0, 0, 0, 0,
8876     0, 0, 0, 0, 0, 0, 0, 0,
8877     0, 0, 0, 0, 0, 0, 0, 0,
8878     0, 0, 0, 0, 0, 0, 0, 0,
8879     0, 0, 0, 0, 0, 0, 0, 0,
8880     0, 17, 17, 17, 0, 0, 0, 0,
8881     0, 0, 0, 0, 0, 17, 0, 0,
8882     0, 0, 0, 0, 0, 0, 0, 0,
8883     0, 0, 0, 0, 0, 0, 0, 0,
8884     0, 0, 0, 0, 0, 0, 0, 0,
8885     0, 0, 0, 0, 0, 0, 0, 0,
8886     0, 0, 0, 0, 0, 0, 0, 0,
8887     0, 0, 0, 0, 0, 0, 0, 0,
8888     0, 0, 0, 0, 0, 0, 0, 0,
8889     0, 0, 0, 0, 0, 0, 0, 0,
8890     0, 0, 0, 0, 0, 0, 0, 0,
8891     0, 0, 0, 0, 0, 0, 0, 0,
8892     0, 0, 0, 0, 0, 0, 0, 0,
8893     0, 0, 0, 0, 0, 0, 0, 0,
8894     0, 0, 0, 0, 0, 0, 0, 0,
8895     0, 0, 0, 0, 0, 0, 0, 0,
8896     0, 0, 0, 0, 0, 0, 0, 0,
8897     0, 0, 17, 0, 0, 0, 0, 0,
8898     0, 0, 17, 17, 17, 0, 17, 0,
8899     0, 0, 0, 0, 0, 0, 0, 0,
8900     0, 0, 0, 0, 0, 0, 0, 0,
8901     0, 0, 0, 0, 0, 0, 0, 0,
8902     0, 0, 0, 0, 0, 0, 0, 0,
8903     0, 0, 0, 0, 0, 0, 0, 0,
8904 };
8905
8906 static const Q_UINT8 dir_0E[] = {
8907     0, 0, 0, 0, 0, 0, 0, 0,
8908     0, 0, 0, 0, 0, 0, 0, 0,
8909     0, 0, 0, 0, 0, 0, 0, 0,
8910     0, 0, 0, 0, 0, 0, 0, 0,
8911     0, 0, 0, 0, 0, 0, 0, 0,
8912     0, 0, 0, 0, 0, 0, 0, 0,
8913     0, 17, 0, 0, 17, 17, 17, 17,
8914     17, 17, 17, 0, 0, 0, 0, 4,
8915     0, 0, 0, 0, 0, 0, 0, 17,
8916     17, 17, 17, 17, 17, 17, 17, 0,
8917     0, 0, 0, 0, 0, 0, 0, 0,
8918     0, 0, 0, 0, 0, 0, 0, 0,
8919     0, 0, 0, 0, 0, 0, 0, 0,
8920     0, 0, 0, 0, 0, 0, 0, 0,
8921     0, 0, 0, 0, 0, 0, 0, 0,
8922     0, 0, 0, 0, 0, 0, 0, 0,
8923     0, 0, 0, 0, 0, 0, 0, 0,
8924     0, 0, 0, 0, 0, 0, 0, 0,
8925     0, 0, 0, 0, 0, 0, 0, 0,
8926     0, 0, 0, 0, 0, 0, 0, 0,
8927     0, 0, 0, 0, 0, 0, 0, 0,
8928     0, 0, 0, 0, 0, 0, 0, 0,
8929     0, 17, 0, 0, 17, 17, 17, 17,
8930     17, 17, 0, 17, 17, 0, 0, 0,
8931     0, 0, 0, 0, 0, 0, 0, 0,
8932     17, 17, 17, 17, 17, 17, 0, 0,
8933     0, 0, 0, 0, 0, 0, 0, 0,
8934     0, 0, 0, 0, 0, 0, 0, 0,
8935     0, 0, 0, 0, 0, 0, 0, 0,
8936     0, 0, 0, 0, 0, 0, 0, 0,
8937     0, 0, 0, 0, 0, 0, 0, 0,
8938     0, 0, 0, 0, 0, 0, 0, 0,
8939 };
8940
8941 static const Q_UINT8 dir_0F[] = {
8942     0, 0, 0, 0, 0, 0, 0, 0,
8943     0, 0, 0, 0, 0, 0, 0, 0,
8944     0, 0, 0, 0, 0, 0, 0, 0,
8945     17, 17, 0, 0, 0, 0, 0, 0,
8946     0, 0, 0, 0, 0, 0, 0, 0,
8947     0, 0, 0, 0, 0, 0, 0, 0,
8948     0, 0, 0, 0, 0, 17, 0, 17,
8949     0, 17, 10, 10, 10, 10, 0, 0,
8950     0, 0, 0, 0, 0, 0, 0, 0,
8951     0, 0, 0, 0, 0, 0, 0, 0,
8952     0, 0, 0, 0, 0, 0, 0, 0,
8953     0, 0, 0, 0, 0, 0, 0, 0,
8954     0, 0, 0, 0, 0, 0, 0, 0,
8955     0, 0, 0, 0, 0, 0, 0, 0,
8956     0, 17, 17, 17, 17, 17, 17, 17,
8957     17, 17, 17, 17, 17, 17, 17, 0,
8958     17, 17, 17, 17, 17, 0, 17, 17,
8959     0, 0, 0, 0, 0, 0, 0, 0,
8960     17, 17, 17, 17, 17, 17, 17, 17,
8961     0, 17, 17, 17, 17, 17, 17, 17,
8962     17, 17, 17, 17, 17, 17, 17, 17,
8963     17, 17, 17, 17, 17, 17, 17, 17,
8964     17, 17, 17, 17, 17, 17, 17, 17,
8965     17, 17, 17, 17, 17, 0, 0, 0,
8966     0, 0, 0, 0, 0, 0, 17, 0,
8967     0, 0, 0, 0, 0, 0, 0, 0,
8968     0, 0, 0, 0, 0, 0, 0, 0,
8969     0, 0, 0, 0, 0, 0, 0, 0,
8970     0, 0, 0, 0, 0, 0, 0, 0,
8971     0, 0, 0, 0, 0, 0, 0, 0,
8972     0, 0, 0, 0, 0, 0, 0, 0,
8973     0, 0, 0, 0, 0, 0, 0, 0,
8974 };
8975
8976 static const Q_UINT8 dir_10[] = {
8977     0, 0, 0, 0, 0, 0, 0, 0,
8978     0, 0, 0, 0, 0, 0, 0, 0,
8979     0, 0, 0, 0, 0, 0, 0, 0,
8980     0, 0, 0, 0, 0, 0, 0, 0,
8981     0, 0, 0, 0, 0, 0, 0, 0,
8982     0, 0, 0, 0, 0, 17, 17, 17,
8983     17, 0, 17, 0, 0, 0, 17, 17,
8984     0, 17, 0, 0, 0, 0, 0, 0,
8985     0, 0, 0, 0, 0, 0, 0, 0,
8986     0, 0, 0, 0, 0, 0, 0, 0,
8987     0, 0, 0, 0, 0, 0, 0, 0,
8988     17, 17, 0, 0, 0, 0, 0, 0,
8989     0, 0, 0, 0, 0, 0, 0, 0,
8990     0, 0, 0, 0, 0, 0, 0, 0,
8991     0, 0, 0, 0, 0, 0, 0, 0,
8992     0, 0, 0, 0, 0, 0, 0, 0,
8993     0, 0, 0, 0, 0, 0, 0, 0,
8994     0, 0, 0, 0, 0, 0, 0, 0,
8995     0, 0, 0, 0, 0, 0, 0, 0,
8996     0, 0, 0, 0, 0, 0, 0, 0,
8997     0, 0, 0, 0, 0, 0, 0, 0,
8998     0, 0, 0, 0, 0, 0, 0, 0,
8999     0, 0, 0, 0, 0, 0, 0, 0,
9000     0, 0, 0, 0, 0, 0, 0, 0,
9001     0, 0, 0, 0, 0, 0, 0, 0,
9002     0, 0, 0, 0, 0, 0, 0, 0,
9003     0, 0, 0, 0, 0, 0, 0, 0,
9004     0, 0, 0, 0, 0, 0, 0, 0,
9005     0, 0, 0, 0, 0, 0, 0, 0,
9006     0, 0, 0, 0, 0, 0, 0, 0,
9007     0, 0, 0, 0, 0, 0, 0, 0,
9008     0, 0, 0, 0, 0, 0, 0, 0,
9009 };
9010
9011 static const Q_UINT8 dir_16[] = {
9012     0, 0, 0, 0, 0, 0, 0, 0,
9013     0, 0, 0, 0, 0, 0, 0, 0,
9014     0, 0, 0, 0, 0, 0, 0, 0,
9015     0, 0, 0, 0, 0, 0, 0, 0,
9016     0, 0, 0, 0, 0, 0, 0, 0,
9017     0, 0, 0, 0, 0, 0, 0, 0,
9018     0, 0, 0, 0, 0, 0, 0, 0,
9019     0, 0, 0, 0, 0, 0, 0, 0,
9020     0, 0, 0, 0, 0, 0, 0, 0,
9021     0, 0, 0, 0, 0, 0, 0, 0,
9022     0, 0, 0, 0, 0, 0, 0, 0,
9023     0, 0, 0, 0, 0, 0, 0, 0,
9024     0, 0, 0, 0, 0, 0, 0, 0,
9025     0, 0, 0, 0, 0, 0, 0, 0,
9026     0, 0, 0, 0, 0, 0, 0, 0,
9027     0, 0, 0, 0, 0, 0, 0, 0,
9028     9, 0, 0, 0, 0, 0, 0, 0,
9029     0, 0, 0, 0, 0, 0, 0, 0,
9030     0, 0, 0, 0, 0, 0, 0, 0,
9031     0, 0, 0, 10, 10, 0, 0, 0,
9032     0, 0, 0, 0, 0, 0, 0, 0,
9033     0, 0, 0, 0, 0, 0, 0, 0,
9034     0, 0, 0, 0, 0, 0, 0, 0,
9035     0, 0, 0, 0, 0, 0, 0, 0,
9036     0, 0, 0, 0, 0, 0, 0, 0,
9037     0, 0, 0, 0, 0, 0, 0, 0,
9038     0, 0, 0, 0, 0, 0, 0, 0,
9039     0, 0, 0, 0, 0, 0, 0, 0,
9040     0, 0, 0, 0, 0, 0, 0, 0,
9041     0, 0, 0, 0, 0, 0, 0, 0,
9042     0, 0, 0, 0, 0, 0, 0, 0,
9043     0, 0, 0, 0, 0, 0, 0, 0,
9044 };
9045
9046 static const Q_UINT8 dir_17[] = {
9047     0, 0, 0, 0, 0, 0, 0, 0,
9048     0, 0, 0, 0, 0, 0, 0, 0,
9049     0, 0, 0, 0, 0, 0, 0, 0,
9050     0, 0, 0, 0, 0, 0, 0, 0,
9051     0, 0, 0, 0, 0, 0, 0, 0,
9052     0, 0, 0, 0, 0, 0, 0, 0,
9053     0, 0, 0, 0, 0, 0, 0, 0,
9054     0, 0, 0, 0, 0, 0, 0, 0,
9055     0, 0, 0, 0, 0, 0, 0, 0,
9056     0, 0, 0, 0, 0, 0, 0, 0,
9057     0, 0, 0, 0, 0, 0, 0, 0,
9058     0, 0, 0, 0, 0, 0, 0, 0,
9059     0, 0, 0, 0, 0, 0, 0, 0,
9060     0, 0, 0, 0, 0, 0, 0, 0,
9061     0, 0, 0, 0, 0, 0, 0, 0,
9062     0, 0, 0, 0, 0, 0, 0, 0,
9063     0, 0, 0, 0, 0, 0, 0, 0,
9064     0, 0, 0, 0, 0, 0, 0, 0,
9065     0, 0, 0, 0, 0, 0, 0, 0,
9066     0, 0, 0, 0, 0, 0, 0, 0,
9067     0, 0, 0, 0, 0, 0, 0, 0,
9068     0, 0, 0, 0, 0, 0, 0, 0,
9069     0, 0, 0, 0, 0, 0, 0, 17,
9070     17, 17, 17, 17, 17, 17, 0, 0,
9071     0, 0, 0, 0, 0, 0, 17, 0,
9072     0, 17, 17, 17, 17, 17, 17, 17,
9073     17, 17, 17, 17, 0, 0, 0, 0,
9074     0, 0, 0, 4, 0, 0, 0, 0,
9075     0, 0, 0, 0, 0, 0, 0, 0,
9076     0, 0, 0, 0, 0, 0, 0, 0,
9077     0, 0, 0, 0, 0, 0, 0, 0,
9078     0, 0, 0, 0, 0, 0, 0, 0,
9079 };
9080
9081 static const Q_UINT8 dir_18[] = {
9082     10, 10, 10, 10, 10, 10, 10, 10,
9083     10, 10, 10, 18, 18, 18, 18, 0,
9084     0, 0, 0, 0, 0, 0, 0, 0,
9085     0, 0, 0, 0, 0, 0, 0, 0,
9086     0, 0, 0, 0, 0, 0, 0, 0,
9087     0, 0, 0, 0, 0, 0, 0, 0,
9088     0, 0, 0, 0, 0, 0, 0, 0,
9089     0, 0, 0, 0, 0, 0, 0, 0,
9090     0, 0, 0, 0, 0, 0, 0, 0,
9091     0, 0, 0, 0, 0, 0, 0, 0,
9092     0, 0, 0, 0, 0, 0, 0, 0,
9093     0, 0, 0, 0, 0, 0, 0, 0,
9094     0, 0, 0, 0, 0, 0, 0, 0,
9095     0, 0, 0, 0, 0, 0, 0, 0,
9096     0, 0, 0, 0, 0, 0, 0, 0,
9097     0, 0, 0, 0, 0, 0, 0, 0,
9098     0, 0, 0, 0, 0, 0, 0, 0,
9099     0, 0, 0, 0, 0, 0, 0, 0,
9100     0, 0, 0, 0, 0, 0, 0, 0,
9101     0, 0, 0, 0, 0, 0, 0, 0,
9102     0, 0, 0, 0, 0, 0, 0, 0,
9103     0, 17, 0, 0, 0, 0, 0, 0,
9104     0, 0, 0, 0, 0, 0, 0, 0,
9105     0, 0, 0, 0, 0, 0, 0, 0,
9106     0, 0, 0, 0, 0, 0, 0, 0,
9107     0, 0, 0, 0, 0, 0, 0, 0,
9108     0, 0, 0, 0, 0, 0, 0, 0,
9109     0, 0, 0, 0, 0, 0, 0, 0,
9110     0, 0, 0, 0, 0, 0, 0, 0,
9111     0, 0, 0, 0, 0, 0, 0, 0,
9112     0, 0, 0, 0, 0, 0, 0, 0,
9113     0, 0, 0, 0, 0, 0, 0, 0,
9114 };
9115
9116 static const Q_UINT8 dir_1F[] = {
9117     0, 0, 0, 0, 0, 0, 0, 0,
9118     0, 0, 0, 0, 0, 0, 0, 0,
9119     0, 0, 0, 0, 0, 0, 0, 0,
9120     0, 0, 0, 0, 0, 0, 0, 0,
9121     0, 0, 0, 0, 0, 0, 0, 0,
9122     0, 0, 0, 0, 0, 0, 0, 0,
9123     0, 0, 0, 0, 0, 0, 0, 0,
9124     0, 0, 0, 0, 0, 0, 0, 0,
9125     0, 0, 0, 0, 0, 0, 0, 0,
9126     0, 0, 0, 0, 0, 0, 0, 0,
9127     0, 0, 0, 0, 0, 0, 0, 0,
9128     0, 0, 0, 0, 0, 0, 0, 0,
9129     0, 0, 0, 0, 0, 0, 0, 0,
9130     0, 0, 0, 0, 0, 0, 0, 0,
9131     0, 0, 0, 0, 0, 0, 0, 0,
9132     0, 0, 0, 0, 0, 0, 0, 0,
9133     0, 0, 0, 0, 0, 0, 0, 0,
9134     0, 0, 0, 0, 0, 0, 0, 0,
9135     0, 0, 0, 0, 0, 0, 0, 0,
9136     0, 0, 0, 0, 0, 0, 0, 0,
9137     0, 0, 0, 0, 0, 0, 0, 0,
9138     0, 0, 0, 0, 0, 0, 0, 0,
9139     0, 0, 0, 0, 0, 0, 0, 0,
9140     0, 0, 0, 0, 0, 10, 0, 10,
9141     10, 10, 0, 0, 0, 0, 0, 0,
9142     0, 0, 0, 0, 0, 10, 10, 10,
9143     0, 0, 0, 0, 0, 0, 0, 0,
9144     0, 0, 0, 0, 0, 10, 10, 10,
9145     0, 0, 0, 0, 0, 0, 0, 0,
9146     0, 0, 0, 0, 0, 10, 10, 10,
9147     0, 0, 0, 0, 0, 0, 0, 0,
9148     0, 0, 0, 0, 0, 10, 10, 0,
9149 };
9150
9151 static const Q_UINT8 dir_20[] = {
9152     9, 9, 9, 9, 9, 9, 9, 9,
9153     9, 9, 9, 18, 18, 18, 0, 1,
9154     10, 10, 10, 10, 10, 10, 10, 10,
9155     10, 10, 10, 10, 10, 10, 10, 10,
9156     10, 10, 10, 10, 10, 10, 10, 10,
9157     9, 7, 11, 14, 16, 12, 15, 9,
9158     4, 4, 4, 4, 4, 10, 10, 10,
9159     10, 138, 138, 10, 10, 10, 10, 10,
9160     10, 10, 10, 10, 10, 138, 138, 0,
9161     10, 10, 10, 10, 10, 10, 0, 0,
9162     0, 0, 0, 0, 0, 0, 0, 0,
9163     0, 0, 0, 0, 0, 0, 0, 0,
9164     0, 0, 0, 0, 0, 0, 0, 0,
9165     0, 0, 18, 18, 18, 18, 18, 18,
9166     2, 0, 0, 0, 2, 2, 2, 2,
9167     2, 2, 4, 4, 10, 138, 138, 0,
9168     2, 2, 2, 2, 2, 2, 2, 2,
9169     2, 2, 4, 4, 10, 138, 138, 0,
9170     0, 0, 0, 0, 0, 0, 0, 0,
9171     0, 0, 0, 0, 0, 0, 0, 0,
9172     4, 4, 4, 4, 4, 4, 4, 4,
9173     4, 4, 4, 4, 4, 4, 4, 4,
9174     0, 0, 0, 0, 0, 0, 0, 0,
9175     0, 0, 0, 0, 0, 0, 0, 0,
9176     0, 0, 0, 0, 0, 0, 0, 0,
9177     0, 0, 0, 0, 0, 0, 0, 0,
9178     17, 17, 17, 17, 17, 17, 17, 17,
9179     17, 17, 17, 17, 17, 17, 17, 17,
9180     17, 17, 17, 17, 0, 0, 0, 0,
9181     0, 0, 0, 0, 0, 0, 0, 0,
9182     0, 0, 0, 0, 0, 0, 0, 0,
9183     0, 0, 0, 0, 0, 0, 0, 0,
9184 };
9185
9186 static const Q_UINT8 dir_21[] = {
9187     10, 10, 0, 10, 10, 10, 10, 0,
9188     10, 10, 0, 0, 0, 0, 0, 0,
9189     0, 0, 0, 0, 10, 0, 10, 10,
9190     10, 0, 0, 0, 0, 0, 10, 10,
9191     10, 10, 10, 10, 0, 10, 0, 10,
9192     0, 10, 0, 0, 0, 0, 4, 0,
9193     0, 0, 10, 0, 0, 0, 0, 0,
9194     0, 0, 10, 0, 0, 0, 0, 0,
9195     0, 0, 0, 0, 0, 0, 0, 0,
9196     0, 0, 0, 0, 0, 0, 0, 0,
9197     0, 0, 0, 10, 10, 10, 10, 10,
9198     10, 10, 10, 10, 10, 10, 10, 10,
9199     0, 0, 0, 0, 0, 0, 0, 0,
9200     0, 0, 0, 0, 0, 0, 0, 0,
9201     0, 0, 0, 0, 0, 0, 0, 0,
9202     0, 0, 0, 0, 0, 0, 0, 0,
9203     0, 0, 0, 0, 0, 0, 0, 0,
9204     0, 0, 0, 0, 0, 0, 0, 0,
9205     10, 10, 10, 10, 10, 10, 10, 10,
9206     10, 10, 10, 10, 10, 10, 10, 10,
9207     10, 10, 10, 10, 10, 10, 10, 10,
9208     10, 10, 10, 10, 10, 10, 10, 10,
9209     10, 10, 10, 10, 10, 10, 10, 10,
9210     10, 10, 10, 10, 10, 10, 10, 10,
9211     10, 10, 10, 10, 10, 10, 10, 10,
9212     10, 10, 10, 10, 10, 10, 10, 10,
9213     10, 10, 10, 10, 10, 10, 10, 10,
9214     10, 10, 10, 10, 10, 10, 10, 10,
9215     10, 10, 10, 10, 10, 10, 10, 10,
9216     10, 10, 10, 10, 10, 10, 10, 10,
9217     10, 10, 10, 10, 0, 0, 0, 0,
9218     0, 0, 0, 0, 0, 0, 0, 0,
9219 };
9220
9221 static const Q_UINT8 dir_22[] = {
9222     10, 138, 138, 138, 138, 10, 10, 10,
9223     138, 138, 138, 138, 138, 138, 10, 10,
9224     10, 138, 4, 4, 10, 138, 138, 10,
9225     10, 10, 138, 138, 138, 138, 10, 138,
9226     138, 138, 138, 10, 138, 10, 138, 10,
9227     10, 10, 10, 138, 138, 138, 138, 138,
9228     138, 138, 138, 138, 10, 10, 10, 10,
9229     10, 138, 10, 138, 138, 138, 138, 138,
9230     138, 138, 138, 138, 138, 138, 138, 138,
9231     138, 138, 138, 138, 138, 10, 10, 10,
9232     10, 10, 138, 138, 138, 138, 10, 10,
9233     10, 10, 10, 10, 10, 10, 10, 138,
9234     138, 10, 138, 10, 138, 138, 138, 138,
9235     138, 138, 138, 138, 10, 10, 138, 138,
9236     138, 138, 138, 138, 138, 138, 138, 138,
9237     138, 138, 138, 138, 138, 138, 138, 138,
9238     138, 138, 138, 138, 138, 138, 138, 138,
9239     138, 138, 138, 138, 138, 10, 10, 138,
9240     138, 138, 138, 10, 10, 10, 10, 10,
9241     138, 10, 10, 10, 10, 10, 10, 10,
9242     10, 10, 138, 138, 10, 10, 138, 138,
9243     138, 138, 138, 138, 138, 138, 138, 138,
9244     138, 138, 138, 138, 138, 138, 138, 138,
9245     138, 10, 10, 10, 10, 10, 138, 138,
9246     10, 10, 10, 10, 10, 10, 10, 10,
9247     10, 138, 138, 138, 138, 138, 10, 10,
9248     138, 138, 10, 10, 10, 10, 138, 138,
9249     138, 138, 138, 138, 138, 138, 138, 138,
9250     138, 138, 138, 138, 138, 138, 138, 138,
9251     138, 138, 138, 138, 138, 138, 10, 10,
9252     138, 138, 0, 0, 0, 0, 0, 0,
9253     0, 0, 0, 0, 0, 0, 0, 0,
9254 };
9255
9256 static const Q_UINT8 dir_23[] = {
9257     10, 10, 10, 10, 10, 10, 10, 10,
9258     138, 138, 138, 138, 10, 10, 10, 10,
9259     10, 10, 10, 10, 10, 10, 10, 10,
9260     10, 10, 10, 10, 10, 10, 10, 10,
9261     138, 138, 10, 10, 10, 10, 10, 10,
9262     10, 138, 138, 10, 10, 10, 10, 10,
9263     10, 10, 10, 10, 10, 10, 0, 0,
9264     0, 0, 0, 0, 0, 0, 0, 0,
9265     0, 0, 0, 0, 0, 0, 0, 0,
9266     0, 0, 0, 0, 0, 0, 0, 0,
9267     0, 0, 0, 0, 0, 0, 0, 0,
9268     0, 0, 0, 0, 0, 0, 0, 0,
9269     0, 0, 0, 0, 0, 0, 0, 0,
9270     0, 0, 0, 0, 0, 0, 0, 0,
9271     0, 0, 0, 0, 0, 0, 0, 0,
9272     0, 0, 0, 10, 0, 10, 10, 10,
9273     10, 10, 10, 10, 10, 10, 10, 10,
9274     10, 10, 10, 10, 10, 10, 10, 10,
9275     10, 10, 10, 10, 10, 0, 10, 10,
9276     10, 10, 10, 0, 0, 0, 0, 0,
9277     0, 0, 0, 0, 0, 0, 0, 0,
9278     0, 0, 0, 0, 0, 0, 0, 0,
9279     0, 0, 0, 0, 0, 0, 0, 0,
9280     0, 0, 0, 0, 0, 0, 0, 0,
9281     0, 0, 0, 0, 0, 0, 0, 0,
9282     0, 0, 0, 0, 0, 0, 0, 0,
9283     0, 0, 0, 0, 0, 0, 0, 0,
9284     0, 0, 0, 0, 0, 0, 0, 0,
9285     0, 0, 0, 0, 0, 0, 0, 0,
9286     0, 0, 0, 0, 0, 0, 0, 0,
9287     0, 0, 0, 0, 0, 0, 0, 0,
9288     0, 0, 0, 0, 0, 0, 0, 0,
9289 };
9290
9291 static const Q_UINT8 dir_24[] = {
9292     10, 10, 10, 10, 10, 10, 10, 10,
9293     10, 10, 10, 10, 10, 10, 10, 10,
9294     10, 10, 10, 10, 10, 10, 10, 10,
9295     10, 10, 10, 10, 10, 10, 10, 10,
9296     10, 10, 10, 10, 10, 10, 10, 0,
9297     0, 0, 0, 0, 0, 0, 0, 0,
9298     0, 0, 0, 0, 0, 0, 0, 0,
9299     0, 0, 0, 0, 0, 0, 0, 0,
9300     10, 10, 10, 10, 10, 10, 10, 10,
9301     10, 10, 10, 0, 0, 0, 0, 0,
9302     0, 0, 0, 0, 0, 0, 0, 0,
9303     0, 0, 0, 0, 0, 0, 0, 0,
9304     2, 2, 2, 2, 2, 2, 2, 2,
9305     2, 2, 2, 2, 2, 2, 2, 2,
9306     2, 2, 2, 2, 2, 2, 2, 2,
9307     2, 2, 2, 2, 2, 2, 2, 2,
9308     2, 2, 2, 2, 2, 2, 2, 2,
9309     2, 2, 2, 2, 2, 2, 2, 2,
9310     2, 2, 2, 2, 2, 2, 2, 2,
9311     2, 2, 2, 2, 0, 0, 0, 0,
9312     0, 0, 0, 0, 0, 0, 0, 0,
9313     0, 0, 0, 0, 0, 0, 0, 0,
9314     0, 0, 0, 0, 0, 0, 0, 0,
9315     0, 0, 0, 0, 0, 0, 0, 0,
9316     0, 0, 0, 0, 0, 0, 0, 0,
9317     0, 0, 0, 0, 0, 0, 0, 0,
9318     0, 0, 0, 0, 0, 0, 0, 0,
9319     0, 0, 0, 0, 0, 0, 0, 0,
9320     0, 0, 0, 0, 0, 0, 0, 0,
9321     0, 0, 2, 0, 0, 0, 0, 0,
9322     0, 0, 0, 0, 0, 0, 0, 0,
9323     0, 0, 0, 0, 0, 0, 0, 0,
9324 };
9325
9326 static const Q_UINT8 dir_25[] = {
9327     10, 10, 10, 10, 10, 10, 10, 10,
9328     10, 10, 10, 10, 10, 10, 10, 10,
9329     10, 10, 10, 10, 10, 10, 10, 10,
9330     10, 10, 10, 10, 10, 10, 10, 10,
9331     10, 10, 10, 10, 10, 10, 10, 10,
9332     10, 10, 10, 10, 10, 10, 10, 10,
9333     10, 10, 10, 10, 10, 10, 10, 10,
9334     10, 10, 10, 10, 10, 10, 10, 10,
9335     10, 10, 10, 10, 10, 10, 10, 10,
9336     10, 10, 10, 10, 10, 10, 10, 10,
9337     10, 10, 10, 10, 10, 10, 10, 10,
9338     10, 10, 10, 10, 10, 10, 10, 10,
9339     10, 10, 10, 10, 10, 10, 10, 10,
9340     10, 10, 10, 10, 10, 10, 10, 10,
9341     10, 10, 10, 10, 10, 10, 10, 10,
9342     10, 10, 10, 10, 10, 10, 10, 10,
9343     10, 10, 10, 10, 10, 10, 10, 10,
9344     10, 10, 10, 10, 10, 10, 10, 10,
9345     10, 10, 10, 10, 10, 10, 0, 0,
9346     0, 0, 0, 0, 0, 0, 0, 0,
9347     10, 10, 10, 10, 10, 10, 10, 10,
9348     10, 10, 10, 10, 10, 10, 10, 10,
9349     10, 10, 10, 10, 10, 10, 10, 10,
9350     10, 10, 10, 10, 10, 10, 10, 10,
9351     10, 10, 10, 10, 10, 10, 10, 10,
9352     10, 10, 10, 10, 10, 10, 10, 10,
9353     10, 10, 10, 10, 10, 10, 10, 10,
9354     10, 10, 10, 10, 10, 10, 10, 10,
9355     10, 10, 10, 10, 10, 10, 10, 10,
9356     10, 10, 10, 10, 10, 10, 10, 10,
9357     10, 10, 10, 10, 10, 10, 10, 10,
9358     0, 0, 0, 0, 0, 0, 0, 0,
9359 };
9360
9361 static const Q_UINT8 dir_26[] = {
9362     10, 10, 10, 10, 10, 10, 10, 10,
9363     10, 10, 10, 10, 10, 10, 10, 10,
9364     10, 10, 10, 10, 0, 0, 0, 0,
9365     0, 10, 10, 10, 10, 10, 10, 10,
9366     10, 10, 10, 10, 10, 10, 10, 10,
9367     10, 10, 10, 10, 10, 10, 10, 10,
9368     10, 10, 10, 10, 10, 10, 10, 10,
9369     10, 10, 10, 10, 10, 10, 10, 10,
9370     10, 10, 10, 10, 10, 10, 10, 10,
9371     10, 10, 10, 10, 10, 10, 10, 10,
9372     10, 10, 10, 10, 10, 10, 10, 10,
9373     10, 10, 10, 10, 10, 10, 10, 10,
9374     10, 10, 10, 10, 10, 10, 10, 10,
9375     10, 10, 10, 10, 10, 10, 10, 10,
9376     10, 10, 0, 0, 0, 0, 0, 0,
9377     0, 0, 0, 0, 0, 0, 0, 0,
9378     0, 0, 0, 0, 0, 0, 0, 0,
9379     0, 0, 0, 0, 0, 0, 0, 0,
9380     0, 0, 0, 0, 0, 0, 0, 0,
9381     0, 0, 0, 0, 0, 0, 0, 0,
9382     0, 0, 0, 0, 0, 0, 0, 0,
9383     0, 0, 0, 0, 0, 0, 0, 0,
9384     0, 0, 0, 0, 0, 0, 0, 0,
9385     0, 0, 0, 0, 0, 0, 0, 0,
9386     0, 0, 0, 0, 0, 0, 0, 0,
9387     0, 0, 0, 0, 0, 0, 0, 0,
9388     0, 0, 0, 0, 0, 0, 0, 0,
9389     0, 0, 0, 0, 0, 0, 0, 0,
9390     0, 0, 0, 0, 0, 0, 0, 0,
9391     0, 0, 0, 0, 0, 0, 0, 0,
9392     0, 0, 0, 0, 0, 0, 0, 0,
9393     0, 0, 0, 0, 0, 0, 0, 0,
9394 };
9395
9396 static const Q_UINT8 dir_27[] = {
9397     0, 10, 10, 10, 10, 0, 10, 10,
9398     10, 10, 0, 0, 10, 10, 10, 10,
9399     10, 10, 10, 10, 10, 10, 10, 10,
9400     10, 10, 10, 10, 10, 10, 10, 10,
9401     10, 10, 10, 10, 10, 10, 10, 10,
9402     0, 10, 10, 10, 10, 10, 10, 10,
9403     10, 10, 10, 10, 10, 10, 10, 10,
9404     10, 10, 10, 10, 10, 10, 10, 10,
9405     10, 10, 10, 10, 10, 10, 10, 10,
9406     10, 10, 10, 10, 0, 10, 0, 10,
9407     10, 10, 10, 0, 0, 0, 10, 0,
9408     10, 10, 10, 10, 10, 10, 10, 0,
9409     0, 10, 10, 10, 10, 10, 10, 10,
9410     0, 0, 0, 0, 0, 0, 0, 0,
9411     0, 0, 0, 0, 0, 0, 10, 10,
9412     10, 10, 10, 10, 10, 10, 10, 10,
9413     10, 10, 10, 10, 10, 10, 10, 10,
9414     10, 10, 10, 10, 10, 10, 10, 10,
9415     10, 10, 10, 10, 10, 0, 0, 0,
9416     10, 10, 10, 10, 10, 10, 10, 10,
9417     10, 10, 10, 10, 10, 10, 10, 10,
9418     10, 10, 10, 10, 10, 10, 10, 10,
9419     0, 10, 10, 10, 10, 10, 10, 10,
9420     10, 10, 10, 10, 10, 10, 10, 0,
9421     0, 0, 0, 0, 0, 0, 0, 0,
9422     0, 0, 0, 0, 0, 0, 0, 0,
9423     0, 0, 0, 0, 0, 0, 0, 0,
9424     0, 0, 0, 0, 0, 0, 0, 0,
9425     0, 0, 0, 0, 0, 0, 0, 0,
9426     0, 0, 0, 0, 0, 0, 0, 0,
9427     0, 0, 0, 0, 0, 0, 0, 0,
9428     0, 0, 0, 0, 0, 0, 0, 0,
9429 };
9430
9431 static const Q_UINT8 dir_28[] = {
9432     10, 10, 10, 10, 10, 10, 10, 10,
9433     10, 10, 10, 10, 10, 10, 10, 10,
9434     10, 10, 10, 10, 10, 10, 10, 10,
9435     10, 10, 10, 10, 10, 10, 10, 10,
9436     10, 10, 10, 10, 10, 10, 10, 10,
9437     10, 10, 10, 10, 10, 10, 10, 10,
9438     10, 10, 10, 10, 10, 10, 10, 10,
9439     10, 10, 10, 10, 10, 10, 10, 10,
9440     10, 10, 10, 10, 10, 10, 10, 10,
9441     10, 10, 10, 10, 10, 10, 10, 10,
9442     10, 10, 10, 10, 10, 10, 10, 10,
9443     10, 10, 10, 10, 10, 10, 10, 10,
9444     10, 10, 10, 10, 10, 10, 10, 10,
9445     10, 10, 10, 10, 10, 10, 10, 10,
9446     10, 10, 10, 10, 10, 10, 10, 10,
9447     10, 10, 10, 10, 10, 10, 10, 10,
9448     10, 10, 10, 10, 10, 10, 10, 10,
9449     10, 10, 10, 10, 10, 10, 10, 10,
9450     10, 10, 10, 10, 10, 10, 10, 10,
9451     10, 10, 10, 10, 10, 10, 10, 10,
9452     10, 10, 10, 10, 10, 10, 10, 10,
9453     10, 10, 10, 10, 10, 10, 10, 10,
9454     10, 10, 10, 10, 10, 10, 10, 10,
9455     10, 10, 10, 10, 10, 10, 10, 10,
9456     10, 10, 10, 10, 10, 10, 10, 10,
9457     10, 10, 10, 10, 10, 10, 10, 10,
9458     10, 10, 10, 10, 10, 10, 10, 10,
9459     10, 10, 10, 10, 10, 10, 10, 10,
9460     10, 10, 10, 10, 10, 10, 10, 10,
9461     10, 10, 10, 10, 10, 10, 10, 10,
9462     10, 10, 10, 10, 10, 10, 10, 10,
9463     10, 10, 10, 10, 10, 10, 10, 10,
9464 };
9465
9466 static const Q_UINT8 dir_2E[] = {
9467     0, 0, 0, 0, 0, 0, 0, 0,
9468     0, 0, 0, 0, 0, 0, 0, 0,
9469     0, 0, 0, 0, 0, 0, 0, 0,
9470     0, 0, 0, 0, 0, 0, 0, 0,
9471     0, 0, 0, 0, 0, 0, 0, 0,
9472     0, 0, 0, 0, 0, 0, 0, 0,
9473     0, 0, 0, 0, 0, 0, 0, 0,
9474     0, 0, 0, 0, 0, 0, 0, 0,
9475     0, 0, 0, 0, 0, 0, 0, 0,
9476     0, 0, 0, 0, 0, 0, 0, 0,
9477     0, 0, 0, 0, 0, 0, 0, 0,
9478     0, 0, 0, 0, 0, 0, 0, 0,
9479     0, 0, 0, 0, 0, 0, 0, 0,
9480     0, 0, 0, 0, 0, 0, 0, 0,
9481     0, 0, 0, 0, 0, 0, 0, 0,
9482     0, 0, 0, 0, 0, 0, 0, 0,
9483     10, 10, 10, 10, 10, 10, 10, 10,
9484     10, 10, 10, 10, 10, 10, 10, 10,
9485     10, 10, 10, 10, 10, 10, 10, 10,
9486     10, 10, 0, 10, 10, 10, 10, 10,
9487     10, 10, 10, 10, 10, 10, 10, 10,
9488     10, 10, 10, 10, 10, 10, 10, 10,
9489     10, 10, 10, 10, 10, 10, 10, 10,
9490     10, 10, 10, 10, 10, 10, 10, 10,
9491     10, 10, 10, 10, 10, 10, 10, 10,
9492     10, 10, 10, 10, 10, 10, 10, 10,
9493     10, 10, 10, 10, 10, 10, 10, 10,
9494     10, 10, 10, 10, 10, 10, 10, 10,
9495     10, 10, 10, 10, 10, 10, 10, 10,
9496     10, 10, 10, 10, 10, 10, 10, 10,
9497     10, 10, 10, 10, 0, 0, 0, 0,
9498     0, 0, 0, 0, 0, 0, 0, 0,
9499 };
9500
9501 static const Q_UINT8 dir_2F[] = {
9502     10, 10, 10, 10, 10, 10, 10, 10,
9503     10, 10, 10, 10, 10, 10, 10, 10,
9504     10, 10, 10, 10, 10, 10, 10, 10,
9505     10, 10, 10, 10, 10, 10, 10, 10,
9506     10, 10, 10, 10, 10, 10, 10, 10,
9507     10, 10, 10, 10, 10, 10, 10, 10,
9508     10, 10, 10, 10, 10, 10, 10, 10,
9509     10, 10, 10, 10, 10, 10, 10, 10,
9510     10, 10, 10, 10, 10, 10, 10, 10,
9511     10, 10, 10, 10, 10, 10, 10, 10,
9512     10, 10, 10, 10, 10, 10, 10, 10,
9513     10, 10, 10, 10, 10, 10, 10, 10,
9514     10, 10, 10, 10, 10, 10, 10, 10,
9515     10, 10, 10, 10, 10, 10, 10, 10,
9516     10, 10, 10, 10, 10, 10, 10, 10,
9517     10, 10, 10, 10, 10, 10, 10, 10,
9518     10, 10, 10, 10, 10, 10, 10, 10,
9519     10, 10, 10, 10, 10, 10, 10, 10,
9520     10, 10, 10, 10, 10, 10, 10, 10,
9521     10, 10, 10, 10, 10, 10, 10, 10,
9522     10, 10, 10, 10, 10, 10, 10, 10,
9523     10, 10, 10, 10, 10, 10, 10, 10,
9524     10, 10, 10, 10, 10, 10, 10, 10,
9525     10, 10, 10, 10, 10, 10, 10, 10,
9526     10, 10, 10, 10, 10, 10, 10, 10,
9527     10, 10, 10, 10, 10, 10, 10, 10,
9528     10, 10, 10, 10, 10, 10, 0, 0,
9529     0, 0, 0, 0, 0, 0, 0, 0,
9530     0, 0, 0, 0, 0, 0, 0, 0,
9531     0, 0, 0, 0, 0, 0, 0, 0,
9532     10, 10, 10, 10, 10, 10, 10, 10,
9533     10, 10, 10, 10, 0, 0, 0, 0,
9534 };
9535
9536 static const Q_UINT8 dir_30[] = {
9537     9, 10, 10, 10, 10, 0, 0, 0,
9538     138, 138, 138, 138, 138, 138, 138, 138,
9539     138, 138, 10, 10, 138, 138, 138, 138,
9540     138, 138, 138, 138, 10, 10, 10, 10,
9541     10, 0, 0, 0, 0, 0, 0, 0,
9542     0, 0, 17, 17, 17, 17, 17, 17,
9543     10, 0, 0, 0, 0, 0, 10, 10,
9544     0, 0, 0, 0, 0, 0, 10, 10,
9545     0, 0, 0, 0, 0, 0, 0, 0,
9546     0, 0, 0, 0, 0, 0, 0, 0,
9547     0, 0, 0, 0, 0, 0, 0, 0,
9548     0, 0, 0, 0, 0, 0, 0, 0,
9549     0, 0, 0, 0, 0, 0, 0, 0,
9550     0, 0, 0, 0, 0, 0, 0, 0,
9551     0, 0, 0, 0, 0, 0, 0, 0,
9552     0, 0, 0, 0, 0, 0, 0, 0,
9553     0, 0, 0, 0, 0, 0, 0, 0,
9554     0, 0, 0, 0, 0, 0, 0, 0,
9555     0, 0, 0, 0, 0, 0, 0, 0,
9556     0, 17, 17, 10, 10, 0, 0, 0,
9557     0, 0, 0, 0, 0, 0, 0, 0,
9558     0, 0, 0, 0, 0, 0, 0, 0,
9559     0, 0, 0, 0, 0, 0, 0, 0,
9560     0, 0, 0, 0, 0, 0, 0, 0,
9561     0, 0, 0, 0, 0, 0, 0, 0,
9562     0, 0, 0, 0, 0, 0, 0, 0,
9563     0, 0, 0, 0, 0, 0, 0, 0,
9564     0, 0, 0, 0, 0, 0, 0, 0,
9565     0, 0, 0, 0, 0, 0, 0, 0,
9566     0, 0, 0, 0, 0, 0, 0, 0,
9567     0, 0, 0, 0, 0, 0, 0, 0,
9568     0, 0, 0, 10, 0, 0, 0, 0,
9569 };
9570
9571 static const Q_UINT8 dir_A4[] = {
9572     0, 0, 0, 0, 0, 0, 0, 0,
9573     0, 0, 0, 0, 0, 0, 0, 0,
9574     0, 0, 0, 0, 0, 0, 0, 0,
9575     0, 0, 0, 0, 0, 0, 0, 0,
9576     0, 0, 0, 0, 0, 0, 0, 0,
9577     0, 0, 0, 0, 0, 0, 0, 0,
9578     0, 0, 0, 0, 0, 0, 0, 0,
9579     0, 0, 0, 0, 0, 0, 0, 0,
9580     0, 0, 0, 0, 0, 0, 0, 0,
9581     0, 0, 0, 0, 0, 0, 0, 0,
9582     0, 0, 0, 0, 0, 0, 0, 0,
9583     0, 0, 0, 0, 0, 0, 0, 0,
9584     0, 0, 0, 0, 0, 0, 0, 0,
9585     0, 0, 0, 0, 0, 0, 0, 0,
9586     0, 0, 0, 0, 0, 0, 0, 0,
9587     0, 0, 0, 0, 0, 0, 0, 0,
9588     0, 0, 0, 0, 0, 0, 0, 0,
9589     0, 0, 0, 0, 0, 0, 0, 0,
9590     10, 10, 10, 10, 10, 10, 10, 10,
9591     10, 10, 10, 10, 10, 10, 10, 10,
9592     10, 10, 0, 0, 10, 10, 10, 10,
9593     10, 10, 10, 10, 10, 10, 10, 10,
9594     10, 10, 10, 10, 0, 10, 10, 10,
9595     10, 10, 10, 10, 10, 10, 10, 10,
9596     10, 0, 10, 10, 10, 0, 10, 0,
9597     0, 0, 0, 0, 0, 0, 0, 0,
9598     0, 0, 0, 0, 0, 0, 0, 0,
9599     0, 0, 0, 0, 0, 0, 0, 0,
9600     0, 0, 0, 0, 0, 0, 0, 0,
9601     0, 0, 0, 0, 0, 0, 0, 0,
9602     0, 0, 0, 0, 0, 0, 0, 0,
9603     0, 0, 0, 0, 0, 0, 0, 0,
9604 };
9605
9606 static const Q_UINT8 dir_FB[] = {
9607     0, 0, 0, 0, 0, 0, 0, 0,
9608     0, 0, 0, 0, 0, 0, 0, 0,
9609     0, 0, 0, 0, 0, 0, 0, 0,
9610     0, 0, 0, 0, 0, 1, 17, 1,
9611     1, 1, 1, 1, 1, 1, 1, 1,
9612     1, 4, 1, 1, 1, 1, 1, 1,
9613     1, 1, 1, 1, 1, 1, 1, 0,
9614     1, 1, 1, 1, 1, 0, 1, 0,
9615     1, 1, 0, 1, 1, 0, 1, 1,
9616     1, 1, 1, 1, 1, 1, 1, 1,
9617     13, 13, 13, 13, 13, 13, 13, 13,
9618     13, 13, 13, 13, 13, 13, 13, 13,
9619     13, 13, 13, 13, 13, 13, 13, 13,
9620     13, 13, 13, 13, 13, 13, 13, 13,
9621     13, 13, 13, 13, 13, 13, 13, 13,
9622     13, 13, 13, 13, 13, 13, 13, 13,
9623     13, 13, 13, 13, 13, 13, 13, 13,
9624     13, 13, 13, 13, 13, 13, 13, 13,
9625     13, 13, 13, 13, 13, 13, 13, 13,
9626     13, 13, 13, 13, 13, 13, 13, 13,
9627     13, 13, 13, 13, 13, 13, 13, 13,
9628     13, 13, 13, 13, 13, 13, 13, 13,
9629     13, 13, 0, 0, 0, 0, 0, 0,
9630     0, 0, 0, 0, 0, 0, 0, 0,
9631     0, 0, 0, 0, 0, 0, 0, 0,
9632     0, 0, 0, 0, 0, 0, 0, 0,
9633     0, 0, 0, 13, 13, 13, 13, 13,
9634     13, 13, 13, 13, 13, 13, 13, 13,
9635     13, 13, 13, 13, 13, 13, 13, 13,
9636     13, 13, 13, 13, 13, 13, 13, 13,
9637     13, 13, 13, 13, 13, 13, 13, 13,
9638     13, 13, 13, 13, 13, 13, 13, 13,
9639 };
9640
9641 static const Q_UINT8 dir_FC[] = {
9642     13, 13, 13, 13, 13, 13, 13, 13,
9643     13, 13, 13, 13, 13, 13, 13, 13,
9644     13, 13, 13, 13, 13, 13, 13, 13,
9645     13, 13, 13, 13, 13, 13, 13, 13,
9646     13, 13, 13, 13, 13, 13, 13, 13,
9647     13, 13, 13, 13, 13, 13, 13, 13,
9648     13, 13, 13, 13, 13, 13, 13, 13,
9649     13, 13, 13, 13, 13, 13, 13, 13,
9650     13, 13, 13, 13, 13, 13, 13, 13,
9651     13, 13, 13, 13, 13, 13, 13, 13,
9652     13, 13, 13, 13, 13, 13, 13, 13,
9653     13, 13, 13, 13, 13, 13, 13, 13,
9654     13, 13, 13, 13, 13, 13, 13, 13,
9655     13, 13, 13, 13, 13, 13, 13, 13,
9656     13, 13, 13, 13, 13, 13, 13, 13,
9657     13, 13, 13, 13, 13, 13, 13, 13,
9658     13, 13, 13, 13, 13, 13, 13, 13,
9659     13, 13, 13, 13, 13, 13, 13, 13,
9660     13, 13, 13, 13, 13, 13, 13, 13,
9661     13, 13, 13, 13, 13, 13, 13, 13,
9662     13, 13, 13, 13, 13, 13, 13, 13,
9663     13, 13, 13, 13, 13, 13, 13, 13,
9664     13, 13, 13, 13, 13, 13, 13, 13,
9665     13, 13, 13, 13, 13, 13, 13, 13,
9666     13, 13, 13, 13, 13, 13, 13, 13,
9667     13, 13, 13, 13, 13, 13, 13, 13,
9668     13, 13, 13, 13, 13, 13, 13, 13,
9669     13, 13, 13, 13, 13, 13, 13, 13,
9670     13, 13, 13, 13, 13, 13, 13, 13,
9671     13, 13, 13, 13, 13, 13, 13, 13,
9672     13, 13, 13, 13, 13, 13, 13, 13,
9673     13, 13, 13, 13, 13, 13, 13, 13,
9674 };
9675
9676 static const Q_UINT8 dir_FD[] = {
9677     13, 13, 13, 13, 13, 13, 13, 13,
9678     13, 13, 13, 13, 13, 13, 13, 13,
9679     13, 13, 13, 13, 13, 13, 13, 13,
9680     13, 13, 13, 13, 13, 13, 13, 13,
9681     13, 13, 13, 13, 13, 13, 13, 13,
9682     13, 13, 13, 13, 13, 13, 13, 13,
9683     13, 13, 13, 13, 13, 13, 13, 13,
9684     13, 13, 13, 13, 13, 13, 10, 10,
9685     0, 0, 0, 0, 0, 0, 0, 0,
9686     0, 0, 0, 0, 0, 0, 0, 0,
9687     13, 13, 13, 13, 13, 13, 13, 13,
9688     13, 13, 13, 13, 13, 13, 13, 13,
9689     13, 13, 13, 13, 13, 13, 13, 13,
9690     13, 13, 13, 13, 13, 13, 13, 13,
9691     13, 13, 13, 13, 13, 13, 13, 13,
9692     13, 13, 13, 13, 13, 13, 13, 13,
9693     13, 13, 13, 13, 13, 13, 13, 13,
9694     13, 13, 13, 13, 13, 13, 13, 13,
9695     0, 0, 13, 13, 13, 13, 13, 13,
9696     13, 13, 13, 13, 13, 13, 13, 13,
9697     13, 13, 13, 13, 13, 13, 13, 13,
9698     13, 13, 13, 13, 13, 13, 13, 13,
9699     13, 13, 13, 13, 13, 13, 13, 13,
9700     13, 13, 13, 13, 13, 13, 13, 13,
9701     13, 13, 13, 13, 13, 13, 13, 13,
9702     0, 0, 0, 0, 0, 0, 0, 0,
9703     0, 0, 0, 0, 0, 0, 0, 0,
9704     0, 0, 0, 0, 0, 0, 0, 0,
9705     0, 0, 0, 0, 0, 0, 0, 0,
9706     0, 0, 0, 0, 0, 0, 0, 0,
9707     13, 13, 13, 13, 13, 13, 13, 13,
9708     13, 13, 13, 13, 0, 0, 0, 0,
9709 };
9710
9711 static const Q_UINT8 dir_FE[] = {
9712     0, 0, 0, 0, 0, 0, 0, 0,
9713     0, 0, 0, 0, 0, 0, 0, 0,
9714     0, 0, 0, 0, 0, 0, 0, 0,
9715     0, 0, 0, 0, 0, 0, 0, 0,
9716     17, 17, 17, 17, 0, 0, 0, 0,
9717     0, 0, 0, 0, 0, 0, 0, 0,
9718     10, 10, 10, 10, 10, 10, 10, 10,
9719     10, 10, 10, 10, 10, 10, 10, 10,
9720     10, 10, 10, 10, 10, 0, 0, 0,
9721     0, 10, 10, 10, 10, 10, 10, 10,
9722     6, 10, 6, 0, 10, 6, 10, 10,
9723     10, 10, 10, 10, 10, 10, 10, 4,
9724     10, 10, 4, 4, 10, 10, 10, 0,
9725     10, 4, 4, 10, 0, 0, 0, 0,
9726     13, 13, 13, 0, 13, 0, 13, 13,
9727     13, 13, 13, 13, 13, 13, 13, 13,
9728     13, 13, 13, 13, 13, 13, 13, 13,
9729     13, 13, 13, 13, 13, 13, 13, 13,
9730     13, 13, 13, 13, 13, 13, 13, 13,
9731     13, 13, 13, 13, 13, 13, 13, 13,
9732     13, 13, 13, 13, 13, 13, 13, 13,
9733     13, 13, 13, 13, 13, 13, 13, 13,
9734     13, 13, 13, 13, 13, 13, 13, 13,
9735     13, 13, 13, 13, 13, 13, 13, 13,
9736     13, 13, 13, 13, 13, 13, 13, 13,
9737     13, 13, 13, 13, 13, 13, 13, 13,
9738     13, 13, 13, 13, 13, 13, 13, 13,
9739     13, 13, 13, 13, 13, 13, 13, 13,
9740     13, 13, 13, 13, 13, 13, 13, 13,
9741     13, 13, 13, 13, 13, 13, 13, 13,
9742     13, 13, 13, 13, 13, 13, 13, 13,
9743     13, 13, 13, 13, 13, 0, 0, 18,
9744 };
9745
9746 static const Q_UINT8 dir_FF[] = {
9747     0, 10, 10, 4, 4, 4, 10, 10,
9748     10, 10, 10, 4, 6, 4, 6, 3,
9749     2, 2, 2, 2, 2, 2, 2, 2,
9750     2, 2, 6, 10, 10, 10, 10, 10,
9751     10, 0, 0, 0, 0, 0, 0, 0,
9752     0, 0, 0, 0, 0, 0, 0, 0,
9753     0, 0, 0, 0, 0, 0, 0, 0,
9754     0, 0, 0, 10, 10, 10, 10, 10,
9755     10, 0, 0, 0, 0, 0, 0, 0,
9756     0, 0, 0, 0, 0, 0, 0, 0,
9757     0, 0, 0, 0, 0, 0, 0, 0,
9758     0, 0, 0, 10, 10, 10, 10, 0,
9759     0, 10, 10, 10, 10, 10, 0, 0,
9760     0, 0, 0, 0, 0, 0, 0, 0,
9761     0, 0, 0, 0, 0, 0, 0, 0,
9762     0, 0, 0, 0, 0, 0, 0, 0,
9763     0, 0, 0, 0, 0, 0, 0, 0,
9764     0, 0, 0, 0, 0, 0, 0, 0,
9765     0, 0, 0, 0, 0, 0, 0, 0,
9766     0, 0, 0, 0, 0, 0, 0, 0,
9767     0, 0, 0, 0, 0, 0, 0, 0,
9768     0, 0, 0, 0, 0, 0, 0, 0,
9769     0, 0, 0, 0, 0, 0, 0, 0,
9770     0, 0, 0, 0, 0, 0, 0, 0,
9771     0, 0, 0, 0, 0, 0, 0, 0,
9772     0, 0, 0, 0, 0, 0, 0, 0,
9773     0, 0, 0, 0, 0, 0, 0, 0,
9774     0, 0, 0, 0, 0, 0, 0, 0,
9775     4, 4, 10, 10, 10, 4, 4, 0,
9776     10, 10, 10, 10, 10, 10, 10, 0,
9777     0, 0, 0, 0, 0, 0, 0, 0,
9778     0, 18, 18, 18, 10, 10, 0, 0,
9779 };
9780
9781 static const Q_UINT8 * const direction_info[256] = {
9782     dir_00, dir_01, dir_02, dir_03, dir_04, dir_05, dir_06, dir_07,
9783     dir_01, dir_09, dir_0A, dir_0B, dir_0C, dir_0D, dir_0E, dir_0F,
9784     dir_10, dir_01, dir_01, dir_01, dir_01, dir_01, dir_16, dir_17,
9785     dir_18, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_1F,
9786     dir_20, dir_21, dir_22, dir_23, dir_24, dir_25, dir_26, dir_27,
9787     dir_28, dir_01, dir_01, dir_01, dir_01, dir_01, dir_2E, dir_2F,
9788     dir_30, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
9789     dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
9790     dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
9791     dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
9792     dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
9793     dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
9794     dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
9795     dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
9796     dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
9797     dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
9798     dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
9799     dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
9800     dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
9801     dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
9802     dir_01, dir_01, dir_01, dir_01, dir_A4, dir_01, dir_01, dir_01,
9803     dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
9804     dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
9805     dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
9806     dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
9807     dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
9808     dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
9809     dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
9810     dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
9811     dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
9812     dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
9813     dir_01, dir_01, dir_01, dir_FB, dir_FC, dir_FD, dir_FE, dir_FF,
9814 };
9815 // 26940 bytes
9816
9817 #endif
9818
9819 // END OF GENERATED DATA
9820
9821 // This is generated too. Script?
9822
9823 #ifndef QT_NO_UNICODETABLES
9824
9825 static const Q_UINT16 case_0 [] = {
9826     0, 0, 0, 0, 0, 0, 0, 0,
9827     0, 0, 0, 0, 0, 0, 0, 0,
9828     0, 0, 0, 0, 0, 0, 0, 0,
9829     0, 0, 0, 0, 0, 0, 0, 0,
9830     0, 0, 0, 0, 0, 0, 0, 0,
9831     0, 0, 0, 0, 0, 0, 0, 0,
9832     0, 0, 0, 0, 0, 0, 0, 0,
9833     0, 0, 0, 0, 0, 0, 0, 0,
9834     0, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
9835     0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
9836     0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
9837     0x78, 0x79, 0x7a, 0, 0, 0, 0, 0,
9838     0, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
9839     0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
9840     0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
9841     0x58, 0x59, 0x5a, 0, 0, 0, 0, 0,
9842     0, 0, 0, 0, 0, 0, 0, 0,
9843     0, 0, 0, 0, 0, 0, 0, 0,
9844     0, 0, 0, 0, 0, 0, 0, 0,
9845     0, 0, 0, 0, 0, 0, 0, 0,
9846     0, 0, 0, 0, 0, 0, 0, 0,
9847     0, 0, 0x0, 0, 0, 0, 0, 0,
9848     0, 0, 0, 0, 0, 0x0, 0, 0,
9849     0, 0, 0x0, 0, 0, 0, 0, 0,
9850     0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
9851     0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
9852     0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0,
9853     0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0x0,
9854     0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
9855     0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
9856     0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0,
9857     0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0x178,
9858 };
9859
9860 static const Q_UINT16 case_1 [] = {
9861     0x101, 0x100, 0x103, 0x102, 0x105, 0x104, 0x107, 0x106,
9862     0x109, 0x108, 0x10b, 0x10a, 0x10d, 0x10c, 0x10f, 0x10e,
9863     0x111, 0x110, 0x113, 0x112, 0x115, 0x114, 0x117, 0x116,
9864     0x119, 0x118, 0x11b, 0x11a, 0x11d, 0x11c, 0x11f, 0x11e,
9865     0x121, 0x120, 0x123, 0x122, 0x125, 0x124, 0x127, 0x126,
9866     0x129, 0x128, 0x12b, 0x12a, 0x12d, 0x12c, 0x12f, 0x12e,
9867     0x69, 0x49, 0x133, 0x132, 0x135, 0x134, 0x137, 0x136,
9868     0x0, 0x13a, 0x139, 0x13c, 0x13b, 0x13e, 0x13d, 0x140,
9869     0x13f, 0x142, 0x141, 0x144, 0x143, 0x146, 0x145, 0x148,
9870     0x147, 0x0, 0x14b, 0x14a, 0x14d, 0x14c, 0x14f, 0x14e,
9871     0x151, 0x150, 0x153, 0x152, 0x155, 0x154, 0x157, 0x156,
9872     0x159, 0x158, 0x15b, 0x15a, 0x15d, 0x15c, 0x15f, 0x15e,
9873     0x161, 0x160, 0x163, 0x162, 0x165, 0x164, 0x167, 0x166,
9874     0x169, 0x168, 0x16b, 0x16a, 0x16d, 0x16c, 0x16f, 0x16e,
9875     0x171, 0x170, 0x173, 0x172, 0x175, 0x174, 0x177, 0x176,
9876     0xff, 0x17a, 0x179, 0x17c, 0x17b, 0x17e, 0x17d, 0x53,
9877     0x0, 0x253, 0x183, 0x182, 0x185, 0x184, 0x254, 0x188,
9878     0x187, 0x256, 0x257, 0x18c, 0x18b, 0x0, 0x1dd, 0x259,
9879     0x25b, 0x192, 0x191, 0x260, 0x263, 0x3d9, 0x269, 0x268,
9880     0x199, 0x198, 0x51, 0x0, 0x26f, 0x272, 0x0, 0x275,
9881     0x1a1, 0x1a0, 0x1a3, 0x1a2, 0x1a5, 0x1a4, 0x280, 0x1a8,
9882     0x1a7, 0x283, 0, 0x0, 0x1ad, 0x1ac, 0x288, 0x1b0,
9883     0x1af, 0x28a, 0x28b, 0x1b4, 0x1b3, 0x1b6, 0x1b5, 0x292,
9884     0x1b9, 0x1b8, 0x0, 0, 0x1bd, 0x1bc, 0, 0,
9885     0, 0, 0, 0, 0x1c6, 0, 0x1c4, 0x1c9,
9886     0, 0x1c7, 0x1cc, 0, 0x1ca, 0x1ce, 0x1cd, 0x1d0,
9887     0x1cf, 0x1d2, 0x1d1, 0x1d4, 0x1d3, 0x1d6, 0x1d5, 0x1d8,
9888     0x1d7, 0x1da, 0x1d9, 0x1dc, 0x1db, 0x18e, 0x1df, 0x1de,
9889     0x1e1, 0x1e0, 0x1e3, 0x1e2, 0x1e5, 0x1e4, 0x1e7, 0x1e6,
9890     0x1e9, 0x1e8, 0x1eb, 0x1ea, 0x1ed, 0x1ec, 0x1ef, 0x1ee,
9891     0x0, 0x1f3, 0, 0x1f1, 0x1f5, 0x1f4, 0, 0,
9892     0, 0, 0x1fb, 0x1fa, 0x1fd, 0x1fc, 0x1ff, 0x1fe,
9893 };
9894
9895 static const Q_UINT16 case_2 [] = {
9896     0x201, 0x200, 0x203, 0x202, 0x205, 0x204, 0x207, 0x206,
9897     0x209, 0x208, 0x20b, 0x20a, 0x20d, 0x20c, 0x20f, 0x20e,
9898     0x211, 0x210, 0x213, 0x212, 0x215, 0x214, 0x217, 0x216,
9899     0, 0, 0, 0, 0, 0, 0, 0,
9900     0, 0, 0, 0, 0, 0, 0, 0,
9901     0, 0, 0, 0, 0, 0, 0, 0,
9902     0, 0, 0, 0, 0, 0, 0, 0,
9903     0, 0, 0, 0, 0, 0, 0, 0,
9904     0, 0, 0, 0, 0, 0, 0, 0,
9905     0, 0, 0, 0, 0, 0, 0, 0,
9906     0x0, 0x0, 0x0, 0x181, 0x186, 0x0, 0x189, 0x18a,
9907     0x0, 0x18f, 0x0, 0x190, 0x0, 0x0, 0x0, 0x0,
9908     0x193, 0x0, 0x0, 0x194, 0x0, 0x0, 0x631, 0x579,
9909     0x197, 0x196, 0x0, 0x0, 0x0, 0x0, 0x0, 0x19c,
9910     0x0, 0x0, 0x19d, 0x0, 0x0, 0x19f, 0x0, 0x0,
9911     0x0, 0x0, 0x7e1, 0x0, 0x0, 0x0, 0x0, 0x0,
9912     0x1a6, 0x0, 0x0, 0x1a9, 0x0, 0x0, 0x0, 0x0,
9913     0x1ae, 0x0, 0x1b1, 0x1b2, 0x0, 0xa21, 0x971, 0x0,
9914     0x0, 0x0, 0x1b7, 0x0, 0x0, 0x0, 0x0, 0x0,
9915     0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
9916     0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
9917     0x0, 0, 0, 0, 0, 0, 0, 0,
9918     0, 0, 0, 0, 0, 0, 0, 0,
9919     0, 0, 0, 0, 0, 0, 0, 0,
9920     0, 0, 0, 0, 0, 0, 0, 0,
9921     0, 0, 0, 0, 0, 0, 0, 0,
9922     0, 0, 0, 0, 0, 0, 0, 0,
9923     0, 0, 0, 0, 0, 0, 0, 0,
9924     0, 0, 0, 0, 0, 0, 0, 0,
9925     0, 0, 0, 0, 0, 0, 0, 0,
9926     0, 0, 0, 0, 0, 0, 0, 0,
9927     0, 0, 0, 0, 0, 0, 0, 0,
9928 };
9929
9930 static const Q_UINT16 case_3 [] = {
9931     0, 0, 0, 0, 0, 0, 0, 0,
9932     0, 0, 0, 0, 0, 0, 0, 0,
9933     0, 0, 0, 0, 0, 0, 0, 0,
9934     0, 0, 0, 0, 0, 0, 0, 0,
9935     0, 0, 0, 0, 0, 0, 0, 0,
9936     0, 0, 0, 0, 0, 0, 0, 0,
9937     0, 0, 0, 0, 0, 0, 0, 0,
9938     0, 0, 0, 0, 0, 0, 0, 0,
9939     0, 0, 0, 0, 0, 0, 0, 0,
9940     0, 0, 0, 0, 0, 0, 0, 0,
9941     0, 0, 0, 0, 0, 0, 0, 0,
9942     0, 0, 0, 0, 0, 0, 0, 0,
9943     0, 0, 0, 0, 0, 0, 0, 0,
9944     0, 0, 0, 0, 0, 0, 0, 0,
9945     0, 0, 0, 0, 0, 0, 0, 0,
9946     0, 0, 0, 0, 0, 0, 0, 0,
9947     0, 0, 0, 0, 0, 0, 0x3ac, 0,
9948     0x3ad, 0x3ae, 0x3af, 0, 0x3cc, 0, 0x3cd, 0x3ce,
9949     0x0, 0x3b1, 0x3b2, 0x3b3, 0x3b4, 0x3b5, 0x3b6, 0x3b7,
9950     0x3b8, 0x3b9, 0x3ba, 0x3bb, 0x3bc, 0x3bd, 0x3be, 0x3bf,
9951     0x3c0, 0x3c1, 0, 0x3c3, 0x3c4, 0x3c5, 0x3c6, 0x3c7,
9952     0x3c8, 0x3c9, 0x3ca, 0x3cb, 0x386, 0x388, 0x389, 0x38a,
9953     0x0, 0x391, 0x392, 0x393, 0x394, 0x395, 0x396, 0x397,
9954     0x398, 0x399, 0x39a, 0x39b, 0x39c, 0x39d, 0x39e, 0x39f,
9955     0x3a0, 0x3a1, 0x3a3, 0x3a3, 0x3a4, 0x3a5, 0x3a6, 0x3a7,
9956     0x3a8, 0x3a9, 0x3aa, 0x3ab, 0x38c, 0x38e, 0x38f, 0,
9957     0x392, 0x398, 0x0, 0x0, 0x0, 0x3a6, 0x3a0, 0,
9958     0, 0, 0x0, 0, 0x0, 0, 0x0, 0,
9959     0x0, 0, 0x3e3, 0x3e2, 0x3e5, 0x3e4, 0x3e7, 0x3e6,
9960     0x3e9, 0x3e8, 0x3eb, 0x3ea, 0x3ed, 0x3ec, 0x3ef, 0x3ee,
9961     0x39a, 0x3a1, 0x3a3, 0, 0, 0, 0, 0,
9962     0, 0, 0, 0, 0, 0, 0, 0,
9963 };
9964
9965 static const Q_UINT16 case_4 [] = {
9966     0, 0x451, 0x452, 0x453, 0x454, 0x455, 0x456, 0x457,
9967     0x458, 0x459, 0x45a, 0x45b, 0x45c, 0, 0x45e, 0x45f,
9968     0x430, 0x431, 0x432, 0x433, 0x434, 0x435, 0x436, 0x437,
9969     0x438, 0x439, 0x43a, 0x43b, 0x43c, 0x43d, 0x43e, 0x43f,
9970     0x440, 0x441, 0x442, 0x443, 0x444, 0x445, 0x446, 0x447,
9971     0x448, 0x449, 0x44a, 0x44b, 0x44c, 0x44d, 0x44e, 0x44f,
9972     0x410, 0x411, 0x412, 0x413, 0x414, 0x415, 0x416, 0x417,
9973     0x418, 0x419, 0x41a, 0x41b, 0x41c, 0x41d, 0x41e, 0x41f,
9974     0x420, 0x421, 0x422, 0x423, 0x424, 0x425, 0x426, 0x427,
9975     0x428, 0x429, 0x42a, 0x42b, 0x42c, 0x42d, 0x42e, 0x42f,
9976     0, 0x401, 0x402, 0x403, 0x404, 0x405, 0x406, 0x407,
9977     0x408, 0x409, 0x40a, 0x40b, 0x40c, 0, 0x40e, 0x40f,
9978     0x461, 0x460, 0x463, 0x462, 0x465, 0x464, 0x467, 0x466,
9979     0x469, 0x468, 0x46b, 0x46a, 0x46d, 0x46c, 0x46f, 0x46e,
9980     0x471, 0x470, 0x473, 0x472, 0x475, 0x474, 0x477, 0x476,
9981     0x479, 0x478, 0x47b, 0x47a, 0x47d, 0x47c, 0x47f, 0x47e,
9982     0x481, 0x480, 0, 0, 0, 0, 0, 0,
9983     0, 0, 0, 0, 0, 0, 0, 0,
9984     0x491, 0x490, 0x493, 0x492, 0x495, 0x494, 0x497, 0x496,
9985     0x499, 0x498, 0x49b, 0x49a, 0x49d, 0x49c, 0x49f, 0x49e,
9986     0x4a1, 0x4a0, 0x4a3, 0x4a2, 0x4a5, 0x4a4, 0x4a7, 0x4a6,
9987     0x4a9, 0x4a8, 0x4ab, 0x4aa, 0x4ad, 0x4ac, 0x4af, 0x4ae,
9988     0x4b1, 0x4b0, 0x4b3, 0x4b2, 0x4b5, 0x4b4, 0x4b7, 0x4b6,
9989     0x4b9, 0x4b8, 0x4bb, 0x4ba, 0x4bd, 0x4bc, 0x4bf, 0x4be,
9990     0, 0x4c2, 0x4c1, 0x4c4, 0x4c3, 0, 0, 0x4c8,
9991     0x4c7, 0, 0, 0x4cc, 0x4cb, 0, 0, 0,
9992     0x4d1, 0x4d0, 0x4d3, 0x4d2, 0x4d5, 0x4d4, 0x4d7, 0x4d6,
9993     0x4d9, 0x4d8, 0x4db, 0x4da, 0x4dd, 0x4dc, 0x4df, 0x4de,
9994     0x4e1, 0x4e0, 0x4e3, 0x4e2, 0x4e5, 0x4e4, 0x4e7, 0x4e6,
9995     0x4e9, 0x4e8, 0x4eb, 0x4ea, 0, 0, 0x4ef, 0x4ee,
9996     0x4f1, 0x4f0, 0x4f3, 0x4f2, 0x4f5, 0x4f4, 0, 0,
9997     0x4f9, 0x4f8, 0, 0, 0, 0, 0, 0,
9998 };
9999
10000 static const Q_UINT16 case_5 [] = {
10001     0, 0, 0, 0, 0, 0, 0, 0,
10002     0, 0, 0, 0, 0, 0, 0, 0,
10003     0, 0, 0, 0, 0, 0, 0, 0,
10004     0, 0, 0, 0, 0, 0, 0, 0,
10005     0, 0, 0, 0, 0, 0, 0, 0,
10006     0, 0, 0, 0, 0, 0, 0, 0,
10007     0, 0x561, 0x562, 0x563, 0x564, 0x565, 0x566, 0x567,
10008     0x568, 0x569, 0x56a, 0x56b, 0x56c, 0x56d, 0x56e, 0x56f,
10009     0x570, 0x571, 0x572, 0x573, 0x574, 0x575, 0x576, 0x577,
10010     0x578, 0x579, 0x57a, 0x57b, 0x57c, 0x57d, 0x57e, 0x57f,
10011     0x580, 0x581, 0x582, 0x583, 0x584, 0x585, 0x586, 0,
10012     0, 0, 0, 0, 0, 0, 0, 0,
10013     0, 0x531, 0x532, 0x533, 0x534, 0x535, 0x536, 0x537,
10014     0x538, 0x539, 0x53a, 0x53b, 0x53c, 0x53d, 0x53e, 0x53f,
10015     0x540, 0x541, 0x542, 0x543, 0x544, 0x545, 0x546, 0x547,
10016     0x548, 0x549, 0x54a, 0x54b, 0x54c, 0x54d, 0x54e, 0x54f,
10017     0x550, 0x551, 0x552, 0x553, 0x554, 0x555, 0x556, 0x0,
10018     0, 0, 0, 0, 0, 0, 0, 0,
10019     0, 0, 0, 0, 0, 0, 0, 0,
10020     0, 0, 0, 0, 0, 0, 0, 0,
10021     0, 0, 0, 0, 0, 0, 0, 0,
10022     0, 0, 0, 0, 0, 0, 0, 0,
10023     0, 0, 0, 0, 0, 0, 0, 0,
10024     0, 0, 0, 0, 0, 0, 0, 0,
10025     0, 0, 0, 0, 0, 0, 0, 0,
10026     0, 0, 0, 0, 0, 0, 0, 0,
10027     0, 0, 0, 0, 0, 0, 0, 0,
10028     0, 0, 0, 0, 0, 0, 0, 0,
10029     0, 0, 0, 0, 0, 0, 0, 0,
10030     0, 0, 0, 0, 0, 0, 0, 0,
10031     0, 0, 0, 0, 0, 0, 0, 0,
10032     0, 0, 0, 0, 0, 0, 0, 0,
10033 };
10034
10035 static const Q_UINT16 case_10 [] = {
10036     0, 0, 0, 0, 0, 0, 0, 0,
10037     0, 0, 0, 0, 0, 0, 0, 0,
10038     0, 0, 0, 0, 0, 0, 0, 0,
10039     0, 0, 0, 0, 0, 0, 0, 0,
10040     0, 0, 0, 0, 0, 0, 0, 0,
10041     0, 0, 0, 0, 0, 0, 0, 0,
10042     0, 0, 0, 0, 0, 0, 0, 0,
10043     0, 0, 0, 0, 0, 0, 0, 0,
10044     0, 0, 0, 0, 0, 0, 0, 0,
10045     0, 0, 0, 0, 0, 0, 0, 0,
10046     0, 0, 0, 0, 0, 0, 0, 0,
10047     0, 0, 0, 0, 0, 0, 0, 0,
10048     0, 0, 0, 0, 0, 0, 0, 0,
10049     0, 0, 0, 0, 0, 0, 0, 0,
10050     0, 0, 0, 0, 0, 0, 0, 0,
10051     0, 0, 0, 0, 0, 0, 0, 0,
10052     0, 0, 0, 0, 0, 0, 0, 0,
10053     0, 0, 0, 0, 0, 0, 0, 0,
10054     0, 0, 0, 0, 0, 0, 0, 0,
10055     0, 0, 0, 0, 0, 0, 0, 0,
10056     0x10d0, 0x10d1, 0x10d2, 0x10d3, 0x10d4, 0x10d5, 0x10d6, 0x10d7,
10057     0x10d8, 0x10d9, 0x10da, 0x10db, 0x10dc, 0x10dd, 0x10de, 0x10df,
10058     0x10e0, 0x10e1, 0x10e2, 0x10e3, 0x10e4, 0x10e5, 0x10e6, 0x10e7,
10059     0x10e8, 0x10e9, 0x10ea, 0x10eb, 0x10ec, 0x10ed, 0x10ee, 0x10ef,
10060     0x10f0, 0x10f1, 0x10f2, 0x10f3, 0x10f4, 0x10f5, 0, 0,
10061     0, 0, 0, 0, 0, 0, 0, 0,
10062     0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
10063     0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
10064     0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
10065     0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
10066     0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0,
10067     0, 0, 0, 0, 0, 0, 0, 0,
10068 };
10069
10070 static const Q_UINT16 case_1e [] = {
10071     0x1e01, 0x1e00, 0x1e03, 0x1e02, 0x1e05, 0x1e04, 0x1e07, 0x1e06,
10072     0x1e09, 0x1e08, 0x1e0b, 0x1e0a, 0x1e0d, 0x1e0c, 0x1e0f, 0x1e0e,
10073     0x1e11, 0x1e10, 0x1e13, 0x1e12, 0x1e15, 0x1e14, 0x1e17, 0x1e16,
10074     0x1e19, 0x1e18, 0x1e1b, 0x1e1a, 0x1e1d, 0x1e1c, 0x1e1f, 0x1e1e,
10075     0x1e21, 0x1e20, 0x1e23, 0x1e22, 0x1e25, 0x1e24, 0x1e27, 0x1e26,
10076     0x1e29, 0x1e28, 0x1e2b, 0x1e2a, 0x1e2d, 0x1e2c, 0x1e2f, 0x1e2e,
10077     0x1e31, 0x1e30, 0x1e33, 0x1e32, 0x1e35, 0x1e34, 0x1e37, 0x1e36,
10078     0x1e39, 0x1e38, 0x1e3b, 0x1e3a, 0x1e3d, 0x1e3c, 0x1e3f, 0x1e3e,
10079     0x1e41, 0x1e40, 0x1e43, 0x1e42, 0x1e45, 0x1e44, 0x1e47, 0x1e46,
10080     0x1e49, 0x1e48, 0x1e4b, 0x1e4a, 0x1e4d, 0x1e4c, 0x1e4f, 0x1e4e,
10081     0x1e51, 0x1e50, 0x1e53, 0x1e52, 0x1e55, 0x1e54, 0x1e57, 0x1e56,
10082     0x1e59, 0x1e58, 0x1e5b, 0x1e5a, 0x1e5d, 0x1e5c, 0x1e5f, 0x1e5e,
10083     0x1e61, 0x1e60, 0x1e63, 0x1e62, 0x1e65, 0x1e64, 0x1e67, 0x1e66,
10084     0x1e69, 0x1e68, 0x1e6b, 0x1e6a, 0x1e6d, 0x1e6c, 0x1e6f, 0x1e6e,
10085     0x1e71, 0x1e70, 0x1e73, 0x1e72, 0x1e75, 0x1e74, 0x1e77, 0x1e76,
10086     0x1e79, 0x1e78, 0x1e7b, 0x1e7a, 0x1e7d, 0x1e7c, 0x1e7f, 0x1e7e,
10087     0x1e81, 0x1e80, 0x1e83, 0x1e82, 0x1e85, 0x1e84, 0x1e87, 0x1e86,
10088     0x1e89, 0x1e88, 0x1e8b, 0x1e8a, 0x1e8d, 0x1e8c, 0x1e8f, 0x1e8e,
10089     0x1e91, 0x1e90, 0x1e93, 0x1e92, 0x1e95, 0x1e94, 0x0, 0x0,
10090     0x0, 0x0, 0x0, 0x1e60, 0, 0, 0, 0,
10091     0x1ea1, 0x1ea0, 0x1ea3, 0x1ea2, 0x1ea5, 0x1ea4, 0x1ea7, 0x1ea6,
10092     0x1ea9, 0x1ea8, 0x1eab, 0x1eaa, 0x1ead, 0x1eac, 0x1eaf, 0x1eae,
10093     0x1eb1, 0x1eb0, 0x1eb3, 0x1eb2, 0x1eb5, 0x1eb4, 0x1eb7, 0x1eb6,
10094     0x1eb9, 0x1eb8, 0x1ebb, 0x1eba, 0x1ebd, 0x1ebc, 0x1ebf, 0x1ebe,
10095     0x1ec1, 0x1ec0, 0x1ec3, 0x1ec2, 0x1ec5, 0x1ec4, 0x1ec7, 0x1ec6,
10096     0x1ec9, 0x1ec8, 0x1ecb, 0x1eca, 0x1ecd, 0x1ecc, 0x1ecf, 0x1ece,
10097     0x1ed1, 0x1ed0, 0x1ed3, 0x1ed2, 0x1ed5, 0x1ed4, 0x1ed7, 0x1ed6,
10098     0x1ed9, 0x1ed8, 0x1edb, 0x1eda, 0x1edd, 0x1edc, 0x1edf, 0x1ede,
10099     0x1ee1, 0x1ee0, 0x1ee3, 0x1ee2, 0x1ee5, 0x1ee4, 0x1ee7, 0x1ee6,
10100     0x1ee9, 0x1ee8, 0x1eeb, 0x1eea, 0x1eed, 0x1eec, 0x1eef, 0x1eee,
10101     0x1ef1, 0x1ef0, 0x1ef3, 0x1ef2, 0x1ef5, 0x1ef4, 0x1ef7, 0x1ef6,
10102     0x1ef9, 0x1ef8, 0, 0, 0, 0, 0, 0,
10103 };
10104
10105 static const Q_UINT16 case_1f [] = {
10106     0x1f08, 0x1f09, 0x1f0a, 0x1f0b, 0x1f0c, 0x1f0d, 0x1f0e, 0x1f0f,
10107     0x1f00, 0x1f01, 0x1f02, 0x1f03, 0x1f04, 0x1f05, 0x1f06, 0x1f07,
10108     0x1f18, 0x1f19, 0x1f1a, 0x1f1b, 0x1f1c, 0x1f1d, 0, 0,
10109     0x1f10, 0x1f11, 0x1f12, 0x1f13, 0x1f14, 0x1f15, 0, 0,
10110     0x1f28, 0x1f29, 0x1f2a, 0x1f2b, 0x1f2c, 0x1f2d, 0x1f2e, 0x1f2f,
10111     0x1f20, 0x1f21, 0x1f22, 0x1f23, 0x1f24, 0x1f25, 0x1f26, 0x1f27,
10112     0x1f38, 0x1f39, 0x1f3a, 0x1f3b, 0x1f3c, 0x1f3d, 0x1f3e, 0x1f3f,
10113     0x1f30, 0x1f31, 0x1f32, 0x1f33, 0x1f34, 0x1f35, 0x1f36, 0x1f37,
10114     0x1f48, 0x1f49, 0x1f4a, 0x1f4b, 0x1f4c, 0x1f4d, 0, 0,
10115     0x1f40, 0x1f41, 0x1f42, 0x1f43, 0x1f44, 0x1f45, 0, 0,
10116     0x0, 0x1f59, 0x0, 0x1f5b, 0x0, 0x1f5d, 0x0, 0x1f5f,
10117     0, 0x1f51, 0, 0x1f53, 0, 0x1f55, 0, 0x1f57,
10118     0x1f68, 0x1f69, 0x1f6a, 0x1f6b, 0x1f6c, 0x1f6d, 0x1f6e, 0x1f6f,
10119     0x1f60, 0x1f61, 0x1f62, 0x1f63, 0x1f64, 0x1f65, 0x1f66, 0x1f67,
10120     0x1fba, 0x1fbb, 0x1fc8, 0x1fc9, 0x1fca, 0x1fcb, 0x1fda, 0x1fdb,
10121     0x1ff8, 0x1ff9, 0x1fea, 0x1feb, 0x1ffa, 0x1ffb, 0, 0,
10122     0x1f88, 0x1f89, 0x1f8a, 0x1f8b, 0x1f8c, 0x1f8d, 0x1f8e, 0x1f8f,
10123     0x1f80, 0x1f81, 0x1f82, 0x1f83, 0x1f84, 0x1f85, 0x1f86, 0x1f87,
10124     0x1f98, 0x1f99, 0x1f9a, 0x1f9b, 0x1f9c, 0x1f9d, 0x1f9e, 0x1f9f,
10125     0x1f90, 0x1f91, 0x1f92, 0x1f93, 0x1f94, 0x1f95, 0x1f96, 0x1f97,
10126     0x1fa8, 0x1fa9, 0x1faa, 0x1fab, 0x1fac, 0x1fad, 0x1fae, 0x1faf,
10127     0x1fa0, 0x1fa1, 0x1fa2, 0x1fa3, 0x1fa4, 0x1fa5, 0x1fa6, 0x1fa7,
10128     0x1fb8, 0x1fb9, 0x0, 0x1fbc, 0x0, 0, 0x0, 0x0,
10129     0x1fb0, 0x1fb1, 0x1f70, 0x1f71, 0x1fb3, 0, 0x399, 0,
10130     0, 0, 0x0, 0x1fcc, 0x0, 0, 0x0, 0x0,
10131     0x1f72, 0x1f73, 0x1f74, 0x1f75, 0x1fc3, 0, 0, 0,
10132     0x1fd8, 0x1fd9, 0x0, 0x0, 0, 0, 0x0, 0x0,
10133     0x1fd0, 0x1fd1, 0x1f76, 0x1f77, 0, 0, 0, 0,
10134     0x1fe8, 0x1fe9, 0x0, 0x0, 0x0, 0x1fec, 0x0, 0x0,
10135     0x1fe0, 0x1fe1, 0x1f7a, 0x1f7b, 0x1fe5, 0, 0, 0,
10136     0, 0, 0x0, 0x1ffc, 0x0, 0, 0x0, 0x0,
10137     0x1f78, 0x1f79, 0x1f7c, 0x1f7d, 0x1ff3, 0, 0, 0,
10138 };
10139
10140 static const Q_UINT16 case_20 [] = {
10141     0, 0, 0, 0, 0, 0, 0, 0,
10142     0, 0, 0, 0, 0, 0, 0, 0,
10143     0, 0, 0, 0, 0, 0, 0, 0,
10144     0, 0, 0, 0, 0, 0, 0, 0,
10145     0, 0, 0, 0, 0, 0, 0, 0,
10146     0, 0, 0, 0, 0, 0, 0, 0,
10147     0, 0, 0, 0, 0, 0, 0, 0,
10148     0, 0, 0, 0, 0, 0, 0, 0,
10149     0, 0, 0, 0, 0, 0, 0, 0,
10150     0, 0, 0, 0, 0, 0, 0, 0,
10151     0, 0, 0, 0, 0, 0, 0, 0,
10152     0, 0, 0, 0, 0, 0, 0, 0,
10153     0, 0, 0, 0, 0, 0, 0, 0,
10154     0, 0, 0, 0, 0, 0, 0, 0,
10155     0, 0, 0, 0, 0, 0, 0, 0,
10156     0, 0, 0, 0, 0, 0, 0, 0x0,
10157     0, 0, 0, 0, 0, 0, 0, 0,
10158     0, 0, 0, 0, 0, 0, 0, 0,
10159     0, 0, 0, 0, 0, 0, 0, 0,
10160     0, 0, 0, 0, 0, 0, 0, 0,
10161     0, 0, 0, 0, 0, 0, 0, 0,
10162     0, 0, 0, 0, 0, 0, 0, 0,
10163     0, 0, 0, 0, 0, 0, 0, 0,
10164     0, 0, 0, 0, 0, 0, 0, 0,
10165     0, 0, 0, 0, 0, 0, 0, 0,
10166     0, 0, 0, 0, 0, 0, 0, 0,
10167     0, 0, 0, 0, 0, 0, 0, 0,
10168     0, 0, 0, 0, 0, 0, 0, 0,
10169     0, 0, 0, 0, 0, 0, 0, 0,
10170     0, 0, 0, 0, 0, 0, 0, 0,
10171     0, 0, 0, 0, 0, 0, 0, 0,
10172     0, 0, 0, 0, 0, 0, 0, 0,
10173 };
10174
10175 static const Q_UINT16 case_21 [] = {
10176     0, 0, 0x0, 0, 0, 0, 0, 0x0,
10177     0, 0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
10178     0x0, 0x0, 0x0, 0x0, 0, 0x0, 0, 0,
10179     0x761, 0x0, 0x0, 0x0, 0x0, 0x0, 0, 0,
10180     0, 0, 0, 0, 0x0, 0, 0x0, 0,
10181     0x0, 0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
10182     0x0, 0x0, 0, 0x0, 0x0, 0, 0, 0,
10183     0, 0, 0, 0, 0, 0, 0, 0,
10184     0, 0, 0, 0, 0, 0, 0, 0,
10185     0, 0, 0, 0, 0, 0, 0, 0,
10186     0, 0, 0, 0, 0, 0, 0, 0,
10187     0, 0, 0, 0, 0, 0, 0, 0,
10188     0, 0, 0, 0, 0, 0, 0, 0,
10189     0, 0, 0, 0, 0, 0, 0, 0,
10190     0, 0, 0, 0, 0, 0, 0, 0,
10191     0, 0, 0, 0, 0, 0, 0, 0,
10192     0, 0, 0, 0, 0, 0, 0, 0,
10193     0, 0, 0, 0, 0, 0, 0, 0,
10194     0, 0, 0, 0, 0, 0, 0, 0,
10195     0, 0, 0, 0, 0, 0, 0, 0,
10196     0, 0, 0, 0, 0, 0, 0, 0,
10197     0, 0, 0, 0, 0, 0, 0, 0,
10198     0, 0, 0, 0, 0, 0, 0, 0,
10199     0, 0, 0, 0, 0, 0, 0, 0,
10200     0, 0, 0, 0, 0, 0, 0, 0,
10201     0, 0, 0, 0, 0, 0, 0, 0,
10202     0, 0, 0, 0, 0, 0, 0, 0,
10203     0, 0, 0, 0, 0, 0, 0, 0,
10204     0, 0, 0, 0, 0, 0, 0, 0,
10205     0, 0, 0, 0, 0, 0, 0, 0,
10206     0, 0, 0, 0, 0, 0, 0, 0,
10207     0, 0, 0, 0, 0, 0, 0, 0,
10208 };
10209
10210 static const Q_UINT16 case_fb [] = {
10211     0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0,
10212     0, 0, 0, 0, 0, 0, 0, 0,
10213     0, 0, 0, 0x0, 0x0, 0x0, 0x0, 0x0,
10214     0, 0, 0, 0, 0, 0, 0, 0,
10215     0, 0, 0, 0, 0, 0, 0, 0,
10216     0, 0, 0, 0, 0, 0, 0, 0,
10217     0, 0, 0, 0, 0, 0, 0, 0,
10218     0, 0, 0, 0, 0, 0, 0, 0,
10219     0, 0, 0, 0, 0, 0, 0, 0,
10220     0, 0, 0, 0, 0, 0, 0, 0,
10221     0, 0, 0, 0, 0, 0, 0, 0,
10222     0, 0, 0, 0, 0, 0, 0, 0,
10223     0, 0, 0, 0, 0, 0, 0, 0,
10224     0, 0, 0, 0, 0, 0, 0, 0,
10225     0, 0, 0, 0, 0, 0, 0, 0,
10226     0, 0, 0, 0, 0, 0, 0, 0,
10227     0, 0, 0, 0, 0, 0, 0, 0,
10228     0, 0, 0, 0, 0, 0, 0, 0,
10229     0, 0, 0, 0, 0, 0, 0, 0,
10230     0, 0, 0, 0, 0, 0, 0, 0,
10231     0, 0, 0, 0, 0, 0, 0, 0,
10232     0, 0, 0, 0, 0, 0, 0, 0,
10233     0, 0, 0, 0, 0, 0, 0, 0,
10234     0, 0, 0, 0, 0, 0, 0, 0,
10235     0, 0, 0, 0, 0, 0, 0, 0,
10236     0, 0, 0, 0, 0, 0, 0, 0,
10237     0, 0, 0, 0, 0, 0, 0, 0,
10238     0, 0, 0, 0, 0, 0, 0, 0,
10239     0, 0, 0, 0, 0, 0, 0, 0,
10240     0, 0, 0, 0, 0, 0, 0, 0,
10241     0, 0, 0, 0, 0, 0, 0, 0,
10242     0, 0, 0, 0, 0, 0, 0, 0,
10243 };
10244
10245 static const Q_UINT16 case_ff [] = {
10246     0, 0, 0, 0, 0, 0, 0, 0,
10247     0, 0, 0, 0, 0, 0, 0, 0,
10248     0, 0, 0, 0, 0, 0, 0, 0,
10249     0, 0, 0, 0, 0, 0, 0, 0,
10250     0, 0xff41, 0xff42, 0xff43, 0xff44, 0xff45, 0xff46, 0xff47,
10251     0xff48, 0xff49, 0xff4a, 0xff4b, 0xff4c, 0xff4d, 0xff4e, 0xff4f,
10252     0xff50, 0xff51, 0xff52, 0xff53, 0xff54, 0xff55, 0xff56, 0xff57,
10253     0xff58, 0xff59, 0xff5a, 0, 0, 0, 0, 0,
10254     0, 0xff21, 0xff22, 0xff23, 0xff24, 0xff25, 0xff26, 0xff27,
10255     0xff28, 0xff29, 0xff2a, 0xff2b, 0xff2c, 0xff2d, 0xff2e, 0xff2f,
10256     0xff30, 0xff31, 0xff32, 0xff33, 0xff34, 0xff35, 0xff36, 0xff37,
10257     0xff38, 0xff39, 0xff3a, 0, 0, 0, 0, 0,
10258     0, 0, 0, 0, 0, 0, 0, 0,
10259     0, 0, 0, 0, 0, 0, 0, 0,
10260     0, 0, 0, 0, 0, 0, 0, 0,
10261     0, 0, 0, 0, 0, 0, 0, 0,
10262     0, 0, 0, 0, 0, 0, 0, 0,
10263     0, 0, 0, 0, 0, 0, 0, 0,
10264     0, 0, 0, 0, 0, 0, 0, 0,
10265     0, 0, 0, 0, 0, 0, 0, 0,
10266     0, 0, 0, 0, 0, 0, 0, 0,
10267     0, 0, 0, 0, 0, 0, 0, 0,
10268     0, 0, 0, 0, 0, 0, 0, 0,
10269     0, 0, 0, 0, 0, 0, 0, 0,
10270     0, 0, 0, 0, 0, 0, 0, 0,
10271     0, 0, 0, 0, 0, 0, 0, 0,
10272     0, 0, 0, 0, 0, 0, 0, 0,
10273     0, 0, 0, 0, 0, 0, 0, 0,
10274     0, 0, 0, 0, 0, 0, 0, 0,
10275     0, 0, 0, 0, 0, 0, 0, 0,
10276     0, 0, 0, 0, 0, 0, 0, 0,
10277     0, 0, 0, 0, 0, 0, 0, 0,
10278 };
10279
10280 static const Q_UINT16 * const case_info[256] = {
10281
10282     case_0, case_1, case_2, case_3, case_4, case_5, 0, 0,
10283     0, 0, 0, 0, 0, 0, 0, 0,
10284     case_10, 0, 0, 0, 0, 0, 0, 0,
10285     0, 0, 0, 0, 0, 0, case_1e, case_1f,
10286     case_20, case_21, 0, 0, 0, 0, 0, 0,
10287     0, 0, 0, 0, 0, 0, 0, 0,
10288     0, 0, 0, 0, 0, 0, 0, 0,
10289     0, 0, 0, 0, 0, 0, 0, 0,
10290     0, 0, 0, 0, 0, 0, 0, 0,
10291     0, 0, 0, 0, 0, 0, 0, 0,
10292     0, 0, 0, 0, 0, 0, 0, 0,
10293     0, 0, 0, 0, 0, 0, 0, 0,
10294     0, 0, 0, 0, 0, 0, 0, 0,
10295     0, 0, 0, 0, 0, 0, 0, 0,
10296     0, 0, 0, 0, 0, 0, 0, 0,
10297     0, 0, 0, 0, 0, 0, 0, 0,
10298     0, 0, 0, 0, 0, 0, 0, 0,
10299     0, 0, 0, 0, 0, 0, 0, 0,
10300     0, 0, 0, 0, 0, 0, 0, 0,
10301     0, 0, 0, 0, 0, 0, 0, 0,
10302     0, 0, 0, 0, 0, 0, 0, 0,
10303     0, 0, 0, 0, 0, 0, 0, 0,
10304     0, 0, 0, 0, 0, 0, 0, 0,
10305     0, 0, 0, 0, 0, 0, 0, 0,
10306     0, 0, 0, 0, 0, 0, 0, 0,
10307     0, 0, 0, 0, 0, 0, 0, 0,
10308     0, 0, 0, 0, 0, 0, 0, 0,
10309     0, 0, 0, 0, 0, 0, 0, 0,
10310     0, 0, 0, 0, 0, 0, 0, 0,
10311     0, 0, 0, 0, 0, 0, 0, 0,
10312     0, 0, 0, 0, 0, 0, 0, 0,
10313     0, 0, 0, case_fb, 0, 0, 0, case_ff,
10314 };
10315
10316 static const Q_INT8 num_0 [] = {
10317     -1, -1, -1, -1, -1, -1, -1, -1,
10318     -1, -1, -1, -1, -1, -1, -1, -1,
10319     -1, -1, -1, -1, -1, -1, -1, -1,
10320     -1, -1, -1, -1, -1, -1, -1, -1,
10321     -1, -1, -1, -1, -1, -1, -1, -1,
10322     -1, -1, -1, -1, -1, -1, -1, -1,
10323     0, 1, 2, 3, 4, 5, 6, 7,
10324     8, 9, -1, -1, -1, -1, -1, -1,
10325     -1, -1, -1, -1, -1, -1, -1, -1,
10326     -1, -1, -1, -1, -1, -1, -1, -1,
10327     -1, -1, -1, -1, -1, -1, -1, -1,
10328     -1, -1, -1, -1, -1, -1, -1, -1,
10329     -1, -1, -1, -1, -1, -1, -1, -1,
10330     -1, -1, -1, -1, -1, -1, -1, -1,
10331     -1, -1, -1, -1, -1, -1, -1, -1,
10332     -1, -1, -1, -1, -1, -1, -1, -1,
10333     -1, -1, -1, -1, -1, -1, -1, -1,
10334     -1, -1, -1, -1, -1, -1, -1, -1,
10335     -1, -1, -1, -1, -1, -1, -1, -1,
10336     -1, -1, -1, -1, -1, -1, -1, -1,
10337     -1, -1, -1, -1, -1, -1, -1, -1,
10338     -1, -1, -1, -1, -1, -1, -1, -1,
10339     -1, -1, 2, 3, -1, -1, -1, -1,
10340     -1, 1, -1, -1, -1, -1, -1, -1,
10341     -1, -1, -1, -1, -1, -1, -1, -1,
10342     -1, -1, -1, -1, -1, -1, -1, -1,
10343     -1, -1, -1, -1, -1, -1, -1, -1,
10344     -1, -1, -1, -1, -1, -1, -1, -1,
10345     -1, -1, -1, -1, -1, -1, -1, -1,
10346     -1, -1, -1, -1, -1, -1, -1, -1,
10347     -1, -1, -1, -1, -1, -1, -1, -1,
10348     -1, -1, -1, -1, -1, -1, -1, -1,
10349 };
10350
10351 static const Q_INT8 num_6 [] = {
10352     -1, -1, -1, -1, -1, -1, -1, -1,
10353     -1, -1, -1, -1, -1, -1, -1, -1,
10354     -1, -1, -1, -1, -1, -1, -1, -1,
10355     -1, -1, -1, -1, -1, -1, -1, -1,
10356     -1, -1, -1, -1, -1, -1, -1, -1,
10357     -1, -1, -1, -1, -1, -1, -1, -1,
10358     -1, -1, -1, -1, -1, -1, -1, -1,
10359     -1, -1, -1, -1, -1, -1, -1, -1,
10360     -1, -1, -1, -1, -1, -1, -1, -1,
10361     -1, -1, -1, -1, -1, -1, -1, -1,
10362     -1, -1, -1, -1, -1, -1, -1, -1,
10363     -1, -1, -1, -1, -1, -1, -1, -1,
10364     0, 1, 2, 3, 4, 5, 6, 7,
10365     8, 9, -1, -1, -1, -1, -1, -1,
10366     -1, -1, -1, -1, -1, -1, -1, -1,
10367     -1, -1, -1, -1, -1, -1, -1, -1,
10368     -1, -1, -1, -1, -1, -1, -1, -1,
10369     -1, -1, -1, -1, -1, -1, -1, -1,
10370     -1, -1, -1, -1, -1, -1, -1, -1,
10371     -1, -1, -1, -1, -1, -1, -1, -1,
10372     -1, -1, -1, -1, -1, -1, -1, -1,
10373     -1, -1, -1, -1, -1, -1, -1, -1,
10374     -1, -1, -1, -1, -1, -1, -1, -1,
10375     -1, -1, -1, -1, -1, -1, -1, -1,
10376     -1, -1, -1, -1, -1, -1, -1, -1,
10377     -1, -1, -1, -1, -1, -1, -1, -1,
10378     -1, -1, -1, -1, -1, -1, -1, -1,
10379     -1, -1, -1, -1, -1, -1, -1, -1,
10380     -1, -1, -1, -1, -1, -1, -1, -1,
10381     -1, -1, -1, -1, -1, -1, -1, -1,
10382     0, 1, 2, 3, 4, 5, 6, 7,
10383     8, 9, -1, -1, -1, -1, -1, -1,
10384 };
10385
10386 static const Q_INT8 num_9 [] = {
10387     -1, -1, -1, -1, -1, -1, -1, -1,
10388     -1, -1, -1, -1, -1, -1, -1, -1,
10389     -1, -1, -1, -1, -1, -1, -1, -1,
10390     -1, -1, -1, -1, -1, -1, -1, -1,
10391     -1, -1, -1, -1, -1, -1, -1, -1,
10392     -1, -1, -1, -1, -1, -1, -1, -1,
10393     -1, -1, -1, -1, -1, -1, -1, -1,
10394     -1, -1, -1, -1, -1, -1, -1, -1,
10395     -1, -1, -1, -1, -1, -1, -1, -1,
10396     -1, -1, -1, -1, -1, -1, -1, -1,
10397     -1, -1, -1, -1, -1, -1, -1, -1,
10398     -1, -1, -1, -1, -1, -1, -1, -1,
10399     -1, -1, -1, -1, -1, -1, 0, 1,
10400     2, 3, 4, 5, 6, 7, 8, 9,
10401     -1, -1, -1, -1, -1, -1, -1, -1,
10402     -1, -1, -1, -1, -1, -1, -1, -1,
10403     -1, -1, -1, -1, -1, -1, -1, -1,
10404     -1, -1, -1, -1, -1, -1, -1, -1,
10405     -1, -1, -1, -1, -1, -1, -1, -1,
10406     -1, -1, -1, -1, -1, -1, -1, -1,
10407     -1, -1, -1, -1, -1, -1, -1, -1,
10408     -1, -1, -1, -1, -1, -1, -1, -1,
10409     -1, -1, -1, -1, -1, -1, -1, -1,
10410     -1, -1, -1, -1, -1, -1, -1, -1,
10411     -1, -1, -1, -1, -1, -1, -1, -1,
10412     -1, -1, -1, -1, -1, -1, -1, -1,
10413     -1, -1, -1, -1, -1, -1, -1, -1,
10414     -1, -1, -1, -1, -1, -1, -1, -1,
10415     -1, -1, -1, -1, -1, -1, 0, 1,
10416     2, 3, 4, 5, 6, 7, 8, 9,
10417     -1, -1, -1, -1, -1, -1, -1, -1,
10418     -1, -1, -1, -1, -1, -1, -1, -1,
10419 };
10420
10421 static const Q_INT8 num_b [] = {
10422     -1, -1, -1, -1, -1, -1, -1, -1,
10423     -1, -1, -1, -1, -1, -1, -1, -1,
10424     -1, -1, -1, -1, -1, -1, -1, -1,
10425     -1, -1, -1, -1, -1, -1, -1, -1,
10426     -1, -1, -1, -1, -1, -1, -1, -1,
10427     -1, -1, -1, -1, -1, -1, -1, -1,
10428     -1, -1, -1, -1, -1, -1, -1, -1,
10429     -1, -1, -1, -1, -1, -1, -1, -1,
10430     -1, -1, -1, -1, -1, -1, -1, -1,
10431     -1, -1, -1, -1, -1, -1, -1, -1,
10432     -1, -1, -1, -1, -1, -1, -1, -1,
10433     -1, -1, -1, -1, -1, -1, -1, -1,
10434     -1, -1, -1, -1, -1, -1, 0, 1,
10435     2, 3, 4, 5, 6, 7, 8, 9,
10436     -1, -1, -1, -1, -1, -1, -1, -1,
10437     -1, -1, -1, -1, -1, -1, -1, -1,
10438     -1, -1, -1, -1, -1, -1, -1, -1,
10439     -1, -1, -1, -1, -1, -1, -1, -1,
10440     -1, -1, -1, -1, -1, -1, -1, -1,
10441     -1, -1, -1, -1, -1, -1, -1, -1,
10442     -1, -1, -1, -1, -1, -1, -1, -1,
10443     -1, -1, -1, -1, -1, -1, -1, -1,
10444     -1, -1, -1, -1, -1, -1, -1, -1,
10445     -1, -1, -1, -1, -1, -1, -1, -1,
10446     -1, -1, -1, -1, -1, -1, -1, -1,
10447     -1, -1, -1, -1, -1, -1, -1, -1,
10448     -1, -1, -1, -1, -1, -1, -1, -1,
10449     -1, -1, -1, -1, -1, -1, -1, -1,
10450     -1, -1, -1, -1, -1, -1, -1, 1,
10451     2, 3, 4, 5, 6, 7, 8, 9,
10452     -1, -1, -1, -1, -1, -1, -1, -1,
10453     -1, -1, -1, -1, -1, -1, -1, -1,
10454 };
10455
10456 static const Q_INT8 num_d [] = {
10457     -1, -1, -1, -1, -1, -1, -1, -1,
10458     -1, -1, -1, -1, -1, -1, -1, -1,
10459     -1, -1, -1, -1, -1, -1, -1, -1,
10460     -1, -1, -1, -1, -1, -1, -1, -1,
10461     -1, -1, -1, -1, -1, -1, -1, -1,
10462     -1, -1, -1, -1, -1, -1, -1, -1,
10463     -1, -1, -1, -1, -1, -1, -1, -1,
10464     -1, -1, -1, -1, -1, -1, -1, -1,
10465     -1, -1, -1, -1, -1, -1, -1, -1,
10466     -1, -1, -1, -1, -1, -1, -1, -1,
10467     -1, -1, -1, -1, -1, -1, -1, -1,
10468     -1, -1, -1, -1, -1, -1, -1, -1,
10469     -1, -1, -1, -1, -1, -1, 0, 1,
10470     2, 3, 4, 5, 6, 7, 8, 9,
10471     -1, -1, -1, -1, -1, -1, -1, -1,
10472     -1, -1, -1, -1, -1, -1, -1, -1,
10473     -1, -1, -1, -1, -1, -1, -1, -1,
10474     -1, -1, -1, -1, -1, -1, -1, -1,
10475     -1, -1, -1, -1, -1, -1, -1, -1,
10476     -1, -1, -1, -1, -1, -1, -1, -1,
10477     -1, -1, -1, -1, -1, -1, -1, -1,
10478     -1, -1, -1, -1, -1, -1, -1, -1,
10479     -1, -1, -1, -1, -1, -1, -1, -1,
10480     -1, -1, -1, -1, -1, -1, -1, -1,
10481     -1, -1, -1, -1, -1, -1, -1, -1,
10482     -1, -1, -1, -1, -1, -1, -1, -1,
10483     -1, -1, -1, -1, -1, -1, -1, -1,
10484     -1, -1, -1, -1, -1, -1, -1, -1,
10485     -1, -1, -1, -1, -1, -1, -1, -1,
10486     -1, -1, -1, -1, -1, -1, -1, -1,
10487     -1, -1, -1, -1, -1, -1, -1, -1,
10488     -1, -1, -1, -1, -1, -1, -1, -1,
10489 };
10490
10491 static const Q_INT8 num_e [] = {
10492     -1, -1, -1, -1, -1, -1, -1, -1,
10493     -1, -1, -1, -1, -1, -1, -1, -1,
10494     -1, -1, -1, -1, -1, -1, -1, -1,
10495     -1, -1, -1, -1, -1, -1, -1, -1,
10496     -1, -1, -1, -1, -1, -1, -1, -1,
10497     -1, -1, -1, -1, -1, -1, -1, -1,
10498     -1, -1, -1, -1, -1, -1, -1, -1,
10499     -1, -1, -1, -1, -1, -1, -1, -1,
10500     -1, -1, -1, -1, -1, -1, -1, -1,
10501     -1, -1, -1, -1, -1, -1, -1, -1,
10502     0, 1, 2, 3, 4, 5, 6, 7,
10503     8, 9, -1, -1, -1, -1, -1, -1,
10504     -1, -1, -1, -1, -1, -1, -1, -1,
10505     -1, -1, -1, -1, -1, -1, -1, -1,
10506     -1, -1, -1, -1, -1, -1, -1, -1,
10507     -1, -1, -1, -1, -1, -1, -1, -1,
10508     -1, -1, -1, -1, -1, -1, -1, -1,
10509     -1, -1, -1, -1, -1, -1, -1, -1,
10510     -1, -1, -1, -1, -1, -1, -1, -1,
10511     -1, -1, -1, -1, -1, -1, -1, -1,
10512     -1, -1, -1, -1, -1, -1, -1, -1,
10513     -1, -1, -1, -1, -1, -1, -1, -1,
10514     -1, -1, -1, -1, -1, -1, -1, -1,
10515     -1, -1, -1, -1, -1, -1, -1, -1,
10516     -1, -1, -1, -1, -1, -1, -1, -1,
10517     -1, -1, -1, -1, -1, -1, -1, -1,
10518     0, 1, 2, 3, 4, 5, 6, 7,
10519     8, 9, -1, -1, -1, -1, -1, -1,
10520     -1, -1, -1, -1, -1, -1, -1, -1,
10521     -1, -1, -1, -1, -1, -1, -1, -1,
10522     -1, -1, -1, -1, -1, -1, -1, -1,
10523     -1, -1, -1, -1, -1, -1, -1, -1,
10524 };
10525
10526 static const Q_INT8 num_f [] = {
10527     -1, -1, -1, -1, -1, -1, -1, -1,
10528     -1, -1, -1, -1, -1, -1, -1, -1,
10529     -1, -1, -1, -1, -1, -1, -1, -1,
10530     -1, -1, -1, -1, -1, -1, -1, -1,
10531     0, 1, 2, 3, 4, 5, 6, 7,
10532     8, 9, -1, -1, -1, -1, -1, -1,
10533     -1, -1, -1, -1, -1, -1, -1, -1,
10534     -1, -1, -1, -1, -1, -1, -1, -1,
10535     -1, -1, -1, -1, -1, -1, -1, -1,
10536     -1, -1, -1, -1, -1, -1, -1, -1,
10537     -1, -1, -1, -1, -1, -1, -1, -1,
10538     -1, -1, -1, -1, -1, -1, -1, -1,
10539     -1, -1, -1, -1, -1, -1, -1, -1,
10540     -1, -1, -1, -1, -1, -1, -1, -1,
10541     -1, -1, -1, -1, -1, -1, -1, -1,
10542     -1, -1, -1, -1, -1, -1, -1, -1,
10543     -1, -1, -1, -1, -1, -1, -1, -1,
10544     -1, -1, -1, -1, -1, -1, -1, -1,
10545     -1, -1, -1, -1, -1, -1, -1, -1,
10546     -1, -1, -1, -1, -1, -1, -1, -1,
10547     -1, -1, -1, -1, -1, -1, -1, -1,
10548     -1, -1, -1, -1, -1, -1, -1, -1,
10549     -1, -1, -1, -1, -1, -1, -1, -1,
10550     -1, -1, -1, -1, -1, -1, -1, -1,
10551     -1, -1, -1, -1, -1, -1, -1, -1,
10552     -1, -1, -1, -1, -1, -1, -1, -1,
10553     -1, -1, -1, -1, -1, -1, -1, -1,
10554     -1, -1, -1, -1, -1, -1, -1, -1,
10555     -1, -1, -1, -1, -1, -1, -1, -1,
10556     -1, -1, -1, -1, -1, -1, -1, -1,
10557     -1, -1, -1, -1, -1, -1, -1, -1,
10558     -1, -1, -1, -1, -1, -1, -1, -1,
10559 };
10560
10561 static const Q_INT8 num_20 [] = {
10562     -1, -1, -1, -1, -1, -1, -1, -1,
10563     -1, -1, -1, -1, -1, -1, -1, -1,
10564     -1, -1, -1, -1, -1, -1, -1, -1,
10565     -1, -1, -1, -1, -1, -1, -1, -1,
10566     -1, -1, -1, -1, -1, -1, -1, -1,
10567     -1, -1, -1, -1, -1, -1, -1, -1,
10568     -1, -1, -1, -1, -1, -1, -1, -1,
10569     -1, -1, -1, -1, -1, -1, -1, -1,
10570     -1, -1, -1, -1, -1, -1, -1, -1,
10571     -1, -1, -1, -1, -1, -1, -1, -1,
10572     -1, -1, -1, -1, -1, -1, -1, -1,
10573     -1, -1, -1, -1, -1, -1, -1, -1,
10574     -1, -1, -1, -1, -1, -1, -1, -1,
10575     -1, -1, -1, -1, -1, -1, -1, -1,
10576     0, -1, -1, -1, 4, 5, 6, 7,
10577     8, 9, -1, -1, -1, -1, -1, -1,
10578     0, 1, 2, 3, 4, 5, 6, 7,
10579     8, 9, -1, -1, -1, -1, -1, -1,
10580     -1, -1, -1, -1, -1, -1, -1, -1,
10581     -1, -1, -1, -1, -1, -1, -1, -1,
10582     -1, -1, -1, -1, -1, -1, -1, -1,
10583     -1, -1, -1, -1, -1, -1, -1, -1,
10584     -1, -1, -1, -1, -1, -1, -1, -1,
10585     -1, -1, -1, -1, -1, -1, -1, -1,
10586     -1, -1, -1, -1, -1, -1, -1, -1,
10587     -1, -1, -1, -1, -1, -1, -1, -1,
10588     -1, -1, -1, -1, -1, -1, -1, -1,
10589     -1, -1, -1, -1, -1, -1, -1, -1,
10590     -1, -1, -1, -1, -1, -1, -1, -1,
10591     -1, -1, -1, -1, -1, -1, -1, -1,
10592     -1, -1, -1, -1, -1, -1, -1, -1,
10593     -1, -1, -1, -1, -1, -1, -1, -1,
10594 };
10595
10596 static const Q_INT8 num_ff [] = {
10597     -1, -1, -1, -1, -1, -1, -1, -1,
10598     -1, -1, -1, -1, -1, -1, -1, -1,
10599     0, 1, 2, 3, 4, 5, 6, 7,
10600     8, 9, -1, -1, -1, -1, -1, -1,
10601     -1, -1, -1, -1, -1, -1, -1, -1,
10602     -1, -1, -1, -1, -1, -1, -1, -1,
10603     -1, -1, -1, -1, -1, -1, -1, -1,
10604     -1, -1, -1, -1, -1, -1, -1, -1,
10605     -1, -1, -1, -1, -1, -1, -1, -1,
10606     -1, -1, -1, -1, -1, -1, -1, -1,
10607     -1, -1, -1, -1, -1, -1, -1, -1,
10608     -1, -1, -1, -1, -1, -1, -1, -1,
10609     -1, -1, -1, -1, -1, -1, -1, -1,
10610     -1, -1, -1, -1, -1, -1, -1, -1,
10611     -1, -1, -1, -1, -1, -1, -1, -1,
10612     -1, -1, -1, -1, -1, -1, -1, -1,
10613     -1, -1, -1, -1, -1, -1, -1, -1,
10614     -1, -1, -1, -1, -1, -1, -1, -1,
10615     -1, -1, -1, -1, -1, -1, -1, -1,
10616     -1, -1, -1, -1, -1, -1, -1, -1,
10617     -1, -1, -1, -1, -1, -1, -1, -1,
10618     -1, -1, -1, -1, -1, -1, -1, -1,
10619     -1, -1, -1, -1, -1, -1, -1, -1,
10620     -1, -1, -1, -1, -1, -1, -1, -1,
10621     -1, -1, -1, -1, -1, -1, -1, -1,
10622     -1, -1, -1, -1, -1, -1, -1, -1,
10623     -1, -1, -1, -1, -1, -1, -1, -1,
10624     -1, -1, -1, -1, -1, -1, -1, -1,
10625     -1, -1, -1, -1, -1, -1, -1, -1,
10626     -1, -1, -1, -1, -1, -1, -1, -1,
10627     -1, -1, -1, -1, -1, -1, -1, -1,
10628     -1, -1, -1, -1, -1, -1, -1, -1,
10629 };
10630
10631 static const Q_INT8 * const decimal_info[256] = {
10632      num_0, 0, 0, 0, 0, 0, num_6, 0,
10633      0, num_9, num_9, num_b, num_9, num_d, num_e, num_f,
10634      0, 0, 0, 0, 0, 0, 0, 0,
10635      0, 0, 0, 0, 0, 0, 0, 0,
10636      num_20, 0, 0, 0, 0, 0, 0, 0,
10637      0, 0, 0, 0, 0, 0, 0, 0,
10638      0, 0, 0, 0, 0, 0, 0, 0,
10639      0, 0, 0, 0, 0, 0, 0, 0,
10640      0, 0, 0, 0, 0, 0, 0, 0,
10641      0, 0, 0, 0, 0, 0, 0, 0,
10642      0, 0, 0, 0, 0, 0, 0, 0,
10643      0, 0, 0, 0, 0, 0, 0, 0,
10644      0, 0, 0, 0, 0, 0, 0, 0,
10645      0, 0, 0, 0, 0, 0, 0, 0,
10646      0, 0, 0, 0, 0, 0, 0, 0,
10647      0, 0, 0, 0, 0, 0, 0, 0,
10648      0, 0, 0, 0, 0, 0, 0, 0,
10649      0, 0, 0, 0, 0, 0, 0, 0,
10650      0, 0, 0, 0, 0, 0, 0, 0,
10651      0, 0, 0, 0, 0, 0, 0, 0,
10652      0, 0, 0, 0, 0, 0, 0, 0,
10653      0, 0, 0, 0, 0, 0, 0, 0,
10654      0, 0, 0, 0, 0, 0, 0, 0,
10655      0, 0, 0, 0, 0, 0, 0, 0,
10656      0, 0, 0, 0, 0, 0, 0, 0,
10657      0, 0, 0, 0, 0, 0, 0, 0,
10658      0, 0, 0, 0, 0, 0, 0, 0,
10659      0, 0, 0, 0, 0, 0, 0, 0,
10660      0, 0, 0, 0, 0, 0, 0, 0,
10661      0, 0, 0, 0, 0, 0, 0, 0,
10662      0, 0, 0, 0, 0, 0, 0, 0,
10663      0, 0, 0, 0, 0, 0, 0, num_ff,
10664 };
10665
10666 static const Q_UINT16 symmetricPairs[] = {
10667     0x0028, 0x0029, 0x0029, 0x0028, 0x003C, 0x003E, 0x003E, 0x003C,
10668     0x005B, 0x005D, 0x005D, 0x005B, 0x007B, 0x007D, 0x007D, 0x007B,
10669     0x2045, 0x2046, 0x2046, 0x2045, 0x207D, 0x207E, 0x207E, 0x207D,
10670     0x208D, 0x208E, 0x208E, 0x208D, 0x3008, 0x3009, 0x3009, 0x3008,
10671     0x300A, 0x300B, 0x300B, 0x300A, 0x300C, 0x300D, 0x300D, 0x300C,
10672     0x300E, 0x300F, 0x300F, 0x300E, 0x3010, 0x3011, 0x3011, 0x3010,
10673     0x3014, 0x3015, 0x3015, 0x3014, 0x3016, 0x3017, 0x3017, 0x3016,
10674     0x3018, 0x3019, 0x3019, 0x3018, 0x301A, 0x301B, 0x301B, 0x301A,
10675     0xFD3E, 0xFD3F, 0xFD3F, 0xFD3E, 0xFE59, 0xFE5A, 0xFE5A, 0xFE59,
10676     0xFE5B, 0xFE5C, 0xFE5C, 0xFE5B, 0xFE5D, 0xFE5E, 0xFE5E, 0xFE5D,
10677     0xFF08, 0xFF09, 0xFF09, 0xFF08, 0xFF3B, 0xFF3D, 0xFF3D, 0xFF3B,
10678     0xFF5B, 0xFF5D, 0xFF5D, 0xFF5B, 0xFF62, 0xFF63, 0xFF63, 0xFF62,
10679 };
10680
10681 static int symmetricPairsSize =
10682    sizeof(symmetricPairs)/sizeof(symmetricPairs[0]);
10683
10684 /*
10685  * ----------------------------------------------------------------------
10686  * End of unicode tables
10687  * ----------------------------------------------------------------------
10688  */
10689
10690 #endif
10691
10692
10693 static int ucstrcmp( const QString &as, const QString &bs )
10694 {
10695     const QChar *a = as.unicode();
10696     const QChar *b = bs.unicode();
10697     if ( a == b )
10698         return 0;
10699     if ( a == 0 )
10700         return 1;
10701     if ( b == 0 )
10702         return -1;
10703     int l=QMIN(as.length(),bs.length());
10704     while ( l-- && *a == *b )
10705         a++,b++;
10706     if ( l==-1 )
10707         return ( as.length()-bs.length() );
10708     return a->unicode() - b->unicode();
10709 }
10710
10711 static int ucstrncmp( const QChar *a, const QChar *b, int l )
10712 {
10713     while ( l-- && *a == *b )
10714         a++,b++;
10715     if ( l==-1 )
10716         return 0;
10717     return a->unicode() - b->unicode();
10718 }
10719
10720 static int ucstrnicmp( const QChar *a, const QChar *b, int l )
10721 {
10722     while ( l-- && a->lower() == b->lower() )
10723         a++,b++;
10724     if ( l==-1 )
10725         return 0;
10726     QChar al = a->lower();
10727     QChar bl = b->lower();
10728     return al.unicode() - bl.unicode();
10729 }
10730
10731 // NOT REVISED
10732 /*! \class QCharRef qstring.h
10733   \brief The QCharRef class is a helper class for QString.
10734
10735   It provides the ability to work on characters in a QString in a natural
10736   fashion.
10737
10738   When you get an object of type QCharRef, you can assign to it, which
10739   will operate on the string from which you got it.  That is its whole
10740   purpose in life.  It becomes invalid once further modifications are
10741   made to the string: If you want to keep it, copy it into a QChar.
10742
10743   Most of the QChar member functions also exist in QCharRef.  However,
10744   they are not explicitly documented here.
10745
10746   \sa QString::operator[]() QString::at() QChar
10747 */
10748
10749 /*! \class QChar qstring.h
10750
10751 \brief The QChar class provides a light-weight Unicode character.
10752
10753 Unicode characters are (so far) 16-bit entities without any markup or
10754 structure.  This class represents such an entity.  It is rather
10755 light-weight, so it can be used everywhere.  Most compilers treat it
10756 approximately like "short int".  (In a few years, it may be necessary
10757 to make QChar 32-bit, once more than 65536 Unicode code points have
10758 been defined and come into use.)
10759
10760 QChar provides a full complement of testing/classification functions,
10761 conversion to and from other formats, from composed to decomposed
10762 unicode, and will try to compare and case-convert if you ask it to.
10763
10764 The classification functions include functions like those in ctype.h,
10765 but operating on the full range of unicode characters.  They all
10766 return TRUE if the character is a certain type of character, and FALSE
10767 otherwise.
10768
10769 These functions are: isNull() (returns TRUE if the character is
10770 U+0000), isPrint() (TRUE if the character is any sort of printable
10771 character, including whitespace), isPunct() (any sort of punctuation),
10772 isMark() (Unicode Marks), isLetter (letters), isNumber() (any sort of
10773 numeric characters), isLetterOrNumber(),  and isDigit() (decimal digits).
10774 All of these are wrappers around category(), which returns the
10775 unicode-defined category of each character.
10776
10777 QChar further provides direction(), which indicates the "natural"
10778 writing direction of this character, joining(), which indicates how
10779 this character joins with its neighbors (needed mostly for Arabic)
10780 and finally mirrored(), which indicates whether this character needs
10781 to be mirrored when it is printed in its unnatural writing
10782 direction.
10783
10784 Composed Unicode characters (like &aring;) can be converted to
10785 decomposed Unicode ("a" followed by "ring above") using
10786 decomposition().
10787
10788 In Unicode, comparison is not necessarily possible, and case
10789 conversion is at best very hard.  Unicode, covering the "entire"
10790 globe, also includes a globe-sized collection of case and sorting
10791 problems.  Qt tries, but not very hard: operator== and friends will do
10792 comparison based purely on the numeric Unicode value (code point) of
10793 the characters, and upper() and lower() will do case changes when the
10794 character has a well-defined upper/lower-case equivalent. There is no
10795 provision for locale-dependent case folding rules or comparison: These
10796 functions are meant to be fast, so they can be used unambiguously in
10797 data structures.
10798
10799 The conversion functions include unicode() (to a scalar), latin1() (to
10800 scalar, but converts all non-Latin1 characters to 0), row() (gives the
10801 Unicode row), cell() (gives the unicode cell), digitValue() (gives the
10802 integer value of any of the numerous digit characters), and a host of
10803 constructors.
10804
10805 \sa QString QCharRef \link unicode.html About Unicode \endlink
10806 */
10807
10808 /*! \enum QChar::Category
10809
10810 This enum maps the Unicode character categories.  The currently known
10811 categories are: <ul>
10812
10813 <li> \c NoCategory - used when Qt is dazed and confused and cannot
10814 make sense of anything.
10815
10816 <li> \c Mark_NonSpacing - (Mn) -
10817
10818 <li> \c Mark_SpacingCombining - (Mc) -
10819
10820 <li> \c Mark_Enclosing - (Me) -
10821
10822 <li> \c Number_DecimalDigit - (Nd) -
10823
10824 <li> \c Number_Letter - (Nl) -
10825
10826 <li> \c Number_Other - (No) -
10827
10828 <li> \c Separator_Space - (Zs) -
10829
10830 <li> \c Separator_Line - (Zl) -
10831
10832 <li> \c Separator_Paragraph - (Zp) -
10833
10834 <li> \c Other_Control - (Cc) -
10835
10836 <li> \c Other_Format - (Cf) -
10837
10838 <li> \c Other_Surrogate - (Cs) -
10839
10840 <li> \c Other_PrivateUse - (Co) -
10841
10842 <li> \c Other_NotAssigned - (Cn) -
10843
10844 <li> \c Letter_Uppercase - (Lu) -
10845
10846 <li> \c Letter_Lowercase - (Ll) -
10847
10848 <li> \c Letter_Titlecase - (Lt) -
10849
10850 <li> \c Letter_Modifier - (Lm) -
10851
10852 <li> \c Letter_Other - (Lo) -
10853
10854 <li> \c Punctuation_Connector - (Pc) -
10855
10856 <li> \c Punctuation_Dask - (Pd) -
10857
10858 <li> \c Punctuation_Open - (Ps) -
10859
10860 <li> \c Punctuation_Close - (Pe) -
10861
10862 <li> \c Punctuation_InitialQuote - (Pi) -
10863
10864 <li> \c Punctuation_FinalQuote - (Pf) -
10865
10866 <li> \c Punctuation_Other - (Po) -
10867
10868 <li> \c Symbol_Math - (Sm) -
10869
10870 <li> \c Symbol_Currency - (Sc) -
10871
10872 <li> \c Symbol_Modifier - (Sk) -
10873
10874 <li> \c Symbol_Other - (So) -
10875
10876 </ul>
10877 */
10878
10879 /*! \enum QChar::Direction
10880
10881   This enum type defines the Unicode direction attributes.
10882   See <a href="http://www.unicode.org">the Unicode Standard</a>
10883   for a description of the values.
10884
10885   In order to conform to C/C++ naming conventions "Dir" is
10886   prepended to the codes used in The Unicode Standard.
10887 */
10888
10889 /*! \enum QChar::Decomposition
10890
10891   This enum type defines the Unicode decomposition attributes.
10892   See <a href="http://www.unicode.org">the Unicode Standard</a>
10893   for a description of the values.
10894 */
10895
10896 /*! \enum QChar::Joining
10897
10898   This enum type defines the Unicode decomposition attributes.
10899   See <a href="http://www.unicode.org">the Unicode Standard</a>
10900   for a description of the values.
10901 */
10902
10903
10904
10905 /*! \fn QChar::QChar()
10906
10907 Constructs a null QChar (one that isNull()).
10908 */
10909
10910
10911 /*! \fn QChar::QChar( char c )
10912
10913 Constructs a QChar corresponding to ASCII/Latin1 character \a c.
10914 */
10915
10916
10917 /*! \fn QChar::QChar( uchar c )
10918
10919 Constructs a QChar corresponding to ASCII/Latin1 character \a c.
10920 */
10921
10922
10923 /*! \fn QChar::QChar( uchar c, uchar r )
10924
10925 Constructs a QChar for Unicode cell \a c in row \a r.
10926 */
10927
10928
10929 /*! \fn QChar::QChar( const QChar& c )
10930
10931 Constructs a copy of \a c.  This is a deep copy, if such a
10932 light-weight object can be said to have deep copies.
10933 */
10934
10935
10936 /*! \fn QChar::QChar( ushort rc )
10937
10938 Constructs a QChar for the character with Unicode code point \a rc.
10939 */
10940
10941
10942 /*! \fn QChar::QChar( short rc )
10943
10944 Constructs a QChar for the character with Unicode code point \a rc.
10945 */
10946
10947
10948 /*! \fn QChar::QChar( uint rc )
10949
10950 Constructs a QChar for the character with Unicode code point \a rc.
10951 */
10952
10953
10954 /*! \fn QChar::QChar( int rc )
10955
10956 Constructs a QChar for the character with Unicode code point \a rc.
10957 */
10958
10959
10960 /*! \fn bool  QChar::networkOrdered ()
10961
10962   Returns TRUE if this character is in network byte order (MSB first),
10963   and FALSE if it is not.  This is a platform-dependent property, so
10964   we strongly advise against using this function in portable code.
10965 */
10966
10967
10968 /*!
10969   \fn bool QChar::isNull() const
10970   Returns TRUE if the characters is the unicode character 0x0000,
10971   ie. ASCII NUL.
10972 */
10973
10974 /*!
10975   \fn uchar QChar::cell () const
10976   Returns the cell (least significant byte) of the Unicode character.
10977 */
10978 /*!
10979   \fn uchar QChar::row () const
10980   Returns the row (most significant byte) of the Unicode character.
10981 */
10982 /*!
10983   \fn uchar& QChar::cell ()
10984   Returns a reference to the cell (least significant byte) of the Unicode character.
10985 */
10986 /*!
10987   \fn uchar& QChar::row ()
10988   Returns a reference to the row (most significant byte) of the Unicode character.
10989 */
10990
10991 /*!
10992   Returns whether the character is a printable character.  This is
10993   any character not of category Cc or Cn.  Note that this gives no indication
10994   of whether the character is available in some font.
10995 */
10996 bool QChar::isPrint() const
10997 {
10998     Category c = category();
10999     return !(c == Other_Control || c == Other_NotAssigned);
11000 }
11001
11002 /*!
11003   Returns whether the character is a separator
11004   character (Separator_* categories).
11005 */
11006 bool QChar::isSpace() const
11007 {
11008     if( !row() )
11009         if( cell() >= 9 && cell() <=13 ) return TRUE;
11010     Category c = category();
11011     return c >= Separator_Space && c <= Separator_Paragraph;
11012 }
11013
11014 /*!
11015   Returns whether the character is a mark (Mark_* categories).
11016 */
11017 bool QChar::isMark() const
11018 {
11019     Category c = category();
11020     return c >= Mark_NonSpacing && c <= Mark_Enclosing;
11021 }
11022
11023 /*!
11024   Returns whether the character is punctuation (Punctuation_* categories).
11025 */
11026 bool QChar::isPunct() const
11027 {
11028     Category c = category();
11029     return (c >= Punctuation_Connector && c <= Punctuation_Other);
11030 }
11031
11032 /*!
11033   Returns whether the character is a letter (Letter_* categories).
11034 */
11035 bool QChar::isLetter() const
11036 {
11037     Category c = category();
11038     return (c >= Letter_Uppercase && c <= Letter_Other);
11039 }
11040
11041 /*!
11042   Returns whether the character is a number (of any sort - Number_* categories).
11043
11044   \sa isDigit()
11045 */
11046 bool QChar::isNumber() const
11047 {
11048     Category c = category();
11049     return c >= Number_DecimalDigit && c <= Number_Other;
11050 }
11051
11052 /*!
11053   Returns whether the character is a letter or number (Letter_* or Number_* categories).
11054 */
11055 bool QChar::isLetterOrNumber() const
11056 {
11057     Category c = category();
11058     return (c >= Letter_Uppercase && c <= Letter_Other)
11059         || (c >= Number_DecimalDigit && c <= Number_Other);
11060 }
11061
11062
11063 /*!
11064   Returns whether the character is a decimal digit (Number_DecimalDigit).
11065   */
11066 bool QChar::isDigit() const
11067 {
11068     return (category() == Number_DecimalDigit);
11069 }
11070
11071 /*!
11072   Returns the numeric value of the digit, or -1 if the character is not
11073   a digit.
11074 */
11075 int QChar::digitValue() const
11076 {
11077 #ifndef QT_NO_UNICODETABLES
11078     const Q_INT8 *dec_row = decimal_info[row()];
11079     if( !dec_row )
11080         return -1;
11081     return decimal_info[row()][cell()];
11082 #else
11083     // ##### just latin1
11084     if ( rw != 0 || cl < '0' || cl > '9' )
11085         return -1;
11086     else
11087         return cl - '0';
11088 #endif
11089 }
11090
11091 /*!
11092   Returns the character category.
11093
11094   \sa Category
11095 */
11096 QChar::Category QChar::category() const
11097 {
11098 #ifndef QT_NO_UNICODETABLES
11099     return (Category)(unicode_info[row()][cell()]);
11100 #else
11101 // ### just ASCII
11102     if ( rw == 0 ) {
11103         return (Category)(ui_00[cell()]);
11104     }
11105     return Letter_Uppercase; //#######
11106 #endif
11107 }
11108
11109 /*!
11110   Returns the characters directionality.
11111
11112   \sa Direction
11113 */
11114 QChar::Direction QChar::direction() const
11115 {
11116 #ifndef QT_NO_UNICODETABLES
11117     const Q_UINT8 *rowp = direction_info[row()];
11118     if(!rowp) return QChar::DirL;
11119     return (Direction) ( *(rowp+cell()) &0x1f );
11120 #else
11121     return DirL;
11122 #endif
11123 }
11124
11125 /*!
11126   This function is not supported (it may change to use Unicode
11127   character classes).
11128
11129   Returns information about the joining properties of the
11130   character (needed for arabic).
11131 */
11132 QChar::Joining QChar::joining() const
11133 {
11134 #ifndef QT_NO_UNICODETABLES
11135     const Q_UINT8 *rowp = direction_info[row()];
11136     if ( !rowp )
11137         return QChar::OtherJoining;
11138     return (Joining) ((*(rowp+cell()) >> 5) &0x3);
11139 #else
11140     return OtherJoining;
11141 #endif
11142 }
11143
11144
11145 /*!
11146   Returns whether the character is a mirrored character (one that
11147   should be reversed if the text direction is reversed).
11148 */
11149 bool QChar::mirrored() const
11150 {
11151 #ifndef QT_NO_UNICODETABLES
11152     const Q_UINT8 *rowp = direction_info[row()];
11153     if ( !rowp )
11154         return FALSE;
11155     return *(rowp+cell())>128;
11156 #else
11157     return FALSE;
11158 #endif
11159 }
11160
11161 /*!
11162   Returns the mirrored char if this character is a mirrored char, the char
11163   itself otherwise
11164 */
11165 QChar QChar::mirroredChar() const
11166 {
11167 #ifndef QT_NO_UNICODETABLES
11168     if(!mirrored()) return *this;
11169
11170     int i;
11171     int c = unicode();
11172     for (i = 0; i < symmetricPairsSize; i += 2) {
11173         if (symmetricPairs[i] == c)
11174           return symmetricPairs[i+1];
11175     }
11176     return 0;
11177 #else
11178     return *this;
11179 #endif
11180 }
11181
11182 /*!
11183   Decomposes a character into its parts. Returns QString::null if
11184   no decomposition exists.
11185 */
11186 QString QChar::decomposition() const
11187 {
11188 #ifndef QT_NO_UNICODETABLES
11189     const Q_UINT16 *r = decomposition_info[row()];
11190     if(!r) return QString::null;
11191
11192     Q_UINT16 pos = r[cell()];
11193     if(!pos) return QString::null;
11194     pos+=2;
11195
11196     QString s;
11197     Q_UINT16 c;
11198     while((c = decomposition_map[pos++]) != 0) s += QChar(c);
11199
11200     return s;
11201 #else
11202     return null;
11203 #endif
11204 }
11205
11206 /*!
11207   Returns the tag defining the composition of the character.
11208   Returns QChar::Single if no decomposition exists.
11209 */
11210 QChar::Decomposition QChar::decompositionTag() const
11211 {
11212 #ifndef QT_NO_UNICODETABLES
11213     const Q_UINT16 *r = decomposition_info[row()];
11214     if(!r) return QChar::Single;
11215
11216     Q_UINT16 pos = r[cell()];
11217     if(!pos) return QChar::Single;
11218
11219     return (QChar::Decomposition) decomposition_map[pos];
11220 #else
11221     return Single; // ########### FIX eg. just latin1
11222 #endif
11223 }
11224
11225 /*!
11226   Returns the lowercase equivalent if the character is uppercase,
11227   or the character itself otherwise.
11228 */
11229 QChar QChar::lower() const
11230 {
11231 #ifndef QT_NO_UNICODETABLES
11232     if(category() != Letter_Uppercase) return *this;
11233     Q_UINT16 lower = *(case_info[row()]+cell());
11234     if(lower == 0) return *this;
11235     return lower;
11236 #else
11237     if (row())
11238         return *this;
11239     else
11240         return QChar(tolower(latin1()));
11241 #endif
11242 }
11243
11244 /*!
11245   Returns the uppercase equivalent if the character is lowercase,
11246   or the character itself otherwise.
11247 */
11248 QChar QChar::upper() const
11249 {
11250 #ifndef QT_NO_UNICODETABLES
11251     if(category() != Letter_Lowercase) return *this;
11252     Q_UINT16 upper = *(case_info[row()]+cell());
11253     if(upper == 0) return *this;
11254     return upper;
11255 #else
11256     if (row())
11257         return *this;
11258     else
11259         return QChar(toupper(latin1()));
11260 #endif
11261 }
11262
11263 /*!
11264   \fn QChar::operator char() const
11265
11266   Returns the Latin1 character equivalent to the QChar,
11267   or 0.  This is mainly useful for non-internationalized software.
11268
11269   \sa unicode()
11270 */
11271
11272 /*!
11273   \fn ushort QChar::unicode() const
11274
11275   Returns the numeric Unicode value equal to the QChar.  Normally, you
11276   should use QChar objects as they are equivalent, but for some low-level
11277   tasks (eg. indexing into an array of Unicode information), this function
11278   is useful.
11279 */
11280
11281 /*****************************************************************************
11282   Documentation of QChar related functions
11283  *****************************************************************************/
11284
11285 /*!
11286   \fn int operator==( QChar c1, QChar c2 )
11287   \relates QChar
11288
11289   Returns TRUE if \a c1 and \a c2 are the same Unicode character.
11290 */
11291
11292 /*!
11293   \fn int operator==( char ch, QChar c )
11294   \relates QChar
11295
11296   Returns TRUE if \a c is the ASCII/Latin1 character \a ch.
11297 */
11298
11299 /*!
11300   \fn int operator==( QChar c, char ch )
11301   \relates QChar
11302
11303   Returns TRUE if \a c is the ASCII/Latin1 character \a ch.
11304 */
11305
11306 /*!
11307   \fn int operator!=( QChar c1, QChar c2 )
11308   \relates QChar
11309
11310   Returns TRUE if \a c1 and \a c2 are not the same Unicode character.
11311 */
11312
11313 /*!
11314   \fn int operator!=( char ch, QChar c )
11315   \relates QChar
11316
11317   Returns TRUE if \a c is not the ASCII/Latin1 character \a ch.
11318 */
11319
11320 /*!
11321   \fn int operator!=( QChar c, char ch )
11322   \relates QChar
11323
11324   Returns TRUE if \a c is not the ASCII/Latin1 character \a ch.
11325 */
11326
11327 /*!
11328   \fn int operator<=( QChar c1, QChar c2 )
11329   \relates QChar
11330
11331   Returns TRUE if the numeric Unicode value of \a c1 is less than that
11332   of \a c2, or they are the same Unicode character.
11333 */
11334
11335 /*!
11336   \fn int operator<=( QChar c, char ch )
11337   \relates QChar
11338
11339   Returns TRUE if the numeric Unicode value of \a c is less than or
11340   equal to that of the ASCII/Latin1 character \a ch.
11341 */
11342
11343 /*!
11344   \fn int operator<=( char ch, QChar c )
11345   \relates QChar
11346
11347   Returns TRUE if the numeric Unicode value of the ASCII/Latin1
11348   character \a ch is less than or equal to that of \a c.
11349 */
11350
11351 /*!
11352   \fn int operator>=( QChar c1, QChar c2 )
11353   \relates QChar
11354
11355   Returns TRUE if the numeric Unicode value of \a c1 is greater than that
11356   of \a c2, or they are the same Unicode character.
11357 */
11358
11359 /*!
11360   \fn int operator>=( QChar c, char ch )
11361   \relates QChar
11362
11363   Returns TRUE if the numeric Unicode value of \a c is greater than or
11364   equal to that of the ASCII/Latin1 character \a ch.
11365 */
11366
11367 /*!
11368   \fn int operator>=( char ch, QChar c )
11369   \relates QChar
11370
11371   Returns TRUE if the numeric Unicode value of the ASCII/Latin1
11372   character \a ch is greater than or equal to that of \a c.
11373 */
11374
11375 /*!
11376   \fn int operator<( QChar c1, QChar c2 )
11377   \relates QChar
11378
11379   Returns TRUE if the numeric Unicode value of \a c1 is less than that
11380   of \a c2.
11381 */
11382
11383 /*!
11384   \fn int operator<( QChar c, char ch )
11385   \relates QChar
11386
11387   Returns TRUE if the numeric Unicode value of \a c is less than that
11388   of the ASCII/Latin1 character \a ch.
11389 */
11390
11391 /*!
11392   \fn int operator<( char ch, QChar c )
11393   \relates QChar
11394
11395   Returns TRUE if the numeric Unicode value of the ASCII/Latin1
11396   character \a ch is less than that of \a c.
11397 */
11398
11399 /*!
11400   \fn int operator>( QChar c1, QChar c2 )
11401   \relates QChar
11402
11403   Returns TRUE if the numeric Unicode value of \a c1 is greater than
11404   that of \a c2.
11405 */
11406
11407 /*!
11408   \fn int operator>( QChar c, char ch )
11409   \relates QChar
11410
11411   Returns TRUE if the numeric Unicode value of \a c is greater than
11412   that of the ASCII/Latin1 character \a ch.
11413 */
11414
11415 /*!
11416   \fn int operator>( char ch, QChar c )
11417   \relates QChar
11418
11419   Returns TRUE if the numeric Unicode value of the ASCII/Latin1
11420   character \a ch is greater than that of \a c.
11421 */
11422
11423 #ifndef QT_NO_UNICODETABLES
11424
11425 // small class used internally in QString::Compose()
11426 class QLigature
11427 {
11428 public:
11429     QLigature( QChar c );
11430
11431     Q_UINT16 first() { cur = ligatures; return cur ? *cur : 0; }
11432     Q_UINT16 next() { return cur && *cur ? *(cur++) : 0; }
11433     Q_UINT16 current() { return cur ? *cur : 0; }
11434
11435     int match(QString & str, unsigned int index);
11436     QChar head();
11437     QChar::Decomposition tag();
11438
11439 private:
11440     Q_UINT16 *ligatures;
11441     Q_UINT16 *cur;
11442 };
11443
11444 QLigature::QLigature( QChar c )
11445 {
11446     const Q_UINT16 *r = ligature_info[c.row()];
11447     if( !r )
11448         ligatures = 0;
11449     else
11450     {
11451         const Q_UINT16 pos = r[c.cell()];
11452         ligatures = (Q_UINT16 *)&(ligature_map[pos]);
11453     }
11454     cur = ligatures;
11455 }
11456
11457 QChar QLigature::head()
11458 {
11459     if(current())
11460         return QChar(decomposition_map[current()+1]);
11461
11462     return QChar::null;
11463 }
11464
11465 QChar::Decomposition QLigature::tag()
11466 {
11467     if(current())
11468         return (QChar::Decomposition) decomposition_map[current()];
11469
11470     return QChar::Canonical;
11471 }
11472
11473 int QLigature::match(QString & str, unsigned int index)
11474 {
11475     unsigned int i=index;
11476
11477     if(!current()) return 0;
11478
11479     Q_UINT16 lig = current() + 2;
11480     Q_UINT16 ch;
11481
11482     while ((i < str.length()) && (ch = decomposition_map[lig])) {
11483         if (str[(int)i] != QChar(ch))
11484             return 0;
11485         i++; lig++;
11486     }
11487
11488     if (!decomposition_map[lig])
11489     {
11490         return i-index;
11491     }
11492     return 0;
11493 }
11494
11495 // this function is just used in QString::compose()
11496 static inline bool format(QChar::Decomposition tag, QString & str,
11497                           int index, int len)
11498 {
11499     unsigned int l = index + len;
11500     unsigned int r = index;
11501
11502     bool right = FALSE;
11503
11504     bool left = ((l < str.length()) &&
11505             ((str[(int)l].joining() == QChar::Dual) ||
11506              (str[(int)l].joining() == QChar::Right)));
11507     if (r > 0) {
11508         r--;
11509         //printf("joining(right) = %d\n", str[(int)r].joining());
11510         right = (str[(int)r].joining() == QChar::Dual);
11511     }
11512
11513
11514     switch (tag) {
11515     case QChar::Medial:
11516         return (left && right);
11517     case QChar::Initial:
11518         return (left && !right);
11519     case QChar::Final:
11520         return (right);// && !left);
11521     case QChar::Isolated:
11522     default:
11523         return (!right && !left);
11524     }
11525 } // format()
11526 #endif
11527
11528 /*
11529   QString::compose() and visual() were developed by Gordon Tisher
11530   <tisher@uniserve.ca>, with input from Lars Knoll <knoll@mpi-hd.mpg.de>,
11531   who developed the unicode data tables.
11532 */
11533 /*!
11534   Note that this function is not supported in Qt 2.0, and is merely
11535   for experimental and illustrative purposes.  It is mainly of interest
11536   to those experimenting with Arabic and other composition-rich texts.
11537
11538   Applies possible ligatures to a QString, useful when composition-rich
11539   text requires rendering with glyph-poor fonts, but also
11540   makes compositions such as QChar(0x0041) ('A') and QChar(0x0308)
11541   (Unicode accent diaresis) giving QChar(0x00c4) (German A Umlaut).
11542 */
11543 void QString::compose()
11544 {
11545 #ifndef QT_NO_UNICODETABLES
11546     unsigned int index=0, len;
11547     unsigned int cindex = 0;
11548
11549     QChar code, head;
11550
11551     QArray<QChar> dia;
11552
11553     QString composed = *this;
11554
11555     while (index < length()) {
11556         code = at(index);
11557         //printf("\n\nligature for 0x%x:\n", code.unicode());
11558         QLigature ligature(code);
11559         ligature.first();
11560         while(ligature.current()) {
11561             if ((len = ligature.match(*this, index)) != 0) {
11562                 head = ligature.head();
11563                 unsigned short code = head.unicode();
11564                 // we exclude Arabic presentation forms A and a few
11565                 // other ligatures, which are undefined in most fonts
11566                 if(!(code > 0xfb50 && code < 0xfe80) &&
11567                    !(code > 0xfb00 && code < 0xfb2a)) {
11568                                 // joining info is only needed for arabic
11569                     if (format(ligature.tag(), *this, index, len)) {
11570                         //printf("using ligature 0x%x, len=%d\n",code,len);
11571                         // replace letter
11572                         composed.replace(cindex, len, QChar(head));
11573                         index += len-1;
11574                         // we continue searching in case we have a final
11575                         // form because medial ones are preferred.
11576                         if ( len != 1 || ligature.tag() !=QChar::Final )
11577                             break;
11578                     }
11579                 }
11580             }
11581             ligature.next();
11582         }
11583         cindex++;
11584         index++;
11585     }
11586     *this = composed;
11587 #endif
11588 }
11589
11590 static QChar LRM ((ushort)0x200e);
11591 static QChar RLM ((ushort)0x200f);
11592 static QChar LRE ((ushort)0x202a);
11593 static QChar RLE ((ushort)0x202b);
11594 static QChar RLO ((ushort)0x202e);
11595 static QChar LRO ((ushort)0x202d);
11596 static QChar PDF ((ushort)0x202c);
11597
11598 #if 0
11599 static inline bool is_arabic(unsigned short x) {
11600     return (((x >= 0x0600) && (x <= 0x07bf)) ||
11601             ((x >= 0xfb50) && (x <= 0xfdff)) ||
11602             ((x >= 0xfe70) && (x <= 0xfeff)));
11603 }
11604 #endif
11605
11606 #ifndef QT_NO_UNICODETABLES
11607 static inline bool is_neutral(unsigned short dir) {
11608   return ((dir == QChar::DirB) ||
11609                   (dir == QChar::DirS) ||
11610                   (dir == QChar::DirWS) ||
11611                   (dir == QChar::DirON) ||
11612                   (dir == QChar::DirNSM));
11613 }
11614 #endif
11615
11616 /*!
11617 This function returns the directionality of the string.
11618
11619 \returns a value of DirLTR, DirRTL, DirMixed or DirNeutral that indicates
11620 if the entire text represented by this text is unidirectional,
11621 and which direction, or if it is mixed-directional or all characters are neutral.
11622 */
11623 QString::Direction QString::direction() const
11624 {
11625 #ifndef QT_NO_UNICODETABLES
11626         // find direction
11627         unsigned char resultDir = DirNeutral;
11628         for (unsigned int pos = 0; pos < length(); pos++)
11629         {
11630                 if ((at(pos) != RLE) &&
11631                         (at(pos) != LRE) &&
11632                         (at(pos) != RLO) &&
11633                         (at(pos) != LRO) &&
11634                         (at(pos).direction() > 1) &&
11635                         (at(pos).direction() != QChar::DirAL)) // not R and not L
11636                         continue;
11637
11638                 if ((at(pos).direction() == QChar::DirR) ||
11639                         (at(pos).direction() == QChar::DirAL) ||
11640                         (at(pos) == RLE) ||
11641                         (at(pos) == RLO))
11642                         resultDir |= DirRTL;
11643                 else
11644                         resultDir |= DirLTR;
11645                 if (resultDir == DirMixed)
11646                         return DirMixed;
11647         }
11648         return static_cast<Direction>(resultDir);
11649 #else
11650         return DirLTR;
11651 #endif
11652 }
11653
11654 /*!
11655 This function returns the basic directionality of the string. Useful to find the right
11656 alignment.
11657
11658 The base direction is derived from the first character in the string
11659 with bidirectional character type L, R, or AL.
11660 If the first such character has type L, DirLTR is returned.
11661 If the first such character has type R or AL, DirRTL is returned.
11662 If the string does not contain any character of these types, then DirNeutral is returned.
11663 This is a lightweight function for use when only the base direction is needed and
11664 no further bidi processing of the text is needed.
11665
11666 \returns DirRTL, DirLTR or DirNeutral
11667 */
11668 QString::Direction QString::basicDirection() const
11669 {
11670 #ifndef QT_NO_UNICODETABLES
11671         // find base direction
11672         unsigned int pos = 0;
11673         while ((pos < length()) &&
11674                 (at(pos) != RLE) &&
11675                 (at(pos) != LRE) &&
11676                 (at(pos) != RLO) &&
11677                 (at(pos) != LRO) &&
11678                 (at(pos).direction() > 1) &&
11679                 (at(pos).direction() != QChar::DirAL)) // not R and not L
11680                 pos++;
11681
11682         if (pos == length())
11683                 return DirNeutral;
11684
11685         if ((at(pos).direction() == QChar::DirR) ||
11686                 (at(pos).direction() == QChar::DirAL) ||
11687                 (at(pos) == RLE) ||
11688                 (at(pos) == RLO))
11689                 return DirRTL;
11690         return DirLTR;
11691 #else
11692         return DirLTR;
11693 #endif
11694 }
11695
11696 #ifndef QT_NO_UNICODETABLES
11697 // reverses part of the QChar array to get visual ordering
11698 // called from QString::visual()
11699 //
11700 static unsigned int reverse( QString &chars, unsigned char *level,
11701                              unsigned int a, unsigned int b)
11702 {
11703     unsigned int c = a;
11704     unsigned char lev = level[c];
11705
11706     while ((c < b) && (level[c] >= lev)) {
11707         if (level[c] > lev)
11708             c = reverse(chars, level, c, b);
11709         c++;
11710     }
11711
11712     if (lev > 0) {
11713         QChar temp;
11714         unsigned int d = a, e = c-1;
11715         while (d < e) {
11716             temp = chars[(int)d];
11717             chars[(int)d] = chars[(int)e];
11718             chars[(int)e] = temp;
11719
11720             d++; e--;
11721         }
11722     }
11723
11724     return c;
11725 }
11726
11727 // small class used for the ordering algorithm in QString::visual()
11728 class QBidiState {
11729 public:
11730     unsigned char level;
11731     signed   char override;
11732
11733     QBidiState(unsigned char l, signed char o) : level(l), override(o) {};
11734 };
11735
11736 // matrix for resolving neutral types
11737
11738 #define NEG1 (QChar::Direction)(-1)
11739
11740 static QChar::Direction resolv[5][5] =
11741 {
11742         { NEG1,         QChar::DirR, QChar::DirL, QChar::DirEN, QChar::DirAN },
11743         { QChar::DirR,  QChar::DirR, NEG1,        QChar::DirR,  QChar::DirR  },
11744         { QChar::DirL,  NEG1,        QChar::DirL, QChar::DirL,  NEG1         },
11745         { QChar::DirEN, QChar::DirR, QChar::DirL, QChar::DirEN, QChar::DirR  },
11746         { QChar::DirAN, QChar::DirR, NEG1,        NEG1,         QChar::DirAN }
11747 };
11748
11749 #endif
11750
11751 /*!
11752   This function returns the QString ordered visually. Useful for
11753   painting the string or when transforming to a visually ordered
11754   encoding.
11755 */
11756 QString QString::visual(int index, int len)
11757 {
11758 #ifndef QT_NO_UNICODETABLES
11759     // #### This needs much more optimizing - it is called for
11760     // #### every text operation.
11761
11762     unsigned char *level;
11763     QChar::Direction *dir;
11764     unsigned char base = 0;
11765
11766     unsigned int l = length();
11767
11768     // check bounds
11769     if (len == -1)
11770         len = length()-index;
11771     if ((uint)index > l)
11772         return QString::null;
11773
11774     // find base direction
11775     unsigned int pos = 0;
11776     while ((pos < length()) &&
11777            (at(pos) != RLE) &&
11778            (at(pos) != LRE) &&
11779            (at(pos) != RLO) &&
11780            (at(pos) != LRO) &&
11781            (at(pos).direction() > 1) &&
11782            (at(pos).direction() != QChar::DirAL)
11783            ) // not R and not L
11784         pos++;
11785
11786     if ((pos < length()) &&
11787             ((at(pos).direction() == QChar::DirR) ||
11788              (at(pos).direction() == QChar::DirAL) ||
11789             (at(pos) == RLE) ||
11790             (at(pos) == RLO)))
11791         base = 1;
11792
11793     // is there any BiDi char at all?
11794     if ( base == 0 && pos == l ) {
11795         return mid(index, len);
11796     }
11797
11798
11799     level = new uchar[l];
11800     dir   = new QChar::Direction[l];
11801
11802     // explicit override pass
11803     //unsigned int code_count = 0;
11804
11805     QStack<QBidiState> stack;
11806     stack.setAutoDelete(TRUE);
11807
11808     unsigned char    clevel   = base;
11809     signed char      override = -1;
11810
11811     for (pos = 0; pos < l; pos++) {
11812
11813         if (at(pos) == RLE) {
11814             //code_count++;
11815             stack.push(new QBidiState(clevel, override));
11816             if (clevel < 254)
11817                 clevel += 1 + clevel % 2;
11818             override = -1;
11819         }
11820         else if (at(pos) == LRE) {
11821             //code_count++;
11822             stack.push(new QBidiState(clevel, override));
11823             if (clevel < 254)
11824                 clevel += 2 - clevel % 2;
11825             override = -1;
11826         }
11827         else if (at(pos) == RLO) {
11828             //code_count++;
11829             stack.push(new QBidiState(clevel, override));
11830             if (clevel < 254)
11831                 clevel += 1 + clevel % 2;
11832             override = QChar::DirR;
11833         }
11834         else if (at(pos) == LRO) {
11835             //code_count++;
11836             stack.push(new QBidiState(clevel, override));
11837             if (clevel < 254)
11838                 clevel += 2 - clevel % 2;
11839             override = QChar::DirL;
11840         }
11841         else if (at(pos) == PDF) {
11842             //code_count++;
11843             if (!stack.isEmpty()) {
11844                 override = stack.top()->override;
11845                 clevel   = stack.top()->level;
11846                 stack.remove();
11847             }
11848         }
11849
11850         // TODO: catch block separators (newlines, paras, etc.)
11851
11852         level[pos] = clevel;
11853         if (override != -1)
11854             dir[pos] = (QChar::Direction) override;
11855         else
11856             dir[pos] = at(pos).direction();
11857     }
11858
11859     // weak type pass
11860     for (pos = 0; pos < l; pos++) {
11861
11862         int i;
11863
11864         switch (at(pos).direction()) {
11865         case QChar::DirEN:
11866             i   = pos-1;
11867             while ((i >= 0) &&
11868                    !(at(i).direction() == QChar::DirAN) &&
11869                    !(at(i).direction() == QChar::DirAL) &&
11870                    !(at(i).direction() == QChar::DirB))
11871                 i--;
11872
11873             if ((i >= 0) &&
11874                 ((at(i).direction() == QChar::DirAN) ||
11875                  (at(i).direction() == QChar::DirAL)))
11876                 dir[pos] = QChar::DirAN;
11877
11878             break;
11879         case QChar::DirES:
11880         case QChar::DirCS:
11881             if ((pos > 0) && (pos < l-1) &&
11882                 (dir[pos-1] == dir[pos+1]))
11883                 dir[pos] = dir[pos-1];
11884             else
11885                 dir[pos] = QChar::DirON;
11886
11887             break;
11888         case QChar::DirET:
11889             if (((pos > 0) && (dir[pos-1] == QChar::DirEN)) ||
11890                 ((pos < l-1) && (dir[pos+1] == QChar::DirEN)))
11891                 dir[pos] = QChar::DirEN;
11892             else
11893                 dir[pos] = QChar::DirON;
11894
11895             break;
11896         case QChar::DirAL:
11897             dir[pos] = QChar::DirR;
11898             break;
11899         default:
11900             break;
11901         }
11902     }
11903
11904     // neutral type pass
11905     for (pos = 0; pos < l; pos++) {
11906           QChar::Direction left,right; // declaring l here shadowed previous l
11907
11908         if (is_neutral(dir[pos])) {
11909             if (pos > 0)
11910                 left = dir[pos-1];
11911             else
11912                 left = (base == 0 ? QChar::DirL : QChar::DirR);
11913
11914             int i = pos;
11915
11916             while ((i < (int)l-1) && is_neutral(dir[i+1]))
11917                 i++;
11918
11919             if (i < (int)l-1)
11920                 right = dir[i+1];
11921             else
11922                 right = (base == 0 ? QChar::DirL : QChar::DirR);
11923
11924             for (int j=pos; j <= i; j++) {
11925                   int a = 1, b = 1;
11926                   while ((a < 5) && (left != resolv[0][a]))
11927                         a++;
11928                   while ((b < 5) && (right != resolv[0][b]))
11929                         b++;
11930                   if ((a == 5) || (b == 5))
11931                         dir[j] = (base == 0 ? QChar::DirL : QChar::DirR);
11932                   else
11933                         dir[j] = resolv[a][b];
11934
11935                   if (dir[j] == (QChar::Direction)(-1))
11936                         dir[j] = (base == 0 ? QChar::DirL : QChar::DirR);
11937             }
11938         }
11939     }
11940
11941     // implicit level pass
11942     QChar::Direction prec = (base == 0 ? QChar::DirL : QChar::DirR);
11943
11944     for (pos = 0; pos < l; pos++) {
11945         if (level[pos] % 2) {
11946             switch (dir[pos]) {
11947             case QChar::DirL:
11948             case QChar::DirAN:
11949             case QChar::DirEN:
11950                 level[pos] += 1;
11951                 break;
11952             default:
11953                 break;
11954             }
11955         } else {
11956             switch (dir[pos]) {
11957             case QChar::DirL:
11958                                 // do nothing
11959                 break;
11960             case QChar::DirR:
11961                 level[pos] += 1;
11962                 break;
11963             case QChar::DirEN:
11964                 if (prec == QChar::DirL)
11965                     continue;
11966                                 // fall through
11967             case QChar::DirAN:
11968                 level[pos] += 2;
11969                 break;
11970             default:
11971                 break;
11972             }
11973         }
11974
11975         prec = dir[pos];
11976     }
11977
11978         // now do the work!
11979         QString ret(*this);
11980     reverse(ret, level, index, index+len);
11981
11982     delete [] level;
11983     delete [] dir;
11984
11985     return ret;
11986 #else
11987     return mid(index,len);
11988 #endif
11989 }
11990
11991
11992
11993 // These macros are used for efficient allocation of QChar strings.
11994 // IMPORTANT! If you change these, make sure you also change the
11995 // "delete unicode" statement in ~QStringData() in qstring.h correspondingly!
11996
11997 #define QT_ALLOC_QCHAR_VEC( N ) (QChar*) new char[ sizeof(QChar)*( N ) ]
11998 #define QT_DELETE_QCHAR_VEC( P ) delete[] ((char*)( P ))
11999
12000
12001 /*!
12002   This utility function converts the 8-bit string
12003   \a ba to Unicode, returning the result.
12004
12005   The caller is responsible for deleting the return value with delete[].
12006 */
12007
12008 QChar* QString::asciiToUnicode( const QByteArray& ba, uint* len )
12009 {
12010     if ( ba.isNull() ) {
12011         if ( len )
12012           *len = 0;
12013         return 0;
12014     }
12015     int l = 0;
12016     while ( l < (int)ba.size() && ba[l] )
12017         l++;
12018     const char* str = ba.data();
12019     QChar *uc = new QChar[ l ];   // Can't use macro, since function is public
12020     QChar *result = uc;
12021     if ( len )
12022         *len = l;
12023     while (l--)
12024         *uc++ = *str++;
12025     return result;
12026 }
12027
12028 static QChar* internalAsciiToUnicode( const QByteArray& ba, uint* len )
12029 {
12030     if ( ba.isNull() ) {
12031         if ( len )
12032             *len = 0;
12033         return 0;
12034     }
12035     int l = 0;
12036     while ( l < (int)ba.size() && ba[l] )
12037         l++;
12038     const char* str = ba.data();
12039     QChar *uc = QT_ALLOC_QCHAR_VEC( l );
12040     QChar *result = uc;
12041     if ( len )
12042         *len = l;
12043     while (l--)
12044         *uc++ = *str++;
12045     return result;
12046 }
12047
12048 /*!
12049   This utility function converts the NUL-terminated 8-bit string
12050   \a str to Unicode, returning the result and setting \a len to
12051   the length of the Unicode string.
12052
12053   The caller is responsible for deleting the return value with delete[].
12054 */
12055
12056 QChar* QString::asciiToUnicode( const char *str, uint* len, uint maxlen )
12057 {
12058     QChar* result = 0;
12059     uint l = 0;
12060     if ( str ) {
12061         if ( maxlen != (uint)-1 ) {
12062             while ( l < maxlen && str[l] )
12063                 l++;
12064         } else {
12065             // Faster?
12066             l = qstrlen(str);
12067         }
12068         QChar *uc = new QChar[ l ]; // Can't use macro since function is public
12069         result = uc;
12070         uint i = l;
12071         while ( i-- )
12072             *uc++ = *str++;
12073     }
12074     if ( len )
12075         *len = l;
12076     return result;
12077 }
12078
12079 static QChar* internalAsciiToUnicode( const char *str, uint* len,
12080                                       uint maxlen = (uint)-1 )
12081 {
12082     QChar* result = 0;
12083     uint l = 0;
12084     if ( str ) {
12085         if ( maxlen != (uint)-1 ) {
12086             while ( l < maxlen && str[l] )
12087                 l++;
12088         } else {
12089             // Faster?
12090             l = qstrlen(str);
12091         }
12092         QChar *uc = QT_ALLOC_QCHAR_VEC( l );
12093         result = uc;
12094         uint i = l;
12095         while ( i-- )
12096             *uc++ = *str++;
12097     }
12098     if ( len )
12099         *len = l;
12100     return result;
12101 }
12102
12103 /*!
12104   This utility function converts \a l 16-bit characters from
12105   \a uc to ASCII, returning a NUL-terminated string.
12106
12107   The caller is responsible for deleting the string with delete[].
12108 */
12109 char* QString::unicodeToAscii(const QChar *uc, uint l)
12110 {
12111     if (!uc) {
12112         return 0;
12113     }
12114     char *a = new char[l+1];
12115     char *result = a;
12116     while (l--)
12117         *a++ = *uc++;
12118     *a = '\0';
12119     return result;
12120 }
12121
12122 static uint computeNewMax( uint len )
12123 {
12124   if (len >= 0x80000000)
12125     return len;
12126
12127   uint newMax = 4;
12128   while ( newMax < len )
12129     newMax *= 2;
12130   // try to save some memory
12131   if ( newMax >= 1024 * 1024 && len <= newMax - (newMax >> 2) )
12132     newMax -= newMax >> 2;
12133   return newMax;
12134 }
12135
12136 /*!
12137   Returns the QString as a zero terminated array of unsigned shorts
12138   if the string is not null; otherwise returns zero.
12139
12140   The result remains valid so long as one unmodified
12141   copy of the source string exists.
12142  */
12143 const unsigned short *QString::ucs2() const
12144 {
12145   if ( ! d->unicode )
12146     return 0;
12147   unsigned int len = d->len;
12148   if ( d->maxl < len + 1 ) {
12149     // detach, grow or shrink
12150     uint newMax = computeNewMax( len + 1 );
12151     QChar* nd = QT_ALLOC_QCHAR_VEC( newMax );
12152     if ( nd ) {
12153       if ( d->unicode )
12154         memcpy( nd, d->unicode, sizeof(QChar)*len );
12155       ((QString *)this)->deref();
12156       ((QString *)this)->d = new QStringData( nd, len, newMax );
12157     }
12158   }
12159   d->unicode[len] = 0;
12160   return (unsigned short *) d->unicode;
12161 }
12162
12163 /*!
12164     Constructs a string that is a deep copy of \a str, interpreted as a
12165     UCS2 encoded, zero terminated, Unicode string.
12166
12167     If \a str is 0, then a null string is created.
12168     \sa isNull()
12169  */
12170 QString QString::fromUcs2( const unsigned short *str )
12171 {
12172   if ( !str ) {
12173     return QString::null;
12174   } else {
12175     int length = 0;
12176     while ( str[length] != 0 )
12177       length++;
12178     QChar* uc = QT_ALLOC_QCHAR_VEC( length );
12179     memcpy( uc, str, length*sizeof(QChar) );
12180     return QString( new QStringData( uc, length, length ), TRUE );
12181   }
12182 }
12183
12184
12185 /*****************************************************************************
12186   QString member functions
12187  *****************************************************************************/
12188
12189 /*!
12190   \class QString qstring.h
12191
12192   \brief The QString class provides an abstraction of Unicode text and
12193           the classic C null-terminated char array (<var>char*</var>).
12194
12195   \ingroup tools
12196   \ingroup shared
12197
12198   QString uses \link shclass.html implicit sharing\endlink, and so it
12199   is very efficient and easy to use.
12200
12201   In all QString methods that take <var>const char*</var> parameters,
12202   the <var>const char*</var> is interpreted as a classic C-style
12203   0-terminated ASCII string. It is legal for the <var>const
12204   char*</var> parameter to be 0. The results are undefined if the
12205   <var>const char*</var> string is not 0-terminated. Functions that
12206   copy classic C strings into a QString will not copy the terminating
12207   0-character. The QChar array of the QString (as returned by
12208   unicode()) is not terminated by a null.
12209
12210   A QString that has not been assigned to anything is \a null, i.e. both
12211   the length and data pointer is 0. A QString that references the empty
12212   string ("", a single '\0' char) is \a empty.  Both null and empty
12213   QStrings are legal parameters to the methods. Assigning <var>const char
12214   * 0</var> to QString gives a null QString.
12215
12216   Note that if you find that you are mixing usage of QCString, QString,
12217   and QByteArray, this causes lots of unnecessary copying and might
12218   indicate that the true nature of the data you are dealing with is
12219   uncertain.  If the data is NUL-terminated 8-bit data, use QCString;
12220   if it is unterminated (ie. contains NULs) 8-bit data, use QByteArray;
12221   if it is text, use QString.
12222
12223   \sa QChar \link shclass.html Shared classes\endlink
12224 */
12225
12226 Q_EXPORT QStringData *QString::shared_null = 0;
12227 //QT_STATIC_CONST_IMPL QString QString::null;
12228 QT_STATIC_CONST_IMPL QChar QChar::null;
12229 QT_STATIC_CONST_IMPL QChar QChar::replacement((ushort)0xfffd);
12230 QT_STATIC_CONST_IMPL QChar QChar::byteOrderMark((ushort)0xfeff);
12231 QT_STATIC_CONST_IMPL QChar QChar::byteOrderSwapped((ushort)0xfffe);
12232 QT_STATIC_CONST_IMPL QChar QChar::nbsp((ushort)0x00a0);
12233
12234 #if defined(_CC_MSVC_) && _MSC_VER <= 1300
12235 const QString::Null QString::null;
12236 #else
12237 const QString::Null QString::null = { };
12238 #endif
12239
12240
12241 QStringData* QString::makeSharedNull()
12242 {
12243     return shared_null=new QStringData;
12244 }
12245
12246 // Uncomment this to get some useful statistics.
12247 // #define Q2HELPER(x) x
12248
12249 #ifdef Q2HELPER
12250 static int stat_construct_charstar=0;
12251 static int stat_construct_charstar_size=0;
12252 static int stat_construct_null=0;
12253 static int stat_construct_int=0;
12254 static int stat_construct_int_size=0;
12255 static int stat_construct_ba=0;
12256 static int stat_get_ascii=0;
12257 static int stat_get_ascii_size=0;
12258 static int stat_copy_on_write=0;
12259 static int stat_copy_on_write_size=0;
12260 static int stat_fast_copy=0;
12261 Q_EXPORT void qt_qstring_stats()
12262 {
12263         qDebug("construct_charstar = %d (%d chars)", stat_construct_charstar, stat_construct_charstar_size);
12264         qDebug("construct_null = %d", stat_construct_null);
12265         qDebug("construct_int = %d (%d chars)", stat_construct_int, stat_construct_int_size);
12266         qDebug("construct_ba = %d", stat_construct_ba);
12267         qDebug("get_ascii = %d (%d chars)", stat_get_ascii, stat_get_ascii_size);
12268         qDebug("copy_on_write = %d (%d chars)", stat_copy_on_write, stat_copy_on_write_size);
12269         qDebug("fast_copy = %d", stat_fast_copy);
12270 }
12271 #else
12272 #define Q2HELPER(x)
12273 #endif
12274
12275 /*!
12276   \fn QString::QString()
12277
12278   Constructs a null string.
12279   \sa isNull()
12280 */
12281
12282 /*!
12283   Constructs a string containing the one character \a ch.
12284 */
12285 QString::QString( QChar ch )
12286 {
12287     d = new QStringData( QT_ALLOC_QCHAR_VEC( 1 ), 1, 1 );
12288     d->unicode[0] = ch;
12289 }
12290
12291 /*!
12292   Constructs an implicitly-shared copy of \a s.
12293 */
12294 QString::QString( const QString &s ) :
12295     d(s.d)
12296 {
12297     Q2HELPER(stat_fast_copy++)
12298     d->ref();
12299 }
12300
12301 /*!
12302   Private function.
12303
12304   Constructs a string with preallocated space for \a size characters.
12305
12306   The string is empty.
12307
12308   \sa isNull()
12309 */
12310
12311 QString::QString( int size, bool /*dummy*/ )
12312 {
12313     if ( size ) {
12314         Q2HELPER(stat_construct_int++)
12315         int l = size;
12316         Q2HELPER(stat_construct_int_size+=l)
12317         QChar* uc = QT_ALLOC_QCHAR_VEC( l );
12318         d = new QStringData( uc, 0, l );
12319     } else {
12320         Q2HELPER(stat_construct_null++)
12321         d = shared_null ? shared_null : (shared_null=new QStringData);
12322         d->ref();
12323     }
12324 }
12325
12326 /*!
12327   Constructs a string that is a deep copy of \a ba interpreted as
12328   a classic C string.
12329 */
12330
12331 QString::QString( const QByteArray& ba )
12332 {
12333     Q2HELPER(stat_construct_ba++)
12334     uint l;
12335     QChar *uc = internalAsciiToUnicode(ba,&l);
12336     d = new QStringData(uc,l,l);
12337 }
12338
12339 QString::QString( const QCString& ba )
12340 {
12341     //Q2HELPER(stat_construct_ba++)
12342     //uint l;
12343     //QChar *uc = internalAsciiToUnicode(ba,&l);
12344     //d = new QStringData(uc,l,l);
12345     Q2HELPER(stat_fast_copy++)
12346     QString s = QString::fromUtf8(ba.data(),ba.length());
12347     d = s.d;
12348     d->ref();
12349 }
12350
12351 /*!
12352   Constructs a string that is a deep copy of the
12353   first \a length QChar in the array \a unicode.
12354
12355   If \a unicode and \a length are 0, a null string is created.
12356
12357   If only \a unicode is 0, the string is empty, but has
12358   \a length characters of space preallocated - QString expands
12359   automatically anyway, but this may speed some cases up a little.
12360
12361   \sa isNull()
12362 */
12363
12364 QString::QString( const QChar* unicode, uint length )
12365 {
12366     if ( !unicode && !length ) {
12367         d = shared_null ? shared_null : makeSharedNull();
12368         d->ref();
12369     } else {
12370         QChar* uc = QT_ALLOC_QCHAR_VEC( length );
12371         if ( unicode )
12372             memcpy(uc, unicode, length*sizeof(QChar));
12373         d = new QStringData(uc,unicode ? length : 0,length);
12374     }
12375 }
12376
12377 /*!
12378   Constructs a string that is a deep copy of \a str, interpreted as a
12379   classic C string.
12380
12381   If \a str is 0 a null string is created.
12382
12383   This is a cast constructor, but it is perfectly safe: converting a Latin1
12384   const char* to QString preserves all the information.
12385   You can disable this constructor by
12386   defining QT_NO_CAST_ASCII when you compile your applications.
12387   You can also make QString objects by using setLatin1()/fromLatin1(), or
12388   fromLocal8Bit(), fromUtf8(), or whatever encoding is appropriate for
12389   the 8-bit data you have.
12390
12391   \sa isNull()
12392 */
12393
12394 QString::QString( const char *str )
12395 {
12396     //Q2HELPER(stat_construct_charstar++)
12397     //uint l;
12398     //QChar *uc = internalAsciiToUnicode(str,&l);
12399     //Q2HELPER(stat_construct_charstar_size+=l)
12400     //d = new QStringData(uc,l,l);
12401     Q2HELPER(stat_fast_copy++)
12402     QString s = QString::fromUtf8(str);
12403     d = s.d;
12404     d->ref();
12405 }
12406
12407
12408 /*! \fn QString::~QString()
12409
12410 Destroys the string and frees the "real" string, if this was the last
12411 copy of that string.
12412 */
12413
12414
12415 /*!
12416   Deallocates any space reserved solely by this QString.
12417 */
12418
12419 void QString::real_detach()
12420 {
12421     setLength( length() );
12422 }
12423
12424 void QString::deref()
12425 {
12426     if ( d->deref() ) {
12427         if ( d == shared_null )
12428             shared_null = 0;
12429         delete d;
12430         d = 0; // helps debugging
12431     }
12432 }
12433
12434 void QStringData::deleteSelf()
12435 {
12436     delete this;
12437 }
12438
12439 /*!
12440   \fn QString& QString::operator=( QChar c )
12441   Sets the string to contain just the single character \a c.
12442 */
12443
12444 /*!
12445   \fn QString& QString::operator=( char c )
12446   Sets the string to contain just the single character \a c.
12447 */
12448
12449 /*!
12450   Assigns a shallow copy of \a s to this string and returns a
12451   reference to this string.
12452 */
12453 QString &QString::operator=( const QString &s )
12454 {
12455     Q2HELPER(stat_fast_copy++)
12456     s.d->ref();
12457     deref();
12458     d = s.d;
12459     return *this;
12460 }
12461
12462 /*!
12463   Assigns a deep copy of \a cs, interpreted as a classic C string, to
12464   this string and returns a reference to this string.
12465 */
12466 QString &QString::operator=( const QCString& cs )
12467 {
12468     return setLatin1(cs);
12469 }
12470
12471
12472 /*!
12473   Assigns a deep copy of \a str, interpreted as a classic C string,
12474   to this string and returns a reference to this string.
12475
12476   If \a str is 0 a null string is created.
12477
12478   \sa isNull()
12479 */
12480 QString &QString::operator=( const char *str )
12481 {
12482     return setLatin1(str);
12483 }
12484
12485
12486 /*!
12487   \fn bool QString::isNull() const
12488
12489   Returns TRUE if the string is null.
12490   A null string is also an empty string.
12491
12492   Example:
12493   \code
12494     QString a;          // a.unicode() == 0,  a.length() == 0
12495     QString b = "";     // b.unicode() == "", b.length() == 0
12496     a.isNull();         // TRUE, because a.unicode() == 0
12497     a.isEmpty();        // TRUE, because a.length() == 0
12498     b.isNull();         // FALSE, because b.unicode() != 0
12499     b.isEmpty();        // TRUE, because b.length() == 0
12500   \endcode
12501
12502   \sa isEmpty(), length()
12503 */
12504
12505 /*!
12506   \fn bool QString::isEmpty() const
12507
12508   Returns TRUE if the string is empty, i.e. if length() == 0.
12509   An empty string is not always a null string.
12510
12511   See example in isNull().
12512
12513   \sa isNull(), length()
12514 */
12515
12516 /*!
12517   \fn uint QString::length() const
12518
12519   Returns the length of the string.
12520
12521   Null strings and empty strings have zero length.
12522
12523   \sa isNull(), isEmpty()
12524 */
12525
12526 /*!
12527   Truncates the string at position \a newLen if newLen is less than the
12528   current length . Otherwise, nothing happens.
12529
12530   Example:
12531   \code
12532     QString s = "truncate this string";
12533     s.truncate( 5 );                            // s == "trunc"
12534   \endcode
12535
12536   In Qt 1.x, it was possible to "truncate" a string to a longer
12537   length.  This is no longer possible.
12538
12539 */
12540
12541 void QString::truncate( uint newLen )
12542 {
12543     if ( newLen < d->len )
12544         setLength( newLen );
12545 }
12546
12547 /*### Make this public in 3.0
12548   Ensures that at least \a newLen characters are allocated, and
12549   sets the length to \a newLen.  This function always detaches the
12550   string from other references to the same data.  Any new space
12551   allocated is \e not defined.
12552
12553   If \a newLen is 0, this string becomes empty, unless this string is
12554   null, in which case it remains null.
12555
12556   \sa truncate(), isNull(), isEmpty()
12557 */
12558
12559 void QString::setLength( uint newLen )
12560 {
12561     if ( d->count != 1 || newLen > d->maxl ||           // detach, grow, or
12562          ( newLen*4 < d->maxl && d->maxl > 4 ) ) {      // shrink
12563         Q2HELPER(stat_copy_on_write++)
12564         Q2HELPER(stat_copy_on_write_size+=d->len)
12565         uint newMax = 4;
12566         while ( newMax < newLen )
12567             newMax *= 2;
12568         QChar* nd = QT_ALLOC_QCHAR_VEC( newMax );
12569         uint len = QMIN( d->len, newLen );
12570         if ( d->unicode )
12571             memcpy( nd, d->unicode, sizeof(QChar)*len );
12572         deref();
12573         d = new QStringData( nd, newLen, newMax );
12574     } else {
12575         d->len = newLen;
12576         d->dirtyascii = 1;
12577     }
12578 }
12579
12580 /*!  Returns a string equal to this one, but with the lowest-numbered
12581   occurrence of \c %i (for a positive integer i) replaced by \a a.
12582
12583   \code
12584     label.setText( tr("Rename %1 to %2?").arg(oldName).arg(newName) );
12585   \endcode
12586
12587   \a fieldwidth is the minimum amount of space \a a is padded to.  A
12588   positive value produces right-aligned text, while a negative value
12589   produces left aligned text.
12590
12591   \warning Using arg() for constructing "real" sentences
12592   programmatically is likely to lead to translation problems.
12593   Inserting objects like numbers or file names is fairly safe.
12594
12595   \warning Relying on spaces to create alignment is prone to lead to
12596   translation problems.
12597
12598   If there is no \c %i pattern, a warning message (qWarning()) is
12599   printed and the text as appended at the end of the string.  This is
12600   error recovery and should not occur in correct code.
12601
12602   \sa QObject::tr()
12603 */
12604 QString QString::arg(const QString& a, int fieldwidth) const
12605 {
12606     int pos, len;
12607     QString r = *this;
12608
12609     if ( !findArg( pos, len ) ) {
12610         qWarning( "QString::arg(): Argument missing: %s, %s",
12611                   (const char *)ascii(), (const char *)ascii() );
12612         // Make sure the text at least appears SOMEWHERE
12613         r += ' ';
12614         pos = r.length();
12615         len = 0;
12616     }
12617
12618     r.replace( pos, len, a );
12619     if ( fieldwidth < 0 ) {
12620         QString s;
12621         while ( (uint)-fieldwidth > a.length() ) {
12622             s += ' ';
12623             fieldwidth++;
12624         }
12625         r.insert( pos + a.length(), s );
12626     } else if ( fieldwidth ) {
12627         QString s;
12628         while ( (uint)fieldwidth > a.length() ) {
12629             s += ' ';
12630             fieldwidth--;
12631         }
12632         r.insert( pos, s );
12633     }
12634
12635     return r;
12636 }
12637
12638
12639 /*! \overload
12640
12641   \a a is expressed in to \a base notation, which is decimal by
12642   default and must be in the range 2-36 inclusive.
12643 */
12644 QString QString::arg(long a, int fieldwidth, int base) const
12645 {
12646     return arg( QString::number( a, base ), fieldwidth );
12647 }
12648
12649 /*! \overload
12650
12651   \a a is expressed in to \a base notation, which is decimal by
12652   default and must be in the range 2-36 inclusive.
12653 */
12654 QString QString::arg(ulong a, int fieldwidth, int base) const
12655 {
12656     return arg( QString::number( a, base ), fieldwidth );
12657 }
12658
12659 /*!
12660   \overload QString QString::arg(int a, int fieldwidth, int base) const
12661
12662   \a a is expressed in to \a base notation, which is decimal by
12663   default and must be in the range 2-36 inclusive.
12664
12665 */
12666
12667 /*!
12668   \overload QString QString::arg(uint a, int fieldwidth, int base) const
12669
12670   \a a is expressed in to \a base notation, which is decimal by
12671   default and must be in the range 2-36 inclusive.
12672 */
12673
12674 /*!
12675   \overload QString QString::arg(short a, int fieldwidth, int base) const
12676
12677   \a a is expressed in to \a base notation, which is decimal by
12678   default and must be in the range 2-36 inclusive.
12679 */
12680
12681 /*!
12682   \overload QString QString::arg(ushort a, int fieldwidth, int base) const
12683
12684   \a a is expressed in to \a base notation, which is decimal by
12685   default and must be in the range 2-36 inclusive.
12686 */
12687
12688
12689 /*! \overload
12690
12691   \a a is assumed to be in the Latin1 character set.
12692 */
12693 QString QString::arg(char a, int fieldwidth) const
12694 {
12695     QString c;
12696     c += a;
12697     return arg( c, fieldwidth );
12698 }
12699
12700 /*! \overload
12701 */
12702 QString QString::arg(QChar a, int fieldwidth) const
12703 {
12704     QString c;
12705     c += a;
12706     return arg( c, fieldwidth );
12707 }
12708
12709 /*! \overload
12710
12711   \a is formatted according to the \a fmt format specified, which is
12712   'g' by default and can be any of 'f', 'F', 'e', 'E', 'g' or 'G', all
12713   of which have the same meaning as for sprintf().  \a prec determines
12714   the precision, just as for number() and sprintf().
12715 */
12716 QString QString::arg(double a, int fieldwidth, char fmt, int prec) const
12717 {
12718     return arg( QString::number( a, fmt, prec ), fieldwidth );
12719 }
12720
12721
12722 /*!
12723   Just 1-digit arguments.
12724 */
12725 bool QString::findArg(int& pos, int& len) const
12726 {
12727     char lowest=0;
12728     for (uint i=0; i<length(); i++) {
12729         if ( at(i) == '%' && i+1<length() ) {
12730             char dig = at(i+1);
12731             if ( dig >= '0' && dig <= '9' ) {
12732                 if ( !lowest || dig < lowest ) {
12733                     lowest = dig;
12734                     pos = i;
12735                     len = 2;
12736                 }
12737             }
12738         }
12739     }
12740     return lowest != 0;
12741 }
12742
12743 /*!
12744   Safely builds a formatted string from a format string and an
12745   arbitrary list of arguments.  The format string supports all
12746   the escape sequences of printf() in the standard C library.
12747
12748   The %s escape sequence expects a utf8() encoded string. 
12749   The format string \e cformat is expected to be in latin1. If you need a unicode
12750   format string, use QString::arg() instead. For typesafe
12751   string building, with full Unicode support, you can use QTextOStream
12752   like this:
12753
12754   \code
12755     QString str;
12756     QString s = ...;
12757     int x = ...;
12758     QTextOStream(&str) << s << " : " << x;
12759   \endcode
12760
12761   For \link QObject::tr() translations,\endlink especially if the
12762   strings contains more than one escape sequence, you should consider
12763   using the arg() function instead.  This allows the order of the
12764   replacements to be controlled by the translator, and has Unicode
12765   support.
12766
12767   \sa arg()
12768 */
12769
12770 QString &QString::sprintf( const char* cformat, ... )
12771 {
12772     va_list ap;
12773     va_start( ap, cformat );
12774
12775     if ( !cformat || !*cformat ) {
12776         // Qt 1.x compat
12777         *this = QString::fromLatin1( "" );
12778         return *this;
12779     }
12780     QString format = QString::fromLatin1( cformat );
12781
12782     static QRegExp *escape = 0;
12783     if (!escape)
12784         escape = new QRegExp( "%#?0?-? ?\\+?'?[0-9*]*\\.?[0-9*]*h?l?L?q?Z?" );
12785
12786     QString result;
12787     uint last = 0;
12788
12789     int len = 0;
12790     int pos;
12791     while ( 1 ) {
12792         pos = escape->match( cformat, last, &len );
12793         // Non-escaped text
12794         if ( pos > (int)last )
12795             result += format.mid(last,pos-last);
12796         if ( pos < 0 ) {
12797             // The rest
12798             if ( last < format.length() )
12799                 result += format.mid(last);
12800             break;
12801         }
12802         last = pos + len + 1;
12803
12804         // Escape
12805         QString f = format.mid( pos, len );
12806         uint width, decimals;
12807         int params = 0;
12808         int wpos = f.find('*');
12809         if ( wpos >= 0 ) {
12810             params++;
12811             width = va_arg( ap, int );
12812             if ( f.find('*', wpos + 1) >= 0 ) {
12813                 decimals = va_arg( ap, int );
12814                 params++;
12815             } else {
12816                 decimals = 0;
12817             }
12818         } else {
12819             decimals = width = 0;
12820         }
12821         QString replacement;
12822         if ( format[pos+len] == 's' ||
12823              format[pos+len] == 'S' ||
12824              format[pos+len] == 'c' )
12825         {
12826             bool rightjust = ( f.find('-') < 0 );
12827             // Yes, %-5s really means left adjust in sprintf
12828
12829             if ( wpos < 0 ) {
12830                 QRegExp num( "[0-9]+" );
12831                 QRegExp dot( "\\." );
12832                 int nlen;
12833                 int p = num.match( f.data(), 0, &nlen );
12834                 int q = dot.match( f.data(), 0 );
12835                 if ( q < 0 || (p < q && p >= 0) )
12836                     width = f.mid( p, nlen ).toInt();
12837                 if ( q >= 0 ) {
12838                     p = num.match( f.data(), q );
12839                     // "decimals" is used to specify string truncation
12840                     if ( p >= 0 )
12841                         decimals = f.mid( p, nlen ).toInt();
12842                 }
12843             }
12844
12845             if ( format[pos+len] == 's' ) {
12846 #ifndef QT_NO_TEXTCODEC
12847                 QString s = QString::fromUtf8(va_arg(ap, char*));
12848 #else
12849                 QString s = QString::fromLatin1(va_arg(ap, char*));
12850 #endif
12851                 if ( decimals <= 0 )
12852                     replacement = s;
12853                 else
12854                     replacement = s.left(decimals);
12855             } else {
12856                 int ch = va_arg(ap, int);
12857                 replacement = QChar((ushort)ch);
12858             }
12859             if ( replacement.length() < width ) {
12860                 replacement = rightjust
12861                     ? replacement.rightJustify(width)
12862                     : replacement.leftJustify(width);
12863             }
12864         } else if ( format[pos+len] == '%' ) {
12865             replacement = '%';
12866         } else if ( format[pos+len] == 'n' ) {
12867             int* n = va_arg(ap, int*);
12868             *n = result.length();
12869         } else {
12870             char in[64], out[330] = "";
12871             strncpy(in,f.latin1(),63);
12872             char fch = format[pos+len].latin1();
12873             in[f.length()] = fch;
12874             switch ( fch ) {
12875               case 'd': case 'i': case 'o': case 'u': case 'x': case 'X': {
12876                 int value = va_arg(ap, int);
12877                 switch (params) {
12878                   case 0: ::sprintf( out, in, value ); break;
12879                   case 1: ::sprintf( out, in, width, value ); break;
12880                   case 2: ::sprintf( out, in, width, decimals, value ); break;
12881                 }
12882               } break;
12883               case 'e': case 'E': case 'f': case 'g': case 'G': {
12884                 double value = va_arg(ap, double);
12885                 switch (params) {
12886                   case 0: ::sprintf( out, in, value ); break;
12887                   case 1: ::sprintf( out, in, width, value ); break;
12888                   case 2: ::sprintf( out, in, width, decimals, value ); break;
12889                 }
12890               } break;
12891               case 'p': {
12892                 void* value = va_arg(ap, void*);
12893                 switch (params) {
12894                   case 0: ::sprintf( out, in, value ); break;
12895                   case 1: ::sprintf( out, in, width, value ); break;
12896                   case 2: ::sprintf( out, in, width, decimals, value ); break;
12897                 }
12898               } break;
12899             }
12900             replacement = QString::fromLatin1(out);
12901         }
12902         result += replacement;
12903     }
12904     *this = result;
12905
12906     va_end( ap );
12907     return *this;
12908 }
12909
12910 /*!
12911   Fills the string with \a len characters of value \a c.
12912
12913   If \a len is negative, the current string length is used.
12914 */
12915
12916 void QString::fill( QChar c, int len )
12917 {
12918     if ( len < 0 )
12919         len = length();
12920     if ( len == 0 ) {
12921         *this = "";
12922     } else {
12923         deref();
12924         QChar * nd = QT_ALLOC_QCHAR_VEC( len );
12925         d = new QStringData(nd,len,len);
12926         while (len--) *nd++ = c;
12927     }
12928 }
12929
12930
12931 /*!
12932   \fn QString QString::copy() const
12933
12934   \obsolete
12935
12936   Returns a deep copy of this string.
12937
12938   Doing this is redundant in Qt 2.x, since QString is implicitly
12939   shared, and so will automatically be deeply copied as necessary.
12940 */
12941
12942 /*!
12943   Finds the first occurrence of the character \a c, starting at
12944   position \a index. If \a index is -1, the search starts at the
12945   last character; if -2, at the next to last character; etc.
12946
12947   The search is case sensitive if \a cs is TRUE, or case insensitive
12948   if \a cs is FALSE.
12949
12950   Returns the position of \a c, or -1 if \a c could not be found.
12951 */
12952
12953 int QString::find( QChar c, int index, bool cs ) const
12954 {
12955     if ( index < 0 )
12956         index += length();
12957     if ( (uint)index >= length() )              // index outside string
12958         return -1;
12959     const QChar *uc;
12960     uc = unicode()+index;
12961     int n = length()-index;
12962     if ( cs ) {
12963         while ( n-- && *uc != c )
12964             uc++;
12965     } else {
12966         c = c.lower();
12967         while ( n-- && uc->lower() != c )
12968             uc++;
12969     }
12970     if ( uint(uc - unicode()) >= length() )
12971         return -1;
12972     return (int)(uc - unicode());
12973 }
12974
12975 /*!
12976   Finds the first occurrence of the string \a str, starting at position
12977   \a index. If \a index is -1, the search starts at the last character;
12978   if -2, at the next to last character; etc.
12979
12980   The search is case sensitive if \a cs is TRUE, or case insensitive if
12981   \a cs is FALSE.
12982
12983   Returns the position of \a str, or -1 if \a str could not be found.
12984 */
12985
12986 int QString::find( const QString& str, int index, bool cs ) const
12987 {
12988     /*
12989       We use some weird hashing for efficiency's sake.  Instead of
12990       comparing strings, we compare the hash value of str with that of
12991       a part of this QString.  Only if that matches, we call ucstrncmp
12992       or ucstrnicmp.
12993
12994       The hash value of a string is the sum of the cells of its
12995       QChars.
12996     */
12997     if ( index < 0 )
12998         index += length();
12999     int lstr = str.length();
13000     int lthis = length() - index;
13001     if ( (uint)lthis > length() )
13002         return -1;
13003     int delta = lthis - lstr;
13004     if ( delta < 0 )
13005         return -1;
13006
13007     const QChar *uthis = unicode() + index;
13008     const QChar *ustr = str.unicode();
13009     uint hthis = 0;
13010     uint hstr = 0;
13011     int i;
13012     if ( cs ) {
13013         for ( i = 0; i < lstr; i++ ) {
13014             hthis += uthis[i].cell();
13015             hstr += ustr[i].cell();
13016         }
13017         i = 0;
13018         while ( TRUE ) {
13019             if ( hthis == hstr && ucstrncmp(uthis + i, ustr, lstr) == 0 )
13020                 return index + i;
13021             if ( i == delta )
13022                 return -1;
13023             hthis += uthis[i + lstr].cell();
13024             hthis -= uthis[i].cell();
13025             i++;
13026         }
13027     } else {
13028         for ( i = 0; i < lstr; i++ ) {
13029             hthis += uthis[i].lower().cell();
13030             hstr += ustr[i].lower().cell();
13031         }
13032         i = 0;
13033         while ( TRUE ) {
13034             if ( hthis == hstr && ucstrnicmp(uthis + i, ustr, lstr) == 0 )
13035                 return index + i;
13036             if ( i == delta )
13037                 return -1;
13038             hthis += uthis[i + lstr].lower().cell();
13039             hthis -= uthis[i].lower().cell();
13040             i++;
13041         }
13042     }
13043 #if defined(Q_SPURIOUS_NON_VOID_WARNING)
13044     return -1;
13045 #endif
13046 }
13047
13048 /*!
13049   \fn int QString::findRev( const char* str, int index ) const
13050
13051   Equivalent to findRev(QString(str), index).
13052 */
13053
13054 /*!
13055   \fn int QString::find( const char* str, int index ) const
13056
13057   Equivalent to find(QString(str), index).
13058 */
13059
13060 /*!
13061   Finds the first occurrence of the character \a c, starting at
13062   position \a index and searching backwards. If \a index is -1,
13063   the search starts at the last character; if -2, at the next to
13064   last character; etc.
13065
13066   The search is case sensitive if \a cs is TRUE, or case insensitive if \a
13067   cs is FALSE.
13068
13069   Returns the position of \a c, or -1 if \a c could not be found.
13070 */
13071
13072 int QString::findRev( QChar c, int index, bool cs ) const
13073 {
13074     QString t( c );
13075     return findRev( t, index, cs );
13076 }
13077
13078 /*!
13079   Finds the first occurrence of the string \a str, starting at
13080   position \a index and searching backwards. If \a index is -1,
13081   the search starts at the last character; -2, at the next to last
13082   character; etc.
13083
13084   The search is case sensitive if \a cs is TRUE, or case insensitive if \e
13085   cs is FALSE.
13086
13087   Returns the position of \a str, or -1 if \a str could not be found.
13088 */
13089
13090 int QString::findRev( const QString& str, int index, bool cs ) const
13091 {
13092     /*
13093       See QString::find() for explanations.
13094     */
13095     int lthis = length();
13096     if ( index < 0 )
13097         index += lthis;
13098
13099     int lstr = str.length();
13100     int delta = lthis - lstr;
13101     if ( index < 0 || index > lthis || delta < 0 )
13102         return -1;
13103     if ( index > delta )
13104         index = delta;
13105
13106     const QChar *uthis = unicode();
13107     const QChar *ustr = str.unicode();
13108     uint hthis = 0;
13109     uint hstr = 0;
13110     int i;
13111     if ( cs ) {
13112         for ( i = 0; i < lstr; i++ ) {
13113             hthis += uthis[index + i].cell();
13114             hstr += ustr[i].cell();
13115         }
13116         i = index;
13117         while ( TRUE ) {
13118             if ( hthis == hstr && ucstrncmp(uthis + i, ustr, lstr) == 0 )
13119                 return i;
13120             if ( i == 0 )
13121                 return -1;
13122             i--;
13123             hthis -= uthis[i + lstr].cell();
13124             hthis += uthis[i].cell();
13125         }
13126     } else {
13127         for ( i = 0; i < lstr; i++ ) {
13128             hthis += uthis[index + i].lower().cell();
13129             hstr += ustr[i].lower().cell();
13130         }
13131         i = index;
13132         while ( TRUE ) {
13133             if ( hthis == hstr && ucstrnicmp(uthis + i, ustr, lstr) == 0 )
13134                 return i;
13135             if ( i == 0 )
13136                 return -1;
13137             i--;
13138             hthis -= uthis[i + lstr].lower().cell();
13139             hthis += uthis[i].lower().cell();
13140         }
13141     }
13142 #if defined(Q_SPURIOUS_NON_VOID_WARNING)
13143     return -1;
13144 #endif
13145 }
13146
13147
13148 /*!
13149   Returns the number of times the character \a c occurs in the string.
13150
13151   The match is case sensitive if \a cs is TRUE, or case insensitive if \a cs
13152   is FALSE.
13153 */
13154
13155 int QString::contains( QChar c, bool cs ) const
13156 {
13157     int count = 0;
13158     const QChar *uc = unicode();
13159     if ( !uc )
13160         return 0;
13161     int n = length();
13162     if ( cs ) {                                 // case sensitive
13163         while ( n-- )
13164             if ( *uc++ == c )
13165                 count++;
13166     } else {                                    // case insensitive
13167         c = c.lower();
13168         while ( n-- ) {
13169             if ( uc->lower() == c )
13170                 count++;
13171             uc++;
13172         }
13173     }
13174     return count;
13175 }
13176
13177 /*!
13178   \overload
13179 */
13180 int QString::contains( const char* str, bool cs ) const
13181 {
13182     return contains(QString(str),cs);
13183 }
13184
13185 /*!
13186   \overload int QString::contains (char c, bool cs) const
13187 */
13188
13189 /*!
13190   \overload int QString::find (char c, int index, bool cs) const
13191
13192 */
13193
13194 /*!
13195   \overload int QString::findRev (char c, int index, bool cs) const
13196
13197 */
13198
13199 /*!
13200   Returns the number of times \a str occurs in the string.
13201
13202   The match is case sensitive if \a cs is TRUE, or case insensitive if \e
13203   cs is FALSE.
13204
13205   This function counts overlapping substrings, for example, "banana"
13206   contains two occurrences of "ana".
13207
13208   \sa findRev()
13209 */
13210
13211 int QString::contains( const QString &str, bool cs ) const
13212 {
13213     int count = 0;
13214     const QChar *uc = unicode();
13215     if ( !uc )
13216         return 0;
13217     int len = str.length();
13218     int n = length();
13219     while ( n-- ) {                             // counts overlapping strings
13220         // ### Doesn't account for length of this - searches over "end"
13221         if ( cs ) {
13222             if ( ucstrncmp( uc, str.unicode(), len ) == 0 )
13223                 count++;
13224         } else {
13225             if ( ucstrnicmp(uc, str.unicode(), len) == 0 )
13226                 count++;
13227         }
13228         uc++;
13229     }
13230     return count;
13231 }
13232
13233 /*!
13234   Returns a substring that contains the \a len leftmost characters
13235   of the string.
13236
13237   The whole string is returned if \a len exceeds the length of the
13238   string.
13239
13240
13241   Example:
13242   \code
13243     QString s = "Pineapple";
13244     QString t = s.left( 4 );    // t == "Pine"
13245   \endcode
13246
13247   \sa right(), mid(), isEmpty()
13248 */
13249
13250 QString QString::left( uint len ) const
13251 {
13252     if ( isEmpty() ) {
13253         return QString();
13254     } else if ( len == 0 ) {                    // ## just for 1.x compat:
13255         return QString::fromLatin1("");
13256     } else if ( len > length() ) {
13257         return *this;
13258     } else {
13259         QString s( len, TRUE );
13260         memcpy( s.d->unicode, d->unicode, len*sizeof(QChar) );
13261         s.d->len = len;
13262         return s;
13263     }
13264 }
13265
13266 /*!
13267   Returns a substring that contains the \a len rightmost characters
13268   of the string.
13269
13270   The whole string is returned if \a len exceeds the length of the
13271   string.
13272
13273   Example:
13274   \code
13275     QString s = "Pineapple";
13276     QString t = s.right( 5 );   // t == "apple"
13277   \endcode
13278
13279   \sa left(), mid(), isEmpty()
13280 */
13281
13282 QString QString::right( uint len ) const
13283 {
13284     if ( isEmpty() ) {
13285         return QString();
13286     } else if ( len == 0 ) {                    // ## just for 1.x compat:
13287         return QString::fromLatin1("");
13288     } else {
13289         uint l = length();
13290         if ( len > l )
13291             len = l;
13292         QString s( len, TRUE );
13293         memcpy( s.d->unicode, d->unicode+(l-len), len*sizeof(QChar) );
13294         s.d->len = len;
13295         return s;
13296     }
13297 }
13298
13299 /*!
13300   Returns a substring that contains the \a len characters of this
13301   string, starting at position \a index.
13302
13303   Returns a null string if the string is empty or \a index is out
13304   of range.  Returns the whole string from \a index if \a index+len exceeds
13305   the length of the string.
13306
13307   Example:
13308   \code
13309     QString s = "Five pineapples";
13310     QString t = s.mid( 5, 4 );                  // t == "pine"
13311   \endcode
13312
13313   \sa left(), right()
13314 */
13315
13316 QString QString::mid( uint index, uint len ) const
13317 {
13318     uint slen = length();
13319     if ( isEmpty() || index >= slen ) {
13320         return QString();
13321     } else if ( len == 0 ) {                    // ## just for 1.x compat:
13322         return QString::fromLatin1("");
13323     } else {
13324         if ( len > slen-index )
13325             len = slen - index;
13326         if ( index == 0 && len == length() )
13327             return *this;
13328         const QChar *p = unicode()+index;
13329         QString s( len, TRUE );
13330         memcpy( s.d->unicode, p, len*sizeof(QChar) );
13331         s.d->len = len;
13332         return s;
13333     }
13334 }
13335
13336 /*!
13337   Returns a string of length \a width that contains this
13338   string and padded by the \a fill character.
13339
13340   If the length of the string exceeds \a width and \a truncate is FALSE,
13341   then the returned string is a copy of the string.
13342   If the length of the string exceeds \a width and \a truncate is TRUE,
13343   then the returned string is a left(\a width).
13344
13345   Example:
13346   \code
13347     QString s("apple");
13348     QString t = s.leftJustify(8, '.');          // t == "apple..."
13349   \endcode
13350
13351   \sa rightJustify()
13352 */
13353
13354 QString QString::leftJustify( uint width, QChar fill, bool truncate ) const
13355 {
13356     QString result;
13357     int len = length();
13358     int padlen = width - len;
13359     if ( padlen > 0 ) {
13360         result.setLength(len+padlen);
13361         if ( len )
13362             memcpy( result.d->unicode, unicode(), sizeof(QChar)*len );
13363         QChar* uc = result.d->unicode + len;
13364         while (padlen--)
13365             *uc++ = fill;
13366     } else {
13367         if ( truncate )
13368             result = left( width );
13369         else
13370             result = *this;
13371     }
13372     return result;
13373 }
13374
13375 /*!
13376   Returns a string of length \a width that contains pad
13377   characters followed by the string.
13378
13379   If the length of the string exceeds \a width and \a truncate is FALSE,
13380   then the returned string is a copy of the string.
13381   If the length of the string exceeds \a width and \a truncate is TRUE,
13382   then the returned string is a left(\a width).
13383
13384   Example:
13385   \code
13386     QString s("pie");
13387     QString t = s.rightJustify(8, '.');         // t == ".....pie"
13388   \endcode
13389
13390   \sa leftJustify()
13391 */
13392
13393 QString QString::rightJustify( uint width, QChar fill, bool truncate ) const
13394 {
13395     QString result;
13396     int len = length();
13397     int padlen = width - len;
13398     if ( padlen > 0 ) {
13399         result.setLength( len+padlen );
13400         QChar* uc = result.d->unicode;
13401         while (padlen--)
13402             *uc++ = fill;
13403         if ( len )
13404             memcpy( uc, unicode(), sizeof(QChar)*len );
13405     } else {
13406         if ( truncate )
13407             result = left( width );
13408         else
13409             result = *this;
13410     }
13411     return result;
13412 }
13413
13414 /*!
13415   Returns a new string that is the string converted to lower case.
13416
13417   Example:
13418   \code
13419     QString s("TeX");
13420     QString t = s.lower();      // t == "tex"
13421   \endcode
13422
13423   \sa upper()
13424 */
13425
13426 QString QString::lower() const
13427 {
13428     QString s(*this);
13429     int l=length();
13430     if ( l ) {
13431         s.real_detach(); // could do this only when we find a change
13432         QChar *p=s.d->unicode;
13433         if ( p ) {
13434             while ( l-- ) {
13435                 *p = p->lower();
13436                 p++;
13437             }
13438         }
13439     }
13440     return s;
13441 }
13442
13443 /*!
13444   Returns a new string that is the string converted to upper case.
13445
13446   Example:
13447   \code
13448     QString s("TeX");
13449     QString t = s.upper();                      // t == "TEX"
13450   \endcode
13451
13452   \sa lower()
13453 */
13454
13455 QString QString::upper() const
13456 {
13457     QString s(*this);
13458     int l=length();
13459     if ( l ) {
13460         s.real_detach(); // could do this only when we find a change
13461         QChar *p=s.d->unicode;
13462         if ( p ) {
13463             while ( l-- ) {
13464                 *p = p->upper();
13465                 p++;
13466             }
13467         }
13468     }
13469     return s;
13470 }
13471
13472
13473 /*!
13474   Returns a new string that has white space removed from the start and the end.
13475
13476   White space means any character for which QChar::isSpace() returns
13477   TRUE. This includes ASCII characters 9 (TAB), 10 (LF), 11 (VT), 12
13478   (FF), 13 (CR), and 32 (Space).
13479
13480   Example:
13481   \code
13482     QString s = " space ";
13483     QString t = s.stripWhiteSpace();            // t == "space"
13484   \endcode
13485
13486   \sa simplifyWhiteSpace()
13487 */
13488
13489 QString QString::stripWhiteSpace() const
13490 {
13491     if ( isEmpty() )                            // nothing to do
13492         return *this;
13493     if ( !at(0).isSpace() && !at(length()-1).isSpace() )
13494         return *this;
13495
13496     const QChar *s = unicode();
13497     QString result = fromLatin1("");
13498
13499     int start = 0;
13500     int end = length() - 1;
13501     while ( start<=end && s[start].isSpace() )  // skip white space from start
13502         start++;
13503     if ( start > end ) {                        // only white space
13504         return result;
13505     }
13506     while ( end && s[end].isSpace() )           // skip white space from end
13507         end--;
13508     int l = end - start + 1;
13509     result.setLength( l );
13510     if ( l )
13511         memcpy( result.d->unicode, &s[start], sizeof(QChar)*l );
13512     return result;
13513 }
13514
13515
13516 /*!
13517   Returns a new string that has white space removed from the start and the end,
13518   plus any sequence of internal white space replaced with a single space
13519   (ASCII 32).
13520
13521   White space means any character for which QChar::isSpace() returns
13522   TRUE. This includes ASCII characters 9 (TAB), 10 (LF), 11 (VT), 12
13523   (FF), 13 (CR), and 32 (Space).
13524
13525   \code
13526     QString s = "  lots\t of\nwhite    space ";
13527     QString t = s.simplifyWhiteSpace();         // t == "lots of white space"
13528   \endcode
13529
13530   \sa stripWhiteSpace()
13531 */
13532
13533 QString QString::simplifyWhiteSpace() const
13534 {
13535     if ( isEmpty() )                            // nothing to do
13536         return *this;
13537     QString result;
13538     result.setLength( length() );
13539     const QChar *from = unicode();
13540     const QChar *fromend = from+length();
13541     int outc=0;
13542     QChar *to   = result.d->unicode;
13543     while ( TRUE ) {
13544         while ( from!=fromend && from->isSpace() )
13545             from++;
13546         while ( from!=fromend && !from->isSpace() )
13547             to[outc++] = *from++;
13548         if ( from!=fromend )
13549             to[outc++] = ' ';
13550         else
13551             break;
13552     }
13553     if ( outc > 0 && to[outc-1] == ' ' )
13554         outc--;
13555     result.truncate( outc );
13556     return result;
13557 }
13558
13559
13560 /*!
13561   Insert \a s into the string before position \a index.
13562
13563   If \a index is beyond the end of the string, the string is extended with
13564   spaces (ASCII 32) to length \a index and \a s is then appended.
13565
13566   \code
13567     QString s = "I like fish";
13568     s.insert( 2, "don't ");     // s == "I don't like fish"
13569     s = "x";
13570     s.insert( 3, "yz" );        // s == "x  yz"
13571   \endcode
13572 */
13573
13574 QString &QString::insert( uint index, const QString &s )
13575 {
13576     // the sub function takes care of &s == this case.
13577     return insert( index, s.unicode(), s.length() );
13578 }
13579
13580 /*!
13581   Insert \a len units of QChar data from \a s into the string before
13582   position \a index.
13583 */
13584
13585 QString &QString::insert( uint index, const QChar* s, uint len )
13586 {
13587     if ( len == 0 )
13588         return *this;
13589     uint olen = length();
13590     int nlen = olen + len;
13591
13592     int df = (int)(s - d->unicode); // ### pointer subtraction, cast down to int
13593     if ( df >= 0 && (uint)df < d->maxl ) {
13594         // Part of me - take a copy.
13595         QChar *tmp = QT_ALLOC_QCHAR_VEC( len );
13596         memcpy(tmp,s,len*sizeof(QChar));
13597         insert(index,tmp,len);
13598         QT_DELETE_QCHAR_VEC( tmp );
13599         return *this;
13600     }
13601
13602     if ( index >= olen ) {                      // insert after end of string
13603         setLength( len+index );
13604         int n = index-olen;
13605         QChar* uc = d->unicode+olen;
13606         while (n--)
13607             *uc++ = ' ';
13608         memcpy( d->unicode+index, s, sizeof(QChar)*len );
13609     } else {                                    // normal insert
13610         setLength( nlen );
13611         memmove( d->unicode+index+len, unicode()+index,
13612                  sizeof(QChar)*(olen-index) );
13613         memcpy( d->unicode+index, s, sizeof(QChar)*len );
13614     }
13615     return *this;
13616 }
13617
13618 /*!
13619   Insert \a c into the string at (before) position \a index and returns
13620   a reference to the string.
13621
13622   If \a index is beyond the end of the string, the string is extended with
13623   spaces (ASCII 32) to length \a index and \a c is then appended.
13624
13625   Example:
13626   \code
13627     QString s = "Ys";
13628     s.insert( 1, 'e' );         // s == "Yes"
13629     s.insert( 3, '!');          // s == "Yes!"
13630   \endcode
13631
13632   \sa remove(), replace()
13633 */
13634
13635 QString &QString::insert( uint index, QChar c ) // insert char
13636 {
13637     QString s( c );
13638     return insert( index, s );
13639 }
13640
13641 /*!
13642   \overload QString& QString::insert( uint index, char c )
13643 */
13644
13645 /*!
13646   \fn QString &QString::prepend( const QString &s )
13647
13648   Prepend \a s to the string. Equivalent to insert(0,s).
13649
13650   \sa insert()
13651 */
13652
13653 /*!
13654   \fn QString& QString::prepend( char ch )
13655   Prepends \a ch to the string and returns a reference to the result.
13656
13657   \sa insert()
13658  */
13659
13660 /*!
13661   \fn QString& QString::prepend( QChar ch )
13662   Prepends \a ch to the string and returns a reference to the result.
13663
13664   \sa insert()
13665  */
13666
13667
13668 /*!
13669   Removes \a len characters starting at position \a index from the
13670   string and returns a reference to the string.
13671
13672   If \a index is too big, nothing happens.  If \a index is valid, but
13673   \a len is too large, the rest of the string is removed.
13674
13675   \code
13676     QString s = "Montreal";
13677     s.remove( 1, 4 );
13678     // s == "Meal"
13679   \endcode
13680
13681   \sa insert(), replace()
13682 */
13683
13684 QString &QString::remove( uint index, uint len )
13685 {
13686     uint olen = length();
13687     if ( index + len >= olen ) {                // range problems
13688         if ( index < olen ) {                   // index ok
13689             setLength( index );
13690         }
13691     } else if ( len != 0 ) {
13692         real_detach();
13693         memmove( d->unicode+index, d->unicode+index+len,
13694                  sizeof(QChar)*(olen-index-len) );
13695         setLength( olen-len );
13696     }
13697     return *this;
13698 }
13699
13700 /*!
13701   Replaces \a len characters starting at position \a index from the
13702   string with \a s, and returns a reference to the string.
13703
13704   If \a index is too big, nothing is deleted and \a s is inserted at the
13705   end of the string.  If \a index is valid, but \a len is too large, \e
13706   str replaces the rest of the string.
13707
13708   \code
13709     QString s = "Say yes!";
13710     s.replace( 4, 3, "NO" );                    // s == "Say NO!"
13711   \endcode
13712
13713   \sa insert(), remove()
13714 */
13715
13716 QString &QString::replace( uint index, uint len, const QString &s )
13717 {
13718     return replace( index, len, s.unicode(), s.length() );
13719 }
13720
13721
13722 /*!
13723   Replaces \a len characters starting at position \a index by
13724   \a slen units to QChar data from \a s, and returns a reference to the string.
13725
13726   \sa insert(), remove()
13727 */
13728
13729 QString &QString::replace( uint index, uint len, const QChar* s, uint slen )
13730 {
13731     if ( len == slen && index + len <= length() ) {
13732         // Optimized common case: replace without size change
13733         real_detach();
13734         memcpy( d->unicode+index, s, len*sizeof(QChar) );
13735     } else {
13736         int df = (int)(s - d->unicode); // ### pointer subtraction, cast down to int
13737         if ( df >= 0 && (uint)df < d->maxl ) {
13738             // Part of me - take a copy.
13739             QChar *tmp = QT_ALLOC_QCHAR_VEC( slen );
13740             memcpy(tmp,s,slen*sizeof(QChar));
13741             replace(index,len,tmp,slen);
13742             QT_DELETE_QCHAR_VEC( tmp );
13743             return *this;
13744         }
13745
13746         remove( index, len );
13747         insert( index, s, slen );
13748     }
13749     return *this;
13750 }
13751
13752
13753
13754 /*!
13755   Finds the first occurrence of the regular expression \a rx, starting at
13756   position \a index. If \a index is -1, the search starts at the last
13757   character; if -2, at the next to last character; etc.
13758
13759   Returns the position of the next match, or -1 if \a rx was not found.
13760
13761   \sa findRev() replace() contains()
13762 */
13763
13764 int QString::find( const QRegExp &rx, int index ) const
13765 {
13766     if ( index < 0 )
13767         index += length();
13768     return rx.match( data(), index );
13769 }
13770
13771 /*!
13772   Finds the first occurrence of the regular expression \a rx, starting at
13773   position \a index and searching backwards. If \a index is -1, the
13774   search starts at the last character; if -2, at the next to last
13775   character; etc.
13776
13777   Returns the position of the next match (backwards), or -1 if \a rx was not
13778   found.
13779
13780   \sa find()
13781 */
13782
13783 int QString::findRev( const QRegExp &rx, int index ) const
13784 {
13785     if ( index < 0 )                            // neg index ==> start from end
13786         index += length();
13787     if ( (uint)index > length() )               // bad index
13788         return -1;
13789     while( index >= 0 ) {
13790         if ( rx.match( data(), index ) == index )
13791             return index;
13792         index--;
13793     }
13794     return -1;
13795 }
13796
13797 /*!
13798   Counts the number of overlapping occurrences of \a rx in the string.
13799
13800   Example:
13801   \code
13802     QString s = "banana and panama";
13803     QRegExp r = QRegExp("a[nm]a", TRUE, FALSE);
13804     s.contains( r );                            // 4 matches
13805   \endcode
13806
13807   \sa find() findRev()
13808 */
13809
13810 int QString::contains( const QRegExp &rx ) const
13811 {
13812     if ( isEmpty() )
13813         return rx.match( data() ) < 0 ? 0 : 1;
13814     int count = 0;
13815     int index = -1;
13816     int len = length();
13817     while ( index < len-1 ) {                   // count overlapping matches
13818         index = rx.match( data(), index+1 );
13819         if ( index < 0 )
13820             break;
13821         count++;
13822     }
13823     return count;
13824 }
13825
13826
13827 /*!
13828   Replaces every occurrence of \a rx in the string with \a str.
13829   Returns a reference to the string.
13830
13831   Examples:
13832   \code
13833     QString s = "banana";
13834     s.replace( QRegExp("a.*a"), "" );           // becomes "b"
13835
13836     QString s = "banana";
13837     s.replace( QRegExp("^[bn]a"), " " );        // becomes " nana"
13838
13839     QString s = "banana";
13840     s.replace( QRegExp("^[bn]a"), "" );         // NOTE! becomes ""
13841   \endcode
13842
13843   \sa find() findRev()
13844 */
13845
13846 QString &QString::replace( const QRegExp &rx, const QString &str )
13847 {
13848     if ( isEmpty() )
13849         return *this;
13850     int index = 0;
13851     int slen  = str.length();
13852     int len;
13853     while ( index < (int)length() ) {
13854         index = rx.match( data(), index, &len, FALSE );
13855         if ( index >= 0 ) {
13856             replace( index, len, str );
13857             index += slen;
13858             if ( !len )
13859                 break;  // Avoid infinite loop on 0-length matches, e.g. [a-z]*
13860         }
13861         else
13862             break;
13863     }
13864     return *this;
13865 }
13866
13867 static bool
13868 ok_in_base( QChar c, int base )
13869 {
13870     if ( base <= 10 )
13871         return c.isDigit() && c.digitValue() < base;
13872     else
13873         return c.isDigit() || (c >= 'a' && c < char('a'+base-10))
13874                            || (c >= 'A' && c < char('A'+base-10));
13875 }
13876
13877 /*!
13878   Returns the string converted to a <code>long</code> value.
13879
13880   If \a ok is non-null, \a *ok is set to TRUE if there are no
13881   conceivable errors, and FALSE if the string is not a number at all, or if
13882   it has trailing garbage.
13883 */
13884
13885 long QString::toLong( bool *ok, int base ) const
13886 {
13887     const QChar *p = unicode();
13888     long val=0;
13889     int l = length();
13890     const long max_mult = INT_MAX / base;
13891     bool is_ok = FALSE;
13892     int neg = 0;
13893     if ( !p )
13894         goto bye;
13895     while ( l && p->isSpace() )                 // skip leading space
13896         l--,p++;
13897     if ( l && *p == '-' ) {
13898         l--;
13899         p++;
13900         neg = 1;
13901     } else if ( *p == '+' ) {
13902         l--;
13903         p++;
13904     }
13905
13906     // NOTE: toULong() code is similar
13907     if ( !l || !ok_in_base(*p,base) )
13908         goto bye;
13909     while ( l && ok_in_base(*p,base) ) {
13910         l--;
13911         int dv;
13912         if ( p->isDigit() ) {
13913             dv = p->digitValue();
13914         } else {
13915             if ( *p >= 'a' && *p <= 'z' )
13916                 dv = *p - 'a' + 10;
13917             else
13918                 dv = *p - 'A' + 10;
13919         }
13920         if ( val > max_mult || (val == max_mult && dv > (INT_MAX%base)+neg) )
13921             goto bye;
13922         val = base*val + dv;
13923         p++;
13924     }
13925     if ( neg )
13926         val = -val;
13927     while ( l && p->isSpace() )                 // skip trailing space
13928         l--,p++;
13929     if ( !l )
13930         is_ok = TRUE;
13931 bye:
13932     if ( ok )
13933         *ok = is_ok;
13934     return is_ok ? val : 0;
13935 }
13936
13937 /*!
13938   Returns the string converted to an <code>unsigned long</code>
13939   value.
13940
13941   If \a ok is non-null, \a *ok is set to TRUE if there are no
13942   conceivable errors, and FALSE if the string is not a number at all,
13943   or if it has trailing garbage.
13944 */
13945
13946 ulong QString::toULong( bool *ok, int base ) const
13947 {
13948     const QChar *p = unicode();
13949     ulong val=0;
13950     int l = length();
13951     const ulong max_mult = 429496729;           // UINT_MAX/10, rounded down
13952     bool is_ok = FALSE;
13953     if ( !p )
13954         goto bye;
13955     while ( l && p->isSpace() )                 // skip leading space
13956         l--,p++;
13957     if ( *p == '+' )
13958         l--,p++;
13959
13960     // NOTE: toLong() code is similar
13961     if ( !l || !ok_in_base(*p,base) )
13962         goto bye;
13963     while ( l && ok_in_base(*p,base) ) {
13964         l--;
13965         uint dv;
13966         if ( p->isDigit() ) {
13967             dv = p->digitValue();
13968         } else {
13969             if ( *p >= 'a' && *p <= 'z' )
13970                 dv = *p - 'a' + 10;
13971             else
13972                 dv = *p - 'A' + 10;
13973         }
13974         if ( val > max_mult || (val == max_mult && dv > (UINT_MAX%base)) )
13975             goto bye;
13976         val = base*val + dv;
13977         p++;
13978     }
13979
13980     while ( l && p->isSpace() )                 // skip trailing space
13981         l--,p++;
13982     if ( !l )
13983         is_ok = TRUE;
13984 bye:
13985     if ( ok )
13986         *ok = is_ok;
13987     return is_ok ? val : 0;
13988 }
13989
13990 /*!
13991   Returns the string converted to an <code>unsigned long</code>
13992   value.
13993
13994   If \a ok is non-null, \a *ok is set to TRUE if there are no
13995   conceivable errors, and FALSE if the string is not a number at all,
13996   or if it has trailing garbage.
13997 */
13998
13999 uint64 QString::toUInt64( bool *ok, int base ) const
14000 {
14001     const QChar *p = unicode();
14002     uint64 val=0;
14003     int l = length();
14004     const uint64 max_mult = 1844674407370955161ULL;  // ULLONG_MAX/10, rounded down
14005     bool is_ok = FALSE;
14006     if ( !p )
14007         goto bye;
14008     while ( l && p->isSpace() )                 // skip leading space
14009         l--,p++;
14010     if ( *p == '+' )
14011         l--,p++;
14012
14013     // NOTE: toULong() code is similar
14014     if ( !l || !ok_in_base(*p,base) )
14015         goto bye;
14016     while ( l && ok_in_base(*p,base) ) {
14017         l--;
14018         uint dv;
14019         if ( p->isDigit() ) {
14020             dv = p->digitValue();
14021         } else {
14022             if ( *p >= 'a' && *p <= 'z' )
14023                 dv = *p - 'a' + 10;
14024             else
14025                 dv = *p - 'A' + 10;
14026         }
14027         if ( val > max_mult || (val == max_mult && dv > (ULLONG_MAX%base)) )
14028             goto bye;
14029         val = base*val + dv;
14030         p++;
14031     }
14032
14033     while ( l && p->isSpace() )                 // skip trailing space
14034         l--,p++;
14035     if ( !l )
14036         is_ok = TRUE;
14037 bye:
14038     if ( ok )
14039         *ok = is_ok;
14040     return is_ok ? val : 0;
14041 }
14042
14043
14044 /*!
14045   Returns the string converted to a <code>short</code> value.
14046
14047   If \a ok is non-null, \a *ok is set to TRUE if there are no
14048   conceivable errors, and FALSE if the string is not a number at all, or if
14049   it has trailing garbage.
14050 */
14051
14052 short QString::toShort( bool *ok, int base ) const
14053 {
14054     long v = toLong( ok, base );
14055     if ( ok && *ok && (v < -32768 || v > 32767) ) {
14056         *ok = FALSE;
14057         v = 0;
14058     }
14059     return (short)v;
14060 }
14061
14062 /*!
14063   Returns the string converted to an <code>unsigned short</code> value.
14064
14065   If \a ok is non-null, \a *ok is set to TRUE if there are no
14066   conceivable errors, and FALSE if the string is not a number at all, or if
14067   it has trailing garbage.
14068 */
14069
14070 ushort QString::toUShort( bool *ok, int base ) const
14071 {
14072     ulong v = toULong( ok, base );
14073     if ( ok && *ok && (v > 65535) ) {
14074         *ok = FALSE;
14075         v = 0;
14076     }
14077     return (ushort)v;
14078 }
14079
14080
14081 /*!
14082   Returns the string converted to a <code>int</code> value.
14083
14084   \code
14085   QString str("FF");
14086   bool ok;
14087   int hex = str.toInt( &ok, 16 ); // will return 255, and ok set to TRUE
14088   int dec = str.toInt( &ok, 10 ); // will return 0, and ok set to FALSE
14089   \endcode
14090
14091   If \a ok is non-null, \a *ok is set to TRUE if there are no
14092   conceivable errors, and FALSE if the string is not a number at all,
14093   or if it has trailing garbage.
14094 */
14095
14096 int QString::toInt( bool *ok, int base ) const
14097 {
14098     return (int)toLong( ok, base );
14099 }
14100
14101 /*!
14102   Returns the string converted to an <code>unsigned int</code> value.
14103
14104   If \a ok is non-null, \a *ok is set to TRUE if there are no
14105   conceivable errors, and FALSE if the string is not a number at all,
14106   or if it has trailing garbage.
14107 */
14108
14109 uint QString::toUInt( bool *ok, int base ) const
14110 {
14111     return (uint)toULong( ok, base );
14112 }
14113
14114 /*!
14115   Returns the string converted to a <code>double</code> value.
14116
14117   If \a ok is non-null, \a *ok is set to TRUE if there are no conceivable
14118   errors, and FALSE if the string is not a number at all, or if it has
14119   trailing garbage.
14120 */
14121
14122 double QString::toDouble( bool *ok ) const
14123 {
14124     char *end;
14125
14126     QCString a = latin1();
14127     // Just latin1() is not sufficient, since U0131 would look like '1'.
14128     for (uint i=0; i<d->len; i++)
14129         if ( d->unicode[i].row() )
14130             a[(int)i]='z';
14131
14132     double val = strtod( a.data() ? a.data() : "", &end );
14133     if ( ok )
14134         *ok = ( a && *a && ( end == 0 || *end == '\0' ) );
14135     return val;
14136 }
14137
14138 /*!
14139   Returns the string converted to a <code>float</code> value.
14140
14141   If \a ok is non-null, \a *ok is set to TRUE if there are no
14142   conceivable errors, and FALSE if the string is not a number at all,
14143   or if it has trailing garbage.
14144 */
14145
14146 float QString::toFloat( bool *ok ) const
14147 {
14148     return (float)toDouble( ok );
14149 }
14150
14151
14152 /*!
14153   Sets the string to the printed value of \a n and returns a
14154   reference to the string.
14155
14156   The value is converted to \a base notation (default is decimal).
14157   The base must be a value from 2 to 36.
14158 */
14159
14160 QString &QString::setNum( long n, int base )
14161 {
14162 #if defined(CHECK_RANGE)
14163     if ( base < 2 || base > 36 ) {
14164         qWarning( "QString::setNum: Invalid base %d", base );
14165         base = 10;
14166     }
14167 #endif
14168     char   charbuf[65*sizeof(QChar)];
14169     QChar *buf = (QChar*)charbuf;
14170     QChar *p = &buf[64];
14171     int  len = 0;
14172     bool neg;
14173     if ( n < 0 ) {
14174         neg = TRUE;
14175         if ( n == INT_MIN ) {
14176             // Cannot always negate this special case
14177             QString s1, s2;
14178             s1.setNum(n/base);
14179             s2.setNum((-(n+base))%base);
14180             *this = s1 + s2;
14181             return *this;
14182         }
14183         n = -n;
14184     } else {
14185         neg = FALSE;
14186     }
14187     do {
14188         *--p = "0123456789abcdefghijklmnopqrstuvwxyz"[((int)(n%base))];
14189         n /= base;
14190         len++;
14191     } while ( n );
14192     if ( neg ) {
14193         *--p = '-';
14194         len++;
14195     }
14196     return setUnicode( p, len );
14197 }
14198
14199 /*!
14200   Sets the string to the printed unsigned value of \a n and
14201   returns a reference to the string.
14202
14203   The value is converted to \a base notation (default is decimal).
14204   The base must be a value from 2 to 36.
14205 */
14206
14207 QString &QString::setNum( ulong n, int base )
14208 {
14209 #if defined(CHECK_RANGE)
14210     if ( base < 2 || base > 36 ) {
14211         qWarning( "QString::setNum: Invalid base %d", base );
14212         base = 10;
14213     }
14214 #endif
14215     char   charbuf[65*sizeof(QChar)];
14216     QChar *buf = (QChar*)charbuf;
14217     QChar *p = &buf[64];
14218     int len = 0;
14219     do {
14220         *--p = "0123456789abcdefghijklmnopqrstuvwxyz"[((int)(n%base))];
14221         n /= base;
14222         len++;
14223     } while ( n );
14224     return setUnicode(p,len);
14225 }
14226
14227 /*!
14228   \fn QString &QString::setNum( int n, int base )
14229   Sets the string to the printed value of \a n and returns a reference
14230   to the string.
14231 */
14232
14233 /*!
14234   \fn QString &QString::setNum( uint n, int base )
14235   Sets the string to the printed unsigned value of \a n and returns a
14236   reference to the string.
14237 */
14238
14239 /*!
14240   \fn QString &QString::setNum( short n, int base )
14241   Sets the string to the printed value of \a n and returns a reference
14242   to the string.
14243 */
14244
14245 /*!
14246   \fn QString &QString::setNum( ushort n, int base )
14247   Sets the string to the printed unsigned value of \a n and returns a
14248   reference to the string.
14249 */
14250
14251 /*!  Sets the string to the printed value of \a n, formatted in the \a f
14252   format with \a prec precision, and returns a reference to the
14253   string.
14254
14255   \a f can be 'f', 'F', 'e', 'E', 'g' or 'G', all of which have the
14256   same meaning as for sprintf().
14257 */
14258
14259 QString &QString::setNum( double n, char f, int prec )
14260 {
14261 #if defined(CHECK_RANGE)
14262     if ( !(f=='f' || f=='F' || f=='e' || f=='E' || f=='g' || f=='G') ) {
14263         qWarning( "QString::setNum: Invalid format char '%c'", f );
14264         f = 'f';
14265     }
14266 #endif
14267     char format[20];
14268     char buf[120];                              // enough for 99 precision?
14269     char *fs = format;                          // generate format string
14270     *fs++ = '%';                                //   "%.<prec>l<f>"
14271     if ( prec >= 0 ) {
14272         if ( prec > 99 )                        // buf big enough for precision?
14273             prec = 99;
14274         *fs++ = '.';
14275         if ( prec >= 10 ) {
14276             *fs++ = prec / 10 + '0';
14277             *fs++ = prec % 10 + '0';
14278         } else {
14279             *fs++ = prec + '0';
14280         }
14281     }
14282     *fs++ = 'l';
14283     *fs++ = f;
14284     *fs = '\0';
14285     ::sprintf( buf, format, n );
14286     return setLatin1(buf);
14287 }
14288
14289 /*!
14290   \overload QString &QString::setNum( float n, char f, int prec )
14291 */
14292
14293
14294 /*!
14295   A convenience factory function that returns a string representation
14296   of the number \a n.
14297
14298   \sa setNum()
14299  */
14300 QString QString::number( long n, int base )
14301 {
14302     QString s;
14303     s.setNum( n, base );
14304     return s;
14305 }
14306
14307 /*!
14308   A convenience factory function that returns a string representation
14309   of the number \a n.
14310
14311   \sa setNum()
14312  */
14313 QString QString::number( ulong n, int base )
14314 {
14315     QString s;
14316     s.setNum( n, base );
14317     return s;
14318 }
14319
14320 /*!
14321   A convenience factory function that returns a string representation
14322   of the number \a n.
14323
14324   \sa setNum()
14325  */
14326 QString QString::number( int n, int base )
14327 {
14328     QString s;
14329     s.setNum( n, base );
14330     return s;
14331 }
14332
14333 /*!
14334   A convenience factory function that returns a string representation
14335   of the number \a n.
14336
14337   \sa setNum()
14338  */
14339 QString QString::number( uint n, int base )
14340 {
14341     QString s;
14342     s.setNum( n, base );
14343     return s;
14344 }
14345
14346 /*!
14347   This static function returns the printed value of \a n, formatted in the
14348   \a f format with \a prec precision.
14349
14350   \a f can be 'f', 'F', 'e', 'E', 'g' or 'G', all of which have the
14351   same meaning as for sprintf().
14352
14353   \sa setNum()
14354  */
14355 QString QString::number( double n, char f, int prec )
14356 {
14357     QString s;
14358     s.setNum( n, f, prec );
14359     return s;
14360 }
14361
14362
14363 /*! \obsolete
14364
14365   Sets the character at position \a index to \a c and expands the
14366   string if necessary, filling with spaces.
14367
14368   This method is redundant in Qt 2.x, because operator[] will expand
14369   the string as necessary.
14370 */
14371
14372 void QString::setExpand( uint index, QChar c )
14373 {
14374     int spaces = index - d->len;
14375     at(index) = c;
14376     while (spaces-->0)
14377         d->unicode[--index]=' ';
14378 }
14379
14380
14381 /*!
14382   \fn const char* QString::data() const
14383
14384   \obsolete
14385
14386   Returns a pointer to a 0-terminated classic C string.
14387
14388   In Qt 1.x, this returned a char* allowing direct manipulation of the
14389   string as a sequence of bytes.  In Qt 2.x where QString is a Unicode
14390   string, char* conversion constructs a temporary string, and hence
14391   direct character operations are meaningless.
14392 */
14393
14394 /*!
14395   \fn bool QString::operator!() const
14396   Returns TRUE if it is a null string, otherwise FALSE.  Thus
14397   you can write:
14398
14399 \code
14400   QString name = getName();
14401   if ( !name )
14402     name = "Rodney";
14403 \endcode
14404
14405   Note that if you say:
14406
14407 \code
14408   QString name = getName();
14409   if ( name )
14410     doSomethingWith(name);
14411 \endcode
14412
14413   Then this will call <tt>operator const char*()</tt>, which will do what
14414   you want, but rather inefficiently - you may wish to define the macro
14415   QT_NO_ASCII_CAST when writing code which you wish to strictly remain
14416   Unicode-clean.
14417
14418   When you want the above semantics, use <tt>!isNull()</tt>
14419   or even <tt>!!</tt>:
14420
14421 \code
14422   QString name = getName();
14423   if ( !!name )
14424     doSomethingWith(name);
14425 \endcode
14426 */
14427
14428
14429 /*!
14430   \fn QString& QString::append( const QString& str )
14431   Appends \a str to the string and returns a reference to the result.
14432   Equivalent to operator+=().
14433  */
14434
14435 /*!
14436   \fn QString& QString::append( char ch )
14437   Appends \a ch to the string and returns a reference to the result.
14438   Equivalent to operator+=().
14439  */
14440
14441 /*!
14442   \fn QString& QString::append( QChar ch )
14443   Appends \a ch to the string and returns a reference to the result.
14444   Equivalent to operator+=().
14445  */
14446
14447 /*!
14448   Appends \a str to the string and returns a reference to the string.
14449 */
14450 QString& QString::operator+=( const QString &str )
14451 {
14452     uint len1 = length();
14453     uint len2 = str.length();
14454     if ( len2 ) {
14455         setLength(len1+len2);
14456         memcpy( d->unicode+len1, str.unicode(), sizeof(QChar)*len2 );
14457     } else if ( isNull() && !str.isNull() ) {   // ## just for 1.x compat:
14458         *this = fromLatin1("");
14459     }
14460     return *this;
14461 }
14462
14463 /*!
14464   Appends \a c to the string and returns a reference to the string.
14465 */
14466
14467 QString &QString::operator+=( QChar c )
14468 {
14469     setLength(length()+1);
14470     d->unicode[length()-1] = c;
14471     return *this;
14472 }
14473
14474 /*!
14475   Appends \a c to the string and returns a reference to the string.
14476 */
14477
14478 QString &QString::operator+=( char c )
14479 {
14480     setLength(length()+1);
14481     d->unicode[length()-1] = c;
14482     return *this;
14483 }
14484
14485
14486
14487 /*! \fn char QChar::latin1() const
14488
14489   Returns a latin-1 copy of this character, if this character is in
14490   the latin-1 character set.  If not, this function returns 0.
14491 */
14492
14493
14494 /*!
14495   Returns a Latin-1 representation of the string. Note that the returned
14496   value is undefined if the string contains non-Latin-1 characters.  If you
14497   want to convert strings into formats other than Unicode, see the
14498   QTextCodec classes.
14499
14500   This function is mainly useful for boot-strapping legacy code to
14501   use Unicode.
14502
14503   The result remains valid so long as one unmodified
14504   copy of the source string exists.
14505
14506   \sa utf8(), local8Bit()
14507 */
14508 const char* QString::latin1() const
14509 {
14510     if ( d->ascii ) {
14511         if ( d->dirtyascii )
14512             delete [] d->ascii;
14513         else
14514             return d->ascii;
14515     }
14516     Q2HELPER(stat_get_ascii++)
14517     Q2HELPER(stat_get_ascii_size+=d->len)
14518     static QTextCodec* codec = QTextCodec::codecForMib(106);
14519     if (codec) // we use utf8 coding also for latin1 if possible
14520     {
14521       QCString utf8str(codec->fromUnicode(*this));
14522       d->ascii = new char[utf8str.length()+1];
14523       if (utf8str.isEmpty())
14524       {
14525         d->ascii[0]='\0'; // make empty string
14526       }
14527       else // copy string
14528       {
14529         qstrcpy(d->ascii,utf8str.data());
14530       }
14531     }
14532     else // fall back to latin1
14533     {
14534       d->ascii = unicodeToAscii( d->unicode, d->len );
14535     }
14536     QCString utf8str(utf8());
14537     d->dirtyascii = 0;
14538     return d->ascii;
14539 }
14540
14541 /*! \obsolete
14542
14543   This functions simply calls latin1() and returns the result.
14544 */
14545 const char* QString::ascii() const
14546 {
14547     return latin1();
14548 }
14549
14550 #ifndef QT_NO_TEXTCODEC
14551 /*!
14552   Returns the string encoded in UTF8 format.
14553
14554   See QTextCodec for more diverse coding/decoding of Unicode strings.
14555
14556   \sa QString::fromUtf8(), local8Bit(), latin1()
14557 */
14558 QCString QString::utf8() const
14559 {
14560     static QTextCodec* codec = QTextCodec::codecForMib(106);
14561     return codec
14562             ? codec->fromUnicode(*this)
14563             : QCString(latin1());
14564 }
14565
14566 /*!
14567   Returns the unicode string decoded from the
14568   first \a len bytes of \a utf8.  If \a len is -1 (the default), the
14569   length of \a utf8 is used.  If trailing partial characters are in
14570   \a utf8, they are ignored.
14571
14572   See QTextCodec for more diverse coding/decoding of Unicode strings.
14573 */
14574 QString QString::fromUtf8(const char* utf8, int len)
14575 {
14576     static QTextCodec* codec = QTextCodec::codecForMib(106);
14577     if ( len < 0 ) len = qstrlen(utf8);
14578     return codec
14579             ? codec->toUnicode(utf8, len)
14580             : QString::fromLatin1(utf8, len);
14581 }
14582 #endif // QT_NO_TEXTCODEC
14583 /*!
14584   Creates a QString from Latin1 text.  This is the same as the
14585   QString(const char*) constructor, but you can make that constructor
14586   invisible if you compile with the define QT_NO_CAST_ASCII, in which
14587   case you can explicitly create a QString from Latin-1 text using
14588   this function.
14589 */
14590 QString QString::fromLatin1(const char* chars, int len)
14591 {
14592     uint l;
14593     QChar *uc;
14594     if ( len < 0 ) {
14595         uc = internalAsciiToUnicode(chars,&l);
14596     } else {
14597         uc = internalAsciiToUnicode(chars,&l,len);
14598     }
14599     return QString(new QStringData(uc,l,l), TRUE);
14600 }
14601
14602 /*!
14603   \fn const QChar* QString::unicode() const
14604
14605   Returns the Unicode representation of the string.  The result
14606   remains valid until the string is modified.
14607 */
14608
14609 /*!
14610   Returns the string encoded in a locale-specific format.  On X11, this
14611   is the QTextCodec::codecForLocale().  On Windows, it is a system-defined
14612   encoding.
14613
14614   See QTextCodec for more diverse coding/decoding of Unicode strings.
14615
14616   \sa QString::fromLocal8Bit(), latin1(), utf8()
14617 */
14618
14619
14620 QCString QString::local8Bit() const
14621 {
14622 #ifdef QT_NO_TEXTCODEC
14623     return latin1();
14624 #else
14625 #ifdef _WS_X11_
14626     static QTextCodec* codec = QTextCodec::codecForLocale();
14627     return codec
14628             ? codec->fromUnicode(*this)
14629             : QCString(latin1());
14630 #endif
14631 #ifdef _WS_MAC_
14632     static QTextCodec* codec = QTextCodec::codecForLocale();
14633     return codec
14634             ? codec->fromUnicode(*this)
14635             : QCString(latin1());
14636 #endif
14637 #ifdef _WS_WIN_
14638     return qt_winQString2MB( *this );
14639 #endif
14640 #ifdef _WS_QWS_
14641     return utf8(); // ##### if there is ANY 8 bit format supported?
14642 #endif
14643 #endif
14644 }
14645
14646 /*!
14647   Returns the unicode string decoded from the
14648   first \a len bytes of \a local8Bit.  If \a len is -1 (the default), the
14649   length of \a local8Bit is used.  If trailing partial characters are in
14650   \a local8Bit, they are ignored.
14651
14652   \a local8Bit is assumed to be encoded in a locale-specific format.
14653
14654   See QTextCodec for more diverse coding/decoding of Unicode strings.
14655 */
14656 QString QString::fromLocal8Bit(const char* local8Bit, int len)
14657 {
14658 #ifdef QT_NO_TEXTCODEC
14659     return fromLatin1( local8Bit, len );
14660 #else
14661
14662     if ( !local8Bit )
14663         return QString::null;
14664 #ifdef _WS_X11_
14665     static QTextCodec* codec = QTextCodec::codecForLocale();
14666     if ( len < 0 ) len = qstrlen(local8Bit);
14667     return codec
14668             ? codec->toUnicode(local8Bit, len)
14669             : QString::fromLatin1(local8Bit,len);
14670 #endif
14671 #ifdef _WS_MAC_
14672     static QTextCodec* codec = QTextCodec::codecForLocale();
14673     if ( len < 0 ) len = qstrlen(local8Bit);
14674     return codec
14675             ? codec->toUnicode(local8Bit, len)
14676             : QString::fromLatin1(local8Bit,len);
14677 #endif
14678 // Should this be OS_WIN32?
14679 #ifdef _WS_WIN_
14680     if ( len >= 0 ) {
14681         QCString s(local8Bit,len+1);
14682         return qt_winMB2QString(s);
14683     }
14684     return qt_winMB2QString( local8Bit );
14685 #endif
14686 #ifdef _WS_QWS_
14687     return fromUtf8(local8Bit,len);
14688 #endif
14689 #endif // QT_NO_TEXTCODEC
14690 }
14691
14692 /*!
14693   \fn QString::operator const char *() const
14694
14695   Returns latin1().  Be sure to see the warnings documented there.
14696   Note that for new code which you wish to be strictly Unicode-clean,
14697   you can define the macro QT_NO_ASCII_CAST when compiling your code
14698   to hide this function so that automatic casts are not done.  This
14699   has the added advantage that you catch the programming error
14700   described under operator!().
14701 */
14702
14703 /*!
14704   \fn QChar QString::at( uint ) const
14705
14706   Returns the character at \a i, or 0 if \a i is beyond the length
14707   of the string.
14708
14709   Note: If this QString is not const or const&, the non-const at()
14710   will be used instead, which will expand the string if \a i is beyond
14711   the length of the string.
14712 */
14713
14714 /*!
14715   \fn QChar QString::constref(uint i) const
14716   Equivalent to at(i), this returns the QChar at \a i by value.
14717
14718   \sa ref()
14719 */
14720
14721 /*!
14722   \fn QChar& QString::ref(uint i)
14723   Returns the QChar at \a i by reference.
14724
14725   \sa constref()
14726 */
14727
14728 /*!
14729   \fn QChar QString::operator[](int) const
14730
14731   Returns the character at \a i, or QChar::null if \a i is beyond the
14732   length of the string.
14733
14734   Note: If this QString is not const or const&, the non-const operator[]
14735   will be used instead, which will expand the string if \a i is beyond
14736   the length of the string.
14737 */
14738
14739 /*!
14740   \fn QCharRef QString::operator[](int)
14741
14742   Returns an object that references the character at \a i.
14743   This reference
14744   can then be assigned to, or otherwise used immediately, but
14745   becomes invalid once further modifications are made to the string.
14746   The QCharRef internal class can be used much like a constant QChar, but
14747   if you assign to it, you change the original string (which enlarges
14748   and detaches itself). You will get compilation errors if you try to
14749   use the result as anything but a QChar.
14750 */
14751
14752 /*!
14753   \fn QCharRef QString::at( uint i )
14754   Returns a reference to the character at \a i, expanding
14755   the string with QChar::null if necessary.  The resulting reference
14756   can then be assigned to, or otherwise used immediately, but
14757   becomes invalid once further modifications are made to the string.
14758 */
14759
14760 /*!
14761   Internal chunk of code to handle the
14762   uncommon cases of at() above.
14763 */
14764 void QString::subat( uint i )
14765 {
14766     uint olen = d->len;
14767     if ( i >= olen ) {
14768         setLength( i+1 );               // i is index; i+1 is needed length
14769         for ( uint j=olen; j<=i; j++ )
14770             d->unicode[j] = QChar::null;
14771     } else {
14772         // Just be sure to detach
14773         real_detach();
14774     }
14775 }
14776
14777
14778 /*!
14779   Resizes the string to \a len unicode characters and copies \a unicode
14780   into the string.  If \a unicode is null, nothing is copied, but the
14781   string is resized to \a len anyway. If \a len is zero, the string
14782   becomes a \link isNull() null\endlink string.
14783
14784   \sa setLatin1(), isNull()
14785 */
14786
14787 QString& QString::setUnicode( const QChar *unicode, uint len )
14788 {
14789     if ( len == 0 ) {                           // set to null string
14790         if ( d != shared_null ) {               // beware of nullstring being set to nullstring
14791             deref();
14792             d = shared_null ? shared_null : makeSharedNull();
14793             d->ref();
14794         }
14795     } else if ( d->count != 1 || len > d->maxl ||
14796          ( len*4 < d->maxl && d->maxl > 4 ) ) { // detach, grown or shrink
14797         Q2HELPER(stat_copy_on_write++)
14798         Q2HELPER(stat_copy_on_write_size+=d->len)
14799         uint newMax = 4;
14800         while ( newMax < len )
14801             newMax *= 2;
14802         QChar* nd = QT_ALLOC_QCHAR_VEC( newMax );
14803         if ( unicode )
14804             memcpy( nd, unicode, sizeof(QChar)*len );
14805         deref();
14806         d = new QStringData( nd, len, newMax );
14807     } else {
14808         d->len = len;
14809         d->dirtyascii = 1;
14810         if ( unicode )
14811             memcpy( d->unicode, unicode, sizeof(QChar)*len );
14812     }
14813     return *this;
14814 }
14815
14816 /*!
14817   Resizes the string to \a len unicode characters and copies
14818   \a unicode_as_ushorts into the string (on some X11 client
14819   platforms this will involve a byte-swapping pass).
14820
14821   If \a unicode is null, nothing is copied, but the
14822   string is resized to \a len anyway. If \a len is zero, the string
14823   becomes a \link isNull() null\endlink string.
14824
14825   \sa setLatin1(), isNull()
14826 */
14827 QString& QString::setUnicodeCodes( const ushort* unicode_as_ushorts, uint len )
14828 {
14829     setUnicode((const QChar*)unicode_as_ushorts, len);
14830     QChar t(0x1234);
14831     if ( unicode_as_ushorts && *((ushort*)&t) == 0x3412 ) {
14832         // Need to byteswap
14833         char* b = (char*)d->unicode;
14834         while ( len-- ) {
14835             char c = b[0];
14836             b[0] = b[1];
14837             b[1] = c;
14838             b += sizeof(QChar);
14839         }
14840     }
14841     return *this;
14842 }
14843
14844
14845 /*!
14846   Sets this string to \a str, interpreted as a classic Latin 1 C string.
14847   If the \a len argument is negative (default), it is set to strlen(str).
14848
14849   If \a str is 0 a null string is created.  If \a str is "" an empty
14850   string is created.
14851
14852   \sa isNull(), isEmpty()
14853 */
14854
14855 QString &QString::setLatin1( const char *str, int len )
14856 {
14857     if ( str == 0 )
14858         return setUnicode(0,0);
14859     if ( len < 0 )
14860         len = qstrlen(str);
14861     if ( len == 0 ) {                           // won't make a null string
14862         deref();
14863         uint l;
14864         QChar *uc = internalAsciiToUnicode(str,&l);
14865         d = new QStringData(uc,l,l);
14866     } else {
14867         setUnicode( 0, len );                   // resize but not copy
14868         QChar *p = d->unicode;
14869         while ( len-- )
14870             *p++ = *str++;
14871     }
14872     return *this;
14873 }
14874
14875
14876 /*!
14877   \fn int QString::compare (const QString & s1, const QString & s2)
14878
14879   Compare \a s1 to \a s2 returning an integer less than, equal to, or
14880   greater than zero if s1 is, respectively, lexically less than, equal to,
14881   or greater than s2.
14882 */
14883
14884 /*!
14885   Compares this string to \a s, returning an integer less than, equal to, or
14886   greater than zero if it is, respectively, lexically less than, equal to,
14887   or greater than \a s.
14888 */
14889 int QString::compare( const QString& s ) const
14890 {
14891     return ucstrcmp(*this,s);
14892 }
14893
14894 bool operator==( const QString &s1, const QString &s2 )
14895 {
14896     return (s1.length() == s2.length()) && s1.isNull() == s2.isNull() &&
14897            (memcmp((char*)s1.unicode(),(char*)s2.unicode(),
14898                    s1.length()*sizeof(QChar)) ==0);
14899 }
14900
14901 bool operator!=( const QString &s1, const QString &s2 )
14902 { return !(s1==s2); }
14903
14904 bool operator<( const QString &s1, const QString &s2 )
14905 { return ucstrcmp(s1,s2) < 0; }
14906
14907 bool operator<=( const QString &s1, const QString &s2 )
14908 { return ucstrcmp(s1,s2) <= 0; }
14909
14910 bool operator>( const QString &s1, const QString &s2 )
14911 { return ucstrcmp(s1,s2) > 0; }
14912
14913 bool operator>=( const QString &s1, const QString &s2 )
14914 { return ucstrcmp(s1,s2) >= 0; }
14915
14916
14917 bool operator==( const QString &s1, const char *s2 )
14918 { return s1==QString(s2); }
14919
14920 bool operator==( const char *s1, const QString &s2 )
14921 { return QString(s1)==s2; }
14922
14923 bool operator!=( const QString &s1, const char *s2 )
14924 { return !(s1==s2); }
14925
14926 bool operator!=( const char *s1, const QString &s2 )
14927 { return !(s1==s2); }
14928
14929 bool operator<( const QString &s1, const char *s2 )
14930 { return ucstrcmp(s1,s2) < 0; }
14931
14932 bool operator<( const char *s1, const QString &s2 )
14933 { return ucstrcmp(s1,s2) < 0; }
14934
14935 bool operator<=( const QString &s1, const char *s2 )
14936 { return ucstrcmp(s1,s2) <= 0; }
14937
14938 bool operator<=( const char *s1, const QString &s2 )
14939 { return ucstrcmp(s1,s2) <= 0; }
14940
14941 bool operator>( const QString &s1, const char *s2 )
14942 { return ucstrcmp(s1,s2) > 0; }
14943
14944 bool operator>( const char *s1, const QString &s2 )
14945 { return ucstrcmp(s1,s2) > 0; }
14946
14947 bool operator>=( const QString &s1, const char *s2 )
14948 { return ucstrcmp(s1,s2) >= 0; }
14949
14950 bool operator>=( const char *s1, const QString &s2 )
14951 { return ucstrcmp(s1,s2) >= 0; }
14952
14953
14954 /*****************************************************************************
14955   Documentation for QString related functions
14956  *****************************************************************************/
14957
14958 /*!
14959   \fn bool operator==( const QString &s1, const QString &s2 )
14960   \relates QString
14961   Returns TRUE if the two strings are equal, or FALSE if they are different.
14962   A null string is different from an empty, non-null string.
14963
14964   Equivalent to <code>qstrcmp(s1,s2) == 0</code>.
14965 */
14966
14967 /*!
14968   \fn bool operator==( const QString &s1, const char *s2 )
14969   \relates QString
14970   Returns TRUE if the two strings are equal, or FALSE if they are different.
14971
14972   Equivalent to <code>qstrcmp(s1,s2) == 0</code>.
14973 */
14974
14975 /*!
14976   \fn bool operator==( const char *s1, const QString &s2 )
14977   \relates QString
14978   Returns TRUE if the two strings are equal, or FALSE if they are different.
14979
14980   Equivalent to <code>qstrcmp(s1,s2) == 0</code>.
14981 */
14982
14983 /*!
14984   \fn bool operator!=( const QString &s1, const QString &s2 )
14985   \relates QString
14986   Returns TRUE if the two strings are different, or FALSE if they are equal.
14987
14988   Equivalent to <code>qstrcmp(s1,s2) != 0</code>.
14989 */
14990
14991 /*!
14992   \fn bool operator!=( const QString &s1, const char *s2 )
14993   \relates QString
14994   Returns TRUE if the two strings are different, or FALSE if they are equal.
14995
14996   Equivalent to <code>qstrcmp(s1,s2) != 0</code>.
14997 */
14998
14999 /*!
15000   \fn bool operator!=( const char *s1, const QString &s2 )
15001   \relates QString
15002   Returns TRUE if the two strings are different, or FALSE if they are equal.
15003
15004   Equivalent to <code>qstrcmp(s1,s2) != 0</code>.
15005 */
15006
15007 /*!
15008   \fn bool operator<( const QString &s1, const char *s2 )
15009   \relates QString
15010   Returns TRUE if \a s1 is alphabetically less than \a s2, otherwise FALSE.
15011
15012   Equivalent to <code>qstrcmp(s1,s2) \< 0</code>.
15013 */
15014
15015 /*!
15016   \fn bool operator<( const char *s1, const QString &s2 )
15017   \relates QString
15018   Returns TRUE if \a s1 is alphabetically less than \a s2, otherwise FALSE.
15019
15020   Equivalent to <code>qstrcmp(s1,s2) \< 0</code>.
15021 */
15022
15023 /*!
15024   \fn bool operator<=( const QString &s1, const char *s2 )
15025   \relates QString
15026   Returns TRUE if \a s1 is alphabetically less than or equal to \a s2,
15027   otherwise FALSE.
15028
15029   Equivalent to <code>qstrcmp(s1,s2) \<= 0</code>.
15030 */
15031
15032 /*!
15033   \fn bool operator<=( const char *s1, const QString &s2 )
15034   \relates QString
15035   Returns TRUE if \a s1 is alphabetically less than or equal to \a s2,
15036   otherwise FALSE.
15037
15038   Equivalent to <code>qstrcmp(s1,s2) \<= 0</code>.
15039 */
15040
15041 /*!
15042   \fn bool operator>( const QString &s1, const char *s2 )
15043   \relates QString
15044   Returns TRUE if \a s1 is alphabetically greater than \a s2, otherwise FALSE.
15045
15046   Equivalent to <code>qstrcmp(s1,s2) \> 0</code>.
15047 */
15048
15049 /*!
15050   \fn bool operator>( const char *s1, const QString &s2 )
15051   \relates QString
15052   Returns TRUE if \a s1 is alphabetically greater than \a s2, otherwise FALSE.
15053
15054   Equivalent to <code>qstrcmp(s1,s2) \> 0</code>.
15055 */
15056
15057 /*!
15058   \fn bool operator>=( const QString &s1, const char *s2 )
15059   \relates QString
15060   Returns TRUE if \a s1 is alphabetically greater than or equal to \a s2,
15061   otherwise FALSE.
15062
15063   Equivalent to <code>qstrcmp(s1,s2) \>= 0</code>.
15064 */
15065
15066 /*!
15067   \fn bool operator>=( const char *s1, const QString &s2 )
15068   \relates QString
15069   Returns TRUE if \a s1 is alphabetically greater than or equal to \a s2,
15070   otherwise FALSE.
15071
15072   Equivalent to <code>qstrcmp(s1,s2) \>= 0</code>.
15073 */
15074
15075 /*!
15076   \fn QString operator+( const QString &s1, const QString &s2 )
15077   \relates QString
15078   Returns the concatenated string of s1 and s2.
15079 */
15080
15081 /*!
15082   \fn QString operator+( const QString &s1, const char *s2 )
15083   \relates QString
15084   Returns the concatenated string of s1 and s2.
15085 */
15086
15087 /*!
15088   \fn QString operator+( const char *s1, const QString &s2 )
15089   \relates QString
15090   Returns the concatenated string of s1 and s2.
15091 */
15092
15093 /*!
15094   \fn QString operator+( const QString &s, char c )
15095   \relates QString
15096   Returns the concatenated string of s and c.
15097 */
15098
15099 /*!
15100   \fn QString operator+( char c, const QString &s )
15101   \relates QString
15102   Returns the concatenated string of c and s.
15103 */
15104
15105
15106 /*****************************************************************************
15107   QString stream functions
15108  *****************************************************************************/
15109 #ifndef QT_NO_DATASTREAM
15110 /*!
15111   \relates QString
15112   Writes a string to the stream.
15113
15114   \sa \link datastreamformat.html Format of the QDataStream operators \endlink
15115 */
15116
15117 QDataStream &operator<<( QDataStream &s, const QString &str )
15118 {
15119     if ( s.version() == 1 ) {
15120         QCString l( str.latin1() );
15121         s << l;
15122     }
15123     else {
15124         const char* ub = (const char*)str.unicode();
15125         if ( ub || s.version() < 3 ) {
15126             if ( QChar::networkOrdered() ==
15127                     (s.byteOrder()==QDataStream::BigEndian) ) {
15128                 s.writeBytes( ub, (int)sizeof(QChar)*str.length() );
15129             } else {
15130                 static const uint auto_size = 1024;
15131                 char t[auto_size];
15132                 char *b;
15133                 if ( str.length()*sizeof(QChar) > auto_size ) {
15134                     b = new char[str.length()*sizeof(QChar)];
15135                 } else {
15136                     b = t;
15137                 }
15138                 int l = str.length();
15139                 char *c=b;
15140                 while ( l-- ) {
15141                     *c++ = ub[1];
15142                     *c++ = ub[0];
15143                     ub+=sizeof(QChar);
15144                 }
15145                 s.writeBytes( b, (int)sizeof(QChar)*str.length() );
15146                 if ( str.length()*sizeof(QChar) > auto_size )
15147                     delete [] b;
15148             }
15149         } else {
15150             // write null marker
15151             s << (Q_UINT32)0xffffffff;
15152         }
15153     }
15154     return s;
15155 }
15156
15157 /*!
15158   \relates QString
15159   Reads a string from the stream.
15160
15161   \sa \link datastreamformat.html Format of the QDataStream operators \endlink
15162 */
15163
15164 QDataStream &operator>>( QDataStream &s, QString &str )
15165 {
15166 #ifdef QT_QSTRING_UCS_4
15167 #if defined(_CC_GNU_)
15168 #warning "operator>> not working properly"
15169 #endif
15170 #endif
15171     if ( s.version() == 1 ) {
15172         QCString l;
15173         s >> l;
15174         str = QString( l );
15175     }
15176     else {
15177         Q_UINT32 bytes;
15178         s >> bytes;                                     // read size of string
15179         if ( bytes == 0xffffffff ) {                    // null string
15180             str = QString::null;
15181         } else if ( bytes > 0 ) {                       // not empty
15182             str.setLength( bytes/2 );
15183             char* b = (char*)str.d->unicode;
15184             s.readRawBytes( b, bytes );
15185             if ( QChar::networkOrdered() !=
15186                     (s.byteOrder()==QDataStream::BigEndian) ) {
15187                 bytes /= 2;
15188                 while ( bytes-- ) {
15189                     char c = b[0];
15190                     b[0] = b[1];
15191                     b[1] = c;
15192                     b += 2;
15193                 }
15194             }
15195         } else {
15196             str = "";
15197         }
15198     }
15199     return s;
15200 }
15201 #endif // QT_NO_DATASTREAM
15202
15203 /*****************************************************************************
15204   QConstString member functions
15205  *****************************************************************************/
15206
15207 /*!
15208   \class QConstString qstring.h
15209   \brief A QString which uses constant Unicode data.
15210
15211   In order to minimize copying, highly optimized applications can use
15212   QConstString to provide a QString-compatible object from existing
15213   Unicode data.  It is then the user's responsibility to make sure
15214   that the Unicode data must exist for the entire lifetime of the
15215   QConstString object.
15216 */
15217
15218 /*!
15219   Constructs a QConstString that uses the first \a length Unicode
15220   characters in the array \a unicode.  Any attempt to modify
15221   copies of the string will cause it to create a copy of the
15222   data, thus it remains forever unmodified.
15223
15224   Note that \a unicode is \e not \e copied.  The caller \e must be
15225   able to guarantee that \a unicode will not be deleted or
15226   modified. Since that is generally not the case with \c const strings
15227   (they are references), this constructor demands a non-const pointer
15228   even though it never modifies \a unicode.
15229 */
15230 QConstString::QConstString( QChar* unicode, uint length ) :
15231     QString(new QStringData(unicode, length, length),TRUE)
15232 {
15233 }
15234
15235 /*!
15236   Destroys the QConstString, creating a copy of the data if
15237   other strings are still using it.
15238 */
15239 QConstString::~QConstString()
15240 {
15241     if ( d->count > 1 ) {
15242         QChar* cp = QT_ALLOC_QCHAR_VEC( d->len );
15243         memcpy( cp, d->unicode, d->len*sizeof(QChar) );
15244         d->unicode = cp;
15245     } else {
15246         d->unicode = 0;
15247     }
15248
15249     // The original d->unicode is now unlinked.
15250 }
15251
15252 /*!
15253   \fn const QString& QConstString::string() const
15254
15255   Returns a constant string referencing the data passed during
15256   construction.
15257 */
15258
15259 /*!
15260   Returns whether the strings starts with \a s, or not.
15261  */
15262 bool QString::startsWith( const QString& s ) const
15263 {
15264     for ( int i =0; i < (int) s.length(); i++ ) {
15265         if ( i >= (int) length() || d->unicode[i] != s[i] )
15266             return FALSE;
15267     }
15268     return TRUE;
15269 }
15270
15271
15272
15273 #if defined(_OS_WIN32_)
15274
15275 #include <windows.h>
15276
15277 /*!
15278   Returns a static Windows TCHAR* from a QString, possibly adding NUL.
15279
15280   The lifetime of the return value is until the next call to this function.
15281 */
15282 const void* qt_winTchar(const QString& str_in, bool addnul)
15283 {
15284     // So that the return value lives long enough.
15285     static QString str;
15286     str = str_in;
15287
15288 #ifdef UNICODE
15289     static uint buflen = 256;
15290     static TCHAR *buf = new TCHAR[buflen];
15291
15292     const QChar* uc = str.unicode();
15293
15294 #define EXTEND if (str.length() > buflen) { delete buf; buf = new TCHAR[buflen=str.length()+1]; }
15295
15296 #if defined(_WS_X11_) || defined(_OS_WIN32_BYTESWAP_)
15297     EXTEND
15298     for ( int i=str.length(); i--; )
15299         buf[i] = uc[i].row() << 8 | uc[i].cell();
15300     if ( addnul )
15301         buf[str.length()] = 0;
15302 #else
15303     // Same endianness of TCHAR
15304     if ( addnul ) {
15305         EXTEND
15306         memcpy(buf,uc,sizeof(TCHAR)*str.length());
15307         buf[str.length()] = 0;
15308     } else {
15309         return uc;
15310     }
15311 #endif
15312     return buf;
15313 #undef EXTEND
15314
15315 #else
15316     return str.latin1();
15317 #endif
15318 }
15319
15320 /*!
15321   Makes a new null terminated Windows TCHAR* from a QString.
15322 */
15323 void* qt_winTchar_new(const QString& str)
15324 {
15325     TCHAR* result = new TCHAR[str.length()+1];
15326     memcpy(result, qt_winTchar(str,FALSE), sizeof(TCHAR)*str.length());
15327     result[str.length()] = 0;
15328     return result;
15329 }
15330
15331 /*!
15332   Makes a QString from a Windows TCHAR*.
15333 */
15334 QString qt_winQString(void* tc)
15335 {
15336 #ifdef UNICODE
15337
15338     int len=0;
15339     while ( ((TCHAR*)tc)[len] )
15340         len++;
15341 #if defined(_WS_X11_) || defined(_OS_WIN32_BYTESWAP_)
15342     QString r;
15343     for ( int i=0; i<len; i++ )
15344         r += QChar(((TCHAR*)tc)[i]&0xff,((TCHAR*)tc)[i]>>8);
15345     return r;
15346 #else
15347     // Same endianness of TCHAR
15348     return QString((QChar*)tc,len);
15349 #endif
15350 #undef EXTEND
15351 #else
15352     return (TCHAR*)tc;
15353 #endif
15354 }
15355
15356 QCString qt_winQString2MB( const QString& s, int uclen )
15357 {
15358     if ( uclen < 0 )
15359         uclen = s.length();
15360     if ( uclen == 0 )
15361         return QCString();
15362     BOOL used_def;
15363     int bufSize=4096;
15364     QCString mb(bufSize);
15365     int len;
15366     while ( !(len=WideCharToMultiByte(CP_ACP, 0, (const WCHAR*)s.unicode(), uclen,
15367                 mb.rawData(), bufSize-1, 0, &used_def)) )
15368     {
15369         int r = GetLastError();
15370         if ( r == ERROR_INSUFFICIENT_BUFFER ) {
15371             bufSize=1+WideCharToMultiByte( CP_ACP, 0,
15372                         (const WCHAR*)s.unicode(), uclen,
15373                         0, 0, 0, &used_def);
15374             mb.resize(bufSize);
15375                 // and try again...
15376         } else {
15377             // Fail.
15378             qWarning("WideCharToMultiByte cannot convert multibyte text (error %d): %s (UTF8)",
15379                 r, s.utf8().data());
15380             break;
15381         }
15382     }
15383     mb[len]='\0';
15384     return mb;
15385 }
15386
15387 // WATCH OUT: mblen must include the NUL (or just use -1)
15388 QString qt_winMB2QString( const char* mb, int mblen )
15389 {
15390     if ( !mb || !mblen )
15391         return QString::null;
15392     const int wclen_auto = 4096;
15393     WCHAR wc_auto[wclen_auto];
15394     int wclen = wclen_auto;
15395     WCHAR *wc = wc_auto;
15396     int len;
15397     while ( !(len=MultiByteToWideChar( CP_ACP, MB_PRECOMPOSED,
15398                 mb, mblen, wc, wclen )) )
15399     {
15400         int r = GetLastError();
15401         if ( r == ERROR_INSUFFICIENT_BUFFER ) {
15402             if ( wc != wc_auto ) {
15403                 qWarning("Size changed in MultiByteToWideChar");
15404                 break;
15405             } else {
15406                 wclen = MultiByteToWideChar( CP_ACP, MB_PRECOMPOSED,
15407                                     mb, mblen, 0, 0 );
15408                 wc = new WCHAR[wclen];
15409                 // and try again...
15410             }
15411         } else {
15412             // Fail.
15413             qWarning("MultiByteToWideChar cannot convert multibyte text");
15414             break;
15415         }
15416     }
15417     if ( len <= 0 )
15418         return QString::null;
15419     QString s( (QChar*)wc, len-1 ); // len-1: we don't want terminator
15420     if ( wc != wc_auto )
15421         delete [] wc;
15422     return s;
15423 }
15424
15425
15426 #endif // _OS_WIN32_