~ubuntu-branches/ubuntu/precise/xom/precise

« back to all changes in this revision

Viewing changes to src/nu/xom/UnicodeUtil.java

  • Committer: Bazaar Package Importer
  • Author(s): Varun Hiremath
  • Date: 2007-11-25 15:50:40 UTC
  • Revision ID: james.westby@ubuntu.com-20071125155040-r75ikcqf1vu0cei7
Tags: upstream-1.1
ImportĀ upstreamĀ versionĀ 1.1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* Copyright 2005 Elliotte Rusty Harold
 
2
   
 
3
   This library is free software; you can redistribute it and/or modify
 
4
   it under the terms of version 2.1 of the GNU Lesser General Public 
 
5
   License as published by the Free Software Foundation.
 
6
   
 
7
   This library is distributed in the hope that it will be useful,
 
8
   but WITHOUT ANY WARRANTY; without even the implied warranty of
 
9
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
 
10
   GNU Lesser General Public License for more details.
 
11
   
 
12
   You should have received a copy of the GNU Lesser General Public
 
13
   License along with this library; if not, write to the 
 
14
   Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
 
15
   Boston, MA 02111-1307  USA
 
16
   
 
17
   You can contact Elliotte Rusty Harold by sending e-mail to
 
18
   elharo@metalab.unc.edu. Please include the word "XOM" in the
 
19
   subject line. The XOM home page is located at http://www.xom.nu/
 
20
*/
 
21
 
 
22
package nu.xom;
 
23
 
 
24
import java.io.InputStream;
 
25
import java.io.DataInputStream;
 
26
import java.io.IOException;
 
27
import java.util.Map;
 
28
import java.util.HashMap;
 
29
 
 
30
/**
 
31
 * <p>
 
32
 *   
 
33
 * </p>
 
34
 * 
 
35
 * @author Elliotte Rusty Harold
 
36
 * @version 1.1b1
 
37
 *
 
38
 */
 
39
final class UnicodeUtil {
 
40
    
 
41
    
 
42
    private static final int CANONICAL_COMBINING_CLASS_NOT_REORDERED = 0;
 
43
    private static final int CANONICAL_COMBINING_CLASS_OVERLAY = 1;
 
44
    private static final int CANONICAL_COMBINING_CLASS_NUKTA = 7;
 
45
    private static final int CANONICAL_COMBINING_CLASS_KANA_VOICING = 8;
 
46
    private final static int CANONICAL_COMBINING_CLASS_VIRAMA = 9;
 
47
    private final static int CANONICAL_COMBINING_CLASS_10 = 10;
 
48
    private final static int CANONICAL_COMBINING_CLASS_11 = 11;
 
49
    private final static int CANONICAL_COMBINING_CLASS_12 = 12;
 
50
    private final static int CANONICAL_COMBINING_CLASS_13 = 13;
 
51
    private final static int CANONICAL_COMBINING_CLASS_14 = 14;
 
52
    private final static int CANONICAL_COMBINING_CLASS_15 = 15;
 
53
    private final static int CANONICAL_COMBINING_CLASS_16 = 16;
 
54
    private final static int CANONICAL_COMBINING_CLASS_17 = 17;
 
55
    private final static int CANONICAL_COMBINING_CLASS_18 = 18;
 
56
    private final static int CANONICAL_COMBINING_CLASS_19 = 19;
 
57
    private final static int CANONICAL_COMBINING_CLASS_20 = 20;
 
58
    private final static int CANONICAL_COMBINING_CLASS_21 = 21;
 
59
    private final static int CANONICAL_COMBINING_CLASS_22 = 22;
 
60
    private final static int CANONICAL_COMBINING_CLASS_23 = 23;
 
61
    private final static int CANONICAL_COMBINING_CLASS_24 = 24;
 
62
    private final static int CANONICAL_COMBINING_CLASS_25 = 25;
 
63
    private final static int CANONICAL_COMBINING_CLASS_26 = 26;
 
64
    private final static int CANONICAL_COMBINING_CLASS_27 = 27;
 
65
    private final static int CANONICAL_COMBINING_CLASS_28 = 28;
 
66
    private final static int CANONICAL_COMBINING_CLASS_29 = 29;
 
67
    private final static int CANONICAL_COMBINING_CLASS_30 = 30;
 
68
    private final static int CANONICAL_COMBINING_CLASS_31 = 31;
 
69
    private final static int CANONICAL_COMBINING_CLASS_32 = 32;
 
70
    private final static int CANONICAL_COMBINING_CLASS_33 = 33;
 
71
    private final static int CANONICAL_COMBINING_CLASS_34 = 34;
 
72
    private final static int CANONICAL_COMBINING_CLASS_35 = 35;
 
73
    private final static int CANONICAL_COMBINING_CLASS_36 = 36;
 
74
    private final static int CANONICAL_COMBINING_CLASS_84 = 84;
 
75
    private final static int CANONICAL_COMBINING_CLASS_91 = 91;
 
76
    private final static int CANONICAL_COMBINING_CLASS_103 = 103;
 
77
    private final static int CANONICAL_COMBINING_CLASS_107 = 107;
 
78
    private final static int CANONICAL_COMBINING_CLASS_118 = 118;
 
79
    private final static int CANONICAL_COMBINING_CLASS_122 = 122;
 
80
    private final static int CANONICAL_COMBINING_CLASS_129 = 129;
 
81
    private final static int CANONICAL_COMBINING_CLASS_130 = 130;
 
82
    private final static int CANONICAL_COMBINING_CLASS_132 = 132;
 
83
    private final static int CANONICAL_COMBINING_CLASS_ATTACHED_BELOW = 202;
 
84
    private final static int CANONICAL_COMBINING_CLASS_BELOW_LEFT = 218;
 
85
 
 
86
 
 
87
    private static boolean isHighSurrogate(char c) {
 
88
        return c >= HI_SURROGATE_START && c <= HI_SURROGATE_END;
 
89
    }
 
90
    private final static int CANONICAL_COMBINING_CLASS_BELOW = 220;
 
91
    private final static int CANONICAL_COMBINING_CLASS_BELOW_RIGHT = 222;
 
92
    private final static int CANONICAL_COMBINING_CLASS_LEFT = 224;
 
93
    private final static int CANONICAL_COMBINING_CLASS_RIGHT = 226;
 
94
    private final static int CANONICAL_COMBINING_CLASS_ABOVE_LEFT = 228;
 
95
    private final static int CANONICAL_COMBINING_CLASS_ABOVE = 230;
 
96
    private final static int CANONICAL_COMBINING_CLASS_ABOVE_RIGHT = 232;
 
97
    private static final int CANONICAL_COMBINING_CLASS_ATTACHED_ABOVE_RIGHT = 216;
 
98
    private final static int CANONICAL_COMBINING_CLASS_DOUBLE_BELOW = 233;
 
99
    private final static int CANONICAL_COMBINING_CLASS_DOUBLE_ABOVE = 234;
 
100
    private final static int CANONICAL_COMBINING_CLASS_IOTA_SUBSCRIPT = 240;
 
101
    
 
102
    private static int HI_SURROGATE_START  = 0xD800;
 
103
    private static int HI_SURROGATE_END    = 0xDBFF;
 
104
    private static int LOW_SURROGATE_START = 0xDC00;
 
105
    
 
106
    
 
107
    private static Map compositions;
 
108
    
 
109
    private static void loadCompositions() {
 
110
    
 
111
        ClassLoader loader = Verifier.class.getClassLoader();
 
112
        if (loader != null) loadCompositions(loader);
 
113
        // If that didn't work, try a different ClassLoader
 
114
        if (compositions == null) {
 
115
            loader = Thread.currentThread().getContextClassLoader();
 
116
            loadCompositions(loader);
 
117
        }
 
118
        if (compositions == null) { 
 
119
            throw new RuntimeException("Broken XOM installation: "
 
120
              + "could not load nu/xom/compositions.dat");
 
121
        }
 
122
        
 
123
    }
 
124
    
 
125
    
 
126
    private static void loadCompositions(ClassLoader loader) {
 
127
        
 
128
        DataInputStream in = null;
 
129
        try {
 
130
            InputStream source = loader.getResourceAsStream("nu/xom/compositions.dat");
 
131
            in = new DataInputStream(source);
 
132
            // ???? would it make sense to store a serialized HashMap instead????
 
133
            compositions = new HashMap();
 
134
            try {
 
135
                while (true) {
 
136
                    String composed = in.readUTF();
 
137
                    String decomposed = in.readUTF();
 
138
                    compositions.put(decomposed, composed);
 
139
                }
 
140
            }
 
141
            catch (java.io.EOFException ex) {
 
142
                // finished
 
143
            }
 
144
        }
 
145
        catch (IOException ex) {
 
146
            return;
 
147
        }
 
148
        finally {
 
149
            try {
 
150
                if (in != null) in.close();
 
151
            }
 
152
            catch (IOException ex) {
 
153
                // no big deal
 
154
            }
 
155
        }
 
156
        
 
157
    }
 
158
    
 
159
 
 
160
    private static boolean isStarter(int character) {
 
161
        return getCombiningClass(character) == 0;
 
162
    }
 
163
 
 
164
    
 
165
    ///CLOVER:OFF
 
166
    private static int getCombiningClass(int c) {
 
167
        // ???? optimize
 
168
        
 
169
        if (c >= 0x0000 && c <= 0x001F) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
170
        if (c == 0x0020) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
171
        if (c >= 0x0021 && c <= 0x0023) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
172
        if (c == 0x0024) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
173
        if (c >= 0x0025 && c <= 0x0027) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
174
        if (c == 0x0028) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
175
        if (c == 0x0029) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
176
        if (c == 0x002A) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
177
        if (c == 0x002B) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
178
        if (c == 0x002C) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
179
        if (c == 0x002D) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
180
        if (c >= 0x002E && c <= 0x002F) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
181
        if (c >= 0x0030 && c <= 0x0039) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
182
        if (c >= 0x003A && c <= 0x003B) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
183
        if (c >= 0x003C && c <= 0x003E) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
184
        if (c >= 0x003F && c <= 0x0040) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
185
        if (c >= 0x0041 && c <= 0x005A) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
186
        if (c == 0x005B) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
187
        if (c == 0x005C) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
188
        if (c == 0x005D) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
189
        if (c == 0x005E) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
190
        if (c == 0x005F) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
191
        if (c == 0x0060) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
192
        if (c >= 0x0061 && c <= 0x007A) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
193
        if (c == 0x007B) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
194
        if (c == 0x007C) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
195
        if (c == 0x007D) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
196
        if (c == 0x007E) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
197
        if (c >= 0x007F && c <= 0x009F) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
198
        if (c == 0x00A0) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
199
        if (c == 0x00A1) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
200
        if (c >= 0x00A2 && c <= 0x00A5) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
201
        if (c >= 0x00A6 && c <= 0x00A7) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
202
        if (c == 0x00A8) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
203
        if (c == 0x00A9) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
204
        if (c == 0x00AA) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
205
        if (c == 0x00AB) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
206
        if (c == 0x00AC) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
207
        if (c == 0x00AD) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
208
        if (c == 0x00AE) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
209
        if (c == 0x00AF) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
210
        if (c == 0x00B0) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
211
        if (c == 0x00B1) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
212
        if (c >= 0x00B2 && c <= 0x00B3) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
213
        if (c == 0x00B4) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
214
        if (c == 0x00B5) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
215
        if (c == 0x00B6) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
216
        if (c == 0x00B7) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
217
        if (c == 0x00B8) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
218
        if (c == 0x00B9) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
219
        if (c == 0x00BA) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
220
        if (c == 0x00BB) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
221
        if (c >= 0x00BC && c <= 0x00BE) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
222
        if (c == 0x00BF) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
223
        if (c >= 0x00C0 && c <= 0x00D6) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
224
        if (c == 0x00D7) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
225
        if (c >= 0x00D8 && c <= 0x00F6) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
226
        if (c == 0x00F7) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
227
        if (c >= 0x00F8 && c <= 0x01BA) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
228
        if (c == 0x01BB) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
229
        if (c >= 0x01BC && c <= 0x01BF) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
230
        if (c >= 0x01C0 && c <= 0x01C3) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
231
        if (c >= 0x01C4 && c <= 0x0236) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
232
        if (c >= 0x0250 && c <= 0x02AF) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
233
        if (c >= 0x02B0 && c <= 0x02C1) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
234
        if (c >= 0x02C2 && c <= 0x02C5) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
235
        if (c >= 0x02C6 && c <= 0x02D1) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
236
        if (c >= 0x02D2 && c <= 0x02DF) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
237
        if (c >= 0x02E0 && c <= 0x02E4) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
238
        if (c >= 0x02E5 && c <= 0x02ED) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
239
        if (c == 0x02EE) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
240
        if (c >= 0x02EF && c <= 0x02FF) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
241
        if (c == 0x034F) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
242
        if (c >= 0x0374 && c <= 0x0375) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
243
        if (c == 0x037A) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
244
        if (c == 0x037E) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
245
        if (c >= 0x0384 && c <= 0x0385) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
246
        if (c == 0x0386) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
247
        if (c == 0x0387) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
248
        if (c >= 0x0388 && c <= 0x038A) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
249
        if (c == 0x038C) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
250
        if (c >= 0x038E && c <= 0x03A1) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
251
        if (c >= 0x03A3 && c <= 0x03CE) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
252
        if (c >= 0x03D0 && c <= 0x03F5) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
253
        if (c == 0x03F6) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
254
        if (c >= 0x03F7 && c <= 0x03FB) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
255
        if (c >= 0x0400 && c <= 0x0481) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
256
        if (c == 0x0482) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
257
        if (c >= 0x0488 && c <= 0x0489) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
258
        if (c >= 0x048A && c <= 0x04CE) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
259
        if (c >= 0x04D0 && c <= 0x04F5) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
260
        if (c >= 0x04F8 && c <= 0x04F9) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
261
        if (c >= 0x0500 && c <= 0x050F) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
262
        if (c >= 0x0531 && c <= 0x0556) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
263
        if (c == 0x0559) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
264
        if (c >= 0x055A && c <= 0x055F) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
265
        if (c >= 0x0561 && c <= 0x0587) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
266
        if (c == 0x0589) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
267
        if (c == 0x058A) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
268
        if (c == 0x05BE) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
269
        if (c == 0x05C0) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
270
        if (c == 0x05C3) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
271
        if (c >= 0x05D0 && c <= 0x05EA) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
272
        if (c >= 0x05F0 && c <= 0x05F2) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
273
        if (c >= 0x05F3 && c <= 0x05F4) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
274
        if (c >= 0x0600 && c <= 0x0603) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
275
        if (c >= 0x060C && c <= 0x060D) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
276
        if (c >= 0x060E && c <= 0x060F) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
277
        if (c == 0x061B) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
278
        if (c == 0x061F) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
279
        if (c >= 0x0621 && c <= 0x063A) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
280
        if (c == 0x0640) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
281
        if (c >= 0x0641 && c <= 0x064A) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
282
        if (c >= 0x0660 && c <= 0x0669) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
283
        if (c >= 0x066A && c <= 0x066D) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
284
        if (c >= 0x066E && c <= 0x066F) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
285
        if (c >= 0x0671 && c <= 0x06D3) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
286
        if (c == 0x06D4) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
287
        if (c == 0x06D5) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
288
        if (c == 0x06DD) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
289
        if (c == 0x06DE) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
290
        if (c >= 0x06E5 && c <= 0x06E6) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
291
        if (c == 0x06E9) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
292
        if (c >= 0x06EE && c <= 0x06EF) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
293
        if (c >= 0x06F0 && c <= 0x06F9) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
294
        if (c >= 0x06FA && c <= 0x06FC) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
295
        if (c >= 0x06FD && c <= 0x06FE) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
296
        if (c == 0x06FF) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
297
        if (c >= 0x0700 && c <= 0x070D) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
298
        if (c == 0x070F) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
299
        if (c == 0x0710) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
300
        if (c >= 0x0712 && c <= 0x072F) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
301
        if (c >= 0x074D && c <= 0x074F) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
302
        if (c >= 0x0780 && c <= 0x07A5) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
303
        if (c >= 0x07A6 && c <= 0x07B0) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
304
        if (c == 0x07B1) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
305
        if (c >= 0x0901 && c <= 0x0902) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
306
        if (c == 0x0903) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
307
        if (c >= 0x0904 && c <= 0x0939) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
308
        if (c == 0x093D) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
309
        if (c >= 0x093E && c <= 0x0940) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
310
        if (c >= 0x0941 && c <= 0x0948) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
311
        if (c >= 0x0949 && c <= 0x094C) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
312
        if (c == 0x0950) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
313
        if (c >= 0x0958 && c <= 0x0961) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
314
        if (c >= 0x0962 && c <= 0x0963) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
315
        if (c >= 0x0964 && c <= 0x0965) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
316
        if (c >= 0x0966 && c <= 0x096F) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
317
        if (c == 0x0970) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
318
        if (c == 0x0981) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
319
        if (c >= 0x0982 && c <= 0x0983) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
320
        if (c >= 0x0985 && c <= 0x098C) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
321
        if (c >= 0x098F && c <= 0x0990) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
322
        if (c >= 0x0993 && c <= 0x09A8) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
323
        if (c >= 0x09AA && c <= 0x09B0) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
324
        if (c == 0x09B2) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
325
        if (c >= 0x09B6 && c <= 0x09B9) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
326
        if (c == 0x09BD) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
327
        if (c >= 0x09BE && c <= 0x09C0) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
328
        if (c >= 0x09C1 && c <= 0x09C4) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
329
        if (c >= 0x09C7 && c <= 0x09C8) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
330
        if (c >= 0x09CB && c <= 0x09CC) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
331
        if (c == 0x09D7) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
332
        if (c >= 0x09DC && c <= 0x09DD) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
333
        if (c >= 0x09DF && c <= 0x09E1) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
334
        if (c >= 0x09E2 && c <= 0x09E3) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
335
        if (c >= 0x09E6 && c <= 0x09EF) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
336
        if (c >= 0x09F0 && c <= 0x09F1) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
337
        if (c >= 0x09F2 && c <= 0x09F3) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
338
        if (c >= 0x09F4 && c <= 0x09F9) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
339
        if (c == 0x09FA) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
340
        if (c >= 0x0A01 && c <= 0x0A02) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
341
        if (c == 0x0A03) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
342
        if (c >= 0x0A05 && c <= 0x0A0A) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
343
        if (c >= 0x0A0F && c <= 0x0A10) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
344
        if (c >= 0x0A13 && c <= 0x0A28) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
345
        if (c >= 0x0A2A && c <= 0x0A30) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
346
        if (c >= 0x0A32 && c <= 0x0A33) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
347
        if (c >= 0x0A35 && c <= 0x0A36) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
348
        if (c >= 0x0A38 && c <= 0x0A39) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
349
        if (c >= 0x0A3E && c <= 0x0A40) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
350
        if (c >= 0x0A41 && c <= 0x0A42) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
351
        if (c >= 0x0A47 && c <= 0x0A48) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
352
        if (c >= 0x0A4B && c <= 0x0A4C) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
353
        if (c >= 0x0A59 && c <= 0x0A5C) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
354
        if (c == 0x0A5E) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
355
        if (c >= 0x0A66 && c <= 0x0A6F) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
356
        if (c >= 0x0A70 && c <= 0x0A71) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
357
        if (c >= 0x0A72 && c <= 0x0A74) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
358
        if (c >= 0x0A81 && c <= 0x0A82) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
359
        if (c == 0x0A83) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
360
        if (c >= 0x0A85 && c <= 0x0A8D) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
361
        if (c >= 0x0A8F && c <= 0x0A91) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
362
        if (c >= 0x0A93 && c <= 0x0AA8) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
363
        if (c >= 0x0AAA && c <= 0x0AB0) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
364
        if (c >= 0x0AB2 && c <= 0x0AB3) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
365
        if (c >= 0x0AB5 && c <= 0x0AB9) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
366
        if (c == 0x0ABD) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
367
        if (c >= 0x0ABE && c <= 0x0AC0) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
368
        if (c >= 0x0AC1 && c <= 0x0AC5) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
369
        if (c >= 0x0AC7 && c <= 0x0AC8) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
370
        if (c == 0x0AC9) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
371
        if (c >= 0x0ACB && c <= 0x0ACC) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
372
        if (c == 0x0AD0) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
373
        if (c >= 0x0AE0 && c <= 0x0AE1) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
374
        if (c >= 0x0AE2 && c <= 0x0AE3) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
375
        if (c >= 0x0AE6 && c <= 0x0AEF) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
376
        if (c == 0x0AF1) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
377
        if (c == 0x0B01) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
378
        if (c >= 0x0B02 && c <= 0x0B03) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
379
        if (c >= 0x0B05 && c <= 0x0B0C) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
380
        if (c >= 0x0B0F && c <= 0x0B10) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
381
        if (c >= 0x0B13 && c <= 0x0B28) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
382
        if (c >= 0x0B2A && c <= 0x0B30) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
383
        if (c >= 0x0B32 && c <= 0x0B33) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
384
        if (c >= 0x0B35 && c <= 0x0B39) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
385
        if (c == 0x0B3D) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
386
        if (c == 0x0B3E) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
387
        if (c == 0x0B3F) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
388
        if (c == 0x0B40) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
389
        if (c >= 0x0B41 && c <= 0x0B43) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
390
        if (c >= 0x0B47 && c <= 0x0B48) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
391
        if (c >= 0x0B4B && c <= 0x0B4C) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
392
        if (c == 0x0B56) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
393
        if (c == 0x0B57) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
394
        if (c >= 0x0B5C && c <= 0x0B5D) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
395
        if (c >= 0x0B5F && c <= 0x0B61) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
396
        if (c >= 0x0B66 && c <= 0x0B6F) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
397
        if (c == 0x0B70) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
398
        if (c == 0x0B71) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
399
        if (c == 0x0B82) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
400
        if (c == 0x0B83) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
401
        if (c >= 0x0B85 && c <= 0x0B8A) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
402
        if (c >= 0x0B8E && c <= 0x0B90) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
403
        if (c >= 0x0B92 && c <= 0x0B95) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
404
        if (c >= 0x0B99 && c <= 0x0B9A) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
405
        if (c == 0x0B9C) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
406
        if (c >= 0x0B9E && c <= 0x0B9F) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
407
        if (c >= 0x0BA3 && c <= 0x0BA4) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
408
        if (c >= 0x0BA8 && c <= 0x0BAA) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
409
        if (c >= 0x0BAE && c <= 0x0BB5) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
410
        if (c >= 0x0BB7 && c <= 0x0BB9) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
411
        if (c >= 0x0BBE && c <= 0x0BBF) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
412
        if (c == 0x0BC0) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
413
        if (c >= 0x0BC1 && c <= 0x0BC2) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
414
        if (c >= 0x0BC6 && c <= 0x0BC8) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
415
        if (c >= 0x0BCA && c <= 0x0BCC) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
416
        if (c == 0x0BD7) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
417
        if (c >= 0x0BE7 && c <= 0x0BEF) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
418
        if (c >= 0x0BF0 && c <= 0x0BF2) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
419
        if (c >= 0x0BF3 && c <= 0x0BF8) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
420
        if (c == 0x0BF9) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
421
        if (c == 0x0BFA) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
422
        if (c >= 0x0C01 && c <= 0x0C03) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
423
        if (c >= 0x0C05 && c <= 0x0C0C) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
424
        if (c >= 0x0C0E && c <= 0x0C10) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
425
        if (c >= 0x0C12 && c <= 0x0C28) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
426
        if (c >= 0x0C2A && c <= 0x0C33) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
427
        if (c >= 0x0C35 && c <= 0x0C39) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
428
        if (c >= 0x0C3E && c <= 0x0C40) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
429
        if (c >= 0x0C41 && c <= 0x0C44) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
430
        if (c >= 0x0C46 && c <= 0x0C48) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
431
        if (c >= 0x0C4A && c <= 0x0C4C) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
432
        if (c >= 0x0C60 && c <= 0x0C61) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
433
        if (c >= 0x0C66 && c <= 0x0C6F) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
434
        if (c >= 0x0C82 && c <= 0x0C83) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
435
        if (c >= 0x0C85 && c <= 0x0C8C) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
436
        if (c >= 0x0C8E && c <= 0x0C90) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
437
        if (c >= 0x0C92 && c <= 0x0CA8) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
438
        if (c >= 0x0CAA && c <= 0x0CB3) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
439
        if (c >= 0x0CB5 && c <= 0x0CB9) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
440
        if (c == 0x0CBD) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
441
        if (c == 0x0CBE) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
442
        if (c == 0x0CBF) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
443
        if (c >= 0x0CC0 && c <= 0x0CC4) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
444
        if (c == 0x0CC6) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
445
        if (c >= 0x0CC7 && c <= 0x0CC8) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
446
        if (c >= 0x0CCA && c <= 0x0CCB) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
447
        if (c == 0x0CCC) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
448
        if (c >= 0x0CD5 && c <= 0x0CD6) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
449
        if (c == 0x0CDE) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
450
        if (c >= 0x0CE0 && c <= 0x0CE1) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
451
        if (c >= 0x0CE6 && c <= 0x0CEF) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
452
        if (c >= 0x0D02 && c <= 0x0D03) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
453
        if (c >= 0x0D05 && c <= 0x0D0C) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
454
        if (c >= 0x0D0E && c <= 0x0D10) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
455
        if (c >= 0x0D12 && c <= 0x0D28) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
456
        if (c >= 0x0D2A && c <= 0x0D39) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
457
        if (c >= 0x0D3E && c <= 0x0D40) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
458
        if (c >= 0x0D41 && c <= 0x0D43) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
459
        if (c >= 0x0D46 && c <= 0x0D48) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
460
        if (c >= 0x0D4A && c <= 0x0D4C) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
461
        if (c == 0x0D57) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
462
        if (c >= 0x0D60 && c <= 0x0D61) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
463
        if (c >= 0x0D66 && c <= 0x0D6F) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
464
        if (c >= 0x0D82 && c <= 0x0D83) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
465
        if (c >= 0x0D85 && c <= 0x0D96) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
466
        if (c >= 0x0D9A && c <= 0x0DB1) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
467
        if (c >= 0x0DB3 && c <= 0x0DBB) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
468
        if (c == 0x0DBD) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
469
        if (c >= 0x0DC0 && c <= 0x0DC6) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
470
        if (c >= 0x0DCF && c <= 0x0DD1) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
471
        if (c >= 0x0DD2 && c <= 0x0DD4) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
472
        if (c == 0x0DD6) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
473
        if (c >= 0x0DD8 && c <= 0x0DDF) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
474
        if (c >= 0x0DF2 && c <= 0x0DF3) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
475
        if (c == 0x0DF4) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
476
        if (c >= 0x0E01 && c <= 0x0E30) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
477
        if (c == 0x0E31) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
478
        if (c >= 0x0E32 && c <= 0x0E33) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
479
        if (c >= 0x0E34 && c <= 0x0E37) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
480
        if (c == 0x0E3F) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
481
        if (c >= 0x0E40 && c <= 0x0E45) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
482
        if (c == 0x0E46) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
483
        if (c == 0x0E47) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
484
        if (c >= 0x0E4C && c <= 0x0E4E) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
485
        if (c == 0x0E4F) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
486
        if (c >= 0x0E50 && c <= 0x0E59) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
487
        if (c >= 0x0E5A && c <= 0x0E5B) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
488
        if (c >= 0x0E81 && c <= 0x0E82) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
489
        if (c == 0x0E84) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
490
        if (c >= 0x0E87 && c <= 0x0E88) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
491
        if (c == 0x0E8A) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
492
        if (c == 0x0E8D) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
493
        if (c >= 0x0E94 && c <= 0x0E97) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
494
        if (c >= 0x0E99 && c <= 0x0E9F) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
495
        if (c >= 0x0EA1 && c <= 0x0EA3) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
496
        if (c == 0x0EA5) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
497
        if (c == 0x0EA7) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
498
        if (c >= 0x0EAA && c <= 0x0EAB) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
499
        if (c >= 0x0EAD && c <= 0x0EB0) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
500
        if (c == 0x0EB1) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
501
        if (c >= 0x0EB2 && c <= 0x0EB3) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
502
        if (c >= 0x0EB4 && c <= 0x0EB7) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
503
        if (c >= 0x0EBB && c <= 0x0EBC) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
504
        if (c == 0x0EBD) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
505
        if (c >= 0x0EC0 && c <= 0x0EC4) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
506
        if (c == 0x0EC6) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
507
        if (c >= 0x0ECC && c <= 0x0ECD) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
508
        if (c >= 0x0ED0 && c <= 0x0ED9) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
509
        if (c >= 0x0EDC && c <= 0x0EDD) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
510
        if (c == 0x0F00) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
511
        if (c >= 0x0F01 && c <= 0x0F03) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
512
        if (c >= 0x0F04 && c <= 0x0F12) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
513
        if (c >= 0x0F13 && c <= 0x0F17) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
514
        if (c >= 0x0F1A && c <= 0x0F1F) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
515
        if (c >= 0x0F20 && c <= 0x0F29) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
516
        if (c >= 0x0F2A && c <= 0x0F33) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
517
        if (c == 0x0F34) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
518
        if (c == 0x0F36) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
519
        if (c == 0x0F38) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
520
        if (c == 0x0F3A) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
521
        if (c == 0x0F3B) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
522
        if (c == 0x0F3C) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
523
        if (c == 0x0F3D) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
524
        if (c >= 0x0F3E && c <= 0x0F3F) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
525
        if (c >= 0x0F40 && c <= 0x0F47) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
526
        if (c >= 0x0F49 && c <= 0x0F6A) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
527
        if (c == 0x0F73) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
528
        if (c >= 0x0F75 && c <= 0x0F79) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
529
        if (c == 0x0F7E) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
530
        if (c == 0x0F7F) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
531
        if (c == 0x0F81) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
532
        if (c == 0x0F85) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
533
        if (c >= 0x0F88 && c <= 0x0F8B) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
534
        if (c >= 0x0F90 && c <= 0x0F97) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
535
        if (c >= 0x0F99 && c <= 0x0FBC) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
536
        if (c >= 0x0FBE && c <= 0x0FC5) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
537
        if (c >= 0x0FC7 && c <= 0x0FCC) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
538
        if (c == 0x0FCF) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
539
        if (c >= 0x1000 && c <= 0x1021) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
540
        if (c >= 0x1023 && c <= 0x1027) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
541
        if (c >= 0x1029 && c <= 0x102A) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
542
        if (c == 0x102C) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
543
        if (c >= 0x102D && c <= 0x1030) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
544
        if (c == 0x1031) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
545
        if (c == 0x1032) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
546
        if (c == 0x1036) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
547
        if (c == 0x1038) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
548
        if (c >= 0x1040 && c <= 0x1049) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
549
        if (c >= 0x104A && c <= 0x104F) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
550
        if (c >= 0x1050 && c <= 0x1055) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
551
        if (c >= 0x1056 && c <= 0x1057) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
552
        if (c >= 0x1058 && c <= 0x1059) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
553
        if (c >= 0x10A0 && c <= 0x10C5) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
554
        if (c >= 0x10D0 && c <= 0x10F8) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
555
        if (c == 0x10FB) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
556
        if (c >= 0x1100 && c <= 0x1159) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
557
        if (c >= 0x115F && c <= 0x11A2) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
558
        if (c >= 0x11A8 && c <= 0x11F9) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
559
        if (c >= 0x1200 && c <= 0x1206) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
560
        if (c >= 0x1208 && c <= 0x1246) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
561
        if (c == 0x1248) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
562
        if (c >= 0x124A && c <= 0x124D) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
563
        if (c >= 0x1250 && c <= 0x1256) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
564
        if (c == 0x1258) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
565
        if (c >= 0x125A && c <= 0x125D) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
566
        if (c >= 0x1260 && c <= 0x1286) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
567
        if (c == 0x1288) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
568
        if (c >= 0x128A && c <= 0x128D) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
569
        if (c >= 0x1290 && c <= 0x12AE) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
570
        if (c == 0x12B0) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
571
        if (c >= 0x12B2 && c <= 0x12B5) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
572
        if (c >= 0x12B8 && c <= 0x12BE) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
573
        if (c == 0x12C0) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
574
        if (c >= 0x12C2 && c <= 0x12C5) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
575
        if (c >= 0x12C8 && c <= 0x12CE) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
576
        if (c >= 0x12D0 && c <= 0x12D6) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
577
        if (c >= 0x12D8 && c <= 0x12EE) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
578
        if (c >= 0x12F0 && c <= 0x130E) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
579
        if (c == 0x1310) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
580
        if (c >= 0x1312 && c <= 0x1315) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
581
        if (c >= 0x1318 && c <= 0x131E) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
582
        if (c >= 0x1320 && c <= 0x1346) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
583
        if (c >= 0x1348 && c <= 0x135A) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
584
        if (c >= 0x1361 && c <= 0x1368) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
585
        if (c >= 0x1369 && c <= 0x1371) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
586
        if (c >= 0x1372 && c <= 0x137C) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
587
        if (c >= 0x13A0 && c <= 0x13F4) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
588
        if (c >= 0x1401 && c <= 0x166C) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
589
        if (c >= 0x166D && c <= 0x166E) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
590
        if (c >= 0x166F && c <= 0x1676) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
591
        if (c == 0x1680) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
592
        if (c >= 0x1681 && c <= 0x169A) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
593
        if (c == 0x169B) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
594
        if (c == 0x169C) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
595
        if (c >= 0x16A0 && c <= 0x16EA) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
596
        if (c >= 0x16EB && c <= 0x16ED) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
597
        if (c >= 0x16EE && c <= 0x16F0) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
598
        if (c >= 0x1700 && c <= 0x170C) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
599
        if (c >= 0x170E && c <= 0x1711) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
600
        if (c >= 0x1712 && c <= 0x1713) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
601
        if (c >= 0x1720 && c <= 0x1731) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
602
        if (c >= 0x1732 && c <= 0x1733) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
603
        if (c >= 0x1735 && c <= 0x1736) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
604
        if (c >= 0x1740 && c <= 0x1751) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
605
        if (c >= 0x1752 && c <= 0x1753) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
606
        if (c >= 0x1760 && c <= 0x176C) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
607
        if (c >= 0x176E && c <= 0x1770) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
608
        if (c >= 0x1772 && c <= 0x1773) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
609
        if (c >= 0x1780 && c <= 0x17B3) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
610
        if (c >= 0x17B4 && c <= 0x17B5) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
611
        if (c == 0x17B6) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
612
        if (c >= 0x17B7 && c <= 0x17BD) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
613
        if (c >= 0x17BE && c <= 0x17C5) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
614
        if (c == 0x17C6) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
615
        if (c >= 0x17C7 && c <= 0x17C8) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
616
        if (c >= 0x17C9 && c <= 0x17D1) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
617
        if (c == 0x17D3) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
618
        if (c >= 0x17D4 && c <= 0x17D6) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
619
        if (c == 0x17D7) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
620
        if (c >= 0x17D8 && c <= 0x17DA) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
621
        if (c == 0x17DB) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
622
        if (c == 0x17DC) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
623
        if (c >= 0x17E0 && c <= 0x17E9) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
624
        if (c >= 0x17F0 && c <= 0x17F9) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
625
        if (c >= 0x1800 && c <= 0x1805) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
626
        if (c == 0x1806) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
627
        if (c >= 0x1807 && c <= 0x180A) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
628
        if (c >= 0x180B && c <= 0x180D) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
629
        if (c == 0x180E) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
630
        if (c >= 0x1810 && c <= 0x1819) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
631
        if (c >= 0x1820 && c <= 0x1842) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
632
        if (c == 0x1843) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
633
        if (c >= 0x1844 && c <= 0x1877) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
634
        if (c >= 0x1880 && c <= 0x18A8) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
635
        if (c >= 0x1900 && c <= 0x191C) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
636
        if (c >= 0x1920 && c <= 0x1922) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
637
        if (c >= 0x1923 && c <= 0x1926) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
638
        if (c >= 0x1927 && c <= 0x1928) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
639
        if (c >= 0x1929 && c <= 0x192B) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
640
        if (c >= 0x1930 && c <= 0x1931) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
641
        if (c == 0x1932) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
642
        if (c >= 0x1933 && c <= 0x1938) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
643
        if (c == 0x1940) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
644
        if (c >= 0x1944 && c <= 0x1945) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
645
        if (c >= 0x1946 && c <= 0x194F) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
646
        if (c >= 0x1950 && c <= 0x196D) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
647
        if (c >= 0x1970 && c <= 0x1974) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
648
        if (c >= 0x19E0 && c <= 0x19FF) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
649
        if (c >= 0x1D00 && c <= 0x1D2B) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
650
        if (c >= 0x1D2C && c <= 0x1D61) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
651
        if (c >= 0x1D62 && c <= 0x1D6B) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
652
        if (c >= 0x1E00 && c <= 0x1E9B) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
653
        if (c >= 0x1EA0 && c <= 0x1EF9) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
654
        if (c >= 0x1F00 && c <= 0x1F15) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
655
        if (c >= 0x1F18 && c <= 0x1F1D) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
656
        if (c >= 0x1F20 && c <= 0x1F45) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
657
        if (c >= 0x1F48 && c <= 0x1F4D) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
658
        if (c >= 0x1F50 && c <= 0x1F57) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
659
        if (c == 0x1F59) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
660
        if (c == 0x1F5B) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
661
        if (c == 0x1F5D) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
662
        if (c >= 0x1F5F && c <= 0x1F7D) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
663
        if (c >= 0x1F80 && c <= 0x1FB4) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
664
        if (c >= 0x1FB6 && c <= 0x1FBC) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
665
        if (c == 0x1FBD) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
666
        if (c == 0x1FBE) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
667
        if (c >= 0x1FBF && c <= 0x1FC1) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
668
        if (c >= 0x1FC2 && c <= 0x1FC4) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
669
        if (c >= 0x1FC6 && c <= 0x1FCC) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
670
        if (c >= 0x1FCD && c <= 0x1FCF) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
671
        if (c >= 0x1FD0 && c <= 0x1FD3) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
672
        if (c >= 0x1FD6 && c <= 0x1FDB) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
673
        if (c >= 0x1FDD && c <= 0x1FDF) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
674
        if (c >= 0x1FE0 && c <= 0x1FEC) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
675
        if (c >= 0x1FED && c <= 0x1FEF) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
676
        if (c >= 0x1FF2 && c <= 0x1FF4) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
677
        if (c >= 0x1FF6 && c <= 0x1FFC) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
678
        if (c >= 0x1FFD && c <= 0x1FFE) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
679
        if (c >= 0x2000 && c <= 0x200A) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
680
        if (c >= 0x200B && c <= 0x200F) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
681
        if (c >= 0x2010 && c <= 0x2015) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
682
        if (c >= 0x2016 && c <= 0x2017) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
683
        if (c == 0x2018) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
684
        if (c == 0x2019) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
685
        if (c == 0x201A) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
686
        if (c >= 0x201B && c <= 0x201C) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
687
        if (c == 0x201D) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
688
        if (c == 0x201E) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
689
        if (c == 0x201F) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
690
        if (c >= 0x2020 && c <= 0x2027) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
691
        if (c == 0x2028) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
692
        if (c == 0x2029) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
693
        if (c >= 0x202A && c <= 0x202E) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
694
        if (c == 0x202F) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
695
        if (c >= 0x2030 && c <= 0x2038) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
696
        if (c == 0x2039) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
697
        if (c == 0x203A) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
698
        if (c >= 0x203B && c <= 0x203E) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
699
        if (c >= 0x203F && c <= 0x2040) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
700
        if (c >= 0x2041 && c <= 0x2043) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
701
        if (c == 0x2044) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
702
        if (c == 0x2045) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
703
        if (c == 0x2046) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
704
        if (c >= 0x2047 && c <= 0x2051) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
705
        if (c == 0x2052) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
706
        if (c == 0x2053) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
707
        if (c == 0x2054) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
708
        if (c == 0x2057) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
709
        if (c == 0x205F) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
710
        if (c >= 0x2060 && c <= 0x2063) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
711
        if (c >= 0x206A && c <= 0x206F) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
712
        if (c == 0x2070) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
713
        if (c == 0x2071) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
714
        if (c >= 0x2074 && c <= 0x2079) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
715
        if (c >= 0x207A && c <= 0x207C) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
716
        if (c == 0x207D) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
717
        if (c == 0x207E) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
718
        if (c == 0x207F) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
719
        if (c >= 0x2080 && c <= 0x2089) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
720
        if (c >= 0x208A && c <= 0x208C) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
721
        if (c == 0x208D) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
722
        if (c == 0x208E) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
723
        if (c >= 0x20A0 && c <= 0x20B1) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
724
        if (c >= 0x20DD && c <= 0x20E0) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
725
        if (c >= 0x20E2 && c <= 0x20E4) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
726
        if (c >= 0x2100 && c <= 0x2101) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
727
        if (c == 0x2102) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
728
        if (c >= 0x2103 && c <= 0x2106) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
729
        if (c == 0x2107) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
730
        if (c >= 0x2108 && c <= 0x2109) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
731
        if (c >= 0x210A && c <= 0x2113) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
732
        if (c == 0x2114) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
733
        if (c == 0x2115) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
734
        if (c >= 0x2116 && c <= 0x2118) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
735
        if (c >= 0x2119 && c <= 0x211D) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
736
        if (c >= 0x211E && c <= 0x2123) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
737
        if (c == 0x2124) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
738
        if (c == 0x2125) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
739
        if (c == 0x2126) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
740
        if (c == 0x2127) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
741
        if (c == 0x2128) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
742
        if (c == 0x2129) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
743
        if (c >= 0x212A && c <= 0x212D) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
744
        if (c == 0x212E) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
745
        if (c >= 0x212F && c <= 0x2131) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
746
        if (c == 0x2132) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
747
        if (c >= 0x2133 && c <= 0x2134) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
748
        if (c >= 0x2135 && c <= 0x2138) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
749
        if (c == 0x2139) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
750
        if (c >= 0x213A && c <= 0x213B) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
751
        if (c >= 0x213D && c <= 0x213F) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
752
        if (c >= 0x2140 && c <= 0x2144) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
753
        if (c >= 0x2145 && c <= 0x2149) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
754
        if (c == 0x214A) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
755
        if (c == 0x214B) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
756
        if (c >= 0x2153 && c <= 0x215F) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
757
        if (c >= 0x2160 && c <= 0x2183) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
758
        if (c >= 0x2190 && c <= 0x2194) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
759
        if (c >= 0x2195 && c <= 0x2199) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
760
        if (c >= 0x219A && c <= 0x219B) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
761
        if (c >= 0x219C && c <= 0x219F) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
762
        if (c == 0x21A0) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
763
        if (c >= 0x21A1 && c <= 0x21A2) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
764
        if (c == 0x21A3) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
765
        if (c >= 0x21A4 && c <= 0x21A5) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
766
        if (c == 0x21A6) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
767
        if (c >= 0x21A7 && c <= 0x21AD) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
768
        if (c == 0x21AE) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
769
        if (c >= 0x21AF && c <= 0x21CD) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
770
        if (c >= 0x21CE && c <= 0x21CF) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
771
        if (c >= 0x21D0 && c <= 0x21D1) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
772
        if (c == 0x21D2) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
773
        if (c == 0x21D3) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
774
        if (c == 0x21D4) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
775
        if (c >= 0x21D5 && c <= 0x21F3) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
776
        if (c >= 0x21F4 && c <= 0x22FF) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
777
        if (c >= 0x2300 && c <= 0x2307) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
778
        if (c >= 0x2308 && c <= 0x230B) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
779
        if (c >= 0x230C && c <= 0x231F) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
780
        if (c >= 0x2320 && c <= 0x2321) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
781
        if (c >= 0x2322 && c <= 0x2328) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
782
        if (c == 0x2329) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
783
        if (c == 0x232A) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
784
        if (c >= 0x232B && c <= 0x237B) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
785
        if (c == 0x237C) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
786
        if (c >= 0x237D && c <= 0x239A) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
787
        if (c >= 0x239B && c <= 0x23B3) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
788
        if (c == 0x23B4) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
789
        if (c == 0x23B5) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
790
        if (c == 0x23B6) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
791
        if (c >= 0x23B7 && c <= 0x23D0) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
792
        if (c >= 0x2400 && c <= 0x2426) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
793
        if (c >= 0x2440 && c <= 0x244A) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
794
        if (c >= 0x2460 && c <= 0x249B) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
795
        if (c >= 0x249C && c <= 0x24E9) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
796
        if (c >= 0x24EA && c <= 0x24FF) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
797
        if (c >= 0x2500 && c <= 0x25B6) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
798
        if (c == 0x25B7) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
799
        if (c >= 0x25B8 && c <= 0x25C0) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
800
        if (c == 0x25C1) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
801
        if (c >= 0x25C2 && c <= 0x25F7) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
802
        if (c >= 0x25F8 && c <= 0x25FF) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
803
        if (c >= 0x2600 && c <= 0x2617) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
804
        if (c >= 0x2619 && c <= 0x266E) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
805
        if (c == 0x266F) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
806
        if (c >= 0x2670 && c <= 0x267D) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
807
        if (c >= 0x2680 && c <= 0x2691) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
808
        if (c >= 0x26A0 && c <= 0x26A1) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
809
        if (c >= 0x2701 && c <= 0x2704) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
810
        if (c >= 0x2706 && c <= 0x2709) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
811
        if (c >= 0x270C && c <= 0x2727) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
812
        if (c >= 0x2729 && c <= 0x274B) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
813
        if (c == 0x274D) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
814
        if (c >= 0x274F && c <= 0x2752) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
815
        if (c == 0x2756) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
816
        if (c >= 0x2758 && c <= 0x275E) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
817
        if (c >= 0x2761 && c <= 0x2767) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
818
        if (c == 0x2768) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
819
        if (c == 0x2769) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
820
        if (c == 0x276A) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
821
        if (c == 0x276B) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
822
        if (c == 0x276C) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
823
        if (c == 0x276D) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
824
        if (c == 0x276E) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
825
        if (c == 0x276F) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
826
        if (c == 0x2770) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
827
        if (c == 0x2771) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
828
        if (c == 0x2772) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
829
        if (c == 0x2773) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
830
        if (c == 0x2774) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
831
        if (c == 0x2775) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
832
        if (c >= 0x2776 && c <= 0x2793) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
833
        if (c == 0x2794) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
834
        if (c >= 0x2798 && c <= 0x27AF) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
835
        if (c >= 0x27B1 && c <= 0x27BE) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
836
        if (c >= 0x27D0 && c <= 0x27E5) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
837
        if (c == 0x27E6) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
838
        if (c == 0x27E7) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
839
        if (c == 0x27E8) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
840
        if (c == 0x27E9) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
841
        if (c == 0x27EA) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
842
        if (c == 0x27EB) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
843
        if (c >= 0x27F0 && c <= 0x27FF) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
844
        if (c >= 0x2800 && c <= 0x28FF) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
845
        if (c >= 0x2900 && c <= 0x2982) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
846
        if (c == 0x2983) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
847
        if (c == 0x2984) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
848
        if (c == 0x2985) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
849
        if (c == 0x2986) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
850
        if (c == 0x2987) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
851
        if (c == 0x2988) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
852
        if (c == 0x2989) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
853
        if (c == 0x298A) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
854
        if (c == 0x298B) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
855
        if (c == 0x298C) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
856
        if (c == 0x298D) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
857
        if (c == 0x298E) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
858
        if (c == 0x298F) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
859
        if (c == 0x2990) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
860
        if (c == 0x2991) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
861
        if (c == 0x2992) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
862
        if (c == 0x2993) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
863
        if (c == 0x2994) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
864
        if (c == 0x2995) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
865
        if (c == 0x2996) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
866
        if (c == 0x2997) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
867
        if (c == 0x2998) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
868
        if (c >= 0x2999 && c <= 0x29D7) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
869
        if (c == 0x29D8) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
870
        if (c == 0x29D9) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
871
        if (c == 0x29DA) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
872
        if (c == 0x29DB) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
873
        if (c >= 0x29DC && c <= 0x29FB) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
874
        if (c == 0x29FC) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
875
        if (c == 0x29FD) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
876
        if (c >= 0x29FE && c <= 0x2AFF) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
877
        if (c >= 0x2B00 && c <= 0x2B0D) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
878
        if (c >= 0x2E80 && c <= 0x2E99) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
879
        if (c >= 0x2E9B && c <= 0x2EF3) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
880
        if (c >= 0x2F00 && c <= 0x2FD5) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
881
        if (c >= 0x2FF0 && c <= 0x2FFB) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
882
        if (c == 0x3000) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
883
        if (c >= 0x3001 && c <= 0x3003) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
884
        if (c == 0x3004) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
885
        if (c == 0x3005) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
886
        if (c == 0x3006) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
887
        if (c == 0x3007) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
888
        if (c == 0x3008) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
889
        if (c == 0x3009) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
890
        if (c == 0x300A) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
891
        if (c == 0x300B) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
892
        if (c == 0x300C) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
893
        if (c == 0x300D) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
894
        if (c == 0x300E) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
895
        if (c == 0x300F) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
896
        if (c == 0x3010) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
897
        if (c == 0x3011) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
898
        if (c >= 0x3012 && c <= 0x3013) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
899
        if (c == 0x3014) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
900
        if (c == 0x3015) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
901
        if (c == 0x3016) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
902
        if (c == 0x3017) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
903
        if (c == 0x3018) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
904
        if (c == 0x3019) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
905
        if (c == 0x301A) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
906
        if (c == 0x301B) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
907
        if (c == 0x301C) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
908
        if (c == 0x301D) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
909
        if (c >= 0x301E && c <= 0x301F) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
910
        if (c == 0x3020) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
911
        if (c >= 0x3021 && c <= 0x3029) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
912
        if (c == 0x3030) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
913
        if (c >= 0x3031 && c <= 0x3035) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
914
        if (c >= 0x3036 && c <= 0x3037) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
915
        if (c >= 0x3038 && c <= 0x303A) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
916
        if (c == 0x303B) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
917
        if (c == 0x303C) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
918
        if (c == 0x303D) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
919
        if (c >= 0x303E && c <= 0x303F) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
920
        if (c >= 0x3041 && c <= 0x3096) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
921
        if (c >= 0x309B && c <= 0x309C) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
922
        if (c >= 0x309D && c <= 0x309E) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
923
        if (c == 0x309F) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
924
        if (c == 0x30A0) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
925
        if (c >= 0x30A1 && c <= 0x30FA) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
926
        if (c == 0x30FB) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
927
        if (c >= 0x30FC && c <= 0x30FE) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
928
        if (c == 0x30FF) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
929
        if (c >= 0x3105 && c <= 0x312C) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
930
        if (c >= 0x3131 && c <= 0x318E) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
931
        if (c >= 0x3190 && c <= 0x3191) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
932
        if (c >= 0x3192 && c <= 0x3195) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
933
        if (c >= 0x3196 && c <= 0x319F) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
934
        if (c >= 0x31A0 && c <= 0x31B7) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
935
        if (c >= 0x31F0 && c <= 0x31FF) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
936
        if (c >= 0x3200 && c <= 0x321E) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
937
        if (c >= 0x3220 && c <= 0x3229) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
938
        if (c >= 0x322A && c <= 0x3243) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
939
        if (c == 0x3250) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
940
        if (c >= 0x3251 && c <= 0x325F) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
941
        if (c >= 0x3260 && c <= 0x327D) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
942
        if (c == 0x327F) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
943
        if (c >= 0x3280 && c <= 0x3289) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
944
        if (c >= 0x328A && c <= 0x32B0) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
945
        if (c >= 0x32B1 && c <= 0x32BF) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
946
        if (c >= 0x32C0 && c <= 0x32FE) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
947
        if (c >= 0x3300 && c <= 0x33FF) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
948
        if (c >= 0x3400 && c <= 0x4DB5) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
949
        if (c >= 0x4DC0 && c <= 0x4DFF) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
950
        if (c >= 0x4E00 && c <= 0x9FA5) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
951
        if (c >= 0xA000 && c <= 0xA48C) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
952
        if (c >= 0xA490 && c <= 0xA4C6) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
953
        if (c >= 0xAC00 && c <= 0xD7A3) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
954
        if (c >= 0xE000 && c <= 0xF8FF) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
955
        if (c >= 0xF900 && c <= 0xFA2D) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
956
        if (c >= 0xFA30 && c <= 0xFA6A) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
957
        if (c >= 0xFB00 && c <= 0xFB06) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
958
        if (c >= 0xFB13 && c <= 0xFB17) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
959
        if (c == 0xFB1D) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
960
        if (c >= 0xFB1F && c <= 0xFB28) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
961
        if (c == 0xFB29) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
962
        if (c >= 0xFB2A && c <= 0xFB36) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
963
        if (c >= 0xFB38 && c <= 0xFB3C) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
964
        if (c == 0xFB3E) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
965
        if (c >= 0xFB40 && c <= 0xFB41) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
966
        if (c >= 0xFB43 && c <= 0xFB44) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
967
        if (c >= 0xFB46 && c <= 0xFBB1) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
968
        if (c >= 0xFBD3 && c <= 0xFD3D) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
969
        if (c == 0xFD3E) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
970
        if (c == 0xFD3F) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
971
        if (c >= 0xFD50 && c <= 0xFD8F) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
972
        if (c >= 0xFD92 && c <= 0xFDC7) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
973
        if (c >= 0xFDF0 && c <= 0xFDFB) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
974
        if (c == 0xFDFC) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
975
        if (c == 0xFDFD) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
976
        if (c >= 0xFE00 && c <= 0xFE0F) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
977
        if (c == 0xFE30) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
978
        if (c >= 0xFE31 && c <= 0xFE32) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
979
        if (c >= 0xFE33 && c <= 0xFE34) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
980
        if (c == 0xFE35) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
981
        if (c == 0xFE36) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
982
        if (c == 0xFE37) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
983
        if (c == 0xFE38) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
984
        if (c == 0xFE39) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
985
        if (c == 0xFE3A) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
986
        if (c == 0xFE3B) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
987
        if (c == 0xFE3C) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
988
        if (c == 0xFE3D) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
989
        if (c == 0xFE3E) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
990
        if (c == 0xFE3F) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
991
        if (c == 0xFE40) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
992
        if (c == 0xFE41) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
993
        if (c == 0xFE42) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
994
        if (c == 0xFE43) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
995
        if (c == 0xFE44) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
996
        if (c >= 0xFE45 && c <= 0xFE46) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
997
        if (c == 0xFE47) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
998
        if (c == 0xFE48) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
999
        if (c >= 0xFE49 && c <= 0xFE4C) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1000
        if (c >= 0xFE4D && c <= 0xFE4F) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1001
        if (c >= 0xFE50 && c <= 0xFE52) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1002
        if (c >= 0xFE54 && c <= 0xFE57) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1003
        if (c == 0xFE58) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1004
        if (c == 0xFE59) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1005
        if (c == 0xFE5A) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1006
        if (c == 0xFE5B) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1007
        if (c == 0xFE5C) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1008
        if (c == 0xFE5D) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1009
        if (c == 0xFE5E) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1010
        if (c >= 0xFE5F && c <= 0xFE61) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1011
        if (c == 0xFE62) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1012
        if (c == 0xFE63) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1013
        if (c >= 0xFE64 && c <= 0xFE66) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1014
        if (c == 0xFE68) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1015
        if (c == 0xFE69) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1016
        if (c >= 0xFE6A && c <= 0xFE6B) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1017
        if (c >= 0xFE70 && c <= 0xFE74) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1018
        if (c >= 0xFE76 && c <= 0xFEFC) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1019
        if (c == 0xFEFF) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1020
        if (c >= 0xFF01 && c <= 0xFF03) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1021
        if (c == 0xFF04) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1022
        if (c >= 0xFF05 && c <= 0xFF07) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1023
        if (c == 0xFF08) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1024
        if (c == 0xFF09) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1025
        if (c == 0xFF0A) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1026
        if (c == 0xFF0B) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1027
        if (c == 0xFF0C) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1028
        if (c == 0xFF0D) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1029
        if (c >= 0xFF0E && c <= 0xFF0F) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1030
        if (c >= 0xFF10 && c <= 0xFF19) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1031
        if (c >= 0xFF1A && c <= 0xFF1B) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1032
        if (c >= 0xFF1C && c <= 0xFF1E) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1033
        if (c >= 0xFF1F && c <= 0xFF20) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1034
        if (c >= 0xFF21 && c <= 0xFF3A) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1035
        if (c == 0xFF3B) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1036
        if (c == 0xFF3C) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1037
        if (c == 0xFF3D) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1038
        if (c == 0xFF3E) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1039
        if (c == 0xFF3F) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1040
        if (c == 0xFF40) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1041
        if (c >= 0xFF41 && c <= 0xFF5A) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1042
        if (c == 0xFF5B) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1043
        if (c == 0xFF5C) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1044
        if (c == 0xFF5D) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1045
        if (c == 0xFF5E) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1046
        if (c == 0xFF5F) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1047
        if (c == 0xFF60) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1048
        if (c == 0xFF61) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1049
        if (c == 0xFF62) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1050
        if (c == 0xFF63) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1051
        if (c == 0xFF64) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1052
        if (c == 0xFF65) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1053
        if (c >= 0xFF66 && c <= 0xFF6F) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1054
        if (c == 0xFF70) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1055
        if (c >= 0xFF71 && c <= 0xFF9D) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1056
        if (c >= 0xFF9E && c <= 0xFF9F) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1057
        if (c >= 0xFFA0 && c <= 0xFFBE) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1058
        if (c >= 0xFFC2 && c <= 0xFFC7) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1059
        if (c >= 0xFFCA && c <= 0xFFCF) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1060
        if (c >= 0xFFD2 && c <= 0xFFD7) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1061
        if (c >= 0xFFDA && c <= 0xFFDC) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1062
        if (c >= 0xFFE0 && c <= 0xFFE1) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1063
        if (c == 0xFFE2) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1064
        if (c == 0xFFE3) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1065
        if (c == 0xFFE4) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1066
        if (c >= 0xFFE5 && c <= 0xFFE6) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1067
        if (c == 0xFFE8) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1068
        if (c >= 0xFFE9 && c <= 0xFFEC) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1069
        if (c >= 0xFFED && c <= 0xFFEE) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1070
        if (c >= 0xFFF9 && c <= 0xFFFB) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1071
        if (c >= 0xFFFC && c <= 0xFFFD) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1072
        if (c >= 0x10000 && c <= 0x1000B) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1073
        if (c >= 0x1000D && c <= 0x10026) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1074
        if (c >= 0x10028 && c <= 0x1003A) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1075
        if (c >= 0x1003C && c <= 0x1003D) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1076
        if (c >= 0x1003F && c <= 0x1004D) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1077
        if (c >= 0x10050 && c <= 0x1005D) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1078
        if (c >= 0x10080 && c <= 0x100FA) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1079
        if (c >= 0x10100 && c <= 0x10101) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1080
        if (c >= 0x10107 && c <= 0x10133) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1081
        if (c >= 0x10137 && c <= 0x1013F) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1082
        if (c >= 0x10300 && c <= 0x1031E) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1083
        if (c >= 0x10320 && c <= 0x10323) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1084
        if (c >= 0x10330 && c <= 0x10349) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1085
        if (c >= 0x10380 && c <= 0x1039D) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1086
        if (c >= 0x10400 && c <= 0x1044F) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1087
        if (c >= 0x10450 && c <= 0x1049D) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1088
        if (c >= 0x104A0 && c <= 0x104A9) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1089
        if (c >= 0x10800 && c <= 0x10805) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1090
        if (c >= 0x1080A && c <= 0x10835) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1091
        if (c >= 0x10837 && c <= 0x10838) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1092
        if (c >= 0x1D000 && c <= 0x1D0F5) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1093
        if (c >= 0x1D100 && c <= 0x1D126) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1094
        if (c >= 0x1D12A && c <= 0x1D164) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1095
        if (c >= 0x1D16A && c <= 0x1D16C) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1096
        if (c == 0x1D16D) return CANONICAL_COMBINING_CLASS_RIGHT;
 
1097
        if (c >= 0x1D173 && c <= 0x1D17A) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1098
        if (c >= 0x1D183 && c <= 0x1D184) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1099
        if (c >= 0x1D18C && c <= 0x1D1A9) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1100
        if (c >= 0x1D1AE && c <= 0x1D1DD) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1101
        if (c >= 0x1D300 && c <= 0x1D356) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1102
        if (c >= 0x1D400 && c <= 0x1D454) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1103
        if (c >= 0x1D456 && c <= 0x1D49C) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1104
        if (c >= 0x1D49E && c <= 0x1D49F) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1105
        if (c >= 0x1D4A5 && c <= 0x1D4A6) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1106
        if (c >= 0x1D4A9 && c <= 0x1D4AC) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1107
        if (c >= 0x1D4AE && c <= 0x1D4B9) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1108
        if (c >= 0x1D4BD && c <= 0x1D4C3) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1109
        if (c >= 0x1D4C5 && c <= 0x1D505) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1110
        if (c >= 0x1D507 && c <= 0x1D50A) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1111
        if (c >= 0x1D50D && c <= 0x1D514) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1112
        if (c >= 0x1D516 && c <= 0x1D51C) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1113
        if (c >= 0x1D51E && c <= 0x1D539) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1114
        if (c >= 0x1D53B && c <= 0x1D53E) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1115
        if (c >= 0x1D540 && c <= 0x1D544) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1116
        if (c >= 0x1D54A && c <= 0x1D550) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1117
        if (c >= 0x1D552 && c <= 0x1D6A3) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1118
        if (c >= 0x1D6A8 && c <= 0x1D6C0) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1119
        if (c >= 0x1D6C2 && c <= 0x1D6DA) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1120
        if (c >= 0x1D6DC && c <= 0x1D6FA) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1121
        if (c >= 0x1D6FC && c <= 0x1D714) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1122
        if (c >= 0x1D716 && c <= 0x1D734) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1123
        if (c >= 0x1D736 && c <= 0x1D74E) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1124
        if (c >= 0x1D750 && c <= 0x1D76E) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1125
        if (c >= 0x1D770 && c <= 0x1D788) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1126
        if (c >= 0x1D78A && c <= 0x1D7A8) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1127
        if (c >= 0x1D7AA && c <= 0x1D7C2) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1128
        if (c >= 0x1D7C4 && c <= 0x1D7C9) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1129
        if (c >= 0x1D7CE && c <= 0x1D7FF) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1130
        if (c >= 0x20000 && c <= 0x2A6D6) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1131
        if (c >= 0x2F800 && c <= 0x2FA1D) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1132
        if (c >= 0xE0020 && c <= 0xE007F) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1133
        if (c >= 0xE0100 && c <= 0xE01EF) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1134
        if (c >= 0xF0000 && c <= 0xFFFFD) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1135
        if (c >= 0x100000 && c <= 0x10FFFD) return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1136
        if (c >= 0x0334 && c <= 0x0338) return CANONICAL_COMBINING_CLASS_OVERLAY;
 
1137
        if (c >= 0x20D2 && c <= 0x20D3) return CANONICAL_COMBINING_CLASS_OVERLAY;
 
1138
        if (c >= 0x20D8 && c <= 0x20DA) return CANONICAL_COMBINING_CLASS_OVERLAY;
 
1139
        if (c >= 0x20E5 && c <= 0x20E6) return CANONICAL_COMBINING_CLASS_OVERLAY;
 
1140
        if (c == 0x20EA) return CANONICAL_COMBINING_CLASS_OVERLAY;
 
1141
        if (c >= 0x1D167 && c <= 0x1D169) return CANONICAL_COMBINING_CLASS_OVERLAY;
 
1142
        if (c == 0x093C) return CANONICAL_COMBINING_CLASS_NUKTA;
 
1143
        if (c == 0x09BC) return CANONICAL_COMBINING_CLASS_NUKTA;
 
1144
        if (c == 0x0A3C) return CANONICAL_COMBINING_CLASS_NUKTA;
 
1145
        if (c == 0x0ABC) return CANONICAL_COMBINING_CLASS_NUKTA;
 
1146
        if (c == 0x0B3C) return CANONICAL_COMBINING_CLASS_NUKTA;
 
1147
        if (c == 0x0CBC) return CANONICAL_COMBINING_CLASS_NUKTA;
 
1148
        if (c == 0x1037) return CANONICAL_COMBINING_CLASS_NUKTA;
 
1149
        if (c >= 0x3099 && c <= 0x309A) return CANONICAL_COMBINING_CLASS_KANA_VOICING;
 
1150
        if (c == 0x094D) return CANONICAL_COMBINING_CLASS_VIRAMA;
 
1151
        if (c == 0x09CD) return CANONICAL_COMBINING_CLASS_VIRAMA;
 
1152
        if (c == 0x0A4D) return CANONICAL_COMBINING_CLASS_VIRAMA;
 
1153
        if (c == 0x0ACD) return CANONICAL_COMBINING_CLASS_VIRAMA;
 
1154
        if (c == 0x0B4D) return CANONICAL_COMBINING_CLASS_VIRAMA;
 
1155
        if (c == 0x0BCD) return CANONICAL_COMBINING_CLASS_VIRAMA;
 
1156
        if (c == 0x0C4D) return CANONICAL_COMBINING_CLASS_VIRAMA;
 
1157
        if (c == 0x0CCD) return CANONICAL_COMBINING_CLASS_VIRAMA;
 
1158
        if (c == 0x0D4D) return CANONICAL_COMBINING_CLASS_VIRAMA;
 
1159
        if (c == 0x0DCA) return CANONICAL_COMBINING_CLASS_VIRAMA;
 
1160
        if (c == 0x0E3A) return CANONICAL_COMBINING_CLASS_VIRAMA;
 
1161
        if (c == 0x0F84) return CANONICAL_COMBINING_CLASS_VIRAMA;
 
1162
        if (c == 0x1039) return CANONICAL_COMBINING_CLASS_VIRAMA;
 
1163
        if (c == 0x1714) return CANONICAL_COMBINING_CLASS_VIRAMA;
 
1164
        if (c == 0x1734) return CANONICAL_COMBINING_CLASS_VIRAMA;
 
1165
        if (c == 0x17D2) return CANONICAL_COMBINING_CLASS_VIRAMA;
 
1166
        if (c == 0x05B0) return CANONICAL_COMBINING_CLASS_10;
 
1167
        if (c == 0x05B1) return CANONICAL_COMBINING_CLASS_11;
 
1168
        if (c == 0x05B2) return CANONICAL_COMBINING_CLASS_12;
 
1169
        if (c == 0x05B3) return CANONICAL_COMBINING_CLASS_13;
 
1170
        if (c == 0x05B4) return CANONICAL_COMBINING_CLASS_14;
 
1171
        if (c == 0x05B5) return CANONICAL_COMBINING_CLASS_15;
 
1172
        if (c == 0x05B6) return CANONICAL_COMBINING_CLASS_16;
 
1173
        if (c == 0x05B7) return CANONICAL_COMBINING_CLASS_17;
 
1174
        if (c == 0x05B8) return CANONICAL_COMBINING_CLASS_18;
 
1175
        if (c == 0x05B9) return CANONICAL_COMBINING_CLASS_19;
 
1176
        if (c == 0x05BB) return CANONICAL_COMBINING_CLASS_20;
 
1177
        if (c == 0x05BC) return CANONICAL_COMBINING_CLASS_21;
 
1178
        if (c == 0x05BD) return CANONICAL_COMBINING_CLASS_22;
 
1179
        if (c == 0x05BF) return CANONICAL_COMBINING_CLASS_23;
 
1180
        if (c == 0x05C1) return CANONICAL_COMBINING_CLASS_24;
 
1181
        if (c == 0x05C2) return CANONICAL_COMBINING_CLASS_25;
 
1182
        if (c == 0xFB1E) return CANONICAL_COMBINING_CLASS_26;
 
1183
        if (c == 0x064B) return CANONICAL_COMBINING_CLASS_27;
 
1184
        if (c == 0x064C) return CANONICAL_COMBINING_CLASS_28;
 
1185
        if (c == 0x064D) return CANONICAL_COMBINING_CLASS_29;
 
1186
        if (c == 0x064E) return CANONICAL_COMBINING_CLASS_30;
 
1187
        if (c == 0x064F) return CANONICAL_COMBINING_CLASS_31;
 
1188
        if (c == 0x0650) return CANONICAL_COMBINING_CLASS_32;
 
1189
        if (c == 0x0651) return CANONICAL_COMBINING_CLASS_33;
 
1190
        if (c == 0x0652) return CANONICAL_COMBINING_CLASS_34;
 
1191
        if (c == 0x0670) return CANONICAL_COMBINING_CLASS_35;
 
1192
        if (c == 0x0711) return CANONICAL_COMBINING_CLASS_36;
 
1193
        if (c == 0x0C55) return CANONICAL_COMBINING_CLASS_84;
 
1194
        if (c == 0x0C56) return CANONICAL_COMBINING_CLASS_91;
 
1195
        if (c >= 0x0E38 && c <= 0x0E39) return CANONICAL_COMBINING_CLASS_103;
 
1196
        if (c >= 0x0E48 && c <= 0x0E4B) return CANONICAL_COMBINING_CLASS_107;
 
1197
        if (c >= 0x0EB8 && c <= 0x0EB9) return CANONICAL_COMBINING_CLASS_118;
 
1198
        if (c >= 0x0EC8 && c <= 0x0ECB) return CANONICAL_COMBINING_CLASS_122;
 
1199
        if (c == 0x0F71) return CANONICAL_COMBINING_CLASS_129;
 
1200
        if (c == 0x0F72) return CANONICAL_COMBINING_CLASS_130;
 
1201
        if (c >= 0x0F7A && c <= 0x0F7D) return CANONICAL_COMBINING_CLASS_130;
 
1202
        if (c == 0x0F80) return CANONICAL_COMBINING_CLASS_130;
 
1203
        if (c == 0x0F74) return CANONICAL_COMBINING_CLASS_132;
 
1204
        if (c >= 0x0321 && c <= 0x0322) return CANONICAL_COMBINING_CLASS_ATTACHED_BELOW;
 
1205
        if (c >= 0x0327 && c <= 0x0328) return CANONICAL_COMBINING_CLASS_ATTACHED_BELOW;
 
1206
        if (c == 0x031B) return CANONICAL_COMBINING_CLASS_ATTACHED_ABOVE_RIGHT;
 
1207
        if (c == 0x0F39) return CANONICAL_COMBINING_CLASS_ATTACHED_ABOVE_RIGHT;
 
1208
        if (c >= 0x1D165 && c <= 0x1D166) return CANONICAL_COMBINING_CLASS_ATTACHED_ABOVE_RIGHT;
 
1209
        if (c >= 0x1D16E && c <= 0x1D172) return CANONICAL_COMBINING_CLASS_ATTACHED_ABOVE_RIGHT;
 
1210
        if (c == 0x302A) return CANONICAL_COMBINING_CLASS_BELOW_LEFT;
 
1211
        if (c >= 0x0316 && c <= 0x0319) return CANONICAL_COMBINING_CLASS_BELOW;
 
1212
        if (c >= 0x031C && c <= 0x0320) return CANONICAL_COMBINING_CLASS_BELOW;
 
1213
        if (c >= 0x0323 && c <= 0x0326) return CANONICAL_COMBINING_CLASS_BELOW;
 
1214
        if (c >= 0x0329 && c <= 0x0333) return CANONICAL_COMBINING_CLASS_BELOW;
 
1215
        if (c >= 0x0339 && c <= 0x033C) return CANONICAL_COMBINING_CLASS_BELOW;
 
1216
        if (c >= 0x0347 && c <= 0x0349) return CANONICAL_COMBINING_CLASS_BELOW;
 
1217
        if (c >= 0x034D && c <= 0x034E) return CANONICAL_COMBINING_CLASS_BELOW;
 
1218
        if (c >= 0x0353 && c <= 0x0356) return CANONICAL_COMBINING_CLASS_BELOW;
 
1219
        if (c == 0x0591) return CANONICAL_COMBINING_CLASS_BELOW;
 
1220
        if (c == 0x0596) return CANONICAL_COMBINING_CLASS_BELOW;
 
1221
        if (c == 0x059B) return CANONICAL_COMBINING_CLASS_BELOW;
 
1222
        if (c >= 0x05A3 && c <= 0x05A7) return CANONICAL_COMBINING_CLASS_BELOW;
 
1223
        if (c == 0x05AA) return CANONICAL_COMBINING_CLASS_BELOW;
 
1224
        if (c >= 0x0655 && c <= 0x0656) return CANONICAL_COMBINING_CLASS_BELOW;
 
1225
        if (c == 0x06E3) return CANONICAL_COMBINING_CLASS_BELOW;
 
1226
        if (c == 0x06EA) return CANONICAL_COMBINING_CLASS_BELOW;
 
1227
        if (c == 0x06ED) return CANONICAL_COMBINING_CLASS_BELOW;
 
1228
        if (c == 0x0731) return CANONICAL_COMBINING_CLASS_BELOW;
 
1229
        if (c == 0x0734) return CANONICAL_COMBINING_CLASS_BELOW;
 
1230
        if (c >= 0x0737 && c <= 0x0739) return CANONICAL_COMBINING_CLASS_BELOW;
 
1231
        if (c >= 0x073B && c <= 0x073C) return CANONICAL_COMBINING_CLASS_BELOW;
 
1232
        if (c == 0x073E) return CANONICAL_COMBINING_CLASS_BELOW;
 
1233
        if (c == 0x0742) return CANONICAL_COMBINING_CLASS_BELOW;
 
1234
        if (c == 0x0744) return CANONICAL_COMBINING_CLASS_BELOW;
 
1235
        if (c == 0x0746) return CANONICAL_COMBINING_CLASS_BELOW;
 
1236
        if (c == 0x0748) return CANONICAL_COMBINING_CLASS_BELOW;
 
1237
        if (c == 0x0952) return CANONICAL_COMBINING_CLASS_BELOW;
 
1238
        if (c >= 0x0F18 && c <= 0x0F19) return CANONICAL_COMBINING_CLASS_BELOW;
 
1239
        if (c == 0x0F35) return CANONICAL_COMBINING_CLASS_BELOW;
 
1240
        if (c == 0x0F37) return CANONICAL_COMBINING_CLASS_BELOW;
 
1241
        if (c == 0x0FC6) return CANONICAL_COMBINING_CLASS_BELOW;
 
1242
        if (c == 0x193B) return CANONICAL_COMBINING_CLASS_BELOW;
 
1243
        if (c == 0x20E8) return CANONICAL_COMBINING_CLASS_BELOW;
 
1244
        if (c >= 0x1D17B && c <= 0x1D182) return CANONICAL_COMBINING_CLASS_BELOW;
 
1245
        if (c >= 0x1D18A && c <= 0x1D18B) return CANONICAL_COMBINING_CLASS_BELOW;
 
1246
        if (c == 0x059A) return CANONICAL_COMBINING_CLASS_BELOW_RIGHT;
 
1247
        if (c == 0x05AD) return CANONICAL_COMBINING_CLASS_BELOW_RIGHT;
 
1248
        if (c == 0x1939) return CANONICAL_COMBINING_CLASS_BELOW_RIGHT;
 
1249
        if (c == 0x302D) return CANONICAL_COMBINING_CLASS_BELOW_RIGHT;
 
1250
        if (c >= 0x302E && c <= 0x302F) return CANONICAL_COMBINING_CLASS_LEFT;
 
1251
        if (c == 0x05AE) return CANONICAL_COMBINING_CLASS_ABOVE_LEFT;
 
1252
        if (c == 0x18A9) return CANONICAL_COMBINING_CLASS_ABOVE_LEFT;
 
1253
        if (c == 0x302B) return CANONICAL_COMBINING_CLASS_ABOVE_LEFT;
 
1254
        if (c >= 0x0300 && c <= 0x0314) return CANONICAL_COMBINING_CLASS_ABOVE;
 
1255
        if (c >= 0x033D && c <= 0x0344) return CANONICAL_COMBINING_CLASS_ABOVE;
 
1256
        if (c == 0x0346) return CANONICAL_COMBINING_CLASS_ABOVE;
 
1257
        if (c >= 0x034A && c <= 0x034C) return CANONICAL_COMBINING_CLASS_ABOVE;
 
1258
        if (c >= 0x0350 && c <= 0x0352) return CANONICAL_COMBINING_CLASS_ABOVE;
 
1259
        if (c == 0x0357) return CANONICAL_COMBINING_CLASS_ABOVE;
 
1260
        if (c >= 0x0363 && c <= 0x036F) return CANONICAL_COMBINING_CLASS_ABOVE;
 
1261
        if (c >= 0x0483 && c <= 0x0486) return CANONICAL_COMBINING_CLASS_ABOVE;
 
1262
        if (c >= 0x0592 && c <= 0x0595) return CANONICAL_COMBINING_CLASS_ABOVE;
 
1263
        if (c >= 0x0597 && c <= 0x0599) return CANONICAL_COMBINING_CLASS_ABOVE;
 
1264
        if (c >= 0x059C && c <= 0x05A1) return CANONICAL_COMBINING_CLASS_ABOVE;
 
1265
        if (c >= 0x05A8 && c <= 0x05A9) return CANONICAL_COMBINING_CLASS_ABOVE;
 
1266
        if (c >= 0x05AB && c <= 0x05AC) return CANONICAL_COMBINING_CLASS_ABOVE;
 
1267
        if (c == 0x05AF) return CANONICAL_COMBINING_CLASS_ABOVE;
 
1268
        if (c == 0x05C4) return CANONICAL_COMBINING_CLASS_ABOVE;
 
1269
        if (c >= 0x0610 && c <= 0x0615) return CANONICAL_COMBINING_CLASS_ABOVE;
 
1270
        if (c >= 0x0653 && c <= 0x0654) return CANONICAL_COMBINING_CLASS_ABOVE;
 
1271
        if (c >= 0x0657 && c <= 0x0658) return CANONICAL_COMBINING_CLASS_ABOVE;
 
1272
        if (c >= 0x06D6 && c <= 0x06DC) return CANONICAL_COMBINING_CLASS_ABOVE;
 
1273
        if (c >= 0x06DF && c <= 0x06E2) return CANONICAL_COMBINING_CLASS_ABOVE;
 
1274
        if (c == 0x06E4) return CANONICAL_COMBINING_CLASS_ABOVE;
 
1275
        if (c >= 0x06E7 && c <= 0x06E8) return CANONICAL_COMBINING_CLASS_ABOVE;
 
1276
        if (c >= 0x06EB && c <= 0x06EC) return CANONICAL_COMBINING_CLASS_ABOVE;
 
1277
        if (c == 0x0730) return CANONICAL_COMBINING_CLASS_ABOVE;
 
1278
        if (c >= 0x0732 && c <= 0x0733) return CANONICAL_COMBINING_CLASS_ABOVE;
 
1279
        if (c >= 0x0735 && c <= 0x0736) return CANONICAL_COMBINING_CLASS_ABOVE;
 
1280
        if (c == 0x073A) return CANONICAL_COMBINING_CLASS_ABOVE;
 
1281
        if (c == 0x073D) return CANONICAL_COMBINING_CLASS_ABOVE;
 
1282
        if (c >= 0x073F && c <= 0x0741) return CANONICAL_COMBINING_CLASS_ABOVE;
 
1283
        if (c == 0x0743) return CANONICAL_COMBINING_CLASS_ABOVE;
 
1284
        if (c == 0x0745) return CANONICAL_COMBINING_CLASS_ABOVE;
 
1285
        if (c == 0x0747) return CANONICAL_COMBINING_CLASS_ABOVE;
 
1286
        if (c >= 0x0749 && c <= 0x074A) return CANONICAL_COMBINING_CLASS_ABOVE;
 
1287
        if (c == 0x0951) return CANONICAL_COMBINING_CLASS_ABOVE;
 
1288
        if (c >= 0x0953 && c <= 0x0954) return CANONICAL_COMBINING_CLASS_ABOVE;
 
1289
        if (c >= 0x0F82 && c <= 0x0F83) return CANONICAL_COMBINING_CLASS_ABOVE;
 
1290
        if (c >= 0x0F86 && c <= 0x0F87) return CANONICAL_COMBINING_CLASS_ABOVE;
 
1291
        if (c == 0x17DD) return CANONICAL_COMBINING_CLASS_ABOVE;
 
1292
        if (c == 0x193A) return CANONICAL_COMBINING_CLASS_ABOVE;
 
1293
        if (c >= 0x20D0 && c <= 0x20D1) return CANONICAL_COMBINING_CLASS_ABOVE;
 
1294
        if (c >= 0x20D4 && c <= 0x20D7) return CANONICAL_COMBINING_CLASS_ABOVE;
 
1295
        if (c >= 0x20DB && c <= 0x20DC) return CANONICAL_COMBINING_CLASS_ABOVE;
 
1296
        if (c == 0x20E1) return CANONICAL_COMBINING_CLASS_ABOVE;
 
1297
        if (c == 0x20E7) return CANONICAL_COMBINING_CLASS_ABOVE;
 
1298
        if (c == 0x20E9) return CANONICAL_COMBINING_CLASS_ABOVE;
 
1299
        if (c >= 0xFE20 && c <= 0xFE23) return CANONICAL_COMBINING_CLASS_ABOVE;
 
1300
        if (c >= 0x1D185 && c <= 0x1D189) return CANONICAL_COMBINING_CLASS_ABOVE;
 
1301
        if (c >= 0x1D1AA && c <= 0x1D1AD) return CANONICAL_COMBINING_CLASS_ABOVE;
 
1302
        if (c == 0x0315) return CANONICAL_COMBINING_CLASS_ABOVE_RIGHT;
 
1303
        if (c == 0x031A) return CANONICAL_COMBINING_CLASS_ABOVE_RIGHT;
 
1304
        if (c == 0x302C) return CANONICAL_COMBINING_CLASS_ABOVE_RIGHT;
 
1305
        if (c == 0x035F) return CANONICAL_COMBINING_CLASS_DOUBLE_BELOW;
 
1306
        if (c == 0x0362) return CANONICAL_COMBINING_CLASS_DOUBLE_BELOW;
 
1307
        if (c >= 0x035D && c <= 0x035E) return CANONICAL_COMBINING_CLASS_DOUBLE_ABOVE;
 
1308
        if (c >= 0x0360 && c <= 0x0361) return CANONICAL_COMBINING_CLASS_DOUBLE_ABOVE;
 
1309
        if (c == 0x0345) return CANONICAL_COMBINING_CLASS_IOTA_SUBSCRIPT;    
 
1310
        
 
1311
        return CANONICAL_COMBINING_CLASS_NOT_REORDERED;
 
1312
    }
 
1313
    ///CLOVER:ON
 
1314
    
 
1315
    
 
1316
    private final static int FIRST_HANGUL_SYLLABLE    = 0xAC00;
 
1317
    // even if this is not right; why do tests still pass????
 
1318
    // private final static int LAST_HANGUL_SYLLABLE     = 0xAC00; // FIXME 
 
1319
    private final static int LAST_HANGUL_SYLLABLE = 0xD7A3;
 
1320
 
 
1321
    
 
1322
    static int combineSurrogatePair(char highSurrogate, char lowSurrogate) {
 
1323
 
 
1324
        int high = highSurrogate & 0x7FF;
 
1325
        int low  = lowSurrogate - 0xDC00;
 
1326
        int highShifted = high << 10;
 
1327
        int combined = highShifted | low; 
 
1328
        int codePoint = combined + 0x10000;
 
1329
        return codePoint;
 
1330
        
 
1331
    }
 
1332
 
 
1333
    private static String makeSurrogatePair(int codePoint) {
 
1334
 
 
1335
        StringBuffer s = new StringBuffer(2);
 
1336
        if (codePoint <= 0xFFFF) s.append((char) codePoint);
 
1337
        else {
 
1338
            char high = (char) (0xD800 - (0x10000 >> 10) + (codePoint >> 10));
 
1339
            char low = (char) (0xDC00 + (codePoint & 0x3FF));
 
1340
            s.append(high);
 
1341
            s.append(low);
 
1342
        }
 
1343
        return s.toString();
 
1344
        
 
1345
    }
 
1346
 
 
1347
    private static char getHighSurrogate(int codepoint) {
 
1348
 
 
1349
        char x = (char) codepoint;
 
1350
        int u = (codepoint >> 16) & ((1<<5) - 1);
 
1351
        char w = (char) (u - 1);
 
1352
        return (char) (HI_SURROGATE_START | (w << 6) | x >> 10);
 
1353
        
 
1354
    }
 
1355
 
 
1356
 
 
1357
    private static char getLowSurrogate(int codepoint) {
 
1358
 
 
1359
        char x = (char) codepoint;
 
1360
        return (char) (LOW_SURROGATE_START | x & ((1<<10) - 1));
 
1361
        
 
1362
    }
 
1363
    
 
1364
 
 
1365
    static String normalize(String s) {
 
1366
 
 
1367
        boolean needsNormalizing = false;
 
1368
            
 
1369
        int length = s.length();
 
1370
        for (int i = 0; i < length; i++) {
 
1371
            char c = s.charAt(i);
 
1372
            if (c > 255) {
 
1373
                needsNormalizing = true;
 
1374
                break;
 
1375
            }
 
1376
        } 
 
1377
        
 
1378
        if (needsNormalizing) {
 
1379
            
 
1380
            // ???? unnecessarily invoking this in many cases
 
1381
            s = decomposeHangul(s);
 
1382
            UnicodeString ustring = new UnicodeString(s);
 
1383
            UnicodeString decomposed = ustring.decompose(); 
 
1384
            UnicodeString recomposed = decomposed.compose();
 
1385
            String result = recomposed.toString();
 
1386
            // ???? unnecessarily invoking this in many cases
 
1387
            result = composeHangul(result);
 
1388
            return result;
 
1389
        }
 
1390
        
 
1391
        return s;
 
1392
        
 
1393
    }
 
1394
 
 
1395
     
 
1396
    private static String decomposeHangul(String s) {
 
1397
 
 
1398
        int length = s.length();
 
1399
        StringBuffer sb = new StringBuffer(s.length());
 
1400
        for (int i = 0; i < length; i++) {
 
1401
            char c = s.charAt(i);
 
1402
            if (c >= FIRST_HANGUL_SYLLABLE && c <= LAST_HANGUL_SYLLABLE) {
 
1403
                sb.append(decomposeHangul(c));
 
1404
            }
 
1405
            else {
 
1406
                sb.append(c);
 
1407
            }
 
1408
        }
 
1409
        return sb.toString();
 
1410
        
 
1411
    }
 
1412
 
 
1413
    
 
1414
    // return -1 if the character cannot be combined with the starter; 
 
1415
    // otherwise return the composed character
 
1416
    private static int composeCharacter(int starter, int c) {
 
1417
        
 
1418
        StringBuffer decomposed = new StringBuffer(4);
 
1419
        
 
1420
        if (starter > 0xFFFF) {
 
1421
            decomposed.append(getHighSurrogate(starter));
 
1422
            decomposed.append(getLowSurrogate(starter));
 
1423
        }
 
1424
        else decomposed.append((char) starter);
 
1425
        
 
1426
        if (c > 0xFFFF) {
 
1427
            decomposed.append(getHighSurrogate(c));
 
1428
            decomposed.append(getLowSurrogate(c));
 
1429
        }
 
1430
        else decomposed.append((char) c);
 
1431
        
 
1432
        String recomposed = (String) compositions.get(decomposed.toString());
 
1433
        if (recomposed == null) return -1;
 
1434
        else if (recomposed.length() == 1) return recomposed.charAt(0);
 
1435
        else return combineSurrogatePair(recomposed.charAt(0), recomposed.charAt(1));
 
1436
 
 
1437
    }
 
1438
 
 
1439
    
 
1440
    // FIXME must recurse this
 
1441
    ///CLOVER:OFF
 
1442
    private static String decompose(int character) {
 
1443
        
 
1444
        if (character < 0x00C0) {
 
1445
            return String.valueOf((char) character);
 
1446
        }
 
1447
        else if (character >= FIRST_HANGUL_SYLLABLE && character <= LAST_HANGUL_SYLLABLE) {
 
1448
            return decomposeHangul((char) character);
 
1449
        }
 
1450
        
 
1451
        StringBuffer sb = new StringBuffer(2);
 
1452
        if (character == 0x00C0) {
 
1453
            sb.append((char) 0x0041);
 
1454
            sb.append((char) 0x0300);
 
1455
        }
 
1456
        else if (character == 0x00C1) {
 
1457
            sb.append((char) 0x0041);
 
1458
            sb.append((char) 0x0301);
 
1459
        }
 
1460
        else if (character == 0x00C2) {
 
1461
            sb.append((char) 0x0041);
 
1462
            sb.append((char) 0x0302);
 
1463
        }
 
1464
        else if (character == 0x00C3) {
 
1465
            sb.append((char) 0x0041);
 
1466
            sb.append((char) 0x0303);
 
1467
        }
 
1468
        else if (character == 0x00C4) {
 
1469
            sb.append((char) 0x0041);
 
1470
            sb.append((char) 0x0308);
 
1471
        }
 
1472
        else if (character == 0x00C5) {
 
1473
            sb.append((char) 0x0041);
 
1474
            sb.append((char) 0x030A);
 
1475
        }
 
1476
        else if (character == 0x00C7) {
 
1477
            sb.append((char) 0x0043);
 
1478
            sb.append((char) 0x0327);
 
1479
        }
 
1480
        else if (character == 0x00C8) {
 
1481
            sb.append((char) 0x0045);
 
1482
            sb.append((char) 0x0300);
 
1483
        }
 
1484
        else if (character == 0x00C9) {
 
1485
            sb.append((char) 0x0045);
 
1486
            sb.append((char) 0x0301);
 
1487
        }
 
1488
        else if (character == 0x00CA) {
 
1489
            sb.append((char) 0x0045);
 
1490
            sb.append((char) 0x0302);
 
1491
        }
 
1492
        else if (character == 0x00CB) {
 
1493
            sb.append((char) 0x0045);
 
1494
            sb.append((char) 0x0308);
 
1495
        }
 
1496
        else if (character == 0x00CC) {
 
1497
            sb.append((char) 0x0049);
 
1498
            sb.append((char) 0x0300);
 
1499
        }
 
1500
        else if (character == 0x00CD) {
 
1501
            sb.append((char) 0x0049);
 
1502
            sb.append((char) 0x0301);
 
1503
        }
 
1504
        else if (character == 0x00CE) {
 
1505
            sb.append((char) 0x0049);
 
1506
            sb.append((char) 0x0302);
 
1507
        }
 
1508
        else if (character == 0x00CF) {
 
1509
            sb.append((char) 0x0049);
 
1510
            sb.append((char) 0x0308);
 
1511
        }
 
1512
        else if (character == 0x00D1) {
 
1513
            sb.append((char) 0x004E);
 
1514
            sb.append((char) 0x0303);
 
1515
        }
 
1516
        else if (character == 0x00D2) {
 
1517
            sb.append((char) 0x004F);
 
1518
            sb.append((char) 0x0300);
 
1519
        }
 
1520
        else if (character == 0x00D3) {
 
1521
            sb.append((char) 0x004F);
 
1522
            sb.append((char) 0x0301);
 
1523
        }
 
1524
        else if (character == 0x00D4) {
 
1525
            sb.append((char) 0x004F);
 
1526
            sb.append((char) 0x0302);
 
1527
        }
 
1528
        else if (character == 0x00D5) {
 
1529
            sb.append((char) 0x004F);
 
1530
            sb.append((char) 0x0303);
 
1531
        }
 
1532
        else if (character == 0x00D6) {
 
1533
            sb.append((char) 0x004F);
 
1534
            sb.append((char) 0x0308);
 
1535
        }
 
1536
        else if (character == 0x00D9) {
 
1537
            sb.append((char) 0x0055);
 
1538
            sb.append((char) 0x0300);
 
1539
        }
 
1540
        else if (character == 0x00DA) {
 
1541
            sb.append((char) 0x0055);
 
1542
            sb.append((char) 0x0301);
 
1543
        }
 
1544
        else if (character == 0x00DB) {
 
1545
            sb.append((char) 0x0055);
 
1546
            sb.append((char) 0x0302);
 
1547
        }
 
1548
        else if (character == 0x00DC) {
 
1549
            sb.append((char) 0x0055);
 
1550
            sb.append((char) 0x0308);
 
1551
        }
 
1552
        else if (character == 0x00DD) {
 
1553
            sb.append((char) 0x0059);
 
1554
            sb.append((char) 0x0301);
 
1555
        }
 
1556
        else if (character == 0x00E0) {
 
1557
            sb.append((char) 0x0061);
 
1558
            sb.append((char) 0x0300);
 
1559
        }
 
1560
        else if (character == 0x00E1) {
 
1561
            sb.append((char) 0x0061);
 
1562
            sb.append((char) 0x0301);
 
1563
        }
 
1564
        else if (character == 0x00E2) {
 
1565
            sb.append((char) 0x0061);
 
1566
            sb.append((char) 0x0302);
 
1567
        }
 
1568
        else if (character == 0x00E3) {
 
1569
            sb.append((char) 0x0061);
 
1570
            sb.append((char) 0x0303);
 
1571
        }
 
1572
        else if (character == 0x00E4) {
 
1573
            sb.append((char) 0x0061);
 
1574
            sb.append((char) 0x0308);
 
1575
        }
 
1576
        else if (character == 0x00E5) {
 
1577
            sb.append((char) 0x0061);
 
1578
            sb.append((char) 0x030A);
 
1579
        }
 
1580
        else if (character == 0x00E7) {
 
1581
            sb.append((char) 0x0063);
 
1582
            sb.append((char) 0x0327);
 
1583
        }
 
1584
        else if (character == 0x00E8) {
 
1585
            sb.append((char) 0x0065);
 
1586
            sb.append((char) 0x0300);
 
1587
        }
 
1588
        else if (character == 0x00E9) {
 
1589
            sb.append((char) 0x0065);
 
1590
            sb.append((char) 0x0301);
 
1591
        }
 
1592
        else if (character == 0x00EA) {
 
1593
            sb.append((char) 0x0065);
 
1594
            sb.append((char) 0x0302);
 
1595
        }
 
1596
        else if (character == 0x00EB) {
 
1597
            sb.append((char) 0x0065);
 
1598
            sb.append((char) 0x0308);
 
1599
        }
 
1600
        else if (character == 0x00EC) {
 
1601
            sb.append((char) 0x0069);
 
1602
            sb.append((char) 0x0300);
 
1603
        }
 
1604
        else if (character == 0x00ED) {
 
1605
            sb.append((char) 0x0069);
 
1606
            sb.append((char) 0x0301);
 
1607
        }
 
1608
        else if (character == 0x00EE) {
 
1609
            sb.append((char) 0x0069);
 
1610
            sb.append((char) 0x0302);
 
1611
        }
 
1612
        else if (character == 0x00EF) {
 
1613
            sb.append((char) 0x0069);
 
1614
            sb.append((char) 0x0308);
 
1615
        }
 
1616
        else if (character == 0x00F1) {
 
1617
            sb.append((char) 0x006E);
 
1618
            sb.append((char) 0x0303);
 
1619
        }
 
1620
        else if (character == 0x00F2) {
 
1621
            sb.append((char) 0x006F);
 
1622
            sb.append((char) 0x0300);
 
1623
        }
 
1624
        else if (character == 0x00F3) {
 
1625
            sb.append((char) 0x006F);
 
1626
            sb.append((char) 0x0301);
 
1627
        }
 
1628
        else if (character == 0x00F4) {
 
1629
            sb.append((char) 0x006F);
 
1630
            sb.append((char) 0x0302);
 
1631
        }
 
1632
        else if (character == 0x00F5) {
 
1633
            sb.append((char) 0x006F);
 
1634
            sb.append((char) 0x0303);
 
1635
        }
 
1636
        else if (character == 0x00F6) {
 
1637
            sb.append((char) 0x006F);
 
1638
            sb.append((char) 0x0308);
 
1639
        }
 
1640
        else if (character == 0x00F9) {
 
1641
            sb.append((char) 0x0075);
 
1642
            sb.append((char) 0x0300);
 
1643
        }
 
1644
        else if (character == 0x00FA) {
 
1645
            sb.append((char) 0x0075);
 
1646
            sb.append((char) 0x0301);
 
1647
        }
 
1648
        else if (character == 0x00FB) {
 
1649
            sb.append((char) 0x0075);
 
1650
            sb.append((char) 0x0302);
 
1651
        }
 
1652
        else if (character == 0x00FC) {
 
1653
            sb.append((char) 0x0075);
 
1654
            sb.append((char) 0x0308);
 
1655
        }
 
1656
        else if (character == 0x00FD) {
 
1657
            sb.append((char) 0x0079);
 
1658
            sb.append((char) 0x0301);
 
1659
        }
 
1660
        else if (character == 0x00FF) {
 
1661
            sb.append((char) 0x0079);
 
1662
            sb.append((char) 0x0308);
 
1663
        }
 
1664
        else if (character == 0x0100) {
 
1665
            sb.append((char) 0x0041);
 
1666
            sb.append((char) 0x0304);
 
1667
        }
 
1668
        else if (character == 0x0101) {
 
1669
            sb.append((char) 0x0061);
 
1670
            sb.append((char) 0x0304);
 
1671
        }
 
1672
        else if (character == 0x0102) {
 
1673
            sb.append((char) 0x0041);
 
1674
            sb.append((char) 0x0306);
 
1675
        }
 
1676
        else if (character == 0x0103) {
 
1677
            sb.append((char) 0x0061);
 
1678
            sb.append((char) 0x0306);
 
1679
        }
 
1680
        else if (character == 0x0104) {
 
1681
            sb.append((char) 0x0041);
 
1682
            sb.append((char) 0x0328);
 
1683
        }
 
1684
        else if (character == 0x0105) {
 
1685
            sb.append((char) 0x0061);
 
1686
            sb.append((char) 0x0328);
 
1687
        }
 
1688
        else if (character == 0x0106) {
 
1689
            sb.append((char) 0x0043);
 
1690
            sb.append((char) 0x0301);
 
1691
        }
 
1692
        else if (character == 0x0107) {
 
1693
            sb.append((char) 0x0063);
 
1694
            sb.append((char) 0x0301);
 
1695
        }
 
1696
        else if (character == 0x0108) {
 
1697
            sb.append((char) 0x0043);
 
1698
            sb.append((char) 0x0302);
 
1699
        }
 
1700
        else if (character == 0x0109) {
 
1701
            sb.append((char) 0x0063);
 
1702
            sb.append((char) 0x0302);
 
1703
        }
 
1704
        else if (character == 0x010A) {
 
1705
            sb.append((char) 0x0043);
 
1706
            sb.append((char) 0x0307);
 
1707
        }
 
1708
        else if (character == 0x010B) {
 
1709
            sb.append((char) 0x0063);
 
1710
            sb.append((char) 0x0307);
 
1711
        }
 
1712
        else if (character == 0x010C) {
 
1713
            sb.append((char) 0x0043);
 
1714
            sb.append((char) 0x030C);
 
1715
        }
 
1716
        else if (character == 0x010D) {
 
1717
            sb.append((char) 0x0063);
 
1718
            sb.append((char) 0x030C);
 
1719
        }
 
1720
        else if (character == 0x010E) {
 
1721
            sb.append((char) 0x0044);
 
1722
            sb.append((char) 0x030C);
 
1723
        }
 
1724
        else if (character == 0x010F) {
 
1725
            sb.append((char) 0x0064);
 
1726
            sb.append((char) 0x030C);
 
1727
        }
 
1728
        else if (character == 0x0112) {
 
1729
            sb.append((char) 0x0045);
 
1730
            sb.append((char) 0x0304);
 
1731
        }
 
1732
        else if (character == 0x0113) {
 
1733
            sb.append((char) 0x0065);
 
1734
            sb.append((char) 0x0304);
 
1735
        }
 
1736
        else if (character == 0x0114) {
 
1737
            sb.append((char) 0x0045);
 
1738
            sb.append((char) 0x0306);
 
1739
        }
 
1740
        else if (character == 0x0115) {
 
1741
            sb.append((char) 0x0065);
 
1742
            sb.append((char) 0x0306);
 
1743
        }
 
1744
        else if (character == 0x0116) {
 
1745
            sb.append((char) 0x0045);
 
1746
            sb.append((char) 0x0307);
 
1747
        }
 
1748
        else if (character == 0x0117) {
 
1749
            sb.append((char) 0x0065);
 
1750
            sb.append((char) 0x0307);
 
1751
        }
 
1752
        else if (character == 0x0118) {
 
1753
            sb.append((char) 0x0045);
 
1754
            sb.append((char) 0x0328);
 
1755
        }
 
1756
        else if (character == 0x0119) {
 
1757
            sb.append((char) 0x0065);
 
1758
            sb.append((char) 0x0328);
 
1759
        }
 
1760
        else if (character == 0x011A) {
 
1761
            sb.append((char) 0x0045);
 
1762
            sb.append((char) 0x030C);
 
1763
        }
 
1764
        else if (character == 0x011B) {
 
1765
            sb.append((char) 0x0065);
 
1766
            sb.append((char) 0x030C);
 
1767
        }
 
1768
        else if (character == 0x011C) {
 
1769
            sb.append((char) 0x0047);
 
1770
            sb.append((char) 0x0302);
 
1771
        }
 
1772
        else if (character == 0x011D) {
 
1773
            sb.append((char) 0x0067);
 
1774
            sb.append((char) 0x0302);
 
1775
        }
 
1776
        else if (character == 0x011E) {
 
1777
            sb.append((char) 0x0047);
 
1778
            sb.append((char) 0x0306);
 
1779
        }
 
1780
        else if (character == 0x011F) {
 
1781
            sb.append((char) 0x0067);
 
1782
            sb.append((char) 0x0306);
 
1783
        }
 
1784
        else if (character == 0x0120) {
 
1785
            sb.append((char) 0x0047);
 
1786
            sb.append((char) 0x0307);
 
1787
        }
 
1788
        else if (character == 0x0121) {
 
1789
            sb.append((char) 0x0067);
 
1790
            sb.append((char) 0x0307);
 
1791
        }
 
1792
        else if (character == 0x0122) {
 
1793
            sb.append((char) 0x0047);
 
1794
            sb.append((char) 0x0327);
 
1795
        }
 
1796
        else if (character == 0x0123) {
 
1797
            sb.append((char) 0x0067);
 
1798
            sb.append((char) 0x0327);
 
1799
        }
 
1800
        else if (character == 0x0124) {
 
1801
            sb.append((char) 0x0048);
 
1802
            sb.append((char) 0x0302);
 
1803
        }
 
1804
        else if (character == 0x0125) {
 
1805
            sb.append((char) 0x0068);
 
1806
            sb.append((char) 0x0302);
 
1807
        }
 
1808
        else if (character == 0x0128) {
 
1809
            sb.append((char) 0x0049);
 
1810
            sb.append((char) 0x0303);
 
1811
        }
 
1812
        else if (character == 0x0129) {
 
1813
            sb.append((char) 0x0069);
 
1814
            sb.append((char) 0x0303);
 
1815
        }
 
1816
        else if (character == 0x012A) {
 
1817
            sb.append((char) 0x0049);
 
1818
            sb.append((char) 0x0304);
 
1819
        }
 
1820
        else if (character == 0x012B) {
 
1821
            sb.append((char) 0x0069);
 
1822
            sb.append((char) 0x0304);
 
1823
        }
 
1824
        else if (character == 0x012C) {
 
1825
            sb.append((char) 0x0049);
 
1826
            sb.append((char) 0x0306);
 
1827
        }
 
1828
        else if (character == 0x012D) {
 
1829
            sb.append((char) 0x0069);
 
1830
            sb.append((char) 0x0306);
 
1831
        }
 
1832
        else if (character == 0x012E) {
 
1833
            sb.append((char) 0x0049);
 
1834
            sb.append((char) 0x0328);
 
1835
        }
 
1836
        else if (character == 0x012F) {
 
1837
            sb.append((char) 0x0069);
 
1838
            sb.append((char) 0x0328);
 
1839
        }
 
1840
        else if (character == 0x0130) {
 
1841
            sb.append((char) 0x0049);
 
1842
            sb.append((char) 0x0307);
 
1843
        }
 
1844
        else if (character == 0x0134) {
 
1845
            sb.append((char) 0x004A);
 
1846
            sb.append((char) 0x0302);
 
1847
        }
 
1848
        else if (character == 0x0135) {
 
1849
            sb.append((char) 0x006A);
 
1850
            sb.append((char) 0x0302);
 
1851
        }
 
1852
        else if (character == 0x0136) {
 
1853
            sb.append((char) 0x004B);
 
1854
            sb.append((char) 0x0327);
 
1855
        }
 
1856
        else if (character == 0x0137) {
 
1857
            sb.append((char) 0x006B);
 
1858
            sb.append((char) 0x0327);
 
1859
        }
 
1860
        else if (character == 0x0139) {
 
1861
            sb.append((char) 0x004C);
 
1862
            sb.append((char) 0x0301);
 
1863
        }
 
1864
        else if (character == 0x013A) {
 
1865
            sb.append((char) 0x006C);
 
1866
            sb.append((char) 0x0301);
 
1867
        }
 
1868
        else if (character == 0x013B) {
 
1869
            sb.append((char) 0x004C);
 
1870
            sb.append((char) 0x0327);
 
1871
        }
 
1872
        else if (character == 0x013C) {
 
1873
            sb.append((char) 0x006C);
 
1874
            sb.append((char) 0x0327);
 
1875
        }
 
1876
        else if (character == 0x013D) {
 
1877
            sb.append((char) 0x004C);
 
1878
            sb.append((char) 0x030C);
 
1879
        }
 
1880
        else if (character == 0x013E) {
 
1881
            sb.append((char) 0x006C);
 
1882
            sb.append((char) 0x030C);
 
1883
        }
 
1884
        else if (character == 0x0143) {
 
1885
            sb.append((char) 0x004E);
 
1886
            sb.append((char) 0x0301);
 
1887
        }
 
1888
        else if (character == 0x0144) {
 
1889
            sb.append((char) 0x006E);
 
1890
            sb.append((char) 0x0301);
 
1891
        }
 
1892
        else if (character == 0x0145) {
 
1893
            sb.append((char) 0x004E);
 
1894
            sb.append((char) 0x0327);
 
1895
        }
 
1896
        else if (character == 0x0146) {
 
1897
            sb.append((char) 0x006E);
 
1898
            sb.append((char) 0x0327);
 
1899
        }
 
1900
        else if (character == 0x0147) {
 
1901
            sb.append((char) 0x004E);
 
1902
            sb.append((char) 0x030C);
 
1903
        }
 
1904
        else if (character == 0x0148) {
 
1905
            sb.append((char) 0x006E);
 
1906
            sb.append((char) 0x030C);
 
1907
        }
 
1908
        else if (character == 0x014C) {
 
1909
            sb.append((char) 0x004F);
 
1910
            sb.append((char) 0x0304);
 
1911
        }
 
1912
        else if (character == 0x014D) {
 
1913
            sb.append((char) 0x006F);
 
1914
            sb.append((char) 0x0304);
 
1915
        }
 
1916
        else if (character == 0x014E) {
 
1917
            sb.append((char) 0x004F);
 
1918
            sb.append((char) 0x0306);
 
1919
        }
 
1920
        else if (character == 0x014F) {
 
1921
            sb.append((char) 0x006F);
 
1922
            sb.append((char) 0x0306);
 
1923
        }
 
1924
        else if (character == 0x0150) {
 
1925
            sb.append((char) 0x004F);
 
1926
            sb.append((char) 0x030B);
 
1927
        }
 
1928
        else if (character == 0x0151) {
 
1929
            sb.append((char) 0x006F);
 
1930
            sb.append((char) 0x030B);
 
1931
        }
 
1932
        else if (character == 0x0154) {
 
1933
            sb.append((char) 0x0052);
 
1934
            sb.append((char) 0x0301);
 
1935
        }
 
1936
        else if (character == 0x0155) {
 
1937
            sb.append((char) 0x0072);
 
1938
            sb.append((char) 0x0301);
 
1939
        }
 
1940
        else if (character == 0x0156) {
 
1941
            sb.append((char) 0x0052);
 
1942
            sb.append((char) 0x0327);
 
1943
        }
 
1944
        else if (character == 0x0157) {
 
1945
            sb.append((char) 0x0072);
 
1946
            sb.append((char) 0x0327);
 
1947
        }
 
1948
        else if (character == 0x0158) {
 
1949
            sb.append((char) 0x0052);
 
1950
            sb.append((char) 0x030C);
 
1951
        }
 
1952
        else if (character == 0x0159) {
 
1953
            sb.append((char) 0x0072);
 
1954
            sb.append((char) 0x030C);
 
1955
        }
 
1956
        else if (character == 0x015A) {
 
1957
            sb.append((char) 0x0053);
 
1958
            sb.append((char) 0x0301);
 
1959
        }
 
1960
        else if (character == 0x015B) {
 
1961
            sb.append((char) 0x0073);
 
1962
            sb.append((char) 0x0301);
 
1963
        }
 
1964
        else if (character == 0x015C) {
 
1965
            sb.append((char) 0x0053);
 
1966
            sb.append((char) 0x0302);
 
1967
        }
 
1968
        else if (character == 0x015D) {
 
1969
            sb.append((char) 0x0073);
 
1970
            sb.append((char) 0x0302);
 
1971
        }
 
1972
        else if (character == 0x015E) {
 
1973
            sb.append((char) 0x0053);
 
1974
            sb.append((char) 0x0327);
 
1975
        }
 
1976
        else if (character == 0x015F) {
 
1977
            sb.append((char) 0x0073);
 
1978
            sb.append((char) 0x0327);
 
1979
        }
 
1980
        else if (character == 0x0160) {
 
1981
            sb.append((char) 0x0053);
 
1982
            sb.append((char) 0x030C);
 
1983
        }
 
1984
        else if (character == 0x0161) {
 
1985
            sb.append((char) 0x0073);
 
1986
            sb.append((char) 0x030C);
 
1987
        }
 
1988
        else if (character == 0x0162) {
 
1989
            sb.append((char) 0x0054);
 
1990
            sb.append((char) 0x0327);
 
1991
        }
 
1992
        else if (character == 0x0163) {
 
1993
            sb.append((char) 0x0074);
 
1994
            sb.append((char) 0x0327);
 
1995
        }
 
1996
        else if (character == 0x0164) {
 
1997
            sb.append((char) 0x0054);
 
1998
            sb.append((char) 0x030C);
 
1999
        }
 
2000
        else if (character == 0x0165) {
 
2001
            sb.append((char) 0x0074);
 
2002
            sb.append((char) 0x030C);
 
2003
        }
 
2004
        else if (character == 0x0168) {
 
2005
            sb.append((char) 0x0055);
 
2006
            sb.append((char) 0x0303);
 
2007
        }
 
2008
        else if (character == 0x0169) {
 
2009
            sb.append((char) 0x0075);
 
2010
            sb.append((char) 0x0303);
 
2011
        }
 
2012
        else if (character == 0x016A) {
 
2013
            sb.append((char) 0x0055);
 
2014
            sb.append((char) 0x0304);
 
2015
        }
 
2016
        else if (character == 0x016B) {
 
2017
            sb.append((char) 0x0075);
 
2018
            sb.append((char) 0x0304);
 
2019
        }
 
2020
        else if (character == 0x016C) {
 
2021
            sb.append((char) 0x0055);
 
2022
            sb.append((char) 0x0306);
 
2023
        }
 
2024
        else if (character == 0x016D) {
 
2025
            sb.append((char) 0x0075);
 
2026
            sb.append((char) 0x0306);
 
2027
        }
 
2028
        else if (character == 0x016E) {
 
2029
            sb.append((char) 0x0055);
 
2030
            sb.append((char) 0x030A);
 
2031
        }
 
2032
        else if (character == 0x016F) {
 
2033
            sb.append((char) 0x0075);
 
2034
            sb.append((char) 0x030A);
 
2035
        }
 
2036
        else if (character == 0x0170) {
 
2037
            sb.append((char) 0x0055);
 
2038
            sb.append((char) 0x030B);
 
2039
        }
 
2040
        else if (character == 0x0171) {
 
2041
            sb.append((char) 0x0075);
 
2042
            sb.append((char) 0x030B);
 
2043
        }
 
2044
        else if (character == 0x0172) {
 
2045
            sb.append((char) 0x0055);
 
2046
            sb.append((char) 0x0328);
 
2047
        }
 
2048
        else if (character == 0x0173) {
 
2049
            sb.append((char) 0x0075);
 
2050
            sb.append((char) 0x0328);
 
2051
        }
 
2052
        else if (character == 0x0174) {
 
2053
            sb.append((char) 0x0057);
 
2054
            sb.append((char) 0x0302);
 
2055
        }
 
2056
        else if (character == 0x0175) {
 
2057
            sb.append((char) 0x0077);
 
2058
            sb.append((char) 0x0302);
 
2059
        }
 
2060
        else if (character == 0x0176) {
 
2061
            sb.append((char) 0x0059);
 
2062
            sb.append((char) 0x0302);
 
2063
        }
 
2064
        else if (character == 0x0177) {
 
2065
            sb.append((char) 0x0079);
 
2066
            sb.append((char) 0x0302);
 
2067
        }
 
2068
        else if (character == 0x0178) {
 
2069
            sb.append((char) 0x0059);
 
2070
            sb.append((char) 0x0308);
 
2071
        }
 
2072
        else if (character == 0x0179) {
 
2073
            sb.append((char) 0x005A);
 
2074
            sb.append((char) 0x0301);
 
2075
        }
 
2076
        else if (character == 0x017A) {
 
2077
            sb.append((char) 0x007A);
 
2078
            sb.append((char) 0x0301);
 
2079
        }
 
2080
        else if (character == 0x017B) {
 
2081
            sb.append((char) 0x005A);
 
2082
            sb.append((char) 0x0307);
 
2083
        }
 
2084
        else if (character == 0x017C) {
 
2085
            sb.append((char) 0x007A);
 
2086
            sb.append((char) 0x0307);
 
2087
        }
 
2088
        else if (character == 0x017D) {
 
2089
            sb.append((char) 0x005A);
 
2090
            sb.append((char) 0x030C);
 
2091
        }
 
2092
        else if (character == 0x017E) {
 
2093
            sb.append((char) 0x007A);
 
2094
            sb.append((char) 0x030C);
 
2095
        }
 
2096
        else if (character == 0x01A0) {
 
2097
            sb.append((char) 0x004F);
 
2098
            sb.append((char) 0x031B);
 
2099
        }
 
2100
        else if (character == 0x01A1) {
 
2101
            sb.append((char) 0x006F);
 
2102
            sb.append((char) 0x031B);
 
2103
        }
 
2104
        else if (character == 0x01AF) {
 
2105
            sb.append((char) 0x0055);
 
2106
            sb.append((char) 0x031B);
 
2107
        }
 
2108
        else if (character == 0x01B0) {
 
2109
            sb.append((char) 0x0075);
 
2110
            sb.append((char) 0x031B);
 
2111
        }
 
2112
        else if (character == 0x01CD) {
 
2113
            sb.append((char) 0x0041);
 
2114
            sb.append((char) 0x030C);
 
2115
        }
 
2116
        else if (character == 0x01CE) {
 
2117
            sb.append((char) 0x0061);
 
2118
            sb.append((char) 0x030C);
 
2119
        }
 
2120
        else if (character == 0x01CF) {
 
2121
            sb.append((char) 0x0049);
 
2122
            sb.append((char) 0x030C);
 
2123
        }
 
2124
        else if (character == 0x01D0) {
 
2125
            sb.append((char) 0x0069);
 
2126
            sb.append((char) 0x030C);
 
2127
        }
 
2128
        else if (character == 0x01D1) {
 
2129
            sb.append((char) 0x004F);
 
2130
            sb.append((char) 0x030C);
 
2131
        }
 
2132
        else if (character == 0x01D2) {
 
2133
            sb.append((char) 0x006F);
 
2134
            sb.append((char) 0x030C);
 
2135
        }
 
2136
        else if (character == 0x01D3) {
 
2137
            sb.append((char) 0x0055);
 
2138
            sb.append((char) 0x030C);
 
2139
        }
 
2140
        else if (character == 0x01D4) {
 
2141
            sb.append((char) 0x0075);
 
2142
            sb.append((char) 0x030C);
 
2143
        }
 
2144
        else if (character == 0x01D5) {
 
2145
            sb.append((char) 0x00DC);
 
2146
            sb.append((char) 0x0304);
 
2147
        }
 
2148
        else if (character == 0x01D6) {
 
2149
            sb.append((char) 0x00FC);
 
2150
            sb.append((char) 0x0304);
 
2151
        }
 
2152
        else if (character == 0x01D7) {
 
2153
            sb.append((char) 0x00DC);
 
2154
            sb.append((char) 0x0301);
 
2155
        }
 
2156
        else if (character == 0x01D8) {
 
2157
            sb.append((char) 0x00FC);
 
2158
            sb.append((char) 0x0301);
 
2159
        }
 
2160
        else if (character == 0x01D9) {
 
2161
            sb.append((char) 0x00DC);
 
2162
            sb.append((char) 0x030C);
 
2163
        }
 
2164
        else if (character == 0x01DA) {
 
2165
            sb.append((char) 0x00FC);
 
2166
            sb.append((char) 0x030C);
 
2167
        }
 
2168
        else if (character == 0x01DB) {
 
2169
            sb.append((char) 0x00DC);
 
2170
            sb.append((char) 0x0300);
 
2171
        }
 
2172
        else if (character == 0x01DC) {
 
2173
            sb.append((char) 0x00FC);
 
2174
            sb.append((char) 0x0300);
 
2175
        }
 
2176
        else if (character == 0x01DE) {
 
2177
            sb.append((char) 0x00C4);
 
2178
            sb.append((char) 0x0304);
 
2179
        }
 
2180
        else if (character == 0x01DF) {
 
2181
            sb.append((char) 0x00E4);
 
2182
            sb.append((char) 0x0304);
 
2183
        }
 
2184
        else if (character == 0x01E0) {
 
2185
            sb.append((char) 0x0226);
 
2186
            sb.append((char) 0x0304);
 
2187
        }
 
2188
        else if (character == 0x01E1) {
 
2189
            sb.append((char) 0x0227);
 
2190
            sb.append((char) 0x0304);
 
2191
        }
 
2192
        else if (character == 0x01E2) {
 
2193
            sb.append((char) 0x00C6);
 
2194
            sb.append((char) 0x0304);
 
2195
        }
 
2196
        else if (character == 0x01E3) {
 
2197
            sb.append((char) 0x00E6);
 
2198
            sb.append((char) 0x0304);
 
2199
        }
 
2200
        else if (character == 0x01E6) {
 
2201
            sb.append((char) 0x0047);
 
2202
            sb.append((char) 0x030C);
 
2203
        }
 
2204
        else if (character == 0x01E7) {
 
2205
            sb.append((char) 0x0067);
 
2206
            sb.append((char) 0x030C);
 
2207
        }
 
2208
        else if (character == 0x01E8) {
 
2209
            sb.append((char) 0x004B);
 
2210
            sb.append((char) 0x030C);
 
2211
        }
 
2212
        else if (character == 0x01E9) {
 
2213
            sb.append((char) 0x006B);
 
2214
            sb.append((char) 0x030C);
 
2215
        }
 
2216
        else if (character == 0x01EA) {
 
2217
            sb.append((char) 0x004F);
 
2218
            sb.append((char) 0x0328);
 
2219
        }
 
2220
        else if (character == 0x01EB) {
 
2221
            sb.append((char) 0x006F);
 
2222
            sb.append((char) 0x0328);
 
2223
        }
 
2224
        else if (character == 0x01EC) {
 
2225
            sb.append((char) 0x01EA);
 
2226
            sb.append((char) 0x0304);
 
2227
        }
 
2228
        else if (character == 0x01ED) {
 
2229
            sb.append((char) 0x01EB);
 
2230
            sb.append((char) 0x0304);
 
2231
        }
 
2232
        else if (character == 0x01EE) {
 
2233
            sb.append((char) 0x01B7);
 
2234
            sb.append((char) 0x030C);
 
2235
        }
 
2236
        else if (character == 0x01EF) {
 
2237
            sb.append((char) 0x0292);
 
2238
            sb.append((char) 0x030C);
 
2239
        }
 
2240
        else if (character == 0x01F0) {
 
2241
            sb.append((char) 0x006A);
 
2242
            sb.append((char) 0x030C);
 
2243
        }
 
2244
        else if (character == 0x01F4) {
 
2245
            sb.append((char) 0x0047);
 
2246
            sb.append((char) 0x0301);
 
2247
        }
 
2248
        else if (character == 0x01F5) {
 
2249
            sb.append((char) 0x0067);
 
2250
            sb.append((char) 0x0301);
 
2251
        }
 
2252
        else if (character == 0x01F8) {
 
2253
            sb.append((char) 0x004E);
 
2254
            sb.append((char) 0x0300);
 
2255
        }
 
2256
        else if (character == 0x01F9) {
 
2257
            sb.append((char) 0x006E);
 
2258
            sb.append((char) 0x0300);
 
2259
        }
 
2260
        else if (character == 0x01FA) {
 
2261
            sb.append((char) 0x00C5);
 
2262
            sb.append((char) 0x0301);
 
2263
        }
 
2264
        else if (character == 0x01FB) {
 
2265
            sb.append((char) 0x00E5);
 
2266
            sb.append((char) 0x0301);
 
2267
        }
 
2268
        else if (character == 0x01FC) {
 
2269
            sb.append((char) 0x00C6);
 
2270
            sb.append((char) 0x0301);
 
2271
        }
 
2272
        else if (character == 0x01FD) {
 
2273
            sb.append((char) 0x00E6);
 
2274
            sb.append((char) 0x0301);
 
2275
        }
 
2276
        else if (character == 0x01FE) {
 
2277
            sb.append((char) 0x00D8);
 
2278
            sb.append((char) 0x0301);
 
2279
        }
 
2280
        else if (character == 0x01FF) {
 
2281
            sb.append((char) 0x00F8);
 
2282
            sb.append((char) 0x0301);
 
2283
        }
 
2284
        else if (character == 0x0200) {
 
2285
            sb.append((char) 0x0041);
 
2286
            sb.append((char) 0x030F);
 
2287
        }
 
2288
        else if (character == 0x0201) {
 
2289
            sb.append((char) 0x0061);
 
2290
            sb.append((char) 0x030F);
 
2291
        }
 
2292
        else if (character == 0x0202) {
 
2293
            sb.append((char) 0x0041);
 
2294
            sb.append((char) 0x0311);
 
2295
        }
 
2296
        else if (character == 0x0203) {
 
2297
            sb.append((char) 0x0061);
 
2298
            sb.append((char) 0x0311);
 
2299
        }
 
2300
        else if (character == 0x0204) {
 
2301
            sb.append((char) 0x0045);
 
2302
            sb.append((char) 0x030F);
 
2303
        }
 
2304
        else if (character == 0x0205) {
 
2305
            sb.append((char) 0x0065);
 
2306
            sb.append((char) 0x030F);
 
2307
        }
 
2308
        else if (character == 0x0206) {
 
2309
            sb.append((char) 0x0045);
 
2310
            sb.append((char) 0x0311);
 
2311
        }
 
2312
        else if (character == 0x0207) {
 
2313
            sb.append((char) 0x0065);
 
2314
            sb.append((char) 0x0311);
 
2315
        }
 
2316
        else if (character == 0x0208) {
 
2317
            sb.append((char) 0x0049);
 
2318
            sb.append((char) 0x030F);
 
2319
        }
 
2320
        else if (character == 0x0209) {
 
2321
            sb.append((char) 0x0069);
 
2322
            sb.append((char) 0x030F);
 
2323
        }
 
2324
        else if (character == 0x020A) {
 
2325
            sb.append((char) 0x0049);
 
2326
            sb.append((char) 0x0311);
 
2327
        }
 
2328
        else if (character == 0x020B) {
 
2329
            sb.append((char) 0x0069);
 
2330
            sb.append((char) 0x0311);
 
2331
        }
 
2332
        else if (character == 0x020C) {
 
2333
            sb.append((char) 0x004F);
 
2334
            sb.append((char) 0x030F);
 
2335
        }
 
2336
        else if (character == 0x020D) {
 
2337
            sb.append((char) 0x006F);
 
2338
            sb.append((char) 0x030F);
 
2339
        }
 
2340
        else if (character == 0x020E) {
 
2341
            sb.append((char) 0x004F);
 
2342
            sb.append((char) 0x0311);
 
2343
        }
 
2344
        else if (character == 0x020F) {
 
2345
            sb.append((char) 0x006F);
 
2346
            sb.append((char) 0x0311);
 
2347
        }
 
2348
        else if (character == 0x0210) {
 
2349
            sb.append((char) 0x0052);
 
2350
            sb.append((char) 0x030F);
 
2351
        }
 
2352
        else if (character == 0x0211) {
 
2353
            sb.append((char) 0x0072);
 
2354
            sb.append((char) 0x030F);
 
2355
        }
 
2356
        else if (character == 0x0212) {
 
2357
            sb.append((char) 0x0052);
 
2358
            sb.append((char) 0x0311);
 
2359
        }
 
2360
        else if (character == 0x0213) {
 
2361
            sb.append((char) 0x0072);
 
2362
            sb.append((char) 0x0311);
 
2363
        }
 
2364
        else if (character == 0x0214) {
 
2365
            sb.append((char) 0x0055);
 
2366
            sb.append((char) 0x030F);
 
2367
        }
 
2368
        else if (character == 0x0215) {
 
2369
            sb.append((char) 0x0075);
 
2370
            sb.append((char) 0x030F);
 
2371
        }
 
2372
        else if (character == 0x0216) {
 
2373
            sb.append((char) 0x0055);
 
2374
            sb.append((char) 0x0311);
 
2375
        }
 
2376
        else if (character == 0x0217) {
 
2377
            sb.append((char) 0x0075);
 
2378
            sb.append((char) 0x0311);
 
2379
        }
 
2380
        else if (character == 0x0218) {
 
2381
            sb.append((char) 0x0053);
 
2382
            sb.append((char) 0x0326);
 
2383
        }
 
2384
        else if (character == 0x0219) {
 
2385
            sb.append((char) 0x0073);
 
2386
            sb.append((char) 0x0326);
 
2387
        }
 
2388
        else if (character == 0x021A) {
 
2389
            sb.append((char) 0x0054);
 
2390
            sb.append((char) 0x0326);
 
2391
        }
 
2392
        else if (character == 0x021B) {
 
2393
            sb.append((char) 0x0074);
 
2394
            sb.append((char) 0x0326);
 
2395
        }
 
2396
        else if (character == 0x021E) {
 
2397
            sb.append((char) 0x0048);
 
2398
            sb.append((char) 0x030C);
 
2399
        }
 
2400
        else if (character == 0x021F) {
 
2401
            sb.append((char) 0x0068);
 
2402
            sb.append((char) 0x030C);
 
2403
        }
 
2404
        else if (character == 0x0226) {
 
2405
            sb.append((char) 0x0041);
 
2406
            sb.append((char) 0x0307);
 
2407
        }
 
2408
        else if (character == 0x0227) {
 
2409
            sb.append((char) 0x0061);
 
2410
            sb.append((char) 0x0307);
 
2411
        }
 
2412
        else if (character == 0x0228) {
 
2413
            sb.append((char) 0x0045);
 
2414
            sb.append((char) 0x0327);
 
2415
        }
 
2416
        else if (character == 0x0229) {
 
2417
            sb.append((char) 0x0065);
 
2418
            sb.append((char) 0x0327);
 
2419
        }
 
2420
        else if (character == 0x022A) {
 
2421
            sb.append((char) 0x00D6);
 
2422
            sb.append((char) 0x0304);
 
2423
        }
 
2424
        else if (character == 0x022B) {
 
2425
            sb.append((char) 0x00F6);
 
2426
            sb.append((char) 0x0304);
 
2427
        }
 
2428
        else if (character == 0x022C) {
 
2429
            sb.append((char) 0x00D5);
 
2430
            sb.append((char) 0x0304);
 
2431
        }
 
2432
        else if (character == 0x022D) {
 
2433
            sb.append((char) 0x00F5);
 
2434
            sb.append((char) 0x0304);
 
2435
        }
 
2436
        else if (character == 0x022E) {
 
2437
            sb.append((char) 0x004F);
 
2438
            sb.append((char) 0x0307);
 
2439
        }
 
2440
        else if (character == 0x022F) {
 
2441
            sb.append((char) 0x006F);
 
2442
            sb.append((char) 0x0307);
 
2443
        }
 
2444
        else if (character == 0x0230) {
 
2445
            sb.append((char) 0x022E);
 
2446
            sb.append((char) 0x0304);
 
2447
        }
 
2448
        else if (character == 0x0231) {
 
2449
            sb.append((char) 0x022F);
 
2450
            sb.append((char) 0x0304);
 
2451
        }
 
2452
        else if (character == 0x0232) {
 
2453
            sb.append((char) 0x0059);
 
2454
            sb.append((char) 0x0304);
 
2455
        }
 
2456
        else if (character == 0x0233) {
 
2457
            sb.append((char) 0x0079);
 
2458
            sb.append((char) 0x0304);
 
2459
        }
 
2460
        else if (character == 0x0340) {
 
2461
            sb.append((char) 0x0300);
 
2462
        }
 
2463
        else if (character == 0x0341) {
 
2464
            sb.append((char) 0x0301);
 
2465
        }
 
2466
        else if (character == 0x0343) {
 
2467
            sb.append((char) 0x0313);
 
2468
        }
 
2469
        else if (character == 0x0344) {
 
2470
            sb.append((char) 0x0308);
 
2471
            sb.append((char) 0x0301);
 
2472
        }
 
2473
        else if (character == 0x0374) {
 
2474
            sb.append((char) 0x02B9);
 
2475
        }
 
2476
        else if (character == 0x037E) {
 
2477
            sb.append((char) 0x003B);
 
2478
        }
 
2479
        else if (character == 0x0385) {
 
2480
            sb.append((char) 0x00A8);
 
2481
            sb.append((char) 0x0301);
 
2482
        }
 
2483
        else if (character == 0x0386) {
 
2484
            sb.append((char) 0x0391);
 
2485
            sb.append((char) 0x0301);
 
2486
        }
 
2487
        else if (character == 0x0387) {
 
2488
            sb.append((char) 0x00B7);
 
2489
        }
 
2490
        else if (character == 0x0388) {
 
2491
            sb.append((char) 0x0395);
 
2492
            sb.append((char) 0x0301);
 
2493
        }
 
2494
        else if (character == 0x0389) {
 
2495
            sb.append((char) 0x0397);
 
2496
            sb.append((char) 0x0301);
 
2497
        }
 
2498
        else if (character == 0x038A) {
 
2499
            sb.append((char) 0x0399);
 
2500
            sb.append((char) 0x0301);
 
2501
        }
 
2502
        else if (character == 0x038C) {
 
2503
            sb.append((char) 0x039F);
 
2504
            sb.append((char) 0x0301);
 
2505
        }
 
2506
        else if (character == 0x038E) {
 
2507
            sb.append((char) 0x03A5);
 
2508
            sb.append((char) 0x0301);
 
2509
        }
 
2510
        else if (character == 0x038F) {
 
2511
            sb.append((char) 0x03A9);
 
2512
            sb.append((char) 0x0301);
 
2513
        }
 
2514
        else if (character == 0x0390) {
 
2515
            sb.append((char) 0x03CA);
 
2516
            sb.append((char) 0x0301);
 
2517
        }
 
2518
        else if (character == 0x03AA) {
 
2519
            sb.append((char) 0x0399);
 
2520
            sb.append((char) 0x0308);
 
2521
        }
 
2522
        else if (character == 0x03AB) {
 
2523
            sb.append((char) 0x03A5);
 
2524
            sb.append((char) 0x0308);
 
2525
        }
 
2526
        else if (character == 0x03AC) {
 
2527
            sb.append((char) 0x03B1);
 
2528
            sb.append((char) 0x0301);
 
2529
        }
 
2530
        else if (character == 0x03AD) {
 
2531
            sb.append((char) 0x03B5);
 
2532
            sb.append((char) 0x0301);
 
2533
        }
 
2534
        else if (character == 0x03AE) {
 
2535
            sb.append((char) 0x03B7);
 
2536
            sb.append((char) 0x0301);
 
2537
        }
 
2538
        else if (character == 0x03AF) {
 
2539
            sb.append((char) 0x03B9);
 
2540
            sb.append((char) 0x0301);
 
2541
        }
 
2542
        else if (character == 0x03B0) {
 
2543
            sb.append((char) 0x03CB);
 
2544
            sb.append((char) 0x0301);
 
2545
        }
 
2546
        else if (character == 0x03CA) {
 
2547
            sb.append((char) 0x03B9);
 
2548
            sb.append((char) 0x0308);
 
2549
        }
 
2550
        else if (character == 0x03CB) {
 
2551
            sb.append((char) 0x03C5);
 
2552
            sb.append((char) 0x0308);
 
2553
        }
 
2554
        else if (character == 0x03CC) {
 
2555
            sb.append((char) 0x03BF);
 
2556
            sb.append((char) 0x0301);
 
2557
        }
 
2558
        else if (character == 0x03CD) {
 
2559
            sb.append((char) 0x03C5);
 
2560
            sb.append((char) 0x0301);
 
2561
        }
 
2562
        else if (character == 0x03CE) {
 
2563
            sb.append((char) 0x03C9);
 
2564
            sb.append((char) 0x0301);
 
2565
        }
 
2566
        else if (character == 0x03D3) {
 
2567
            sb.append((char) 0x03D2);
 
2568
            sb.append((char) 0x0301);
 
2569
        }
 
2570
        else if (character == 0x03D4) {
 
2571
            sb.append((char) 0x03D2);
 
2572
            sb.append((char) 0x0308);
 
2573
        }
 
2574
        else if (character == 0x0400) {
 
2575
            sb.append((char) 0x0415);
 
2576
            sb.append((char) 0x0300);
 
2577
        }
 
2578
        else if (character == 0x0401) {
 
2579
            sb.append((char) 0x0415);
 
2580
            sb.append((char) 0x0308);
 
2581
        }
 
2582
        else if (character == 0x0403) {
 
2583
            sb.append((char) 0x0413);
 
2584
            sb.append((char) 0x0301);
 
2585
        }
 
2586
        else if (character == 0x0407) {
 
2587
            sb.append((char) 0x0406);
 
2588
            sb.append((char) 0x0308);
 
2589
        }
 
2590
        else if (character == 0x040C) {
 
2591
            sb.append((char) 0x041A);
 
2592
            sb.append((char) 0x0301);
 
2593
        }
 
2594
        else if (character == 0x040D) {
 
2595
            sb.append((char) 0x0418);
 
2596
            sb.append((char) 0x0300);
 
2597
        }
 
2598
        else if (character == 0x040E) {
 
2599
            sb.append((char) 0x0423);
 
2600
            sb.append((char) 0x0306);
 
2601
        }
 
2602
        else if (character == 0x0419) {
 
2603
            sb.append((char) 0x0418);
 
2604
            sb.append((char) 0x0306);
 
2605
        }
 
2606
        else if (character == 0x0439) {
 
2607
            sb.append((char) 0x0438);
 
2608
            sb.append((char) 0x0306);
 
2609
        }
 
2610
        else if (character == 0x0450) {
 
2611
            sb.append((char) 0x0435);
 
2612
            sb.append((char) 0x0300);
 
2613
        }
 
2614
        else if (character == 0x0451) {
 
2615
            sb.append((char) 0x0435);
 
2616
            sb.append((char) 0x0308);
 
2617
        }
 
2618
        else if (character == 0x0453) {
 
2619
            sb.append((char) 0x0433);
 
2620
            sb.append((char) 0x0301);
 
2621
        }
 
2622
        else if (character == 0x0457) {
 
2623
            sb.append((char) 0x0456);
 
2624
            sb.append((char) 0x0308);
 
2625
        }
 
2626
        else if (character == 0x045C) {
 
2627
            sb.append((char) 0x043A);
 
2628
            sb.append((char) 0x0301);
 
2629
        }
 
2630
        else if (character == 0x045D) {
 
2631
            sb.append((char) 0x0438);
 
2632
            sb.append((char) 0x0300);
 
2633
        }
 
2634
        else if (character == 0x045E) {
 
2635
            sb.append((char) 0x0443);
 
2636
            sb.append((char) 0x0306);
 
2637
        }
 
2638
        else if (character == 0x0476) {
 
2639
            sb.append((char) 0x0474);
 
2640
            sb.append((char) 0x030F);
 
2641
        }
 
2642
        else if (character == 0x0477) {
 
2643
            sb.append((char) 0x0475);
 
2644
            sb.append((char) 0x030F);
 
2645
        }
 
2646
        else if (character == 0x04C1) {
 
2647
            sb.append((char) 0x0416);
 
2648
            sb.append((char) 0x0306);
 
2649
        }
 
2650
        else if (character == 0x04C2) {
 
2651
            sb.append((char) 0x0436);
 
2652
            sb.append((char) 0x0306);
 
2653
        }
 
2654
        else if (character == 0x04D0) {
 
2655
            sb.append((char) 0x0410);
 
2656
            sb.append((char) 0x0306);
 
2657
        }
 
2658
        else if (character == 0x04D1) {
 
2659
            sb.append((char) 0x0430);
 
2660
            sb.append((char) 0x0306);
 
2661
        }
 
2662
        else if (character == 0x04D2) {
 
2663
            sb.append((char) 0x0410);
 
2664
            sb.append((char) 0x0308);
 
2665
        }
 
2666
        else if (character == 0x04D3) {
 
2667
            sb.append((char) 0x0430);
 
2668
            sb.append((char) 0x0308);
 
2669
        }
 
2670
        else if (character == 0x04D6) {
 
2671
            sb.append((char) 0x0415);
 
2672
            sb.append((char) 0x0306);
 
2673
        }
 
2674
        else if (character == 0x04D7) {
 
2675
            sb.append((char) 0x0435);
 
2676
            sb.append((char) 0x0306);
 
2677
        }
 
2678
        else if (character == 0x04DA) {
 
2679
            sb.append((char) 0x04D8);
 
2680
            sb.append((char) 0x0308);
 
2681
        }
 
2682
        else if (character == 0x04DB) {
 
2683
            sb.append((char) 0x04D9);
 
2684
            sb.append((char) 0x0308);
 
2685
        }
 
2686
        else if (character == 0x04DC) {
 
2687
            sb.append((char) 0x0416);
 
2688
            sb.append((char) 0x0308);
 
2689
        }
 
2690
        else if (character == 0x04DD) {
 
2691
            sb.append((char) 0x0436);
 
2692
            sb.append((char) 0x0308);
 
2693
        }
 
2694
        else if (character == 0x04DE) {
 
2695
            sb.append((char) 0x0417);
 
2696
            sb.append((char) 0x0308);
 
2697
        }
 
2698
        else if (character == 0x04DF) {
 
2699
            sb.append((char) 0x0437);
 
2700
            sb.append((char) 0x0308);
 
2701
        }
 
2702
        else if (character == 0x04E2) {
 
2703
            sb.append((char) 0x0418);
 
2704
            sb.append((char) 0x0304);
 
2705
        }
 
2706
        else if (character == 0x04E3) {
 
2707
            sb.append((char) 0x0438);
 
2708
            sb.append((char) 0x0304);
 
2709
        }
 
2710
        else if (character == 0x04E4) {
 
2711
            sb.append((char) 0x0418);
 
2712
            sb.append((char) 0x0308);
 
2713
        }
 
2714
        else if (character == 0x04E5) {
 
2715
            sb.append((char) 0x0438);
 
2716
            sb.append((char) 0x0308);
 
2717
        }
 
2718
        else if (character == 0x04E6) {
 
2719
            sb.append((char) 0x041E);
 
2720
            sb.append((char) 0x0308);
 
2721
        }
 
2722
        else if (character == 0x04E7) {
 
2723
            sb.append((char) 0x043E);
 
2724
            sb.append((char) 0x0308);
 
2725
        }
 
2726
        else if (character == 0x04EA) {
 
2727
            sb.append((char) 0x04E8);
 
2728
            sb.append((char) 0x0308);
 
2729
        }
 
2730
        else if (character == 0x04EB) {
 
2731
            sb.append((char) 0x04E9);
 
2732
            sb.append((char) 0x0308);
 
2733
        }
 
2734
        else if (character == 0x04EC) {
 
2735
            sb.append((char) 0x042D);
 
2736
            sb.append((char) 0x0308);
 
2737
        }
 
2738
        else if (character == 0x04ED) {
 
2739
            sb.append((char) 0x044D);
 
2740
            sb.append((char) 0x0308);
 
2741
        }
 
2742
        else if (character == 0x04EE) {
 
2743
            sb.append((char) 0x0423);
 
2744
            sb.append((char) 0x0304);
 
2745
        }
 
2746
        else if (character == 0x04EF) {
 
2747
            sb.append((char) 0x0443);
 
2748
            sb.append((char) 0x0304);
 
2749
        }
 
2750
        else if (character == 0x04F0) {
 
2751
            sb.append((char) 0x0423);
 
2752
            sb.append((char) 0x0308);
 
2753
        }
 
2754
        else if (character == 0x04F1) {
 
2755
            sb.append((char) 0x0443);
 
2756
            sb.append((char) 0x0308);
 
2757
        }
 
2758
        else if (character == 0x04F2) {
 
2759
            sb.append((char) 0x0423);
 
2760
            sb.append((char) 0x030B);
 
2761
        }
 
2762
        else if (character == 0x04F3) {
 
2763
            sb.append((char) 0x0443);
 
2764
            sb.append((char) 0x030B);
 
2765
        }
 
2766
        else if (character == 0x04F4) {
 
2767
            sb.append((char) 0x0427);
 
2768
            sb.append((char) 0x0308);
 
2769
        }
 
2770
        else if (character == 0x04F5) {
 
2771
            sb.append((char) 0x0447);
 
2772
            sb.append((char) 0x0308);
 
2773
        }
 
2774
        else if (character == 0x04F8) {
 
2775
            sb.append((char) 0x042B);
 
2776
            sb.append((char) 0x0308);
 
2777
        }
 
2778
        else if (character == 0x04F9) {
 
2779
            sb.append((char) 0x044B);
 
2780
            sb.append((char) 0x0308);
 
2781
        }
 
2782
        else if (character == 0x0622) {
 
2783
            sb.append((char) 0x0627);
 
2784
            sb.append((char) 0x0653);
 
2785
        }
 
2786
        else if (character == 0x0623) {
 
2787
            sb.append((char) 0x0627);
 
2788
            sb.append((char) 0x0654);
 
2789
        }
 
2790
        else if (character == 0x0624) {
 
2791
            sb.append((char) 0x0648);
 
2792
            sb.append((char) 0x0654);
 
2793
        }
 
2794
        else if (character == 0x0625) {
 
2795
            sb.append((char) 0x0627);
 
2796
            sb.append((char) 0x0655);
 
2797
        }
 
2798
        else if (character == 0x0626) {
 
2799
            sb.append((char) 0x064A);
 
2800
            sb.append((char) 0x0654);
 
2801
        }
 
2802
        else if (character == 0x06C0) {
 
2803
            sb.append((char) 0x06D5);
 
2804
            sb.append((char) 0x0654);
 
2805
        }
 
2806
        else if (character == 0x06C2) {
 
2807
            sb.append((char) 0x06C1);
 
2808
            sb.append((char) 0x0654);
 
2809
        }
 
2810
        else if (character == 0x06D3) {
 
2811
            sb.append((char) 0x06D2);
 
2812
            sb.append((char) 0x0654);
 
2813
        }
 
2814
        else if (character == 0x0929) {
 
2815
            sb.append((char) 0x0928);
 
2816
            sb.append((char) 0x093C);
 
2817
        }
 
2818
        else if (character == 0x0931) {
 
2819
            sb.append((char) 0x0930);
 
2820
            sb.append((char) 0x093C);
 
2821
        }
 
2822
        else if (character == 0x0934) {
 
2823
            sb.append((char) 0x0933);
 
2824
            sb.append((char) 0x093C);
 
2825
        }
 
2826
        else if (character == 0x0958) {
 
2827
            sb.append((char) 0x0915);
 
2828
            sb.append((char) 0x093C);
 
2829
        }
 
2830
        else if (character == 0x0959) {
 
2831
            sb.append((char) 0x0916);
 
2832
            sb.append((char) 0x093C);
 
2833
        }
 
2834
        else if (character == 0x095A) {
 
2835
            sb.append((char) 0x0917);
 
2836
            sb.append((char) 0x093C);
 
2837
        }
 
2838
        else if (character == 0x095B) {
 
2839
            sb.append((char) 0x091C);
 
2840
            sb.append((char) 0x093C);
 
2841
        }
 
2842
        else if (character == 0x095C) {
 
2843
            sb.append((char) 0x0921);
 
2844
            sb.append((char) 0x093C);
 
2845
        }
 
2846
        else if (character == 0x095D) {
 
2847
            sb.append((char) 0x0922);
 
2848
            sb.append((char) 0x093C);
 
2849
        }
 
2850
        else if (character == 0x095E) {
 
2851
            sb.append((char) 0x092B);
 
2852
            sb.append((char) 0x093C);
 
2853
        }
 
2854
        else if (character == 0x095F) {
 
2855
            sb.append((char) 0x092F);
 
2856
            sb.append((char) 0x093C);
 
2857
        }
 
2858
        else if (character == 0x09CB) {
 
2859
            sb.append((char) 0x09C7);
 
2860
            sb.append((char) 0x09BE);
 
2861
        }
 
2862
        else if (character == 0x09CC) {
 
2863
            sb.append((char) 0x09C7);
 
2864
            sb.append((char) 0x09D7);
 
2865
        }
 
2866
        else if (character == 0x09DC) {
 
2867
            sb.append((char) 0x09A1);
 
2868
            sb.append((char) 0x09BC);
 
2869
        }
 
2870
        else if (character == 0x09DD) {
 
2871
            sb.append((char) 0x09A2);
 
2872
            sb.append((char) 0x09BC);
 
2873
        }
 
2874
        else if (character == 0x09DF) {
 
2875
            sb.append((char) 0x09AF);
 
2876
            sb.append((char) 0x09BC);
 
2877
        }
 
2878
        else if (character == 0x0A33) {
 
2879
            sb.append((char) 0x0A32);
 
2880
            sb.append((char) 0x0A3C);
 
2881
        }
 
2882
        else if (character == 0x0A36) {
 
2883
            sb.append((char) 0x0A38);
 
2884
            sb.append((char) 0x0A3C);
 
2885
        }
 
2886
        else if (character == 0x0A59) {
 
2887
            sb.append((char) 0x0A16);
 
2888
            sb.append((char) 0x0A3C);
 
2889
        }
 
2890
        else if (character == 0x0A5A) {
 
2891
            sb.append((char) 0x0A17);
 
2892
            sb.append((char) 0x0A3C);
 
2893
        }
 
2894
        else if (character == 0x0A5B) {
 
2895
            sb.append((char) 0x0A1C);
 
2896
            sb.append((char) 0x0A3C);
 
2897
        }
 
2898
        else if (character == 0x0A5E) {
 
2899
            sb.append((char) 0x0A2B);
 
2900
            sb.append((char) 0x0A3C);
 
2901
        }
 
2902
        else if (character == 0x0B48) {
 
2903
            sb.append((char) 0x0B47);
 
2904
            sb.append((char) 0x0B56);
 
2905
        }
 
2906
        else if (character == 0x0B4B) {
 
2907
            sb.append((char) 0x0B47);
 
2908
            sb.append((char) 0x0B3E);
 
2909
        }
 
2910
        else if (character == 0x0B4C) {
 
2911
            sb.append((char) 0x0B47);
 
2912
            sb.append((char) 0x0B57);
 
2913
        }
 
2914
        else if (character == 0x0B5C) {
 
2915
            sb.append((char) 0x0B21);
 
2916
            sb.append((char) 0x0B3C);
 
2917
        }
 
2918
        else if (character == 0x0B5D) {
 
2919
            sb.append((char) 0x0B22);
 
2920
            sb.append((char) 0x0B3C);
 
2921
        }
 
2922
        else if (character == 0x0B94) {
 
2923
            sb.append((char) 0x0B92);
 
2924
            sb.append((char) 0x0BD7);
 
2925
        }
 
2926
        else if (character == 0x0BCA) {
 
2927
            sb.append((char) 0x0BC6);
 
2928
            sb.append((char) 0x0BBE);
 
2929
        }
 
2930
        else if (character == 0x0BCB) {
 
2931
            sb.append((char) 0x0BC7);
 
2932
            sb.append((char) 0x0BBE);
 
2933
        }
 
2934
        else if (character == 0x0BCC) {
 
2935
            sb.append((char) 0x0BC6);
 
2936
            sb.append((char) 0x0BD7);
 
2937
        }
 
2938
        else if (character == 0x0C48) {
 
2939
            sb.append((char) 0x0C46);
 
2940
            sb.append((char) 0x0C56);
 
2941
        }
 
2942
        else if (character == 0x0CC0) {
 
2943
            sb.append((char) 0x0CBF);
 
2944
            sb.append((char) 0x0CD5);
 
2945
        }
 
2946
        else if (character == 0x0CC7) {
 
2947
            sb.append((char) 0x0CC6);
 
2948
            sb.append((char) 0x0CD5);
 
2949
        }
 
2950
        else if (character == 0x0CC8) {
 
2951
            sb.append((char) 0x0CC6);
 
2952
            sb.append((char) 0x0CD6);
 
2953
        }
 
2954
        else if (character == 0x0CCA) {
 
2955
            sb.append((char) 0x0CC6);
 
2956
            sb.append((char) 0x0CC2);
 
2957
        }
 
2958
        else if (character == 0x0CCB) {
 
2959
            sb.append((char) 0x0CCA);
 
2960
            sb.append((char) 0x0CD5);
 
2961
        }
 
2962
        else if (character == 0x0D4A) {
 
2963
            sb.append((char) 0x0D46);
 
2964
            sb.append((char) 0x0D3E);
 
2965
        }
 
2966
        else if (character == 0x0D4B) {
 
2967
            sb.append((char) 0x0D47);
 
2968
            sb.append((char) 0x0D3E);
 
2969
        }
 
2970
        else if (character == 0x0D4C) {
 
2971
            sb.append((char) 0x0D46);
 
2972
            sb.append((char) 0x0D57);
 
2973
        }
 
2974
        else if (character == 0x0DDA) {
 
2975
            sb.append((char) 0x0DD9);
 
2976
            sb.append((char) 0x0DCA);
 
2977
        }
 
2978
        else if (character == 0x0DDC) {
 
2979
            sb.append((char) 0x0DD9);
 
2980
            sb.append((char) 0x0DCF);
 
2981
        }
 
2982
        else if (character == 0x0DDD) {
 
2983
            sb.append((char) 0x0DDC);
 
2984
            sb.append((char) 0x0DCA);
 
2985
        }
 
2986
        else if (character == 0x0DDE) {
 
2987
            sb.append((char) 0x0DD9);
 
2988
            sb.append((char) 0x0DDF);
 
2989
        }
 
2990
        else if (character == 0x0F43) {
 
2991
            sb.append((char) 0x0F42);
 
2992
            sb.append((char) 0x0FB7);
 
2993
        }
 
2994
        else if (character == 0x0F4D) {
 
2995
            sb.append((char) 0x0F4C);
 
2996
            sb.append((char) 0x0FB7);
 
2997
        }
 
2998
        else if (character == 0x0F52) {
 
2999
            sb.append((char) 0x0F51);
 
3000
            sb.append((char) 0x0FB7);
 
3001
        }
 
3002
        else if (character == 0x0F57) {
 
3003
            sb.append((char) 0x0F56);
 
3004
            sb.append((char) 0x0FB7);
 
3005
        }
 
3006
        else if (character == 0x0F5C) {
 
3007
            sb.append((char) 0x0F5B);
 
3008
            sb.append((char) 0x0FB7);
 
3009
        }
 
3010
        else if (character == 0x0F69) {
 
3011
            sb.append((char) 0x0F40);
 
3012
            sb.append((char) 0x0FB5);
 
3013
        }
 
3014
        else if (character == 0x0F73) {
 
3015
            sb.append((char) 0x0F71);
 
3016
            sb.append((char) 0x0F72);
 
3017
        }
 
3018
        else if (character == 0x0F75) {
 
3019
            sb.append((char) 0x0F71);
 
3020
            sb.append((char) 0x0F74);
 
3021
        }
 
3022
        else if (character == 0x0F76) {
 
3023
            sb.append((char) 0x0FB2);
 
3024
            sb.append((char) 0x0F80);
 
3025
        }
 
3026
        else if (character == 0x0F78) {
 
3027
            sb.append((char) 0x0FB3);
 
3028
            sb.append((char) 0x0F80);
 
3029
        }
 
3030
        else if (character == 0x0F81) {
 
3031
            sb.append((char) 0x0F71);
 
3032
            sb.append((char) 0x0F80);
 
3033
        }
 
3034
        else if (character == 0x0F93) {
 
3035
            sb.append((char) 0x0F92);
 
3036
            sb.append((char) 0x0FB7);
 
3037
        }
 
3038
        else if (character == 0x0F9D) {
 
3039
            sb.append((char) 0x0F9C);
 
3040
            sb.append((char) 0x0FB7);
 
3041
        }
 
3042
        else if (character == 0x0FA2) {
 
3043
            sb.append((char) 0x0FA1);
 
3044
            sb.append((char) 0x0FB7);
 
3045
        }
 
3046
        else if (character == 0x0FA7) {
 
3047
            sb.append((char) 0x0FA6);
 
3048
            sb.append((char) 0x0FB7);
 
3049
        }
 
3050
        else if (character == 0x0FAC) {
 
3051
            sb.append((char) 0x0FAB);
 
3052
            sb.append((char) 0x0FB7);
 
3053
        }
 
3054
        else if (character == 0x0FB9) {
 
3055
            sb.append((char) 0x0F90);
 
3056
            sb.append((char) 0x0FB5);
 
3057
        }
 
3058
        else if (character == 0x1026) {
 
3059
            sb.append((char) 0x1025);
 
3060
            sb.append((char) 0x102E);
 
3061
        }
 
3062
        else if (character == 0x1E00) {
 
3063
            sb.append((char) 0x0041);
 
3064
            sb.append((char) 0x0325);
 
3065
        }
 
3066
        else if (character == 0x1E01) {
 
3067
            sb.append((char) 0x0061);
 
3068
            sb.append((char) 0x0325);
 
3069
        }
 
3070
        else if (character == 0x1E02) {
 
3071
            sb.append((char) 0x0042);
 
3072
            sb.append((char) 0x0307);
 
3073
        }
 
3074
        else if (character == 0x1E03) {
 
3075
            sb.append((char) 0x0062);
 
3076
            sb.append((char) 0x0307);
 
3077
        }
 
3078
        else if (character == 0x1E04) {
 
3079
            sb.append((char) 0x0042);
 
3080
            sb.append((char) 0x0323);
 
3081
        }
 
3082
        else if (character == 0x1E05) {
 
3083
            sb.append((char) 0x0062);
 
3084
            sb.append((char) 0x0323);
 
3085
        }
 
3086
        else if (character == 0x1E06) {
 
3087
            sb.append((char) 0x0042);
 
3088
            sb.append((char) 0x0331);
 
3089
        }
 
3090
        else if (character == 0x1E07) {
 
3091
            sb.append((char) 0x0062);
 
3092
            sb.append((char) 0x0331);
 
3093
        }
 
3094
        else if (character == 0x1E08) {
 
3095
            sb.append((char) 0x00C7);
 
3096
            sb.append((char) 0x0301);
 
3097
        }
 
3098
        else if (character == 0x1E09) {
 
3099
            sb.append((char) 0x00E7);
 
3100
            sb.append((char) 0x0301);
 
3101
        }
 
3102
        else if (character == 0x1E0A) {
 
3103
            sb.append((char) 0x0044);
 
3104
            sb.append((char) 0x0307);
 
3105
        }
 
3106
        else if (character == 0x1E0B) {
 
3107
            sb.append((char) 0x0064);
 
3108
            sb.append((char) 0x0307);
 
3109
        }
 
3110
        else if (character == 0x1E0C) {
 
3111
            sb.append((char) 0x0044);
 
3112
            sb.append((char) 0x0323);
 
3113
        }
 
3114
        else if (character == 0x1E0D) {
 
3115
            sb.append((char) 0x0064);
 
3116
            sb.append((char) 0x0323);
 
3117
        }
 
3118
        else if (character == 0x1E0E) {
 
3119
            sb.append((char) 0x0044);
 
3120
            sb.append((char) 0x0331);
 
3121
        }
 
3122
        else if (character == 0x1E0F) {
 
3123
            sb.append((char) 0x0064);
 
3124
            sb.append((char) 0x0331);
 
3125
        }
 
3126
        else if (character == 0x1E10) {
 
3127
            sb.append((char) 0x0044);
 
3128
            sb.append((char) 0x0327);
 
3129
        }
 
3130
        else if (character == 0x1E11) {
 
3131
            sb.append((char) 0x0064);
 
3132
            sb.append((char) 0x0327);
 
3133
        }
 
3134
        else if (character == 0x1E12) {
 
3135
            sb.append((char) 0x0044);
 
3136
            sb.append((char) 0x032D);
 
3137
        }
 
3138
        else if (character == 0x1E13) {
 
3139
            sb.append((char) 0x0064);
 
3140
            sb.append((char) 0x032D);
 
3141
        }
 
3142
        else if (character == 0x1E14) {
 
3143
            sb.append((char) 0x0112);
 
3144
            sb.append((char) 0x0300);
 
3145
        }
 
3146
        else if (character == 0x1E15) {
 
3147
            sb.append((char) 0x0113);
 
3148
            sb.append((char) 0x0300);
 
3149
        }
 
3150
        else if (character == 0x1E16) {
 
3151
            sb.append((char) 0x0112);
 
3152
            sb.append((char) 0x0301);
 
3153
        }
 
3154
        else if (character == 0x1E17) {
 
3155
            sb.append((char) 0x0113);
 
3156
            sb.append((char) 0x0301);
 
3157
        }
 
3158
        else if (character == 0x1E18) {
 
3159
            sb.append((char) 0x0045);
 
3160
            sb.append((char) 0x032D);
 
3161
        }
 
3162
        else if (character == 0x1E19) {
 
3163
            sb.append((char) 0x0065);
 
3164
            sb.append((char) 0x032D);
 
3165
        }
 
3166
        else if (character == 0x1E1A) {
 
3167
            sb.append((char) 0x0045);
 
3168
            sb.append((char) 0x0330);
 
3169
        }
 
3170
        else if (character == 0x1E1B) {
 
3171
            sb.append((char) 0x0065);
 
3172
            sb.append((char) 0x0330);
 
3173
        }
 
3174
        else if (character == 0x1E1C) {
 
3175
            sb.append((char) 0x0228);
 
3176
            sb.append((char) 0x0306);
 
3177
        }
 
3178
        else if (character == 0x1E1D) {
 
3179
            sb.append((char) 0x0229);
 
3180
            sb.append((char) 0x0306);
 
3181
        }
 
3182
        else if (character == 0x1E1E) {
 
3183
            sb.append((char) 0x0046);
 
3184
            sb.append((char) 0x0307);
 
3185
        }
 
3186
        else if (character == 0x1E1F) {
 
3187
            sb.append((char) 0x0066);
 
3188
            sb.append((char) 0x0307);
 
3189
        }
 
3190
        else if (character == 0x1E20) {
 
3191
            sb.append((char) 0x0047);
 
3192
            sb.append((char) 0x0304);
 
3193
        }
 
3194
        else if (character == 0x1E21) {
 
3195
            sb.append((char) 0x0067);
 
3196
            sb.append((char) 0x0304);
 
3197
        }
 
3198
        else if (character == 0x1E22) {
 
3199
            sb.append((char) 0x0048);
 
3200
            sb.append((char) 0x0307);
 
3201
        }
 
3202
        else if (character == 0x1E23) {
 
3203
            sb.append((char) 0x0068);
 
3204
            sb.append((char) 0x0307);
 
3205
        }
 
3206
        else if (character == 0x1E24) {
 
3207
            sb.append((char) 0x0048);
 
3208
            sb.append((char) 0x0323);
 
3209
        }
 
3210
        else if (character == 0x1E25) {
 
3211
            sb.append((char) 0x0068);
 
3212
            sb.append((char) 0x0323);
 
3213
        }
 
3214
        else if (character == 0x1E26) {
 
3215
            sb.append((char) 0x0048);
 
3216
            sb.append((char) 0x0308);
 
3217
        }
 
3218
        else if (character == 0x1E27) {
 
3219
            sb.append((char) 0x0068);
 
3220
            sb.append((char) 0x0308);
 
3221
        }
 
3222
        else if (character == 0x1E28) {
 
3223
            sb.append((char) 0x0048);
 
3224
            sb.append((char) 0x0327);
 
3225
        }
 
3226
        else if (character == 0x1E29) {
 
3227
            sb.append((char) 0x0068);
 
3228
            sb.append((char) 0x0327);
 
3229
        }
 
3230
        else if (character == 0x1E2A) {
 
3231
            sb.append((char) 0x0048);
 
3232
            sb.append((char) 0x032E);
 
3233
        }
 
3234
        else if (character == 0x1E2B) {
 
3235
            sb.append((char) 0x0068);
 
3236
            sb.append((char) 0x032E);
 
3237
        }
 
3238
        else if (character == 0x1E2C) {
 
3239
            sb.append((char) 0x0049);
 
3240
            sb.append((char) 0x0330);
 
3241
        }
 
3242
        else if (character == 0x1E2D) {
 
3243
            sb.append((char) 0x0069);
 
3244
            sb.append((char) 0x0330);
 
3245
        }
 
3246
        else if (character == 0x1E2E) {
 
3247
            sb.append((char) 0x00CF);
 
3248
            sb.append((char) 0x0301);
 
3249
        }
 
3250
        else if (character == 0x1E2F) {
 
3251
            sb.append((char) 0x00EF);
 
3252
            sb.append((char) 0x0301);
 
3253
        }
 
3254
        else if (character == 0x1E30) {
 
3255
            sb.append((char) 0x004B);
 
3256
            sb.append((char) 0x0301);
 
3257
        }
 
3258
        else if (character == 0x1E31) {
 
3259
            sb.append((char) 0x006B);
 
3260
            sb.append((char) 0x0301);
 
3261
        }
 
3262
        else if (character == 0x1E32) {
 
3263
            sb.append((char) 0x004B);
 
3264
            sb.append((char) 0x0323);
 
3265
        }
 
3266
        else if (character == 0x1E33) {
 
3267
            sb.append((char) 0x006B);
 
3268
            sb.append((char) 0x0323);
 
3269
        }
 
3270
        else if (character == 0x1E34) {
 
3271
            sb.append((char) 0x004B);
 
3272
            sb.append((char) 0x0331);
 
3273
        }
 
3274
        else if (character == 0x1E35) {
 
3275
            sb.append((char) 0x006B);
 
3276
            sb.append((char) 0x0331);
 
3277
        }
 
3278
        else if (character == 0x1E36) {
 
3279
            sb.append((char) 0x004C);
 
3280
            sb.append((char) 0x0323);
 
3281
        }
 
3282
        else if (character == 0x1E37) {
 
3283
            sb.append((char) 0x006C);
 
3284
            sb.append((char) 0x0323);
 
3285
        }
 
3286
        else if (character == 0x1E38) {
 
3287
            sb.append((char) 0x1E36);
 
3288
            sb.append((char) 0x0304);
 
3289
        }
 
3290
        else if (character == 0x1E39) {
 
3291
            sb.append((char) 0x1E37);
 
3292
            sb.append((char) 0x0304);
 
3293
        }
 
3294
        else if (character == 0x1E3A) {
 
3295
            sb.append((char) 0x004C);
 
3296
            sb.append((char) 0x0331);
 
3297
        }
 
3298
        else if (character == 0x1E3B) {
 
3299
            sb.append((char) 0x006C);
 
3300
            sb.append((char) 0x0331);
 
3301
        }
 
3302
        else if (character == 0x1E3C) {
 
3303
            sb.append((char) 0x004C);
 
3304
            sb.append((char) 0x032D);
 
3305
        }
 
3306
        else if (character == 0x1E3D) {
 
3307
            sb.append((char) 0x006C);
 
3308
            sb.append((char) 0x032D);
 
3309
        }
 
3310
        else if (character == 0x1E3E) {
 
3311
            sb.append((char) 0x004D);
 
3312
            sb.append((char) 0x0301);
 
3313
        }
 
3314
        else if (character == 0x1E3F) {
 
3315
            sb.append((char) 0x006D);
 
3316
            sb.append((char) 0x0301);
 
3317
        }
 
3318
        else if (character == 0x1E40) {
 
3319
            sb.append((char) 0x004D);
 
3320
            sb.append((char) 0x0307);
 
3321
        }
 
3322
        else if (character == 0x1E41) {
 
3323
            sb.append((char) 0x006D);
 
3324
            sb.append((char) 0x0307);
 
3325
        }
 
3326
        else if (character == 0x1E42) {
 
3327
            sb.append((char) 0x004D);
 
3328
            sb.append((char) 0x0323);
 
3329
        }
 
3330
        else if (character == 0x1E43) {
 
3331
            sb.append((char) 0x006D);
 
3332
            sb.append((char) 0x0323);
 
3333
        }
 
3334
        else if (character == 0x1E44) {
 
3335
            sb.append((char) 0x004E);
 
3336
            sb.append((char) 0x0307);
 
3337
        }
 
3338
        else if (character == 0x1E45) {
 
3339
            sb.append((char) 0x006E);
 
3340
            sb.append((char) 0x0307);
 
3341
        }
 
3342
        else if (character == 0x1E46) {
 
3343
            sb.append((char) 0x004E);
 
3344
            sb.append((char) 0x0323);
 
3345
        }
 
3346
        else if (character == 0x1E47) {
 
3347
            sb.append((char) 0x006E);
 
3348
            sb.append((char) 0x0323);
 
3349
        }
 
3350
        else if (character == 0x1E48) {
 
3351
            sb.append((char) 0x004E);
 
3352
            sb.append((char) 0x0331);
 
3353
        }
 
3354
        else if (character == 0x1E49) {
 
3355
            sb.append((char) 0x006E);
 
3356
            sb.append((char) 0x0331);
 
3357
        }
 
3358
        else if (character == 0x1E4A) {
 
3359
            sb.append((char) 0x004E);
 
3360
            sb.append((char) 0x032D);
 
3361
        }
 
3362
        else if (character == 0x1E4B) {
 
3363
            sb.append((char) 0x006E);
 
3364
            sb.append((char) 0x032D);
 
3365
        }
 
3366
        else if (character == 0x1E4C) {
 
3367
            sb.append((char) 0x00D5);
 
3368
            sb.append((char) 0x0301);
 
3369
        }
 
3370
        else if (character == 0x1E4D) {
 
3371
            sb.append((char) 0x00F5);
 
3372
            sb.append((char) 0x0301);
 
3373
        }
 
3374
        else if (character == 0x1E4E) {
 
3375
            sb.append((char) 0x00D5);
 
3376
            sb.append((char) 0x0308);
 
3377
        }
 
3378
        else if (character == 0x1E4F) {
 
3379
            sb.append((char) 0x00F5);
 
3380
            sb.append((char) 0x0308);
 
3381
        }
 
3382
        else if (character == 0x1E50) {
 
3383
            sb.append((char) 0x014C);
 
3384
            sb.append((char) 0x0300);
 
3385
        }
 
3386
        else if (character == 0x1E51) {
 
3387
            sb.append((char) 0x014D);
 
3388
            sb.append((char) 0x0300);
 
3389
        }
 
3390
        else if (character == 0x1E52) {
 
3391
            sb.append((char) 0x014C);
 
3392
            sb.append((char) 0x0301);
 
3393
        }
 
3394
        else if (character == 0x1E53) {
 
3395
            sb.append((char) 0x014D);
 
3396
            sb.append((char) 0x0301);
 
3397
        }
 
3398
        else if (character == 0x1E54) {
 
3399
            sb.append((char) 0x0050);
 
3400
            sb.append((char) 0x0301);
 
3401
        }
 
3402
        else if (character == 0x1E55) {
 
3403
            sb.append((char) 0x0070);
 
3404
            sb.append((char) 0x0301);
 
3405
        }
 
3406
        else if (character == 0x1E56) {
 
3407
            sb.append((char) 0x0050);
 
3408
            sb.append((char) 0x0307);
 
3409
        }
 
3410
        else if (character == 0x1E57) {
 
3411
            sb.append((char) 0x0070);
 
3412
            sb.append((char) 0x0307);
 
3413
        }
 
3414
        else if (character == 0x1E58) {
 
3415
            sb.append((char) 0x0052);
 
3416
            sb.append((char) 0x0307);
 
3417
        }
 
3418
        else if (character == 0x1E59) {
 
3419
            sb.append((char) 0x0072);
 
3420
            sb.append((char) 0x0307);
 
3421
        }
 
3422
        else if (character == 0x1E5A) {
 
3423
            sb.append((char) 0x0052);
 
3424
            sb.append((char) 0x0323);
 
3425
        }
 
3426
        else if (character == 0x1E5B) {
 
3427
            sb.append((char) 0x0072);
 
3428
            sb.append((char) 0x0323);
 
3429
        }
 
3430
        else if (character == 0x1E5C) {
 
3431
            sb.append((char) 0x1E5A);
 
3432
            sb.append((char) 0x0304);
 
3433
        }
 
3434
        else if (character == 0x1E5D) {
 
3435
            sb.append((char) 0x1E5B);
 
3436
            sb.append((char) 0x0304);
 
3437
        }
 
3438
        else if (character == 0x1E5E) {
 
3439
            sb.append((char) 0x0052);
 
3440
            sb.append((char) 0x0331);
 
3441
        }
 
3442
        else if (character == 0x1E5F) {
 
3443
            sb.append((char) 0x0072);
 
3444
            sb.append((char) 0x0331);
 
3445
        }
 
3446
        else if (character == 0x1E60) {
 
3447
            sb.append((char) 0x0053);
 
3448
            sb.append((char) 0x0307);
 
3449
        }
 
3450
        else if (character == 0x1E61) {
 
3451
            sb.append((char) 0x0073);
 
3452
            sb.append((char) 0x0307);
 
3453
        }
 
3454
        else if (character == 0x1E62) {
 
3455
            sb.append((char) 0x0053);
 
3456
            sb.append((char) 0x0323);
 
3457
        }
 
3458
        else if (character == 0x1E63) {
 
3459
            sb.append((char) 0x0073);
 
3460
            sb.append((char) 0x0323);
 
3461
        }
 
3462
        else if (character == 0x1E64) {
 
3463
            sb.append((char) 0x015A);
 
3464
            sb.append((char) 0x0307);
 
3465
        }
 
3466
        else if (character == 0x1E65) {
 
3467
            sb.append((char) 0x015B);
 
3468
            sb.append((char) 0x0307);
 
3469
        }
 
3470
        else if (character == 0x1E66) {
 
3471
            sb.append((char) 0x0160);
 
3472
            sb.append((char) 0x0307);
 
3473
        }
 
3474
        else if (character == 0x1E67) {
 
3475
            sb.append((char) 0x0161);
 
3476
            sb.append((char) 0x0307);
 
3477
        }
 
3478
        else if (character == 0x1E68) {
 
3479
            sb.append((char) 0x1E62);
 
3480
            sb.append((char) 0x0307);
 
3481
        }
 
3482
        else if (character == 0x1E69) {
 
3483
            sb.append((char) 0x1E63);
 
3484
            sb.append((char) 0x0307);
 
3485
        }
 
3486
        else if (character == 0x1E6A) {
 
3487
            sb.append((char) 0x0054);
 
3488
            sb.append((char) 0x0307);
 
3489
        }
 
3490
        else if (character == 0x1E6B) {
 
3491
            sb.append((char) 0x0074);
 
3492
            sb.append((char) 0x0307);
 
3493
        }
 
3494
        else if (character == 0x1E6C) {
 
3495
            sb.append((char) 0x0054);
 
3496
            sb.append((char) 0x0323);
 
3497
        }
 
3498
        else if (character == 0x1E6D) {
 
3499
            sb.append((char) 0x0074);
 
3500
            sb.append((char) 0x0323);
 
3501
        }
 
3502
        else if (character == 0x1E6E) {
 
3503
            sb.append((char) 0x0054);
 
3504
            sb.append((char) 0x0331);
 
3505
        }
 
3506
        else if (character == 0x1E6F) {
 
3507
            sb.append((char) 0x0074);
 
3508
            sb.append((char) 0x0331);
 
3509
        }
 
3510
        else if (character == 0x1E70) {
 
3511
            sb.append((char) 0x0054);
 
3512
            sb.append((char) 0x032D);
 
3513
        }
 
3514
        else if (character == 0x1E71) {
 
3515
            sb.append((char) 0x0074);
 
3516
            sb.append((char) 0x032D);
 
3517
        }
 
3518
        else if (character == 0x1E72) {
 
3519
            sb.append((char) 0x0055);
 
3520
            sb.append((char) 0x0324);
 
3521
        }
 
3522
        else if (character == 0x1E73) {
 
3523
            sb.append((char) 0x0075);
 
3524
            sb.append((char) 0x0324);
 
3525
        }
 
3526
        else if (character == 0x1E74) {
 
3527
            sb.append((char) 0x0055);
 
3528
            sb.append((char) 0x0330);
 
3529
        }
 
3530
        else if (character == 0x1E75) {
 
3531
            sb.append((char) 0x0075);
 
3532
            sb.append((char) 0x0330);
 
3533
        }
 
3534
        else if (character == 0x1E76) {
 
3535
            sb.append((char) 0x0055);
 
3536
            sb.append((char) 0x032D);
 
3537
        }
 
3538
        else if (character == 0x1E77) {
 
3539
            sb.append((char) 0x0075);
 
3540
            sb.append((char) 0x032D);
 
3541
        }
 
3542
        else if (character == 0x1E78) {
 
3543
            sb.append((char) 0x0168);
 
3544
            sb.append((char) 0x0301);
 
3545
        }
 
3546
        else if (character == 0x1E79) {
 
3547
            sb.append((char) 0x0169);
 
3548
            sb.append((char) 0x0301);
 
3549
        }
 
3550
        else if (character == 0x1E7A) {
 
3551
            sb.append((char) 0x016A);
 
3552
            sb.append((char) 0x0308);
 
3553
        }
 
3554
        else if (character == 0x1E7B) {
 
3555
            sb.append((char) 0x016B);
 
3556
            sb.append((char) 0x0308);
 
3557
        }
 
3558
        else if (character == 0x1E7C) {
 
3559
            sb.append((char) 0x0056);
 
3560
            sb.append((char) 0x0303);
 
3561
        }
 
3562
        else if (character == 0x1E7D) {
 
3563
            sb.append((char) 0x0076);
 
3564
            sb.append((char) 0x0303);
 
3565
        }
 
3566
        else if (character == 0x1E7E) {
 
3567
            sb.append((char) 0x0056);
 
3568
            sb.append((char) 0x0323);
 
3569
        }
 
3570
        else if (character == 0x1E7F) {
 
3571
            sb.append((char) 0x0076);
 
3572
            sb.append((char) 0x0323);
 
3573
        }
 
3574
        else if (character == 0x1E80) {
 
3575
            sb.append((char) 0x0057);
 
3576
            sb.append((char) 0x0300);
 
3577
        }
 
3578
        else if (character == 0x1E81) {
 
3579
            sb.append((char) 0x0077);
 
3580
            sb.append((char) 0x0300);
 
3581
        }
 
3582
        else if (character == 0x1E82) {
 
3583
            sb.append((char) 0x0057);
 
3584
            sb.append((char) 0x0301);
 
3585
        }
 
3586
        else if (character == 0x1E83) {
 
3587
            sb.append((char) 0x0077);
 
3588
            sb.append((char) 0x0301);
 
3589
        }
 
3590
        else if (character == 0x1E84) {
 
3591
            sb.append((char) 0x0057);
 
3592
            sb.append((char) 0x0308);
 
3593
        }
 
3594
        else if (character == 0x1E85) {
 
3595
            sb.append((char) 0x0077);
 
3596
            sb.append((char) 0x0308);
 
3597
        }
 
3598
        else if (character == 0x1E86) {
 
3599
            sb.append((char) 0x0057);
 
3600
            sb.append((char) 0x0307);
 
3601
        }
 
3602
        else if (character == 0x1E87) {
 
3603
            sb.append((char) 0x0077);
 
3604
            sb.append((char) 0x0307);
 
3605
        }
 
3606
        else if (character == 0x1E88) {
 
3607
            sb.append((char) 0x0057);
 
3608
            sb.append((char) 0x0323);
 
3609
        }
 
3610
        else if (character == 0x1E89) {
 
3611
            sb.append((char) 0x0077);
 
3612
            sb.append((char) 0x0323);
 
3613
        }
 
3614
        else if (character == 0x1E8A) {
 
3615
            sb.append((char) 0x0058);
 
3616
            sb.append((char) 0x0307);
 
3617
        }
 
3618
        else if (character == 0x1E8B) {
 
3619
            sb.append((char) 0x0078);
 
3620
            sb.append((char) 0x0307);
 
3621
        }
 
3622
        else if (character == 0x1E8C) {
 
3623
            sb.append((char) 0x0058);
 
3624
            sb.append((char) 0x0308);
 
3625
        }
 
3626
        else if (character == 0x1E8D) {
 
3627
            sb.append((char) 0x0078);
 
3628
            sb.append((char) 0x0308);
 
3629
        }
 
3630
        else if (character == 0x1E8E) {
 
3631
            sb.append((char) 0x0059);
 
3632
            sb.append((char) 0x0307);
 
3633
        }
 
3634
        else if (character == 0x1E8F) {
 
3635
            sb.append((char) 0x0079);
 
3636
            sb.append((char) 0x0307);
 
3637
        }
 
3638
        else if (character == 0x1E90) {
 
3639
            sb.append((char) 0x005A);
 
3640
            sb.append((char) 0x0302);
 
3641
        }
 
3642
        else if (character == 0x1E91) {
 
3643
            sb.append((char) 0x007A);
 
3644
            sb.append((char) 0x0302);
 
3645
        }
 
3646
        else if (character == 0x1E92) {
 
3647
            sb.append((char) 0x005A);
 
3648
            sb.append((char) 0x0323);
 
3649
        }
 
3650
        else if (character == 0x1E93) {
 
3651
            sb.append((char) 0x007A);
 
3652
            sb.append((char) 0x0323);
 
3653
        }
 
3654
        else if (character == 0x1E94) {
 
3655
            sb.append((char) 0x005A);
 
3656
            sb.append((char) 0x0331);
 
3657
        }
 
3658
        else if (character == 0x1E95) {
 
3659
            sb.append((char) 0x007A);
 
3660
            sb.append((char) 0x0331);
 
3661
        }
 
3662
        else if (character == 0x1E96) {
 
3663
            sb.append((char) 0x0068);
 
3664
            sb.append((char) 0x0331);
 
3665
        }
 
3666
        else if (character == 0x1E97) {
 
3667
            sb.append((char) 0x0074);
 
3668
            sb.append((char) 0x0308);
 
3669
        }
 
3670
        else if (character == 0x1E98) {
 
3671
            sb.append((char) 0x0077);
 
3672
            sb.append((char) 0x030A);
 
3673
        }
 
3674
        else if (character == 0x1E99) {
 
3675
            sb.append((char) 0x0079);
 
3676
            sb.append((char) 0x030A);
 
3677
        }
 
3678
        else if (character == 0x1E9B) {
 
3679
            sb.append((char) 0x017F);
 
3680
            sb.append((char) 0x0307);
 
3681
        }
 
3682
        else if (character == 0x1EA0) {
 
3683
            sb.append((char) 0x0041);
 
3684
            sb.append((char) 0x0323);
 
3685
        }
 
3686
        else if (character == 0x1EA1) {
 
3687
            sb.append((char) 0x0061);
 
3688
            sb.append((char) 0x0323);
 
3689
        }
 
3690
        else if (character == 0x1EA2) {
 
3691
            sb.append((char) 0x0041);
 
3692
            sb.append((char) 0x0309);
 
3693
        }
 
3694
        else if (character == 0x1EA3) {
 
3695
            sb.append((char) 0x0061);
 
3696
            sb.append((char) 0x0309);
 
3697
        }
 
3698
        else if (character == 0x1EA4) {
 
3699
            sb.append((char) 0x00C2);
 
3700
            sb.append((char) 0x0301);
 
3701
        }
 
3702
        else if (character == 0x1EA5) {
 
3703
            sb.append((char) 0x00E2);
 
3704
            sb.append((char) 0x0301);
 
3705
        }
 
3706
        else if (character == 0x1EA6) {
 
3707
            sb.append((char) 0x00C2);
 
3708
            sb.append((char) 0x0300);
 
3709
        }
 
3710
        else if (character == 0x1EA7) {
 
3711
            sb.append((char) 0x00E2);
 
3712
            sb.append((char) 0x0300);
 
3713
        }
 
3714
        else if (character == 0x1EA8) {
 
3715
            sb.append((char) 0x00C2);
 
3716
            sb.append((char) 0x0309);
 
3717
        }
 
3718
        else if (character == 0x1EA9) {
 
3719
            sb.append((char) 0x00E2);
 
3720
            sb.append((char) 0x0309);
 
3721
        }
 
3722
        else if (character == 0x1EAA) {
 
3723
            sb.append((char) 0x00C2);
 
3724
            sb.append((char) 0x0303);
 
3725
        }
 
3726
        else if (character == 0x1EAB) {
 
3727
            sb.append((char) 0x00E2);
 
3728
            sb.append((char) 0x0303);
 
3729
        }
 
3730
        else if (character == 0x1EAC) {
 
3731
            sb.append((char) 0x1EA0);
 
3732
            sb.append((char) 0x0302);
 
3733
        }
 
3734
        else if (character == 0x1EAD) {
 
3735
            sb.append((char) 0x1EA1);
 
3736
            sb.append((char) 0x0302);
 
3737
        }
 
3738
        else if (character == 0x1EAE) {
 
3739
            sb.append((char) 0x0102);
 
3740
            sb.append((char) 0x0301);
 
3741
        }
 
3742
        else if (character == 0x1EAF) {
 
3743
            sb.append((char) 0x0103);
 
3744
            sb.append((char) 0x0301);
 
3745
        }
 
3746
        else if (character == 0x1EB0) {
 
3747
            sb.append((char) 0x0102);
 
3748
            sb.append((char) 0x0300);
 
3749
        }
 
3750
        else if (character == 0x1EB1) {
 
3751
            sb.append((char) 0x0103);
 
3752
            sb.append((char) 0x0300);
 
3753
        }
 
3754
        else if (character == 0x1EB2) {
 
3755
            sb.append((char) 0x0102);
 
3756
            sb.append((char) 0x0309);
 
3757
        }
 
3758
        else if (character == 0x1EB3) {
 
3759
            sb.append((char) 0x0103);
 
3760
            sb.append((char) 0x0309);
 
3761
        }
 
3762
        else if (character == 0x1EB4) {
 
3763
            sb.append((char) 0x0102);
 
3764
            sb.append((char) 0x0303);
 
3765
        }
 
3766
        else if (character == 0x1EB5) {
 
3767
            sb.append((char) 0x0103);
 
3768
            sb.append((char) 0x0303);
 
3769
        }
 
3770
        else if (character == 0x1EB6) {
 
3771
            sb.append((char) 0x1EA0);
 
3772
            sb.append((char) 0x0306);
 
3773
        }
 
3774
        else if (character == 0x1EB7) {
 
3775
            sb.append((char) 0x1EA1);
 
3776
            sb.append((char) 0x0306);
 
3777
        }
 
3778
        else if (character == 0x1EB8) {
 
3779
            sb.append((char) 0x0045);
 
3780
            sb.append((char) 0x0323);
 
3781
        }
 
3782
        else if (character == 0x1EB9) {
 
3783
            sb.append((char) 0x0065);
 
3784
            sb.append((char) 0x0323);
 
3785
        }
 
3786
        else if (character == 0x1EBA) {
 
3787
            sb.append((char) 0x0045);
 
3788
            sb.append((char) 0x0309);
 
3789
        }
 
3790
        else if (character == 0x1EBB) {
 
3791
            sb.append((char) 0x0065);
 
3792
            sb.append((char) 0x0309);
 
3793
        }
 
3794
        else if (character == 0x1EBC) {
 
3795
            sb.append((char) 0x0045);
 
3796
            sb.append((char) 0x0303);
 
3797
        }
 
3798
        else if (character == 0x1EBD) {
 
3799
            sb.append((char) 0x0065);
 
3800
            sb.append((char) 0x0303);
 
3801
        }
 
3802
        else if (character == 0x1EBE) {
 
3803
            sb.append((char) 0x00CA);
 
3804
            sb.append((char) 0x0301);
 
3805
        }
 
3806
        else if (character == 0x1EBF) {
 
3807
            sb.append((char) 0x00EA);
 
3808
            sb.append((char) 0x0301);
 
3809
        }
 
3810
        else if (character == 0x1EC0) {
 
3811
            sb.append((char) 0x00CA);
 
3812
            sb.append((char) 0x0300);
 
3813
        }
 
3814
        else if (character == 0x1EC1) {
 
3815
            sb.append((char) 0x00EA);
 
3816
            sb.append((char) 0x0300);
 
3817
        }
 
3818
        else if (character == 0x1EC2) {
 
3819
            sb.append((char) 0x00CA);
 
3820
            sb.append((char) 0x0309);
 
3821
        }
 
3822
        else if (character == 0x1EC3) {
 
3823
            sb.append((char) 0x00EA);
 
3824
            sb.append((char) 0x0309);
 
3825
        }
 
3826
        else if (character == 0x1EC4) {
 
3827
            sb.append((char) 0x00CA);
 
3828
            sb.append((char) 0x0303);
 
3829
        }
 
3830
        else if (character == 0x1EC5) {
 
3831
            sb.append((char) 0x00EA);
 
3832
            sb.append((char) 0x0303);
 
3833
        }
 
3834
        else if (character == 0x1EC6) {
 
3835
            sb.append((char) 0x1EB8);
 
3836
            sb.append((char) 0x0302);
 
3837
        }
 
3838
        else if (character == 0x1EC7) {
 
3839
            sb.append((char) 0x1EB9);
 
3840
            sb.append((char) 0x0302);
 
3841
        }
 
3842
        else if (character == 0x1EC8) {
 
3843
            sb.append((char) 0x0049);
 
3844
            sb.append((char) 0x0309);
 
3845
        }
 
3846
        else if (character == 0x1EC9) {
 
3847
            sb.append((char) 0x0069);
 
3848
            sb.append((char) 0x0309);
 
3849
        }
 
3850
        else if (character == 0x1ECA) {
 
3851
            sb.append((char) 0x0049);
 
3852
            sb.append((char) 0x0323);
 
3853
        }
 
3854
        else if (character == 0x1ECB) {
 
3855
            sb.append((char) 0x0069);
 
3856
            sb.append((char) 0x0323);
 
3857
        }
 
3858
        else if (character == 0x1ECC) {
 
3859
            sb.append((char) 0x004F);
 
3860
            sb.append((char) 0x0323);
 
3861
        }
 
3862
        else if (character == 0x1ECD) {
 
3863
            sb.append((char) 0x006F);
 
3864
            sb.append((char) 0x0323);
 
3865
        }
 
3866
        else if (character == 0x1ECE) {
 
3867
            sb.append((char) 0x004F);
 
3868
            sb.append((char) 0x0309);
 
3869
        }
 
3870
        else if (character == 0x1ECF) {
 
3871
            sb.append((char) 0x006F);
 
3872
            sb.append((char) 0x0309);
 
3873
        }
 
3874
        else if (character == 0x1ED0) {
 
3875
            sb.append((char) 0x00D4);
 
3876
            sb.append((char) 0x0301);
 
3877
        }
 
3878
        else if (character == 0x1ED1) {
 
3879
            sb.append((char) 0x00F4);
 
3880
            sb.append((char) 0x0301);
 
3881
        }
 
3882
        else if (character == 0x1ED2) {
 
3883
            sb.append((char) 0x00D4);
 
3884
            sb.append((char) 0x0300);
 
3885
        }
 
3886
        else if (character == 0x1ED3) {
 
3887
            sb.append((char) 0x00F4);
 
3888
            sb.append((char) 0x0300);
 
3889
        }
 
3890
        else if (character == 0x1ED4) {
 
3891
            sb.append((char) 0x00D4);
 
3892
            sb.append((char) 0x0309);
 
3893
        }
 
3894
        else if (character == 0x1ED5) {
 
3895
            sb.append((char) 0x00F4);
 
3896
            sb.append((char) 0x0309);
 
3897
        }
 
3898
        else if (character == 0x1ED6) {
 
3899
            sb.append((char) 0x00D4);
 
3900
            sb.append((char) 0x0303);
 
3901
        }
 
3902
        else if (character == 0x1ED7) {
 
3903
            sb.append((char) 0x00F4);
 
3904
            sb.append((char) 0x0303);
 
3905
        }
 
3906
        else if (character == 0x1ED8) {
 
3907
            sb.append((char) 0x1ECC);
 
3908
            sb.append((char) 0x0302);
 
3909
        }
 
3910
        else if (character == 0x1ED9) {
 
3911
            sb.append((char) 0x1ECD);
 
3912
            sb.append((char) 0x0302);
 
3913
        }
 
3914
        else if (character == 0x1EDA) {
 
3915
            sb.append((char) 0x01A0);
 
3916
            sb.append((char) 0x0301);
 
3917
        }
 
3918
        else if (character == 0x1EDB) {
 
3919
            sb.append((char) 0x01A1);
 
3920
            sb.append((char) 0x0301);
 
3921
        }
 
3922
        else if (character == 0x1EDC) {
 
3923
            sb.append((char) 0x01A0);
 
3924
            sb.append((char) 0x0300);
 
3925
        }
 
3926
        else if (character == 0x1EDD) {
 
3927
            sb.append((char) 0x01A1);
 
3928
            sb.append((char) 0x0300);
 
3929
        }
 
3930
        else if (character == 0x1EDE) {
 
3931
            sb.append((char) 0x01A0);
 
3932
            sb.append((char) 0x0309);
 
3933
        }
 
3934
        else if (character == 0x1EDF) {
 
3935
            sb.append((char) 0x01A1);
 
3936
            sb.append((char) 0x0309);
 
3937
        }
 
3938
        else if (character == 0x1EE0) {
 
3939
            sb.append((char) 0x01A0);
 
3940
            sb.append((char) 0x0303);
 
3941
        }
 
3942
        else if (character == 0x1EE1) {
 
3943
            sb.append((char) 0x01A1);
 
3944
            sb.append((char) 0x0303);
 
3945
        }
 
3946
        else if (character == 0x1EE2) {
 
3947
            sb.append((char) 0x01A0);
 
3948
            sb.append((char) 0x0323);
 
3949
        }
 
3950
        else if (character == 0x1EE3) {
 
3951
            sb.append((char) 0x01A1);
 
3952
            sb.append((char) 0x0323);
 
3953
        }
 
3954
        else if (character == 0x1EE4) {
 
3955
            sb.append((char) 0x0055);
 
3956
            sb.append((char) 0x0323);
 
3957
        }
 
3958
        else if (character == 0x1EE5) {
 
3959
            sb.append((char) 0x0075);
 
3960
            sb.append((char) 0x0323);
 
3961
        }
 
3962
        else if (character == 0x1EE6) {
 
3963
            sb.append((char) 0x0055);
 
3964
            sb.append((char) 0x0309);
 
3965
        }
 
3966
        else if (character == 0x1EE7) {
 
3967
            sb.append((char) 0x0075);
 
3968
            sb.append((char) 0x0309);
 
3969
        }
 
3970
        else if (character == 0x1EE8) {
 
3971
            sb.append((char) 0x01AF);
 
3972
            sb.append((char) 0x0301);
 
3973
        }
 
3974
        else if (character == 0x1EE9) {
 
3975
            sb.append((char) 0x01B0);
 
3976
            sb.append((char) 0x0301);
 
3977
        }
 
3978
        else if (character == 0x1EEA) {
 
3979
            sb.append((char) 0x01AF);
 
3980
            sb.append((char) 0x0300);
 
3981
        }
 
3982
        else if (character == 0x1EEB) {
 
3983
            sb.append((char) 0x01B0);
 
3984
            sb.append((char) 0x0300);
 
3985
        }
 
3986
        else if (character == 0x1EEC) {
 
3987
            sb.append((char) 0x01AF);
 
3988
            sb.append((char) 0x0309);
 
3989
        }
 
3990
        else if (character == 0x1EED) {
 
3991
            sb.append((char) 0x01B0);
 
3992
            sb.append((char) 0x0309);
 
3993
        }
 
3994
        else if (character == 0x1EEE) {
 
3995
            sb.append((char) 0x01AF);
 
3996
            sb.append((char) 0x0303);
 
3997
        }
 
3998
        else if (character == 0x1EEF) {
 
3999
            sb.append((char) 0x01B0);
 
4000
            sb.append((char) 0x0303);
 
4001
        }
 
4002
        else if (character == 0x1EF0) {
 
4003
            sb.append((char) 0x01AF);
 
4004
            sb.append((char) 0x0323);
 
4005
        }
 
4006
        else if (character == 0x1EF1) {
 
4007
            sb.append((char) 0x01B0);
 
4008
            sb.append((char) 0x0323);
 
4009
        }
 
4010
        else if (character == 0x1EF2) {
 
4011
            sb.append((char) 0x0059);
 
4012
            sb.append((char) 0x0300);
 
4013
        }
 
4014
        else if (character == 0x1EF3) {
 
4015
            sb.append((char) 0x0079);
 
4016
            sb.append((char) 0x0300);
 
4017
        }
 
4018
        else if (character == 0x1EF4) {
 
4019
            sb.append((char) 0x0059);
 
4020
            sb.append((char) 0x0323);
 
4021
        }
 
4022
        else if (character == 0x1EF5) {
 
4023
            sb.append((char) 0x0079);
 
4024
            sb.append((char) 0x0323);
 
4025
        }
 
4026
        else if (character == 0x1EF6) {
 
4027
            sb.append((char) 0x0059);
 
4028
            sb.append((char) 0x0309);
 
4029
        }
 
4030
        else if (character == 0x1EF7) {
 
4031
            sb.append((char) 0x0079);
 
4032
            sb.append((char) 0x0309);
 
4033
        }
 
4034
        else if (character == 0x1EF8) {
 
4035
            sb.append((char) 0x0059);
 
4036
            sb.append((char) 0x0303);
 
4037
        }
 
4038
        else if (character == 0x1EF9) {
 
4039
            sb.append((char) 0x0079);
 
4040
            sb.append((char) 0x0303);
 
4041
        }
 
4042
        else if (character == 0x1F00) {
 
4043
            sb.append((char) 0x03B1);
 
4044
            sb.append((char) 0x0313);
 
4045
        }
 
4046
        else if (character == 0x1F01) {
 
4047
            sb.append((char) 0x03B1);
 
4048
            sb.append((char) 0x0314);
 
4049
        }
 
4050
        else if (character == 0x1F02) {
 
4051
            sb.append((char) 0x1F00);
 
4052
            sb.append((char) 0x0300);
 
4053
        }
 
4054
        else if (character == 0x1F03) {
 
4055
            sb.append((char) 0x1F01);
 
4056
            sb.append((char) 0x0300);
 
4057
        }
 
4058
        else if (character == 0x1F04) {
 
4059
            sb.append((char) 0x1F00);
 
4060
            sb.append((char) 0x0301);
 
4061
        }
 
4062
        else if (character == 0x1F05) {
 
4063
            sb.append((char) 0x1F01);
 
4064
            sb.append((char) 0x0301);
 
4065
        }
 
4066
        else if (character == 0x1F06) {
 
4067
            sb.append((char) 0x1F00);
 
4068
            sb.append((char) 0x0342);
 
4069
        }
 
4070
        else if (character == 0x1F07) {
 
4071
            sb.append((char) 0x1F01);
 
4072
            sb.append((char) 0x0342);
 
4073
        }
 
4074
        else if (character == 0x1F08) {
 
4075
            sb.append((char) 0x0391);
 
4076
            sb.append((char) 0x0313);
 
4077
        }
 
4078
        else if (character == 0x1F09) {
 
4079
            sb.append((char) 0x0391);
 
4080
            sb.append((char) 0x0314);
 
4081
        }
 
4082
        else if (character == 0x1F0A) {
 
4083
            sb.append((char) 0x1F08);
 
4084
            sb.append((char) 0x0300);
 
4085
        }
 
4086
        else if (character == 0x1F0B) {
 
4087
            sb.append((char) 0x1F09);
 
4088
            sb.append((char) 0x0300);
 
4089
        }
 
4090
        else if (character == 0x1F0C) {
 
4091
            sb.append((char) 0x1F08);
 
4092
            sb.append((char) 0x0301);
 
4093
        }
 
4094
        else if (character == 0x1F0D) {
 
4095
            sb.append((char) 0x1F09);
 
4096
            sb.append((char) 0x0301);
 
4097
        }
 
4098
        else if (character == 0x1F0E) {
 
4099
            sb.append((char) 0x1F08);
 
4100
            sb.append((char) 0x0342);
 
4101
        }
 
4102
        else if (character == 0x1F0F) {
 
4103
            sb.append((char) 0x1F09);
 
4104
            sb.append((char) 0x0342);
 
4105
        }
 
4106
        else if (character == 0x1F10) {
 
4107
            sb.append((char) 0x03B5);
 
4108
            sb.append((char) 0x0313);
 
4109
        }
 
4110
        else if (character == 0x1F11) {
 
4111
            sb.append((char) 0x03B5);
 
4112
            sb.append((char) 0x0314);
 
4113
        }
 
4114
        else if (character == 0x1F12) {
 
4115
            sb.append((char) 0x1F10);
 
4116
            sb.append((char) 0x0300);
 
4117
        }
 
4118
        else if (character == 0x1F13) {
 
4119
            sb.append((char) 0x1F11);
 
4120
            sb.append((char) 0x0300);
 
4121
        }
 
4122
        else if (character == 0x1F14) {
 
4123
            sb.append((char) 0x1F10);
 
4124
            sb.append((char) 0x0301);
 
4125
        }
 
4126
        else if (character == 0x1F15) {
 
4127
            sb.append((char) 0x1F11);
 
4128
            sb.append((char) 0x0301);
 
4129
        }
 
4130
        else if (character == 0x1F18) {
 
4131
            sb.append((char) 0x0395);
 
4132
            sb.append((char) 0x0313);
 
4133
        }
 
4134
        else if (character == 0x1F19) {
 
4135
            sb.append((char) 0x0395);
 
4136
            sb.append((char) 0x0314);
 
4137
        }
 
4138
        else if (character == 0x1F1A) {
 
4139
            sb.append((char) 0x1F18);
 
4140
            sb.append((char) 0x0300);
 
4141
        }
 
4142
        else if (character == 0x1F1B) {
 
4143
            sb.append((char) 0x1F19);
 
4144
            sb.append((char) 0x0300);
 
4145
        }
 
4146
        else if (character == 0x1F1C) {
 
4147
            sb.append((char) 0x1F18);
 
4148
            sb.append((char) 0x0301);
 
4149
        }
 
4150
        else if (character == 0x1F1D) {
 
4151
            sb.append((char) 0x1F19);
 
4152
            sb.append((char) 0x0301);
 
4153
        }
 
4154
        else if (character == 0x1F20) {
 
4155
            sb.append((char) 0x03B7);
 
4156
            sb.append((char) 0x0313);
 
4157
        }
 
4158
        else if (character == 0x1F21) {
 
4159
            sb.append((char) 0x03B7);
 
4160
            sb.append((char) 0x0314);
 
4161
        }
 
4162
        else if (character == 0x1F22) {
 
4163
            sb.append((char) 0x1F20);
 
4164
            sb.append((char) 0x0300);
 
4165
        }
 
4166
        else if (character == 0x1F23) {
 
4167
            sb.append((char) 0x1F21);
 
4168
            sb.append((char) 0x0300);
 
4169
        }
 
4170
        else if (character == 0x1F24) {
 
4171
            sb.append((char) 0x1F20);
 
4172
            sb.append((char) 0x0301);
 
4173
        }
 
4174
        else if (character == 0x1F25) {
 
4175
            sb.append((char) 0x1F21);
 
4176
            sb.append((char) 0x0301);
 
4177
        }
 
4178
        else if (character == 0x1F26) {
 
4179
            sb.append((char) 0x1F20);
 
4180
            sb.append((char) 0x0342);
 
4181
        }
 
4182
        else if (character == 0x1F27) {
 
4183
            sb.append((char) 0x1F21);
 
4184
            sb.append((char) 0x0342);
 
4185
        }
 
4186
        else if (character == 0x1F28) {
 
4187
            sb.append((char) 0x0397);
 
4188
            sb.append((char) 0x0313);
 
4189
        }
 
4190
        else if (character == 0x1F29) {
 
4191
            sb.append((char) 0x0397);
 
4192
            sb.append((char) 0x0314);
 
4193
        }
 
4194
        else if (character == 0x1F2A) {
 
4195
            sb.append((char) 0x1F28);
 
4196
            sb.append((char) 0x0300);
 
4197
        }
 
4198
        else if (character == 0x1F2B) {
 
4199
            sb.append((char) 0x1F29);
 
4200
            sb.append((char) 0x0300);
 
4201
        }
 
4202
        else if (character == 0x1F2C) {
 
4203
            sb.append((char) 0x1F28);
 
4204
            sb.append((char) 0x0301);
 
4205
        }
 
4206
        else if (character == 0x1F2D) {
 
4207
            sb.append((char) 0x1F29);
 
4208
            sb.append((char) 0x0301);
 
4209
        }
 
4210
        else if (character == 0x1F2E) {
 
4211
            sb.append((char) 0x1F28);
 
4212
            sb.append((char) 0x0342);
 
4213
        }
 
4214
        else if (character == 0x1F2F) {
 
4215
            sb.append((char) 0x1F29);
 
4216
            sb.append((char) 0x0342);
 
4217
        }
 
4218
        else if (character == 0x1F30) {
 
4219
            sb.append((char) 0x03B9);
 
4220
            sb.append((char) 0x0313);
 
4221
        }
 
4222
        else if (character == 0x1F31) {
 
4223
            sb.append((char) 0x03B9);
 
4224
            sb.append((char) 0x0314);
 
4225
        }
 
4226
        else if (character == 0x1F32) {
 
4227
            sb.append((char) 0x1F30);
 
4228
            sb.append((char) 0x0300);
 
4229
        }
 
4230
        else if (character == 0x1F33) {
 
4231
            sb.append((char) 0x1F31);
 
4232
            sb.append((char) 0x0300);
 
4233
        }
 
4234
        else if (character == 0x1F34) {
 
4235
            sb.append((char) 0x1F30);
 
4236
            sb.append((char) 0x0301);
 
4237
        }
 
4238
        else if (character == 0x1F35) {
 
4239
            sb.append((char) 0x1F31);
 
4240
            sb.append((char) 0x0301);
 
4241
        }
 
4242
        else if (character == 0x1F36) {
 
4243
            sb.append((char) 0x1F30);
 
4244
            sb.append((char) 0x0342);
 
4245
        }
 
4246
        else if (character == 0x1F37) {
 
4247
            sb.append((char) 0x1F31);
 
4248
            sb.append((char) 0x0342);
 
4249
        }
 
4250
        else if (character == 0x1F38) {
 
4251
            sb.append((char) 0x0399);
 
4252
            sb.append((char) 0x0313);
 
4253
        }
 
4254
        else if (character == 0x1F39) {
 
4255
            sb.append((char) 0x0399);
 
4256
            sb.append((char) 0x0314);
 
4257
        }
 
4258
        else if (character == 0x1F3A) {
 
4259
            sb.append((char) 0x1F38);
 
4260
            sb.append((char) 0x0300);
 
4261
        }
 
4262
        else if (character == 0x1F3B) {
 
4263
            sb.append((char) 0x1F39);
 
4264
            sb.append((char) 0x0300);
 
4265
        }
 
4266
        else if (character == 0x1F3C) {
 
4267
            sb.append((char) 0x1F38);
 
4268
            sb.append((char) 0x0301);
 
4269
        }
 
4270
        else if (character == 0x1F3D) {
 
4271
            sb.append((char) 0x1F39);
 
4272
            sb.append((char) 0x0301);
 
4273
        }
 
4274
        else if (character == 0x1F3E) {
 
4275
            sb.append((char) 0x1F38);
 
4276
            sb.append((char) 0x0342);
 
4277
        }
 
4278
        else if (character == 0x1F3F) {
 
4279
            sb.append((char) 0x1F39);
 
4280
            sb.append((char) 0x0342);
 
4281
        }
 
4282
        else if (character == 0x1F40) {
 
4283
            sb.append((char) 0x03BF);
 
4284
            sb.append((char) 0x0313);
 
4285
        }
 
4286
        else if (character == 0x1F41) {
 
4287
            sb.append((char) 0x03BF);
 
4288
            sb.append((char) 0x0314);
 
4289
        }
 
4290
        else if (character == 0x1F42) {
 
4291
            sb.append((char) 0x1F40);
 
4292
            sb.append((char) 0x0300);
 
4293
        }
 
4294
        else if (character == 0x1F43) {
 
4295
            sb.append((char) 0x1F41);
 
4296
            sb.append((char) 0x0300);
 
4297
        }
 
4298
        else if (character == 0x1F44) {
 
4299
            sb.append((char) 0x1F40);
 
4300
            sb.append((char) 0x0301);
 
4301
        }
 
4302
        else if (character == 0x1F45) {
 
4303
            sb.append((char) 0x1F41);
 
4304
            sb.append((char) 0x0301);
 
4305
        }
 
4306
        else if (character == 0x1F48) {
 
4307
            sb.append((char) 0x039F);
 
4308
            sb.append((char) 0x0313);
 
4309
        }
 
4310
        else if (character == 0x1F49) {
 
4311
            sb.append((char) 0x039F);
 
4312
            sb.append((char) 0x0314);
 
4313
        }
 
4314
        else if (character == 0x1F4A) {
 
4315
            sb.append((char) 0x1F48);
 
4316
            sb.append((char) 0x0300);
 
4317
        }
 
4318
        else if (character == 0x1F4B) {
 
4319
            sb.append((char) 0x1F49);
 
4320
            sb.append((char) 0x0300);
 
4321
        }
 
4322
        else if (character == 0x1F4C) {
 
4323
            sb.append((char) 0x1F48);
 
4324
            sb.append((char) 0x0301);
 
4325
        }
 
4326
        else if (character == 0x1F4D) {
 
4327
            sb.append((char) 0x1F49);
 
4328
            sb.append((char) 0x0301);
 
4329
        }
 
4330
        else if (character == 0x1F50) {
 
4331
            sb.append((char) 0x03C5);
 
4332
            sb.append((char) 0x0313);
 
4333
        }
 
4334
        else if (character == 0x1F51) {
 
4335
            sb.append((char) 0x03C5);
 
4336
            sb.append((char) 0x0314);
 
4337
        }
 
4338
        else if (character == 0x1F52) {
 
4339
            sb.append((char) 0x1F50);
 
4340
            sb.append((char) 0x0300);
 
4341
        }
 
4342
        else if (character == 0x1F53) {
 
4343
            sb.append((char) 0x1F51);
 
4344
            sb.append((char) 0x0300);
 
4345
        }
 
4346
        else if (character == 0x1F54) {
 
4347
            sb.append((char) 0x1F50);
 
4348
            sb.append((char) 0x0301);
 
4349
        }
 
4350
        else if (character == 0x1F55) {
 
4351
            sb.append((char) 0x1F51);
 
4352
            sb.append((char) 0x0301);
 
4353
        }
 
4354
        else if (character == 0x1F56) {
 
4355
            sb.append((char) 0x1F50);
 
4356
            sb.append((char) 0x0342);
 
4357
        }
 
4358
        else if (character == 0x1F57) {
 
4359
            sb.append((char) 0x1F51);
 
4360
            sb.append((char) 0x0342);
 
4361
        }
 
4362
        else if (character == 0x1F59) {
 
4363
            sb.append((char) 0x03A5);
 
4364
            sb.append((char) 0x0314);
 
4365
        }
 
4366
        else if (character == 0x1F5B) {
 
4367
            sb.append((char) 0x1F59);
 
4368
            sb.append((char) 0x0300);
 
4369
        }
 
4370
        else if (character == 0x1F5D) {
 
4371
            sb.append((char) 0x1F59);
 
4372
            sb.append((char) 0x0301);
 
4373
        }
 
4374
        else if (character == 0x1F5F) {
 
4375
            sb.append((char) 0x1F59);
 
4376
            sb.append((char) 0x0342);
 
4377
        }
 
4378
        else if (character == 0x1F60) {
 
4379
            sb.append((char) 0x03C9);
 
4380
            sb.append((char) 0x0313);
 
4381
        }
 
4382
        else if (character == 0x1F61) {
 
4383
            sb.append((char) 0x03C9);
 
4384
            sb.append((char) 0x0314);
 
4385
        }
 
4386
        else if (character == 0x1F62) {
 
4387
            sb.append((char) 0x1F60);
 
4388
            sb.append((char) 0x0300);
 
4389
        }
 
4390
        else if (character == 0x1F63) {
 
4391
            sb.append((char) 0x1F61);
 
4392
            sb.append((char) 0x0300);
 
4393
        }
 
4394
        else if (character == 0x1F64) {
 
4395
            sb.append((char) 0x1F60);
 
4396
            sb.append((char) 0x0301);
 
4397
        }
 
4398
        else if (character == 0x1F65) {
 
4399
            sb.append((char) 0x1F61);
 
4400
            sb.append((char) 0x0301);
 
4401
        }
 
4402
        else if (character == 0x1F66) {
 
4403
            sb.append((char) 0x1F60);
 
4404
            sb.append((char) 0x0342);
 
4405
        }
 
4406
        else if (character == 0x1F67) {
 
4407
            sb.append((char) 0x1F61);
 
4408
            sb.append((char) 0x0342);
 
4409
        }
 
4410
        else if (character == 0x1F68) {
 
4411
            sb.append((char) 0x03A9);
 
4412
            sb.append((char) 0x0313);
 
4413
        }
 
4414
        else if (character == 0x1F69) {
 
4415
            sb.append((char) 0x03A9);
 
4416
            sb.append((char) 0x0314);
 
4417
        }
 
4418
        else if (character == 0x1F6A) {
 
4419
            sb.append((char) 0x1F68);
 
4420
            sb.append((char) 0x0300);
 
4421
        }
 
4422
        else if (character == 0x1F6B) {
 
4423
            sb.append((char) 0x1F69);
 
4424
            sb.append((char) 0x0300);
 
4425
        }
 
4426
        else if (character == 0x1F6C) {
 
4427
            sb.append((char) 0x1F68);
 
4428
            sb.append((char) 0x0301);
 
4429
        }
 
4430
        else if (character == 0x1F6D) {
 
4431
            sb.append((char) 0x1F69);
 
4432
            sb.append((char) 0x0301);
 
4433
        }
 
4434
        else if (character == 0x1F6E) {
 
4435
            sb.append((char) 0x1F68);
 
4436
            sb.append((char) 0x0342);
 
4437
        }
 
4438
        else if (character == 0x1F6F) {
 
4439
            sb.append((char) 0x1F69);
 
4440
            sb.append((char) 0x0342);
 
4441
        }
 
4442
        else if (character == 0x1F70) {
 
4443
            sb.append((char) 0x03B1);
 
4444
            sb.append((char) 0x0300);
 
4445
        }
 
4446
        else if (character == 0x1F71) {
 
4447
            sb.append((char) 0x03AC);
 
4448
        }
 
4449
        else if (character == 0x1F72) {
 
4450
            sb.append((char) 0x03B5);
 
4451
            sb.append((char) 0x0300);
 
4452
        }
 
4453
        else if (character == 0x1F73) {
 
4454
            sb.append((char) 0x03AD);
 
4455
        }
 
4456
        else if (character == 0x1F74) {
 
4457
            sb.append((char) 0x03B7);
 
4458
            sb.append((char) 0x0300);
 
4459
        }
 
4460
        else if (character == 0x1F75) {
 
4461
            sb.append((char) 0x03AE);
 
4462
        }
 
4463
        else if (character == 0x1F76) {
 
4464
            sb.append((char) 0x03B9);
 
4465
            sb.append((char) 0x0300);
 
4466
        }
 
4467
        else if (character == 0x1F77) {
 
4468
            sb.append((char) 0x03AF);
 
4469
        }
 
4470
        else if (character == 0x1F78) {
 
4471
            sb.append((char) 0x03BF);
 
4472
            sb.append((char) 0x0300);
 
4473
        }
 
4474
        else if (character == 0x1F79) {
 
4475
            sb.append((char) 0x03CC);
 
4476
        }
 
4477
        else if (character == 0x1F7A) {
 
4478
            sb.append((char) 0x03C5);
 
4479
            sb.append((char) 0x0300);
 
4480
        }
 
4481
        else if (character == 0x1F7B) {
 
4482
            sb.append((char) 0x03CD);
 
4483
        }
 
4484
        else if (character == 0x1F7C) {
 
4485
            sb.append((char) 0x03C9);
 
4486
            sb.append((char) 0x0300);
 
4487
        }
 
4488
        else if (character == 0x1F7D) {
 
4489
            sb.append((char) 0x03CE);
 
4490
        }
 
4491
        else if (character == 0x1F80) {
 
4492
            sb.append((char) 0x1F00);
 
4493
            sb.append((char) 0x0345);
 
4494
        }
 
4495
        else if (character == 0x1F81) {
 
4496
            sb.append((char) 0x1F01);
 
4497
            sb.append((char) 0x0345);
 
4498
        }
 
4499
        else if (character == 0x1F82) {
 
4500
            sb.append((char) 0x1F02);
 
4501
            sb.append((char) 0x0345);
 
4502
        }
 
4503
        else if (character == 0x1F83) {
 
4504
            sb.append((char) 0x1F03);
 
4505
            sb.append((char) 0x0345);
 
4506
        }
 
4507
        else if (character == 0x1F84) {
 
4508
            sb.append((char) 0x1F04);
 
4509
            sb.append((char) 0x0345);
 
4510
        }
 
4511
        else if (character == 0x1F85) {
 
4512
            sb.append((char) 0x1F05);
 
4513
            sb.append((char) 0x0345);
 
4514
        }
 
4515
        else if (character == 0x1F86) {
 
4516
            sb.append((char) 0x1F06);
 
4517
            sb.append((char) 0x0345);
 
4518
        }
 
4519
        else if (character == 0x1F87) {
 
4520
            sb.append((char) 0x1F07);
 
4521
            sb.append((char) 0x0345);
 
4522
        }
 
4523
        else if (character == 0x1F88) {
 
4524
            sb.append((char) 0x1F08);
 
4525
            sb.append((char) 0x0345);
 
4526
        }
 
4527
        else if (character == 0x1F89) {
 
4528
            sb.append((char) 0x1F09);
 
4529
            sb.append((char) 0x0345);
 
4530
        }
 
4531
        else if (character == 0x1F8A) {
 
4532
            sb.append((char) 0x1F0A);
 
4533
            sb.append((char) 0x0345);
 
4534
        }
 
4535
        else if (character == 0x1F8B) {
 
4536
            sb.append((char) 0x1F0B);
 
4537
            sb.append((char) 0x0345);
 
4538
        }
 
4539
        else if (character == 0x1F8C) {
 
4540
            sb.append((char) 0x1F0C);
 
4541
            sb.append((char) 0x0345);
 
4542
        }
 
4543
        else if (character == 0x1F8D) {
 
4544
            sb.append((char) 0x1F0D);
 
4545
            sb.append((char) 0x0345);
 
4546
        }
 
4547
        else if (character == 0x1F8E) {
 
4548
            sb.append((char) 0x1F0E);
 
4549
            sb.append((char) 0x0345);
 
4550
        }
 
4551
        else if (character == 0x1F8F) {
 
4552
            sb.append((char) 0x1F0F);
 
4553
            sb.append((char) 0x0345);
 
4554
        }
 
4555
        else if (character == 0x1F90) {
 
4556
            sb.append((char) 0x1F20);
 
4557
            sb.append((char) 0x0345);
 
4558
        }
 
4559
        else if (character == 0x1F91) {
 
4560
            sb.append((char) 0x1F21);
 
4561
            sb.append((char) 0x0345);
 
4562
        }
 
4563
        else if (character == 0x1F92) {
 
4564
            sb.append((char) 0x1F22);
 
4565
            sb.append((char) 0x0345);
 
4566
        }
 
4567
        else if (character == 0x1F93) {
 
4568
            sb.append((char) 0x1F23);
 
4569
            sb.append((char) 0x0345);
 
4570
        }
 
4571
        else if (character == 0x1F94) {
 
4572
            sb.append((char) 0x1F24);
 
4573
            sb.append((char) 0x0345);
 
4574
        }
 
4575
        else if (character == 0x1F95) {
 
4576
            sb.append((char) 0x1F25);
 
4577
            sb.append((char) 0x0345);
 
4578
        }
 
4579
        else if (character == 0x1F96) {
 
4580
            sb.append((char) 0x1F26);
 
4581
            sb.append((char) 0x0345);
 
4582
        }
 
4583
        else if (character == 0x1F97) {
 
4584
            sb.append((char) 0x1F27);
 
4585
            sb.append((char) 0x0345);
 
4586
        }
 
4587
        else if (character == 0x1F98) {
 
4588
            sb.append((char) 0x1F28);
 
4589
            sb.append((char) 0x0345);
 
4590
        }
 
4591
        else if (character == 0x1F99) {
 
4592
            sb.append((char) 0x1F29);
 
4593
            sb.append((char) 0x0345);
 
4594
        }
 
4595
        else if (character == 0x1F9A) {
 
4596
            sb.append((char) 0x1F2A);
 
4597
            sb.append((char) 0x0345);
 
4598
        }
 
4599
        else if (character == 0x1F9B) {
 
4600
            sb.append((char) 0x1F2B);
 
4601
            sb.append((char) 0x0345);
 
4602
        }
 
4603
        else if (character == 0x1F9C) {
 
4604
            sb.append((char) 0x1F2C);
 
4605
            sb.append((char) 0x0345);
 
4606
        }
 
4607
        else if (character == 0x1F9D) {
 
4608
            sb.append((char) 0x1F2D);
 
4609
            sb.append((char) 0x0345);
 
4610
        }
 
4611
        else if (character == 0x1F9E) {
 
4612
            sb.append((char) 0x1F2E);
 
4613
            sb.append((char) 0x0345);
 
4614
        }
 
4615
        else if (character == 0x1F9F) {
 
4616
            sb.append((char) 0x1F2F);
 
4617
            sb.append((char) 0x0345);
 
4618
        }
 
4619
        else if (character == 0x1FA0) {
 
4620
            sb.append((char) 0x1F60);
 
4621
            sb.append((char) 0x0345);
 
4622
        }
 
4623
        else if (character == 0x1FA1) {
 
4624
            sb.append((char) 0x1F61);
 
4625
            sb.append((char) 0x0345);
 
4626
        }
 
4627
        else if (character == 0x1FA2) {
 
4628
            sb.append((char) 0x1F62);
 
4629
            sb.append((char) 0x0345);
 
4630
        }
 
4631
        else if (character == 0x1FA3) {
 
4632
            sb.append((char) 0x1F63);
 
4633
            sb.append((char) 0x0345);
 
4634
        }
 
4635
        else if (character == 0x1FA4) {
 
4636
            sb.append((char) 0x1F64);
 
4637
            sb.append((char) 0x0345);
 
4638
        }
 
4639
        else if (character == 0x1FA5) {
 
4640
            sb.append((char) 0x1F65);
 
4641
            sb.append((char) 0x0345);
 
4642
        }
 
4643
        else if (character == 0x1FA6) {
 
4644
            sb.append((char) 0x1F66);
 
4645
            sb.append((char) 0x0345);
 
4646
        }
 
4647
        else if (character == 0x1FA7) {
 
4648
            sb.append((char) 0x1F67);
 
4649
            sb.append((char) 0x0345);
 
4650
        }
 
4651
        else if (character == 0x1FA8) {
 
4652
            sb.append((char) 0x1F68);
 
4653
            sb.append((char) 0x0345);
 
4654
        }
 
4655
        else if (character == 0x1FA9) {
 
4656
            sb.append((char) 0x1F69);
 
4657
            sb.append((char) 0x0345);
 
4658
        }
 
4659
        else if (character == 0x1FAA) {
 
4660
            sb.append((char) 0x1F6A);
 
4661
            sb.append((char) 0x0345);
 
4662
        }
 
4663
        else if (character == 0x1FAB) {
 
4664
            sb.append((char) 0x1F6B);
 
4665
            sb.append((char) 0x0345);
 
4666
        }
 
4667
        else if (character == 0x1FAC) {
 
4668
            sb.append((char) 0x1F6C);
 
4669
            sb.append((char) 0x0345);
 
4670
        }
 
4671
        else if (character == 0x1FAD) {
 
4672
            sb.append((char) 0x1F6D);
 
4673
            sb.append((char) 0x0345);
 
4674
        }
 
4675
        else if (character == 0x1FAE) {
 
4676
            sb.append((char) 0x1F6E);
 
4677
            sb.append((char) 0x0345);
 
4678
        }
 
4679
        else if (character == 0x1FAF) {
 
4680
            sb.append((char) 0x1F6F);
 
4681
            sb.append((char) 0x0345);
 
4682
        }
 
4683
        else if (character == 0x1FB0) {
 
4684
            sb.append((char) 0x03B1);
 
4685
            sb.append((char) 0x0306);
 
4686
        }
 
4687
        else if (character == 0x1FB1) {
 
4688
            sb.append((char) 0x03B1);
 
4689
            sb.append((char) 0x0304);
 
4690
        }
 
4691
        else if (character == 0x1FB2) {
 
4692
            sb.append((char) 0x1F70);
 
4693
            sb.append((char) 0x0345);
 
4694
        }
 
4695
        else if (character == 0x1FB3) {
 
4696
            sb.append((char) 0x03B1);
 
4697
            sb.append((char) 0x0345);
 
4698
        }
 
4699
        else if (character == 0x1FB4) {
 
4700
            sb.append((char) 0x03AC);
 
4701
            sb.append((char) 0x0345);
 
4702
        }
 
4703
        else if (character == 0x1FB6) {
 
4704
            sb.append((char) 0x03B1);
 
4705
            sb.append((char) 0x0342);
 
4706
        }
 
4707
        else if (character == 0x1FB7) {
 
4708
            sb.append((char) 0x1FB6);
 
4709
            sb.append((char) 0x0345);
 
4710
        }
 
4711
        else if (character == 0x1FB8) {
 
4712
            sb.append((char) 0x0391);
 
4713
            sb.append((char) 0x0306);
 
4714
        }
 
4715
        else if (character == 0x1FB9) {
 
4716
            sb.append((char) 0x0391);
 
4717
            sb.append((char) 0x0304);
 
4718
        }
 
4719
        else if (character == 0x1FBA) {
 
4720
            sb.append((char) 0x0391);
 
4721
            sb.append((char) 0x0300);
 
4722
        }
 
4723
        else if (character == 0x1FBB) {
 
4724
            sb.append((char) 0x0386);
 
4725
        }
 
4726
        else if (character == 0x1FBC) {
 
4727
            sb.append((char) 0x0391);
 
4728
            sb.append((char) 0x0345);
 
4729
        }
 
4730
        else if (character == 0x1FBE) {
 
4731
            sb.append((char) 0x03B9);
 
4732
        }
 
4733
        else if (character == 0x1FC1) {
 
4734
            sb.append((char) 0x00A8);
 
4735
            sb.append((char) 0x0342);
 
4736
        }
 
4737
        else if (character == 0x1FC2) {
 
4738
            sb.append((char) 0x1F74);
 
4739
            sb.append((char) 0x0345);
 
4740
        }
 
4741
        else if (character == 0x1FC3) {
 
4742
            sb.append((char) 0x03B7);
 
4743
            sb.append((char) 0x0345);
 
4744
        }
 
4745
        else if (character == 0x1FC4) {
 
4746
            sb.append((char) 0x03AE);
 
4747
            sb.append((char) 0x0345);
 
4748
        }
 
4749
        else if (character == 0x1FC6) {
 
4750
            sb.append((char) 0x03B7);
 
4751
            sb.append((char) 0x0342);
 
4752
        }
 
4753
        else if (character == 0x1FC7) {
 
4754
            sb.append((char) 0x1FC6);
 
4755
            sb.append((char) 0x0345);
 
4756
        }
 
4757
        else if (character == 0x1FC8) {
 
4758
            sb.append((char) 0x0395);
 
4759
            sb.append((char) 0x0300);
 
4760
        }
 
4761
        else if (character == 0x1FC9) {
 
4762
            sb.append((char) 0x0388);
 
4763
        }
 
4764
        else if (character == 0x1FCA) {
 
4765
            sb.append((char) 0x0397);
 
4766
            sb.append((char) 0x0300);
 
4767
        }
 
4768
        else if (character == 0x1FCB) {
 
4769
            sb.append((char) 0x0389);
 
4770
        }
 
4771
        else if (character == 0x1FCC) {
 
4772
            sb.append((char) 0x0397);
 
4773
            sb.append((char) 0x0345);
 
4774
        }
 
4775
        else if (character == 0x1FCD) {
 
4776
            sb.append((char) 0x1FBF);
 
4777
            sb.append((char) 0x0300);
 
4778
        }
 
4779
        else if (character == 0x1FCE) {
 
4780
            sb.append((char) 0x1FBF);
 
4781
            sb.append((char) 0x0301);
 
4782
        }
 
4783
        else if (character == 0x1FCF) {
 
4784
            sb.append((char) 0x1FBF);
 
4785
            sb.append((char) 0x0342);
 
4786
        }
 
4787
        else if (character == 0x1FD0) {
 
4788
            sb.append((char) 0x03B9);
 
4789
            sb.append((char) 0x0306);
 
4790
        }
 
4791
        else if (character == 0x1FD1) {
 
4792
            sb.append((char) 0x03B9);
 
4793
            sb.append((char) 0x0304);
 
4794
        }
 
4795
        else if (character == 0x1FD2) {
 
4796
            sb.append((char) 0x03CA);
 
4797
            sb.append((char) 0x0300);
 
4798
        }
 
4799
        else if (character == 0x1FD3) {
 
4800
            sb.append((char) 0x0390);
 
4801
        }
 
4802
        else if (character == 0x1FD6) {
 
4803
            sb.append((char) 0x03B9);
 
4804
            sb.append((char) 0x0342);
 
4805
        }
 
4806
        else if (character == 0x1FD7) {
 
4807
            sb.append((char) 0x03CA);
 
4808
            sb.append((char) 0x0342);
 
4809
        }
 
4810
        else if (character == 0x1FD8) {
 
4811
            sb.append((char) 0x0399);
 
4812
            sb.append((char) 0x0306);
 
4813
        }
 
4814
        else if (character == 0x1FD9) {
 
4815
            sb.append((char) 0x0399);
 
4816
            sb.append((char) 0x0304);
 
4817
        }
 
4818
        else if (character == 0x1FDA) {
 
4819
            sb.append((char) 0x0399);
 
4820
            sb.append((char) 0x0300);
 
4821
        }
 
4822
        else if (character == 0x1FDB) {
 
4823
            sb.append((char) 0x038A);
 
4824
        }
 
4825
        else if (character == 0x1FDD) {
 
4826
            sb.append((char) 0x1FFE);
 
4827
            sb.append((char) 0x0300);
 
4828
        }
 
4829
        else if (character == 0x1FDE) {
 
4830
            sb.append((char) 0x1FFE);
 
4831
            sb.append((char) 0x0301);
 
4832
        }
 
4833
        else if (character == 0x1FDF) {
 
4834
            sb.append((char) 0x1FFE);
 
4835
            sb.append((char) 0x0342);
 
4836
        }
 
4837
        else if (character == 0x1FE0) {
 
4838
            sb.append((char) 0x03C5);
 
4839
            sb.append((char) 0x0306);
 
4840
        }
 
4841
        else if (character == 0x1FE1) {
 
4842
            sb.append((char) 0x03C5);
 
4843
            sb.append((char) 0x0304);
 
4844
        }
 
4845
        else if (character == 0x1FE2) {
 
4846
            sb.append((char) 0x03CB);
 
4847
            sb.append((char) 0x0300);
 
4848
        }
 
4849
        else if (character == 0x1FE3) {
 
4850
            sb.append((char) 0x03B0);
 
4851
        }
 
4852
        else if (character == 0x1FE4) {
 
4853
            sb.append((char) 0x03C1);
 
4854
            sb.append((char) 0x0313);
 
4855
        }
 
4856
        else if (character == 0x1FE5) {
 
4857
            sb.append((char) 0x03C1);
 
4858
            sb.append((char) 0x0314);
 
4859
        }
 
4860
        else if (character == 0x1FE6) {
 
4861
            sb.append((char) 0x03C5);
 
4862
            sb.append((char) 0x0342);
 
4863
        }
 
4864
        else if (character == 0x1FE7) {
 
4865
            sb.append((char) 0x03CB);
 
4866
            sb.append((char) 0x0342);
 
4867
        }
 
4868
        else if (character == 0x1FE8) {
 
4869
            sb.append((char) 0x03A5);
 
4870
            sb.append((char) 0x0306);
 
4871
        }
 
4872
        else if (character == 0x1FE9) {
 
4873
            sb.append((char) 0x03A5);
 
4874
            sb.append((char) 0x0304);
 
4875
        }
 
4876
        else if (character == 0x1FEA) {
 
4877
            sb.append((char) 0x03A5);
 
4878
            sb.append((char) 0x0300);
 
4879
        }
 
4880
        else if (character == 0x1FEB) {
 
4881
            sb.append((char) 0x038E);
 
4882
        }
 
4883
        else if (character == 0x1FEC) {
 
4884
            sb.append((char) 0x03A1);
 
4885
            sb.append((char) 0x0314);
 
4886
        }
 
4887
        else if (character == 0x1FED) {
 
4888
            sb.append((char) 0x00A8);
 
4889
            sb.append((char) 0x0300);
 
4890
        }
 
4891
        else if (character == 0x1FEE) {
 
4892
            sb.append((char) 0x0385);
 
4893
        }
 
4894
        else if (character == 0x1FEF) {
 
4895
            sb.append((char) 0x0060);
 
4896
        }
 
4897
        else if (character == 0x1FF2) {
 
4898
            sb.append((char) 0x1F7C);
 
4899
            sb.append((char) 0x0345);
 
4900
        }
 
4901
        else if (character == 0x1FF3) {
 
4902
            sb.append((char) 0x03C9);
 
4903
            sb.append((char) 0x0345);
 
4904
        }
 
4905
        else if (character == 0x1FF4) {
 
4906
            sb.append((char) 0x03CE);
 
4907
            sb.append((char) 0x0345);
 
4908
        }
 
4909
        else if (character == 0x1FF6) {
 
4910
            sb.append((char) 0x03C9);
 
4911
            sb.append((char) 0x0342);
 
4912
        }
 
4913
        else if (character == 0x1FF7) {
 
4914
            sb.append((char) 0x1FF6);
 
4915
            sb.append((char) 0x0345);
 
4916
        }
 
4917
        else if (character == 0x1FF8) {
 
4918
            sb.append((char) 0x039F);
 
4919
            sb.append((char) 0x0300);
 
4920
        }
 
4921
        else if (character == 0x1FF9) {
 
4922
            sb.append((char) 0x038C);
 
4923
        }
 
4924
        else if (character == 0x1FFA) {
 
4925
            sb.append((char) 0x03A9);
 
4926
            sb.append((char) 0x0300);
 
4927
        }
 
4928
        else if (character == 0x1FFB) {
 
4929
            sb.append((char) 0x038F);
 
4930
        }
 
4931
        else if (character == 0x1FFC) {
 
4932
            sb.append((char) 0x03A9);
 
4933
            sb.append((char) 0x0345);
 
4934
        }
 
4935
        else if (character == 0x1FFD) {
 
4936
            sb.append((char) 0x00B4);
 
4937
        }
 
4938
        else if (character == 0x2000) {
 
4939
            sb.append((char) 0x2002);
 
4940
        }
 
4941
        else if (character == 0x2001) {
 
4942
            sb.append((char) 0x2003);
 
4943
        }
 
4944
        else if (character == 0x2126) {
 
4945
            sb.append((char) 0x03A9);
 
4946
        }
 
4947
        else if (character == 0x212A) {
 
4948
            sb.append((char) 0x004B);
 
4949
        }
 
4950
        else if (character == 0x212B) {
 
4951
            sb.append((char) 0x00C5);
 
4952
        }
 
4953
        else if (character == 0x219A) {
 
4954
            sb.append((char) 0x2190);
 
4955
            sb.append((char) 0x0338);
 
4956
        }
 
4957
        else if (character == 0x219B) {
 
4958
            sb.append((char) 0x2192);
 
4959
            sb.append((char) 0x0338);
 
4960
        }
 
4961
        else if (character == 0x21AE) {
 
4962
            sb.append((char) 0x2194);
 
4963
            sb.append((char) 0x0338);
 
4964
        }
 
4965
        else if (character == 0x21CD) {
 
4966
            sb.append((char) 0x21D0);
 
4967
            sb.append((char) 0x0338);
 
4968
        }
 
4969
        else if (character == 0x21CE) {
 
4970
            sb.append((char) 0x21D4);
 
4971
            sb.append((char) 0x0338);
 
4972
        }
 
4973
        else if (character == 0x21CF) {
 
4974
            sb.append((char) 0x21D2);
 
4975
            sb.append((char) 0x0338);
 
4976
        }
 
4977
        else if (character == 0x2204) {
 
4978
            sb.append((char) 0x2203);
 
4979
            sb.append((char) 0x0338);
 
4980
        }
 
4981
        else if (character == 0x2209) {
 
4982
            sb.append((char) 0x2208);
 
4983
            sb.append((char) 0x0338);
 
4984
        }
 
4985
        else if (character == 0x220C) {
 
4986
            sb.append((char) 0x220B);
 
4987
            sb.append((char) 0x0338);
 
4988
        }
 
4989
        else if (character == 0x2224) {
 
4990
            sb.append((char) 0x2223);
 
4991
            sb.append((char) 0x0338);
 
4992
        }
 
4993
        else if (character == 0x2226) {
 
4994
            sb.append((char) 0x2225);
 
4995
            sb.append((char) 0x0338);
 
4996
        }
 
4997
        else if (character == 0x2241) {
 
4998
            sb.append((char) 0x223C);
 
4999
            sb.append((char) 0x0338);
 
5000
        }
 
5001
        else if (character == 0x2244) {
 
5002
            sb.append((char) 0x2243);
 
5003
            sb.append((char) 0x0338);
 
5004
        }
 
5005
        else if (character == 0x2247) {
 
5006
            sb.append((char) 0x2245);
 
5007
            sb.append((char) 0x0338);
 
5008
        }
 
5009
        else if (character == 0x2249) {
 
5010
            sb.append((char) 0x2248);
 
5011
            sb.append((char) 0x0338);
 
5012
        }
 
5013
        else if (character == 0x2260) {
 
5014
            sb.append((char) 0x003D);
 
5015
            sb.append((char) 0x0338);
 
5016
        }
 
5017
        else if (character == 0x2262) {
 
5018
            sb.append((char) 0x2261);
 
5019
            sb.append((char) 0x0338);
 
5020
        }
 
5021
        else if (character == 0x226D) {
 
5022
            sb.append((char) 0x224D);
 
5023
            sb.append((char) 0x0338);
 
5024
        }
 
5025
        else if (character == 0x226E) {
 
5026
            sb.append((char) 0x003C);
 
5027
            sb.append((char) 0x0338);
 
5028
        }
 
5029
        else if (character == 0x226F) {
 
5030
            sb.append((char) 0x003E);
 
5031
            sb.append((char) 0x0338);
 
5032
        }
 
5033
        else if (character == 0x2270) {
 
5034
            sb.append((char) 0x2264);
 
5035
            sb.append((char) 0x0338);
 
5036
        }
 
5037
        else if (character == 0x2271) {
 
5038
            sb.append((char) 0x2265);
 
5039
            sb.append((char) 0x0338);
 
5040
        }
 
5041
        else if (character == 0x2274) {
 
5042
            sb.append((char) 0x2272);
 
5043
            sb.append((char) 0x0338);
 
5044
        }
 
5045
        else if (character == 0x2275) {
 
5046
            sb.append((char) 0x2273);
 
5047
            sb.append((char) 0x0338);
 
5048
        }
 
5049
        else if (character == 0x2278) {
 
5050
            sb.append((char) 0x2276);
 
5051
            sb.append((char) 0x0338);
 
5052
        }
 
5053
        else if (character == 0x2279) {
 
5054
            sb.append((char) 0x2277);
 
5055
            sb.append((char) 0x0338);
 
5056
        }
 
5057
        else if (character == 0x2280) {
 
5058
            sb.append((char) 0x227A);
 
5059
            sb.append((char) 0x0338);
 
5060
        }
 
5061
        else if (character == 0x2281) {
 
5062
            sb.append((char) 0x227B);
 
5063
            sb.append((char) 0x0338);
 
5064
        }
 
5065
        else if (character == 0x2284) {
 
5066
            sb.append((char) 0x2282);
 
5067
            sb.append((char) 0x0338);
 
5068
        }
 
5069
        else if (character == 0x2285) {
 
5070
            sb.append((char) 0x2283);
 
5071
            sb.append((char) 0x0338);
 
5072
        }
 
5073
        else if (character == 0x2288) {
 
5074
            sb.append((char) 0x2286);
 
5075
            sb.append((char) 0x0338);
 
5076
        }
 
5077
        else if (character == 0x2289) {
 
5078
            sb.append((char) 0x2287);
 
5079
            sb.append((char) 0x0338);
 
5080
        }
 
5081
        else if (character == 0x22AC) {
 
5082
            sb.append((char) 0x22A2);
 
5083
            sb.append((char) 0x0338);
 
5084
        }
 
5085
        else if (character == 0x22AD) {
 
5086
            sb.append((char) 0x22A8);
 
5087
            sb.append((char) 0x0338);
 
5088
        }
 
5089
        else if (character == 0x22AE) {
 
5090
            sb.append((char) 0x22A9);
 
5091
            sb.append((char) 0x0338);
 
5092
        }
 
5093
        else if (character == 0x22AF) {
 
5094
            sb.append((char) 0x22AB);
 
5095
            sb.append((char) 0x0338);
 
5096
        }
 
5097
        else if (character == 0x22E0) {
 
5098
            sb.append((char) 0x227C);
 
5099
            sb.append((char) 0x0338);
 
5100
        }
 
5101
        else if (character == 0x22E1) {
 
5102
            sb.append((char) 0x227D);
 
5103
            sb.append((char) 0x0338);
 
5104
        }
 
5105
        else if (character == 0x22E2) {
 
5106
            sb.append((char) 0x2291);
 
5107
            sb.append((char) 0x0338);
 
5108
        }
 
5109
        else if (character == 0x22E3) {
 
5110
            sb.append((char) 0x2292);
 
5111
            sb.append((char) 0x0338);
 
5112
        }
 
5113
        else if (character == 0x22EA) {
 
5114
            sb.append((char) 0x22B2);
 
5115
            sb.append((char) 0x0338);
 
5116
        }
 
5117
        else if (character == 0x22EB) {
 
5118
            sb.append((char) 0x22B3);
 
5119
            sb.append((char) 0x0338);
 
5120
        }
 
5121
        else if (character == 0x22EC) {
 
5122
            sb.append((char) 0x22B4);
 
5123
            sb.append((char) 0x0338);
 
5124
        }
 
5125
        else if (character == 0x22ED) {
 
5126
            sb.append((char) 0x22B5);
 
5127
            sb.append((char) 0x0338);
 
5128
        }
 
5129
        else if (character == 0x2329) {
 
5130
            sb.append((char) 0x3008);
 
5131
        }
 
5132
        else if (character == 0x232A) {
 
5133
            sb.append((char) 0x3009);
 
5134
        }
 
5135
        else if (character == 0x2ADC) {
 
5136
            sb.append((char) 0x2ADD);
 
5137
            sb.append((char) 0x0338);
 
5138
        }
 
5139
        else if (character == 0x304C) {
 
5140
            sb.append((char) 0x304B);
 
5141
            sb.append((char) 0x3099);
 
5142
        }
 
5143
        else if (character == 0x304E) {
 
5144
            sb.append((char) 0x304D);
 
5145
            sb.append((char) 0x3099);
 
5146
        }
 
5147
        else if (character == 0x3050) {
 
5148
            sb.append((char) 0x304F);
 
5149
            sb.append((char) 0x3099);
 
5150
        }
 
5151
        else if (character == 0x3052) {
 
5152
            sb.append((char) 0x3051);
 
5153
            sb.append((char) 0x3099);
 
5154
        }
 
5155
        else if (character == 0x3054) {
 
5156
            sb.append((char) 0x3053);
 
5157
            sb.append((char) 0x3099);
 
5158
        }
 
5159
        else if (character == 0x3056) {
 
5160
            sb.append((char) 0x3055);
 
5161
            sb.append((char) 0x3099);
 
5162
        }
 
5163
        else if (character == 0x3058) {
 
5164
            sb.append((char) 0x3057);
 
5165
            sb.append((char) 0x3099);
 
5166
        }
 
5167
        else if (character == 0x305A) {
 
5168
            sb.append((char) 0x3059);
 
5169
            sb.append((char) 0x3099);
 
5170
        }
 
5171
        else if (character == 0x305C) {
 
5172
            sb.append((char) 0x305B);
 
5173
            sb.append((char) 0x3099);
 
5174
        }
 
5175
        else if (character == 0x305E) {
 
5176
            sb.append((char) 0x305D);
 
5177
            sb.append((char) 0x3099);
 
5178
        }
 
5179
        else if (character == 0x3060) {
 
5180
            sb.append((char) 0x305F);
 
5181
            sb.append((char) 0x3099);
 
5182
        }
 
5183
        else if (character == 0x3062) {
 
5184
            sb.append((char) 0x3061);
 
5185
            sb.append((char) 0x3099);
 
5186
        }
 
5187
        else if (character == 0x3065) {
 
5188
            sb.append((char) 0x3064);
 
5189
            sb.append((char) 0x3099);
 
5190
        }
 
5191
        else if (character == 0x3067) {
 
5192
            sb.append((char) 0x3066);
 
5193
            sb.append((char) 0x3099);
 
5194
        }
 
5195
        else if (character == 0x3069) {
 
5196
            sb.append((char) 0x3068);
 
5197
            sb.append((char) 0x3099);
 
5198
        }
 
5199
        else if (character == 0x3070) {
 
5200
            sb.append((char) 0x306F);
 
5201
            sb.append((char) 0x3099);
 
5202
        }
 
5203
        else if (character == 0x3071) {
 
5204
            sb.append((char) 0x306F);
 
5205
            sb.append((char) 0x309A);
 
5206
        }
 
5207
        else if (character == 0x3073) {
 
5208
            sb.append((char) 0x3072);
 
5209
            sb.append((char) 0x3099);
 
5210
        }
 
5211
        else if (character == 0x3074) {
 
5212
            sb.append((char) 0x3072);
 
5213
            sb.append((char) 0x309A);
 
5214
        }
 
5215
        else if (character == 0x3076) {
 
5216
            sb.append((char) 0x3075);
 
5217
            sb.append((char) 0x3099);
 
5218
        }
 
5219
        else if (character == 0x3077) {
 
5220
            sb.append((char) 0x3075);
 
5221
            sb.append((char) 0x309A);
 
5222
        }
 
5223
        else if (character == 0x3079) {
 
5224
            sb.append((char) 0x3078);
 
5225
            sb.append((char) 0x3099);
 
5226
        }
 
5227
        else if (character == 0x307A) {
 
5228
            sb.append((char) 0x3078);
 
5229
            sb.append((char) 0x309A);
 
5230
        }
 
5231
        else if (character == 0x307C) {
 
5232
            sb.append((char) 0x307B);
 
5233
            sb.append((char) 0x3099);
 
5234
        }
 
5235
        else if (character == 0x307D) {
 
5236
            sb.append((char) 0x307B);
 
5237
            sb.append((char) 0x309A);
 
5238
        }
 
5239
        else if (character == 0x3094) {
 
5240
            sb.append((char) 0x3046);
 
5241
            sb.append((char) 0x3099);
 
5242
        }
 
5243
        else if (character == 0x309E) {
 
5244
            sb.append((char) 0x309D);
 
5245
            sb.append((char) 0x3099);
 
5246
        }
 
5247
        else if (character == 0x30AC) {
 
5248
            sb.append((char) 0x30AB);
 
5249
            sb.append((char) 0x3099);
 
5250
        }
 
5251
        else if (character == 0x30AE) {
 
5252
            sb.append((char) 0x30AD);
 
5253
            sb.append((char) 0x3099);
 
5254
        }
 
5255
        else if (character == 0x30B0) {
 
5256
            sb.append((char) 0x30AF);
 
5257
            sb.append((char) 0x3099);
 
5258
        }
 
5259
        else if (character == 0x30B2) {
 
5260
            sb.append((char) 0x30B1);
 
5261
            sb.append((char) 0x3099);
 
5262
        }
 
5263
        else if (character == 0x30B4) {
 
5264
            sb.append((char) 0x30B3);
 
5265
            sb.append((char) 0x3099);
 
5266
        }
 
5267
        else if (character == 0x30B6) {
 
5268
            sb.append((char) 0x30B5);
 
5269
            sb.append((char) 0x3099);
 
5270
        }
 
5271
        else if (character == 0x30B8) {
 
5272
            sb.append((char) 0x30B7);
 
5273
            sb.append((char) 0x3099);
 
5274
        }
 
5275
        else if (character == 0x30BA) {
 
5276
            sb.append((char) 0x30B9);
 
5277
            sb.append((char) 0x3099);
 
5278
        }
 
5279
        else if (character == 0x30BC) {
 
5280
            sb.append((char) 0x30BB);
 
5281
            sb.append((char) 0x3099);
 
5282
        }
 
5283
        else if (character == 0x30BE) {
 
5284
            sb.append((char) 0x30BD);
 
5285
            sb.append((char) 0x3099);
 
5286
        }
 
5287
        else if (character == 0x30C0) {
 
5288
            sb.append((char) 0x30BF);
 
5289
            sb.append((char) 0x3099);
 
5290
        }
 
5291
        else if (character == 0x30C2) {
 
5292
            sb.append((char) 0x30C1);
 
5293
            sb.append((char) 0x3099);
 
5294
        }
 
5295
        else if (character == 0x30C5) {
 
5296
            sb.append((char) 0x30C4);
 
5297
            sb.append((char) 0x3099);
 
5298
        }
 
5299
        else if (character == 0x30C7) {
 
5300
            sb.append((char) 0x30C6);
 
5301
            sb.append((char) 0x3099);
 
5302
        }
 
5303
        else if (character == 0x30C9) {
 
5304
            sb.append((char) 0x30C8);
 
5305
            sb.append((char) 0x3099);
 
5306
        }
 
5307
        else if (character == 0x30D0) {
 
5308
            sb.append((char) 0x30CF);
 
5309
            sb.append((char) 0x3099);
 
5310
        }
 
5311
        else if (character == 0x30D1) {
 
5312
            sb.append((char) 0x30CF);
 
5313
            sb.append((char) 0x309A);
 
5314
        }
 
5315
        else if (character == 0x30D3) {
 
5316
            sb.append((char) 0x30D2);
 
5317
            sb.append((char) 0x3099);
 
5318
        }
 
5319
        else if (character == 0x30D4) {
 
5320
            sb.append((char) 0x30D2);
 
5321
            sb.append((char) 0x309A);
 
5322
        }
 
5323
        else if (character == 0x30D6) {
 
5324
            sb.append((char) 0x30D5);
 
5325
            sb.append((char) 0x3099);
 
5326
        }
 
5327
        else if (character == 0x30D7) {
 
5328
            sb.append((char) 0x30D5);
 
5329
            sb.append((char) 0x309A);
 
5330
        }
 
5331
        else if (character == 0x30D9) {
 
5332
            sb.append((char) 0x30D8);
 
5333
            sb.append((char) 0x3099);
 
5334
        }
 
5335
        else if (character == 0x30DA) {
 
5336
            sb.append((char) 0x30D8);
 
5337
            sb.append((char) 0x309A);
 
5338
        }
 
5339
        else if (character == 0x30DC) {
 
5340
            sb.append((char) 0x30DB);
 
5341
            sb.append((char) 0x3099);
 
5342
        }
 
5343
        else if (character == 0x30DD) {
 
5344
            sb.append((char) 0x30DB);
 
5345
            sb.append((char) 0x309A);
 
5346
        }
 
5347
        else if (character == 0x30F4) {
 
5348
            sb.append((char) 0x30A6);
 
5349
            sb.append((char) 0x3099);
 
5350
        }
 
5351
        else if (character == 0x30F7) {
 
5352
            sb.append((char) 0x30EF);
 
5353
            sb.append((char) 0x3099);
 
5354
        }
 
5355
        else if (character == 0x30F8) {
 
5356
            sb.append((char) 0x30F0);
 
5357
            sb.append((char) 0x3099);
 
5358
        }
 
5359
        else if (character == 0x30F9) {
 
5360
            sb.append((char) 0x30F1);
 
5361
            sb.append((char) 0x3099);
 
5362
        }
 
5363
        else if (character == 0x30FA) {
 
5364
            sb.append((char) 0x30F2);
 
5365
            sb.append((char) 0x3099);
 
5366
        }
 
5367
        else if (character == 0x30FE) {
 
5368
            sb.append((char) 0x30FD);
 
5369
            sb.append((char) 0x3099);
 
5370
        }
 
5371
        else if (character == 0xF900) {
 
5372
            sb.append((char) 0x8C48);
 
5373
        }
 
5374
        else if (character == 0xF901) {
 
5375
            sb.append((char) 0x66F4);
 
5376
        }
 
5377
        else if (character == 0xF902) {
 
5378
            sb.append((char) 0x8ECA);
 
5379
        }
 
5380
        else if (character == 0xF903) {
 
5381
            sb.append((char) 0x8CC8);
 
5382
        }
 
5383
        else if (character == 0xF904) {
 
5384
            sb.append((char) 0x6ED1);
 
5385
        }
 
5386
        else if (character == 0xF905) {
 
5387
            sb.append((char) 0x4E32);
 
5388
        }
 
5389
        else if (character == 0xF906) {
 
5390
            sb.append((char) 0x53E5);
 
5391
        }
 
5392
        else if (character == 0xF907) {
 
5393
            sb.append((char) 0x9F9C);
 
5394
        }
 
5395
        else if (character == 0xF908) {
 
5396
            sb.append((char) 0x9F9C);
 
5397
        }
 
5398
        else if (character == 0xF909) {
 
5399
            sb.append((char) 0x5951);
 
5400
        }
 
5401
        else if (character == 0xF90A) {
 
5402
            sb.append((char) 0x91D1);
 
5403
        }
 
5404
        else if (character == 0xF90B) {
 
5405
            sb.append((char) 0x5587);
 
5406
        }
 
5407
        else if (character == 0xF90C) {
 
5408
            sb.append((char) 0x5948);
 
5409
        }
 
5410
        else if (character == 0xF90D) {
 
5411
            sb.append((char) 0x61F6);
 
5412
        }
 
5413
        else if (character == 0xF90E) {
 
5414
            sb.append((char) 0x7669);
 
5415
        }
 
5416
        else if (character == 0xF90F) {
 
5417
            sb.append((char) 0x7F85);
 
5418
        }
 
5419
        else if (character == 0xF910) {
 
5420
            sb.append((char) 0x863F);
 
5421
        }
 
5422
        else if (character == 0xF911) {
 
5423
            sb.append((char) 0x87BA);
 
5424
        }
 
5425
        else if (character == 0xF912) {
 
5426
            sb.append((char) 0x88F8);
 
5427
        }
 
5428
        else if (character == 0xF913) {
 
5429
            sb.append((char) 0x908F);
 
5430
        }
 
5431
        else if (character == 0xF914) {
 
5432
            sb.append((char) 0x6A02);
 
5433
        }
 
5434
        else if (character == 0xF915) {
 
5435
            sb.append((char) 0x6D1B);
 
5436
        }
 
5437
        else if (character == 0xF916) {
 
5438
            sb.append((char) 0x70D9);
 
5439
        }
 
5440
        else if (character == 0xF917) {
 
5441
            sb.append((char) 0x73DE);
 
5442
        }
 
5443
        else if (character == 0xF918) {
 
5444
            sb.append((char) 0x843D);
 
5445
        }
 
5446
        else if (character == 0xF919) {
 
5447
            sb.append((char) 0x916A);
 
5448
        }
 
5449
        else if (character == 0xF91A) {
 
5450
            sb.append((char) 0x99F1);
 
5451
        }
 
5452
        else if (character == 0xF91B) {
 
5453
            sb.append((char) 0x4E82);
 
5454
        }
 
5455
        else if (character == 0xF91C) {
 
5456
            sb.append((char) 0x5375);
 
5457
        }
 
5458
        else if (character == 0xF91D) {
 
5459
            sb.append((char) 0x6B04);
 
5460
        }
 
5461
        else if (character == 0xF91E) {
 
5462
            sb.append((char) 0x721B);
 
5463
        }
 
5464
        else if (character == 0xF91F) {
 
5465
            sb.append((char) 0x862D);
 
5466
        }
 
5467
        else if (character == 0xF920) {
 
5468
            sb.append((char) 0x9E1E);
 
5469
        }
 
5470
        else if (character == 0xF921) {
 
5471
            sb.append((char) 0x5D50);
 
5472
        }
 
5473
        else if (character == 0xF922) {
 
5474
            sb.append((char) 0x6FEB);
 
5475
        }
 
5476
        else if (character == 0xF923) {
 
5477
            sb.append((char) 0x85CD);
 
5478
        }
 
5479
        else if (character == 0xF924) {
 
5480
            sb.append((char) 0x8964);
 
5481
        }
 
5482
        else if (character == 0xF925) {
 
5483
            sb.append((char) 0x62C9);
 
5484
        }
 
5485
        else if (character == 0xF926) {
 
5486
            sb.append((char) 0x81D8);
 
5487
        }
 
5488
        else if (character == 0xF927) {
 
5489
            sb.append((char) 0x881F);
 
5490
        }
 
5491
        else if (character == 0xF928) {
 
5492
            sb.append((char) 0x5ECA);
 
5493
        }
 
5494
        else if (character == 0xF929) {
 
5495
            sb.append((char) 0x6717);
 
5496
        }
 
5497
        else if (character == 0xF92A) {
 
5498
            sb.append((char) 0x6D6A);
 
5499
        }
 
5500
        else if (character == 0xF92B) {
 
5501
            sb.append((char) 0x72FC);
 
5502
        }
 
5503
        else if (character == 0xF92C) {
 
5504
            sb.append((char) 0x90CE);
 
5505
        }
 
5506
        else if (character == 0xF92D) {
 
5507
            sb.append((char) 0x4F86);
 
5508
        }
 
5509
        else if (character == 0xF92E) {
 
5510
            sb.append((char) 0x51B7);
 
5511
        }
 
5512
        else if (character == 0xF92F) {
 
5513
            sb.append((char) 0x52DE);
 
5514
        }
 
5515
        else if (character == 0xF930) {
 
5516
            sb.append((char) 0x64C4);
 
5517
        }
 
5518
        else if (character == 0xF931) {
 
5519
            sb.append((char) 0x6AD3);
 
5520
        }
 
5521
        else if (character == 0xF932) {
 
5522
            sb.append((char) 0x7210);
 
5523
        }
 
5524
        else if (character == 0xF933) {
 
5525
            sb.append((char) 0x76E7);
 
5526
        }
 
5527
        else if (character == 0xF934) {
 
5528
            sb.append((char) 0x8001);
 
5529
        }
 
5530
        else if (character == 0xF935) {
 
5531
            sb.append((char) 0x8606);
 
5532
        }
 
5533
        else if (character == 0xF936) {
 
5534
            sb.append((char) 0x865C);
 
5535
        }
 
5536
        else if (character == 0xF937) {
 
5537
            sb.append((char) 0x8DEF);
 
5538
        }
 
5539
        else if (character == 0xF938) {
 
5540
            sb.append((char) 0x9732);
 
5541
        }
 
5542
        else if (character == 0xF939) {
 
5543
            sb.append((char) 0x9B6F);
 
5544
        }
 
5545
        else if (character == 0xF93A) {
 
5546
            sb.append((char) 0x9DFA);
 
5547
        }
 
5548
        else if (character == 0xF93B) {
 
5549
            sb.append((char) 0x788C);
 
5550
        }
 
5551
        else if (character == 0xF93C) {
 
5552
            sb.append((char) 0x797F);
 
5553
        }
 
5554
        else if (character == 0xF93D) {
 
5555
            sb.append((char) 0x7DA0);
 
5556
        }
 
5557
        else if (character == 0xF93E) {
 
5558
            sb.append((char) 0x83C9);
 
5559
        }
 
5560
        else if (character == 0xF93F) {
 
5561
            sb.append((char) 0x9304);
 
5562
        }
 
5563
        else if (character == 0xF940) {
 
5564
            sb.append((char) 0x9E7F);
 
5565
        }
 
5566
        else if (character == 0xF941) {
 
5567
            sb.append((char) 0x8AD6);
 
5568
        }
 
5569
        else if (character == 0xF942) {
 
5570
            sb.append((char) 0x58DF);
 
5571
        }
 
5572
        else if (character == 0xF943) {
 
5573
            sb.append((char) 0x5F04);
 
5574
        }
 
5575
        else if (character == 0xF944) {
 
5576
            sb.append((char) 0x7C60);
 
5577
        }
 
5578
        else if (character == 0xF945) {
 
5579
            sb.append((char) 0x807E);
 
5580
        }
 
5581
        else if (character == 0xF946) {
 
5582
            sb.append((char) 0x7262);
 
5583
        }
 
5584
        else if (character == 0xF947) {
 
5585
            sb.append((char) 0x78CA);
 
5586
        }
 
5587
        else if (character == 0xF948) {
 
5588
            sb.append((char) 0x8CC2);
 
5589
        }
 
5590
        else if (character == 0xF949) {
 
5591
            sb.append((char) 0x96F7);
 
5592
        }
 
5593
        else if (character == 0xF94A) {
 
5594
            sb.append((char) 0x58D8);
 
5595
        }
 
5596
        else if (character == 0xF94B) {
 
5597
            sb.append((char) 0x5C62);
 
5598
        }
 
5599
        else if (character == 0xF94C) {
 
5600
            sb.append((char) 0x6A13);
 
5601
        }
 
5602
        else if (character == 0xF94D) {
 
5603
            sb.append((char) 0x6DDA);
 
5604
        }
 
5605
        else if (character == 0xF94E) {
 
5606
            sb.append((char) 0x6F0F);
 
5607
        }
 
5608
        else if (character == 0xF94F) {
 
5609
            sb.append((char) 0x7D2F);
 
5610
        }
 
5611
        else if (character == 0xF950) {
 
5612
            sb.append((char) 0x7E37);
 
5613
        }
 
5614
        else if (character == 0xF951) {
 
5615
            sb.append((char) 0x964B);
 
5616
        }
 
5617
        else if (character == 0xF952) {
 
5618
            sb.append((char) 0x52D2);
 
5619
        }
 
5620
        else if (character == 0xF953) {
 
5621
            sb.append((char) 0x808B);
 
5622
        }
 
5623
        else if (character == 0xF954) {
 
5624
            sb.append((char) 0x51DC);
 
5625
        }
 
5626
        else if (character == 0xF955) {
 
5627
            sb.append((char) 0x51CC);
 
5628
        }
 
5629
        else if (character == 0xF956) {
 
5630
            sb.append((char) 0x7A1C);
 
5631
        }
 
5632
        else if (character == 0xF957) {
 
5633
            sb.append((char) 0x7DBE);
 
5634
        }
 
5635
        else if (character == 0xF958) {
 
5636
            sb.append((char) 0x83F1);
 
5637
        }
 
5638
        else if (character == 0xF959) {
 
5639
            sb.append((char) 0x9675);
 
5640
        }
 
5641
        else if (character == 0xF95A) {
 
5642
            sb.append((char) 0x8B80);
 
5643
        }
 
5644
        else if (character == 0xF95B) {
 
5645
            sb.append((char) 0x62CF);
 
5646
        }
 
5647
        else if (character == 0xF95C) {
 
5648
            sb.append((char) 0x6A02);
 
5649
        }
 
5650
        else if (character == 0xF95D) {
 
5651
            sb.append((char) 0x8AFE);
 
5652
        }
 
5653
        else if (character == 0xF95E) {
 
5654
            sb.append((char) 0x4E39);
 
5655
        }
 
5656
        else if (character == 0xF95F) {
 
5657
            sb.append((char) 0x5BE7);
 
5658
        }
 
5659
        else if (character == 0xF960) {
 
5660
            sb.append((char) 0x6012);
 
5661
        }
 
5662
        else if (character == 0xF961) {
 
5663
            sb.append((char) 0x7387);
 
5664
        }
 
5665
        else if (character == 0xF962) {
 
5666
            sb.append((char) 0x7570);
 
5667
        }
 
5668
        else if (character == 0xF963) {
 
5669
            sb.append((char) 0x5317);
 
5670
        }
 
5671
        else if (character == 0xF964) {
 
5672
            sb.append((char) 0x78FB);
 
5673
        }
 
5674
        else if (character == 0xF965) {
 
5675
            sb.append((char) 0x4FBF);
 
5676
        }
 
5677
        else if (character == 0xF966) {
 
5678
            sb.append((char) 0x5FA9);
 
5679
        }
 
5680
        else if (character == 0xF967) {
 
5681
            sb.append((char) 0x4E0D);
 
5682
        }
 
5683
        else if (character == 0xF968) {
 
5684
            sb.append((char) 0x6CCC);
 
5685
        }
 
5686
        else if (character == 0xF969) {
 
5687
            sb.append((char) 0x6578);
 
5688
        }
 
5689
        else if (character == 0xF96A) {
 
5690
            sb.append((char) 0x7D22);
 
5691
        }
 
5692
        else if (character == 0xF96B) {
 
5693
            sb.append((char) 0x53C3);
 
5694
        }
 
5695
        else if (character == 0xF96C) {
 
5696
            sb.append((char) 0x585E);
 
5697
        }
 
5698
        else if (character == 0xF96D) {
 
5699
            sb.append((char) 0x7701);
 
5700
        }
 
5701
        else if (character == 0xF96E) {
 
5702
            sb.append((char) 0x8449);
 
5703
        }
 
5704
        else if (character == 0xF96F) {
 
5705
            sb.append((char) 0x8AAA);
 
5706
        }
 
5707
        else if (character == 0xF970) {
 
5708
            sb.append((char) 0x6BBA);
 
5709
        }
 
5710
        else if (character == 0xF971) {
 
5711
            sb.append((char) 0x8FB0);
 
5712
        }
 
5713
        else if (character == 0xF972) {
 
5714
            sb.append((char) 0x6C88);
 
5715
        }
 
5716
        else if (character == 0xF973) {
 
5717
            sb.append((char) 0x62FE);
 
5718
        }
 
5719
        else if (character == 0xF974) {
 
5720
            sb.append((char) 0x82E5);
 
5721
        }
 
5722
        else if (character == 0xF975) {
 
5723
            sb.append((char) 0x63A0);
 
5724
        }
 
5725
        else if (character == 0xF976) {
 
5726
            sb.append((char) 0x7565);
 
5727
        }
 
5728
        else if (character == 0xF977) {
 
5729
            sb.append((char) 0x4EAE);
 
5730
        }
 
5731
        else if (character == 0xF978) {
 
5732
            sb.append((char) 0x5169);
 
5733
        }
 
5734
        else if (character == 0xF979) {
 
5735
            sb.append((char) 0x51C9);
 
5736
        }
 
5737
        else if (character == 0xF97A) {
 
5738
            sb.append((char) 0x6881);
 
5739
        }
 
5740
        else if (character == 0xF97B) {
 
5741
            sb.append((char) 0x7CE7);
 
5742
        }
 
5743
        else if (character == 0xF97C) {
 
5744
            sb.append((char) 0x826F);
 
5745
        }
 
5746
        else if (character == 0xF97D) {
 
5747
            sb.append((char) 0x8AD2);
 
5748
        }
 
5749
        else if (character == 0xF97E) {
 
5750
            sb.append((char) 0x91CF);
 
5751
        }
 
5752
        else if (character == 0xF97F) {
 
5753
            sb.append((char) 0x52F5);
 
5754
        }
 
5755
        else if (character == 0xF980) {
 
5756
            sb.append((char) 0x5442);
 
5757
        }
 
5758
        else if (character == 0xF981) {
 
5759
            sb.append((char) 0x5973);
 
5760
        }
 
5761
        else if (character == 0xF982) {
 
5762
            sb.append((char) 0x5EEC);
 
5763
        }
 
5764
        else if (character == 0xF983) {
 
5765
            sb.append((char) 0x65C5);
 
5766
        }
 
5767
        else if (character == 0xF984) {
 
5768
            sb.append((char) 0x6FFE);
 
5769
        }
 
5770
        else if (character == 0xF985) {
 
5771
            sb.append((char) 0x792A);
 
5772
        }
 
5773
        else if (character == 0xF986) {
 
5774
            sb.append((char) 0x95AD);
 
5775
        }
 
5776
        else if (character == 0xF987) {
 
5777
            sb.append((char) 0x9A6A);
 
5778
        }
 
5779
        else if (character == 0xF988) {
 
5780
            sb.append((char) 0x9E97);
 
5781
        }
 
5782
        else if (character == 0xF989) {
 
5783
            sb.append((char) 0x9ECE);
 
5784
        }
 
5785
        else if (character == 0xF98A) {
 
5786
            sb.append((char) 0x529B);
 
5787
        }
 
5788
        else if (character == 0xF98B) {
 
5789
            sb.append((char) 0x66C6);
 
5790
        }
 
5791
        else if (character == 0xF98C) {
 
5792
            sb.append((char) 0x6B77);
 
5793
        }
 
5794
        else if (character == 0xF98D) {
 
5795
            sb.append((char) 0x8F62);
 
5796
        }
 
5797
        else if (character == 0xF98E) {
 
5798
            sb.append((char) 0x5E74);
 
5799
        }
 
5800
        else if (character == 0xF98F) {
 
5801
            sb.append((char) 0x6190);
 
5802
        }
 
5803
        else if (character == 0xF990) {
 
5804
            sb.append((char) 0x6200);
 
5805
        }
 
5806
        else if (character == 0xF991) {
 
5807
            sb.append((char) 0x649A);
 
5808
        }
 
5809
        else if (character == 0xF992) {
 
5810
            sb.append((char) 0x6F23);
 
5811
        }
 
5812
        else if (character == 0xF993) {
 
5813
            sb.append((char) 0x7149);
 
5814
        }
 
5815
        else if (character == 0xF994) {
 
5816
            sb.append((char) 0x7489);
 
5817
        }
 
5818
        else if (character == 0xF995) {
 
5819
            sb.append((char) 0x79CA);
 
5820
        }
 
5821
        else if (character == 0xF996) {
 
5822
            sb.append((char) 0x7DF4);
 
5823
        }
 
5824
        else if (character == 0xF997) {
 
5825
            sb.append((char) 0x806F);
 
5826
        }
 
5827
        else if (character == 0xF998) {
 
5828
            sb.append((char) 0x8F26);
 
5829
        }
 
5830
        else if (character == 0xF999) {
 
5831
            sb.append((char) 0x84EE);
 
5832
        }
 
5833
        else if (character == 0xF99A) {
 
5834
            sb.append((char) 0x9023);
 
5835
        }
 
5836
        else if (character == 0xF99B) {
 
5837
            sb.append((char) 0x934A);
 
5838
        }
 
5839
        else if (character == 0xF99C) {
 
5840
            sb.append((char) 0x5217);
 
5841
        }
 
5842
        else if (character == 0xF99D) {
 
5843
            sb.append((char) 0x52A3);
 
5844
        }
 
5845
        else if (character == 0xF99E) {
 
5846
            sb.append((char) 0x54BD);
 
5847
        }
 
5848
        else if (character == 0xF99F) {
 
5849
            sb.append((char) 0x70C8);
 
5850
        }
 
5851
        else if (character == 0xF9A0) {
 
5852
            sb.append((char) 0x88C2);
 
5853
        }
 
5854
        else if (character == 0xF9A1) {
 
5855
            sb.append((char) 0x8AAA);
 
5856
        }
 
5857
        else if (character == 0xF9A2) {
 
5858
            sb.append((char) 0x5EC9);
 
5859
        }
 
5860
        else if (character == 0xF9A3) {
 
5861
            sb.append((char) 0x5FF5);
 
5862
        }
 
5863
        else if (character == 0xF9A4) {
 
5864
            sb.append((char) 0x637B);
 
5865
        }
 
5866
        else if (character == 0xF9A5) {
 
5867
            sb.append((char) 0x6BAE);
 
5868
        }
 
5869
        else if (character == 0xF9A6) {
 
5870
            sb.append((char) 0x7C3E);
 
5871
        }
 
5872
        else if (character == 0xF9A7) {
 
5873
            sb.append((char) 0x7375);
 
5874
        }
 
5875
        else if (character == 0xF9A8) {
 
5876
            sb.append((char) 0x4EE4);
 
5877
        }
 
5878
        else if (character == 0xF9A9) {
 
5879
            sb.append((char) 0x56F9);
 
5880
        }
 
5881
        else if (character == 0xF9AA) {
 
5882
            sb.append((char) 0x5BE7);
 
5883
        }
 
5884
        else if (character == 0xF9AB) {
 
5885
            sb.append((char) 0x5DBA);
 
5886
        }
 
5887
        else if (character == 0xF9AC) {
 
5888
            sb.append((char) 0x601C);
 
5889
        }
 
5890
        else if (character == 0xF9AD) {
 
5891
            sb.append((char) 0x73B2);
 
5892
        }
 
5893
        else if (character == 0xF9AE) {
 
5894
            sb.append((char) 0x7469);
 
5895
        }
 
5896
        else if (character == 0xF9AF) {
 
5897
            sb.append((char) 0x7F9A);
 
5898
        }
 
5899
        else if (character == 0xF9B0) {
 
5900
            sb.append((char) 0x8046);
 
5901
        }
 
5902
        else if (character == 0xF9B1) {
 
5903
            sb.append((char) 0x9234);
 
5904
        }
 
5905
        else if (character == 0xF9B2) {
 
5906
            sb.append((char) 0x96F6);
 
5907
        }
 
5908
        else if (character == 0xF9B3) {
 
5909
            sb.append((char) 0x9748);
 
5910
        }
 
5911
        else if (character == 0xF9B4) {
 
5912
            sb.append((char) 0x9818);
 
5913
        }
 
5914
        else if (character == 0xF9B5) {
 
5915
            sb.append((char) 0x4F8B);
 
5916
        }
 
5917
        else if (character == 0xF9B6) {
 
5918
            sb.append((char) 0x79AE);
 
5919
        }
 
5920
        else if (character == 0xF9B7) {
 
5921
            sb.append((char) 0x91B4);
 
5922
        }
 
5923
        else if (character == 0xF9B8) {
 
5924
            sb.append((char) 0x96B8);
 
5925
        }
 
5926
        else if (character == 0xF9B9) {
 
5927
            sb.append((char) 0x60E1);
 
5928
        }
 
5929
        else if (character == 0xF9BA) {
 
5930
            sb.append((char) 0x4E86);
 
5931
        }
 
5932
        else if (character == 0xF9BB) {
 
5933
            sb.append((char) 0x50DA);
 
5934
        }
 
5935
        else if (character == 0xF9BC) {
 
5936
            sb.append((char) 0x5BEE);
 
5937
        }
 
5938
        else if (character == 0xF9BD) {
 
5939
            sb.append((char) 0x5C3F);
 
5940
        }
 
5941
        else if (character == 0xF9BE) {
 
5942
            sb.append((char) 0x6599);
 
5943
        }
 
5944
        else if (character == 0xF9BF) {
 
5945
            sb.append((char) 0x6A02);
 
5946
        }
 
5947
        else if (character == 0xF9C0) {
 
5948
            sb.append((char) 0x71CE);
 
5949
        }
 
5950
        else if (character == 0xF9C1) {
 
5951
            sb.append((char) 0x7642);
 
5952
        }
 
5953
        else if (character == 0xF9C2) {
 
5954
            sb.append((char) 0x84FC);
 
5955
        }
 
5956
        else if (character == 0xF9C3) {
 
5957
            sb.append((char) 0x907C);
 
5958
        }
 
5959
        else if (character == 0xF9C4) {
 
5960
            sb.append((char) 0x9F8D);
 
5961
        }
 
5962
        else if (character == 0xF9C5) {
 
5963
            sb.append((char) 0x6688);
 
5964
        }
 
5965
        else if (character == 0xF9C6) {
 
5966
            sb.append((char) 0x962E);
 
5967
        }
 
5968
        else if (character == 0xF9C7) {
 
5969
            sb.append((char) 0x5289);
 
5970
        }
 
5971
        else if (character == 0xF9C8) {
 
5972
            sb.append((char) 0x677B);
 
5973
        }
 
5974
        else if (character == 0xF9C9) {
 
5975
            sb.append((char) 0x67F3);
 
5976
        }
 
5977
        else if (character == 0xF9CA) {
 
5978
            sb.append((char) 0x6D41);
 
5979
        }
 
5980
        else if (character == 0xF9CB) {
 
5981
            sb.append((char) 0x6E9C);
 
5982
        }
 
5983
        else if (character == 0xF9CC) {
 
5984
            sb.append((char) 0x7409);
 
5985
        }
 
5986
        else if (character == 0xF9CD) {
 
5987
            sb.append((char) 0x7559);
 
5988
        }
 
5989
        else if (character == 0xF9CE) {
 
5990
            sb.append((char) 0x786B);
 
5991
        }
 
5992
        else if (character == 0xF9CF) {
 
5993
            sb.append((char) 0x7D10);
 
5994
        }
 
5995
        else if (character == 0xF9D0) {
 
5996
            sb.append((char) 0x985E);
 
5997
        }
 
5998
        else if (character == 0xF9D1) {
 
5999
            sb.append((char) 0x516D);
 
6000
        }
 
6001
        else if (character == 0xF9D2) {
 
6002
            sb.append((char) 0x622E);
 
6003
        }
 
6004
        else if (character == 0xF9D3) {
 
6005
            sb.append((char) 0x9678);
 
6006
        }
 
6007
        else if (character == 0xF9D4) {
 
6008
            sb.append((char) 0x502B);
 
6009
        }
 
6010
        else if (character == 0xF9D5) {
 
6011
            sb.append((char) 0x5D19);
 
6012
        }
 
6013
        else if (character == 0xF9D6) {
 
6014
            sb.append((char) 0x6DEA);
 
6015
        }
 
6016
        else if (character == 0xF9D7) {
 
6017
            sb.append((char) 0x8F2A);
 
6018
        }
 
6019
        else if (character == 0xF9D8) {
 
6020
            sb.append((char) 0x5F8B);
 
6021
        }
 
6022
        else if (character == 0xF9D9) {
 
6023
            sb.append((char) 0x6144);
 
6024
        }
 
6025
        else if (character == 0xF9DA) {
 
6026
            sb.append((char) 0x6817);
 
6027
        }
 
6028
        else if (character == 0xF9DB) {
 
6029
            sb.append((char) 0x7387);
 
6030
        }
 
6031
        else if (character == 0xF9DC) {
 
6032
            sb.append((char) 0x9686);
 
6033
        }
 
6034
        else if (character == 0xF9DD) {
 
6035
            sb.append((char) 0x5229);
 
6036
        }
 
6037
        else if (character == 0xF9DE) {
 
6038
            sb.append((char) 0x540F);
 
6039
        }
 
6040
        else if (character == 0xF9DF) {
 
6041
            sb.append((char) 0x5C65);
 
6042
        }
 
6043
        else if (character == 0xF9E0) {
 
6044
            sb.append((char) 0x6613);
 
6045
        }
 
6046
        else if (character == 0xF9E1) {
 
6047
            sb.append((char) 0x674E);
 
6048
        }
 
6049
        else if (character == 0xF9E2) {
 
6050
            sb.append((char) 0x68A8);
 
6051
        }
 
6052
        else if (character == 0xF9E3) {
 
6053
            sb.append((char) 0x6CE5);
 
6054
        }
 
6055
        else if (character == 0xF9E4) {
 
6056
            sb.append((char) 0x7406);
 
6057
        }
 
6058
        else if (character == 0xF9E5) {
 
6059
            sb.append((char) 0x75E2);
 
6060
        }
 
6061
        else if (character == 0xF9E6) {
 
6062
            sb.append((char) 0x7F79);
 
6063
        }
 
6064
        else if (character == 0xF9E7) {
 
6065
            sb.append((char) 0x88CF);
 
6066
        }
 
6067
        else if (character == 0xF9E8) {
 
6068
            sb.append((char) 0x88E1);
 
6069
        }
 
6070
        else if (character == 0xF9E9) {
 
6071
            sb.append((char) 0x91CC);
 
6072
        }
 
6073
        else if (character == 0xF9EA) {
 
6074
            sb.append((char) 0x96E2);
 
6075
        }
 
6076
        else if (character == 0xF9EB) {
 
6077
            sb.append((char) 0x533F);
 
6078
        }
 
6079
        else if (character == 0xF9EC) {
 
6080
            sb.append((char) 0x6EBA);
 
6081
        }
 
6082
        else if (character == 0xF9ED) {
 
6083
            sb.append((char) 0x541D);
 
6084
        }
 
6085
        else if (character == 0xF9EE) {
 
6086
            sb.append((char) 0x71D0);
 
6087
        }
 
6088
        else if (character == 0xF9EF) {
 
6089
            sb.append((char) 0x7498);
 
6090
        }
 
6091
        else if (character == 0xF9F0) {
 
6092
            sb.append((char) 0x85FA);
 
6093
        }
 
6094
        else if (character == 0xF9F1) {
 
6095
            sb.append((char) 0x96A3);
 
6096
        }
 
6097
        else if (character == 0xF9F2) {
 
6098
            sb.append((char) 0x9C57);
 
6099
        }
 
6100
        else if (character == 0xF9F3) {
 
6101
            sb.append((char) 0x9E9F);
 
6102
        }
 
6103
        else if (character == 0xF9F4) {
 
6104
            sb.append((char) 0x6797);
 
6105
        }
 
6106
        else if (character == 0xF9F5) {
 
6107
            sb.append((char) 0x6DCB);
 
6108
        }
 
6109
        else if (character == 0xF9F6) {
 
6110
            sb.append((char) 0x81E8);
 
6111
        }
 
6112
        else if (character == 0xF9F7) {
 
6113
            sb.append((char) 0x7ACB);
 
6114
        }
 
6115
        else if (character == 0xF9F8) {
 
6116
            sb.append((char) 0x7B20);
 
6117
        }
 
6118
        else if (character == 0xF9F9) {
 
6119
            sb.append((char) 0x7C92);
 
6120
        }
 
6121
        else if (character == 0xF9FA) {
 
6122
            sb.append((char) 0x72C0);
 
6123
        }
 
6124
        else if (character == 0xF9FB) {
 
6125
            sb.append((char) 0x7099);
 
6126
        }
 
6127
        else if (character == 0xF9FC) {
 
6128
            sb.append((char) 0x8B58);
 
6129
        }
 
6130
        else if (character == 0xF9FD) {
 
6131
            sb.append((char) 0x4EC0);
 
6132
        }
 
6133
        else if (character == 0xF9FE) {
 
6134
            sb.append((char) 0x8336);
 
6135
        }
 
6136
        else if (character == 0xF9FF) {
 
6137
            sb.append((char) 0x523A);
 
6138
        }
 
6139
        else if (character == 0xFA00) {
 
6140
            sb.append((char) 0x5207);
 
6141
        }
 
6142
        else if (character == 0xFA01) {
 
6143
            sb.append((char) 0x5EA6);
 
6144
        }
 
6145
        else if (character == 0xFA02) {
 
6146
            sb.append((char) 0x62D3);
 
6147
        }
 
6148
        else if (character == 0xFA03) {
 
6149
            sb.append((char) 0x7CD6);
 
6150
        }
 
6151
        else if (character == 0xFA04) {
 
6152
            sb.append((char) 0x5B85);
 
6153
        }
 
6154
        else if (character == 0xFA05) {
 
6155
            sb.append((char) 0x6D1E);
 
6156
        }
 
6157
        else if (character == 0xFA06) {
 
6158
            sb.append((char) 0x66B4);
 
6159
        }
 
6160
        else if (character == 0xFA07) {
 
6161
            sb.append((char) 0x8F3B);
 
6162
        }
 
6163
        else if (character == 0xFA08) {
 
6164
            sb.append((char) 0x884C);
 
6165
        }
 
6166
        else if (character == 0xFA09) {
 
6167
            sb.append((char) 0x964D);
 
6168
        }
 
6169
        else if (character == 0xFA0A) {
 
6170
            sb.append((char) 0x898B);
 
6171
        }
 
6172
        else if (character == 0xFA0B) {
 
6173
            sb.append((char) 0x5ED3);
 
6174
        }
 
6175
        else if (character == 0xFA0C) {
 
6176
            sb.append((char) 0x5140);
 
6177
        }
 
6178
        else if (character == 0xFA0D) {
 
6179
            sb.append((char) 0x55C0);
 
6180
        }
 
6181
        else if (character == 0xFA10) {
 
6182
            sb.append((char) 0x585A);
 
6183
        }
 
6184
        else if (character == 0xFA12) {
 
6185
            sb.append((char) 0x6674);
 
6186
        }
 
6187
        else if (character == 0xFA15) {
 
6188
            sb.append((char) 0x51DE);
 
6189
        }
 
6190
        else if (character == 0xFA16) {
 
6191
            sb.append((char) 0x732A);
 
6192
        }
 
6193
        else if (character == 0xFA17) {
 
6194
            sb.append((char) 0x76CA);
 
6195
        }
 
6196
        else if (character == 0xFA18) {
 
6197
            sb.append((char) 0x793C);
 
6198
        }
 
6199
        else if (character == 0xFA19) {
 
6200
            sb.append((char) 0x795E);
 
6201
        }
 
6202
        else if (character == 0xFA1A) {
 
6203
            sb.append((char) 0x7965);
 
6204
        }
 
6205
        else if (character == 0xFA1B) {
 
6206
            sb.append((char) 0x798F);
 
6207
        }
 
6208
        else if (character == 0xFA1C) {
 
6209
            sb.append((char) 0x9756);
 
6210
        }
 
6211
        else if (character == 0xFA1D) {
 
6212
            sb.append((char) 0x7CBE);
 
6213
        }
 
6214
        else if (character == 0xFA1E) {
 
6215
            sb.append((char) 0x7FBD);
 
6216
        }
 
6217
        else if (character == 0xFA20) {
 
6218
            sb.append((char) 0x8612);
 
6219
        }
 
6220
        else if (character == 0xFA22) {
 
6221
            sb.append((char) 0x8AF8);
 
6222
        }
 
6223
        else if (character == 0xFA25) {
 
6224
            sb.append((char) 0x9038);
 
6225
        }
 
6226
        else if (character == 0xFA26) {
 
6227
            sb.append((char) 0x90FD);
 
6228
        }
 
6229
        else if (character == 0xFA2A) {
 
6230
            sb.append((char) 0x98EF);
 
6231
        }
 
6232
        else if (character == 0xFA2B) {
 
6233
            sb.append((char) 0x98FC);
 
6234
        }
 
6235
        else if (character == 0xFA2C) {
 
6236
            sb.append((char) 0x9928);
 
6237
        }
 
6238
        else if (character == 0xFA2D) {
 
6239
            sb.append((char) 0x9DB4);
 
6240
        }
 
6241
        else if (character == 0xFA30) {
 
6242
            sb.append((char) 0x4FAE);
 
6243
        }
 
6244
        else if (character == 0xFA31) {
 
6245
            sb.append((char) 0x50E7);
 
6246
        }
 
6247
        else if (character == 0xFA32) {
 
6248
            sb.append((char) 0x514D);
 
6249
        }
 
6250
        else if (character == 0xFA33) {
 
6251
            sb.append((char) 0x52C9);
 
6252
        }
 
6253
        else if (character == 0xFA34) {
 
6254
            sb.append((char) 0x52E4);
 
6255
        }
 
6256
        else if (character == 0xFA35) {
 
6257
            sb.append((char) 0x5351);
 
6258
        }
 
6259
        else if (character == 0xFA36) {
 
6260
            sb.append((char) 0x559D);
 
6261
        }
 
6262
        else if (character == 0xFA37) {
 
6263
            sb.append((char) 0x5606);
 
6264
        }
 
6265
        else if (character == 0xFA38) {
 
6266
            sb.append((char) 0x5668);
 
6267
        }
 
6268
        else if (character == 0xFA39) {
 
6269
            sb.append((char) 0x5840);
 
6270
        }
 
6271
        else if (character == 0xFA3A) {
 
6272
            sb.append((char) 0x58A8);
 
6273
        }
 
6274
        else if (character == 0xFA3B) {
 
6275
            sb.append((char) 0x5C64);
 
6276
        }
 
6277
        else if (character == 0xFA3C) {
 
6278
            sb.append((char) 0x5C6E);
 
6279
        }
 
6280
        else if (character == 0xFA3D) {
 
6281
            sb.append((char) 0x6094);
 
6282
        }
 
6283
        else if (character == 0xFA3E) {
 
6284
            sb.append((char) 0x6168);
 
6285
        }
 
6286
        else if (character == 0xFA3F) {
 
6287
            sb.append((char) 0x618E);
 
6288
        }
 
6289
        else if (character == 0xFA40) {
 
6290
            sb.append((char) 0x61F2);
 
6291
        }
 
6292
        else if (character == 0xFA41) {
 
6293
            sb.append((char) 0x654F);
 
6294
        }
 
6295
        else if (character == 0xFA42) {
 
6296
            sb.append((char) 0x65E2);
 
6297
        }
 
6298
        else if (character == 0xFA43) {
 
6299
            sb.append((char) 0x6691);
 
6300
        }
 
6301
        else if (character == 0xFA44) {
 
6302
            sb.append((char) 0x6885);
 
6303
        }
 
6304
        else if (character == 0xFA45) {
 
6305
            sb.append((char) 0x6D77);
 
6306
        }
 
6307
        else if (character == 0xFA46) {
 
6308
            sb.append((char) 0x6E1A);
 
6309
        }
 
6310
        else if (character == 0xFA47) {
 
6311
            sb.append((char) 0x6F22);
 
6312
        }
 
6313
        else if (character == 0xFA48) {
 
6314
            sb.append((char) 0x716E);
 
6315
        }
 
6316
        else if (character == 0xFA49) {
 
6317
            sb.append((char) 0x722B);
 
6318
        }
 
6319
        else if (character == 0xFA4A) {
 
6320
            sb.append((char) 0x7422);
 
6321
        }
 
6322
        else if (character == 0xFA4B) {
 
6323
            sb.append((char) 0x7891);
 
6324
        }
 
6325
        else if (character == 0xFA4C) {
 
6326
            sb.append((char) 0x793E);
 
6327
        }
 
6328
        else if (character == 0xFA4D) {
 
6329
            sb.append((char) 0x7949);
 
6330
        }
 
6331
        else if (character == 0xFA4E) {
 
6332
            sb.append((char) 0x7948);
 
6333
        }
 
6334
        else if (character == 0xFA4F) {
 
6335
            sb.append((char) 0x7950);
 
6336
        }
 
6337
        else if (character == 0xFA50) {
 
6338
            sb.append((char) 0x7956);
 
6339
        }
 
6340
        else if (character == 0xFA51) {
 
6341
            sb.append((char) 0x795D);
 
6342
        }
 
6343
        else if (character == 0xFA52) {
 
6344
            sb.append((char) 0x798D);
 
6345
        }
 
6346
        else if (character == 0xFA53) {
 
6347
            sb.append((char) 0x798E);
 
6348
        }
 
6349
        else if (character == 0xFA54) {
 
6350
            sb.append((char) 0x7A40);
 
6351
        }
 
6352
        else if (character == 0xFA55) {
 
6353
            sb.append((char) 0x7A81);
 
6354
        }
 
6355
        else if (character == 0xFA56) {
 
6356
            sb.append((char) 0x7BC0);
 
6357
        }
 
6358
        else if (character == 0xFA57) {
 
6359
            sb.append((char) 0x7DF4);
 
6360
        }
 
6361
        else if (character == 0xFA58) {
 
6362
            sb.append((char) 0x7E09);
 
6363
        }
 
6364
        else if (character == 0xFA59) {
 
6365
            sb.append((char) 0x7E41);
 
6366
        }
 
6367
        else if (character == 0xFA5A) {
 
6368
            sb.append((char) 0x7F72);
 
6369
        }
 
6370
        else if (character == 0xFA5B) {
 
6371
            sb.append((char) 0x8005);
 
6372
        }
 
6373
        else if (character == 0xFA5C) {
 
6374
            sb.append((char) 0x81ED);
 
6375
        }
 
6376
        else if (character == 0xFA5D) {
 
6377
            sb.append((char) 0x8279);
 
6378
        }
 
6379
        else if (character == 0xFA5E) {
 
6380
            sb.append((char) 0x8279);
 
6381
        }
 
6382
        else if (character == 0xFA5F) {
 
6383
            sb.append((char) 0x8457);
 
6384
        }
 
6385
        else if (character == 0xFA60) {
 
6386
            sb.append((char) 0x8910);
 
6387
        }
 
6388
        else if (character == 0xFA61) {
 
6389
            sb.append((char) 0x8996);
 
6390
        }
 
6391
        else if (character == 0xFA62) {
 
6392
            sb.append((char) 0x8B01);
 
6393
        }
 
6394
        else if (character == 0xFA63) {
 
6395
            sb.append((char) 0x8B39);
 
6396
        }
 
6397
        else if (character == 0xFA64) {
 
6398
            sb.append((char) 0x8CD3);
 
6399
        }
 
6400
        else if (character == 0xFA65) {
 
6401
            sb.append((char) 0x8D08);
 
6402
        }
 
6403
        else if (character == 0xFA66) {
 
6404
            sb.append((char) 0x8FB6);
 
6405
        }
 
6406
        else if (character == 0xFA67) {
 
6407
            sb.append((char) 0x9038);
 
6408
        }
 
6409
        else if (character == 0xFA68) {
 
6410
            sb.append((char) 0x96E3);
 
6411
        }
 
6412
        else if (character == 0xFA69) {
 
6413
            sb.append((char) 0x97FF);
 
6414
        }
 
6415
        else if (character == 0xFA6A) {
 
6416
            sb.append((char) 0x983B);
 
6417
        }
 
6418
        else if (character == 0xFB1D) {
 
6419
            sb.append((char) 0x05D9);
 
6420
            sb.append((char) 0x05B4);
 
6421
        }
 
6422
        else if (character == 0xFB1F) {
 
6423
            sb.append((char) 0x05F2);
 
6424
            sb.append((char) 0x05B7);
 
6425
        }
 
6426
        else if (character == 0xFB2A) {
 
6427
            sb.append((char) 0x05E9);
 
6428
            sb.append((char) 0x05C1);
 
6429
        }
 
6430
        else if (character == 0xFB2B) {
 
6431
            sb.append((char) 0x05E9);
 
6432
            sb.append((char) 0x05C2);
 
6433
        }
 
6434
        else if (character == 0xFB2C) {
 
6435
            sb.append((char) 0xFB49);
 
6436
            sb.append((char) 0x05C1);
 
6437
        }
 
6438
        else if (character == 0xFB2D) {
 
6439
            sb.append((char) 0xFB49);
 
6440
            sb.append((char) 0x05C2);
 
6441
        }
 
6442
        else if (character == 0xFB2E) {
 
6443
            sb.append((char) 0x05D0);
 
6444
            sb.append((char) 0x05B7);
 
6445
        }
 
6446
        else if (character == 0xFB2F) {
 
6447
            sb.append((char) 0x05D0);
 
6448
            sb.append((char) 0x05B8);
 
6449
        }
 
6450
        else if (character == 0xFB30) {
 
6451
            sb.append((char) 0x05D0);
 
6452
            sb.append((char) 0x05BC);
 
6453
        }
 
6454
        else if (character == 0xFB31) {
 
6455
            sb.append((char) 0x05D1);
 
6456
            sb.append((char) 0x05BC);
 
6457
        }
 
6458
        else if (character == 0xFB32) {
 
6459
            sb.append((char) 0x05D2);
 
6460
            sb.append((char) 0x05BC);
 
6461
        }
 
6462
        else if (character == 0xFB33) {
 
6463
            sb.append((char) 0x05D3);
 
6464
            sb.append((char) 0x05BC);
 
6465
        }
 
6466
        else if (character == 0xFB34) {
 
6467
            sb.append((char) 0x05D4);
 
6468
            sb.append((char) 0x05BC);
 
6469
        }
 
6470
        else if (character == 0xFB35) {
 
6471
            sb.append((char) 0x05D5);
 
6472
            sb.append((char) 0x05BC);
 
6473
        }
 
6474
        else if (character == 0xFB36) {
 
6475
            sb.append((char) 0x05D6);
 
6476
            sb.append((char) 0x05BC);
 
6477
        }
 
6478
        else if (character == 0xFB38) {
 
6479
            sb.append((char) 0x05D8);
 
6480
            sb.append((char) 0x05BC);
 
6481
        }
 
6482
        else if (character == 0xFB39) {
 
6483
            sb.append((char) 0x05D9);
 
6484
            sb.append((char) 0x05BC);
 
6485
        }
 
6486
        else if (character == 0xFB3A) {
 
6487
            sb.append((char) 0x05DA);
 
6488
            sb.append((char) 0x05BC);
 
6489
        }
 
6490
        else if (character == 0xFB3B) {
 
6491
            sb.append((char) 0x05DB);
 
6492
            sb.append((char) 0x05BC);
 
6493
        }
 
6494
        else if (character == 0xFB3C) {
 
6495
            sb.append((char) 0x05DC);
 
6496
            sb.append((char) 0x05BC);
 
6497
        }
 
6498
        else if (character == 0xFB3E) {
 
6499
            sb.append((char) 0x05DE);
 
6500
            sb.append((char) 0x05BC);
 
6501
        }
 
6502
        else if (character == 0xFB40) {
 
6503
            sb.append((char) 0x05E0);
 
6504
            sb.append((char) 0x05BC);
 
6505
        }
 
6506
        else if (character == 0xFB41) {
 
6507
            sb.append((char) 0x05E1);
 
6508
            sb.append((char) 0x05BC);
 
6509
        }
 
6510
        else if (character == 0xFB43) {
 
6511
            sb.append((char) 0x05E3);
 
6512
            sb.append((char) 0x05BC);
 
6513
        }
 
6514
        else if (character == 0xFB44) {
 
6515
            sb.append((char) 0x05E4);
 
6516
            sb.append((char) 0x05BC);
 
6517
        }
 
6518
        else if (character == 0xFB46) {
 
6519
            sb.append((char) 0x05E6);
 
6520
            sb.append((char) 0x05BC);
 
6521
        }
 
6522
        else if (character == 0xFB47) {
 
6523
            sb.append((char) 0x05E7);
 
6524
            sb.append((char) 0x05BC);
 
6525
        }
 
6526
        else if (character == 0xFB48) {
 
6527
            sb.append((char) 0x05E8);
 
6528
            sb.append((char) 0x05BC);
 
6529
        }
 
6530
        else if (character == 0xFB49) {
 
6531
            sb.append((char) 0x05E9);
 
6532
            sb.append((char) 0x05BC);
 
6533
        }
 
6534
        else if (character == 0xFB4A) {
 
6535
            sb.append((char) 0x05EA);
 
6536
            sb.append((char) 0x05BC);
 
6537
        }
 
6538
        else if (character == 0xFB4B) {
 
6539
            sb.append((char) 0x05D5);
 
6540
            sb.append((char) 0x05B9);
 
6541
        }
 
6542
        else if (character == 0xFB4C) {
 
6543
            sb.append((char) 0x05D1);
 
6544
            sb.append((char) 0x05BF);
 
6545
        }
 
6546
        else if (character == 0xFB4D) {
 
6547
            sb.append((char) 0x05DB);
 
6548
            sb.append((char) 0x05BF);
 
6549
        }
 
6550
        else if (character == 0xFB4E) {
 
6551
            sb.append((char) 0x05E4);
 
6552
            sb.append((char) 0x05BF);
 
6553
        }
 
6554
        else if (character == 0x1D15E) {
 
6555
            sb.append((char) 0xd834);
 
6556
            sb.append((char) 0xdd57);
 
6557
            sb.append((char) 0xd834);
 
6558
            sb.append((char) 0xdd65);
 
6559
        }
 
6560
        else if (character == 0x1D15F) {
 
6561
            sb.append((char) 0xd834);
 
6562
            sb.append((char) 0xdd58);
 
6563
            sb.append((char) 0xd834);
 
6564
            sb.append((char) 0xdd65);
 
6565
        }
 
6566
        else if (character == 0x1D160) {
 
6567
            sb.append((char) 0xd834);
 
6568
            sb.append((char) 0xdd5f);
 
6569
            sb.append((char) 0xd834);
 
6570
            sb.append((char) 0xdd6e);
 
6571
        }
 
6572
        else if (character == 0x1D161) {
 
6573
            sb.append((char) 0xd834);
 
6574
            sb.append((char) 0xdd5f);
 
6575
            sb.append((char) 0xd834);
 
6576
            sb.append((char) 0xdd6f);
 
6577
        }
 
6578
        else if (character == 0x1D162) {
 
6579
            sb.append((char) 0xd834);
 
6580
            sb.append((char) 0xdd5f);
 
6581
            sb.append((char) 0xd834);
 
6582
            sb.append((char) 0xdd70);
 
6583
        }
 
6584
        else if (character == 0x1D163) {
 
6585
            sb.append((char) 0xd834);
 
6586
            sb.append((char) 0xdd5f);
 
6587
            sb.append((char) 0xd834);
 
6588
            sb.append((char) 0xdd71);
 
6589
        }
 
6590
        else if (character == 0x1D164) {
 
6591
            sb.append((char) 0xd834);
 
6592
            sb.append((char) 0xdd5f);
 
6593
            sb.append((char) 0xd834);
 
6594
            sb.append((char) 0xdd72);
 
6595
        }
 
6596
        else if (character == 0x1D1BB) {
 
6597
            sb.append((char) 0xd834);
 
6598
            sb.append((char) 0xddb9);
 
6599
            sb.append((char) 0xd834);
 
6600
            sb.append((char) 0xdd65);
 
6601
        }
 
6602
        else if (character == 0x1D1BC) {
 
6603
            sb.append((char) 0xd834);
 
6604
            sb.append((char) 0xddba);
 
6605
            sb.append((char) 0xd834);
 
6606
            sb.append((char) 0xdd65);
 
6607
        }
 
6608
        else if (character == 0x1D1BD) {
 
6609
            sb.append((char) 0xd834);
 
6610
            sb.append((char) 0xddbb);
 
6611
            sb.append((char) 0xd834);
 
6612
            sb.append((char) 0xdd6e);
 
6613
        }
 
6614
        else if (character == 0x1D1BE) {
 
6615
            sb.append((char) 0xd834);
 
6616
            sb.append((char) 0xddbc);
 
6617
            sb.append((char) 0xd834);
 
6618
            sb.append((char) 0xdd6e);
 
6619
        }
 
6620
        else if (character == 0x1D1BF) {
 
6621
            sb.append((char) 0xd834);
 
6622
            sb.append((char) 0xddbb);
 
6623
            sb.append((char) 0xd834);
 
6624
            sb.append((char) 0xdd6f);
 
6625
        }
 
6626
        else if (character == 0x1D1C0) {
 
6627
            sb.append((char) 0xd834);
 
6628
            sb.append((char) 0xddbc);
 
6629
            sb.append((char) 0xd834);
 
6630
            sb.append((char) 0xdd6f);
 
6631
        }
 
6632
        else if (character == 0x2F800) {
 
6633
            sb.append((char) 0x4E3D);
 
6634
        }
 
6635
        else if (character == 0x2F801) {
 
6636
            sb.append((char) 0x4E38);
 
6637
        }
 
6638
        else if (character == 0x2F802) {
 
6639
            sb.append((char) 0x4E41);
 
6640
        }
 
6641
        else if (character == 0x2F803) {
 
6642
            sb.append((char) 0xd840);
 
6643
            sb.append((char) 0xdd22);
 
6644
        }
 
6645
        else if (character == 0x2F804) {
 
6646
            sb.append((char) 0x4F60);
 
6647
        }
 
6648
        else if (character == 0x2F805) {
 
6649
            sb.append((char) 0x4FAE);
 
6650
        }
 
6651
        else if (character == 0x2F806) {
 
6652
            sb.append((char) 0x4FBB);
 
6653
        }
 
6654
        else if (character == 0x2F807) {
 
6655
            sb.append((char) 0x5002);
 
6656
        }
 
6657
        else if (character == 0x2F808) {
 
6658
            sb.append((char) 0x507A);
 
6659
        }
 
6660
        else if (character == 0x2F809) {
 
6661
            sb.append((char) 0x5099);
 
6662
        }
 
6663
        else if (character == 0x2F80A) {
 
6664
            sb.append((char) 0x50E7);
 
6665
        }
 
6666
        else if (character == 0x2F80B) {
 
6667
            sb.append((char) 0x50CF);
 
6668
        }
 
6669
        else if (character == 0x2F80C) {
 
6670
            sb.append((char) 0x349E);
 
6671
        }
 
6672
        else if (character == 0x2F80D) {
 
6673
            sb.append((char) 0xd841);
 
6674
            sb.append((char) 0xde3a);
 
6675
        }
 
6676
        else if (character == 0x2F80E) {
 
6677
            sb.append((char) 0x514D);
 
6678
        }
 
6679
        else if (character == 0x2F80F) {
 
6680
            sb.append((char) 0x5154);
 
6681
        }
 
6682
        else if (character == 0x2F810) {
 
6683
            sb.append((char) 0x5164);
 
6684
        }
 
6685
        else if (character == 0x2F811) {
 
6686
            sb.append((char) 0x5177);
 
6687
        }
 
6688
        else if (character == 0x2F812) {
 
6689
            sb.append((char) 0xd841);
 
6690
            sb.append((char) 0xdd1c);
 
6691
        }
 
6692
        else if (character == 0x2F813) {
 
6693
            sb.append((char) 0x34B9);
 
6694
        }
 
6695
        else if (character == 0x2F814) {
 
6696
            sb.append((char) 0x5167);
 
6697
        }
 
6698
        else if (character == 0x2F815) {
 
6699
            sb.append((char) 0x518D);
 
6700
        }
 
6701
        else if (character == 0x2F816) {
 
6702
            sb.append((char) 0xd841);
 
6703
            sb.append((char) 0xdd4b);
 
6704
        }
 
6705
        else if (character == 0x2F817) {
 
6706
            sb.append((char) 0x5197);
 
6707
        }
 
6708
        else if (character == 0x2F818) {
 
6709
            sb.append((char) 0x51A4);
 
6710
        }
 
6711
        else if (character == 0x2F819) {
 
6712
            sb.append((char) 0x4ECC);
 
6713
        }
 
6714
        else if (character == 0x2F81A) {
 
6715
            sb.append((char) 0x51AC);
 
6716
        }
 
6717
        else if (character == 0x2F81B) {
 
6718
            sb.append((char) 0x51B5);
 
6719
        }
 
6720
        else if (character == 0x2F81C) {
 
6721
            sb.append((char) 0xd864);
 
6722
            sb.append((char) 0xdddf);
 
6723
        }
 
6724
        else if (character == 0x2F81D) {
 
6725
            sb.append((char) 0x51F5);
 
6726
        }
 
6727
        else if (character == 0x2F81E) {
 
6728
            sb.append((char) 0x5203);
 
6729
        }
 
6730
        else if (character == 0x2F81F) {
 
6731
            sb.append((char) 0x34DF);
 
6732
        }
 
6733
        else if (character == 0x2F820) {
 
6734
            sb.append((char) 0x523B);
 
6735
        }
 
6736
        else if (character == 0x2F821) {
 
6737
            sb.append((char) 0x5246);
 
6738
        }
 
6739
        else if (character == 0x2F822) {
 
6740
            sb.append((char) 0x5272);
 
6741
        }
 
6742
        else if (character == 0x2F823) {
 
6743
            sb.append((char) 0x5277);
 
6744
        }
 
6745
        else if (character == 0x2F824) {
 
6746
            sb.append((char) 0x3515);
 
6747
        }
 
6748
        else if (character == 0x2F825) {
 
6749
            sb.append((char) 0x52C7);
 
6750
        }
 
6751
        else if (character == 0x2F826) {
 
6752
            sb.append((char) 0x52C9);
 
6753
        }
 
6754
        else if (character == 0x2F827) {
 
6755
            sb.append((char) 0x52E4);
 
6756
        }
 
6757
        else if (character == 0x2F828) {
 
6758
            sb.append((char) 0x52FA);
 
6759
        }
 
6760
        else if (character == 0x2F829) {
 
6761
            sb.append((char) 0x5305);
 
6762
        }
 
6763
        else if (character == 0x2F82A) {
 
6764
            sb.append((char) 0x5306);
 
6765
        }
 
6766
        else if (character == 0x2F82B) {
 
6767
            sb.append((char) 0x5317);
 
6768
        }
 
6769
        else if (character == 0x2F82C) {
 
6770
            sb.append((char) 0x5349);
 
6771
        }
 
6772
        else if (character == 0x2F82D) {
 
6773
            sb.append((char) 0x5351);
 
6774
        }
 
6775
        else if (character == 0x2F82E) {
 
6776
            sb.append((char) 0x535A);
 
6777
        }
 
6778
        else if (character == 0x2F82F) {
 
6779
            sb.append((char) 0x5373);
 
6780
        }
 
6781
        else if (character == 0x2F830) {
 
6782
            sb.append((char) 0x537D);
 
6783
        }
 
6784
        else if (character == 0x2F831) {
 
6785
            sb.append((char) 0x537F);
 
6786
        }
 
6787
        else if (character == 0x2F832) {
 
6788
            sb.append((char) 0x537F);
 
6789
        }
 
6790
        else if (character == 0x2F833) {
 
6791
            sb.append((char) 0x537F);
 
6792
        }
 
6793
        else if (character == 0x2F834) {
 
6794
            sb.append((char) 0xd842);
 
6795
            sb.append((char) 0xde2c);
 
6796
        }
 
6797
        else if (character == 0x2F835) {
 
6798
            sb.append((char) 0x7070);
 
6799
        }
 
6800
        else if (character == 0x2F836) {
 
6801
            sb.append((char) 0x53CA);
 
6802
        }
 
6803
        else if (character == 0x2F837) {
 
6804
            sb.append((char) 0x53DF);
 
6805
        }
 
6806
        else if (character == 0x2F838) {
 
6807
            sb.append((char) 0xd842);
 
6808
            sb.append((char) 0xdf63);
 
6809
        }
 
6810
        else if (character == 0x2F839) {
 
6811
            sb.append((char) 0x53EB);
 
6812
        }
 
6813
        else if (character == 0x2F83A) {
 
6814
            sb.append((char) 0x53F1);
 
6815
        }
 
6816
        else if (character == 0x2F83B) {
 
6817
            sb.append((char) 0x5406);
 
6818
        }
 
6819
        else if (character == 0x2F83C) {
 
6820
            sb.append((char) 0x549E);
 
6821
        }
 
6822
        else if (character == 0x2F83D) {
 
6823
            sb.append((char) 0x5438);
 
6824
        }
 
6825
        else if (character == 0x2F83E) {
 
6826
            sb.append((char) 0x5448);
 
6827
        }
 
6828
        else if (character == 0x2F83F) {
 
6829
            sb.append((char) 0x5468);
 
6830
        }
 
6831
        else if (character == 0x2F840) {
 
6832
            sb.append((char) 0x54A2);
 
6833
        }
 
6834
        else if (character == 0x2F841) {
 
6835
            sb.append((char) 0x54F6);
 
6836
        }
 
6837
        else if (character == 0x2F842) {
 
6838
            sb.append((char) 0x5510);
 
6839
        }
 
6840
        else if (character == 0x2F843) {
 
6841
            sb.append((char) 0x5553);
 
6842
        }
 
6843
        else if (character == 0x2F844) {
 
6844
            sb.append((char) 0x5563);
 
6845
        }
 
6846
        else if (character == 0x2F845) {
 
6847
            sb.append((char) 0x5584);
 
6848
        }
 
6849
        else if (character == 0x2F846) {
 
6850
            sb.append((char) 0x5584);
 
6851
        }
 
6852
        else if (character == 0x2F847) {
 
6853
            sb.append((char) 0x5599);
 
6854
        }
 
6855
        else if (character == 0x2F848) {
 
6856
            sb.append((char) 0x55AB);
 
6857
        }
 
6858
        else if (character == 0x2F849) {
 
6859
            sb.append((char) 0x55B3);
 
6860
        }
 
6861
        else if (character == 0x2F84A) {
 
6862
            sb.append((char) 0x55C2);
 
6863
        }
 
6864
        else if (character == 0x2F84B) {
 
6865
            sb.append((char) 0x5716);
 
6866
        }
 
6867
        else if (character == 0x2F84C) {
 
6868
            sb.append((char) 0x5606);
 
6869
        }
 
6870
        else if (character == 0x2F84D) {
 
6871
            sb.append((char) 0x5717);
 
6872
        }
 
6873
        else if (character == 0x2F84E) {
 
6874
            sb.append((char) 0x5651);
 
6875
        }
 
6876
        else if (character == 0x2F84F) {
 
6877
            sb.append((char) 0x5674);
 
6878
        }
 
6879
        else if (character == 0x2F850) {
 
6880
            sb.append((char) 0x5207);
 
6881
        }
 
6882
        else if (character == 0x2F851) {
 
6883
            sb.append((char) 0x58EE);
 
6884
        }
 
6885
        else if (character == 0x2F852) {
 
6886
            sb.append((char) 0x57CE);
 
6887
        }
 
6888
        else if (character == 0x2F853) {
 
6889
            sb.append((char) 0x57F4);
 
6890
        }
 
6891
        else if (character == 0x2F854) {
 
6892
            sb.append((char) 0x580D);
 
6893
        }
 
6894
        else if (character == 0x2F855) {
 
6895
            sb.append((char) 0x578B);
 
6896
        }
 
6897
        else if (character == 0x2F856) {
 
6898
            sb.append((char) 0x5832);
 
6899
        }
 
6900
        else if (character == 0x2F857) {
 
6901
            sb.append((char) 0x5831);
 
6902
        }
 
6903
        else if (character == 0x2F858) {
 
6904
            sb.append((char) 0x58AC);
 
6905
        }
 
6906
        else if (character == 0x2F859) {
 
6907
            sb.append((char) 0xd845);
 
6908
            sb.append((char) 0xdce4);
 
6909
        }
 
6910
        else if (character == 0x2F85A) {
 
6911
            sb.append((char) 0x58F2);
 
6912
        }
 
6913
        else if (character == 0x2F85B) {
 
6914
            sb.append((char) 0x58F7);
 
6915
        }
 
6916
        else if (character == 0x2F85C) {
 
6917
            sb.append((char) 0x5906);
 
6918
        }
 
6919
        else if (character == 0x2F85D) {
 
6920
            sb.append((char) 0x591A);
 
6921
        }
 
6922
        else if (character == 0x2F85E) {
 
6923
            sb.append((char) 0x5922);
 
6924
        }
 
6925
        else if (character == 0x2F85F) {
 
6926
            sb.append((char) 0x5962);
 
6927
        }
 
6928
        else if (character == 0x2F860) {
 
6929
            sb.append((char) 0xd845);
 
6930
            sb.append((char) 0xdea8);
 
6931
        }
 
6932
        else if (character == 0x2F861) {
 
6933
            sb.append((char) 0xd845);
 
6934
            sb.append((char) 0xdeea);
 
6935
        }
 
6936
        else if (character == 0x2F862) {
 
6937
            sb.append((char) 0x59EC);
 
6938
        }
 
6939
        else if (character == 0x2F863) {
 
6940
            sb.append((char) 0x5A1B);
 
6941
        }
 
6942
        else if (character == 0x2F864) {
 
6943
            sb.append((char) 0x5A27);
 
6944
        }
 
6945
        else if (character == 0x2F865) {
 
6946
            sb.append((char) 0x59D8);
 
6947
        }
 
6948
        else if (character == 0x2F866) {
 
6949
            sb.append((char) 0x5A66);
 
6950
        }
 
6951
        else if (character == 0x2F867) {
 
6952
            sb.append((char) 0x36EE);
 
6953
        }
 
6954
        else if (character == 0x2F868) {
 
6955
            sb.append((char) 0x36FC);
 
6956
        }
 
6957
        else if (character == 0x2F869) {
 
6958
            sb.append((char) 0x5B08);
 
6959
        }
 
6960
        else if (character == 0x2F86A) {
 
6961
            sb.append((char) 0x5B3E);
 
6962
        }
 
6963
        else if (character == 0x2F86B) {
 
6964
            sb.append((char) 0x5B3E);
 
6965
        }
 
6966
        else if (character == 0x2F86C) {
 
6967
            sb.append((char) 0xd846);
 
6968
            sb.append((char) 0xddc8);
 
6969
        }
 
6970
        else if (character == 0x2F86D) {
 
6971
            sb.append((char) 0x5BC3);
 
6972
        }
 
6973
        else if (character == 0x2F86E) {
 
6974
            sb.append((char) 0x5BD8);
 
6975
        }
 
6976
        else if (character == 0x2F86F) {
 
6977
            sb.append((char) 0x5BE7);
 
6978
        }
 
6979
        else if (character == 0x2F870) {
 
6980
            sb.append((char) 0x5BF3);
 
6981
        }
 
6982
        else if (character == 0x2F871) {
 
6983
            sb.append((char) 0xd846);
 
6984
            sb.append((char) 0xdf18);
 
6985
        }
 
6986
        else if (character == 0x2F872) {
 
6987
            sb.append((char) 0x5BFF);
 
6988
        }
 
6989
        else if (character == 0x2F873) {
 
6990
            sb.append((char) 0x5C06);
 
6991
        }
 
6992
        else if (character == 0x2F874) {
 
6993
            sb.append((char) 0x5F53);
 
6994
        }
 
6995
        else if (character == 0x2F875) {
 
6996
            sb.append((char) 0x5C22);
 
6997
        }
 
6998
        else if (character == 0x2F876) {
 
6999
            sb.append((char) 0x3781);
 
7000
        }
 
7001
        else if (character == 0x2F877) {
 
7002
            sb.append((char) 0x5C60);
 
7003
        }
 
7004
        else if (character == 0x2F878) {
 
7005
            sb.append((char) 0x5C6E);
 
7006
        }
 
7007
        else if (character == 0x2F879) {
 
7008
            sb.append((char) 0x5CC0);
 
7009
        }
 
7010
        else if (character == 0x2F87A) {
 
7011
            sb.append((char) 0x5C8D);
 
7012
        }
 
7013
        else if (character == 0x2F87B) {
 
7014
            sb.append((char) 0xd847);
 
7015
            sb.append((char) 0xdde4);
 
7016
        }
 
7017
        else if (character == 0x2F87C) {
 
7018
            sb.append((char) 0x5D43);
 
7019
        }
 
7020
        else if (character == 0x2F87D) {
 
7021
            sb.append((char) 0xd847);
 
7022
            sb.append((char) 0xdde6);
 
7023
        }
 
7024
        else if (character == 0x2F87E) {
 
7025
            sb.append((char) 0x5D6E);
 
7026
        }
 
7027
        else if (character == 0x2F87F) {
 
7028
            sb.append((char) 0x5D6B);
 
7029
        }
 
7030
        else if (character == 0x2F880) {
 
7031
            sb.append((char) 0x5D7C);
 
7032
        }
 
7033
        else if (character == 0x2F881) {
 
7034
            sb.append((char) 0x5DE1);
 
7035
        }
 
7036
        else if (character == 0x2F882) {
 
7037
            sb.append((char) 0x5DE2);
 
7038
        }
 
7039
        else if (character == 0x2F883) {
 
7040
            sb.append((char) 0x382F);
 
7041
        }
 
7042
        else if (character == 0x2F884) {
 
7043
            sb.append((char) 0x5DFD);
 
7044
        }
 
7045
        else if (character == 0x2F885) {
 
7046
            sb.append((char) 0x5E28);
 
7047
        }
 
7048
        else if (character == 0x2F886) {
 
7049
            sb.append((char) 0x5E3D);
 
7050
        }
 
7051
        else if (character == 0x2F887) {
 
7052
            sb.append((char) 0x5E69);
 
7053
        }
 
7054
        else if (character == 0x2F888) {
 
7055
            sb.append((char) 0x3862);
 
7056
        }
 
7057
        else if (character == 0x2F889) {
 
7058
            sb.append((char) 0xd848);
 
7059
            sb.append((char) 0xdd83);
 
7060
        }
 
7061
        else if (character == 0x2F88A) {
 
7062
            sb.append((char) 0x387C);
 
7063
        }
 
7064
        else if (character == 0x2F88B) {
 
7065
            sb.append((char) 0x5EB0);
 
7066
        }
 
7067
        else if (character == 0x2F88C) {
 
7068
            sb.append((char) 0x5EB3);
 
7069
        }
 
7070
        else if (character == 0x2F88D) {
 
7071
            sb.append((char) 0x5EB6);
 
7072
        }
 
7073
        else if (character == 0x2F88E) {
 
7074
            sb.append((char) 0x5ECA);
 
7075
        }
 
7076
        else if (character == 0x2F88F) {
 
7077
            sb.append((char) 0xd868);
 
7078
            sb.append((char) 0xdf92);
 
7079
        }
 
7080
        else if (character == 0x2F890) {
 
7081
            sb.append((char) 0x5EFE);
 
7082
        }
 
7083
        else if (character == 0x2F891) {
 
7084
            sb.append((char) 0xd848);
 
7085
            sb.append((char) 0xdf31);
 
7086
        }
 
7087
        else if (character == 0x2F892) {
 
7088
            sb.append((char) 0xd848);
 
7089
            sb.append((char) 0xdf31);
 
7090
        }
 
7091
        else if (character == 0x2F893) {
 
7092
            sb.append((char) 0x8201);
 
7093
        }
 
7094
        else if (character == 0x2F894) {
 
7095
            sb.append((char) 0x5F22);
 
7096
        }
 
7097
        else if (character == 0x2F895) {
 
7098
            sb.append((char) 0x5F22);
 
7099
        }
 
7100
        else if (character == 0x2F896) {
 
7101
            sb.append((char) 0x38C7);
 
7102
        }
 
7103
        else if (character == 0x2F897) {
 
7104
            sb.append((char) 0xd84c);
 
7105
            sb.append((char) 0xdeb8);
 
7106
        }
 
7107
        else if (character == 0x2F898) {
 
7108
            sb.append((char) 0xd858);
 
7109
            sb.append((char) 0xddda);
 
7110
        }
 
7111
        else if (character == 0x2F899) {
 
7112
            sb.append((char) 0x5F62);
 
7113
        }
 
7114
        else if (character == 0x2F89A) {
 
7115
            sb.append((char) 0x5F6B);
 
7116
        }
 
7117
        else if (character == 0x2F89B) {
 
7118
            sb.append((char) 0x38E3);
 
7119
        }
 
7120
        else if (character == 0x2F89C) {
 
7121
            sb.append((char) 0x5F9A);
 
7122
        }
 
7123
        else if (character == 0x2F89D) {
 
7124
            sb.append((char) 0x5FCD);
 
7125
        }
 
7126
        else if (character == 0x2F89E) {
 
7127
            sb.append((char) 0x5FD7);
 
7128
        }
 
7129
        else if (character == 0x2F89F) {
 
7130
            sb.append((char) 0x5FF9);
 
7131
        }
 
7132
        else if (character == 0x2F8A0) {
 
7133
            sb.append((char) 0x6081);
 
7134
        }
 
7135
        else if (character == 0x2F8A1) {
 
7136
            sb.append((char) 0x393A);
 
7137
        }
 
7138
        else if (character == 0x2F8A2) {
 
7139
            sb.append((char) 0x391C);
 
7140
        }
 
7141
        else if (character == 0x2F8A3) {
 
7142
            sb.append((char) 0x6094);
 
7143
        }
 
7144
        else if (character == 0x2F8A4) {
 
7145
            sb.append((char) 0xd849);
 
7146
            sb.append((char) 0xded4);
 
7147
        }
 
7148
        else if (character == 0x2F8A5) {
 
7149
            sb.append((char) 0x60C7);
 
7150
        }
 
7151
        else if (character == 0x2F8A6) {
 
7152
            sb.append((char) 0x6148);
 
7153
        }
 
7154
        else if (character == 0x2F8A7) {
 
7155
            sb.append((char) 0x614C);
 
7156
        }
 
7157
        else if (character == 0x2F8A8) {
 
7158
            sb.append((char) 0x614E);
 
7159
        }
 
7160
        else if (character == 0x2F8A9) {
 
7161
            sb.append((char) 0x614C);
 
7162
        }
 
7163
        else if (character == 0x2F8AA) {
 
7164
            sb.append((char) 0x617A);
 
7165
        }
 
7166
        else if (character == 0x2F8AB) {
 
7167
            sb.append((char) 0x618E);
 
7168
        }
 
7169
        else if (character == 0x2F8AC) {
 
7170
            sb.append((char) 0x61B2);
 
7171
        }
 
7172
        else if (character == 0x2F8AD) {
 
7173
            sb.append((char) 0x61A4);
 
7174
        }
 
7175
        else if (character == 0x2F8AE) {
 
7176
            sb.append((char) 0x61AF);
 
7177
        }
 
7178
        else if (character == 0x2F8AF) {
 
7179
            sb.append((char) 0x61DE);
 
7180
        }
 
7181
        else if (character == 0x2F8B0) {
 
7182
            sb.append((char) 0x61F2);
 
7183
        }
 
7184
        else if (character == 0x2F8B1) {
 
7185
            sb.append((char) 0x61F6);
 
7186
        }
 
7187
        else if (character == 0x2F8B2) {
 
7188
            sb.append((char) 0x6210);
 
7189
        }
 
7190
        else if (character == 0x2F8B3) {
 
7191
            sb.append((char) 0x621B);
 
7192
        }
 
7193
        else if (character == 0x2F8B4) {
 
7194
            sb.append((char) 0x625D);
 
7195
        }
 
7196
        else if (character == 0x2F8B5) {
 
7197
            sb.append((char) 0x62B1);
 
7198
        }
 
7199
        else if (character == 0x2F8B6) {
 
7200
            sb.append((char) 0x62D4);
 
7201
        }
 
7202
        else if (character == 0x2F8B7) {
 
7203
            sb.append((char) 0x6350);
 
7204
        }
 
7205
        else if (character == 0x2F8B8) {
 
7206
            sb.append((char) 0xd84a);
 
7207
            sb.append((char) 0xdf0c);
 
7208
        }
 
7209
        else if (character == 0x2F8B9) {
 
7210
            sb.append((char) 0x633D);
 
7211
        }
 
7212
        else if (character == 0x2F8BA) {
 
7213
            sb.append((char) 0x62FC);
 
7214
        }
 
7215
        else if (character == 0x2F8BB) {
 
7216
            sb.append((char) 0x6368);
 
7217
        }
 
7218
        else if (character == 0x2F8BC) {
 
7219
            sb.append((char) 0x6383);
 
7220
        }
 
7221
        else if (character == 0x2F8BD) {
 
7222
            sb.append((char) 0x63E4);
 
7223
        }
 
7224
        else if (character == 0x2F8BE) {
 
7225
            sb.append((char) 0xd84a);
 
7226
            sb.append((char) 0xdff1);
 
7227
        }
 
7228
        else if (character == 0x2F8BF) {
 
7229
            sb.append((char) 0x6422);
 
7230
        }
 
7231
        else if (character == 0x2F8C0) {
 
7232
            sb.append((char) 0x63C5);
 
7233
        }
 
7234
        else if (character == 0x2F8C1) {
 
7235
            sb.append((char) 0x63A9);
 
7236
        }
 
7237
        else if (character == 0x2F8C2) {
 
7238
            sb.append((char) 0x3A2E);
 
7239
        }
 
7240
        else if (character == 0x2F8C3) {
 
7241
            sb.append((char) 0x6469);
 
7242
        }
 
7243
        else if (character == 0x2F8C4) {
 
7244
            sb.append((char) 0x647E);
 
7245
        }
 
7246
        else if (character == 0x2F8C5) {
 
7247
            sb.append((char) 0x649D);
 
7248
        }
 
7249
        else if (character == 0x2F8C6) {
 
7250
            sb.append((char) 0x6477);
 
7251
        }
 
7252
        else if (character == 0x2F8C7) {
 
7253
            sb.append((char) 0x3A6C);
 
7254
        }
 
7255
        else if (character == 0x2F8C8) {
 
7256
            sb.append((char) 0x654F);
 
7257
        }
 
7258
        else if (character == 0x2F8C9) {
 
7259
            sb.append((char) 0x656C);
 
7260
        }
 
7261
        else if (character == 0x2F8CA) {
 
7262
            sb.append((char) 0xd84c);
 
7263
            sb.append((char) 0xdc0a);
 
7264
        }
 
7265
        else if (character == 0x2F8CB) {
 
7266
            sb.append((char) 0x65E3);
 
7267
        }
 
7268
        else if (character == 0x2F8CC) {
 
7269
            sb.append((char) 0x66F8);
 
7270
        }
 
7271
        else if (character == 0x2F8CD) {
 
7272
            sb.append((char) 0x6649);
 
7273
        }
 
7274
        else if (character == 0x2F8CE) {
 
7275
            sb.append((char) 0x3B19);
 
7276
        }
 
7277
        else if (character == 0x2F8CF) {
 
7278
            sb.append((char) 0x6691);
 
7279
        }
 
7280
        else if (character == 0x2F8D0) {
 
7281
            sb.append((char) 0x3B08);
 
7282
        }
 
7283
        else if (character == 0x2F8D1) {
 
7284
            sb.append((char) 0x3AE4);
 
7285
        }
 
7286
        else if (character == 0x2F8D2) {
 
7287
            sb.append((char) 0x5192);
 
7288
        }
 
7289
        else if (character == 0x2F8D3) {
 
7290
            sb.append((char) 0x5195);
 
7291
        }
 
7292
        else if (character == 0x2F8D4) {
 
7293
            sb.append((char) 0x6700);
 
7294
        }
 
7295
        else if (character == 0x2F8D5) {
 
7296
            sb.append((char) 0x669C);
 
7297
        }
 
7298
        else if (character == 0x2F8D6) {
 
7299
            sb.append((char) 0x80AD);
 
7300
        }
 
7301
        else if (character == 0x2F8D7) {
 
7302
            sb.append((char) 0x43D9);
 
7303
        }
 
7304
        else if (character == 0x2F8D8) {
 
7305
            sb.append((char) 0x6717);
 
7306
        }
 
7307
        else if (character == 0x2F8D9) {
 
7308
            sb.append((char) 0x671B);
 
7309
        }
 
7310
        else if (character == 0x2F8DA) {
 
7311
            sb.append((char) 0x6721);
 
7312
        }
 
7313
        else if (character == 0x2F8DB) {
 
7314
            sb.append((char) 0x675E);
 
7315
        }
 
7316
        else if (character == 0x2F8DC) {
 
7317
            sb.append((char) 0x6753);
 
7318
        }
 
7319
        else if (character == 0x2F8DD) {
 
7320
            sb.append((char) 0xd84c);
 
7321
            sb.append((char) 0xdfc3);
 
7322
        }
 
7323
        else if (character == 0x2F8DE) {
 
7324
            sb.append((char) 0x3B49);
 
7325
        }
 
7326
        else if (character == 0x2F8DF) {
 
7327
            sb.append((char) 0x67FA);
 
7328
        }
 
7329
        else if (character == 0x2F8E0) {
 
7330
            sb.append((char) 0x6785);
 
7331
        }
 
7332
        else if (character == 0x2F8E1) {
 
7333
            sb.append((char) 0x6852);
 
7334
        }
 
7335
        else if (character == 0x2F8E2) {
 
7336
            sb.append((char) 0x6885);
 
7337
        }
 
7338
        else if (character == 0x2F8E3) {
 
7339
            sb.append((char) 0xd84d);
 
7340
            sb.append((char) 0xdc6d);
 
7341
        }
 
7342
        else if (character == 0x2F8E4) {
 
7343
            sb.append((char) 0x688E);
 
7344
        }
 
7345
        else if (character == 0x2F8E5) {
 
7346
            sb.append((char) 0x681F);
 
7347
        }
 
7348
        else if (character == 0x2F8E6) {
 
7349
            sb.append((char) 0x6914);
 
7350
        }
 
7351
        else if (character == 0x2F8E7) {
 
7352
            sb.append((char) 0x3B9D);
 
7353
        }
 
7354
        else if (character == 0x2F8E8) {
 
7355
            sb.append((char) 0x6942);
 
7356
        }
 
7357
        else if (character == 0x2F8E9) {
 
7358
            sb.append((char) 0x69A3);
 
7359
        }
 
7360
        else if (character == 0x2F8EA) {
 
7361
            sb.append((char) 0x69EA);
 
7362
        }
 
7363
        else if (character == 0x2F8EB) {
 
7364
            sb.append((char) 0x6AA8);
 
7365
        }
 
7366
        else if (character == 0x2F8EC) {
 
7367
            sb.append((char) 0xd84d);
 
7368
            sb.append((char) 0xdea3);
 
7369
        }
 
7370
        else if (character == 0x2F8ED) {
 
7371
            sb.append((char) 0x6ADB);
 
7372
        }
 
7373
        else if (character == 0x2F8EE) {
 
7374
            sb.append((char) 0x3C18);
 
7375
        }
 
7376
        else if (character == 0x2F8EF) {
 
7377
            sb.append((char) 0x6B21);
 
7378
        }
 
7379
        else if (character == 0x2F8F0) {
 
7380
            sb.append((char) 0xd84e);
 
7381
            sb.append((char) 0xdca7);
 
7382
        }
 
7383
        else if (character == 0x2F8F1) {
 
7384
            sb.append((char) 0x6B54);
 
7385
        }
 
7386
        else if (character == 0x2F8F2) {
 
7387
            sb.append((char) 0x3C4E);
 
7388
        }
 
7389
        else if (character == 0x2F8F3) {
 
7390
            sb.append((char) 0x6B72);
 
7391
        }
 
7392
        else if (character == 0x2F8F4) {
 
7393
            sb.append((char) 0x6B9F);
 
7394
        }
 
7395
        else if (character == 0x2F8F5) {
 
7396
            sb.append((char) 0x6BBA);
 
7397
        }
 
7398
        else if (character == 0x2F8F6) {
 
7399
            sb.append((char) 0x6BBB);
 
7400
        }
 
7401
        else if (character == 0x2F8F7) {
 
7402
            sb.append((char) 0xd84e);
 
7403
            sb.append((char) 0xde8d);
 
7404
        }
 
7405
        else if (character == 0x2F8F8) {
 
7406
            sb.append((char) 0xd847);
 
7407
            sb.append((char) 0xdd0b);
 
7408
        }
 
7409
        else if (character == 0x2F8F9) {
 
7410
            sb.append((char) 0xd84e);
 
7411
            sb.append((char) 0xdefa);
 
7412
        }
 
7413
        else if (character == 0x2F8FA) {
 
7414
            sb.append((char) 0x6C4E);
 
7415
        }
 
7416
        else if (character == 0x2F8FB) {
 
7417
            sb.append((char) 0xd84f);
 
7418
            sb.append((char) 0xdcbc);
 
7419
        }
 
7420
        else if (character == 0x2F8FC) {
 
7421
            sb.append((char) 0x6CBF);
 
7422
        }
 
7423
        else if (character == 0x2F8FD) {
 
7424
            sb.append((char) 0x6CCD);
 
7425
        }
 
7426
        else if (character == 0x2F8FE) {
 
7427
            sb.append((char) 0x6C67);
 
7428
        }
 
7429
        else if (character == 0x2F8FF) {
 
7430
            sb.append((char) 0x6D16);
 
7431
        }
 
7432
        else if (character == 0x2F900) {
 
7433
            sb.append((char) 0x6D3E);
 
7434
        }
 
7435
        else if (character == 0x2F901) {
 
7436
            sb.append((char) 0x6D77);
 
7437
        }
 
7438
        else if (character == 0x2F902) {
 
7439
            sb.append((char) 0x6D41);
 
7440
        }
 
7441
        else if (character == 0x2F903) {
 
7442
            sb.append((char) 0x6D69);
 
7443
        }
 
7444
        else if (character == 0x2F904) {
 
7445
            sb.append((char) 0x6D78);
 
7446
        }
 
7447
        else if (character == 0x2F905) {
 
7448
            sb.append((char) 0x6D85);
 
7449
        }
 
7450
        else if (character == 0x2F906) {
 
7451
            sb.append((char) 0xd84f);
 
7452
            sb.append((char) 0xdd1e);
 
7453
        }
 
7454
        else if (character == 0x2F907) {
 
7455
            sb.append((char) 0x6D34);
 
7456
        }
 
7457
        else if (character == 0x2F908) {
 
7458
            sb.append((char) 0x6E2F);
 
7459
        }
 
7460
        else if (character == 0x2F909) {
 
7461
            sb.append((char) 0x6E6E);
 
7462
        }
 
7463
        else if (character == 0x2F90A) {
 
7464
            sb.append((char) 0x3D33);
 
7465
        }
 
7466
        else if (character == 0x2F90B) {
 
7467
            sb.append((char) 0x6ECB);
 
7468
        }
 
7469
        else if (character == 0x2F90C) {
 
7470
            sb.append((char) 0x6EC7);
 
7471
        }
 
7472
        else if (character == 0x2F90D) {
 
7473
            sb.append((char) 0xd84f);
 
7474
            sb.append((char) 0xded1);
 
7475
        }
 
7476
        else if (character == 0x2F90E) {
 
7477
            sb.append((char) 0x6DF9);
 
7478
        }
 
7479
        else if (character == 0x2F90F) {
 
7480
            sb.append((char) 0x6F6E);
 
7481
        }
 
7482
        else if (character == 0x2F910) {
 
7483
            sb.append((char) 0xd84f);
 
7484
            sb.append((char) 0xdf5e);
 
7485
        }
 
7486
        else if (character == 0x2F911) {
 
7487
            sb.append((char) 0xd84f);
 
7488
            sb.append((char) 0xdf8e);
 
7489
        }
 
7490
        else if (character == 0x2F912) {
 
7491
            sb.append((char) 0x6FC6);
 
7492
        }
 
7493
        else if (character == 0x2F913) {
 
7494
            sb.append((char) 0x7039);
 
7495
        }
 
7496
        else if (character == 0x2F914) {
 
7497
            sb.append((char) 0x701E);
 
7498
        }
 
7499
        else if (character == 0x2F915) {
 
7500
            sb.append((char) 0x701B);
 
7501
        }
 
7502
        else if (character == 0x2F916) {
 
7503
            sb.append((char) 0x3D96);
 
7504
        }
 
7505
        else if (character == 0x2F917) {
 
7506
            sb.append((char) 0x704A);
 
7507
        }
 
7508
        else if (character == 0x2F918) {
 
7509
            sb.append((char) 0x707D);
 
7510
        }
 
7511
        else if (character == 0x2F919) {
 
7512
            sb.append((char) 0x7077);
 
7513
        }
 
7514
        else if (character == 0x2F91A) {
 
7515
            sb.append((char) 0x70AD);
 
7516
        }
 
7517
        else if (character == 0x2F91B) {
 
7518
            sb.append((char) 0xd841);
 
7519
            sb.append((char) 0xdd25);
 
7520
        }
 
7521
        else if (character == 0x2F91C) {
 
7522
            sb.append((char) 0x7145);
 
7523
        }
 
7524
        else if (character == 0x2F91D) {
 
7525
            sb.append((char) 0xd850);
 
7526
            sb.append((char) 0xde63);
 
7527
        }
 
7528
        else if (character == 0x2F91E) {
 
7529
            sb.append((char) 0x719C);
 
7530
        }
 
7531
        else if (character == 0x2F91F) {
 
7532
            sb.append((char) 0xd850);
 
7533
            sb.append((char) 0xdfab);
 
7534
        }
 
7535
        else if (character == 0x2F920) {
 
7536
            sb.append((char) 0x7228);
 
7537
        }
 
7538
        else if (character == 0x2F921) {
 
7539
            sb.append((char) 0x7235);
 
7540
        }
 
7541
        else if (character == 0x2F922) {
 
7542
            sb.append((char) 0x7250);
 
7543
        }
 
7544
        else if (character == 0x2F923) {
 
7545
            sb.append((char) 0xd851);
 
7546
            sb.append((char) 0xde08);
 
7547
        }
 
7548
        else if (character == 0x2F924) {
 
7549
            sb.append((char) 0x7280);
 
7550
        }
 
7551
        else if (character == 0x2F925) {
 
7552
            sb.append((char) 0x7295);
 
7553
        }
 
7554
        else if (character == 0x2F926) {
 
7555
            sb.append((char) 0xd851);
 
7556
            sb.append((char) 0xdf35);
 
7557
        }
 
7558
        else if (character == 0x2F927) {
 
7559
            sb.append((char) 0xd852);
 
7560
            sb.append((char) 0xdc14);
 
7561
        }
 
7562
        else if (character == 0x2F928) {
 
7563
            sb.append((char) 0x737A);
 
7564
        }
 
7565
        else if (character == 0x2F929) {
 
7566
            sb.append((char) 0x738B);
 
7567
        }
 
7568
        else if (character == 0x2F92A) {
 
7569
            sb.append((char) 0x3EAC);
 
7570
        }
 
7571
        else if (character == 0x2F92B) {
 
7572
            sb.append((char) 0x73A5);
 
7573
        }
 
7574
        else if (character == 0x2F92C) {
 
7575
            sb.append((char) 0x3EB8);
 
7576
        }
 
7577
        else if (character == 0x2F92D) {
 
7578
            sb.append((char) 0x3EB8);
 
7579
        }
 
7580
        else if (character == 0x2F92E) {
 
7581
            sb.append((char) 0x7447);
 
7582
        }
 
7583
        else if (character == 0x2F92F) {
 
7584
            sb.append((char) 0x745C);
 
7585
        }
 
7586
        else if (character == 0x2F930) {
 
7587
            sb.append((char) 0x7471);
 
7588
        }
 
7589
        else if (character == 0x2F931) {
 
7590
            sb.append((char) 0x7485);
 
7591
        }
 
7592
        else if (character == 0x2F932) {
 
7593
            sb.append((char) 0x74CA);
 
7594
        }
 
7595
        else if (character == 0x2F933) {
 
7596
            sb.append((char) 0x3F1B);
 
7597
        }
 
7598
        else if (character == 0x2F934) {
 
7599
            sb.append((char) 0x7524);
 
7600
        }
 
7601
        else if (character == 0x2F935) {
 
7602
            sb.append((char) 0xd853);
 
7603
            sb.append((char) 0xdc36);
 
7604
        }
 
7605
        else if (character == 0x2F936) {
 
7606
            sb.append((char) 0x753E);
 
7607
        }
 
7608
        else if (character == 0x2F937) {
 
7609
            sb.append((char) 0xd853);
 
7610
            sb.append((char) 0xdc92);
 
7611
        }
 
7612
        else if (character == 0x2F938) {
 
7613
            sb.append((char) 0x7570);
 
7614
        }
 
7615
        else if (character == 0x2F939) {
 
7616
            sb.append((char) 0xd848);
 
7617
            sb.append((char) 0xdd9f);
 
7618
        }
 
7619
        else if (character == 0x2F93A) {
 
7620
            sb.append((char) 0x7610);
 
7621
        }
 
7622
        else if (character == 0x2F93B) {
 
7623
            sb.append((char) 0xd853);
 
7624
            sb.append((char) 0xdfa1);
 
7625
        }
 
7626
        else if (character == 0x2F93C) {
 
7627
            sb.append((char) 0xd853);
 
7628
            sb.append((char) 0xdfb8);
 
7629
        }
 
7630
        else if (character == 0x2F93D) {
 
7631
            sb.append((char) 0xd854);
 
7632
            sb.append((char) 0xdc44);
 
7633
        }
 
7634
        else if (character == 0x2F93E) {
 
7635
            sb.append((char) 0x3FFC);
 
7636
        }
 
7637
        else if (character == 0x2F93F) {
 
7638
            sb.append((char) 0x4008);
 
7639
        }
 
7640
        else if (character == 0x2F940) {
 
7641
            sb.append((char) 0x76F4);
 
7642
        }
 
7643
        else if (character == 0x2F941) {
 
7644
            sb.append((char) 0xd854);
 
7645
            sb.append((char) 0xdcf3);
 
7646
        }
 
7647
        else if (character == 0x2F942) {
 
7648
            sb.append((char) 0xd854);
 
7649
            sb.append((char) 0xdcf2);
 
7650
        }
 
7651
        else if (character == 0x2F943) {
 
7652
            sb.append((char) 0xd854);
 
7653
            sb.append((char) 0xdd19);
 
7654
        }
 
7655
        else if (character == 0x2F944) {
 
7656
            sb.append((char) 0xd854);
 
7657
            sb.append((char) 0xdd33);
 
7658
        }
 
7659
        else if (character == 0x2F945) {
 
7660
            sb.append((char) 0x771E);
 
7661
        }
 
7662
        else if (character == 0x2F946) {
 
7663
            sb.append((char) 0x771F);
 
7664
        }
 
7665
        else if (character == 0x2F947) {
 
7666
            sb.append((char) 0x771F);
 
7667
        }
 
7668
        else if (character == 0x2F948) {
 
7669
            sb.append((char) 0x774A);
 
7670
        }
 
7671
        else if (character == 0x2F949) {
 
7672
            sb.append((char) 0x4039);
 
7673
        }
 
7674
        else if (character == 0x2F94A) {
 
7675
            sb.append((char) 0x778B);
 
7676
        }
 
7677
        else if (character == 0x2F94B) {
 
7678
            sb.append((char) 0x4046);
 
7679
        }
 
7680
        else if (character == 0x2F94C) {
 
7681
            sb.append((char) 0x4096);
 
7682
        }
 
7683
        else if (character == 0x2F94D) {
 
7684
            sb.append((char) 0xd855);
 
7685
            sb.append((char) 0xdc1d);
 
7686
        }
 
7687
        else if (character == 0x2F94E) {
 
7688
            sb.append((char) 0x784E);
 
7689
        }
 
7690
        else if (character == 0x2F94F) {
 
7691
            sb.append((char) 0x788C);
 
7692
        }
 
7693
        else if (character == 0x2F950) {
 
7694
            sb.append((char) 0x78CC);
 
7695
        }
 
7696
        else if (character == 0x2F951) {
 
7697
            sb.append((char) 0x40E3);
 
7698
        }
 
7699
        else if (character == 0x2F952) {
 
7700
            sb.append((char) 0xd855);
 
7701
            sb.append((char) 0xde26);
 
7702
        }
 
7703
        else if (character == 0x2F953) {
 
7704
            sb.append((char) 0x7956);
 
7705
        }
 
7706
        else if (character == 0x2F954) {
 
7707
            sb.append((char) 0xd855);
 
7708
            sb.append((char) 0xde9a);
 
7709
        }
 
7710
        else if (character == 0x2F955) {
 
7711
            sb.append((char) 0xd855);
 
7712
            sb.append((char) 0xdec5);
 
7713
        }
 
7714
        else if (character == 0x2F956) {
 
7715
            sb.append((char) 0x798F);
 
7716
        }
 
7717
        else if (character == 0x2F957) {
 
7718
            sb.append((char) 0x79EB);
 
7719
        }
 
7720
        else if (character == 0x2F958) {
 
7721
            sb.append((char) 0x412F);
 
7722
        }
 
7723
        else if (character == 0x2F959) {
 
7724
            sb.append((char) 0x7A40);
 
7725
        }
 
7726
        else if (character == 0x2F95A) {
 
7727
            sb.append((char) 0x7A4A);
 
7728
        }
 
7729
        else if (character == 0x2F95B) {
 
7730
            sb.append((char) 0x7A4F);
 
7731
        }
 
7732
        else if (character == 0x2F95C) {
 
7733
            sb.append((char) 0xd856);
 
7734
            sb.append((char) 0xdd7c);
 
7735
        }
 
7736
        else if (character == 0x2F95D) {
 
7737
            sb.append((char) 0xd856);
 
7738
            sb.append((char) 0xdea7);
 
7739
        }
 
7740
        else if (character == 0x2F95E) {
 
7741
            sb.append((char) 0xd856);
 
7742
            sb.append((char) 0xdea7);
 
7743
        }
 
7744
        else if (character == 0x2F95F) {
 
7745
            sb.append((char) 0x7AEE);
 
7746
        }
 
7747
        else if (character == 0x2F960) {
 
7748
            sb.append((char) 0x4202);
 
7749
        }
 
7750
        else if (character == 0x2F961) {
 
7751
            sb.append((char) 0xd856);
 
7752
            sb.append((char) 0xdfab);
 
7753
        }
 
7754
        else if (character == 0x2F962) {
 
7755
            sb.append((char) 0x7BC6);
 
7756
        }
 
7757
        else if (character == 0x2F963) {
 
7758
            sb.append((char) 0x7BC9);
 
7759
        }
 
7760
        else if (character == 0x2F964) {
 
7761
            sb.append((char) 0x4227);
 
7762
        }
 
7763
        else if (character == 0x2F965) {
 
7764
            sb.append((char) 0xd857);
 
7765
            sb.append((char) 0xdc80);
 
7766
        }
 
7767
        else if (character == 0x2F966) {
 
7768
            sb.append((char) 0x7CD2);
 
7769
        }
 
7770
        else if (character == 0x2F967) {
 
7771
            sb.append((char) 0x42A0);
 
7772
        }
 
7773
        else if (character == 0x2F968) {
 
7774
            sb.append((char) 0x7CE8);
 
7775
        }
 
7776
        else if (character == 0x2F969) {
 
7777
            sb.append((char) 0x7CE3);
 
7778
        }
 
7779
        else if (character == 0x2F96A) {
 
7780
            sb.append((char) 0x7D00);
 
7781
        }
 
7782
        else if (character == 0x2F96B) {
 
7783
            sb.append((char) 0xd857);
 
7784
            sb.append((char) 0xdf86);
 
7785
        }
 
7786
        else if (character == 0x2F96C) {
 
7787
            sb.append((char) 0x7D63);
 
7788
        }
 
7789
        else if (character == 0x2F96D) {
 
7790
            sb.append((char) 0x4301);
 
7791
        }
 
7792
        else if (character == 0x2F96E) {
 
7793
            sb.append((char) 0x7DC7);
 
7794
        }
 
7795
        else if (character == 0x2F96F) {
 
7796
            sb.append((char) 0x7E02);
 
7797
        }
 
7798
        else if (character == 0x2F970) {
 
7799
            sb.append((char) 0x7E45);
 
7800
        }
 
7801
        else if (character == 0x2F971) {
 
7802
            sb.append((char) 0x4334);
 
7803
        }
 
7804
        else if (character == 0x2F972) {
 
7805
            sb.append((char) 0xd858);
 
7806
            sb.append((char) 0xde28);
 
7807
        }
 
7808
        else if (character == 0x2F973) {
 
7809
            sb.append((char) 0xd858);
 
7810
            sb.append((char) 0xde47);
 
7811
        }
 
7812
        else if (character == 0x2F974) {
 
7813
            sb.append((char) 0x4359);
 
7814
        }
 
7815
        else if (character == 0x2F975) {
 
7816
            sb.append((char) 0xd858);
 
7817
            sb.append((char) 0xded9);
 
7818
        }
 
7819
        else if (character == 0x2F976) {
 
7820
            sb.append((char) 0x7F7A);
 
7821
        }
 
7822
        else if (character == 0x2F977) {
 
7823
            sb.append((char) 0xd858);
 
7824
            sb.append((char) 0xdf3e);
 
7825
        }
 
7826
        else if (character == 0x2F978) {
 
7827
            sb.append((char) 0x7F95);
 
7828
        }
 
7829
        else if (character == 0x2F979) {
 
7830
            sb.append((char) 0x7FFA);
 
7831
        }
 
7832
        else if (character == 0x2F97A) {
 
7833
            sb.append((char) 0x8005);
 
7834
        }
 
7835
        else if (character == 0x2F97B) {
 
7836
            sb.append((char) 0xd859);
 
7837
            sb.append((char) 0xdcda);
 
7838
        }
 
7839
        else if (character == 0x2F97C) {
 
7840
            sb.append((char) 0xd859);
 
7841
            sb.append((char) 0xdd23);
 
7842
        }
 
7843
        else if (character == 0x2F97D) {
 
7844
            sb.append((char) 0x8060);
 
7845
        }
 
7846
        else if (character == 0x2F97E) {
 
7847
            sb.append((char) 0xd859);
 
7848
            sb.append((char) 0xdda8);
 
7849
        }
 
7850
        else if (character == 0x2F97F) {
 
7851
            sb.append((char) 0x8070);
 
7852
        }
 
7853
        else if (character == 0x2F980) {
 
7854
            sb.append((char) 0xd84c);
 
7855
            sb.append((char) 0xdf5f);
 
7856
        }
 
7857
        else if (character == 0x2F981) {
 
7858
            sb.append((char) 0x43D5);
 
7859
        }
 
7860
        else if (character == 0x2F982) {
 
7861
            sb.append((char) 0x80B2);
 
7862
        }
 
7863
        else if (character == 0x2F983) {
 
7864
            sb.append((char) 0x8103);
 
7865
        }
 
7866
        else if (character == 0x2F984) {
 
7867
            sb.append((char) 0x440B);
 
7868
        }
 
7869
        else if (character == 0x2F985) {
 
7870
            sb.append((char) 0x813E);
 
7871
        }
 
7872
        else if (character == 0x2F986) {
 
7873
            sb.append((char) 0x5AB5);
 
7874
        }
 
7875
        else if (character == 0x2F987) {
 
7876
            sb.append((char) 0xd859);
 
7877
            sb.append((char) 0xdfa7);
 
7878
        }
 
7879
        else if (character == 0x2F988) {
 
7880
            sb.append((char) 0xd859);
 
7881
            sb.append((char) 0xdfb5);
 
7882
        }
 
7883
        else if (character == 0x2F989) {
 
7884
            sb.append((char) 0xd84c);
 
7885
            sb.append((char) 0xdf93);
 
7886
        }
 
7887
        else if (character == 0x2F98A) {
 
7888
            sb.append((char) 0xd84c);
 
7889
            sb.append((char) 0xdf9c);
 
7890
        }
 
7891
        else if (character == 0x2F98B) {
 
7892
            sb.append((char) 0x8201);
 
7893
        }
 
7894
        else if (character == 0x2F98C) {
 
7895
            sb.append((char) 0x8204);
 
7896
        }
 
7897
        else if (character == 0x2F98D) {
 
7898
            sb.append((char) 0x8F9E);
 
7899
        }
 
7900
        else if (character == 0x2F98E) {
 
7901
            sb.append((char) 0x446B);
 
7902
        }
 
7903
        else if (character == 0x2F98F) {
 
7904
            sb.append((char) 0x8291);
 
7905
        }
 
7906
        else if (character == 0x2F990) {
 
7907
            sb.append((char) 0x828B);
 
7908
        }
 
7909
        else if (character == 0x2F991) {
 
7910
            sb.append((char) 0x829D);
 
7911
        }
 
7912
        else if (character == 0x2F992) {
 
7913
            sb.append((char) 0x52B3);
 
7914
        }
 
7915
        else if (character == 0x2F993) {
 
7916
            sb.append((char) 0x82B1);
 
7917
        }
 
7918
        else if (character == 0x2F994) {
 
7919
            sb.append((char) 0x82B3);
 
7920
        }
 
7921
        else if (character == 0x2F995) {
 
7922
            sb.append((char) 0x82BD);
 
7923
        }
 
7924
        else if (character == 0x2F996) {
 
7925
            sb.append((char) 0x82E6);
 
7926
        }
 
7927
        else if (character == 0x2F997) {
 
7928
            sb.append((char) 0xd85a);
 
7929
            sb.append((char) 0xdf3c);
 
7930
        }
 
7931
        else if (character == 0x2F998) {
 
7932
            sb.append((char) 0x82E5);
 
7933
        }
 
7934
        else if (character == 0x2F999) {
 
7935
            sb.append((char) 0x831D);
 
7936
        }
 
7937
        else if (character == 0x2F99A) {
 
7938
            sb.append((char) 0x8363);
 
7939
        }
 
7940
        else if (character == 0x2F99B) {
 
7941
            sb.append((char) 0x83AD);
 
7942
        }
 
7943
        else if (character == 0x2F99C) {
 
7944
            sb.append((char) 0x8323);
 
7945
        }
 
7946
        else if (character == 0x2F99D) {
 
7947
            sb.append((char) 0x83BD);
 
7948
        }
 
7949
        else if (character == 0x2F99E) {
 
7950
            sb.append((char) 0x83E7);
 
7951
        }
 
7952
        else if (character == 0x2F99F) {
 
7953
            sb.append((char) 0x8457);
 
7954
        }
 
7955
        else if (character == 0x2F9A0) {
 
7956
            sb.append((char) 0x8353);
 
7957
        }
 
7958
        else if (character == 0x2F9A1) {
 
7959
            sb.append((char) 0x83CA);
 
7960
        }
 
7961
        else if (character == 0x2F9A2) {
 
7962
            sb.append((char) 0x83CC);
 
7963
        }
 
7964
        else if (character == 0x2F9A3) {
 
7965
            sb.append((char) 0x83DC);
 
7966
        }
 
7967
        else if (character == 0x2F9A4) {
 
7968
            sb.append((char) 0xd85b);
 
7969
            sb.append((char) 0xdc36);
 
7970
        }
 
7971
        else if (character == 0x2F9A5) {
 
7972
            sb.append((char) 0xd85b);
 
7973
            sb.append((char) 0xdd6b);
 
7974
        }
 
7975
        else if (character == 0x2F9A6) {
 
7976
            sb.append((char) 0xd85b);
 
7977
            sb.append((char) 0xdcd5);
 
7978
        }
 
7979
        else if (character == 0x2F9A7) {
 
7980
            sb.append((char) 0x452B);
 
7981
        }
 
7982
        else if (character == 0x2F9A8) {
 
7983
            sb.append((char) 0x84F1);
 
7984
        }
 
7985
        else if (character == 0x2F9A9) {
 
7986
            sb.append((char) 0x84F3);
 
7987
        }
 
7988
        else if (character == 0x2F9AA) {
 
7989
            sb.append((char) 0x8516);
 
7990
        }
 
7991
        else if (character == 0x2F9AB) {
 
7992
            sb.append((char) 0xd85c);
 
7993
            sb.append((char) 0xdfca);
 
7994
        }
 
7995
        else if (character == 0x2F9AC) {
 
7996
            sb.append((char) 0x8564);
 
7997
        }
 
7998
        else if (character == 0x2F9AD) {
 
7999
            sb.append((char) 0xd85b);
 
8000
            sb.append((char) 0xdf2c);
 
8001
        }
 
8002
        else if (character == 0x2F9AE) {
 
8003
            sb.append((char) 0x455D);
 
8004
        }
 
8005
        else if (character == 0x2F9AF) {
 
8006
            sb.append((char) 0x4561);
 
8007
        }
 
8008
        else if (character == 0x2F9B0) {
 
8009
            sb.append((char) 0xd85b);
 
8010
            sb.append((char) 0xdfb1);
 
8011
        }
 
8012
        else if (character == 0x2F9B1) {
 
8013
            sb.append((char) 0xd85c);
 
8014
            sb.append((char) 0xdcd2);
 
8015
        }
 
8016
        else if (character == 0x2F9B2) {
 
8017
            sb.append((char) 0x456B);
 
8018
        }
 
8019
        else if (character == 0x2F9B3) {
 
8020
            sb.append((char) 0x8650);
 
8021
        }
 
8022
        else if (character == 0x2F9B4) {
 
8023
            sb.append((char) 0x865C);
 
8024
        }
 
8025
        else if (character == 0x2F9B5) {
 
8026
            sb.append((char) 0x8667);
 
8027
        }
 
8028
        else if (character == 0x2F9B6) {
 
8029
            sb.append((char) 0x8669);
 
8030
        }
 
8031
        else if (character == 0x2F9B7) {
 
8032
            sb.append((char) 0x86A9);
 
8033
        }
 
8034
        else if (character == 0x2F9B8) {
 
8035
            sb.append((char) 0x8688);
 
8036
        }
 
8037
        else if (character == 0x2F9B9) {
 
8038
            sb.append((char) 0x870E);
 
8039
        }
 
8040
        else if (character == 0x2F9BA) {
 
8041
            sb.append((char) 0x86E2);
 
8042
        }
 
8043
        else if (character == 0x2F9BB) {
 
8044
            sb.append((char) 0x8779);
 
8045
        }
 
8046
        else if (character == 0x2F9BC) {
 
8047
            sb.append((char) 0x8728);
 
8048
        }
 
8049
        else if (character == 0x2F9BD) {
 
8050
            sb.append((char) 0x876B);
 
8051
        }
 
8052
        else if (character == 0x2F9BE) {
 
8053
            sb.append((char) 0x8786);
 
8054
        }
 
8055
        else if (character == 0x2F9BF) {
 
8056
            sb.append((char) 0x45D7);
 
8057
        }
 
8058
        else if (character == 0x2F9C0) {
 
8059
            sb.append((char) 0x87E1);
 
8060
        }
 
8061
        else if (character == 0x2F9C1) {
 
8062
            sb.append((char) 0x8801);
 
8063
        }
 
8064
        else if (character == 0x2F9C2) {
 
8065
            sb.append((char) 0x45F9);
 
8066
        }
 
8067
        else if (character == 0x2F9C3) {
 
8068
            sb.append((char) 0x8860);
 
8069
        }
 
8070
        else if (character == 0x2F9C4) {
 
8071
            sb.append((char) 0x8863);
 
8072
        }
 
8073
        else if (character == 0x2F9C5) {
 
8074
            sb.append((char) 0xd85d);
 
8075
            sb.append((char) 0xde67);
 
8076
        }
 
8077
        else if (character == 0x2F9C6) {
 
8078
            sb.append((char) 0x88D7);
 
8079
        }
 
8080
        else if (character == 0x2F9C7) {
 
8081
            sb.append((char) 0x88DE);
 
8082
        }
 
8083
        else if (character == 0x2F9C8) {
 
8084
            sb.append((char) 0x4635);
 
8085
        }
 
8086
        else if (character == 0x2F9C9) {
 
8087
            sb.append((char) 0x88FA);
 
8088
        }
 
8089
        else if (character == 0x2F9CA) {
 
8090
            sb.append((char) 0x34BB);
 
8091
        }
 
8092
        else if (character == 0x2F9CB) {
 
8093
            sb.append((char) 0xd85e);
 
8094
            sb.append((char) 0xdcae);
 
8095
        }
 
8096
        else if (character == 0x2F9CC) {
 
8097
            sb.append((char) 0xd85e);
 
8098
            sb.append((char) 0xdd66);
 
8099
        }
 
8100
        else if (character == 0x2F9CD) {
 
8101
            sb.append((char) 0x46BE);
 
8102
        }
 
8103
        else if (character == 0x2F9CE) {
 
8104
            sb.append((char) 0x46C7);
 
8105
        }
 
8106
        else if (character == 0x2F9CF) {
 
8107
            sb.append((char) 0x8AA0);
 
8108
        }
 
8109
        else if (character == 0x2F9D0) {
 
8110
            sb.append((char) 0x8AED);
 
8111
        }
 
8112
        else if (character == 0x2F9D1) {
 
8113
            sb.append((char) 0x8B8A);
 
8114
        }
 
8115
        else if (character == 0x2F9D2) {
 
8116
            sb.append((char) 0x8C55);
 
8117
        }
 
8118
        else if (character == 0x2F9D3) {
 
8119
            sb.append((char) 0xd85f);
 
8120
            sb.append((char) 0xdca8);
 
8121
        }
 
8122
        else if (character == 0x2F9D4) {
 
8123
            sb.append((char) 0x8CAB);
 
8124
        }
 
8125
        else if (character == 0x2F9D5) {
 
8126
            sb.append((char) 0x8CC1);
 
8127
        }
 
8128
        else if (character == 0x2F9D6) {
 
8129
            sb.append((char) 0x8D1B);
 
8130
        }
 
8131
        else if (character == 0x2F9D7) {
 
8132
            sb.append((char) 0x8D77);
 
8133
        }
 
8134
        else if (character == 0x2F9D8) {
 
8135
            sb.append((char) 0xd85f);
 
8136
            sb.append((char) 0xdf2f);
 
8137
        }
 
8138
        else if (character == 0x2F9D9) {
 
8139
            sb.append((char) 0xd842);
 
8140
            sb.append((char) 0xdc04);
 
8141
        }
 
8142
        else if (character == 0x2F9DA) {
 
8143
            sb.append((char) 0x8DCB);
 
8144
        }
 
8145
        else if (character == 0x2F9DB) {
 
8146
            sb.append((char) 0x8DBC);
 
8147
        }
 
8148
        else if (character == 0x2F9DC) {
 
8149
            sb.append((char) 0x8DF0);
 
8150
        }
 
8151
        else if (character == 0x2F9DD) {
 
8152
            sb.append((char) 0xd842);
 
8153
            sb.append((char) 0xdcde);
 
8154
        }
 
8155
        else if (character == 0x2F9DE) {
 
8156
            sb.append((char) 0x8ED4);
 
8157
        }
 
8158
        else if (character == 0x2F9DF) {
 
8159
            sb.append((char) 0x8F38);
 
8160
        }
 
8161
        else if (character == 0x2F9E0) {
 
8162
            sb.append((char) 0xd861);
 
8163
            sb.append((char) 0xddd2);
 
8164
        }
 
8165
        else if (character == 0x2F9E1) {
 
8166
            sb.append((char) 0xd861);
 
8167
            sb.append((char) 0xdded);
 
8168
        }
 
8169
        else if (character == 0x2F9E2) {
 
8170
            sb.append((char) 0x9094);
 
8171
        }
 
8172
        else if (character == 0x2F9E3) {
 
8173
            sb.append((char) 0x90F1);
 
8174
        }
 
8175
        else if (character == 0x2F9E4) {
 
8176
            sb.append((char) 0x9111);
 
8177
        }
 
8178
        else if (character == 0x2F9E5) {
 
8179
            sb.append((char) 0xd861);
 
8180
            sb.append((char) 0xdf2e);
 
8181
        }
 
8182
        else if (character == 0x2F9E6) {
 
8183
            sb.append((char) 0x911B);
 
8184
        }
 
8185
        else if (character == 0x2F9E7) {
 
8186
            sb.append((char) 0x9238);
 
8187
        }
 
8188
        else if (character == 0x2F9E8) {
 
8189
            sb.append((char) 0x92D7);
 
8190
        }
 
8191
        else if (character == 0x2F9E9) {
 
8192
            sb.append((char) 0x92D8);
 
8193
        }
 
8194
        else if (character == 0x2F9EA) {
 
8195
            sb.append((char) 0x927C);
 
8196
        }
 
8197
        else if (character == 0x2F9EB) {
 
8198
            sb.append((char) 0x93F9);
 
8199
        }
 
8200
        else if (character == 0x2F9EC) {
 
8201
            sb.append((char) 0x9415);
 
8202
        }
 
8203
        else if (character == 0x2F9ED) {
 
8204
            sb.append((char) 0xd862);
 
8205
            sb.append((char) 0xdffa);
 
8206
        }
 
8207
        else if (character == 0x2F9EE) {
 
8208
            sb.append((char) 0x958B);
 
8209
        }
 
8210
        else if (character == 0x2F9EF) {
 
8211
            sb.append((char) 0x4995);
 
8212
        }
 
8213
        else if (character == 0x2F9F0) {
 
8214
            sb.append((char) 0x95B7);
 
8215
        }
 
8216
        else if (character == 0x2F9F1) {
 
8217
            sb.append((char) 0xd863);
 
8218
            sb.append((char) 0xdd77);
 
8219
        }
 
8220
        else if (character == 0x2F9F2) {
 
8221
            sb.append((char) 0x49E6);
 
8222
        }
 
8223
        else if (character == 0x2F9F3) {
 
8224
            sb.append((char) 0x96C3);
 
8225
        }
 
8226
        else if (character == 0x2F9F4) {
 
8227
            sb.append((char) 0x5DB2);
 
8228
        }
 
8229
        else if (character == 0x2F9F5) {
 
8230
            sb.append((char) 0x9723);
 
8231
        }
 
8232
        else if (character == 0x2F9F6) {
 
8233
            sb.append((char) 0xd864);
 
8234
            sb.append((char) 0xdd45);
 
8235
        }
 
8236
        else if (character == 0x2F9F7) {
 
8237
            sb.append((char) 0xd864);
 
8238
            sb.append((char) 0xde1a);
 
8239
        }
 
8240
        else if (character == 0x2F9F8) {
 
8241
            sb.append((char) 0x4A6E);
 
8242
        }
 
8243
        else if (character == 0x2F9F9) {
 
8244
            sb.append((char) 0x4A76);
 
8245
        }
 
8246
        else if (character == 0x2F9FA) {
 
8247
            sb.append((char) 0x97E0);
 
8248
        }
 
8249
        else if (character == 0x2F9FB) {
 
8250
            sb.append((char) 0xd865);
 
8251
            sb.append((char) 0xdc0a);
 
8252
        }
 
8253
        else if (character == 0x2F9FC) {
 
8254
            sb.append((char) 0x4AB2);
 
8255
        }
 
8256
        else if (character == 0x2F9FD) {
 
8257
            sb.append((char) 0xd865);
 
8258
            sb.append((char) 0xdc96);
 
8259
        }
 
8260
        else if (character == 0x2F9FE) {
 
8261
            sb.append((char) 0x980B);
 
8262
        }
 
8263
        else if (character == 0x2F9FF) {
 
8264
            sb.append((char) 0x980B);
 
8265
        }
 
8266
        else if (character == 0x2FA00) {
 
8267
            sb.append((char) 0x9829);
 
8268
        }
 
8269
        else if (character == 0x2FA01) {
 
8270
            sb.append((char) 0xd865);
 
8271
            sb.append((char) 0xddb6);
 
8272
        }
 
8273
        else if (character == 0x2FA02) {
 
8274
            sb.append((char) 0x98E2);
 
8275
        }
 
8276
        else if (character == 0x2FA03) {
 
8277
            sb.append((char) 0x4B33);
 
8278
        }
 
8279
        else if (character == 0x2FA04) {
 
8280
            sb.append((char) 0x9929);
 
8281
        }
 
8282
        else if (character == 0x2FA05) {
 
8283
            sb.append((char) 0x99A7);
 
8284
        }
 
8285
        else if (character == 0x2FA06) {
 
8286
            sb.append((char) 0x99C2);
 
8287
        }
 
8288
        else if (character == 0x2FA07) {
 
8289
            sb.append((char) 0x99FE);
 
8290
        }
 
8291
        else if (character == 0x2FA08) {
 
8292
            sb.append((char) 0x4BCE);
 
8293
        }
 
8294
        else if (character == 0x2FA09) {
 
8295
            sb.append((char) 0xd866);
 
8296
            sb.append((char) 0xdf30);
 
8297
        }
 
8298
        else if (character == 0x2FA0A) {
 
8299
            sb.append((char) 0x9B12);
 
8300
        }
 
8301
        else if (character == 0x2FA0B) {
 
8302
            sb.append((char) 0x9C40);
 
8303
        }
 
8304
        else if (character == 0x2FA0C) {
 
8305
            sb.append((char) 0x9CFD);
 
8306
        }
 
8307
        else if (character == 0x2FA0D) {
 
8308
            sb.append((char) 0x4CCE);
 
8309
        }
 
8310
        else if (character == 0x2FA0E) {
 
8311
            sb.append((char) 0x4CED);
 
8312
        }
 
8313
        else if (character == 0x2FA0F) {
 
8314
            sb.append((char) 0x9D67);
 
8315
        }
 
8316
        else if (character == 0x2FA10) {
 
8317
            sb.append((char) 0xd868);
 
8318
            sb.append((char) 0xdcce);
 
8319
        }
 
8320
        else if (character == 0x2FA11) {
 
8321
            sb.append((char) 0x4CF8);
 
8322
        }
 
8323
        else if (character == 0x2FA12) {
 
8324
            sb.append((char) 0xd868);
 
8325
            sb.append((char) 0xdd05);
 
8326
        }
 
8327
        else if (character == 0x2FA13) {
 
8328
            sb.append((char) 0xd868);
 
8329
            sb.append((char) 0xde0e);
 
8330
        }
 
8331
        else if (character == 0x2FA14) {
 
8332
            sb.append((char) 0xd868);
 
8333
            sb.append((char) 0xde91);
 
8334
        }
 
8335
        else if (character == 0x2FA15) {
 
8336
            sb.append((char) 0x9EBB);
 
8337
        }
 
8338
        else if (character == 0x2FA16) {
 
8339
            sb.append((char) 0x4D56);
 
8340
        }
 
8341
        else if (character == 0x2FA17) {
 
8342
            sb.append((char) 0x9EF9);
 
8343
        }
 
8344
        else if (character == 0x2FA18) {
 
8345
            sb.append((char) 0x9EFE);
 
8346
        }
 
8347
        else if (character == 0x2FA19) {
 
8348
            sb.append((char) 0x9F05);
 
8349
        }
 
8350
        else if (character == 0x2FA1A) {
 
8351
            sb.append((char) 0x9F0F);
 
8352
        }
 
8353
        else if (character == 0x2FA1B) {
 
8354
            sb.append((char) 0x9F16);
 
8355
        }
 
8356
        else if (character == 0x2FA1C) {
 
8357
            sb.append((char) 0x9F3B);
 
8358
        }
 
8359
        else if (character == 0x2FA1D) {
 
8360
            sb.append((char) 0xd869);
 
8361
            sb.append((char) 0xde00);
 
8362
        }
 
8363
        else { // not decomposable
 
8364
            if (character <= 0xFFFF) {
 
8365
                sb.append((char) character);
 
8366
             }
 
8367
             else {
 
8368
                 sb.append(getHighSurrogate(character));
 
8369
                 sb.append(getLowSurrogate(character));
 
8370
             }
 
8371
        }
 
8372
        
 
8373
        return sb.toString();
 
8374
        
 
8375
    }
 
8376
    ///CLOVER:ON
 
8377
 
 
8378
 
 
8379
    private static String decomposeHangul(char c) {
 
8380
        
 
8381
        final int firstLeadingConsonant  = 0x1100;
 
8382
        final int firstMedialVowel       = 0x1161;
 
8383
        final int firstTrailingConsonant = 0x11A7;
 
8384
        
 
8385
        final int numberOfLeadingConsonants  = 19;
 
8386
        final int numberOfMedialVowels       = 21;
 
8387
        final int numberOfTrailingConsonants = 28;
 
8388
        
 
8389
        final int numberOfFinalPairs 
 
8390
          = numberOfMedialVowels * numberOfTrailingConsonants; 
 
8391
        final int numberOfSyllables 
 
8392
          = numberOfLeadingConsonants * numberOfFinalPairs;
 
8393
 
 
8394
        final int syllable = c - FIRST_HANGUL_SYLLABLE;
 
8395
        
 
8396
        if (syllable < 0 || syllable >= numberOfSyllables) {
 
8397
            return String.valueOf(c);
 
8398
        }
 
8399
        
 
8400
        int leadingConsonant = firstLeadingConsonant 
 
8401
          + syllable / numberOfFinalPairs;
 
8402
        int medialVowel = firstMedialVowel 
 
8403
          + (syllable % numberOfFinalPairs) / numberOfTrailingConsonants;
 
8404
        int trailingConsonant = firstTrailingConsonant 
 
8405
          + syllable % numberOfTrailingConsonants;
 
8406
        
 
8407
        StringBuffer result = new StringBuffer(3);        
 
8408
        result.append((char) leadingConsonant);
 
8409
        result.append((char) medialVowel);
 
8410
        if (trailingConsonant != firstTrailingConsonant) {
 
8411
            result.append((char) trailingConsonant);
 
8412
        }
 
8413
        
 
8414
        return result.toString();
 
8415
        
 
8416
    }   
 
8417
    
 
8418
    
 
8419
    private static String composeHangul(String source) {
 
8420
 
 
8421
        final int firstLeadingConsonant = 0x1100;
 
8422
        final int firstMedialVowel = 0x1161;
 
8423
        final int firstTrailingConsonant = 0x11A7;
 
8424
        
 
8425
        final int numberOfLeadingConsonants  = 19;
 
8426
        final int numberOfMedialVowels       = 21;
 
8427
        final int numberOfTrailingConsonants = 28;
 
8428
        
 
8429
        final int numberOfFinalPairs 
 
8430
          = numberOfMedialVowels * numberOfTrailingConsonants;
 
8431
        final int numberOfSyllables 
 
8432
          = numberOfLeadingConsonants * numberOfFinalPairs;
 
8433
        
 
8434
        final int length = source.length();
 
8435
        if (length == 0) return "";
 
8436
        StringBuffer result = new StringBuffer(length);
 
8437
        char previous = source.charAt(0); 
 
8438
        result.append(previous);
 
8439
 
 
8440
        for (int i = 1; i < length; ++i) {
 
8441
            char c = source.charAt(i);
 
8442
 
 
8443
            int leadingConsonant = previous - firstLeadingConsonant;
 
8444
            if (0 <= leadingConsonant && leadingConsonant < numberOfLeadingConsonants) {
 
8445
                int medialVowel = c - firstMedialVowel;
 
8446
                if (medialVowel >= 0 && medialVowel < numberOfMedialVowels) {
 
8447
                    previous = (char) (FIRST_HANGUL_SYLLABLE 
 
8448
                      + (leadingConsonant * numberOfMedialVowels + medialVowel) 
 
8449
                      * numberOfTrailingConsonants);
 
8450
                    result.setCharAt(result.length()-1, previous);
 
8451
                    continue; 
 
8452
                }
 
8453
            }
 
8454
 
 
8455
            int syllable = previous - FIRST_HANGUL_SYLLABLE;
 
8456
            if (syllable >= 0 && syllable < numberOfSyllables 
 
8457
              && (syllable % numberOfTrailingConsonants) == 0) {
 
8458
                int trailingConsonant = c - firstTrailingConsonant;
 
8459
                if (trailingConsonant >= 0 && trailingConsonant <= numberOfTrailingConsonants) {
 
8460
                    previous += trailingConsonant;
 
8461
                    result.setCharAt(result.length()-1, previous);
 
8462
                    continue; 
 
8463
                }
 
8464
            }
 
8465
 
 
8466
            previous = c;
 
8467
            result.append(c);
 
8468
        }
 
8469
        
 
8470
        return result.toString();
 
8471
        
 
8472
    } 
 
8473
 
 
8474
    
 
8475
    private static class UnicodeString {
 
8476
        
 
8477
        private int[] data;
 
8478
        private int   size = 0; 
 
8479
        
 
8480
        UnicodeString(String s) {
 
8481
            
 
8482
            int length = s.length();
 
8483
            data = new int[length];
 
8484
            int index = 0;
 
8485
            for (int i = 0; i < length; i++) {
 
8486
                char c = s.charAt(i);
 
8487
                int codePoint = c;
 
8488
                if (isHighSurrogate(c)) {
 
8489
                    i++;
 
8490
                    codePoint = combineSurrogatePair(c, s.charAt(i));
 
8491
                }
 
8492
                data[index] = codePoint;
 
8493
                index++;
 
8494
            }
 
8495
            this.size = index;
 
8496
            
 
8497
        }
 
8498
        
 
8499
        
 
8500
        UnicodeString(int length) {
 
8501
            this.size = 0;
 
8502
            data = new int[length];
 
8503
        }
 
8504
        
 
8505
        
 
8506
        UnicodeString decompose() {
 
8507
            
 
8508
            UnicodeString result = new UnicodeString(size);
 
8509
            for (int i = 0; i < size; i++) {
 
8510
                int c = data[i];
 
8511
                String d = UnicodeUtil.decompose(c);
 
8512
                result.append(d);
 
8513
            }    
 
8514
            
 
8515
            /* now put into canonical order */
 
8516
 
 
8517
            for (int i = 0; i < result.size-1; i++) {
 
8518
                int first = result.data[i];
 
8519
                int second = result.data[i+1];
 
8520
                int secondClass = getCombiningClass(second);
 
8521
                if (secondClass == 0) continue;
 
8522
                int firstClass = getCombiningClass(first);
 
8523
                if (firstClass > secondClass ) {
 
8524
                    result.data[i] = second;
 
8525
                    result.data[i+1] = first;
 
8526
                    i -= 2;
 
8527
                    if (i == -2) i = -1;
 
8528
                }
 
8529
            }
 
8530
            
 
8531
            return result;
 
8532
            
 
8533
        }
 
8534
        
 
8535
        
 
8536
        UnicodeString compose() {
 
8537
        
 
8538
            if (compositions == null) loadCompositions();
 
8539
            
 
8540
            UnicodeString composed = new UnicodeString(size);
 
8541
    
 
8542
            int index = 0;
 
8543
            int lastStarter = -1;
 
8544
            int lastStarterIndex = -1;
 
8545
            int composedLastStarterIndex = -1;
 
8546
            
 
8547
            for (int i = 0; i < size; i++) {
 
8548
                int c = data[i];
 
8549
                if (lastStarter == -1 || isBlocked(lastStarterIndex, i)) {
 
8550
                    composed.append(c);
 
8551
                    if (isStarter(c) ) {
 
8552
                        lastStarter = c;
 
8553
                        lastStarterIndex = i;
 
8554
                        composedLastStarterIndex = composed.size-1;
 
8555
                    }
 
8556
                }
 
8557
                else  {
 
8558
                    int composedChar = composeCharacter(lastStarter, c);
 
8559
                    if (composedChar == -1) {
 
8560
                        composed.append(c);
 
8561
                        if (isStarter(c) ) {
 
8562
                            lastStarter = c;
 
8563
                            lastStarterIndex = i;
 
8564
                            composedLastStarterIndex = composed.size-1;
 
8565
                        }
 
8566
                    }
 
8567
                    else {
 
8568
                        lastStarter = composedChar;
 
8569
                        // XXX dangerous side effects
 
8570
                        data[lastStarterIndex] = composedChar;
 
8571
                        data[i] = 0;
 
8572
                        composed.data[composedLastStarterIndex] = composedChar;
 
8573
                    }
 
8574
                }
 
8575
            }
 
8576
            
 
8577
            return composed;
 
8578
        
 
8579
        }
 
8580
 
 
8581
    
 
8582
        void append(String s) {
 
8583
            
 
8584
            for (int i = 0; i < s.length(); i++) {
 
8585
                char c = s.charAt(i);
 
8586
                if (isHighSurrogate(c)) {
 
8587
                    append(UnicodeUtil.combineSurrogatePair(c, s.charAt(i+1)));
 
8588
                    i++;
 
8589
                }
 
8590
                else {
 
8591
                    append(c);
 
8592
                }
 
8593
            }
 
8594
            
 
8595
        }
 
8596
        
 
8597
        
 
8598
        void append(int c) {
 
8599
            
 
8600
            if (size < data.length-1) {
 
8601
                data[size] = c;
 
8602
                size++;
 
8603
            }
 
8604
            else {
 
8605
                int[] array = new int[data.length+10];
 
8606
                System.arraycopy(data, 0, array, 0, size);
 
8607
                data = array;
 
8608
                append(c);
 
8609
            }
 
8610
            
 
8611
        }
 
8612
        
 
8613
        public String toString() {
 
8614
         
 
8615
            StringBuffer sb = new StringBuffer();
 
8616
            for (int i = 0; i < size; i++) {
 
8617
                int c = data[i];
 
8618
                if (c <= 0xFFFF) sb.append((char) c);
 
8619
                else {
 
8620
                    sb.append(makeSurrogatePair(c));
 
8621
                }
 
8622
            }
 
8623
            return sb.toString();
 
8624
            
 
8625
        }
 
8626
        
 
8627
        private boolean isBlocked(int lastStarterIndex, int index) {
 
8628
          
 
8629
            int combiningClass = getCombiningClass(data[index]);
 
8630
            for (int i = lastStarterIndex+1; i < index; i++) {
 
8631
                if (data[i] !=0 && combiningClass == getCombiningClass(data[i])) {
 
8632
                    return true;
 
8633
                }
 
8634
            }
 
8635
            return false;
 
8636
            
 
8637
        }
 
8638
        
 
8639
    }
 
8640
    
 
8641
    
 
8642
}