JAL-1807 still testing
[jalviewjs.git] / unused / com / stevesoft / pat / CaseMgr.java
1 //\r
2 // This software is now distributed according to\r
3 // the Lesser Gnu Public License.  Please see\r
4 // http://www.gnu.org/copyleft/lesser.txt for\r
5 // the details.\r
6 //    -- Happy Computing!\r
7 //\r
8 package com.stevesoft.pat;\r
9 \r
10 /**\r
11  * Encapsulates the Unicode definitions of Upper, Lower, and Title case as\r
12  * defined by <a href="http://www.unicode.org"> unicode.org</a>.\r
13  * <p>\r
14  * The performance of the methods found in String and Character is better, but\r
15  * these methods work both in java 1.0 and 1.1. If it is desirable, either to\r
16  * gain a slight performance increase or to accomodate application specific\r
17  * modifications to the definitions of upper, lower, and title case then it\r
18  * should be a straightforward task to substitute your own methods for these.\r
19  */\r
20 final public class CaseMgr\r
21 {\r
22   final static boolean java_1_0 = false;\r
23 \r
24   /** Convert a character to upper case . */\r
25   public static char toUpperCase(char c)\r
26   {\r
27     if (java_1_0)\r
28     {\r
29       int ret = (int) c;\r
30       switch (c)\r
31       {\r
32       case 97:\r
33         ret = 65;\r
34         break;\r
35       case 98:\r
36         ret = 66;\r
37         break;\r
38       case 99:\r
39         ret = 67;\r
40         break;\r
41       case 100:\r
42         ret = 68;\r
43         break;\r
44       case 101:\r
45         ret = 69;\r
46         break;\r
47       case 102:\r
48         ret = 70;\r
49         break;\r
50       case 103:\r
51         ret = 71;\r
52         break;\r
53       case 104:\r
54         ret = 72;\r
55         break;\r
56       case 105:\r
57         ret = 73;\r
58         break;\r
59       case 106:\r
60         ret = 74;\r
61         break;\r
62       case 107:\r
63         ret = 75;\r
64         break;\r
65       case 108:\r
66         ret = 76;\r
67         break;\r
68       case 109:\r
69         ret = 77;\r
70         break;\r
71       case 110:\r
72         ret = 78;\r
73         break;\r
74       case 111:\r
75         ret = 79;\r
76         break;\r
77       case 112:\r
78         ret = 80;\r
79         break;\r
80       case 113:\r
81         ret = 81;\r
82         break;\r
83       case 114:\r
84         ret = 82;\r
85         break;\r
86       case 115:\r
87         ret = 83;\r
88         break;\r
89       case 116:\r
90         ret = 84;\r
91         break;\r
92       case 117:\r
93         ret = 85;\r
94         break;\r
95       case 118:\r
96         ret = 86;\r
97         break;\r
98       case 119:\r
99         ret = 87;\r
100         break;\r
101       case 120:\r
102         ret = 88;\r
103         break;\r
104       case 121:\r
105         ret = 89;\r
106         break;\r
107       case 122:\r
108         ret = 90;\r
109         break;\r
110       case 224:\r
111         ret = 192;\r
112         break;\r
113       case 225:\r
114         ret = 193;\r
115         break;\r
116       case 226:\r
117         ret = 194;\r
118         break;\r
119       case 227:\r
120         ret = 195;\r
121         break;\r
122       case 228:\r
123         ret = 196;\r
124         break;\r
125       case 229:\r
126         ret = 197;\r
127         break;\r
128       case 230:\r
129         ret = 198;\r
130         break;\r
131       case 231:\r
132         ret = 199;\r
133         break;\r
134       case 232:\r
135         ret = 200;\r
136         break;\r
137       case 233:\r
138         ret = 201;\r
139         break;\r
140       case 234:\r
141         ret = 202;\r
142         break;\r
143       case 235:\r
144         ret = 203;\r
145         break;\r
146       case 236:\r
147         ret = 204;\r
148         break;\r
149       case 237:\r
150         ret = 205;\r
151         break;\r
152       case 238:\r
153         ret = 206;\r
154         break;\r
155       case 239:\r
156         ret = 207;\r
157         break;\r
158       case 240:\r
159         ret = 208;\r
160         break;\r
161       case 241:\r
162         ret = 209;\r
163         break;\r
164       case 242:\r
165         ret = 210;\r
166         break;\r
167       case 243:\r
168         ret = 211;\r
169         break;\r
170       case 244:\r
171         ret = 212;\r
172         break;\r
173       case 245:\r
174         ret = 213;\r
175         break;\r
176       case 246:\r
177         ret = 214;\r
178         break;\r
179       case 248:\r
180         ret = 216;\r
181         break;\r
182       case 249:\r
183         ret = 217;\r
184         break;\r
185       case 250:\r
186         ret = 218;\r
187         break;\r
188       case 251:\r
189         ret = 219;\r
190         break;\r
191       case 252:\r
192         ret = 220;\r
193         break;\r
194       case 253:\r
195         ret = 221;\r
196         break;\r
197       case 254:\r
198         ret = 222;\r
199         break;\r
200       case 255:\r
201         ret = 376;\r
202         break;\r
203       case 257:\r
204         ret = 256;\r
205         break;\r
206       case 259:\r
207         ret = 258;\r
208         break;\r
209       case 261:\r
210         ret = 260;\r
211         break;\r
212       case 263:\r
213         ret = 262;\r
214         break;\r
215       case 265:\r
216         ret = 264;\r
217         break;\r
218       case 267:\r
219         ret = 266;\r
220         break;\r
221       case 269:\r
222         ret = 268;\r
223         break;\r
224       case 271:\r
225         ret = 270;\r
226         break;\r
227       case 273:\r
228         ret = 272;\r
229         break;\r
230       case 275:\r
231         ret = 274;\r
232         break;\r
233       case 277:\r
234         ret = 276;\r
235         break;\r
236       case 279:\r
237         ret = 278;\r
238         break;\r
239       case 281:\r
240         ret = 280;\r
241         break;\r
242       case 283:\r
243         ret = 282;\r
244         break;\r
245       case 285:\r
246         ret = 284;\r
247         break;\r
248       case 287:\r
249         ret = 286;\r
250         break;\r
251       case 289:\r
252         ret = 288;\r
253         break;\r
254       case 291:\r
255         ret = 290;\r
256         break;\r
257       case 293:\r
258         ret = 292;\r
259         break;\r
260       case 295:\r
261         ret = 294;\r
262         break;\r
263       case 297:\r
264         ret = 296;\r
265         break;\r
266       case 299:\r
267         ret = 298;\r
268         break;\r
269       case 301:\r
270         ret = 300;\r
271         break;\r
272       case 303:\r
273         ret = 302;\r
274         break;\r
275       case 305:\r
276         ret = 73;\r
277         break;\r
278       case 307:\r
279         ret = 306;\r
280         break;\r
281       case 309:\r
282         ret = 308;\r
283         break;\r
284       case 311:\r
285         ret = 310;\r
286         break;\r
287       case 314:\r
288         ret = 313;\r
289         break;\r
290       case 316:\r
291         ret = 315;\r
292         break;\r
293       case 318:\r
294         ret = 317;\r
295         break;\r
296       case 320:\r
297         ret = 319;\r
298         break;\r
299       case 322:\r
300         ret = 321;\r
301         break;\r
302       case 324:\r
303         ret = 323;\r
304         break;\r
305       case 326:\r
306         ret = 325;\r
307         break;\r
308       case 328:\r
309         ret = 327;\r
310         break;\r
311       case 331:\r
312         ret = 330;\r
313         break;\r
314       case 333:\r
315         ret = 332;\r
316         break;\r
317       case 335:\r
318         ret = 334;\r
319         break;\r
320       case 337:\r
321         ret = 336;\r
322         break;\r
323       case 339:\r
324         ret = 338;\r
325         break;\r
326       case 341:\r
327         ret = 340;\r
328         break;\r
329       case 343:\r
330         ret = 342;\r
331         break;\r
332       case 345:\r
333         ret = 344;\r
334         break;\r
335       case 347:\r
336         ret = 346;\r
337         break;\r
338       case 349:\r
339         ret = 348;\r
340         break;\r
341       case 351:\r
342         ret = 350;\r
343         break;\r
344       case 353:\r
345         ret = 352;\r
346         break;\r
347       case 355:\r
348         ret = 354;\r
349         break;\r
350       case 357:\r
351         ret = 356;\r
352         break;\r
353       case 359:\r
354         ret = 358;\r
355         break;\r
356       case 361:\r
357         ret = 360;\r
358         break;\r
359       case 363:\r
360         ret = 362;\r
361         break;\r
362       case 365:\r
363         ret = 364;\r
364         break;\r
365       case 367:\r
366         ret = 366;\r
367         break;\r
368       case 369:\r
369         ret = 368;\r
370         break;\r
371       case 371:\r
372         ret = 370;\r
373         break;\r
374       case 373:\r
375         ret = 372;\r
376         break;\r
377       case 375:\r
378         ret = 374;\r
379         break;\r
380       case 378:\r
381         ret = 377;\r
382         break;\r
383       case 380:\r
384         ret = 379;\r
385         break;\r
386       case 382:\r
387         ret = 381;\r
388         break;\r
389       case 383:\r
390         ret = 83;\r
391         break;\r
392       case 387:\r
393         ret = 386;\r
394         break;\r
395       case 389:\r
396         ret = 388;\r
397         break;\r
398       case 392:\r
399         ret = 391;\r
400         break;\r
401       case 396:\r
402         ret = 395;\r
403         break;\r
404       case 402:\r
405         ret = 401;\r
406         break;\r
407       case 409:\r
408         ret = 408;\r
409         break;\r
410       case 417:\r
411         ret = 416;\r
412         break;\r
413       case 419:\r
414         ret = 418;\r
415         break;\r
416       case 421:\r
417         ret = 420;\r
418         break;\r
419       case 424:\r
420         ret = 423;\r
421         break;\r
422       case 429:\r
423         ret = 428;\r
424         break;\r
425       case 432:\r
426         ret = 431;\r
427         break;\r
428       case 436:\r
429         ret = 435;\r
430         break;\r
431       case 438:\r
432         ret = 437;\r
433         break;\r
434       case 441:\r
435         ret = 440;\r
436         break;\r
437       case 445:\r
438         ret = 444;\r
439         break;\r
440       case 453:\r
441         ret = 452;\r
442         break;\r
443       case 454:\r
444         ret = 452;\r
445         break;\r
446       case 456:\r
447         ret = 455;\r
448         break;\r
449       case 457:\r
450         ret = 455;\r
451         break;\r
452       case 459:\r
453         ret = 458;\r
454         break;\r
455       case 460:\r
456         ret = 458;\r
457         break;\r
458       case 462:\r
459         ret = 461;\r
460         break;\r
461       case 464:\r
462         ret = 463;\r
463         break;\r
464       case 466:\r
465         ret = 465;\r
466         break;\r
467       case 468:\r
468         ret = 467;\r
469         break;\r
470       case 470:\r
471         ret = 469;\r
472         break;\r
473       case 472:\r
474         ret = 471;\r
475         break;\r
476       case 474:\r
477         ret = 473;\r
478         break;\r
479       case 476:\r
480         ret = 475;\r
481         break;\r
482       case 479:\r
483         ret = 478;\r
484         break;\r
485       case 481:\r
486         ret = 480;\r
487         break;\r
488       case 483:\r
489         ret = 482;\r
490         break;\r
491       case 485:\r
492         ret = 484;\r
493         break;\r
494       case 487:\r
495         ret = 486;\r
496         break;\r
497       case 489:\r
498         ret = 488;\r
499         break;\r
500       case 491:\r
501         ret = 490;\r
502         break;\r
503       case 493:\r
504         ret = 492;\r
505         break;\r
506       case 495:\r
507         ret = 494;\r
508         break;\r
509       case 498:\r
510         ret = 497;\r
511         break;\r
512       case 499:\r
513         ret = 497;\r
514         break;\r
515       case 501:\r
516         ret = 500;\r
517         break;\r
518       case 507:\r
519         ret = 506;\r
520         break;\r
521       case 509:\r
522         ret = 508;\r
523         break;\r
524       case 511:\r
525         ret = 510;\r
526         break;\r
527       case 513:\r
528         ret = 512;\r
529         break;\r
530       case 515:\r
531         ret = 514;\r
532         break;\r
533       case 517:\r
534         ret = 516;\r
535         break;\r
536       case 519:\r
537         ret = 518;\r
538         break;\r
539       case 521:\r
540         ret = 520;\r
541         break;\r
542       case 523:\r
543         ret = 522;\r
544         break;\r
545       case 525:\r
546         ret = 524;\r
547         break;\r
548       case 527:\r
549         ret = 526;\r
550         break;\r
551       case 529:\r
552         ret = 528;\r
553         break;\r
554       case 531:\r
555         ret = 530;\r
556         break;\r
557       case 533:\r
558         ret = 532;\r
559         break;\r
560       case 535:\r
561         ret = 534;\r
562         break;\r
563       case 595:\r
564         ret = 385;\r
565         break;\r
566       case 596:\r
567         ret = 390;\r
568         break;\r
569       case 598:\r
570         ret = 393;\r
571         break;\r
572       case 599:\r
573         ret = 394;\r
574         break;\r
575       case 600:\r
576         ret = 398;\r
577         break;\r
578       case 601:\r
579         ret = 399;\r
580         break;\r
581       case 603:\r
582         ret = 400;\r
583         break;\r
584       case 608:\r
585         ret = 403;\r
586         break;\r
587       case 611:\r
588         ret = 404;\r
589         break;\r
590       case 616:\r
591         ret = 407;\r
592         break;\r
593       case 617:\r
594         ret = 406;\r
595         break;\r
596       case 623:\r
597         ret = 412;\r
598         break;\r
599       case 626:\r
600         ret = 413;\r
601         break;\r
602       case 643:\r
603         ret = 425;\r
604         break;\r
605       case 648:\r
606         ret = 430;\r
607         break;\r
608       case 650:\r
609         ret = 433;\r
610         break;\r
611       case 651:\r
612         ret = 434;\r
613         break;\r
614       case 658:\r
615         ret = 439;\r
616         break;\r
617       case 940:\r
618         ret = 902;\r
619         break;\r
620       case 941:\r
621         ret = 904;\r
622         break;\r
623       case 942:\r
624         ret = 905;\r
625         break;\r
626       case 943:\r
627         ret = 906;\r
628         break;\r
629       case 945:\r
630         ret = 913;\r
631         break;\r
632       case 946:\r
633         ret = 914;\r
634         break;\r
635       case 947:\r
636         ret = 915;\r
637         break;\r
638       case 948:\r
639         ret = 916;\r
640         break;\r
641       case 949:\r
642         ret = 917;\r
643         break;\r
644       case 950:\r
645         ret = 918;\r
646         break;\r
647       case 951:\r
648         ret = 919;\r
649         break;\r
650       case 952:\r
651         ret = 920;\r
652         break;\r
653       case 953:\r
654         ret = 921;\r
655         break;\r
656       case 954:\r
657         ret = 922;\r
658         break;\r
659       case 955:\r
660         ret = 923;\r
661         break;\r
662       case 956:\r
663         ret = 924;\r
664         break;\r
665       case 957:\r
666         ret = 925;\r
667         break;\r
668       case 958:\r
669         ret = 926;\r
670         break;\r
671       case 959:\r
672         ret = 927;\r
673         break;\r
674       case 960:\r
675         ret = 928;\r
676         break;\r
677       case 961:\r
678         ret = 929;\r
679         break;\r
680       case 963:\r
681         ret = 931;\r
682         break;\r
683       case 964:\r
684         ret = 932;\r
685         break;\r
686       case 965:\r
687         ret = 933;\r
688         break;\r
689       case 966:\r
690         ret = 934;\r
691         break;\r
692       case 967:\r
693         ret = 935;\r
694         break;\r
695       case 968:\r
696         ret = 936;\r
697         break;\r
698       case 969:\r
699         ret = 937;\r
700         break;\r
701       case 970:\r
702         ret = 938;\r
703         break;\r
704       case 971:\r
705         ret = 939;\r
706         break;\r
707       case 972:\r
708         ret = 908;\r
709         break;\r
710       case 973:\r
711         ret = 910;\r
712         break;\r
713       case 974:\r
714         ret = 911;\r
715         break;\r
716       case 976:\r
717         ret = 914;\r
718         break;\r
719       case 977:\r
720         ret = 920;\r
721         break;\r
722       case 981:\r
723         ret = 934;\r
724         break;\r
725       case 982:\r
726         ret = 928;\r
727         break;\r
728       case 995:\r
729         ret = 994;\r
730         break;\r
731       case 997:\r
732         ret = 996;\r
733         break;\r
734       case 999:\r
735         ret = 998;\r
736         break;\r
737       case 1001:\r
738         ret = 1000;\r
739         break;\r
740       case 1003:\r
741         ret = 1002;\r
742         break;\r
743       case 1005:\r
744         ret = 1004;\r
745         break;\r
746       case 1007:\r
747         ret = 1006;\r
748         break;\r
749       case 1008:\r
750         ret = 922;\r
751         break;\r
752       case 1009:\r
753         ret = 929;\r
754         break;\r
755       case 1072:\r
756         ret = 1040;\r
757         break;\r
758       case 1073:\r
759         ret = 1041;\r
760         break;\r
761       case 1074:\r
762         ret = 1042;\r
763         break;\r
764       case 1075:\r
765         ret = 1043;\r
766         break;\r
767       case 1076:\r
768         ret = 1044;\r
769         break;\r
770       case 1077:\r
771         ret = 1045;\r
772         break;\r
773       case 1078:\r
774         ret = 1046;\r
775         break;\r
776       case 1079:\r
777         ret = 1047;\r
778         break;\r
779       case 1080:\r
780         ret = 1048;\r
781         break;\r
782       case 1081:\r
783         ret = 1049;\r
784         break;\r
785       case 1082:\r
786         ret = 1050;\r
787         break;\r
788       case 1083:\r
789         ret = 1051;\r
790         break;\r
791       case 1084:\r
792         ret = 1052;\r
793         break;\r
794       case 1085:\r
795         ret = 1053;\r
796         break;\r
797       case 1086:\r
798         ret = 1054;\r
799         break;\r
800       case 1087:\r
801         ret = 1055;\r
802         break;\r
803       case 1088:\r
804         ret = 1056;\r
805         break;\r
806       case 1089:\r
807         ret = 1057;\r
808         break;\r
809       case 1090:\r
810         ret = 1058;\r
811         break;\r
812       case 1091:\r
813         ret = 1059;\r
814         break;\r
815       case 1092:\r
816         ret = 1060;\r
817         break;\r
818       case 1093:\r
819         ret = 1061;\r
820         break;\r
821       case 1094:\r
822         ret = 1062;\r
823         break;\r
824       case 1095:\r
825         ret = 1063;\r
826         break;\r
827       case 1096:\r
828         ret = 1064;\r
829         break;\r
830       case 1097:\r
831         ret = 1065;\r
832         break;\r
833       case 1098:\r
834         ret = 1066;\r
835         break;\r
836       case 1099:\r
837         ret = 1067;\r
838         break;\r
839       case 1100:\r
840         ret = 1068;\r
841         break;\r
842       case 1101:\r
843         ret = 1069;\r
844         break;\r
845       case 1102:\r
846         ret = 1070;\r
847         break;\r
848       case 1103:\r
849         ret = 1071;\r
850         break;\r
851       case 1105:\r
852         ret = 1025;\r
853         break;\r
854       case 1106:\r
855         ret = 1026;\r
856         break;\r
857       case 1107:\r
858         ret = 1027;\r
859         break;\r
860       case 1108:\r
861         ret = 1028;\r
862         break;\r
863       case 1109:\r
864         ret = 1029;\r
865         break;\r
866       case 1110:\r
867         ret = 1030;\r
868         break;\r
869       case 1111:\r
870         ret = 1031;\r
871         break;\r
872       case 1112:\r
873         ret = 1032;\r
874         break;\r
875       case 1113:\r
876         ret = 1033;\r
877         break;\r
878       case 1114:\r
879         ret = 1034;\r
880         break;\r
881       case 1115:\r
882         ret = 1035;\r
883         break;\r
884       case 1116:\r
885         ret = 1036;\r
886         break;\r
887       case 1118:\r
888         ret = 1038;\r
889         break;\r
890       case 1119:\r
891         ret = 1039;\r
892         break;\r
893       case 1121:\r
894         ret = 1120;\r
895         break;\r
896       case 1123:\r
897         ret = 1122;\r
898         break;\r
899       case 1125:\r
900         ret = 1124;\r
901         break;\r
902       case 1127:\r
903         ret = 1126;\r
904         break;\r
905       case 1129:\r
906         ret = 1128;\r
907         break;\r
908       case 1131:\r
909         ret = 1130;\r
910         break;\r
911       case 1133:\r
912         ret = 1132;\r
913         break;\r
914       case 1135:\r
915         ret = 1134;\r
916         break;\r
917       case 1137:\r
918         ret = 1136;\r
919         break;\r
920       case 1139:\r
921         ret = 1138;\r
922         break;\r
923       case 1141:\r
924         ret = 1140;\r
925         break;\r
926       case 1143:\r
927         ret = 1142;\r
928         break;\r
929       case 1145:\r
930         ret = 1144;\r
931         break;\r
932       case 1147:\r
933         ret = 1146;\r
934         break;\r
935       case 1149:\r
936         ret = 1148;\r
937         break;\r
938       case 1151:\r
939         ret = 1150;\r
940         break;\r
941       case 1153:\r
942         ret = 1152;\r
943         break;\r
944       case 1169:\r
945         ret = 1168;\r
946         break;\r
947       case 1171:\r
948         ret = 1170;\r
949         break;\r
950       case 1173:\r
951         ret = 1172;\r
952         break;\r
953       case 1175:\r
954         ret = 1174;\r
955         break;\r
956       case 1177:\r
957         ret = 1176;\r
958         break;\r
959       case 1179:\r
960         ret = 1178;\r
961         break;\r
962       case 1181:\r
963         ret = 1180;\r
964         break;\r
965       case 1183:\r
966         ret = 1182;\r
967         break;\r
968       case 1185:\r
969         ret = 1184;\r
970         break;\r
971       case 1187:\r
972         ret = 1186;\r
973         break;\r
974       case 1189:\r
975         ret = 1188;\r
976         break;\r
977       case 1191:\r
978         ret = 1190;\r
979         break;\r
980       case 1193:\r
981         ret = 1192;\r
982         break;\r
983       case 1195:\r
984         ret = 1194;\r
985         break;\r
986       case 1197:\r
987         ret = 1196;\r
988         break;\r
989       case 1199:\r
990         ret = 1198;\r
991         break;\r
992       case 1201:\r
993         ret = 1200;\r
994         break;\r
995       case 1203:\r
996         ret = 1202;\r
997         break;\r
998       case 1205:\r
999         ret = 1204;\r
1000         break;\r
1001       case 1207:\r
1002         ret = 1206;\r
1003         break;\r
1004       case 1209:\r
1005         ret = 1208;\r
1006         break;\r
1007       case 1211:\r
1008         ret = 1210;\r
1009         break;\r
1010       case 1213:\r
1011         ret = 1212;\r
1012         break;\r
1013       case 1215:\r
1014         ret = 1214;\r
1015         break;\r
1016       case 1218:\r
1017         ret = 1217;\r
1018         break;\r
1019       case 1220:\r
1020         ret = 1219;\r
1021         break;\r
1022       case 1224:\r
1023         ret = 1223;\r
1024         break;\r
1025       case 1228:\r
1026         ret = 1227;\r
1027         break;\r
1028       case 1233:\r
1029         ret = 1232;\r
1030         break;\r
1031       case 1235:\r
1032         ret = 1234;\r
1033         break;\r
1034       case 1237:\r
1035         ret = 1236;\r
1036         break;\r
1037       case 1239:\r
1038         ret = 1238;\r
1039         break;\r
1040       case 1241:\r
1041         ret = 1240;\r
1042         break;\r
1043       case 1243:\r
1044         ret = 1242;\r
1045         break;\r
1046       case 1245:\r
1047         ret = 1244;\r
1048         break;\r
1049       case 1247:\r
1050         ret = 1246;\r
1051         break;\r
1052       case 1249:\r
1053         ret = 1248;\r
1054         break;\r
1055       case 1251:\r
1056         ret = 1250;\r
1057         break;\r
1058       case 1253:\r
1059         ret = 1252;\r
1060         break;\r
1061       case 1255:\r
1062         ret = 1254;\r
1063         break;\r
1064       case 1257:\r
1065         ret = 1256;\r
1066         break;\r
1067       case 1259:\r
1068         ret = 1258;\r
1069         break;\r
1070       case 1263:\r
1071         ret = 1262;\r
1072         break;\r
1073       case 1265:\r
1074         ret = 1264;\r
1075         break;\r
1076       case 1267:\r
1077         ret = 1266;\r
1078         break;\r
1079       case 1269:\r
1080         ret = 1268;\r
1081         break;\r
1082       case 1273:\r
1083         ret = 1272;\r
1084         break;\r
1085       case 1377:\r
1086         ret = 1329;\r
1087         break;\r
1088       case 1378:\r
1089         ret = 1330;\r
1090         break;\r
1091       case 1379:\r
1092         ret = 1331;\r
1093         break;\r
1094       case 1380:\r
1095         ret = 1332;\r
1096         break;\r
1097       case 1381:\r
1098         ret = 1333;\r
1099         break;\r
1100       case 1382:\r
1101         ret = 1334;\r
1102         break;\r
1103       case 1383:\r
1104         ret = 1335;\r
1105         break;\r
1106       case 1384:\r
1107         ret = 1336;\r
1108         break;\r
1109       case 1385:\r
1110         ret = 1337;\r
1111         break;\r
1112       case 1386:\r
1113         ret = 1338;\r
1114         break;\r
1115       case 1387:\r
1116         ret = 1339;\r
1117         break;\r
1118       case 1388:\r
1119         ret = 1340;\r
1120         break;\r
1121       case 1389:\r
1122         ret = 1341;\r
1123         break;\r
1124       case 1390:\r
1125         ret = 1342;\r
1126         break;\r
1127       case 1391:\r
1128         ret = 1343;\r
1129         break;\r
1130       case 1392:\r
1131         ret = 1344;\r
1132         break;\r
1133       case 1393:\r
1134         ret = 1345;\r
1135         break;\r
1136       case 1394:\r
1137         ret = 1346;\r
1138         break;\r
1139       case 1395:\r
1140         ret = 1347;\r
1141         break;\r
1142       case 1396:\r
1143         ret = 1348;\r
1144         break;\r
1145       case 1397:\r
1146         ret = 1349;\r
1147         break;\r
1148       case 1398:\r
1149         ret = 1350;\r
1150         break;\r
1151       case 1399:\r
1152         ret = 1351;\r
1153         break;\r
1154       case 1400:\r
1155         ret = 1352;\r
1156         break;\r
1157       case 1401:\r
1158         ret = 1353;\r
1159         break;\r
1160       case 1402:\r
1161         ret = 1354;\r
1162         break;\r
1163       case 1403:\r
1164         ret = 1355;\r
1165         break;\r
1166       case 1404:\r
1167         ret = 1356;\r
1168         break;\r
1169       case 1405:\r
1170         ret = 1357;\r
1171         break;\r
1172       case 1406:\r
1173         ret = 1358;\r
1174         break;\r
1175       case 1407:\r
1176         ret = 1359;\r
1177         break;\r
1178       case 1408:\r
1179         ret = 1360;\r
1180         break;\r
1181       case 1409:\r
1182         ret = 1361;\r
1183         break;\r
1184       case 1410:\r
1185         ret = 1362;\r
1186         break;\r
1187       case 1411:\r
1188         ret = 1363;\r
1189         break;\r
1190       case 1412:\r
1191         ret = 1364;\r
1192         break;\r
1193       case 1413:\r
1194         ret = 1365;\r
1195         break;\r
1196       case 1414:\r
1197         ret = 1366;\r
1198         break;\r
1199       case 7681:\r
1200         ret = 7680;\r
1201         break;\r
1202       case 7683:\r
1203         ret = 7682;\r
1204         break;\r
1205       case 7685:\r
1206         ret = 7684;\r
1207         break;\r
1208       case 7687:\r
1209         ret = 7686;\r
1210         break;\r
1211       case 7689:\r
1212         ret = 7688;\r
1213         break;\r
1214       case 7691:\r
1215         ret = 7690;\r
1216         break;\r
1217       case 7693:\r
1218         ret = 7692;\r
1219         break;\r
1220       case 7695:\r
1221         ret = 7694;\r
1222         break;\r
1223       case 7697:\r
1224         ret = 7696;\r
1225         break;\r
1226       case 7699:\r
1227         ret = 7698;\r
1228         break;\r
1229       case 7701:\r
1230         ret = 7700;\r
1231         break;\r
1232       case 7703:\r
1233         ret = 7702;\r
1234         break;\r
1235       case 7705:\r
1236         ret = 7704;\r
1237         break;\r
1238       case 7707:\r
1239         ret = 7706;\r
1240         break;\r
1241       case 7709:\r
1242         ret = 7708;\r
1243         break;\r
1244       case 7711:\r
1245         ret = 7710;\r
1246         break;\r
1247       case 7713:\r
1248         ret = 7712;\r
1249         break;\r
1250       case 7715:\r
1251         ret = 7714;\r
1252         break;\r
1253       case 7717:\r
1254         ret = 7716;\r
1255         break;\r
1256       case 7719:\r
1257         ret = 7718;\r
1258         break;\r
1259       case 7721:\r
1260         ret = 7720;\r
1261         break;\r
1262       case 7723:\r
1263         ret = 7722;\r
1264         break;\r
1265       case 7725:\r
1266         ret = 7724;\r
1267         break;\r
1268       case 7727:\r
1269         ret = 7726;\r
1270         break;\r
1271       case 7729:\r
1272         ret = 7728;\r
1273         break;\r
1274       case 7731:\r
1275         ret = 7730;\r
1276         break;\r
1277       case 7733:\r
1278         ret = 7732;\r
1279         break;\r
1280       case 7735:\r
1281         ret = 7734;\r
1282         break;\r
1283       case 7737:\r
1284         ret = 7736;\r
1285         break;\r
1286       case 7739:\r
1287         ret = 7738;\r
1288         break;\r
1289       case 7741:\r
1290         ret = 7740;\r
1291         break;\r
1292       case 7743:\r
1293         ret = 7742;\r
1294         break;\r
1295       case 7745:\r
1296         ret = 7744;\r
1297         break;\r
1298       case 7747:\r
1299         ret = 7746;\r
1300         break;\r
1301       case 7749:\r
1302         ret = 7748;\r
1303         break;\r
1304       case 7751:\r
1305         ret = 7750;\r
1306         break;\r
1307       case 7753:\r
1308         ret = 7752;\r
1309         break;\r
1310       case 7755:\r
1311         ret = 7754;\r
1312         break;\r
1313       case 7757:\r
1314         ret = 7756;\r
1315         break;\r
1316       case 7759:\r
1317         ret = 7758;\r
1318         break;\r
1319       case 7761:\r
1320         ret = 7760;\r
1321         break;\r
1322       case 7763:\r
1323         ret = 7762;\r
1324         break;\r
1325       case 7765:\r
1326         ret = 7764;\r
1327         break;\r
1328       case 7767:\r
1329         ret = 7766;\r
1330         break;\r
1331       case 7769:\r
1332         ret = 7768;\r
1333         break;\r
1334       case 7771:\r
1335         ret = 7770;\r
1336         break;\r
1337       case 7773:\r
1338         ret = 7772;\r
1339         break;\r
1340       case 7775:\r
1341         ret = 7774;\r
1342         break;\r
1343       case 7777:\r
1344         ret = 7776;\r
1345         break;\r
1346       case 7779:\r
1347         ret = 7778;\r
1348         break;\r
1349       case 7781:\r
1350         ret = 7780;\r
1351         break;\r
1352       case 7783:\r
1353         ret = 7782;\r
1354         break;\r
1355       case 7785:\r
1356         ret = 7784;\r
1357         break;\r
1358       case 7787:\r
1359         ret = 7786;\r
1360         break;\r
1361       case 7789:\r
1362         ret = 7788;\r
1363         break;\r
1364       case 7791:\r
1365         ret = 7790;\r
1366         break;\r
1367       case 7793:\r
1368         ret = 7792;\r
1369         break;\r
1370       case 7795:\r
1371         ret = 7794;\r
1372         break;\r
1373       case 7797:\r
1374         ret = 7796;\r
1375         break;\r
1376       case 7799:\r
1377         ret = 7798;\r
1378         break;\r
1379       case 7801:\r
1380         ret = 7800;\r
1381         break;\r
1382       case 7803:\r
1383         ret = 7802;\r
1384         break;\r
1385       case 7805:\r
1386         ret = 7804;\r
1387         break;\r
1388       case 7807:\r
1389         ret = 7806;\r
1390         break;\r
1391       case 7809:\r
1392         ret = 7808;\r
1393         break;\r
1394       case 7811:\r
1395         ret = 7810;\r
1396         break;\r
1397       case 7813:\r
1398         ret = 7812;\r
1399         break;\r
1400       case 7815:\r
1401         ret = 7814;\r
1402         break;\r
1403       case 7817:\r
1404         ret = 7816;\r
1405         break;\r
1406       case 7819:\r
1407         ret = 7818;\r
1408         break;\r
1409       case 7821:\r
1410         ret = 7820;\r
1411         break;\r
1412       case 7823:\r
1413         ret = 7822;\r
1414         break;\r
1415       case 7825:\r
1416         ret = 7824;\r
1417         break;\r
1418       case 7827:\r
1419         ret = 7826;\r
1420         break;\r
1421       case 7829:\r
1422         ret = 7828;\r
1423         break;\r
1424       case 7841:\r
1425         ret = 7840;\r
1426         break;\r
1427       case 7843:\r
1428         ret = 7842;\r
1429         break;\r
1430       case 7845:\r
1431         ret = 7844;\r
1432         break;\r
1433       case 7847:\r
1434         ret = 7846;\r
1435         break;\r
1436       case 7849:\r
1437         ret = 7848;\r
1438         break;\r
1439       case 7851:\r
1440         ret = 7850;\r
1441         break;\r
1442       case 7853:\r
1443         ret = 7852;\r
1444         break;\r
1445       case 7855:\r
1446         ret = 7854;\r
1447         break;\r
1448       case 7857:\r
1449         ret = 7856;\r
1450         break;\r
1451       case 7859:\r
1452         ret = 7858;\r
1453         break;\r
1454       case 7861:\r
1455         ret = 7860;\r
1456         break;\r
1457       case 7863:\r
1458         ret = 7862;\r
1459         break;\r
1460       case 7865:\r
1461         ret = 7864;\r
1462         break;\r
1463       case 7867:\r
1464         ret = 7866;\r
1465         break;\r
1466       case 7869:\r
1467         ret = 7868;\r
1468         break;\r
1469       case 7871:\r
1470         ret = 7870;\r
1471         break;\r
1472       case 7873:\r
1473         ret = 7872;\r
1474         break;\r
1475       case 7875:\r
1476         ret = 7874;\r
1477         break;\r
1478       case 7877:\r
1479         ret = 7876;\r
1480         break;\r
1481       case 7879:\r
1482         ret = 7878;\r
1483         break;\r
1484       case 7881:\r
1485         ret = 7880;\r
1486         break;\r
1487       case 7883:\r
1488         ret = 7882;\r
1489         break;\r
1490       case 7885:\r
1491         ret = 7884;\r
1492         break;\r
1493       case 7887:\r
1494         ret = 7886;\r
1495         break;\r
1496       case 7889:\r
1497         ret = 7888;\r
1498         break;\r
1499       case 7891:\r
1500         ret = 7890;\r
1501         break;\r
1502       case 7893:\r
1503         ret = 7892;\r
1504         break;\r
1505       case 7895:\r
1506         ret = 7894;\r
1507         break;\r
1508       case 7897:\r
1509         ret = 7896;\r
1510         break;\r
1511       case 7899:\r
1512         ret = 7898;\r
1513         break;\r
1514       case 7901:\r
1515         ret = 7900;\r
1516         break;\r
1517       case 7903:\r
1518         ret = 7902;\r
1519         break;\r
1520       case 7905:\r
1521         ret = 7904;\r
1522         break;\r
1523       case 7907:\r
1524         ret = 7906;\r
1525         break;\r
1526       case 7909:\r
1527         ret = 7908;\r
1528         break;\r
1529       case 7911:\r
1530         ret = 7910;\r
1531         break;\r
1532       case 7913:\r
1533         ret = 7912;\r
1534         break;\r
1535       case 7915:\r
1536         ret = 7914;\r
1537         break;\r
1538       case 7917:\r
1539         ret = 7916;\r
1540         break;\r
1541       case 7919:\r
1542         ret = 7918;\r
1543         break;\r
1544       case 7921:\r
1545         ret = 7920;\r
1546         break;\r
1547       case 7923:\r
1548         ret = 7922;\r
1549         break;\r
1550       case 7925:\r
1551         ret = 7924;\r
1552         break;\r
1553       case 7927:\r
1554         ret = 7926;\r
1555         break;\r
1556       case 7929:\r
1557         ret = 7928;\r
1558         break;\r
1559       case 7936:\r
1560         ret = 7944;\r
1561         break;\r
1562       case 7937:\r
1563         ret = 7945;\r
1564         break;\r
1565       case 7938:\r
1566         ret = 7946;\r
1567         break;\r
1568       case 7939:\r
1569         ret = 7947;\r
1570         break;\r
1571       case 7940:\r
1572         ret = 7948;\r
1573         break;\r
1574       case 7941:\r
1575         ret = 7949;\r
1576         break;\r
1577       case 7942:\r
1578         ret = 7950;\r
1579         break;\r
1580       case 7943:\r
1581         ret = 7951;\r
1582         break;\r
1583       case 7952:\r
1584         ret = 7960;\r
1585         break;\r
1586       case 7953:\r
1587         ret = 7961;\r
1588         break;\r
1589       case 7954:\r
1590         ret = 7962;\r
1591         break;\r
1592       case 7955:\r
1593         ret = 7963;\r
1594         break;\r
1595       case 7956:\r
1596         ret = 7964;\r
1597         break;\r
1598       case 7957:\r
1599         ret = 7965;\r
1600         break;\r
1601       case 7968:\r
1602         ret = 7976;\r
1603         break;\r
1604       case 7969:\r
1605         ret = 7977;\r
1606         break;\r
1607       case 7970:\r
1608         ret = 7978;\r
1609         break;\r
1610       case 7971:\r
1611         ret = 7979;\r
1612         break;\r
1613       case 7972:\r
1614         ret = 7980;\r
1615         break;\r
1616       case 7973:\r
1617         ret = 7981;\r
1618         break;\r
1619       case 7974:\r
1620         ret = 7982;\r
1621         break;\r
1622       case 7975:\r
1623         ret = 7983;\r
1624         break;\r
1625       case 7984:\r
1626         ret = 7992;\r
1627         break;\r
1628       case 7985:\r
1629         ret = 7993;\r
1630         break;\r
1631       case 7986:\r
1632         ret = 7994;\r
1633         break;\r
1634       case 7987:\r
1635         ret = 7995;\r
1636         break;\r
1637       case 7988:\r
1638         ret = 7996;\r
1639         break;\r
1640       case 7989:\r
1641         ret = 7997;\r
1642         break;\r
1643       case 7990:\r
1644         ret = 7998;\r
1645         break;\r
1646       case 7991:\r
1647         ret = 7999;\r
1648         break;\r
1649       case 8000:\r
1650         ret = 8008;\r
1651         break;\r
1652       case 8001:\r
1653         ret = 8009;\r
1654         break;\r
1655       case 8002:\r
1656         ret = 8010;\r
1657         break;\r
1658       case 8003:\r
1659         ret = 8011;\r
1660         break;\r
1661       case 8004:\r
1662         ret = 8012;\r
1663         break;\r
1664       case 8005:\r
1665         ret = 8013;\r
1666         break;\r
1667       case 8017:\r
1668         ret = 8025;\r
1669         break;\r
1670       case 8019:\r
1671         ret = 8027;\r
1672         break;\r
1673       case 8021:\r
1674         ret = 8029;\r
1675         break;\r
1676       case 8023:\r
1677         ret = 8031;\r
1678         break;\r
1679       case 8032:\r
1680         ret = 8040;\r
1681         break;\r
1682       case 8033:\r
1683         ret = 8041;\r
1684         break;\r
1685       case 8034:\r
1686         ret = 8042;\r
1687         break;\r
1688       case 8035:\r
1689         ret = 8043;\r
1690         break;\r
1691       case 8036:\r
1692         ret = 8044;\r
1693         break;\r
1694       case 8037:\r
1695         ret = 8045;\r
1696         break;\r
1697       case 8038:\r
1698         ret = 8046;\r
1699         break;\r
1700       case 8039:\r
1701         ret = 8047;\r
1702         break;\r
1703       case 8048:\r
1704         ret = 8122;\r
1705         break;\r
1706       case 8049:\r
1707         ret = 8123;\r
1708         break;\r
1709       case 8050:\r
1710         ret = 8136;\r
1711         break;\r
1712       case 8051:\r
1713         ret = 8137;\r
1714         break;\r
1715       case 8052:\r
1716         ret = 8138;\r
1717         break;\r
1718       case 8053:\r
1719         ret = 8139;\r
1720         break;\r
1721       case 8054:\r
1722         ret = 8154;\r
1723         break;\r
1724       case 8055:\r
1725         ret = 8155;\r
1726         break;\r
1727       case 8056:\r
1728         ret = 8184;\r
1729         break;\r
1730       case 8057:\r
1731         ret = 8185;\r
1732         break;\r
1733       case 8058:\r
1734         ret = 8170;\r
1735         break;\r
1736       case 8059:\r
1737         ret = 8171;\r
1738         break;\r
1739       case 8060:\r
1740         ret = 8186;\r
1741         break;\r
1742       case 8061:\r
1743         ret = 8187;\r
1744         break;\r
1745       case 8064:\r
1746         ret = 8072;\r
1747         break;\r
1748       case 8065:\r
1749         ret = 8073;\r
1750         break;\r
1751       case 8066:\r
1752         ret = 8074;\r
1753         break;\r
1754       case 8067:\r
1755         ret = 8075;\r
1756         break;\r
1757       case 8068:\r
1758         ret = 8076;\r
1759         break;\r
1760       case 8069:\r
1761         ret = 8077;\r
1762         break;\r
1763       case 8070:\r
1764         ret = 8078;\r
1765         break;\r
1766       case 8071:\r
1767         ret = 8079;\r
1768         break;\r
1769       case 8080:\r
1770         ret = 8088;\r
1771         break;\r
1772       case 8081:\r
1773         ret = 8089;\r
1774         break;\r
1775       case 8082:\r
1776         ret = 8090;\r
1777         break;\r
1778       case 8083:\r
1779         ret = 8091;\r
1780         break;\r
1781       case 8084:\r
1782         ret = 8092;\r
1783         break;\r
1784       case 8085:\r
1785         ret = 8093;\r
1786         break;\r
1787       case 8086:\r
1788         ret = 8094;\r
1789         break;\r
1790       case 8087:\r
1791         ret = 8095;\r
1792         break;\r
1793       case 8096:\r
1794         ret = 8104;\r
1795         break;\r
1796       case 8097:\r
1797         ret = 8105;\r
1798         break;\r
1799       case 8098:\r
1800         ret = 8106;\r
1801         break;\r
1802       case 8099:\r
1803         ret = 8107;\r
1804         break;\r
1805       case 8100:\r
1806         ret = 8108;\r
1807         break;\r
1808       case 8101:\r
1809         ret = 8109;\r
1810         break;\r
1811       case 8102:\r
1812         ret = 8110;\r
1813         break;\r
1814       case 8103:\r
1815         ret = 8111;\r
1816         break;\r
1817       case 8112:\r
1818         ret = 8120;\r
1819         break;\r
1820       case 8113:\r
1821         ret = 8121;\r
1822         break;\r
1823       case 8115:\r
1824         ret = 8124;\r
1825         break;\r
1826       case 8131:\r
1827         ret = 8140;\r
1828         break;\r
1829       case 8144:\r
1830         ret = 8152;\r
1831         break;\r
1832       case 8145:\r
1833         ret = 8153;\r
1834         break;\r
1835       case 8160:\r
1836         ret = 8168;\r
1837         break;\r
1838       case 8161:\r
1839         ret = 8169;\r
1840         break;\r
1841       case 8165:\r
1842         ret = 8172;\r
1843         break;\r
1844       case 8179:\r
1845         ret = 8188;\r
1846         break;\r
1847       case 8560:\r
1848         ret = 8544;\r
1849         break;\r
1850       case 8561:\r
1851         ret = 8545;\r
1852         break;\r
1853       case 8562:\r
1854         ret = 8546;\r
1855         break;\r
1856       case 8563:\r
1857         ret = 8547;\r
1858         break;\r
1859       case 8564:\r
1860         ret = 8548;\r
1861         break;\r
1862       case 8565:\r
1863         ret = 8549;\r
1864         break;\r
1865       case 8566:\r
1866         ret = 8550;\r
1867         break;\r
1868       case 8567:\r
1869         ret = 8551;\r
1870         break;\r
1871       case 8568:\r
1872         ret = 8552;\r
1873         break;\r
1874       case 8569:\r
1875         ret = 8553;\r
1876         break;\r
1877       case 8570:\r
1878         ret = 8554;\r
1879         break;\r
1880       case 8571:\r
1881         ret = 8555;\r
1882         break;\r
1883       case 8572:\r
1884         ret = 8556;\r
1885         break;\r
1886       case 8573:\r
1887         ret = 8557;\r
1888         break;\r
1889       case 8574:\r
1890         ret = 8558;\r
1891         break;\r
1892       case 8575:\r
1893         ret = 8559;\r
1894         break;\r
1895       case 9424:\r
1896         ret = 9398;\r
1897         break;\r
1898       case 9425:\r
1899         ret = 9399;\r
1900         break;\r
1901       case 9426:\r
1902         ret = 9400;\r
1903         break;\r
1904       case 9427:\r
1905         ret = 9401;\r
1906         break;\r
1907       case 9428:\r
1908         ret = 9402;\r
1909         break;\r
1910       case 9429:\r
1911         ret = 9403;\r
1912         break;\r
1913       case 9430:\r
1914         ret = 9404;\r
1915         break;\r
1916       case 9431:\r
1917         ret = 9405;\r
1918         break;\r
1919       case 9432:\r
1920         ret = 9406;\r
1921         break;\r
1922       case 9433:\r
1923         ret = 9407;\r
1924         break;\r
1925       case 9434:\r
1926         ret = 9408;\r
1927         break;\r
1928       case 9435:\r
1929         ret = 9409;\r
1930         break;\r
1931       case 9436:\r
1932         ret = 9410;\r
1933         break;\r
1934       case 9437:\r
1935         ret = 9411;\r
1936         break;\r
1937       case 9438:\r
1938         ret = 9412;\r
1939         break;\r
1940       case 9439:\r
1941         ret = 9413;\r
1942         break;\r
1943       case 9440:\r
1944         ret = 9414;\r
1945         break;\r
1946       case 9441:\r
1947         ret = 9415;\r
1948         break;\r
1949       case 9442:\r
1950         ret = 9416;\r
1951         break;\r
1952       case 9443:\r
1953         ret = 9417;\r
1954         break;\r
1955       case 9444:\r
1956         ret = 9418;\r
1957         break;\r
1958       case 9445:\r
1959         ret = 9419;\r
1960         break;\r
1961       case 9446:\r
1962         ret = 9420;\r
1963         break;\r
1964       case 9447:\r
1965         ret = 9421;\r
1966         break;\r
1967       case 9448:\r
1968         ret = 9422;\r
1969         break;\r
1970       case 9449:\r
1971         ret = 9423;\r
1972         break;\r
1973       case 65345:\r
1974         ret = 65313;\r
1975         break;\r
1976       case 65346:\r
1977         ret = 65314;\r
1978         break;\r
1979       case 65347:\r
1980         ret = 65315;\r
1981         break;\r
1982       case 65348:\r
1983         ret = 65316;\r
1984         break;\r
1985       case 65349:\r
1986         ret = 65317;\r
1987         break;\r
1988       case 65350:\r
1989         ret = 65318;\r
1990         break;\r
1991       case 65351:\r
1992         ret = 65319;\r
1993         break;\r
1994       case 65352:\r
1995         ret = 65320;\r
1996         break;\r
1997       case 65353:\r
1998         ret = 65321;\r
1999         break;\r
2000       case 65354:\r
2001         ret = 65322;\r
2002         break;\r
2003       case 65355:\r
2004         ret = 65323;\r
2005         break;\r
2006       case 65356:\r
2007         ret = 65324;\r
2008         break;\r
2009       case 65357:\r
2010         ret = 65325;\r
2011         break;\r
2012       case 65358:\r
2013         ret = 65326;\r
2014         break;\r
2015       case 65359:\r
2016         ret = 65327;\r
2017         break;\r
2018       case 65360:\r
2019         ret = 65328;\r
2020         break;\r
2021       case 65361:\r
2022         ret = 65329;\r
2023         break;\r
2024       case 65362:\r
2025         ret = 65330;\r
2026         break;\r
2027       case 65363:\r
2028         ret = 65331;\r
2029         break;\r
2030       case 65364:\r
2031         ret = 65332;\r
2032         break;\r
2033       case 65365:\r
2034         ret = 65333;\r
2035         break;\r
2036       case 65366:\r
2037         ret = 65334;\r
2038         break;\r
2039       case 65367:\r
2040         ret = 65335;\r
2041         break;\r
2042       case 65368:\r
2043         ret = 65336;\r
2044         break;\r
2045       case 65369:\r
2046         ret = 65337;\r
2047         break;\r
2048       case 65370:\r
2049         ret = 65338;\r
2050         break;\r
2051       }\r
2052       return (char) ret;\r
2053     }\r
2054     return Character.toUpperCase(c);\r
2055   }\r
2056 \r
2057   /** Convert a character to lower case. */\r
2058   public static char toLowerCase(char c)\r
2059   {\r
2060     if (java_1_0)\r
2061     {\r
2062       int ret = (int) c;\r
2063       switch (c)\r
2064       {\r
2065       case 65:\r
2066         ret = 97;\r
2067         break;\r
2068       case 66:\r
2069         ret = 98;\r
2070         break;\r
2071       case 67:\r
2072         ret = 99;\r
2073         break;\r
2074       case 68:\r
2075         ret = 100;\r
2076         break;\r
2077       case 69:\r
2078         ret = 101;\r
2079         break;\r
2080       case 70:\r
2081         ret = 102;\r
2082         break;\r
2083       case 71:\r
2084         ret = 103;\r
2085         break;\r
2086       case 72:\r
2087         ret = 104;\r
2088         break;\r
2089       case 73:\r
2090         ret = 105;\r
2091         break;\r
2092       case 74:\r
2093         ret = 106;\r
2094         break;\r
2095       case 75:\r
2096         ret = 107;\r
2097         break;\r
2098       case 76:\r
2099         ret = 108;\r
2100         break;\r
2101       case 77:\r
2102         ret = 109;\r
2103         break;\r
2104       case 78:\r
2105         ret = 110;\r
2106         break;\r
2107       case 79:\r
2108         ret = 111;\r
2109         break;\r
2110       case 80:\r
2111         ret = 112;\r
2112         break;\r
2113       case 81:\r
2114         ret = 113;\r
2115         break;\r
2116       case 82:\r
2117         ret = 114;\r
2118         break;\r
2119       case 83:\r
2120         ret = 115;\r
2121         break;\r
2122       case 84:\r
2123         ret = 116;\r
2124         break;\r
2125       case 85:\r
2126         ret = 117;\r
2127         break;\r
2128       case 86:\r
2129         ret = 118;\r
2130         break;\r
2131       case 87:\r
2132         ret = 119;\r
2133         break;\r
2134       case 88:\r
2135         ret = 120;\r
2136         break;\r
2137       case 89:\r
2138         ret = 121;\r
2139         break;\r
2140       case 90:\r
2141         ret = 122;\r
2142         break;\r
2143       case 192:\r
2144         ret = 224;\r
2145         break;\r
2146       case 193:\r
2147         ret = 225;\r
2148         break;\r
2149       case 194:\r
2150         ret = 226;\r
2151         break;\r
2152       case 195:\r
2153         ret = 227;\r
2154         break;\r
2155       case 196:\r
2156         ret = 228;\r
2157         break;\r
2158       case 197:\r
2159         ret = 229;\r
2160         break;\r
2161       case 198:\r
2162         ret = 230;\r
2163         break;\r
2164       case 199:\r
2165         ret = 231;\r
2166         break;\r
2167       case 200:\r
2168         ret = 232;\r
2169         break;\r
2170       case 201:\r
2171         ret = 233;\r
2172         break;\r
2173       case 202:\r
2174         ret = 234;\r
2175         break;\r
2176       case 203:\r
2177         ret = 235;\r
2178         break;\r
2179       case 204:\r
2180         ret = 236;\r
2181         break;\r
2182       case 205:\r
2183         ret = 237;\r
2184         break;\r
2185       case 206:\r
2186         ret = 238;\r
2187         break;\r
2188       case 207:\r
2189         ret = 239;\r
2190         break;\r
2191       case 208:\r
2192         ret = 240;\r
2193         break;\r
2194       case 209:\r
2195         ret = 241;\r
2196         break;\r
2197       case 210:\r
2198         ret = 242;\r
2199         break;\r
2200       case 211:\r
2201         ret = 243;\r
2202         break;\r
2203       case 212:\r
2204         ret = 244;\r
2205         break;\r
2206       case 213:\r
2207         ret = 245;\r
2208         break;\r
2209       case 214:\r
2210         ret = 246;\r
2211         break;\r
2212       case 216:\r
2213         ret = 248;\r
2214         break;\r
2215       case 217:\r
2216         ret = 249;\r
2217         break;\r
2218       case 218:\r
2219         ret = 250;\r
2220         break;\r
2221       case 219:\r
2222         ret = 251;\r
2223         break;\r
2224       case 220:\r
2225         ret = 252;\r
2226         break;\r
2227       case 221:\r
2228         ret = 253;\r
2229         break;\r
2230       case 222:\r
2231         ret = 254;\r
2232         break;\r
2233       case 256:\r
2234         ret = 257;\r
2235         break;\r
2236       case 258:\r
2237         ret = 259;\r
2238         break;\r
2239       case 260:\r
2240         ret = 261;\r
2241         break;\r
2242       case 262:\r
2243         ret = 263;\r
2244         break;\r
2245       case 264:\r
2246         ret = 265;\r
2247         break;\r
2248       case 266:\r
2249         ret = 267;\r
2250         break;\r
2251       case 268:\r
2252         ret = 269;\r
2253         break;\r
2254       case 270:\r
2255         ret = 271;\r
2256         break;\r
2257       case 272:\r
2258         ret = 273;\r
2259         break;\r
2260       case 274:\r
2261         ret = 275;\r
2262         break;\r
2263       case 276:\r
2264         ret = 277;\r
2265         break;\r
2266       case 278:\r
2267         ret = 279;\r
2268         break;\r
2269       case 280:\r
2270         ret = 281;\r
2271         break;\r
2272       case 282:\r
2273         ret = 283;\r
2274         break;\r
2275       case 284:\r
2276         ret = 285;\r
2277         break;\r
2278       case 286:\r
2279         ret = 287;\r
2280         break;\r
2281       case 288:\r
2282         ret = 289;\r
2283         break;\r
2284       case 290:\r
2285         ret = 291;\r
2286         break;\r
2287       case 292:\r
2288         ret = 293;\r
2289         break;\r
2290       case 294:\r
2291         ret = 295;\r
2292         break;\r
2293       case 296:\r
2294         ret = 297;\r
2295         break;\r
2296       case 298:\r
2297         ret = 299;\r
2298         break;\r
2299       case 300:\r
2300         ret = 301;\r
2301         break;\r
2302       case 302:\r
2303         ret = 303;\r
2304         break;\r
2305       case 304:\r
2306         ret = 105;\r
2307         break;\r
2308       case 306:\r
2309         ret = 307;\r
2310         break;\r
2311       case 308:\r
2312         ret = 309;\r
2313         break;\r
2314       case 310:\r
2315         ret = 311;\r
2316         break;\r
2317       case 313:\r
2318         ret = 314;\r
2319         break;\r
2320       case 315:\r
2321         ret = 316;\r
2322         break;\r
2323       case 317:\r
2324         ret = 318;\r
2325         break;\r
2326       case 319:\r
2327         ret = 320;\r
2328         break;\r
2329       case 321:\r
2330         ret = 322;\r
2331         break;\r
2332       case 323:\r
2333         ret = 324;\r
2334         break;\r
2335       case 325:\r
2336         ret = 326;\r
2337         break;\r
2338       case 327:\r
2339         ret = 328;\r
2340         break;\r
2341       case 330:\r
2342         ret = 331;\r
2343         break;\r
2344       case 332:\r
2345         ret = 333;\r
2346         break;\r
2347       case 334:\r
2348         ret = 335;\r
2349         break;\r
2350       case 336:\r
2351         ret = 337;\r
2352         break;\r
2353       case 338:\r
2354         ret = 339;\r
2355         break;\r
2356       case 340:\r
2357         ret = 341;\r
2358         break;\r
2359       case 342:\r
2360         ret = 343;\r
2361         break;\r
2362       case 344:\r
2363         ret = 345;\r
2364         break;\r
2365       case 346:\r
2366         ret = 347;\r
2367         break;\r
2368       case 348:\r
2369         ret = 349;\r
2370         break;\r
2371       case 350:\r
2372         ret = 351;\r
2373         break;\r
2374       case 352:\r
2375         ret = 353;\r
2376         break;\r
2377       case 354:\r
2378         ret = 355;\r
2379         break;\r
2380       case 356:\r
2381         ret = 357;\r
2382         break;\r
2383       case 358:\r
2384         ret = 359;\r
2385         break;\r
2386       case 360:\r
2387         ret = 361;\r
2388         break;\r
2389       case 362:\r
2390         ret = 363;\r
2391         break;\r
2392       case 364:\r
2393         ret = 365;\r
2394         break;\r
2395       case 366:\r
2396         ret = 367;\r
2397         break;\r
2398       case 368:\r
2399         ret = 369;\r
2400         break;\r
2401       case 370:\r
2402         ret = 371;\r
2403         break;\r
2404       case 372:\r
2405         ret = 373;\r
2406         break;\r
2407       case 374:\r
2408         ret = 375;\r
2409         break;\r
2410       case 376:\r
2411         ret = 255;\r
2412         break;\r
2413       case 377:\r
2414         ret = 378;\r
2415         break;\r
2416       case 379:\r
2417         ret = 380;\r
2418         break;\r
2419       case 381:\r
2420         ret = 382;\r
2421         break;\r
2422       case 385:\r
2423         ret = 595;\r
2424         break;\r
2425       case 386:\r
2426         ret = 387;\r
2427         break;\r
2428       case 388:\r
2429         ret = 389;\r
2430         break;\r
2431       case 390:\r
2432         ret = 596;\r
2433         break;\r
2434       case 391:\r
2435         ret = 392;\r
2436         break;\r
2437       case 393:\r
2438         ret = 598;\r
2439         break;\r
2440       case 394:\r
2441         ret = 599;\r
2442         break;\r
2443       case 395:\r
2444         ret = 396;\r
2445         break;\r
2446       case 398:\r
2447         ret = 600;\r
2448         break;\r
2449       case 399:\r
2450         ret = 601;\r
2451         break;\r
2452       case 400:\r
2453         ret = 603;\r
2454         break;\r
2455       case 401:\r
2456         ret = 402;\r
2457         break;\r
2458       case 403:\r
2459         ret = 608;\r
2460         break;\r
2461       case 404:\r
2462         ret = 611;\r
2463         break;\r
2464       case 406:\r
2465         ret = 617;\r
2466         break;\r
2467       case 407:\r
2468         ret = 616;\r
2469         break;\r
2470       case 408:\r
2471         ret = 409;\r
2472         break;\r
2473       case 412:\r
2474         ret = 623;\r
2475         break;\r
2476       case 413:\r
2477         ret = 626;\r
2478         break;\r
2479       case 416:\r
2480         ret = 417;\r
2481         break;\r
2482       case 418:\r
2483         ret = 419;\r
2484         break;\r
2485       case 420:\r
2486         ret = 421;\r
2487         break;\r
2488       case 423:\r
2489         ret = 424;\r
2490         break;\r
2491       case 425:\r
2492         ret = 643;\r
2493         break;\r
2494       case 428:\r
2495         ret = 429;\r
2496         break;\r
2497       case 430:\r
2498         ret = 648;\r
2499         break;\r
2500       case 431:\r
2501         ret = 432;\r
2502         break;\r
2503       case 433:\r
2504         ret = 650;\r
2505         break;\r
2506       case 434:\r
2507         ret = 651;\r
2508         break;\r
2509       case 435:\r
2510         ret = 436;\r
2511         break;\r
2512       case 437:\r
2513         ret = 438;\r
2514         break;\r
2515       case 439:\r
2516         ret = 658;\r
2517         break;\r
2518       case 440:\r
2519         ret = 441;\r
2520         break;\r
2521       case 444:\r
2522         ret = 445;\r
2523         break;\r
2524       case 452:\r
2525         ret = 454;\r
2526         break;\r
2527       case 453:\r
2528         ret = 454;\r
2529         break;\r
2530       case 455:\r
2531         ret = 457;\r
2532         break;\r
2533       case 456:\r
2534         ret = 457;\r
2535         break;\r
2536       case 458:\r
2537         ret = 460;\r
2538         break;\r
2539       case 459:\r
2540         ret = 460;\r
2541         break;\r
2542       case 461:\r
2543         ret = 462;\r
2544         break;\r
2545       case 463:\r
2546         ret = 464;\r
2547         break;\r
2548       case 465:\r
2549         ret = 466;\r
2550         break;\r
2551       case 467:\r
2552         ret = 468;\r
2553         break;\r
2554       case 469:\r
2555         ret = 470;\r
2556         break;\r
2557       case 471:\r
2558         ret = 472;\r
2559         break;\r
2560       case 473:\r
2561         ret = 474;\r
2562         break;\r
2563       case 475:\r
2564         ret = 476;\r
2565         break;\r
2566       case 478:\r
2567         ret = 479;\r
2568         break;\r
2569       case 480:\r
2570         ret = 481;\r
2571         break;\r
2572       case 482:\r
2573         ret = 483;\r
2574         break;\r
2575       case 484:\r
2576         ret = 485;\r
2577         break;\r
2578       case 486:\r
2579         ret = 487;\r
2580         break;\r
2581       case 488:\r
2582         ret = 489;\r
2583         break;\r
2584       case 490:\r
2585         ret = 491;\r
2586         break;\r
2587       case 492:\r
2588         ret = 493;\r
2589         break;\r
2590       case 494:\r
2591         ret = 495;\r
2592         break;\r
2593       case 497:\r
2594         ret = 499;\r
2595         break;\r
2596       case 498:\r
2597         ret = 499;\r
2598         break;\r
2599       case 500:\r
2600         ret = 501;\r
2601         break;\r
2602       case 506:\r
2603         ret = 507;\r
2604         break;\r
2605       case 508:\r
2606         ret = 509;\r
2607         break;\r
2608       case 510:\r
2609         ret = 511;\r
2610         break;\r
2611       case 512:\r
2612         ret = 513;\r
2613         break;\r
2614       case 514:\r
2615         ret = 515;\r
2616         break;\r
2617       case 516:\r
2618         ret = 517;\r
2619         break;\r
2620       case 518:\r
2621         ret = 519;\r
2622         break;\r
2623       case 520:\r
2624         ret = 521;\r
2625         break;\r
2626       case 522:\r
2627         ret = 523;\r
2628         break;\r
2629       case 524:\r
2630         ret = 525;\r
2631         break;\r
2632       case 526:\r
2633         ret = 527;\r
2634         break;\r
2635       case 528:\r
2636         ret = 529;\r
2637         break;\r
2638       case 530:\r
2639         ret = 531;\r
2640         break;\r
2641       case 532:\r
2642         ret = 533;\r
2643         break;\r
2644       case 534:\r
2645         ret = 535;\r
2646         break;\r
2647       case 902:\r
2648         ret = 940;\r
2649         break;\r
2650       case 904:\r
2651         ret = 941;\r
2652         break;\r
2653       case 905:\r
2654         ret = 942;\r
2655         break;\r
2656       case 906:\r
2657         ret = 943;\r
2658         break;\r
2659       case 908:\r
2660         ret = 972;\r
2661         break;\r
2662       case 910:\r
2663         ret = 973;\r
2664         break;\r
2665       case 911:\r
2666         ret = 974;\r
2667         break;\r
2668       case 913:\r
2669         ret = 945;\r
2670         break;\r
2671       case 914:\r
2672         ret = 946;\r
2673         break;\r
2674       case 915:\r
2675         ret = 947;\r
2676         break;\r
2677       case 916:\r
2678         ret = 948;\r
2679         break;\r
2680       case 917:\r
2681         ret = 949;\r
2682         break;\r
2683       case 918:\r
2684         ret = 950;\r
2685         break;\r
2686       case 919:\r
2687         ret = 951;\r
2688         break;\r
2689       case 920:\r
2690         ret = 952;\r
2691         break;\r
2692       case 921:\r
2693         ret = 953;\r
2694         break;\r
2695       case 922:\r
2696         ret = 954;\r
2697         break;\r
2698       case 923:\r
2699         ret = 955;\r
2700         break;\r
2701       case 924:\r
2702         ret = 956;\r
2703         break;\r
2704       case 925:\r
2705         ret = 957;\r
2706         break;\r
2707       case 926:\r
2708         ret = 958;\r
2709         break;\r
2710       case 927:\r
2711         ret = 959;\r
2712         break;\r
2713       case 928:\r
2714         ret = 960;\r
2715         break;\r
2716       case 929:\r
2717         ret = 961;\r
2718         break;\r
2719       case 931:\r
2720         ret = 963;\r
2721         break;\r
2722       case 932:\r
2723         ret = 964;\r
2724         break;\r
2725       case 933:\r
2726         ret = 965;\r
2727         break;\r
2728       case 934:\r
2729         ret = 966;\r
2730         break;\r
2731       case 935:\r
2732         ret = 967;\r
2733         break;\r
2734       case 936:\r
2735         ret = 968;\r
2736         break;\r
2737       case 937:\r
2738         ret = 969;\r
2739         break;\r
2740       case 938:\r
2741         ret = 970;\r
2742         break;\r
2743       case 939:\r
2744         ret = 971;\r
2745         break;\r
2746       case 994:\r
2747         ret = 995;\r
2748         break;\r
2749       case 996:\r
2750         ret = 997;\r
2751         break;\r
2752       case 998:\r
2753         ret = 999;\r
2754         break;\r
2755       case 1000:\r
2756         ret = 1001;\r
2757         break;\r
2758       case 1002:\r
2759         ret = 1003;\r
2760         break;\r
2761       case 1004:\r
2762         ret = 1005;\r
2763         break;\r
2764       case 1006:\r
2765         ret = 1007;\r
2766         break;\r
2767       case 1025:\r
2768         ret = 1105;\r
2769         break;\r
2770       case 1026:\r
2771         ret = 1106;\r
2772         break;\r
2773       case 1027:\r
2774         ret = 1107;\r
2775         break;\r
2776       case 1028:\r
2777         ret = 1108;\r
2778         break;\r
2779       case 1029:\r
2780         ret = 1109;\r
2781         break;\r
2782       case 1030:\r
2783         ret = 1110;\r
2784         break;\r
2785       case 1031:\r
2786         ret = 1111;\r
2787         break;\r
2788       case 1032:\r
2789         ret = 1112;\r
2790         break;\r
2791       case 1033:\r
2792         ret = 1113;\r
2793         break;\r
2794       case 1034:\r
2795         ret = 1114;\r
2796         break;\r
2797       case 1035:\r
2798         ret = 1115;\r
2799         break;\r
2800       case 1036:\r
2801         ret = 1116;\r
2802         break;\r
2803       case 1038:\r
2804         ret = 1118;\r
2805         break;\r
2806       case 1039:\r
2807         ret = 1119;\r
2808         break;\r
2809       case 1040:\r
2810         ret = 1072;\r
2811         break;\r
2812       case 1041:\r
2813         ret = 1073;\r
2814         break;\r
2815       case 1042:\r
2816         ret = 1074;\r
2817         break;\r
2818       case 1043:\r
2819         ret = 1075;\r
2820         break;\r
2821       case 1044:\r
2822         ret = 1076;\r
2823         break;\r
2824       case 1045:\r
2825         ret = 1077;\r
2826         break;\r
2827       case 1046:\r
2828         ret = 1078;\r
2829         break;\r
2830       case 1047:\r
2831         ret = 1079;\r
2832         break;\r
2833       case 1048:\r
2834         ret = 1080;\r
2835         break;\r
2836       case 1049:\r
2837         ret = 1081;\r
2838         break;\r
2839       case 1050:\r
2840         ret = 1082;\r
2841         break;\r
2842       case 1051:\r
2843         ret = 1083;\r
2844         break;\r
2845       case 1052:\r
2846         ret = 1084;\r
2847         break;\r
2848       case 1053:\r
2849         ret = 1085;\r
2850         break;\r
2851       case 1054:\r
2852         ret = 1086;\r
2853         break;\r
2854       case 1055:\r
2855         ret = 1087;\r
2856         break;\r
2857       case 1056:\r
2858         ret = 1088;\r
2859         break;\r
2860       case 1057:\r
2861         ret = 1089;\r
2862         break;\r
2863       case 1058:\r
2864         ret = 1090;\r
2865         break;\r
2866       case 1059:\r
2867         ret = 1091;\r
2868         break;\r
2869       case 1060:\r
2870         ret = 1092;\r
2871         break;\r
2872       case 1061:\r
2873         ret = 1093;\r
2874         break;\r
2875       case 1062:\r
2876         ret = 1094;\r
2877         break;\r
2878       case 1063:\r
2879         ret = 1095;\r
2880         break;\r
2881       case 1064:\r
2882         ret = 1096;\r
2883         break;\r
2884       case 1065:\r
2885         ret = 1097;\r
2886         break;\r
2887       case 1066:\r
2888         ret = 1098;\r
2889         break;\r
2890       case 1067:\r
2891         ret = 1099;\r
2892         break;\r
2893       case 1068:\r
2894         ret = 1100;\r
2895         break;\r
2896       case 1069:\r
2897         ret = 1101;\r
2898         break;\r
2899       case 1070:\r
2900         ret = 1102;\r
2901         break;\r
2902       case 1071:\r
2903         ret = 1103;\r
2904         break;\r
2905       case 1120:\r
2906         ret = 1121;\r
2907         break;\r
2908       case 1122:\r
2909         ret = 1123;\r
2910         break;\r
2911       case 1124:\r
2912         ret = 1125;\r
2913         break;\r
2914       case 1126:\r
2915         ret = 1127;\r
2916         break;\r
2917       case 1128:\r
2918         ret = 1129;\r
2919         break;\r
2920       case 1130:\r
2921         ret = 1131;\r
2922         break;\r
2923       case 1132:\r
2924         ret = 1133;\r
2925         break;\r
2926       case 1134:\r
2927         ret = 1135;\r
2928         break;\r
2929       case 1136:\r
2930         ret = 1137;\r
2931         break;\r
2932       case 1138:\r
2933         ret = 1139;\r
2934         break;\r
2935       case 1140:\r
2936         ret = 1141;\r
2937         break;\r
2938       case 1142:\r
2939         ret = 1143;\r
2940         break;\r
2941       case 1144:\r
2942         ret = 1145;\r
2943         break;\r
2944       case 1146:\r
2945         ret = 1147;\r
2946         break;\r
2947       case 1148:\r
2948         ret = 1149;\r
2949         break;\r
2950       case 1150:\r
2951         ret = 1151;\r
2952         break;\r
2953       case 1152:\r
2954         ret = 1153;\r
2955         break;\r
2956       case 1168:\r
2957         ret = 1169;\r
2958         break;\r
2959       case 1170:\r
2960         ret = 1171;\r
2961         break;\r
2962       case 1172:\r
2963         ret = 1173;\r
2964         break;\r
2965       case 1174:\r
2966         ret = 1175;\r
2967         break;\r
2968       case 1176:\r
2969         ret = 1177;\r
2970         break;\r
2971       case 1178:\r
2972         ret = 1179;\r
2973         break;\r
2974       case 1180:\r
2975         ret = 1181;\r
2976         break;\r
2977       case 1182:\r
2978         ret = 1183;\r
2979         break;\r
2980       case 1184:\r
2981         ret = 1185;\r
2982         break;\r
2983       case 1186:\r
2984         ret = 1187;\r
2985         break;\r
2986       case 1188:\r
2987         ret = 1189;\r
2988         break;\r
2989       case 1190:\r
2990         ret = 1191;\r
2991         break;\r
2992       case 1192:\r
2993         ret = 1193;\r
2994         break;\r
2995       case 1194:\r
2996         ret = 1195;\r
2997         break;\r
2998       case 1196:\r
2999         ret = 1197;\r
3000         break;\r
3001       case 1198:\r
3002         ret = 1199;\r
3003         break;\r
3004       case 1200:\r
3005         ret = 1201;\r
3006         break;\r
3007       case 1202:\r
3008         ret = 1203;\r
3009         break;\r
3010       case 1204:\r
3011         ret = 1205;\r
3012         break;\r
3013       case 1206:\r
3014         ret = 1207;\r
3015         break;\r
3016       case 1208:\r
3017         ret = 1209;\r
3018         break;\r
3019       case 1210:\r
3020         ret = 1211;\r
3021         break;\r
3022       case 1212:\r
3023         ret = 1213;\r
3024         break;\r
3025       case 1214:\r
3026         ret = 1215;\r
3027         break;\r
3028       case 1217:\r
3029         ret = 1218;\r
3030         break;\r
3031       case 1219:\r
3032         ret = 1220;\r
3033         break;\r
3034       case 1223:\r
3035         ret = 1224;\r
3036         break;\r
3037       case 1227:\r
3038         ret = 1228;\r
3039         break;\r
3040       case 1232:\r
3041         ret = 1233;\r
3042         break;\r
3043       case 1234:\r
3044         ret = 1235;\r
3045         break;\r
3046       case 1236:\r
3047         ret = 1237;\r
3048         break;\r
3049       case 1238:\r
3050         ret = 1239;\r
3051         break;\r
3052       case 1240:\r
3053         ret = 1241;\r
3054         break;\r
3055       case 1242:\r
3056         ret = 1243;\r
3057         break;\r
3058       case 1244:\r
3059         ret = 1245;\r
3060         break;\r
3061       case 1246:\r
3062         ret = 1247;\r
3063         break;\r
3064       case 1248:\r
3065         ret = 1249;\r
3066         break;\r
3067       case 1250:\r
3068         ret = 1251;\r
3069         break;\r
3070       case 1252:\r
3071         ret = 1253;\r
3072         break;\r
3073       case 1254:\r
3074         ret = 1255;\r
3075         break;\r
3076       case 1256:\r
3077         ret = 1257;\r
3078         break;\r
3079       case 1258:\r
3080         ret = 1259;\r
3081         break;\r
3082       case 1262:\r
3083         ret = 1263;\r
3084         break;\r
3085       case 1264:\r
3086         ret = 1265;\r
3087         break;\r
3088       case 1266:\r
3089         ret = 1267;\r
3090         break;\r
3091       case 1268:\r
3092         ret = 1269;\r
3093         break;\r
3094       case 1272:\r
3095         ret = 1273;\r
3096         break;\r
3097       case 1329:\r
3098         ret = 1377;\r
3099         break;\r
3100       case 1330:\r
3101         ret = 1378;\r
3102         break;\r
3103       case 1331:\r
3104         ret = 1379;\r
3105         break;\r
3106       case 1332:\r
3107         ret = 1380;\r
3108         break;\r
3109       case 1333:\r
3110         ret = 1381;\r
3111         break;\r
3112       case 1334:\r
3113         ret = 1382;\r
3114         break;\r
3115       case 1335:\r
3116         ret = 1383;\r
3117         break;\r
3118       case 1336:\r
3119         ret = 1384;\r
3120         break;\r
3121       case 1337:\r
3122         ret = 1385;\r
3123         break;\r
3124       case 1338:\r
3125         ret = 1386;\r
3126         break;\r
3127       case 1339:\r
3128         ret = 1387;\r
3129         break;\r
3130       case 1340:\r
3131         ret = 1388;\r
3132         break;\r
3133       case 1341:\r
3134         ret = 1389;\r
3135         break;\r
3136       case 1342:\r
3137         ret = 1390;\r
3138         break;\r
3139       case 1343:\r
3140         ret = 1391;\r
3141         break;\r
3142       case 1344:\r
3143         ret = 1392;\r
3144         break;\r
3145       case 1345:\r
3146         ret = 1393;\r
3147         break;\r
3148       case 1346:\r
3149         ret = 1394;\r
3150         break;\r
3151       case 1347:\r
3152         ret = 1395;\r
3153         break;\r
3154       case 1348:\r
3155         ret = 1396;\r
3156         break;\r
3157       case 1349:\r
3158         ret = 1397;\r
3159         break;\r
3160       case 1350:\r
3161         ret = 1398;\r
3162         break;\r
3163       case 1351:\r
3164         ret = 1399;\r
3165         break;\r
3166       case 1352:\r
3167         ret = 1400;\r
3168         break;\r
3169       case 1353:\r
3170         ret = 1401;\r
3171         break;\r
3172       case 1354:\r
3173         ret = 1402;\r
3174         break;\r
3175       case 1355:\r
3176         ret = 1403;\r
3177         break;\r
3178       case 1356:\r
3179         ret = 1404;\r
3180         break;\r
3181       case 1357:\r
3182         ret = 1405;\r
3183         break;\r
3184       case 1358:\r
3185         ret = 1406;\r
3186         break;\r
3187       case 1359:\r
3188         ret = 1407;\r
3189         break;\r
3190       case 1360:\r
3191         ret = 1408;\r
3192         break;\r
3193       case 1361:\r
3194         ret = 1409;\r
3195         break;\r
3196       case 1362:\r
3197         ret = 1410;\r
3198         break;\r
3199       case 1363:\r
3200         ret = 1411;\r
3201         break;\r
3202       case 1364:\r
3203         ret = 1412;\r
3204         break;\r
3205       case 1365:\r
3206         ret = 1413;\r
3207         break;\r
3208       case 1366:\r
3209         ret = 1414;\r
3210         break;\r
3211       case 4256:\r
3212         ret = 4304;\r
3213         break;\r
3214       case 4257:\r
3215         ret = 4305;\r
3216         break;\r
3217       case 4258:\r
3218         ret = 4306;\r
3219         break;\r
3220       case 4259:\r
3221         ret = 4307;\r
3222         break;\r
3223       case 4260:\r
3224         ret = 4308;\r
3225         break;\r
3226       case 4261:\r
3227         ret = 4309;\r
3228         break;\r
3229       case 4262:\r
3230         ret = 4310;\r
3231         break;\r
3232       case 4263:\r
3233         ret = 4311;\r
3234         break;\r
3235       case 4264:\r
3236         ret = 4312;\r
3237         break;\r
3238       case 4265:\r
3239         ret = 4313;\r
3240         break;\r
3241       case 4266:\r
3242         ret = 4314;\r
3243         break;\r
3244       case 4267:\r
3245         ret = 4315;\r
3246         break;\r
3247       case 4268:\r
3248         ret = 4316;\r
3249         break;\r
3250       case 4269:\r
3251         ret = 4317;\r
3252         break;\r
3253       case 4270:\r
3254         ret = 4318;\r
3255         break;\r
3256       case 4271:\r
3257         ret = 4319;\r
3258         break;\r
3259       case 4272:\r
3260         ret = 4320;\r
3261         break;\r
3262       case 4273:\r
3263         ret = 4321;\r
3264         break;\r
3265       case 4274:\r
3266         ret = 4322;\r
3267         break;\r
3268       case 4275:\r
3269         ret = 4323;\r
3270         break;\r
3271       case 4276:\r
3272         ret = 4324;\r
3273         break;\r
3274       case 4277:\r
3275         ret = 4325;\r
3276         break;\r
3277       case 4278:\r
3278         ret = 4326;\r
3279         break;\r
3280       case 4279:\r
3281         ret = 4327;\r
3282         break;\r
3283       case 4280:\r
3284         ret = 4328;\r
3285         break;\r
3286       case 4281:\r
3287         ret = 4329;\r
3288         break;\r
3289       case 4282:\r
3290         ret = 4330;\r
3291         break;\r
3292       case 4283:\r
3293         ret = 4331;\r
3294         break;\r
3295       case 4284:\r
3296         ret = 4332;\r
3297         break;\r
3298       case 4285:\r
3299         ret = 4333;\r
3300         break;\r
3301       case 4286:\r
3302         ret = 4334;\r
3303         break;\r
3304       case 4287:\r
3305         ret = 4335;\r
3306         break;\r
3307       case 4288:\r
3308         ret = 4336;\r
3309         break;\r
3310       case 4289:\r
3311         ret = 4337;\r
3312         break;\r
3313       case 4290:\r
3314         ret = 4338;\r
3315         break;\r
3316       case 4291:\r
3317         ret = 4339;\r
3318         break;\r
3319       case 4292:\r
3320         ret = 4340;\r
3321         break;\r
3322       case 4293:\r
3323         ret = 4341;\r
3324         break;\r
3325       case 7680:\r
3326         ret = 7681;\r
3327         break;\r
3328       case 7682:\r
3329         ret = 7683;\r
3330         break;\r
3331       case 7684:\r
3332         ret = 7685;\r
3333         break;\r
3334       case 7686:\r
3335         ret = 7687;\r
3336         break;\r
3337       case 7688:\r
3338         ret = 7689;\r
3339         break;\r
3340       case 7690:\r
3341         ret = 7691;\r
3342         break;\r
3343       case 7692:\r
3344         ret = 7693;\r
3345         break;\r
3346       case 7694:\r
3347         ret = 7695;\r
3348         break;\r
3349       case 7696:\r
3350         ret = 7697;\r
3351         break;\r
3352       case 7698:\r
3353         ret = 7699;\r
3354         break;\r
3355       case 7700:\r
3356         ret = 7701;\r
3357         break;\r
3358       case 7702:\r
3359         ret = 7703;\r
3360         break;\r
3361       case 7704:\r
3362         ret = 7705;\r
3363         break;\r
3364       case 7706:\r
3365         ret = 7707;\r
3366         break;\r
3367       case 7708:\r
3368         ret = 7709;\r
3369         break;\r
3370       case 7710:\r
3371         ret = 7711;\r
3372         break;\r
3373       case 7712:\r
3374         ret = 7713;\r
3375         break;\r
3376       case 7714:\r
3377         ret = 7715;\r
3378         break;\r
3379       case 7716:\r
3380         ret = 7717;\r
3381         break;\r
3382       case 7718:\r
3383         ret = 7719;\r
3384         break;\r
3385       case 7720:\r
3386         ret = 7721;\r
3387         break;\r
3388       case 7722:\r
3389         ret = 7723;\r
3390         break;\r
3391       case 7724:\r
3392         ret = 7725;\r
3393         break;\r
3394       case 7726:\r
3395         ret = 7727;\r
3396         break;\r
3397       case 7728:\r
3398         ret = 7729;\r
3399         break;\r
3400       case 7730:\r
3401         ret = 7731;\r
3402         break;\r
3403       case 7732:\r
3404         ret = 7733;\r
3405         break;\r
3406       case 7734:\r
3407         ret = 7735;\r
3408         break;\r
3409       case 7736:\r
3410         ret = 7737;\r
3411         break;\r
3412       case 7738:\r
3413         ret = 7739;\r
3414         break;\r
3415       case 7740:\r
3416         ret = 7741;\r
3417         break;\r
3418       case 7742:\r
3419         ret = 7743;\r
3420         break;\r
3421       case 7744:\r
3422         ret = 7745;\r
3423         break;\r
3424       case 7746:\r
3425         ret = 7747;\r
3426         break;\r
3427       case 7748:\r
3428         ret = 7749;\r
3429         break;\r
3430       case 7750:\r
3431         ret = 7751;\r
3432         break;\r
3433       case 7752:\r
3434         ret = 7753;\r
3435         break;\r
3436       case 7754:\r
3437         ret = 7755;\r
3438         break;\r
3439       case 7756:\r
3440         ret = 7757;\r
3441         break;\r
3442       case 7758:\r
3443         ret = 7759;\r
3444         break;\r
3445       case 7760:\r
3446         ret = 7761;\r
3447         break;\r
3448       case 7762:\r
3449         ret = 7763;\r
3450         break;\r
3451       case 7764:\r
3452         ret = 7765;\r
3453         break;\r
3454       case 7766:\r
3455         ret = 7767;\r
3456         break;\r
3457       case 7768:\r
3458         ret = 7769;\r
3459         break;\r
3460       case 7770:\r
3461         ret = 7771;\r
3462         break;\r
3463       case 7772:\r
3464         ret = 7773;\r
3465         break;\r
3466       case 7774:\r
3467         ret = 7775;\r
3468         break;\r
3469       case 7776:\r
3470         ret = 7777;\r
3471         break;\r
3472       case 7778:\r
3473         ret = 7779;\r
3474         break;\r
3475       case 7780:\r
3476         ret = 7781;\r
3477         break;\r
3478       case 7782:\r
3479         ret = 7783;\r
3480         break;\r
3481       case 7784:\r
3482         ret = 7785;\r
3483         break;\r
3484       case 7786:\r
3485         ret = 7787;\r
3486         break;\r
3487       case 7788:\r
3488         ret = 7789;\r
3489         break;\r
3490       case 7790:\r
3491         ret = 7791;\r
3492         break;\r
3493       case 7792:\r
3494         ret = 7793;\r
3495         break;\r
3496       case 7794:\r
3497         ret = 7795;\r
3498         break;\r
3499       case 7796:\r
3500         ret = 7797;\r
3501         break;\r
3502       case 7798:\r
3503         ret = 7799;\r
3504         break;\r
3505       case 7800:\r
3506         ret = 7801;\r
3507         break;\r
3508       case 7802:\r
3509         ret = 7803;\r
3510         break;\r
3511       case 7804:\r
3512         ret = 7805;\r
3513         break;\r
3514       case 7806:\r
3515         ret = 7807;\r
3516         break;\r
3517       case 7808:\r
3518         ret = 7809;\r
3519         break;\r
3520       case 7810:\r
3521         ret = 7811;\r
3522         break;\r
3523       case 7812:\r
3524         ret = 7813;\r
3525         break;\r
3526       case 7814:\r
3527         ret = 7815;\r
3528         break;\r
3529       case 7816:\r
3530         ret = 7817;\r
3531         break;\r
3532       case 7818:\r
3533         ret = 7819;\r
3534         break;\r
3535       case 7820:\r
3536         ret = 7821;\r
3537         break;\r
3538       case 7822:\r
3539         ret = 7823;\r
3540         break;\r
3541       case 7824:\r
3542         ret = 7825;\r
3543         break;\r
3544       case 7826:\r
3545         ret = 7827;\r
3546         break;\r
3547       case 7828:\r
3548         ret = 7829;\r
3549         break;\r
3550       case 7840:\r
3551         ret = 7841;\r
3552         break;\r
3553       case 7842:\r
3554         ret = 7843;\r
3555         break;\r
3556       case 7844:\r
3557         ret = 7845;\r
3558         break;\r
3559       case 7846:\r
3560         ret = 7847;\r
3561         break;\r
3562       case 7848:\r
3563         ret = 7849;\r
3564         break;\r
3565       case 7850:\r
3566         ret = 7851;\r
3567         break;\r
3568       case 7852:\r
3569         ret = 7853;\r
3570         break;\r
3571       case 7854:\r
3572         ret = 7855;\r
3573         break;\r
3574       case 7856:\r
3575         ret = 7857;\r
3576         break;\r
3577       case 7858:\r
3578         ret = 7859;\r
3579         break;\r
3580       case 7860:\r
3581         ret = 7861;\r
3582         break;\r
3583       case 7862:\r
3584         ret = 7863;\r
3585         break;\r
3586       case 7864:\r
3587         ret = 7865;\r
3588         break;\r
3589       case 7866:\r
3590         ret = 7867;\r
3591         break;\r
3592       case 7868:\r
3593         ret = 7869;\r
3594         break;\r
3595       case 7870:\r
3596         ret = 7871;\r
3597         break;\r
3598       case 7872:\r
3599         ret = 7873;\r
3600         break;\r
3601       case 7874:\r
3602         ret = 7875;\r
3603         break;\r
3604       case 7876:\r
3605         ret = 7877;\r
3606         break;\r
3607       case 7878:\r
3608         ret = 7879;\r
3609         break;\r
3610       case 7880:\r
3611         ret = 7881;\r
3612         break;\r
3613       case 7882:\r
3614         ret = 7883;\r
3615         break;\r
3616       case 7884:\r
3617         ret = 7885;\r
3618         break;\r
3619       case 7886:\r
3620         ret = 7887;\r
3621         break;\r
3622       case 7888:\r
3623         ret = 7889;\r
3624         break;\r
3625       case 7890:\r
3626         ret = 7891;\r
3627         break;\r
3628       case 7892:\r
3629         ret = 7893;\r
3630         break;\r
3631       case 7894:\r
3632         ret = 7895;\r
3633         break;\r
3634       case 7896:\r
3635         ret = 7897;\r
3636         break;\r
3637       case 7898:\r
3638         ret = 7899;\r
3639         break;\r
3640       case 7900:\r
3641         ret = 7901;\r
3642         break;\r
3643       case 7902:\r
3644         ret = 7903;\r
3645         break;\r
3646       case 7904:\r
3647         ret = 7905;\r
3648         break;\r
3649       case 7906:\r
3650         ret = 7907;\r
3651         break;\r
3652       case 7908:\r
3653         ret = 7909;\r
3654         break;\r
3655       case 7910:\r
3656         ret = 7911;\r
3657         break;\r
3658       case 7912:\r
3659         ret = 7913;\r
3660         break;\r
3661       case 7914:\r
3662         ret = 7915;\r
3663         break;\r
3664       case 7916:\r
3665         ret = 7917;\r
3666         break;\r
3667       case 7918:\r
3668         ret = 7919;\r
3669         break;\r
3670       case 7920:\r
3671         ret = 7921;\r
3672         break;\r
3673       case 7922:\r
3674         ret = 7923;\r
3675         break;\r
3676       case 7924:\r
3677         ret = 7925;\r
3678         break;\r
3679       case 7926:\r
3680         ret = 7927;\r
3681         break;\r
3682       case 7928:\r
3683         ret = 7929;\r
3684         break;\r
3685       case 7944:\r
3686         ret = 7936;\r
3687         break;\r
3688       case 7945:\r
3689         ret = 7937;\r
3690         break;\r
3691       case 7946:\r
3692         ret = 7938;\r
3693         break;\r
3694       case 7947:\r
3695         ret = 7939;\r
3696         break;\r
3697       case 7948:\r
3698         ret = 7940;\r
3699         break;\r
3700       case 7949:\r
3701         ret = 7941;\r
3702         break;\r
3703       case 7950:\r
3704         ret = 7942;\r
3705         break;\r
3706       case 7951:\r
3707         ret = 7943;\r
3708         break;\r
3709       case 7960:\r
3710         ret = 7952;\r
3711         break;\r
3712       case 7961:\r
3713         ret = 7953;\r
3714         break;\r
3715       case 7962:\r
3716         ret = 7954;\r
3717         break;\r
3718       case 7963:\r
3719         ret = 7955;\r
3720         break;\r
3721       case 7964:\r
3722         ret = 7956;\r
3723         break;\r
3724       case 7965:\r
3725         ret = 7957;\r
3726         break;\r
3727       case 7976:\r
3728         ret = 7968;\r
3729         break;\r
3730       case 7977:\r
3731         ret = 7969;\r
3732         break;\r
3733       case 7978:\r
3734         ret = 7970;\r
3735         break;\r
3736       case 7979:\r
3737         ret = 7971;\r
3738         break;\r
3739       case 7980:\r
3740         ret = 7972;\r
3741         break;\r
3742       case 7981:\r
3743         ret = 7973;\r
3744         break;\r
3745       case 7982:\r
3746         ret = 7974;\r
3747         break;\r
3748       case 7983:\r
3749         ret = 7975;\r
3750         break;\r
3751       case 7992:\r
3752         ret = 7984;\r
3753         break;\r
3754       case 7993:\r
3755         ret = 7985;\r
3756         break;\r
3757       case 7994:\r
3758         ret = 7986;\r
3759         break;\r
3760       case 7995:\r
3761         ret = 7987;\r
3762         break;\r
3763       case 7996:\r
3764         ret = 7988;\r
3765         break;\r
3766       case 7997:\r
3767         ret = 7989;\r
3768         break;\r
3769       case 7998:\r
3770         ret = 7990;\r
3771         break;\r
3772       case 7999:\r
3773         ret = 7991;\r
3774         break;\r
3775       case 8008:\r
3776         ret = 8000;\r
3777         break;\r
3778       case 8009:\r
3779         ret = 8001;\r
3780         break;\r
3781       case 8010:\r
3782         ret = 8002;\r
3783         break;\r
3784       case 8011:\r
3785         ret = 8003;\r
3786         break;\r
3787       case 8012:\r
3788         ret = 8004;\r
3789         break;\r
3790       case 8013:\r
3791         ret = 8005;\r
3792         break;\r
3793       case 8025:\r
3794         ret = 8017;\r
3795         break;\r
3796       case 8027:\r
3797         ret = 8019;\r
3798         break;\r
3799       case 8029:\r
3800         ret = 8021;\r
3801         break;\r
3802       case 8031:\r
3803         ret = 8023;\r
3804         break;\r
3805       case 8040:\r
3806         ret = 8032;\r
3807         break;\r
3808       case 8041:\r
3809         ret = 8033;\r
3810         break;\r
3811       case 8042:\r
3812         ret = 8034;\r
3813         break;\r
3814       case 8043:\r
3815         ret = 8035;\r
3816         break;\r
3817       case 8044:\r
3818         ret = 8036;\r
3819         break;\r
3820       case 8045:\r
3821         ret = 8037;\r
3822         break;\r
3823       case 8046:\r
3824         ret = 8038;\r
3825         break;\r
3826       case 8047:\r
3827         ret = 8039;\r
3828         break;\r
3829       case 8072:\r
3830         ret = 8064;\r
3831         break;\r
3832       case 8073:\r
3833         ret = 8065;\r
3834         break;\r
3835       case 8074:\r
3836         ret = 8066;\r
3837         break;\r
3838       case 8075:\r
3839         ret = 8067;\r
3840         break;\r
3841       case 8076:\r
3842         ret = 8068;\r
3843         break;\r
3844       case 8077:\r
3845         ret = 8069;\r
3846         break;\r
3847       case 8078:\r
3848         ret = 8070;\r
3849         break;\r
3850       case 8079:\r
3851         ret = 8071;\r
3852         break;\r
3853       case 8088:\r
3854         ret = 8080;\r
3855         break;\r
3856       case 8089:\r
3857         ret = 8081;\r
3858         break;\r
3859       case 8090:\r
3860         ret = 8082;\r
3861         break;\r
3862       case 8091:\r
3863         ret = 8083;\r
3864         break;\r
3865       case 8092:\r
3866         ret = 8084;\r
3867         break;\r
3868       case 8093:\r
3869         ret = 8085;\r
3870         break;\r
3871       case 8094:\r
3872         ret = 8086;\r
3873         break;\r
3874       case 8095:\r
3875         ret = 8087;\r
3876         break;\r
3877       case 8104:\r
3878         ret = 8096;\r
3879         break;\r
3880       case 8105:\r
3881         ret = 8097;\r
3882         break;\r
3883       case 8106:\r
3884         ret = 8098;\r
3885         break;\r
3886       case 8107:\r
3887         ret = 8099;\r
3888         break;\r
3889       case 8108:\r
3890         ret = 8100;\r
3891         break;\r
3892       case 8109:\r
3893         ret = 8101;\r
3894         break;\r
3895       case 8110:\r
3896         ret = 8102;\r
3897         break;\r
3898       case 8111:\r
3899         ret = 8103;\r
3900         break;\r
3901       case 8120:\r
3902         ret = 8112;\r
3903         break;\r
3904       case 8121:\r
3905         ret = 8113;\r
3906         break;\r
3907       case 8122:\r
3908         ret = 8048;\r
3909         break;\r
3910       case 8123:\r
3911         ret = 8049;\r
3912         break;\r
3913       case 8124:\r
3914         ret = 8115;\r
3915         break;\r
3916       case 8136:\r
3917         ret = 8050;\r
3918         break;\r
3919       case 8137:\r
3920         ret = 8051;\r
3921         break;\r
3922       case 8138:\r
3923         ret = 8052;\r
3924         break;\r
3925       case 8139:\r
3926         ret = 8053;\r
3927         break;\r
3928       case 8140:\r
3929         ret = 8131;\r
3930         break;\r
3931       case 8152:\r
3932         ret = 8144;\r
3933         break;\r
3934       case 8153:\r
3935         ret = 8145;\r
3936         break;\r
3937       case 8154:\r
3938         ret = 8054;\r
3939         break;\r
3940       case 8155:\r
3941         ret = 8055;\r
3942         break;\r
3943       case 8168:\r
3944         ret = 8160;\r
3945         break;\r
3946       case 8169:\r
3947         ret = 8161;\r
3948         break;\r
3949       case 8170:\r
3950         ret = 8058;\r
3951         break;\r
3952       case 8171:\r
3953         ret = 8059;\r
3954         break;\r
3955       case 8172:\r
3956         ret = 8165;\r
3957         break;\r
3958       case 8184:\r
3959         ret = 8056;\r
3960         break;\r
3961       case 8185:\r
3962         ret = 8057;\r
3963         break;\r
3964       case 8186:\r
3965         ret = 8060;\r
3966         break;\r
3967       case 8187:\r
3968         ret = 8061;\r
3969         break;\r
3970       case 8188:\r
3971         ret = 8179;\r
3972         break;\r
3973       case 8544:\r
3974         ret = 8560;\r
3975         break;\r
3976       case 8545:\r
3977         ret = 8561;\r
3978         break;\r
3979       case 8546:\r
3980         ret = 8562;\r
3981         break;\r
3982       case 8547:\r
3983         ret = 8563;\r
3984         break;\r
3985       case 8548:\r
3986         ret = 8564;\r
3987         break;\r
3988       case 8549:\r
3989         ret = 8565;\r
3990         break;\r
3991       case 8550:\r
3992         ret = 8566;\r
3993         break;\r
3994       case 8551:\r
3995         ret = 8567;\r
3996         break;\r
3997       case 8552:\r
3998         ret = 8568;\r
3999         break;\r
4000       case 8553:\r
4001         ret = 8569;\r
4002         break;\r
4003       case 8554:\r
4004         ret = 8570;\r
4005         break;\r
4006       case 8555:\r
4007         ret = 8571;\r
4008         break;\r
4009       case 8556:\r
4010         ret = 8572;\r
4011         break;\r
4012       case 8557:\r
4013         ret = 8573;\r
4014         break;\r
4015       case 8558:\r
4016         ret = 8574;\r
4017         break;\r
4018       case 8559:\r
4019         ret = 8575;\r
4020         break;\r
4021       case 9398:\r
4022         ret = 9424;\r
4023         break;\r
4024       case 9399:\r
4025         ret = 9425;\r
4026         break;\r
4027       case 9400:\r
4028         ret = 9426;\r
4029         break;\r
4030       case 9401:\r
4031         ret = 9427;\r
4032         break;\r
4033       case 9402:\r
4034         ret = 9428;\r
4035         break;\r
4036       case 9403:\r
4037         ret = 9429;\r
4038         break;\r
4039       case 9404:\r
4040         ret = 9430;\r
4041         break;\r
4042       case 9405:\r
4043         ret = 9431;\r
4044         break;\r
4045       case 9406:\r
4046         ret = 9432;\r
4047         break;\r
4048       case 9407:\r
4049         ret = 9433;\r
4050         break;\r
4051       case 9408:\r
4052         ret = 9434;\r
4053         break;\r
4054       case 9409:\r
4055         ret = 9435;\r
4056         break;\r
4057       case 9410:\r
4058         ret = 9436;\r
4059         break;\r
4060       case 9411:\r
4061         ret = 9437;\r
4062         break;\r
4063       case 9412:\r
4064         ret = 9438;\r
4065         break;\r
4066       case 9413:\r
4067         ret = 9439;\r
4068         break;\r
4069       case 9414:\r
4070         ret = 9440;\r
4071         break;\r
4072       case 9415:\r
4073         ret = 9441;\r
4074         break;\r
4075       case 9416:\r
4076         ret = 9442;\r
4077         break;\r
4078       case 9417:\r
4079         ret = 9443;\r
4080         break;\r
4081       case 9418:\r
4082         ret = 9444;\r
4083         break;\r
4084       case 9419:\r
4085         ret = 9445;\r
4086         break;\r
4087       case 9420:\r
4088         ret = 9446;\r
4089         break;\r
4090       case 9421:\r
4091         ret = 9447;\r
4092         break;\r
4093       case 9422:\r
4094         ret = 9448;\r
4095         break;\r
4096       case 9423:\r
4097         ret = 9449;\r
4098         break;\r
4099       case 65313:\r
4100         ret = 65345;\r
4101         break;\r
4102       case 65314:\r
4103         ret = 65346;\r
4104         break;\r
4105       case 65315:\r
4106         ret = 65347;\r
4107         break;\r
4108       case 65316:\r
4109         ret = 65348;\r
4110         break;\r
4111       case 65317:\r
4112         ret = 65349;\r
4113         break;\r
4114       case 65318:\r
4115         ret = 65350;\r
4116         break;\r
4117       case 65319:\r
4118         ret = 65351;\r
4119         break;\r
4120       case 65320:\r
4121         ret = 65352;\r
4122         break;\r
4123       case 65321:\r
4124         ret = 65353;\r
4125         break;\r
4126       case 65322:\r
4127         ret = 65354;\r
4128         break;\r
4129       case 65323:\r
4130         ret = 65355;\r
4131         break;\r
4132       case 65324:\r
4133         ret = 65356;\r
4134         break;\r
4135       case 65325:\r
4136         ret = 65357;\r
4137         break;\r
4138       case 65326:\r
4139         ret = 65358;\r
4140         break;\r
4141       case 65327:\r
4142         ret = 65359;\r
4143         break;\r
4144       case 65328:\r
4145         ret = 65360;\r
4146         break;\r
4147       case 65329:\r
4148         ret = 65361;\r
4149         break;\r
4150       case 65330:\r
4151         ret = 65362;\r
4152         break;\r
4153       case 65331:\r
4154         ret = 65363;\r
4155         break;\r
4156       case 65332:\r
4157         ret = 65364;\r
4158         break;\r
4159       case 65333:\r
4160         ret = 65365;\r
4161         break;\r
4162       case 65334:\r
4163         ret = 65366;\r
4164         break;\r
4165       case 65335:\r
4166         ret = 65367;\r
4167         break;\r
4168       case 65336:\r
4169         ret = 65368;\r
4170         break;\r
4171       case 65337:\r
4172         ret = 65369;\r
4173         break;\r
4174       case 65338:\r
4175         ret = 65370;\r
4176         break;\r
4177       }\r
4178       return (char) ret;\r
4179     }\r
4180     return Character.toLowerCase(c);\r
4181   }\r
4182 \r
4183   /** Convert a String to title case. */\r
4184   public static String toTitleCase(String s)\r
4185   {\r
4186     javajs.util.SB sb = new javajs.util.SB();\r
4187     for (int i = 0; i < s.length(); i++)\r
4188     {\r
4189       sb.appendC(CaseMgr.toTitleCase(s.charAt(i)));\r
4190     }\r
4191     return sb.toString();\r
4192   }\r
4193 \r
4194   /** Convert a String to upper case. */\r
4195   public static String toUpperCase(String s)\r
4196   {\r
4197     javajs.util.SB sb = new javajs.util.SB();\r
4198     for (int i = 0; i < s.length(); i++)\r
4199     {\r
4200       sb.appendC(CaseMgr.toUpperCase(s.charAt(i)));\r
4201     }\r
4202     return sb.toString();\r
4203   }\r
4204 \r
4205   /** Convert a String to lower case. */\r
4206   public static String toLowerCase(String s)\r
4207   {\r
4208     javajs.util.SB sb = new javajs.util.SB();\r
4209     for (int i = 0; i < s.length(); i++)\r
4210     {\r
4211       sb.appendC(CaseMgr.toLowerCase(s.charAt(i)));\r
4212     }\r
4213     return sb.toString();\r
4214   }\r
4215 \r
4216   /** Convert a character to title case. */\r
4217   public static char toTitleCase(char c)\r
4218   {\r
4219     if (java_1_0)\r
4220     {\r
4221       int ret = (int) toUpperCase(c);\r
4222       switch (c)\r
4223       {\r
4224       case 452:\r
4225         ret = 453;\r
4226         break;\r
4227       case 453:\r
4228         ret = 453;\r
4229         break;\r
4230       case 454:\r
4231         ret = 453;\r
4232         break;\r
4233       case 455:\r
4234         ret = 456;\r
4235         break;\r
4236       case 456:\r
4237         ret = 456;\r
4238         break;\r
4239       case 457:\r
4240         ret = 456;\r
4241         break;\r
4242       case 458:\r
4243         ret = 459;\r
4244         break;\r
4245       case 459:\r
4246         ret = 459;\r
4247         break;\r
4248       case 460:\r
4249         ret = 459;\r
4250         break;\r
4251       case 497:\r
4252         ret = 498;\r
4253         break;\r
4254       case 498:\r
4255         ret = 498;\r
4256         break;\r
4257       case 499:\r
4258         ret = 498;\r
4259         break;\r
4260       }\r
4261       return (char) ret;\r
4262     }\r
4263     return Character.toTitleCase(c);\r
4264   }\r
4265 \r
4266   /**\r
4267    * Duplicates the regionMatches routine of String -- but makes use of the\r
4268    * definitions of upper, lower, and title case in this class when ignoreCase\r
4269    * is set.\r
4270    */\r
4271   public static boolean regionMatches(StringLike s1, boolean ign, int i1,\r
4272           StringLike s2, int i2, int i3)\r
4273   {\r
4274     int itot = i2 + i3;\r
4275     if (itot > s2.length() || i1 + i3 > s1.length())\r
4276     {\r
4277       return false;\r
4278     }\r
4279     if (!ign)\r
4280     {\r
4281       for (int i = i2; i < itot; i++)\r
4282       {\r
4283         if (s2.charAt(i) != s1.charAt(i1++))\r
4284         {\r
4285           return false;\r
4286         }\r
4287       }\r
4288     }\r
4289     else\r
4290     {\r
4291       for (int i = i2; i < itot; i++)\r
4292       {\r
4293         if (toLowerCase(s2.charAt(i)) != toLowerCase(s1.charAt(i1++)))\r
4294         {\r
4295           return false;\r
4296         }\r
4297       }\r
4298     }\r
4299     return true;\r
4300   }\r
4301 \r
4302   /**\r
4303    * Duplicates the regionMatches routine of String -- but makes use of the\r
4304    * definitions of upper, lower, and title case in this class when ignoreCase\r
4305    * is set.\r
4306    */\r
4307   public static boolean regionMatches(String s1, boolean ign, int i1,\r
4308           StringLike s2, int i2, int i3)\r
4309   {\r
4310     int itot = i2 + i3;\r
4311     if (itot > s2.length() || i1 + i3 > s1.length())\r
4312     {\r
4313       return false;\r
4314     }\r
4315     if (!ign)\r
4316     {\r
4317       for (int i = i2; i < itot; i++)\r
4318       {\r
4319         if (s2.charAt(i) != s1.charAt(i1++))\r
4320         {\r
4321           return false;\r
4322         }\r
4323       }\r
4324     }\r
4325     else\r
4326     {\r
4327       for (int i = i2; i < itot; i++)\r
4328       {\r
4329         if (toLowerCase(s2.charAt(i)) != toLowerCase(s1.charAt(i1++)))\r
4330         {\r
4331           return false;\r
4332         }\r
4333       }\r
4334     }\r
4335     return true;\r
4336   }\r
4337 \r
4338   /**\r
4339    * Duplicates the regionMatches routine of String -- but makes use of the\r
4340    * definitions of upper, lower, and title case in this class when ignoreCase\r
4341    * is set.\r
4342    */\r
4343   public static boolean regionMatches(StringLike s1, boolean ign, int i1,\r
4344           String s2, int i2, int i3)\r
4345   {\r
4346     int itot = i2 + i3;\r
4347     if (itot > s2.length() || i1 + i3 > s1.length())\r
4348     {\r
4349       return false;\r
4350     }\r
4351     if (!ign)\r
4352     {\r
4353       for (int i = i2; i < itot; i++)\r
4354       {\r
4355         if (s2.charAt(i) != s1.charAt(i1++))\r
4356         {\r
4357           return false;\r
4358         }\r
4359       }\r
4360     }\r
4361     else\r
4362     {\r
4363       for (int i = i2; i < itot; i++)\r
4364       {\r
4365         if (toLowerCase(s2.charAt(i)) != toLowerCase(s1.charAt(i1++)))\r
4366         {\r
4367           return false;\r
4368         }\r
4369       }\r
4370     }\r
4371     return true;\r
4372   }\r
4373 \r
4374   /**\r
4375    * Duplicates the regionMatches routine of String -- but makes use of the\r
4376    * definitions of upper, lower, and title case in this class when ignoreCase\r
4377    * is set.\r
4378    */\r
4379   public static boolean regionMatches(String s1, boolean ign, int i1,\r
4380           String s2, int i2, int i3)\r
4381   {\r
4382     int itot = i2 + i3;\r
4383     if (itot > s2.length() || i1 + i3 > s1.length())\r
4384     {\r
4385       return false;\r
4386     }\r
4387     if (!ign)\r
4388     {\r
4389       for (int i = i2; i < itot; i++)\r
4390       {\r
4391         if (s2.charAt(i) != s1.charAt(i1++))\r
4392         {\r
4393           return false;\r
4394         }\r
4395       }\r
4396     }\r
4397     else\r
4398     {\r
4399       for (int i = i2; i < itot; i++)\r
4400       {\r
4401         if (toLowerCase(s2.charAt(i)) != toLowerCase(s1.charAt(i1++)))\r
4402         {\r
4403           return false;\r
4404         }\r
4405       }\r
4406     }\r
4407     return true;\r
4408   }\r
4409 }\r