libsheepy.c (2213822B)
1 // libsheepy 2 // 3 // MIT License 4 // 5 // Copyright (c) 2026 Remy Noulin 6 // 7 // Permission is hereby granted, free of charge, to any person obtaining a copy 8 // of this software and associated documentation files (the "Software"), to deal 9 // in the Software without restriction, including without limitation the rights 10 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 // copies of the Software, and to permit persons to whom the Software is 12 // furnished to do so, subject to the following conditions: 13 // 14 // The above copyright notice and this permission notice shall be included in all 15 // copies or substantial portions of the Software. 16 // 17 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 23 // SOFTWARE. 24 25 26 // libsheepyExportCscript is not set by default 27 // libsheepyExportCscript is set in demoScript.pp for use in the C script 28 // the header is included in the C script to avoid problems with tcc and be able to run 29 // the script from anywhere 30 #ifndef libsheepyExportCscript 31 #include "libsheepy.h" 32 #endif 33 // __USE_GNU is needed to get the definition of REG_RIP 34 //NOT NEEDED because _GNU_SOURCE is in libsheepy.h - #define __USE_GNU 35 #if (__APPLE__) 36 #define _XOPEN_SOURCE 1 37 #endif 38 #if (!(__APPLE__ || __FreeBSD__ || __TERMUX__ || __OpenBSD__ || __DragonFly__ || MUSL_LIBC || __sun__)) 39 //register_printf_specifier 40 #include "printf.h" 41 #endif 42 typedef enum { LOCALE_NORMAL, LOCALE_TURKIC, LOCALE_LITHUANIAN } localeType; 43 44 #define internal static 45 46 #include <sys/stat.h> 47 #include <ctype.h> 48 #include <sys/time.h> 49 #include <stdio.h> 50 #if (!(__OpenBSD__ || __HAIKU__)) 51 #include <ucontext.h> 52 #endif 53 #include <libgen.h> 54 #include <dirent.h> 55 #include <stdarg.h> 56 #include <errno.h> 57 #if (!(__OpenBSD__ || __HAIKU__)) 58 #include <wordexp.h> 59 #endif 60 #include <stdbool.h> 61 #include <string.h> 62 #include <stdlib.h> 63 #include <unistd.h> 64 #include <stdint.h> 65 #include <signal.h> 66 67 #if (__APPLE__) 68 #endif 69 #if (!(__APPLE__ || __FreeBSD__ || __TERMUX__ || __OpenBSD__ || __DragonFly__ || MUSL_LIBC || __sun__)) 70 #endif 71 #if (!(__FreeBSD__ || __OpenBSD__ || __DragonFly__)) 72 #else 73 #endif 74 #if (!(__TERMUX__ || __OpenBSD__ || MUSL_LIBC || __HAIKU__)) 75 #endif 76 #if ((__FreeBSD__)) 77 #endif 78 void *myMalloc(size_t l); 79 void *myRealloc(void *buffer, size_t l); 80 #if (!(__arm__ || __aarch64__ || __riscv || __APPLE__ || __i386__ || __FreeBSD__ || __OpenBSD__ || __DragonFly__ || MUSL_LIBC || __HAIKU__)) 81 internal void segfault_sigaction(int signal, siginfo_t *si, void *arg); 82 internal void segfault_sigaction(int signal UNUSED, siginfo_t *si UNUSED, void *arg UNUSED); 83 #endif 84 void cleanUpCharFree(char **val); 85 void cleanUpListFree(char* **val); 86 void cleanUpVoidFree(void **val); 87 void cleanUpFileFree(FILE **val); 88 void cleanUpFd(int *val); 89 uint64_t shStopwatch(uint8_t op); 90 int getLogSymbols(void); 91 void setLogSymbols(int mode); 92 int getMaxLogLevel(void); 93 void setMaxLogLevel(int logLevel); 94 FILE *setLogFile(char *filename); 95 void closeLogFiles(void); 96 int getLogMode(void); 97 void setLogMode(int mode); 98 bool getLogShortPath(void); 99 void setLogShortPath(bool shortPath); 100 bool getLogStdout(void); 101 void setLogStdout(bool state); 102 bool openProgLogFile(void); 103 void keepAnsiColorsInLog(bool state); 104 void _pLog(int loglevel, const char *file, const char *func, int line, const char *msg, ...); 105 #if (!(__APPLE__ || __FreeBSD__ || __TERMUX__ || __OpenBSD__ || __DragonFly__ || MUSL_LIBC || __sun__ || __HAIKU__)) 106 int print_k(FILE *stream, const struct printf_info *info, const void *const *args); 107 int print_K(FILE *stream, const struct printf_info *info, const void *const *args); 108 int print_k_arginfo(const struct printf_info *info UNUSED, size_t n, int *argtypes, int* size); 109 int print_b(FILE *stream, const struct printf_info *info, const void *const *args); 110 int print_b_arginfo(const struct printf_info *info UNUSED, size_t n, int *argtypes, int* size); 111 #endif 112 #if ((__APPLE__ || __FreeBSD__ || __TERMUX__ || __OpenBSD__ || __DragonFly__ || MUSL_LIBC || __sun__ || __HAIKU__)) 113 void initLibsheepyF(const char *progPath, initLibsheepyObjectP initF); 114 void initLibsheepyF(const char *progPath, initLibsheepyObjectP initF); 115 #endif 116 void finalizeLibsheepyCharAtExit(void); 117 int64_t getStackLimit(void); 118 int setStackLimit(int64_t stackSize); 119 int enableCoreDump(void); 120 const char *getProgName(void); 121 bool setProgName(const char *name); 122 void setDefaultProgName(void); 123 void freeProgName(void); 124 const char *getProgPath(void); 125 const char *getRealProgPath(void); 126 void freeRealProgPath(void); 127 int systemNFreeF(char *command, int line, const char *thisFunc, const char *thisFileName); 128 time_t getModificationTime(const char *path); 129 int setModificationTime(const char *path, time_t mtime); 130 bool isReadable(const char *path); 131 bool isWritable(const char *path); 132 bool isExecutable(const char *path); 133 bool equalModificationTimes(const char *path1, const char *path2); 134 time_t getCurrentUnixTime(void); 135 time_t strToUnixTime(const char *date, const char *format); 136 char *timeToS(const time_t t); 137 char *bTimeToS(char *dst, const time_t t); 138 char *bLTimeToS(char *dst, size_t dstSize, const time_t t); 139 char *timeToYMDS(const time_t t); 140 char *bTimeToYMDS(char *dst, const time_t t); 141 char *bLTimeToYMDS(char *dst, size_t dstSize, const time_t t); 142 char *getCurrentDate(void); 143 char *bGetCurrentDate(char *dst); 144 char *bLGetCurrentDate(char *dst, size_t dstSize); 145 char *getCurrentDateYMD(void); 146 char *bGetCurrentDateYMD(char *dst); 147 char *bLGetCurrentDateYMD(char *dst, size_t dstSize); 148 char *shDirname(const char *path); 149 char *bDirname(char *path); 150 char *bLDirname(char *path, size_t pathSize); 151 #if (__OpenBSD__ || __HAIKU__) 152 char *expandHome(const char* path); 153 #else 154 char *expandHome(const char* path); 155 #endif 156 #if (__OpenBSD__ || __HAIKU__) 157 char *iExpandHome(char **path); 158 #else 159 char *iExpandHome(char **path); 160 #endif 161 #if (__OpenBSD__ || __HAIKU__) 162 char *bExpandHome(char *path); 163 #else 164 char *bExpandHome(char *path); 165 #endif 166 #if (__OpenBSD__ || __HAIKU__) 167 char *bLExpandHome(char *path, size_t pathSize); 168 #else 169 char *bLExpandHome(char *path, size_t pathSize); 170 #endif 171 char *normalizePath(const char *path); 172 char *iNormalizePath(char **path); 173 char *bNormalizePath(char *path); 174 char *bLNormalizePath(char *path, size_t pathSize); 175 char *relPath(const char *path, const char *start); 176 char *iRelPath(char **path, const char *start); 177 char *bRelPath(char *dest, const char *path, const char *start); 178 char *bLRelPath(char *dest, size_t destSize, char *path, const char *start); 179 char *getHomePath(void); 180 char *bGetHomePath(char *path); 181 char *bLGetHomePath(char *path, size_t pathSize); 182 const char *getCHomePath(void); 183 char *getCwd(void); 184 char *bLGetCwd(char *path, size_t pathSize); 185 int chDir(const char *path); 186 bool isDir(const char *path); 187 char *shReadlink(const char *path); 188 char *endlink(const char *path); 189 bool isLink(const char *path); 190 bool fileExists(const char *filePath); 191 bool fileChmod(const char *filePath, mode_t mode); 192 ssize_t fileSize(const char *filePath); 193 ssize_t fileSizeFP(FILE *fp); 194 void *readFileToS(const char *filePath); 195 void *readStreamToS(FILE *fp); 196 void *bReadFileToS(const char *filePath, void *dst); 197 void *bReadStreamToS(FILE *fp, void *dst); 198 void *bLReadFileToS(const char *filePath, void *dst, size_t dstSize); 199 void *bLReadStreamToS(FILE *fp, void *dst, size_t dstSize); 200 ssize_t readFile(const char *filePath, void **buffer); 201 ssize_t bReadFile(const char *filePath, void *buffer); 202 ssize_t bLReadFile(const char *filePath, void *buffer, size_t dstSize); 203 int writeFileS(const char *filePath, const char *string); 204 int writeFile(const char *filePath, void *buffer, size_t len); 205 int writeStreamS(FILE *fp, const char *string); 206 int writeLStream(FILE *fp, void *buffer, size_t len); 207 bool appendFileS(const char *filePath, const char *string); 208 bool appendFile(const char *filePath, void *buffer, size_t len); 209 char **walkDir(const char* dirPath); 210 internal void walkADir(const char *dirPath, char ***list); 211 char **walkDirDir(const char* dirPath); 212 internal void walkADirDir(const char *dirPath, char ***list); 213 char **readDir(const char *dirPath); 214 char **readDirDir(const char *dirPath); 215 char **walkDirAll(const char* dirPath); 216 internal void walkADirAll(const char *dirPath, char ***list); 217 char **readDirAll(const char *dirPath); 218 mode_t getUmask(void); 219 mode_t getCurrentPermissions(void); 220 int mkdirParents(const char* path); 221 int rmAll(const char* path); 222 int rmADir(const char *dirPath); 223 int copy(const char* src, const char* dst); 224 int copyFile(const char* src, const char* dst); 225 int copyADir(const char *src, const char *dst, const char *path); 226 int shRename(const char* src, const char* dst); 227 int shMove(const char* src, const char* dst); 228 void setSoftwareRandom(void); 229 void setHardwareRandom(void); 230 int randomUrandomOpen(void); 231 void randomUrandomClose(void); 232 uint64_t randomWord(void); 233 uint64_t randomWordFromHW(void); 234 uint64_t randomChoice(uint64_t range); 235 char *randomS(uint64_t length); 236 char *bRandomS(char *dst, size_t dstSize); 237 char *randomAlphaNumS(uint64_t length); 238 char *bRandomAlphaNumS(char *dst, size_t dstSize); 239 char *readS(void); 240 char *bLReadS(char *dst, size_t dstSize); 241 UNUSED local char *shGetpass(void); 242 char *readPasswordS(void); 243 bool zeroS(char *string); 244 bool zeroBuf(void *buf, size_t len); 245 void *memdup(const void *buf, size_t size); 246 void readEnter(void); 247 char *readLine(FILE *fp); 248 void freeManySF(char *paramType, ...); 249 char *dupS(const char *string); 250 void shPrintfS(const char *fmt, ...); 251 void shEPrintfS(const char *fmt, ...); 252 void logNFree(char *s); 253 void loghex(const void *buf, size_t len); 254 char *toHexS(const void *buf, size_t len); 255 char *toHexSepS(const void *buf, size_t len, const char *separator); 256 char *toHexHeadSepS(const void *buf, size_t len, const char *head, const char *separator); 257 char *strCpy(char *restrict dst, const char *restrict src); 258 char *strNCpy(char *restrict dst, const char *restrict src, size_t srcSize); 259 char *strLCpy(char *restrict dst, size_t dstSize, const char *restrict src); 260 char *strCat(char *restrict dst, const char *restrict src); 261 char *strNCat(char *restrict dst, const char *restrict src, size_t srcLen); 262 char *strLCat(char *restrict dst, size_t dstSize, const char *restrict src); 263 char *strLNCat(char *restrict dst, size_t dstSize, const char *restrict src, size_t srcLen); 264 char *catSF(const char *paramType, ...); 265 char *iCatSF(char *dst, const char *paramType, ...); 266 char *bLCatSF(char *dst, size_t dstSize, const char *paramType, ...); 267 char *formatS(const char *fmt, ...); 268 char *bFormatS(char *string, const char *fmt, ...); 269 char *bLFormatS(char *string, size_t stringSize, const char *fmt, ...); 270 char *appendS(const char *string1, const char *string2); 271 char *appendCharS(const char *string1, char c); 272 char *appendSChar(char c, const char *string2); 273 char *iAppendS(char **string1, const char *string2); 274 char *iAppendCharS(char **string1, char c); 275 char *iAppendNFreeS(char **string1, char *string2); 276 char *iAppendManySF(char **string, const char *paramType, ...); 277 char *bAppendManySF(char *string, const char *paramType, ...); 278 char *bLAppendManySF(char *string, size_t stringSize, const char *paramType, ...); 279 char *prependS(const char *string1, const char *string2); 280 char *prependCharS(const char *string1, char c); 281 char *prependSChar(char c, const char *string2); 282 char *iPrependS(char **string1, const char *string2); 283 char *iPrependCharS(char **string1, char c); 284 char *iPrependNFreeS(char **string1, char *string2); 285 char *bPrependS(char *string1, const char *string2); 286 char *bLPrependS(char *string1, size_t string1Size, const char *string2); 287 char* replaceS(const char *s, const char *olds, const char *news, size_t max ); 288 #define replaceS_max(s,olds,news) replaceS(s,olds,news, 0) 289 char *replaceCharSS(const char *s, char olds, const char *news, size_t max); 290 char *replaceSCharS(const char *s, const char *olds, char news, size_t max); 291 char *replaceCharCharS(const char *s, char olds, char news, size_t max); 292 size_t replaceSLen(const char *s, const char *olds, const char *news, size_t max); 293 char* iReplaceS(char **s, const char *olds, const char *news, size_t max ); 294 #define iReplaceS_max(s,olds,news) iReplaceS(s,olds,news, 0) 295 char *iReplaceCharSS(char **s, char olds, const char *news, size_t max); 296 char *iReplaceSCharS(char **s, const char *olds, char news, size_t max); 297 char *iReplaceCharCharS(char **s, char olds, char news, size_t max); 298 char* bReplaceS(char *s, const char *olds, const char *news, size_t max ); 299 #define bReplaceS_max(s,olds,news) bReplaceS(s,olds,news, 0) 300 char* bLReplaceS(char *s, size_t sSize, const char *olds, const char *news, size_t max); 301 char *replaceManySF(const char *paramType, ...); 302 char *iReplaceManySF(char **s, char *paramType, ...); 303 char *bReplaceManySF(char *s, char *paramType, ...); 304 char *bLReplaceManySF(char *s, size_t sSize, char *paramType, ...); 305 char* icReplaceS(const char *s, const char *olds, const char *news, size_t max ); 306 #define icReplaceS_max(s,olds,news) icReplaceS(s,olds,news, 0) 307 char *icReplaceCharSS(const char *s, char olds, const char *news, size_t max); 308 char *icReplaceSCharS(const char *s, const char *olds, char news, size_t max); 309 char *icReplaceCharCharS(const char *s, char olds, char news, size_t max); 310 char* iicReplaceS(char **s, const char *olds, const char *news, size_t max ); 311 #define iicReplaceS_max(s,olds,news) iicReplaceS(s,olds,news, 0) 312 char *iicReplaceCharSS(char **s, char olds, const char *news, size_t max); 313 char *iicReplaceSCharS(char **s, const char *olds, char news, size_t max); 314 char *iicReplaceCharCharS(char **s, char olds, char news, size_t max); 315 char* bicReplaceS(char *s, const char *olds, const char *news, size_t max ); 316 #define bicReplaceS_max(s,olds,news) bicReplaceS(s,olds,news, 0) 317 char* bLicReplaceS(char *s, size_t sSize, const char *olds, const char *news, size_t max); 318 char *icReplaceManySF(const char *paramType, ...); 319 char *iicReplaceManySF(char **s, char *paramType, ...); 320 char *bicReplaceManySF(char *s, char *paramType, ...); 321 char *bLicReplaceManySF(char *s, size_t sSize, char *paramType, ...); 322 bool eqS(const char *string1, const char *string2); 323 bool eqCharS(char c, const char *string2); 324 bool eqSChar(const char *string1, char c); 325 bool eqIS(const char *string1, const char *string2, int64_t index); 326 bool eqICharS(const char *string1, char c, int64_t index); 327 bool startsWithS(const char *string1, const char *string2); 328 bool startsWithCharS(const char *string1, char c); 329 bool endsWithS(const char *string1, const char *string2); 330 bool endsWithCharS(const char *string1, char c); 331 ssize_t countS(const char *s, const char *needle); 332 ssize_t countCharS(const char *s, char c); 333 bool icEqS(const char *string1, const char *string2); 334 bool icEqCharS(char c, const char *string2); 335 bool icEqSChar(const char *string1, char c); 336 bool icEqIS(const char *string1, const char *string2, int64_t index); 337 bool icEqICharS(const char *string1, char c, int64_t index); 338 bool icStartsWithS(const char *string1, const char *string2); 339 bool icStartsWithCharS(const char *string1, char c); 340 bool icEndsWithS(const char *string1, const char *string2); 341 bool icEndsWithCharS(const char *string1, char c); 342 ssize_t icCountS(const char *s, const char *needle); 343 ssize_t icCountCharS(const char *s, char c); 344 bool hasCtrlChar(const char *string); 345 char *stripCtrlS(const char *string); 346 char *iStripCtrlS(char **string); 347 char *bStripCtrlS(char *string); 348 char *stripColorsS(const char *string); 349 char *iStripColorsS(char **string); 350 char *bStripColorsS(char *string); 351 char* quoteS(const char *s, char delim); 352 char* bQuoteS(char *dest, const char *s, char delim); 353 char* bLQuoteS(char *dest, size_t destSize, const char *s, char delim); 354 size_t quoteLenS(const char *s, char delim); 355 char* escapeS(const char *s, char delim); 356 char* bEscapeS(char *dest, const char *s, char delim); 357 char* bLEscapeS(char *dest, size_t destSize, const char *s, char delim); 358 size_t escapeLenS(const char *s, char delim); 359 char nibbleToHex(u8 n); 360 char* cEscapeS(const char *S); 361 char* bCEscapeS(char *dest, const char *S); 362 char* bLCEscapeS(char *dest, size_t destSize, const char *S); 363 size_t cEscapeLenS(const char *s); 364 bool isNumber(const char *string); 365 bool isInt(const char *string); 366 int64_t parseInt(const char *string); 367 int64_t parseIntChar(char c); 368 int64_t parseI64(const char *string); 369 int64_t parseI64Char(char c); 370 double parseDouble(const char *string); 371 double parseDoubleChar(char c); 372 uint64_t parseHex(const char *string); 373 char *intToS(int64_t n); 374 char *bIntToS(char *s, int64_t n); 375 char *doubleToS(double n); 376 char *bDoubleToS(char *s, double n); 377 size_t lenS(const char *string); 378 size_t sizeS(const char *string); 379 char *upperS(const char *string); 380 char *iUpperS(char **string); 381 char *bUpperS(char *string); 382 char *lowerS(const char *string); 383 char *iLowerS(char **string); 384 char *bLowerS(char *string); 385 char *trimS(const char *string); 386 char *iTrimS(char **string); 387 char *bTrimS(char *string); 388 char *lTrimS(const char *string); 389 char *iLTrimS(char **string); 390 char *bLTrimS(char *string); 391 char *rTrimS(const char *string); 392 char *iRTrimS(char **string); 393 char *bRTrimS(char *string); 394 char *uniqS(const char *string, char c); 395 char *iUniqS(char **string, char c); 396 char *bUniqS(char *string, char c); 397 char *icUniqS(const char *string, char c); 398 char *iicUniqS(char **string, char c); 399 char *bicUniqS(char *string, char c); 400 char *repeatS(const char *string, size_t count); 401 char *iRepeatS(char **string, size_t count); 402 char *bRepeatS(char *dest, const char *string, size_t count); 403 char *bLRepeatS(char *dest, size_t destSize, const char *string, size_t count); 404 char *repeatCharS(char c, size_t count); 405 char *bRepeatCharS(char *dest, char c, size_t count); 406 char *bLRepeatCharS(char *dest, size_t destSize, char c, size_t count); 407 ssize_t repeatLenS(const char *string, size_t count); 408 char *ellipsisStartS(const char *string, size_t targetLength, const char *ellipsisString); 409 char *iEllipsisStartS(char **string, size_t targetLength, const char *ellipsisString); 410 char *bEllipsisStartS(char *dest, const char *string, size_t targetLength, const char *ellipsisString); 411 char *bLEllipsisStartS(char *dest, size_t destSize, const char *string, size_t targetLength, const char *ellipsisString); 412 char *ellipsisStartCharS(const char *string, size_t targetLength, char ellipsisChar); 413 char *iEllipsisStartCharS(char **string, size_t targetLength, char ellipsisChar); 414 char *bEllipsisStartCharS(char *dest, const char *string, size_t targetLength, char ellipsisChar); 415 char *bLEllipsisStartCharS(char *dest, size_t destSize, const char *string, size_t targetLength, char ellipsisChar); 416 ssize_t ellipsisLenS(const char *string, size_t targetLength, const char *ellipsisString); 417 char *ellipsisEndS(const char *string, size_t targetLength, const char *ellipsisString); 418 char *iEllipsisEndS(char **string, size_t targetLength, const char *ellipsisString); 419 char *bEllipsisEndS(char *dest, const char *string, size_t targetLength, const char *ellipsisString); 420 char *bLEllipsisEndS(char *dest, size_t destSize, const char *string, size_t targetLength, const char *ellipsisString); 421 char *ellipsisEndCharS(const char *string, size_t targetLength, char ellipsisChar); 422 char *iEllipsisEndCharS(char **string, size_t targetLength, char ellipsisChar); 423 char *bEllipsisEndCharS(char *dest, const char *string, size_t targetLength, char ellipsisChar); 424 char *bLEllipsisEndCharS(char *dest, size_t destSize, const char *string, size_t targetLength, char ellipsisChar); 425 char *padStartS(const char *string, size_t targetLength, const char *padString); 426 char *iPadStartS(char **string, size_t targetLength, const char *padString); 427 char *bPadStartS(char *dest, const char *string, size_t targetLength, const char *padString); 428 char *bLPadStartS(char *dest, size_t destSize, const char *string, size_t targetLength, const char *padString); 429 char *padStartCharS(const char *string, size_t targetLength, char padChar); 430 char *iPadStartCharS(char **string, size_t targetLength, char padChar); 431 char *bPadStartCharS(char *dest, const char *string, size_t targetLength, char padChar); 432 char *bLPadStartCharS(char *dest, size_t destSize, const char *string, size_t targetLength, char padChar); 433 ssize_t padStartLenS(const char *string, size_t targetLength, const char *padString); 434 char *padEndS(const char *string, size_t targetLength, const char *padString); 435 char *iPadEndS(char **string, size_t targetLength, const char *padString); 436 char *bPadEndS(char *dest, const char *string, size_t targetLength, const char *padString); 437 char *bLPadEndS(char *dest, size_t destSize, const char *string, size_t targetLength, const char *padString); 438 char *padEndCharS(const char *string, size_t targetLength, char padChar); 439 char *iPadEndCharS(char **string, size_t targetLength, char padChar); 440 char *bPadEndCharS(char *dest, const char *string, size_t targetLength, char padChar); 441 char *bLPadEndCharS(char *dest, size_t destSize, const char *string, size_t targetLength, char padChar); 442 ssize_t padEndLenS(const char *string, size_t targetLength, const char *padString); 443 char getS(const char *string, int64_t index); 444 char *setS(char *string, int64_t index, char c); 445 char *swapS(char *string, int64_t index1, int64_t index2); 446 char *iSwapS(char **string, int64_t index1, int64_t index2); 447 char *bSwapS(char *string, int64_t index1, int64_t index2); 448 char *bLSwapS(char *string, size_t size, int64_t index1, int64_t index2); 449 char *sliceS(const char *string, int64_t start, int64_t end); 450 char *iSliceS(char **string, int64_t start, int64_t end); 451 char *bSliceS(char *string, int64_t start, int64_t end); 452 char *bLSliceS(char *string, size_t stringSize, int64_t start, int64_t end); 453 char *cropS(char *string, int64_t start, int64_t end); 454 char *iCropS(char **string, int64_t start, int64_t end); 455 char cropElemS(char *string, int64_t index); 456 char iCropElemS(char **string, int64_t index); 457 char *insertS(const char *string, int64_t index, const char *toInsert); 458 char *insertNFreeS(const char *string, int64_t index, char *toInsert); 459 char *iInsertS(char **string, int64_t index, const char *toInsert); 460 char *iInsertNFreeS(char **string, int64_t index, char *toInsert); 461 char *bInsertS(char *string, int64_t index, const char *toInsert); 462 char *bLInsertS(char *string, size_t stringSize, int64_t index, const char *toInsert); 463 char *injectS(const char *string, int64_t index, char toInject); 464 char *iInjectS(char **string, int64_t index, char toInject); 465 char *bInjectS(char *string, int64_t index, char toInject); 466 char *bLInjectS(char *string, size_t stringSize, int64_t index, char toInject); 467 char *delS(const char *string, int64_t start, int64_t end); 468 char *iDelS(char **string, int64_t start, int64_t end); 469 char *bDelS(char *string, int64_t start, int64_t end); 470 char *bLDelS(char *string, size_t stringSize, int64_t start, int64_t end); 471 char *delElemS(const char *string, int64_t index); 472 char *iDelElemS(char **string, int64_t index); 473 char *bDelElemS(char *string, int64_t index); 474 char *bLDelElemS(char *string, size_t stringSize, int64_t index); 475 char *findS(const char *string, const char *needle); 476 char *findCharS(const char *string, char c); 477 ssize_t indexOfS(const char *string, const char *needle); 478 ssize_t indexOfCharS(const char *string, char c); 479 bool hasS(const char *string, const char *needle); 480 bool hasCharS(const char *string, char c); 481 char *icFindS(const char *string, const char *needle); 482 char *icFindCharS(const char *string, char c); 483 ssize_t icIndexOfS(const char *string, const char *needle); 484 ssize_t icIndexOfCharS(const char *string, char c); 485 bool icHasS(const char *string, const char *needle); 486 bool icHasCharS(const char *string, char c); 487 char *tokS(char *s, const char *delim, char **saveptr); 488 char *icTokS(char *s, const char *delim, char **saveptr); 489 size_t lenUTF8(const char *s); 490 size_t bLLenUTF8(const char *s, size_t maxSize); 491 bool isUTF8(const char * string); 492 bool bLIsUTF8(const char * string, size_t stringSize); 493 bool isCodeUTF8(const char *code); 494 const char *nextUTF8(const char *utf8); 495 const char *bLNextUTF8(const char *string, size_t utf8Size, const char *utf8); 496 const char *findNextUTF8(const char *string, size_t utf8Size, const char *utf8); 497 const char *prevUTF8(const char *utf8); 498 const char *bPrevUTF8(const char *string, const char *utf8); 499 local const char *bPrevUTF8Tiny(const char *string, const char *utf8); 500 local char *bPrevRWUTF8Tiny(const char *string, char *utf8); 501 const char *idx2PtrUTF8(const char *utf8, int64_t index); 502 local char *idx2PtrRWUTF8(char *utf8, int64_t index); 503 const char *bLIdx2PtrUTF8(const char *utf8, size_t utf8Size, int64_t index); 504 int64_t ptr2IdxUTF8(const char *utf8, const char *pos); 505 int64_t bPtr2IdxUTF8(const char *start, const char *utf8, const char *pos); 506 int64_t bLPtr2IdxUTF8(const char *utf8, size_t utf8Size, const char *pos); 507 int64_t bLPtr2NegIdxUTF8(const char *utf8, size_t utf8Size, const char *pos); 508 char *makeValidUTF8(const char *utf8); 509 char *bMakeValidUTF8(char *utf8); 510 char *nMakeValidUTF8(const char *utf8, size_t utf8Len); 511 char *bNMakeValidUTF8(char *dst, const char *utf8, size_t utf8Len); 512 char *bLMakeValidUTF8(char *dst, size_t dstSize, const char *utf8); 513 char *bLNMakeValidUTF8(char *dst, size_t dstSize, const char *utf8, size_t utf8Len); 514 char *strNCpyUTF8(char *dst, const char *src, size_t srcLen); 515 char *strLCpyUTF8(char *dst, size_t dstSize, const char *src); 516 char *strNCatUTF8(char *dst, const char *src, size_t srcLen); 517 char *strLCatUTF8(char *dst, size_t dstSize, const char *src); 518 char *strLNCatUTF8(char *dst, size_t dstSize, const char *src, size_t srcLen); 519 char* icReplaceUTF8(const char UNUSED *s, const char UNUSED *olds, const char UNUSED *news, size_t UNUSED max ); 520 #define icReplaceUTF8_max(s,olds,news) icReplaceUTF8(s,olds,news, 0) 521 char *icReplaceCharSUTF8(const char *s UNUSED, char olds UNUSED, const char *news UNUSED, size_t max UNUSED); 522 char *icReplaceSCharUTF8(const char *s UNUSED, const char *olds UNUSED, char news UNUSED, size_t max UNUSED); 523 char* iicReplaceUTF8(char UNUSED **s, const char UNUSED *olds, const char UNUSED *news, size_t UNUSED max ); 524 #define iicReplaceUTF8_max(s,olds,news) iicReplaceUTF8(s,olds,news, 0) 525 char *iicReplaceCharSUTF8(char **s UNUSED, char olds UNUSED, const char *news UNUSED, size_t max UNUSED); 526 char *iicReplaceSCharUTF8(char **s UNUSED, const char *olds UNUSED, char news UNUSED, size_t max UNUSED); 527 char* bicReplaceUTF8(char UNUSED *s, const char UNUSED *olds, const char UNUSED *news, size_t UNUSED max ); 528 #define bicReplaceUTF8_max(s,olds,news) bicReplaceUTF8(s,olds,news, 0) 529 char* bLicReplaceUTF8(char UNUSED *s, size_t UNUSED sSize, const char UNUSED *olds, const char UNUSED *news, size_t max UNUSED); 530 char *icReplaceManyUTF8F(const char *paramType UNUSED, ...); 531 char *iicReplaceManyUTF8F(char **s UNUSED, char *paramType UNUSED, ...); 532 char *bicReplaceManyUTF8F(char *s UNUSED, char *paramType UNUSED, ...); 533 char *bLicReplaceManyUTF8F(char *s UNUSED, size_t sSize UNUSED, char *paramType UNUSED, ...); 534 bool eqIUTF8(const char *string1, const char *string2, int64_t index); 535 bool eqICharUTF8(const char *string1, char c, int64_t index); 536 bool icEqUTF8(const char *string1, const char *string2); 537 bool icEqCharUTF8(char c, const char *string2); 538 bool icEqUTF8Char(const char *string1, char c); 539 bool icEqIUTF8(const char *string1 UNUSED, const char *string2 UNUSED, int64_t index UNUSED); 540 bool icEqICharUTF8(const char *string1 UNUSED, char c UNUSED, int64_t index UNUSED); 541 bool icStartsWithUTF8(const char *string1, const char *string2); 542 bool icEndsWithUTF8(const char *string1, const char *string2); 543 ssize_t icCountUTF8(const char *s, const char *needle); 544 internal localeType getLocaleType(void); 545 rune code2RuneUTF8(const char *code); 546 rune code2RuneLUTF8(const char *code, uint8_t *n); 547 size_t bRune2CodeUTF8(char *dst, rune c); 548 uint8_t runeLenUTF8(rune r); 549 internal size_t decompose_hangul(rune s, rune *r); 550 internal const char *find_decomposition (rune ch); 551 internal size_t runeFullyDecompose(rune ch, rune *result, size_t resultLen); 552 internal size_t output_marks(const char **p_inout, char *dst, bool remove_dot); 553 internal size_t output_special_case(char *dst, int offset, int type, int which); 554 rune toupperUTF8(rune c); 555 internal size_t _upperUTF8(char *dst, const char *utf8, localeType lcl); 556 char *upperUTF8(const char *utf8); 557 char *iUpperUTF8(char **utf8); 558 char *bUpperUTF8(char *utf8 UNUSED); 559 local int runeCombiningClass (rune uc); 560 internal bool has_more_above (const char *str); 561 rune tolowerUTF8(rune c); 562 internal size_t _lowerUTF8(char *dst, const char *utf8, localeType lcl); 563 char *lowerUTF8(const char *utf8); 564 char *iLowerUTF8(char **utf8); 565 char *bLowerUTF8(char *string UNUSED); 566 char *casefoldUTF8(const char *utf8); 567 char *uniqUTF8(const char *string, const char *code); 568 char *iUniqUTF8(char **string, const char *code); 569 char *bUniqUTF8(char *string, const char *code); 570 char *icUniqUTF8(const char *string UNUSED, const char *code UNUSED); 571 char *iicUniqUTF8(char **string UNUSED, const char *code UNUSED); 572 char *bicUniqUTF8(char *string UNUSED, char c UNUSED); 573 rune getUTF8(const char *string, int64_t index); 574 char *setUTF8(char *string, int64_t index, rune c); 575 char *sliceUTF8(const char *string, int64_t start, int64_t end); 576 char *iSliceUTF8(char **string, int64_t start, int64_t end); 577 char *bSliceUTF8(char *string, int64_t start, int64_t end); 578 char *bLSliceUTF8(char *string, size_t stringSize, int64_t start, int64_t end); 579 char *insertUTF8(const char *string, int64_t index, const char *toInsert); 580 char *insertNFreeUTF8(const char *string, int64_t index, char *toInsert); 581 char *iInsertUTF8(char **string, int64_t index, const char *toInsert); 582 char *iInsertNFreeUTF8(char **string, int64_t index, char *toInsert); 583 char *bInsertUTF8(char *string, int64_t index, const char *toInsert); 584 char *bLInsertUTF8(char *string, size_t stringSize, int64_t index, const char *toInsert); 585 char *delUTF8(const char *string, int64_t start, int64_t end); 586 char *iDelUTF8(char **string, int64_t start, int64_t end); 587 char *bDelUTF8(char *string, int64_t start, int64_t end); 588 char *bLDelUTF8(char *string, size_t stringSize, int64_t start, int64_t end); 589 ssize_t indexOfUTF8(const char *string, const char *needle); 590 ssize_t icIndexOfUTF8(const char *string UNUSED, const char *needle UNUSED); 591 bool icHasUTF8(const char *string, const char *needle); 592 char *icTokUTF8(const char *s UNUSED, const char *delim UNUSED, char **saveptr UNUSED); 593 char **icSplitUTF8(const char *string UNUSED, const char* delim UNUSED); 594 char **icExtractUTF8(const char *string UNUSED, const char* delim1 UNUSED, const char* delim2 UNUSED); 595 char **icExtractCharSUTF8(const char *string UNUSED, char delim1 UNUSED, const char* delim2 UNUSED); 596 char **icExtractSCharUTF8(const char *string UNUSED, const char* delim1 UNUSED, char delim2 UNUSED); 597 internal int icListSortUTF8Cmp(const void * a, const void * b); 598 char **icListSortUTF8(char **list); 599 char **iicListSortUTF8(char ***list); 600 bool icListEqUTF8(char **list1, char **list2); 601 bool icListHasUTF8(char **list, const char *string); 602 ssize_t icListIndexOfUTF8(char **list, const char *string); 603 ssize_t icListBinarySearchUTF8(char **list, const char *string); 604 char **icListUniqUTF8(char **list); 605 char **iicListUniqUTF8(char ***list); 606 char *emptySF(void); 607 char *iEmptySF(char **string); 608 bool isEmptyS(const char *string); 609 bool isBlankS(const char *string); 610 ssize_t intIndex(int64_t index, int64_t length); 611 char **listEmptySF(void); 612 char **iListEmptySF(char ***list); 613 bool listIsEmptyS(char **list); 614 bool listIsBlankS(char **list); 615 char **listCreateSF(const char *paramType, ...); 616 char **listFromArrayS(char **array, size_t size); 617 char **listFromCArrayS(const char **array, size_t size); 618 char **listPushS(char ***list, const char *s); 619 char **listPushCharS(char ***list, char c); 620 char **iListPushS(char ***list, char *s); 621 char *listPopS(char ***list); 622 char **listPrependS(char ***list, const char *s); 623 char **listPrependCharS(char ***list, char c); 624 char **iListPrependS(char ***list, char *s); 625 char *listDequeueS(char ***list); 626 void listFreeS(char **list); 627 void listFreeManySF(char **paramType, ...); 628 size_t listLengthS(char **list); 629 size_t listLengthCS(const char **list); 630 ssize_t listStrLengthS(char **list); 631 ssize_t listIntIndexS(char **list, int64_t index); 632 char **listAddrS(char **list, int64_t index); 633 char *listGetS(char **list, int64_t index); 634 char *iListGetS(char **list, int64_t index); 635 char *listGetCS(const char **list, int64_t index); 636 const char *iListGetCS(const char **list, int64_t index); 637 char **listSetS(char **list, int64_t index, const char *s); 638 char **listSetCharS(char **list, int64_t index, char c); 639 char **iListSetS(char **list, int64_t index, char *s); 640 char **listSwapS(char **list, int64_t index1, int64_t index2); 641 char **iListSwapS(char **list, int64_t index1, int64_t index2); 642 char **split(const char *string, const char* delim); 643 char **splitS(const char *string, const char* delim); 644 char **splitChar(const char *string, char delim); 645 char **icSplit(const char *string, const char* delim); 646 char **icSplitS(const char *string, const char* delim); 647 char **icSplitChar(const char *string, char delim); 648 ssize_t joinLength(char **list, const char* delim); 649 char *join(char **list, const char* delim); 650 char *joinS(char **list, const char* delim); 651 char *joinCS(const char **list, const char* delim); 652 char *joinChar(char **list, char delim); 653 char *bJoin(char *string, char **list, const char* delim); 654 char *bJoinChar(char *string, char **list, char delim); 655 char *bLJoin(char *string, size_t stringSize, char **list, const char* delim); 656 char *bLJoinChar(char *string, size_t stringSize, char **list, char delim); 657 char **extractS(const char *string, const char* delim1, const char* delim2); 658 char **extractCharSS(const char *string, char delim1, const char* delim2); 659 char **extractSCharS(const char *string, const char* delim1, char delim2); 660 char **extractCharCharS(const char *string, char delim1, char delim2); 661 char **icExtractS(const char *string, const char* delim1, const char* delim2); 662 char **icExtractCharSS(const char *string, char delim1, const char* delim2); 663 char **icExtractSCharS(const char *string, const char* delim1, char delim2); 664 char **icExtractCharCharS(const char *string, char delim1, char delim2); 665 char **listDupS(char **list); 666 char **listDupCS(const char **list); 667 char **iListDupS(char **list); 668 char **listReverseS(char **list); 669 char **iListReverseS(char ***list); 670 char **listCatSF(char **paramType, ...); 671 char **listAppendS(char ***list1, char **list2); 672 char **iListAppendS(char ***list1, char **list2); 673 char **iListAppendNSmashS(char ***list1, char **list2); 674 char **listShiftS(char ***list1, char **list2); 675 char **iListShiftS(char ***list1, char **list2); 676 char **iListShiftNSmashS(char ***list1, char **list2); 677 char **listAddS(char **list1, char **list2); 678 char **listAddCS(char **list1, const char **list2); 679 char **listSliceS(char **list, int64_t start, int64_t end); 680 char **iListCopyS(char **list, int64_t start, int64_t end); 681 char **iListSliceS(char ***list, int64_t start, int64_t end); 682 char **listCropS(char **list, int64_t start, int64_t end); 683 char **iListCropS(char ***list, int64_t start, int64_t end); 684 char *listCropElemS(char **list, int64_t index); 685 char *iListCropElemS(char ***list, int64_t index); 686 char **listInsertS(char **list, int64_t index, char **toInsert); 687 char **iListInsertS(char ***list, int64_t index, char **toInsert); 688 char **iListInsertNFreeS(char ***list, int64_t index, char **toInsert); 689 char **listInjectS(char **list, int64_t index, char *toInject); 690 char **listInjectCharS(char **list, int64_t index, char toInject); 691 char **iListInjectS(char ***list, int64_t index, char *toInject); 692 char **iListInjectCharS(char ***list, int64_t index, char toInject); 693 char **listDelS(char **list, int64_t start, int64_t end); 694 char **iListDelS(char ***list, int64_t start, int64_t end); 695 char **iListRemoveS(char ***list, int64_t start, int64_t end); 696 char **listDelElemS(char **list, int64_t index); 697 char **iListDelElemS(char ***list, int64_t index); 698 char **iListRemoveElemS(char ***list, int64_t index); 699 int listPrintS(char **list); 700 int listPrintCS(const char **list); 701 internal int listSortSCmp(const void * a, const void * b); 702 char **listSortS(char **list); 703 char **iListSortS(char ***list); 704 char **listSortFS(char **list, shCmpt compareFunction); 705 char **iListSortFS(char ***list, shCmpt compareFunction); 706 internal int icListSortSCmp(const void * a, const void * b); 707 char **icListSortS(char **list); 708 char **iicListSortS(char ***list); 709 char **readText(const char *filePath); 710 char **readStream(FILE *fp); 711 bool writeText(const char *filePath, char **list); 712 bool writeCText(const char *filePath, const char **list); 713 bool writeStream(FILE *fp, char **list); 714 bool writeCStream(FILE *fp, const char **list); 715 bool appendText(const char *filePath, char **list); 716 bool appendCText(const char *filePath, const char **list); 717 char **execOut(const char *cmd); 718 char **systemOutf(const char *fmt, ...); 719 int systemf(const char *fmt, ...); 720 int commandF(const char *cmd, int line, const char *thisFunc, const char *thisFileName); 721 int commandfF(int line, const char *thisFunc, const char *thisFileName, const char *fmt, ...); 722 int commandNFreeF(char *cmd, int line, const char *thisFunc, const char *thisFileName); 723 bool listEqS(char **list1, char **list2); 724 bool listEqCS(char **list1, const char **list2); 725 bool listEqC1S(const char **list1, char **list2); 726 bool listEqCCS(const char **list1, const char **list2); 727 bool listHasS(char **list, const char *string); 728 bool listHasCS(const char **list, const char *string); 729 bool listHasCharS(char **list, char c); 730 bool listHasCharCS(const char **list, char c); 731 ssize_t listIndexOfS(char **list, const char *string); 732 ssize_t listIndexOfCS(const char **list, const char *string); 733 ssize_t listIndexOfCharS(char **list, char c); 734 ssize_t listIndexOfCharCS(const char **list, char c); 735 ssize_t listBinarySearchS(char **list, const char *string); 736 ssize_t listBinarySearchCharS(char **list, char c); 737 char **listUniqS(char **list); 738 char **iListUniqS(char ***list); 739 bool icListEqS(char **list1, char **list2); 740 bool icListEqCS(char **list1, const char **list2); 741 bool icListEqC1S(const char **list1, char **list2); 742 bool icListEqCCS(const char **list1, const char **list2); 743 bool icListHasS(char **list, const char *string); 744 bool icListHasCharS(char **list, char c); 745 bool icListHasCS(const char **list, const char *string); 746 bool icListHasCharCS(const char **list, char c); 747 ssize_t icListIndexOfS(char **list, const char *string); 748 ssize_t icListIndexOfCS(const char **list, const char *string); 749 ssize_t icListIndexOfCharS(char **list, char c); 750 ssize_t icListIndexOfCharCS(const char **list, char c); 751 ssize_t icListBinarySearchS(char **list, const char *string); 752 ssize_t icListBinarySearchCharS(char **list, char c); 753 char **icListUniqS(char **list); 754 char **iicListUniqS(char ***list); 755 char **listCompactS(char **list); 756 char **iListCompactS(char ***list); 757 void btraceEnable(void); 758 void btraceDisable(void); 759 bool btraceConfig(void); 760 #if (__FreeBSD__ || __TERMUX__ || __OpenBSD__ || __DragonFly__ || MUSL_LIBC || __sun__ || __HAIKU__) 761 char **btrace(void); 762 char **btrace(void); 763 #endif 764 void **listEmptyF(void); 765 void **iListEmptyF(void ***list); 766 bool listIsEmpty(void **list); 767 void **listCreateF(void *paramType, ...); 768 void **listFromArray(void **array, size_t size); 769 void **listPush(void ***list, void *s); 770 void *listPop(void ***list); 771 void **listPrepend(void ***list, void *s); 772 void *listDequeue(void ***list); 773 void listFree(void **list); 774 void listFreeManyF(void **paramType, ...); 775 size_t listLength(void **list); 776 void *listGet(void **list, int64_t index); 777 void **listSet(void **list, int64_t index, void *s); 778 void **listDup(void **list); 779 void **listReverse(void **list); 780 void **iListReverse(void ***list); 781 void **listCatF(void **paramType, ...); 782 void **listAppend(void ***list1, void **list2); 783 void **listAdd(void **list1, void **list2); 784 void **listSlice(void **list, int64_t start, int64_t end); 785 void **iListSlice(void ***list, int64_t start, int64_t end); 786 void **listInsert(void **list, int64_t index, void **toInsert); 787 void **iListInsert(void ***list, int64_t index, void **toInsert); 788 void **listDel(void **list, int64_t start, int64_t end); 789 void **iListDel(void ***list, int64_t start, int64_t end); 790 int ringInit(void *ring, int maxCount); 791 int ringEmpty(void *ring); 792 int ringIsEmpty(void *ring); 793 int ringIsFull(void *ring); 794 ssize_t ringCount(void *ring); 795 i64 ringPush(void *ring); 796 int ringPop(void *ring); 797 i64 ringPrepend(void *ring); 798 int ringDequeue(void *ring); 799 bool fiberAdd(void *ctx, int thisSlot, fiberFT func); 800 bool fiberPrepend(void *ctx, int thisSlot, fiberFT func); 801 void scheduler(void); 802 #if ((__GNUC__ > 4)) 803 uint64_t getMonotonicTime(void); 804 #else 805 uint64_t getMonotonicTime(void); 806 #endif 807 int nanoSleepF(uint64_t time); 808 void A(void *args); 809 void B(void *args); 810 void AB(void); 811 void fiberA(int thisSlot); 812 void fiberB(int thisSlot); 813 void bttt(void); 814 #ifndef unitTest 815 #endif 816 int MAIN(int ARGC, char** ARGV); 817 818 int argc; char **argv; 819 820 //TODO compare speed - include sys/sendfile.h 821 822 #include "sys/resource.h" 823 #if (!(__FreeBSD__ || __OpenBSD__ || __DragonFly__)) 824 #include "alloca.h" 825 #else 826 #include <stdlib.h> 827 #endif 828 #include "pwd.h" 829 // ULONG_MAX 830 #include "limits.h" 831 #if (!(__TERMUX__ || __OpenBSD__ || MUSL_LIBC || __HAIKU__)) 832 // backtrace 833 #include "execinfo.h" 834 #endif 835 // get home path 836 #include "pwd.h" 837 // terminal settings for shGetpass 838 #include "termios.h" 839 // setlocale 840 #include "locale.h" 841 842 #if ((__FreeBSD__)) 843 // WIFEXITED WEXITSTATUS 844 #include <sys/wait.h> 845 #endif 846 847 848 849 /** \file 850 * This file has basic file, random, string, list functions 851 * 852 * There are 2 types of lists: char** and void** 853 * 854 * The *S (not i*S) functions duplicate the parameters and results. 855 * You must free the result if result is non-NULL and free the parameters 856 * 857 * The functions starting with i*S are in place functions. 858 * 859 * In Place functions: iList*S and i*S 860 * The iList*S and i*S functions modify the input buffers 861 * The input buffers must be allocated with malloc/calloc 862 * Returns are pointers to original buffers 863 * 864 * For more information, the documentation is located at http://spartatek.se/libsheepy/ 865 */ 866 867 #define MALLOC myMalloc 868 //MALLOC = malloc 869 870 871 void *myMalloc(size_t l) { 872 void *r = NULL; 873 874 //print 'myMalloc' 875 876 // over allocate to trigger bugs 877 l += 0; 878 r = malloc(l); 879 880 pError0(randomUrandomOpen()); 881 882 void *w = r; 883 while (l-- > 0) { 884 *(char *)w++ = (char)randomChoice(256); 885 } 886 887 randomUrandomClose(); 888 //print (char *)r 889 return(r); 890 } 891 892 #define REALLOC myRealloc 893 //REALLOC = realloc 894 895 void *myRealloc(void *buffer, size_t l) { 896 void *r = NULL; 897 898 //print 'myRealloc' 899 900 // NO creates bugs - over allocate to trigger bugs 901 r = realloc(buffer, l+0); 902 903 pError0(randomUrandomOpen()); 904 905 int i = 0; 906 while (i-- > 0) { 907 *(char *)(r+l-i) = (char)randomChoice(256); 908 } 909 910 randomUrandomClose(); 911 return(r); 912 } 913 914 // Function section 915 // define not used for now 916 #define __libsheepy 1 917 918 /** type bool true (glibc true is not bool), for use in generics */ 919 const bool TRUE = true; 920 /** type bool false (glibc true is not bool), for use in generics */ 921 const bool FALSE = false; 922 923 /** backtrace in error messages is enabled by default */ 924 bool btraceCfg = true; 925 926 /** 927 * setjmp buffers for try/throw,throwV macros 928 */ 929 jmp_buf tryJumpBuffers[maxTryThrowCount]; 930 931 /** 932 * program/library path to find the debug symbols for the program using libsheepy 933 */ 934 static const char *libSheepyArg0 = NULL; 935 static const char *libSheepyProgPath = NULL; 936 static char *progName = NULL; 937 static const char *defaultProgName = NULL; 938 static char *libSheepyRealProgPath = NULL; 939 940 static struct sigaction default_sa = init0Var; 941 942 /** 943 * segmentation fault handler 944 * 945 * prints line and file where the segfault crash occured 946 */ 947 #if (!(__arm__ || __aarch64__ || __riscv || __APPLE__ || __i386__ || __FreeBSD__ || __OpenBSD__ || __DragonFly__ || MUSL_LIBC || __HAIKU__)) 948 internal void segfault_sigaction(int signal, siginfo_t *si, void *arg) { 949 950 /* char addr[20] */ 951 /* char *s */ 952 /* char realProgPath[8192] */ 953 ucontext_t *context = (ucontext_t *)arg;; 954 logE("Segmentation fault (%d) at address %p RIP: %" PRIx64 " in program %s\n", signal, si->si_addr, (uint64_t)context->uc_mcontext.gregs[REG_RIP], libSheepyArg0); 955 956 logBtrace; 957 958 // incorrect code, doesn't work because of ASLR 959 /* sprintf(addr, "0x%" PRIx64, (uint64_t)context->uc_mcontext.gregs[REG_RIP]); */ 960 /* realpath("/proc/self/exe", realProgPath); */ 961 /* s = 'addr2line -e %s %s', realProgPath, addr */ 962 /* systemNFree(s); */ 963 // call default signal handler 964 default_sa.sa_sigaction(signal, si, arg); 965 } 966 967 #else // __arm__ || __aarch64__ || __riscv || __APPLE__ || __i386__ || __FreeBSD__ || __OpenBSD__ || __DragonFly__ || MUSL_LIBC || __HAIKU__ 968 internal void segfault_sigaction(int signal UNUSED, siginfo_t *si UNUSED, void *arg UNUSED) { 969 970 // call default signal handler 971 default_sa.sa_sigaction(signal, si, arg); 972 } 973 974 #endif 975 976 void cleanUpCharFree(char **val) { 977 978 free(*val); 979 } 980 981 982 void cleanUpListFree(char* **val) { 983 984 listFreeS(*val); 985 } 986 987 988 void cleanUpVoidFree(void **val) { 989 990 free(*val); 991 } 992 993 994 void cleanUpFileFree(FILE **val) { 995 996 if ((*val)) { 997 fclose(*val); 998 } 999 } 1000 1001 1002 void cleanUpFd(int *val) { 1003 1004 if ((*val != -1)) { 1005 close(*val); 1006 } 1007 } 1008 1009 /** 1010 * nanosecond stopwatch 1011 * 1012 * \param 1013 * op operation: 0 start, 1 get stopwatch value 1014 * \return 1015 * 0 when op is 0 1016 * time since last start in ns when op is 1 1017 */ 1018 uint64_t shStopwatch(uint8_t op) { 1019 1020 static uint64_t startTime; 1021 1022 if (!op) { 1023 startTime = getMonotonicTime(); 1024 return(0); 1025 } 1026 else { 1027 return(getMonotonicTime()-startTime); 1028 } 1029 } 1030 1031 /** log symbols to use, LOG_INVALID_MODE is log mode default symbols */ 1032 static int logSymbols = LOG_INVALID_MODE; 1033 1034 /** set log level, logs above logMaxLevel are skipped */ 1035 static int logMaxLevel = LOG_INVALID; 1036 1037 uint64_t logMask = 0xFFFFFFFFFFFFFFFF; 1038 1039 static FILE *_logging_files[16] = { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL }; 1040 static int _log_current_mode = LOG_DATE; 1041 1042 static bool _log_verbose_short_path = true; 1043 1044 static bool _logToStdout = true; 1045 1046 static bool keepAnsiColors = true; 1047 1048 // logging file 0 is stdout 1049 static uint16_t _current_log_file = 1; 1050 1051 static const char *log_tags[LOG_INVALID_MODE][LOG_INVALID+1] = {{"[EMERGENCY] ","[ALERT] ","[CRITICAL] ","[ERROR] ","[WARNING] ","[NOTICE] ","[PASS] ","[INFO] ","[DEBUG] ","[INVALID LOG LEVEL] "},{"[_] ", "[_] ", "[!] ", "[*] ", "[-] ", "[#] ", "[>] ", "[+] ", "[$] ", "[~] " },{"[_] ", "[_] ", "[!] ", "[*] ", "[-] ", "[#] ", "[>] ", "[+] ", "[$] ", "[~] " },{"[_] ", "[_] ", "[!] ", "[*] ", "[-] ", "[#] ", "[>] ", "[+] ", "[$] ", "[~] " },{"[_] ", "[_] ", "[!] ", "[*] ", "[-] ", "[#] ", "[>] ", "[+] ", "[$] ", "[~] " },{"[_] ", "[_] ", "[!] ", "[*] ", "[-] ", "[#] ", "[>] ", "[+] ", "[$] ", "[~] " },{ "", "", "", "", "", "", "", "", "", "" },{ "[⛔]","[⛔]","[⛔]", "[✖ ]", "[⚠ ]", "[ℹ ]", "[✔ ]", "[ℹ ]", "[☁ ]", "[~~]" }}; 1052 1053 // 1054 static const char *LOG_DATE_FORMAT[LOG_INVALID_MODE] = { "%c\n", "CONCISE HAS NO DATE", "%y-%m-%d %H:%M:%S", "FUNC", "PROG", "%y-%m-%d %H:%M:%S", "VOID"}; 1055 1056 /** 1057 * get current log symbols 1058 */ 1059 int getLogSymbols(void) { 1060 1061 return(logSymbols); 1062 } 1063 1064 /** 1065 * set log symbols 1066 * 1067 * LOG_VERBOSE for words 1068 * LOG_UTF8 for emojis 1069 * LOG_VOID for no symbols 1070 * LOG_INVALID_MODE (reset log symbols) for default log mode symbols 1071 * anything else (LOG_CONCISE,...) for symbols (!*+->~) 1072 * 1073 * default is default log mode symbols 1074 */ 1075 void setLogSymbols(int mode) { 1076 1077 if (mode <= LOG_INVALID_MODE) { 1078 logSymbols = mode; 1079 } 1080 else { 1081 logSymbols = LOG_INVALID_MODE; 1082 } 1083 } 1084 1085 /** 1086 * get current max log level 1087 * 1088 * default is LOG_INVALID, to show all log levels 1089 * -1 hides all logs 1090 */ 1091 int getMaxLogLevel(void) { 1092 1093 return(logMaxLevel); 1094 } 1095 1096 /** 1097 * set max log level 1098 * logs above logMaxLevel are skipped 1099 * 1100 * default is LOG_INVALID, to show all log levels 1101 * LOG_DISABLE hides all logs 1102 * 1103 * \param 1104 * logLevel from LOG_DISABLE to LOG_INVALID 1105 */ 1106 void setMaxLogLevel(int logLevel) { 1107 1108 logMaxLevel = logLevel; 1109 } 1110 1111 /** 1112 * set log file 1113 * the logs are appended to all log files set with this function 1114 * 1115 * there is a maximum of 15 log files 1116 * 1117 * \return 1118 * log file handle 1119 * NULL when filename is NULL or more than 15 log files are set 1120 */ 1121 FILE *setLogFile(char *filename) { 1122 1123 if (!filename) { 1124 return(NULL); 1125 } 1126 1127 if (_current_log_file >= 16) { 1128 // we only support 16 different files 1129 return(NULL); 1130 } 1131 1132 _logging_files[_current_log_file] = fopen(filename, "a+"); 1133 if (!_logging_files[_current_log_file]) { 1134 pFuncError 1135 shEPrintfS("The path was: \"%s\"\n", filename); 1136 return(NULL); 1137 } 1138 return(_logging_files[_current_log_file++]); 1139 } 1140 1141 /** 1142 * close logfiles opened with setLogFile 1143 */ 1144 void closeLogFiles(void) { 1145 1146 rangeFrom(i, 1, _current_log_file) { 1147 fclose(_logging_files[i]); 1148 _logging_files[i] = NULL; 1149 } 1150 1151 _current_log_file = 1;; 1152 } 1153 1154 /** 1155 * get current log mode (verbose, concise) 1156 * 1157 * \return 1158 * current mode LOG_VERBOSE, LOG_CONCISE, ... 1159 */ 1160 int getLogMode(void) { 1161 1162 return(_log_current_mode); 1163 } 1164 1165 /** 1166 * set log mode LOG_VERBOSE, LOG_CONCISE, .. 1167 * 1168 * the default log mode is LOG_DATE 1169 */ 1170 void setLogMode(int mode) { 1171 1172 if (mode < 0 || mode >= LOG_INVALID_MODE) { 1173 shPrintError 1174 shEPrintfS("The available log modes are: LOG_VERBOSE, LOG_CONCISE, LOG_DATE, LOG_FUNC, LOG_PROG, LOG_PROGNDATE, LOG_PROGNFUNC, LOG_VOID and LOG_UTF8\n"); 1175 } 1176 else { 1177 _log_current_mode = mode; 1178 } 1179 } 1180 1181 /** 1182 * get current log long/short path value 1183 * 1184 * The default value is TRUE (short paths) 1185 * TRUE shows short file paths in logs 1186 * FALSE shows long file paths in logs 1187 * 1188 * \return 1189 * current long/short file path configuration value for VERBOSE mode 1190 */ 1191 bool getLogShortPath(void) { 1192 1193 return(_log_verbose_short_path); 1194 } 1195 1196 /** 1197 * set log long/short file path value for VERBOSE mode 1198 * 1199 * TRUE shows short file paths in logs 1200 * FALSE shows long file paths in logs 1201 * 1202 * the default long/short path value is TRUE 1203 */ 1204 void setLogShortPath(bool shortPath) { 1205 1206 _log_verbose_short_path = shortPath; 1207 } 1208 1209 /** 1210 * get stdout state, when TRUE (default) all logs are printed to stdout 1211 */ 1212 bool getLogStdout(void) { 1213 1214 return(_logToStdout); 1215 } 1216 1217 /** 1218 * enable/disable printing logs to stdout 1219 * 1220 * TRUE: print logs to stdout 1221 * FALSE: print logs to files only 1222 */ 1223 void setLogStdout(bool state) { 1224 1225 _logToStdout = state; 1226 } 1227 1228 /** 1229 * log to a file named progName.log 1230 * Use closeLogFiles when finished logging 1231 */ 1232 bool openProgLogFile(void) { 1233 1234 if (!progName && !defaultProgName) { 1235 logME(libsheepyErrorMask, "Program name is not set, call initLibsheepy or set prog name with setProgName"); 1236 return(false); 1237 } 1238 1239 char *s = formatS("%s.log", progName ? progName : defaultProgName);; 1240 1241 if (!setLogFile(s)) { 1242 logME(libsheepyErrorMask, "Couldn't open log file: %s", s); 1243 free(s); 1244 return(false); 1245 } 1246 1247 free(s); 1248 return(true); 1249 } 1250 1251 /** 1252 * enable/disable ansi color codes in logs 1253 * 1254 * TRUE: print colors 1255 * FALSE: strip colors 1256 */ 1257 void keepAnsiColorsInLog(bool state) { 1258 1259 keepAnsiColors = state; 1260 } 1261 1262 /** 1263 * print logging levels 1264 * logs messages to all log file 1265 * 1266 * in LOG_VERBOSE mode, logs loglevel, filename, function name, time, line number and msg 1267 * in LOG_CONCISE mode, logs loglevel and msg 1268 * 1269 * the maximum message length is 10240 1270 * 1271 */ 1272 #define MAX_MSG_LEN 10240 1273 void _pLog(int loglevel, const char *file, const char *func, int line, const char *msg, ...) { 1274 _logging_files[0] = stdout;; 1275 va_list args; 1276 char buffer[lenS(msg) + MAX_MSG_LEN]; 1277 1278 if (_current_log_file == 1 && !_logToStdout) { 1279 // log to stdout is disabled and there are no log files 1280 return; 1281 } 1282 1283 if (loglevel > logMaxLevel) { 1284 // skip log above logMaxLevel 1285 return; 1286 } 1287 1288 va_start(args, msg); 1289 1290 // append the varargs to the buffer we want to print. 1291 // this is so that our pipe chars don't get lost later. 1292 // also, make sure we don't get an invalid loglevel. 1293 if (!msg) { 1294 buffer[0] = 0; 1295 } 1296 else { 1297 vsnprintf(buffer, strlen(msg)+MAX_MSG_LEN, msg, args); 1298 } 1299 va_end(args); 1300 1301 if (loglevel < 0 || loglevel >= LOG_INVALID) { 1302 loglevel = LOG_INVALID; 1303 } 1304 if (_log_current_mode < 0 || _log_current_mode >= LOG_INVALID_MODE) { 1305 _log_current_mode = LOG_VERBOSE; 1306 } 1307 1308 char clock[100]; 1309 1310 if (_log_current_mode == LOG_VERBOSE || _log_current_mode == LOG_DATE || _log_current_mode == LOG_PROGNDATE) { 1311 time_t _clk = time(NULL);; 1312 struct tm *_pClk = localtime(&_clk);; 1313 strftime(clock, 100, LOG_DATE_FORMAT[_log_current_mode], _pClk); 1314 } 1315 1316 // set console color for printing the tag 1317 if (_logToStdout && keepAnsiColors && _log_current_mode != LOG_VOID) { 1318 switch (loglevel) { 1319 case LOG_EMERGENCY: 1320 printf(BLD RED); 1321 break; 1322 case LOG_ALERT: 1323 printf(BLD RED); 1324 break; 1325 case LOG_CRITICAL: 1326 printf(BLD RED); 1327 break; 1328 case LOG_ERROR: 1329 printf(RED); 1330 break; 1331 case LOG_WARNING: 1332 printf(YLW); 1333 break; 1334 case LOG_NOTICE: 1335 printf(BLU); 1336 break; 1337 case LOG_PASS: 1338 printf(BLD GRN); 1339 break; 1340 case LOG_INFO: 1341 printf(BLU); 1342 break; 1343 case LOG_DEBUG: 1344 printf(BLD CYN); 1345 break; 1346 case LOG_INVALID: 1347 default: 1348 printf(MGT); 1349 break; 1350 } 1351 } 1352 1353 if (!keepAnsiColors) { 1354 if (!bStripColorsS(buffer)) { 1355 return; 1356 } 1357 } 1358 1359 // long or short file path in VERBOSE mode 1360 if ((_log_current_mode == LOG_VERBOSE) && _log_verbose_short_path) { 1361 const char *slashP[3] = {NULL, NULL, NULL}; 1362 indexer idx; 1363 indexerInit(idx, 3); 1364 u16 count = 0; 1365 const char *slash = file; 1366 1367 while (slash) { 1368 slash = strchr(slash, '/'); 1369 if (!slash) { 1370 break; 1371 } 1372 else { 1373 slash++; 1374 } 1375 if (indexerIsFull(idx)) { 1376 indexerDequeue(idx); 1377 } 1378 indexerPush(idx); 1379 slashP[indexerLast(idx)] = slash; 1380 count++; 1381 } 1382 1383 if (count > 2) { 1384 // path has more than 2 slashes a/b/c.c 1385 file = slashP[indexerFirst(idx)]; 1386 //puts(nS(slashP[indexerFirst(idx)])); 1387 //puts(nS(slashP[indexerRef(idx,1)])); 1388 //puts(nS(slashP[indexerLast(idx)])); 1389 } 1390 } 1391 1392 int firstLogFile = _logToStdout ? 0 : 1; 1393 int i; 1394 if (_log_current_mode != LOG_VOID) { 1395 int tagSymbols = logSymbols != LOG_INVALID_MODE ? logSymbols : _log_current_mode; 1396 1397 // print the log tag 1398 for (i=firstLogFile; i < _current_log_file; i++) { 1399 fprintf(_logging_files[i], "%s", log_tags[tagSymbols][loglevel]); 1400 } 1401 1402 if (_logToStdout) { 1403 printf(RST); 1404 } 1405 } 1406 1407 /* logVar(_log_current_mode, "d"); */ 1408 /* puts(log_tags[_log_current_mode][loglevel]); */ 1409 1410 char *linePrefix = ""; 1411 switch(_log_current_mode) { 1412 case LOG_VERBOSE: 1413 for (i=firstLogFile; i < _current_log_file; i++) { 1414 fprintf(_logging_files[i], "%s %s() (%s:%d) at %s |\t", progName ? progName : defaultProgName, func, file, line, clock); 1415 linePrefix = " |\t";; 1416 } 1417 break; 1418 case LOG_FUNC: 1419 for (i=firstLogFile; i < _current_log_file; i++) { 1420 fprintf(_logging_files[i], "%s %d: ", func, line); 1421 } 1422 break; 1423 case LOG_PROG: 1424 for (i=firstLogFile; i < _current_log_file; i++) { 1425 fprintf(_logging_files[i], "%s: ", progName ? progName : defaultProgName); 1426 } 1427 break; 1428 case LOG_PROGNDATE: 1429 for (i=firstLogFile; i < _current_log_file; i++) { 1430 fprintf(_logging_files[i], "%s %s: ", progName ? progName : defaultProgName, clock); 1431 } 1432 break; 1433 case LOG_DATE: 1434 for (i=firstLogFile; i < _current_log_file; i++) { 1435 fprintf(_logging_files[i], "%s ", clock); 1436 } 1437 break; 1438 case LOG_PROGNFUNC: 1439 for (i=firstLogFile; i < _current_log_file; i++) { 1440 fprintf(_logging_files[i], "%s %s %d: ", progName ? progName : defaultProgName, func, line); 1441 } 1442 break; 1443 default:; 1444 // don't print anything 1445 } 1446 1447 1448 // print the first line 1449 if (buffer[0] == 0) { 1450 // empty or NULL msg, print empty line 1451 for (i=firstLogFile; i < _current_log_file; i++) { 1452 fprintf(_logging_files[i], "\n"); 1453 } 1454 } 1455 else { 1456 char *toLog = strtok(buffer, "\n"); 1457 for (i=firstLogFile; i < _current_log_file; i++) { 1458 fprintf(_logging_files[i], "%s\n", toLog); 1459 } 1460 1461 // for these next lines, add a pipe and tab once. 1462 toLog = strtok(NULL, "\n"); 1463 while (toLog) { 1464 for (i=firstLogFile; i < _current_log_file; i++) { 1465 fprintf(_logging_files[i], "%s%s\n", linePrefix, toLog); 1466 } 1467 toLog = strtok(NULL, "\n"); 1468 } 1469 } 1470 1471 for(i = 1; i <_current_log_file; i++) {; 1472 // write log files immediately 1473 fflush(_logging_files[i]); 1474 } 1475 } 1476 1477 #if (!(__APPLE__ || __FreeBSD__ || __TERMUX__ || __OpenBSD__ || __DragonFly__ || MUSL_LIBC || __sun__ || __HAIKU__)) 1478 /** 1479 * printf RGB Colors 1480 * 1481 * %k and %K type specifier to GNU printf for RBG colors 1482 * 1483 * - %k foreground hex color 1484 * - %K background hex color 1485 * 1486 * Example: 1487 * printf("%k%KRGB color" RST, 0x99EEFF, 0x666666); 1488 */ 1489 1490 1491 #define TERMRGB "\x1b[38;2;" 1492 #define BGTERMRGB "\x1b[48;2;" 1493 1494 /** 1495 * %k printf type specifier, RGB foreground, uint32_t 1496 * 0x00RRGGBB 1497 */ 1498 int print_k(FILE *stream, const struct printf_info *info, const void *const *args) { 1499 u32 rgbColor; 1500 char b[20]; 1501 int len; 1502 1503 rgbColor = *((const u32*) args[0]); 1504 snprintf(b, sizeof(b), TERMRGB "%u;%u;%um", rgbColor>>16, (rgbColor&0xFF00)>>8, rgbColor&0xFF); 1505 1506 /* Pad to the minimum field width and print to the stream. */ 1507 //len = fprintf(stream, "%*s", (info->left ? -info->width : info->width), b) 1508 sheepyRGBFP; 1509 return(len); 1510 } 1511 1512 /** 1513 * %K printf type specifier, RGB background, uint32_t 1514 * 0x00RRGGBB 1515 */ 1516 int print_K(FILE *stream, const struct printf_info *info, const void *const *args) { 1517 u32 rgbColor; 1518 char b[20]; 1519 int len; 1520 1521 rgbColor = *((const u32*) args[0]); 1522 snprintf(b, sizeof(b), BGTERMRGB "%u;%u;%um", rgbColor>>16, (rgbColor&0xFF00)>>8, rgbColor&0xFF); 1523 1524 /* Pad to the minimum field width and print to the stream. */ 1525 //len = fprintf(stream, "%*s", (info->left ? -info->width : info->width), b) 1526 sheepyRGBFP; 1527 return(len); 1528 } 1529 1530 /** 1531 * procress printf argument 1532 */ 1533 int print_k_arginfo(const struct printf_info *info UNUSED, size_t n, int *argtypes, int* size) { 1534 1535 if (n > 0) { 1536 argtypes[0] = PA_POINTER; 1537 size[0] = sizeof(u32); 1538 } 1539 return(1); 1540 } 1541 1542 /** 1543 * %b printf type specifier, print bool as FALSE/TRUE 1544 */ 1545 int print_b(FILE *stream, const struct printf_info *info, const void *const *args) { 1546 bool value; 1547 int len; 1548 1549 value = *((const bool*) args[0]); 1550 1551 /* Pad to the minimum field width and print to the stream. */ 1552 //len = fprintf(stream, "%*s", (info->left ? -info->width : info->width), boolS(value)) 1553 sheepyBOOLFP; 1554 return(len); 1555 } 1556 1557 /** 1558 * procress printf argument 1559 */ 1560 int print_b_arginfo(const struct printf_info *info UNUSED, size_t n, int *argtypes, int* size) { 1561 1562 if (n > 0) { 1563 argtypes[0] = PA_CHAR; 1564 size[0] = sizeof(bool); 1565 } 1566 return(1); 1567 } 1568 1569 #endif 1570 // #if __APPLE__ || __FreeBSD__ || __TERMUX___ || __OpenBSD__ || __DragonFly__ || MUSL_LIBC || __sun__ || __HAIKU__ 1571 1572 1573 static const char sheepyBuild[] = "/.sheepy/build"; 1574 1575 /** 1576 * initialize libsheepy (optional, for debug) 1577 * 1578 * initialize segfault handler for crash debug 1579 * the segfault handler prints the line and file where the segfault occured 1580 * 1581 * initialize the fibers 1582 * initialize libsheepyObject 1583 */ 1584 #if ((__APPLE__ || __FreeBSD__ || __TERMUX__ || __OpenBSD__ || __DragonFly__ || MUSL_LIBC || __sun__ || __HAIKU__)) 1585 void initLibsheepyF(const char *progPath, initLibsheepyObjectP initF) { 1586 1587 // no buffering if output is sent to file, this makes everything 1588 // a bit slower, but it is possible to see where the code fails 1589 if (!isatty(1)) { 1590 setbuf(stdout, NULL); 1591 } 1592 1593 libSheepyArg0 = progPath; 1594 libSheepyProgPath = findS(progPath, sheepyBuild);; 1595 if (!libSheepyProgPath) { 1596 libSheepyProgPath = progPath; 1597 } 1598 else { 1599 // when progPath had sheepyBuild: progPath = /home/USER/.sheepy/build/home/USER/git/sw/PRG/PRG 1600 // keep only the end of the path which is the source path 1601 // libSheepyProgPath = /home/USER/git/sw/PRG/PRG 1602 libSheepyProgPath += sizeof(sheepyBuild)-1; 1603 } 1604 1605 // set defaultProgName as basename progPath 1606 // defaultProgName is the string after the last / 1607 rangeDown(i, (ssize_t)strlen(libSheepyProgPath)) { 1608 if (libSheepyProgPath[i] == '/') { 1609 defaultProgName = libSheepyProgPath + i + 1; 1610 break; 1611 } 1612 } 1613 if (!defaultProgName) { 1614 defaultProgName = libSheepyProgPath; 1615 } 1616 1617 // segfault signal 1618 struct sigaction sa = init0Var; 1619 sigemptyset(&sa.sa_mask); 1620 sa.sa_sigaction = segfault_sigaction;; 1621 sa.sa_flags = SA_SIGINFO;; 1622 sigaction(SIGSEGV, &sa, &default_sa); 1623 1624 // fibers 1625 staticArrayInit(fibers.L); 1626 staticArrayInit(fibers.startL); 1627 1628 // free internal buffers 1629 atexit(finalizeLibsheepyCharAtExit); 1630 1631 1632 // register %k %K type specifiers in printf for RGB colors 1633 // not available in macos - register_printf_specifier('k', print_k, print_k_arginfo); 1634 // not available in macos - register_printf_specifier('K', print_K, print_k_arginfo); 1635 // register %b type specifiers in printf for bool as TRUE/FALSE 1636 // not available in macos - register_printf_specifier('b', print_b, print_b_arginfo); 1637 1638 if (initF) { 1639 initF(); 1640 } 1641 } 1642 1643 #else // #if ((__APPLE__ || __FreeBSD__ || __TERMUX__ || __OpenBSD__ || __DragonFly__ || MUSL_LIBC || __sun__ || __HAIKU__)) 1644 void initLibsheepyF(const char *progPath, initLibsheepyObjectP initF) { 1645 1646 // no buffering if output is sent to file, this makes everything 1647 // a bit slower, but it is possible to see where the code fails 1648 if (!isatty(STDOUT_FILENO)) { 1649 setbuf(stdout, NULL); 1650 } 1651 1652 libSheepyArg0 = progPath; 1653 libSheepyProgPath = findS(progPath, sheepyBuild);; 1654 if (!libSheepyProgPath) { 1655 libSheepyProgPath = progPath; 1656 } 1657 else { 1658 // when progPath had sheepyBuild: progPath = /home/USER/.sheepy/build/home/USER/git/sw/PRG/PRG 1659 // keep only the end of the path which is the source path 1660 // libSheepyProgPath = /home/USER/git/sw/PRG/PRG 1661 libSheepyProgPath += sizeof(sheepyBuild)-1; 1662 } 1663 1664 // set defaultProgName as basename progPath 1665 // defaultProgName is the string after the last / 1666 rangeDown(i, (ssize_t)strlen(libSheepyProgPath)) { 1667 if (libSheepyProgPath[i] == '/') { 1668 defaultProgName = (libSheepyProgPath + i + 1); 1669 break; 1670 } 1671 } 1672 if (!defaultProgName) { 1673 defaultProgName = libSheepyProgPath; 1674 } 1675 1676 // segfault signal 1677 struct sigaction sa = init0Var; 1678 sigemptyset(&sa.sa_mask); 1679 sa.sa_sigaction = segfault_sigaction;; 1680 sa.sa_flags = SA_SIGINFO;; 1681 sigaction(SIGSEGV, &sa, &default_sa); 1682 1683 // fibers 1684 staticArrayInit(fibers.L); 1685 staticArrayInit(fibers.startL); 1686 1687 // free insternal buffers 1688 atexit(finalizeLibsheepyCharAtExit); 1689 1690 1691 // register %k %K type specifiers in printf for RGB colors 1692 register_printf_specifier('k', print_k, print_k_arginfo); { 1693 register_printf_specifier('K', print_K, print_k_arginfo); { 1694 // register %b type specifiers in printf for bool as TRUE/FALSE 1695 register_printf_specifier('b', print_b, print_b_arginfo); { 1696 1697 if (initF) { 1698 initF(); 1699 } 1700 } 1701 } 1702 } 1703 } 1704 1705 #endif 1706 // #if (__APPLE__ || __FreeBSD__ || __TERMUX__ || __OpenBSD__ || __DragonFly__ || MUSL_LIBC || __sun__ || __HAIKU__) 1707 1708 /** 1709 * finalize libsheepy char at exit 1710 * 1711 * free internal buffers in this file: 1712 * 1713 * realprogpath 1714 * urandomFp software random file 1715 * 1716 */ 1717 void finalizeLibsheepyCharAtExit(void) { 1718 1719 free(progName); 1720 freeRealProgPath(); 1721 randomUrandomClose(); 1722 } 1723 1724 /** 1725 * get current stack limit 1726 * 1727 * \return 1728 * current stack limit 1729 * -1 unlimited 1730 * 0 when error 1731 */ 1732 int64_t getStackLimit(void) { 1733 struct rlimit limit; 1734 1735 if (getrlimit(RLIMIT_STACK, &limit) == -1) { 1736 pFuncError 1737 return(0); 1738 } 1739 return(limit.rlim_cur != RLIM_INFINITY ? (i64) limit.rlim_cur : -1);; 1740 } 1741 1742 /** 1743 * set stack limit 1744 * 1745 * \param 1746 * stackSize stack size in bytes, set -1 for unlimited size 1747 * \return 1748 * !0 when ok 1749 * 0 when it failed 1750 */ 1751 int setStackLimit(int64_t stackSize) { 1752 struct rlimit limit; 1753 1754 if (getrlimit(RLIMIT_STACK, &limit) == -1) { 1755 pFuncError 1756 return(0); 1757 } 1758 1759 if (stackSize == -1) { 1760 limit.rlim_cur = RLIM_INFINITY; 1761 } 1762 else { 1763 limit.rlim_cur = (u64)stackSize; 1764 } 1765 1766 if (setrlimit(RLIMIT_STACK, &limit) == -1) { 1767 pFuncError 1768 return(0); 1769 } 1770 1771 return(1); 1772 } 1773 1774 /** 1775 * enable core dump 1776 * 1777 * change core dump size to infinity to enable core dump. 1778 * After the program receives a signal generating core dump, 1779 * a core file is written to disk and can be open with gdb 1780 * 1781 * \return 1782 * !0 when ok 1783 * 0 when it failed 1784 */ 1785 int enableCoreDump(void) { 1786 1787 // enable core dump 1788 struct rlimit limit; 1789 if (getrlimit(RLIMIT_CORE, &limit) == -1) { 1790 pFuncError 1791 return(0); 1792 } 1793 1794 // dump the complete process memory 1795 limit.rlim_cur = RLIM_INFINITY; 1796 if (setrlimit(RLIMIT_CORE, &limit) == -1) { 1797 pFuncError 1798 return(0); 1799 } 1800 1801 return(1); 1802 } 1803 1804 1805 /** 1806 * get program name 1807 * 1808 * this program name showing in the logs 1809 */ 1810 const char *getProgName(void) { 1811 1812 return(progName ? progName : defaultProgName); 1813 } 1814 1815 /** 1816 * set program name 1817 * 1818 * this program name showing in the logs 1819 */ 1820 bool setProgName(const char *name) { 1821 1822 // sanity 1823 if (!name) { 1824 return(false); 1825 } 1826 1827 free(progName); 1828 progName = strdup(name); 1829 1830 return(true); 1831 } 1832 1833 /** 1834 * set default program name 1835 * 1836 * this program name showing in the logs 1837 */ 1838 void setDefaultProgName(void) { 1839 1840 freen(progName); 1841 } 1842 1843 /** 1844 * free ProgName 1845 * if set with setProgName 1846 */ 1847 void freeProgName(void) { 1848 1849 freen(progName); 1850 } 1851 1852 /** 1853 * get program path 1854 * When initLibsheepy is called before this function, it returns the given program path. 1855 * When initLibsheepy has not been called before this function, it returns the real program path. 1856 * 1857 * \return 1858 * program path or real program path (do not free this pointer) 1859 */ 1860 const char *getProgPath(void) { 1861 1862 if (libSheepyProgPath) { 1863 return(libSheepyProgPath); 1864 } 1865 else { 1866 return(getRealProgPath()); 1867 } 1868 } 1869 1870 /** 1871 * get real program path 1872 * The first call allocates libSheepyRealProgPath, it is freed with freeRealProgPath 1873 * 1874 * \return 1875 * real program path (do not free this pointer) 1876 */ 1877 const char *getRealProgPath(void) { 1878 1879 if (!libSheepyRealProgPath) { 1880 char realProgPath[8192]; 1881 realpath("/proc/self/exe", realProgPath); 1882 libSheepyRealProgPath = strdup(realProgPath); 1883 } 1884 return(libSheepyRealProgPath); 1885 } 1886 1887 /** 1888 * free real program path 1889 * finalizeLibsheepy calls this function 1890 */ 1891 void freeRealProgPath(void) { 1892 1893 free(libSheepyRealProgPath); 1894 libSheepyRealProgPath = NULL; 1895 } 1896 1897 /** 1898 * run system command and free command buffer 1899 * a message is printed when an error occurs 1900 * 1901 * this function is called from the systemNFree macro 1902 * 1903 * \param 1904 * command command to run in the shell 1905 * \return 1906 * 0 success 1907 * command error code 1908 */ 1909 int systemNFreeF(char *command, int line, const char *thisFunc, const char *thisFileName) { 1910 int r; 1911 1912 r = system(command); 1913 if (r) { 1914 logME(libsheepyErrorMask, "\nSystem Error at %d, %s, %s. The command was: \"%s\"\n", line, thisFunc, thisFileName, command); 1915 } 1916 free(command); 1917 return(r); 1918 } 1919 1920 /** 1921 * get modification time for path 1922 * 1923 * \param 1924 * path 1925 * \return 1926 * modification time 1927 * 0 when an error occured 1928 */ 1929 time_t getModificationTime(const char *path) { 1930 1931 if (!path) { 1932 return(0); 1933 } 1934 1935 struct stat fst; 1936 if (stat(path, &fst) == -1) { 1937 pFuncError 1938 shEPrintfS("The path was: \"%s\"\n", path); 1939 return(0); 1940 } 1941 return(fst.st_mtime); 1942 } 1943 1944 /** 1945 * set modification time for path 1946 * 1947 * \param 1948 * path 1949 * \param 1950 * mtime (for example, from the getModificationTime function) 1951 * \return 1952 * 1 ok 1953 * 0 when an error occured 1954 */ 1955 int setModificationTime(const char *path, time_t mtime) { 1956 1957 if (!path) { 1958 return(0); 1959 } 1960 1961 struct timeval times[2]; 1962 times[0].tv_usec = 0; 1963 times[0].tv_sec = mtime; 1964 times[1] = times[0]; 1965 if (utimes(path, times) == -1) { 1966 pFuncError 1967 shEPrintfS("The path was: \"%s\"\n", path); 1968 return(0); 1969 } 1970 return(1); 1971 } 1972 1973 /** 1974 * is path readable 1975 * 1976 * \return 1977 * true when path is readable 1978 */ 1979 bool isReadable(const char *path) { 1980 1981 if (!path) { 1982 return(false); 1983 } 1984 1985 if (access(path, R_OK) == -1) { 1986 return(false); 1987 } 1988 1989 return(true); 1990 } 1991 1992 1993 /** 1994 * is path writable 1995 * 1996 * \return 1997 * true when path is writable 1998 */ 1999 bool isWritable(const char *path) { 2000 2001 if (!path) { 2002 return(false); 2003 } 2004 2005 if (access(path, W_OK) == -1) { 2006 return(false); 2007 } 2008 2009 return(true); 2010 } 2011 2012 2013 /** 2014 * is path executable 2015 * 2016 * \return 2017 * true when path is executable 2018 */ 2019 bool isExecutable(const char *path) { 2020 2021 if (!path) { 2022 return(false); 2023 } 2024 2025 if (access(path, X_OK) == -1) { 2026 return(false); 2027 } 2028 2029 return(true); 2030 } 2031 2032 2033 /** 2034 * compare modification times for path1 and path2 2035 * 2036 * \param 2037 * path1 2038 * \param 2039 * path2 2040 * \return 2041 * true when mtime is equal for path1 and path2 2042 * false when mtime is different for path1 and path2 or when there is an error 2043 */ 2044 bool equalModificationTimes(const char *path1, const char *path2) { 2045 2046 if (!path1 || !path2) { 2047 return(false); 2048 } 2049 2050 time_t t1 = getModificationTime(path1); { 2051 time_t t2 = getModificationTime(path2); { 2052 2053 if (!t1 || !t2) { 2054 return(false); 2055 } 2056 return(t1 == t2);; 2057 } 2058 } 2059 } 2060 2061 /** 2062 * get current unix time in seconds 2063 * 2064 * time_t is either int32_t or int64_t 2065 */ 2066 time_t getCurrentUnixTime(void) { 2067 2068 return(time(NULL)); 2069 } 2070 2071 /** 2072 * convert date string to unix time 2073 * 2074 * \param 2075 * date string 2076 * \param 2077 * format for strptime 2078 * \return 2079 * time 2080 * -1 error 2081 * 2082 */ 2083 time_t strToUnixTime(const char *date, const char *format) { 2084 struct tm tm = init0Var;; 2085 time_t r; 2086 2087 // sanity checks 2088 if (!date || !format) { 2089 return(-1); 2090 } 2091 2092 if ((strptime(date, format, &tm))) { 2093 r = mktime(&tm); 2094 } 2095 else { 2096 shPrintError; 2097 shEPrintfS("strptime failed.\nThe date string is: \"%s\"\nThe format string is: \"%s\"\n", date, format); 2098 return(-1); 2099 } 2100 return(r); 2101 } 2102 2103 /** 2104 * time To String 2105 * convert unix time to string 2106 * (ctime is not used here because it adds \n at the end of the string) 2107 * 2108 * \param 2109 * unix time to convert 2110 * \return 2111 * string representing the unix time in ctime format (Wed Dec 12 11:44:08 2018), you must free the pointer 2112 */ 2113 char *timeToS(const time_t t) { 2114 struct tm lt; 2115 char timeBuf[80]; 2116 2117 localtime_r(&t, <); 2118 strftime(timeBuf, sizeof(timeBuf), "%c", <); 2119 return(strdup(timeBuf)); 2120 } 2121 2122 char *bTimeToS(char *dst, const time_t t) { 2123 struct tm lt; 2124 2125 localtime_r(&t, <); 2126 strftime(dst, 80, "%c", <); 2127 return(dst); 2128 } 2129 2130 char *bLTimeToS(char *dst, size_t dstSize, const time_t t) { 2131 struct tm lt; 2132 2133 localtime_r(&t, <); 2134 strftime(dst, dstSize, "%c", <); 2135 return(dst); 2136 } 2137 2138 /** 2139 * time To Year-Month-Day Hour:Minute:Second String 2140 * convert unix time to string 2141 * 2142 * \param 2143 * unix time to convert 2144 * \return 2145 * string representing the unix time, you must free the pointer 2146 */ 2147 char *timeToYMDS(const time_t t) { 2148 struct tm lt; 2149 char timeBuf[80]; 2150 2151 localtime_r(&t, <); 2152 strftime(timeBuf, sizeof(timeBuf), "%Y-%m-%d %H:%M:%S", <); 2153 return(strdup(timeBuf)); 2154 } 2155 2156 char *bTimeToYMDS(char *dst, const time_t t) { 2157 struct tm lt; 2158 2159 localtime_r(&t, <); 2160 strftime(dst, 80, "%Y-%m-%d %H:%M:%S", <); 2161 return(dst); 2162 } 2163 2164 char *bLTimeToYMDS(char *dst, size_t dstSize, const time_t t) { 2165 struct tm lt; 2166 2167 localtime_r(&t, <); 2168 strftime(dst, dstSize, "%Y-%m-%d %H:%M:%S", <); 2169 return(dst); 2170 } 2171 2172 /** 2173 * get current date in ctime format (Wed Dec 12 11:44:08 2018) 2174 * 2175 * you must free the pointer 2176 */ 2177 char *getCurrentDate(void) { 2178 char clock[80]; 2179 2180 time_t _clk = time(NULL);; 2181 struct tm *_pClk = localtime(&_clk);; 2182 strftime(clock, sizeof clock, "%c", _pClk); 2183 return(strdup(clock)); 2184 } 2185 2186 char *bGetCurrentDate(char *dst) { 2187 2188 if (!dst) { 2189 return(NULL); 2190 } 2191 time_t _clk = time(NULL);; 2192 struct tm *_pClk = localtime(&_clk);; 2193 strftime(dst, 80, "%c", _pClk); 2194 return(dst); 2195 } 2196 2197 char *bLGetCurrentDate(char *dst, size_t dstSize) { 2198 2199 if (!dst) { 2200 return(NULL); 2201 } 2202 time_t _clk = time(NULL);; 2203 struct tm *_pClk = localtime(&_clk);; 2204 strftime(dst, dstSize, "%c", _pClk); 2205 return(dst); 2206 } 2207 2208 /** 2209 * get current date in Y-m-d H:M:S format 2210 * 2211 * you must free the pointer 2212 */ 2213 char *getCurrentDateYMD(void) { 2214 char clock[80]; 2215 2216 time_t _clk = time(NULL);; 2217 struct tm *_pClk = localtime(&_clk);; 2218 strftime(clock, sizeof clock, "%Y-%m-%d %H:%M:%S", _pClk); 2219 return(strdup(clock)); 2220 } 2221 2222 char *bGetCurrentDateYMD(char *dst) { 2223 2224 if (!dst) { 2225 return(NULL); 2226 } 2227 time_t _clk = time(NULL);; 2228 struct tm *_pClk = localtime(&_clk);; 2229 strftime(dst, 80, "%Y-%m-%d %H:%M:%S", _pClk); 2230 return(dst); 2231 } 2232 2233 char *bLGetCurrentDateYMD(char *dst, size_t dstSize) { 2234 2235 if (!dst) { 2236 return(NULL); 2237 } 2238 time_t _clk = time(NULL);; 2239 struct tm *_pClk = localtime(&_clk);; 2240 strftime(dst, dstSize, "%Y-%m-%d %H:%M:%S", _pClk); 2241 return(dst); 2242 } 2243 2244 /** 2245 * sheepy dirname 2246 * 2247 * the returned string has to be freed 2248 * 2249 * \param 2250 * path 2251 * \return 2252 * path without basename (last item in the path, you must free the pointer) 2253 * "./" when path is blank or when there is only one item in the path 2254 * NULL when path is NULL 2255 */ 2256 char *shDirname(const char *path) { 2257 char *dir = NULL; 2258 2259 if (!path) { 2260 return(NULL); 2261 } 2262 2263 if (isBlankS(path)) { 2264 return(strdup("./")); 2265 } 2266 2267 #if (__APPLE__ || __OpenBSD__ || __DragonFly__) 2268 // pointer to internal buffer in dirname 2269 char *tmp = dirname((char*)path); 2270 dir = strdup(tmp); 2271 #elif (__TERMUX__) 2272 // dirname is not implemented 2273 dir = strdup(path); 2274 size_t len = strlen(path); 2275 rangeDown(i, len) { 2276 if (dir[i] == '/') { 2277 dir[i] = 0; 2278 break; 2279 } 2280 } 2281 #else 2282 dir = strdup(path); 2283 dirname(dir); 2284 #endif 2285 2286 if (!dir) { 2287 return(NULL); 2288 } 2289 2290 // is dirname empty? 2291 #if (__OpenBSD__) 2292 if ((dir[0]) and (dir[0] == '.' and dir[1] == 0)) { 2293 iAppendS(&dir, "/"); 2294 } 2295 #else 2296 if (strEq(dir, path)) { 2297 // set dir to pwd when dirname is empty 2298 free(dir); 2299 dir = strdup("./"); 2300 } 2301 #endif 2302 return(dir); 2303 } 2304 2305 /** 2306 * buffer dirname 2307 * 2308 * the buffer size (path) must be at least 3 chars 2309 * 2310 * \param 2311 * path 2312 * \return 2313 * path without basename (last item in the path) 2314 * "./" when path is blank or when there is only one item in the path 2315 * NULL when path is NULL 2316 */ 2317 char *bDirname(char *path) { 2318 2319 if (!path) { 2320 return(NULL); 2321 } 2322 2323 if (isBlankS(path) || !strchr(path, '/')) { 2324 // the path is blank or a filename 2325 // set dir to pwd when dirname is empty 2326 strcpy(path, "./"); 2327 return(path); 2328 } 2329 2330 #if (__OpenBSD__) 2331 // when there is a trailing / return path unchanged 2332 if (path[strlen(path)-1] == '/') { 2333 return(path); 2334 } 2335 // pointer to internal buffer in dirname 2336 char *tmp = dirname((char*)path); 2337 path[strlen(tmp)] = 0; 2338 #elif (__APPLE__ || __FreeBSD__ || __DragonFly__) 2339 // pointer to internal buffer in dirname 2340 char *tmp = dirname((char*)path); 2341 path[strlen(tmp)] = 0; 2342 #elif (__TERMUX__) 2343 // dirname is not implemented 2344 size_t len = strlen(path); 2345 rangeDown(i, len) { 2346 if (path[i] == '/') { 2347 path[i] = 0; 2348 break; 2349 } 2350 } 2351 #else 2352 dirname(path); 2353 #endif 2354 return(path); 2355 } 2356 2357 /** 2358 * buffer size dirname 2359 * 2360 * the buffer size (path) must be at least 3 chars 2361 * 2362 * \param 2363 * path 2364 * \param 2365 * pathSize path buffer size, the path strlen will be at most pathSize-1 2366 * \return 2367 * path without basename (last item in the path) 2368 * "./" when path is blank or when there is only one item in the path 2369 * NULL when path is NULL 2370 */ 2371 char *bLDirname(char *path, size_t pathSize) { 2372 2373 if (!path || !pathSize) { 2374 return(NULL); 2375 } 2376 2377 path[pathSize-1] = 0; 2378 return(bDirname(path)); 2379 } 2380 2381 #if (__OpenBSD__ || __HAIKU__) 2382 /** 2383 * expands ~/ ($HOME) or ~USER\n 2384 * duplicate and expand path. The original remains unchanged. 2385 * 2386 * \param 2387 * path string 2388 * \return 2389 * new string path or NULL (you must free the pointer) 2390 */ 2391 char *expandHome(const char* path) { 2392 2393 // sanity checks 2394 if (!path) { 2395 return(NULL); 2396 } 2397 2398 if (path[0] == 0) { 2399 // path is empty 2400 return(strdup(path)); 2401 } 2402 2403 // steps 2404 // determine path format 2405 // set user name, either current user or user name in path 2406 // add : at the end of username to match line in the /etc/passwd file 2407 // find home path in the passwd file 2408 2409 enum {noExpand, currentUser, otherUser}; 2410 2411 // determine path format 2412 int status = noExpand; 2413 if (path[0] == '~' and (path[1] == '/' or path[1] == 0)) { 2414 // path="~/..." 2415 status = currentUser; 2416 } 2417 elif (path[0] == '~' and path[1] != '/') { 2418 // path="~USER..." 2419 status = otherUser; 2420 } 2421 2422 // there is no tilde to expand, return path unchanged 2423 if (status == noExpand) { 2424 return(strdup(path)); 2425 } 2426 2427 // set user name, either current user or user name in path 2428 char user[33] = {0}; 2429 size_t pathStart = 0; 2430 2431 if (status == currentUser) { 2432 // use getlogin to find current username 2433 // sizeof(user)-1 to keep a char tp append final ':' 2434 if (getlogin_r(user, sizeof(user)-1)) { 2435 // error 2436 logME(libsheepyErrorMask, "getlogin for current user"); 2437 } { 2438 pathStart = 1; 2439 } 2440 } 2441 else { 2442 // username is in path 2443 // from index 1 (skip ~) to the first / 2444 char *slash = findS(path, "/"); 2445 if (!slash) { 2446 // no slash found, path is in the form: ~USER 2447 // copy string after ~ to the end of the string 2448 pErrorNULL(strLCpy(user, sizeof(user)-1, path+1)); 2449 pathStart = strlen(path); 2450 } 2451 else { 2452 // copy string after ~ to first slash 2453 pathStart = slash - path; 2454 pErrorNULL(strLNCat(user, sizeof(user)-1, path+1, pathStart-1)); 2455 } 2456 } 2457 2458 // add : at the end of username to match line in passwd 2459 size_t len = strlen(user); 2460 user[len] = ':'; 2461 user[len+1] = 0; 2462 2463 2464 // find home path in the passwd file 2465 char **pwd = readText("/etc/passwd"); 2466 2467 if (!pwd) { 2468 return(NULL); 2469 } 2470 2471 // result 2472 char *r = NULL; 2473 2474 forEachS(pwd, l) { 2475 if (startsWithS(l, user)) { 2476 // found the user 2477 char **l_l = split(l, ":"); 2478 // copy home path to result 2479 r = strdup(l_l[5]); 2480 listFreeS(l_l); 2481 break; 2482 } 2483 } 2484 2485 listFreeS(pwd); 2486 2487 if (!r) { 2488 // user not found in this system 2489 return(NULL); 2490 } 2491 2492 // append rest of the path to the result 2493 iAppendS(&r, path + pathStart); 2494 2495 return(r); 2496 } 2497 2498 #else 2499 /** 2500 * expands ~/ ($HOME) or ~USER\n 2501 * duplicate and expand path. The original remains unchanged. 2502 * 2503 * \param 2504 * path string 2505 * \return 2506 * new string path or NULL (you must free the pointer) 2507 */ 2508 char *expandHome(const char* path) { 2509 wordexp_t exp_result; 2510 char *p = NULL; 2511 char *r = NULL; 2512 2513 // sanity checks 2514 // duplicate path to be able to realloc (impossible when path is static) 2515 // expand ~/ or ~USER 2516 2517 // sanity checks 2518 if (!path) { 2519 return(NULL); 2520 } 2521 // duplicate path to be able to realloc (impossible when path is static) 2522 p = strdup(path); 2523 2524 if (path[0] == 0) { 2525 // path is empty 2526 // when path is empty, exp_result.we_wordv[0] is null and strlen segfaults 2527 return(p); 2528 } 2529 2530 #if (!__TERMUX__) 2531 // expand ~/ 2532 int status = wordexp(p, &exp_result, 0);; 2533 switch (status) { 2534 case WRDE_BADCHAR: 2535 free(p); 2536 shEPrintfS("expandHome error: unquoted invalid character\n"); 2537 shEPrintfS("The path was: \"%s\"\n", path); 2538 return(NULL); 2539 case WRDE_BADVAL: 2540 free(p); 2541 shEPrintfS("expandHome error: undefined shell variable\n"); 2542 shEPrintfS("The path was: \"%s\"\n", path); 2543 return(NULL); 2544 case WRDE_NOSPACE: 2545 free(p); 2546 shEPrintfS("expandHome error: out of memory\n"); 2547 shEPrintfS("The path was: \"%s\"\n", path); 2548 return(NULL); 2549 case WRDE_SYNTAX: 2550 free(p); 2551 shEPrintfS("expandHome error: syntax error\n"); 2552 shEPrintfS("The path was: \"%s\"\n", path); 2553 return(NULL); 2554 default: 2555 break; 2556 } 2557 r = REALLOC(p, strlen(exp_result.we_wordv[0])+1); 2558 if (!r) { 2559 // free p when realloc fails 2560 free(p); 2561 return(NULL); 2562 } 2563 strcpy(r, exp_result.we_wordv[0]); 2564 wordfree(&exp_result); 2565 #else 2566 iReplaceS(&p, "~", "/data/data/com.termux/files/home", 1); 2567 r = p; 2568 #endif 2569 return(r); 2570 } 2571 2572 #endif 2573 2574 #if (__OpenBSD__ || __HAIKU__) 2575 /** 2576 * expands ~/ ($HOME) or ~USER\n 2577 * 2578 * expand path. 2579 * 2580 * \param 2581 * path: string (this parameter is reallocated) 2582 * \return 2583 * path modified path\n 2584 * NULL error 2585 */ 2586 char *iExpandHome(char **path) { 2587 2588 // sanity checks 2589 if (!path || !*path) { 2590 return(NULL); 2591 } 2592 2593 2594 if ((*path)[0] == 0) { 2595 // path is empty 2596 return(*path); 2597 } 2598 2599 // steps 2600 // determine path format 2601 // set user name, either current user or user name in path 2602 // add : at the end of username to match line in the /etc/passwd file 2603 // find home path in the passwd file 2604 2605 enum {noExpand, currentUser, otherUser}; 2606 2607 // determine path format 2608 int status = noExpand; 2609 if ((*path)[0] == '~' and ((*path)[1] == '/' or (*path)[1] == 0)) { 2610 // path="~/..." 2611 status = currentUser; 2612 } 2613 elif ((*path)[0] == '~' and (*path)[1] != '/') { 2614 // path="~USER..." 2615 status = otherUser; 2616 } 2617 2618 // there is no tilde to expand, return path unchanged 2619 if (status == noExpand) { 2620 return(*path); 2621 } 2622 2623 // set user name, either current user or user name in path 2624 char user[33] = {0}; 2625 size_t pathStart = 0; 2626 2627 if (status == currentUser) { 2628 // use getlogin to find current username 2629 // sizeof(user)-1 to keep a char tp append final ':' 2630 if (getlogin_r(user, sizeof(user)-1)) { 2631 // error 2632 logME(libsheepyErrorMask, "getlogin for current user"); 2633 } { 2634 pathStart = 1; 2635 } 2636 } 2637 else { 2638 // username is in path 2639 // from index 1 (skip ~) to the first / 2640 char *slash = findS((*path), "/"); 2641 if (!slash) { 2642 // no slash found, path is in the form: ~USER 2643 // copy string after ~ to the end of the string 2644 pErrorNULL(strLCpy(user, sizeof(user)-1, (*path)+1)); 2645 pathStart = strlen(*path); 2646 } 2647 else { 2648 // copy string after ~ to first slash 2649 pathStart = slash - (*path); 2650 pErrorNULL(strLNCat(user, sizeof(user)-1, (*path)+1, pathStart-1)); 2651 } 2652 } 2653 2654 // add : at the end of username to match line in passwd 2655 size_t len = strlen(user); 2656 user[len] = ':'; 2657 user[len+1] = 0; 2658 2659 2660 // find home path in the passwd file 2661 char **pwd = readText("/etc/passwd"); 2662 2663 if (!pwd) { 2664 return(NULL); 2665 } 2666 2667 // result 2668 char *r = NULL; 2669 2670 forEachS(pwd, l) { 2671 if (startsWithS(l, user)) { 2672 // found the user 2673 char **l_l = split(l, ":"); 2674 // copy home path to result 2675 r = strdup(l_l[5]); 2676 listFreeS(l_l); 2677 break; 2678 } 2679 } 2680 2681 listFreeS(pwd); 2682 2683 if (!r) { 2684 // user not found in this system 2685 return(NULL); 2686 } 2687 2688 // append rest of the path to the result 2689 iAppendS(&r, (*path) + pathStart); 2690 2691 free(*path); 2692 *path = r; 2693 2694 return(r); 2695 } 2696 2697 #else 2698 /** 2699 * expands ~/ ($HOME) or ~USER\n 2700 * 2701 * duplicate and expand path. 2702 * 2703 * \param 2704 * path: string (this parameter is reallocated) 2705 * \return 2706 * path modified path\n 2707 * NULL error 2708 */ 2709 char *iExpandHome(char **path) { 2710 wordexp_t exp_result; 2711 2712 // sanity checks 2713 // duplicate path to be able to realloc (impossible when path is static) 2714 // expand ~/ or ~USER 2715 2716 // sanity checks 2717 if (!path || !*path) { 2718 return(NULL); 2719 } 2720 2721 if ((*path)[0] == 0) { 2722 // path is empty 2723 // when path is empty, exp_result.we_wordv[0] is null and strlen segfaults 2724 return(*path); 2725 } 2726 2727 #if (!__TERMUX__) 2728 // expand ~/ 2729 int status = wordexp(*path, &exp_result, 0);; 2730 switch (status) { 2731 case WRDE_BADCHAR: 2732 shEPrintfS("iExpandHome error: unquoted invalid character\n"); 2733 shEPrintfS("The path was: \"%s\"\n", *path); 2734 return(NULL); 2735 case WRDE_BADVAL: 2736 shEPrintfS("iExpandHome error: undefined shell variable\n"); 2737 shEPrintfS("The path was: \"%s\"\n", *path); 2738 return(NULL); 2739 case WRDE_NOSPACE: 2740 shEPrintfS("iExpandHome error: out of memory\n"); 2741 shEPrintfS("The path was: \"%s\"\n", *path); 2742 return(NULL); 2743 case WRDE_SYNTAX: 2744 shEPrintfS("iExpandHome error: syntax error\n"); 2745 shEPrintfS("The path was: \"%s\"\n", *path); 2746 return(NULL); 2747 default: 2748 break; 2749 } 2750 char *tmp = REALLOC(*path, strlen(exp_result.we_wordv[0])+1); 2751 if (!tmp) { 2752 // realloc failed 2753 return(NULL); 2754 } 2755 *path = tmp; 2756 strcpy(*path, exp_result.we_wordv[0]); 2757 wordfree(&exp_result); 2758 #else 2759 iReplaceS(path, "~", "/data/data/com.termux/files/home", 1); 2760 #endif 2761 return(*path); 2762 } 2763 #endif 2764 2765 #if (__OpenBSD__ || __HAIKU__) 2766 /** 2767 * buffer expands ~/ ($HOME) or ~USER\n 2768 * 2769 * expand path 2770 * 2771 * \param 2772 * path: string 2773 * \return 2774 * path modified path\n 2775 * NULL error 2776 */ 2777 char *bExpandHome(char *path) { 2778 2779 // sanity checks 2780 if (!path) { 2781 return(NULL); 2782 } 2783 2784 if (path[0] == 0) { 2785 // path is empty 2786 return(path); 2787 } 2788 2789 // steps 2790 // determine path format 2791 // set user name, either current user or user name in path 2792 // add : at the end of username to match line in the /etc/passwd file 2793 // find home path in the passwd file 2794 2795 enum {noExpand, currentUser, otherUser}; 2796 2797 // determine path format 2798 int status = noExpand; 2799 if (path[0] == '~' and (path[1] == '/' or path[1] == 0)) { 2800 // path="~/..." 2801 status = currentUser; 2802 } 2803 elif (path[0] == '~' and path[1] != '/') { 2804 // path="~USER..." 2805 status = otherUser; 2806 } 2807 2808 // there is no tilde to expand, return path unchanged 2809 if (status == noExpand) { 2810 return(path); 2811 } 2812 2813 // set user name, either current user or user name in path 2814 char user[33] = {0}; 2815 size_t pathStart = 0; 2816 2817 if (status == currentUser) { 2818 // use getlogin to find current username 2819 // sizeof(user)-1 to keep a char tp append final ':' 2820 if (getlogin_r(user, sizeof(user)-1)) { 2821 // error 2822 logME(libsheepyErrorMask, "getlogin for current user"); 2823 } { 2824 pathStart = 1; 2825 } 2826 } 2827 else { 2828 // username is in path 2829 // from index 1 (skip ~) to the first / 2830 char *slash = findS(path, "/"); 2831 if (!slash) { 2832 // no slash found, path is in the form: ~USER 2833 // copy string after ~ to the end of the string 2834 pErrorNULL(strLCpy(user, sizeof(user)-1, path+1)); 2835 pathStart = strlen(path); 2836 } 2837 else { 2838 // copy string after ~ to first slash 2839 pathStart = slash - path; 2840 pErrorNULL(strLNCat(user, sizeof(user)-1, path+1, pathStart-1)); 2841 } 2842 } 2843 2844 // add : at the end of username to match line in passwd 2845 size_t len = strlen(user); 2846 user[len] = ':'; 2847 user[len+1] = 0; 2848 2849 2850 // find home path in the passwd file 2851 char **pwd = readText("/etc/passwd"); 2852 2853 if (!pwd) { 2854 return(NULL); 2855 } 2856 2857 // result 2858 char *r = NULL; 2859 2860 forEachS(pwd, l) { 2861 if (startsWithS(l, user)) { 2862 // found the user 2863 char **l_l = split(l, ":"); 2864 // copy home path to result 2865 r = strdup(l_l[5]); 2866 listFreeS(l_l); 2867 break; 2868 } 2869 } 2870 2871 listFreeS(pwd); 2872 2873 if (!r) { 2874 // user not found in this system 2875 return(NULL); 2876 } 2877 2878 // append rest of the path to the result 2879 iAppendS(&r, path + pathStart); 2880 2881 strcpy(path, r); 2882 free(r); 2883 return(path); 2884 } 2885 2886 #else 2887 /** 2888 * buffer expands ~/ ($HOME) or ~USER\n 2889 * 2890 * expand path 2891 * 2892 * \param 2893 * path: string 2894 * \return 2895 * path modified path\n 2896 * NULL error 2897 */ 2898 char *bExpandHome(char *path) { 2899 wordexp_t exp_result; 2900 2901 // sanity checks 2902 if (!path) { 2903 return(NULL); 2904 } 2905 2906 if (path[0] == 0) { 2907 // path is empty 2908 // when path is empty, exp_result.we_wordv[0] is null and strlen segfaults 2909 return(path); 2910 } 2911 2912 #if (!__TERMUX__) 2913 // expand ~/ 2914 int status = wordexp(path, &exp_result, 0);; 2915 switch (status) { 2916 case WRDE_BADCHAR: 2917 shEPrintfS("bExpandHome error: unquoted invalid character\n"); 2918 shEPrintfS("The path was: \"%s\"\n", path); 2919 return(NULL); 2920 case WRDE_BADVAL: 2921 shEPrintfS("bExpandHome error: undefined shell variable\n"); 2922 shEPrintfS("The path was: \"%s\"\n", path); 2923 return(NULL); 2924 case WRDE_NOSPACE: 2925 shEPrintfS("bExpandHome error: out of memory\n"); 2926 shEPrintfS("The path was: \"%s\"\n", path); 2927 return(NULL); 2928 case WRDE_SYNTAX: 2929 shEPrintfS("bExpandHome error: syntax error\n"); 2930 shEPrintfS("The path was: \"%s\"\n", path); 2931 return(NULL); 2932 default: 2933 break; 2934 } 2935 strcpy(path, exp_result.we_wordv[0]); 2936 wordfree(&exp_result); 2937 #else 2938 bReplaceS(path, "~", "/data/data/com.termux/files/home", 1); 2939 #endif 2940 return(path); 2941 } 2942 #endif 2943 2944 #if (__OpenBSD__ || __HAIKU__) 2945 /** 2946 * buffer size expands ~/ ($HOME) or ~USER\n 2947 * 2948 * expand path 2949 * 2950 * \param 2951 * path: string 2952 * \param 2953 * pathSize path buffer size, the path strlen will be at most pathSize-1 2954 * \return 2955 * path modified path\n 2956 * NULL error 2957 */ 2958 char *bLExpandHome(char *path, size_t pathSize) { 2959 2960 // sanity checks 2961 if (!path) { 2962 return(NULL); 2963 } 2964 2965 if (path[0] == 0) { 2966 // path is empty 2967 return(path); 2968 } 2969 2970 // steps 2971 // determine path format 2972 // set user name, either current user or user name in path 2973 // add : at the end of username to match line in the /etc/passwd file 2974 // find home path in the passwd file 2975 2976 enum {noExpand, currentUser, otherUser}; 2977 2978 // determine path format 2979 int status = noExpand; 2980 if (path[0] == '~' and (path[1] == '/' or path[1] == 0)) { 2981 // path="~/..." 2982 status = currentUser; 2983 } 2984 elif (path[0] == '~' and path[1] != '/') { 2985 // path="~USER..." 2986 status = otherUser; 2987 } 2988 2989 // there is no tilde to expand, return path unchanged 2990 if (status == noExpand) { 2991 // make sure path is no longer than pathSize 2992 path[pathSize-1] = 0; 2993 return(path); 2994 } 2995 2996 // set user name, either current user or user name in path 2997 char user[33] = {0}; 2998 size_t pathStart = 0; 2999 3000 if (status == currentUser) { 3001 // use getlogin to find current username 3002 // sizeof(user)-1 to keep a char tp append final ':' 3003 if (getlogin_r(user, sizeof(user)-1)) { 3004 // error 3005 logME(libsheepyErrorMask, "getlogin for current user"); 3006 } { 3007 pathStart = 1; 3008 } 3009 } 3010 else { 3011 // username is in path 3012 // from index 1 (skip ~) to the first / 3013 char *slash = findS(path, "/"); 3014 if (!slash) { 3015 // no slash found, path is in the form: ~USER 3016 // copy string after ~ to the end of the string 3017 pErrorNULL(strLCpy(user, sizeof(user)-1, path+1)); 3018 pathStart = strlen(path); 3019 } 3020 else { 3021 // copy string after ~ to first slash 3022 pathStart = slash - path; 3023 strLNCat(user, sizeof(user)-1, path+1, pathStart-1); 3024 } 3025 } 3026 3027 // add : at the end of username to match line in passwd 3028 size_t len = strlen(user); 3029 user[len] = ':'; 3030 user[len+1] = 0; 3031 3032 3033 // find home path in the passwd file 3034 char **pwd = readText("/etc/passwd"); 3035 3036 if (!pwd) { 3037 return(NULL); 3038 } 3039 3040 // result 3041 char *r = NULL; 3042 3043 forEachS(pwd, l) { 3044 if (startsWithS(l, user)) { 3045 // found the user 3046 char **l_l = split(l, ":"); 3047 // copy home path to result 3048 r = strdup(l_l[5]); 3049 listFreeS(l_l); 3050 break; 3051 } 3052 } 3053 3054 listFreeS(pwd); 3055 3056 if (!r) { 3057 // user not found in this system 3058 return(NULL); 3059 } 3060 3061 // append rest of the path to the result 3062 iAppendS(&r, path + pathStart); 3063 3064 pErrorNULL(strLCpy(path, pathSize, r)); 3065 free(r); 3066 return(path); 3067 } 3068 3069 #else 3070 3071 /** 3072 * buffer size expands ~/ ($HOME) or ~USER\n 3073 * 3074 * expand path 3075 * 3076 * \param 3077 * path: string 3078 * \param 3079 * pathSize path buffer size, the path strlen will be at most pathSize-1 3080 * \return 3081 * path modified path\n 3082 * NULL error 3083 */ 3084 char *bLExpandHome(char *path, size_t pathSize) { 3085 wordexp_t exp_result; 3086 3087 // sanity checks 3088 if (!path) { 3089 return(NULL); 3090 } 3091 3092 if (path[0] == 0) { 3093 // path is empty 3094 // when path is empty, exp_result.we_wordv[0] is null and strlen segfaults 3095 return(path); 3096 } 3097 3098 #if (!__TERMUX__) 3099 // expand ~/ 3100 int status = wordexp(path, &exp_result, 0);; 3101 switch (status) { 3102 case WRDE_BADCHAR: 3103 shEPrintfS("bExpandHome error: unquoted invalid character\n"); 3104 shEPrintfS("The path was: \"%s\"\n", path); 3105 return(NULL); 3106 case WRDE_BADVAL: 3107 shEPrintfS("bExpandHome error: undefined shell variable\n"); 3108 shEPrintfS("The path was: \"%s\"\n", path); 3109 return(NULL); 3110 case WRDE_NOSPACE: 3111 shEPrintfS("bExpandHome error: out of memory\n"); 3112 shEPrintfS("The path was: \"%s\"\n", path); 3113 return(NULL); 3114 case WRDE_SYNTAX: 3115 shEPrintfS("bExpandHome error: syntax error\n"); 3116 shEPrintfS("The path was: \"%s\"\n", path); 3117 return(NULL); 3118 default: 3119 break; 3120 } 3121 pErrorNULL(strLCpy(path, pathSize, exp_result.we_wordv[0])); 3122 wordfree(&exp_result); 3123 #else 3124 bLReplaceS(path, pathSize, "~", "/data/data/com.termux/files/home", 1); 3125 #endif 3126 return(path); 3127 } 3128 #endif 3129 3130 /** 3131 * normalize path 3132 * 3133 * remove unecessary /, .. and . 3134 * leading / is kept 3135 * leading .. is kept 3136 * leading . is removed 3137 * 3138 * '/../' becomes '/' 3139 * 3140 * \param 3141 * path 3142 * \return 3143 * new normalized path (you must free the pointer) 3144 * NULL when path is NULL 3145 */ 3146 char *normalizePath(const char *path) { 3147 3148 // sanity checks 3149 if (!path) { 3150 return(NULL); 3151 } 3152 3153 if (isEmptyS(path)) { 3154 return(strdup("")); 3155 } 3156 3157 // list path elements 3158 char **pathL = split(path, "/"); 3159 3160 // remove empty elements 3161 pErrorNULL(iListCompactS(&pathL)); 3162 3163 if (listIsEmptyS(pathL)) { 3164 listFreeS(pathL); 3165 // keep leading / 3166 return(strdup("/")); 3167 } 3168 3169 // new path elements 3170 char **list = NULL; 3171 3172 // detect leading double dots 3173 bool onlyLeadingDoubleDots = true; 3174 3175 // add elements to list 3176 forEachCharP(pathL, level) { 3177 if (strEq(*level, "..")) { 3178 if (onlyLeadingDoubleDots) { 3179 // keep leading .. 3180 pErrorNULL(listPushS(&list, "..")); 3181 } 3182 else { 3183 // remove .. in path 3184 char *s = listPopS(&list); 3185 free(s); 3186 } 3187 } 3188 else if (!strEq(*level, ".")) { 3189 // remove . and add elements 3190 pErrorNULL(listPushS(&list, *level)); 3191 // an element is pushed, so this is the end of leading double dots 3192 onlyLeadingDoubleDots = false; 3193 } 3194 } 3195 3196 if (listLengthS(list) == 1 && strEq(list[0], "..") && getS(path, 0) == '/') { 3197 // handle ../ .. /.. /../ 3198 list[0][0] = 0; 3199 } 3200 3201 // handle /.: add empty string 3202 if (strEq(path, "/.")) { 3203 pErrorNULL(listPushS(&list, "")); 3204 } 3205 3206 // keep leading / 3207 if (getS(path, 0) == '/') { 3208 if (listIsEmptyS(list)) { 3209 // .. cancelled path: /a/b/../.. 3210 listFreeManyS(pathL, list); 3211 return(strdup("/")); 3212 } 3213 pErrorNULL(listPrependS(&list, "")); 3214 } 3215 3216 // create new path 3217 char *r = join(list, "/");; 3218 // keep order pathL, list because list can be NULL 3219 // if it is first listFreeManyS stops early 3220 listFreeManyS(pathL, list); 3221 if (!r) { 3222 return(strdup("")); 3223 } 3224 return(r); 3225 } 3226 3227 3228 /** 3229 * normalize path 3230 * 3231 * remove unecessary /, .. and . 3232 * leading / is kept 3233 * leading .. is kept 3234 * leading . is removed 3235 * 3236 * '/../' becomes '/' 3237 * 3238 * \param 3239 * path (this parameter is reallocated) 3240 * \return 3241 * path modified path 3242 * NULL when path is NULL 3243 */ 3244 char *iNormalizePath(char **path) { 3245 3246 // sanity checks 3247 if (!path || !*path) { 3248 return(NULL); 3249 } 3250 3251 if (isEmptyS(*path)) { 3252 pErrorNULL(iEmptySF(path)); 3253 return(*path); 3254 } 3255 3256 // list path elements 3257 char **pathL = split(*path, "/"); 3258 3259 // remove empty elements 3260 pErrorNULL(iListCompactS(&pathL)); 3261 3262 if (listIsEmptyS(pathL)) { 3263 listFreeS(pathL); 3264 // keep leading / 3265 free(*path); 3266 *path = strdup("/"); 3267 return(*path); 3268 } 3269 3270 // new path elements 3271 char **list = NULL; 3272 3273 // detect leading double dots 3274 bool onlyLeadingDoubleDots = true; 3275 3276 // add elements to list 3277 forEachCharP(pathL, level) { 3278 if (strEq(*level, "..")) { 3279 if (onlyLeadingDoubleDots) { 3280 // keep leading .. 3281 pErrorNULL(listPushS(&list, "..")); 3282 } 3283 else { 3284 // remove .. in path 3285 char *s = listPopS(&list); 3286 free(s); 3287 } 3288 } 3289 else if (!strEq(*level, ".")) { 3290 // remove . and add elements 3291 pErrorNULL(listPushS(&list, *level)); 3292 // an element is pushed, so this is the end of leading double dots 3293 onlyLeadingDoubleDots = false; 3294 } 3295 } 3296 3297 if (listLengthS(list) == 1 && strEq(list[0], "..") && getS(*path, 0) == '/') { 3298 // handle ../ .. /.. /../ 3299 list[0][0] = 0; 3300 } 3301 3302 // handle /.: add empty string 3303 if (strEq(*path, "/.")) { 3304 pErrorNULL(listPushS(&list, "")); 3305 } 3306 3307 // keep leading / 3308 if (getS(*path, 0) == '/') { 3309 if (listIsEmptyS(list)) { 3310 // .. cancelled path: /a/b/../.. 3311 listFreeManyS(pathL, list); 3312 free(*path); 3313 *path = strdup("/"); 3314 return(*path); 3315 } 3316 pErrorNULL(listPrependS(&list, "")); 3317 } 3318 3319 // create new path 3320 char *r = join(list, "/");; 3321 // keep order pathL, list because list can be NULL 3322 // if it is first listFreeManyS stops early 3323 listFreeManyS(pathL, list); 3324 free(*path); 3325 if (!r) { 3326 *path = strdup(""); 3327 return(*path); 3328 } 3329 *path = r; 3330 return(*path); 3331 } 3332 3333 /** 3334 * buffer normalize path 3335 * 3336 * remove unecessary /, .. and . 3337 * leading / is kept 3338 * leading .. is kept 3339 * leading . is removed 3340 * 3341 * '/../' becomes '/' 3342 * 3343 * \param 3344 * path 3345 * \return 3346 * path modified path 3347 * NULL when path is NULL 3348 */ 3349 char *bNormalizePath(char *path) { 3350 3351 // sanity checks 3352 if (!path) { 3353 return(NULL); 3354 } 3355 3356 if (isEmptyS(path)) { 3357 bEmptyS(path); 3358 return(path); 3359 } 3360 3361 // list path elements 3362 char **pathL = split(path, "/"); 3363 3364 // remove empty elements 3365 pErrorNULL(iListCompactS(&pathL)); 3366 3367 if (listIsEmptyS(pathL)) { 3368 listFreeS(pathL); 3369 // keep leading / 3370 strcpy(path, "/"); 3371 return(path); 3372 } 3373 3374 // new path elements 3375 char **list = NULL; 3376 3377 // detect leading double dots 3378 bool onlyLeadingDoubleDots = true; 3379 3380 // add elements to list 3381 forEachCharP(pathL, level) { 3382 if (strEq(*level, "..")) { 3383 if (onlyLeadingDoubleDots) { 3384 // keep leading .. 3385 pErrorNULL(listPushS(&list, "..")); 3386 } 3387 else { 3388 // remove .. in path 3389 char *s = listPopS(&list); 3390 free(s); 3391 } 3392 } 3393 else if (!strEq(*level, ".")) { 3394 // remove . and add elements 3395 pErrorNULL(listPushS(&list, *level)); 3396 // an element is pushed, so this is the end of leading double dots 3397 onlyLeadingDoubleDots = false; 3398 } 3399 } 3400 3401 if (listLengthS(list) == 1 && strEq(list[0], "..") && getS(path, 0) == '/') { 3402 // handle ../ .. /.. /../ 3403 list[0][0] = 0; 3404 } 3405 3406 // handle /.: add empty string 3407 if (strEq(path, "/.")) { 3408 pErrorNULL(listPushS(&list, "")); 3409 } 3410 3411 // keep leading / 3412 if (getS(path, 0) == '/') { 3413 if (listIsEmptyS(list)) { 3414 // .. cancelled path: /a/b/../.. 3415 listFreeManyS(pathL, list); 3416 strcpy(path, "/"); 3417 return(path); 3418 } 3419 pErrorNULL(listPrependS(&list, "")); 3420 } 3421 3422 // create new path 3423 char *r = join(list, "/");; 3424 // keep order pathL, list because list can be NULL 3425 // if it is first listFreeManyS stops early 3426 listFreeManyS(pathL, list); 3427 if (!r) { 3428 bEmptyS(path); 3429 return(path); 3430 } 3431 strcpy(path, r); 3432 free(r); 3433 return(path); 3434 } 3435 3436 /** 3437 * buffer size normalize path 3438 * 3439 * path must be at least 2 chars 3440 * 3441 * remove unecessary /, .. and . 3442 * leading / is kept 3443 * leading .. is kept 3444 * leading . is removed 3445 * 3446 * '/../' becomes '/' 3447 * 3448 * \param 3449 * path 3450 * \param 3451 * pathSize path buffer size, the path strlen will be at most pathSize-1 3452 * \return 3453 * path modified path 3454 * NULL when path is NULL 3455 */ 3456 char *bLNormalizePath(char *path, size_t pathSize) { 3457 3458 // sanity checks 3459 if (!path) { 3460 return(NULL); 3461 } 3462 3463 if (!pathSize) { 3464 return(path); 3465 } 3466 3467 if (isEmptyS(path)) { 3468 bEmptyS(path); 3469 return(path); 3470 } 3471 3472 // list path elements 3473 char **pathL = split(path, "/"); 3474 3475 // remove empty elements 3476 pErrorNULL(iListCompactS(&pathL)); 3477 3478 if (listIsEmptyS(pathL)) { 3479 listFreeS(pathL); 3480 // keep leading / 3481 strcpy(path, "/"); 3482 return(path); 3483 } 3484 3485 // new path elements 3486 char **list = NULL; 3487 3488 // detect leading double dots 3489 bool onlyLeadingDoubleDots = true; 3490 3491 // add elements to list 3492 forEachCharP(pathL, level) { 3493 if (strEq(*level, "..")) { 3494 if (onlyLeadingDoubleDots) { 3495 // keep leading .. 3496 pErrorNULL(listPushS(&list, "..")); 3497 } 3498 else { 3499 // remove .. in path 3500 char *s = listPopS(&list); 3501 free(s); 3502 } 3503 } 3504 else if (!strEq(*level, ".")) { 3505 // remove . and add elements 3506 pErrorNULL(listPushS(&list, *level)); 3507 // an element is pushed, so this is the end of leading double dots 3508 onlyLeadingDoubleDots = false; 3509 } 3510 } 3511 3512 if (listLengthS(list) == 1 && strEq(list[0], "..") && getS(path, 0) == '/') { 3513 // handle ../ .. /.. /../ 3514 list[0][0] = 0; 3515 } 3516 3517 // handle /.: add empty string 3518 if (strEq(path, "/.")) { 3519 pErrorNULL(listPushS(&list, "")); 3520 } 3521 3522 // keep leading / 3523 if (getS(path, 0) == '/') { 3524 if (listIsEmptyS(list)) { 3525 // .. cancelled path: /a/b/../.. 3526 listFreeManyS(pathL, list); 3527 strcpy(path, "/"); 3528 return(path); 3529 } 3530 pErrorNULL(listPrependS(&list, "")); 3531 } 3532 3533 // create new path 3534 char *r = join(list, "/");; 3535 // keep order pathL, list because list can be NULL 3536 // if it is first listFreeManyS stops early 3537 listFreeManyS(pathL, list); 3538 if (!r) { 3539 bEmptyS(path); 3540 return(path); 3541 } 3542 pErrorNULL(strLCpy(path, pathSize, r)); 3543 free(r); 3544 return(path); 3545 } 3546 3547 /** 3548 * relative path 3549 * 3550 * Return a relative filepath to path either from the current directory or from an optional 3551 * start directory 3552 * 3553 * \param 3554 * path path to convert 3555 * \param 3556 * start reference path, cwd when NULL 3557 * \return 3558 * new relative path (you must free the pointer) 3559 * NULL when path is NULL 3560 */ 3561 char *relPath(const char *path, const char *start) { 3562 3563 // sanity checks 3564 if (!path) { 3565 return(NULL); 3566 } 3567 3568 char *r = NULL; 3569 3570 // steps 3571 // normalize path and start 3572 // if start is not set, start is cwd 3573 // when path and start are equal, return "." 3574 // if path is relative path and start is absolute path 3575 // then path is relative to nstart 3576 // if path is absolute path and start is relative path 3577 // then start is relative to cwd 3578 // when path starts with nstart, slice path to only keep the string 3579 // after the end of nstart 3580 // find first uncommon directory between npath and nstart 3581 // count slashes in nstart after first uncommon directory 3582 // go up directories to last common directory between npath and nstart 3583 3584 // normalize path and start 3585 char *npath = expandHome(path); 3586 pErrorNULL(iNormalizePath(&npath)); 3587 char *nstart; 3588 char *cwd = getCwd(); 3589 3590 // if start is not set, start is cwd 3591 if (!start) { 3592 // relative path to cwd 3593 nstart = getCwd(); 3594 } 3595 else { 3596 // use start in argument 3597 nstart = expandHome(start);; 3598 pErrorNULL(iNormalizePath(&nstart)); 3599 } 3600 3601 // when path and start are equal, return "." 3602 if (eqS(npath, nstart)) { 3603 r = strdup("."); 3604 goto end; 3605 } 3606 3607 // if path is relative path and start is absolute path 3608 // then path is relative to nstart 3609 if (npath[0] != '/' and nstart[0] == '/') { 3610 pErrorNULL(iPrependS(&npath, "/")); 3611 pErrorNULL(iPrependS(&npath, nstart)); 3612 pErrorNULL(iNormalizePath(&npath)); 3613 } 3614 3615 // if path is absolute path and start is relative path 3616 // then start is relative to cwd 3617 if (npath[0] == '/' and nstart[0] != '/') { 3618 pErrorNULL(iPrependS(&nstart, "/")); 3619 pErrorNULL(iPrependS(&nstart, cwd)); 3620 pErrorNULL(iNormalizePath(&nstart)); 3621 } 3622 3623 // when path starts with nstart, slice path to only keep the string 3624 // after the end of nstart 3625 if (startsWithS(npath, nstart)) { 3626 if (npath[strlen(nstart)] == '/') { 3627 r = sliceS(npath, (i64)strlen(nstart)+1, 0); 3628 goto end; 3629 } 3630 // handle case when nstart is "/" after normalize 3631 if (npath[strlen(nstart)-1] == '/') { 3632 r = sliceS(npath, (i64)strlen(nstart), 0); 3633 goto end; 3634 } 3635 // fallthrough: npath starts with nstart but is a different path 3636 // Example: npath = "/usr/bin" nstart = "/us" 3637 } 3638 3639 // find first uncommon directory between npath and nstart 3640 // lib/t 3641 // lib/a/b 3642 size_t i = 0; 3643 size_t from = 0; 3644 while (npath[i] and nstart[i]) { 3645 if (npath[i] == '/') { 3646 // i+1 to skip the slash 3647 from = i+1;; 3648 } 3649 if (npath[i] != nstart[i]) { 3650 break; 3651 } 3652 i++; 3653 } 3654 3655 3656 // count slashes in nstart after first uncommon directory 3657 size_t slash = 1; 3658 rangeFrom(j, i, strlen(nstart)) 3659 if (nstart[j] == '/') { 3660 slash++; 3661 } 3662 3663 // go up directories to last common directory between npath and nstart 3664 r = repeatS("../", slash);; 3665 pErrorNULL(iAppendS(&r, npath+from)); 3666 3667 end: 3668 free(npath); 3669 free(nstart); 3670 free(cwd); 3671 return(r); 3672 } 3673 3674 /** 3675 * relative path 3676 * 3677 * Return a relative filepath to path either from the current directory or from an optional 3678 * start directory 3679 * 3680 * \param 3681 * path path to convert (this parameter is reallocated) 3682 * \param 3683 * start reference path, cwd when NULL 3684 * \return 3685 * updated relative path (you must free the pointer) 3686 * NULL when path is NULL 3687 */ 3688 char *iRelPath(char **path, const char *start) { 3689 3690 // sanity checks 3691 if (!path or !*path) { 3692 return(NULL); 3693 } 3694 3695 char *r = NULL; 3696 3697 // steps 3698 // normalize path and start 3699 // if start is not set, start is cwd 3700 // when path and start are equal, return "." 3701 // if path is relative path and start is absolute path 3702 // then path is relative to nstart 3703 // if path is absolute path and start is relative path 3704 // then start is relative to cwd 3705 // when path starts with nstart, slice path to only keep the string 3706 // after the end of nstart 3707 // find first uncommon directory between npath and nstart 3708 // count slashes in nstart after first uncommon directory 3709 // go up directories to last common directory between npath and nstart 3710 3711 // normalize path and start 3712 char *npath = expandHome(*path); 3713 pErrorNULL(iNormalizePath(&npath)); 3714 char *nstart; 3715 char *cwd = getCwd(); 3716 3717 // if start is not set, start is cwd 3718 if (!start) { 3719 // relative path to cwd 3720 nstart = getCwd(); 3721 } 3722 else { 3723 // use start in argument 3724 nstart = expandHome(start);; 3725 pErrorNULL(iNormalizePath(&nstart)); 3726 } 3727 3728 // when path and start are equal, return "." 3729 if (eqS(npath, nstart)) { 3730 r = strdup("."); 3731 goto end; 3732 } 3733 3734 // if path is relative path and start is absolute path 3735 // then path is relative to nstart 3736 if (npath[0] != '/' and nstart[0] == '/') { 3737 pErrorNULL(iPrependS(&npath, "/")); 3738 pErrorNULL(iPrependS(&npath, nstart)); 3739 pErrorNULL(iNormalizePath(&npath)); 3740 } 3741 3742 // if path is absolute path and start is relative path 3743 // then start is relative to cwd 3744 if (npath[0] == '/' and nstart[0] != '/') { 3745 pErrorNULL(iPrependS(&nstart, "/")); 3746 pErrorNULL(iPrependS(&nstart, cwd)); 3747 pErrorNULL(iNormalizePath(&nstart)); 3748 } 3749 3750 // when path starts with nstart, slice path to only keep the string 3751 // after the end of nstart 3752 if (startsWithS(npath, nstart)) { 3753 if (npath[strlen(nstart)] == '/') { 3754 r = sliceS(npath, (i64)strlen(nstart)+1, 0); 3755 goto end; 3756 } 3757 // handle case when nstart is "/" after normalize 3758 if (npath[strlen(nstart)-1] == '/') { 3759 r = sliceS(npath, (i64)strlen(nstart), 0); 3760 goto end; 3761 } 3762 // fallthrough: npath starts with nstart but is a different path 3763 // Example: npath = "/usr/bin" nstart = "/us" 3764 } 3765 3766 3767 // find first uncommon directory between npath and nstart 3768 // lib/t 3769 // lib/a/b 3770 size_t i = 0; 3771 size_t from = 0; 3772 while (npath[i] and nstart[i]) { 3773 if (npath[i] == '/') { 3774 // i+1 to skip the slash 3775 from = i+1; 3776 } 3777 if (npath[i] != nstart[i]) { 3778 break; 3779 } 3780 i++; 3781 } 3782 3783 3784 // count slashes in nstart after first uncommon directory 3785 size_t slash = 1; 3786 rangeFrom(j, i, strlen(nstart)) 3787 if (nstart[j] == '/') { 3788 slash++; 3789 } 3790 3791 // go up directories to last common directory between npath and nstart 3792 r = repeatS("../", slash);; 3793 pErrorNULL(iAppendS(&r, npath+from)); 3794 3795 end: 3796 free(npath); 3797 free(nstart); 3798 free(cwd); 3799 3800 free(*path); 3801 *path = r; 3802 return(*path); 3803 } 3804 3805 /** 3806 * relative path 3807 * 3808 * Return a relative filepath to path either from the current directory or from an optional 3809 * start directory 3810 * 3811 * \param 3812 * path path to convert 3813 * \param 3814 * start reference path, cwd when NULL 3815 * \return 3816 * relative path in dest 3817 * NULL when path or dest are NULL 3818 */ 3819 char *bRelPath(char *dest, const char *path, const char *start) { 3820 3821 // sanity checks 3822 if (!path or !dest) { 3823 return(NULL); 3824 } 3825 3826 char *r = NULL; 3827 3828 // steps 3829 // normalize path and start 3830 // if start is not set, start is cwd 3831 // when path and start are equal, return "." 3832 // if path is relative path and start is absolute path 3833 // then path is relative to nstart 3834 // if path is absolute path and start is relative path 3835 // then start is relative to cwd 3836 // when path starts with nstart, slice path to only keep the string 3837 // after the end of nstart 3838 // find first uncommon directory between npath and nstart 3839 // count slashes in nstart after first uncommon directory 3840 // go up directories to last common directory between npath and nstart 3841 3842 // normalize path and start 3843 char *npath = expandHome(path); 3844 pErrorNULL(iNormalizePath(&npath)); 3845 char *nstart; 3846 char *cwd = getCwd(); 3847 3848 // if start is not set, start is cwd 3849 if (!start) { 3850 // relative path to cwd 3851 nstart = getCwd(); 3852 } 3853 else { 3854 // use start in argument 3855 nstart = expandHome(start);; 3856 pErrorNULL(iNormalizePath(&nstart)); 3857 } 3858 3859 // when path and start are equal, return "." 3860 if (eqS(npath, nstart)) { 3861 r = strdup("."); 3862 goto end; 3863 } 3864 3865 // if path is relative path and start is absolute path 3866 // then path is relative to nstart 3867 if (npath[0] != '/' and nstart[0] == '/') { 3868 pErrorNULL(iPrependS(&npath, "/")); 3869 pErrorNULL(iPrependS(&npath, nstart)); 3870 pErrorNULL(iNormalizePath(&npath)); 3871 } 3872 3873 // if path is absolute path and start is relative path 3874 // then start is relative to cwd 3875 if (npath[0] == '/' and nstart[0] != '/') { 3876 pErrorNULL(iPrependS(&nstart, "/")); 3877 pErrorNULL(iPrependS(&nstart, cwd)); 3878 pErrorNULL(iNormalizePath(&nstart)); 3879 } 3880 3881 // when path starts with nstart, slice path to only keep the string 3882 // after the end of nstart 3883 if (startsWithS(npath, nstart)) { 3884 if (npath[strlen(nstart)] == '/') { 3885 r = sliceS(npath, (i64)strlen(nstart)+1, 0); 3886 goto end; 3887 } 3888 // handle case when nstart is "/" after normalize 3889 if (npath[strlen(nstart)-1] == '/') { 3890 r = sliceS(npath, (i64)strlen(nstart), 0); 3891 goto end; 3892 } 3893 // fallthrough: npath starts with nstart but is a different path 3894 // Example: npath = "/usr/bin" nstart = "/us" 3895 } 3896 3897 // find first uncommon directory between npath and nstart 3898 // lib/t 3899 // lib/a/b 3900 size_t i = 0; 3901 size_t from = 0; 3902 while (npath[i] and nstart[i]) { 3903 if (npath[i] == '/') { 3904 // i+1 to skip the slash 3905 from = i+1; 3906 } 3907 if (npath[i] != nstart[i]) { 3908 break; 3909 } 3910 i++; 3911 } 3912 3913 3914 // count slashes in nstart after first uncommon directory 3915 size_t slash = 1; 3916 rangeFrom(j, i, strlen(nstart)) 3917 if (nstart[j] == '/') { 3918 slash++; 3919 } 3920 3921 // go up directories to last common directory between npath and nstart 3922 r = repeatS("../", slash);; 3923 pErrorNULL(iAppendS(&r, npath+from)); 3924 3925 end: 3926 free(npath); 3927 free(nstart); 3928 free(cwd); 3929 3930 strcpy(dest, r); 3931 free(r); 3932 return(dest); 3933 } 3934 3935 /** 3936 * relative path 3937 * 3938 * Return a relative filepath to path either from the current directory or from an optional 3939 * start directory 3940 * 3941 * \param 3942 * path path to convert 3943 * \param 3944 * start reference path, cwd when NULL 3945 * \return 3946 * relative path in dest 3947 * NULL when path or dest are NULL 3948 */ 3949 char *bLRelPath(char *dest, size_t destSize, char *path, const char *start) { 3950 3951 // sanity checks 3952 if (!path or !dest) { 3953 return(NULL); 3954 } 3955 3956 char *r = NULL; 3957 3958 // steps 3959 // normalize path and start 3960 // if start is not set, start is cwd 3961 // when path and start are equal, return "." 3962 // if path is relative path and start is absolute path 3963 // then path is relative to nstart 3964 // if path is absolute path and start is relative path 3965 // then start is relative to cwd 3966 // when path starts with nstart, slice path to only keep the string 3967 // after the end of nstart 3968 // find first uncommon directory between npath and nstart 3969 // count slashes in nstart after first uncommon directory 3970 // go up directories to last common directory between npath and nstart 3971 3972 // normalize path and start 3973 char *npath = expandHome(path); 3974 pErrorNULL(iNormalizePath(&npath)); 3975 char *nstart; 3976 char *cwd = getCwd(); 3977 3978 // if start is not set, start is cwd 3979 if (!start) { 3980 // relative path to cwd 3981 nstart = getCwd(); 3982 } 3983 else { 3984 // use start in argument 3985 nstart = expandHome(start);; 3986 pErrorNULL(iNormalizePath(&nstart)); 3987 } 3988 3989 // when path and start are equal, return "." 3990 if (eqS(npath, nstart)) { 3991 r = strdup("."); 3992 goto end; 3993 } 3994 3995 // if path is relative path and start is absolute path 3996 // then path is relative to nstart 3997 if (npath[0] != '/' and nstart[0] == '/') { 3998 pErrorNULL(iPrependS(&npath, "/")); 3999 pErrorNULL(iPrependS(&npath, nstart)); 4000 pErrorNULL(iNormalizePath(&npath)); 4001 } 4002 4003 // if path is absolute path and start is relative path 4004 // then start is relative to cwd 4005 if (npath[0] == '/' and nstart[0] != '/') { 4006 pErrorNULL(iPrependS(&nstart, "/")); 4007 pErrorNULL(iPrependS(&nstart, cwd)); 4008 pErrorNULL(iNormalizePath(&nstart)); 4009 } 4010 4011 // when path starts with nstart, slice path to only keep the string 4012 // after the end of nstart 4013 if (startsWithS(npath, nstart)) { 4014 if (npath[strlen(nstart)] == '/') { 4015 r = sliceS(npath, (i64)strlen(nstart)+1, 0); 4016 goto end; 4017 } 4018 // handle case when nstart is "/" after normalize 4019 if (npath[strlen(nstart)-1] == '/') { 4020 r = sliceS(npath, (i64)strlen(nstart), 0); 4021 goto end; 4022 } 4023 // fallthrough: npath starts with nstart but is a different path 4024 // Example: npath = "/usr/bin" nstart = "/us" 4025 } 4026 4027 // find first uncommon directory between npath and nstart 4028 // lib/t 4029 // lib/a/b 4030 size_t i = 0; 4031 size_t from = 0; 4032 while (npath[i] and nstart[i]) { 4033 if (npath[i] == '/') { 4034 from = i+1; 4035 } 4036 if (npath[i] != nstart[i]) { 4037 break; 4038 } 4039 i++; 4040 } 4041 4042 4043 // count slashes in nstart after first uncommon directory 4044 size_t slash = 1; 4045 rangeFrom(j, i, strlen(nstart)) 4046 if (nstart[j] == '/') { 4047 slash++; 4048 } 4049 4050 // go up directories to last common directory between npath and nstart 4051 r = repeatS("../", slash);; 4052 pErrorNULL(iAppendS(&r, npath+from)); 4053 4054 end: 4055 free(npath); 4056 free(nstart); 4057 free(cwd); 4058 4059 pErrorNULL(strLCpy(dest, destSize, r)); 4060 free(r); 4061 return(dest); 4062 } 4063 4064 4065 4066 /** 4067 * get home path 4068 * 4069 * \return 4070 * home path (you must free the pointer) 4071 */ 4072 char *getHomePath(void) { 4073 4074 struct passwd *pw = getpwuid(getuid());; 4075 if (!pw) { 4076 return(NULL); 4077 } 4078 return(strdup(pw->pw_dir)); 4079 } 4080 4081 /** 4082 * copy home path to path 4083 * 4084 * \param 4085 * path buffer large enough for home path 4086 * \return 4087 * path pointer 4088 */ 4089 char *bGetHomePath(char *path) { 4090 4091 struct passwd *pw = getpwuid(getuid());; 4092 if (!pw) { 4093 return(NULL); 4094 } 4095 strcpy(path, pw->pw_dir); 4096 return(path); 4097 } 4098 4099 /** 4100 * copy home path to path maximum pathSize 4101 * 4102 * \param 4103 * path buffer large enough for home path 4104 * \param 4105 * pathSize size of path 4106 * \return 4107 * path pointer 4108 */ 4109 char *bLGetHomePath(char *path, size_t pathSize) { 4110 4111 struct passwd *pw = getpwuid(getuid());; 4112 if (!pw) { 4113 return(NULL); 4114 } 4115 if (strlen(pw->pw_dir)+1 > pathSize) { 4116 return(NULL); 4117 } 4118 pErrorNULL(strLCpy(path, pathSize, pw->pw_dir)); 4119 return(path); 4120 } 4121 4122 /** 4123 * get home path as a const char* 4124 * 4125 * \return 4126 * home path 4127 */ 4128 const char *getCHomePath(void) { 4129 4130 struct passwd *pw = getpwuid(getuid());; 4131 if (!pw) { 4132 return(NULL); 4133 } 4134 return(pw->pw_dir); 4135 } 4136 4137 /** 4138 * get current working directory 4139 * 4140 * \return 4141 * current path (you must free the pointer) 4142 */ 4143 char *getCwd(void) { 4144 char *r = NULL; 4145 4146 #if (__sun__) 4147 // in openIndiana, the size argument cant be 0 4148 r = getcwd(NULL, 8192); 4149 #else 4150 r = getcwd(NULL, 0); 4151 #endif 4152 if (!r) { 4153 pFuncError 4154 return(NULL); 4155 } 4156 return(r); 4157 } 4158 4159 char *bLGetCwd(char *path, size_t pathSize) { 4160 char *r = NULL; 4161 4162 r = getcwd(path, pathSize); 4163 if (!r) { 4164 pFuncError 4165 return(NULL); 4166 } 4167 return(path); 4168 } 4169 4170 4171 4172 /** 4173 * change directory 4174 * 4175 * \param 4176 * path 4177 * \return 4178 * 1 success 4179 * 0 error 4180 */ 4181 int chDir(const char *path) { 4182 4183 if (!path) { 4184 return(0); 4185 } 4186 4187 int r = chdir(path); 4188 if (r) { 4189 pFuncError 4190 shEPrintfS("The path was: \"%s\"\n", path); 4191 r = 0; 4192 } 4193 else { 4194 r = 1; 4195 } 4196 return(r); 4197 } 4198 4199 /** 4200 * is directory 4201 * 4202 * \param 4203 * path 4204 * \return 4205 * true when path is a directory 4206 * false path is not a directory, filePath is NULL or empty string 4207 */ 4208 bool isDir(const char *path) { 4209 struct stat st; 4210 4211 // sanity checks 4212 if (!path || isBlankS(path)) { 4213 return(false); 4214 } 4215 4216 if (stat(path, &st) == -1) { 4217 return(false); 4218 } 4219 4220 if (!S_ISDIR(st.st_mode)) { 4221 return(false); 4222 } 4223 return(true); 4224 } 4225 4226 /** 4227 * sheepy read link 4228 * 4229 * read the first target in the link chain 4230 * 4231 * the returned string has to be freed 4232 * 4233 * \param 4234 * path symbolic link path 4235 * \return 4236 * path to linked file or directory (you must free the pointer) 4237 * NULL failed: path is blank or NULL 4238 * path is not a symlink 4239 * malloc failed to allocate the result buffer 4240 * readlink failed 4241 */ 4242 char *shReadlink(const char *path) { 4243 char *linked = NULL; 4244 struct stat st; 4245 size_t bufSize; 4246 ssize_t r; 4247 4248 if (!path || isBlankS(path)) { 4249 return(NULL); 4250 } 4251 4252 if (lstat(path, &st) == -1) { 4253 pFuncError 4254 return(NULL); 4255 } 4256 4257 if (!S_ISLNK(st.st_mode)) { 4258 // path is a symbolic link 4259 return(NULL); 4260 } 4261 4262 if (st.st_size == 0) { 4263 bufSize = PATH_MAX; 4264 } 4265 else { 4266 bufSize = (size_t)st.st_size + 1; 4267 } 4268 4269 linked = MALLOC(bufSize); 4270 if (!linked) { 4271 pFuncError 4272 return(NULL); 4273 } 4274 4275 r = readlink(path, linked, bufSize); 4276 4277 if (r == -1) { 4278 pFuncError 4279 free(linked); 4280 return(NULL); 4281 } 4282 4283 // append null byte 4284 *(linked + r) = 0; 4285 4286 return(linked); 4287 } 4288 4289 /** 4290 * end link 4291 * 4292 * read the link chain of a symbolic link to the end 4293 * the returned string has to be freed 4294 * 4295 * \param 4296 * path symbolic link path 4297 * \return 4298 * path to linked file or directory (you must free the pointer) 4299 * NULL failed: path is blank or NULL 4300 * path is not a symlink 4301 * malloc failed to allocate the result buffer 4302 * readlink failed 4303 */ 4304 char *endlink(const char *path) { 4305 char *linked = NULL; 4306 char from[PATH_MAX]; 4307 char to[PATH_MAX]; 4308 struct stat st; 4309 size_t bufSize; 4310 ssize_t r; 4311 4312 if (!path || isBlankS(path)) { 4313 return(NULL); 4314 } 4315 4316 if (lstat(path, &st) == -1) { 4317 pFuncError 4318 return(NULL); 4319 } 4320 4321 if (!S_ISLNK(st.st_mode)) { 4322 // path is a symbolic link 4323 return(NULL); 4324 } 4325 4326 if (st.st_size == 0) { 4327 bufSize = PATH_MAX; 4328 } 4329 else { 4330 bufSize = (size_t)st.st_size + 1; 4331 } 4332 4333 pErrorNULL(strLCpy(from, sizeof from, path)); 4334 4335 while (S_ISLNK(st.st_mode)) { 4336 r = readlink(from, to, bufSize); 4337 4338 if (r == -1) { 4339 pFuncError 4340 return(NULL); 4341 } 4342 4343 // append null byte 4344 to[r] = 0; 4345 4346 if (to[0] != '/') { 4347 pErrorNULL(bDirname(from)); 4348 pErrorNULL(bLAppendManyS(from, PATH_MAX, "/", to)); 4349 pErrorNULL(bNormalizePath(from)); 4350 } 4351 else { 4352 // copy absolute path 4353 strcpy(from, to); 4354 } 4355 4356 if (lstat(from, &st) == -1) { 4357 pFuncError 4358 return(NULL); 4359 } 4360 4361 if (st.st_size == 0) { 4362 bufSize = PATH_MAX; 4363 } 4364 else { 4365 bufSize = (size_t)st.st_size + 1; 4366 } 4367 } 4368 4369 linked = strdup(from);; 4370 return(linked); 4371 } 4372 4373 /** 4374 * is symbolic link 4375 * 4376 * \param 4377 * path 4378 * \return 4379 * true when path is a symbolic link 4380 * false path is not a symbolic link, filePath is NULL or empty string 4381 */ 4382 bool isLink(const char *path) { 4383 struct stat st; 4384 4385 // sanity checks 4386 if (!path || isBlankS(path)) { 4387 return(false); 4388 } 4389 4390 if (lstat(path, &st) == -1) { 4391 return(false); 4392 } 4393 4394 if (!S_ISLNK(st.st_mode)) { 4395 return(false); 4396 } 4397 return(true); 4398 } 4399 4400 /** 4401 * detect files and directories 4402 * 4403 * \param 4404 * filePath: path to file or directory 4405 * \return 4406 * true exists 4407 * false non existant 4408 * false filePath is NULL or empty string 4409 */ 4410 bool fileExists(const char *filePath) { 4411 4412 // sanity checks 4413 if (!filePath || isBlankS(filePath)) { 4414 return(false); 4415 } 4416 4417 int r = access(filePath, F_OK); 4418 //if r 4419 // pStrError("fileExists error"); 4420 // dont print error because this is a test 4421 return(r != -1);; 4422 } 4423 4424 /** 4425 * like chmod in stdlibc but return true/false 4426 * \param 4427 * filePath: path to file or directory 4428 * mode: permissions 4429 * \return 4430 * true success 4431 * false filePath doesnt exist, not enough permissions... 4432 * false filePath is NULL or empty string 4433 */ 4434 bool fileChmod(const char *filePath, mode_t mode) { 4435 4436 // sanity checks 4437 if (!filePath || isBlankS(filePath)) { 4438 return(false); 4439 } 4440 4441 int r = chmod(filePath, mode); 4442 if (r) { 4443 pFuncError 4444 shEPrintfS("The path was: \"%s\"\n", filePath); 4445 } 4446 return(r == 0);; 4447 } 4448 4449 /** 4450 * get file size 4451 * 4452 * \param 4453 * filePath: path to file 4454 * \return 4455 * ssize_t >= 0 size 4456 * -1 an error occured or filePath is NULL or empty string 4457 */ 4458 ssize_t fileSize(const char *filePath) { 4459 struct stat st; 4460 4461 // sanity checks 4462 if (!filePath || isBlankS(filePath)) { 4463 return(-1); 4464 } 4465 4466 int r = stat(filePath, &st);; 4467 if (r) { 4468 pFuncError 4469 shEPrintfS("The path was: \"%s\"\n", filePath); 4470 return(-1); 4471 } 4472 4473 // macOS returns a varying number a number above the constant below 4474 // when the file doesnt exists 4475 if ((uint64_t)(st.st_size) > 140734000000000) { 4476 return(-1);//LCOV_EXCL_LINE 4477 } 4478 return(st.st_size); 4479 } 4480 4481 /** 4482 * get file size from file pointer 4483 * 4484 * \param 4485 * fp file pointer 4486 * \return 4487 * ssize_t >= 0 size 4488 * -1 an error occured or file pointer is NULL 4489 */ 4490 ssize_t fileSizeFP(FILE *fp) { 4491 4492 if (!fp) { 4493 return(-1); 4494 } 4495 4496 if (fseek(fp, 0L, SEEK_END) == -1) { 4497 pFuncError 4498 return(-1); 4499 } 4500 ssize_t r = ftell(fp); 4501 rewind(fp); 4502 return(r); 4503 } 4504 4505 /** 4506 * read file to string 4507 * 4508 * 0 is added at the end to terminate the string 4509 * 4510 * \param 4511 * filePath: path to file 4512 * \return 4513 * data in file (you must free the pointer) 4514 * NULL an error occured 4515 */ 4516 void *readFileToS(const char *filePath) { 4517 FILE *f = NULL; 4518 void *r = NULL; 4519 ssize_t len; 4520 size_t readStatus; 4521 4522 // sanity checks 4523 if (!filePath || isBlankS(filePath)) { 4524 return(NULL); 4525 } 4526 4527 len = fileSize(filePath);; 4528 if (len == -1) { 4529 return(NULL); 4530 } 4531 4532 // +1 to add \0 at the end 4533 r = MALLOC((size_t)len+1); 4534 if (!r) { 4535 return(NULL); 4536 } 4537 4538 f = fopen(filePath, "r"); 4539 if (!f) { 4540 free(r); 4541 pFuncError 4542 shEPrintfS("The path was: \"%s\"\n", filePath); 4543 return(NULL); 4544 } 4545 readStatus = fread(r, 1, (size_t)len , f); 4546 fclose(f); 4547 4548 if (readStatus != (size_t)len) { 4549 free(r); 4550 pFuncError 4551 shEPrintfS("The path was: \"%s\"\n", filePath); 4552 return(NULL); 4553 } 4554 4555 *((char*)r+len) = 0; 4556 4557 return(r); 4558 } 4559 4560 /** 4561 * read file to string 4562 * 4563 * 0 is added at the end to terminate the string 4564 * 4565 * \param 4566 * fp file pointer 4567 * \return 4568 * data in file (you must free the pointer) 4569 * NULL an error occured 4570 */ 4571 void *readStreamToS(FILE *fp) { 4572 void *r = NULL; 4573 ssize_t len; 4574 size_t readStatus; 4575 4576 // sanity checks 4577 if (!fp) { 4578 return(NULL); 4579 } 4580 4581 len = fileSizeFP(fp);; 4582 if (len == -1) { 4583 return(NULL); 4584 } 4585 4586 // +1 to add \0 at the end 4587 r = MALLOC((size_t)len+1); 4588 if (!r) { 4589 return(NULL); 4590 } 4591 4592 readStatus = fread(r, 1, (size_t)len , fp); 4593 4594 if (readStatus != (size_t)len) { 4595 free(r); 4596 pFuncError 4597 return(NULL); 4598 } 4599 4600 *((char*)r+len) = 0; 4601 4602 return(r); 4603 } 4604 4605 4606 /** 4607 * buffer read file to string 4608 * 4609 * 0 is added at the end to terminate the string 4610 * 4611 * \param 4612 * dst: destination buffer 4613 * \param 4614 * filePath: path to file 4615 * \return 4616 * data in file 4617 * NULL an error occured 4618 */ 4619 void *bReadFileToS(const char *filePath, void *dst) { 4620 FILE *f = NULL; 4621 ssize_t len; 4622 size_t readStatus; 4623 4624 // sanity checks 4625 if (!filePath || isBlankS(filePath) || !dst) { 4626 return(NULL); 4627 } 4628 4629 len = fileSize(filePath);; 4630 if (len == -1) { 4631 return(NULL); 4632 } 4633 4634 f = fopen(filePath, "r"); 4635 if (!f) { 4636 pFuncError 4637 shEPrintfS("The path was: \"%s\"\n", filePath); 4638 return(NULL); 4639 } 4640 4641 readStatus = fread(dst, 1, (size_t)len , f); 4642 fclose(f); 4643 4644 if (readStatus != (size_t)len) { 4645 pFuncError 4646 shEPrintfS("The path was: \"%s\"\n", filePath); 4647 return(NULL); 4648 } 4649 4650 *((char*)dst+len) = 0; 4651 4652 return(dst); 4653 } 4654 4655 /** 4656 * buffer read file to string 4657 * 4658 * 0 is added at the end to terminate the string 4659 * 4660 * \param 4661 * dst: destination buffer 4662 * \param 4663 * fp file pointer 4664 * \return 4665 * data in file 4666 * NULL an error occured 4667 */ 4668 void *bReadStreamToS(FILE *fp, void *dst) { 4669 ssize_t len; 4670 size_t readStatus; 4671 4672 // sanity checks 4673 if (!fp || !dst) { 4674 return(NULL); 4675 } 4676 4677 len = fileSizeFP(fp);; 4678 if (len == -1) { 4679 return(NULL); 4680 } 4681 4682 readStatus = fread(dst, 1, (size_t)len , fp); 4683 4684 if (readStatus != (size_t)len) { 4685 pFuncError 4686 return(NULL); 4687 } 4688 4689 *((char*)dst+len) = 0; 4690 4691 return(dst); 4692 } 4693 4694 4695 /** 4696 * buffer size read file to string 4697 * 4698 * 0 is added at the end to terminate the string 4699 * 4700 * \param 4701 * filePath: path to file 4702 * \param 4703 * dst: destination buffer 4704 * \param 4705 * dstSize path buffer size, the path strlen will be at most dstSize-1 4706 * \return 4707 * data in file 4708 * NULL an error occured 4709 */ 4710 void *bLReadFileToS(const char *filePath, void *dst, size_t dstSize) { 4711 FILE *f = NULL; 4712 ssize_t len; 4713 size_t readStatus; 4714 4715 // sanity checks 4716 if (!filePath || isBlankS(filePath) || !dst) { 4717 return(NULL); 4718 } 4719 4720 if (!dstSize) { 4721 // size 0, no change in dst 4722 return(dst); 4723 } 4724 4725 len = fileSize(filePath);; 4726 if (len == -1) { 4727 return(NULL); 4728 } 4729 4730 // truncate if necessary 4731 len = ((size_t)len < dstSize) ? len : (ssize_t)dstSize-1; 4732 4733 f = fopen(filePath, "r"); 4734 if (!f) { 4735 pFuncError 4736 shEPrintfS("The path was: \"%s\"\n", filePath); 4737 return(NULL); 4738 } 4739 4740 readStatus = fread(dst, 1, (size_t)len , f); 4741 fclose(f); 4742 4743 if (readStatus != (size_t)len) { 4744 pFuncError 4745 shEPrintfS("The path was: \"%s\"\n", filePath); 4746 return(NULL); 4747 } 4748 4749 *((char*)dst+len) = 0; 4750 4751 return(dst); 4752 } 4753 4754 /** 4755 * buffer size read file to string 4756 * 4757 * 0 is added at the end to terminate the string 4758 * 4759 * \param 4760 * dst: destination buffer 4761 * \param 4762 * fp file pointer 4763 * \return 4764 * data in file 4765 * NULL an error occured 4766 */ 4767 void *bLReadStreamToS(FILE *fp, void *dst, size_t dstSize) { 4768 ssize_t len; 4769 size_t readStatus; 4770 4771 // sanity checks 4772 if (!fp || !dst) { 4773 return(NULL); 4774 } 4775 4776 if (!dstSize) { 4777 // size 0, no change in dst 4778 return(dst); 4779 } 4780 4781 len = fileSizeFP(fp);; 4782 if (len == -1) { 4783 return(NULL); 4784 } 4785 4786 // truncate if necessary 4787 len = ((size_t)len < dstSize) ? len : (ssize_t)dstSize-1; 4788 4789 readStatus = fread(dst, 1, (size_t)len , fp); 4790 4791 if (readStatus != (size_t)len) { 4792 pFuncError 4793 return(NULL); 4794 } 4795 4796 *((char*)dst+len) = 0; 4797 4798 return(dst); 4799 } 4800 4801 /** 4802 * read file to buffer 4803 * 4804 * The function allocates the buffer 4805 * 4806 * \param 4807 * filePath path to file 4808 * \param 4809 * buffer unallocated buffer 4810 * \return 4811 * data from file in buffer (you must free the pointer) 4812 * buffer size 4813 * -1 error 4814 */ 4815 ssize_t readFile(const char *filePath, void **buffer) { 4816 FILE *f = NULL; 4817 ssize_t len; 4818 size_t readStatus; 4819 4820 // sanity checks 4821 if (!filePath || isBlankS(filePath) || !buffer) { 4822 return(-1); 4823 } 4824 4825 len = fileSize(filePath);; 4826 if (len == -1) { 4827 return(-1); 4828 } 4829 4830 // +1 to add \0 at the end 4831 *buffer = MALLOC((size_t)len); 4832 if (!*buffer) { 4833 return(-1); 4834 } 4835 4836 f = fopen(filePath, "r"); 4837 if (!f) { 4838 free(*buffer); 4839 pFuncError 4840 shEPrintfS("The path was: \"%s\"\n", filePath); 4841 return(-1); 4842 } 4843 readStatus = fread(*buffer, 1, (size_t)len , f); 4844 fclose(f); 4845 4846 if (readStatus != (size_t)len) { 4847 free(*buffer); 4848 pFuncError 4849 shEPrintfS("The path was: \"%s\"\n", filePath); 4850 return(-1); 4851 } 4852 4853 return(len); 4854 } 4855 4856 4857 /** 4858 * buffer read file to buffer 4859 * 4860 * The function allocates the buffer 4861 * 4862 * \param 4863 * filePath path to file 4864 * \param 4865 * buffer already allocated buffer 4866 * \return 4867 * data from file in buffer 4868 * buffer size 4869 * -1 error 4870 */ 4871 ssize_t bReadFile(const char *filePath, void *buffer) { 4872 FILE *f = NULL; 4873 ssize_t len; 4874 size_t readStatus; 4875 4876 // sanity checks 4877 if (!filePath || isBlankS(filePath) || !buffer) { 4878 return(-1); 4879 } 4880 4881 len = fileSize(filePath);; 4882 if (len == -1) { 4883 return(-1); 4884 } 4885 4886 f = fopen(filePath, "r"); 4887 if (!f) { 4888 pFuncError 4889 shEPrintfS("The path was: \"%s\"\n", filePath); 4890 return(-1); 4891 } 4892 readStatus = fread(buffer, 1, (size_t)len , f); 4893 fclose(f); 4894 4895 if (readStatus != (size_t)len) { 4896 pFuncError 4897 shEPrintfS("The path was: \"%s\"\n", filePath); 4898 return(-1); 4899 } 4900 4901 return(len); 4902 } 4903 4904 4905 /** 4906 * buffer size read file to buffer 4907 * 4908 * The function allocates the buffer 4909 * 4910 * \param 4911 * filePath path to file 4912 * \param 4913 * buffer already allocated buffer 4914 * \param 4915 * dstSize path buffer size 4916 * \return 4917 * data from file in buffer 4918 * buffer size 4919 * -1 error 4920 */ 4921 ssize_t bLReadFile(const char *filePath, void *buffer, size_t dstSize) { 4922 FILE *f = NULL; 4923 ssize_t len; 4924 size_t readStatus; 4925 4926 // sanity checks 4927 if (!filePath || isBlankS(filePath) || !buffer) { 4928 return(-1); 4929 } 4930 4931 if (!dstSize) { 4932 return(0); 4933 } 4934 4935 len = fileSize(filePath);; 4936 if (len == -1) { 4937 return(-1); 4938 } 4939 4940 // truncate if necessary 4941 len = ((size_t)len < dstSize) ? len : (ssize_t)dstSize; 4942 4943 f = fopen(filePath, "r"); 4944 if (!f) { 4945 pFuncError 4946 shEPrintfS("The path was: \"%s\"\n", filePath); 4947 return(-1); 4948 } 4949 readStatus = fread(buffer, 1, (size_t)len , f); 4950 fclose(f); 4951 4952 if (readStatus != (size_t)len) { 4953 pFuncError 4954 shEPrintfS("The path was: \"%s\"\n", filePath); 4955 return(-1); 4956 } 4957 4958 return(len); 4959 } 4960 4961 4962 /** 4963 * write string to file 4964 * 4965 * \param 4966 * filePath path to file 4967 * string 4968 * \return 4969 * 1 success 4970 * 0 error 4971 */ 4972 int writeFileS(const char *filePath, const char *string) { 4973 FILE *f = NULL; 4974 size_t len; 4975 size_t writeStatus; 4976 4977 // sanity checks 4978 if (!filePath || isBlankS(filePath) || !string) { 4979 return(0); 4980 } 4981 4982 len = strlen(string); 4983 4984 f = fopen(filePath, "w"); 4985 if (!f) { 4986 pFuncError 4987 shEPrintfS("The path was: \"%s\"\n", filePath); 4988 return(0); 4989 } 4990 writeStatus = fwrite(string, 1, len , f); 4991 fclose(f); 4992 4993 if (writeStatus != len) { 4994 pFuncError 4995 shEPrintfS("The path was: \"%s\"\n", filePath); 4996 return(0); 4997 } 4998 4999 return(1); 5000 } 5001 5002 5003 /** 5004 * write buffer to file 5005 * 5006 * \param 5007 * filePath path to file 5008 * buffer 5009 * len buffer size in bytes 5010 * \return 5011 * 1 success 5012 * 0 error 5013 */ 5014 int writeFile(const char *filePath, void *buffer, size_t len) { 5015 FILE *f = NULL; 5016 size_t writeStatus; 5017 5018 // sanity checks 5019 if (!filePath || isBlankS(filePath) || !buffer) { 5020 return(0); 5021 } 5022 5023 f = fopen(filePath, "w"); 5024 if (!f) { 5025 pFuncError 5026 shEPrintfS("The path was: \"%s\"\n", filePath); 5027 return(0); 5028 } 5029 writeStatus = fwrite(buffer, 1, len , f); 5030 fclose(f); 5031 5032 if (writeStatus != len) { 5033 pFuncError 5034 shEPrintfS("The path was: \"%s\"\n", filePath); 5035 return(0); 5036 } 5037 5038 return(1); 5039 } 5040 5041 5042 /** 5043 * write string to file 5044 * 5045 * \param 5046 * fp file pointer 5047 * string 5048 * \return 5049 * 1 success 5050 * 0 error 5051 */ 5052 int writeStreamS(FILE *fp, const char *string) { 5053 size_t len; 5054 size_t writeStatus; 5055 5056 // sanity checks 5057 if (!fp || !string) { 5058 return(0); 5059 } 5060 5061 len = strlen(string); 5062 5063 writeStatus = fwrite(string, 1, len , fp); 5064 5065 if (writeStatus != len) { 5066 pFuncError 5067 return(0); 5068 } 5069 5070 return(1); 5071 } 5072 5073 /** 5074 * write buffer to file 5075 * 5076 * \param 5077 * fp file pointer 5078 * buffer 5079 * len buffer size in bytes 5080 * \return 5081 * 1 success 5082 * 0 error 5083 */ 5084 int writeLStream(FILE *fp, void *buffer, size_t len) { 5085 size_t writeStatus; 5086 5087 // sanity checks 5088 if (!fp || !buffer) { 5089 return(0); 5090 } 5091 5092 writeStatus = fwrite(buffer, 1, len , fp); 5093 5094 if (writeStatus != len) { 5095 pFuncError 5096 return(0); 5097 } 5098 5099 return(1); 5100 } 5101 5102 /** 5103 * append string to filePath 5104 * 5105 * \param 5106 * filePath path to file 5107 * string 5108 * \return 5109 * true success 5110 * false failed, filePath or list are NULL 5111 */ 5112 bool appendFileS(const char *filePath, const char *string) { 5113 FILE *fp = NULL; 5114 size_t len; 5115 size_t writeStatus; 5116 5117 // sanity checks 5118 if (!filePath || isBlankS(filePath) || !string) { 5119 return(false); 5120 } 5121 5122 len = strlen(string); 5123 5124 fp = fopen(filePath, "a"); 5125 if (!fp) { 5126 pFuncError 5127 shEPrintfS("The path was: \"%s\"\n", filePath); 5128 return(false); 5129 } 5130 writeStatus = fwrite(string, 1, len , fp); 5131 fclose(fp); 5132 5133 if (writeStatus != len) { 5134 pFuncError 5135 shEPrintfS("The path was: \"%s\"\n", filePath); 5136 return(false); 5137 } 5138 5139 return(true); 5140 } 5141 5142 /** 5143 * append buffer to file 5144 * 5145 * \param 5146 * filePath path to file 5147 * buffer 5148 * len buffer size in bytes 5149 * \return 5150 * true success 5151 * false error 5152 */ 5153 bool appendFile(const char *filePath, void *buffer, size_t len) { 5154 FILE *f = NULL; 5155 size_t writeStatus; 5156 5157 // sanity checks 5158 if (!filePath || isBlankS(filePath) || !buffer) { 5159 return(0); 5160 } 5161 5162 f = fopen(filePath, "a"); 5163 if (!f) { 5164 pFuncError 5165 shEPrintfS("The path was: \"%s\"\n", filePath); 5166 return(0); 5167 } 5168 writeStatus = fwrite(buffer, 1, len , f); 5169 fclose(f); 5170 5171 if (writeStatus != len) { 5172 pFuncError 5173 shEPrintfS("The path was: \"%s\"\n", filePath); 5174 return(0); 5175 } 5176 5177 return(1); 5178 } 5179 5180 /** 5181 * list all files in a directory recursively 5182 * and sort the list 5183 * 5184 * directories are not listed 5185 * 5186 * \param 5187 * dirPath: path to directory 5188 * \return 5189 * list of files (you must free the pointer with listFreeS) 5190 * empty list when the directory is not found 5191 */ 5192 char **walkDir(const char* dirPath) { 5193 char **list = NULL; 5194 5195 // sanity checks 5196 if (!dirPath || isBlankS(dirPath)) { 5197 return(NULL); 5198 } 5199 5200 walkADir(dirPath, &list); 5201 5202 pErrorNULL(iListSortS(&list)); 5203 5204 return(list); 5205 } 5206 5207 internal void walkADir(const char *dirPath, char ***list) { 5208 DIR *d = NULL; 5209 struct dirent *dp = NULL; 5210 char *sPath = NULL; 5211 5212 d = opendir(dirPath); 5213 if (!d) { 5214 pFuncError 5215 shEPrintfS("The path was: \"%s\"\n", dirPath); 5216 return; 5217 } 5218 5219 dp = readdir(d); 5220 while (dp) { 5221 if (eqS(dp->d_name, ".") || eqS(dp->d_name, "..")) { 5222 dp = readdir(d); 5223 continue; 5224 } 5225 5226 sPath = catS(dirPath, "/", dp->d_name); 5227 5228 if (isDir(sPath)) { 5229 if (!isLink(sPath)) { 5230 walkADir(sPath, list); 5231 } 5232 } 5233 else { 5234 pErrorNULL(listPushS(list, sPath)); 5235 } 5236 free(sPath); 5237 dp = readdir(d); 5238 } 5239 5240 closedir(d); 5241 } 5242 5243 /** 5244 * list all directories in a directory recursively 5245 * and sort the list 5246 * 5247 * files are not listed 5248 * 5249 * \param 5250 * dirPath: path to directory 5251 * \return 5252 * list of directories (you must free the pointer with listFreeS) 5253 * empty list when the directory is not found 5254 */ 5255 char **walkDirDir(const char* dirPath) { 5256 char **list = NULL; 5257 5258 // sanity checks 5259 if (!dirPath || isBlankS(dirPath)) { 5260 return(NULL); 5261 } 5262 5263 walkADirDir(dirPath, &list); 5264 5265 pErrorNULL(iListSortS(&list)); 5266 5267 return(list); 5268 } 5269 5270 internal void walkADirDir(const char *dirPath, char ***list) { 5271 DIR *d = NULL; 5272 struct dirent *dp = NULL; 5273 char *sPath = NULL; 5274 5275 d = opendir(dirPath); 5276 if (!d) { 5277 pFuncError 5278 shEPrintfS("The path was: \"%s\"\n", dirPath); 5279 return; 5280 } 5281 5282 dp = readdir(d); 5283 while (dp) { 5284 if (eqS(dp->d_name, ".") || eqS(dp->d_name, "..")) { 5285 dp = readdir(d); 5286 continue; 5287 } 5288 5289 sPath = catS(dirPath, "/", dp->d_name); 5290 5291 if (isDir(sPath)) { 5292 pErrorNULL(listPushS(list, sPath)); 5293 if (!isLink(sPath)) { 5294 walkADirDir(sPath, list); 5295 } 5296 } 5297 free(sPath); 5298 dp = readdir(d); 5299 } 5300 5301 closedir(d); 5302 } 5303 5304 /** 5305 * list files in a directory 5306 * and sort the list 5307 * 5308 * directories are not listed 5309 * 5310 * \param 5311 * dirPath: path to directory 5312 * \return 5313 * list of files, dirPath is not prepended to the file names (you must free the pointer with listFreeS) 5314 * empty list when the directory is not found 5315 */ 5316 char **readDir(const char *dirPath) { 5317 char **list = NULL; 5318 DIR *d = NULL; 5319 struct dirent *dp = NULL; 5320 5321 // sanity checks 5322 if (!dirPath || isBlankS(dirPath)) { 5323 return(NULL); 5324 } 5325 5326 d = opendir(dirPath); 5327 if (!d) { 5328 pFuncError 5329 shEPrintfS("The path was: \"%s\"\n", dirPath); 5330 return(NULL); 5331 } 5332 5333 dp = readdir(d); 5334 while (dp) { 5335 if (eqS(dp->d_name, ".") || eqS(dp->d_name, "..")) { 5336 dp = readdir(d); 5337 continue; 5338 } 5339 5340 char *sPath = catS(dirPath, "/", dp->d_name); 5341 5342 if (!isDir(sPath)) { 5343 pErrorNULL(listPushS(&list, dp->d_name)); 5344 } 5345 free(sPath); 5346 dp = readdir(d); 5347 } 5348 5349 closedir(d); 5350 5351 pErrorNULL(iListSortS(&list)); 5352 5353 return(list); 5354 } 5355 5356 /** 5357 * list directories in a directory 5358 * and sort the list 5359 * 5360 * files are not listed 5361 * 5362 * \param 5363 * dirPath: path to directory 5364 * \return 5365 * list of directories, dirPath is not prepended to the names (you must free the pointer with listFreeS) 5366 * empty list when the directory is not found 5367 */ 5368 char **readDirDir(const char *dirPath) { 5369 char **list = NULL; 5370 DIR *d = NULL; 5371 struct dirent *dp = NULL; 5372 5373 // sanity checks 5374 if (!dirPath || isBlankS(dirPath)) { 5375 return(NULL); 5376 } 5377 5378 d = opendir(dirPath); 5379 if (!d) { 5380 pFuncError 5381 shEPrintfS("The path was: \"%s\"\n", dirPath); 5382 return(NULL); 5383 } 5384 5385 dp = readdir(d); 5386 while (dp) { 5387 if (eqS(dp->d_name, ".") || eqS(dp->d_name, "..")) { 5388 dp = readdir(d); 5389 continue; 5390 } 5391 5392 char *sPath = catS(dirPath, "/", dp->d_name); 5393 5394 if (isDir(sPath)) { 5395 pErrorNULL(listPushS(&list, dp->d_name)); 5396 } 5397 free(sPath); 5398 dp = readdir(d); 5399 } 5400 5401 closedir(d); 5402 5403 pErrorNULL(iListSortS(&list)); 5404 5405 return(list); 5406 } 5407 5408 /** 5409 * list all files and directories in a directory recursively 5410 * and sort the list 5411 * 5412 * directories are listed 5413 * 5414 * \param 5415 * dirPath: path to directory 5416 * \return 5417 * list of files (you must free the pointer with listFreeS) 5418 * empty list when the directory is not found 5419 */ 5420 char **walkDirAll(const char* dirPath) { 5421 char **list = NULL; 5422 5423 // sanity checks 5424 if (!dirPath || isBlankS(dirPath)) { 5425 return(NULL); 5426 } 5427 5428 walkADirAll(dirPath, &list); 5429 5430 pErrorNULL(iListSortS(&list)); 5431 5432 return(list); 5433 } 5434 5435 internal void walkADirAll(const char *dirPath, char ***list) { 5436 DIR *d = NULL; 5437 struct dirent *dp = NULL; 5438 char *sPath = NULL; 5439 5440 d = opendir(dirPath); 5441 if (!d) { 5442 pFuncError 5443 shEPrintfS("The path was: \"%s\"\n", dirPath); 5444 return; 5445 } 5446 5447 dp = readdir(d); 5448 while (dp) { 5449 if (eqS(dp->d_name, ".") || eqS(dp->d_name, "..")) { 5450 dp = readdir(d); 5451 continue; 5452 } 5453 5454 sPath = catS(dirPath, "/", dp->d_name); 5455 5456 pErrorNULL(iListPushS(list, sPath)); 5457 5458 if (isDir(sPath)) { 5459 if (!isLink(sPath)) { 5460 walkADirAll(sPath, list); 5461 } 5462 } 5463 dp = readdir(d); 5464 } 5465 5466 closedir(d); 5467 } 5468 5469 /** 5470 * list files in a directory 5471 * and sort the list 5472 * 5473 * directories are listed 5474 * 5475 * \param 5476 * dirPath: path to directory 5477 * \return 5478 * list of files, dirPath is not prepended to the file names (you must free the pointer with listFreeS) 5479 * empty list when the directory is not found 5480 */ 5481 char **readDirAll(const char *dirPath) { 5482 char **list = NULL; 5483 DIR *d = NULL; 5484 struct dirent *dp = NULL; 5485 5486 // sanity checks 5487 if (!dirPath || isBlankS(dirPath)) { 5488 return(NULL); 5489 } 5490 5491 d = opendir(dirPath); 5492 if (!d) { 5493 pFuncError 5494 shEPrintfS("The path was: \"%s\"\n", dirPath); 5495 return(NULL); 5496 } 5497 5498 dp = readdir(d); 5499 while (dp) { 5500 if (eqS(dp->d_name, ".") || eqS(dp->d_name, "..")) { 5501 dp = readdir(d); 5502 continue; 5503 } 5504 5505 char *sPath = catS(dirPath, "/", dp->d_name); 5506 5507 pErrorNULL(listPushS(&list, dp->d_name)); 5508 free(sPath); 5509 dp = readdir(d); 5510 } 5511 5512 closedir(d); 5513 5514 pErrorNULL(iListSortS(&list)); 5515 5516 return(list); 5517 } 5518 5519 /** 5520 * get umask 5521 */ 5522 mode_t getUmask(void) { 5523 5524 mode_t mask = umask(0); 5525 umask(mask); 5526 return(mask); 5527 } 5528 5529 /** 5530 * get current permissions for creating directories 5531 */ 5532 mode_t getCurrentPermissions(void) { 5533 5534 return(0777 & ~getUmask()); 5535 } 5536 5537 /** 5538 * recursive mkdir 5539 * 5540 * \param 5541 * path 5542 * \return 5543 * 1 success 5544 * 0 when path is NULL or empty 5545 */ 5546 int mkdirParents(const char* path) { 5547 char tmp[8192]; 5548 char *p = NULL; 5549 size_t len; 5550 5551 // sanity checks 5552 if (!path || isBlankS(path)) { 5553 return(0); 5554 } 5555 5556 snprintf(tmp, sizeof(tmp),"%s", path); 5557 5558 len = strlen(tmp);; 5559 5560 mode_t mode = getCurrentPermissions(); 5561 5562 if (tmp[len - 1] == '/') { 5563 tmp[len - 1] = 0; 5564 } 5565 for (p = tmp + 1; *p; p++) { 5566 if (*p == '/') { 5567 *p = 0; 5568 if (mkdir(tmp, mode) == -1) { 5569 if (errno != EEXIST) { 5570 pFuncError 5571 shEPrintfS("The path was: \"%s\"\n", tmp); 5572 return(0); 5573 } 5574 } 5575 *p = '/'; 5576 } 5577 } 5578 5579 if (mkdir(tmp, mode) == -1) { 5580 if (errno != EEXIST) { 5581 pFuncError 5582 shEPrintfS("The path was: \"%s\"\n", tmp); 5583 return(0); 5584 } 5585 } 5586 return(1); 5587 } 5588 5589 /** 5590 * remove all 5591 * delete recursively files and directories 5592 * 5593 * \param 5594 * path 5595 * \return 5596 * 1 success 5597 * 0 when path is NULL or empty 5598 */ 5599 int rmAll(const char* path) { 5600 5601 // sanity checks 5602 if (!path || isBlankS(path)) { 5603 return(0); 5604 } 5605 5606 if (!isDir(path)) { 5607 int r; 5608 pErrorResultCmd(r, remove(path), == -1, pFuncError; shEPrintfS("The path was: \"%s\"\n", path)); 5609 return(r+1); 5610 } 5611 else { 5612 return(rmADir(path)); 5613 } 5614 } 5615 5616 int rmADir(const char *dirPath) { 5617 DIR *d = NULL; 5618 struct dirent *dp = NULL; 5619 char *sPath = NULL; 5620 int r = 1;; 5621 5622 d = opendir(dirPath); 5623 if (!d) { 5624 pFuncError 5625 shEPrintfS("The path was: \"%s\"\n", dirPath); 5626 return(0); 5627 } 5628 5629 dp = readdir(d); 5630 while (dp) { 5631 if (eqS(dp->d_name, ".") || eqS(dp->d_name, "..")) { 5632 dp = readdir(d); 5633 continue; 5634 } 5635 5636 int e = asprintf(&sPath, "%s/%s", dirPath, dp->d_name); 5637 if (e == -1) { 5638 pFuncError; 5639 shEPrintfS("The path was: \"%s\"\n", dirPath); 5640 closedir(d); 5641 return(0); 5642 } 5643 5644 5645 if (isDir(sPath)) { 5646 r = rmADir(sPath);; 5647 } 5648 else { 5649 pErrorResultCmd(r, remove(sPath), == -1, pFuncError; shEPrintfS("The path was: \"%s\"\n", sPath); r=0; free(sPath); break); 5650 r = 1; 5651 } 5652 dp = readdir(d); 5653 free(sPath); 5654 } 5655 5656 closedir(d); 5657 5658 int rd; 5659 pErrorResultCmd(rd, rmdir(dirPath), == -1, pFuncError; shEPrintfS("The path was: \"%s\"\n", dirPath); return(0));; 5660 return(r); 5661 } 5662 5663 5664 /** 5665 * copy files recursively 5666 * This function is equivalent to 'cp -Ra' without wildcards and circular link detection 5667 * 5668 * when src ends with /, the files in src are copied to dst 5669 * when src does't end with /, the last directory name in src is copied to dst 5670 * The permissions are copied to the destination 5671 * 5672 * \param 5673 * src source path 5674 * dst destination path 5675 * \return 5676 * 1 success 5677 * 0 when src or dst are NULL or empty 5678 */ 5679 int copy(const char* src, const char* dst) { 5680 5681 // sanity checks 5682 if (!src || !dst || isBlankS(src) || isBlankS(dst)) { 5683 return(0); 5684 } 5685 5686 if (!fileExists(src)) { 5687 return(0); 5688 } 5689 5690 if (!isDir(src)) { 5691 // copy file 5692 if (getS(dst, -1) == '/') { 5693 // dst name is a directory, add src basename to dst 5694 char *csrc = strdup(src); 5695 char *path = basename(csrc); 5696 char *dPath = alloca(strlen(dst) + 1 + strlen(path) + 1); 5697 sprintf(dPath, "%s/%s", dst, path); 5698 free(csrc); 5699 return(copyFile(src, dPath)); 5700 } 5701 else { 5702 return(copyFile(src, dst)); 5703 } 5704 } 5705 else { 5706 if (getS(src, -1) == '/') { 5707 if (!isDir(dst)) { 5708 // create dst dir when it doesn't exists 5709 if (!mkdirParents(dst)) { 5710 if (errno != EEXIST) { 5711 shEPrintfS("copy: mkdir destination error, path: %s\n", dst); 5712 return(0); 5713 } 5714 } 5715 } 5716 return(copyADir(src, dst, "")); 5717 } 5718 else { 5719 char *csrc = strdup(src); 5720 char *path = basename(csrc); 5721 char *dPath = alloca(strlen(dst) + 1 + strlen(path) + 1); 5722 sprintf(dPath, "%s/%s", dst, path); 5723 free(csrc); 5724 5725 if (!mkdirParents(dPath)) { 5726 if (errno != EEXIST) { 5727 shEPrintfS("copy: mkdir destination error, path: %s\n", dPath); 5728 return(0); 5729 } 5730 } 5731 5732 int r = copyADir(src, dPath, ""); 5733 5734 // copy permissions 5735 struct stat st; 5736 if (stat(src, &st)) { 5737 pFuncError 5738 shEPrintfS("The path was: \"%s\"\n", src); 5739 return(0); 5740 } 5741 if (chmod(dPath, st.st_mode & 07777)) { 5742 pFuncError 5743 shEPrintfS("The path was: \"%s\"\n", dPath); 5744 return(0); 5745 } 5746 return(r); 5747 } 5748 } 5749 } 5750 5751 int copyFile(const char* src, const char* dst) { 5752 FILE *fsrc = NULL; 5753 FILE *fdst = NULL; 5754 char buf[8192]; 5755 5756 fsrc = fopen(src, "r"); 5757 pTestErrorCmd(fsrc == NULL, shEPrintfS("The source file was: %s\n", src); return(0));; 5758 5759 fdst = fopen(dst, "w"); 5760 pTestErrorCmd(fdst == NULL, shEPrintfS("The destination file was: %s\n", dst); fclose(fsrc); return(0));; 5761 5762 while (1) { 5763 size_t readStatus = fread(buf, 1, sizeof(buf), fsrc); 5764 5765 if (!readStatus) { 5766 break; 5767 } 5768 5769 size_t writeStatus = fwrite(buf, 1, readStatus, fdst); 5770 if (writeStatus != readStatus) { 5771 shPrintError 5772 shEPrintfS("The path was: \"%s\"\n", dst); 5773 fclose(fsrc); 5774 fclose(fdst); 5775 return(0); 5776 } 5777 } 5778 5779 // copy permissions 5780 struct stat st; 5781 if (stat(src, &st)) { 5782 pFuncError 5783 shEPrintfS("The path was: \"%s\"\n", src); 5784 fclose(fsrc); 5785 fclose(fdst); 5786 return(0); 5787 } 5788 if (chmod(dst, st.st_mode & 07777)) { 5789 pFuncError 5790 shEPrintfS("The path was: \"%s\"\n", dst); 5791 fclose(fsrc); 5792 fclose(fdst); 5793 return(0); 5794 } 5795 5796 fclose(fsrc); 5797 fclose(fdst); 5798 return(1); 5799 } 5800 5801 int copyADir(const char *src, const char *dst, const char *path) { 5802 DIR *d = NULL; 5803 struct dirent *dp = NULL; 5804 char *sPath = NULL; 5805 char *dPath = NULL; 5806 char *currentPath = NULL; 5807 int r = 1;; 5808 char *currentSrc = NULL; 5809 char *currentDst = NULL; 5810 5811 asprintf(¤tSrc, "%s/%s", src, path); 5812 asprintf(¤tDst, "%s/%s", dst, path); 5813 5814 d = opendir(currentSrc); 5815 if (!d) { 5816 pFuncError 5817 shEPrintfS("The path was: \"%s\"\n", currentSrc); 5818 free(currentSrc); 5819 free(currentDst); 5820 return(0); 5821 } 5822 5823 dp = readdir(d); 5824 while (dp) { 5825 if (eqS(dp->d_name, ".") || eqS(dp->d_name, "..")) { 5826 dp = readdir(d); 5827 continue; 5828 } 5829 5830 asprintf(&sPath, "%s/%s", currentSrc, dp->d_name); 5831 asprintf(&dPath, "%s/%s", currentDst, dp->d_name); 5832 5833 if (isDir(sPath)) { 5834 if (isLink(sPath)) { 5835 dp = readdir(d); 5836 free(sPath); 5837 free(dPath); 5838 continue; 5839 } 5840 mode_t mode = getCurrentPermissions(); 5841 if (mkdir(dPath, mode) == -1) { 5842 if (errno != EEXIST) { 5843 pFuncError 5844 shEPrintfS("The path was: \"%s\"\n", dPath); 5845 r = 0; 5846 free(sPath); 5847 } 5848 free(dPath); 5849 break; 5850 } 5851 asprintf(¤tPath, "%s/%s", path, dp->d_name); 5852 r = copyADir(src, dst, currentPath);; 5853 free(currentPath); 5854 // copy permissions 5855 struct stat st; 5856 if (stat(sPath, &st)) { 5857 pFuncError 5858 shEPrintfS("The path was: \"%s\"\n", sPath); 5859 r = 0; 5860 free(sPath); 5861 free(dPath); 5862 break; 5863 } 5864 if (chmod(dPath, st.st_mode & 07777)) { 5865 pFuncError 5866 shEPrintfS("The path was: \"%s\"\n", dPath); 5867 r = 0; 5868 free(sPath); 5869 free(dPath); 5870 break; 5871 } 5872 } 5873 else { 5874 pErrorResultCmd(r, copyFile(sPath, dPath), == 0, pFuncError; shEPrintfS("The path was: \"%s\"\n", sPath); free(sPath); free(dPath); break); 5875 } 5876 dp = readdir(d); 5877 free(sPath); 5878 free(dPath); 5879 } 5880 5881 closedir(d); 5882 free(currentSrc); 5883 free(currentDst); 5884 return(r); 5885 } 5886 5887 /** 5888 * rename file 5889 * 5890 * \param 5891 * src source path 5892 * dst destination path 5893 * \return 5894 * 1 success 5895 * 0 when src or dst are NULL or empty 5896 */ 5897 int shRename(const char* src, const char* dst) { 5898 5899 // sanity checks 5900 if (!src || !dst || isBlankS(src) || isBlankS(dst)) { 5901 return(0); 5902 } 5903 5904 if (!fileExists(src)) { 5905 return(0); 5906 } 5907 5908 int r = rename(src, dst);; 5909 if (r) { 5910 pFuncError 5911 shEPrintfS("The source path was: \"%s\"\n", src); 5912 shEPrintfS("The destination path was: \"%s\"\n", src); 5913 return(0); 5914 } 5915 return(1); 5916 } 5917 5918 5919 /** 5920 * move files recursively 5921 * 5922 * copy and then delete source 5923 * 5924 * called shMove because it conflicts with move in ncurses 5925 * 5926 * \param 5927 * src source path 5928 * \param 5929 * dst destination path 5930 * \return 5931 * 1 success 5932 * 0 when src or dst are NULL or empty 5933 */ 5934 int shMove(const char* src, const char* dst) { 5935 5936 int r = copy(src, dst);; 5937 if (!r) { 5938 return(r); 5939 } 5940 5941 r = rmAll(src);; 5942 return(r); 5943 } 5944 5945 // internal file pointer to /dev/urandom 5946 // used in the random functions 5947 static FILE *urandomFp = NULL; 5948 5949 // selected random function 5950 typedef uint64_t (*randomWordFt)(void); 5951 static randomWordFt randomWordF = randomWord; 5952 5953 /** 5954 * use software random numbers 5955 * works on all cpu architectures 5956 * the default random function is software 5957 */ 5958 void setSoftwareRandom(void) { 5959 5960 randomWordF = randomWord; 5961 pError0(randomUrandomOpen()); 5962 } 5963 5964 /** 5965 * use cpu hardware random number generator 5966 */ 5967 void setHardwareRandom(void) { 5968 5969 #ifdef __GNUC__ 5970 randomWordF = randomWordFromHW; 5971 #endif 5972 } 5973 5974 /** 5975 * open /dev/urandom in libsheepy 5976 * 5977 * call this function before calling randomWord and randomChoice 5978 * when random are not needed anymore call randomUrandomClose 5979 * 5980 * \return 5981 * 1 success 5982 * 0 error 5983 */ 5984 int randomUrandomOpen(void) { 5985 5986 // TODO close random file at exit, dont close in random functions 5987 // to be able to open several times, like hashtableInit 5988 if (urandomFp) { 5989 return(1); 5990 } 5991 urandomFp = fopen("/dev/urandom", "r"); 5992 if (!urandomFp) { 5993 return(0); 5994 } 5995 else { 5996 return(1); 5997 } 5998 } 5999 6000 6001 /** 6002 * close /dev/urandom in libsheepy 6003 * call this function when random are not needed anymore 6004 */ 6005 void randomUrandomClose(void) { 6006 6007 if (urandomFp) { 6008 fclose(urandomFp); 6009 urandomFp = NULL; 6010 } 6011 } 6012 6013 6014 /** 6015 * return random 64 bit unsigned integer 6016 * call randomUrandomOpen before this calling function 6017 * 6018 * \return 6019 * random uint64 integer 6020 * 0 error urandomFp file is NULL or fread failed 6021 */ 6022 uint64_t randomWord(void) { 6023 uint64_t r; 6024 size_t readStatus; 6025 6026 if (!urandomFp) { 6027 return(0); 6028 } 6029 6030 readStatus = fread(&r, sizeof(r), 1 , urandomFp); 6031 6032 if (readStatus != 1) { 6033 pFuncError 6034 return(0); 6035 } 6036 if (r == 0) { 6037 // -1 is not a valid return value, it signals errors 6038 r++; 6039 } 6040 return(r); 6041 } 6042 6043 /** 6044 * return random 64 bit unsigned integer from the cpu 6045 * when the cpu doesn't have the random generator instruction, the program 6046 * stops with 'Illegal instruction' 6047 */ 6048 uint64_t randomWordFromHW(void) { 6049 unsigned long long r; 6050 6051 #ifdef __GNUC__ 6052 #if (!defined(__arm__) && !defined(__aarch64__) && !defined(__riscv) && !defined(__i386__)) 6053 // TODO valgrind doesn't support the rdrand instruction 171117 6054 #ifndef unitTest 6055 _rdrand64_step(&r); 6056 #else 6057 r = 'a';; 6058 // unitTest 6059 #endif 6060 #else 6061 logE("HW Random generator not available on the ARM platform"); 6062 return(0); 6063 // __arm__ || __aarch64__ || __riscv || __i386__ 6064 #endif 6065 // __GNUC__ 6066 #endif 6067 return((uint64_t)r); 6068 } 6069 6070 /** 6071 * return a random value between 0 and range 0<=value<range 6072 * call randomUrandomOpen before this calling function 6073 * 6074 * \param 6075 * range - must be > 0 6076 * \return 6077 * random uint64 0<=value<range 6078 * range error 6079 */ 6080 uint64_t randomChoice(uint64_t range) { 6081 uint64_t r; 6082 6083 if (range == 0) { 6084 // range 0 is invalid 6085 return(range); 6086 } 6087 r = randomWordF(); 6088 if (r == 0) { 6089 return(range); 6090 } 6091 else { 6092 return(randomWordF() % range); 6093 } 6094 } 6095 6096 // TODO create random string function that takes charset as parameter 6097 /** 6098 * random string 6099 * 6100 * allocate and generate a random string in charset "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-," 6101 * 6102 * 6103 * \param 6104 * string length 6105 * \return 6106 * random string (you must free the pointer) 6107 * NULL error opening /dev/urandom, malloc failed, fread /dev/urandom failed, length is 0 6108 */ 6109 char *randomS(uint64_t length) { 6110 char charset[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-,";; 6111 char *r = NULL; 6112 char *workingP = NULL; 6113 int rOpen; 6114 6115 // sanity checks 6116 if (length == 0) { 6117 return(NULL); 6118 } 6119 6120 // open /dev/urandom 6121 if (randomWordF == randomWord) { 6122 rOpen = randomUrandomOpen();; 6123 if (!rOpen) { 6124 return(NULL); 6125 } 6126 } 6127 6128 // allocate result 6129 // dont use MALLOC here, the test fails 6130 r = malloc(length+1);; 6131 if (!r) { 6132 return(NULL); 6133 } 6134 6135 workingP = r; 6136 6137 // generate random values 6138 while (length-- > 0) { 6139 uint64_t rChoice; 6140 size_t len = strlen(charset); 6141 6142 rChoice = randomChoice(len); 6143 if (rChoice == len) { 6144 free(r); 6145 return(NULL); 6146 } 6147 6148 *workingP++ = charset[rChoice]; 6149 } 6150 6151 *workingP = '\0'; 6152 6153 return(r); 6154 } 6155 6156 /** 6157 * buffer random string 6158 * 6159 * allocate and generate a random string in charset "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-," 6160 * 6161 * \param 6162 * dst destination buffer 6163 * \param 6164 * dstSize destination buffer size, must be at least 2, to have at least 1 random char in the string 6165 * \return 6166 * random string 6167 * NULL error opening /dev/urandom, malloc failed, fread /dev/urandom failed, length is 0 6168 */ 6169 char *bRandomS(char *dst, size_t dstSize) { 6170 char charset[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-,";; 6171 char *workingP = NULL; 6172 int rOpen; 6173 6174 // sanity checks 6175 if (!dst || dstSize < 2) { 6176 return(NULL); 6177 } 6178 6179 // open /dev/urandom 6180 if (randomWordF == randomWord) { 6181 rOpen = randomUrandomOpen();; 6182 if (!rOpen) { 6183 return(NULL); 6184 } 6185 } 6186 6187 workingP = dst; 6188 // keep space for NUL char at the end if the string 6189 dstSize--; 6190 6191 // generate random values 6192 while (dstSize-- > 0) { 6193 uint64_t rChoice; 6194 size_t len = strlen(charset); 6195 6196 rChoice = randomChoice(len); 6197 if (rChoice == len) { 6198 return(NULL); 6199 } 6200 6201 *workingP++ = charset[rChoice]; 6202 } 6203 6204 *workingP = '\0'; 6205 6206 return(dst); 6207 } 6208 6209 /** 6210 * random alpha numerical string 6211 * 6212 * allocate and generate a random string in charset "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" 6213 * 6214 * 6215 * \param 6216 * string length 6217 * \return 6218 * random string (you must free the pointer) 6219 * NULL error opening /dev/urandom, malloc failed, fread /dev/urandom failed, length is 0 6220 */ 6221 char *randomAlphaNumS(uint64_t length) { 6222 char charset[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";; 6223 char *r = NULL; 6224 char *workingP = NULL; 6225 int rOpen; 6226 6227 // sanity checks 6228 if (length == 0) { 6229 return(NULL); 6230 } 6231 6232 // open /dev/urandom 6233 if (randomWordF == randomWord) { 6234 rOpen = randomUrandomOpen();; 6235 if (!rOpen) { 6236 return(NULL); 6237 } 6238 } 6239 6240 // allocate result 6241 // dont use MALLOC here, the test fails 6242 r = malloc(length+1);; 6243 if (!r) { 6244 return(NULL); 6245 } 6246 6247 workingP = r; 6248 6249 // generate random values 6250 while (length-- > 0) { 6251 uint64_t rChoice; 6252 size_t len = strlen(charset); 6253 6254 rChoice = randomChoice(len); 6255 if (rChoice == len) { 6256 free(r); 6257 return(NULL); 6258 } 6259 6260 *workingP++ = charset[rChoice]; 6261 } 6262 6263 *workingP = '\0'; 6264 6265 return(r); 6266 } 6267 6268 /** 6269 * buffer random alpha numerical string 6270 * 6271 * allocate and generate a random string in charset "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" 6272 * 6273 * \param 6274 * dst destination buffer 6275 * \param 6276 * dstSize destination buffer size, must be at least 2, to have at least 1 random char in the string 6277 * \return 6278 * random string 6279 * NULL error opening /dev/urandom, malloc failed, fread /dev/urandom failed, length is 0 6280 */ 6281 char *bRandomAlphaNumS(char *dst, size_t dstSize) { 6282 char charset[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";; 6283 char *workingP = NULL; 6284 int rOpen; 6285 6286 // sanity checks 6287 if (!dst || dstSize < 2) { 6288 return(NULL); 6289 } 6290 6291 // open /dev/urandom 6292 if (randomWordF == randomWord) { 6293 rOpen = randomUrandomOpen();; 6294 if (!rOpen) { 6295 return(NULL); 6296 } 6297 } 6298 6299 workingP = dst; 6300 // keep space for NUL char at the end if the string 6301 dstSize--; 6302 6303 // generate random values 6304 while (dstSize-- > 0) { 6305 uint64_t rChoice; 6306 size_t len = strlen(charset); 6307 6308 rChoice = randomChoice(len); 6309 if (rChoice == len) { 6310 return(NULL); 6311 } 6312 6313 *workingP++ = charset[rChoice]; 6314 } 6315 6316 *workingP = '\0'; 6317 6318 return(dst); 6319 } 6320 6321 #define startMax 20 6322 6323 /** 6324 * read String 6325 * read user input (one line) as a string 6326 * 6327 * there is no size limit and the buffer expands as needed 6328 * 6329 * \return 6330 * line from the user (you must free the pointer) 6331 * NULL when buffer allocation failed 6332 */ 6333 char *readS(void) { 6334 int max = startMax;; 6335 6336 char *s = MALLOC((size_t)max); 6337 if (!s) { 6338 return(NULL); 6339 } 6340 6341 int i = 0; 6342 while (1) { 6343 #ifndef unitTest 6344 int c = getchar(); 6345 #else 6346 int c; 6347 if (i < startMax) { 6348 c = 'a'; 6349 } 6350 else { 6351 c = '\n'; 6352 } 6353 #endif 6354 if (c == '\n') { 6355 s[i] = 0; 6356 break; 6357 } 6358 s[i] = (char)c; 6359 if (i == max-1) { 6360 // buffer full 6361 max += max; 6362 char *tmp = REALLOC(s, (size_t)max); 6363 if (!tmp) { 6364 free(s); 6365 return(NULL); 6366 } 6367 s = tmp; 6368 } 6369 i++; 6370 } 6371 return(s); 6372 } 6373 6374 /** 6375 * buffer read String 6376 * read user input (one line) as a string 6377 * 6378 * \param 6379 * dst destination buffer 6380 * \param 6381 * dstSize destination buffer size, must be at least 2, to have at least 1 char from the user in the string 6382 * \return 6383 * line from the user 6384 * NULL when buffer allocation failed 6385 */ 6386 char *bLReadS(char *dst, size_t dstSize) { 6387 size_t i = 0;; 6388 6389 if (!dst || dstSize < 2) { 6390 return(NULL); 6391 } 6392 6393 while (1) { 6394 #ifndef unitTest 6395 int c = getchar(); 6396 #else 6397 int c; 6398 if (i < dstSize-1) { 6399 c = 'a'; 6400 } 6401 else { 6402 c = '\n'; 6403 } 6404 #endif 6405 if (c == '\n' || i == dstSize-1) { 6406 dst[i] = 0; 6407 break; 6408 } 6409 dst[i] = (char)c; 6410 i++; 6411 } 6412 return(dst); 6413 } 6414 6415 /** 6416 * sheepy get pass 6417 * 6418 * like getpass, read password from tty 6419 * 6420 * currently used in Termux because getpass is missging 6421 */ 6422 UNUSED local char *shGetpass(void) { 6423 char *r = NULL; 6424 6425 #ifndef unitTest 6426 struct termios old; 6427 struct termios new; 6428 6429 // inspired by https://www.gnu.org/software/libc/manual/html_node/getpass.html 6430 FILE *stream = fopen("/dev/tty", "w+ce"); 6431 if (!stream) { 6432 return(NULL); 6433 } 6434 6435 /* Turn echoing off and fail if we can’t. */ 6436 if (tcgetattr (fileno (stream), &old) != 0) { 6437 fclose(stream); 6438 return(NULL); 6439 } 6440 new = old; 6441 new.c_lflag &= ~(tcflag_t)ECHO; 6442 if (tcsetattr (fileno (stream), TCSAFLUSH, &new) != 0) { 6443 fclose(stream); 6444 return(NULL); 6445 } 6446 6447 /* Read the password. */ 6448 r = readS();; 6449 6450 /* Restore terminal. */ 6451 (void) tcsetattr (fileno (stream), TCSAFLUSH, &old); 6452 fclose(stream); 6453 #else 6454 r = strdup("*****");; 6455 #endif 6456 6457 return(r); 6458 } 6459 6460 /** 6461 * read hidden password string 6462 * 6463 * \return 6464 * newly allocated password string (you must free the pointer) 6465 */ 6466 char *readPasswordS(void) { 6467 6468 #if (__TERMUX__ || __HAIKU__ || unitTest) 6469 char *r = shGetpass(); 6470 #else 6471 // TODO getpass is obsolete, see man for getpass 6472 char *p = getpass(""); 6473 if (!p) { 6474 return(NULL); 6475 } 6476 char *r = strdup(p); 6477 memset(p, 0, strlen(p)); 6478 #endif 6479 return(r); 6480 } 6481 6482 /** 6483 * write zero to all bytes in string with memset, for clearing password buffers 6484 * 6485 * \param 6486 * string 6487 * \return 6488 * true 0s are written 6489 * false error string is NULL 6490 * 6491 */ 6492 bool zeroS(char *string) { 6493 6494 if (!string) { 6495 return(false); 6496 } 6497 6498 memset(string, 0, strlen(string)); 6499 return(true); 6500 } 6501 6502 /** 6503 * write zero to all bytes in buffer with memset 6504 * 6505 * \param 6506 * buf buffer 6507 * \param 6508 * len length 6509 * \return 6510 * true 0s are written 6511 * false error string is NULL 6512 * 6513 */ 6514 bool zeroBuf(void *buf, size_t len) { 6515 6516 if (!buf || !len) { 6517 return(false); 6518 } 6519 6520 memset(buf, 0, len); 6521 return(true); 6522 } 6523 6524 /** 6525 * memory duplicate 6526 * allocate and copy buffer 6527 * 6528 * \param 6529 * buf buffer to duplicate 6530 * \param 6531 * size buffer size 6532 * \return 6533 * duplicated buffer (you must free the pointer) 6534 * NULL when there is an error 6535 * 6536 */ 6537 void *memdup(const void *buf, size_t size) { 6538 6539 // sanity checks 6540 if (!buf || !size) { 6541 return(NULL); 6542 } 6543 6544 void* out = MALLOC(size); 6545 if (out != NULL) { 6546 memcpy(out, buf, size); 6547 } 6548 6549 return(out); 6550 } 6551 6552 6553 /** 6554 * read Enter key 6555 * wait until press the enter key 6556 */ 6557 void readEnter(void) { 6558 6559 while (1) { 6560 #ifndef unitTest 6561 int c = getchar(); 6562 #else 6563 int c = '\n'; 6564 #endif 6565 if (c == '\n') { 6566 break; 6567 } 6568 } 6569 } 6570 6571 /** 6572 * readLine from file stream 6573 * the fist new line is converted to 0 6574 * 6575 * \param 6576 * fp: file stream 6577 * \return 6578 * one line in a string (you must free the pointer) 6579 * empty string when stream is empty or when there is an error reading the stream 6580 * NULL when the stream is NULL 6581 */ 6582 char *readLine(FILE *fp) { 6583 size_t len; 6584 char* line = NULL; 6585 ssize_t read; 6586 6587 // sanity checks 6588 if (!fp) { 6589 return(NULL); 6590 } 6591 6592 // read line 6593 read = getline(&line, &len, (FILE *)fp); 6594 if (read == -1) { 6595 // there is whatever data in the line buffer, free 6596 free(line); 6597 return(strdup("")); 6598 } 6599 // convert new line char to 0 6600 { 6601 char* pos = NULL; 6602 pos = strchr(line, '\n'); 6603 if (pos != NULL) 6604 *pos = '\0'; 6605 } 6606 return(line); 6607 } 6608 6609 /** 6610 * free Many String 6611 * 6612 * free variable list of pointers 6613 * freeManyS(s1, s2, ...); 6614 */ 6615 void freeManySF(char *paramType, ...) { 6616 va_list pl; 6617 6618 // add arguments to a list 6619 va_start(pl, paramType); 6620 paramType = va_arg(pl, char *); 6621 while (paramType) { 6622 free(paramType); 6623 paramType = va_arg(pl, char *); 6624 } 6625 va_end(pl); 6626 } 6627 6628 /** 6629 * duplicate string 6630 * 6631 * \param 6632 * string 6633 * \return 6634 * new identical string (you must free the pointer) 6635 * NULL when string is NULL 6636 */ 6637 char *dupS(const char *string) { 6638 6639 if (!string) { 6640 return(NULL); 6641 } 6642 return(strdup(string)); 6643 } 6644 6645 /** 6646 * sheepy Print String 6647 * 6648 * same as printf 6649 * when the formating string is NULL, "(null)" is printed 6650 * 6651 * \param 6652 * format string - can be NULL 6653 * data 6654 */ 6655 void shPrintfS(const char *fmt, ...) { 6656 va_list pl; 6657 6658 if (!fmt) { 6659 puts("(null)"); 6660 return; 6661 } 6662 va_start(pl, fmt); 6663 vfprintf(stdout, fmt, pl); 6664 va_end(pl); 6665 } 6666 6667 /** 6668 * sheepy Error printf String 6669 * print with logE 6670 * 6671 * when the formating string is NULL, "(null)" is printed 6672 * 6673 * \param 6674 * format string like printf 6675 * \return 6676 * print with logE 6677 */ 6678 void shEPrintfS(const char *fmt, ...) { 6679 va_list pl; 6680 6681 if (((libsheepyErrorMask) & logMask)) { 6682 if (!fmt) { 6683 logE("(null)\n"); 6684 return; 6685 } 6686 // print with logE 6687 char *s = NULL; 6688 va_start(pl, fmt); 6689 vasprintf(&s, fmt, pl); 6690 va_end(pl); 6691 logE(s); 6692 free(s); 6693 } 6694 } 6695 6696 /** 6697 * log and free 6698 * 6699 * \param 6700 * string to print, can be NULL 6701 */ 6702 void logNFree(char *s) { 6703 6704 if (s) { 6705 puts(s); 6706 free(s); 6707 } 6708 } 6709 6710 /** 6711 * print buffer as hexadecimal string 6712 */ 6713 void loghex(const void *buf, size_t len) { 6714 const uint8_t *b = NULL; 6715 6716 if (!buf || !len) { 6717 return; 6718 } 6719 6720 b = buf; 6721 for (size_t i = 0; i < len-1; i++) { 6722 printf("0x%02x ", b[i]); 6723 } 6724 printf("0x%02x", b[len-1]); 6725 } 6726 6727 /** 6728 * create a string with bytes in buf converted to hex strings 6729 * 6730 * \param 6731 * buf buffer to convert to hexstring 6732 * \param 6733 * len buffer size in bytes 6734 * \return 6735 * string representing the buffer in hexadecimal "0x01, 0x02,..." (you must free the pointer) 6736 */ 6737 char *toHexS(const void *buf, size_t len) { 6738 const uint8_t *b = NULL; 6739 char *r = NULL; 6740 6741 if (!buf || !len) { 6742 return(NULL); 6743 } 6744 6745 r = MALLOC(sizeof(char) * (6*len-2+1));; 6746 if (!r) { 6747 return(NULL); 6748 } 6749 6750 *r = 0; 6751 char *c = r; 6752 6753 b = buf; 6754 for (size_t i = 0; i < len-1; i++) { 6755 sprintf(c, "0x%02x, ", b[i]); 6756 c += 6;; 6757 } 6758 sprintf(c, "0x%02x", b[len-1]); 6759 6760 return(r); 6761 } 6762 6763 /** 6764 * create a string with bytes in buf converted to hex strings separated by separator 6765 * 6766 * \param 6767 * buf buffer to convert to hexstring 6768 * \param 6769 * len buffer size in bytes 6770 * \param 6771 * separator separator between the hexadecimal numbers 6772 * \return 6773 * string representing the buffer in hexadecimal "0x01SEP0x02SEP..." (you must free the pointer) 6774 */ 6775 char *toHexSepS(const void *buf, size_t len, const char *separator) { 6776 const uint8_t *b = NULL; 6777 char *r = NULL; 6778 6779 if (!buf || !len || !separator) { 6780 return(NULL); 6781 } 6782 6783 size_t sepLen = strlen(separator);; 6784 6785 r = MALLOC(sizeof(char) * ((4+sepLen)*len-sepLen+1));; 6786 if (!r) { 6787 return(NULL); 6788 } 6789 6790 *r = 0; 6791 char *c = r; 6792 6793 b = buf; 6794 for (size_t i = 0; i < len-1; i++) { 6795 sprintf(c, "0x%02x%s", b[i], separator); 6796 c += 4+sepLen;; 6797 } 6798 sprintf(c, "0x%02x", b[len-1]); 6799 6800 return(r); 6801 } 6802 6803 /** 6804 * create a string with bytes in buf converted to hex strings separated by separator and with head string in front of earch byte: HEADffSEP 6805 * 6806 * \param 6807 * buf buffer to convert to hexstring 6808 * \param 6809 * len buffer size in bytes 6810 * \param 6811 * head separator before each hexadecimal numbers 6812 * \param 6813 * separator separator after each hexadecimal numbers 6814 * \return 6815 * string representing the buffer in hexadecimal "HEAD0x01SEPHEAD0x02SEP..." (you must free the pointer) 6816 */ 6817 char *toHexHeadSepS(const void *buf, size_t len, const char *head, const char *separator) { 6818 const uint8_t *b = NULL; 6819 char *r = NULL; 6820 6821 if (!buf || !len || !separator || !head) { 6822 return(NULL); 6823 } 6824 6825 size_t headLen = strlen(head);; 6826 size_t sepLen = strlen(separator);; 6827 6828 r = MALLOC(sizeof(char) * ((2+headLen+sepLen)*len-sepLen+1));; 6829 if (!r) { 6830 return(NULL); 6831 } 6832 6833 *r = 0; 6834 char *c = r; 6835 6836 b = buf; 6837 for (size_t i = 0; i < len-1; i++) { 6838 sprintf(c, "%s%02x%s", head, b[i], separator); 6839 c += 2+headLen+sepLen;; 6840 } 6841 sprintf(c, "%s%02x", head, b[len-1]); 6842 6843 return(r); 6844 } 6845 6846 6847 /** 6848 * strCpy - copy src to dst 6849 * 6850 * like strcpy with sanity checks 6851 * 6852 * \param 6853 * dst destination buffer 6854 * \param 6855 * src source string 6856 * \return 6857 * dst string 6858 * NULL error 6859 */ 6860 char *strCpy(char *restrict dst, const char *restrict src) { 6861 6862 if (!dst || !src) { 6863 return(NULL); 6864 } 6865 6866 return(strcpy(dst, src)); 6867 } 6868 6869 6870 /** 6871 * strNCpy - copy src to dst 6872 * 6873 * null safe version of strncpy 6874 * 6875 * \param 6876 * dst destination buffer 6877 * \param 6878 * src source string 6879 * \param 6880 * srcSize source buffer size 6881 * \return 6882 * dst string 6883 * NULL error 6884 */ 6885 char *strNCpy(char *restrict dst, const char *restrict src, size_t srcSize) { 6886 6887 if (!dst || !src) { 6888 return(NULL); 6889 } 6890 6891 char *r = strncpy(dst, src, srcSize);; 6892 return(r); 6893 } 6894 6895 6896 /** 6897 * strLCpy - copy src to dst 6898 * 6899 * like strncpy and the NUL char is always added at the end of the string 6900 * 6901 * \param 6902 * dst destination buffer 6903 * \param 6904 * dstSize destination buffer size, result string will be no longer than dstSize-1 6905 * \param 6906 * src source string 6907 * \return 6908 * dst string 6909 * NULL error 6910 */ 6911 char *strLCpy(char *restrict dst, size_t dstSize, const char *restrict src) { 6912 6913 if (!dst || !src) { 6914 return(NULL); 6915 } 6916 6917 char *r = strncpy(dst, src, dstSize);; 6918 if (dstSize) { 6919 r[dstSize-1] = 0; 6920 } 6921 return(r); 6922 } 6923 6924 /** 6925 * strCat - concatenate two strings 6926 * 6927 * like strcat with sanity checks 6928 * 6929 * \param 6930 * dst destination buffer 6931 * \param 6932 * src source string 6933 * \return 6934 * string with input strings concatenated 6935 * NULL error 6936 */ 6937 char *strCat(char *restrict dst, const char *restrict src) { 6938 6939 if (!dst || !src) { 6940 return(NULL); 6941 } 6942 6943 return(strcat(dst, src)); 6944 } 6945 6946 /** 6947 * strNCat - concatenate two strings 6948 * 6949 * like strncat with sanity checks 6950 * 6951 * \param 6952 * dst destination buffer 6953 * \param 6954 * src source string 6955 * \param 6956 * srcLen max source len 6957 * \return 6958 * string with input strings concatenated 6959 * NULL error 6960 */ 6961 char *strNCat(char *restrict dst, const char *restrict src, size_t srcLen) { 6962 6963 if (!dst || !src) { 6964 return(NULL); 6965 } 6966 6967 return(strncat(dst, src, srcLen)); 6968 } 6969 6970 /** 6971 * strLCat - concatenate two strings 6972 * 6973 * like strlcat with sanity checks 6974 * 6975 * \param 6976 * dst destination buffer 6977 * \param 6978 * src source string 6979 * \param 6980 * dstSize destination buffer size, result string will be no longer than dstSize-1 6981 * \return 6982 * string with input strings concatenated 6983 * NULL error 6984 */ 6985 /* same/slower than the other implementation with -O2 and kaby lake */ 6986 char *strLCat(char *restrict dst, size_t dstSize, const char *restrict src) { 6987 6988 if (!dst || !src) { 6989 return(NULL); 6990 } 6991 6992 size_t dL = strnlen(dst, dstSize); 6993 size_t dstLen = dstSize-1; 6994 6995 if (dL >= dstLen) { 6996 // buffer is full 6997 return(dst); 6998 } 6999 7000 size_t sL = strlen(src); 7001 7002 if (dL+sL > dstLen) { 7003 // truncate 7004 return(strncat(dst, src, dstLen - dL)); 7005 } 7006 else { 7007 return(strcat(dst, src)); 7008 } 7009 } 7010 7011 /* char *strLCat(char *dst, size_t dstSize, const char *src) */ 7012 /* */ 7013 /* if !dst || !src */ 7014 /* return 0 */ 7015 /* */ 7016 /* const char *odst = dst */ 7017 /* size_t n = dstSize */ 7018 /* size_t dlen; */ 7019 /* */ 7020 /* #<{(| Find the end of dst and adjust bytes left but don't go past end. |)}># */ 7021 /* while n-- != 0 && *dst != '\0' */ 7022 /* dst++; */ 7023 /* dlen = dst - odst */ 7024 /* n = dstSize - dlen */ 7025 /* */ 7026 /* if n-- = 0 */ 7027 /* return dst */ 7028 /* while *src != '\0' */ 7029 /* if n != 0 */ 7030 /* *dst++ = *src */ 7031 /* n--; */ 7032 /* src++; */ 7033 /* */ 7034 /* *dst = '\0'; */ 7035 /* */ 7036 /* return dst */ 7037 7038 /** 7039 * strLNCat - concatenate two strings 7040 * 7041 * like strlcat with sanity checks 7042 * 7043 * \param 7044 * dst destination buffer 7045 * \param 7046 * src source string 7047 * \param 7048 * dstSize destination buffer size, result string will be no longer than dstSize-1 7049 * \param 7050 * srcLen max source len 7051 * \return 7052 * string with input strings concatenated 7053 * NULL error 7054 */ 7055 char *strLNCat(char *restrict dst, size_t dstSize, const char *restrict src, size_t srcLen) { 7056 7057 if (!dst || !src) { 7058 return(NULL); 7059 } 7060 7061 size_t dL = strnlen(dst, dstSize); 7062 size_t dstLen = dstSize-1; 7063 7064 if (dL >= dstLen) { 7065 // buffer is full 7066 return(dst); 7067 } 7068 7069 size_t sL = strnlen(src, srcLen); 7070 7071 if (dL+sL > dstLen) { 7072 // truncate 7073 return(strncat(dst, src, dstLen - dL)); 7074 } 7075 else { 7076 return(strncat(dst, src, srcLen)); 7077 } 7078 } 7079 7080 /** 7081 * cat String Function 7082 * \param 7083 * arbitrary list of strings seperated by commas 7084 * \return 7085 * string with input strings concatenated (you must free the pointer) 7086 */ 7087 char *catSF(const char *paramType, ...) { 7088 va_list pl; 7089 char **l = NULL; 7090 char *r = NULL; 7091 7092 // add arguments to a list 7093 va_start(pl, paramType); 7094 paramType = va_arg(pl, char *); 7095 while (paramType) { 7096 pErrorNULL(listPushS(&l, paramType)); 7097 paramType = va_arg(pl, char *); 7098 } 7099 va_end(pl); 7100 // join list with empty delimiter 7101 r = join(l, ""); 7102 listFreeS(l); 7103 return(r); 7104 } 7105 7106 /** 7107 * cat and copy String Function 7108 * dst has to be big enough to hold the result 7109 * 7110 * \param 7111 * dst result destination buffer 7112 * arbitrary list of strings seperated by commas 7113 * \return 7114 * dst string with input strings concatenated 7115 */ 7116 char *iCatSF(char *dst, const char *paramType, ...) { 7117 va_list pl; 7118 7119 if (!dst) { 7120 return(NULL); 7121 } 7122 7123 // empty dst string 7124 dst[0] = 0; 7125 7126 // add arguments to a list 7127 va_start(pl, paramType); 7128 paramType = va_arg(pl, char *); 7129 while (paramType) { 7130 strcat(dst, paramType); 7131 paramType = va_arg(pl, char *); 7132 } 7133 va_end(pl); 7134 return(dst); 7135 } 7136 7137 7138 /** 7139 * cat and copy String Function 7140 * \param 7141 * dst result destination buffer 7142 * arbitrary list of strings seperated by commas 7143 * \return 7144 * dst string with input strings concatenated 7145 */ 7146 char *bLCatSF(char *dst, size_t dstSize, const char *paramType, ...) { 7147 va_list pl; 7148 7149 if (!dst) { 7150 return(NULL); 7151 } 7152 7153 if (!dstSize) { 7154 return(dst); 7155 } 7156 7157 // empty dst string 7158 dst[0] = 0; 7159 7160 // add arguments to a list 7161 va_start(pl, paramType); 7162 paramType = va_arg(pl, char *); 7163 while (paramType) { 7164 pErrorNULL(strLCat(dst, dstSize, paramType)); 7165 paramType = va_arg(pl, char *); 7166 } 7167 va_end(pl); 7168 return(dst); 7169 } 7170 7171 7172 /** 7173 * format string 7174 * allocate and format string using asprintf 7175 * \param 7176 * format string and other parameters 7177 * \return 7178 * allocated and formated string (you must free the pointer) 7179 * NULL when fmt is NULL or asprintf fails 7180 */ 7181 char *formatS(const char *fmt, ...) { 7182 char *r = NULL; 7183 va_list pl; 7184 7185 if (!fmt) { 7186 return(NULL); 7187 } 7188 va_start(pl, fmt); 7189 if (vasprintf(&r, fmt, pl) == -1) { 7190 va_end(pl); 7191 return(NULL); 7192 } 7193 va_end(pl); 7194 7195 return(r); 7196 } 7197 7198 /** 7199 * format string 7200 * \param 7201 * format string and other parameters 7202 * \return 7203 * formated string 7204 * NULL when string, fmt are NULL or sprintf fails 7205 */ 7206 char *bFormatS(char *string, const char *fmt, ...) { 7207 va_list pl; 7208 7209 if (!string || !fmt) { 7210 return(NULL); 7211 } 7212 va_start(pl, fmt); 7213 if (vsprintf(string, fmt, pl) == -1) { 7214 return(NULL); 7215 } 7216 va_end(pl); 7217 7218 return(string); 7219 } 7220 7221 /** 7222 * format string 7223 * \param 7224 * format string and other parameters 7225 * \return 7226 * formated string 7227 * NULL when string, fmt is NULL or snprintf fails 7228 */ 7229 char *bLFormatS(char *string, size_t stringSize, const char *fmt, ...) { 7230 va_list pl; 7231 7232 if (!string || !fmt) { 7233 return(NULL); 7234 } 7235 va_start(pl, fmt); 7236 if (vsnprintf(string, stringSize, fmt, pl) == -1) { 7237 return(NULL); 7238 } 7239 va_end(pl); 7240 7241 return(string); 7242 } 7243 7244 /** 7245 * append strings 7246 * 7247 * \param 7248 * string1 string 7249 * string2 string to append at the end of string1 7250 * \return 7251 * new string string1+string2 (you must free the pointer) 7252 * dup string1 when string2 is NULL (you must free the pointer) 7253 * NULL when string1 is NULL 7254 */ 7255 char *appendS(const char *string1, const char *string2) { 7256 char *r = NULL; 7257 size_t l1; 7258 size_t l2; 7259 7260 if (!string1) { 7261 return(NULL); 7262 } 7263 if (!string2) { 7264 r = strdup(string1); 7265 return(r); 7266 } 7267 7268 l1 = strlen(string1); 7269 l2 = strlen(string2); 7270 7271 if (!l2) { 7272 // empty string 7273 r = strdup(string1); 7274 return(r); 7275 } 7276 7277 r = MALLOC(l1 + l2 + 1); 7278 if (!r) { 7279 return(NULL); 7280 } 7281 7282 strcpy(r,string1); 7283 strcat(r, string2); 7284 return(r); 7285 } 7286 7287 /** 7288 * append char to string 7289 * when c is 0 the result is string1 7290 * 7291 * \param 7292 * string1 string 7293 * c char to append 7294 * \return 7295 * new string string1+c (you must free the pointer) 7296 * NULL when string1 is NULL 7297 */ 7298 char *appendCharS(const char *string1, char c) { 7299 char *r = NULL; 7300 size_t l1; 7301 7302 if (!string1) { 7303 return(NULL); 7304 } 7305 if (!c) { 7306 r = strdup(string1); 7307 return(r); 7308 } 7309 7310 charToS(string2, c); 7311 7312 l1 = strlen(string1); 7313 7314 r = MALLOC(l1 + 1 + 1); 7315 if (!r) { 7316 return(NULL); 7317 } 7318 7319 strcpy(r,string1); 7320 strcat(r, string2); 7321 return(r); 7322 } 7323 7324 /** 7325 * append string to char 7326 * 7327 * \param 7328 * string1 string 7329 * c char to append 7330 * \return 7331 * new string string1+c (you must free the pointer) 7332 * NULL when string1 is NULL 7333 */ 7334 char *appendSChar(char c, const char *string2) { 7335 char *r = NULL; 7336 size_t l2; 7337 7338 charToS(string1, c); 7339 7340 if (!string2) { 7341 r = strdup(string1); 7342 return(r); 7343 } 7344 7345 l2 = strlen(string2); 7346 7347 if (!l2) { 7348 // empty string 7349 r = strdup(string1); 7350 return(r); 7351 } 7352 7353 r = MALLOC(1 + l2 + 1); 7354 if (!r) { 7355 return(NULL); 7356 } 7357 7358 strcpy(r,string1); 7359 strcat(r, string2); 7360 return(r); 7361 } 7362 7363 /** 7364 * append strings 7365 * 7366 * \param 7367 * string1 string, which is reallocated. 7368 * string2 string to append at the end of string1 7369 * \return 7370 * string1 modified string1 (realloc), string1+string2 (you must free the pointer) 7371 * string1 no change when string2 is NULL (you must free the pointer) 7372 * NULL no change when string1 is NULL 7373 */ 7374 char *iAppendS(char **string1, const char *string2) { 7375 char *tmp = NULL; 7376 size_t l1; 7377 size_t l2; 7378 7379 if (!string1) { 7380 return(NULL); 7381 } 7382 if (!string2) { 7383 return(*string1); 7384 } 7385 if (!*string1) { 7386 *string1 = strdup(string2); 7387 return(*string1); 7388 } 7389 7390 l1 = strlen(*string1); 7391 l2 = strlen(string2); 7392 7393 if (!l2) { 7394 // empty string 7395 return(*string1); 7396 } 7397 7398 tmp = REALLOC(*string1, l1 + l2 + 1); 7399 if (!tmp) { 7400 return(NULL); 7401 } 7402 7403 *string1 = tmp; 7404 strcat(*string1, string2); 7405 return(*string1); 7406 } 7407 7408 /** 7409 * append char to string 7410 * 7411 * \param 7412 * string1 string, which is reallocated. 7413 * c char to append at the end of string1 7414 * \return 7415 * string1 modified string1 (realloc), string1+c (you must free the pointer) 7416 * NULL no change when string1 is NULL 7417 */ 7418 char *iAppendCharS(char **string1, char c) { 7419 char *tmp = NULL; 7420 size_t l1; 7421 7422 if (!string1) { 7423 return(NULL); 7424 } 7425 7426 charToS(string2, c); 7427 7428 if (!*string1) { 7429 *string1 = strdup(string2); 7430 return(*string1); 7431 } 7432 7433 l1 = strlen(*string1); 7434 7435 tmp = REALLOC(*string1, l1 + 1 + 1); 7436 if (!tmp) { 7437 return(NULL); 7438 } 7439 7440 *string1 = tmp; 7441 strcat(*string1, string2); 7442 return(*string1); 7443 } 7444 7445 /** 7446 * append and free strings 7447 * 7448 * string2 is freed (except when there is an error) 7449 * 7450 * \param 7451 * string1 string, which is reallocated. 7452 * string2 string to append at the end of string1 7453 * \return 7454 * string1 modified string1 (realloc), string1+string2 (you must free the pointer) 7455 * NULL no change when string1 or string2 are NULL 7456 */ 7457 char *iAppendNFreeS(char **string1, char *string2) { 7458 char *r = NULL; 7459 7460 r = iAppendS(string1, string2); 7461 if (r) { 7462 free(string2); 7463 } 7464 return(r); 7465 } 7466 7467 /** 7468 * append many strings 7469 * 7470 * \param 7471 * string1 string, which is reallocated. 7472 * string2 string to append at the end of string1 7473 * \return 7474 * string1 modified string1, string1+string2 (you must free the pointer) 7475 * NULL no change when string1 or string2 are NULL 7476 */ 7477 char *iAppendManySF(char **string, const char *paramType, ...) { 7478 va_list pl; 7479 char *r = NULL; 7480 char **l = NULL; 7481 7482 if (!string) { 7483 return(NULL); 7484 } 7485 7486 pErrorNULL(iListPushS(&l, *string)); 7487 pErrorNULL(listPushS(&l, paramType)); 7488 7489 // add arguments to a list 7490 va_start(pl, paramType); 7491 paramType = va_arg(pl, char *); 7492 while (paramType) { 7493 pErrorNULL(listPushS(&l, paramType)); 7494 paramType = va_arg(pl, char *); 7495 } 7496 va_end(pl); 7497 // join list with empty delimiter 7498 r = join(l, ""); 7499 listFreeS(l); 7500 7501 // Already freed in listFreeS - free *string 7502 *string = r; 7503 return(r); 7504 } 7505 7506 /** 7507 * buffer append many strings 7508 * 7509 * \param 7510 * string1 string 7511 * string2 string to append at the end of string1 7512 * \return 7513 * string1 modified string1, string1+string2 7514 * NULL no change when string1 or string2 are NULL 7515 */ 7516 char *bAppendManySF(char *string, const char *paramType, ...) { 7517 va_list pl; 7518 char *r = NULL; 7519 char **l = NULL; 7520 7521 if (!string) { 7522 return(NULL); 7523 } 7524 7525 pErrorNULL(listPushS(&l, string)); 7526 pErrorNULL(listPushS(&l, paramType)); 7527 7528 // add arguments to a list 7529 va_start(pl, paramType); 7530 paramType = va_arg(pl, char *); 7531 while (paramType) { 7532 pErrorNULL(listPushS(&l, paramType)); 7533 paramType = va_arg(pl, char *); 7534 } 7535 va_end(pl); 7536 // join list with empty delimiter 7537 r = join(l, ""); 7538 listFreeS(l); 7539 7540 strcpy(string, r); 7541 free(r); 7542 return(string); 7543 } 7544 7545 /** 7546 * buffer size append many strings 7547 * 7548 * \param 7549 * string1 string 7550 * string2 string to append at the end of string1 7551 * \return 7552 * string1 modified string1, string1+string2 7553 * NULL no change when string1 or string2 are NULL 7554 */ 7555 char *bLAppendManySF(char *string, size_t stringSize, const char *paramType, ...) { 7556 va_list pl; 7557 char *r = NULL; 7558 char **l = NULL; 7559 7560 if (!string) { 7561 return(NULL); 7562 } 7563 7564 if (!stringSize) { 7565 // size 0 - no change 7566 return(string); 7567 } 7568 7569 pErrorNULL(listPushS(&l, string)); 7570 pErrorNULL(listPushS(&l, paramType)); 7571 7572 // add arguments to a list 7573 va_start(pl, paramType); 7574 paramType = va_arg(pl, char *); 7575 while (paramType) { 7576 pErrorNULL(listPushS(&l, paramType)); 7577 paramType = va_arg(pl, char *); 7578 } 7579 va_end(pl); 7580 // join list with empty delimiter 7581 r = join(l, ""); 7582 listFreeS(l); 7583 7584 pErrorNULL(strLCpy(string, stringSize, r)); 7585 free(r); 7586 return(string); 7587 } 7588 7589 /** 7590 * prepend strings 7591 * 7592 * \param 7593 * string1 string 7594 * string2 string to prepend at the beginning of string1 7595 * \return 7596 * new string string2+string1 (you must free the pointer) 7597 * dup string2 when string1 is NULL (you must free the pointer) 7598 * NULL when string2 is NULL 7599 */ 7600 char *prependS(const char *string1, const char *string2) { 7601 7602 return(appendS(string2, string1)); 7603 } 7604 7605 /** 7606 * prepend char to string 7607 * 7608 * \param 7609 * string1 string 7610 * c char to prepend at the beginning of string1 7611 * \return 7612 * new string c+string1 (you must free the pointer) 7613 * NULL when string1 is NULL 7614 */ 7615 char *prependCharS(const char *string1, char c) { 7616 7617 return(appendSChar(c, string1)); 7618 } 7619 7620 /** 7621 * prepend string to char 7622 * 7623 * \param 7624 * c char 7625 * string2 string to prepend at the beginning of c 7626 * \return 7627 * new string string2+c (you must free the pointer) 7628 * NULL when string2 is NULL 7629 */ 7630 char *prependSChar(char c, const char *string2) { 7631 7632 return(appendCharS(string2, c)); 7633 } 7634 7635 /** 7636 * prepend strings 7637 * 7638 * \param 7639 * string1 string, which is reallocated. 7640 * string2 string to prepend at the beginning of string1 7641 * \return 7642 * string1 modified string1, string2+string1 (you must free the pointer) 7643 * string1 when string2 is NULL (you must free the pointer) 7644 * NULL no change when string1 is NULL 7645 */ 7646 char *iPrependS(char **string1, const char *string2) { 7647 size_t l2; 7648 7649 if (!string1) { 7650 return(NULL); 7651 } 7652 if (!string2) { 7653 return(*string1); 7654 } 7655 if (!*string1) { 7656 *string1 = strdup(string2); 7657 return(*string1); 7658 } 7659 7660 l2 = strlen(string2); 7661 7662 if (!l2) { 7663 // empty string 7664 return(*string1); 7665 } 7666 7667 return(iInsertS(string1, 0, string2)); 7668 } 7669 7670 /** 7671 * prepend char to string 7672 * 7673 * \param 7674 * string1 string, which is reallocated. 7675 * c char to prepend at the beginning of string1 7676 * \return 7677 * string1 modified string1, c+string1 (you must free the pointer) 7678 * NULL no change when string1 is NULL 7679 */ 7680 char *iPrependCharS(char **string1, char c) { 7681 size_t l1; 7682 7683 if (!string1) { 7684 return(NULL); 7685 } 7686 7687 if (!c) { 7688 return(*string1); 7689 } 7690 7691 charToS(string2, c); 7692 7693 if (!*string1) { 7694 *string1 = strdup(string2); 7695 return(*string1); 7696 } 7697 7698 l1 = strlen(*string1); 7699 7700 char *tmp = REALLOC(*string1, l1 + 1 + 1); 7701 if (!tmp) { 7702 return(NULL); 7703 } 7704 7705 *string1 = tmp; 7706 memmove(*string1+1, *string1, l1+1); 7707 **string1 = c; 7708 return(*string1); 7709 } 7710 7711 /** 7712 * prepend and free strings 7713 * 7714 * string2 is freed 7715 * 7716 * \param 7717 * string1 string, which is reallocated. 7718 * string2 string to prepend at the beginning of string1 7719 * \return 7720 * string1 modified string1, string2+string1 (you must free the pointer) 7721 * NULL no change when string1 or string2 are NULL 7722 */ 7723 char *iPrependNFreeS(char **string1, char *string2) { 7724 char *r = NULL; 7725 7726 r = iPrependS(string1, string2); 7727 if (r) { 7728 free(string2); 7729 } 7730 return(r); 7731 } 7732 7733 7734 /** 7735 * buffer prepend strings 7736 * 7737 * \param 7738 * string1 string 7739 * string2 string to prepend at the beginning of string1 7740 * \return 7741 * string1 modified string1, string2+string1 7742 * NULL no change when string1 or string2 are NULL 7743 */ 7744 char *bPrependS(char *string1, const char *string2) { 7745 size_t l2; 7746 7747 if (!string1 || !string2) { 7748 return(NULL); 7749 } 7750 7751 if (!*string1) { 7752 strcpy(string1, string2); 7753 return(string1); 7754 } 7755 7756 l2 = strlen(string2); 7757 7758 if (!l2) { 7759 // empty string 7760 return(string1); 7761 } 7762 7763 return(bInsertS(string1, 0, string2)); 7764 } 7765 7766 /** 7767 * buffer prepend strings 7768 * 7769 * \param 7770 * string1 string 7771 * string2 string to prepend at the beginning of string1 7772 * \return 7773 * string1 modified string1, string2+string1 7774 * NULL no change when string1 or string2 are NULL 7775 */ 7776 char *bLPrependS(char *string1, size_t string1Size, const char *string2) { 7777 size_t l2; 7778 7779 if (!string1 || !string2) { 7780 return(NULL); 7781 } 7782 7783 if (!string1Size) { 7784 return(string1); 7785 } 7786 7787 if (!*string1) { 7788 pErrorNULL(strLCpy(string1, string1Size, string2)); 7789 return(string1); 7790 } 7791 7792 l2 = strlen(string2); 7793 7794 if (!l2) { 7795 // empty string 7796 return(string1); 7797 } 7798 7799 return(bLInsertS(string1, string1Size, 0, string2)); 7800 } 7801 7802 /** 7803 * replace String 7804 * the original remains unchanged 7805 * duplicate s 7806 * the olds string is replaced with the news string max times in the result 7807 * 0 for max means replace all olds strings 7808 * 7809 * \param 7810 * s: string 7811 * olds: old string to be replaced in s 7812 * news: new string replacing olds in s 7813 * max: number of times to replace olds, 0 to replace all found olds 7814 * \return 7815 * new string (you must free the pointer) 7816 * "" when s is empty 7817 * NULL when s is NULL 7818 * NULL when olds is empty 7819 */ 7820 char* replaceS(const char *s, const char *olds, const char *news, size_t max ) { 7821 char *r = NULL; 7822 char *tmp = NULL; 7823 // ins is next insert point 7824 const char *ins = NULL; 7825 size_t count; 7826 size_t lfront; 7827 7828 // sanity checks and initialization 7829 // count the number of replacements needed 7830 // allocate result 7831 // replace olds with news 7832 // copy end of string 7833 7834 // sanity checks and initialization 7835 if (!s) { 7836 return(NULL); 7837 } 7838 if (isEmptyS(s)) { 7839 // return "" when s is empty 7840 return(emptySF()); 7841 } 7842 if (!olds) { 7843 return(NULL); 7844 } 7845 size_t lolds; 7846 lolds = strlen(olds); 7847 if (!lolds) { 7848 // empty olds causes infinite loop 7849 return(NULL); 7850 } 7851 if (!news) { 7852 // empty string for NULL 7853 news = ""; 7854 } 7855 7856 // count the number of replacements needed 7857 ins = s; 7858 for (count = 0 ; (tmp = strstr(ins, olds)) ; ++count) { 7859 ins = tmp + lolds; 7860 if (max && (count == max)) { 7861 // the maximum number is replacements is reached, stop 7862 break; 7863 } 7864 } 7865 7866 7867 size_t lnews; 7868 lnews = strlen(news); 7869 7870 // allocate result 7871 tmp = r = MALLOC(strlen(s) + (lnews - lolds) * count + 1); 7872 if (!r) { 7873 return(NULL);//LCOV_EXCL_LINE 7874 } 7875 7876 // replace olds with news 7877 // ins points to the start of olds in s 7878 // tmp is the front of s, tmp points the end of s front in r 7879 // copy news to tmp, tmp points the end of news in r 7880 // s is the remainder of s after end of olds 7881 while (count--) { 7882 ins = strstr(s, olds); 7883 lfront = (size_t)(ins - s); 7884 tmp = strncpy(tmp, s, lfront) + lfront; 7885 tmp = strcpy(tmp, news) + lnews; 7886 s += lfront + lolds; 7887 } 7888 7889 // copy end of string 7890 strcpy(tmp, s); 7891 return(r); 7892 } 7893 7894 char *replaceCharSS(const char *s, char olds, const char *news, size_t max) { 7895 7896 charToS(p, olds); 7897 return(replaceS(s, p, news, max)); 7898 } 7899 7900 char *replaceSCharS(const char *s, const char *olds, char news, size_t max) { 7901 7902 charToS(p, news); 7903 return(replaceS(s, olds, p, max)); 7904 } 7905 7906 char *replaceCharCharS(const char *s, char olds, char news, size_t max) { 7907 7908 charToS(p, olds); 7909 charToS(n, news); 7910 return(replaceS(s, p, n, max)); 7911 } 7912 7913 /** 7914 * replaceSLen returns the length of the resulting string 7915 */ 7916 size_t replaceSLen(const char *s, const char *olds, const char *news, size_t max) { 7917 char *tmp = NULL; 7918 // ins is next insert point 7919 const char *ins = NULL; 7920 size_t count; 7921 7922 // sanity checks and initialization 7923 // count the number of replacements needed 7924 // allocate result 7925 // replace olds with news 7926 // copy end of string 7927 7928 // sanity checks and initialization 7929 if (!s) { 7930 return(0); 7931 } 7932 if (isEmptyS(s)) { 7933 // return "" when s is empty 7934 return(0); 7935 } 7936 if (!olds) { 7937 return(0); 7938 } 7939 size_t lolds; 7940 lolds = strlen(olds); 7941 if (!lolds) { 7942 // empty olds causes infinite loop 7943 return(0); 7944 } 7945 if (!news) { 7946 // empty string for NULL 7947 news = ""; 7948 } 7949 7950 // count the number of replacements needed 7951 ins = s; 7952 for (count = 0 ; (tmp = strstr(ins, olds)) ; ++count) { 7953 ins = tmp + lolds; 7954 if (max && (count == max)) { 7955 // the maximum number is replacements is reached, stop 7956 break; 7957 } 7958 } 7959 7960 7961 size_t lnews; 7962 lnews = strlen(news); 7963 7964 return(strlen(s) + (lnews - lolds) * count); 7965 } 7966 7967 /** 7968 * replace String 7969 * the olds string is replaced with the news string max times in the result 7970 * 0 for max means replace all olds strings 7971 * 7972 * \param 7973 * s: string (that is allocated with malloc) 7974 * olds: old string to be replaced in s 7975 * news: new string replacing olds in s 7976 * max: number of times to replace olds, 0 to replace all found olds 7977 * \return 7978 * modified s string (you must free the pointer) 7979 * NULL s not modified when s is NULL or empty and when olds is empty 7980 */ 7981 char* iReplaceS(char **s, const char *olds, const char *news, size_t max ) { 7982 char *r = NULL; 7983 char *tmp = NULL; 7984 char *workingS = NULL; 7985 // ins is next insert point 7986 char *ins = NULL; 7987 size_t count; 7988 size_t lfront; 7989 7990 // sanity checks and initialization 7991 // count the number of replacements needed 7992 // allocate result 7993 // replace olds with news 7994 // copy end of string 7995 7996 // sanity checks and initialization 7997 if (!s || !*s) { 7998 return(NULL); 7999 } 8000 if (isEmptyS(*s)) { 8001 // s is empty, do nothing 8002 return(NULL); 8003 } 8004 if (!olds) { 8005 return(NULL); 8006 } 8007 size_t lolds; 8008 lolds = strlen(olds); 8009 if (!lolds) { 8010 // empty olds causes infinite loop 8011 return(NULL); 8012 } 8013 if (!news) { 8014 // empty string for NULL 8015 news = ""; 8016 } 8017 8018 // count the number of replacements needed 8019 ins = workingS = *s; 8020 for (count = 0 ; (tmp = strstr(ins, olds)) ; ++count) { 8021 ins = tmp + lolds; 8022 if (max && (count == max)) { 8023 // the maximum number is replacements is reached, stop 8024 break; 8025 } 8026 } 8027 8028 8029 size_t lnews; 8030 lnews = strlen(news); 8031 8032 // allocate result 8033 size_t rLen = strlen(*s) + (lnews - lolds) * count + 1;; 8034 tmp = r = MALLOC(rLen); 8035 if (!r) { 8036 return(NULL); 8037 } 8038 8039 // replace olds with news 8040 // ins points to the start of olds in s 8041 // tmp is the front of s, tmp points the end of s front in r 8042 // copy news to tmp, tmp points the end of news in r 8043 // s is the remainder of s after end of olds 8044 while (count--) { 8045 ins = strstr(workingS, olds); 8046 lfront = (size_t)(ins - workingS); 8047 tmp = strncpy(tmp, workingS, lfront) + lfront; 8048 tmp = strcpy(tmp, news) + lnews; 8049 workingS += lfront + lolds; 8050 } 8051 8052 // copy end of string 8053 strcpy(tmp, workingS); 8054 8055 free(*s); 8056 *s = r; 8057 return(r); 8058 } 8059 8060 char *iReplaceCharSS(char **s, char olds, const char *news, size_t max) { 8061 8062 charToS(p, olds); 8063 return(iReplaceS(s, p, news, max)); 8064 } 8065 8066 char *iReplaceSCharS(char **s, const char *olds, char news, size_t max) { 8067 8068 charToS(p, news); 8069 return(iReplaceS(s, olds, p, max)); 8070 } 8071 8072 char *iReplaceCharCharS(char **s, char olds, char news, size_t max) { 8073 8074 charToS(p, olds); 8075 charToS(n, news); 8076 return(iReplaceS(s, p, n, max)); 8077 } 8078 8079 /** 8080 * buffer replace String 8081 * the olds string is replaced with the news string max times in the result 8082 * 0 for max means replace all olds strings 8083 * 8084 * \param 8085 * s: string 8086 * olds: old string to be replaced in s 8087 * news: new string replacing olds in s 8088 * max: number of times to replace olds, 0 to replace all found olds 8089 * \return 8090 * modified s string 8091 * NULL s not modified when s is NULL or empty and when olds is empty 8092 */ 8093 char* bReplaceS(char *s, const char *olds, const char *news, size_t max ) { 8094 char *r = NULL; 8095 char *tmp = NULL; 8096 char *workingS = NULL; 8097 // ins is next insert point 8098 char *ins = NULL; 8099 size_t count; 8100 size_t lfront; 8101 8102 // sanity checks and initialization 8103 // count the number of replacements needed 8104 // allocate result 8105 // replace olds with news 8106 // copy end of string 8107 8108 // sanity checks and initialization 8109 if (!s) { 8110 return(NULL); 8111 } 8112 if (isEmptyS(s)) { 8113 // s is empty, do nothing 8114 return(NULL); 8115 } 8116 if (!olds) { 8117 return(NULL); 8118 } 8119 size_t lolds; 8120 lolds = strlen(olds); 8121 if (!lolds) { 8122 // empty olds causes infinite loop 8123 return(NULL); 8124 } 8125 if (!news) { 8126 // empty string for NULL 8127 news = ""; 8128 } 8129 8130 // count the number of replacements needed 8131 ins = workingS = s; 8132 for (count = 0 ; (tmp = strstr(ins, olds)) ; ++count) { 8133 ins = tmp + lolds; 8134 if (max && (count == max)) { 8135 // the maximum number is replacements is reached, stop 8136 break; 8137 } 8138 } 8139 8140 8141 size_t lnews; 8142 lnews = strlen(news); 8143 8144 // allocate result 8145 size_t rLen = strlen(s) + (lnews - lolds) * count + 1;; 8146 tmp = r = MALLOC(rLen); 8147 if (!r) { 8148 return(NULL); 8149 } 8150 8151 // replace olds with news 8152 // ins points to the start of olds in s 8153 // tmp is the front of s, tmp points the end of s front in r 8154 // copy news to tmp, tmp points the end of news in r 8155 // s is the remainder of s after end of olds 8156 while (count--) { 8157 ins = strstr(workingS, olds); 8158 lfront = (size_t)(ins - workingS); 8159 tmp = strncpy(tmp, workingS, lfront) + lfront; 8160 tmp = strcpy(tmp, news) + lnews; 8161 workingS += lfront + lolds; 8162 } 8163 8164 // copy end of string 8165 strcpy(tmp, workingS); 8166 8167 strcpy(s, r); 8168 free(r); 8169 return(s); 8170 } 8171 8172 /** 8173 * buffer size replace String 8174 * the olds string is replaced with the news string max times in the result 8175 * 0 for max means replace all olds strings 8176 * 8177 * \param 8178 * s: string 8179 * olds: old string to be replaced in s 8180 * news: new string replacing olds in s 8181 * max: number of times to replace olds, 0 to replace all found olds 8182 * \return 8183 * modified s string 8184 * NULL s not modified when s is NULL or empty and when olds is empty 8185 */ 8186 char* bLReplaceS(char *s, size_t sSize, const char *olds, const char *news, size_t max) { 8187 char *r = NULL; 8188 char *tmp = NULL; 8189 char *workingS = NULL; 8190 // ins is next insert point 8191 char *ins = NULL; 8192 size_t count; 8193 size_t lfront; 8194 8195 // sanity checks and initialization 8196 // count the number of replacements needed 8197 // allocate result 8198 // replace olds with news 8199 // copy end of string 8200 8201 // sanity checks and initialization 8202 if (!s) { 8203 return(NULL); 8204 } 8205 if (!sSize) { 8206 // size 0 - no change 8207 return(s); 8208 } 8209 if (isEmptyS(s)) { 8210 // s is empty, do nothing 8211 return(NULL); 8212 } 8213 if (!olds) { 8214 return(NULL); 8215 } 8216 size_t lolds; 8217 lolds = strlen(olds); 8218 if (!lolds) { 8219 // empty olds causes infinite loop 8220 return(NULL); 8221 } 8222 if (!news) { 8223 // empty string for NULL 8224 news = ""; 8225 } 8226 8227 // count the number of replacements needed 8228 ins = workingS = s; 8229 for (count = 0 ; (tmp = strstr(ins, olds)) ; ++count) { 8230 ins = tmp + lolds; 8231 if (max && (count == max)) { 8232 // the maximum number is replacements is reached, stop 8233 break; 8234 } 8235 } 8236 8237 8238 size_t lnews; 8239 lnews = strlen(news); 8240 8241 // allocate result 8242 size_t rLen = strlen(s) + (lnews - lolds) * count + 1;; 8243 tmp = r = MALLOC(rLen); 8244 if (!r) { 8245 return(NULL); 8246 } 8247 8248 // replace olds with news 8249 // ins points to the start of olds in s 8250 // tmp is the front of s, tmp points the end of s front in r 8251 // copy news to tmp, tmp points the end of news in r 8252 // s is the remainder of s after end of olds 8253 while (count--) { 8254 ins = strstr(workingS, olds); 8255 lfront = (size_t)(ins - workingS); 8256 tmp = strncpy(tmp, workingS, lfront) + lfront; 8257 tmp = strcpy(tmp, news) + lnews; 8258 workingS += lfront + lolds; 8259 } 8260 8261 // copy end of string 8262 strcpy(tmp, workingS); 8263 8264 pErrorNULL(strLCpy(s, sSize, r)); 8265 free(r); 8266 return(s); 8267 } 8268 8269 /** 8270 * replace Many Strings 8271 * the original remains unchanged 8272 * duplicate s 8273 * the olds string is replaced with the news string max times in the result 8274 * 8275 * Example: 8276 * r = replaceManyS("asd", "s", "BNM", "a", "AAA") 8277 * ^olds ^news ^olds ^news 8278 * 8279 * \param 8280 * s: string 8281 * olds: old string to be replaced in s 8282 * news: new string replacing olds in s 8283 * ... 8284 * \return 8285 * new string (you must free the pointer) 8286 * "" when s is empty 8287 * NULL when s is NULL 8288 * NULL when only 2 parameters are given 8289 * NULL when any olds is empty 8290 */ 8291 char *replaceManySF(const char *paramType, ...) { 8292 va_list pl; 8293 char *param = NULL; 8294 char *r = NULL; 8295 char *workingS = NULL; 8296 char *olds = NULL; 8297 char *news = NULL; 8298 8299 // sanity checks 8300 if (!paramType) { 8301 return(NULL); 8302 } 8303 8304 if (isEmptyS(paramType)) { 8305 return(emptySF()); 8306 } 8307 8308 workingS = strdup(paramType); 8309 8310 // add arguments to a list 8311 va_start(pl, paramType); 8312 param = va_arg(pl, char *); 8313 while (param) { 8314 if (!olds) { 8315 olds = param; 8316 } 8317 else if (!news) { 8318 news = param; 8319 r = replaceS(workingS, olds, news, 0); 8320 free(workingS); 8321 olds = NULL; 8322 news = NULL; 8323 workingS = r; 8324 } 8325 param = va_arg(pl, char *); 8326 } 8327 va_end(pl); 8328 if (!r) { 8329 free(workingS); 8330 } 8331 return(r); 8332 } 8333 8334 /** 8335 * replace Many Strings 8336 * the olds string is replaced with the news string max times in the result 8337 * 8338 * Example: 8339 * iReplaceManyS(s, "s", "BNM", "a", "AAA") 8340 * ^olds ^news ^olds ^news 8341 * 8342 * \param 8343 * string (this parameter is reallocated) 8344 * olds: old string to be replaced in s 8345 * news: new string replacing olds in s 8346 * ... 8347 * \return 8348 * modified string (you must free the pointer) 8349 * NULL not modified when s is empty, when s is NULL, when only 2 parameters are given, 8350 * when any olds is empty 8351 */ 8352 char *iReplaceManySF(char **s, char *paramType, ...) { 8353 va_list pl; 8354 char *olds = NULL; 8355 char *news = NULL; 8356 8357 // sanity checks 8358 if (!s || !*s) { 8359 return(NULL); 8360 } 8361 8362 if (isEmptyS(*s)) { 8363 return(NULL); 8364 } 8365 8366 olds = (char *) paramType;; 8367 8368 // add arguments to a list 8369 va_start(pl, paramType); 8370 paramType = va_arg(pl, char *); 8371 while (paramType) { 8372 if (!olds) { 8373 olds = (char *) paramType; 8374 } 8375 else if (!news) { 8376 news = (char *) paramType; 8377 pErrorNULL(iReplaceS(s, olds, news, 0)); 8378 olds = NULL; 8379 news = NULL; 8380 } 8381 8382 paramType = va_arg(pl, char *); 8383 } 8384 va_end(pl); 8385 return(*s); 8386 } 8387 8388 /** 8389 * buffer replace Many Strings 8390 * the olds string is replaced with the news string max times in the result 8391 * 8392 * Example: 8393 * bReplaceManyS(s, "s", "BNM", "a", "AAA") 8394 * ^olds ^news ^olds ^news 8395 * 8396 * \param 8397 * string 8398 * olds: old string to be replaced in s 8399 * news: new string replacing olds in s 8400 * ... 8401 * \return 8402 * modified string 8403 * NULL not modified when s is empty, when s is NULL, when only 2 parameters are given, 8404 * when any olds is empty 8405 */ 8406 char *bReplaceManySF(char *s, char *paramType, ...) { 8407 va_list pl; 8408 char *olds = NULL; 8409 char *news = NULL; 8410 8411 // sanity checks 8412 if (!s) { 8413 return(NULL); 8414 } 8415 8416 if (isEmptyS(s)) { 8417 return(NULL); 8418 } 8419 8420 olds = paramType;; 8421 8422 // add arguments to a list 8423 va_start(pl, paramType); 8424 paramType = va_arg(pl, char *); 8425 while (paramType) { 8426 if (!olds) { 8427 olds = paramType; 8428 } 8429 else if (!news) { 8430 news = paramType; 8431 pErrorNULL(bReplaceS(s, olds, news, 0)); 8432 olds = NULL; 8433 news = NULL; 8434 } 8435 8436 paramType = va_arg(pl, char *); 8437 } 8438 va_end(pl); 8439 return(s); 8440 } 8441 8442 /** 8443 * buffer size replace Many Strings 8444 * the olds string is replaced with the news string max times in the result 8445 * 8446 * Example: 8447 * bReplaceManyS(s, "s", "BNM", "a", "AAA") 8448 * ^olds ^news ^olds ^news 8449 * 8450 * \param 8451 * string 8452 * olds: old string to be replaced in s 8453 * news: new string replacing olds in s 8454 * ... 8455 * \return 8456 * modified string 8457 * NULL not modified when s is empty, when s is NULL, when only 2 parameters are given, 8458 * when any olds is empty 8459 */ 8460 char *bLReplaceManySF(char *s, size_t sSize, char *paramType, ...) { 8461 va_list pl; 8462 char *olds = NULL; 8463 char *news = NULL; 8464 8465 // sanity checks 8466 if (!s) { 8467 return(NULL); 8468 } 8469 8470 if (!sSize) { 8471 return(s); 8472 } 8473 8474 if (isEmptyS(s)) { 8475 return(NULL); 8476 } 8477 8478 olds = paramType;; 8479 8480 // add arguments to a list 8481 va_start(pl, paramType); 8482 paramType = va_arg(pl, char *); 8483 while (paramType) { 8484 if (!olds) { 8485 olds = paramType; 8486 } 8487 else if (!news) { 8488 news = paramType; 8489 pErrorNULL(bLReplaceS(s, sSize, olds, news, 0)); 8490 olds = NULL; 8491 news = NULL; 8492 } 8493 8494 paramType = va_arg(pl, char *); 8495 } 8496 va_end(pl); 8497 return(s); 8498 } 8499 8500 /** 8501 * ignore case Replace String 8502 * the original remains unchanged 8503 * duplicate s 8504 * the olds string is replaced with the news string max times in the result 8505 * 0 for max means replace all olds strings 8506 * 8507 * \param 8508 * s: string 8509 * olds: old string to be replaced in s 8510 * news: new string replacing olds in s 8511 * max: number of times to replace olds, 0 to replace all found olds 8512 * \return 8513 * new string (you must free the pointer) 8514 * "" when s is empty 8515 * NULL when s is NULL 8516 * NULL when olds is empty 8517 */ 8518 char* icReplaceS(const char *s, const char *olds, const char *news, size_t max ) { 8519 char *r = NULL; 8520 char *tmp = NULL; 8521 // ins is next insert point 8522 const char *ins = NULL; 8523 size_t count; 8524 size_t lfront; 8525 8526 // sanity checks and initialization 8527 // count the number of replacements needed 8528 // allocate result 8529 // replace olds with news 8530 // copy end of string 8531 8532 // sanity checks and initialization 8533 if (!s) { 8534 return(NULL); 8535 } 8536 if (isEmptyS(s)) { 8537 // return "" when s is empty 8538 return(emptySF()); 8539 } 8540 if (!olds) { 8541 return(NULL); 8542 } 8543 size_t lolds; 8544 lolds = strlen(olds); 8545 if (!lolds) { 8546 // empty olds causes infinite loop 8547 return(NULL); 8548 } 8549 if (!news) { 8550 // empty string for NULL 8551 news = ""; 8552 } 8553 8554 // count the number of replacements needed 8555 ins = s; 8556 for (count = 0 ; (tmp = strcasestr(ins, olds)) ; ++count) { 8557 ins = tmp + lolds; 8558 if (max && (count == max)) { 8559 // the maximum number is replacements is reached, stop 8560 break; 8561 } 8562 } 8563 8564 8565 size_t lnews; 8566 lnews = strlen(news); 8567 8568 // allocate result 8569 tmp = r = MALLOC(strlen(s) + (lnews - lolds) * count + 1); 8570 if (!r) { 8571 return(NULL);//LCOV_EXCL_LINE 8572 } 8573 8574 // replace olds with news 8575 // ins points to the start of olds in s 8576 // tmp is the front of s, tmp points the end of s front in r 8577 // copy news to tmp, tmp points the end of news in r 8578 // s is the remainder of s after end of olds 8579 while (count--) { 8580 ins = strcasestr(s, olds); 8581 lfront = (size_t)(ins - s); 8582 tmp = strncpy(tmp, s, lfront) + lfront; 8583 tmp = strcpy(tmp, news) + lnews; 8584 s += lfront + lolds; 8585 } 8586 8587 // copy end of string 8588 strcpy(tmp, s); 8589 return(r); 8590 } 8591 8592 char *icReplaceCharSS(const char *s, char olds, const char *news, size_t max) { 8593 8594 charToS(p, olds); 8595 return(icReplaceS(s, p, news, max)); 8596 } 8597 8598 char *icReplaceSCharS(const char *s, const char *olds, char news, size_t max) { 8599 8600 charToS(p, news); 8601 return(icReplaceS(s, olds, p, max)); 8602 } 8603 8604 char *icReplaceCharCharS(const char *s, char olds, char news, size_t max) { 8605 8606 charToS(p, olds); 8607 charToS(n, news); 8608 return(icReplaceS(s, p, n, max)); 8609 } 8610 8611 8612 /** 8613 * in place ignore case replace String 8614 * the olds string is replaced with the news string max times in the result 8615 * 0 for max means replace all olds strings 8616 * 8617 * \param 8618 * s: string (this parameter is reallocated) 8619 * olds: old string to be replaced in s 8620 * news: new string replacing olds in s 8621 * max: number of times to replace olds, 0 to replace all found olds 8622 * \return 8623 * modified s string (you must free the pointer) 8624 * NULL s not modified when s is NULL or empty and when olds is empty 8625 */ 8626 char* iicReplaceS(char **s, const char *olds, const char *news, size_t max ) { 8627 char *r = NULL; 8628 char *tmp = NULL; 8629 char *workingS = NULL; 8630 // ins is next insert point 8631 char *ins = NULL; 8632 size_t count; 8633 size_t lfront; 8634 8635 // sanity checks and initialization 8636 // count the number of replacements needed 8637 // allocate result 8638 // replace olds with news 8639 // copy end of string 8640 8641 // sanity checks and initialization 8642 if (!s || !*s) { 8643 return(NULL); 8644 } 8645 if (isEmptyS(*s)) { 8646 // s is empty, do nothing 8647 return(NULL); 8648 } 8649 if (!olds) { 8650 return(NULL); 8651 } 8652 size_t lolds; 8653 lolds = strlen(olds); 8654 if (!lolds) { 8655 // empty olds causes infinite loop 8656 return(NULL); 8657 } 8658 if (!news) { 8659 // empty string for NULL 8660 news = ""; 8661 } 8662 8663 // count the number of replacements needed 8664 ins = workingS = *s; 8665 for (count = 0 ; (tmp = strcasestr(ins, olds)) ; ++count) { 8666 ins = tmp + lolds; 8667 if (max && (count == max)) { 8668 // the maximum number is replacements is reached, stop 8669 break; 8670 } 8671 } 8672 8673 8674 size_t lnews; 8675 lnews = strlen(news); 8676 8677 // allocate result 8678 size_t rLen = strlen(*s) + (lnews - lolds) * count + 1;; 8679 tmp = r = MALLOC(rLen); 8680 if (!r) { 8681 return(NULL); 8682 } 8683 8684 // replace olds with news 8685 // ins points to the start of olds in s 8686 // tmp is the front of s, tmp points the end of s front in r 8687 // copy news to tmp, tmp points the end of news in r 8688 // s is the remainder of s after end of olds 8689 while (count--) { 8690 ins = strcasestr(workingS, olds); 8691 lfront = (size_t)(ins - workingS); 8692 tmp = strncpy(tmp, workingS, lfront) + lfront; 8693 tmp = strcpy(tmp, news) + lnews; 8694 workingS += lfront + lolds; 8695 } 8696 8697 // copy end of string 8698 strcpy(tmp, workingS); 8699 8700 free(*s); 8701 *s = r; 8702 return(r); 8703 } 8704 8705 char *iicReplaceCharSS(char **s, char olds, const char *news, size_t max) { 8706 8707 charToS(p, olds); 8708 return(iicReplaceS(s, p, news, max)); 8709 } 8710 8711 char *iicReplaceSCharS(char **s, const char *olds, char news, size_t max) { 8712 8713 charToS(p, news); 8714 return(iicReplaceS(s, olds, p, max)); 8715 } 8716 8717 char *iicReplaceCharCharS(char **s, char olds, char news, size_t max) { 8718 8719 charToS(p, olds); 8720 charToS(n, news); 8721 return(iicReplaceS(s, p, n, max)); 8722 } 8723 8724 /** 8725 * buffer ignore case replace String 8726 * the olds string is replaced with the news string max times in the result 8727 * 0 for max means replace all olds strings 8728 * 8729 * \param 8730 * s: string 8731 * olds: old string to be replaced in s 8732 * news: new string replacing olds in s 8733 * max: number of times to replace olds, 0 to replace all found olds 8734 * \return 8735 * modified s string 8736 * NULL s not modified when s is NULL or empty and when olds is empty 8737 */ 8738 char* bicReplaceS(char *s, const char *olds, const char *news, size_t max ) { 8739 char *r = NULL; 8740 char *tmp = NULL; 8741 char *workingS = NULL; 8742 // ins is next insert point 8743 char *ins = NULL; 8744 size_t count; 8745 size_t lfront; 8746 8747 // sanity checks and initialization 8748 // count the number of replacements needed 8749 // allocate result 8750 // replace olds with news 8751 // copy end of string 8752 8753 // sanity checks and initialization 8754 if (!s) { 8755 return(NULL); 8756 } 8757 if (isEmptyS(s)) { 8758 // s is empty, do nothing 8759 return(NULL); 8760 } 8761 if (!olds) { 8762 return(NULL); 8763 } 8764 size_t lolds; 8765 lolds = strlen(olds); 8766 if (!lolds) { 8767 // empty olds causes infinite loop 8768 return(NULL); 8769 } 8770 if (!news) { 8771 // empty string for NULL 8772 news = ""; 8773 } 8774 8775 // count the number of replacements needed 8776 ins = workingS = s; 8777 for (count = 0 ; (tmp = strcasestr(ins, olds)) ; ++count) { 8778 ins = tmp + lolds; 8779 if (max && (count == max)) { 8780 // the maximum number is replacements is reached, stop 8781 break; 8782 } 8783 } 8784 8785 8786 size_t lnews; 8787 lnews = strlen(news); 8788 8789 // allocate result 8790 size_t rLen = strlen(s) + (lnews - lolds) * count + 1;; 8791 tmp = r = MALLOC(rLen); 8792 if (!r) { 8793 return(NULL); 8794 } 8795 8796 // replace olds with news 8797 // ins points to the start of olds in s 8798 // tmp is the front of s, tmp points the end of s front in r 8799 // copy news to tmp, tmp points the end of news in r 8800 // s is the remainder of s after end of olds 8801 while (count--) { 8802 ins = strcasestr(workingS, olds); 8803 lfront = (size_t)(ins - workingS); 8804 tmp = strncpy(tmp, workingS, lfront) + lfront; 8805 tmp = strcpy(tmp, news) + lnews; 8806 workingS += lfront + lolds; 8807 } 8808 8809 // copy end of string 8810 strcpy(tmp, workingS); 8811 8812 strcpy(s, r); 8813 free(r); 8814 return(s); 8815 } 8816 8817 /** 8818 * buffer size ignore case replace String 8819 * the olds string is replaced with the news string max times in the result 8820 * 0 for max means replace all olds strings 8821 * 8822 * \param 8823 * s: string 8824 * olds: old string to be replaced in s 8825 * news: new string replacing olds in s 8826 * max: number of times to replace olds, 0 to replace all found olds 8827 * \return 8828 * modified s string 8829 * NULL s not modified when s is NULL or empty and when olds is empty 8830 */ 8831 char* bLicReplaceS(char *s, size_t sSize, const char *olds, const char *news, size_t max) { 8832 char *r = NULL; 8833 char *tmp = NULL; 8834 char *workingS = NULL; 8835 // ins is next insert point 8836 char *ins = NULL; 8837 size_t count; 8838 size_t lfront; 8839 8840 // sanity checks and initialization 8841 // count the number of replacements needed 8842 // allocate result 8843 // replace olds with news 8844 // copy end of string 8845 8846 // sanity checks and initialization 8847 if (!s) { 8848 return(NULL); 8849 } 8850 if (!sSize) { 8851 // size 0 - no change 8852 return(s); 8853 } 8854 if (isEmptyS(s)) { 8855 // s is empty, do nothing 8856 return(NULL); 8857 } 8858 if (!olds) { 8859 return(NULL); 8860 } 8861 size_t lolds; 8862 lolds = strlen(olds); 8863 if (!lolds) { 8864 // empty olds causes infinite loop 8865 return(NULL); 8866 } 8867 if (!news) { 8868 // empty string for NULL 8869 news = ""; 8870 } 8871 8872 // count the number of replacements needed 8873 ins = workingS = s; 8874 for (count = 0 ; (tmp = strcasestr(ins, olds)) ; ++count) { 8875 ins = tmp + lolds; 8876 if (max && (count == max)) { 8877 // the maximum number is replacements is reached, stop 8878 break; 8879 } 8880 } 8881 8882 8883 size_t lnews; 8884 lnews = strlen(news); 8885 8886 // allocate result 8887 size_t rLen = strlen(s) + (lnews - lolds) * count + 1;; 8888 tmp = r = MALLOC(rLen); 8889 if (!r) { 8890 return(NULL); 8891 } 8892 8893 // replace olds with news 8894 // ins points to the start of olds in s 8895 // tmp is the front of s, tmp points the end of s front in r 8896 // copy news to tmp, tmp points the end of news in r 8897 // s is the remainder of s after end of olds 8898 while (count--) { 8899 ins = strcasestr(workingS, olds); 8900 lfront = (size_t)(ins - workingS); 8901 tmp = strncpy(tmp, workingS, lfront) + lfront; 8902 tmp = strcpy(tmp, news) + lnews; 8903 workingS += lfront + lolds; 8904 } 8905 8906 // copy end of string 8907 strcpy(tmp, workingS); 8908 8909 pErrorNULL(strLCpy(s, sSize, r)); 8910 free(r); 8911 return(s); 8912 } 8913 8914 /** 8915 * ignore case replace Many Strings 8916 * the original remains unchanged 8917 * duplicate s 8918 * the olds string is replaced with the news string max times in the result 8919 * 8920 * Example: 8921 * r = icReplaceManyS("asd", "s", "BNM", "a", "AAA") 8922 * ^olds ^news ^olds ^news 8923 * 8924 * \param 8925 * s: string 8926 * olds: old string to be replaced in s 8927 * news: new string replacing olds in s 8928 * ... 8929 * \return 8930 * new string (you must free the pointer) 8931 * "" when s is empty 8932 * NULL when s is NULL 8933 * NULL when only 2 parameters are given 8934 * NULL when any olds is empty 8935 */ 8936 char *icReplaceManySF(const char *paramType, ...) { 8937 va_list pl; 8938 char *r = NULL; 8939 char *param = NULL; 8940 char *workingS = NULL; 8941 char *olds = NULL; 8942 char *news = NULL; 8943 8944 // sanity checks 8945 if (!paramType) { 8946 return(NULL); 8947 } 8948 8949 if (isEmptyS(paramType)) { 8950 return(emptySF()); 8951 } 8952 8953 workingS = strdup(paramType); 8954 8955 // add arguments to a list 8956 va_start(pl, paramType); 8957 param = va_arg(pl, char *); 8958 while (param) { 8959 if (!olds) { 8960 olds = param; 8961 } 8962 else if (!news) { 8963 news = param; 8964 r = icReplaceS(workingS, olds, news, 0); 8965 free(workingS); 8966 olds = NULL; 8967 news = NULL; 8968 workingS = r; 8969 } 8970 param = va_arg(pl, char *); 8971 } 8972 va_end(pl); 8973 if (!r) { 8974 free(workingS); 8975 } 8976 return(r); 8977 } 8978 8979 /** 8980 * in place ignore case replace Many Strings 8981 * the olds string is replaced with the news string max times in the result 8982 * 8983 * Example: 8984 * iicReplaceManyS(s, "s", "BNM", "a", "AAA") 8985 * ^olds ^news ^olds ^news 8986 * 8987 * \param 8988 * string (this parameter is reallocated) 8989 * olds: old string to be replaced in s 8990 * news: new string replacing olds in s 8991 * ... 8992 * \return 8993 * modified string (you must free the pointer) 8994 * NULL not modified when s is empty, when s is NULL, when only 2 parameters are given, 8995 * when any olds is empty 8996 */ 8997 char *iicReplaceManySF(char **s, char *paramType, ...) { 8998 va_list pl; 8999 char *olds = NULL; 9000 char *news = NULL; 9001 9002 // sanity checks 9003 if (!s || !*s) { 9004 return(NULL); 9005 } 9006 9007 if (isEmptyS(*s)) { 9008 return(NULL); 9009 } 9010 9011 olds = paramType;; 9012 9013 // add arguments to a list 9014 va_start(pl, paramType); 9015 paramType = va_arg(pl, char *); 9016 while (paramType) { 9017 if (!olds) { 9018 olds = paramType; 9019 } 9020 else if (!news) { 9021 news = paramType; 9022 pErrorNULL(iicReplaceS(s, olds, news, 0)); 9023 olds = NULL; 9024 news = NULL; 9025 } 9026 9027 paramType = va_arg(pl, char *); 9028 } 9029 va_end(pl); 9030 return(*s); 9031 } 9032 9033 /** 9034 * buffer ignore case replace Many Strings 9035 * the olds string is replaced with the news string max times in the result 9036 * 9037 * Example: 9038 * bReplaceManyS(s, "s", "BNM", "a", "AAA") 9039 * ^olds ^news ^olds ^news 9040 * 9041 * \param 9042 * string 9043 * olds: old string to be replaced in s 9044 * news: new string replacing olds in s 9045 * ... 9046 * \return 9047 * modified string 9048 * NULL not modified when s is empty, when s is NULL, when only 2 parameters are given, 9049 * when any olds is empty 9050 */ 9051 char *bicReplaceManySF(char *s, char *paramType, ...) { 9052 va_list pl; 9053 char *olds = NULL; 9054 char *news = NULL; 9055 9056 // sanity checks 9057 if (!s) { 9058 return(NULL); 9059 } 9060 9061 if (isEmptyS(s)) { 9062 return(NULL); 9063 } 9064 9065 olds = paramType;; 9066 9067 // add arguments to a list 9068 va_start(pl, paramType); 9069 paramType = va_arg(pl, char *); 9070 while (paramType) { 9071 if (!olds) { 9072 olds = paramType; 9073 } 9074 else if (!news) { 9075 news = paramType; 9076 pErrorNULL(bicReplaceS(s, olds, news, 0)); 9077 olds = NULL; 9078 news = NULL; 9079 } 9080 9081 paramType = va_arg(pl, char *); 9082 } 9083 va_end(pl); 9084 return(s); 9085 } 9086 9087 /** 9088 * buffer size ignore case replace Many Strings 9089 * the olds string is replaced with the news string max times in the result 9090 * 9091 * Example: 9092 * bReplaceManyS(s, "s", "BNM", "a", "AAA") 9093 * ^olds ^news ^olds ^news 9094 * 9095 * \param 9096 * string 9097 * olds: old string to be replaced in s 9098 * news: new string replacing olds in s 9099 * ... 9100 * \return 9101 * modified string 9102 * NULL not modified when s is empty, when s is NULL, when only 2 parameters are given, 9103 * when any olds is empty 9104 */ 9105 char *bLicReplaceManySF(char *s, size_t sSize, char *paramType, ...) { 9106 va_list pl; 9107 char *olds = NULL; 9108 char *news = NULL; 9109 9110 // sanity checks 9111 if (!s) { 9112 return(NULL); 9113 } 9114 9115 if (!sSize) { 9116 return(s); 9117 } 9118 9119 if (isEmptyS(s)) { 9120 return(NULL); 9121 } 9122 9123 olds = paramType;; 9124 9125 // add arguments to a list 9126 va_start(pl, paramType); 9127 paramType = va_arg(pl, char *); 9128 while (paramType) { 9129 if (!olds) { 9130 olds = paramType; 9131 } 9132 else if (!news) { 9133 news = paramType; 9134 pErrorNULL(bLicReplaceS(s, sSize, olds, news, 0)); 9135 olds = NULL; 9136 news = NULL; 9137 } 9138 9139 paramType = va_arg(pl, char *); 9140 } 9141 va_end(pl); 9142 return(s); 9143 } 9144 9145 9146 /** 9147 * string Equal 9148 * compare string1 to string2 9149 * 9150 * \param 9151 * 2 strings 9152 * \return 9153 * true the strings have identical content 9154 * false they differ 9155 */ 9156 bool eqS(const char *string1, const char *string2) { 9157 9158 // sanity checks 9159 if (!string1 || !string2) { 9160 return(false); 9161 } 9162 return(strcmp(string1,string2) == 0);; 9163 } 9164 9165 bool eqCharS(char c, const char *string2) { 9166 9167 // sanity checks 9168 if (!string2) { 9169 return(false); 9170 } 9171 charToS(s, c); 9172 return(strcmp(s,string2) == 0);; 9173 } 9174 9175 bool eqSChar(const char *string1, char c) { 9176 9177 // sanity checks 9178 if (!string1) { 9179 return(false); 9180 } 9181 charToS(s, c); 9182 return(strcmp(string1,s) == 0);; 9183 } 9184 9185 /** 9186 * string Index Equal 9187 * compare string1 at index to string2 9188 * when string2 is empty, the result is false 9189 * 9190 * \param 9191 * 2 strings 9192 * \return 9193 * true string1 at index is equal to string2 9194 * false they differ 9195 */ 9196 bool eqIS(const char *string1, const char *string2, int64_t index) { 9197 9198 // sanity checks 9199 if (!string1 || !string2) { 9200 return(false); 9201 } 9202 9203 int64_t len = (int64_t)strlen(string1); 9204 if (index >= len && len) { 9205 // && len: string1 is empty, check below if string2 is also empty 9206 // when string1 and string2 are empty and index is 0, the result is true 9207 return(false); 9208 } 9209 if (index < -len) { 9210 return(false); 9211 } 9212 if (index < 0) { 9213 index = len + index; 9214 } 9215 9216 int64_t len2 = (int64_t)strlen(string2); 9217 if (!len2 && !len && !index) { 9218 // string1 and string2 are empty and index is 0 9219 return(true); 9220 } 9221 if (!len2) { 9222 return(false); 9223 } 9224 if (index > (len - len2)) { 9225 return(false); 9226 } 9227 9228 return(strncmp(string1 + index, string2, (size_t)len2) == 0);; 9229 } 9230 9231 bool eqICharS(const char *string1, char c, int64_t index) { 9232 9233 charToS(s,c); 9234 return(eqIS(string1, s, index)); 9235 } 9236 9237 /** 9238 * starts With String 9239 * compare start of string1 with string2 9240 * 9241 * \param 9242 * 2 strings 9243 * \return 9244 * true when string1 starts with string2 9245 * false for other cases 9246 */ 9247 bool startsWithS(const char *string1, const char *string2) { 9248 9249 // sanity checks 9250 if (!string1 || !string2) { 9251 return(false); 9252 } 9253 return(strncmp(string1, string2, strlen(string2)) == 0);; 9254 } 9255 9256 bool startsWithCharS(const char *string1, char c) { 9257 9258 if (!string1) { 9259 return(false); 9260 } 9261 return(*string1 == c);; 9262 } 9263 9264 /** 9265 * ends With String 9266 * compare end of string1 with string2 9267 * 9268 * \param 9269 * 2 strings 9270 * \return 9271 * true when string1 ends with string2 9272 * false for other cases 9273 */ 9274 bool endsWithS(const char *string1, const char *string2) { 9275 9276 // sanity checks 9277 if (!string1 || !string2) { 9278 return(false); 9279 } 9280 9281 if (strlen(string1) < strlen(string2)) { 9282 return(false); 9283 } 9284 return(strcmp(string1 + strlen(string1) - strlen(string2), string2) == 0);; 9285 } 9286 9287 bool endsWithCharS(const char *string1, char c) { 9288 9289 // sanity checks 9290 if (!string1) { 9291 return(false); 9292 } 9293 9294 if (!strlen(string1) && !c) { 9295 // string1 is empty and c is 0 9296 return(true); 9297 } 9298 if (!strlen(string1)) { 9299 return(false); 9300 } 9301 return(*(string1+strlen(string1)-1) == c);; 9302 } 9303 9304 /** 9305 * count String 9306 * count number of (non-overlapping) occurrences of a substring 9307 * 9308 * Example: 9309 * assert(countS("aaa aaa", "a") == 6); 9310 * assert(countS("aaa aaa", "ab") == 0); 9311 * assert(countS("aaa aaa", "aa") == 2); 9312 * 9313 * \param 9314 * 2 strings 9315 * \return 9316 * string count 9317 * -1 when there is an error 9318 */ 9319 ssize_t countS(const char *s, const char *needle) { 9320 9321 // sanity checks 9322 if (!s || !needle || !needle[0]) { 9323 return(-1); 9324 } 9325 9326 ssize_t r = 0; 9327 size_t len = strlen(needle); 9328 9329 while (s != NULL) { 9330 s = strstr(s, needle); 9331 if (s != NULL) { 9332 r++; 9333 s += len; 9334 } 9335 else { 9336 break; 9337 } 9338 } 9339 9340 return(r); 9341 } 9342 9343 ssize_t countCharS(const char *s, char c) { 9344 9345 // sanity checks 9346 if (!s || !c) { 9347 return(-1); 9348 } 9349 9350 ssize_t r = 0; 9351 9352 while (*s != 0) { 9353 if (*s == c) { 9354 r++; 9355 } 9356 s++; 9357 } 9358 9359 return(r); 9360 } 9361 9362 /** 9363 * ignore case string Equal 9364 * compare string1 to string2 9365 * 9366 * \param 9367 * 2 strings 9368 * \return 9369 * true the strings have identical content 9370 * false they differ 9371 */ 9372 bool icEqS(const char *string1, const char *string2) { 9373 9374 // sanity checks 9375 if (!string1 || !string2) { 9376 return(false); 9377 } 9378 return(strcasecmp(string1,string2) == 0);; 9379 } 9380 9381 bool icEqCharS(char c, const char *string2) { 9382 9383 // sanity checks 9384 if (!string2) { 9385 return(false); 9386 } 9387 charToS(s, c); 9388 return(strcasecmp(s,string2) == 0);; 9389 } 9390 9391 bool icEqSChar(const char *string1, char c) { 9392 9393 // sanity checks 9394 if (!string1) { 9395 return(false); 9396 } 9397 charToS(s, c); 9398 return(strcasecmp(string1,s) == 0);; 9399 } 9400 9401 /** 9402 * ignore case string Index Equal 9403 * compare string1 at index to string2 9404 * when string2 is empty, the result is false 9405 * 9406 * \param 9407 * 2 strings 9408 * \return 9409 * true string1 at index is equal to string2 9410 * false they differ 9411 */ 9412 bool icEqIS(const char *string1, const char *string2, int64_t index) { 9413 9414 // sanity checks 9415 if (!string1 || !string2) { 9416 return(false); 9417 } 9418 9419 int64_t len = (int64_t)strlen(string1); 9420 if (index >= len && len) { 9421 // && len: string1 is empty, check below if string2 is also empty 9422 // when string1 and string2 are empty and index is 0, the result is true 9423 return(false); 9424 } 9425 if (index < -len) { 9426 return(false); 9427 } 9428 if (index < 0) { 9429 index = len + index; 9430 } 9431 9432 int64_t len2 = (int64_t)strlen(string2); 9433 if (!len2 && !len && !index) { 9434 // string1 and string2 are empty and index is 0 9435 return(true); 9436 } 9437 if (!len2) { 9438 return(false); 9439 } 9440 if (index > (len - len2)) { 9441 return(false); 9442 } 9443 9444 return(strncasecmp(string1 + index, string2, (size_t)len2) == 0);; 9445 } 9446 9447 bool icEqICharS(const char *string1, char c, int64_t index) { 9448 9449 charToS(s,c); 9450 return(icEqIS(string1, s, index)); 9451 } 9452 9453 /** 9454 * ignore case starts With String 9455 * compare start of string1 with string2 9456 * 9457 * \param 9458 * 2 strings 9459 * \return 9460 * true when string1 starts with string2 9461 * false for other cases 9462 */ 9463 bool icStartsWithS(const char *string1, const char *string2) { 9464 9465 // sanity checks 9466 if (!string1 || !string2) { 9467 return(false); 9468 } 9469 return(strncasecmp(string1, string2, strlen(string2)) == 0);; 9470 } 9471 9472 bool icStartsWithCharS(const char *string1, char c) { 9473 9474 if (!string1) { 9475 return(false); 9476 } 9477 return(toupper(*string1) == toupper(c));; 9478 } 9479 9480 /** 9481 * ignore case ends With String 9482 * compare end of string1 with string2 9483 * 9484 * \param 9485 * 2 strings 9486 * \return 9487 * true when string1 ends with string2 9488 * false for other cases 9489 */ 9490 bool icEndsWithS(const char *string1, const char *string2) { 9491 9492 // sanity checks 9493 if (!string1 || !string2) { 9494 return(false); 9495 } 9496 9497 if (strlen(string1) < strlen(string2)) { 9498 return(false); 9499 } 9500 return(strcasecmp(string1 + strlen(string1) - strlen(string2), string2) == 0);; 9501 } 9502 9503 bool icEndsWithCharS(const char *string1, char c) { 9504 9505 // sanity checks 9506 if (!string1) { 9507 return(false); 9508 } 9509 9510 if (!strlen(string1) && !c) { 9511 // string1 is empty and c is 0 9512 return(true); 9513 } 9514 if (!strlen(string1)) { 9515 return(false); 9516 } 9517 return(toupper(*(string1+strlen(string1)-1)) == toupper(c));; 9518 } 9519 9520 /** 9521 * ignore case count String 9522 * count number of (non-overlapping) occurrences of a substring 9523 * 9524 * Example: 9525 * assert(countS("aaa aaa", "a") == 6); 9526 * assert(countS("aaa aaa", "ab") == 0); 9527 * assert(countS("aaa aaa", "aa") == 2); 9528 * 9529 * \param 9530 * 2 strings 9531 * \return 9532 * string count 9533 * -1 when there is an error 9534 */ 9535 ssize_t icCountS(const char *s, const char *needle) { 9536 9537 // sanity checks 9538 if (!s || !needle || !needle[0]) { 9539 return(-1); 9540 } 9541 9542 ssize_t r = 0; 9543 size_t len = strlen(needle); 9544 9545 while (s != NULL) { 9546 s = strcasestr(s, needle); 9547 if (s != NULL) { 9548 r++; 9549 s += len; 9550 } 9551 else { 9552 break; 9553 } 9554 } 9555 9556 return(r); 9557 } 9558 9559 ssize_t icCountCharS(const char *s, char c) { 9560 9561 // sanity checks 9562 if (!s || !c) { 9563 return(-1); 9564 } 9565 9566 ssize_t r = 0; 9567 9568 c = (char)tolower(c); 9569 9570 while (*s != 0) { 9571 if (tolower(*s) == c) { 9572 r++; 9573 } 9574 s++; 9575 } 9576 9577 return(r); 9578 } 9579 9580 /** 9581 * has control char 9582 * 9583 * \return 9584 * true when there is a terminal control in string 9585 */ 9586 bool hasCtrlChar(const char *string) { 9587 9588 if (!string) { 9589 return(false); 9590 } 9591 9592 range(i, strlen(string)) { 9593 if (iscntrl(string[i])) { 9594 return(true); 9595 } 9596 } 9597 9598 return(false); 9599 } 9600 9601 /** 9602 * remove terminal control char from string 9603 * 9604 * \param 9605 * string 9606 * \return 9607 * new string without the control chars 9608 * NULL when string is NULL 9609 */ 9610 char *stripCtrlS(const char *string) { 9611 char *r = NULL; 9612 9613 if (!string) { 9614 return(NULL); 9615 } 9616 9617 size_t len = strlen(string)+1; 9618 r = MALLOC(len); 9619 if (!r) { 9620 return(NULL); 9621 } 9622 9623 size_t j = 0; 9624 range(i, len) { 9625 if (!iscntrl(string[i])) { 9626 r[j++] = string[i]; 9627 } 9628 } 9629 r[j] = 0; 9630 return(r); 9631 } 9632 9633 /** 9634 * remove terminal control char from string 9635 * 9636 * \param 9637 * string pointer to a string 9638 * \return 9639 * string without the control chars 9640 * NULL when string is NULL 9641 */ 9642 char *iStripCtrlS(char **string) { 9643 9644 if (!string || !*string) { 9645 return(NULL); 9646 } 9647 9648 size_t i = 0, j = 0; 9649 9650 while ((*string)[i]) { 9651 if (!iscntrl((*string)[i])) { 9652 (*string)[j++] = (*string)[i]; 9653 } 9654 i++; 9655 } 9656 9657 (*string)[j] = 0;; 9658 return(*string); 9659 } 9660 9661 /** 9662 * remove terminal control char from string 9663 * 9664 * \param 9665 * string 9666 * \return 9667 * string without the control chars 9668 * NULL when string is NULL 9669 */ 9670 char *bStripCtrlS(char *string) { 9671 9672 if (!string) { 9673 return(NULL); 9674 } 9675 9676 size_t i = 0, j = 0; 9677 9678 while (string[i]) { 9679 if (!iscntrl(string[i])) { 9680 string[j++] = string[i]; 9681 } 9682 i++; 9683 } 9684 9685 string[j] = 0;; 9686 return(string); 9687 } 9688 9689 /** 9690 * remove ansi colors from string 9691 * 9692 * \param 9693 * string 9694 * \return 9695 * new string without colors 9696 * NULL when string is NULL 9697 */ 9698 char *stripColorsS(const char *string) { 9699 char *r = NULL; 9700 9701 if (!string) { 9702 return(NULL); 9703 } 9704 9705 size_t len = strlen(string); 9706 r = MALLOC(len+1); 9707 if (!r) { 9708 return(NULL); 9709 } 9710 9711 size_t j = 0; 9712 uint16_t state = 0; 9713 range(i, len) { 9714 char ch = string[i]; 9715 // suppress \r only when followed by \n 9716 if (state == 1) { 9717 if (ch != 0x0d) { 9718 state = 0; 9719 } 9720 if (ch != 0x0a) { 9721 r[j++] = 0x0d; 9722 } 9723 } 9724 if (state == 0 && ch == 0x0d) { 9725 state = 1; 9726 } 9727 // strip colors 9728 if (state == 5) { 9729 state = 0; 9730 continue; 9731 } 9732 if (state == 4) { 9733 if (ch == 7) { 9734 state = 0; 9735 continue; 9736 } 9737 elif (ch == 0x1b) { 9738 state = 5; 9739 } 9740 } 9741 if (state == 3) { 9742 if (ch != ';' && (ch < '0' || ch > '9') && ch != '?') { 9743 state = 0; 9744 continue; 9745 } 9746 } 9747 if (state == 2) { 9748 if (ch == '[') { 9749 state = 3; 9750 } 9751 elif (ch == ']' && string[i+1] <= '9') { 9752 state = 4; 9753 } 9754 elif (ch == '%') { 9755 state = 0; 9756 continue; 9757 } 9758 } 9759 if (state == 0 && ch == 0x1b) { 9760 state = 2; 9761 } 9762 if (state == 0) { 9763 r[j++] = ch; 9764 } 9765 } 9766 r[j] = 0; 9767 return(r); 9768 } 9769 9770 /** 9771 * remove ansi colors from string 9772 * 9773 * \param 9774 * string pointer to a string 9775 * \return 9776 * string without the control chars 9777 * NULL when string is NULL 9778 */ 9779 char *iStripColorsS(char **string) { 9780 9781 if (!string || !*string) { 9782 return(NULL); 9783 } 9784 9785 size_t i = 0, j = 0; 9786 uint16_t state = 0; 9787 9788 while ((*string)[i]) { 9789 char ch = (*string)[i]; 9790 // suppress \r only when followed by \n 9791 if (state == 1) { 9792 if (ch != 0x0d) { 9793 state = 0; 9794 } 9795 if (ch != 0x0a) { 9796 (*string)[j++] = 0x0d; 9797 } 9798 } 9799 if (state == 0 && ch == 0x0d) { 9800 state = 1; 9801 } 9802 // strip colors 9803 if (state == 5) { 9804 state = 0; 9805 goto cont; 9806 } 9807 if (state == 4) { 9808 if (ch == 7) { 9809 state = 0; 9810 goto cont; 9811 } 9812 elif (ch == 0x1b) { 9813 state = 5; 9814 } 9815 } 9816 if (state == 3) { 9817 if (ch != ';' && (ch < '0' || ch > '9') && ch != '?') { 9818 state = 0; 9819 goto cont; 9820 } 9821 } 9822 if (state == 2) { 9823 if (ch == '[') { 9824 state = 3; 9825 } 9826 elif (ch == ']' && (*string)[i+1] <= '9') { 9827 state = 4; 9828 } 9829 elif (ch == '%') { 9830 state = 0; 9831 goto cont; 9832 } 9833 } 9834 if (state == 0 && ch == 0x1b) { 9835 state = 2; 9836 } 9837 if (state == 0) { 9838 (*string)[j++] = ch; 9839 } 9840 cont: 9841 i++; 9842 } 9843 9844 (*string)[j] = 0; 9845 return(*string); 9846 } 9847 9848 /** 9849 * remove terminal control char from string 9850 * 9851 * \param 9852 * string 9853 * \return 9854 * string without the control chars 9855 * NULL when string is NULL 9856 */ 9857 char *bStripColorsS(char *string) { 9858 9859 if (!string) { 9860 return(NULL); 9861 } 9862 9863 size_t i = 0, j = 0; 9864 uint16_t state = 0; 9865 9866 while (string[i]) { 9867 char ch = string[i]; 9868 // suppress \r only when followed by \n 9869 if (state == 1) { 9870 if (ch != 0x0d) { 9871 state = 0; 9872 } 9873 if (ch != 0x0a) { 9874 string[j++] = 0x0d; 9875 } 9876 } 9877 if (state == 0 && ch == 0x0d) { 9878 state = 1; 9879 } 9880 // strip colors 9881 if (state == 5) { 9882 state = 0; 9883 goto cont; 9884 } 9885 if (state == 4) { 9886 if (ch == 7) { 9887 state = 0; 9888 goto cont; 9889 } 9890 elif (ch == 0x1b) { 9891 state = 5; 9892 } 9893 } 9894 if (state == 3) { 9895 if (ch != ';' && (ch < '0' || ch > '9') && ch != '?') { 9896 state = 0; 9897 goto cont; 9898 } 9899 } 9900 if (state == 2) { 9901 if (ch == '[') { 9902 state = 3; 9903 } 9904 elif (ch == ']' && string[i+1] <= '9') { 9905 state = 4; 9906 } 9907 elif (ch == '%') { 9908 state = 0; 9909 goto cont; 9910 } 9911 } 9912 if (state == 0 && ch == 0x1b) { 9913 state = 2; 9914 } 9915 if (state == 0) { 9916 string[j++] = ch; 9917 } 9918 cont: 9919 i++; 9920 } 9921 9922 string[j] = 0; 9923 return(string); 9924 } 9925 9926 9927 /** 9928 * add backslash '\' before delim('\'' or '"') and backslash 9929 * the backslashes in the result avoid splitting the string 9930 * when it is in a source file or a json string 9931 * \param 9932 * s string to escape 9933 * \param 9934 * delim string delimiter ' or " 9935 * \return 9936 * new string with escape backslash (free this buffer) 9937 * null when s is null 9938 */ 9939 char* quoteS(const char *s, char delim) { 9940 char *r = NULL; 9941 9942 // steps 9943 // sanity check 9944 // compute result string length to allocate the buffer once 9945 // copy s and add the bashslashes 9946 // terminate the result string 9947 9948 // sanity check 9949 if (!s) { 9950 return(null); 9951 } 9952 char delims[3] = {delim, '\\', 0/*terminate accept string for strpbrk*/}; 9953 9954 // compute result string length to allocate the buffer once 9955 size_t count = 0; 9956 const char *tmp = s; 9957 tmp = strpbrk(tmp, delims); 9958 while (tmp) { 9959 inc count; 9960 inc tmp; 9961 tmp = strpbrk(tmp, delims); 9962 } 9963 9964 if (!count) { 9965 return(strdup(s)); 9966 } 9967 9968 r = malloc(strlen(s) + 1 + count); 9969 if (not r) { 9970 return(null); 9971 } 9972 9973 // copy s and add the bashslashes 9974 size_t i = 0; 9975 while (*s) { 9976 if (*s == delims[0] or *s == delims[1]) { 9977 r[i++] = '\\'; 9978 } 9979 r[i++] = *s; 9980 inc s; 9981 } 9982 9983 // terminate the result string 9984 r[i] = 0; 9985 return(r); 9986 } 9987 9988 9989 /** 9990 * add backslash '\' before delim('\'' or '"') and backslash 9991 * the backslashes in the result avoid splitting the string 9992 * when it is in a source file or a json string 9993 * \param 9994 * dest destination buffer, it should be big enough 9995 * \param 9996 * s string to escape 9997 * \param 9998 * delim string delimiter ' or " 9999 * \return 10000 * new string with escape backslash (free this buffer) 10001 * null when s is null 10002 */ 10003 char* bQuoteS(char *dest, const char *s, char delim) { 10004 10005 // steps 10006 // sanity check 10007 // copy s and add the bashslashes 10008 // terminate the result string 10009 10010 // sanity check 10011 if (!s or !dest) { 10012 return(null); 10013 } 10014 char delims[3] = {delim, '\\', 0/*terminate accept string for strpbrk*/}; 10015 10016 // copy s and add the bashslashes 10017 size_t i = 0; 10018 while (*s) { 10019 if (*s == delims[0] or *s == delims[1]) { 10020 dest[i++] = '\\'; 10021 } 10022 dest[i++] = *s; 10023 inc s; 10024 } 10025 10026 // terminate the result string 10027 dest[i] = 0; 10028 return(dest); 10029 } 10030 10031 10032 /** 10033 * add backslash '\' before delim('\'' or '"') and backslash 10034 * the backslashes in the result avoid splitting the string 10035 * when it is in a source file or a json string 10036 * \param 10037 * dest destination buffer 10038 * \param 10039 * destSize destination buffer size 10040 * \param 10041 * s string to escape 10042 * \param 10043 * delim string delimiter ' or " 10044 * \return 10045 * new string with escape backslash (free this buffer) 10046 * null when s is null 10047 */ 10048 char* bLQuoteS(char *dest, size_t destSize, const char *s, char delim) { 10049 10050 // steps 10051 // sanity check 10052 // copy s and add the bashslashes 10053 // terminate the result string 10054 10055 // sanity check 10056 if (!s or !dest or !destSize) { 10057 return(null); 10058 } 10059 char delims[3] = {delim, '\\', 0/*terminate accept string for strpbrk*/}; 10060 10061 // copy s and add the bashslashes 10062 size_t i = 0; 10063 while (*s) { 10064 bool isBackslash = no; 10065 if (*s == delims[0] or *s == delims[1]) { 10066 dest[i++] = '\\'; 10067 if (i >= destSize) { 10068 // end of dest buffer is reached 10069 dec i; 10070 break; 10071 } 10072 isBackslash = yes; 10073 } 10074 dest[i++] = *s; 10075 if (i >= destSize) { 10076 // end of dest buffer is reached 10077 dec i; 10078 // remove backslash 10079 if (isBackslash) { 10080 dec i; 10081 } 10082 break; 10083 } 10084 inc s; 10085 } 10086 10087 // terminate the result string 10088 dest[i] = 0; 10089 return(dest); 10090 } 10091 10092 10093 /** 10094 * return the length of the escaped string (without the terminating \0) 10095 */ 10096 size_t quoteLenS(const char *s, char delim) { 10097 size_t r = 0;; 10098 10099 if (!s) { 10100 return(0); 10101 } 10102 char delims[3] = {delim, '\\', 0/*terminate accept string for strpbrk*/}; 10103 10104 // compute result string length to allocate the buffer once 10105 const char *tmp = s; 10106 tmp = strpbrk(tmp, delims); 10107 while (tmp) { 10108 inc r; 10109 inc tmp; 10110 tmp = strpbrk(tmp, delims); 10111 } 10112 10113 r += strlen(s); 10114 return(r); 10115 } 10116 10117 10118 /** 10119 * escape string according the json specification (RFC 8259) 10120 * if there is \uNNNN in the string, the backslash is escaped and it will 10121 * be parsed as the string '\uNNNN' be the json parsers 10122 * the unicode characters should be converted to UTF8 codepoints instead of 10123 * using \uNNNN 10124 * the result can be included in a json string and the parsing 10125 * will be correct 10126 * \param 10127 * s string to escape 10128 * \param 10129 * delim string delimiter ' or " 10130 * \return 10131 * new string with escape backslash (free this buffer) 10132 * null when s is null 10133 */ 10134 char* escapeS(const char *s, char delim) { 10135 char *r = NULL; 10136 10137 // steps 10138 // sanity check 10139 // compute result string length to allocate the buffer once 10140 // copy s and add the bashslashes 10141 // terminate the result string 10142 10143 // sanity check 10144 if (!s) { 10145 return(null); 10146 } 10147 char delims[] = {delim, '\\', '\b', '\f', '\n', '\r', '\t', 0/*terminate accept string for strpbrk*/}; 10148 10149 // compute result string length to allocate the buffer once 10150 size_t count = 0; 10151 const char *tmp = s; 10152 tmp = strpbrk(tmp, delims); 10153 while (tmp) { 10154 inc count; 10155 inc tmp; 10156 tmp = strpbrk(tmp, delims); 10157 } 10158 10159 if (!count) { 10160 return(strdup(s)); 10161 } 10162 r = malloc(strlen(s) + 1 + count); 10163 if (not r) { 10164 return(null); 10165 } 10166 10167 // copy s and add the bashslashes 10168 size_t i = 0; 10169 while (*s) { 10170 arange(j, delims) { 10171 if (*s == delims[j]) { 10172 r[i++] = '\\'; 10173 break; 10174 } 10175 } 10176 switch (*s) { 10177 case '\b': 10178 r[i++] = 'b'; 10179 break; 10180 case '\f': 10181 r[i++] = 'f'; 10182 break; 10183 case '\n': 10184 r[i++] = 'n'; 10185 break; 10186 case '\r': 10187 r[i++] = 'r'; 10188 break; 10189 case '\t': 10190 r[i++] = 't'; 10191 break; 10192 default: 10193 r[i++] = *s; 10194 break; 10195 } 10196 inc s; 10197 } 10198 10199 // terminate the result string 10200 r[i] = 0; 10201 return(r); 10202 } 10203 10204 10205 /** 10206 * escape string according the json specification (RFC 8259) 10207 * if there is \uNNNN in the string, the backslash is escaped and it will 10208 * be parsed as the string '\uNNNN' be the json parsers 10209 * the unicode characters should be converted to UTF8 codepoints instead of 10210 * using \uNNNN 10211 * the result can be included in a json string and the parsing 10212 * will be correct 10213 * \param 10214 * dest destination buffer 10215 * \param 10216 * s string to escape 10217 * \param 10218 * delim string delimiter ' or " 10219 * \return 10220 * new string with escape backslash (free this buffer) 10221 * null when s is null 10222 */ 10223 char* bEscapeS(char *dest, const char *s, char delim) { 10224 10225 // steps 10226 // sanity check 10227 // copy s and add the bashslashes 10228 // terminate the result string 10229 10230 // sanity check 10231 if (!s or !dest) { 10232 return(null); 10233 } 10234 char delims[] = {delim, '\\', '\b', '\f', '\n', '\r', '\t', 0/*terminate accept string for strpbrk*/}; 10235 10236 // copy s and add the bashslashes 10237 size_t i = 0; 10238 while (*s) { 10239 arange(j, delims) { 10240 if (*s == delims[j]) { 10241 dest[i++] = '\\'; 10242 break; 10243 } 10244 } 10245 switch(*s) { 10246 case '\b': 10247 dest[i++] = 'b'; 10248 break; 10249 case '\f': 10250 dest[i++] = 'f'; 10251 break; 10252 case '\n': 10253 dest[i++] = 'n'; 10254 break; 10255 case '\r': 10256 dest[i++] = 'r'; 10257 break; 10258 case '\t': 10259 dest[i++] = 't'; 10260 break; 10261 default: 10262 dest[i++] = *s; 10263 break; 10264 } 10265 inc s; 10266 } 10267 10268 // terminate the result string 10269 dest[i] = 0; 10270 return(dest); 10271 } 10272 10273 10274 /** 10275 * escape string according the json specification (RFC 8259) 10276 * if there is \uNNNN in the string, the backslash is escaped and it will 10277 * be parsed as the string '\uNNNN' be the json parsers 10278 * the unicode characters should be converted to UTF8 codepoints instead of 10279 * using \uNNNN 10280 * the result can be included in a json string and the parsing 10281 * will be correct 10282 * \param 10283 * dest destination buffer 10284 * \param 10285 * destSize destination buffer size 10286 * \param 10287 * s string to escape 10288 * \param 10289 * delim string delimiter ' or " 10290 * \return 10291 * new string with escape backslash (free this buffer) 10292 * null when s is null 10293 */ 10294 char* bLEscapeS(char *dest, size_t destSize, const char *s, char delim) { 10295 10296 // steps 10297 // sanity check 10298 // copy s and add the bashslashes 10299 // terminate the result string 10300 10301 // sanity check 10302 if (!s or !dest or !destSize) { 10303 return(null); 10304 } 10305 char delims[] = {delim, '\\', '\b', '\f', '\n', '\r', '\t', 0/*terminate accept string for strpbrk*/}; 10306 10307 // copy s and add the bashslashes 10308 size_t i = 0; 10309 while (*s) { 10310 bool isBackslash = no; 10311 arange(j, delims) { 10312 if (*s == delims[j]) { 10313 dest[i++] = '\\'; 10314 if (i >= destSize) { 10315 // end of dest buffer is reached 10316 dec i; 10317 goto end; 10318 } 10319 isBackslash = yes; 10320 break; 10321 } 10322 } 10323 switch(*s) { 10324 case '\b': 10325 dest[i++] = 'b'; 10326 break; 10327 case '\f': 10328 dest[i++] = 'f'; 10329 break; 10330 case '\n': 10331 dest[i++] = 'n'; 10332 break; 10333 case '\r': 10334 dest[i++] = 'r'; 10335 break; 10336 case '\t': 10337 dest[i++] = 't'; 10338 break; 10339 default: 10340 dest[i++] = *s; 10341 break; 10342 } 10343 if (i >= destSize) { 10344 // end of dest buffer is reached 10345 dec i; 10346 // remove backslash 10347 if (isBackslash) { 10348 dec i; 10349 } 10350 break; 10351 } 10352 inc s; 10353 } 10354 10355 // terminate the result string 10356 end: 10357 dest[i] = 0; 10358 return(dest); 10359 } 10360 10361 10362 /** 10363 * return the length of the escaped string (without the terminating \0) 10364 */ 10365 size_t escapeLenS(const char *s, char delim) { 10366 size_t r = 0;; 10367 10368 if (!s) { 10369 return(0); 10370 } 10371 char delims[] = {delim, '\\', '\b', '\f', '\n', '\r', '\t', 0/*terminate accept string for strpbrk*/}; 10372 10373 // compute result string length to allocate the buffer once 10374 const char *tmp = s; 10375 tmp = strpbrk(tmp, delims); 10376 while (tmp) { 10377 inc r; 10378 inc tmp; 10379 tmp = strpbrk(tmp, delims); 10380 } 10381 10382 r += strlen(s); 10383 return(r); 10384 } 10385 10386 10387 /** 10388 * convert number between 0 and 15 to hexadecimal character '0' to 'F' 10389 */ 10390 char nibbleToHex(u8 n) { 10391 10392 if (n > 15) { 10393 return 'X'; 10394 } 10395 elif (n < 10) { 10396 return((char)(n + '0')); 10397 } 10398 else { 10399 return((char)((n-10) + 'A')); 10400 } 10401 } 10402 10403 10404 /** 10405 * escape string to become a valid C source string 10406 * control characters, backslash and double quotes are escaped. 10407 * control characters without an escaped representation (\a) are represented as 10408 * hexidecimal literal '\xNN' 10409 * the result can be included in C source code and the parsing will be 10410 * correct 10411 * \param 10412 * S string to escape 10413 * \return 10414 * new escaped string (free this buffer) 10415 * null when S is null 10416 */ 10417 char* cEscapeS(const char *S) { 10418 char *r = NULL; 10419 10420 // u8 because nibbles are needed for control characters without an escaped representation 10421 const u8 *s = (const u8*)S; 10422 10423 // steps 10424 // sanity check 10425 // compute result string length to allocate the buffer once 10426 // search control characters without an escaped representation 10427 // copy s and add the bashslashes 10428 // terminate the result string 10429 10430 // sanity check 10431 if (!s) { 10432 return(null); 10433 } 10434 char delims[] = {'"', '\\', '\a', '\b', '\t', '\n', '\v', '\f', '\r', 0/*terminate accept string for strpbrk*/}; 10435 10436 // compute result string length to allocate the buffer once 10437 size_t count = 0; 10438 const char *tmp = S; 10439 tmp = strpbrk(tmp, delims); 10440 while (tmp) { 10441 inc count; 10442 inc tmp; 10443 tmp = strpbrk(tmp, delims); 10444 } 10445 10446 // search control characters without an escaped representation 10447 tmp = S; 10448 while (*tmp) { 10449 if (*tmp > 0x1F) { 10450 goto cont; 10451 } 10452 bool found = no; 10453 arange(j, delims) { 10454 if (*tmp == delims[j]) { 10455 found = yes; 10456 break; 10457 } 10458 } 10459 if (not found) { 10460 // allocate space for ""\xNN"" 10461 // it is 8 bytes but one byte is counted with strlen(s) 10462 count += 7; 10463 } 10464 cont: 10465 inc tmp; 10466 } 10467 10468 if (!count) { 10469 return(strdup(S)); 10470 } 10471 r = malloc(strlen(S) + 1 + count); 10472 if (not r) { 10473 return(null); 10474 } 10475 10476 // copy s and add the bashslashes 10477 size_t i = 0; 10478 while (*s) { 10479 arange(j, delims) { 10480 if (*s == delims[j]) { 10481 r[i++] = '\\'; 10482 break; 10483 } 10484 } 10485 switch(*s) { 10486 case '\a': 10487 r[i++] = 'a'; 10488 break; 10489 case '\b': 10490 r[i++] = 'b'; 10491 break; 10492 case '\t': 10493 r[i++] = 't'; 10494 break; 10495 case '\n': 10496 r[i++] = 'n'; 10497 break; 10498 case '\v': 10499 r[i++] = 'v'; 10500 break; 10501 case '\f': 10502 r[i++] = 'f'; 10503 break; 10504 case '\r': 10505 r[i++] = 'r'; 10506 break; 10507 default: 10508 if (*s > 0x1F) { 10509 r[i++] = (char)*s; 10510 } 10511 else { 10512 // byte 0x3 becomes ""\x03"" 10513 r[i++] = '"'; 10514 r[i++] = '"'; 10515 r[i++] = '\\'; 10516 r[i++] = 'x'; 10517 r[i++] = nibbleToHex(*s >> 4); 10518 r[i++] = nibbleToHex(*s & 0xF); 10519 r[i++] = '"'; 10520 r[i++] = '"'; 10521 } 10522 break; 10523 } 10524 inc s; 10525 } 10526 10527 // terminate the result string 10528 r[i] = 0; 10529 return(r); 10530 } 10531 10532 10533 /** 10534 * escape string to become a valid C source string 10535 * control characters, backslash and double quotes are escaped. 10536 * control characters without an escaped representation (\a) are represented as 10537 * hexidecimal literal '\xNN' 10538 * the result can be included in C source code and the parsing will be 10539 * correct 10540 * \param 10541 * dest destination buffer 10542 * \param 10543 * S string to escape 10544 * \return 10545 * new escaped string (free this buffer) 10546 * null when S is null 10547 */ 10548 char* bCEscapeS(char *dest, const char *S) { 10549 10550 // u8 because nibbles are needed for control characters without an escaped representation 10551 const u8 *s = (const u8*)S; 10552 10553 // steps 10554 // sanity check 10555 // copy s and add the bashslashes 10556 // terminate the result string 10557 10558 // sanity check 10559 if (!s or !dest) { 10560 return(null); 10561 } 10562 char delims[] = {'"', '\\', '\a', '\b', '\t', '\n', '\v', '\f', '\r', 0/*terminate accept string for strpbrk*/}; 10563 10564 // copy s and add the bashslashes 10565 size_t i = 0; 10566 while (*s) { 10567 arange(j, delims) { 10568 if (*s == delims[j]) { 10569 dest[i++] = '\\'; 10570 break; 10571 } 10572 } 10573 switch(*s) { 10574 case '\a': 10575 dest[i++] = 'a'; 10576 break; 10577 case '\b': 10578 dest[i++] = 'b'; 10579 break; 10580 case '\t': 10581 dest[i++] = 't'; 10582 break; 10583 case '\n': 10584 dest[i++] = 'n'; 10585 break; 10586 case '\v': 10587 dest[i++] = 'v'; 10588 break; 10589 case '\f': 10590 dest[i++] = 'f'; 10591 break; 10592 case '\r': 10593 dest[i++] = 'r'; 10594 break; 10595 default: 10596 if (*s > 0x1F) { 10597 dest[i++] = (char)*s; 10598 } 10599 else { 10600 // byte 0x3 becomes ""\x03"" 10601 dest[i++] = '"'; 10602 dest[i++] = '"'; 10603 dest[i++] = '\\'; 10604 dest[i++] = 'x'; 10605 dest[i++] = nibbleToHex(*s >> 4); 10606 dest[i++] = nibbleToHex(*s & 0xF); 10607 dest[i++] = '"'; 10608 dest[i++] = '"'; 10609 } 10610 break; 10611 } 10612 inc s; 10613 } 10614 10615 // terminate the result string 10616 dest[i] = 0; 10617 return(dest); 10618 } 10619 10620 10621 /** 10622 * escape string to become a valid C source string 10623 * control characters, backslash and double quotes are escaped. 10624 * control characters without an escaped representation (\a) are represented as 10625 * hexidecimal literal '\xNN' 10626 * the result can be included in C source code and the parsing will be 10627 * correct 10628 * \param 10629 * dest destination buffer 10630 * \param 10631 * destSize destination buffer size 10632 * \param 10633 * S string to escape 10634 * \return 10635 * new escaped string (free this buffer) 10636 * null when S is null 10637 */ 10638 char* bLCEscapeS(char *dest, size_t destSize, const char *S) { 10639 10640 // u8 because nibbles are needed for control characters without an escaped representation 10641 const u8 *s = (const u8*)S; 10642 10643 // steps 10644 // sanity check 10645 // copy s and add the bashslashes 10646 // terminate the result string 10647 10648 // sanity check 10649 if (!s or !dest or !destSize) { 10650 return(null); 10651 } 10652 char delims[] = {'"', '\\', '\a', '\b', '\t', '\n', '\v', '\f', '\r', 0/*terminate accept string for strpbrk*/}; 10653 10654 // copy s and add the bashslashes 10655 size_t i = 0; 10656 while (*s) { 10657 arange(j, delims) { 10658 if (*s == delims[j]) { 10659 dest[i++] = '\\'; 10660 if (i >= destSize) { 10661 // end of dest buffer is reached 10662 dec i; 10663 goto end; 10664 } 10665 break; 10666 } 10667 } 10668 switch(*s) { 10669 case '\a': 10670 dest[i++] = 'a'; 10671 if (i >= destSize) { 10672 // end of dest buffer is reached 10673 dec i; 10674 // remove backslash 10675 dest[i-1] = 0; 10676 goto end; 10677 } 10678 break; 10679 case '\b': 10680 dest[i++] = 'b'; 10681 if (i >= destSize) { 10682 // end of dest buffer is reached 10683 dec i; 10684 // remove backslash 10685 dest[i-1] = 0; 10686 goto end; 10687 } 10688 break; 10689 case '\t': 10690 dest[i++] = 't'; 10691 if (i >= destSize) { 10692 // end of dest buffer is reached 10693 dec i; 10694 // remove backslash 10695 dest[i-1] = 0; 10696 goto end; 10697 } 10698 break; 10699 case '\n': 10700 dest[i++] = 'n'; 10701 if (i >= destSize) { 10702 // end of dest buffer is reached 10703 dec i; 10704 // remove backslash 10705 dest[i-1] = 0; 10706 goto end; 10707 } 10708 break; 10709 case '\v': 10710 dest[i++] = 'v'; 10711 if (i >= destSize) { 10712 // end of dest buffer is reached 10713 dec i; 10714 // remove backslash 10715 dest[i-1] = 0; 10716 goto end; 10717 } 10718 break; 10719 case '\f': 10720 dest[i++] = 'f'; 10721 if (i >= destSize) { 10722 // end of dest buffer is reached 10723 dec i; 10724 // remove backslash 10725 dest[i-1] = 0; 10726 goto end; 10727 } 10728 break; 10729 case '\r': 10730 dest[i++] = 'r'; 10731 if (i >= destSize) { 10732 // end of dest buffer is reached 10733 dec i; 10734 // remove backslash 10735 dest[i-1] = 0; 10736 goto end; 10737 } 10738 break; 10739 default: 10740 if (*s > 0x1F) { 10741 dest[i++] = (char)*s; 10742 if (i >= destSize) { 10743 // end of dest buffer is reached 10744 dec i; 10745 if (*s == '"' || *s == '\\') { 10746 // remove backslash 10747 dest[i-1] = 0; 10748 } 10749 goto end; 10750 } 10751 } 10752 else { 10753 // check if there is enough space 10754 if (i+8 >= destSize) { 10755 goto end; 10756 } 10757 // byte 0x3 becomes ""\x03"" 10758 dest[i++] = '"'; 10759 dest[i++] = '"'; 10760 dest[i++] = '\\'; 10761 dest[i++] = 'x'; 10762 dest[i++] = nibbleToHex(*s >> 4); 10763 dest[i++] = nibbleToHex(*s & 0xF); 10764 dest[i++] = '"'; 10765 dest[i++] = '"'; 10766 } 10767 break; 10768 } 10769 inc s; 10770 } 10771 10772 // terminate the result string 10773 end: 10774 dest[i] = 0; 10775 return(dest); 10776 } 10777 10778 10779 /** 10780 * return the length of the escaped string (without the terminating \0) 10781 */ 10782 size_t cEscapeLenS(const char *s) { 10783 size_t r = 0;; 10784 10785 if (!s) { 10786 return(0); 10787 } 10788 char delims[] = {'"', '\\', '\a', '\b', '\t', '\n', '\v', '\f', '\r', 0/*terminate accept string for strpbrk*/}; 10789 10790 // compute result string length to allocate the buffer once 10791 const char *tmp = s; 10792 tmp = strpbrk(tmp, delims); 10793 while (tmp) { 10794 inc r; 10795 inc tmp; 10796 tmp = strpbrk(tmp, delims); 10797 } 10798 10799 // search control characters without an escaped representation 10800 tmp = s; 10801 while (*tmp) { 10802 if (*tmp > 0x1F) { 10803 goto cont; 10804 } 10805 bool found = no; 10806 arange(j, delims) { 10807 if (*tmp == delims[j]) { 10808 found = yes; 10809 break; 10810 } 10811 } 10812 if (not found) { 10813 // allocate space for ""\xNN"" 10814 // it is 8 bytes but one byte is counted with strlen(s) 10815 r += 7; 10816 } 10817 cont: 10818 inc tmp; 10819 } 10820 10821 r += strlen(s); 10822 return(r); 10823 } 10824 10825 10826 /** 10827 * is Number (integer or float) String 10828 * 10829 * 1, -12 10830 * 1e+4, -1.44E-1 10831 * 10832 * \param 10833 * string 10834 * \return 10835 * true when string is a number 10836 * false when string is not a number or string is empty or NULL 10837 */ 10838 bool isNumber(const char *string) { 10839 10840 // sanity checks 10841 if (!string || *string == 0) { 10842 return(false); 10843 } 10844 10845 // . not allowed in first position 10846 // first position can be digit, '.' or '-' but not "-" and not "." 10847 if (!isdigit(*string) && (*string != '-') && (*string != '.')) { 10848 return(false); 10849 } 10850 10851 // save pointer to first char to verify if there is a leader . and an exponent 10852 const char *firstChar = string; 10853 string++; 10854 10855 bool r = false; 10856 int dots = 0; 10857 int exponents = 0; 10858 if (*(string-1) == '.') { 10859 // count first '.' 10860 dots++; 10861 } 10862 while ((isdigit(*string) || (*string == '.') || (*string == 'e') || (*string == 'E') || (((*string == '-') || (*string == '+')) && ((*(string-1) == 'E') || (*(string-1) == 'e')))) && *string != 0) { 10863 if (*string == '.') { 10864 dots++; 10865 if (*firstChar == '-') { 10866 // -.234 allowed 10867 firstChar = string; 10868 } 10869 if ((dots > 1) || (exponents > 0)) { 10870 // only one '.' allowed but not after exponent 10871 break; 10872 } 10873 } 10874 if ((*string == 'e') || (*string == 'E')) { 10875 exponents++; 10876 if ((exponents > 1) || (*firstChar == '.')) { 10877 // only one 'e' or 'E' allowed 10878 break; 10879 } 10880 } 10881 string++; 10882 } 10883 10884 // strings ending with '.', '-', 'e' and 'E' are not numbers 10885 if ((*string == 0) && (*(string-1) != '.') && (*(string-1) != '-') && (*(string-1) != 'e') && (*(string-1) != 'E')) { 10886 r = true; 10887 } 10888 return(r); 10889 } 10890 10891 /** 10892 * is Integer String 10893 * 10894 * \param 10895 * string 10896 * \return 10897 * true when string is an integer 10898 * false when string is not an integer or string is empty or NULL 10899 */ 10900 bool isInt(const char *string) { 10901 10902 // sanity checks 10903 if (!string || *string == 0) { 10904 return(false); 10905 } 10906 10907 // . not allowed in first position 10908 // first position can be digit or - but not "-" 10909 if (!isdigit(*string) && (*string != '-')) { 10910 return(false); 10911 } 10912 string++; 10913 10914 bool r = false; 10915 while (isdigit(*string) && *string != 0) { 10916 string++; 10917 } 10918 10919 // strings ending with '-' are not integers 10920 if ((*string == 0) && (*(string-1) != '-')) { 10921 r = true; 10922 } 10923 return(r); 10924 } 10925 10926 /** 10927 * convert string to decimal integer 10928 * 10929 * \param 10930 * string 10931 * \return 10932 * int64_t 10933 * 0 when string represents 0 or doesnt represent a number or the input is NULL 10934 */ 10935 int64_t parseInt(const char *string) { 10936 10937 // sanity checks 10938 if (!string) { 10939 return(0); 10940 } 10941 while (!isdigit(*string) && *string != '-' && *string != 0) { 10942 string++; 10943 } 10944 int64_t r = strtoll(string, NULL, 10); 10945 if (r == INT64_MAX || r == INT64_MIN) { 10946 pFuncError 10947 shEPrintfS("The string was: \"%s\"\n", string); 10948 } 10949 return(r); 10950 } 10951 10952 int64_t parseIntChar(char c) { 10953 10954 if (!isdigit(c)) { 10955 return(-1); 10956 } 10957 return(c - '0'); 10958 } 10959 10960 /** 10961 * convert string to decimal integer 10962 * 10963 * \param 10964 * string 10965 * \return 10966 * int64_t 10967 * 0 when string represents 0 or doesnt represent a number or the input is NULL 10968 */ 10969 int64_t parseI64(const char *string) { 10970 10971 // sanity checks 10972 if (!string) { 10973 return(0); 10974 } 10975 while (!isdigit(*string) && *string != '-' && *string != 0) { 10976 string++; 10977 } 10978 int64_t r = strtoll(string, NULL, 10); 10979 if (r == INT64_MAX || r == INT64_MIN) { 10980 pFuncError 10981 shEPrintfS("The string was: \"%s\"\n", string); 10982 } 10983 return(r); 10984 } 10985 10986 int64_t parseI64Char(char c) { 10987 10988 if (!isdigit(c)) { 10989 return(-1); 10990 } 10991 return(c - '0'); 10992 } 10993 10994 /** 10995 * convert string to double 10996 * 10997 * \param 10998 * string 10999 * \return 11000 * double 11001 * 0 when string represents 0 or doesnt represent a number or the input is NULL 11002 */ 11003 double parseDouble(const char *string) { 11004 11005 // sanity checks 11006 if (!string) { 11007 return(0); 11008 } 11009 while (!isdigit(*string) && *string != '-' && *string != 0) { 11010 string++; 11011 } 11012 double r = strtod(string, NULL); 11013 return(r); 11014 } 11015 11016 double parseDoubleChar(char c) { 11017 11018 if (!isdigit(c)) { 11019 return(-1); 11020 } 11021 return((double)(c - '0')); 11022 } 11023 11024 /** 11025 * parse hexadecimal number in a string 11026 * 11027 * \param 11028 * string hexadecimal string starting with 0x 11029 * \return 11030 * integer value 11031 * 0 failed or the value is 0 11032 */ 11033 uint64_t parseHex(const char *string) { 11034 11035 if (!string) { 11036 return(0); 11037 } 11038 while (!isdigit(*string) && *string != '-' && *string != 0) { 11039 string++; 11040 } 11041 uint64_t r = strtoul(string, NULL, 16);; 11042 if (r == ULONG_MAX) { 11043 pFuncError 11044 shEPrintfS("The string was: \"%s\"\n", string); 11045 } 11046 return(r); 11047 } 11048 11049 /** 11050 * int To String 11051 * 11052 * convert int to string 11053 * 11054 * \param 11055 * int64 number 11056 * \return 11057 * string representing the number (you must free the pointer) 11058 */ 11059 char *intToS(int64_t n) { 11060 char s[50]; 11061 char *r = NULL; 11062 11063 sprintf(s, "%" PRIi64, n); 11064 r = strdup(s); 11065 return(r); 11066 } 11067 11068 /** 11069 * buffer int To String 11070 * 11071 * convert int to string 11072 * 11073 * \param 11074 * int64 number 11075 * \return 11076 * string representing the number 11077 */ 11078 char *bIntToS(char *s, int64_t n) { 11079 11080 if (!s) { 11081 return(NULL); 11082 } 11083 sprintf(s, "%" PRIi64, n); 11084 return(s); 11085 } 11086 11087 /** 11088 * double To String 11089 * 11090 * convert int to string 11091 * 11092 * \param 11093 * double number 11094 * \return 11095 * string representing the number (you must free the pointer) 11096 */ 11097 char *doubleToS(double n) { 11098 char s[256]; 11099 char *r = NULL; 11100 11101 sprintf(s, "%e", n); 11102 r = strdup(s); 11103 return(r); 11104 } 11105 11106 /** 11107 * buffer double To String 11108 * 11109 * convert int to string 11110 * 11111 * \param 11112 * double number 11113 * \return 11114 * string representing the number 11115 */ 11116 char *bDoubleToS(char *s, double n) { 11117 11118 if (!s) { 11119 return(NULL); 11120 } 11121 sprintf(s, "%e", n); 11122 return(s); 11123 } 11124 11125 /** 11126 * length string 11127 * 11128 * return strlen when possible 11129 * 11130 * \param 11131 * string 11132 * \return 11133 * strlen value 11134 * 0 when string is NULL 11135 */ 11136 size_t lenS(const char *string) { 11137 11138 if (!string) { 11139 return(0); 11140 } 11141 return(strlen(string)); 11142 } 11143 11144 /** 11145 * string buffer size 11146 * 11147 * return strlen+1 when possible 11148 * 11149 * \param 11150 * string 11151 * \return 11152 * strlen+1 value 11153 * 0 when string is NULL 11154 */ 11155 size_t sizeS(const char *string) { 11156 11157 if (!string) { 11158 return(0); 11159 } 11160 return(strlen(string)+1); 11161 } 11162 11163 /** 11164 * upper case String 11165 * duplicate string 11166 * 11167 * \param 11168 * string 11169 * \return 11170 * new upper case string (you must free the pointer) 11171 */ 11172 char *upperS(const char *string) { 11173 char *r = NULL; 11174 11175 // sanity checks 11176 if (!string) { 11177 return(NULL); 11178 } 11179 11180 r = strdup(string); 11181 if (!r) { 11182 return(NULL); 11183 } 11184 11185 // upper case 11186 size_t i = 0; 11187 while (r[i] != 0) { 11188 r[i] = (char)toupper(r[i]); 11189 i++; 11190 } 11191 return(r); 11192 } 11193 11194 /** 11195 * upper case String 11196 * 11197 * \param 11198 * string 11199 * \return 11200 * upper case string 11201 * NULL error 11202 */ 11203 char *iUpperS(char **string) { 11204 11205 // sanity checks 11206 if (!string || !*string) { 11207 return(NULL); 11208 } 11209 11210 // upper case 11211 size_t i = 0; 11212 while ((*string)[i] != 0) { 11213 (*string)[i] = (char)toupper((*string)[i]); 11214 i++; 11215 } 11216 return(*string); 11217 } 11218 11219 /** 11220 * buffer upper case String 11221 * 11222 * \param 11223 * string 11224 * \return 11225 * upper case string 11226 * NULL error 11227 */ 11228 char *bUpperS(char *string) { 11229 11230 // sanity checks 11231 if (!string) { 11232 return(NULL); 11233 } 11234 11235 // upper case 11236 size_t i = 0; 11237 while (string[i] != 0) { 11238 string[i] = (char)toupper(string[i]); 11239 i++; 11240 } 11241 return(string); 11242 } 11243 11244 /** 11245 * lower case String 11246 * duplicate string 11247 * 11248 * \param 11249 * string 11250 * \return 11251 * new lower case string (you must free the pointer) 11252 */ 11253 char *lowerS(const char *string) { 11254 char *r = NULL; 11255 11256 // sanity checks 11257 if (!string) { 11258 return(NULL); 11259 } 11260 11261 r = strdup(string); 11262 if (!r) { 11263 return(NULL); 11264 } 11265 11266 // lower case 11267 size_t i = 0; 11268 while (r[i] != 0) { 11269 r[i] = (char)tolower(r[i]); 11270 i++; 11271 } 11272 return(r); 11273 } 11274 11275 /** 11276 * lower case String 11277 * 11278 * \param 11279 * string 11280 * \return 11281 * lower case string 11282 * NULL error 11283 */ 11284 char *iLowerS(char **string) { 11285 11286 // sanity checks 11287 if (!string || !*string) { 11288 return(NULL); 11289 } 11290 11291 // lower case 11292 size_t i = 0; 11293 while ((*string)[i] != 0) { 11294 (*string)[i] = (char)tolower((*string)[i]); 11295 i++; 11296 } 11297 return(*string); 11298 } 11299 11300 /** 11301 * buffer lower case String 11302 * 11303 * \param 11304 * string 11305 * \return 11306 * lower case string 11307 * NULL error 11308 */ 11309 char *bLowerS(char *string) { 11310 11311 // sanity checks 11312 if (!string) { 11313 return(NULL); 11314 } 11315 11316 // lower case 11317 size_t i = 0; 11318 while (string[i] != 0) { 11319 string[i] = (char)tolower(string[i]); 11320 i++; 11321 } 11322 return(string); 11323 } 11324 11325 /** 11326 * trim String 11327 * duplicate string 11328 * 11329 * \param 11330 * string 11331 * \return 11332 * new string without leading or trailing spaces (you must free the pointer) 11333 */ 11334 char *trimS(const char *string) { 11335 char *r = NULL; 11336 const char *end = NULL; 11337 size_t len; 11338 11339 // sanity checks 11340 if (!string) { 11341 return(NULL); 11342 } 11343 11344 // remove heading spaces 11345 while (isspace(*string)) { 11346 string++; 11347 } 11348 11349 if (!*string) { 11350 // all spaces 11351 emptyS(r) 11352 return(r); 11353 } 11354 11355 // remove trailing spaces 11356 end = string + strlen(string) - 1; 11357 while (isspace(*end)) { 11358 end--; 11359 } 11360 11361 // copy range to new string 11362 len = (size_t)(end - string + 2); 11363 r = MALLOC(len); 11364 if (!r) { 11365 return(NULL); 11366 } 11367 r = strncpy(r, string, len - 1); 11368 r[len - 1] = 0; 11369 return(r); 11370 } 11371 11372 /** 11373 * trim String 11374 * 11375 * \param 11376 * string (this parameter is reallocated) 11377 * \return 11378 * string without leading or trailing spaces 11379 * NULL error 11380 */ 11381 char *iTrimS(char **string) { 11382 char *workingS = NULL; 11383 char *r = NULL; 11384 char *end = NULL; 11385 size_t len; 11386 11387 // sanity checks 11388 if (!string || !*string) { 11389 return(NULL); 11390 } 11391 11392 workingS = *string; 11393 11394 // remove heading spaces 11395 while (isspace(*workingS)) { 11396 workingS++; 11397 } 11398 11399 if (!*workingS) { 11400 // all spaces 11401 free(*string); 11402 emptyS(*string) 11403 return(*string); 11404 } 11405 11406 // remove trailing spaces 11407 end = workingS + strlen(workingS) - 1; 11408 while (isspace(*end)) { 11409 end--; 11410 } 11411 11412 // copy range to new string 11413 len = (size_t)(end - workingS + 2); 11414 r = MALLOC(len); 11415 if (!r) { 11416 return(NULL); 11417 } 11418 r = strncpy(r, workingS, len - 1); 11419 r[len - 1] = 0; 11420 free(*string); 11421 *string = r;; 11422 return(r); 11423 } 11424 11425 /** 11426 * buffer trim String 11427 * 11428 * \param 11429 * string 11430 * \return 11431 * string without leading or trailing spaces 11432 * NULL error 11433 */ 11434 char *bTrimS(char *string) { 11435 char *workingS = NULL; 11436 char *r = NULL; 11437 char *end = NULL; 11438 size_t len; 11439 11440 // sanity checks 11441 if (!string) { 11442 return(NULL); 11443 } 11444 11445 workingS = string; 11446 11447 // remove heading spaces 11448 while (isspace(*workingS)) { 11449 workingS++; 11450 } 11451 11452 if (!*workingS) { 11453 // all spaces 11454 bEmptyS(string); 11455 return(string); 11456 } 11457 11458 // remove trailing spaces 11459 end = workingS + strlen(workingS) - 1; 11460 while (isspace(*end)) { 11461 end--; 11462 } 11463 11464 // copy range to new string 11465 len = (size_t)(end - workingS + 2); 11466 r = MALLOC(len); 11467 if (!r) { 11468 return(NULL); 11469 } 11470 r = strncpy(r, workingS, len - 1); 11471 r[len - 1] = 0; 11472 strcpy(string, r); 11473 free(r); 11474 return(string); 11475 } 11476 11477 /** 11478 * left trim String 11479 * duplicate string 11480 * 11481 * \param 11482 * string 11483 * \return 11484 * new string without leading spaces (you must free the pointer) 11485 */ 11486 char *lTrimS(const char *string) { 11487 char *r = NULL; 11488 11489 // sanity checks 11490 if (!string) { 11491 return(NULL); 11492 } 11493 11494 // remove heading spaces 11495 while (isspace(*string)) { 11496 string++; 11497 } 11498 11499 if (!*string) { 11500 // all spaces 11501 emptyS(r) 11502 return(r); 11503 } 11504 11505 r = strdup(string); 11506 return(r); 11507 } 11508 11509 11510 /** 11511 * left trim String 11512 * 11513 * \param 11514 * string (this parameter is reallocated) 11515 * \return 11516 * string without leading spaces (you must free the pointer) 11517 * NULL error 11518 */ 11519 char *iLTrimS(char **string) { 11520 char *workingS = NULL; 11521 char *r = NULL; 11522 11523 // sanity checks 11524 if (!string || !*string) { 11525 return(NULL); 11526 } 11527 11528 workingS = *string; 11529 11530 // remove heading spaces 11531 while (isspace(*workingS)) { 11532 workingS++; 11533 } 11534 11535 r = strdup(workingS); 11536 if (!r) { 11537 return(NULL); 11538 } 11539 free(*string); 11540 *string = r;; 11541 return(r); 11542 } 11543 11544 /** 11545 * buffer left trim String 11546 * 11547 * \param 11548 * string 11549 * \return 11550 * string without leading spaces 11551 * NULL error 11552 */ 11553 char *bLTrimS(char *string) { 11554 char *workingS = NULL; 11555 11556 // sanity checks 11557 if (!string) { 11558 return(NULL); 11559 } 11560 11561 workingS = string; 11562 11563 // remove heading spaces 11564 while (isspace(*workingS)) { 11565 workingS++; 11566 } 11567 11568 memmove(string, workingS, strlen(workingS)+1); 11569 return(string); 11570 } 11571 11572 /** 11573 * right trim String 11574 * duplicate string 11575 * 11576 * \param 11577 * string 11578 * \return 11579 * new string without trailing spaces (you must free the pointer) 11580 */ 11581 char *rTrimS(const char *string) { 11582 char *r = NULL; 11583 const char *end = NULL; 11584 size_t len; 11585 11586 // sanity checks 11587 if (!string) { 11588 return(NULL); 11589 } 11590 11591 // remove trailing spaces 11592 end = string + strlen(string) - 1; 11593 while (((end >= string) && isspace(*end))) { 11594 end--; 11595 } 11596 11597 // copy range to new string 11598 len = (size_t)(end - string + 2); 11599 r = MALLOC(len); 11600 if (!r) { 11601 return(NULL); 11602 } 11603 r = strncpy(r, string, len - 1); 11604 r[len - 1] = 0; 11605 return(r); 11606 } 11607 11608 11609 /** 11610 * right trim String 11611 * 11612 * \param 11613 * string 11614 * \return 11615 * string without trailing spaces 11616 * NULL error 11617 */ 11618 char *iRTrimS(char **string) { 11619 char *workingS = NULL; 11620 char *end = NULL; 11621 11622 // sanity checks 11623 if (!string || !*string) { 11624 return(NULL); 11625 } 11626 11627 workingS = *string; 11628 11629 // remove trailing spaces 11630 end = workingS + strlen(workingS) - 1; 11631 while (((end >= workingS) && isspace(*end))) { 11632 end--; 11633 } 11634 11635 *(end+1) = 0;; 11636 return(*string); 11637 } 11638 11639 /** 11640 * buffer right trim String 11641 * 11642 * \param 11643 * string 11644 * \return 11645 * string without trailing spaces 11646 * NULL error 11647 */ 11648 char *bRTrimS(char *string) { 11649 char *workingS = NULL; 11650 char *end = NULL; 11651 11652 // sanity checks 11653 if (!string) { 11654 return(NULL); 11655 } 11656 11657 workingS = string; 11658 11659 // remove trailing spaces 11660 end = workingS + strlen(workingS) - 1; 11661 while (((end >= workingS) && isspace(*end))) { 11662 end--; 11663 } 11664 11665 *(end+1) = 0;; 11666 return(string); 11667 } 11668 11669 /** 11670 * uniq String 11671 * duplicate string 11672 * 11673 * remove successive repetitions of char c 11674 * 11675 * \param 11676 * string 11677 * c character to remove 11678 * \return 11679 * new string without successive repetitions of char c (you must free the pointer) 11680 */ 11681 char *uniqS(const char *string, char c) { 11682 char *r = NULL; 11683 size_t len; 11684 11685 // sanity checks 11686 if (!string) { 11687 return(NULL); 11688 } 11689 11690 r = strdup(string); 11691 len = strlen(string); 11692 11693 if (len < 2) { 11694 // string is too short to have repetitions 11695 return(r); 11696 } 11697 11698 // index in r 11699 size_t j = 1;; 11700 rangeFrom(i, 1, len) 11701 if (r[i-1] == c && r[i] == c) { 11702 // skip 11703 continue; 11704 } 11705 else { 11706 r[j] = r[i]; 11707 j++; 11708 } 11709 11710 r[j] = 0; 11711 11712 return(r); 11713 } 11714 11715 /** 11716 * uniq String 11717 * 11718 * remove successive repetitions of char c 11719 * 11720 * \param 11721 * string 11722 * c character to remove 11723 * \return 11724 * string without successive repetitions of char c 11725 * NULL error 11726 */ 11727 char *iUniqS(char **string, char c) { 11728 size_t len; 11729 11730 // sanity checks 11731 if (!string || !*string) { 11732 return(NULL); 11733 } 11734 11735 len = strlen(*string); 11736 11737 if (len < 2) { 11738 // string is too short to have repetitions 11739 return(*string); 11740 } 11741 11742 // index in r 11743 size_t j = 1;; 11744 rangeFrom(i, 1, len) 11745 if ((*string)[i-1] == c && (*string)[i] == c) { 11746 // skip 11747 continue; 11748 } 11749 else { 11750 (*string)[j] = (*string)[i]; 11751 j++; 11752 } 11753 11754 (*string)[j] = 0; 11755 11756 return(*string); 11757 } 11758 11759 /** 11760 * buffer uniq String 11761 * 11762 * remove successive repetitions of char c 11763 * 11764 * \param 11765 * string 11766 * c character to remove 11767 * \return 11768 * string without successive repetitions of char c 11769 * NULL error 11770 */ 11771 char *bUniqS(char *string, char c) { 11772 size_t len; 11773 11774 // sanity checks 11775 if (!string) { 11776 return(NULL); 11777 } 11778 11779 len = strlen(string); 11780 11781 if (len < 2) { 11782 // string is too short to have repetitions 11783 return(string); 11784 } 11785 11786 // index in r 11787 size_t j = 1;; 11788 rangeFrom(i, 1, len) 11789 if (string[i-1] == c && string[i] == c) { 11790 // skip 11791 continue; 11792 } 11793 else { 11794 string[j] = string[i]; 11795 j++; 11796 } 11797 11798 string[j] = 0; 11799 11800 return(string); 11801 } 11802 11803 /** 11804 * ignore case uniq String 11805 * duplicate string 11806 * 11807 * remove successive repetitions of char c 11808 * 11809 * \param 11810 * string 11811 * c character to remove 11812 * \return 11813 * new string without successive repetitions of char c (you must free the pointer) 11814 */ 11815 char *icUniqS(const char *string, char c) { 11816 char *r = NULL; 11817 size_t len; 11818 11819 // sanity checks 11820 if (!string) { 11821 return(NULL); 11822 } 11823 11824 r = strdup(string); 11825 len = strlen(string); 11826 11827 if (len < 2) { 11828 // string is too short to have repetitions 11829 return(r); 11830 } 11831 11832 c = (char)tolower(c); 11833 11834 // index in r 11835 size_t j = 1;; 11836 rangeFrom(i, 1, len) 11837 if (tolower(r[i-1]) == c && tolower(r[i]) == c) { 11838 // skip 11839 continue; 11840 } 11841 else { 11842 r[j] = r[i]; 11843 j++; 11844 } 11845 11846 r[j] = 0; 11847 11848 return(r); 11849 } 11850 11851 /** 11852 * in place ignore case uniq String 11853 * 11854 * remove successive repetitions of char c 11855 * 11856 * \param 11857 * string 11858 * c character to remove 11859 * \return 11860 * string without successive repetitions of char c 11861 * NULL error 11862 */ 11863 char *iicUniqS(char **string, char c) { 11864 size_t len; 11865 11866 // sanity checks 11867 if (!string || !*string) { 11868 return(NULL); 11869 } 11870 11871 len = strlen(*string); 11872 11873 if (len < 2) { 11874 // string is too short to have repetitions 11875 return(*string); 11876 } 11877 11878 c = (char)tolower(c); 11879 11880 // index in r 11881 size_t j = 1;; 11882 rangeFrom(i, 1, len) 11883 if (tolower((*string)[i-1]) == c && tolower((*string)[i]) == c) { 11884 // skip 11885 continue; 11886 } 11887 else { 11888 (*string)[j] = (*string)[i]; 11889 j++; 11890 } 11891 11892 (*string)[j] = 0; 11893 11894 return(*string); 11895 } 11896 11897 /** 11898 * ignore case buffer uniq String 11899 * 11900 * remove successive repetitions of char c 11901 * 11902 * \param 11903 * string 11904 * c character to remove 11905 * \return 11906 * string without successive repetitions of char c 11907 * NULL error 11908 */ 11909 char *bicUniqS(char *string, char c) { 11910 size_t len; 11911 11912 // sanity checks 11913 if (!string) { 11914 return(NULL); 11915 } 11916 11917 len = strlen(string); 11918 11919 if (len < 2) { 11920 // string is too short to have repetitions 11921 return(string); 11922 } 11923 11924 c = (char)tolower(c); 11925 11926 // index in r 11927 size_t j = 1;; 11928 rangeFrom(i, 1, len) 11929 if (tolower(string[i-1]) == c && tolower(string[i]) == c) { 11930 // skip 11931 continue; 11932 } 11933 else { 11934 string[j] = string[i]; 11935 j++; 11936 } 11937 11938 string[j] = 0; 11939 11940 return(string); 11941 } 11942 11943 /** 11944 * repeat string count times 11945 * 11946 * \param 11947 * string 11948 * \param 11949 * count number of times string is repeated 11950 * \return 11951 * new string with string repeated count times (you must free the pointer) 11952 * NULL when string is NULL 11953 */ 11954 char *repeatS(const char *string, size_t count) { 11955 char *r = NULL; 11956 11957 // sanity 11958 if (!string) { 11959 return(NULL); 11960 } 11961 if (!count || !string[0]) { 11962 emptyS(r); 11963 return(r); 11964 } 11965 11966 size_t slen = strlen(string); 11967 size_t len = slen * count; 11968 11969 r = MALLOC(len+1);; 11970 if (!r) { 11971 return(NULL); 11972 } 11973 11974 strcpy(r, string); 11975 count--; 11976 11977 if (count) { 11978 range(i, count) { 11979 strcpy(r + slen * (1 + i), string); 11980 } 11981 } 11982 11983 return(r); 11984 } 11985 11986 /** 11987 * repeat string count times 11988 * 11989 * \param 11990 * string (this parameter is reallocated) 11991 * \param 11992 * count number of times string is repeated 11993 * \return 11994 * string with string repeated count times 11995 * NULL when string is NULL 11996 */ 11997 char *iRepeatS(char **string, size_t count) { 11998 char *r = NULL; 11999 12000 // sanity 12001 if (!string || !*string) { 12002 return(NULL); 12003 } 12004 if (!count || !(*string)[0]) { 12005 emptyS(r); 12006 goto end; 12007 } 12008 12009 size_t slen = strlen(*string); 12010 size_t len = slen * count; 12011 12012 r = MALLOC(len+1);; 12013 if (!r) { 12014 return(NULL); 12015 } 12016 12017 strcpy(r, *string); 12018 count--; 12019 12020 if (count) { 12021 range(i, count) { 12022 strcpy(r + slen * (1 + i), *string); 12023 } 12024 } 12025 12026 end: 12027 free(*string); 12028 *string = r; 12029 return(*string); 12030 } 12031 12032 /** 12033 * repeat string count times 12034 * 12035 * \param 12036 * dest buffer big enough to hold count times string 12037 * \param 12038 * string 12039 * \param 12040 * count number of times string is repeated 12041 * \return 12042 * dest with string repeated count times 12043 * NULL when dest or string are NULL 12044 */ 12045 char *bRepeatS(char *dest, const char *string, size_t count) { 12046 12047 // sanity 12048 if (!dest || !string) { 12049 return(NULL); 12050 } 12051 if (!count || !string[0]) { 12052 bEmptyS(dest); 12053 return(dest); 12054 } 12055 12056 size_t slen = strlen(string); 12057 12058 strcpy(dest, string); 12059 count--; 12060 12061 if (count) { 12062 range(i, count) { 12063 strcpy(dest + slen * (1 + i), string); 12064 } 12065 } 12066 12067 return(dest); 12068 } 12069 12070 /** 12071 * repeat string count times 12072 * 12073 * \param 12074 * dest buffer big enough to hold count times string 12075 * \param 12076 * destSize dest buffer size (sizeof(dest)) 12077 * \param 12078 * string 12079 * \param 12080 * count number of times string is repeated 12081 * \return 12082 * dest with string repeated count times 12083 * NULL when dest or string are NULL 12084 */ 12085 char *bLRepeatS(char *dest, size_t destSize, const char *string, size_t count) { 12086 12087 // sanity 12088 if (!dest || !string) { 12089 return(NULL); 12090 } 12091 if (!count || !string[0]) { 12092 bEmptyS(dest); 12093 return(dest); 12094 } 12095 12096 size_t slen = strlen(string); 12097 size_t len = slen * count; 12098 12099 if (len >= destSize) { 12100 return(NULL); 12101 } 12102 12103 strcpy(dest, string); 12104 count--; 12105 12106 if (count) { 12107 range(i, count) { 12108 strcpy(dest + slen * (1 + i), string); 12109 } 12110 } 12111 12112 return(dest); 12113 } 12114 12115 /** 12116 * repeat char count times 12117 * 12118 * \param 12119 * c char to repeat 12120 * \param 12121 * count number of times c is repeated 12122 * \return 12123 * new string with c repeated count times (you must free the pointer) 12124 */ 12125 char *repeatCharS(char c, size_t count) { 12126 12127 charToS(s,c); 12128 return(repeatS(s, count)); 12129 } 12130 12131 /** 12132 * repeat char count times 12133 * 12134 * \param 12135 * dest buffer big enough to hold count times c 12136 * \param 12137 * c char to repeat 12138 * \param 12139 * count number of times c is repeated 12140 * \return 12141 * dest with c repeated count times 12142 * NULL when dest is NULL 12143 */ 12144 char *bRepeatCharS(char *dest, char c, size_t count) { 12145 12146 charToS(s,c); 12147 return(bRepeatS(dest, s, count)); 12148 } 12149 12150 /** 12151 * repeat char count times 12152 * 12153 * \param 12154 * dest buffer big enough to hold count times c 12155 * \param 12156 * destSize dest buffer size (sizeof(dest)) 12157 * \param 12158 * c char to repeat 12159 * \param 12160 * count number of times c is repeated 12161 * \return 12162 * dest with c repeated count times 12163 * NULL when dest is NULL 12164 */ 12165 char *bLRepeatCharS(char *dest, size_t destSize, char c, size_t count) { 12166 12167 charToS(s,c); 12168 return(bLRepeatS(dest, destSize, s, count)); 12169 } 12170 12171 /** 12172 * length of string repeated count times 12173 * 12174 * \param 12175 * string 12176 * \param 12177 * count number of times string is repeated 12178 * \return 12179 * length of string repeated count times 12180 * -1 when string is NULL 12181 */ 12182 ssize_t repeatLenS(const char *string, size_t count) { 12183 12184 // sanity 12185 if (!string) { 12186 return(-1); 12187 } 12188 if (!count || !string[0]) { 12189 return(0); 12190 } 12191 12192 ssize_t r = (ssize_t)(strlen(string) * count); 12193 12194 return(r); 12195 } 12196 12197 /** 12198 * ellipsis start string 12199 * 12200 * This function pads the current string with a given string if current string is longer than target length 12201 * If target length is more than current string's length, the current string is returned as is 12202 * 12203 * \param 12204 * string 12205 * \param 12206 * targetLength The length of the resulting string once the current string has been padded. If the value is less 12207 * than the current string's length, the current string is truncated from the right and the pad is 12208 * applied once 12209 * \param 12210 * ellipsisString The string to pad the current string with. 12211 * \return 12212 * new string of the specified length with the pad string applied from the start (you must free the pointer) 12213 * NULL when string or ellipsisString are NULL 12214 */ 12215 char *ellipsisStartS(const char *string, size_t targetLength, const char *ellipsisString) { 12216 12217 // sanity 12218 if (!string or !ellipsisString) { 12219 return(NULL); 12220 } 12221 12222 if (!targetLength) { 12223 return(strdup("")); 12224 } 12225 12226 size_t len = strlen(string); 12227 12228 if (len <= targetLength) { 12229 return(strdup(string)); 12230 } 12231 else { 12232 // truncate string 12233 char *ellip = strdup(ellipsisString); 12234 string += ((len - targetLength) + strlen(ellipsisString)) <= len ? (len - targetLength) + strlen(ellipsisString) : len; 12235 pErrorNULL(iAppendS(&ellip, string)); 12236 // make sure the result is target length 12237 pErrorNULL(iSliceS(&ellip, 0, (int64_t)targetLength)); 12238 return(ellip); 12239 } 12240 } 12241 12242 12243 /** 12244 * ellipsis start string 12245 * 12246 * This function pads the current string with a given string if current string is longer than target length 12247 * If target length is more than current string's length, the current string is returned as is 12248 * 12249 * \param 12250 * string (this parameter is reallocated) 12251 * \param 12252 * targetLength The length of the resulting string once the current string has been padded. If the value is less 12253 * than the current string's length, the current string is truncated from the right and the pad is 12254 * applied once 12255 * \param 12256 * ellipsisString The string to pad the current string with. 12257 * \return 12258 * updated string of the specified length with the pad string applied from the start 12259 * NULL when string or ellipsisString are NULL 12260 */ 12261 char *iEllipsisStartS(char **string, size_t targetLength, const char *ellipsisString) { 12262 12263 // sanity 12264 if (!string or !*string or !ellipsisString) { 12265 return(NULL); 12266 } 12267 12268 if (!targetLength) { 12269 (*string)[0] = 0; 12270 return(*string); 12271 } 12272 12273 size_t len = strlen(*string); 12274 12275 if (len > targetLength) { 12276 // truncate string 12277 char *ellip = strdup(ellipsisString); 12278 char *str = *string + (((len - targetLength) + strlen(ellipsisString)) <= len ? (len - targetLength) + strlen(ellipsisString) : len); 12279 pErrorNULL(iAppendS(&ellip, str)); 12280 // make sure the result is target length 12281 pErrorNULL(iSliceS(&ellip, 0, (int64_t)targetLength)); 12282 free(*string); 12283 *string = ellip; 12284 } 12285 return(*string); 12286 } 12287 12288 /** 12289 * ellipsis start string 12290 * 12291 * This function pads the current string with a given string if current string is longer than target length 12292 * If target length is more than current string's length, the current string is returned as is 12293 * 12294 * \param 12295 * string 12296 * \param 12297 * targetLength The length of the resulting string once the current string has been padded. If the value is less 12298 * than the current string's length, the current string is truncated from the right and the pad is 12299 * applied once 12300 * \param 12301 * ellipsisString The string to pad the current string with. 12302 * \return 12303 * string in dest of the specified length with the pad string applied from the start 12304 * NULL when dest, string or ellipsisString are NULL 12305 */ 12306 char *bEllipsisStartS(char *dest, const char *string, size_t targetLength, const char *ellipsisString) { 12307 12308 // sanity 12309 if (!string or !ellipsisString or !dest) { 12310 return(NULL); 12311 } 12312 12313 if (!targetLength) { 12314 dest[0] = 0; 12315 return(dest); 12316 } 12317 12318 size_t len = strlen(string); 12319 12320 if (len <= targetLength) { 12321 strcpy(dest, string); 12322 } 12323 else { 12324 // truncate string 12325 char *ellip = strdup(ellipsisString); 12326 string += ((len - targetLength) + strlen(ellipsisString)) <= len ? (len - targetLength) + strlen(ellipsisString) : len; 12327 pErrorNULL(iAppendS(&ellip, string)); 12328 // make sure the result is target length 12329 pErrorNULL(iSliceS(&ellip, 0, (int64_t)targetLength)); 12330 strncpy(dest, ellip, targetLength+1); 12331 free(ellip); 12332 } 12333 return(dest); 12334 } 12335 12336 /** 12337 * ellipsis start string 12338 * 12339 * This function pads the current string with a given string if current string is longer than target length 12340 * If target length is more than current string's length, the current string is returned as is 12341 * 12342 * \param 12343 * string 12344 * \param 12345 * targetLength The length of the resulting string once the current string has been padded. If the value is less 12346 * than the current string's length, the current string is truncated from the right and the pad is 12347 * applied once 12348 * \param 12349 * ellipsisString The string to pad the current string with. 12350 * \return 12351 * string in dest of the specified length with the pad string applied from the start 12352 * NULL when dest, string or ellipsisString are NULL 12353 */ 12354 char *bLEllipsisStartS(char *dest, size_t destSize, const char *string, size_t targetLength, const char *ellipsisString) { 12355 12356 // sanity 12357 if (!string or !ellipsisString or !dest) { 12358 return(NULL); 12359 } 12360 12361 if (!destSize) { 12362 return(dest); 12363 } 12364 12365 if (!targetLength) { 12366 dest[0] = 0;; 12367 return(dest); 12368 } 12369 12370 targetLength = destSize > targetLength ? targetLength : destSize;; 12371 12372 size_t len = strlen(string); 12373 12374 if (len <= targetLength) { 12375 pErrorNULL(strLCpy(dest, destSize, string)); 12376 } 12377 else { 12378 // truncate string 12379 char *ellip = strdup(ellipsisString); 12380 string += ((len - targetLength) + strlen(ellipsisString)) <= len ? (len - targetLength) + strlen(ellipsisString) : len; 12381 pErrorNULL(iAppendS(&ellip, string)); 12382 // make sure the result is target length 12383 pErrorNULL(iSliceS(&ellip, 0, (int64_t)targetLength)); 12384 pErrorNULL(strLCpy(dest, destSize, ellip)); 12385 free(ellip); 12386 } 12387 return(dest); 12388 } 12389 12390 /** 12391 * ellipsis start string 12392 * 12393 * This function pads the current string with a given string if current string is longer than target length 12394 * If target length is more than current string's length, the current string is returned as is 12395 * 12396 * \param 12397 * string 12398 * \param 12399 * targetLength The length of the resulting string once the current string has been padded. If the value is less 12400 * than the current string's length, the current string is truncated from the right and the pad is 12401 * applied once 12402 * \param 12403 * ellipsisChar The char to pad the current string with. 12404 * \return 12405 * new string of the specified length with the pad string applied from the start (you must free the pointer) 12406 * NULL when string or ellipsisString are NULL 12407 */ 12408 char *ellipsisStartCharS(const char *string, size_t targetLength, char ellipsisChar) { 12409 12410 // sanity 12411 if (!string) { 12412 return(NULL); 12413 } 12414 12415 if (!targetLength) { 12416 return(strdup("")); 12417 } 12418 12419 charToS(ellipsisString, ellipsisChar); 12420 12421 size_t len = strlen(string); 12422 12423 if (len <= targetLength) { 12424 return(strdup(string)); 12425 } 12426 else { 12427 // truncate string 12428 char *ellip = strdup(ellipsisString); 12429 string += ((len - targetLength) + strlen(ellipsisString)) <= len ? (len - targetLength) + strlen(ellipsisString) : len; 12430 pErrorNULL(iAppendS(&ellip, string)); 12431 // make sure the result is target length 12432 pErrorNULL(iSliceS(&ellip, 0, (int64_t)targetLength)); 12433 return(ellip); 12434 } 12435 } 12436 12437 /** 12438 * ellipsis start string 12439 * 12440 * This function pads the current string with a given string if current string is longer than target length 12441 * If target length is more than current string's length, the current string is returned as is 12442 * 12443 * \param 12444 * string (this parameter is reallocated) 12445 * \param 12446 * targetLength The length of the resulting string once the current string has been padded. If the value is less 12447 * than the current string's length, the current string is truncated from the right and the pad is 12448 * applied once 12449 * \param 12450 * ellipsisChar The char to pad the current string with. 12451 * \return 12452 * updated string of the specified length with the pad string applied from the start 12453 * NULL when string or ellipsisString are NULL 12454 */ 12455 char *iEllipsisStartCharS(char **string, size_t targetLength, char ellipsisChar) { 12456 12457 // sanity 12458 if (!string or !*string) { 12459 return(NULL); 12460 } 12461 12462 if (!targetLength) { 12463 (*string)[0] = 0; 12464 return(*string); 12465 } 12466 12467 charToS(ellipsisString, ellipsisChar); 12468 12469 size_t len = strlen(*string); 12470 12471 if (len > targetLength) { 12472 // truncate string 12473 char *ellip = strdup(ellipsisString); 12474 char *str = *string + (((len - targetLength) + strlen(ellipsisString)) <= len ? (len - targetLength) + strlen(ellipsisString) : len); 12475 pErrorNULL(iAppendS(&ellip, str)); 12476 // make sure the result is target length 12477 pErrorNULL(iSliceS(&ellip, 0, (int64_t)targetLength)); 12478 free(*string); 12479 *string = ellip; 12480 } 12481 return(*string); 12482 } 12483 12484 /** 12485 * ellipsis start string 12486 * 12487 * This function pads the current string with a given string if current string is longer than target length 12488 * If target length is more than current string's length, the current string is returned as is 12489 * 12490 * \param 12491 * string 12492 * \param 12493 * targetLength The length of the resulting string once the current string has been padded. If the value is less 12494 * than the current string's length, the current string is truncated from the right and the pad is 12495 * applied once 12496 * \param 12497 * ellipsisChar The char to pad the current string with. 12498 * \return 12499 * string in dest of the specified length with the pad string applied from the start 12500 * NULL when dest, string or ellipsisString are NULL 12501 */ 12502 char *bEllipsisStartCharS(char *dest, const char *string, size_t targetLength, char ellipsisChar) { 12503 12504 // sanity 12505 if (!string or !dest) { 12506 return(NULL); 12507 } 12508 12509 if (!targetLength) { 12510 dest[0] = 0; 12511 return(dest); 12512 } 12513 12514 charToS(ellipsisString, ellipsisChar); 12515 12516 size_t len = strlen(string); 12517 12518 if (len <= targetLength) { 12519 strcpy(dest, string); 12520 } 12521 else { 12522 // truncate string 12523 char *ellip = strdup(ellipsisString); 12524 string += ((len - targetLength) + strlen(ellipsisString)) <= len ? (len - targetLength) + strlen(ellipsisString) : len; 12525 pErrorNULL(iAppendS(&ellip, string)); 12526 // make sure the result is target length 12527 pErrorNULL(iSliceS(&ellip, 0, (int64_t)targetLength)); 12528 strncpy(dest, ellip, targetLength+1); 12529 free(ellip); 12530 } 12531 return(dest); 12532 } 12533 12534 /** 12535 * ellipsis start string 12536 * 12537 * This function pads the current string with a given string if current string is longer than target length 12538 * If target length is more than current string's length, the current string is returned as is 12539 * 12540 * \param 12541 * string 12542 * \param 12543 * targetLength The length of the resulting string once the current string has been padded. If the value is less 12544 * than the current string's length, the current string is truncated from the right and the pad is 12545 * applied once 12546 * \param 12547 * ellipsisChar The char to pad the current string with. 12548 * \return 12549 * string in dest of the specified length with the pad string applied from the start 12550 * NULL when dest, string or ellipsisString are NULL 12551 */ 12552 char *bLEllipsisStartCharS(char *dest, size_t destSize, const char *string, size_t targetLength, char ellipsisChar) { 12553 12554 // sanity 12555 if (!string or !dest) { 12556 return(NULL); 12557 } 12558 12559 if (!destSize) { 12560 return(dest); 12561 } 12562 12563 if (!targetLength) { 12564 dest[0] = 0; 12565 return(dest); 12566 } 12567 12568 charToS(ellipsisString, ellipsisChar); 12569 12570 targetLength = destSize > targetLength ? targetLength : destSize;; 12571 12572 size_t len = strlen(string); 12573 12574 if (len <= targetLength) { 12575 pErrorNULL(strLCpy(dest, destSize, string)); 12576 } 12577 else { 12578 // truncate string 12579 char *ellip = strdup(ellipsisString); 12580 string += ((len - targetLength) + strlen(ellipsisString)) <= len ? (len - targetLength) + strlen(ellipsisString) : len; 12581 pErrorNULL(iAppendS(&ellip, string)); 12582 // make sure the result is target length 12583 pErrorNULL(iSliceS(&ellip, 0, (int64_t)targetLength)); 12584 pErrorNULL(strLCpy(dest, destSize, ellip)); 12585 free(ellip); 12586 } 12587 return(dest); 12588 } 12589 12590 12591 /** 12592 * length of string after ellipsis 12593 * 12594 * \param 12595 * string 12596 * \return 12597 * length of string after ellipsis 12598 * -1 when string is NULL 12599 */ 12600 ssize_t ellipsisLenS(const char *string, size_t targetLength, const char *ellipsisString) { 12601 12602 // sanity 12603 if (!string or !ellipsisString) { 12604 return(-1); 12605 } 12606 12607 size_t len = strlen(string); 12608 12609 if (len <= targetLength) { 12610 return((ssize_t)len); 12611 } 12612 else { 12613 return((ssize_t)targetLength); 12614 } 12615 } 12616 12617 /** 12618 * ellipsis end string 12619 * 12620 * This function pads the current string with a given string if current string is longer than target length 12621 * If target length is more than current string's length, the current string is returned as is 12622 * 12623 * \param 12624 * string 12625 * \param 12626 * targetLength The length of the resulting string once the current string has been padded. If the value is less 12627 * than the current string's length, the current string is truncated from the left and the pad is 12628 * applied once 12629 * \param 12630 * ellipsisString The string to pad the current string with. 12631 * \return 12632 * new string of the specified length with the pad string applied from the end (you must free the pointer) 12633 * NULL when string or ellipsisString are NULL 12634 */ 12635 char *ellipsisEndS(const char *string, size_t targetLength, const char *ellipsisString) { 12636 12637 // sanity 12638 if (!string or !ellipsisString) { 12639 return(NULL); 12640 } 12641 12642 if (!targetLength) { 12643 return(strdup("")); 12644 } 12645 12646 size_t len = strlen(string); 12647 12648 if (len <= targetLength) { 12649 return(strdup(string)); 12650 } 12651 else { 12652 // truncate string 12653 char *ellip; 12654 if ( strlen(ellipsisString) < targetLength) { 12655 ellip = sliceS(string, 0, (int64_t)(targetLength - strlen(ellipsisString))); 12656 pErrorNULL(iAppendS(&ellip, ellipsisString)); 12657 } 12658 else { 12659 // ellipsisString is longer than targetLength 12660 ellip = sliceS(ellipsisString, 0, (int64_t)targetLength); 12661 } 12662 return(ellip); 12663 } 12664 } 12665 12666 /** 12667 * ellipsis end string 12668 * 12669 * This function pads the current string with a given string if current string is longer than target length 12670 * If target length is more than current string's length, the current string is returned as is 12671 * 12672 * \param 12673 * string (this parameter is reallocated) 12674 * \param 12675 * targetLength The length of the resulting string once the current string has been padded. If the value is less 12676 * than the current string's length, the current string is truncated from the left and the pad is 12677 * applied once 12678 * \param 12679 * ellipsisString The string to pad the current string with. 12680 * \return 12681 * updated string of the specified length with the pad string applied from the end 12682 * NULL when string or ellipsisString are NULL 12683 */ 12684 char *iEllipsisEndS(char **string, size_t targetLength, const char *ellipsisString) { 12685 12686 // sanity 12687 if (!string or !*string or !ellipsisString) { 12688 return(NULL); 12689 } 12690 12691 if (!targetLength) { 12692 (*string)[0] = 0; 12693 return(*string); 12694 } 12695 12696 size_t len = strlen(*string); 12697 12698 if (len > targetLength) { 12699 // truncate string 12700 char *ellip; 12701 if ( strlen(ellipsisString) < targetLength) { 12702 ellip = sliceS(*string, 0, (int64_t)(targetLength - strlen(ellipsisString))); 12703 pErrorNULL(iAppendS(&ellip, ellipsisString)); 12704 } 12705 else { 12706 // ellipsisString is longer than targetLength 12707 ellip = sliceS(ellipsisString, 0, (int64_t)targetLength); 12708 } 12709 free(*string); 12710 *string = ellip; 12711 } 12712 return(*string); 12713 } 12714 12715 /** 12716 * ellipsis end string 12717 * 12718 * This function pads the current string with a given string if current string is longer than target length 12719 * If target length is more than current string's length, the current string is returned as is 12720 * 12721 * \param 12722 * string 12723 * \param 12724 * targetLength The length of the resulting string once the current string has been padded. If the value is less 12725 * than the current string's length, the current string is truncated from the left and the pad is 12726 * applied once 12727 * \param 12728 * ellipsisString The string to pad the current string with. 12729 * \return 12730 * string in dest of the specified length with the pad string applied from the end 12731 * NULL when dest, string or ellipsisString are NULL 12732 */ 12733 char *bEllipsisEndS(char *dest, const char *string, size_t targetLength, const char *ellipsisString) { 12734 12735 // sanity 12736 if (!string or !ellipsisString or !dest) { 12737 return(NULL); 12738 } 12739 12740 if (!targetLength) { 12741 dest[0] = 0; 12742 return(dest); 12743 } 12744 12745 size_t len = strlen(string); 12746 12747 if (len <= targetLength) { 12748 strcpy(dest, string); 12749 } 12750 else { 12751 // truncate string 12752 char *ellip; 12753 if ( strlen(ellipsisString) < targetLength) { 12754 ellip = sliceS(string, 0, (int64_t)(targetLength - strlen(ellipsisString))); 12755 pErrorNULL(iAppendS(&ellip, ellipsisString)); 12756 } 12757 else { 12758 // ellipsisString is longer than targetLength 12759 ellip = sliceS(ellipsisString, 0, (int64_t)targetLength); 12760 } 12761 if (!ellip) { 12762 return(NULL); 12763 } 12764 strncpy(dest, ellip, targetLength+1); 12765 free(ellip); 12766 } 12767 return(dest); 12768 } 12769 12770 /** 12771 * ellipsis end string 12772 * 12773 * This function pads the current string with a given string if current string is longer than target length 12774 * If target length is more than current string's length, the current string is returned as is 12775 * 12776 * \param 12777 * string 12778 * \param 12779 * targetLength The length of the resulting string once the current string has been padded. If the value is less 12780 * than the current string's length, the current string is truncated from the left and the pad is 12781 * applied once 12782 * \param 12783 * ellipsisString The string to pad the current string with. 12784 * \return 12785 * string in dest of the specified length with the pad string applied from the end 12786 * NULL when dest, string or ellipsisString are NULL 12787 */ 12788 char *bLEllipsisEndS(char *dest, size_t destSize, const char *string, size_t targetLength, const char *ellipsisString) { 12789 12790 // sanity 12791 if (!string or !ellipsisString or !dest) { 12792 return(NULL); 12793 } 12794 12795 if (!destSize) { 12796 return(dest); 12797 } 12798 12799 if (!targetLength) { 12800 dest[0] = 0; 12801 return(dest); 12802 } 12803 12804 targetLength = destSize > targetLength ? targetLength : destSize;; 12805 12806 size_t len = strlen(string); 12807 12808 if (len <= targetLength) { 12809 pErrorNULL(strLCpy(dest, destSize, string)); 12810 } 12811 else { 12812 // truncate string 12813 char *ellip; 12814 if ( strlen(ellipsisString) < targetLength) { 12815 ellip = sliceS(string, 0, (int64_t)(targetLength - strlen(ellipsisString))); 12816 pErrorNULL(iAppendS(&ellip, ellipsisString)); 12817 } 12818 else { 12819 // ellipsisString is longer than targetLength 12820 ellip = sliceS(ellipsisString, 0, (int64_t)targetLength); 12821 } 12822 pErrorNULL(strLCpy(dest, destSize, ellip)); 12823 free(ellip); 12824 } 12825 return(dest); 12826 } 12827 12828 /** 12829 * ellipsis end string 12830 * 12831 * This function pads the current string with a given string if current string is longer than target length 12832 * If target length is more than current string's length, the current string is returned as is 12833 * 12834 * \param 12835 * string 12836 * \param 12837 * targetLength The length of the resulting string once the current string has been padded. If the value is less 12838 * than the current string's length, the current string is truncated from the left and the pad is 12839 * applied once 12840 * \param 12841 * ellipsisChar The char to pad the current string with. 12842 * \return 12843 * new string of the specified length with the pad string applied from the end (you must free the pointer) 12844 * NULL when string or ellipsisString are NULL 12845 */ 12846 char *ellipsisEndCharS(const char *string, size_t targetLength, char ellipsisChar) { 12847 12848 // sanity 12849 if (!string) { 12850 return(NULL); 12851 } 12852 12853 if (!targetLength) { 12854 return(strdup("")); 12855 } 12856 12857 charToS(ellipsisString, ellipsisChar); 12858 12859 size_t len = strlen(string); 12860 12861 if (len <= targetLength) { 12862 return(strdup(string)); 12863 } 12864 else { 12865 // truncate string 12866 char *ellip; 12867 ellip = sliceS(string, 0, (int64_t)(targetLength - strlen(ellipsisString))); 12868 pErrorNULL(iAppendS(&ellip, ellipsisString)); 12869 return(ellip); 12870 } 12871 } 12872 12873 /** 12874 * ellipsis end string 12875 * 12876 * This function pads the current string with a given string if current string is longer than target length 12877 * If target length is more than current string's length, the current string is returned as is 12878 * 12879 * \param 12880 * string (this parameter is reallocated) 12881 * \param 12882 * targetLength The length of the resulting string once the current string has been padded. If the value is less 12883 * than the current string's length, the current string is truncated from the left and the pad is 12884 * applied once 12885 * \param 12886 * ellipsisChar The char to pad the current string with. 12887 * \return 12888 * updated string of the specified length with the pad string applied from the end 12889 * NULL when string or ellipsisString are NULL 12890 */ 12891 char *iEllipsisEndCharS(char **string, size_t targetLength, char ellipsisChar) { 12892 12893 // sanity 12894 if (!string or !*string) { 12895 return(NULL); 12896 } 12897 12898 if (!targetLength) { 12899 (*string)[0] = 0; 12900 return(*string); 12901 } 12902 12903 charToS(ellipsisString, ellipsisChar); 12904 12905 size_t len = strlen(*string); 12906 12907 if (len > targetLength) { 12908 // truncate string 12909 char *ellip; 12910 ellip = sliceS(*string, 0, (int64_t)(targetLength - strlen(ellipsisString))); 12911 pErrorNULL(iAppendS(&ellip, ellipsisString)); 12912 free(*string); 12913 *string = ellip; 12914 } 12915 return(*string); 12916 } 12917 12918 /** 12919 * ellipsis end string 12920 * 12921 * This function pads the current string with a given string if current string is longer than target length 12922 * If target length is more than current string's length, the current string is returned as is 12923 * 12924 * \param 12925 * string 12926 * \param 12927 * targetLength The length of the resulting string once the current string has been padded. If the value is less 12928 * than the current string's length, the current string is truncated from the left and the pad is 12929 * applied once 12930 * \param 12931 * ellipsisChar The char to pad the current string with. 12932 * \return 12933 * string in dest of the specified length with the pad string applied from the end 12934 * NULL when dest, string or ellipsisString are NULL 12935 */ 12936 char *bEllipsisEndCharS(char *dest, const char *string, size_t targetLength, char ellipsisChar) { 12937 12938 // sanity 12939 if (!string or !dest) { 12940 return(NULL); 12941 } 12942 12943 if (!targetLength) { 12944 dest[0] = 0; 12945 return(dest); 12946 } 12947 12948 charToS(ellipsisString, ellipsisChar); 12949 12950 size_t len = strlen(string); 12951 12952 if (len <= targetLength) { 12953 strcpy(dest, string); 12954 } 12955 else { 12956 // truncate string 12957 char *ellip; 12958 ellip = sliceS(string, 0, (int64_t)(targetLength - strlen(ellipsisString))); 12959 if (!ellip) { 12960 return(NULL); 12961 } 12962 pErrorNULL(iAppendS(&ellip, ellipsisString)); 12963 strncpy(dest, ellip, targetLength+1); 12964 free(ellip); 12965 } 12966 return(dest); 12967 } 12968 12969 /** 12970 * ellipsis end string 12971 * 12972 * This function pads the current string with a given string if current string is longer than target length 12973 * If target length is more than current string's length, the current string is returned as is 12974 * 12975 * \param 12976 * string 12977 * \param 12978 * targetLength The length of the resulting string once the current string has been padded. If the value is less 12979 * than the current string's length, the current string is truncated from the left and the pad is 12980 * applied once 12981 * \param 12982 * ellipsisString The string to pad the current string with. 12983 * \return 12984 * string in dest of the specified length with the pad string applied from the end 12985 * NULL when dest, string or ellipsisString are NULL 12986 */ 12987 char *bLEllipsisEndCharS(char *dest, size_t destSize, const char *string, size_t targetLength, char ellipsisChar) { 12988 12989 // sanity 12990 if (!string or !dest) { 12991 return(NULL); 12992 } 12993 12994 if (!destSize) { 12995 return(dest); 12996 } 12997 12998 if (!targetLength) { 12999 dest[0] = 0; 13000 return(dest); 13001 } 13002 13003 charToS(ellipsisString, ellipsisChar); 13004 13005 targetLength = destSize > targetLength ? targetLength : destSize;; 13006 13007 size_t len = strlen(string); 13008 13009 if (len <= targetLength) { 13010 pErrorNULL(strLCpy(dest, destSize, string)); 13011 } 13012 else { 13013 // truncate string 13014 char *ellip; 13015 ellip = sliceS(string, 0, (int64_t)(targetLength - strlen(ellipsisString))); 13016 pErrorNULL(iAppendS(&ellip, ellipsisString)); 13017 pErrorNULL(strLCpy(dest, destSize, ellip)); 13018 free(ellip); 13019 } 13020 return(dest); 13021 } 13022 13023 13024 /** 13025 * pad start string 13026 * 13027 * This function pads the current string with a given string (repeated, if needed) until the 13028 * resulting string reaches a given length. The padding is applied from the start (left) of the current 13029 * string 13030 * 13031 * \param 13032 * string 13033 * \param 13034 * targetLength The length of the resulting string once the current string has been padded. If the value is less 13035 * than the current string's length, the current string is returned as is 13036 * \param 13037 * padString The string to pad the current string with. If this string is too long to stay within the target 13038 * length, it will be truncated from the right. The current string is returned as is 13039 * when an empty string is supplied 13040 * \return 13041 * new string of the specified length with the pad string applied from the start (you must free the pointer) 13042 * NULL when string or padString are NULL 13043 */ 13044 char *padStartS(const char *string, size_t targetLength, const char *padString) { 13045 13046 // sanity 13047 if (!string) { 13048 return(NULL); 13049 } 13050 if (strlen(string) >= targetLength) { 13051 return(strdup(string)); 13052 } 13053 if (!padString) { 13054 return(NULL); 13055 } 13056 if (!strlen(padString)) { 13057 return(strdup(string)); 13058 } 13059 13060 targetLength -= strlen(string); 13061 13062 char *pads = strdup(padString);; 13063 if (!pads) { 13064 return(NULL); 13065 } 13066 if (targetLength > strlen(padString)) { 13067 pErrorNULL(iRepeatS(&pads, targetLength/strlen(padString)+1)); 13068 } 13069 13070 pErrorNULL(iSliceS(&pads, 0, (int64_t)targetLength)); 13071 13072 char *r = appendS(pads, string); 13073 free(pads); 13074 13075 return(r); 13076 } 13077 13078 /** 13079 * pad start string 13080 * 13081 * This function pads the current string with a given string (repeated, if needed) until the 13082 * resulting string reaches a given length. The padding is applied from the start (left) of the current 13083 * string 13084 * 13085 * \param 13086 * string (this parameter is reallocated) 13087 * \param 13088 * targetLength The length of the resulting string once the current string has been padded. If the value is less 13089 * than the current string's length, the current string is returned as is 13090 * \param 13091 * padString The string to pad the current string with. If this string is too long to stay within the target 13092 * length, it will be truncated from the right. The current string is returned as is 13093 * when an empty string is supplied 13094 * \return 13095 * updated string of the specified length with the pad string applied from the start 13096 * NULL when string or padString are NULL 13097 */ 13098 char *iPadStartS(char **string, size_t targetLength, const char *padString) { 13099 13100 // sanity 13101 if (!string or !*string) { 13102 return(NULL); 13103 } 13104 if (strlen(*string) >= targetLength) { 13105 return(*string); 13106 } 13107 if (!padString) { 13108 return(NULL); 13109 } 13110 if (!strlen(padString)) { 13111 return(*string); 13112 } 13113 13114 targetLength -= strlen(*string); 13115 13116 char *pads = strdup(padString);; 13117 if (targetLength > strlen(padString)) { 13118 pErrorNULL(iRepeatS(&pads, targetLength/strlen(padString)+1)); 13119 } 13120 13121 pErrorNULL(iSliceS(&pads, 0, (int64_t)targetLength)); 13122 13123 pErrorNULL(iAppendS(&pads, *string)); 13124 free(*string); 13125 *string = pads; 13126 13127 return(*string); 13128 } 13129 13130 /** 13131 * pad start string 13132 * 13133 * This function pads the current string with a given string (repeated, if needed) until the 13134 * resulting string reaches a given length. The padding is applied from the start (left) of the current 13135 * string 13136 * 13137 * \param 13138 * string 13139 * \param 13140 * targetLength The length of the resulting string once the current string has been padded. If the value is less 13141 * than the current string's length, the current string is returned as is 13142 * \param 13143 * padString The string to pad the current string with. If this string is too long to stay within the target 13144 * length, it will be truncated from the right. The current string is returned as is 13145 * when an empty string is supplied 13146 * \return 13147 * new string of the specified length with the pad string applied from the start 13148 * NULL when dest, string or padString are NULL 13149 */ 13150 char *bPadStartS(char *dest, const char *string, size_t targetLength, const char *padString) { 13151 13152 // sanity 13153 if (!dest or !string) { 13154 return(NULL); 13155 } 13156 if (strlen(string) >= targetLength) { 13157 strcpy(dest, string); 13158 return(dest); 13159 } 13160 if (!padString) { 13161 return(NULL); 13162 } 13163 if (!strlen(padString)) { 13164 strcpy(dest, string); 13165 return(dest); 13166 } 13167 13168 targetLength -= strlen(string); 13169 13170 char *pads = strdup(padString);; 13171 if (!pads) { 13172 return(NULL); 13173 } 13174 if (targetLength > strlen(padString)) { 13175 pErrorNULL(iRepeatS(&pads, targetLength/strlen(padString)+1)); 13176 } 13177 13178 pErrorNULL(iSliceS(&pads, 0, (int64_t)targetLength)); 13179 13180 char *r = appendS(pads, string); 13181 free(pads); 13182 if (!r) { 13183 return(NULL); 13184 } 13185 13186 strcpy(dest, r); 13187 free(r); 13188 13189 return(dest); 13190 } 13191 13192 /** 13193 * pad start string 13194 * 13195 * This function pads the current string with a given string (repeated, if needed) until the 13196 * resulting string reaches a given length. The padding is applied from the start (left) of the current 13197 * string 13198 * 13199 * \param 13200 * string 13201 * \param 13202 * targetLength The length of the resulting string once the current string has been padded. If the value is less 13203 * than the current string's length, the current string is returned as is 13204 * \param 13205 * padString The string to pad the current string with. If this string is too long to stay within the target 13206 * length, it will be truncated from the right. The current string is returned as is 13207 * when an empty string is supplied 13208 * \return 13209 * new string of the specified length with the pad string applied from the start 13210 * NULL when dest, string or padString are NULL 13211 */ 13212 char *bLPadStartS(char *dest, size_t destSize, const char *string, size_t targetLength, const char *padString) { 13213 13214 // sanity 13215 if (!dest or !string) { 13216 return(NULL); 13217 } 13218 if (strlen(string) >= targetLength) { 13219 pErrorNULL(strLCpy(dest, destSize, string)); 13220 return(dest); 13221 } 13222 if (!padString) { 13223 return(NULL); 13224 } 13225 if (!strlen(padString)) { 13226 pErrorNULL(strLCpy(dest, destSize, string)); 13227 return(dest); 13228 } 13229 13230 targetLength -= strlen(string); 13231 13232 char *pads = strdup(padString);; 13233 if (!pads) { 13234 return(NULL); 13235 } 13236 if (targetLength > strlen(padString)) { 13237 pErrorNULL(iRepeatS(&pads, targetLength/strlen(padString)+1)); 13238 } 13239 13240 pErrorNULL(iSliceS(&pads, 0, (int64_t)targetLength)); 13241 13242 char *r = appendS(pads, string); 13243 free(pads); 13244 if (!r) { 13245 return(NULL); 13246 } 13247 13248 pErrorNULL(strLCpy(dest, destSize, r)); 13249 free(r); 13250 13251 return(dest); 13252 } 13253 13254 /** 13255 * pad start string 13256 * 13257 * This function pads the current string with a given character (repeated, if needed) until the 13258 * resulting string reaches a given length. The padding is applied from the start (left) of the current 13259 * string 13260 * 13261 * \param 13262 * string 13263 * \param 13264 * targetLength The length of the resulting string once the current string has been padded. If the value is less 13265 * than the current string's length, the current string is returned as is 13266 * \param 13267 * padChar The character to pad the current string with 13268 * \return 13269 * new string of the specified length with the pad character applied from the start (you must free the pointer) 13270 * NULL when string is NULL 13271 */ 13272 char *padStartCharS(const char *string, size_t targetLength, char padChar) { 13273 13274 // sanity 13275 if (!string) { 13276 return(NULL); 13277 } 13278 if (strlen(string) >= targetLength) { 13279 return(strdup(string)); 13280 } 13281 13282 targetLength -= strlen(string); 13283 13284 charToS(padString, padChar); 13285 13286 char *pads = strdup(padString);; 13287 if (!pads) { 13288 return(NULL); 13289 } 13290 if (targetLength > strlen(padString)) { 13291 pErrorNULL(iRepeatS(&pads, targetLength/strlen(padString)+1)); 13292 } 13293 13294 pErrorNULL(iSliceS(&pads, 0, (int64_t)targetLength)); 13295 13296 char *r = appendS(pads, string); 13297 free(pads); 13298 13299 return(r); 13300 } 13301 13302 /** 13303 * pad start string 13304 * 13305 * This function pads the current string with a given character (repeated, if needed) until the 13306 * resulting string reaches a given length. The padding is applied from the start (left) of the current 13307 * string 13308 * 13309 * \param 13310 * string (this parameter is reallocated) 13311 * \param 13312 * targetLength The length of the resulting string once the current string has been padded. If the value is less 13313 * than the current string's length, the current string is returned as is 13314 * \param 13315 * padChar The character to pad the current string with 13316 * \return 13317 * new string of the specified length with the pad character applied from the start 13318 * NULL when string is NULL 13319 */ 13320 char *iPadStartCharS(char **string, size_t targetLength, char padChar) { 13321 13322 // sanity 13323 if (!string or !*string) { 13324 return(NULL); 13325 } 13326 if (strlen(*string) >= targetLength) { 13327 return(*string); 13328 } 13329 13330 targetLength -= strlen(*string); 13331 13332 charToS(padString, padChar); 13333 13334 char *pads = strdup(padString);; 13335 if (targetLength > strlen(padString)) { 13336 pErrorNULL(iRepeatS(&pads, targetLength/strlen(padString)+1)); 13337 } 13338 13339 pErrorNULL(iSliceS(&pads, 0, (int64_t)targetLength)); 13340 13341 pErrorNULL(iAppendS(&pads, *string)); 13342 free(*string); 13343 *string = pads; 13344 13345 return(*string); 13346 } 13347 13348 /** 13349 * pad start string 13350 * 13351 * This function pads the current string with a given character (repeated, if needed) until the 13352 * resulting string reaches a given length. The padding is applied from the start (left) of the current 13353 * string 13354 * 13355 * \param 13356 * string 13357 * \param 13358 * targetLength The length of the resulting string once the current string has been padded. If the value is less 13359 * than the current string's length, the current string is returned as is 13360 * \param 13361 * padChar The character to pad the current string with 13362 * \return 13363 * new string of the specified length with the pad character applied from the start 13364 * NULL when dest or string are NULL 13365 */ 13366 char *bPadStartCharS(char *dest, const char *string, size_t targetLength, char padChar) { 13367 13368 // sanity 13369 if (!dest or !string) { 13370 return(NULL); 13371 } 13372 if (strlen(string) >= targetLength) { 13373 strcpy(dest, string); 13374 return(dest); 13375 } 13376 13377 targetLength -= strlen(string); 13378 13379 charToS(padString, padChar); 13380 13381 char *pads = strdup(padString);; 13382 if (!pads) { 13383 return(NULL); 13384 } 13385 if (targetLength > strlen(padString)) { 13386 pErrorNULL(iRepeatS(&pads, targetLength/strlen(padString)+1)); 13387 } 13388 13389 pErrorNULL(iSliceS(&pads, 0, (int64_t)targetLength)); 13390 13391 char *r = appendS(pads, string); 13392 free(pads); 13393 if (!r) { 13394 return(NULL); 13395 } 13396 13397 strcpy(dest, r); 13398 free(r); 13399 13400 return(dest); 13401 } 13402 13403 /** 13404 * pad start string 13405 * 13406 * This function pads the current string with a given character (repeated, if needed) until the 13407 * resulting string reaches a given length. The padding is applied from the start (left) of the current 13408 * string 13409 * 13410 * \param 13411 * string 13412 * \param 13413 * targetLength The length of the resulting string once the current string has been padded. If the value is less 13414 * than the current string's length, the current string is returned as is 13415 * \param 13416 * padChar The character to pad the current string with 13417 * \return 13418 * new string of the specified length with the pad character applied from the start 13419 * NULL when dest or string are NULL 13420 */ 13421 char *bLPadStartCharS(char *dest, size_t destSize, const char *string, size_t targetLength, char padChar) { 13422 13423 // sanity 13424 if (!dest or !string) { 13425 return(NULL); 13426 } 13427 if (strlen(string) >= targetLength) { 13428 pErrorNULL(strLCpy(dest, destSize, string)); 13429 return(dest); 13430 } 13431 13432 targetLength -= strlen(string); 13433 13434 charToS(padString, padChar); 13435 13436 char *pads = strdup(padString);; 13437 if (!pads) { 13438 return(NULL); 13439 } 13440 if (targetLength > strlen(padString)) { 13441 pErrorNULL(iRepeatS(&pads, targetLength/strlen(padString)+1)); 13442 } 13443 13444 pErrorNULL(iSliceS(&pads, 0, (int64_t)targetLength)); 13445 13446 char *r = appendS(pads, string); 13447 free(pads); 13448 if (!r) { 13449 return(NULL); 13450 } 13451 13452 pErrorNULL(strLCpy(dest, destSize, r)); 13453 free(r); 13454 13455 return(dest); 13456 } 13457 13458 /** 13459 * length of string after padStart 13460 * 13461 * \param 13462 * string 13463 * \return 13464 * length of string after padStart 13465 * -1 when string is NULL 13466 */ 13467 ssize_t padStartLenS(const char *string, size_t targetLength, const char *padString) { 13468 13469 // sanity 13470 if (!string) { 13471 return(-1); 13472 } 13473 if (strlen(string) >= targetLength) { 13474 return((ssize_t)strlen(string)); 13475 } 13476 if (!padString) { 13477 return(-1); 13478 } 13479 if (!strlen(padString)) { 13480 return((ssize_t)strlen(string)); 13481 } 13482 13483 return((ssize_t)targetLength); 13484 } 13485 13486 /** 13487 * pad end string 13488 * 13489 * This function pads the current string with a given string (repeated, if needed) until the 13490 * resulting string reaches a given length. The padding is applied from the end (right) of the current 13491 * string 13492 * 13493 * \param 13494 * string 13495 * \param 13496 * targetLength The length of the resulting string once the current string has been padded. If the value is lower 13497 * than the current string's length, the current string is returned as is 13498 * \param 13499 * padString The string to pad the current string with. If this string is too long to stay within the target 13500 * length, it will be truncated and the left-most part will be applied. The current string is returned as is 13501 * when an empty string is supplied 13502 * \return 13503 * new string of the specified length with the pad string applied at the end of the current string (you must free the pointer) 13504 * NULL when string or padString are NULL 13505 */ 13506 char *padEndS(const char *string, size_t targetLength, const char *padString) { 13507 13508 // sanity 13509 if (!string) { 13510 return(NULL); 13511 } 13512 if (strlen(string) > targetLength) { 13513 return(strdup(string)); 13514 } 13515 if (!padString) { 13516 return(NULL); 13517 } 13518 if (!strlen(padString)) { 13519 return(strdup(string)); 13520 } 13521 13522 targetLength -= strlen(string); 13523 13524 char *pads = strdup(padString);; 13525 if (!pads) { 13526 return(NULL); 13527 } 13528 if (targetLength > strlen(padString)) { 13529 pErrorNULL(iRepeatS(&pads, targetLength/strlen(padString)+1)); 13530 } 13531 13532 pErrorNULL(iSliceS(&pads, 0, (int64_t)targetLength)); 13533 13534 char *r = appendS(string, pads); 13535 free(pads); 13536 13537 return(r); 13538 } 13539 13540 13541 13542 /** 13543 * pad end string 13544 * 13545 * This function pads the current string with a given string (repeated, if needed) so that the 13546 * resulting string reaches a given length. The padding is applied from the end (right) of the current 13547 * string 13548 * 13549 * \param 13550 * string (this parameter is reallocated) 13551 * \param 13552 * targetLength The length of the resulting string once the current string has been padded. If the value is lower 13553 * than the current string's length, the current string will be returned as is 13554 * \param 13555 * padString The string to pad the current string with. If this string is too long to stay within the target 13556 * length, it will be truncated and the left-most part will be applied. The current string is returned as is 13557 * when an empty string is supplied 13558 * \return 13559 * updated string of the specified length with the pad string applied at the end of the current string 13560 * NULL when string or padString are NULL 13561 */ 13562 char *iPadEndS(char **string, size_t targetLength, const char *padString) { 13563 13564 // sanity 13565 if (!string or !*string) { 13566 return(NULL); 13567 } 13568 if (strlen(*string) > targetLength) { 13569 return(*string); 13570 } 13571 if (!padString) { 13572 return(NULL); 13573 } 13574 if (!strlen(padString)) { 13575 return(*string); 13576 } 13577 13578 targetLength -= strlen(*string); 13579 13580 char *pads = strdup(padString);; 13581 if (!pads) { 13582 return(NULL); 13583 } 13584 if (targetLength > strlen(padString)) { 13585 pErrorNULL(iRepeatS(&pads, targetLength/strlen(padString)+1)); 13586 } 13587 13588 pErrorNULL(iSliceS(&pads, 0, (int64_t)targetLength)); 13589 13590 pErrorNULL(iAppendS(string, pads)); 13591 free(pads); 13592 13593 return(*string); 13594 } 13595 13596 /** 13597 * pad end string 13598 * 13599 * This function pads the current string with a given string (repeated, if needed) so that the 13600 * resulting string reaches a given length. The padding is applied from the end (right) of the current 13601 * string 13602 * 13603 * \param 13604 * string 13605 * \param 13606 * targetLength The length of the resulting string once the current string has been padded. If the value is lower 13607 * than the current string's length, the current string will be returned as is 13608 * \param 13609 * padString The string to pad the current string with. If this string is too long to stay within the target 13610 * length, it will be truncated and the left-most part will be applied. The current string is returned as is 13611 * when an empty string is supplied 13612 * \return 13613 * new string of the specified length with the pad string applied at the end of the current string 13614 * NULL when dest, string or padString are NULL 13615 */ 13616 char *bPadEndS(char *dest, const char *string, size_t targetLength, const char *padString) { 13617 13618 // sanity 13619 if (!dest or !string) { 13620 return(NULL); 13621 } 13622 if (strlen(string) > targetLength) { 13623 strcpy(dest, string); 13624 return(dest); 13625 } 13626 if (!padString) { 13627 return(NULL); 13628 } 13629 if (!strlen(padString)) { 13630 strcpy(dest, string); 13631 return(dest); 13632 } 13633 13634 targetLength -= strlen(string); 13635 13636 char *pads = strdup(padString);; 13637 if (!pads) { 13638 return(NULL); 13639 } 13640 if (targetLength > strlen(padString)) { 13641 pErrorNULL(iRepeatS(&pads, targetLength/strlen(padString)+1)); 13642 } 13643 13644 pErrorNULL(iSliceS(&pads, 0, (int64_t)targetLength)); 13645 13646 char *r = appendS(string, pads); 13647 free(pads); 13648 if (!r) { 13649 return(NULL); 13650 } 13651 13652 strcpy(dest, r); 13653 free(r); 13654 13655 return(dest); 13656 } 13657 13658 /** 13659 * pad end string 13660 * 13661 * This function pads the current string with a given string (repeated, if needed) so that the 13662 * resulting string reaches a given length. The padding is applied from the end (right) of the current 13663 * string 13664 * 13665 * \param 13666 * string 13667 * \param 13668 * targetLength The length of the resulting string once the current string has been padded. If the value is lower 13669 * than the current string's length, the current string will be returned as is 13670 * \param 13671 * padString The string to pad the current string with. If this string is too long to stay within the target 13672 * length, it will be truncated and the left-most part will be applied. The current string is returned as is 13673 * when an empty string is supplied 13674 * \return 13675 * new string of the specified length with the pad string applied at the end of the current string 13676 * NULL when dest, string or padString are NULL 13677 */ 13678 char *bLPadEndS(char *dest, size_t destSize, const char *string, size_t targetLength, const char *padString) { 13679 13680 // sanity 13681 if (!dest or !string) { 13682 return(NULL); 13683 } 13684 if (strlen(string) > targetLength) { 13685 pErrorNULL(strLCpy(dest, destSize, string)); 13686 return(dest); 13687 } 13688 if (!padString) { 13689 return(NULL); 13690 } 13691 if (!strlen(padString)) { 13692 pErrorNULL(strLCpy(dest, destSize, string)); 13693 return(dest); 13694 } 13695 13696 targetLength -= strlen(string); 13697 13698 char *pads = strdup(padString);; 13699 if (!pads) { 13700 return(NULL); 13701 } 13702 if (targetLength > strlen(padString)) { 13703 pErrorNULL(iRepeatS(&pads, targetLength/strlen(padString)+1)); 13704 } 13705 13706 pErrorNULL(iSliceS(&pads, 0, (int64_t)targetLength)); 13707 13708 char *r = appendS(string, pads); 13709 free(pads); 13710 if (!r) { 13711 return(NULL); 13712 } 13713 13714 pErrorNULL(strLCpy(dest, destSize, r)); 13715 free(r); 13716 13717 return(dest); 13718 } 13719 13720 /** 13721 * pad end string 13722 * 13723 * This function pads the current string with a given character (repeated, if needed) so that the 13724 * resulting string reaches a given length. The padding is applied from the end (right) of the current 13725 * string 13726 * 13727 * \param 13728 * string 13729 * \param 13730 * targetLength The length of the resulting string once the current string has been padded. If the value is lower 13731 * than the current string's length, the current string will be returned as is 13732 * \param 13733 * padChar The character to pad the current string with 13734 * \return 13735 * new string of the specified length with the pad character applied at the end of the current string (you must free the pointer) 13736 * NULL when string is NULL 13737 */ 13738 char *padEndCharS(const char *string, size_t targetLength, char padChar) { 13739 13740 // sanity 13741 if (!string) { 13742 return(NULL); 13743 } 13744 if (strlen(string) > targetLength) { 13745 return(strdup(string)); 13746 } 13747 13748 targetLength -= strlen(string); 13749 13750 charToS(padString, padChar); 13751 13752 char *pads = strdup(padString);; 13753 if (!pads) { 13754 return(NULL); 13755 } 13756 if (targetLength > strlen(padString)) { 13757 pErrorNULL(iRepeatS(&pads, targetLength/strlen(padString)+1)); 13758 } 13759 13760 pErrorNULL(iSliceS(&pads, 0, (int64_t)targetLength)); 13761 13762 char *r = appendS(string, pads); 13763 free(pads); 13764 13765 return(r); 13766 } 13767 13768 /** 13769 * pad end string 13770 * 13771 * This function pads the current string with a given character (repeated, if needed) so that the 13772 * resulting string reaches a given length. The padding is applied from the end (right) of the current 13773 * string 13774 * 13775 * \param 13776 * string (this parameter is reallocated) 13777 * \param 13778 * targetLength The length of the resulting string once the current string has been padded. If the value is lower 13779 * than the current string's length, the current string will be returned as is 13780 * \param 13781 * padChar The character to pad the current string with 13782 * \return 13783 * updated string of the specified length with the pad character applied at the end of the current string 13784 * NULL when string is NULL 13785 */ 13786 char *iPadEndCharS(char **string, size_t targetLength, char padChar) { 13787 13788 // sanity 13789 if (!string or !*string) { 13790 return(NULL); 13791 } 13792 if (strlen(*string) > targetLength) { 13793 return(*string); 13794 } 13795 13796 targetLength -= strlen(*string); 13797 13798 charToS(padString, padChar); 13799 13800 char *pads = strdup(padString);; 13801 if (!pads) { 13802 return(NULL); 13803 } 13804 if (targetLength > strlen(padString)) { 13805 pErrorNULL(iRepeatS(&pads, targetLength/strlen(padString)+1)); 13806 } 13807 13808 pErrorNULL(iSliceS(&pads, 0, (int64_t)targetLength)); 13809 13810 pErrorNULL(iAppendS(string, pads)); 13811 free(pads); 13812 13813 return(*string); 13814 } 13815 13816 /** 13817 * pad end string 13818 * 13819 * This function pads the current string with a given character (repeated, if needed) so that the 13820 * resulting string reaches a given length. The padding is applied from the end (right) of the current 13821 * string 13822 * 13823 * \param 13824 * string 13825 * \param 13826 * targetLength The length of the resulting string once the current string has been padded. If the value is lower 13827 * than the current string's length, the current string will be returned as is 13828 * \param 13829 * padChar The character to pad the current string with 13830 * \return 13831 * new string of the specified length with the pad character applied at the end of the current string 13832 * NULL when dest or string are NULL 13833 */ 13834 char *bPadEndCharS(char *dest, const char *string, size_t targetLength, char padChar) { 13835 13836 // sanity 13837 if (!dest or !string) { 13838 return(NULL); 13839 } 13840 if (strlen(string) > targetLength) { 13841 strcpy(dest, string); 13842 return(dest); 13843 } 13844 13845 targetLength -= strlen(string); 13846 13847 charToS(padString, padChar); 13848 13849 char *pads = strdup(padString);; 13850 if (!pads) { 13851 return(NULL); 13852 } 13853 if (targetLength > strlen(padString)) { 13854 pErrorNULL(iRepeatS(&pads, targetLength/strlen(padString)+1)); 13855 } 13856 13857 pErrorNULL(iSliceS(&pads, 0, (int64_t)targetLength)); 13858 13859 char *r = appendS(string, pads); 13860 free(pads); 13861 if (!r) { 13862 return(NULL); 13863 } 13864 13865 strcpy(dest, r); 13866 free(r); 13867 13868 return(dest); 13869 } 13870 13871 /** 13872 * pad end string 13873 * 13874 * This function pads the current string with a given character (repeated, if needed) so that the 13875 * resulting string reaches a given length. The padding is applied from the end (right) of the current 13876 * string 13877 * 13878 * \param 13879 * string 13880 * \param 13881 * targetLength The length of the resulting string once the current string has been padded. If the value is lower 13882 * than the current string's length, the current string will be returned as is 13883 * \param 13884 * padChar The string to pad the current string with 13885 * \return 13886 * new string of the specified length with the pad character applied at the end of the current string 13887 * NULL when dest, string or padString are NULL 13888 */ 13889 char *bLPadEndCharS(char *dest, size_t destSize, const char *string, size_t targetLength, char padChar) { 13890 13891 // sanity 13892 if (!dest or !string) { 13893 return(NULL); 13894 } 13895 if (strlen(string) > targetLength) { 13896 pErrorNULL(strLCpy(dest, destSize, string)); 13897 return(dest); 13898 } 13899 13900 targetLength -= strlen(string); 13901 13902 charToS(padString, padChar); 13903 13904 char *pads = strdup(padString);; 13905 if (!pads) { 13906 return(NULL); 13907 } 13908 if (targetLength > strlen(padString)) { 13909 pErrorNULL(iRepeatS(&pads, targetLength/strlen(padString)+1)); 13910 } 13911 13912 pErrorNULL(iSliceS(&pads, 0, (int64_t)targetLength)); 13913 13914 char *r = appendS(string, pads); 13915 free(pads); 13916 if (!r) { 13917 return(NULL); 13918 } 13919 13920 pErrorNULL(strLCpy(dest, destSize, r)); 13921 free(r); 13922 13923 return(dest); 13924 } 13925 13926 13927 /** 13928 * length of string after padEnd 13929 * 13930 * \param 13931 * string 13932 * \return 13933 * length of string after padEnd 13934 * -1 when string is NULL 13935 */ 13936 ssize_t padEndLenS(const char *string, size_t targetLength, const char *padString) { 13937 13938 // sanity 13939 if (!string) { 13940 return(-1); 13941 } 13942 if (strlen(string) > targetLength) { 13943 return((ssize_t)strlen(string)); 13944 } 13945 if (!padString) { 13946 return(-1); 13947 } 13948 if (!strlen(padString)) { 13949 return((ssize_t)strlen(string)); 13950 } 13951 13952 return((ssize_t)targetLength); 13953 } 13954 13955 /** 13956 * get string 13957 * 13958 * get char at python index 13959 * 13960 */ 13961 char getS(const char *string, int64_t index) { 13962 int64_t len; 13963 13964 if (!string) { 13965 return(0); 13966 } 13967 13968 len = (int64_t)strlen(string); 13969 if (index >= len) { 13970 return(0); 13971 } 13972 if (index < -len) { 13973 return(0); 13974 } 13975 if (index < 0) { 13976 index = len + index; 13977 } 13978 13979 return(*(string+index)); 13980 } 13981 13982 /** 13983 * set string 13984 * 13985 * set char at python index 13986 */ 13987 char *setS(char *string, int64_t index, char c) { 13988 int64_t len; 13989 13990 if (!string) { 13991 return(NULL); 13992 } 13993 13994 len = (int64_t)strlen(string); 13995 if (index >= len) { 13996 return(NULL); 13997 } 13998 if (index < -len) { 13999 return(NULL); 14000 } 14001 if (index < 0) { 14002 index = len + index; 14003 } 14004 14005 *(string+index) = c; 14006 return(string); 14007 } 14008 14009 /** 14010 * swap characters in string 14011 * 14012 * \param 14013 * string 14014 * \param 14015 * index1 index of character to swap 14016 * \param 14017 * index2 index of second character to swap 14018 * \return 14019 * new string with characters swapped at index1 and index2 (you must free this pointer) 14020 * NULL when string is NULL or when index1 or index2 are outside the string 14021 */ 14022 char *swapS(char *string, int64_t index1, int64_t index2) { 14023 int64_t len; 14024 14025 if (!string) { 14026 return(NULL); 14027 } 14028 14029 len = (int64_t)strlen(string); 14030 if (index1 >= len) { 14031 return(NULL); 14032 } 14033 if (index1 < -len) { 14034 return(NULL); 14035 } 14036 if (index1 < 0) { 14037 index1 = len + index1; 14038 } 14039 14040 if (index2 >= len) { 14041 return(NULL); 14042 } 14043 if (index2 < -len) { 14044 return(NULL); 14045 } 14046 if (index2 < 0) { 14047 index2 = len + index2; 14048 } 14049 14050 char *r = strdup(string); 14051 if (!r) { 14052 return(NULL); 14053 } 14054 14055 char tmp = r[index1]; 14056 r[index1] = r[index2]; 14057 r[index2] = tmp;; 14058 14059 return(r); 14060 } 14061 14062 /** 14063 * swap characters in string 14064 * 14065 * \param 14066 * string 14067 * \param 14068 * index1 index of character to swap 14069 * \param 14070 * index2 index of second character to swap 14071 * \return 14072 * updated string with characters swapped at index1 and index2 (you must free this pointer) 14073 * NULL when string is NULL or when index1 or index2 are outside the string 14074 */ 14075 char *iSwapS(char **string, int64_t index1, int64_t index2) { 14076 int64_t len; 14077 14078 if (!string or !*string) { 14079 return(NULL); 14080 } 14081 14082 len = (int64_t)strlen(*string); 14083 if (index1 >= len) { 14084 return(NULL); 14085 } 14086 if (index1 < -len) { 14087 return(NULL); 14088 } 14089 if (index1 < 0) { 14090 index1 = len + index1; 14091 } 14092 14093 if (index2 >= len) { 14094 return(NULL); 14095 } 14096 if (index2 < -len) { 14097 return(NULL); 14098 } 14099 if (index2 < 0) { 14100 index2 = len + index2; 14101 } 14102 14103 char tmp = (*string)[index1]; 14104 (*string)[index1] = (*string)[index2]; 14105 (*string)[index2] = tmp;; 14106 14107 return(*string); 14108 } 14109 14110 /** 14111 * swap characters in string 14112 * 14113 * \param 14114 * string 14115 * \param 14116 * index1 index of character to swap 14117 * \param 14118 * index2 index of second character to swap 14119 * \return 14120 * string with characters swapped at index1 and index2 14121 * NULL when string is NULL or when index1 or index2 are outside the string 14122 */ 14123 char *bSwapS(char *string, int64_t index1, int64_t index2) { 14124 int64_t len; 14125 14126 if (!string) { 14127 return(NULL); 14128 } 14129 14130 len = (int64_t)strlen(string); 14131 if (index1 >= len) { 14132 return(NULL); 14133 } 14134 if (index1 < -len) { 14135 return(NULL); 14136 } 14137 if (index1 < 0) { 14138 index1 = len + index1; 14139 } 14140 14141 if (index2 >= len) { 14142 return(NULL); 14143 } 14144 if (index2 < -len) { 14145 return(NULL); 14146 } 14147 if (index2 < 0) { 14148 index2 = len + index2; 14149 } 14150 14151 char tmp = string[index1]; 14152 string[index1] = string[index2]; 14153 string[index2] = tmp;; 14154 14155 return(string); 14156 } 14157 14158 /** 14159 * swap characters in string 14160 * 14161 * if string's length is more than size then size is the end of string 14162 * and the indexes are computed relative to size 14163 * 14164 * \param 14165 * string 14166 * \param 14167 * size string buffer size 14168 * \param 14169 * index1 index of character to swap 14170 * \param 14171 * index2 index of second character to swap 14172 * \return 14173 * string with characters swapped at index1 and index2 14174 * NULL when string is NULL or when index1 or index2 are outside the string 14175 */ 14176 char *bLSwapS(char *string, size_t size, int64_t index1, int64_t index2) { 14177 int64_t len; 14178 14179 if (!string) { 14180 return(NULL); 14181 } 14182 14183 if (!size) { 14184 return(string); 14185 } 14186 14187 len = (int64_t)strlen(string); 14188 14189 if ((size_t)len+1 > size) { 14190 len = (int64_t)(size-1); 14191 } 14192 14193 if (index1 >= len) { 14194 return(NULL); 14195 } 14196 if (index1 < -len) { 14197 return(NULL); 14198 } 14199 if (index1 < 0) { 14200 index1 = len + index1; 14201 } 14202 14203 if (index2 >= len) { 14204 return(NULL); 14205 } 14206 if (index2 < -len) { 14207 return(NULL); 14208 } 14209 if (index2 < 0) { 14210 index2 = len + index2; 14211 } 14212 14213 char tmp = string[index1]; 14214 string[index1] = string[index2]; 14215 string[index2] = tmp;; 14216 14217 return(string); 14218 } 14219 14220 14221 /** 14222 * slice String 14223 * return new string which is the string between start and end 14224 * negative indexes are allowed 14225 * 14226 * (copy substring from start to end) 14227 * 14228 * \param 14229 * string to slice 14230 * start: start index, must be in the string 14231 * end: end index, must be in the string after start 14232 * \return 14233 * new sliced string (you must free the pointer) 14234 * "" when start=end 14235 * NULL when start and end are not set correctly 14236 */ 14237 char *sliceS(const char *string, int64_t start, int64_t end) { 14238 char *s = NULL; 14239 int64_t len; 14240 14241 // sanity checks 14242 if (!string) { 14243 return(NULL); 14244 } 14245 14246 len = (int64_t)strlen(string); 14247 if (start > len) { 14248 return(NULL); 14249 } 14250 if (end > len) { 14251 end = len; 14252 } 14253 if (start <= -len) { 14254 start = -len; 14255 } 14256 if (end <= -len) { 14257 return(NULL); 14258 } 14259 if (start < 0) { 14260 start = len + start; 14261 } 14262 if (end <= 0) { 14263 end = len + end; 14264 } 14265 if (end < start) { 14266 return(NULL); 14267 } 14268 14269 if (start == end) { 14270 emptyS(s) 14271 } 14272 else { 14273 // start < end < len 14274 // copy range to a new string 14275 int64_t n; 14276 n = end - start; 14277 s = MALLOC((size_t)(n+1)); 14278 if (!s) { 14279 return(NULL);//LCOV_EXCL_LINE 14280 } 14281 s = strncpy(s, string+start, (size_t)n); 14282 s[n] = 0; 14283 } 14284 14285 return(s); 14286 } 14287 14288 /** 14289 * slice String 14290 * return string which is the string between start and end 14291 * negative indexes are allowed 14292 * 14293 * \param 14294 * string to slice (this parameter is reallocated) 14295 * start: start index, must be in the string 14296 * end: end index, must be in the string after start 14297 * \return 14298 * sliced string (you must free the pointer) 14299 * "" when start=end 14300 * NULL unchanged string when start and end are not set correctly 14301 */ 14302 char *iSliceS(char **string, int64_t start, int64_t end) { 14303 char *s = NULL; 14304 int64_t len; 14305 14306 // sanity checks 14307 if (!string || !*string) { 14308 return(NULL); 14309 } 14310 14311 len = (int64_t)strlen(*string); 14312 if (start > len) { 14313 free(*string); 14314 emptyS(*string); 14315 return(NULL); 14316 } 14317 if (end > len) { 14318 end = len; 14319 } 14320 if (start <= -len) { 14321 start = -len; 14322 } 14323 if (end <= -len) { 14324 free(*string); 14325 emptyS(*string); 14326 return(NULL); 14327 } 14328 if (start < 0) { 14329 start = len + start; 14330 } 14331 if (end <= 0) { 14332 end = len + end; 14333 } 14334 if (end < start) { 14335 free(*string); 14336 emptyS(*string); 14337 return(NULL); 14338 } 14339 14340 if (start == end) { 14341 emptyS(s); 14342 } 14343 else { 14344 // start < end < len 14345 // copy range to a new string 14346 int64_t n; 14347 n = end - start; 14348 s = MALLOC((size_t)(n+1)); 14349 if (!s) { 14350 return(NULL); 14351 } 14352 s = strncpy(s, (*string)+start, (size_t)n); 14353 s[n] = 0; 14354 } 14355 14356 free(*string); 14357 *string = s; 14358 return(s); 14359 } 14360 14361 /** 14362 * buffer slice String 14363 * return string which is the string between start and end 14364 * negative indexes are allowed 14365 * 14366 * \param 14367 * string to slice 14368 * start: start index, must be in the string 14369 * end: end index, must be in the string after start 14370 * \return 14371 * sliced string 14372 * "" when start=end 14373 * NULL unchanged string when start and end are not set correctly 14374 */ 14375 char *bSliceS(char *string, int64_t start, int64_t end) { 14376 int64_t len; 14377 14378 // sanity checks 14379 if (!string) { 14380 return(NULL); 14381 } 14382 14383 len = (int64_t)strlen(string); 14384 if (start > len) { 14385 bEmptyS(string); 14386 return(NULL); 14387 } 14388 if (end > len) { 14389 end = len; 14390 } 14391 if (start <= -len) { 14392 start = -len; 14393 } 14394 if (end <= -len) { 14395 bEmptyS(string); 14396 return(NULL); 14397 } 14398 if (start < 0) { 14399 start = len + start; 14400 } 14401 if (end <= 0) { 14402 end = len + end; 14403 } 14404 if (end < start) { 14405 bEmptyS(string); 14406 return(NULL); 14407 } 14408 14409 if (start == end) { 14410 bEmptyS(string); 14411 } 14412 else { 14413 // start < end < len 14414 // copy range to a new string 14415 int64_t n; 14416 n = end - start; 14417 if (start) { 14418 memmove(string, string+start, (size_t)n); 14419 } 14420 string[n] = 0; 14421 } 14422 14423 return(string); 14424 } 14425 14426 /** 14427 * buffer size slice String 14428 * return string which is the string between start and end 14429 * negative indexes are allowed 14430 * 14431 * \param 14432 * string to slice 14433 * \param 14434 * stringSize string buffer size 14435 * \param 14436 * start: start index, must be in the string 14437 * \param 14438 * end: end index, must be in the string after start 14439 * \return 14440 * sliced string 14441 * "" when start=end 14442 * NULL unchanged string when start and end are not set correctly 14443 */ 14444 char *bLSliceS(char *string, size_t stringSize, int64_t start, int64_t end) { 14445 int64_t len; 14446 14447 // sanity checks 14448 if (!string || !stringSize) { 14449 return(NULL); 14450 } 14451 14452 len = (int64_t)strlen(string); 14453 if ((size_t)len+1 > stringSize) { 14454 len = (int64_t)(stringSize - 1); 14455 } 14456 14457 // compute string length without NUL 14458 if (start > len) { 14459 bEmptyS(string); 14460 return(NULL); 14461 } 14462 if (end > len) { 14463 end = len; 14464 } 14465 if (start <= -len) { 14466 start = -len; 14467 } 14468 if (end <= -len) { 14469 bEmptyS(string); 14470 return(NULL); 14471 } 14472 if (start < 0) { 14473 start = len + start; 14474 } 14475 if (end <= 0) { 14476 end = len + end; 14477 } 14478 if (end < start) { 14479 bEmptyS(string); 14480 return(NULL); 14481 } 14482 14483 if (start == end) { 14484 bEmptyS(string); 14485 } 14486 else { 14487 // start < end < len 14488 // copy range to a new string 14489 int64_t n; 14490 n = end - start; 14491 if (start) { 14492 memmove(string, string+start, (size_t)n); 14493 } 14494 string[n] = 0; 14495 } 14496 14497 return(string); 14498 } 14499 14500 /** 14501 * Crop String 14502 * return a new string with characters from start and end in string 14503 * and delete characters from start to end in the original string 14504 * negative indexes are allowed 14505 * 14506 * \param 14507 * string 14508 * \param 14509 * start index, must be in the list 14510 * \param 14511 * end index, must be in the list 14512 * \return 14513 * new sliced string (you must free the pointer with free) 14514 * empty list when start=end 14515 * unchanged when list is empty 14516 * unchanged when list is NULL or when start and end are not set correctly 14517 * NULL error 14518 */ 14519 char *cropS(char *string, int64_t start, int64_t end) { 14520 char *l = NULL; 14521 int64_t len; 14522 14523 // sanity checks 14524 if (!string) { 14525 return(NULL); 14526 } 14527 14528 len = (int64_t)strlen(string); 14529 14530 if (start > len) { 14531 return(NULL); 14532 } 14533 if (end > len) { 14534 end = len; 14535 } 14536 if (start <= -len) { 14537 start = -len; 14538 } 14539 if (end <= -len) { 14540 return(NULL); 14541 } 14542 if (start < 0) { 14543 start = len + start; 14544 } 14545 if (end <= 0) { 14546 end = len + end; 14547 } 14548 if (end < start) { 14549 return(NULL); 14550 } 14551 14552 if (start < end) { 14553 // start < end < len 14554 int64_t n; 14555 n = end - start; 14556 l = MALLOC((size_t)(n+1) * sizeof(char)); 14557 if (!l) { 14558 return(NULL); 14559 } 14560 pErrorNULL(strLCpy(l, (size_t)(n+1) * sizeof(char), string+start)); 14561 memmove(string+start, string+end, (size_t)(len-end+1)); 14562 } 14563 else { 14564 // start = end, return empty string 14565 l = strdup(""); 14566 } 14567 14568 return(l); 14569 } 14570 14571 /** 14572 * Crop String 14573 * return a new string with characters from start and end in string 14574 * and delete characters from start to end in the original string 14575 * negative indexes are allowed 14576 * 14577 * \param 14578 * string 14579 * \param 14580 * start index, must be in the list 14581 * \param 14582 * end index, must be in the list 14583 * \return 14584 * new sliced string (you must free the pointer with free) 14585 * empty list when start=end 14586 * unchanged when list is empty 14587 * unchanged when list is NULL or when start and end are not set correctly 14588 * NULL error 14589 */ 14590 char *iCropS(char **string, int64_t start, int64_t end) { 14591 char *l = NULL; 14592 int64_t len; 14593 14594 // sanity checks 14595 if (!string || !*string) { 14596 return(NULL); 14597 } 14598 14599 len = (int64_t)strlen(*string); 14600 14601 if (start > len) { 14602 return(NULL); 14603 } 14604 if (end > len) { 14605 end = len; 14606 } 14607 if (start <= -len) { 14608 start = -len; 14609 } 14610 if (end <= -len) { 14611 return(NULL); 14612 } 14613 if (start < 0) { 14614 start = len + start; 14615 } 14616 if (end <= 0) { 14617 end = len + end; 14618 } 14619 if (end < start) { 14620 return(NULL); 14621 } 14622 14623 if (start < end) { 14624 // start < end < len 14625 int64_t n; 14626 n = end - start; 14627 l = MALLOC((size_t)(n+1) * sizeof(char)); 14628 if (!l) { 14629 return(NULL); 14630 } 14631 pErrorNULL(strLCpy(l, (size_t)(n+1) * sizeof(char), *string+start)); 14632 memmove(*string+start, *string+end, (size_t)(len-end+1)); 14633 } 14634 else { 14635 // start = end, return empty string 14636 l = strdup(""); 14637 } 14638 14639 return(l); 14640 } 14641 14642 char cropElemS(char *string, int64_t index) { 14643 int64_t len; 14644 14645 if (!string) { 14646 return(0); 14647 } 14648 14649 len = (int64_t)strlen(string); 14650 if (index >= len) { 14651 return(0); 14652 } 14653 if (index < -len) { 14654 return(0); 14655 } 14656 if (index < 0) { 14657 index = len + index; 14658 } 14659 14660 char r = *(string+index); 14661 14662 if (index == len-1) { 14663 string[len-1] = 0; 14664 } 14665 else { 14666 memmove(string+index, string+index+1, (size_t)(len - index)); 14667 } 14668 14669 return(r); 14670 } 14671 14672 char iCropElemS(char **string, int64_t index) { 14673 14674 if (!string) { 14675 return(0); 14676 } 14677 14678 return(cropElemS(*string, index)); 14679 } 14680 14681 /** 14682 * insert string in string at index 14683 * 14684 * return new string with toInsert at index 14685 * negative indexes are allowed 14686 * index -1 is the end of the array and is equivalent to index len 14687 * 14688 * \param 14689 * string 14690 * \param 14691 * index in string 14692 * \param 14693 * toInsert string 14694 * \return 14695 * new string (you must free the pointer) 14696 * NULL when string is NULL or invalid index 14697 */ 14698 char *insertS(const char *string, int64_t index, const char *toInsert) { 14699 char *r = NULL; 14700 int64_t len; 14701 14702 // sanity checks 14703 if (!string) { 14704 if (index || !toInsert) { 14705 return(NULL); 14706 } 14707 return(strdup(toInsert)); 14708 } 14709 if (!toInsert || isEmptyS(toInsert)) { 14710 return(strdup(string)); 14711 } 14712 14713 len = (int64_t)strlen(string); 14714 if (!len && index == -1) { 14715 // empty string, index -1 is equal to 0 14716 index = 0; 14717 } 14718 bool neg = false; 14719 if (index < 0) { 14720 neg = true; 14721 } 14722 14723 if (index > len) { 14724 return(NULL); 14725 } 14726 if (neg) { 14727 index++; 14728 } 14729 if (index < -len) { 14730 return(NULL); 14731 } 14732 if (neg) { 14733 index = len + index; 14734 } 14735 14736 14737 if (index == 0) { 14738 // insert at beginning 14739 return(catS(toInsert, string)); 14740 } 14741 14742 char *s1 = sliceS(string, 0, index); 14743 char *s2 = sliceS(string, index, 0); 14744 r = catS(s1, toInsert, s2); 14745 freeManyS(s1,s2); 14746 14747 return(r); 14748 } 14749 14750 /** 14751 * insert string in string at index and free toInsert when successful 14752 * 14753 * return new string with toInsert at index 14754 * negative indexes are allowed 14755 * index -1 is the end of the array and is equivalent to index len 14756 * 14757 * \param 14758 * string 14759 * \param 14760 * index in string 14761 * \param 14762 * toInsert string 14763 * \return 14764 * new string (you must free the pointer) 14765 * NULL when string is NULL or invalid index 14766 */ 14767 char *insertNFreeS(const char *string, int64_t index, char *toInsert) { 14768 char *r = NULL; 14769 int64_t len; 14770 14771 // sanity checks 14772 if (!string) { 14773 if (index) { 14774 return(NULL); 14775 } 14776 if (!toInsert) { 14777 return(NULL); 14778 } 14779 r = strdup(toInsert); 14780 free(toInsert); 14781 return(r); 14782 } 14783 14784 len = (int64_t)strlen(string); 14785 if (!len && index == -1) { 14786 // empty string, index -1 is equal to 0 14787 index = 0; 14788 } 14789 bool neg = false; 14790 if (index < 0) { 14791 neg = true; 14792 } 14793 14794 if (index > len) { 14795 return(NULL); 14796 } 14797 if (neg) { 14798 index++; 14799 } 14800 if (index < -len) { 14801 return(NULL); 14802 } 14803 if (neg) { 14804 index = len + index; 14805 } 14806 14807 14808 if (!toInsert || isEmptyS(toInsert)) { 14809 free(toInsert); 14810 return(strdup(string)); 14811 } 14812 14813 if (index == 0) { 14814 // insert at beginning 14815 r = catS(toInsert, string); 14816 free(toInsert); 14817 return(r); 14818 } 14819 14820 char *s1 = sliceS(string, 0, index); 14821 char *s2 = sliceS(string, index, 0); 14822 r = catS(s1, toInsert, s2); 14823 freeManyS(s1,s2, toInsert); 14824 14825 return(r); 14826 } 14827 14828 /** 14829 * insert string in string at index 14830 * 14831 * return string with toInsert at index 14832 * negative indexes are allowed 14833 * index -1 is the end of the array and is equivalent to index len 14834 * 14835 * \param 14836 * string (this parameter is reallocated) 14837 * \param 14838 * index in string 14839 * \param 14840 * toInsert string 14841 * \return 14842 * modified string (you must free the pointer) 14843 * NULL unchanged string when string is NULL or invalid index 14844 */ 14845 char *iInsertS(char **string, int64_t index, const char *toInsert) { 14846 char *r = NULL; 14847 int64_t len; 14848 14849 // sanity checks 14850 if (!string) { 14851 return(NULL); 14852 } 14853 if (!*string) { 14854 if (index) { 14855 return(NULL); 14856 } 14857 r = strdup(toInsert); 14858 *string = r; 14859 return(r); 14860 } 14861 14862 len = (int64_t)strlen(*string); 14863 14864 if (!len && index == -1) { 14865 // empty string, index -1 is equal to 0 14866 index = 0; 14867 } 14868 bool neg = false; 14869 if (index < 0) { 14870 neg = true; 14871 } 14872 14873 if (index > len) { 14874 return(NULL); 14875 } 14876 if (neg) { 14877 index++; 14878 } 14879 if (index < -len) { 14880 return(NULL); 14881 } 14882 if (neg) { 14883 index = len + index; 14884 } 14885 14886 14887 if (!toInsert || isEmptyS(toInsert)) { 14888 return(*string); 14889 } 14890 14891 if (index == 0) { 14892 // insert at beginning 14893 r = catS(toInsert, *string); 14894 } 14895 else { 14896 char *s1 = sliceS(*string, 0, index); 14897 char *s2 = sliceS(*string, index, 0); 14898 r = catS(s1, toInsert, s2); 14899 freeManyS(s1,s2); 14900 } 14901 14902 free(*string); 14903 *string = r; 14904 return(r); 14905 } 14906 14907 /** 14908 * insert string in string at index and free toInsert 14909 * 14910 * return string with toInsert at index 14911 * negative indexes are allowed 14912 * index -1 is the end of the array and is equivalent to index len 14913 * 14914 * \param 14915 * string (this parameter is reallocated) 14916 * \param 14917 * index in string 14918 * \param 14919 * toInsert string 14920 * \return 14921 * modified string (you must free the pointer) 14922 * NULL unchanged string when string is NULL or invalid index 14923 */ 14924 char *iInsertNFreeS(char **string, int64_t index, char *toInsert) { 14925 char *r = NULL; 14926 int64_t len; 14927 14928 // sanity checks 14929 if (!string) { 14930 return(NULL); 14931 } 14932 if (!*string) { 14933 if (index) { 14934 return(NULL); 14935 } 14936 r = strdup(toInsert); 14937 free(toInsert); 14938 *string = r; 14939 return(r); 14940 } 14941 14942 len = (int64_t)strlen(*string); 14943 14944 if (!len && index == -1) { 14945 // empty string, index -1 is equal to 0 14946 index = 0; 14947 } 14948 bool neg = false; 14949 if (index < 0) { 14950 neg = true; 14951 } 14952 14953 if (index > len) { 14954 return(NULL); 14955 } 14956 if (neg) { 14957 index++; 14958 } 14959 if (index < -len) { 14960 return(NULL); 14961 } 14962 if (neg) { 14963 index = len + index; 14964 } 14965 14966 14967 if (!toInsert || isEmptyS(toInsert)) { 14968 free(toInsert); 14969 return(*string); 14970 } 14971 14972 if (index == 0) { 14973 // insert at beginning 14974 r = catS(toInsert, *string); 14975 } 14976 else { 14977 char *s1 = sliceS(*string, 0, index); 14978 char *s2 = sliceS(*string, index, 0); 14979 r = catS(s1, toInsert, s2); 14980 freeManyS(s1,s2); 14981 } 14982 free(toInsert); 14983 14984 free(*string); 14985 *string = r; 14986 return(r); 14987 } 14988 14989 /** 14990 * buffer insert string in string at index 14991 * 14992 * return string with toInsert at index 14993 * negative indexes are allowed 14994 * index -1 is the end of the array and is equivalent to index len 14995 * 14996 * \param 14997 * string 14998 * \param 14999 * index in string 15000 * \param 15001 * toInsert string 15002 * \return 15003 * modified string 15004 * NULL unchanged string when string is NULL or invalid index 15005 */ 15006 char *bInsertS(char *string, int64_t index, const char *toInsert) { 15007 int64_t len; 15008 15009 // sanity checks 15010 if (!string) { 15011 return(NULL); 15012 } 15013 len = (int64_t)strlen(string); 15014 15015 if (!len && index == -1) { 15016 // empty string, index -1 is equal to 0 15017 index = 0; 15018 } 15019 bool neg = false; 15020 if (index < 0) { 15021 neg = true; 15022 } 15023 15024 if (index > len) { 15025 return(NULL); 15026 } 15027 if (neg) { 15028 index++; 15029 } 15030 if (index < -len) { 15031 return(NULL); 15032 } 15033 if (neg) { 15034 index = len + index; 15035 } 15036 15037 15038 if (!toInsert || isEmptyS(toInsert)) { 15039 return(string); 15040 } 15041 15042 if (index == 0) { 15043 // insert at beginning 15044 char *s = alloca((size_t)(len+1));; 15045 strcpy(s, string); 15046 pErrorNULL(bCatS(string, toInsert, s)); 15047 } 15048 else { 15049 char *s1 = alloca((size_t)(index+1));; 15050 pErrorNULL(strLCpy(s1, (size_t)(index+1), string)); 15051 char *s2 = alloca((size_t)(len-index+1));; 15052 strcpy(s2, string+index); 15053 pErrorNULL(bCatS(string, s1, toInsert, s2)); 15054 } 15055 return(string); 15056 } 15057 15058 /** 15059 * buffer size insert string in string at index 15060 * 15061 * return string with toInsert at index 15062 * negative indexes are allowed 15063 * index -1 is the end of the array and is equivalent to index len 15064 * 15065 * \param 15066 * string 15067 * \param 15068 * index in string 15069 * \param 15070 * toInsert string 15071 * \return 15072 * modified string 15073 * NULL unchanged string when string is NULL or invalid index 15074 */ 15075 char *bLInsertS(char *string, size_t stringSize, int64_t index, const char *toInsert) { 15076 int64_t len; 15077 15078 // sanity checks 15079 if (!string) { 15080 return(NULL); 15081 } 15082 15083 if (!stringSize) { 15084 // string size is 0 - no change 15085 return(string); 15086 } 15087 15088 len = (int64_t)strlen(string); 15089 15090 if (!len && index == -1) { 15091 // empty string, index -1 is equal to 0 15092 index = 0; 15093 } 15094 bool neg = false; 15095 if (index < 0) { 15096 neg = true; 15097 } 15098 15099 if (index > len) { 15100 return(NULL); 15101 } 15102 if (neg) { 15103 index++; 15104 } 15105 if (index < -len) { 15106 return(NULL); 15107 } 15108 if (neg) { 15109 index = len + index; 15110 } 15111 15112 15113 if (!toInsert || isEmptyS(toInsert)) { 15114 return(string); 15115 } 15116 15117 if (index == 0) { 15118 // insert at beginning 15119 char *s = alloca((size_t)(len+1));; 15120 strcpy(s, string); 15121 pErrorNULL(bLCatS(string, stringSize, toInsert, s)); 15122 } 15123 else { 15124 char *s1 = alloca((size_t)(index+1));; 15125 pErrorNULL(strLCpy(s1, (size_t)(index+1), string)); 15126 char *s2 = alloca((size_t)(len-index+1));; 15127 strcpy(s2, string+index); 15128 pErrorNULL(bLCatS(string, stringSize, s1, toInsert, s2)); 15129 } 15130 return(string); 15131 } 15132 15133 /** 15134 * inject a char in string at index 15135 * 15136 * return new string with toInject at index 15137 * negative indexes are allowed 15138 * index -1 is the end of the array and is equivalent to index len 15139 * 15140 * \param 15141 * string 15142 * \param 15143 * index in string 15144 * \param 15145 * toInject char 15146 * \return 15147 * new string (you must free the pointer) 15148 * NULL when string is NULL or invalid index 15149 */ 15150 char *injectS(const char *string, int64_t index, char toInject) { 15151 char *r = NULL; 15152 int64_t len; 15153 15154 // sanity checks 15155 if (!string) { 15156 if (index) { 15157 return(NULL); 15158 } 15159 charToS(inject, toInject); 15160 return(strdup(inject)); 15161 } 15162 15163 len = (int64_t)strlen(string); 15164 15165 if (!len && index == -1) { 15166 // empty string, index -1 is equal to 0 15167 index = 0; 15168 } 15169 bool neg = false; 15170 if (index < 0) { 15171 neg = true; 15172 } 15173 15174 if (index > len) { 15175 return(NULL); 15176 } 15177 if (neg) { 15178 index++; 15179 } 15180 if (index < -len) { 15181 return(NULL); 15182 } 15183 if (neg) { 15184 index = len + index; 15185 } 15186 15187 15188 charToS(inject, toInject); 15189 15190 if (index == 0) { 15191 // inject at beginning 15192 return(catS(inject, string)); 15193 } 15194 15195 char *s1 = sliceS(string, 0, index); 15196 char *s2 = sliceS(string, index, 0); 15197 r = catS(s1, inject, s2); 15198 freeManyS(s1,s2); 15199 15200 return(r); 15201 } 15202 15203 /** 15204 * inject a char in string at index 15205 * 15206 * return string with toInject at index 15207 * negative indexes are allowed 15208 * index -1 is the end of the array and is equivalent to index len 15209 * 15210 * \param 15211 * string (this parameter is reallocated) 15212 * \param 15213 * index in string 15214 * \param 15215 * toInject char 15216 * \return 15217 * modified string (you must free the pointer) 15218 * NULL unchanged string when string is NULL or invalid index 15219 */ 15220 char *iInjectS(char **string, int64_t index, char toInject) { 15221 char *r = NULL; 15222 int64_t len; 15223 15224 // sanity checks 15225 if (!string) { 15226 return(NULL); 15227 } 15228 if (!*string) { 15229 if (index) { 15230 return(NULL); 15231 } 15232 charToS(inject, toInject); 15233 *string = strdup(inject); 15234 return(*string); 15235 } 15236 15237 len = (int64_t)strlen(*string); 15238 15239 if (!len && index == -1) { 15240 // empty string, index -1 is equal to 0 15241 index = 0; 15242 } 15243 bool neg = false; 15244 if (index < 0) { 15245 neg = true; 15246 } 15247 15248 if (index > len) { 15249 return(NULL); 15250 } 15251 if (neg) { 15252 index++; 15253 } 15254 if (index < -len) { 15255 return(NULL); 15256 } 15257 if (neg) { 15258 index = len + index; 15259 } 15260 15261 15262 charToS(inject, toInject); 15263 15264 if (index == 0) { 15265 // inject at beginning 15266 r = catS(inject, *string); 15267 } 15268 else { 15269 char *s1 = sliceS(*string, 0, index); 15270 char *s2 = sliceS(*string, index, 0); 15271 r = catS(s1, inject, s2); 15272 freeManyS(s1,s2); 15273 } 15274 15275 free(*string); 15276 *string = r; 15277 return(r); 15278 } 15279 15280 /** 15281 * buffer inject a char in string at index 15282 * 15283 * return string with toInject at index 15284 * negative indexes are allowed 15285 * index -1 is the end of the array and is equivalent to index len 15286 * 15287 * \param 15288 * string 15289 * \param 15290 * index in string 15291 * \param 15292 * toInject char 15293 * \return 15294 * modified string 15295 * NULL unchanged string when string is NULL or invalid index 15296 */ 15297 char *bInjectS(char *string, int64_t index, char toInject) { 15298 int64_t len; 15299 15300 // sanity checks 15301 if (!string) { 15302 return(NULL); 15303 } 15304 15305 len = (int64_t)strlen(string); 15306 15307 if (!len && index == -1) { 15308 // empty string, index -1 is equal to 0 15309 index = 0; 15310 } 15311 bool neg = false; 15312 if (index < 0) { 15313 neg = true; 15314 } 15315 15316 if (index > len) { 15317 return(NULL); 15318 } 15319 if (neg) { 15320 index++; 15321 } 15322 if (index < -len) { 15323 return(NULL); 15324 } 15325 if (neg) { 15326 index = len + index; 15327 } 15328 15329 15330 charToS(inject, toInject); 15331 15332 if (index == 0) { 15333 // inject at beginning 15334 pErrorNULL(bPrependS(string, inject)); 15335 } 15336 else { 15337 char *s1 = alloca((size_t)(index+1));; 15338 pErrorNULL(strLCpy(s1, (size_t)(index+1), string)); 15339 char *s2 = alloca((size_t)(len-index+1));; 15340 strcpy(s2, string+index); 15341 pErrorNULL(bCatS(string, s1, inject, s2)); 15342 } 15343 return(string); 15344 } 15345 15346 /** 15347 * buffer size inject a char in string at index 15348 * 15349 * return string with toInject at index 15350 * negative indexes are allowed 15351 * index -1 is the end of the array and is equivalent to index len 15352 * 15353 * \param 15354 * string 15355 * \param 15356 * index in string 15357 * \param 15358 * toInject char 15359 * \return 15360 * modified string 15361 * NULL unchanged string when string is NULL or invalid index 15362 */ 15363 char *bLInjectS(char *string, size_t stringSize, int64_t index, char toInject) { 15364 int64_t len; 15365 15366 // sanity checks 15367 if (!string) { 15368 return(NULL); 15369 } 15370 15371 if (!stringSize) { 15372 // size 0 - no change 15373 return(string); 15374 } 15375 15376 len = (int64_t)strlen(string); 15377 15378 if (!len && index == -1) { 15379 // empty string, index -1 is equal to 0 15380 index = 0; 15381 } 15382 bool neg = false; 15383 if (index < 0) { 15384 neg = true; 15385 } 15386 15387 if (index > len) { 15388 return(NULL); 15389 } 15390 if (neg) { 15391 index++; 15392 } 15393 if (index < -len) { 15394 return(NULL); 15395 } 15396 if (neg) { 15397 index = len + index; 15398 } 15399 15400 15401 charToS(inject, toInject); 15402 15403 if (index == 0) { 15404 // inject at beginning 15405 pErrorNULL(bLPrependS(string, stringSize, inject)); 15406 } 15407 else { 15408 char *s1 = alloca((size_t)(index+1));; 15409 pErrorNULL(strLCpy(s1, (size_t)(index+1), string)); 15410 char *s2 = alloca((size_t)(len-index+1));; 15411 strcpy(s2, string+index); 15412 pErrorNULL(bLCatS(string, stringSize, s1, inject, s2)); 15413 } 15414 return(string); 15415 } 15416 15417 /** 15418 * delete string 15419 * 15420 * return new string without the string between start and end 15421 * negative indexes are allowed 15422 * 15423 * \param 15424 * string to delete 15425 * \param 15426 * start: start index, must be in the string 15427 * \param 15428 * end: end index, must be in the string after start 15429 * \return 15430 * new sliced string (you must free the pointer) 15431 * new identical string when start=end or when start and end are not set correctly 15432 * NULL when input string is NULL or when malloc failed or when end is under start 15433 */ 15434 char *delS(const char *string, int64_t start, int64_t end) { 15435 char *s = NULL; 15436 int64_t len; 15437 15438 // sanity checks 15439 if (!string) { 15440 return(NULL); 15441 } 15442 15443 len = (int64_t)strlen(string); 15444 15445 if (start >= len) { 15446 start = len; 15447 } 15448 if (end > len) { 15449 end = len; 15450 } 15451 if (start <= -len) { 15452 start = -len; 15453 } 15454 if (end <= -len) { 15455 end = -len; 15456 } 15457 if (start < 0) { 15458 start = len + start; 15459 } 15460 if (end <= 0) { 15461 end = len + end; 15462 } 15463 if (end < start) { 15464 return(NULL); 15465 } 15466 15467 if (start == end) { 15468 return(strdup(string)); 15469 } 15470 15471 // start < end < len 15472 // copy range to a new string 15473 int64_t n; 15474 n = end - start; 15475 s = MALLOC((size_t)(len-n+1)); 15476 if (!s) { 15477 return(NULL);//LCOV_EXCL_LINE 15478 } 15479 strncpy(s, string, (size_t)start); 15480 strncpy(s+start, string+start+n, (size_t)(len-n-start)); 15481 s[len-n] = 0; 15482 15483 return(s); 15484 } 15485 15486 /** 15487 * delete string 15488 * 15489 * return string without the string between start and end 15490 * negative indexes are allowed 15491 * 15492 * \param 15493 * string to delete (this parameter is reallocated) 15494 * \param 15495 * start: start index, must be in the string 15496 * \param 15497 * end: end index, must be in the string after start 15498 * \return 15499 * sliced string (you must free the pointer) 15500 * unchanged string when start=end 15501 * NULL when start and end are not set correctly 15502 * or when input string is NULL or when malloc failed or when end is under start 15503 */ 15504 char *iDelS(char **string, int64_t start, int64_t end) { 15505 char *s = NULL; 15506 int64_t len; 15507 15508 // sanity checks 15509 if (!string || !*string) { 15510 return(NULL); 15511 } 15512 15513 len = (int64_t)strlen(*string); 15514 15515 if (start >= len) { 15516 start = len; 15517 } 15518 if (end > len) { 15519 end = len; 15520 } 15521 if (start <= -len) { 15522 start = -len; 15523 } 15524 if (end <= -len) { 15525 end = -len; 15526 } 15527 if (start < 0) { 15528 start = len + start; 15529 } 15530 if (end <= 0) { 15531 end = len + end; 15532 } 15533 if (end < start) { 15534 return(NULL); 15535 } 15536 15537 if (start == end) { 15538 return(*string); 15539 } 15540 15541 // start < end < len 15542 // copy range to a new string 15543 int64_t n; 15544 n = end - start; 15545 s = MALLOC((size_t)(len-n+1)); 15546 if (!s) { 15547 return(NULL); 15548 } 15549 strncpy(s, *string, (size_t)start); 15550 strncpy(s+start, (*string)+start+n, (size_t)(len-n-start)); 15551 s[len-n] = 0; 15552 15553 free(*string); 15554 *string = s; 15555 return(s); 15556 } 15557 15558 /** 15559 * buffer delete string 15560 * 15561 * return string without the string between start and end 15562 * negative indexes are allowed 15563 * 15564 * \param 15565 * string to delete 15566 * \param 15567 * start: start index, must be in the string 15568 * \param 15569 * end: end index, must be in the string after start 15570 * \return 15571 * sliced string 15572 * unchanged string when start=end 15573 * NULL when start and end are not set correctly 15574 * or when input string is NULL or when malloc failed or when end is under start 15575 */ 15576 char *bDelS(char *string, int64_t start, int64_t end) { 15577 int64_t len; 15578 15579 // sanity checks 15580 if (!string) { 15581 return(NULL); 15582 } 15583 15584 len = (int64_t)strlen(string); 15585 15586 if (start >= len) { 15587 start = len; 15588 } 15589 if (end > len) { 15590 end = len; 15591 } 15592 if (start <= -len) { 15593 start = -len; 15594 } 15595 if (end <= -len) { 15596 end = -len; 15597 } 15598 if (start < 0) { 15599 start = len + start; 15600 } 15601 if (end <= 0) { 15602 end = len + end; 15603 } 15604 if (end < start) { 15605 return(NULL); 15606 } 15607 15608 if (start == end) { 15609 return(string); 15610 } 15611 15612 // start < end < len 15613 // copy range to a new string 15614 int64_t n; 15615 n = end - start; 15616 memmove(string+start, string+start+n, (size_t)(len-n-start)); 15617 string[len-n] = 0; 15618 15619 return(string); 15620 } 15621 15622 /** 15623 * buffer size delete string 15624 * 15625 * return string without the string between start and end 15626 * negative indexes are allowed 15627 * 15628 * \param 15629 * string to delete 15630 * \param 15631 * stringSize string buffer size 15632 * \param 15633 * start: start index, must be in the string 15634 * \param 15635 * end: end index, must be in the string after start 15636 * \return 15637 * sliced string 15638 * unchanged string when start=end 15639 * NULL when start and end are not set correctly 15640 * or when input string is NULL or when malloc failed or when end is under start 15641 */ 15642 char *bLDelS(char *string, size_t stringSize, int64_t start, int64_t end) { 15643 int64_t len; 15644 15645 // sanity checks 15646 if (!string || !stringSize) { 15647 return(NULL); 15648 } 15649 15650 len = (int64_t)strlen(string); 15651 if ((size_t)len+1 > stringSize) { 15652 len = (int64_t)(stringSize - 1); 15653 } 15654 15655 // compute string length without NUL 15656 if (start >= (int64_t)len) { 15657 start = len; 15658 } 15659 if (end > (int64_t)len) { 15660 end = len; 15661 } 15662 if (start <= -(int64_t)len) { 15663 start = -len; 15664 } 15665 if (end <= -(int64_t)len) { 15666 end = -len; 15667 } 15668 if (start < 0) { 15669 start = len + start; 15670 } 15671 if (end <= 0) { 15672 end = len + end; 15673 } 15674 if (end < start) { 15675 return(NULL); 15676 } 15677 15678 if (start == end) { 15679 return(string); 15680 } 15681 15682 // start < end < len 15683 // copy range to a new string 15684 int64_t n; 15685 n = end - start; 15686 memmove(string+start, string+start+n, (size_t)(len-n-start)); 15687 string[len-n] = 0; 15688 15689 return(string); 15690 } 15691 15692 /** 15693 * delete element/character string 15694 * 15695 * return new string without the character at given index 15696 * negative indexes are allowed 15697 * 15698 * \param 15699 * string to delete 15700 * \param 15701 * index: must be in the string, -1 is the last character in the string 15702 * \return 15703 * new string (you must free the pointer) 15704 * NULL when input string is NULL or when malloc failed 15705 */ 15706 char *delElemS(const char *string, int64_t index) { 15707 char *s = NULL; 15708 int64_t len; 15709 15710 if (!string) { 15711 return(NULL); 15712 } 15713 15714 len = (int64_t)strlen(string); 15715 if (index >= len) { 15716 return(NULL); 15717 } 15718 if (index < -len) { 15719 return(NULL); 15720 } 15721 if (index < 0) { 15722 index = len + index; 15723 } 15724 15725 s = MALLOC((size_t)(len-1+1)); 15726 if (!s) { 15727 return(NULL);//LCOV_EXCL_LINE 15728 } 15729 strncpy(s, string, (size_t)index); 15730 strncpy(s+index, string+index+1, (size_t)(len-1-index)); 15731 s[len-1] = 0; 15732 return(s); 15733 } 15734 15735 /** 15736 * delete element/character string 15737 * 15738 * return string without the character at given index 15739 * negative indexes are allowed 15740 * 15741 * \param 15742 * string to delete (this parameter is reallocated) 15743 * \param 15744 * index: must be in the string, -1 is the last character in the string 15745 * \return 15746 * new string (you must free the pointer) 15747 * NULL when input string is NULL or when malloc failed 15748 */ 15749 char *iDelElemS(char **string, int64_t index) { 15750 char *s = NULL; 15751 int64_t len; 15752 15753 // sanity checks 15754 if (!string || !*string) { 15755 return(NULL); 15756 } 15757 15758 len = (int64_t)strlen(*string); 15759 if (index >= len) { 15760 return(NULL); 15761 } 15762 if (index < -len) { 15763 return(NULL); 15764 } 15765 if (index < 0) { 15766 index = len + index; 15767 } 15768 15769 s = MALLOC((size_t)(len-1+1)); 15770 if (!s) { 15771 return(NULL);//LCOV_EXCL_LINE 15772 } 15773 strncpy(s, *string, (size_t)index); 15774 strncpy(s+index, *string+index+1, (size_t)(len-1-index)); 15775 s[len-1] = 0; 15776 15777 free(*string); 15778 *string = s; 15779 return(s); 15780 } 15781 15782 /** 15783 * buffer delete element/character string 15784 * 15785 * return string without the character at given index 15786 * negative indexes are allowed 15787 * 15788 * \param 15789 * string to delete 15790 * \param 15791 * index: must be in the string, -1 is the last character in the string 15792 * \return 15793 * string with one less character 15794 * NULL when input string is NULL or when malloc failed 15795 */ 15796 char *bDelElemS(char *string, int64_t index) { 15797 int64_t len; 15798 15799 // sanity checks 15800 if (!string) { 15801 return(NULL); 15802 } 15803 15804 len = (int64_t)strlen(string); 15805 if (index >= len) { 15806 return(NULL); 15807 } 15808 if (index < -len) { 15809 return(NULL); 15810 } 15811 if (index < 0) { 15812 index = len + index; 15813 } 15814 15815 memmove(string+index, string+index+1, (size_t)(len-1-index)); 15816 string[len-1] = 0; 15817 15818 return(string); 15819 } 15820 15821 /** 15822 * buffer size delete element/character string 15823 * 15824 * return string without the character at given index 15825 * negative indexes are allowed 15826 * 15827 * \param 15828 * string to delete 15829 * \param 15830 * stringSize string buffer size 15831 * \param 15832 * index: must be in the string, -1 is the last character in the string 15833 * \return 15834 * string with one less character 15835 * NULL when input string is NULL or when malloc failed 15836 */ 15837 char *bLDelElemS(char *string, size_t stringSize, int64_t index) { 15838 int64_t len; 15839 15840 // sanity checks 15841 if (!string || !stringSize) { 15842 return(NULL); 15843 } 15844 15845 len = (int64_t)strlen(string); 15846 if ((size_t)len+1 > stringSize) { 15847 len = (int64_t)(stringSize - 1); 15848 } 15849 15850 // compute string length without NUL 15851 if (index >= (int64_t)len) { 15852 return(NULL); 15853 } 15854 if (index < -(int64_t)len) { 15855 return(NULL); 15856 } 15857 if (index < 0) { 15858 index = (int64_t)len + index; 15859 } 15860 15861 memmove(string+index, string+index+1, (size_t)(len-1-index)); 15862 string[len-1] = 0; 15863 15864 return(string); 15865 } 15866 15867 /** 15868 * find String 15869 * 15870 * \param 15871 * string 15872 * \param 15873 * needle: string to find 15874 * \return 15875 * pointer to first occurence of needle in string 15876 * NULL when needle is not found 15877 * NULL when string or needle are NULL 15878 */ 15879 char *findS(const char *string, const char *needle) { 15880 15881 // sanity checks 15882 if (!string || !needle) { 15883 return(NULL); 15884 } 15885 return(strstr(string, needle)); 15886 } 15887 15888 char *findCharS(const char *string, char c) { 15889 15890 // sanity checks 15891 if (!string) { 15892 return(NULL); 15893 } 15894 return(strchr(string, c)); 15895 } 15896 15897 /** 15898 * indexOf String 15899 * relative to start 15900 * 15901 * \param 15902 * string 15903 * \param 15904 * needle: string to find 15905 * \return 15906 * index of first occurence of needle in string 15907 * -1 when needle is not found 15908 * -1 when string or needle are NULL 15909 */ 15910 ssize_t indexOfS(const char *string, const char *needle) { 15911 15912 char *r = findS(string, needle); 15913 if (!r) { 15914 return(-1); 15915 } 15916 return((ssize_t)(r - string)); 15917 } 15918 15919 ssize_t indexOfCharS(const char *string, char c) { 15920 15921 char *r = findCharS(string, c); 15922 if (!r) { 15923 return(-1); 15924 } 15925 return((ssize_t)(r - string)); 15926 } 15927 15928 /** 15929 * has String 15930 * 15931 * \param 15932 * string 15933 * \param 15934 * needle: string to find 15935 * \return 15936 * true when needle is in string 15937 * false when needle is not found 15938 * false when string or needle are NULL 15939 */ 15940 bool hasS(const char *string, const char *needle) { 15941 15942 // sanity checks 15943 if (!string || !needle) { 15944 return(false); 15945 } 15946 15947 if (!strstr(string, needle)) { 15948 return(false); 15949 } 15950 return(true); 15951 } 15952 15953 bool hasCharS(const char *string, char c) { 15954 15955 // sanity checks 15956 if (!string) { 15957 return(false); 15958 } 15959 if (!strchr(string, c)) { 15960 return(false); 15961 } 15962 return(true); 15963 } 15964 15965 /** 15966 * ignore case Find String 15967 * 15968 * \param 15969 * string 15970 * \param 15971 * needle: string to find 15972 * \return 15973 * pointer to first occurence of needle in string 15974 * NULL when needle is not found 15975 * NULL when string or needle are NULL 15976 */ 15977 char *icFindS(const char *string, const char *needle) { 15978 15979 // sanity checks 15980 if (!string || !needle) { 15981 return(NULL); 15982 } 15983 return(strcasestr(string, needle)); 15984 } 15985 15986 char *icFindCharS(const char *string, char c) { 15987 15988 // sanity checks 15989 if (!string) { 15990 return(NULL); 15991 } 15992 if (c == 0) { 15993 // include terminating '\0' in comparison 15994 // like findCharS 15995 return(strchr(string, c)); 15996 } 15997 charToS(s, c); 15998 return(icFindS(string, s)); 15999 } 16000 16001 /** 16002 * ignore case indexOf String 16003 * relative to start 16004 * 16005 * \param 16006 * string 16007 * \param 16008 * needle: string to find 16009 * \return 16010 * index of first occurence of needle in string 16011 * -1 when needle is not found 16012 * -1 when string or needle are NULL 16013 */ 16014 ssize_t icIndexOfS(const char *string, const char *needle) { 16015 16016 char *r = icFindS(string, needle); 16017 if (!r) { 16018 return(-1); 16019 } 16020 return((ssize_t)(r - string)); 16021 } 16022 16023 ssize_t icIndexOfCharS(const char *string, char c) { 16024 16025 char *r = icFindCharS(string, c); 16026 if (!r) { 16027 return(-1); 16028 } 16029 return((ssize_t)(r - string)); 16030 } 16031 16032 /** 16033 * ignore case has String 16034 * 16035 * \param 16036 * string 16037 * \param 16038 * needle: string to find 16039 * \return 16040 * true when needle is in string 16041 * false when needle is not found 16042 * false when string or needle are NULL 16043 */ 16044 bool icHasS(const char *string, const char *needle) { 16045 16046 // sanity checks 16047 if (!string || !needle) { 16048 return(false); 16049 } 16050 16051 if (!strcasestr(string, needle)) { 16052 return(false); 16053 } 16054 return(true); 16055 } 16056 16057 bool icHasCharS(const char *string, char c) { 16058 16059 // sanity checks 16060 if (!string) { 16061 return(false); 16062 } 16063 charToS(s,c); 16064 return(icHasS(string, s)); 16065 } 16066 16067 /** 16068 * token in String 16069 * 16070 * parse string into a sequence of tokens delimited by the ENTIRE DELIM string 16071 * work like strtok_r from c stdlib 16072 * (for strtok_r, when delim has multiple characters, each character is a delimiter) 16073 * 16074 * on first call s is the string to parse, optionally initialize *saveptr to NULL 16075 * on next calls, s should be NULL 16076 * 16077 * \param 16078 * s string to parse, the s string is modified 16079 * \param 16080 * delim string 16081 * \return 16082 * token 16083 * *saveptr is set to NULL when the last token is found 16084 */ 16085 char *tokS(char *s, const char *delim, char **saveptr) { 16086 char *r = NULL; 16087 16088 // sanity checks 16089 if (!delim) { 16090 return(NULL); 16091 } 16092 if (s) { 16093 *saveptr = s; 16094 } 16095 else if (!*saveptr) { 16096 return(NULL); 16097 } 16098 r = *saveptr; 16099 *saveptr = findS(*saveptr, delim); 16100 if (*saveptr) { 16101 // delimiter is found 16102 **saveptr = 0; 16103 // shift start of working string after the delimiter 16104 *saveptr += strlen(delim); 16105 } 16106 return(r); 16107 } 16108 16109 /** 16110 * ignore case token in String 16111 * 16112 * parse string into a sequence of tokens delimited by the ENTIRE DELIM string 16113 * work like strtok_r from c stdlib 16114 * (for strtok_r, when delim has multiple characters, each character is a delimiter) 16115 * 16116 * on first call s is the string to parse, optionally initialize *saveptr to NULL 16117 * on next calls, s should be NULL 16118 * 16119 * \param 16120 * s string to parse, the s string is modified 16121 * \param 16122 * delim string 16123 * \return 16124 * token 16125 * *saveptr is set to NULL when the last token is found 16126 */ 16127 char *icTokS(char *s, const char *delim, char **saveptr) { 16128 char *r = NULL; 16129 16130 // sanity checks 16131 if (!delim) { 16132 return(NULL); 16133 } 16134 if (s) { 16135 *saveptr = s; 16136 } 16137 else if (!*saveptr) { 16138 return(NULL); 16139 } 16140 r = *saveptr; 16141 *saveptr = icFindS(*saveptr, delim); 16142 if (*saveptr) { 16143 // delimiter is found 16144 **saveptr = 0; 16145 // shift start of working string after the delimiter 16146 *saveptr += strlen(delim); 16147 } 16148 return(r); 16149 } 16150 16151 16152 16153 16154 // 16155 // UTF-8 string functions 16156 // 16157 // UNICODE v10.0 16158 // 16159 16160 /** 16161 * character length of UTF-8 string 16162 * 16163 * string is not checked for validity 16164 */ 16165 size_t lenUTF8(const char *s) { 16166 size_t r = 0;; 16167 16168 if (!s) { 16169 return(0); 16170 } 16171 while (*s) { 16172 r += (*s++ & 0xC0) != 0x80; 16173 } 16174 return(r); 16175 } 16176 16177 /** 16178 * buffer character length of UTF-8 string 16179 * 16180 * string is not checked for validity 16181 * 16182 * bLLenUTF8 checks at most maxSize bytes 16183 */ 16184 size_t bLLenUTF8(const char *s, size_t maxSize) { 16185 size_t r = 0;; 16186 16187 if (!s) { 16188 return(0); 16189 } 16190 16191 const char *t = s; 16192 while (*s && ((size_t)(s-t)+1 < maxSize)) { 16193 r += (*s++ & 0xC0) != 0x80; 16194 } 16195 return(r); 16196 } 16197 16198 16199 // https://stackoverflow.com/questions/1031645/how-to-detect-utf-8-in-plain-c/43338168#43338168 16200 // christoph's answer 16201 16202 /** 16203 * is UTF-8 string 16204 * 16205 * check if string is a valid UTF-8 string 16206 * 16207 * \param 16208 * string UTF-8 encoded string 16209 * \return 16210 * true string is valid UTF-8 16211 * false string is invalid UTF-8 16212 */ 16213 bool isUTF8(const char * string) { 16214 16215 if (!string) { 16216 return(false); 16217 } 16218 16219 const unsigned char * bytes = (const unsigned char *)string; 16220 while (*bytes) { 16221 // ASCII 16222 // use bytes[0] <= 0x7F to allow ASCII control characters 16223 if (bytes[0] == 0x09 || bytes[0] == 0x0A || bytes[0] == 0x0D || (0x20 <= bytes[0] && bytes[0] <= 0x7E)) { 16224 bytes += 1; 16225 continue; 16226 } 16227 16228 // non-overlong 2-byte 16229 if ((0xC2 <= bytes[0] && bytes[0] <= 0xDF) && (0x80 <= bytes[1] && bytes[1] <= 0xBF)) { 16230 bytes += 2; 16231 continue; 16232 } 16233 16234 // excluding overlongs 16235 // straight 3-byte 16236 // excluding surrogates 16237 if ((bytes[0] == 0xE0 && (0xA0 <= bytes[1] && bytes[1] <= 0xBF) && (0x80 <= bytes[2] && bytes[2] <= 0xBF)) || (((0xE1 <= bytes[0] && bytes[0] <= 0xEC) || bytes[0] == 0xEE || bytes[0] == 0xEF) && (0x80 <= bytes[1] && bytes[1] <= 0xBF) && (0x80 <= bytes[2] && bytes[2] <= 0xBF)) || (bytes[0] == 0xED && (0x80 <= bytes[1] && bytes[1] <= 0x9F) && (0x80 <= bytes[2] && bytes[2] <= 0xBF))) { 16238 bytes += 3; 16239 continue; 16240 } 16241 16242 // planes 1-3 16243 // planes 4-15 16244 // plane 16 16245 if ((bytes[0] == 0xF0 && (0x90 <= bytes[1] && bytes[1] <= 0xBF) && (0x80 <= bytes[2] && bytes[2] <= 0xBF) && (0x80 <= bytes[3] && bytes[3] <= 0xBF)) || ((0xF1 <= bytes[0] && bytes[0] <= 0xF3) && (0x80 <= bytes[1] && bytes[1] <= 0xBF) && (0x80 <= bytes[2] && bytes[2] <= 0xBF) && (0x80 <= bytes[3] && bytes[3] <= 0xBF)) || (bytes[0] == 0xF4 && (0x80 <= bytes[1] && bytes[1] <= 0x8F) && (0x80 <= bytes[2] && bytes[2] <= 0xBF) && (0x80 <= bytes[3] && bytes[3] <= 0xBF))) { 16246 bytes += 4; 16247 continue; 16248 } 16249 16250 return(false); 16251 } 16252 16253 return(true); 16254 } 16255 16256 /** 16257 * buffer length is UTF-8 string 16258 * 16259 * check if string is a valid UTF-8 string 16260 * 16261 * \param 16262 * string UTF-8 encoded string 16263 * \return 16264 * true string is valid UTF-8 16265 * false string is invalid UTF-8 16266 */ 16267 bool bLIsUTF8(const char * string, size_t stringSize) { 16268 16269 if (!string || !stringSize) { 16270 return(false); 16271 } 16272 16273 const unsigned char * bytes = (const unsigned char *)string; 16274 while (*bytes) { 16275 16276 // ASCII 16277 // use bytes[0] <= 0x7F to allow ASCII control characters 16278 if (bytes[0] == 0x09 || bytes[0] == 0x0A || bytes[0] == 0x0D || (0x20 <= bytes[0] && bytes[0] <= 0x7E)) { 16279 bytes += 1; 16280 if ((size_t)(bytes - (const unsigned char *)string)+1 > stringSize) { 16281 return(false); 16282 } 16283 continue; 16284 } 16285 16286 // non-overlong 2-byte 16287 if ((0xC2 <= bytes[0] && bytes[0] <= 0xDF) && (0x80 <= bytes[1] && bytes[1] <= 0xBF)) { 16288 bytes += 2; 16289 if ((size_t)(bytes - (const unsigned char *)string)+1 > stringSize) { 16290 return(false); 16291 } 16292 continue; 16293 } 16294 16295 // excluding overlongs 16296 // straight 3-byte 16297 // excluding surrogates 16298 if ((bytes[0] == 0xE0 && (0xA0 <= bytes[1] && bytes[1] <= 0xBF) && (0x80 <= bytes[2] && bytes[2] <= 0xBF)) || (((0xE1 <= bytes[0] && bytes[0] <= 0xEC) || bytes[0] == 0xEE || bytes[0] == 0xEF) && (0x80 <= bytes[1] && bytes[1] <= 0xBF) && (0x80 <= bytes[2] && bytes[2] <= 0xBF)) || (bytes[0] == 0xED && (0x80 <= bytes[1] && bytes[1] <= 0x9F) && (0x80 <= bytes[2] && bytes[2] <= 0xBF))) { 16299 bytes += 3; 16300 if ((size_t)(bytes - (const unsigned char *)string)+1 > stringSize) { 16301 return(false); 16302 } 16303 continue; 16304 } 16305 16306 // planes 1-3 16307 // planes 4-15 16308 // plane 16 16309 if ((bytes[0] == 0xF0 && (0x90 <= bytes[1] && bytes[1] <= 0xBF) && (0x80 <= bytes[2] && bytes[2] <= 0xBF) && (0x80 <= bytes[3] && bytes[3] <= 0xBF)) || ((0xF1 <= bytes[0] && bytes[0] <= 0xF3) && (0x80 <= bytes[1] && bytes[1] <= 0xBF) && (0x80 <= bytes[2] && bytes[2] <= 0xBF) && (0x80 <= bytes[3] && bytes[3] <= 0xBF)) || (bytes[0] == 0xF4 && (0x80 <= bytes[1] && bytes[1] <= 0x8F) && (0x80 <= bytes[2] && bytes[2] <= 0xBF) && (0x80 <= bytes[3] && bytes[3] <= 0xBF))) { 16310 bytes += 4; 16311 if ((size_t)(bytes - (const unsigned char *)string)+1 > stringSize) { 16312 return(false); 16313 } 16314 continue; 16315 } 16316 16317 return(false); 16318 } 16319 16320 return(true); 16321 } 16322 16323 /** 16324 * is code point UTF8 encoded string 16325 * 16326 * Check if a UTF8 code point is valid 16327 * 16328 * This function checks only the first code point 16329 * 16330 * \param 16331 * bytes string, NUL-terminated or not, bytes can be a pointer inside a UTF8 encoded string 16332 * \return 16333 * true bytes is a valid UTF-8 code point 16334 * false bytes is invalid code point 16335 */ 16336 bool isCodeUTF8(const char *code) { 16337 16338 if (!code) { 16339 return(false); 16340 } 16341 const unsigned char * bytes = (const unsigned char *)code; 16342 // ASCII 16343 // use bytes[0] <= 0x7F to allow ASCII control characters 16344 if (bytes[0] == 0x09 || bytes[0] == 0x0A || bytes[0] == 0x0D || (0x20 <= bytes[0] && bytes[0] <= 0x7E)) { 16345 return(true); 16346 } 16347 16348 // non-overlong 2-byte 16349 if ((0xC2 <= bytes[0] && bytes[0] <= 0xDF) && (0x80 <= bytes[1] && bytes[1] <= 0xBF)) { 16350 return(true); 16351 } 16352 16353 // excluding overlongs 16354 // straight 3-byte 16355 // excluding surrogates 16356 if ((bytes[0] == 0xE0 && (0xA0 <= bytes[1] && bytes[1] <= 0xBF) && (0x80 <= bytes[2] && bytes[2] <= 0xBF)) || (((0xE1 <= bytes[0] && bytes[0] <= 0xEC) || bytes[0] == 0xEE || bytes[0] == 0xEF) && (0x80 <= bytes[1] && bytes[1] <= 0xBF) && (0x80 <= bytes[2] && bytes[2] <= 0xBF)) || (bytes[0] == 0xED && (0x80 <= bytes[1] && bytes[1] <= 0x9F) && (0x80 <= bytes[2] && bytes[2] <= 0xBF))) { 16357 return(true); 16358 } 16359 16360 // planes 1-3 16361 // planes 4-15 16362 // plane 16 16363 if ((bytes[0] == 0xF0 && (0x90 <= bytes[1] && bytes[1] <= 0xBF) && (0x80 <= bytes[2] && bytes[2] <= 0xBF) && (0x80 <= bytes[3] && bytes[3] <= 0xBF)) || ((0xF1 <= bytes[0] && bytes[0] <= 0xF3) && (0x80 <= bytes[1] && bytes[1] <= 0xBF) && (0x80 <= bytes[2] && bytes[2] <= 0xBF) && (0x80 <= bytes[3] && bytes[3] <= 0xBF)) || (bytes[0] == 0xF4 && (0x80 <= bytes[1] && bytes[1] <= 0x8F) && (0x80 <= bytes[2] && bytes[2] <= 0xBF) && (0x80 <= bytes[3] && bytes[3] <= 0xBF))) { 16364 return(true); 16365 } 16366 16367 return(false); 16368 } 16369 16370 // INCLUDE libsheepyC.c 16371 /** maximum rune value */ 16372 #define runeMax 0x10FFFF 16373 16374 /** code point length, 0 when invalid code point, x is first byte in code point */ 16375 #define UTFSEQ(x) ((((x) & 0x80) == 0x00) ? 1 /* 0xxxxxxx */ \ 16376 : (((x) & 0xC0) == 0x80) ? 0 /* 10xxxxxx */ \ 16377 : (((x) & 0xE0) == 0xC0) ? 2 /* 110xxxxx */ \ 16378 : (((x) & 0xF0) == 0xE0) ? 3 /* 1110xxxx */ \ 16379 : (((x) & 0xF8) == 0xF0) ? 4 /* 11110xxx */ \ 16380 : (((x) & 0xFC) == 0xF8) ? 5 /* 111110xx */ \ 16381 : (((x) & 0xFE) == 0xFC) ? 6 /* 1111110x */ \ 16382 : 0 ) 16383 16384 #define BADRUNE(x) ((x) < 0 || (x) > runeMax \ 16385 || ((x) & 0xFFFE) == 0xFFFE \ 16386 || ((x) >= 0xD800 && (x) <= 0xDFFF) \ 16387 || ((x) >= 0xFDD0 && (x) <= 0xFDEF)) 16388 16389 #define UNICODE_LAST_CHAR_PART1 0x2FAFF 16390 #define UNICODE_LAST_PAGE_PART1 762 16391 #define UNICODE_MAX_TABLE_INDEX 10000 16392 #define UNICODE_NOT_PRESENT_OFFSET 65535 16393 16394 /** 16395 * Unicode types: 16396 * UNICODE_CONTROL: General category "Other, Control" (Cc) 16397 * UNICODE_FORMAT: General category "Other, Format" (Cf) 16398 * UNICODE_UNASSIGNED: General category "Other, Not Assigned" (Cn) 16399 * UNICODE_PRIVATE_USE: General category "Other, Private Use" (Co) 16400 * UNICODE_SURROGATE: General category "Other, Surrogate" (Cs) 16401 * UNICODE_LOWERCASE_LETTER: General category "Letter, Lowercase" (Ll) 16402 * UNICODE_MODIFIER_LETTER: General category "Letter, Modifier" (Lm) 16403 * UNICODE_OTHER_LETTER: General category "Letter, Other" (Lo) 16404 * UNICODE_TITLECASE_LETTER: General category "Letter, Titlecase" (Lt) 16405 * UNICODE_UPPERCASE_LETTER: General category "Letter, Uppercase" (Lu) 16406 * UNICODE_SPACING_MARK: General category "Mark, Spacing" (Mc) 16407 * UNICODE_ENCLOSING_MARK: General category "Mark, Enclosing" (Me) 16408 * UNICODE_NON_SPACING_MARK: General category "Mark, Nonspacing" (Mn) 16409 * UNICODE_DECIMAL_NUMBER: General category "Number, Decimal Digit" (Nd) 16410 * UNICODE_LETTER_NUMBER: General category "Number, Letter" (Nl) 16411 * UNICODE_OTHER_NUMBER: General category "Number, Other" (No) 16412 * UNICODE_CONNECT_PUNCTUATION: General category "Punctuation, Connector" (Pc) 16413 * UNICODE_DASH_PUNCTUATION: General category "Punctuation, Dash" (Pd) 16414 * UNICODE_CLOSE_PUNCTUATION: General category "Punctuation, Close" (Pe) 16415 * UNICODE_FINAL_PUNCTUATION: General category "Punctuation, Final quote" (Pf) 16416 * UNICODE_INITIAL_PUNCTUATION: General category "Punctuation, Initial quote" (Pi) 16417 * UNICODE_OTHER_PUNCTUATION: General category "Punctuation, Other" (Po) 16418 * UNICODE_OPEN_PUNCTUATION: General category "Punctuation, Open" (Ps) 16419 * UNICODE_CURRENCY_SYMBOL: General category "Symbol, Currency" (Sc) 16420 * UNICODE_MODIFIER_SYMBOL: General category "Symbol, Modifier" (Sk) 16421 * UNICODE_MATH_SYMBOL: General category "Symbol, Math" (Sm) 16422 * UNICODE_OTHER_SYMBOL: General category "Symbol, Other" (So) 16423 * UNICODE_LINE_SEPARATOR: General category "Separator, Line" (Zl) 16424 * UNICODE_PARAGRAPH_SEPARATOR: General category "Separator, Paragraph" (Zp) 16425 * UNICODE_SPACE_SEPARATOR: General category "Separator, Space" (Zs) 16426 * 16427 * These are the possible character classifications from the 16428 * Unicode specification. 16429 * See [Unicode Character Database](http://www.unicode.org/reports/tr44/#General_Category_Values). 16430 */ 16431 typedef enum 16432 { 16433 UNICODE_CONTROL, 16434 UNICODE_FORMAT, 16435 UNICODE_UNASSIGNED, 16436 UNICODE_PRIVATE_USE, 16437 UNICODE_SURROGATE, 16438 UNICODE_LOWERCASE_LETTER, 16439 UNICODE_MODIFIER_LETTER, 16440 UNICODE_OTHER_LETTER, 16441 UNICODE_TITLECASE_LETTER, 16442 UNICODE_UPPERCASE_LETTER, 16443 UNICODE_SPACING_MARK, 16444 UNICODE_ENCLOSING_MARK, 16445 UNICODE_NON_SPACING_MARK, 16446 UNICODE_DECIMAL_NUMBER, 16447 UNICODE_LETTER_NUMBER, 16448 UNICODE_OTHER_NUMBER, 16449 UNICODE_CONNECT_PUNCTUATION, 16450 UNICODE_DASH_PUNCTUATION, 16451 UNICODE_CLOSE_PUNCTUATION, 16452 UNICODE_FINAL_PUNCTUATION, 16453 UNICODE_INITIAL_PUNCTUATION, 16454 UNICODE_OTHER_PUNCTUATION, 16455 UNICODE_OPEN_PUNCTUATION, 16456 UNICODE_CURRENCY_SYMBOL, 16457 UNICODE_MODIFIER_SYMBOL, 16458 UNICODE_MATH_SYMBOL, 16459 UNICODE_OTHER_SYMBOL, 16460 UNICODE_LINE_SEPARATOR, 16461 UNICODE_PARAGRAPH_SEPARATOR, 16462 UNICODE_SPACE_SEPARATOR 16463 } unicodeType; 16464 16465 static const rune attr_data[][256] = { 16466 { /* page 0, index 0 */ 16467 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16468 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16469 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16470 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16471 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16472 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 16473 0x0006, 0x0007, 0x0008, 0x0009, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16474 0x0000, 0x0000, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 16475 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 16476 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 16477 0x007a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0041, 0x0042, 16478 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 16479 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 16480 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005a, 0x0000, 0x0000, 0x0000, 16481 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16482 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16483 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16484 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16485 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16486 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16487 0x0000, 0x039c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16488 0x0000, 0x0000, 0x0000, 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 16489 0x00e6, 0x00e7, 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 16490 0x00ef, 0x00f0, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x0000, 16491 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x1000000, 16492 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7, 0x00c8, 16493 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, 0x00d0, 0x00d1, 16494 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x0000, 0x00d8, 0x00d9, 0x00da, 16495 0x00db, 0x00dc, 0x00dd, 0x00de, 0x0178 16496 }, 16497 { /* page 1, index 1 */ 16498 0x0101, 0x0100, 0x0103, 0x0102, 0x0105, 0x0104, 0x0107, 0x0106, 0x0109, 16499 0x0108, 0x010b, 0x010a, 0x010d, 0x010c, 0x010f, 0x010e, 0x0111, 0x0110, 16500 0x0113, 0x0112, 0x0115, 0x0114, 0x0117, 0x0116, 0x0119, 0x0118, 0x011b, 16501 0x011a, 0x011d, 0x011c, 0x011f, 0x011e, 0x0121, 0x0120, 0x0123, 0x0122, 16502 0x0125, 0x0124, 0x0127, 0x0126, 0x0129, 0x0128, 0x012b, 0x012a, 0x012d, 16503 0x012c, 0x012f, 0x012e, 0x1000007, 0x0049, 0x0133, 0x0132, 0x0135, 16504 0x0134, 0x0137, 0x0136, 0x0000, 0x013a, 0x0139, 0x013c, 0x013b, 0x013e, 16505 0x013d, 0x0140, 0x013f, 0x0142, 0x0141, 0x0144, 0x0143, 0x0146, 0x0145, 16506 0x0148, 0x0147, 0x1000086, 0x014b, 0x014a, 0x014d, 0x014c, 0x014f, 16507 0x014e, 0x0151, 0x0150, 0x0153, 0x0152, 0x0155, 0x0154, 0x0157, 0x0156, 16508 0x0159, 0x0158, 0x015b, 0x015a, 0x015d, 0x015c, 0x015f, 0x015e, 0x0161, 16509 0x0160, 0x0163, 0x0162, 0x0165, 0x0164, 0x0167, 0x0166, 0x0169, 0x0168, 16510 0x016b, 0x016a, 0x016d, 0x016c, 0x016f, 0x016e, 0x0171, 0x0170, 0x0173, 16511 0x0172, 0x0175, 0x0174, 0x0177, 0x0176, 0x00ff, 0x017a, 0x0179, 0x017c, 16512 0x017b, 0x017e, 0x017d, 0x0053, 0x0243, 0x0253, 0x0183, 0x0182, 0x0185, 16513 0x0184, 0x0254, 0x0188, 0x0187, 0x0256, 0x0257, 0x018c, 0x018b, 0x0000, 16514 0x01dd, 0x0259, 0x025b, 0x0192, 0x0191, 0x0260, 0x0263, 0x01f6, 0x0269, 16515 0x0268, 0x0199, 0x0198, 0x023d, 0x0000, 0x026f, 0x0272, 0x0220, 0x0275, 16516 0x01a1, 0x01a0, 0x01a3, 0x01a2, 0x01a5, 0x01a4, 0x0280, 0x01a8, 0x01a7, 16517 0x0283, 0x0000, 0x0000, 0x01ad, 0x01ac, 0x0288, 0x01b0, 0x01af, 0x028a, 16518 0x028b, 0x01b4, 0x01b3, 0x01b6, 0x01b5, 0x0292, 0x01b9, 0x01b8, 0x0000, 16519 0x0000, 0x01bd, 0x01bc, 0x0000, 0x01f7, 0x0000, 0x0000, 0x0000, 0x0000, 16520 0x01c6, 0x0000, 0x01c4, 0x01c9, 0x0000, 0x01c7, 0x01cc, 0x0000, 0x01ca, 16521 0x01ce, 0x01cd, 0x01d0, 0x01cf, 0x01d2, 0x01d1, 0x01d4, 0x01d3, 0x01d6, 16522 0x01d5, 0x01d8, 0x01d7, 0x01da, 0x01d9, 0x01dc, 0x01db, 0x018e, 0x01df, 16523 0x01de, 0x01e1, 0x01e0, 0x01e3, 0x01e2, 0x01e5, 0x01e4, 0x01e7, 0x01e6, 16524 0x01e9, 0x01e8, 0x01eb, 0x01ea, 0x01ed, 0x01ec, 0x01ef, 0x01ee, 16525 0x10000ad, 0x01f3, 0x0000, 0x01f1, 0x01f5, 0x01f4, 0x0195, 0x01bf, 16526 0x01f9, 0x01f8, 0x01fb, 0x01fa, 0x01fd, 0x01fc, 0x01ff, 0x01fe 16527 }, 16528 { /* page 2, index 2 */ 16529 0x0201, 0x0200, 0x0203, 0x0202, 0x0205, 0x0204, 0x0207, 0x0206, 0x0209, 16530 0x0208, 0x020b, 0x020a, 0x020d, 0x020c, 0x020f, 0x020e, 0x0211, 0x0210, 16531 0x0213, 0x0212, 0x0215, 0x0214, 0x0217, 0x0216, 0x0219, 0x0218, 0x021b, 16532 0x021a, 0x021d, 0x021c, 0x021f, 0x021e, 0x019e, 0x0000, 0x0223, 0x0222, 16533 0x0225, 0x0224, 0x0227, 0x0226, 0x0229, 0x0228, 0x022b, 0x022a, 0x022d, 16534 0x022c, 0x022f, 0x022e, 0x0231, 0x0230, 0x0233, 0x0232, 0x0000, 0x0000, 16535 0x0000, 0x0000, 0x0000, 0x0000, 0x2c65, 0x023c, 0x023b, 0x019a, 0x2c66, 16536 0x2c7e, 0x2c7f, 0x0242, 0x0241, 0x0180, 0x0289, 0x028c, 0x0247, 0x0246, 16537 0x0249, 0x0248, 0x024b, 0x024a, 0x024d, 0x024c, 0x024f, 0x024e, 0x2c6f, 16538 0x2c6d, 0x2c70, 0x0181, 0x0186, 0x0000, 0x0189, 0x018a, 0x0000, 0x018f, 16539 0x0000, 0x0190, 0xa7ab, 0x0000, 0x0000, 0x0000, 0x0193, 0xa7ac, 0x0000, 16540 0x0194, 0x0000, 0xa78d, 0xa7aa, 0x0000, 0x0197, 0x0196, 0xa7ae, 0x2c62, 16541 0xa7ad, 0x0000, 0x0000, 0x019c, 0x0000, 0x2c6e, 0x019d, 0x0000, 0x0000, 16542 0x019f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2c64, 16543 0x0000, 0x0000, 0x01a6, 0x0000, 0x0000, 0x01a9, 0x0000, 0x0000, 0x0000, 16544 0xa7b1, 0x01ae, 0x0244, 0x01b1, 0x01b2, 0x0245, 0x0000, 0x0000, 0x0000, 16545 0x0000, 0x0000, 0x01b7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16546 0x0000, 0x0000, 0x0000, 0x0000, 0xa7b2, 0xa7b0, 0x0000, 0x0000, 0x0000, 16547 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16548 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16549 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16550 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16551 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16552 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16553 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16554 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16555 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16556 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16557 0x0000, 0x0000, 0x0000, 0x0000 16558 }, 16559 { /* page 3, index 3 */ 16560 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16561 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16562 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16563 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16564 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16565 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16566 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16567 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16568 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16569 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16570 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16571 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16572 0x0000, 0x0000, 0x0000, 0x0000, 0x0371, 0x0370, 0x0373, 0x0372, 0x0000, 16573 0x0000, 0x0377, 0x0376, 0x0000, 0x0000, 0x0000, 0x03fd, 0x03fe, 0x03ff, 16574 0x0000, 0x03f3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03ac, 16575 0x0000, 0x03ad, 0x03ae, 0x03af, 0x0000, 0x03cc, 0x0000, 0x03cd, 0x03ce, 16576 0x100008f, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7, 16577 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, 0x03c0, 16578 0x03c1, 0x0000, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7, 0x03c8, 0x03c9, 16579 0x03ca, 0x03cb, 0x0386, 0x0388, 0x0389, 0x038a, 0x100009e, 0x0391, 16580 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398, 0x0399, 0x039a, 16581 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, 0x03a0, 0x03a1, 0x03a3, 0x03a3, 16582 0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8, 0x03a9, 0x03aa, 0x03ab, 0x038c, 16583 0x038e, 0x038f, 0x03d7, 0x0392, 0x0398, 0x0000, 0x0000, 0x0000, 0x03a6, 16584 0x03a0, 0x03cf, 0x03d9, 0x03d8, 0x03db, 0x03da, 0x03dd, 0x03dc, 0x03df, 16585 0x03de, 0x03e1, 0x03e0, 0x03e3, 0x03e2, 0x03e5, 0x03e4, 0x03e7, 0x03e6, 16586 0x03e9, 0x03e8, 0x03eb, 0x03ea, 0x03ed, 0x03ec, 0x03ef, 0x03ee, 0x039a, 16587 0x03a1, 0x03f9, 0x037f, 0x03b8, 0x0395, 0x0000, 0x03f8, 0x03f7, 0x03f2, 16588 0x03fb, 0x03fa, 0x0000, 0x037b, 0x037c, 0x037d 16589 }, 16590 { /* page 4, index 4 */ 16591 0x0450, 0x0451, 0x0452, 0x0453, 0x0454, 0x0455, 0x0456, 0x0457, 0x0458, 16592 0x0459, 0x045a, 0x045b, 0x045c, 0x045d, 0x045e, 0x045f, 0x0430, 0x0431, 16593 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, 0x0438, 0x0439, 0x043a, 16594 0x043b, 0x043c, 0x043d, 0x043e, 0x043f, 0x0440, 0x0441, 0x0442, 0x0443, 16595 0x0444, 0x0445, 0x0446, 0x0447, 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 16596 0x044d, 0x044e, 0x044f, 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 16597 0x0416, 0x0417, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 16598 0x041f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 16599 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f, 0x0400, 16600 0x0401, 0x0402, 0x0403, 0x0404, 0x0405, 0x0406, 0x0407, 0x0408, 0x0409, 16601 0x040a, 0x040b, 0x040c, 0x040d, 0x040e, 0x040f, 0x0461, 0x0460, 0x0463, 16602 0x0462, 0x0465, 0x0464, 0x0467, 0x0466, 0x0469, 0x0468, 0x046b, 0x046a, 16603 0x046d, 0x046c, 0x046f, 0x046e, 0x0471, 0x0470, 0x0473, 0x0472, 0x0475, 16604 0x0474, 0x0477, 0x0476, 0x0479, 0x0478, 0x047b, 0x047a, 0x047d, 0x047c, 16605 0x047f, 0x047e, 0x0481, 0x0480, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16606 0x0000, 0x0000, 0x0000, 0x048b, 0x048a, 0x048d, 0x048c, 0x048f, 0x048e, 16607 0x0491, 0x0490, 0x0493, 0x0492, 0x0495, 0x0494, 0x0497, 0x0496, 0x0499, 16608 0x0498, 0x049b, 0x049a, 0x049d, 0x049c, 0x049f, 0x049e, 0x04a1, 0x04a0, 16609 0x04a3, 0x04a2, 0x04a5, 0x04a4, 0x04a7, 0x04a6, 0x04a9, 0x04a8, 0x04ab, 16610 0x04aa, 0x04ad, 0x04ac, 0x04af, 0x04ae, 0x04b1, 0x04b0, 0x04b3, 0x04b2, 16611 0x04b5, 0x04b4, 0x04b7, 0x04b6, 0x04b9, 0x04b8, 0x04bb, 0x04ba, 0x04bd, 16612 0x04bc, 0x04bf, 0x04be, 0x04cf, 0x04c2, 0x04c1, 0x04c4, 0x04c3, 0x04c6, 16613 0x04c5, 0x04c8, 0x04c7, 0x04ca, 0x04c9, 0x04cc, 0x04cb, 0x04ce, 0x04cd, 16614 0x04c0, 0x04d1, 0x04d0, 0x04d3, 0x04d2, 0x04d5, 0x04d4, 0x04d7, 0x04d6, 16615 0x04d9, 0x04d8, 0x04db, 0x04da, 0x04dd, 0x04dc, 0x04df, 0x04de, 0x04e1, 16616 0x04e0, 0x04e3, 0x04e2, 0x04e5, 0x04e4, 0x04e7, 0x04e6, 0x04e9, 0x04e8, 16617 0x04eb, 0x04ea, 0x04ed, 0x04ec, 0x04ef, 0x04ee, 0x04f1, 0x04f0, 0x04f3, 16618 0x04f2, 0x04f5, 0x04f4, 0x04f7, 0x04f6, 0x04f9, 0x04f8, 0x04fb, 0x04fa, 16619 0x04fd, 0x04fc, 0x04ff, 0x04fe 16620 }, 16621 { /* page 5, index 5 */ 16622 0x0501, 0x0500, 0x0503, 0x0502, 0x0505, 0x0504, 0x0507, 0x0506, 0x0509, 16623 0x0508, 0x050b, 0x050a, 0x050d, 0x050c, 0x050f, 0x050e, 0x0511, 0x0510, 16624 0x0513, 0x0512, 0x0515, 0x0514, 0x0517, 0x0516, 0x0519, 0x0518, 0x051b, 16625 0x051a, 0x051d, 0x051c, 0x051f, 0x051e, 0x0521, 0x0520, 0x0523, 0x0522, 16626 0x0525, 0x0524, 0x0527, 0x0526, 0x0529, 0x0528, 0x052b, 0x052a, 0x052d, 16627 0x052c, 0x052f, 0x052e, 0x0000, 0x0561, 0x0562, 0x0563, 0x0564, 0x0565, 16628 0x0566, 0x0567, 0x0568, 0x0569, 0x056a, 0x056b, 0x056c, 0x056d, 0x056e, 16629 0x056f, 0x0570, 0x0571, 0x0572, 0x0573, 0x0574, 0x0575, 0x0576, 0x0577, 16630 0x0578, 0x0579, 0x057a, 0x057b, 0x057c, 0x057d, 0x057e, 0x057f, 0x0580, 16631 0x0581, 0x0582, 0x0583, 0x0584, 0x0585, 0x0586, 0x0000, 0x0000, 0x0000, 16632 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0531, 0x0532, 16633 0x0533, 0x0534, 0x0535, 0x0536, 0x0537, 0x0538, 0x0539, 0x053a, 0x053b, 16634 0x053c, 0x053d, 0x053e, 0x053f, 0x0540, 0x0541, 0x0542, 0x0543, 0x0544, 16635 0x0545, 0x0546, 0x0547, 0x0548, 0x0549, 0x054a, 0x054b, 0x054c, 0x054d, 16636 0x054e, 0x054f, 0x0550, 0x0551, 0x0552, 0x0553, 0x0554, 0x0555, 0x0556, 16637 0x1000044, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16638 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16639 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16640 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16641 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16642 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16643 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16644 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16645 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16646 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16647 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16648 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16649 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16650 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 16651 }, 16652 { /* page 6, index 6 */ 16653 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16654 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16655 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16656 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16657 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16658 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16659 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16660 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16661 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16662 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16663 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 16664 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x0000, 0x0000, 16665 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16666 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16667 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16668 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16669 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16670 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16671 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16672 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16673 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16674 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16675 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16676 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16677 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16678 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16679 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 16680 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x0000, 0x0000, 16681 0x0000, 0x0000, 0x0000, 0x0000 16682 }, 16683 { /* page 7, index 7 */ 16684 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16685 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16686 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16687 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16688 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16689 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16690 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16691 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16692 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16693 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16694 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16695 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16696 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16697 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16698 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16699 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16700 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16701 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16702 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16703 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16704 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16705 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 16706 0x0006, 0x0007, 0x0008, 0x0009, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16707 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16708 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16709 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16710 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16711 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16712 0x0000, 0x0000, 0x0000, 0x0000 16713 }, 16714 { /* page 9, index 8 */ 16715 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16716 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16717 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16718 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16719 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16720 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16721 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16722 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16723 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16724 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16725 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16726 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 16727 0x0006, 0x0007, 0x0008, 0x0009, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16728 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16729 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16730 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16731 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16732 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16733 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16734 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16735 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16736 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16737 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16738 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16739 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16740 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 0x0003, 16741 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x0000, 0x0000, 0x0000, 16742 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16743 0x0000, 0x0000, 0x0000, 0x0000 16744 }, 16745 { /* page 10, index 9 */ 16746 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16747 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16748 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16749 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16750 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16751 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16752 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16753 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16754 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16755 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16756 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16757 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 16758 0x0006, 0x0007, 0x0008, 0x0009, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16759 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16760 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16761 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16762 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16763 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16764 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16765 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16766 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16767 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16768 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16769 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16770 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16771 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 0x0003, 16772 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x0000, 0x0000, 0x0000, 16773 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16774 0x0000, 0x0000, 0x0000, 0x0000 16775 }, 16776 { /* page 11, index 10 */ 16777 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16778 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16779 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16780 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16781 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16782 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16783 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16784 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16785 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16786 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16787 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16788 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 16789 0x0006, 0x0007, 0x0008, 0x0009, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16790 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16791 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16792 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16793 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16794 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16795 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16796 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16797 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16798 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16799 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16800 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16801 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16802 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 0x0003, 16803 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x0000, 0x0000, 0x0000, 16804 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16805 0x0000, 0x0000, 0x0000, 0x0000 16806 }, 16807 { /* page 12, index 11 */ 16808 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16809 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16810 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16811 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16812 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16813 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16814 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16815 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16816 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16817 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16818 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16819 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 16820 0x0006, 0x0007, 0x0008, 0x0009, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16821 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16822 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16823 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16824 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16825 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16826 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16827 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16828 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16829 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16830 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16831 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16832 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16833 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 0x0003, 16834 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x0000, 0x0000, 0x0000, 16835 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16836 0x0000, 0x0000, 0x0000, 0x0000 16837 }, 16838 { /* page 13, index 12 */ 16839 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16840 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16841 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16842 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16843 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16844 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16845 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16846 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16847 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16848 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16849 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16850 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 16851 0x0006, 0x0007, 0x0008, 0x0009, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16852 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16853 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16854 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16855 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16856 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16857 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16858 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16859 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16860 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16861 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16862 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16863 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16864 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 0x0003, 16865 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x0000, 0x0000, 0x0000, 16866 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16867 0x0000, 0x0000, 0x0000, 0x0000 16868 }, 16869 { /* page 14, index 13 */ 16870 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16871 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16872 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16873 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16874 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16875 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16876 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16877 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16878 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16879 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 16880 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16881 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16882 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16883 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16884 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16885 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16886 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16887 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16888 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16889 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16890 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16891 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16892 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16893 0x0000, 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 16894 0x0008, 0x0009, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16895 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16896 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16897 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16898 0x0000, 0x0000, 0x0000, 0x0000 16899 }, 16900 { /* page 15, index 14 */ 16901 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16902 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16903 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16904 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 0x0003, 16905 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x0000, 0x0000, 0x0000, 16906 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16907 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16908 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16909 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16910 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16911 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16912 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16913 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16914 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16915 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16916 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16917 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16918 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16919 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16920 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16921 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16922 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16923 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16924 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16925 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16926 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16927 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16928 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16929 0x0000, 0x0000, 0x0000, 0x0000 16930 }, 16931 { /* page 16, index 15 */ 16932 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16933 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16934 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16935 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16936 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16937 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16938 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16939 0x0000, 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 16940 0x0008, 0x0009, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16941 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16942 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16943 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16944 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16945 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16946 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16947 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16948 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 16949 0x0009, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2d00, 0x2d01, 16950 0x2d02, 0x2d03, 0x2d04, 0x2d05, 0x2d06, 0x2d07, 0x2d08, 0x2d09, 0x2d0a, 16951 0x2d0b, 0x2d0c, 0x2d0d, 0x2d0e, 0x2d0f, 0x2d10, 0x2d11, 0x2d12, 0x2d13, 16952 0x2d14, 0x2d15, 0x2d16, 0x2d17, 0x2d18, 0x2d19, 0x2d1a, 0x2d1b, 0x2d1c, 16953 0x2d1d, 0x2d1e, 0x2d1f, 0x2d20, 0x2d21, 0x2d22, 0x2d23, 0x2d24, 0x2d25, 16954 0x0000, 0x2d27, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2d2d, 0x0000, 16955 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16956 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16957 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16958 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16959 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16960 0x0000, 0x0000, 0x0000, 0x0000 16961 }, 16962 { /* page 19, index 16 */ 16963 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16964 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16965 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16966 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16967 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16968 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16969 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16970 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16971 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16972 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16973 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16974 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16975 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16976 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16977 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16978 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16979 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16980 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xab70, 0xab71, 16981 0xab72, 0xab73, 0xab74, 0xab75, 0xab76, 0xab77, 0xab78, 0xab79, 0xab7a, 16982 0xab7b, 0xab7c, 0xab7d, 0xab7e, 0xab7f, 0xab80, 0xab81, 0xab82, 0xab83, 16983 0xab84, 0xab85, 0xab86, 0xab87, 0xab88, 0xab89, 0xab8a, 0xab8b, 0xab8c, 16984 0xab8d, 0xab8e, 0xab8f, 0xab90, 0xab91, 0xab92, 0xab93, 0xab94, 0xab95, 16985 0xab96, 0xab97, 0xab98, 0xab99, 0xab9a, 0xab9b, 0xab9c, 0xab9d, 0xab9e, 16986 0xab9f, 0xaba0, 0xaba1, 0xaba2, 0xaba3, 0xaba4, 0xaba5, 0xaba6, 0xaba7, 16987 0xaba8, 0xaba9, 0xabaa, 0xabab, 0xabac, 0xabad, 0xabae, 0xabaf, 0xabb0, 16988 0xabb1, 0xabb2, 0xabb3, 0xabb4, 0xabb5, 0xabb6, 0xabb7, 0xabb8, 0xabb9, 16989 0xabba, 0xabbb, 0xabbc, 0xabbd, 0xabbe, 0xabbf, 0x13f8, 0x13f9, 0x13fa, 16990 0x13fb, 0x13fc, 0x13fd, 0x0000, 0x0000, 0x13f0, 0x13f1, 0x13f2, 0x13f3, 16991 0x13f4, 0x13f5, 0x0000, 0x0000 16992 }, 16993 { /* page 23, index 17 */ 16994 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16995 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16996 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16997 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16998 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 16999 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17000 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17001 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17002 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17003 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17004 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17005 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17006 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17007 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17008 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17009 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17010 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17011 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17012 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17013 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17014 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17015 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17016 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17017 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17018 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17019 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 17020 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17021 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17022 0x0000, 0x0000, 0x0000, 0x0000 17023 }, 17024 { /* page 24, index 18 */ 17025 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17026 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 17027 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x0000, 17028 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17029 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17030 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17031 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17032 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17033 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17034 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17035 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17036 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17037 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17038 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17039 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17040 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17041 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17042 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17043 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17044 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17045 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17046 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17047 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17048 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17049 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17050 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17051 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17052 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17053 0x0000, 0x0000, 0x0000, 0x0000 17054 }, 17055 { /* page 25, index 19 */ 17056 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17057 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17058 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17059 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17060 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17061 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17062 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17063 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 17064 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x0000, 17065 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17066 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17067 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17068 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17069 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17070 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17071 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17072 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17073 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17074 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17075 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17076 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17077 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17078 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17079 0x0000, 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 17080 0x0008, 0x0009, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17081 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17082 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17083 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17084 0x0000, 0x0000, 0x0000, 0x0000 17085 }, 17086 { /* page 26, index 20 */ 17087 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17088 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17089 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17090 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17091 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17092 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17093 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17094 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17095 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17096 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17097 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17098 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17099 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17100 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17101 0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 17102 0x0007, 0x0008, 0x0009, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17103 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 17104 0x0009, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17105 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17106 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17107 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17108 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17109 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17110 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17111 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17112 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17113 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17114 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17115 0x0000, 0x0000, 0x0000, 0x0000 17116 }, 17117 { /* page 27, index 21 */ 17118 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17119 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17120 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17121 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17122 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17123 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17124 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17125 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17126 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17127 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 17128 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17129 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17130 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17131 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17132 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17133 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17134 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17135 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17136 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17137 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 0x0003, 17138 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x0000, 0x0000, 0x0000, 17139 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17140 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17141 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17142 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17143 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17144 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17145 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17146 0x0000, 0x0000, 0x0000, 0x0000 17147 }, 17148 { /* page 28, index 22 */ 17149 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17150 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17151 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17152 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17153 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17154 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17155 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17156 0x0000, 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 17157 0x0008, 0x0009, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17158 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 17159 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17160 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17161 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17162 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17163 0x0000, 0x0000, 0x0412, 0x0414, 0x041e, 0x0421, 0x0422, 0x0422, 0x042a, 17164 0x0462, 0xa64a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17165 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17166 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17167 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17168 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17169 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17170 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17171 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17172 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17173 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17174 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17175 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17176 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17177 0x0000, 0x0000, 0x0000, 0x0000 17178 }, 17179 { /* page 29, index 23 */ 17180 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17181 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17182 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17183 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17184 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17185 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17186 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17187 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17188 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17189 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17190 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17191 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17192 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17193 0x0000, 0x0000, 0x0000, 0x0000, 0xa77d, 0x0000, 0x0000, 0x0000, 0x2c63, 17194 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17195 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17196 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17197 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17198 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17199 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17200 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17201 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17202 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17203 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17204 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17205 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17206 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17207 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17208 0x0000, 0x0000, 0x0000, 0x0000 17209 }, 17210 { /* page 30, index 24 */ 17211 0x1e01, 0x1e00, 0x1e03, 0x1e02, 0x1e05, 0x1e04, 0x1e07, 0x1e06, 0x1e09, 17212 0x1e08, 0x1e0b, 0x1e0a, 0x1e0d, 0x1e0c, 0x1e0f, 0x1e0e, 0x1e11, 0x1e10, 17213 0x1e13, 0x1e12, 0x1e15, 0x1e14, 0x1e17, 0x1e16, 0x1e19, 0x1e18, 0x1e1b, 17214 0x1e1a, 0x1e1d, 0x1e1c, 0x1e1f, 0x1e1e, 0x1e21, 0x1e20, 0x1e23, 0x1e22, 17215 0x1e25, 0x1e24, 0x1e27, 0x1e26, 0x1e29, 0x1e28, 0x1e2b, 0x1e2a, 0x1e2d, 17216 0x1e2c, 0x1e2f, 0x1e2e, 0x1e31, 0x1e30, 0x1e33, 0x1e32, 0x1e35, 0x1e34, 17217 0x1e37, 0x1e36, 0x1e39, 0x1e38, 0x1e3b, 0x1e3a, 0x1e3d, 0x1e3c, 0x1e3f, 17218 0x1e3e, 0x1e41, 0x1e40, 0x1e43, 0x1e42, 0x1e45, 0x1e44, 0x1e47, 0x1e46, 17219 0x1e49, 0x1e48, 0x1e4b, 0x1e4a, 0x1e4d, 0x1e4c, 0x1e4f, 0x1e4e, 0x1e51, 17220 0x1e50, 0x1e53, 0x1e52, 0x1e55, 0x1e54, 0x1e57, 0x1e56, 0x1e59, 0x1e58, 17221 0x1e5b, 0x1e5a, 0x1e5d, 0x1e5c, 0x1e5f, 0x1e5e, 0x1e61, 0x1e60, 0x1e63, 17222 0x1e62, 0x1e65, 0x1e64, 0x1e67, 0x1e66, 0x1e69, 0x1e68, 0x1e6b, 0x1e6a, 17223 0x1e6d, 0x1e6c, 0x1e6f, 0x1e6e, 0x1e71, 0x1e70, 0x1e73, 0x1e72, 0x1e75, 17224 0x1e74, 0x1e77, 0x1e76, 0x1e79, 0x1e78, 0x1e7b, 0x1e7a, 0x1e7d, 0x1e7c, 17225 0x1e7f, 0x1e7e, 0x1e81, 0x1e80, 0x1e83, 0x1e82, 0x1e85, 0x1e84, 0x1e87, 17226 0x1e86, 0x1e89, 0x1e88, 0x1e8b, 0x1e8a, 0x1e8d, 0x1e8c, 0x1e8f, 0x1e8e, 17227 0x1e91, 0x1e90, 0x1e93, 0x1e92, 0x1e95, 0x1e94, 0x10000b6, 0x10000bf, 17228 0x10000c8, 0x10000d1, 0x10000da, 0x1e60, 0x0000, 0x0000, 0x00df, 0x0000, 17229 0x1ea1, 0x1ea0, 0x1ea3, 0x1ea2, 0x1ea5, 0x1ea4, 0x1ea7, 0x1ea6, 0x1ea9, 17230 0x1ea8, 0x1eab, 0x1eaa, 0x1ead, 0x1eac, 0x1eaf, 0x1eae, 0x1eb1, 0x1eb0, 17231 0x1eb3, 0x1eb2, 0x1eb5, 0x1eb4, 0x1eb7, 0x1eb6, 0x1eb9, 0x1eb8, 0x1ebb, 17232 0x1eba, 0x1ebd, 0x1ebc, 0x1ebf, 0x1ebe, 0x1ec1, 0x1ec0, 0x1ec3, 0x1ec2, 17233 0x1ec5, 0x1ec4, 0x1ec7, 0x1ec6, 0x1ec9, 0x1ec8, 0x1ecb, 0x1eca, 0x1ecd, 17234 0x1ecc, 0x1ecf, 0x1ece, 0x1ed1, 0x1ed0, 0x1ed3, 0x1ed2, 0x1ed5, 0x1ed4, 17235 0x1ed7, 0x1ed6, 0x1ed9, 0x1ed8, 0x1edb, 0x1eda, 0x1edd, 0x1edc, 0x1edf, 17236 0x1ede, 0x1ee1, 0x1ee0, 0x1ee3, 0x1ee2, 0x1ee5, 0x1ee4, 0x1ee7, 0x1ee6, 17237 0x1ee9, 0x1ee8, 0x1eeb, 0x1eea, 0x1eed, 0x1eec, 0x1eef, 0x1eee, 0x1ef1, 17238 0x1ef0, 0x1ef3, 0x1ef2, 0x1ef5, 0x1ef4, 0x1ef7, 0x1ef6, 0x1ef9, 0x1ef8, 17239 0x1efb, 0x1efa, 0x1efd, 0x1efc, 0x1eff, 0x1efe 17240 }, 17241 { /* page 31, index 25 */ 17242 0x1f08, 0x1f09, 0x1f0a, 0x1f0b, 0x1f0c, 0x1f0d, 0x1f0e, 0x1f0f, 0x1f00, 17243 0x1f01, 0x1f02, 0x1f03, 0x1f04, 0x1f05, 0x1f06, 0x1f07, 0x1f18, 0x1f19, 17244 0x1f1a, 0x1f1b, 0x1f1c, 0x1f1d, 0x0000, 0x0000, 0x1f10, 0x1f11, 0x1f12, 17245 0x1f13, 0x1f14, 0x1f15, 0x0000, 0x0000, 0x1f28, 0x1f29, 0x1f2a, 0x1f2b, 17246 0x1f2c, 0x1f2d, 0x1f2e, 0x1f2f, 0x1f20, 0x1f21, 0x1f22, 0x1f23, 0x1f24, 17247 0x1f25, 0x1f26, 0x1f27, 0x1f38, 0x1f39, 0x1f3a, 0x1f3b, 0x1f3c, 0x1f3d, 17248 0x1f3e, 0x1f3f, 0x1f30, 0x1f31, 0x1f32, 0x1f33, 0x1f34, 0x1f35, 0x1f36, 17249 0x1f37, 0x1f48, 0x1f49, 0x1f4a, 0x1f4b, 0x1f4c, 0x1f4d, 0x0000, 0x0000, 17250 0x1f40, 0x1f41, 0x1f42, 0x1f43, 0x1f44, 0x1f45, 0x0000, 0x0000, 17251 0x10000e3, 0x1f59, 0x10000ee, 0x1f5b, 0x10000fd, 0x1f5d, 0x100010c, 17252 0x1f5f, 0x0000, 0x1f51, 0x0000, 0x1f53, 0x0000, 0x1f55, 0x0000, 0x1f57, 17253 0x1f68, 0x1f69, 0x1f6a, 0x1f6b, 0x1f6c, 0x1f6d, 0x1f6e, 0x1f6f, 0x1f60, 17254 0x1f61, 0x1f62, 0x1f63, 0x1f64, 0x1f65, 0x1f66, 0x1f67, 0x1fba, 0x1fbb, 17255 0x1fc8, 0x1fc9, 0x1fca, 0x1fcb, 0x1fda, 0x1fdb, 0x1ff8, 0x1ff9, 0x1fea, 17256 0x1feb, 0x1ffa, 0x1ffb, 0x0000, 0x0000, 0x10001b7, 0x10001c4, 0x10001d1, 17257 0x10001de, 0x10001eb, 0x10001f8, 0x1000205, 0x1000212, 0x100021f, 17258 0x1000229, 0x1000233, 0x100023d, 0x1000247, 0x1000251, 0x100025b, 17259 0x1000265, 0x100026f, 0x100027c, 0x1000289, 0x1000296, 0x10002a3, 17260 0x10002b0, 0x10002bd, 0x10002ca, 0x10002d7, 0x10002e1, 0x10002eb, 17261 0x10002f5, 0x10002ff, 0x1000309, 0x1000313, 0x100031d, 0x1000327, 17262 0x1000334, 0x1000341, 0x100034e, 0x100035b, 0x1000368, 0x1000375, 17263 0x1000382, 0x100038f, 0x1000399, 0x10003a3, 0x10003ad, 0x10003b7, 17264 0x10003c1, 0x10003cb, 0x10003d5, 0x1fb8, 0x1fb9, 0x100041e, 0x10003df, 17265 0x100042b, 0x0000, 0x100011b, 0x1000466, 0x1fb0, 0x1fb1, 0x1f70, 0x1f71, 17266 0x10003eb, 0x0000, 0x0399, 0x0000, 0x0000, 0x0000, 0x1000436, 0x10003f4, 17267 0x1000443, 0x0000, 0x1000126, 0x1000475, 0x1f72, 0x1f73, 0x1f74, 0x1f75, 17268 0x1000400, 0x0000, 0x0000, 0x0000, 0x1fd8, 0x1fd9, 0x1000131, 0x1000140, 17269 0x0000, 0x0000, 0x100014f, 0x100015a, 0x1fd0, 0x1fd1, 0x1f76, 0x1f77, 17270 0x0000, 0x0000, 0x0000, 0x0000, 0x1fe8, 0x1fe9, 0x1000169, 0x1000178, 17271 0x1000187, 0x1fec, 0x1000192, 0x100019d, 0x1fe0, 0x1fe1, 0x1f7a, 0x1f7b, 17272 0x1fe5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x100044e, 0x1000409, 17273 0x100045b, 0x0000, 0x10001ac, 0x1000484, 0x1f78, 0x1f79, 0x1f7c, 0x1f7d, 17274 0x1000415, 0x0000, 0x0000, 0x0000 17275 }, 17276 { /* page 33, index 26 */ 17277 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17278 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17279 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17280 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17281 0x0000, 0x0000, 0x03c9, 0x0000, 0x0000, 0x0000, 0x006b, 0x00e5, 0x0000, 17282 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x214e, 0x0000, 0x0000, 0x0000, 17283 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17284 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17285 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2132, 0x0000, 0x0000, 17286 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17287 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17288 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17289 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17290 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17291 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2184, 0x2183, 0x0000, 0x0000, 17292 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17293 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17294 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17295 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17296 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17297 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17298 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17299 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17300 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17301 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17302 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17303 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17304 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17305 0x0000, 0x0000, 0x0000, 0x0000 17306 }, 17307 { /* page 44, index 27 */ 17308 0x2c30, 0x2c31, 0x2c32, 0x2c33, 0x2c34, 0x2c35, 0x2c36, 0x2c37, 0x2c38, 17309 0x2c39, 0x2c3a, 0x2c3b, 0x2c3c, 0x2c3d, 0x2c3e, 0x2c3f, 0x2c40, 0x2c41, 17310 0x2c42, 0x2c43, 0x2c44, 0x2c45, 0x2c46, 0x2c47, 0x2c48, 0x2c49, 0x2c4a, 17311 0x2c4b, 0x2c4c, 0x2c4d, 0x2c4e, 0x2c4f, 0x2c50, 0x2c51, 0x2c52, 0x2c53, 17312 0x2c54, 0x2c55, 0x2c56, 0x2c57, 0x2c58, 0x2c59, 0x2c5a, 0x2c5b, 0x2c5c, 17313 0x2c5d, 0x2c5e, 0x0000, 0x2c00, 0x2c01, 0x2c02, 0x2c03, 0x2c04, 0x2c05, 17314 0x2c06, 0x2c07, 0x2c08, 0x2c09, 0x2c0a, 0x2c0b, 0x2c0c, 0x2c0d, 0x2c0e, 17315 0x2c0f, 0x2c10, 0x2c11, 0x2c12, 0x2c13, 0x2c14, 0x2c15, 0x2c16, 0x2c17, 17316 0x2c18, 0x2c19, 0x2c1a, 0x2c1b, 0x2c1c, 0x2c1d, 0x2c1e, 0x2c1f, 0x2c20, 17317 0x2c21, 0x2c22, 0x2c23, 0x2c24, 0x2c25, 0x2c26, 0x2c27, 0x2c28, 0x2c29, 17318 0x2c2a, 0x2c2b, 0x2c2c, 0x2c2d, 0x2c2e, 0x0000, 0x2c61, 0x2c60, 0x026b, 17319 0x1d7d, 0x027d, 0x023a, 0x023e, 0x2c68, 0x2c67, 0x2c6a, 0x2c69, 0x2c6c, 17320 0x2c6b, 0x0251, 0x0271, 0x0250, 0x0252, 0x0000, 0x2c73, 0x2c72, 0x0000, 17321 0x2c76, 0x2c75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17322 0x023f, 0x0240, 0x2c81, 0x2c80, 0x2c83, 0x2c82, 0x2c85, 0x2c84, 0x2c87, 17323 0x2c86, 0x2c89, 0x2c88, 0x2c8b, 0x2c8a, 0x2c8d, 0x2c8c, 0x2c8f, 0x2c8e, 17324 0x2c91, 0x2c90, 0x2c93, 0x2c92, 0x2c95, 0x2c94, 0x2c97, 0x2c96, 0x2c99, 17325 0x2c98, 0x2c9b, 0x2c9a, 0x2c9d, 0x2c9c, 0x2c9f, 0x2c9e, 0x2ca1, 0x2ca0, 17326 0x2ca3, 0x2ca2, 0x2ca5, 0x2ca4, 0x2ca7, 0x2ca6, 0x2ca9, 0x2ca8, 0x2cab, 17327 0x2caa, 0x2cad, 0x2cac, 0x2caf, 0x2cae, 0x2cb1, 0x2cb0, 0x2cb3, 0x2cb2, 17328 0x2cb5, 0x2cb4, 0x2cb7, 0x2cb6, 0x2cb9, 0x2cb8, 0x2cbb, 0x2cba, 0x2cbd, 17329 0x2cbc, 0x2cbf, 0x2cbe, 0x2cc1, 0x2cc0, 0x2cc3, 0x2cc2, 0x2cc5, 0x2cc4, 17330 0x2cc7, 0x2cc6, 0x2cc9, 0x2cc8, 0x2ccb, 0x2cca, 0x2ccd, 0x2ccc, 0x2ccf, 17331 0x2cce, 0x2cd1, 0x2cd0, 0x2cd3, 0x2cd2, 0x2cd5, 0x2cd4, 0x2cd7, 0x2cd6, 17332 0x2cd9, 0x2cd8, 0x2cdb, 0x2cda, 0x2cdd, 0x2cdc, 0x2cdf, 0x2cde, 0x2ce1, 17333 0x2ce0, 0x2ce3, 0x2ce2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17334 0x0000, 0x2cec, 0x2ceb, 0x2cee, 0x2ced, 0x0000, 0x0000, 0x0000, 0x2cf3, 17335 0x2cf2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17336 0x0000, 0x0000, 0x0000, 0x0000 17337 }, 17338 { /* page 45, index 28 */ 17339 0x10a0, 0x10a1, 0x10a2, 0x10a3, 0x10a4, 0x10a5, 0x10a6, 0x10a7, 0x10a8, 17340 0x10a9, 0x10aa, 0x10ab, 0x10ac, 0x10ad, 0x10ae, 0x10af, 0x10b0, 0x10b1, 17341 0x10b2, 0x10b3, 0x10b4, 0x10b5, 0x10b6, 0x10b7, 0x10b8, 0x10b9, 0x10ba, 17342 0x10bb, 0x10bc, 0x10bd, 0x10be, 0x10bf, 0x10c0, 0x10c1, 0x10c2, 0x10c3, 17343 0x10c4, 0x10c5, 0x0000, 0x10c7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17344 0x10cd, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17345 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17346 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17347 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17348 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17349 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17350 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17351 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17352 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17353 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17354 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17355 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17356 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17357 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17358 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17359 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17360 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17361 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17362 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17363 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17364 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17365 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17366 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17367 0x0000, 0x0000, 0x0000, 0x0000 17368 }, 17369 { /* page 166, index 29 */ 17370 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17371 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17372 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17373 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 0x0003, 17374 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x0000, 0x0000, 0x0000, 17375 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17376 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17377 0x0000, 0xa641, 0xa640, 0xa643, 0xa642, 0xa645, 0xa644, 0xa647, 0xa646, 17378 0xa649, 0xa648, 0xa64b, 0xa64a, 0xa64d, 0xa64c, 0xa64f, 0xa64e, 0xa651, 17379 0xa650, 0xa653, 0xa652, 0xa655, 0xa654, 0xa657, 0xa656, 0xa659, 0xa658, 17380 0xa65b, 0xa65a, 0xa65d, 0xa65c, 0xa65f, 0xa65e, 0xa661, 0xa660, 0xa663, 17381 0xa662, 0xa665, 0xa664, 0xa667, 0xa666, 0xa669, 0xa668, 0xa66b, 0xa66a, 17382 0xa66d, 0xa66c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17383 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17384 0x0000, 0x0000, 0xa681, 0xa680, 0xa683, 0xa682, 0xa685, 0xa684, 0xa687, 17385 0xa686, 0xa689, 0xa688, 0xa68b, 0xa68a, 0xa68d, 0xa68c, 0xa68f, 0xa68e, 17386 0xa691, 0xa690, 0xa693, 0xa692, 0xa695, 0xa694, 0xa697, 0xa696, 0xa699, 17387 0xa698, 0xa69b, 0xa69a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17388 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17389 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17390 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17391 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17392 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17393 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17394 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17395 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17396 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17397 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17398 0x0000, 0x0000, 0x0000, 0x0000 17399 }, 17400 { /* page 167, index 30 */ 17401 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17402 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17403 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17404 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa723, 0xa722, 17405 0xa725, 0xa724, 0xa727, 0xa726, 0xa729, 0xa728, 0xa72b, 0xa72a, 0xa72d, 17406 0xa72c, 0xa72f, 0xa72e, 0x0000, 0x0000, 0xa733, 0xa732, 0xa735, 0xa734, 17407 0xa737, 0xa736, 0xa739, 0xa738, 0xa73b, 0xa73a, 0xa73d, 0xa73c, 0xa73f, 17408 0xa73e, 0xa741, 0xa740, 0xa743, 0xa742, 0xa745, 0xa744, 0xa747, 0xa746, 17409 0xa749, 0xa748, 0xa74b, 0xa74a, 0xa74d, 0xa74c, 0xa74f, 0xa74e, 0xa751, 17410 0xa750, 0xa753, 0xa752, 0xa755, 0xa754, 0xa757, 0xa756, 0xa759, 0xa758, 17411 0xa75b, 0xa75a, 0xa75d, 0xa75c, 0xa75f, 0xa75e, 0xa761, 0xa760, 0xa763, 17412 0xa762, 0xa765, 0xa764, 0xa767, 0xa766, 0xa769, 0xa768, 0xa76b, 0xa76a, 17413 0xa76d, 0xa76c, 0xa76f, 0xa76e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17414 0x0000, 0x0000, 0x0000, 0x0000, 0xa77a, 0xa779, 0xa77c, 0xa77b, 0x1d79, 17415 0xa77f, 0xa77e, 0xa781, 0xa780, 0xa783, 0xa782, 0xa785, 0xa784, 0xa787, 17416 0xa786, 0x0000, 0x0000, 0x0000, 0xa78c, 0xa78b, 0x0265, 0x0000, 0x0000, 17417 0xa791, 0xa790, 0xa793, 0xa792, 0x0000, 0x0000, 0xa797, 0xa796, 0xa799, 17418 0xa798, 0xa79b, 0xa79a, 0xa79d, 0xa79c, 0xa79f, 0xa79e, 0xa7a1, 0xa7a0, 17419 0xa7a3, 0xa7a2, 0xa7a5, 0xa7a4, 0xa7a7, 0xa7a6, 0xa7a9, 0xa7a8, 0x0266, 17420 0x025c, 0x0261, 0x026c, 0x026a, 0x0000, 0x029e, 0x0287, 0x029d, 0xab53, 17421 0xa7b5, 0xa7b4, 0xa7b7, 0xa7b6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17422 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17423 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17424 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17425 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17426 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17427 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17428 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17429 0x0000, 0x0000, 0x0000, 0x0000 17430 }, 17431 { /* page 168, index 31 */ 17432 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17433 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17434 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17435 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17436 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17437 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17438 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17439 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17440 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17441 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17442 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17443 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17444 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17445 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17446 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17447 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17448 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17449 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17450 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17451 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17452 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17453 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17454 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17455 0x0000, 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 17456 0x0008, 0x0009, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17457 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17458 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17459 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17460 0x0000, 0x0000, 0x0000, 0x0000 17461 }, 17462 { /* page 169, index 32 */ 17463 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 17464 0x0009, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17465 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17466 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17467 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17468 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17469 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17470 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17471 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17472 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17473 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17474 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17475 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17476 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17477 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17478 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17479 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17480 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17481 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17482 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17483 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17484 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17485 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17486 0x0000, 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 17487 0x0008, 0x0009, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17488 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17489 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 17490 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x0000, 0x0000, 17491 0x0000, 0x0000, 0x0000, 0x0000 17492 }, 17493 { /* page 170, index 33 */ 17494 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17495 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17496 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17497 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17498 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17499 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17500 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17501 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17502 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17503 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 17504 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17505 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17506 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17507 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17508 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17509 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17510 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17511 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17512 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17513 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17514 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17515 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17516 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17517 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17518 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17519 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17520 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17521 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17522 0x0000, 0x0000, 0x0000, 0x0000 17523 }, 17524 { /* page 171, index 34 */ 17525 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17526 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17527 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17528 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17529 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17530 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17531 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17532 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17533 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17534 0x0000, 0x0000, 0xa7b3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17535 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17536 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17537 0x0000, 0x0000, 0x0000, 0x0000, 0x13a0, 0x13a1, 0x13a2, 0x13a3, 0x13a4, 17538 0x13a5, 0x13a6, 0x13a7, 0x13a8, 0x13a9, 0x13aa, 0x13ab, 0x13ac, 0x13ad, 17539 0x13ae, 0x13af, 0x13b0, 0x13b1, 0x13b2, 0x13b3, 0x13b4, 0x13b5, 0x13b6, 17540 0x13b7, 0x13b8, 0x13b9, 0x13ba, 0x13bb, 0x13bc, 0x13bd, 0x13be, 0x13bf, 17541 0x13c0, 0x13c1, 0x13c2, 0x13c3, 0x13c4, 0x13c5, 0x13c6, 0x13c7, 0x13c8, 17542 0x13c9, 0x13ca, 0x13cb, 0x13cc, 0x13cd, 0x13ce, 0x13cf, 0x13d0, 0x13d1, 17543 0x13d2, 0x13d3, 0x13d4, 0x13d5, 0x13d6, 0x13d7, 0x13d8, 0x13d9, 0x13da, 17544 0x13db, 0x13dc, 0x13dd, 0x13de, 0x13df, 0x13e0, 0x13e1, 0x13e2, 0x13e3, 17545 0x13e4, 0x13e5, 0x13e6, 0x13e7, 0x13e8, 0x13e9, 0x13ea, 0x13eb, 0x13ec, 17546 0x13ed, 0x13ee, 0x13ef, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17547 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17548 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17549 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17550 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17551 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 17552 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x0000, 0x0000, 17553 0x0000, 0x0000, 0x0000, 0x0000 17554 }, 17555 { /* page 251, index 35 */ 17556 0x100000f, 0x1000016, 0x100001d, 0x1000024, 0x100002d, 0x1000036, 17557 0x100003d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17558 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x100004f, 0x100005a, 0x1000065, 17559 0x1000070, 0x100007b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17560 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17561 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17562 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17563 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17564 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17565 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17566 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17567 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17568 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17569 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17570 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17571 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17572 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17573 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17574 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17575 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17576 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17577 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17578 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17579 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17580 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17581 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17582 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17583 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17584 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17585 0x0000 17586 }, 17587 { /* page 255, index 36 */ 17588 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17589 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 17590 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x0000, 17591 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xff41, 0xff42, 0xff43, 17592 0xff44, 0xff45, 0xff46, 0xff47, 0xff48, 0xff49, 0xff4a, 0xff4b, 0xff4c, 17593 0xff4d, 0xff4e, 0xff4f, 0xff50, 0xff51, 0xff52, 0xff53, 0xff54, 0xff55, 17594 0xff56, 0xff57, 0xff58, 0xff59, 0xff5a, 0x0000, 0x0000, 0x0000, 0x0000, 17595 0x0000, 0x0000, 0xff21, 0xff22, 0xff23, 0xff24, 0xff25, 0xff26, 0xff27, 17596 0xff28, 0xff29, 0xff2a, 0xff2b, 0xff2c, 0xff2d, 0xff2e, 0xff2f, 0xff30, 17597 0xff31, 0xff32, 0xff33, 0xff34, 0xff35, 0xff36, 0xff37, 0xff38, 0xff39, 17598 0xff3a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17599 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17600 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17601 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17602 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17603 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17604 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17605 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17606 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17607 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17608 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17609 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17610 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17611 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17612 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17613 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17614 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17615 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17616 0x0000, 0x0000, 0x0000, 0x0000 17617 }, 17618 { /* page 260, index 37 */ 17619 0x10428, 0x10429, 0x1042a, 0x1042b, 0x1042c, 0x1042d, 0x1042e, 0x1042f, 17620 0x10430, 0x10431, 0x10432, 0x10433, 0x10434, 0x10435, 0x10436, 0x10437, 17621 0x10438, 0x10439, 0x1043a, 0x1043b, 0x1043c, 0x1043d, 0x1043e, 0x1043f, 17622 0x10440, 0x10441, 0x10442, 0x10443, 0x10444, 0x10445, 0x10446, 0x10447, 17623 0x10448, 0x10449, 0x1044a, 0x1044b, 0x1044c, 0x1044d, 0x1044e, 0x1044f, 17624 0x10400, 0x10401, 0x10402, 0x10403, 0x10404, 0x10405, 0x10406, 0x10407, 17625 0x10408, 0x10409, 0x1040a, 0x1040b, 0x1040c, 0x1040d, 0x1040e, 0x1040f, 17626 0x10410, 0x10411, 0x10412, 0x10413, 0x10414, 0x10415, 0x10416, 0x10417, 17627 0x10418, 0x10419, 0x1041a, 0x1041b, 0x1041c, 0x1041d, 0x1041e, 0x1041f, 17628 0x10420, 0x10421, 0x10422, 0x10423, 0x10424, 0x10425, 0x10426, 0x10427, 17629 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17630 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17631 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17632 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17633 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17634 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17635 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17636 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17637 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17638 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 17639 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x104d8, 0x104d9, 17640 0x104da, 0x104db, 0x104dc, 0x104dd, 0x104de, 0x104df, 0x104e0, 0x104e1, 17641 0x104e2, 0x104e3, 0x104e4, 0x104e5, 0x104e6, 0x104e7, 0x104e8, 0x104e9, 17642 0x104ea, 0x104eb, 0x104ec, 0x104ed, 0x104ee, 0x104ef, 0x104f0, 0x104f1, 17643 0x104f2, 0x104f3, 0x104f4, 0x104f5, 0x104f6, 0x104f7, 0x104f8, 0x104f9, 17644 0x104fa, 0x104fb, 0x0000, 0x0000, 0x0000, 0x0000, 0x104b0, 0x104b1, 17645 0x104b2, 0x104b3, 0x104b4, 0x104b5, 0x104b6, 0x104b7, 0x104b8, 0x104b9, 17646 0x104ba, 0x104bb, 0x104bc, 0x104bd, 0x104be, 0x104bf, 0x104c0, 0x104c1, 17647 0x104c2, 0x104c3, 0x104c4, 0x104c5, 0x104c6, 0x104c7, 0x104c8, 0x104c9, 17648 0x104ca, 0x104cb, 0x104cc, 0x104cd, 0x104ce, 0x104cf, 0x104d0, 0x104d1, 17649 0x104d2, 0x104d3, 0x0000, 0x0000, 0x0000, 0x0000 17650 }, 17651 { /* page 268, index 38 */ 17652 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17653 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17654 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17655 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17656 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17657 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17658 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17659 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17660 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17661 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17662 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17663 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17664 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17665 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17666 0x0000, 0x0000, 0x10cc0, 0x10cc1, 0x10cc2, 0x10cc3, 0x10cc4, 0x10cc5, 17667 0x10cc6, 0x10cc7, 0x10cc8, 0x10cc9, 0x10cca, 0x10ccb, 0x10ccc, 0x10ccd, 17668 0x10cce, 0x10ccf, 0x10cd0, 0x10cd1, 0x10cd2, 0x10cd3, 0x10cd4, 0x10cd5, 17669 0x10cd6, 0x10cd7, 0x10cd8, 0x10cd9, 0x10cda, 0x10cdb, 0x10cdc, 0x10cdd, 17670 0x10cde, 0x10cdf, 0x10ce0, 0x10ce1, 0x10ce2, 0x10ce3, 0x10ce4, 0x10ce5, 17671 0x10ce6, 0x10ce7, 0x10ce8, 0x10ce9, 0x10cea, 0x10ceb, 0x10cec, 0x10ced, 17672 0x10cee, 0x10cef, 0x10cf0, 0x10cf1, 0x10cf2, 0x0000, 0x0000, 0x0000, 17673 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17674 0x0000, 0x10c80, 0x10c81, 0x10c82, 0x10c83, 0x10c84, 0x10c85, 0x10c86, 17675 0x10c87, 0x10c88, 0x10c89, 0x10c8a, 0x10c8b, 0x10c8c, 0x10c8d, 0x10c8e, 17676 0x10c8f, 0x10c90, 0x10c91, 0x10c92, 0x10c93, 0x10c94, 0x10c95, 0x10c96, 17677 0x10c97, 0x10c98, 0x10c99, 0x10c9a, 0x10c9b, 0x10c9c, 0x10c9d, 0x10c9e, 17678 0x10c9f, 0x10ca0, 0x10ca1, 0x10ca2, 0x10ca3, 0x10ca4, 0x10ca5, 0x10ca6, 17679 0x10ca7, 0x10ca8, 0x10ca9, 0x10caa, 0x10cab, 0x10cac, 0x10cad, 0x10cae, 17680 0x10caf, 0x10cb0, 0x10cb1, 0x10cb2, 0x0000, 0x0000, 0x0000, 0x0000, 17681 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 17682 }, 17683 { /* page 272, index 39 */ 17684 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17685 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17686 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17687 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17688 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17689 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17690 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17691 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17692 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17693 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17694 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17695 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 17696 0x0006, 0x0007, 0x0008, 0x0009, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17697 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17698 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17699 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17700 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17701 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17702 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17703 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17704 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17705 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17706 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17707 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17708 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17709 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17710 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 17711 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x0000, 0x0000, 17712 0x0000, 0x0000, 0x0000, 0x0000 17713 }, 17714 { /* page 273, index 40 */ 17715 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17716 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17717 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17718 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17719 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17720 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17721 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 17722 0x0009, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17723 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17724 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17725 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17726 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17727 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17728 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17729 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17730 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17731 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17732 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17733 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17734 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17735 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17736 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17737 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17738 0x0000, 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 17739 0x0008, 0x0009, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17740 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17741 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17742 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17743 0x0000, 0x0000, 0x0000, 0x0000 17744 }, 17745 { /* page 274, index 41 */ 17746 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17747 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17748 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17749 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17750 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17751 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17752 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17753 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17754 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17755 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17756 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17757 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17758 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17759 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17760 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17761 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17762 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17763 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17764 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17765 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17766 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17767 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17768 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17769 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17770 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17771 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17772 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 17773 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x0000, 0x0000, 17774 0x0000, 0x0000, 0x0000, 0x0000 17775 }, 17776 { /* page 276, index 42 */ 17777 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17778 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17779 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17780 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17781 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17782 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17783 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17784 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17785 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17786 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 17787 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17788 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17789 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17790 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17791 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17792 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17793 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17794 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17795 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17796 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17797 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17798 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17799 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17800 0x0000, 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 17801 0x0008, 0x0009, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17802 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17803 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17804 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17805 0x0000, 0x0000, 0x0000, 0x0000 17806 }, 17807 { /* page 278, index 43 */ 17808 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17809 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17810 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17811 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17812 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17813 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17814 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17815 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17816 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17817 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 17818 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17819 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17820 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17821 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17822 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17823 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17824 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17825 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17826 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17827 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17828 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17829 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 17830 0x0006, 0x0007, 0x0008, 0x0009, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17831 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17832 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17833 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17834 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17835 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17836 0x0000, 0x0000, 0x0000, 0x0000 17837 }, 17838 { /* page 279, index 44 */ 17839 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17840 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17841 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17842 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17843 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17844 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 17845 0x0006, 0x0007, 0x0008, 0x0009, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17846 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17847 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17848 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17849 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17850 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17851 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17852 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17853 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17854 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17855 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17856 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17857 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17858 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17859 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17860 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17861 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17862 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17863 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17864 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17865 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17866 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17867 0x0000, 0x0000, 0x0000, 0x0000 17868 }, 17869 { /* page 280, index 45 */ 17870 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17871 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17872 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17873 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17874 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17875 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17876 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17877 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17878 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17879 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17880 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17881 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17882 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17883 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17884 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17885 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17886 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17887 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x118c0, 0x118c1, 17888 0x118c2, 0x118c3, 0x118c4, 0x118c5, 0x118c6, 0x118c7, 0x118c8, 0x118c9, 17889 0x118ca, 0x118cb, 0x118cc, 0x118cd, 0x118ce, 0x118cf, 0x118d0, 0x118d1, 17890 0x118d2, 0x118d3, 0x118d4, 0x118d5, 0x118d6, 0x118d7, 0x118d8, 0x118d9, 17891 0x118da, 0x118db, 0x118dc, 0x118dd, 0x118de, 0x118df, 0x118a0, 0x118a1, 17892 0x118a2, 0x118a3, 0x118a4, 0x118a5, 0x118a6, 0x118a7, 0x118a8, 0x118a9, 17893 0x118aa, 0x118ab, 0x118ac, 0x118ad, 0x118ae, 0x118af, 0x118b0, 0x118b1, 17894 0x118b2, 0x118b3, 0x118b4, 0x118b5, 0x118b6, 0x118b7, 0x118b8, 0x118b9, 17895 0x118ba, 0x118bb, 0x118bc, 0x118bd, 0x118be, 0x118bf, 0x0000, 0x0001, 17896 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x0000, 17897 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17898 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17899 0x0000, 0x0000, 0x0000 17900 }, 17901 { /* page 284, index 46 */ 17902 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17903 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17904 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17905 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17906 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17907 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17908 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17909 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17910 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17911 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 17912 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17913 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17914 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17915 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17916 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17917 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17918 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17919 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17920 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17921 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17922 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17923 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17924 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17925 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17926 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17927 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17928 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17929 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17930 0x0000, 0x0000, 0x0000, 0x0000 17931 }, 17932 { /* page 285, index 47 */ 17933 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17934 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17935 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17936 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17937 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17938 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17939 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17940 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17941 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17942 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 17943 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17944 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17945 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17946 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17947 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17948 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17949 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17950 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17951 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17952 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17953 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17954 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17955 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17956 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17957 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17958 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17959 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17960 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17961 0x0000, 0x0000, 0x0000, 0x0000 17962 }, 17963 { /* page 362, index 48 */ 17964 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17965 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17966 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17967 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17968 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17969 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17970 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17971 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17972 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17973 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17974 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 17975 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x0000, 0x0000, 17976 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17977 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17978 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17979 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17980 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17981 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17982 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17983 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17984 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17985 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17986 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17987 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17988 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17989 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17990 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17991 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17992 0x0000, 0x0000, 0x0000, 0x0000 17993 }, 17994 { /* page 363, index 49 */ 17995 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17996 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17997 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17998 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 17999 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 18000 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 18001 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 18002 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 18003 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 18004 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 18005 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 18006 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 18007 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 18008 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 18009 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 18010 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 18011 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 18012 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 18013 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 18014 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 18015 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 18016 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 18017 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 18018 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 18019 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 18020 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 18021 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 18022 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 18023 0x0000, 0x0000, 0x0000, 0x0000 18024 }, 18025 { /* page 471, index 50 */ 18026 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 18027 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 18028 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 18029 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 18030 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 18031 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 18032 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 18033 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 18034 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 18035 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 18036 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 18037 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 18038 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 18039 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 18040 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 18041 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 18042 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 18043 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 18044 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 18045 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 18046 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 18047 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 18048 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 18049 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 18050 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 18051 0x0009, 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 18052 0x0008, 0x0009, 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 18053 0x0007, 0x0008, 0x0009, 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 18054 0x0006, 0x0007, 0x0008, 0x0009 18055 }, 18056 { /* page 489, index 51 */ 18057 0x1e922, 0x1e923, 0x1e924, 0x1e925, 0x1e926, 0x1e927, 0x1e928, 0x1e929, 18058 0x1e92a, 0x1e92b, 0x1e92c, 0x1e92d, 0x1e92e, 0x1e92f, 0x1e930, 0x1e931, 18059 0x1e932, 0x1e933, 0x1e934, 0x1e935, 0x1e936, 0x1e937, 0x1e938, 0x1e939, 18060 0x1e93a, 0x1e93b, 0x1e93c, 0x1e93d, 0x1e93e, 0x1e93f, 0x1e940, 0x1e941, 18061 0x1e942, 0x1e943, 0x1e900, 0x1e901, 0x1e902, 0x1e903, 0x1e904, 0x1e905, 18062 0x1e906, 0x1e907, 0x1e908, 0x1e909, 0x1e90a, 0x1e90b, 0x1e90c, 0x1e90d, 18063 0x1e90e, 0x1e90f, 0x1e910, 0x1e911, 0x1e912, 0x1e913, 0x1e914, 0x1e915, 18064 0x1e916, 0x1e917, 0x1e918, 0x1e919, 0x1e91a, 0x1e91b, 0x1e91c, 0x1e91d, 18065 0x1e91e, 0x1e91f, 0x1e920, 0x1e921, 0x0000, 0x0000, 0x0000, 0x0000, 18066 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 18067 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 18068 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 18069 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 18070 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 18071 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 18072 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 18073 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 18074 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 18075 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 18076 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 18077 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 18078 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 18079 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 18080 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 18081 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 18082 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 18083 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 18084 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 18085 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 18086 0x0000, 0x0000, 0x0000, 0x0000 18087 } 18088 }; 18089 18090 /* U+0000 through U+2FAFF */ 18091 static const int16_t attr_table_part1[763] = { 18092 0 /* page 0 */, 18093 1 /* page 1 */, 18094 2 /* page 2 */, 18095 3 /* page 3 */, 18096 4 /* page 4 */, 18097 5 /* page 5 */, 18098 6 /* page 6 */, 18099 7 /* page 7 */, 18100 0x0000 + UNICODE_MAX_TABLE_INDEX, 18101 8 /* page 9 */, 18102 9 /* page 10 */, 18103 10 /* page 11 */, 18104 11 /* page 12 */, 18105 12 /* page 13 */, 18106 13 /* page 14 */, 18107 14 /* page 15 */, 18108 15 /* page 16 */, 18109 0x0000 + UNICODE_MAX_TABLE_INDEX, 18110 0x0000 + UNICODE_MAX_TABLE_INDEX, 18111 16 /* page 19 */, 18112 0x0000 + UNICODE_MAX_TABLE_INDEX, 18113 0x0000 + UNICODE_MAX_TABLE_INDEX, 18114 0x0000 + UNICODE_MAX_TABLE_INDEX, 18115 17 /* page 23 */, 18116 18 /* page 24 */, 18117 19 /* page 25 */, 18118 20 /* page 26 */, 18119 21 /* page 27 */, 18120 22 /* page 28 */, 18121 23 /* page 29 */, 18122 24 /* page 30 */, 18123 25 /* page 31 */, 18124 0x0000 + UNICODE_MAX_TABLE_INDEX, 18125 26 /* page 33 */, 18126 0x0000 + UNICODE_MAX_TABLE_INDEX, 18127 0x0000 + UNICODE_MAX_TABLE_INDEX, 18128 0x0000 + UNICODE_MAX_TABLE_INDEX, 18129 0x0000 + UNICODE_MAX_TABLE_INDEX, 18130 0x0000 + UNICODE_MAX_TABLE_INDEX, 18131 0x0000 + UNICODE_MAX_TABLE_INDEX, 18132 0x0000 + UNICODE_MAX_TABLE_INDEX, 18133 0x0000 + UNICODE_MAX_TABLE_INDEX, 18134 0x0000 + UNICODE_MAX_TABLE_INDEX, 18135 0x0000 + UNICODE_MAX_TABLE_INDEX, 18136 27 /* page 44 */, 18137 28 /* page 45 */, 18138 0x0000 + UNICODE_MAX_TABLE_INDEX, 18139 0x0000 + UNICODE_MAX_TABLE_INDEX, 18140 0x0000 + UNICODE_MAX_TABLE_INDEX, 18141 0x0000 + UNICODE_MAX_TABLE_INDEX, 18142 0x0000 + UNICODE_MAX_TABLE_INDEX, 18143 0x0000 + UNICODE_MAX_TABLE_INDEX, 18144 0x0000 + UNICODE_MAX_TABLE_INDEX, 18145 0x0000 + UNICODE_MAX_TABLE_INDEX, 18146 0x0000 + UNICODE_MAX_TABLE_INDEX, 18147 0x0000 + UNICODE_MAX_TABLE_INDEX, 18148 0x0000 + UNICODE_MAX_TABLE_INDEX, 18149 0x0000 + UNICODE_MAX_TABLE_INDEX, 18150 0x0000 + UNICODE_MAX_TABLE_INDEX, 18151 0x0000 + UNICODE_MAX_TABLE_INDEX, 18152 0x0000 + UNICODE_MAX_TABLE_INDEX, 18153 0x0000 + UNICODE_MAX_TABLE_INDEX, 18154 0x0000 + UNICODE_MAX_TABLE_INDEX, 18155 0x0000 + UNICODE_MAX_TABLE_INDEX, 18156 0x0000 + UNICODE_MAX_TABLE_INDEX, 18157 0x0000 + UNICODE_MAX_TABLE_INDEX, 18158 0x0000 + UNICODE_MAX_TABLE_INDEX, 18159 0x0000 + UNICODE_MAX_TABLE_INDEX, 18160 0x0000 + UNICODE_MAX_TABLE_INDEX, 18161 0x0000 + UNICODE_MAX_TABLE_INDEX, 18162 0x0000 + UNICODE_MAX_TABLE_INDEX, 18163 0x0000 + UNICODE_MAX_TABLE_INDEX, 18164 0x0000 + UNICODE_MAX_TABLE_INDEX, 18165 0x0000 + UNICODE_MAX_TABLE_INDEX, 18166 0x0000 + UNICODE_MAX_TABLE_INDEX, 18167 0x0000 + UNICODE_MAX_TABLE_INDEX, 18168 0x0000 + UNICODE_MAX_TABLE_INDEX, 18169 0x0000 + UNICODE_MAX_TABLE_INDEX, 18170 0x0000 + UNICODE_MAX_TABLE_INDEX, 18171 0x0000 + UNICODE_MAX_TABLE_INDEX, 18172 0x0000 + UNICODE_MAX_TABLE_INDEX, 18173 0x0000 + UNICODE_MAX_TABLE_INDEX, 18174 0x0000 + UNICODE_MAX_TABLE_INDEX, 18175 0x0000 + UNICODE_MAX_TABLE_INDEX, 18176 0x0000 + UNICODE_MAX_TABLE_INDEX, 18177 0x0000 + UNICODE_MAX_TABLE_INDEX, 18178 0x0000 + UNICODE_MAX_TABLE_INDEX, 18179 0x0000 + UNICODE_MAX_TABLE_INDEX, 18180 0x0000 + UNICODE_MAX_TABLE_INDEX, 18181 0x0000 + UNICODE_MAX_TABLE_INDEX, 18182 0x0000 + UNICODE_MAX_TABLE_INDEX, 18183 0x0000 + UNICODE_MAX_TABLE_INDEX, 18184 0x0000 + UNICODE_MAX_TABLE_INDEX, 18185 0x0000 + UNICODE_MAX_TABLE_INDEX, 18186 0x0000 + UNICODE_MAX_TABLE_INDEX, 18187 0x0000 + UNICODE_MAX_TABLE_INDEX, 18188 0x0000 + UNICODE_MAX_TABLE_INDEX, 18189 0x0000 + UNICODE_MAX_TABLE_INDEX, 18190 0x0000 + UNICODE_MAX_TABLE_INDEX, 18191 0x0000 + UNICODE_MAX_TABLE_INDEX, 18192 0x0000 + UNICODE_MAX_TABLE_INDEX, 18193 0x0000 + UNICODE_MAX_TABLE_INDEX, 18194 0x0000 + UNICODE_MAX_TABLE_INDEX, 18195 0x0000 + UNICODE_MAX_TABLE_INDEX, 18196 0x0000 + UNICODE_MAX_TABLE_INDEX, 18197 0x0000 + UNICODE_MAX_TABLE_INDEX, 18198 0x0000 + UNICODE_MAX_TABLE_INDEX, 18199 0x0000 + UNICODE_MAX_TABLE_INDEX, 18200 0x0000 + UNICODE_MAX_TABLE_INDEX, 18201 0x0000 + UNICODE_MAX_TABLE_INDEX, 18202 0x0000 + UNICODE_MAX_TABLE_INDEX, 18203 0x0000 + UNICODE_MAX_TABLE_INDEX, 18204 0x0000 + UNICODE_MAX_TABLE_INDEX, 18205 0x0000 + UNICODE_MAX_TABLE_INDEX, 18206 0x0000 + UNICODE_MAX_TABLE_INDEX, 18207 0x0000 + UNICODE_MAX_TABLE_INDEX, 18208 0x0000 + UNICODE_MAX_TABLE_INDEX, 18209 0x0000 + UNICODE_MAX_TABLE_INDEX, 18210 0x0000 + UNICODE_MAX_TABLE_INDEX, 18211 0x0000 + UNICODE_MAX_TABLE_INDEX, 18212 0x0000 + UNICODE_MAX_TABLE_INDEX, 18213 0x0000 + UNICODE_MAX_TABLE_INDEX, 18214 0x0000 + UNICODE_MAX_TABLE_INDEX, 18215 0x0000 + UNICODE_MAX_TABLE_INDEX, 18216 0x0000 + UNICODE_MAX_TABLE_INDEX, 18217 0x0000 + UNICODE_MAX_TABLE_INDEX, 18218 0x0000 + UNICODE_MAX_TABLE_INDEX, 18219 0x0000 + UNICODE_MAX_TABLE_INDEX, 18220 0x0000 + UNICODE_MAX_TABLE_INDEX, 18221 0x0000 + UNICODE_MAX_TABLE_INDEX, 18222 0x0000 + UNICODE_MAX_TABLE_INDEX, 18223 0x0000 + UNICODE_MAX_TABLE_INDEX, 18224 0x0000 + UNICODE_MAX_TABLE_INDEX, 18225 0x0000 + UNICODE_MAX_TABLE_INDEX, 18226 0x0000 + UNICODE_MAX_TABLE_INDEX, 18227 0x0000 + UNICODE_MAX_TABLE_INDEX, 18228 0x0000 + UNICODE_MAX_TABLE_INDEX, 18229 0x0000 + UNICODE_MAX_TABLE_INDEX, 18230 0x0000 + UNICODE_MAX_TABLE_INDEX, 18231 0x0000 + UNICODE_MAX_TABLE_INDEX, 18232 0x0000 + UNICODE_MAX_TABLE_INDEX, 18233 0x0000 + UNICODE_MAX_TABLE_INDEX, 18234 0x0000 + UNICODE_MAX_TABLE_INDEX, 18235 0x0000 + UNICODE_MAX_TABLE_INDEX, 18236 0x0000 + UNICODE_MAX_TABLE_INDEX, 18237 0x0000 + UNICODE_MAX_TABLE_INDEX, 18238 0x0000 + UNICODE_MAX_TABLE_INDEX, 18239 0x0000 + UNICODE_MAX_TABLE_INDEX, 18240 0x0000 + UNICODE_MAX_TABLE_INDEX, 18241 0x0000 + UNICODE_MAX_TABLE_INDEX, 18242 0x0000 + UNICODE_MAX_TABLE_INDEX, 18243 0x0000 + UNICODE_MAX_TABLE_INDEX, 18244 0x0000 + UNICODE_MAX_TABLE_INDEX, 18245 0x0000 + UNICODE_MAX_TABLE_INDEX, 18246 0x0000 + UNICODE_MAX_TABLE_INDEX, 18247 0x0000 + UNICODE_MAX_TABLE_INDEX, 18248 0x0000 + UNICODE_MAX_TABLE_INDEX, 18249 0x0000 + UNICODE_MAX_TABLE_INDEX, 18250 0x0000 + UNICODE_MAX_TABLE_INDEX, 18251 0x0000 + UNICODE_MAX_TABLE_INDEX, 18252 0x0000 + UNICODE_MAX_TABLE_INDEX, 18253 0x0000 + UNICODE_MAX_TABLE_INDEX, 18254 0x0000 + UNICODE_MAX_TABLE_INDEX, 18255 0x0000 + UNICODE_MAX_TABLE_INDEX, 18256 0x0000 + UNICODE_MAX_TABLE_INDEX, 18257 0x0000 + UNICODE_MAX_TABLE_INDEX, 18258 29 /* page 166 */, 18259 30 /* page 167 */, 18260 31 /* page 168 */, 18261 32 /* page 169 */, 18262 33 /* page 170 */, 18263 34 /* page 171 */, 18264 0x0000 + UNICODE_MAX_TABLE_INDEX, 18265 0x0000 + UNICODE_MAX_TABLE_INDEX, 18266 0x0000 + UNICODE_MAX_TABLE_INDEX, 18267 0x0000 + UNICODE_MAX_TABLE_INDEX, 18268 0x0000 + UNICODE_MAX_TABLE_INDEX, 18269 0x0000 + UNICODE_MAX_TABLE_INDEX, 18270 0x0000 + UNICODE_MAX_TABLE_INDEX, 18271 0x0000 + UNICODE_MAX_TABLE_INDEX, 18272 0x0000 + UNICODE_MAX_TABLE_INDEX, 18273 0x0000 + UNICODE_MAX_TABLE_INDEX, 18274 0x0000 + UNICODE_MAX_TABLE_INDEX, 18275 0x0000 + UNICODE_MAX_TABLE_INDEX, 18276 0x0000 + UNICODE_MAX_TABLE_INDEX, 18277 0x0000 + UNICODE_MAX_TABLE_INDEX, 18278 0x0000 + UNICODE_MAX_TABLE_INDEX, 18279 0x0000 + UNICODE_MAX_TABLE_INDEX, 18280 0x0000 + UNICODE_MAX_TABLE_INDEX, 18281 0x0000 + UNICODE_MAX_TABLE_INDEX, 18282 0x0000 + UNICODE_MAX_TABLE_INDEX, 18283 0x0000 + UNICODE_MAX_TABLE_INDEX, 18284 0x0000 + UNICODE_MAX_TABLE_INDEX, 18285 0x0000 + UNICODE_MAX_TABLE_INDEX, 18286 0x0000 + UNICODE_MAX_TABLE_INDEX, 18287 0x0000 + UNICODE_MAX_TABLE_INDEX, 18288 0x0000 + UNICODE_MAX_TABLE_INDEX, 18289 0x0000 + UNICODE_MAX_TABLE_INDEX, 18290 0x0000 + UNICODE_MAX_TABLE_INDEX, 18291 0x0000 + UNICODE_MAX_TABLE_INDEX, 18292 0x0000 + UNICODE_MAX_TABLE_INDEX, 18293 0x0000 + UNICODE_MAX_TABLE_INDEX, 18294 0x0000 + UNICODE_MAX_TABLE_INDEX, 18295 0x0000 + UNICODE_MAX_TABLE_INDEX, 18296 0x0000 + UNICODE_MAX_TABLE_INDEX, 18297 0x0000 + UNICODE_MAX_TABLE_INDEX, 18298 0x0000 + UNICODE_MAX_TABLE_INDEX, 18299 0x0000 + UNICODE_MAX_TABLE_INDEX, 18300 0x0000 + UNICODE_MAX_TABLE_INDEX, 18301 0x0000 + UNICODE_MAX_TABLE_INDEX, 18302 0x0000 + UNICODE_MAX_TABLE_INDEX, 18303 0x0000 + UNICODE_MAX_TABLE_INDEX, 18304 0x0000 + UNICODE_MAX_TABLE_INDEX, 18305 0x0000 + UNICODE_MAX_TABLE_INDEX, 18306 0x0000 + UNICODE_MAX_TABLE_INDEX, 18307 0x0000 + UNICODE_MAX_TABLE_INDEX, 18308 0x0000 + UNICODE_MAX_TABLE_INDEX, 18309 0x0000 + UNICODE_MAX_TABLE_INDEX, 18310 0x0000 + UNICODE_MAX_TABLE_INDEX, 18311 0x0000 + UNICODE_MAX_TABLE_INDEX, 18312 0x0000 + UNICODE_MAX_TABLE_INDEX, 18313 0x0000 + UNICODE_MAX_TABLE_INDEX, 18314 0x0000 + UNICODE_MAX_TABLE_INDEX, 18315 0x0000 + UNICODE_MAX_TABLE_INDEX, 18316 0x0000 + UNICODE_MAX_TABLE_INDEX, 18317 0x0000 + UNICODE_MAX_TABLE_INDEX, 18318 0x0000 + UNICODE_MAX_TABLE_INDEX, 18319 0x0000 + UNICODE_MAX_TABLE_INDEX, 18320 0x0000 + UNICODE_MAX_TABLE_INDEX, 18321 0x0000 + UNICODE_MAX_TABLE_INDEX, 18322 0x0000 + UNICODE_MAX_TABLE_INDEX, 18323 0x0000 + UNICODE_MAX_TABLE_INDEX, 18324 0x0000 + UNICODE_MAX_TABLE_INDEX, 18325 0x0000 + UNICODE_MAX_TABLE_INDEX, 18326 0x0000 + UNICODE_MAX_TABLE_INDEX, 18327 0x0000 + UNICODE_MAX_TABLE_INDEX, 18328 0x0000 + UNICODE_MAX_TABLE_INDEX, 18329 0x0000 + UNICODE_MAX_TABLE_INDEX, 18330 0x0000 + UNICODE_MAX_TABLE_INDEX, 18331 0x0000 + UNICODE_MAX_TABLE_INDEX, 18332 0x0000 + UNICODE_MAX_TABLE_INDEX, 18333 0x0000 + UNICODE_MAX_TABLE_INDEX, 18334 0x0000 + UNICODE_MAX_TABLE_INDEX, 18335 0x0000 + UNICODE_MAX_TABLE_INDEX, 18336 0x0000 + UNICODE_MAX_TABLE_INDEX, 18337 0x0000 + UNICODE_MAX_TABLE_INDEX, 18338 0x0000 + UNICODE_MAX_TABLE_INDEX, 18339 0x0000 + UNICODE_MAX_TABLE_INDEX, 18340 0x0000 + UNICODE_MAX_TABLE_INDEX, 18341 0x0000 + UNICODE_MAX_TABLE_INDEX, 18342 0x0000 + UNICODE_MAX_TABLE_INDEX, 18343 35 /* page 251 */, 18344 0x0000 + UNICODE_MAX_TABLE_INDEX, 18345 0x0000 + UNICODE_MAX_TABLE_INDEX, 18346 0x0000 + UNICODE_MAX_TABLE_INDEX, 18347 36 /* page 255 */, 18348 0x0000 + UNICODE_MAX_TABLE_INDEX, 18349 0x0000 + UNICODE_MAX_TABLE_INDEX, 18350 0x0000 + UNICODE_MAX_TABLE_INDEX, 18351 0x0000 + UNICODE_MAX_TABLE_INDEX, 18352 37 /* page 260 */, 18353 0x0000 + UNICODE_MAX_TABLE_INDEX, 18354 0x0000 + UNICODE_MAX_TABLE_INDEX, 18355 0x0000 + UNICODE_MAX_TABLE_INDEX, 18356 0x0000 + UNICODE_MAX_TABLE_INDEX, 18357 0x0000 + UNICODE_MAX_TABLE_INDEX, 18358 0x0000 + UNICODE_MAX_TABLE_INDEX, 18359 0x0000 + UNICODE_MAX_TABLE_INDEX, 18360 38 /* page 268 */, 18361 0x0000 + UNICODE_MAX_TABLE_INDEX, 18362 0x0000 + UNICODE_MAX_TABLE_INDEX, 18363 0x0000 + UNICODE_MAX_TABLE_INDEX, 18364 39 /* page 272 */, 18365 40 /* page 273 */, 18366 41 /* page 274 */, 18367 0x0000 + UNICODE_MAX_TABLE_INDEX, 18368 42 /* page 276 */, 18369 0x0000 + UNICODE_MAX_TABLE_INDEX, 18370 43 /* page 278 */, 18371 44 /* page 279 */, 18372 45 /* page 280 */, 18373 0x0000 + UNICODE_MAX_TABLE_INDEX, 18374 0x0000 + UNICODE_MAX_TABLE_INDEX, 18375 0x0000 + UNICODE_MAX_TABLE_INDEX, 18376 46 /* page 284 */, 18377 47 /* page 285 */, 18378 0x0000 + UNICODE_MAX_TABLE_INDEX, 18379 0x0000 + UNICODE_MAX_TABLE_INDEX, 18380 0x0000 + UNICODE_MAX_TABLE_INDEX, 18381 0x0000 + UNICODE_MAX_TABLE_INDEX, 18382 0x0000 + UNICODE_MAX_TABLE_INDEX, 18383 0x0000 + UNICODE_MAX_TABLE_INDEX, 18384 0x0000 + UNICODE_MAX_TABLE_INDEX, 18385 0x0000 + UNICODE_MAX_TABLE_INDEX, 18386 0x0000 + UNICODE_MAX_TABLE_INDEX, 18387 0x0000 + UNICODE_MAX_TABLE_INDEX, 18388 0x0000 + UNICODE_MAX_TABLE_INDEX, 18389 0x0000 + UNICODE_MAX_TABLE_INDEX, 18390 0x0000 + UNICODE_MAX_TABLE_INDEX, 18391 0x0000 + UNICODE_MAX_TABLE_INDEX, 18392 0x0000 + UNICODE_MAX_TABLE_INDEX, 18393 0x0000 + UNICODE_MAX_TABLE_INDEX, 18394 0x0000 + UNICODE_MAX_TABLE_INDEX, 18395 0x0000 + UNICODE_MAX_TABLE_INDEX, 18396 0x0000 + UNICODE_MAX_TABLE_INDEX, 18397 0x0000 + UNICODE_MAX_TABLE_INDEX, 18398 0x0000 + UNICODE_MAX_TABLE_INDEX, 18399 0x0000 + UNICODE_MAX_TABLE_INDEX, 18400 0x0000 + UNICODE_MAX_TABLE_INDEX, 18401 0x0000 + UNICODE_MAX_TABLE_INDEX, 18402 0x0000 + UNICODE_MAX_TABLE_INDEX, 18403 0x0000 + UNICODE_MAX_TABLE_INDEX, 18404 0x0000 + UNICODE_MAX_TABLE_INDEX, 18405 0x0000 + UNICODE_MAX_TABLE_INDEX, 18406 0x0000 + UNICODE_MAX_TABLE_INDEX, 18407 0x0000 + UNICODE_MAX_TABLE_INDEX, 18408 0x0000 + UNICODE_MAX_TABLE_INDEX, 18409 0x0000 + UNICODE_MAX_TABLE_INDEX, 18410 0x0000 + UNICODE_MAX_TABLE_INDEX, 18411 0x0000 + UNICODE_MAX_TABLE_INDEX, 18412 0x0000 + UNICODE_MAX_TABLE_INDEX, 18413 0x0000 + UNICODE_MAX_TABLE_INDEX, 18414 0x0000 + UNICODE_MAX_TABLE_INDEX, 18415 0x0000 + UNICODE_MAX_TABLE_INDEX, 18416 0x0000 + UNICODE_MAX_TABLE_INDEX, 18417 0x0000 + UNICODE_MAX_TABLE_INDEX, 18418 0x0000 + UNICODE_MAX_TABLE_INDEX, 18419 0x0000 + UNICODE_MAX_TABLE_INDEX, 18420 0x0000 + UNICODE_MAX_TABLE_INDEX, 18421 0x0000 + UNICODE_MAX_TABLE_INDEX, 18422 0x0000 + UNICODE_MAX_TABLE_INDEX, 18423 0x0000 + UNICODE_MAX_TABLE_INDEX, 18424 0x0000 + UNICODE_MAX_TABLE_INDEX, 18425 0x0000 + UNICODE_MAX_TABLE_INDEX, 18426 0x0000 + UNICODE_MAX_TABLE_INDEX, 18427 0x0000 + UNICODE_MAX_TABLE_INDEX, 18428 0x0000 + UNICODE_MAX_TABLE_INDEX, 18429 0x0000 + UNICODE_MAX_TABLE_INDEX, 18430 0x0000 + UNICODE_MAX_TABLE_INDEX, 18431 0x0000 + UNICODE_MAX_TABLE_INDEX, 18432 0x0000 + UNICODE_MAX_TABLE_INDEX, 18433 0x0000 + UNICODE_MAX_TABLE_INDEX, 18434 0x0000 + UNICODE_MAX_TABLE_INDEX, 18435 0x0000 + UNICODE_MAX_TABLE_INDEX, 18436 0x0000 + UNICODE_MAX_TABLE_INDEX, 18437 0x0000 + UNICODE_MAX_TABLE_INDEX, 18438 0x0000 + UNICODE_MAX_TABLE_INDEX, 18439 0x0000 + UNICODE_MAX_TABLE_INDEX, 18440 0x0000 + UNICODE_MAX_TABLE_INDEX, 18441 0x0000 + UNICODE_MAX_TABLE_INDEX, 18442 0x0000 + UNICODE_MAX_TABLE_INDEX, 18443 0x0000 + UNICODE_MAX_TABLE_INDEX, 18444 0x0000 + UNICODE_MAX_TABLE_INDEX, 18445 0x0000 + UNICODE_MAX_TABLE_INDEX, 18446 0x0000 + UNICODE_MAX_TABLE_INDEX, 18447 0x0000 + UNICODE_MAX_TABLE_INDEX, 18448 0x0000 + UNICODE_MAX_TABLE_INDEX, 18449 0x0000 + UNICODE_MAX_TABLE_INDEX, 18450 0x0000 + UNICODE_MAX_TABLE_INDEX, 18451 0x0000 + UNICODE_MAX_TABLE_INDEX, 18452 0x0000 + UNICODE_MAX_TABLE_INDEX, 18453 0x0000 + UNICODE_MAX_TABLE_INDEX, 18454 48 /* page 362 */, 18455 49 /* page 363 */, 18456 0x0000 + UNICODE_MAX_TABLE_INDEX, 18457 0x0000 + UNICODE_MAX_TABLE_INDEX, 18458 0x0000 + UNICODE_MAX_TABLE_INDEX, 18459 0x0000 + UNICODE_MAX_TABLE_INDEX, 18460 0x0000 + UNICODE_MAX_TABLE_INDEX, 18461 0x0000 + UNICODE_MAX_TABLE_INDEX, 18462 0x0000 + UNICODE_MAX_TABLE_INDEX, 18463 0x0000 + UNICODE_MAX_TABLE_INDEX, 18464 0x0000 + UNICODE_MAX_TABLE_INDEX, 18465 0x0000 + UNICODE_MAX_TABLE_INDEX, 18466 0x0000 + UNICODE_MAX_TABLE_INDEX, 18467 0x0000 + UNICODE_MAX_TABLE_INDEX, 18468 0x0000 + UNICODE_MAX_TABLE_INDEX, 18469 0x0000 + UNICODE_MAX_TABLE_INDEX, 18470 0x0000 + UNICODE_MAX_TABLE_INDEX, 18471 0x0000 + UNICODE_MAX_TABLE_INDEX, 18472 0x0000 + UNICODE_MAX_TABLE_INDEX, 18473 0x0000 + UNICODE_MAX_TABLE_INDEX, 18474 0x0000 + UNICODE_MAX_TABLE_INDEX, 18475 0x0000 + UNICODE_MAX_TABLE_INDEX, 18476 0x0000 + UNICODE_MAX_TABLE_INDEX, 18477 0x0000 + UNICODE_MAX_TABLE_INDEX, 18478 0x0000 + UNICODE_MAX_TABLE_INDEX, 18479 0x0000 + UNICODE_MAX_TABLE_INDEX, 18480 0x0000 + UNICODE_MAX_TABLE_INDEX, 18481 0x0000 + UNICODE_MAX_TABLE_INDEX, 18482 0x0000 + UNICODE_MAX_TABLE_INDEX, 18483 0x0000 + UNICODE_MAX_TABLE_INDEX, 18484 0x0000 + UNICODE_MAX_TABLE_INDEX, 18485 0x0000 + UNICODE_MAX_TABLE_INDEX, 18486 0x0000 + UNICODE_MAX_TABLE_INDEX, 18487 0x0000 + UNICODE_MAX_TABLE_INDEX, 18488 0x0000 + UNICODE_MAX_TABLE_INDEX, 18489 0x0000 + UNICODE_MAX_TABLE_INDEX, 18490 0x0000 + UNICODE_MAX_TABLE_INDEX, 18491 0x0000 + UNICODE_MAX_TABLE_INDEX, 18492 0x0000 + UNICODE_MAX_TABLE_INDEX, 18493 0x0000 + UNICODE_MAX_TABLE_INDEX, 18494 0x0000 + UNICODE_MAX_TABLE_INDEX, 18495 0x0000 + UNICODE_MAX_TABLE_INDEX, 18496 0x0000 + UNICODE_MAX_TABLE_INDEX, 18497 0x0000 + UNICODE_MAX_TABLE_INDEX, 18498 0x0000 + UNICODE_MAX_TABLE_INDEX, 18499 0x0000 + UNICODE_MAX_TABLE_INDEX, 18500 0x0000 + UNICODE_MAX_TABLE_INDEX, 18501 0x0000 + UNICODE_MAX_TABLE_INDEX, 18502 0x0000 + UNICODE_MAX_TABLE_INDEX, 18503 0x0000 + UNICODE_MAX_TABLE_INDEX, 18504 0x0000 + UNICODE_MAX_TABLE_INDEX, 18505 0x0000 + UNICODE_MAX_TABLE_INDEX, 18506 0x0000 + UNICODE_MAX_TABLE_INDEX, 18507 0x0000 + UNICODE_MAX_TABLE_INDEX, 18508 0x0000 + UNICODE_MAX_TABLE_INDEX, 18509 0x0000 + UNICODE_MAX_TABLE_INDEX, 18510 0x0000 + UNICODE_MAX_TABLE_INDEX, 18511 0x0000 + UNICODE_MAX_TABLE_INDEX, 18512 0x0000 + UNICODE_MAX_TABLE_INDEX, 18513 0x0000 + UNICODE_MAX_TABLE_INDEX, 18514 0x0000 + UNICODE_MAX_TABLE_INDEX, 18515 0x0000 + UNICODE_MAX_TABLE_INDEX, 18516 0x0000 + UNICODE_MAX_TABLE_INDEX, 18517 0x0000 + UNICODE_MAX_TABLE_INDEX, 18518 0x0000 + UNICODE_MAX_TABLE_INDEX, 18519 0x0000 + UNICODE_MAX_TABLE_INDEX, 18520 0x0000 + UNICODE_MAX_TABLE_INDEX, 18521 0x0000 + UNICODE_MAX_TABLE_INDEX, 18522 0x0000 + UNICODE_MAX_TABLE_INDEX, 18523 0x0000 + UNICODE_MAX_TABLE_INDEX, 18524 0x0000 + UNICODE_MAX_TABLE_INDEX, 18525 0x0000 + UNICODE_MAX_TABLE_INDEX, 18526 0x0000 + UNICODE_MAX_TABLE_INDEX, 18527 0x0000 + UNICODE_MAX_TABLE_INDEX, 18528 0x0000 + UNICODE_MAX_TABLE_INDEX, 18529 0x0000 + UNICODE_MAX_TABLE_INDEX, 18530 0x0000 + UNICODE_MAX_TABLE_INDEX, 18531 0x0000 + UNICODE_MAX_TABLE_INDEX, 18532 0x0000 + UNICODE_MAX_TABLE_INDEX, 18533 0x0000 + UNICODE_MAX_TABLE_INDEX, 18534 0x0000 + UNICODE_MAX_TABLE_INDEX, 18535 0x0000 + UNICODE_MAX_TABLE_INDEX, 18536 0x0000 + UNICODE_MAX_TABLE_INDEX, 18537 0x0000 + UNICODE_MAX_TABLE_INDEX, 18538 0x0000 + UNICODE_MAX_TABLE_INDEX, 18539 0x0000 + UNICODE_MAX_TABLE_INDEX, 18540 0x0000 + UNICODE_MAX_TABLE_INDEX, 18541 0x0000 + UNICODE_MAX_TABLE_INDEX, 18542 0x0000 + UNICODE_MAX_TABLE_INDEX, 18543 0x0000 + UNICODE_MAX_TABLE_INDEX, 18544 0x0000 + UNICODE_MAX_TABLE_INDEX, 18545 0x0000 + UNICODE_MAX_TABLE_INDEX, 18546 0x0000 + UNICODE_MAX_TABLE_INDEX, 18547 0x0000 + UNICODE_MAX_TABLE_INDEX, 18548 0x0000 + UNICODE_MAX_TABLE_INDEX, 18549 0x0000 + UNICODE_MAX_TABLE_INDEX, 18550 0x0000 + UNICODE_MAX_TABLE_INDEX, 18551 0x0000 + UNICODE_MAX_TABLE_INDEX, 18552 0x0000 + UNICODE_MAX_TABLE_INDEX, 18553 0x0000 + UNICODE_MAX_TABLE_INDEX, 18554 0x0000 + UNICODE_MAX_TABLE_INDEX, 18555 0x0000 + UNICODE_MAX_TABLE_INDEX, 18556 0x0000 + UNICODE_MAX_TABLE_INDEX, 18557 0x0000 + UNICODE_MAX_TABLE_INDEX, 18558 0x0000 + UNICODE_MAX_TABLE_INDEX, 18559 0x0000 + UNICODE_MAX_TABLE_INDEX, 18560 0x0000 + UNICODE_MAX_TABLE_INDEX, 18561 0x0000 + UNICODE_MAX_TABLE_INDEX, 18562 0x0000 + UNICODE_MAX_TABLE_INDEX, 18563 50 /* page 471 */, 18564 0x0000 + UNICODE_MAX_TABLE_INDEX, 18565 0x0000 + UNICODE_MAX_TABLE_INDEX, 18566 0x0000 + UNICODE_MAX_TABLE_INDEX, 18567 0x0000 + UNICODE_MAX_TABLE_INDEX, 18568 0x0000 + UNICODE_MAX_TABLE_INDEX, 18569 0x0000 + UNICODE_MAX_TABLE_INDEX, 18570 0x0000 + UNICODE_MAX_TABLE_INDEX, 18571 0x0000 + UNICODE_MAX_TABLE_INDEX, 18572 0x0000 + UNICODE_MAX_TABLE_INDEX, 18573 0x0000 + UNICODE_MAX_TABLE_INDEX, 18574 0x0000 + UNICODE_MAX_TABLE_INDEX, 18575 0x0000 + UNICODE_MAX_TABLE_INDEX, 18576 0x0000 + UNICODE_MAX_TABLE_INDEX, 18577 0x0000 + UNICODE_MAX_TABLE_INDEX, 18578 0x0000 + UNICODE_MAX_TABLE_INDEX, 18579 0x0000 + UNICODE_MAX_TABLE_INDEX, 18580 0x0000 + UNICODE_MAX_TABLE_INDEX, 18581 51 /* page 489 */, 18582 0x0000 + UNICODE_MAX_TABLE_INDEX, 18583 0x0000 + UNICODE_MAX_TABLE_INDEX, 18584 0x0000 + UNICODE_MAX_TABLE_INDEX, 18585 0x0000 + UNICODE_MAX_TABLE_INDEX, 18586 0x0000 + UNICODE_MAX_TABLE_INDEX, 18587 0x0000 + UNICODE_MAX_TABLE_INDEX, 18588 0x0000 + UNICODE_MAX_TABLE_INDEX, 18589 0x0000 + UNICODE_MAX_TABLE_INDEX, 18590 0x0000 + UNICODE_MAX_TABLE_INDEX, 18591 0x0000 + UNICODE_MAX_TABLE_INDEX, 18592 0x0000 + UNICODE_MAX_TABLE_INDEX, 18593 0x0000 + UNICODE_MAX_TABLE_INDEX, 18594 0x0000 + UNICODE_MAX_TABLE_INDEX, 18595 0x0000 + UNICODE_MAX_TABLE_INDEX, 18596 0x0000 + UNICODE_MAX_TABLE_INDEX, 18597 0x0000 + UNICODE_MAX_TABLE_INDEX, 18598 0x0000 + UNICODE_MAX_TABLE_INDEX, 18599 0x0000 + UNICODE_MAX_TABLE_INDEX, 18600 0x0000 + UNICODE_MAX_TABLE_INDEX, 18601 0x0000 + UNICODE_MAX_TABLE_INDEX, 18602 0x0000 + UNICODE_MAX_TABLE_INDEX, 18603 0x0000 + UNICODE_MAX_TABLE_INDEX, 18604 0x0000 + UNICODE_MAX_TABLE_INDEX, 18605 0x0000 + UNICODE_MAX_TABLE_INDEX, 18606 0x0000 + UNICODE_MAX_TABLE_INDEX, 18607 0x0000 + UNICODE_MAX_TABLE_INDEX, 18608 0x0000 + UNICODE_MAX_TABLE_INDEX, 18609 0x0000 + UNICODE_MAX_TABLE_INDEX, 18610 0x0000 + UNICODE_MAX_TABLE_INDEX, 18611 0x0000 + UNICODE_MAX_TABLE_INDEX, 18612 0x0000 + UNICODE_MAX_TABLE_INDEX, 18613 0x0000 + UNICODE_MAX_TABLE_INDEX, 18614 0x0000 + UNICODE_MAX_TABLE_INDEX, 18615 0x0000 + UNICODE_MAX_TABLE_INDEX, 18616 0x0000 + UNICODE_MAX_TABLE_INDEX, 18617 0x0000 + UNICODE_MAX_TABLE_INDEX, 18618 0x0000 + UNICODE_MAX_TABLE_INDEX, 18619 0x0000 + UNICODE_MAX_TABLE_INDEX, 18620 0x0000 + UNICODE_MAX_TABLE_INDEX, 18621 0x0000 + UNICODE_MAX_TABLE_INDEX, 18622 0x0000 + UNICODE_MAX_TABLE_INDEX, 18623 0x0000 + UNICODE_MAX_TABLE_INDEX, 18624 0x0000 + UNICODE_MAX_TABLE_INDEX, 18625 0x0000 + UNICODE_MAX_TABLE_INDEX, 18626 0x0000 + UNICODE_MAX_TABLE_INDEX, 18627 0x0000 + UNICODE_MAX_TABLE_INDEX, 18628 0x0000 + UNICODE_MAX_TABLE_INDEX, 18629 0x0000 + UNICODE_MAX_TABLE_INDEX, 18630 0x0000 + UNICODE_MAX_TABLE_INDEX, 18631 0x0000 + UNICODE_MAX_TABLE_INDEX, 18632 0x0000 + UNICODE_MAX_TABLE_INDEX, 18633 0x0000 + UNICODE_MAX_TABLE_INDEX, 18634 0x0000 + UNICODE_MAX_TABLE_INDEX, 18635 0x0000 + UNICODE_MAX_TABLE_INDEX, 18636 0x0000 + UNICODE_MAX_TABLE_INDEX, 18637 0x0000 + UNICODE_MAX_TABLE_INDEX, 18638 0x0000 + UNICODE_MAX_TABLE_INDEX, 18639 0x0000 + UNICODE_MAX_TABLE_INDEX, 18640 0x0000 + UNICODE_MAX_TABLE_INDEX, 18641 0x0000 + UNICODE_MAX_TABLE_INDEX, 18642 0x0000 + UNICODE_MAX_TABLE_INDEX, 18643 0x0000 + UNICODE_MAX_TABLE_INDEX, 18644 0x0000 + UNICODE_MAX_TABLE_INDEX, 18645 0x0000 + UNICODE_MAX_TABLE_INDEX, 18646 0x0000 + UNICODE_MAX_TABLE_INDEX, 18647 0x0000 + UNICODE_MAX_TABLE_INDEX, 18648 0x0000 + UNICODE_MAX_TABLE_INDEX, 18649 0x0000 + UNICODE_MAX_TABLE_INDEX, 18650 0x0000 + UNICODE_MAX_TABLE_INDEX, 18651 0x0000 + UNICODE_MAX_TABLE_INDEX, 18652 0x0000 + UNICODE_MAX_TABLE_INDEX, 18653 0x0000 + UNICODE_MAX_TABLE_INDEX, 18654 0x0000 + UNICODE_MAX_TABLE_INDEX, 18655 0x0000 + UNICODE_MAX_TABLE_INDEX, 18656 0x0000 + UNICODE_MAX_TABLE_INDEX, 18657 0x0000 + UNICODE_MAX_TABLE_INDEX, 18658 0x0000 + UNICODE_MAX_TABLE_INDEX, 18659 0x0000 + UNICODE_MAX_TABLE_INDEX, 18660 0x0000 + UNICODE_MAX_TABLE_INDEX, 18661 0x0000 + UNICODE_MAX_TABLE_INDEX, 18662 0x0000 + UNICODE_MAX_TABLE_INDEX, 18663 0x0000 + UNICODE_MAX_TABLE_INDEX, 18664 0x0000 + UNICODE_MAX_TABLE_INDEX, 18665 0x0000 + UNICODE_MAX_TABLE_INDEX, 18666 0x0000 + UNICODE_MAX_TABLE_INDEX, 18667 0x0000 + UNICODE_MAX_TABLE_INDEX, 18668 0x0000 + UNICODE_MAX_TABLE_INDEX, 18669 0x0000 + UNICODE_MAX_TABLE_INDEX, 18670 0x0000 + UNICODE_MAX_TABLE_INDEX, 18671 0x0000 + UNICODE_MAX_TABLE_INDEX, 18672 0x0000 + UNICODE_MAX_TABLE_INDEX, 18673 0x0000 + UNICODE_MAX_TABLE_INDEX, 18674 0x0000 + UNICODE_MAX_TABLE_INDEX, 18675 0x0000 + UNICODE_MAX_TABLE_INDEX, 18676 0x0000 + UNICODE_MAX_TABLE_INDEX, 18677 0x0000 + UNICODE_MAX_TABLE_INDEX, 18678 0x0000 + UNICODE_MAX_TABLE_INDEX, 18679 0x0000 + UNICODE_MAX_TABLE_INDEX, 18680 0x0000 + UNICODE_MAX_TABLE_INDEX, 18681 0x0000 + UNICODE_MAX_TABLE_INDEX, 18682 0x0000 + UNICODE_MAX_TABLE_INDEX, 18683 0x0000 + UNICODE_MAX_TABLE_INDEX, 18684 0x0000 + UNICODE_MAX_TABLE_INDEX, 18685 0x0000 + UNICODE_MAX_TABLE_INDEX, 18686 0x0000 + UNICODE_MAX_TABLE_INDEX, 18687 0x0000 + UNICODE_MAX_TABLE_INDEX, 18688 0x0000 + UNICODE_MAX_TABLE_INDEX, 18689 0x0000 + UNICODE_MAX_TABLE_INDEX, 18690 0x0000 + UNICODE_MAX_TABLE_INDEX, 18691 0x0000 + UNICODE_MAX_TABLE_INDEX, 18692 0x0000 + UNICODE_MAX_TABLE_INDEX, 18693 0x0000 + UNICODE_MAX_TABLE_INDEX, 18694 0x0000 + UNICODE_MAX_TABLE_INDEX, 18695 0x0000 + UNICODE_MAX_TABLE_INDEX, 18696 0x0000 + UNICODE_MAX_TABLE_INDEX, 18697 0x0000 + UNICODE_MAX_TABLE_INDEX, 18698 0x0000 + UNICODE_MAX_TABLE_INDEX, 18699 0x0000 + UNICODE_MAX_TABLE_INDEX, 18700 0x0000 + UNICODE_MAX_TABLE_INDEX, 18701 0x0000 + UNICODE_MAX_TABLE_INDEX, 18702 0x0000 + UNICODE_MAX_TABLE_INDEX, 18703 0x0000 + UNICODE_MAX_TABLE_INDEX, 18704 0x0000 + UNICODE_MAX_TABLE_INDEX, 18705 0x0000 + UNICODE_MAX_TABLE_INDEX, 18706 0x0000 + UNICODE_MAX_TABLE_INDEX, 18707 0x0000 + UNICODE_MAX_TABLE_INDEX, 18708 0x0000 + UNICODE_MAX_TABLE_INDEX, 18709 0x0000 + UNICODE_MAX_TABLE_INDEX, 18710 0x0000 + UNICODE_MAX_TABLE_INDEX, 18711 0x0000 + UNICODE_MAX_TABLE_INDEX, 18712 0x0000 + UNICODE_MAX_TABLE_INDEX, 18713 0x0000 + UNICODE_MAX_TABLE_INDEX, 18714 0x0000 + UNICODE_MAX_TABLE_INDEX, 18715 0x0000 + UNICODE_MAX_TABLE_INDEX, 18716 0x0000 + UNICODE_MAX_TABLE_INDEX, 18717 0x0000 + UNICODE_MAX_TABLE_INDEX, 18718 0x0000 + UNICODE_MAX_TABLE_INDEX, 18719 0x0000 + UNICODE_MAX_TABLE_INDEX, 18720 0x0000 + UNICODE_MAX_TABLE_INDEX, 18721 0x0000 + UNICODE_MAX_TABLE_INDEX, 18722 0x0000 + UNICODE_MAX_TABLE_INDEX, 18723 0x0000 + UNICODE_MAX_TABLE_INDEX, 18724 0x0000 + UNICODE_MAX_TABLE_INDEX, 18725 0x0000 + UNICODE_MAX_TABLE_INDEX, 18726 0x0000 + UNICODE_MAX_TABLE_INDEX, 18727 0x0000 + UNICODE_MAX_TABLE_INDEX, 18728 0x0000 + UNICODE_MAX_TABLE_INDEX, 18729 0x0000 + UNICODE_MAX_TABLE_INDEX, 18730 0x0000 + UNICODE_MAX_TABLE_INDEX, 18731 0x0000 + UNICODE_MAX_TABLE_INDEX, 18732 0x0000 + UNICODE_MAX_TABLE_INDEX, 18733 0x0000 + UNICODE_MAX_TABLE_INDEX, 18734 0x0000 + UNICODE_MAX_TABLE_INDEX, 18735 0x0000 + UNICODE_MAX_TABLE_INDEX, 18736 0x0000 + UNICODE_MAX_TABLE_INDEX, 18737 0x0000 + UNICODE_MAX_TABLE_INDEX, 18738 0x0000 + UNICODE_MAX_TABLE_INDEX, 18739 0x0000 + UNICODE_MAX_TABLE_INDEX, 18740 0x0000 + UNICODE_MAX_TABLE_INDEX, 18741 0x0000 + UNICODE_MAX_TABLE_INDEX, 18742 0x0000 + UNICODE_MAX_TABLE_INDEX, 18743 0x0000 + UNICODE_MAX_TABLE_INDEX, 18744 0x0000 + UNICODE_MAX_TABLE_INDEX, 18745 0x0000 + UNICODE_MAX_TABLE_INDEX, 18746 0x0000 + UNICODE_MAX_TABLE_INDEX, 18747 0x0000 + UNICODE_MAX_TABLE_INDEX, 18748 0x0000 + UNICODE_MAX_TABLE_INDEX, 18749 0x0000 + UNICODE_MAX_TABLE_INDEX, 18750 0x0000 + UNICODE_MAX_TABLE_INDEX, 18751 0x0000 + UNICODE_MAX_TABLE_INDEX, 18752 0x0000 + UNICODE_MAX_TABLE_INDEX, 18753 0x0000 + UNICODE_MAX_TABLE_INDEX, 18754 0x0000 + UNICODE_MAX_TABLE_INDEX, 18755 0x0000 + UNICODE_MAX_TABLE_INDEX, 18756 0x0000 + UNICODE_MAX_TABLE_INDEX, 18757 0x0000 + UNICODE_MAX_TABLE_INDEX, 18758 0x0000 + UNICODE_MAX_TABLE_INDEX, 18759 0x0000 + UNICODE_MAX_TABLE_INDEX, 18760 0x0000 + UNICODE_MAX_TABLE_INDEX, 18761 0x0000 + UNICODE_MAX_TABLE_INDEX, 18762 0x0000 + UNICODE_MAX_TABLE_INDEX, 18763 0x0000 + UNICODE_MAX_TABLE_INDEX, 18764 0x0000 + UNICODE_MAX_TABLE_INDEX, 18765 0x0000 + UNICODE_MAX_TABLE_INDEX, 18766 0x0000 + UNICODE_MAX_TABLE_INDEX, 18767 0x0000 + UNICODE_MAX_TABLE_INDEX, 18768 0x0000 + UNICODE_MAX_TABLE_INDEX, 18769 0x0000 + UNICODE_MAX_TABLE_INDEX, 18770 0x0000 + UNICODE_MAX_TABLE_INDEX, 18771 0x0000 + UNICODE_MAX_TABLE_INDEX, 18772 0x0000 + UNICODE_MAX_TABLE_INDEX, 18773 0x0000 + UNICODE_MAX_TABLE_INDEX, 18774 0x0000 + UNICODE_MAX_TABLE_INDEX, 18775 0x0000 + UNICODE_MAX_TABLE_INDEX, 18776 0x0000 + UNICODE_MAX_TABLE_INDEX, 18777 0x0000 + UNICODE_MAX_TABLE_INDEX, 18778 0x0000 + UNICODE_MAX_TABLE_INDEX, 18779 0x0000 + UNICODE_MAX_TABLE_INDEX, 18780 0x0000 + UNICODE_MAX_TABLE_INDEX, 18781 0x0000 + UNICODE_MAX_TABLE_INDEX, 18782 0x0000 + UNICODE_MAX_TABLE_INDEX, 18783 0x0000 + UNICODE_MAX_TABLE_INDEX, 18784 0x0000 + UNICODE_MAX_TABLE_INDEX, 18785 0x0000 + UNICODE_MAX_TABLE_INDEX, 18786 0x0000 + UNICODE_MAX_TABLE_INDEX, 18787 0x0000 + UNICODE_MAX_TABLE_INDEX, 18788 0x0000 + UNICODE_MAX_TABLE_INDEX, 18789 0x0000 + UNICODE_MAX_TABLE_INDEX, 18790 0x0000 + UNICODE_MAX_TABLE_INDEX, 18791 0x0000 + UNICODE_MAX_TABLE_INDEX, 18792 0x0000 + UNICODE_MAX_TABLE_INDEX, 18793 0x0000 + UNICODE_MAX_TABLE_INDEX, 18794 0x0000 + UNICODE_MAX_TABLE_INDEX, 18795 0x0000 + UNICODE_MAX_TABLE_INDEX, 18796 0x0000 + UNICODE_MAX_TABLE_INDEX, 18797 0x0000 + UNICODE_MAX_TABLE_INDEX, 18798 0x0000 + UNICODE_MAX_TABLE_INDEX, 18799 0x0000 + UNICODE_MAX_TABLE_INDEX, 18800 0x0000 + UNICODE_MAX_TABLE_INDEX, 18801 0x0000 + UNICODE_MAX_TABLE_INDEX, 18802 0x0000 + UNICODE_MAX_TABLE_INDEX, 18803 0x0000 + UNICODE_MAX_TABLE_INDEX, 18804 0x0000 + UNICODE_MAX_TABLE_INDEX, 18805 0x0000 + UNICODE_MAX_TABLE_INDEX, 18806 0x0000 + UNICODE_MAX_TABLE_INDEX, 18807 0x0000 + UNICODE_MAX_TABLE_INDEX, 18808 0x0000 + UNICODE_MAX_TABLE_INDEX, 18809 0x0000 + UNICODE_MAX_TABLE_INDEX, 18810 0x0000 + UNICODE_MAX_TABLE_INDEX, 18811 0x0000 + UNICODE_MAX_TABLE_INDEX, 18812 0x0000 + UNICODE_MAX_TABLE_INDEX, 18813 0x0000 + UNICODE_MAX_TABLE_INDEX, 18814 0x0000 + UNICODE_MAX_TABLE_INDEX, 18815 0x0000 + UNICODE_MAX_TABLE_INDEX, 18816 0x0000 + UNICODE_MAX_TABLE_INDEX, 18817 0x0000 + UNICODE_MAX_TABLE_INDEX, 18818 0x0000 + UNICODE_MAX_TABLE_INDEX, 18819 0x0000 + UNICODE_MAX_TABLE_INDEX, 18820 0x0000 + UNICODE_MAX_TABLE_INDEX, 18821 0x0000 + UNICODE_MAX_TABLE_INDEX, 18822 0x0000 + UNICODE_MAX_TABLE_INDEX, 18823 0x0000 + UNICODE_MAX_TABLE_INDEX, 18824 0x0000 + UNICODE_MAX_TABLE_INDEX, 18825 0x0000 + UNICODE_MAX_TABLE_INDEX, 18826 0x0000 + UNICODE_MAX_TABLE_INDEX, 18827 0x0000 + UNICODE_MAX_TABLE_INDEX, 18828 0x0000 + UNICODE_MAX_TABLE_INDEX, 18829 0x0000 + UNICODE_MAX_TABLE_INDEX, 18830 0x0000 + UNICODE_MAX_TABLE_INDEX, 18831 0x0000 + UNICODE_MAX_TABLE_INDEX, 18832 0x0000 + UNICODE_MAX_TABLE_INDEX, 18833 0x0000 + UNICODE_MAX_TABLE_INDEX, 18834 0x0000 + UNICODE_MAX_TABLE_INDEX, 18835 0x0000 + UNICODE_MAX_TABLE_INDEX, 18836 0x0000 + UNICODE_MAX_TABLE_INDEX, 18837 0x0000 + UNICODE_MAX_TABLE_INDEX, 18838 0x0000 + UNICODE_MAX_TABLE_INDEX, 18839 0x0000 + UNICODE_MAX_TABLE_INDEX, 18840 0x0000 + UNICODE_MAX_TABLE_INDEX, 18841 0x0000 + UNICODE_MAX_TABLE_INDEX, 18842 0x0000 + UNICODE_MAX_TABLE_INDEX, 18843 0x0000 + UNICODE_MAX_TABLE_INDEX, 18844 0x0000 + UNICODE_MAX_TABLE_INDEX, 18845 0x0000 + UNICODE_MAX_TABLE_INDEX, 18846 0x0000 + UNICODE_MAX_TABLE_INDEX, 18847 0x0000 + UNICODE_MAX_TABLE_INDEX, 18848 0x0000 + UNICODE_MAX_TABLE_INDEX, 18849 0x0000 + UNICODE_MAX_TABLE_INDEX, 18850 0x0000 + UNICODE_MAX_TABLE_INDEX, 18851 0x0000 + UNICODE_MAX_TABLE_INDEX, 18852 0x0000 + UNICODE_MAX_TABLE_INDEX, 18853 0x0000 + UNICODE_MAX_TABLE_INDEX, 18854 0x0000 + UNICODE_MAX_TABLE_INDEX 18855 }; 18856 18857 /* U+E0000 through U+10FFFF */ 18858 static const int16_t attr_table_part2[768] = { 18859 0x0000 + UNICODE_MAX_TABLE_INDEX, 18860 0x0000 + UNICODE_MAX_TABLE_INDEX, 18861 0x0000 + UNICODE_MAX_TABLE_INDEX, 18862 0x0000 + UNICODE_MAX_TABLE_INDEX, 18863 0x0000 + UNICODE_MAX_TABLE_INDEX, 18864 0x0000 + UNICODE_MAX_TABLE_INDEX, 18865 0x0000 + UNICODE_MAX_TABLE_INDEX, 18866 0x0000 + UNICODE_MAX_TABLE_INDEX, 18867 0x0000 + UNICODE_MAX_TABLE_INDEX, 18868 0x0000 + UNICODE_MAX_TABLE_INDEX, 18869 0x0000 + UNICODE_MAX_TABLE_INDEX, 18870 0x0000 + UNICODE_MAX_TABLE_INDEX, 18871 0x0000 + UNICODE_MAX_TABLE_INDEX, 18872 0x0000 + UNICODE_MAX_TABLE_INDEX, 18873 0x0000 + UNICODE_MAX_TABLE_INDEX, 18874 0x0000 + UNICODE_MAX_TABLE_INDEX, 18875 0x0000 + UNICODE_MAX_TABLE_INDEX, 18876 0x0000 + UNICODE_MAX_TABLE_INDEX, 18877 0x0000 + UNICODE_MAX_TABLE_INDEX, 18878 0x0000 + UNICODE_MAX_TABLE_INDEX, 18879 0x0000 + UNICODE_MAX_TABLE_INDEX, 18880 0x0000 + UNICODE_MAX_TABLE_INDEX, 18881 0x0000 + UNICODE_MAX_TABLE_INDEX, 18882 0x0000 + UNICODE_MAX_TABLE_INDEX, 18883 0x0000 + UNICODE_MAX_TABLE_INDEX, 18884 0x0000 + UNICODE_MAX_TABLE_INDEX, 18885 0x0000 + UNICODE_MAX_TABLE_INDEX, 18886 0x0000 + UNICODE_MAX_TABLE_INDEX, 18887 0x0000 + UNICODE_MAX_TABLE_INDEX, 18888 0x0000 + UNICODE_MAX_TABLE_INDEX, 18889 0x0000 + UNICODE_MAX_TABLE_INDEX, 18890 0x0000 + UNICODE_MAX_TABLE_INDEX, 18891 0x0000 + UNICODE_MAX_TABLE_INDEX, 18892 0x0000 + UNICODE_MAX_TABLE_INDEX, 18893 0x0000 + UNICODE_MAX_TABLE_INDEX, 18894 0x0000 + UNICODE_MAX_TABLE_INDEX, 18895 0x0000 + UNICODE_MAX_TABLE_INDEX, 18896 0x0000 + UNICODE_MAX_TABLE_INDEX, 18897 0x0000 + UNICODE_MAX_TABLE_INDEX, 18898 0x0000 + UNICODE_MAX_TABLE_INDEX, 18899 0x0000 + UNICODE_MAX_TABLE_INDEX, 18900 0x0000 + UNICODE_MAX_TABLE_INDEX, 18901 0x0000 + UNICODE_MAX_TABLE_INDEX, 18902 0x0000 + UNICODE_MAX_TABLE_INDEX, 18903 0x0000 + UNICODE_MAX_TABLE_INDEX, 18904 0x0000 + UNICODE_MAX_TABLE_INDEX, 18905 0x0000 + UNICODE_MAX_TABLE_INDEX, 18906 0x0000 + UNICODE_MAX_TABLE_INDEX, 18907 0x0000 + UNICODE_MAX_TABLE_INDEX, 18908 0x0000 + UNICODE_MAX_TABLE_INDEX, 18909 0x0000 + UNICODE_MAX_TABLE_INDEX, 18910 0x0000 + UNICODE_MAX_TABLE_INDEX, 18911 0x0000 + UNICODE_MAX_TABLE_INDEX, 18912 0x0000 + UNICODE_MAX_TABLE_INDEX, 18913 0x0000 + UNICODE_MAX_TABLE_INDEX, 18914 0x0000 + UNICODE_MAX_TABLE_INDEX, 18915 0x0000 + UNICODE_MAX_TABLE_INDEX, 18916 0x0000 + UNICODE_MAX_TABLE_INDEX, 18917 0x0000 + UNICODE_MAX_TABLE_INDEX, 18918 0x0000 + UNICODE_MAX_TABLE_INDEX, 18919 0x0000 + UNICODE_MAX_TABLE_INDEX, 18920 0x0000 + UNICODE_MAX_TABLE_INDEX, 18921 0x0000 + UNICODE_MAX_TABLE_INDEX, 18922 0x0000 + UNICODE_MAX_TABLE_INDEX, 18923 0x0000 + UNICODE_MAX_TABLE_INDEX, 18924 0x0000 + UNICODE_MAX_TABLE_INDEX, 18925 0x0000 + UNICODE_MAX_TABLE_INDEX, 18926 0x0000 + UNICODE_MAX_TABLE_INDEX, 18927 0x0000 + UNICODE_MAX_TABLE_INDEX, 18928 0x0000 + UNICODE_MAX_TABLE_INDEX, 18929 0x0000 + UNICODE_MAX_TABLE_INDEX, 18930 0x0000 + UNICODE_MAX_TABLE_INDEX, 18931 0x0000 + UNICODE_MAX_TABLE_INDEX, 18932 0x0000 + UNICODE_MAX_TABLE_INDEX, 18933 0x0000 + UNICODE_MAX_TABLE_INDEX, 18934 0x0000 + UNICODE_MAX_TABLE_INDEX, 18935 0x0000 + UNICODE_MAX_TABLE_INDEX, 18936 0x0000 + UNICODE_MAX_TABLE_INDEX, 18937 0x0000 + UNICODE_MAX_TABLE_INDEX, 18938 0x0000 + UNICODE_MAX_TABLE_INDEX, 18939 0x0000 + UNICODE_MAX_TABLE_INDEX, 18940 0x0000 + UNICODE_MAX_TABLE_INDEX, 18941 0x0000 + UNICODE_MAX_TABLE_INDEX, 18942 0x0000 + UNICODE_MAX_TABLE_INDEX, 18943 0x0000 + UNICODE_MAX_TABLE_INDEX, 18944 0x0000 + UNICODE_MAX_TABLE_INDEX, 18945 0x0000 + UNICODE_MAX_TABLE_INDEX, 18946 0x0000 + UNICODE_MAX_TABLE_INDEX, 18947 0x0000 + UNICODE_MAX_TABLE_INDEX, 18948 0x0000 + UNICODE_MAX_TABLE_INDEX, 18949 0x0000 + UNICODE_MAX_TABLE_INDEX, 18950 0x0000 + UNICODE_MAX_TABLE_INDEX, 18951 0x0000 + UNICODE_MAX_TABLE_INDEX, 18952 0x0000 + UNICODE_MAX_TABLE_INDEX, 18953 0x0000 + UNICODE_MAX_TABLE_INDEX, 18954 0x0000 + UNICODE_MAX_TABLE_INDEX, 18955 0x0000 + UNICODE_MAX_TABLE_INDEX, 18956 0x0000 + UNICODE_MAX_TABLE_INDEX, 18957 0x0000 + UNICODE_MAX_TABLE_INDEX, 18958 0x0000 + UNICODE_MAX_TABLE_INDEX, 18959 0x0000 + UNICODE_MAX_TABLE_INDEX, 18960 0x0000 + UNICODE_MAX_TABLE_INDEX, 18961 0x0000 + UNICODE_MAX_TABLE_INDEX, 18962 0x0000 + UNICODE_MAX_TABLE_INDEX, 18963 0x0000 + UNICODE_MAX_TABLE_INDEX, 18964 0x0000 + UNICODE_MAX_TABLE_INDEX, 18965 0x0000 + UNICODE_MAX_TABLE_INDEX, 18966 0x0000 + UNICODE_MAX_TABLE_INDEX, 18967 0x0000 + UNICODE_MAX_TABLE_INDEX, 18968 0x0000 + UNICODE_MAX_TABLE_INDEX, 18969 0x0000 + UNICODE_MAX_TABLE_INDEX, 18970 0x0000 + UNICODE_MAX_TABLE_INDEX, 18971 0x0000 + UNICODE_MAX_TABLE_INDEX, 18972 0x0000 + UNICODE_MAX_TABLE_INDEX, 18973 0x0000 + UNICODE_MAX_TABLE_INDEX, 18974 0x0000 + UNICODE_MAX_TABLE_INDEX, 18975 0x0000 + UNICODE_MAX_TABLE_INDEX, 18976 0x0000 + UNICODE_MAX_TABLE_INDEX, 18977 0x0000 + UNICODE_MAX_TABLE_INDEX, 18978 0x0000 + UNICODE_MAX_TABLE_INDEX, 18979 0x0000 + UNICODE_MAX_TABLE_INDEX, 18980 0x0000 + UNICODE_MAX_TABLE_INDEX, 18981 0x0000 + UNICODE_MAX_TABLE_INDEX, 18982 0x0000 + UNICODE_MAX_TABLE_INDEX, 18983 0x0000 + UNICODE_MAX_TABLE_INDEX, 18984 0x0000 + UNICODE_MAX_TABLE_INDEX, 18985 0x0000 + UNICODE_MAX_TABLE_INDEX, 18986 0x0000 + UNICODE_MAX_TABLE_INDEX, 18987 0x0000 + UNICODE_MAX_TABLE_INDEX, 18988 0x0000 + UNICODE_MAX_TABLE_INDEX, 18989 0x0000 + UNICODE_MAX_TABLE_INDEX, 18990 0x0000 + UNICODE_MAX_TABLE_INDEX, 18991 0x0000 + UNICODE_MAX_TABLE_INDEX, 18992 0x0000 + UNICODE_MAX_TABLE_INDEX, 18993 0x0000 + UNICODE_MAX_TABLE_INDEX, 18994 0x0000 + UNICODE_MAX_TABLE_INDEX, 18995 0x0000 + UNICODE_MAX_TABLE_INDEX, 18996 0x0000 + UNICODE_MAX_TABLE_INDEX, 18997 0x0000 + UNICODE_MAX_TABLE_INDEX, 18998 0x0000 + UNICODE_MAX_TABLE_INDEX, 18999 0x0000 + UNICODE_MAX_TABLE_INDEX, 19000 0x0000 + UNICODE_MAX_TABLE_INDEX, 19001 0x0000 + UNICODE_MAX_TABLE_INDEX, 19002 0x0000 + UNICODE_MAX_TABLE_INDEX, 19003 0x0000 + UNICODE_MAX_TABLE_INDEX, 19004 0x0000 + UNICODE_MAX_TABLE_INDEX, 19005 0x0000 + UNICODE_MAX_TABLE_INDEX, 19006 0x0000 + UNICODE_MAX_TABLE_INDEX, 19007 0x0000 + UNICODE_MAX_TABLE_INDEX, 19008 0x0000 + UNICODE_MAX_TABLE_INDEX, 19009 0x0000 + UNICODE_MAX_TABLE_INDEX, 19010 0x0000 + UNICODE_MAX_TABLE_INDEX, 19011 0x0000 + UNICODE_MAX_TABLE_INDEX, 19012 0x0000 + UNICODE_MAX_TABLE_INDEX, 19013 0x0000 + UNICODE_MAX_TABLE_INDEX, 19014 0x0000 + UNICODE_MAX_TABLE_INDEX, 19015 0x0000 + UNICODE_MAX_TABLE_INDEX, 19016 0x0000 + UNICODE_MAX_TABLE_INDEX, 19017 0x0000 + UNICODE_MAX_TABLE_INDEX, 19018 0x0000 + UNICODE_MAX_TABLE_INDEX, 19019 0x0000 + UNICODE_MAX_TABLE_INDEX, 19020 0x0000 + UNICODE_MAX_TABLE_INDEX, 19021 0x0000 + UNICODE_MAX_TABLE_INDEX, 19022 0x0000 + UNICODE_MAX_TABLE_INDEX, 19023 0x0000 + UNICODE_MAX_TABLE_INDEX, 19024 0x0000 + UNICODE_MAX_TABLE_INDEX, 19025 0x0000 + UNICODE_MAX_TABLE_INDEX, 19026 0x0000 + UNICODE_MAX_TABLE_INDEX, 19027 0x0000 + UNICODE_MAX_TABLE_INDEX, 19028 0x0000 + UNICODE_MAX_TABLE_INDEX, 19029 0x0000 + UNICODE_MAX_TABLE_INDEX, 19030 0x0000 + UNICODE_MAX_TABLE_INDEX, 19031 0x0000 + UNICODE_MAX_TABLE_INDEX, 19032 0x0000 + UNICODE_MAX_TABLE_INDEX, 19033 0x0000 + UNICODE_MAX_TABLE_INDEX, 19034 0x0000 + UNICODE_MAX_TABLE_INDEX, 19035 0x0000 + UNICODE_MAX_TABLE_INDEX, 19036 0x0000 + UNICODE_MAX_TABLE_INDEX, 19037 0x0000 + UNICODE_MAX_TABLE_INDEX, 19038 0x0000 + UNICODE_MAX_TABLE_INDEX, 19039 0x0000 + UNICODE_MAX_TABLE_INDEX, 19040 0x0000 + UNICODE_MAX_TABLE_INDEX, 19041 0x0000 + UNICODE_MAX_TABLE_INDEX, 19042 0x0000 + UNICODE_MAX_TABLE_INDEX, 19043 0x0000 + UNICODE_MAX_TABLE_INDEX, 19044 0x0000 + UNICODE_MAX_TABLE_INDEX, 19045 0x0000 + UNICODE_MAX_TABLE_INDEX, 19046 0x0000 + UNICODE_MAX_TABLE_INDEX, 19047 0x0000 + UNICODE_MAX_TABLE_INDEX, 19048 0x0000 + UNICODE_MAX_TABLE_INDEX, 19049 0x0000 + UNICODE_MAX_TABLE_INDEX, 19050 0x0000 + UNICODE_MAX_TABLE_INDEX, 19051 0x0000 + UNICODE_MAX_TABLE_INDEX, 19052 0x0000 + UNICODE_MAX_TABLE_INDEX, 19053 0x0000 + UNICODE_MAX_TABLE_INDEX, 19054 0x0000 + UNICODE_MAX_TABLE_INDEX, 19055 0x0000 + UNICODE_MAX_TABLE_INDEX, 19056 0x0000 + UNICODE_MAX_TABLE_INDEX, 19057 0x0000 + UNICODE_MAX_TABLE_INDEX, 19058 0x0000 + UNICODE_MAX_TABLE_INDEX, 19059 0x0000 + UNICODE_MAX_TABLE_INDEX, 19060 0x0000 + UNICODE_MAX_TABLE_INDEX, 19061 0x0000 + UNICODE_MAX_TABLE_INDEX, 19062 0x0000 + UNICODE_MAX_TABLE_INDEX, 19063 0x0000 + UNICODE_MAX_TABLE_INDEX, 19064 0x0000 + UNICODE_MAX_TABLE_INDEX, 19065 0x0000 + UNICODE_MAX_TABLE_INDEX, 19066 0x0000 + UNICODE_MAX_TABLE_INDEX, 19067 0x0000 + UNICODE_MAX_TABLE_INDEX, 19068 0x0000 + UNICODE_MAX_TABLE_INDEX, 19069 0x0000 + UNICODE_MAX_TABLE_INDEX, 19070 0x0000 + UNICODE_MAX_TABLE_INDEX, 19071 0x0000 + UNICODE_MAX_TABLE_INDEX, 19072 0x0000 + UNICODE_MAX_TABLE_INDEX, 19073 0x0000 + UNICODE_MAX_TABLE_INDEX, 19074 0x0000 + UNICODE_MAX_TABLE_INDEX, 19075 0x0000 + UNICODE_MAX_TABLE_INDEX, 19076 0x0000 + UNICODE_MAX_TABLE_INDEX, 19077 0x0000 + UNICODE_MAX_TABLE_INDEX, 19078 0x0000 + UNICODE_MAX_TABLE_INDEX, 19079 0x0000 + UNICODE_MAX_TABLE_INDEX, 19080 0x0000 + UNICODE_MAX_TABLE_INDEX, 19081 0x0000 + UNICODE_MAX_TABLE_INDEX, 19082 0x0000 + UNICODE_MAX_TABLE_INDEX, 19083 0x0000 + UNICODE_MAX_TABLE_INDEX, 19084 0x0000 + UNICODE_MAX_TABLE_INDEX, 19085 0x0000 + UNICODE_MAX_TABLE_INDEX, 19086 0x0000 + UNICODE_MAX_TABLE_INDEX, 19087 0x0000 + UNICODE_MAX_TABLE_INDEX, 19088 0x0000 + UNICODE_MAX_TABLE_INDEX, 19089 0x0000 + UNICODE_MAX_TABLE_INDEX, 19090 0x0000 + UNICODE_MAX_TABLE_INDEX, 19091 0x0000 + UNICODE_MAX_TABLE_INDEX, 19092 0x0000 + UNICODE_MAX_TABLE_INDEX, 19093 0x0000 + UNICODE_MAX_TABLE_INDEX, 19094 0x0000 + UNICODE_MAX_TABLE_INDEX, 19095 0x0000 + UNICODE_MAX_TABLE_INDEX, 19096 0x0000 + UNICODE_MAX_TABLE_INDEX, 19097 0x0000 + UNICODE_MAX_TABLE_INDEX, 19098 0x0000 + UNICODE_MAX_TABLE_INDEX, 19099 0x0000 + UNICODE_MAX_TABLE_INDEX, 19100 0x0000 + UNICODE_MAX_TABLE_INDEX, 19101 0x0000 + UNICODE_MAX_TABLE_INDEX, 19102 0x0000 + UNICODE_MAX_TABLE_INDEX, 19103 0x0000 + UNICODE_MAX_TABLE_INDEX, 19104 0x0000 + UNICODE_MAX_TABLE_INDEX, 19105 0x0000 + UNICODE_MAX_TABLE_INDEX, 19106 0x0000 + UNICODE_MAX_TABLE_INDEX, 19107 0x0000 + UNICODE_MAX_TABLE_INDEX, 19108 0x0000 + UNICODE_MAX_TABLE_INDEX, 19109 0x0000 + UNICODE_MAX_TABLE_INDEX, 19110 0x0000 + UNICODE_MAX_TABLE_INDEX, 19111 0x0000 + UNICODE_MAX_TABLE_INDEX, 19112 0x0000 + UNICODE_MAX_TABLE_INDEX, 19113 0x0000 + UNICODE_MAX_TABLE_INDEX, 19114 0x0000 + UNICODE_MAX_TABLE_INDEX, 19115 0x0000 + UNICODE_MAX_TABLE_INDEX, 19116 0x0000 + UNICODE_MAX_TABLE_INDEX, 19117 0x0000 + UNICODE_MAX_TABLE_INDEX, 19118 0x0000 + UNICODE_MAX_TABLE_INDEX, 19119 0x0000 + UNICODE_MAX_TABLE_INDEX, 19120 0x0000 + UNICODE_MAX_TABLE_INDEX, 19121 0x0000 + UNICODE_MAX_TABLE_INDEX, 19122 0x0000 + UNICODE_MAX_TABLE_INDEX, 19123 0x0000 + UNICODE_MAX_TABLE_INDEX, 19124 0x0000 + UNICODE_MAX_TABLE_INDEX, 19125 0x0000 + UNICODE_MAX_TABLE_INDEX, 19126 0x0000 + UNICODE_MAX_TABLE_INDEX, 19127 0x0000 + UNICODE_MAX_TABLE_INDEX, 19128 0x0000 + UNICODE_MAX_TABLE_INDEX, 19129 0x0000 + UNICODE_MAX_TABLE_INDEX, 19130 0x0000 + UNICODE_MAX_TABLE_INDEX, 19131 0x0000 + UNICODE_MAX_TABLE_INDEX, 19132 0x0000 + UNICODE_MAX_TABLE_INDEX, 19133 0x0000 + UNICODE_MAX_TABLE_INDEX, 19134 0x0000 + UNICODE_MAX_TABLE_INDEX, 19135 0x0000 + UNICODE_MAX_TABLE_INDEX, 19136 0x0000 + UNICODE_MAX_TABLE_INDEX, 19137 0x0000 + UNICODE_MAX_TABLE_INDEX, 19138 0x0000 + UNICODE_MAX_TABLE_INDEX, 19139 0x0000 + UNICODE_MAX_TABLE_INDEX, 19140 0x0000 + UNICODE_MAX_TABLE_INDEX, 19141 0x0000 + UNICODE_MAX_TABLE_INDEX, 19142 0x0000 + UNICODE_MAX_TABLE_INDEX, 19143 0x0000 + UNICODE_MAX_TABLE_INDEX, 19144 0x0000 + UNICODE_MAX_TABLE_INDEX, 19145 0x0000 + UNICODE_MAX_TABLE_INDEX, 19146 0x0000 + UNICODE_MAX_TABLE_INDEX, 19147 0x0000 + UNICODE_MAX_TABLE_INDEX, 19148 0x0000 + UNICODE_MAX_TABLE_INDEX, 19149 0x0000 + UNICODE_MAX_TABLE_INDEX, 19150 0x0000 + UNICODE_MAX_TABLE_INDEX, 19151 0x0000 + UNICODE_MAX_TABLE_INDEX, 19152 0x0000 + UNICODE_MAX_TABLE_INDEX, 19153 0x0000 + UNICODE_MAX_TABLE_INDEX, 19154 0x0000 + UNICODE_MAX_TABLE_INDEX, 19155 0x0000 + UNICODE_MAX_TABLE_INDEX, 19156 0x0000 + UNICODE_MAX_TABLE_INDEX, 19157 0x0000 + UNICODE_MAX_TABLE_INDEX, 19158 0x0000 + UNICODE_MAX_TABLE_INDEX, 19159 0x0000 + UNICODE_MAX_TABLE_INDEX, 19160 0x0000 + UNICODE_MAX_TABLE_INDEX, 19161 0x0000 + UNICODE_MAX_TABLE_INDEX, 19162 0x0000 + UNICODE_MAX_TABLE_INDEX, 19163 0x0000 + UNICODE_MAX_TABLE_INDEX, 19164 0x0000 + UNICODE_MAX_TABLE_INDEX, 19165 0x0000 + UNICODE_MAX_TABLE_INDEX, 19166 0x0000 + UNICODE_MAX_TABLE_INDEX, 19167 0x0000 + UNICODE_MAX_TABLE_INDEX, 19168 0x0000 + UNICODE_MAX_TABLE_INDEX, 19169 0x0000 + UNICODE_MAX_TABLE_INDEX, 19170 0x0000 + UNICODE_MAX_TABLE_INDEX, 19171 0x0000 + UNICODE_MAX_TABLE_INDEX, 19172 0x0000 + UNICODE_MAX_TABLE_INDEX, 19173 0x0000 + UNICODE_MAX_TABLE_INDEX, 19174 0x0000 + UNICODE_MAX_TABLE_INDEX, 19175 0x0000 + UNICODE_MAX_TABLE_INDEX, 19176 0x0000 + UNICODE_MAX_TABLE_INDEX, 19177 0x0000 + UNICODE_MAX_TABLE_INDEX, 19178 0x0000 + UNICODE_MAX_TABLE_INDEX, 19179 0x0000 + UNICODE_MAX_TABLE_INDEX, 19180 0x0000 + UNICODE_MAX_TABLE_INDEX, 19181 0x0000 + UNICODE_MAX_TABLE_INDEX, 19182 0x0000 + UNICODE_MAX_TABLE_INDEX, 19183 0x0000 + UNICODE_MAX_TABLE_INDEX, 19184 0x0000 + UNICODE_MAX_TABLE_INDEX, 19185 0x0000 + UNICODE_MAX_TABLE_INDEX, 19186 0x0000 + UNICODE_MAX_TABLE_INDEX, 19187 0x0000 + UNICODE_MAX_TABLE_INDEX, 19188 0x0000 + UNICODE_MAX_TABLE_INDEX, 19189 0x0000 + UNICODE_MAX_TABLE_INDEX, 19190 0x0000 + UNICODE_MAX_TABLE_INDEX, 19191 0x0000 + UNICODE_MAX_TABLE_INDEX, 19192 0x0000 + UNICODE_MAX_TABLE_INDEX, 19193 0x0000 + UNICODE_MAX_TABLE_INDEX, 19194 0x0000 + UNICODE_MAX_TABLE_INDEX, 19195 0x0000 + UNICODE_MAX_TABLE_INDEX, 19196 0x0000 + UNICODE_MAX_TABLE_INDEX, 19197 0x0000 + UNICODE_MAX_TABLE_INDEX, 19198 0x0000 + UNICODE_MAX_TABLE_INDEX, 19199 0x0000 + UNICODE_MAX_TABLE_INDEX, 19200 0x0000 + UNICODE_MAX_TABLE_INDEX, 19201 0x0000 + UNICODE_MAX_TABLE_INDEX, 19202 0x0000 + UNICODE_MAX_TABLE_INDEX, 19203 0x0000 + UNICODE_MAX_TABLE_INDEX, 19204 0x0000 + UNICODE_MAX_TABLE_INDEX, 19205 0x0000 + UNICODE_MAX_TABLE_INDEX, 19206 0x0000 + UNICODE_MAX_TABLE_INDEX, 19207 0x0000 + UNICODE_MAX_TABLE_INDEX, 19208 0x0000 + UNICODE_MAX_TABLE_INDEX, 19209 0x0000 + UNICODE_MAX_TABLE_INDEX, 19210 0x0000 + UNICODE_MAX_TABLE_INDEX, 19211 0x0000 + UNICODE_MAX_TABLE_INDEX, 19212 0x0000 + UNICODE_MAX_TABLE_INDEX, 19213 0x0000 + UNICODE_MAX_TABLE_INDEX, 19214 0x0000 + UNICODE_MAX_TABLE_INDEX, 19215 0x0000 + UNICODE_MAX_TABLE_INDEX, 19216 0x0000 + UNICODE_MAX_TABLE_INDEX, 19217 0x0000 + UNICODE_MAX_TABLE_INDEX, 19218 0x0000 + UNICODE_MAX_TABLE_INDEX, 19219 0x0000 + UNICODE_MAX_TABLE_INDEX, 19220 0x0000 + UNICODE_MAX_TABLE_INDEX, 19221 0x0000 + UNICODE_MAX_TABLE_INDEX, 19222 0x0000 + UNICODE_MAX_TABLE_INDEX, 19223 0x0000 + UNICODE_MAX_TABLE_INDEX, 19224 0x0000 + UNICODE_MAX_TABLE_INDEX, 19225 0x0000 + UNICODE_MAX_TABLE_INDEX, 19226 0x0000 + UNICODE_MAX_TABLE_INDEX, 19227 0x0000 + UNICODE_MAX_TABLE_INDEX, 19228 0x0000 + UNICODE_MAX_TABLE_INDEX, 19229 0x0000 + UNICODE_MAX_TABLE_INDEX, 19230 0x0000 + UNICODE_MAX_TABLE_INDEX, 19231 0x0000 + UNICODE_MAX_TABLE_INDEX, 19232 0x0000 + UNICODE_MAX_TABLE_INDEX, 19233 0x0000 + UNICODE_MAX_TABLE_INDEX, 19234 0x0000 + UNICODE_MAX_TABLE_INDEX, 19235 0x0000 + UNICODE_MAX_TABLE_INDEX, 19236 0x0000 + UNICODE_MAX_TABLE_INDEX, 19237 0x0000 + UNICODE_MAX_TABLE_INDEX, 19238 0x0000 + UNICODE_MAX_TABLE_INDEX, 19239 0x0000 + UNICODE_MAX_TABLE_INDEX, 19240 0x0000 + UNICODE_MAX_TABLE_INDEX, 19241 0x0000 + UNICODE_MAX_TABLE_INDEX, 19242 0x0000 + UNICODE_MAX_TABLE_INDEX, 19243 0x0000 + UNICODE_MAX_TABLE_INDEX, 19244 0x0000 + UNICODE_MAX_TABLE_INDEX, 19245 0x0000 + UNICODE_MAX_TABLE_INDEX, 19246 0x0000 + UNICODE_MAX_TABLE_INDEX, 19247 0x0000 + UNICODE_MAX_TABLE_INDEX, 19248 0x0000 + UNICODE_MAX_TABLE_INDEX, 19249 0x0000 + UNICODE_MAX_TABLE_INDEX, 19250 0x0000 + UNICODE_MAX_TABLE_INDEX, 19251 0x0000 + UNICODE_MAX_TABLE_INDEX, 19252 0x0000 + UNICODE_MAX_TABLE_INDEX, 19253 0x0000 + UNICODE_MAX_TABLE_INDEX, 19254 0x0000 + UNICODE_MAX_TABLE_INDEX, 19255 0x0000 + UNICODE_MAX_TABLE_INDEX, 19256 0x0000 + UNICODE_MAX_TABLE_INDEX, 19257 0x0000 + UNICODE_MAX_TABLE_INDEX, 19258 0x0000 + UNICODE_MAX_TABLE_INDEX, 19259 0x0000 + UNICODE_MAX_TABLE_INDEX, 19260 0x0000 + UNICODE_MAX_TABLE_INDEX, 19261 0x0000 + UNICODE_MAX_TABLE_INDEX, 19262 0x0000 + UNICODE_MAX_TABLE_INDEX, 19263 0x0000 + UNICODE_MAX_TABLE_INDEX, 19264 0x0000 + UNICODE_MAX_TABLE_INDEX, 19265 0x0000 + UNICODE_MAX_TABLE_INDEX, 19266 0x0000 + UNICODE_MAX_TABLE_INDEX, 19267 0x0000 + UNICODE_MAX_TABLE_INDEX, 19268 0x0000 + UNICODE_MAX_TABLE_INDEX, 19269 0x0000 + UNICODE_MAX_TABLE_INDEX, 19270 0x0000 + UNICODE_MAX_TABLE_INDEX, 19271 0x0000 + UNICODE_MAX_TABLE_INDEX, 19272 0x0000 + UNICODE_MAX_TABLE_INDEX, 19273 0x0000 + UNICODE_MAX_TABLE_INDEX, 19274 0x0000 + UNICODE_MAX_TABLE_INDEX, 19275 0x0000 + UNICODE_MAX_TABLE_INDEX, 19276 0x0000 + UNICODE_MAX_TABLE_INDEX, 19277 0x0000 + UNICODE_MAX_TABLE_INDEX, 19278 0x0000 + UNICODE_MAX_TABLE_INDEX, 19279 0x0000 + UNICODE_MAX_TABLE_INDEX, 19280 0x0000 + UNICODE_MAX_TABLE_INDEX, 19281 0x0000 + UNICODE_MAX_TABLE_INDEX, 19282 0x0000 + UNICODE_MAX_TABLE_INDEX, 19283 0x0000 + UNICODE_MAX_TABLE_INDEX, 19284 0x0000 + UNICODE_MAX_TABLE_INDEX, 19285 0x0000 + UNICODE_MAX_TABLE_INDEX, 19286 0x0000 + UNICODE_MAX_TABLE_INDEX, 19287 0x0000 + UNICODE_MAX_TABLE_INDEX, 19288 0x0000 + UNICODE_MAX_TABLE_INDEX, 19289 0x0000 + UNICODE_MAX_TABLE_INDEX, 19290 0x0000 + UNICODE_MAX_TABLE_INDEX, 19291 0x0000 + UNICODE_MAX_TABLE_INDEX, 19292 0x0000 + UNICODE_MAX_TABLE_INDEX, 19293 0x0000 + UNICODE_MAX_TABLE_INDEX, 19294 0x0000 + UNICODE_MAX_TABLE_INDEX, 19295 0x0000 + UNICODE_MAX_TABLE_INDEX, 19296 0x0000 + UNICODE_MAX_TABLE_INDEX, 19297 0x0000 + UNICODE_MAX_TABLE_INDEX, 19298 0x0000 + UNICODE_MAX_TABLE_INDEX, 19299 0x0000 + UNICODE_MAX_TABLE_INDEX, 19300 0x0000 + UNICODE_MAX_TABLE_INDEX, 19301 0x0000 + UNICODE_MAX_TABLE_INDEX, 19302 0x0000 + UNICODE_MAX_TABLE_INDEX, 19303 0x0000 + UNICODE_MAX_TABLE_INDEX, 19304 0x0000 + UNICODE_MAX_TABLE_INDEX, 19305 0x0000 + UNICODE_MAX_TABLE_INDEX, 19306 0x0000 + UNICODE_MAX_TABLE_INDEX, 19307 0x0000 + UNICODE_MAX_TABLE_INDEX, 19308 0x0000 + UNICODE_MAX_TABLE_INDEX, 19309 0x0000 + UNICODE_MAX_TABLE_INDEX, 19310 0x0000 + UNICODE_MAX_TABLE_INDEX, 19311 0x0000 + UNICODE_MAX_TABLE_INDEX, 19312 0x0000 + UNICODE_MAX_TABLE_INDEX, 19313 0x0000 + UNICODE_MAX_TABLE_INDEX, 19314 0x0000 + UNICODE_MAX_TABLE_INDEX, 19315 0x0000 + UNICODE_MAX_TABLE_INDEX, 19316 0x0000 + UNICODE_MAX_TABLE_INDEX, 19317 0x0000 + UNICODE_MAX_TABLE_INDEX, 19318 0x0000 + UNICODE_MAX_TABLE_INDEX, 19319 0x0000 + UNICODE_MAX_TABLE_INDEX, 19320 0x0000 + UNICODE_MAX_TABLE_INDEX, 19321 0x0000 + UNICODE_MAX_TABLE_INDEX, 19322 0x0000 + UNICODE_MAX_TABLE_INDEX, 19323 0x0000 + UNICODE_MAX_TABLE_INDEX, 19324 0x0000 + UNICODE_MAX_TABLE_INDEX, 19325 0x0000 + UNICODE_MAX_TABLE_INDEX, 19326 0x0000 + UNICODE_MAX_TABLE_INDEX, 19327 0x0000 + UNICODE_MAX_TABLE_INDEX, 19328 0x0000 + UNICODE_MAX_TABLE_INDEX, 19329 0x0000 + UNICODE_MAX_TABLE_INDEX, 19330 0x0000 + UNICODE_MAX_TABLE_INDEX, 19331 0x0000 + UNICODE_MAX_TABLE_INDEX, 19332 0x0000 + UNICODE_MAX_TABLE_INDEX, 19333 0x0000 + UNICODE_MAX_TABLE_INDEX, 19334 0x0000 + UNICODE_MAX_TABLE_INDEX, 19335 0x0000 + UNICODE_MAX_TABLE_INDEX, 19336 0x0000 + UNICODE_MAX_TABLE_INDEX, 19337 0x0000 + UNICODE_MAX_TABLE_INDEX, 19338 0x0000 + UNICODE_MAX_TABLE_INDEX, 19339 0x0000 + UNICODE_MAX_TABLE_INDEX, 19340 0x0000 + UNICODE_MAX_TABLE_INDEX, 19341 0x0000 + UNICODE_MAX_TABLE_INDEX, 19342 0x0000 + UNICODE_MAX_TABLE_INDEX, 19343 0x0000 + UNICODE_MAX_TABLE_INDEX, 19344 0x0000 + UNICODE_MAX_TABLE_INDEX, 19345 0x0000 + UNICODE_MAX_TABLE_INDEX, 19346 0x0000 + UNICODE_MAX_TABLE_INDEX, 19347 0x0000 + UNICODE_MAX_TABLE_INDEX, 19348 0x0000 + UNICODE_MAX_TABLE_INDEX, 19349 0x0000 + UNICODE_MAX_TABLE_INDEX, 19350 0x0000 + UNICODE_MAX_TABLE_INDEX, 19351 0x0000 + UNICODE_MAX_TABLE_INDEX, 19352 0x0000 + UNICODE_MAX_TABLE_INDEX, 19353 0x0000 + UNICODE_MAX_TABLE_INDEX, 19354 0x0000 + UNICODE_MAX_TABLE_INDEX, 19355 0x0000 + UNICODE_MAX_TABLE_INDEX, 19356 0x0000 + UNICODE_MAX_TABLE_INDEX, 19357 0x0000 + UNICODE_MAX_TABLE_INDEX, 19358 0x0000 + UNICODE_MAX_TABLE_INDEX, 19359 0x0000 + UNICODE_MAX_TABLE_INDEX, 19360 0x0000 + UNICODE_MAX_TABLE_INDEX, 19361 0x0000 + UNICODE_MAX_TABLE_INDEX, 19362 0x0000 + UNICODE_MAX_TABLE_INDEX, 19363 0x0000 + UNICODE_MAX_TABLE_INDEX, 19364 0x0000 + UNICODE_MAX_TABLE_INDEX, 19365 0x0000 + UNICODE_MAX_TABLE_INDEX, 19366 0x0000 + UNICODE_MAX_TABLE_INDEX, 19367 0x0000 + UNICODE_MAX_TABLE_INDEX, 19368 0x0000 + UNICODE_MAX_TABLE_INDEX, 19369 0x0000 + UNICODE_MAX_TABLE_INDEX, 19370 0x0000 + UNICODE_MAX_TABLE_INDEX, 19371 0x0000 + UNICODE_MAX_TABLE_INDEX, 19372 0x0000 + UNICODE_MAX_TABLE_INDEX, 19373 0x0000 + UNICODE_MAX_TABLE_INDEX, 19374 0x0000 + UNICODE_MAX_TABLE_INDEX, 19375 0x0000 + UNICODE_MAX_TABLE_INDEX, 19376 0x0000 + UNICODE_MAX_TABLE_INDEX, 19377 0x0000 + UNICODE_MAX_TABLE_INDEX, 19378 0x0000 + UNICODE_MAX_TABLE_INDEX, 19379 0x0000 + UNICODE_MAX_TABLE_INDEX, 19380 0x0000 + UNICODE_MAX_TABLE_INDEX, 19381 0x0000 + UNICODE_MAX_TABLE_INDEX, 19382 0x0000 + UNICODE_MAX_TABLE_INDEX, 19383 0x0000 + UNICODE_MAX_TABLE_INDEX, 19384 0x0000 + UNICODE_MAX_TABLE_INDEX, 19385 0x0000 + UNICODE_MAX_TABLE_INDEX, 19386 0x0000 + UNICODE_MAX_TABLE_INDEX, 19387 0x0000 + UNICODE_MAX_TABLE_INDEX, 19388 0x0000 + UNICODE_MAX_TABLE_INDEX, 19389 0x0000 + UNICODE_MAX_TABLE_INDEX, 19390 0x0000 + UNICODE_MAX_TABLE_INDEX, 19391 0x0000 + UNICODE_MAX_TABLE_INDEX, 19392 0x0000 + UNICODE_MAX_TABLE_INDEX, 19393 0x0000 + UNICODE_MAX_TABLE_INDEX, 19394 0x0000 + UNICODE_MAX_TABLE_INDEX, 19395 0x0000 + UNICODE_MAX_TABLE_INDEX, 19396 0x0000 + UNICODE_MAX_TABLE_INDEX, 19397 0x0000 + UNICODE_MAX_TABLE_INDEX, 19398 0x0000 + UNICODE_MAX_TABLE_INDEX, 19399 0x0000 + UNICODE_MAX_TABLE_INDEX, 19400 0x0000 + UNICODE_MAX_TABLE_INDEX, 19401 0x0000 + UNICODE_MAX_TABLE_INDEX, 19402 0x0000 + UNICODE_MAX_TABLE_INDEX, 19403 0x0000 + UNICODE_MAX_TABLE_INDEX, 19404 0x0000 + UNICODE_MAX_TABLE_INDEX, 19405 0x0000 + UNICODE_MAX_TABLE_INDEX, 19406 0x0000 + UNICODE_MAX_TABLE_INDEX, 19407 0x0000 + UNICODE_MAX_TABLE_INDEX, 19408 0x0000 + UNICODE_MAX_TABLE_INDEX, 19409 0x0000 + UNICODE_MAX_TABLE_INDEX, 19410 0x0000 + UNICODE_MAX_TABLE_INDEX, 19411 0x0000 + UNICODE_MAX_TABLE_INDEX, 19412 0x0000 + UNICODE_MAX_TABLE_INDEX, 19413 0x0000 + UNICODE_MAX_TABLE_INDEX, 19414 0x0000 + UNICODE_MAX_TABLE_INDEX, 19415 0x0000 + UNICODE_MAX_TABLE_INDEX, 19416 0x0000 + UNICODE_MAX_TABLE_INDEX, 19417 0x0000 + UNICODE_MAX_TABLE_INDEX, 19418 0x0000 + UNICODE_MAX_TABLE_INDEX, 19419 0x0000 + UNICODE_MAX_TABLE_INDEX, 19420 0x0000 + UNICODE_MAX_TABLE_INDEX, 19421 0x0000 + UNICODE_MAX_TABLE_INDEX, 19422 0x0000 + UNICODE_MAX_TABLE_INDEX, 19423 0x0000 + UNICODE_MAX_TABLE_INDEX, 19424 0x0000 + UNICODE_MAX_TABLE_INDEX, 19425 0x0000 + UNICODE_MAX_TABLE_INDEX, 19426 0x0000 + UNICODE_MAX_TABLE_INDEX, 19427 0x0000 + UNICODE_MAX_TABLE_INDEX, 19428 0x0000 + UNICODE_MAX_TABLE_INDEX, 19429 0x0000 + UNICODE_MAX_TABLE_INDEX, 19430 0x0000 + UNICODE_MAX_TABLE_INDEX, 19431 0x0000 + UNICODE_MAX_TABLE_INDEX, 19432 0x0000 + UNICODE_MAX_TABLE_INDEX, 19433 0x0000 + UNICODE_MAX_TABLE_INDEX, 19434 0x0000 + UNICODE_MAX_TABLE_INDEX, 19435 0x0000 + UNICODE_MAX_TABLE_INDEX, 19436 0x0000 + UNICODE_MAX_TABLE_INDEX, 19437 0x0000 + UNICODE_MAX_TABLE_INDEX, 19438 0x0000 + UNICODE_MAX_TABLE_INDEX, 19439 0x0000 + UNICODE_MAX_TABLE_INDEX, 19440 0x0000 + UNICODE_MAX_TABLE_INDEX, 19441 0x0000 + UNICODE_MAX_TABLE_INDEX, 19442 0x0000 + UNICODE_MAX_TABLE_INDEX, 19443 0x0000 + UNICODE_MAX_TABLE_INDEX, 19444 0x0000 + UNICODE_MAX_TABLE_INDEX, 19445 0x0000 + UNICODE_MAX_TABLE_INDEX, 19446 0x0000 + UNICODE_MAX_TABLE_INDEX, 19447 0x0000 + UNICODE_MAX_TABLE_INDEX, 19448 0x0000 + UNICODE_MAX_TABLE_INDEX, 19449 0x0000 + UNICODE_MAX_TABLE_INDEX, 19450 0x0000 + UNICODE_MAX_TABLE_INDEX, 19451 0x0000 + UNICODE_MAX_TABLE_INDEX, 19452 0x0000 + UNICODE_MAX_TABLE_INDEX, 19453 0x0000 + UNICODE_MAX_TABLE_INDEX, 19454 0x0000 + UNICODE_MAX_TABLE_INDEX, 19455 0x0000 + UNICODE_MAX_TABLE_INDEX, 19456 0x0000 + UNICODE_MAX_TABLE_INDEX, 19457 0x0000 + UNICODE_MAX_TABLE_INDEX, 19458 0x0000 + UNICODE_MAX_TABLE_INDEX, 19459 0x0000 + UNICODE_MAX_TABLE_INDEX, 19460 0x0000 + UNICODE_MAX_TABLE_INDEX, 19461 0x0000 + UNICODE_MAX_TABLE_INDEX, 19462 0x0000 + UNICODE_MAX_TABLE_INDEX, 19463 0x0000 + UNICODE_MAX_TABLE_INDEX, 19464 0x0000 + UNICODE_MAX_TABLE_INDEX, 19465 0x0000 + UNICODE_MAX_TABLE_INDEX, 19466 0x0000 + UNICODE_MAX_TABLE_INDEX, 19467 0x0000 + UNICODE_MAX_TABLE_INDEX, 19468 0x0000 + UNICODE_MAX_TABLE_INDEX, 19469 0x0000 + UNICODE_MAX_TABLE_INDEX, 19470 0x0000 + UNICODE_MAX_TABLE_INDEX, 19471 0x0000 + UNICODE_MAX_TABLE_INDEX, 19472 0x0000 + UNICODE_MAX_TABLE_INDEX, 19473 0x0000 + UNICODE_MAX_TABLE_INDEX, 19474 0x0000 + UNICODE_MAX_TABLE_INDEX, 19475 0x0000 + UNICODE_MAX_TABLE_INDEX, 19476 0x0000 + UNICODE_MAX_TABLE_INDEX, 19477 0x0000 + UNICODE_MAX_TABLE_INDEX, 19478 0x0000 + UNICODE_MAX_TABLE_INDEX, 19479 0x0000 + UNICODE_MAX_TABLE_INDEX, 19480 0x0000 + UNICODE_MAX_TABLE_INDEX, 19481 0x0000 + UNICODE_MAX_TABLE_INDEX, 19482 0x0000 + UNICODE_MAX_TABLE_INDEX, 19483 0x0000 + UNICODE_MAX_TABLE_INDEX, 19484 0x0000 + UNICODE_MAX_TABLE_INDEX, 19485 0x0000 + UNICODE_MAX_TABLE_INDEX, 19486 0x0000 + UNICODE_MAX_TABLE_INDEX, 19487 0x0000 + UNICODE_MAX_TABLE_INDEX, 19488 0x0000 + UNICODE_MAX_TABLE_INDEX, 19489 0x0000 + UNICODE_MAX_TABLE_INDEX, 19490 0x0000 + UNICODE_MAX_TABLE_INDEX, 19491 0x0000 + UNICODE_MAX_TABLE_INDEX, 19492 0x0000 + UNICODE_MAX_TABLE_INDEX, 19493 0x0000 + UNICODE_MAX_TABLE_INDEX, 19494 0x0000 + UNICODE_MAX_TABLE_INDEX, 19495 0x0000 + UNICODE_MAX_TABLE_INDEX, 19496 0x0000 + UNICODE_MAX_TABLE_INDEX, 19497 0x0000 + UNICODE_MAX_TABLE_INDEX, 19498 0x0000 + UNICODE_MAX_TABLE_INDEX, 19499 0x0000 + UNICODE_MAX_TABLE_INDEX, 19500 0x0000 + UNICODE_MAX_TABLE_INDEX, 19501 0x0000 + UNICODE_MAX_TABLE_INDEX, 19502 0x0000 + UNICODE_MAX_TABLE_INDEX, 19503 0x0000 + UNICODE_MAX_TABLE_INDEX, 19504 0x0000 + UNICODE_MAX_TABLE_INDEX, 19505 0x0000 + UNICODE_MAX_TABLE_INDEX, 19506 0x0000 + UNICODE_MAX_TABLE_INDEX, 19507 0x0000 + UNICODE_MAX_TABLE_INDEX, 19508 0x0000 + UNICODE_MAX_TABLE_INDEX, 19509 0x0000 + UNICODE_MAX_TABLE_INDEX, 19510 0x0000 + UNICODE_MAX_TABLE_INDEX, 19511 0x0000 + UNICODE_MAX_TABLE_INDEX, 19512 0x0000 + UNICODE_MAX_TABLE_INDEX, 19513 0x0000 + UNICODE_MAX_TABLE_INDEX, 19514 0x0000 + UNICODE_MAX_TABLE_INDEX, 19515 0x0000 + UNICODE_MAX_TABLE_INDEX, 19516 0x0000 + UNICODE_MAX_TABLE_INDEX, 19517 0x0000 + UNICODE_MAX_TABLE_INDEX, 19518 0x0000 + UNICODE_MAX_TABLE_INDEX, 19519 0x0000 + UNICODE_MAX_TABLE_INDEX, 19520 0x0000 + UNICODE_MAX_TABLE_INDEX, 19521 0x0000 + UNICODE_MAX_TABLE_INDEX, 19522 0x0000 + UNICODE_MAX_TABLE_INDEX, 19523 0x0000 + UNICODE_MAX_TABLE_INDEX, 19524 0x0000 + UNICODE_MAX_TABLE_INDEX, 19525 0x0000 + UNICODE_MAX_TABLE_INDEX, 19526 0x0000 + UNICODE_MAX_TABLE_INDEX, 19527 0x0000 + UNICODE_MAX_TABLE_INDEX, 19528 0x0000 + UNICODE_MAX_TABLE_INDEX, 19529 0x0000 + UNICODE_MAX_TABLE_INDEX, 19530 0x0000 + UNICODE_MAX_TABLE_INDEX, 19531 0x0000 + UNICODE_MAX_TABLE_INDEX, 19532 0x0000 + UNICODE_MAX_TABLE_INDEX, 19533 0x0000 + UNICODE_MAX_TABLE_INDEX, 19534 0x0000 + UNICODE_MAX_TABLE_INDEX, 19535 0x0000 + UNICODE_MAX_TABLE_INDEX, 19536 0x0000 + UNICODE_MAX_TABLE_INDEX, 19537 0x0000 + UNICODE_MAX_TABLE_INDEX, 19538 0x0000 + UNICODE_MAX_TABLE_INDEX, 19539 0x0000 + UNICODE_MAX_TABLE_INDEX, 19540 0x0000 + UNICODE_MAX_TABLE_INDEX, 19541 0x0000 + UNICODE_MAX_TABLE_INDEX, 19542 0x0000 + UNICODE_MAX_TABLE_INDEX, 19543 0x0000 + UNICODE_MAX_TABLE_INDEX, 19544 0x0000 + UNICODE_MAX_TABLE_INDEX, 19545 0x0000 + UNICODE_MAX_TABLE_INDEX, 19546 0x0000 + UNICODE_MAX_TABLE_INDEX, 19547 0x0000 + UNICODE_MAX_TABLE_INDEX, 19548 0x0000 + UNICODE_MAX_TABLE_INDEX, 19549 0x0000 + UNICODE_MAX_TABLE_INDEX, 19550 0x0000 + UNICODE_MAX_TABLE_INDEX, 19551 0x0000 + UNICODE_MAX_TABLE_INDEX, 19552 0x0000 + UNICODE_MAX_TABLE_INDEX, 19553 0x0000 + UNICODE_MAX_TABLE_INDEX, 19554 0x0000 + UNICODE_MAX_TABLE_INDEX, 19555 0x0000 + UNICODE_MAX_TABLE_INDEX, 19556 0x0000 + UNICODE_MAX_TABLE_INDEX, 19557 0x0000 + UNICODE_MAX_TABLE_INDEX, 19558 0x0000 + UNICODE_MAX_TABLE_INDEX, 19559 0x0000 + UNICODE_MAX_TABLE_INDEX, 19560 0x0000 + UNICODE_MAX_TABLE_INDEX, 19561 0x0000 + UNICODE_MAX_TABLE_INDEX, 19562 0x0000 + UNICODE_MAX_TABLE_INDEX, 19563 0x0000 + UNICODE_MAX_TABLE_INDEX, 19564 0x0000 + UNICODE_MAX_TABLE_INDEX, 19565 0x0000 + UNICODE_MAX_TABLE_INDEX, 19566 0x0000 + UNICODE_MAX_TABLE_INDEX, 19567 0x0000 + UNICODE_MAX_TABLE_INDEX, 19568 0x0000 + UNICODE_MAX_TABLE_INDEX, 19569 0x0000 + UNICODE_MAX_TABLE_INDEX, 19570 0x0000 + UNICODE_MAX_TABLE_INDEX, 19571 0x0000 + UNICODE_MAX_TABLE_INDEX, 19572 0x0000 + UNICODE_MAX_TABLE_INDEX, 19573 0x0000 + UNICODE_MAX_TABLE_INDEX, 19574 0x0000 + UNICODE_MAX_TABLE_INDEX, 19575 0x0000 + UNICODE_MAX_TABLE_INDEX, 19576 0x0000 + UNICODE_MAX_TABLE_INDEX, 19577 0x0000 + UNICODE_MAX_TABLE_INDEX, 19578 0x0000 + UNICODE_MAX_TABLE_INDEX, 19579 0x0000 + UNICODE_MAX_TABLE_INDEX, 19580 0x0000 + UNICODE_MAX_TABLE_INDEX, 19581 0x0000 + UNICODE_MAX_TABLE_INDEX, 19582 0x0000 + UNICODE_MAX_TABLE_INDEX, 19583 0x0000 + UNICODE_MAX_TABLE_INDEX, 19584 0x0000 + UNICODE_MAX_TABLE_INDEX, 19585 0x0000 + UNICODE_MAX_TABLE_INDEX, 19586 0x0000 + UNICODE_MAX_TABLE_INDEX, 19587 0x0000 + UNICODE_MAX_TABLE_INDEX, 19588 0x0000 + UNICODE_MAX_TABLE_INDEX, 19589 0x0000 + UNICODE_MAX_TABLE_INDEX, 19590 0x0000 + UNICODE_MAX_TABLE_INDEX, 19591 0x0000 + UNICODE_MAX_TABLE_INDEX, 19592 0x0000 + UNICODE_MAX_TABLE_INDEX, 19593 0x0000 + UNICODE_MAX_TABLE_INDEX, 19594 0x0000 + UNICODE_MAX_TABLE_INDEX, 19595 0x0000 + UNICODE_MAX_TABLE_INDEX, 19596 0x0000 + UNICODE_MAX_TABLE_INDEX, 19597 0x0000 + UNICODE_MAX_TABLE_INDEX, 19598 0x0000 + UNICODE_MAX_TABLE_INDEX, 19599 0x0000 + UNICODE_MAX_TABLE_INDEX, 19600 0x0000 + UNICODE_MAX_TABLE_INDEX, 19601 0x0000 + UNICODE_MAX_TABLE_INDEX, 19602 0x0000 + UNICODE_MAX_TABLE_INDEX, 19603 0x0000 + UNICODE_MAX_TABLE_INDEX, 19604 0x0000 + UNICODE_MAX_TABLE_INDEX, 19605 0x0000 + UNICODE_MAX_TABLE_INDEX, 19606 0x0000 + UNICODE_MAX_TABLE_INDEX, 19607 0x0000 + UNICODE_MAX_TABLE_INDEX, 19608 0x0000 + UNICODE_MAX_TABLE_INDEX, 19609 0x0000 + UNICODE_MAX_TABLE_INDEX, 19610 0x0000 + UNICODE_MAX_TABLE_INDEX, 19611 0x0000 + UNICODE_MAX_TABLE_INDEX, 19612 0x0000 + UNICODE_MAX_TABLE_INDEX, 19613 0x0000 + UNICODE_MAX_TABLE_INDEX, 19614 0x0000 + UNICODE_MAX_TABLE_INDEX, 19615 0x0000 + UNICODE_MAX_TABLE_INDEX, 19616 0x0000 + UNICODE_MAX_TABLE_INDEX, 19617 0x0000 + UNICODE_MAX_TABLE_INDEX, 19618 0x0000 + UNICODE_MAX_TABLE_INDEX, 19619 0x0000 + UNICODE_MAX_TABLE_INDEX, 19620 0x0000 + UNICODE_MAX_TABLE_INDEX, 19621 0x0000 + UNICODE_MAX_TABLE_INDEX, 19622 0x0000 + UNICODE_MAX_TABLE_INDEX, 19623 0x0000 + UNICODE_MAX_TABLE_INDEX, 19624 0x0000 + UNICODE_MAX_TABLE_INDEX, 19625 0x0000 + UNICODE_MAX_TABLE_INDEX, 19626 0x0000 + UNICODE_MAX_TABLE_INDEX 19627 }; 19628 19629 static const rune title_table[][3] = { 19630 { 0x01c5, 0x01c4, 0x01c6 }, 19631 { 0x01c8, 0x01c7, 0x01c9 }, 19632 { 0x01cb, 0x01ca, 0x01cc }, 19633 { 0x01f2, 0x01f1, 0x01f3 }, 19634 { 0x1f88, 0x0000, 0x1f80 }, 19635 { 0x1f89, 0x0000, 0x1f81 }, 19636 { 0x1f8a, 0x0000, 0x1f82 }, 19637 { 0x1f8b, 0x0000, 0x1f83 }, 19638 { 0x1f8c, 0x0000, 0x1f84 }, 19639 { 0x1f8d, 0x0000, 0x1f85 }, 19640 { 0x1f8e, 0x0000, 0x1f86 }, 19641 { 0x1f8f, 0x0000, 0x1f87 }, 19642 { 0x1f98, 0x0000, 0x1f90 }, 19643 { 0x1f99, 0x0000, 0x1f91 }, 19644 { 0x1f9a, 0x0000, 0x1f92 }, 19645 { 0x1f9b, 0x0000, 0x1f93 }, 19646 { 0x1f9c, 0x0000, 0x1f94 }, 19647 { 0x1f9d, 0x0000, 0x1f95 }, 19648 { 0x1f9e, 0x0000, 0x1f96 }, 19649 { 0x1f9f, 0x0000, 0x1f97 }, 19650 { 0x1fa8, 0x0000, 0x1fa0 }, 19651 { 0x1fa9, 0x0000, 0x1fa1 }, 19652 { 0x1faa, 0x0000, 0x1fa2 }, 19653 { 0x1fab, 0x0000, 0x1fa3 }, 19654 { 0x1fac, 0x0000, 0x1fa4 }, 19655 { 0x1fad, 0x0000, 0x1fa5 }, 19656 { 0x1fae, 0x0000, 0x1fa6 }, 19657 { 0x1faf, 0x0000, 0x1fa7 }, 19658 { 0x1fbc, 0x0000, 0x1fb3 }, 19659 { 0x1fcc, 0x0000, 0x1fc3 }, 19660 { 0x1ffc, 0x0000, 0x1ff3 } 19661 }; 19662 19663 /* Table of special cases for case conversion; each record contains 19664 * First, the best single character mapping to lowercase if Lu, 19665 * and to uppercase if Ll, followed by the output mapping for the two cases 19666 * other than the case of the codepoint, in the order [Ll],[Lu],[Lt], 19667 * encoded in UTF-8, separated and terminated by a null character. 19668 */ 19669 static const char special_case_table[] = { 19670 "\x00\x53\x53\x00\x53\x73\0" /* offset 0 */ 19671 "\x69\x69\xcc\x87\x00\xc4\xb0\0" /* offset 7 */ 19672 "\x00\x46\x46\x00\x46\x66\0" /* offset 15 */ 19673 "\x00\x46\x49\x00\x46\x69\0" /* offset 22 */ 19674 "\x00\x46\x4c\x00\x46\x6c\0" /* offset 29 */ 19675 "\x00\x46\x46\x49\x00\x46\x66\x69\0" /* offset 36 */ 19676 "\x00\x46\x46\x4c\x00\x46\x66\x6c\0" /* offset 45 */ 19677 "\x00\x53\x54\x00\x53\x74\0" /* offset 54 */ 19678 "\x00\x53\x54\x00\x53\x74\0" /* offset 61 */ 19679 "\x00\xd4\xb5\xd5\x92\x00\xd4\xb5\xd6\x82\0" /* offset 68 */ 19680 "\x00\xd5\x84\xd5\x86\x00\xd5\x84\xd5\xb6\0" /* offset 79 */ 19681 "\x00\xd5\x84\xd4\xb5\x00\xd5\x84\xd5\xa5\0" /* offset 90 */ 19682 "\x00\xd5\x84\xd4\xbb\x00\xd5\x84\xd5\xab\0" /* offset 101 */ 19683 "\x00\xd5\x8e\xd5\x86\x00\xd5\x8e\xd5\xb6\0" /* offset 112 */ 19684 "\x00\xd5\x84\xd4\xbd\x00\xd5\x84\xd5\xad\0" /* offset 123 */ 19685 "\x00\xca\xbc\x4e\x00\xca\xbc\x4e\0" /* offset 134 */ 19686 "\x00\xce\x99\xcc\x88\xcc\x81\x00\xce\x99\xcc\x88\xcc\x81\0" /* offset 143 */ 19687 "\x00\xce\xa5\xcc\x88\xcc\x81\x00\xce\xa5\xcc\x88\xcc\x81\0" /* offset 158 */ 19688 "\x00\x4a\xcc\x8c\x00\x4a\xcc\x8c\0" /* offset 173 */ 19689 "\x00\x48\xcc\xb1\x00\x48\xcc\xb1\0" /* offset 182 */ 19690 "\x00\x54\xcc\x88\x00\x54\xcc\x88\0" /* offset 191 */ 19691 "\x00\x57\xcc\x8a\x00\x57\xcc\x8a\0" /* offset 200 */ 19692 "\x00\x59\xcc\x8a\x00\x59\xcc\x8a\0" /* offset 209 */ 19693 "\x00\x41\xca\xbe\x00\x41\xca\xbe\0" /* offset 218 */ 19694 "\x00\xce\xa5\xcc\x93\x00\xce\xa5\xcc\x93\0" /* offset 227 */ 19695 "\x00\xce\xa5\xcc\x93\xcc\x80\x00\xce\xa5\xcc\x93\xcc\x80\0" /* offset 238 */ 19696 "\x00\xce\xa5\xcc\x93\xcc\x81\x00\xce\xa5\xcc\x93\xcc\x81\0" /* offset 253 */ 19697 "\x00\xce\xa5\xcc\x93\xcd\x82\x00\xce\xa5\xcc\x93\xcd\x82\0" /* offset 268 */ 19698 "\x00\xce\x91\xcd\x82\x00\xce\x91\xcd\x82\0" /* offset 283 */ 19699 "\x00\xce\x97\xcd\x82\x00\xce\x97\xcd\x82\0" /* offset 294 */ 19700 "\x00\xce\x99\xcc\x88\xcc\x80\x00\xce\x99\xcc\x88\xcc\x80\0" /* offset 305 */ 19701 "\x00\xce\x99\xcc\x88\xcc\x81\x00\xce\x99\xcc\x88\xcc\x81\0" /* offset 320 */ 19702 "\x00\xce\x99\xcd\x82\x00\xce\x99\xcd\x82\0" /* offset 335 */ 19703 "\x00\xce\x99\xcc\x88\xcd\x82\x00\xce\x99\xcc\x88\xcd\x82\0" /* offset 346 */ 19704 "\x00\xce\xa5\xcc\x88\xcc\x80\x00\xce\xa5\xcc\x88\xcc\x80\0" /* offset 361 */ 19705 "\x00\xce\xa5\xcc\x88\xcc\x81\x00\xce\xa5\xcc\x88\xcc\x81\0" /* offset 376 */ 19706 "\x00\xce\xa1\xcc\x93\x00\xce\xa1\xcc\x93\0" /* offset 391 */ 19707 "\x00\xce\xa5\xcd\x82\x00\xce\xa5\xcd\x82\0" /* offset 402 */ 19708 "\x00\xce\xa5\xcc\x88\xcd\x82\x00\xce\xa5\xcc\x88\xcd\x82\0" /* offset 413 */ 19709 "\x00\xce\xa9\xcd\x82\x00\xce\xa9\xcd\x82\0" /* offset 428 */ 19710 "\xe1\xbe\x88\xe1\xbc\x88\xce\x99\x00\xe1\xbe\x88\0" /* offset 439 */ 19711 "\xe1\xbe\x89\xe1\xbc\x89\xce\x99\x00\xe1\xbe\x89\0" /* offset 452 */ 19712 "\xe1\xbe\x8a\xe1\xbc\x8a\xce\x99\x00\xe1\xbe\x8a\0" /* offset 465 */ 19713 "\xe1\xbe\x8b\xe1\xbc\x8b\xce\x99\x00\xe1\xbe\x8b\0" /* offset 478 */ 19714 "\xe1\xbe\x8c\xe1\xbc\x8c\xce\x99\x00\xe1\xbe\x8c\0" /* offset 491 */ 19715 "\xe1\xbe\x8d\xe1\xbc\x8d\xce\x99\x00\xe1\xbe\x8d\0" /* offset 504 */ 19716 "\xe1\xbe\x8e\xe1\xbc\x8e\xce\x99\x00\xe1\xbe\x8e\0" /* offset 517 */ 19717 "\xe1\xbe\x8f\xe1\xbc\x8f\xce\x99\x00\xe1\xbe\x8f\0" /* offset 530 */ 19718 "\xe1\xbe\x80\x00\xe1\xbc\x88\xce\x99\0" /* offset 543 */ 19719 "\xe1\xbe\x81\x00\xe1\xbc\x89\xce\x99\0" /* offset 553 */ 19720 "\xe1\xbe\x82\x00\xe1\xbc\x8a\xce\x99\0" /* offset 563 */ 19721 "\xe1\xbe\x83\x00\xe1\xbc\x8b\xce\x99\0" /* offset 573 */ 19722 "\xe1\xbe\x84\x00\xe1\xbc\x8c\xce\x99\0" /* offset 583 */ 19723 "\xe1\xbe\x85\x00\xe1\xbc\x8d\xce\x99\0" /* offset 593 */ 19724 "\xe1\xbe\x86\x00\xe1\xbc\x8e\xce\x99\0" /* offset 603 */ 19725 "\xe1\xbe\x87\x00\xe1\xbc\x8f\xce\x99\0" /* offset 613 */ 19726 "\xe1\xbe\x98\xe1\xbc\xa8\xce\x99\x00\xe1\xbe\x98\0" /* offset 623 */ 19727 "\xe1\xbe\x99\xe1\xbc\xa9\xce\x99\x00\xe1\xbe\x99\0" /* offset 636 */ 19728 "\xe1\xbe\x9a\xe1\xbc\xaa\xce\x99\x00\xe1\xbe\x9a\0" /* offset 649 */ 19729 "\xe1\xbe\x9b\xe1\xbc\xab\xce\x99\x00\xe1\xbe\x9b\0" /* offset 662 */ 19730 "\xe1\xbe\x9c\xe1\xbc\xac\xce\x99\x00\xe1\xbe\x9c\0" /* offset 675 */ 19731 "\xe1\xbe\x9d\xe1\xbc\xad\xce\x99\x00\xe1\xbe\x9d\0" /* offset 688 */ 19732 "\xe1\xbe\x9e\xe1\xbc\xae\xce\x99\x00\xe1\xbe\x9e\0" /* offset 701 */ 19733 "\xe1\xbe\x9f\xe1\xbc\xaf\xce\x99\x00\xe1\xbe\x9f\0" /* offset 714 */ 19734 "\xe1\xbe\x90\x00\xe1\xbc\xa8\xce\x99\0" /* offset 727 */ 19735 "\xe1\xbe\x91\x00\xe1\xbc\xa9\xce\x99\0" /* offset 737 */ 19736 "\xe1\xbe\x92\x00\xe1\xbc\xaa\xce\x99\0" /* offset 747 */ 19737 "\xe1\xbe\x93\x00\xe1\xbc\xab\xce\x99\0" /* offset 757 */ 19738 "\xe1\xbe\x94\x00\xe1\xbc\xac\xce\x99\0" /* offset 767 */ 19739 "\xe1\xbe\x95\x00\xe1\xbc\xad\xce\x99\0" /* offset 777 */ 19740 "\xe1\xbe\x96\x00\xe1\xbc\xae\xce\x99\0" /* offset 787 */ 19741 "\xe1\xbe\x97\x00\xe1\xbc\xaf\xce\x99\0" /* offset 797 */ 19742 "\xe1\xbe\xa8\xe1\xbd\xa8\xce\x99\x00\xe1\xbe\xa8\0" /* offset 807 */ 19743 "\xe1\xbe\xa9\xe1\xbd\xa9\xce\x99\x00\xe1\xbe\xa9\0" /* offset 820 */ 19744 "\xe1\xbe\xaa\xe1\xbd\xaa\xce\x99\x00\xe1\xbe\xaa\0" /* offset 833 */ 19745 "\xe1\xbe\xab\xe1\xbd\xab\xce\x99\x00\xe1\xbe\xab\0" /* offset 846 */ 19746 "\xe1\xbe\xac\xe1\xbd\xac\xce\x99\x00\xe1\xbe\xac\0" /* offset 859 */ 19747 "\xe1\xbe\xad\xe1\xbd\xad\xce\x99\x00\xe1\xbe\xad\0" /* offset 872 */ 19748 "\xe1\xbe\xae\xe1\xbd\xae\xce\x99\x00\xe1\xbe\xae\0" /* offset 885 */ 19749 "\xe1\xbe\xaf\xe1\xbd\xaf\xce\x99\x00\xe1\xbe\xaf\0" /* offset 898 */ 19750 "\xe1\xbe\xa0\x00\xe1\xbd\xa8\xce\x99\0" /* offset 911 */ 19751 "\xe1\xbe\xa1\x00\xe1\xbd\xa9\xce\x99\0" /* offset 921 */ 19752 "\xe1\xbe\xa2\x00\xe1\xbd\xaa\xce\x99\0" /* offset 931 */ 19753 "\xe1\xbe\xa3\x00\xe1\xbd\xab\xce\x99\0" /* offset 941 */ 19754 "\xe1\xbe\xa4\x00\xe1\xbd\xac\xce\x99\0" /* offset 951 */ 19755 "\xe1\xbe\xa5\x00\xe1\xbd\xad\xce\x99\0" /* offset 961 */ 19756 "\xe1\xbe\xa6\x00\xe1\xbd\xae\xce\x99\0" /* offset 971 */ 19757 "\xe1\xbe\xa7\x00\xe1\xbd\xaf\xce\x99\0" /* offset 981 */ 19758 "\xe1\xbe\xbc\xce\x91\xce\x99\x00\xe1\xbe\xbc\0" /* offset 991 */ 19759 "\xe1\xbe\xb3\x00\xce\x91\xce\x99\0" /* offset 1003 */ 19760 "\xe1\xbf\x8c\xce\x97\xce\x99\x00\xe1\xbf\x8c\0" /* offset 1012 */ 19761 "\xe1\xbf\x83\x00\xce\x97\xce\x99\0" /* offset 1024 */ 19762 "\xe1\xbf\xbc\xce\xa9\xce\x99\x00\xe1\xbf\xbc\0" /* offset 1033 */ 19763 "\xe1\xbf\xb3\x00\xce\xa9\xce\x99\0" /* offset 1045 */ 19764 "\x00\xe1\xbe\xba\xce\x99\x00\xe1\xbe\xba\xcd\x85\0" /* offset 1054 */ 19765 "\x00\xce\x86\xce\x99\x00\xce\x86\xcd\x85\0" /* offset 1067 */ 19766 "\x00\xe1\xbf\x8a\xce\x99\x00\xe1\xbf\x8a\xcd\x85\0" /* offset 1078 */ 19767 "\x00\xce\x89\xce\x99\x00\xce\x89\xcd\x85\0" /* offset 1091 */ 19768 "\x00\xe1\xbf\xba\xce\x99\x00\xe1\xbf\xba\xcd\x85\0" /* offset 1102 */ 19769 "\x00\xce\x8f\xce\x99\x00\xce\x8f\xcd\x85\0" /* offset 1115 */ 19770 "\x00\xce\x91\xcd\x82\xce\x99\x00\xce\x91\xcd\x82\xcd\x85\0" /* offset 1126 */ 19771 "\x00\xce\x97\xcd\x82\xce\x99\x00\xce\x97\xcd\x82\xcd\x85\0" /* offset 1141 */ 19772 "\x00\xce\xa9\xcd\x82\xce\x99\x00\xce\xa9\xcd\x82\xcd\x85\0" /* offset 1156 */ 19773 }; 19774 19775 /* Table of casefolding cases that can't be derived by lowercasing 19776 */ 19777 static const struct { 19778 uint16_t ch; 19779 char data[7]; 19780 } casefold_table[] = { 19781 { 0x00b5, "\xce\xbc" }, 19782 { 0x00df, "\x73\x73" }, 19783 { 0x0130, "\x69\xcc\x87" }, 19784 { 0x0149, "\xca\xbc\x6e" }, 19785 { 0x017f, "\x73" }, 19786 { 0x01f0, "\x6a\xcc\x8c" }, 19787 { 0x0345, "\xce\xb9" }, 19788 { 0x0390, "\xce\xb9\xcc\x88\xcc\x81" }, 19789 { 0x03b0, "\xcf\x85\xcc\x88\xcc\x81" }, 19790 { 0x03c2, "\xcf\x83" }, 19791 { 0x03d0, "\xce\xb2" }, 19792 { 0x03d1, "\xce\xb8" }, 19793 { 0x03d5, "\xcf\x86" }, 19794 { 0x03d6, "\xcf\x80" }, 19795 { 0x03f0, "\xce\xba" }, 19796 { 0x03f1, "\xcf\x81" }, 19797 { 0x03f5, "\xce\xb5" }, 19798 { 0x0587, "\xd5\xa5\xd6\x82" }, 19799 { 0x13f8, "\xe1\x8f\xb0" }, 19800 { 0x13f9, "\xe1\x8f\xb1" }, 19801 { 0x13fa, "\xe1\x8f\xb2" }, 19802 { 0x13fb, "\xe1\x8f\xb3" }, 19803 { 0x13fc, "\xe1\x8f\xb4" }, 19804 { 0x13fd, "\xe1\x8f\xb5" }, 19805 { 0x1c80, "\xd0\xb2" }, 19806 { 0x1c81, "\xd0\xb4" }, 19807 { 0x1c82, "\xd0\xbe" }, 19808 { 0x1c83, "\xd1\x81" }, 19809 { 0x1c84, "\xd1\x82" }, 19810 { 0x1c85, "\xd1\x82" }, 19811 { 0x1c86, "\xd1\x8a" }, 19812 { 0x1c87, "\xd1\xa3" }, 19813 { 0x1c88, "\xea\x99\x8b" }, 19814 { 0x1e96, "\x68\xcc\xb1" }, 19815 { 0x1e97, "\x74\xcc\x88" }, 19816 { 0x1e98, "\x77\xcc\x8a" }, 19817 { 0x1e99, "\x79\xcc\x8a" }, 19818 { 0x1e9a, "\x61\xca\xbe" }, 19819 { 0x1e9b, "\xe1\xb9\xa1" }, 19820 { 0x1e9e, "\x73\x73" }, 19821 { 0x1f50, "\xcf\x85\xcc\x93" }, 19822 { 0x1f52, "\xcf\x85\xcc\x93\xcc\x80" }, 19823 { 0x1f54, "\xcf\x85\xcc\x93\xcc\x81" }, 19824 { 0x1f56, "\xcf\x85\xcc\x93\xcd\x82" }, 19825 { 0x1f80, "\xe1\xbc\x80\xce\xb9" }, 19826 { 0x1f81, "\xe1\xbc\x81\xce\xb9" }, 19827 { 0x1f82, "\xe1\xbc\x82\xce\xb9" }, 19828 { 0x1f83, "\xe1\xbc\x83\xce\xb9" }, 19829 { 0x1f84, "\xe1\xbc\x84\xce\xb9" }, 19830 { 0x1f85, "\xe1\xbc\x85\xce\xb9" }, 19831 { 0x1f86, "\xe1\xbc\x86\xce\xb9" }, 19832 { 0x1f87, "\xe1\xbc\x87\xce\xb9" }, 19833 { 0x1f88, "\xe1\xbc\x80\xce\xb9" }, 19834 { 0x1f89, "\xe1\xbc\x81\xce\xb9" }, 19835 { 0x1f8a, "\xe1\xbc\x82\xce\xb9" }, 19836 { 0x1f8b, "\xe1\xbc\x83\xce\xb9" }, 19837 { 0x1f8c, "\xe1\xbc\x84\xce\xb9" }, 19838 { 0x1f8d, "\xe1\xbc\x85\xce\xb9" }, 19839 { 0x1f8e, "\xe1\xbc\x86\xce\xb9" }, 19840 { 0x1f8f, "\xe1\xbc\x87\xce\xb9" }, 19841 { 0x1f90, "\xe1\xbc\xa0\xce\xb9" }, 19842 { 0x1f91, "\xe1\xbc\xa1\xce\xb9" }, 19843 { 0x1f92, "\xe1\xbc\xa2\xce\xb9" }, 19844 { 0x1f93, "\xe1\xbc\xa3\xce\xb9" }, 19845 { 0x1f94, "\xe1\xbc\xa4\xce\xb9" }, 19846 { 0x1f95, "\xe1\xbc\xa5\xce\xb9" }, 19847 { 0x1f96, "\xe1\xbc\xa6\xce\xb9" }, 19848 { 0x1f97, "\xe1\xbc\xa7\xce\xb9" }, 19849 { 0x1f98, "\xe1\xbc\xa0\xce\xb9" }, 19850 { 0x1f99, "\xe1\xbc\xa1\xce\xb9" }, 19851 { 0x1f9a, "\xe1\xbc\xa2\xce\xb9" }, 19852 { 0x1f9b, "\xe1\xbc\xa3\xce\xb9" }, 19853 { 0x1f9c, "\xe1\xbc\xa4\xce\xb9" }, 19854 { 0x1f9d, "\xe1\xbc\xa5\xce\xb9" }, 19855 { 0x1f9e, "\xe1\xbc\xa6\xce\xb9" }, 19856 { 0x1f9f, "\xe1\xbc\xa7\xce\xb9" }, 19857 { 0x1fa0, "\xe1\xbd\xa0\xce\xb9" }, 19858 { 0x1fa1, "\xe1\xbd\xa1\xce\xb9" }, 19859 { 0x1fa2, "\xe1\xbd\xa2\xce\xb9" }, 19860 { 0x1fa3, "\xe1\xbd\xa3\xce\xb9" }, 19861 { 0x1fa4, "\xe1\xbd\xa4\xce\xb9" }, 19862 { 0x1fa5, "\xe1\xbd\xa5\xce\xb9" }, 19863 { 0x1fa6, "\xe1\xbd\xa6\xce\xb9" }, 19864 { 0x1fa7, "\xe1\xbd\xa7\xce\xb9" }, 19865 { 0x1fa8, "\xe1\xbd\xa0\xce\xb9" }, 19866 { 0x1fa9, "\xe1\xbd\xa1\xce\xb9" }, 19867 { 0x1faa, "\xe1\xbd\xa2\xce\xb9" }, 19868 { 0x1fab, "\xe1\xbd\xa3\xce\xb9" }, 19869 { 0x1fac, "\xe1\xbd\xa4\xce\xb9" }, 19870 { 0x1fad, "\xe1\xbd\xa5\xce\xb9" }, 19871 { 0x1fae, "\xe1\xbd\xa6\xce\xb9" }, 19872 { 0x1faf, "\xe1\xbd\xa7\xce\xb9" }, 19873 { 0x1fb2, "\xe1\xbd\xb0\xce\xb9" }, 19874 { 0x1fb3, "\xce\xb1\xce\xb9" }, 19875 { 0x1fb4, "\xce\xac\xce\xb9" }, 19876 { 0x1fb6, "\xce\xb1\xcd\x82" }, 19877 { 0x1fb7, "\xce\xb1\xcd\x82\xce\xb9" }, 19878 { 0x1fbc, "\xce\xb1\xce\xb9" }, 19879 { 0x1fbe, "\xce\xb9" }, 19880 { 0x1fc2, "\xe1\xbd\xb4\xce\xb9" }, 19881 { 0x1fc3, "\xce\xb7\xce\xb9" }, 19882 { 0x1fc4, "\xce\xae\xce\xb9" }, 19883 { 0x1fc6, "\xce\xb7\xcd\x82" }, 19884 { 0x1fc7, "\xce\xb7\xcd\x82\xce\xb9" }, 19885 { 0x1fcc, "\xce\xb7\xce\xb9" }, 19886 { 0x1fd2, "\xce\xb9\xcc\x88\xcc\x80" }, 19887 { 0x1fd3, "\xce\xb9\xcc\x88\xcc\x81" }, 19888 { 0x1fd6, "\xce\xb9\xcd\x82" }, 19889 { 0x1fd7, "\xce\xb9\xcc\x88\xcd\x82" }, 19890 { 0x1fe2, "\xcf\x85\xcc\x88\xcc\x80" }, 19891 { 0x1fe3, "\xcf\x85\xcc\x88\xcc\x81" }, 19892 { 0x1fe4, "\xcf\x81\xcc\x93" }, 19893 { 0x1fe6, "\xcf\x85\xcd\x82" }, 19894 { 0x1fe7, "\xcf\x85\xcc\x88\xcd\x82" }, 19895 { 0x1ff2, "\xe1\xbd\xbc\xce\xb9" }, 19896 { 0x1ff3, "\xcf\x89\xce\xb9" }, 19897 { 0x1ff4, "\xcf\x8e\xce\xb9" }, 19898 { 0x1ff6, "\xcf\x89\xcd\x82" }, 19899 { 0x1ff7, "\xcf\x89\xcd\x82\xce\xb9" }, 19900 { 0x1ffc, "\xcf\x89\xce\xb9" }, 19901 { 0x2160, "\xe2\x85\xb0" }, 19902 { 0x2161, "\xe2\x85\xb1" }, 19903 { 0x2162, "\xe2\x85\xb2" }, 19904 { 0x2163, "\xe2\x85\xb3" }, 19905 { 0x2164, "\xe2\x85\xb4" }, 19906 { 0x2165, "\xe2\x85\xb5" }, 19907 { 0x2166, "\xe2\x85\xb6" }, 19908 { 0x2167, "\xe2\x85\xb7" }, 19909 { 0x2168, "\xe2\x85\xb8" }, 19910 { 0x2169, "\xe2\x85\xb9" }, 19911 { 0x216a, "\xe2\x85\xba" }, 19912 { 0x216b, "\xe2\x85\xbb" }, 19913 { 0x216c, "\xe2\x85\xbc" }, 19914 { 0x216d, "\xe2\x85\xbd" }, 19915 { 0x216e, "\xe2\x85\xbe" }, 19916 { 0x216f, "\xe2\x85\xbf" }, 19917 { 0x24b6, "\xe2\x93\x90" }, 19918 { 0x24b7, "\xe2\x93\x91" }, 19919 { 0x24b8, "\xe2\x93\x92" }, 19920 { 0x24b9, "\xe2\x93\x93" }, 19921 { 0x24ba, "\xe2\x93\x94" }, 19922 { 0x24bb, "\xe2\x93\x95" }, 19923 { 0x24bc, "\xe2\x93\x96" }, 19924 { 0x24bd, "\xe2\x93\x97" }, 19925 { 0x24be, "\xe2\x93\x98" }, 19926 { 0x24bf, "\xe2\x93\x99" }, 19927 { 0x24c0, "\xe2\x93\x9a" }, 19928 { 0x24c1, "\xe2\x93\x9b" }, 19929 { 0x24c2, "\xe2\x93\x9c" }, 19930 { 0x24c3, "\xe2\x93\x9d" }, 19931 { 0x24c4, "\xe2\x93\x9e" }, 19932 { 0x24c5, "\xe2\x93\x9f" }, 19933 { 0x24c6, "\xe2\x93\xa0" }, 19934 { 0x24c7, "\xe2\x93\xa1" }, 19935 { 0x24c8, "\xe2\x93\xa2" }, 19936 { 0x24c9, "\xe2\x93\xa3" }, 19937 { 0x24ca, "\xe2\x93\xa4" }, 19938 { 0x24cb, "\xe2\x93\xa5" }, 19939 { 0x24cc, "\xe2\x93\xa6" }, 19940 { 0x24cd, "\xe2\x93\xa7" }, 19941 { 0x24ce, "\xe2\x93\xa8" }, 19942 { 0x24cf, "\xe2\x93\xa9" }, 19943 { 0xab70, "\xe1\x8e\xa0" }, 19944 { 0xab71, "\xe1\x8e\xa1" }, 19945 { 0xab72, "\xe1\x8e\xa2" }, 19946 { 0xab73, "\xe1\x8e\xa3" }, 19947 { 0xab74, "\xe1\x8e\xa4" }, 19948 { 0xab75, "\xe1\x8e\xa5" }, 19949 { 0xab76, "\xe1\x8e\xa6" }, 19950 { 0xab77, "\xe1\x8e\xa7" }, 19951 { 0xab78, "\xe1\x8e\xa8" }, 19952 { 0xab79, "\xe1\x8e\xa9" }, 19953 { 0xab7a, "\xe1\x8e\xaa" }, 19954 { 0xab7b, "\xe1\x8e\xab" }, 19955 { 0xab7c, "\xe1\x8e\xac" }, 19956 { 0xab7d, "\xe1\x8e\xad" }, 19957 { 0xab7e, "\xe1\x8e\xae" }, 19958 { 0xab7f, "\xe1\x8e\xaf" }, 19959 { 0xab80, "\xe1\x8e\xb0" }, 19960 { 0xab81, "\xe1\x8e\xb1" }, 19961 { 0xab82, "\xe1\x8e\xb2" }, 19962 { 0xab83, "\xe1\x8e\xb3" }, 19963 { 0xab84, "\xe1\x8e\xb4" }, 19964 { 0xab85, "\xe1\x8e\xb5" }, 19965 { 0xab86, "\xe1\x8e\xb6" }, 19966 { 0xab87, "\xe1\x8e\xb7" }, 19967 { 0xab88, "\xe1\x8e\xb8" }, 19968 { 0xab89, "\xe1\x8e\xb9" }, 19969 { 0xab8a, "\xe1\x8e\xba" }, 19970 { 0xab8b, "\xe1\x8e\xbb" }, 19971 { 0xab8c, "\xe1\x8e\xbc" }, 19972 { 0xab8d, "\xe1\x8e\xbd" }, 19973 { 0xab8e, "\xe1\x8e\xbe" }, 19974 { 0xab8f, "\xe1\x8e\xbf" }, 19975 { 0xab90, "\xe1\x8f\x80" }, 19976 { 0xab91, "\xe1\x8f\x81" }, 19977 { 0xab92, "\xe1\x8f\x82" }, 19978 { 0xab93, "\xe1\x8f\x83" }, 19979 { 0xab94, "\xe1\x8f\x84" }, 19980 { 0xab95, "\xe1\x8f\x85" }, 19981 { 0xab96, "\xe1\x8f\x86" }, 19982 { 0xab97, "\xe1\x8f\x87" }, 19983 { 0xab98, "\xe1\x8f\x88" }, 19984 { 0xab99, "\xe1\x8f\x89" }, 19985 { 0xab9a, "\xe1\x8f\x8a" }, 19986 { 0xab9b, "\xe1\x8f\x8b" }, 19987 { 0xab9c, "\xe1\x8f\x8c" }, 19988 { 0xab9d, "\xe1\x8f\x8d" }, 19989 { 0xab9e, "\xe1\x8f\x8e" }, 19990 { 0xab9f, "\xe1\x8f\x8f" }, 19991 { 0xaba0, "\xe1\x8f\x90" }, 19992 { 0xaba1, "\xe1\x8f\x91" }, 19993 { 0xaba2, "\xe1\x8f\x92" }, 19994 { 0xaba3, "\xe1\x8f\x93" }, 19995 { 0xaba4, "\xe1\x8f\x94" }, 19996 { 0xaba5, "\xe1\x8f\x95" }, 19997 { 0xaba6, "\xe1\x8f\x96" }, 19998 { 0xaba7, "\xe1\x8f\x97" }, 19999 { 0xaba8, "\xe1\x8f\x98" }, 20000 { 0xaba9, "\xe1\x8f\x99" }, 20001 { 0xabaa, "\xe1\x8f\x9a" }, 20002 { 0xabab, "\xe1\x8f\x9b" }, 20003 { 0xabac, "\xe1\x8f\x9c" }, 20004 { 0xabad, "\xe1\x8f\x9d" }, 20005 { 0xabae, "\xe1\x8f\x9e" }, 20006 { 0xabaf, "\xe1\x8f\x9f" }, 20007 { 0xabb0, "\xe1\x8f\xa0" }, 20008 { 0xabb1, "\xe1\x8f\xa1" }, 20009 { 0xabb2, "\xe1\x8f\xa2" }, 20010 { 0xabb3, "\xe1\x8f\xa3" }, 20011 { 0xabb4, "\xe1\x8f\xa4" }, 20012 { 0xabb5, "\xe1\x8f\xa5" }, 20013 { 0xabb6, "\xe1\x8f\xa6" }, 20014 { 0xabb7, "\xe1\x8f\xa7" }, 20015 { 0xabb8, "\xe1\x8f\xa8" }, 20016 { 0xabb9, "\xe1\x8f\xa9" }, 20017 { 0xabba, "\xe1\x8f\xaa" }, 20018 { 0xabbb, "\xe1\x8f\xab" }, 20019 { 0xabbc, "\xe1\x8f\xac" }, 20020 { 0xabbd, "\xe1\x8f\xad" }, 20021 { 0xabbe, "\xe1\x8f\xae" }, 20022 { 0xabbf, "\xe1\x8f\xaf" }, 20023 { 0xfb00, "\x66\x66" }, 20024 { 0xfb01, "\x66\x69" }, 20025 { 0xfb02, "\x66\x6c" }, 20026 { 0xfb03, "\x66\x66\x69" }, 20027 { 0xfb04, "\x66\x66\x6c" }, 20028 { 0xfb05, "\x73\x74" }, 20029 { 0xfb06, "\x73\x74" }, 20030 { 0xfb13, "\xd5\xb4\xd5\xb6" }, 20031 { 0xfb14, "\xd5\xb4\xd5\xa5" }, 20032 { 0xfb15, "\xd5\xb4\xd5\xab" }, 20033 { 0xfb16, "\xd5\xbe\xd5\xb6" }, 20034 { 0xfb17, "\xd5\xb4\xd5\xad" }, 20035 }; 20036 20037 static const uint8_t cclass_data[][256] = { 20038 { /* page 3, index 0 */ 20039 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 20040 230, 230, 230, 230, 230, 230, 230, 232, 220, 220, 220, 220, 232, 216, 20041 220, 220, 220, 220, 220, 202, 202, 220, 220, 220, 220, 202, 202, 220, 20042 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 1, 1, 1, 1, 1, 220, 20043 220, 220, 220, 230, 230, 230, 230, 230, 230, 230, 230, 240, 230, 220, 20044 220, 220, 230, 230, 230, 220, 220, 0, 230, 230, 230, 220, 220, 220, 220, 20045 230, 232, 220, 220, 230, 233, 234, 234, 233, 234, 234, 233, 230, 230, 20046 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 20047 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20048 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20049 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20050 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20051 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20052 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 20053 }, 20054 { /* page 4, index 1 */ 20055 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20056 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20057 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20058 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20059 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20060 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 230, 0, 0, 0, 0, 0, 20061 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20062 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20063 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20064 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20065 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 20066 }, 20067 { /* page 5, index 2 */ 20068 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20069 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20070 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20071 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20072 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20073 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20074 0, 220, 230, 230, 230, 230, 220, 230, 230, 230, 222, 220, 230, 230, 230, 20075 230, 230, 230, 220, 220, 220, 220, 220, 220, 230, 230, 220, 230, 230, 20076 222, 228, 230, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 19, 20, 21, 22, 0, 20077 23, 0, 24, 25, 0, 230, 220, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20078 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20079 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 20080 }, 20081 { /* page 6, index 3 */ 20082 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 230, 20083 230, 230, 230, 30, 31, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20084 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20085 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 28, 29, 30, 31, 32, 33, 34, 230, 230, 220, 20086 220, 230, 230, 230, 230, 230, 220, 230, 230, 220, 0, 0, 0, 0, 0, 0, 0, 0, 20087 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20088 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20089 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20090 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20091 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 230, 230, 20092 230, 0, 0, 230, 230, 230, 230, 220, 230, 0, 0, 230, 230, 0, 220, 230, 20093 230, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 20094 }, 20095 { /* page 7, index 4 */ 20096 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 20097 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20098 230, 220, 230, 230, 220, 230, 230, 220, 220, 220, 230, 220, 220, 230, 20099 220, 230, 230, 230, 220, 230, 220, 230, 220, 230, 220, 230, 230, 0, 0, 0, 20100 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20101 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20102 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20103 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20104 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20105 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20106 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 230, 230, 230, 20107 220, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 20108 }, 20109 { /* page 8, index 5 */ 20110 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 20111 230, 230, 230, 0, 230, 230, 230, 230, 230, 230, 230, 230, 230, 0, 230, 20112 230, 230, 0, 230, 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20113 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20114 0, 0, 0, 0, 0, 0, 0, 220, 220, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20115 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20116 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20117 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20118 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20119 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 230, 230, 230, 20120 230, 230, 230, 230, 230, 230, 230, 0, 220, 230, 230, 220, 230, 230, 220, 20121 230, 230, 230, 220, 220, 220, 27, 28, 29, 230, 230, 230, 220, 230, 230, 20122 220, 220, 230, 230, 230, 230, 230 20123 }, 20124 { /* page 9, index 6 */ 20125 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20126 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20127 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20128 0, 0, 0, 0, 0, 9, 0, 0, 0, 230, 220, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20129 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20130 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20131 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20132 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 20133 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 20134 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20135 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 20136 }, 20137 { /* page 10, index 7 */ 20138 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20139 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20140 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20141 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20142 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20143 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20144 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20145 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 20146 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20147 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20148 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 20149 }, 20150 { /* page 11, index 8 */ 20151 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20152 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20153 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20154 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20155 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20156 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20157 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20158 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20159 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20160 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20161 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 20162 }, 20163 { /* page 12, index 9 */ 20164 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20165 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20166 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20167 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 84, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20168 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20169 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20170 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20171 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 20172 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20173 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20174 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 20175 }, 20176 { /* page 13, index 10 */ 20177 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20178 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20179 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20180 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20181 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20182 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20183 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20184 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20185 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20186 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20187 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 20188 }, 20189 { /* page 14, index 11 */ 20190 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20191 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20192 0, 0, 0, 0, 0, 0, 0, 0, 103, 103, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20193 0, 107, 107, 107, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20194 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20195 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20196 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20197 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 118, 118, 0, 0, 20198 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 122, 122, 122, 122, 0, 0, 0, 0, 0, 0, 20199 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20200 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 20201 }, 20202 { /* page 15, index 12 */ 20203 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20204 220, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20205 0, 0, 0, 0, 0, 0, 220, 0, 220, 0, 216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20206 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20207 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 129, 130, 0, 20208 132, 0, 0, 0, 0, 0, 130, 130, 130, 130, 0, 0, 130, 0, 230, 230, 9, 0, 20209 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20210 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20211 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 0, 0, 0, 0, 0, 0, 20212 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20213 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20214 0, 0, 0 20215 }, 20216 { /* page 16, index 13 */ 20217 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20218 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20219 0, 0, 0, 0, 0, 0, 0, 7, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20220 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20221 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20222 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 0, 0, 20223 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20224 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20225 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20226 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20227 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 20228 }, 20229 { /* page 19, index 14 */ 20230 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20231 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20232 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20233 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 20234 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20235 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20236 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20237 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20238 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20239 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20240 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 20241 }, 20242 { /* page 23, index 15 */ 20243 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 20244 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20245 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20246 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20247 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20248 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20249 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20250 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20251 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 20252 0, 0, 0, 0, 0, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20253 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 20254 }, 20255 { /* page 24, index 16 */ 20256 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20257 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20258 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20259 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20260 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20261 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20262 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20263 0, 228, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20264 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20265 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20266 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 20267 }, 20268 { /* page 25, index 17 */ 20269 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20270 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20271 0, 0, 0, 0, 0, 0, 0, 0, 0, 222, 230, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20272 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20273 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20274 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20275 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20276 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20277 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20278 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20279 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 20280 }, 20281 { /* page 26, index 18 */ 20282 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 20283 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20284 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20285 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20286 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 20287 230, 230, 230, 230, 230, 230, 0, 0, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20288 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20289 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 230, 220, 220, 20290 220, 220, 220, 220, 230, 230, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20291 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20292 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20293 0, 0, 0, 0, 0 20294 }, 20295 { /* page 27, index 19 */ 20296 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20297 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20298 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 20299 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20300 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 220, 230, 230, 230, 230, 230, 230, 20301 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20302 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20303 0, 0, 0, 0, 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20304 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20305 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 20306 0, 0, 0, 0, 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 20307 }, 20308 { /* page 28, index 20 */ 20309 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20310 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20311 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20312 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20313 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20314 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20315 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20316 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20317 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 0, 1, 220, 20318 220, 220, 220, 220, 230, 230, 220, 220, 220, 220, 230, 0, 1, 1, 1, 1, 1, 20319 1, 1, 0, 0, 0, 0, 220, 0, 0, 0, 0, 0, 0, 230, 0, 0, 0, 230, 230, 0, 0, 0, 20320 0, 0, 0 20321 }, 20322 { /* page 29, index 21 */ 20323 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20324 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20325 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20326 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20327 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20328 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20329 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20330 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20331 230, 230, 220, 230, 230, 230, 230, 230, 230, 230, 220, 230, 230, 234, 20332 214, 220, 202, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 20333 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 20334 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 232, 228, 20335 228, 220, 0, 230, 233, 220, 230, 220 20336 }, 20337 { /* page 32, index 22 */ 20338 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20339 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20340 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20341 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20342 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20343 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20344 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20345 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20346 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 1, 1, 230, 230, 20347 230, 230, 1, 1, 1, 230, 230, 0, 0, 0, 0, 230, 0, 0, 0, 1, 1, 230, 220, 20348 230, 1, 1, 220, 220, 220, 220, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20349 0, 0, 0 20350 }, 20351 { /* page 44, index 23 */ 20352 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20353 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20354 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20355 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20356 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20357 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20358 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20359 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20360 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20361 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 20362 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 20363 }, 20364 { /* page 45, index 24 */ 20365 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20366 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20367 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20368 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20369 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20370 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20371 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20372 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20373 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20374 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 20375 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 20376 230, 230, 230, 230, 230, 230, 230, 230 20377 }, 20378 { /* page 48, index 25 */ 20379 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20380 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 218, 228, 232, 222, 20381 224, 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20382 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20383 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20384 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20385 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20386 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20387 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20388 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20389 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 20390 }, 20391 { /* page 166, index 26 */ 20392 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20393 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20394 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20395 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20396 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 0, 0, 0, 0, 230, 230, 20397 230, 230, 230, 230, 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20398 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 20399 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20400 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20401 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20402 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20403 0 20404 }, 20405 { /* page 168, index 27 */ 20406 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20407 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20408 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20409 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20410 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20411 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20412 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20413 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20414 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20415 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 20416 230, 230, 230, 230, 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20417 0, 0, 0 20418 }, 20419 { /* page 169, index 28 */ 20420 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20421 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 220, 220, 20422 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20423 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20424 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20425 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20426 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20427 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20428 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20429 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20430 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 20431 }, 20432 { /* page 170, index 29 */ 20433 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20434 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20435 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20436 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20437 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20438 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20439 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20440 0, 0, 0, 0, 0, 0, 0, 0, 230, 0, 230, 230, 220, 0, 0, 230, 230, 0, 0, 0, 20441 0, 0, 230, 230, 0, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20442 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20443 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0 20444 }, 20445 { /* page 171, index 30 */ 20446 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20447 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20448 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20449 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20450 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20451 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20452 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20453 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20454 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20455 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 20456 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 20457 }, 20458 { /* page 251, index 31 */ 20459 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20460 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20461 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20462 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20463 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20464 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20465 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20466 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20467 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20468 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20469 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 20470 }, 20471 { /* page 254, index 32 */ 20472 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20473 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 230, 230, 230, 220, 220, 220, 20474 220, 220, 220, 220, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20475 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20476 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20477 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20478 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20479 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20480 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20481 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20482 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20483 0, 0 20484 }, 20485 { /* page 257, index 33 */ 20486 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20487 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20488 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20489 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20490 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20491 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20492 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20493 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20494 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20495 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20496 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 0, 0 20497 }, 20498 { /* page 258, index 34 */ 20499 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20500 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20501 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20502 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20503 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20504 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20505 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20506 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20507 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20508 0, 0, 0, 0, 0, 0, 0, 0, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20509 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 20510 }, 20511 { /* page 259, index 35 */ 20512 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20513 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20514 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20515 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20516 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 20517 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20518 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20519 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20520 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20521 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20522 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 20523 }, 20524 { /* page 266, index 36 */ 20525 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 0, 230, 0, 0, 0, 0, 0, 0, 0, 20526 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20527 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 1, 220, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 20528 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20529 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20530 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20531 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20532 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20533 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20534 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 220, 0, 0, 0, 0, 0, 0, 20535 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 20536 }, 20537 { /* page 272, index 37 */ 20538 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20539 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20540 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 20541 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20542 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20543 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20544 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20545 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 7, 0, 0, 0, 0, 0, 20546 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20547 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20548 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 20549 }, 20550 { /* page 273, index 38 */ 20551 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20552 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20553 0, 0, 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20554 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20555 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 20556 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20557 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20558 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20559 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20560 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20561 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 20562 }, 20563 { /* page 274, index 39 */ 20564 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20565 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20566 0, 0, 0, 0, 0, 9, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20567 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20568 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20569 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20570 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20571 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20572 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20573 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 9, 0, 0, 0, 0, 0, 20574 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 20575 }, 20576 { /* page 275, index 40 */ 20577 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20578 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20579 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20580 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20581 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 230, 230, 230, 0, 0, 0, 230, 230, 20582 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20583 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20584 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20585 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20586 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20587 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 20588 }, 20589 { /* page 276, index 41 */ 20590 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20591 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20592 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 7, 0, 20593 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20594 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20595 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20596 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20597 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20598 0, 0, 9, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20599 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20600 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 20601 }, 20602 { /* page 277, index 42 */ 20603 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20604 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20605 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20606 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20607 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20608 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20609 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20610 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 20611 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20612 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20613 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 20614 }, 20615 { /* page 278, index 43 */ 20616 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20617 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20618 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 20619 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20620 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20621 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20622 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20623 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 7, 0, 0, 0, 0, 0, 0, 0, 0, 20624 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20625 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20626 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 20627 }, 20628 { /* page 279, index 44 */ 20629 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20630 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 20631 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20632 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20633 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20634 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20635 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20636 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20637 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20638 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20639 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 20640 }, 20641 { /* page 282, index 45 */ 20642 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20643 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20644 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 20645 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20646 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20647 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20648 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20649 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20650 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20651 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20652 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 20653 }, 20654 { /* page 284, index 46 */ 20655 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20656 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20657 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 20658 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20659 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20660 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20661 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20662 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20663 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20664 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20665 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 20666 }, 20667 { /* page 285, index 47 */ 20668 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20669 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20670 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 9, 9, 0, 0, 20671 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20672 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20673 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20674 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20675 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20676 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20677 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20678 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 20679 }, 20680 { /* page 362, index 48 */ 20681 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20682 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20683 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20684 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20685 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20686 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20687 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20688 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20689 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20690 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20691 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 20692 }, 20693 { /* page 363, index 49 */ 20694 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20695 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20696 230, 230, 230, 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20697 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20698 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20699 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20700 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20701 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20702 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20703 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20704 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 20705 }, 20706 { /* page 444, index 50 */ 20707 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20708 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20709 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20710 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20711 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20712 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20713 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20714 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20715 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20716 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20717 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 20718 }, 20719 { /* page 465, index 51 */ 20720 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20721 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20722 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20723 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20724 0, 0, 0, 0, 0, 216, 216, 1, 1, 1, 0, 0, 0, 226, 216, 216, 216, 216, 216, 20725 0, 0, 0, 0, 0, 0, 0, 0, 220, 220, 220, 220, 220, 220, 220, 220, 0, 0, 20726 230, 230, 230, 230, 230, 220, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20727 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 0, 20728 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20729 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20730 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20731 0, 0, 0, 0, 0, 0, 0, 0, 0 20732 }, 20733 { /* page 466, index 52 */ 20734 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20735 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20736 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 0, 20737 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20738 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20739 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20740 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20741 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20742 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20743 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20744 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 20745 }, 20746 { /* page 480, index 53 */ 20747 230, 230, 230, 230, 230, 230, 230, 0, 230, 230, 230, 230, 230, 230, 230, 20748 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 0, 0, 230, 230, 230, 20749 230, 230, 230, 230, 0, 230, 230, 0, 230, 230, 230, 230, 230, 0, 0, 0, 0, 20750 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20751 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20752 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20753 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20754 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20755 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20756 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20757 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20758 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 20759 }, 20760 { /* page 488, index 54 */ 20761 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20762 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20763 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20764 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20765 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20766 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20767 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20768 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20769 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 220, 220, 220, 220, 20770 220, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20771 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 20772 }, 20773 { /* page 489, index 55 */ 20774 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20775 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20776 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 20777 230, 230, 230, 230, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20778 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20779 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20780 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20781 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20782 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20783 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20784 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 20785 } 20786 }; 20787 20788 static const int16_t combining_class_table_part1[763] = { 20789 0 + UNICODE_MAX_TABLE_INDEX, 20790 0 + UNICODE_MAX_TABLE_INDEX, 20791 0 + UNICODE_MAX_TABLE_INDEX, 20792 0 /* page 3 */, 20793 1 /* page 4 */, 20794 2 /* page 5 */, 20795 3 /* page 6 */, 20796 4 /* page 7 */, 20797 5 /* page 8 */, 20798 6 /* page 9 */, 20799 7 /* page 10 */, 20800 8 /* page 11 */, 20801 9 /* page 12 */, 20802 10 /* page 13 */, 20803 11 /* page 14 */, 20804 12 /* page 15 */, 20805 13 /* page 16 */, 20806 0 + UNICODE_MAX_TABLE_INDEX, 20807 0 + UNICODE_MAX_TABLE_INDEX, 20808 14 /* page 19 */, 20809 0 + UNICODE_MAX_TABLE_INDEX, 20810 0 + UNICODE_MAX_TABLE_INDEX, 20811 0 + UNICODE_MAX_TABLE_INDEX, 20812 15 /* page 23 */, 20813 16 /* page 24 */, 20814 17 /* page 25 */, 20815 18 /* page 26 */, 20816 19 /* page 27 */, 20817 20 /* page 28 */, 20818 21 /* page 29 */, 20819 0 + UNICODE_MAX_TABLE_INDEX, 20820 0 + UNICODE_MAX_TABLE_INDEX, 20821 22 /* page 32 */, 20822 0 + UNICODE_MAX_TABLE_INDEX, 20823 0 + UNICODE_MAX_TABLE_INDEX, 20824 0 + UNICODE_MAX_TABLE_INDEX, 20825 0 + UNICODE_MAX_TABLE_INDEX, 20826 0 + UNICODE_MAX_TABLE_INDEX, 20827 0 + UNICODE_MAX_TABLE_INDEX, 20828 0 + UNICODE_MAX_TABLE_INDEX, 20829 0 + UNICODE_MAX_TABLE_INDEX, 20830 0 + UNICODE_MAX_TABLE_INDEX, 20831 0 + UNICODE_MAX_TABLE_INDEX, 20832 0 + UNICODE_MAX_TABLE_INDEX, 20833 23 /* page 44 */, 20834 24 /* page 45 */, 20835 0 + UNICODE_MAX_TABLE_INDEX, 20836 0 + UNICODE_MAX_TABLE_INDEX, 20837 25 /* page 48 */, 20838 0 + UNICODE_MAX_TABLE_INDEX, 20839 0 + UNICODE_MAX_TABLE_INDEX, 20840 0 + UNICODE_MAX_TABLE_INDEX, 20841 0 + UNICODE_MAX_TABLE_INDEX, 20842 0 + UNICODE_MAX_TABLE_INDEX, 20843 0 + UNICODE_MAX_TABLE_INDEX, 20844 0 + UNICODE_MAX_TABLE_INDEX, 20845 0 + UNICODE_MAX_TABLE_INDEX, 20846 0 + UNICODE_MAX_TABLE_INDEX, 20847 0 + UNICODE_MAX_TABLE_INDEX, 20848 0 + UNICODE_MAX_TABLE_INDEX, 20849 0 + UNICODE_MAX_TABLE_INDEX, 20850 0 + UNICODE_MAX_TABLE_INDEX, 20851 0 + UNICODE_MAX_TABLE_INDEX, 20852 0 + UNICODE_MAX_TABLE_INDEX, 20853 0 + UNICODE_MAX_TABLE_INDEX, 20854 0 + UNICODE_MAX_TABLE_INDEX, 20855 0 + UNICODE_MAX_TABLE_INDEX, 20856 0 + UNICODE_MAX_TABLE_INDEX, 20857 0 + UNICODE_MAX_TABLE_INDEX, 20858 0 + UNICODE_MAX_TABLE_INDEX, 20859 0 + UNICODE_MAX_TABLE_INDEX, 20860 0 + UNICODE_MAX_TABLE_INDEX, 20861 0 + UNICODE_MAX_TABLE_INDEX, 20862 0 + UNICODE_MAX_TABLE_INDEX, 20863 0 + UNICODE_MAX_TABLE_INDEX, 20864 0 + UNICODE_MAX_TABLE_INDEX, 20865 0 + UNICODE_MAX_TABLE_INDEX, 20866 0 + UNICODE_MAX_TABLE_INDEX, 20867 0 + UNICODE_MAX_TABLE_INDEX, 20868 0 + UNICODE_MAX_TABLE_INDEX, 20869 0 + UNICODE_MAX_TABLE_INDEX, 20870 0 + UNICODE_MAX_TABLE_INDEX, 20871 0 + UNICODE_MAX_TABLE_INDEX, 20872 0 + UNICODE_MAX_TABLE_INDEX, 20873 0 + UNICODE_MAX_TABLE_INDEX, 20874 0 + UNICODE_MAX_TABLE_INDEX, 20875 0 + UNICODE_MAX_TABLE_INDEX, 20876 0 + UNICODE_MAX_TABLE_INDEX, 20877 0 + UNICODE_MAX_TABLE_INDEX, 20878 0 + UNICODE_MAX_TABLE_INDEX, 20879 0 + UNICODE_MAX_TABLE_INDEX, 20880 0 + UNICODE_MAX_TABLE_INDEX, 20881 0 + UNICODE_MAX_TABLE_INDEX, 20882 0 + UNICODE_MAX_TABLE_INDEX, 20883 0 + UNICODE_MAX_TABLE_INDEX, 20884 0 + UNICODE_MAX_TABLE_INDEX, 20885 0 + UNICODE_MAX_TABLE_INDEX, 20886 0 + UNICODE_MAX_TABLE_INDEX, 20887 0 + UNICODE_MAX_TABLE_INDEX, 20888 0 + UNICODE_MAX_TABLE_INDEX, 20889 0 + UNICODE_MAX_TABLE_INDEX, 20890 0 + UNICODE_MAX_TABLE_INDEX, 20891 0 + UNICODE_MAX_TABLE_INDEX, 20892 0 + UNICODE_MAX_TABLE_INDEX, 20893 0 + UNICODE_MAX_TABLE_INDEX, 20894 0 + UNICODE_MAX_TABLE_INDEX, 20895 0 + UNICODE_MAX_TABLE_INDEX, 20896 0 + UNICODE_MAX_TABLE_INDEX, 20897 0 + UNICODE_MAX_TABLE_INDEX, 20898 0 + UNICODE_MAX_TABLE_INDEX, 20899 0 + UNICODE_MAX_TABLE_INDEX, 20900 0 + UNICODE_MAX_TABLE_INDEX, 20901 0 + UNICODE_MAX_TABLE_INDEX, 20902 0 + UNICODE_MAX_TABLE_INDEX, 20903 0 + UNICODE_MAX_TABLE_INDEX, 20904 0 + UNICODE_MAX_TABLE_INDEX, 20905 0 + UNICODE_MAX_TABLE_INDEX, 20906 0 + UNICODE_MAX_TABLE_INDEX, 20907 0 + UNICODE_MAX_TABLE_INDEX, 20908 0 + UNICODE_MAX_TABLE_INDEX, 20909 0 + UNICODE_MAX_TABLE_INDEX, 20910 0 + UNICODE_MAX_TABLE_INDEX, 20911 0 + UNICODE_MAX_TABLE_INDEX, 20912 0 + UNICODE_MAX_TABLE_INDEX, 20913 0 + UNICODE_MAX_TABLE_INDEX, 20914 0 + UNICODE_MAX_TABLE_INDEX, 20915 0 + UNICODE_MAX_TABLE_INDEX, 20916 0 + UNICODE_MAX_TABLE_INDEX, 20917 0 + UNICODE_MAX_TABLE_INDEX, 20918 0 + UNICODE_MAX_TABLE_INDEX, 20919 0 + UNICODE_MAX_TABLE_INDEX, 20920 0 + UNICODE_MAX_TABLE_INDEX, 20921 0 + UNICODE_MAX_TABLE_INDEX, 20922 0 + UNICODE_MAX_TABLE_INDEX, 20923 0 + UNICODE_MAX_TABLE_INDEX, 20924 0 + UNICODE_MAX_TABLE_INDEX, 20925 0 + UNICODE_MAX_TABLE_INDEX, 20926 0 + UNICODE_MAX_TABLE_INDEX, 20927 0 + UNICODE_MAX_TABLE_INDEX, 20928 0 + UNICODE_MAX_TABLE_INDEX, 20929 0 + UNICODE_MAX_TABLE_INDEX, 20930 0 + UNICODE_MAX_TABLE_INDEX, 20931 0 + UNICODE_MAX_TABLE_INDEX, 20932 0 + UNICODE_MAX_TABLE_INDEX, 20933 0 + UNICODE_MAX_TABLE_INDEX, 20934 0 + UNICODE_MAX_TABLE_INDEX, 20935 0 + UNICODE_MAX_TABLE_INDEX, 20936 0 + UNICODE_MAX_TABLE_INDEX, 20937 0 + UNICODE_MAX_TABLE_INDEX, 20938 0 + UNICODE_MAX_TABLE_INDEX, 20939 0 + UNICODE_MAX_TABLE_INDEX, 20940 0 + UNICODE_MAX_TABLE_INDEX, 20941 0 + UNICODE_MAX_TABLE_INDEX, 20942 0 + UNICODE_MAX_TABLE_INDEX, 20943 0 + UNICODE_MAX_TABLE_INDEX, 20944 0 + UNICODE_MAX_TABLE_INDEX, 20945 0 + UNICODE_MAX_TABLE_INDEX, 20946 0 + UNICODE_MAX_TABLE_INDEX, 20947 0 + UNICODE_MAX_TABLE_INDEX, 20948 0 + UNICODE_MAX_TABLE_INDEX, 20949 0 + UNICODE_MAX_TABLE_INDEX, 20950 0 + UNICODE_MAX_TABLE_INDEX, 20951 0 + UNICODE_MAX_TABLE_INDEX, 20952 0 + UNICODE_MAX_TABLE_INDEX, 20953 0 + UNICODE_MAX_TABLE_INDEX, 20954 0 + UNICODE_MAX_TABLE_INDEX, 20955 26 /* page 166 */, 20956 0 + UNICODE_MAX_TABLE_INDEX, 20957 27 /* page 168 */, 20958 28 /* page 169 */, 20959 29 /* page 170 */, 20960 30 /* page 171 */, 20961 0 + UNICODE_MAX_TABLE_INDEX, 20962 0 + UNICODE_MAX_TABLE_INDEX, 20963 0 + UNICODE_MAX_TABLE_INDEX, 20964 0 + UNICODE_MAX_TABLE_INDEX, 20965 0 + UNICODE_MAX_TABLE_INDEX, 20966 0 + UNICODE_MAX_TABLE_INDEX, 20967 0 + UNICODE_MAX_TABLE_INDEX, 20968 0 + UNICODE_MAX_TABLE_INDEX, 20969 0 + UNICODE_MAX_TABLE_INDEX, 20970 0 + UNICODE_MAX_TABLE_INDEX, 20971 0 + UNICODE_MAX_TABLE_INDEX, 20972 0 + UNICODE_MAX_TABLE_INDEX, 20973 0 + UNICODE_MAX_TABLE_INDEX, 20974 0 + UNICODE_MAX_TABLE_INDEX, 20975 0 + UNICODE_MAX_TABLE_INDEX, 20976 0 + UNICODE_MAX_TABLE_INDEX, 20977 0 + UNICODE_MAX_TABLE_INDEX, 20978 0 + UNICODE_MAX_TABLE_INDEX, 20979 0 + UNICODE_MAX_TABLE_INDEX, 20980 0 + UNICODE_MAX_TABLE_INDEX, 20981 0 + UNICODE_MAX_TABLE_INDEX, 20982 0 + UNICODE_MAX_TABLE_INDEX, 20983 0 + UNICODE_MAX_TABLE_INDEX, 20984 0 + UNICODE_MAX_TABLE_INDEX, 20985 0 + UNICODE_MAX_TABLE_INDEX, 20986 0 + UNICODE_MAX_TABLE_INDEX, 20987 0 + UNICODE_MAX_TABLE_INDEX, 20988 0 + UNICODE_MAX_TABLE_INDEX, 20989 0 + UNICODE_MAX_TABLE_INDEX, 20990 0 + UNICODE_MAX_TABLE_INDEX, 20991 0 + UNICODE_MAX_TABLE_INDEX, 20992 0 + UNICODE_MAX_TABLE_INDEX, 20993 0 + UNICODE_MAX_TABLE_INDEX, 20994 0 + UNICODE_MAX_TABLE_INDEX, 20995 0 + UNICODE_MAX_TABLE_INDEX, 20996 0 + UNICODE_MAX_TABLE_INDEX, 20997 0 + UNICODE_MAX_TABLE_INDEX, 20998 0 + UNICODE_MAX_TABLE_INDEX, 20999 0 + UNICODE_MAX_TABLE_INDEX, 21000 0 + UNICODE_MAX_TABLE_INDEX, 21001 0 + UNICODE_MAX_TABLE_INDEX, 21002 0 + UNICODE_MAX_TABLE_INDEX, 21003 0 + UNICODE_MAX_TABLE_INDEX, 21004 0 + UNICODE_MAX_TABLE_INDEX, 21005 0 + UNICODE_MAX_TABLE_INDEX, 21006 0 + UNICODE_MAX_TABLE_INDEX, 21007 0 + UNICODE_MAX_TABLE_INDEX, 21008 0 + UNICODE_MAX_TABLE_INDEX, 21009 0 + UNICODE_MAX_TABLE_INDEX, 21010 0 + UNICODE_MAX_TABLE_INDEX, 21011 0 + UNICODE_MAX_TABLE_INDEX, 21012 0 + UNICODE_MAX_TABLE_INDEX, 21013 0 + UNICODE_MAX_TABLE_INDEX, 21014 0 + UNICODE_MAX_TABLE_INDEX, 21015 0 + UNICODE_MAX_TABLE_INDEX, 21016 0 + UNICODE_MAX_TABLE_INDEX, 21017 0 + UNICODE_MAX_TABLE_INDEX, 21018 0 + UNICODE_MAX_TABLE_INDEX, 21019 0 + UNICODE_MAX_TABLE_INDEX, 21020 0 + UNICODE_MAX_TABLE_INDEX, 21021 0 + UNICODE_MAX_TABLE_INDEX, 21022 0 + UNICODE_MAX_TABLE_INDEX, 21023 0 + UNICODE_MAX_TABLE_INDEX, 21024 0 + UNICODE_MAX_TABLE_INDEX, 21025 0 + UNICODE_MAX_TABLE_INDEX, 21026 0 + UNICODE_MAX_TABLE_INDEX, 21027 0 + UNICODE_MAX_TABLE_INDEX, 21028 0 + UNICODE_MAX_TABLE_INDEX, 21029 0 + UNICODE_MAX_TABLE_INDEX, 21030 0 + UNICODE_MAX_TABLE_INDEX, 21031 0 + UNICODE_MAX_TABLE_INDEX, 21032 0 + UNICODE_MAX_TABLE_INDEX, 21033 0 + UNICODE_MAX_TABLE_INDEX, 21034 0 + UNICODE_MAX_TABLE_INDEX, 21035 0 + UNICODE_MAX_TABLE_INDEX, 21036 0 + UNICODE_MAX_TABLE_INDEX, 21037 0 + UNICODE_MAX_TABLE_INDEX, 21038 0 + UNICODE_MAX_TABLE_INDEX, 21039 0 + UNICODE_MAX_TABLE_INDEX, 21040 31 /* page 251 */, 21041 0 + UNICODE_MAX_TABLE_INDEX, 21042 0 + UNICODE_MAX_TABLE_INDEX, 21043 32 /* page 254 */, 21044 0 + UNICODE_MAX_TABLE_INDEX, 21045 0 + UNICODE_MAX_TABLE_INDEX, 21046 33 /* page 257 */, 21047 34 /* page 258 */, 21048 35 /* page 259 */, 21049 0 + UNICODE_MAX_TABLE_INDEX, 21050 0 + UNICODE_MAX_TABLE_INDEX, 21051 0 + UNICODE_MAX_TABLE_INDEX, 21052 0 + UNICODE_MAX_TABLE_INDEX, 21053 0 + UNICODE_MAX_TABLE_INDEX, 21054 0 + UNICODE_MAX_TABLE_INDEX, 21055 36 /* page 266 */, 21056 0 + UNICODE_MAX_TABLE_INDEX, 21057 0 + UNICODE_MAX_TABLE_INDEX, 21058 0 + UNICODE_MAX_TABLE_INDEX, 21059 0 + UNICODE_MAX_TABLE_INDEX, 21060 0 + UNICODE_MAX_TABLE_INDEX, 21061 37 /* page 272 */, 21062 38 /* page 273 */, 21063 39 /* page 274 */, 21064 40 /* page 275 */, 21065 41 /* page 276 */, 21066 42 /* page 277 */, 21067 43 /* page 278 */, 21068 44 /* page 279 */, 21069 0 + UNICODE_MAX_TABLE_INDEX, 21070 0 + UNICODE_MAX_TABLE_INDEX, 21071 45 /* page 282 */, 21072 0 + UNICODE_MAX_TABLE_INDEX, 21073 46 /* page 284 */, 21074 47 /* page 285 */, 21075 0 + UNICODE_MAX_TABLE_INDEX, 21076 0 + UNICODE_MAX_TABLE_INDEX, 21077 0 + UNICODE_MAX_TABLE_INDEX, 21078 0 + UNICODE_MAX_TABLE_INDEX, 21079 0 + UNICODE_MAX_TABLE_INDEX, 21080 0 + UNICODE_MAX_TABLE_INDEX, 21081 0 + UNICODE_MAX_TABLE_INDEX, 21082 0 + UNICODE_MAX_TABLE_INDEX, 21083 0 + UNICODE_MAX_TABLE_INDEX, 21084 0 + UNICODE_MAX_TABLE_INDEX, 21085 0 + UNICODE_MAX_TABLE_INDEX, 21086 0 + UNICODE_MAX_TABLE_INDEX, 21087 0 + UNICODE_MAX_TABLE_INDEX, 21088 0 + UNICODE_MAX_TABLE_INDEX, 21089 0 + UNICODE_MAX_TABLE_INDEX, 21090 0 + UNICODE_MAX_TABLE_INDEX, 21091 0 + UNICODE_MAX_TABLE_INDEX, 21092 0 + UNICODE_MAX_TABLE_INDEX, 21093 0 + UNICODE_MAX_TABLE_INDEX, 21094 0 + UNICODE_MAX_TABLE_INDEX, 21095 0 + UNICODE_MAX_TABLE_INDEX, 21096 0 + UNICODE_MAX_TABLE_INDEX, 21097 0 + UNICODE_MAX_TABLE_INDEX, 21098 0 + UNICODE_MAX_TABLE_INDEX, 21099 0 + UNICODE_MAX_TABLE_INDEX, 21100 0 + UNICODE_MAX_TABLE_INDEX, 21101 0 + UNICODE_MAX_TABLE_INDEX, 21102 0 + UNICODE_MAX_TABLE_INDEX, 21103 0 + UNICODE_MAX_TABLE_INDEX, 21104 0 + UNICODE_MAX_TABLE_INDEX, 21105 0 + UNICODE_MAX_TABLE_INDEX, 21106 0 + UNICODE_MAX_TABLE_INDEX, 21107 0 + UNICODE_MAX_TABLE_INDEX, 21108 0 + UNICODE_MAX_TABLE_INDEX, 21109 0 + UNICODE_MAX_TABLE_INDEX, 21110 0 + UNICODE_MAX_TABLE_INDEX, 21111 0 + UNICODE_MAX_TABLE_INDEX, 21112 0 + UNICODE_MAX_TABLE_INDEX, 21113 0 + UNICODE_MAX_TABLE_INDEX, 21114 0 + UNICODE_MAX_TABLE_INDEX, 21115 0 + UNICODE_MAX_TABLE_INDEX, 21116 0 + UNICODE_MAX_TABLE_INDEX, 21117 0 + UNICODE_MAX_TABLE_INDEX, 21118 0 + UNICODE_MAX_TABLE_INDEX, 21119 0 + UNICODE_MAX_TABLE_INDEX, 21120 0 + UNICODE_MAX_TABLE_INDEX, 21121 0 + UNICODE_MAX_TABLE_INDEX, 21122 0 + UNICODE_MAX_TABLE_INDEX, 21123 0 + UNICODE_MAX_TABLE_INDEX, 21124 0 + UNICODE_MAX_TABLE_INDEX, 21125 0 + UNICODE_MAX_TABLE_INDEX, 21126 0 + UNICODE_MAX_TABLE_INDEX, 21127 0 + UNICODE_MAX_TABLE_INDEX, 21128 0 + UNICODE_MAX_TABLE_INDEX, 21129 0 + UNICODE_MAX_TABLE_INDEX, 21130 0 + UNICODE_MAX_TABLE_INDEX, 21131 0 + UNICODE_MAX_TABLE_INDEX, 21132 0 + UNICODE_MAX_TABLE_INDEX, 21133 0 + UNICODE_MAX_TABLE_INDEX, 21134 0 + UNICODE_MAX_TABLE_INDEX, 21135 0 + UNICODE_MAX_TABLE_INDEX, 21136 0 + UNICODE_MAX_TABLE_INDEX, 21137 0 + UNICODE_MAX_TABLE_INDEX, 21138 0 + UNICODE_MAX_TABLE_INDEX, 21139 0 + UNICODE_MAX_TABLE_INDEX, 21140 0 + UNICODE_MAX_TABLE_INDEX, 21141 0 + UNICODE_MAX_TABLE_INDEX, 21142 0 + UNICODE_MAX_TABLE_INDEX, 21143 0 + UNICODE_MAX_TABLE_INDEX, 21144 0 + UNICODE_MAX_TABLE_INDEX, 21145 0 + UNICODE_MAX_TABLE_INDEX, 21146 0 + UNICODE_MAX_TABLE_INDEX, 21147 0 + UNICODE_MAX_TABLE_INDEX, 21148 0 + UNICODE_MAX_TABLE_INDEX, 21149 0 + UNICODE_MAX_TABLE_INDEX, 21150 0 + UNICODE_MAX_TABLE_INDEX, 21151 48 /* page 362 */, 21152 49 /* page 363 */, 21153 0 + UNICODE_MAX_TABLE_INDEX, 21154 0 + UNICODE_MAX_TABLE_INDEX, 21155 0 + UNICODE_MAX_TABLE_INDEX, 21156 0 + UNICODE_MAX_TABLE_INDEX, 21157 0 + UNICODE_MAX_TABLE_INDEX, 21158 0 + UNICODE_MAX_TABLE_INDEX, 21159 0 + UNICODE_MAX_TABLE_INDEX, 21160 0 + UNICODE_MAX_TABLE_INDEX, 21161 0 + UNICODE_MAX_TABLE_INDEX, 21162 0 + UNICODE_MAX_TABLE_INDEX, 21163 0 + UNICODE_MAX_TABLE_INDEX, 21164 0 + UNICODE_MAX_TABLE_INDEX, 21165 0 + UNICODE_MAX_TABLE_INDEX, 21166 0 + UNICODE_MAX_TABLE_INDEX, 21167 0 + UNICODE_MAX_TABLE_INDEX, 21168 0 + UNICODE_MAX_TABLE_INDEX, 21169 0 + UNICODE_MAX_TABLE_INDEX, 21170 0 + UNICODE_MAX_TABLE_INDEX, 21171 0 + UNICODE_MAX_TABLE_INDEX, 21172 0 + UNICODE_MAX_TABLE_INDEX, 21173 0 + UNICODE_MAX_TABLE_INDEX, 21174 0 + UNICODE_MAX_TABLE_INDEX, 21175 0 + UNICODE_MAX_TABLE_INDEX, 21176 0 + UNICODE_MAX_TABLE_INDEX, 21177 0 + UNICODE_MAX_TABLE_INDEX, 21178 0 + UNICODE_MAX_TABLE_INDEX, 21179 0 + UNICODE_MAX_TABLE_INDEX, 21180 0 + UNICODE_MAX_TABLE_INDEX, 21181 0 + UNICODE_MAX_TABLE_INDEX, 21182 0 + UNICODE_MAX_TABLE_INDEX, 21183 0 + UNICODE_MAX_TABLE_INDEX, 21184 0 + UNICODE_MAX_TABLE_INDEX, 21185 0 + UNICODE_MAX_TABLE_INDEX, 21186 0 + UNICODE_MAX_TABLE_INDEX, 21187 0 + UNICODE_MAX_TABLE_INDEX, 21188 0 + UNICODE_MAX_TABLE_INDEX, 21189 0 + UNICODE_MAX_TABLE_INDEX, 21190 0 + UNICODE_MAX_TABLE_INDEX, 21191 0 + UNICODE_MAX_TABLE_INDEX, 21192 0 + UNICODE_MAX_TABLE_INDEX, 21193 0 + UNICODE_MAX_TABLE_INDEX, 21194 0 + UNICODE_MAX_TABLE_INDEX, 21195 0 + UNICODE_MAX_TABLE_INDEX, 21196 0 + UNICODE_MAX_TABLE_INDEX, 21197 0 + UNICODE_MAX_TABLE_INDEX, 21198 0 + UNICODE_MAX_TABLE_INDEX, 21199 0 + UNICODE_MAX_TABLE_INDEX, 21200 0 + UNICODE_MAX_TABLE_INDEX, 21201 0 + UNICODE_MAX_TABLE_INDEX, 21202 0 + UNICODE_MAX_TABLE_INDEX, 21203 0 + UNICODE_MAX_TABLE_INDEX, 21204 0 + UNICODE_MAX_TABLE_INDEX, 21205 0 + UNICODE_MAX_TABLE_INDEX, 21206 0 + UNICODE_MAX_TABLE_INDEX, 21207 0 + UNICODE_MAX_TABLE_INDEX, 21208 0 + UNICODE_MAX_TABLE_INDEX, 21209 0 + UNICODE_MAX_TABLE_INDEX, 21210 0 + UNICODE_MAX_TABLE_INDEX, 21211 0 + UNICODE_MAX_TABLE_INDEX, 21212 0 + UNICODE_MAX_TABLE_INDEX, 21213 0 + UNICODE_MAX_TABLE_INDEX, 21214 0 + UNICODE_MAX_TABLE_INDEX, 21215 0 + UNICODE_MAX_TABLE_INDEX, 21216 0 + UNICODE_MAX_TABLE_INDEX, 21217 0 + UNICODE_MAX_TABLE_INDEX, 21218 0 + UNICODE_MAX_TABLE_INDEX, 21219 0 + UNICODE_MAX_TABLE_INDEX, 21220 0 + UNICODE_MAX_TABLE_INDEX, 21221 0 + UNICODE_MAX_TABLE_INDEX, 21222 0 + UNICODE_MAX_TABLE_INDEX, 21223 0 + UNICODE_MAX_TABLE_INDEX, 21224 0 + UNICODE_MAX_TABLE_INDEX, 21225 0 + UNICODE_MAX_TABLE_INDEX, 21226 0 + UNICODE_MAX_TABLE_INDEX, 21227 0 + UNICODE_MAX_TABLE_INDEX, 21228 0 + UNICODE_MAX_TABLE_INDEX, 21229 0 + UNICODE_MAX_TABLE_INDEX, 21230 0 + UNICODE_MAX_TABLE_INDEX, 21231 0 + UNICODE_MAX_TABLE_INDEX, 21232 0 + UNICODE_MAX_TABLE_INDEX, 21233 50 /* page 444 */, 21234 0 + UNICODE_MAX_TABLE_INDEX, 21235 0 + UNICODE_MAX_TABLE_INDEX, 21236 0 + UNICODE_MAX_TABLE_INDEX, 21237 0 + UNICODE_MAX_TABLE_INDEX, 21238 0 + UNICODE_MAX_TABLE_INDEX, 21239 0 + UNICODE_MAX_TABLE_INDEX, 21240 0 + UNICODE_MAX_TABLE_INDEX, 21241 0 + UNICODE_MAX_TABLE_INDEX, 21242 0 + UNICODE_MAX_TABLE_INDEX, 21243 0 + UNICODE_MAX_TABLE_INDEX, 21244 0 + UNICODE_MAX_TABLE_INDEX, 21245 0 + UNICODE_MAX_TABLE_INDEX, 21246 0 + UNICODE_MAX_TABLE_INDEX, 21247 0 + UNICODE_MAX_TABLE_INDEX, 21248 0 + UNICODE_MAX_TABLE_INDEX, 21249 0 + UNICODE_MAX_TABLE_INDEX, 21250 0 + UNICODE_MAX_TABLE_INDEX, 21251 0 + UNICODE_MAX_TABLE_INDEX, 21252 0 + UNICODE_MAX_TABLE_INDEX, 21253 0 + UNICODE_MAX_TABLE_INDEX, 21254 51 /* page 465 */, 21255 52 /* page 466 */, 21256 0 + UNICODE_MAX_TABLE_INDEX, 21257 0 + UNICODE_MAX_TABLE_INDEX, 21258 0 + UNICODE_MAX_TABLE_INDEX, 21259 0 + UNICODE_MAX_TABLE_INDEX, 21260 0 + UNICODE_MAX_TABLE_INDEX, 21261 0 + UNICODE_MAX_TABLE_INDEX, 21262 0 + UNICODE_MAX_TABLE_INDEX, 21263 0 + UNICODE_MAX_TABLE_INDEX, 21264 0 + UNICODE_MAX_TABLE_INDEX, 21265 0 + UNICODE_MAX_TABLE_INDEX, 21266 0 + UNICODE_MAX_TABLE_INDEX, 21267 0 + UNICODE_MAX_TABLE_INDEX, 21268 0 + UNICODE_MAX_TABLE_INDEX, 21269 53 /* page 480 */, 21270 0 + UNICODE_MAX_TABLE_INDEX, 21271 0 + UNICODE_MAX_TABLE_INDEX, 21272 0 + UNICODE_MAX_TABLE_INDEX, 21273 0 + UNICODE_MAX_TABLE_INDEX, 21274 0 + UNICODE_MAX_TABLE_INDEX, 21275 0 + UNICODE_MAX_TABLE_INDEX, 21276 0 + UNICODE_MAX_TABLE_INDEX, 21277 54 /* page 488 */, 21278 55 /* page 489 */, 21279 0 + UNICODE_MAX_TABLE_INDEX, 21280 0 + UNICODE_MAX_TABLE_INDEX, 21281 0 + UNICODE_MAX_TABLE_INDEX, 21282 0 + UNICODE_MAX_TABLE_INDEX, 21283 0 + UNICODE_MAX_TABLE_INDEX, 21284 0 + UNICODE_MAX_TABLE_INDEX, 21285 0 + UNICODE_MAX_TABLE_INDEX, 21286 0 + UNICODE_MAX_TABLE_INDEX, 21287 0 + UNICODE_MAX_TABLE_INDEX, 21288 0 + UNICODE_MAX_TABLE_INDEX, 21289 0 + UNICODE_MAX_TABLE_INDEX, 21290 0 + UNICODE_MAX_TABLE_INDEX, 21291 0 + UNICODE_MAX_TABLE_INDEX, 21292 0 + UNICODE_MAX_TABLE_INDEX, 21293 0 + UNICODE_MAX_TABLE_INDEX, 21294 0 + UNICODE_MAX_TABLE_INDEX, 21295 0 + UNICODE_MAX_TABLE_INDEX, 21296 0 + UNICODE_MAX_TABLE_INDEX, 21297 0 + UNICODE_MAX_TABLE_INDEX, 21298 0 + UNICODE_MAX_TABLE_INDEX, 21299 0 + UNICODE_MAX_TABLE_INDEX, 21300 0 + UNICODE_MAX_TABLE_INDEX, 21301 0 + UNICODE_MAX_TABLE_INDEX, 21302 0 + UNICODE_MAX_TABLE_INDEX, 21303 0 + UNICODE_MAX_TABLE_INDEX, 21304 0 + UNICODE_MAX_TABLE_INDEX, 21305 0 + UNICODE_MAX_TABLE_INDEX, 21306 0 + UNICODE_MAX_TABLE_INDEX, 21307 0 + UNICODE_MAX_TABLE_INDEX, 21308 0 + UNICODE_MAX_TABLE_INDEX, 21309 0 + UNICODE_MAX_TABLE_INDEX, 21310 0 + UNICODE_MAX_TABLE_INDEX, 21311 0 + UNICODE_MAX_TABLE_INDEX, 21312 0 + UNICODE_MAX_TABLE_INDEX, 21313 0 + UNICODE_MAX_TABLE_INDEX, 21314 0 + UNICODE_MAX_TABLE_INDEX, 21315 0 + UNICODE_MAX_TABLE_INDEX, 21316 0 + UNICODE_MAX_TABLE_INDEX, 21317 0 + UNICODE_MAX_TABLE_INDEX, 21318 0 + UNICODE_MAX_TABLE_INDEX, 21319 0 + UNICODE_MAX_TABLE_INDEX, 21320 0 + UNICODE_MAX_TABLE_INDEX, 21321 0 + UNICODE_MAX_TABLE_INDEX, 21322 0 + UNICODE_MAX_TABLE_INDEX, 21323 0 + UNICODE_MAX_TABLE_INDEX, 21324 0 + UNICODE_MAX_TABLE_INDEX, 21325 0 + UNICODE_MAX_TABLE_INDEX, 21326 0 + UNICODE_MAX_TABLE_INDEX, 21327 0 + UNICODE_MAX_TABLE_INDEX, 21328 0 + UNICODE_MAX_TABLE_INDEX, 21329 0 + UNICODE_MAX_TABLE_INDEX, 21330 0 + UNICODE_MAX_TABLE_INDEX, 21331 0 + UNICODE_MAX_TABLE_INDEX, 21332 0 + UNICODE_MAX_TABLE_INDEX, 21333 0 + UNICODE_MAX_TABLE_INDEX, 21334 0 + UNICODE_MAX_TABLE_INDEX, 21335 0 + UNICODE_MAX_TABLE_INDEX, 21336 0 + UNICODE_MAX_TABLE_INDEX, 21337 0 + UNICODE_MAX_TABLE_INDEX, 21338 0 + UNICODE_MAX_TABLE_INDEX, 21339 0 + UNICODE_MAX_TABLE_INDEX, 21340 0 + UNICODE_MAX_TABLE_INDEX, 21341 0 + UNICODE_MAX_TABLE_INDEX, 21342 0 + UNICODE_MAX_TABLE_INDEX, 21343 0 + UNICODE_MAX_TABLE_INDEX, 21344 0 + UNICODE_MAX_TABLE_INDEX, 21345 0 + UNICODE_MAX_TABLE_INDEX, 21346 0 + UNICODE_MAX_TABLE_INDEX, 21347 0 + UNICODE_MAX_TABLE_INDEX, 21348 0 + UNICODE_MAX_TABLE_INDEX, 21349 0 + UNICODE_MAX_TABLE_INDEX, 21350 0 + UNICODE_MAX_TABLE_INDEX, 21351 0 + UNICODE_MAX_TABLE_INDEX, 21352 0 + UNICODE_MAX_TABLE_INDEX, 21353 0 + UNICODE_MAX_TABLE_INDEX, 21354 0 + UNICODE_MAX_TABLE_INDEX, 21355 0 + UNICODE_MAX_TABLE_INDEX, 21356 0 + UNICODE_MAX_TABLE_INDEX, 21357 0 + UNICODE_MAX_TABLE_INDEX, 21358 0 + UNICODE_MAX_TABLE_INDEX, 21359 0 + UNICODE_MAX_TABLE_INDEX, 21360 0 + UNICODE_MAX_TABLE_INDEX, 21361 0 + UNICODE_MAX_TABLE_INDEX, 21362 0 + UNICODE_MAX_TABLE_INDEX, 21363 0 + UNICODE_MAX_TABLE_INDEX, 21364 0 + UNICODE_MAX_TABLE_INDEX, 21365 0 + UNICODE_MAX_TABLE_INDEX, 21366 0 + UNICODE_MAX_TABLE_INDEX, 21367 0 + UNICODE_MAX_TABLE_INDEX, 21368 0 + UNICODE_MAX_TABLE_INDEX, 21369 0 + UNICODE_MAX_TABLE_INDEX, 21370 0 + UNICODE_MAX_TABLE_INDEX, 21371 0 + UNICODE_MAX_TABLE_INDEX, 21372 0 + UNICODE_MAX_TABLE_INDEX, 21373 0 + UNICODE_MAX_TABLE_INDEX, 21374 0 + UNICODE_MAX_TABLE_INDEX, 21375 0 + UNICODE_MAX_TABLE_INDEX, 21376 0 + UNICODE_MAX_TABLE_INDEX, 21377 0 + UNICODE_MAX_TABLE_INDEX, 21378 0 + UNICODE_MAX_TABLE_INDEX, 21379 0 + UNICODE_MAX_TABLE_INDEX, 21380 0 + UNICODE_MAX_TABLE_INDEX, 21381 0 + UNICODE_MAX_TABLE_INDEX, 21382 0 + UNICODE_MAX_TABLE_INDEX, 21383 0 + UNICODE_MAX_TABLE_INDEX, 21384 0 + UNICODE_MAX_TABLE_INDEX, 21385 0 + UNICODE_MAX_TABLE_INDEX, 21386 0 + UNICODE_MAX_TABLE_INDEX, 21387 0 + UNICODE_MAX_TABLE_INDEX, 21388 0 + UNICODE_MAX_TABLE_INDEX, 21389 0 + UNICODE_MAX_TABLE_INDEX, 21390 0 + UNICODE_MAX_TABLE_INDEX, 21391 0 + UNICODE_MAX_TABLE_INDEX, 21392 0 + UNICODE_MAX_TABLE_INDEX, 21393 0 + UNICODE_MAX_TABLE_INDEX, 21394 0 + UNICODE_MAX_TABLE_INDEX, 21395 0 + UNICODE_MAX_TABLE_INDEX, 21396 0 + UNICODE_MAX_TABLE_INDEX, 21397 0 + UNICODE_MAX_TABLE_INDEX, 21398 0 + UNICODE_MAX_TABLE_INDEX, 21399 0 + UNICODE_MAX_TABLE_INDEX, 21400 0 + UNICODE_MAX_TABLE_INDEX, 21401 0 + UNICODE_MAX_TABLE_INDEX, 21402 0 + UNICODE_MAX_TABLE_INDEX, 21403 0 + UNICODE_MAX_TABLE_INDEX, 21404 0 + UNICODE_MAX_TABLE_INDEX, 21405 0 + UNICODE_MAX_TABLE_INDEX, 21406 0 + UNICODE_MAX_TABLE_INDEX, 21407 0 + UNICODE_MAX_TABLE_INDEX, 21408 0 + UNICODE_MAX_TABLE_INDEX, 21409 0 + UNICODE_MAX_TABLE_INDEX, 21410 0 + UNICODE_MAX_TABLE_INDEX, 21411 0 + UNICODE_MAX_TABLE_INDEX, 21412 0 + UNICODE_MAX_TABLE_INDEX, 21413 0 + UNICODE_MAX_TABLE_INDEX, 21414 0 + UNICODE_MAX_TABLE_INDEX, 21415 0 + UNICODE_MAX_TABLE_INDEX, 21416 0 + UNICODE_MAX_TABLE_INDEX, 21417 0 + UNICODE_MAX_TABLE_INDEX, 21418 0 + UNICODE_MAX_TABLE_INDEX, 21419 0 + UNICODE_MAX_TABLE_INDEX, 21420 0 + UNICODE_MAX_TABLE_INDEX, 21421 0 + UNICODE_MAX_TABLE_INDEX, 21422 0 + UNICODE_MAX_TABLE_INDEX, 21423 0 + UNICODE_MAX_TABLE_INDEX, 21424 0 + UNICODE_MAX_TABLE_INDEX, 21425 0 + UNICODE_MAX_TABLE_INDEX, 21426 0 + UNICODE_MAX_TABLE_INDEX, 21427 0 + UNICODE_MAX_TABLE_INDEX, 21428 0 + UNICODE_MAX_TABLE_INDEX, 21429 0 + UNICODE_MAX_TABLE_INDEX, 21430 0 + UNICODE_MAX_TABLE_INDEX, 21431 0 + UNICODE_MAX_TABLE_INDEX, 21432 0 + UNICODE_MAX_TABLE_INDEX, 21433 0 + UNICODE_MAX_TABLE_INDEX, 21434 0 + UNICODE_MAX_TABLE_INDEX, 21435 0 + UNICODE_MAX_TABLE_INDEX, 21436 0 + UNICODE_MAX_TABLE_INDEX, 21437 0 + UNICODE_MAX_TABLE_INDEX, 21438 0 + UNICODE_MAX_TABLE_INDEX, 21439 0 + UNICODE_MAX_TABLE_INDEX, 21440 0 + UNICODE_MAX_TABLE_INDEX, 21441 0 + UNICODE_MAX_TABLE_INDEX, 21442 0 + UNICODE_MAX_TABLE_INDEX, 21443 0 + UNICODE_MAX_TABLE_INDEX, 21444 0 + UNICODE_MAX_TABLE_INDEX, 21445 0 + UNICODE_MAX_TABLE_INDEX, 21446 0 + UNICODE_MAX_TABLE_INDEX, 21447 0 + UNICODE_MAX_TABLE_INDEX, 21448 0 + UNICODE_MAX_TABLE_INDEX, 21449 0 + UNICODE_MAX_TABLE_INDEX, 21450 0 + UNICODE_MAX_TABLE_INDEX, 21451 0 + UNICODE_MAX_TABLE_INDEX, 21452 0 + UNICODE_MAX_TABLE_INDEX, 21453 0 + UNICODE_MAX_TABLE_INDEX, 21454 0 + UNICODE_MAX_TABLE_INDEX, 21455 0 + UNICODE_MAX_TABLE_INDEX, 21456 0 + UNICODE_MAX_TABLE_INDEX, 21457 0 + UNICODE_MAX_TABLE_INDEX, 21458 0 + UNICODE_MAX_TABLE_INDEX, 21459 0 + UNICODE_MAX_TABLE_INDEX, 21460 0 + UNICODE_MAX_TABLE_INDEX, 21461 0 + UNICODE_MAX_TABLE_INDEX, 21462 0 + UNICODE_MAX_TABLE_INDEX, 21463 0 + UNICODE_MAX_TABLE_INDEX, 21464 0 + UNICODE_MAX_TABLE_INDEX, 21465 0 + UNICODE_MAX_TABLE_INDEX, 21466 0 + UNICODE_MAX_TABLE_INDEX, 21467 0 + UNICODE_MAX_TABLE_INDEX, 21468 0 + UNICODE_MAX_TABLE_INDEX, 21469 0 + UNICODE_MAX_TABLE_INDEX, 21470 0 + UNICODE_MAX_TABLE_INDEX, 21471 0 + UNICODE_MAX_TABLE_INDEX, 21472 0 + UNICODE_MAX_TABLE_INDEX, 21473 0 + UNICODE_MAX_TABLE_INDEX, 21474 0 + UNICODE_MAX_TABLE_INDEX, 21475 0 + UNICODE_MAX_TABLE_INDEX, 21476 0 + UNICODE_MAX_TABLE_INDEX, 21477 0 + UNICODE_MAX_TABLE_INDEX, 21478 0 + UNICODE_MAX_TABLE_INDEX, 21479 0 + UNICODE_MAX_TABLE_INDEX, 21480 0 + UNICODE_MAX_TABLE_INDEX, 21481 0 + UNICODE_MAX_TABLE_INDEX, 21482 0 + UNICODE_MAX_TABLE_INDEX, 21483 0 + UNICODE_MAX_TABLE_INDEX, 21484 0 + UNICODE_MAX_TABLE_INDEX, 21485 0 + UNICODE_MAX_TABLE_INDEX, 21486 0 + UNICODE_MAX_TABLE_INDEX, 21487 0 + UNICODE_MAX_TABLE_INDEX, 21488 0 + UNICODE_MAX_TABLE_INDEX, 21489 0 + UNICODE_MAX_TABLE_INDEX, 21490 0 + UNICODE_MAX_TABLE_INDEX, 21491 0 + UNICODE_MAX_TABLE_INDEX, 21492 0 + UNICODE_MAX_TABLE_INDEX, 21493 0 + UNICODE_MAX_TABLE_INDEX, 21494 0 + UNICODE_MAX_TABLE_INDEX, 21495 0 + UNICODE_MAX_TABLE_INDEX, 21496 0 + UNICODE_MAX_TABLE_INDEX, 21497 0 + UNICODE_MAX_TABLE_INDEX, 21498 0 + UNICODE_MAX_TABLE_INDEX, 21499 0 + UNICODE_MAX_TABLE_INDEX, 21500 0 + UNICODE_MAX_TABLE_INDEX, 21501 0 + UNICODE_MAX_TABLE_INDEX, 21502 0 + UNICODE_MAX_TABLE_INDEX, 21503 0 + UNICODE_MAX_TABLE_INDEX, 21504 0 + UNICODE_MAX_TABLE_INDEX, 21505 0 + UNICODE_MAX_TABLE_INDEX, 21506 0 + UNICODE_MAX_TABLE_INDEX, 21507 0 + UNICODE_MAX_TABLE_INDEX, 21508 0 + UNICODE_MAX_TABLE_INDEX, 21509 0 + UNICODE_MAX_TABLE_INDEX, 21510 0 + UNICODE_MAX_TABLE_INDEX, 21511 0 + UNICODE_MAX_TABLE_INDEX, 21512 0 + UNICODE_MAX_TABLE_INDEX, 21513 0 + UNICODE_MAX_TABLE_INDEX, 21514 0 + UNICODE_MAX_TABLE_INDEX, 21515 0 + UNICODE_MAX_TABLE_INDEX, 21516 0 + UNICODE_MAX_TABLE_INDEX, 21517 0 + UNICODE_MAX_TABLE_INDEX, 21518 0 + UNICODE_MAX_TABLE_INDEX, 21519 0 + UNICODE_MAX_TABLE_INDEX, 21520 0 + UNICODE_MAX_TABLE_INDEX, 21521 0 + UNICODE_MAX_TABLE_INDEX, 21522 0 + UNICODE_MAX_TABLE_INDEX, 21523 0 + UNICODE_MAX_TABLE_INDEX, 21524 0 + UNICODE_MAX_TABLE_INDEX, 21525 0 + UNICODE_MAX_TABLE_INDEX, 21526 0 + UNICODE_MAX_TABLE_INDEX, 21527 0 + UNICODE_MAX_TABLE_INDEX, 21528 0 + UNICODE_MAX_TABLE_INDEX, 21529 0 + UNICODE_MAX_TABLE_INDEX, 21530 0 + UNICODE_MAX_TABLE_INDEX, 21531 0 + UNICODE_MAX_TABLE_INDEX, 21532 0 + UNICODE_MAX_TABLE_INDEX, 21533 0 + UNICODE_MAX_TABLE_INDEX, 21534 0 + UNICODE_MAX_TABLE_INDEX, 21535 0 + UNICODE_MAX_TABLE_INDEX, 21536 0 + UNICODE_MAX_TABLE_INDEX, 21537 0 + UNICODE_MAX_TABLE_INDEX, 21538 0 + UNICODE_MAX_TABLE_INDEX, 21539 0 + UNICODE_MAX_TABLE_INDEX, 21540 0 + UNICODE_MAX_TABLE_INDEX, 21541 0 + UNICODE_MAX_TABLE_INDEX, 21542 0 + UNICODE_MAX_TABLE_INDEX, 21543 0 + UNICODE_MAX_TABLE_INDEX, 21544 0 + UNICODE_MAX_TABLE_INDEX, 21545 0 + UNICODE_MAX_TABLE_INDEX, 21546 0 + UNICODE_MAX_TABLE_INDEX, 21547 0 + UNICODE_MAX_TABLE_INDEX, 21548 0 + UNICODE_MAX_TABLE_INDEX, 21549 0 + UNICODE_MAX_TABLE_INDEX, 21550 0 + UNICODE_MAX_TABLE_INDEX, 21551 0 + UNICODE_MAX_TABLE_INDEX 21552 }; 21553 21554 static const int16_t combining_class_table_part2[768] = { 21555 0 + UNICODE_MAX_TABLE_INDEX, 21556 0 + UNICODE_MAX_TABLE_INDEX, 21557 0 + UNICODE_MAX_TABLE_INDEX, 21558 0 + UNICODE_MAX_TABLE_INDEX, 21559 0 + UNICODE_MAX_TABLE_INDEX, 21560 0 + UNICODE_MAX_TABLE_INDEX, 21561 0 + UNICODE_MAX_TABLE_INDEX, 21562 0 + UNICODE_MAX_TABLE_INDEX, 21563 0 + UNICODE_MAX_TABLE_INDEX, 21564 0 + UNICODE_MAX_TABLE_INDEX, 21565 0 + UNICODE_MAX_TABLE_INDEX, 21566 0 + UNICODE_MAX_TABLE_INDEX, 21567 0 + UNICODE_MAX_TABLE_INDEX, 21568 0 + UNICODE_MAX_TABLE_INDEX, 21569 0 + UNICODE_MAX_TABLE_INDEX, 21570 0 + UNICODE_MAX_TABLE_INDEX, 21571 0 + UNICODE_MAX_TABLE_INDEX, 21572 0 + UNICODE_MAX_TABLE_INDEX, 21573 0 + UNICODE_MAX_TABLE_INDEX, 21574 0 + UNICODE_MAX_TABLE_INDEX, 21575 0 + UNICODE_MAX_TABLE_INDEX, 21576 0 + UNICODE_MAX_TABLE_INDEX, 21577 0 + UNICODE_MAX_TABLE_INDEX, 21578 0 + UNICODE_MAX_TABLE_INDEX, 21579 0 + UNICODE_MAX_TABLE_INDEX, 21580 0 + UNICODE_MAX_TABLE_INDEX, 21581 0 + UNICODE_MAX_TABLE_INDEX, 21582 0 + UNICODE_MAX_TABLE_INDEX, 21583 0 + UNICODE_MAX_TABLE_INDEX, 21584 0 + UNICODE_MAX_TABLE_INDEX, 21585 0 + UNICODE_MAX_TABLE_INDEX, 21586 0 + UNICODE_MAX_TABLE_INDEX, 21587 0 + UNICODE_MAX_TABLE_INDEX, 21588 0 + UNICODE_MAX_TABLE_INDEX, 21589 0 + UNICODE_MAX_TABLE_INDEX, 21590 0 + UNICODE_MAX_TABLE_INDEX, 21591 0 + UNICODE_MAX_TABLE_INDEX, 21592 0 + UNICODE_MAX_TABLE_INDEX, 21593 0 + UNICODE_MAX_TABLE_INDEX, 21594 0 + UNICODE_MAX_TABLE_INDEX, 21595 0 + UNICODE_MAX_TABLE_INDEX, 21596 0 + UNICODE_MAX_TABLE_INDEX, 21597 0 + UNICODE_MAX_TABLE_INDEX, 21598 0 + UNICODE_MAX_TABLE_INDEX, 21599 0 + UNICODE_MAX_TABLE_INDEX, 21600 0 + UNICODE_MAX_TABLE_INDEX, 21601 0 + UNICODE_MAX_TABLE_INDEX, 21602 0 + UNICODE_MAX_TABLE_INDEX, 21603 0 + UNICODE_MAX_TABLE_INDEX, 21604 0 + UNICODE_MAX_TABLE_INDEX, 21605 0 + UNICODE_MAX_TABLE_INDEX, 21606 0 + UNICODE_MAX_TABLE_INDEX, 21607 0 + UNICODE_MAX_TABLE_INDEX, 21608 0 + UNICODE_MAX_TABLE_INDEX, 21609 0 + UNICODE_MAX_TABLE_INDEX, 21610 0 + UNICODE_MAX_TABLE_INDEX, 21611 0 + UNICODE_MAX_TABLE_INDEX, 21612 0 + UNICODE_MAX_TABLE_INDEX, 21613 0 + UNICODE_MAX_TABLE_INDEX, 21614 0 + UNICODE_MAX_TABLE_INDEX, 21615 0 + UNICODE_MAX_TABLE_INDEX, 21616 0 + UNICODE_MAX_TABLE_INDEX, 21617 0 + UNICODE_MAX_TABLE_INDEX, 21618 0 + UNICODE_MAX_TABLE_INDEX, 21619 0 + UNICODE_MAX_TABLE_INDEX, 21620 0 + UNICODE_MAX_TABLE_INDEX, 21621 0 + UNICODE_MAX_TABLE_INDEX, 21622 0 + UNICODE_MAX_TABLE_INDEX, 21623 0 + UNICODE_MAX_TABLE_INDEX, 21624 0 + UNICODE_MAX_TABLE_INDEX, 21625 0 + UNICODE_MAX_TABLE_INDEX, 21626 0 + UNICODE_MAX_TABLE_INDEX, 21627 0 + UNICODE_MAX_TABLE_INDEX, 21628 0 + UNICODE_MAX_TABLE_INDEX, 21629 0 + UNICODE_MAX_TABLE_INDEX, 21630 0 + UNICODE_MAX_TABLE_INDEX, 21631 0 + UNICODE_MAX_TABLE_INDEX, 21632 0 + UNICODE_MAX_TABLE_INDEX, 21633 0 + UNICODE_MAX_TABLE_INDEX, 21634 0 + UNICODE_MAX_TABLE_INDEX, 21635 0 + UNICODE_MAX_TABLE_INDEX, 21636 0 + UNICODE_MAX_TABLE_INDEX, 21637 0 + UNICODE_MAX_TABLE_INDEX, 21638 0 + UNICODE_MAX_TABLE_INDEX, 21639 0 + UNICODE_MAX_TABLE_INDEX, 21640 0 + UNICODE_MAX_TABLE_INDEX, 21641 0 + UNICODE_MAX_TABLE_INDEX, 21642 0 + UNICODE_MAX_TABLE_INDEX, 21643 0 + UNICODE_MAX_TABLE_INDEX, 21644 0 + UNICODE_MAX_TABLE_INDEX, 21645 0 + UNICODE_MAX_TABLE_INDEX, 21646 0 + UNICODE_MAX_TABLE_INDEX, 21647 0 + UNICODE_MAX_TABLE_INDEX, 21648 0 + UNICODE_MAX_TABLE_INDEX, 21649 0 + UNICODE_MAX_TABLE_INDEX, 21650 0 + UNICODE_MAX_TABLE_INDEX, 21651 0 + UNICODE_MAX_TABLE_INDEX, 21652 0 + UNICODE_MAX_TABLE_INDEX, 21653 0 + UNICODE_MAX_TABLE_INDEX, 21654 0 + UNICODE_MAX_TABLE_INDEX, 21655 0 + UNICODE_MAX_TABLE_INDEX, 21656 0 + UNICODE_MAX_TABLE_INDEX, 21657 0 + UNICODE_MAX_TABLE_INDEX, 21658 0 + UNICODE_MAX_TABLE_INDEX, 21659 0 + UNICODE_MAX_TABLE_INDEX, 21660 0 + UNICODE_MAX_TABLE_INDEX, 21661 0 + UNICODE_MAX_TABLE_INDEX, 21662 0 + UNICODE_MAX_TABLE_INDEX, 21663 0 + UNICODE_MAX_TABLE_INDEX, 21664 0 + UNICODE_MAX_TABLE_INDEX, 21665 0 + UNICODE_MAX_TABLE_INDEX, 21666 0 + UNICODE_MAX_TABLE_INDEX, 21667 0 + UNICODE_MAX_TABLE_INDEX, 21668 0 + UNICODE_MAX_TABLE_INDEX, 21669 0 + UNICODE_MAX_TABLE_INDEX, 21670 0 + UNICODE_MAX_TABLE_INDEX, 21671 0 + UNICODE_MAX_TABLE_INDEX, 21672 0 + UNICODE_MAX_TABLE_INDEX, 21673 0 + UNICODE_MAX_TABLE_INDEX, 21674 0 + UNICODE_MAX_TABLE_INDEX, 21675 0 + UNICODE_MAX_TABLE_INDEX, 21676 0 + UNICODE_MAX_TABLE_INDEX, 21677 0 + UNICODE_MAX_TABLE_INDEX, 21678 0 + UNICODE_MAX_TABLE_INDEX, 21679 0 + UNICODE_MAX_TABLE_INDEX, 21680 0 + UNICODE_MAX_TABLE_INDEX, 21681 0 + UNICODE_MAX_TABLE_INDEX, 21682 0 + UNICODE_MAX_TABLE_INDEX, 21683 0 + UNICODE_MAX_TABLE_INDEX, 21684 0 + UNICODE_MAX_TABLE_INDEX, 21685 0 + UNICODE_MAX_TABLE_INDEX, 21686 0 + UNICODE_MAX_TABLE_INDEX, 21687 0 + UNICODE_MAX_TABLE_INDEX, 21688 0 + UNICODE_MAX_TABLE_INDEX, 21689 0 + UNICODE_MAX_TABLE_INDEX, 21690 0 + UNICODE_MAX_TABLE_INDEX, 21691 0 + UNICODE_MAX_TABLE_INDEX, 21692 0 + UNICODE_MAX_TABLE_INDEX, 21693 0 + UNICODE_MAX_TABLE_INDEX, 21694 0 + UNICODE_MAX_TABLE_INDEX, 21695 0 + UNICODE_MAX_TABLE_INDEX, 21696 0 + UNICODE_MAX_TABLE_INDEX, 21697 0 + UNICODE_MAX_TABLE_INDEX, 21698 0 + UNICODE_MAX_TABLE_INDEX, 21699 0 + UNICODE_MAX_TABLE_INDEX, 21700 0 + UNICODE_MAX_TABLE_INDEX, 21701 0 + UNICODE_MAX_TABLE_INDEX, 21702 0 + UNICODE_MAX_TABLE_INDEX, 21703 0 + UNICODE_MAX_TABLE_INDEX, 21704 0 + UNICODE_MAX_TABLE_INDEX, 21705 0 + UNICODE_MAX_TABLE_INDEX, 21706 0 + UNICODE_MAX_TABLE_INDEX, 21707 0 + UNICODE_MAX_TABLE_INDEX, 21708 0 + UNICODE_MAX_TABLE_INDEX, 21709 0 + UNICODE_MAX_TABLE_INDEX, 21710 0 + UNICODE_MAX_TABLE_INDEX, 21711 0 + UNICODE_MAX_TABLE_INDEX, 21712 0 + UNICODE_MAX_TABLE_INDEX, 21713 0 + UNICODE_MAX_TABLE_INDEX, 21714 0 + UNICODE_MAX_TABLE_INDEX, 21715 0 + UNICODE_MAX_TABLE_INDEX, 21716 0 + UNICODE_MAX_TABLE_INDEX, 21717 0 + UNICODE_MAX_TABLE_INDEX, 21718 0 + UNICODE_MAX_TABLE_INDEX, 21719 0 + UNICODE_MAX_TABLE_INDEX, 21720 0 + UNICODE_MAX_TABLE_INDEX, 21721 0 + UNICODE_MAX_TABLE_INDEX, 21722 0 + UNICODE_MAX_TABLE_INDEX, 21723 0 + UNICODE_MAX_TABLE_INDEX, 21724 0 + UNICODE_MAX_TABLE_INDEX, 21725 0 + UNICODE_MAX_TABLE_INDEX, 21726 0 + UNICODE_MAX_TABLE_INDEX, 21727 0 + UNICODE_MAX_TABLE_INDEX, 21728 0 + UNICODE_MAX_TABLE_INDEX, 21729 0 + UNICODE_MAX_TABLE_INDEX, 21730 0 + UNICODE_MAX_TABLE_INDEX, 21731 0 + UNICODE_MAX_TABLE_INDEX, 21732 0 + UNICODE_MAX_TABLE_INDEX, 21733 0 + UNICODE_MAX_TABLE_INDEX, 21734 0 + UNICODE_MAX_TABLE_INDEX, 21735 0 + UNICODE_MAX_TABLE_INDEX, 21736 0 + UNICODE_MAX_TABLE_INDEX, 21737 0 + UNICODE_MAX_TABLE_INDEX, 21738 0 + UNICODE_MAX_TABLE_INDEX, 21739 0 + UNICODE_MAX_TABLE_INDEX, 21740 0 + UNICODE_MAX_TABLE_INDEX, 21741 0 + UNICODE_MAX_TABLE_INDEX, 21742 0 + UNICODE_MAX_TABLE_INDEX, 21743 0 + UNICODE_MAX_TABLE_INDEX, 21744 0 + UNICODE_MAX_TABLE_INDEX, 21745 0 + UNICODE_MAX_TABLE_INDEX, 21746 0 + UNICODE_MAX_TABLE_INDEX, 21747 0 + UNICODE_MAX_TABLE_INDEX, 21748 0 + UNICODE_MAX_TABLE_INDEX, 21749 0 + UNICODE_MAX_TABLE_INDEX, 21750 0 + UNICODE_MAX_TABLE_INDEX, 21751 0 + UNICODE_MAX_TABLE_INDEX, 21752 0 + UNICODE_MAX_TABLE_INDEX, 21753 0 + UNICODE_MAX_TABLE_INDEX, 21754 0 + UNICODE_MAX_TABLE_INDEX, 21755 0 + UNICODE_MAX_TABLE_INDEX, 21756 0 + UNICODE_MAX_TABLE_INDEX, 21757 0 + UNICODE_MAX_TABLE_INDEX, 21758 0 + UNICODE_MAX_TABLE_INDEX, 21759 0 + UNICODE_MAX_TABLE_INDEX, 21760 0 + UNICODE_MAX_TABLE_INDEX, 21761 0 + UNICODE_MAX_TABLE_INDEX, 21762 0 + UNICODE_MAX_TABLE_INDEX, 21763 0 + UNICODE_MAX_TABLE_INDEX, 21764 0 + UNICODE_MAX_TABLE_INDEX, 21765 0 + UNICODE_MAX_TABLE_INDEX, 21766 0 + UNICODE_MAX_TABLE_INDEX, 21767 0 + UNICODE_MAX_TABLE_INDEX, 21768 0 + UNICODE_MAX_TABLE_INDEX, 21769 0 + UNICODE_MAX_TABLE_INDEX, 21770 0 + UNICODE_MAX_TABLE_INDEX, 21771 0 + UNICODE_MAX_TABLE_INDEX, 21772 0 + UNICODE_MAX_TABLE_INDEX, 21773 0 + UNICODE_MAX_TABLE_INDEX, 21774 0 + UNICODE_MAX_TABLE_INDEX, 21775 0 + UNICODE_MAX_TABLE_INDEX, 21776 0 + UNICODE_MAX_TABLE_INDEX, 21777 0 + UNICODE_MAX_TABLE_INDEX, 21778 0 + UNICODE_MAX_TABLE_INDEX, 21779 0 + UNICODE_MAX_TABLE_INDEX, 21780 0 + UNICODE_MAX_TABLE_INDEX, 21781 0 + UNICODE_MAX_TABLE_INDEX, 21782 0 + UNICODE_MAX_TABLE_INDEX, 21783 0 + UNICODE_MAX_TABLE_INDEX, 21784 0 + UNICODE_MAX_TABLE_INDEX, 21785 0 + UNICODE_MAX_TABLE_INDEX, 21786 0 + UNICODE_MAX_TABLE_INDEX, 21787 0 + UNICODE_MAX_TABLE_INDEX, 21788 0 + UNICODE_MAX_TABLE_INDEX, 21789 0 + UNICODE_MAX_TABLE_INDEX, 21790 0 + UNICODE_MAX_TABLE_INDEX, 21791 0 + UNICODE_MAX_TABLE_INDEX, 21792 0 + UNICODE_MAX_TABLE_INDEX, 21793 0 + UNICODE_MAX_TABLE_INDEX, 21794 0 + UNICODE_MAX_TABLE_INDEX, 21795 0 + UNICODE_MAX_TABLE_INDEX, 21796 0 + UNICODE_MAX_TABLE_INDEX, 21797 0 + UNICODE_MAX_TABLE_INDEX, 21798 0 + UNICODE_MAX_TABLE_INDEX, 21799 0 + UNICODE_MAX_TABLE_INDEX, 21800 0 + UNICODE_MAX_TABLE_INDEX, 21801 0 + UNICODE_MAX_TABLE_INDEX, 21802 0 + UNICODE_MAX_TABLE_INDEX, 21803 0 + UNICODE_MAX_TABLE_INDEX, 21804 0 + UNICODE_MAX_TABLE_INDEX, 21805 0 + UNICODE_MAX_TABLE_INDEX, 21806 0 + UNICODE_MAX_TABLE_INDEX, 21807 0 + UNICODE_MAX_TABLE_INDEX, 21808 0 + UNICODE_MAX_TABLE_INDEX, 21809 0 + UNICODE_MAX_TABLE_INDEX, 21810 0 + UNICODE_MAX_TABLE_INDEX, 21811 0 + UNICODE_MAX_TABLE_INDEX, 21812 0 + UNICODE_MAX_TABLE_INDEX, 21813 0 + UNICODE_MAX_TABLE_INDEX, 21814 0 + UNICODE_MAX_TABLE_INDEX, 21815 0 + UNICODE_MAX_TABLE_INDEX, 21816 0 + UNICODE_MAX_TABLE_INDEX, 21817 0 + UNICODE_MAX_TABLE_INDEX, 21818 0 + UNICODE_MAX_TABLE_INDEX, 21819 0 + UNICODE_MAX_TABLE_INDEX, 21820 0 + UNICODE_MAX_TABLE_INDEX, 21821 0 + UNICODE_MAX_TABLE_INDEX, 21822 0 + UNICODE_MAX_TABLE_INDEX, 21823 0 + UNICODE_MAX_TABLE_INDEX, 21824 0 + UNICODE_MAX_TABLE_INDEX, 21825 0 + UNICODE_MAX_TABLE_INDEX, 21826 0 + UNICODE_MAX_TABLE_INDEX, 21827 0 + UNICODE_MAX_TABLE_INDEX, 21828 0 + UNICODE_MAX_TABLE_INDEX, 21829 0 + UNICODE_MAX_TABLE_INDEX, 21830 0 + UNICODE_MAX_TABLE_INDEX, 21831 0 + UNICODE_MAX_TABLE_INDEX, 21832 0 + UNICODE_MAX_TABLE_INDEX, 21833 0 + UNICODE_MAX_TABLE_INDEX, 21834 0 + UNICODE_MAX_TABLE_INDEX, 21835 0 + UNICODE_MAX_TABLE_INDEX, 21836 0 + UNICODE_MAX_TABLE_INDEX, 21837 0 + UNICODE_MAX_TABLE_INDEX, 21838 0 + UNICODE_MAX_TABLE_INDEX, 21839 0 + UNICODE_MAX_TABLE_INDEX, 21840 0 + UNICODE_MAX_TABLE_INDEX, 21841 0 + UNICODE_MAX_TABLE_INDEX, 21842 0 + UNICODE_MAX_TABLE_INDEX, 21843 0 + UNICODE_MAX_TABLE_INDEX, 21844 0 + UNICODE_MAX_TABLE_INDEX, 21845 0 + UNICODE_MAX_TABLE_INDEX, 21846 0 + UNICODE_MAX_TABLE_INDEX, 21847 0 + UNICODE_MAX_TABLE_INDEX, 21848 0 + UNICODE_MAX_TABLE_INDEX, 21849 0 + UNICODE_MAX_TABLE_INDEX, 21850 0 + UNICODE_MAX_TABLE_INDEX, 21851 0 + UNICODE_MAX_TABLE_INDEX, 21852 0 + UNICODE_MAX_TABLE_INDEX, 21853 0 + UNICODE_MAX_TABLE_INDEX, 21854 0 + UNICODE_MAX_TABLE_INDEX, 21855 0 + UNICODE_MAX_TABLE_INDEX, 21856 0 + UNICODE_MAX_TABLE_INDEX, 21857 0 + UNICODE_MAX_TABLE_INDEX, 21858 0 + UNICODE_MAX_TABLE_INDEX, 21859 0 + UNICODE_MAX_TABLE_INDEX, 21860 0 + UNICODE_MAX_TABLE_INDEX, 21861 0 + UNICODE_MAX_TABLE_INDEX, 21862 0 + UNICODE_MAX_TABLE_INDEX, 21863 0 + UNICODE_MAX_TABLE_INDEX, 21864 0 + UNICODE_MAX_TABLE_INDEX, 21865 0 + UNICODE_MAX_TABLE_INDEX, 21866 0 + UNICODE_MAX_TABLE_INDEX, 21867 0 + UNICODE_MAX_TABLE_INDEX, 21868 0 + UNICODE_MAX_TABLE_INDEX, 21869 0 + UNICODE_MAX_TABLE_INDEX, 21870 0 + UNICODE_MAX_TABLE_INDEX, 21871 0 + UNICODE_MAX_TABLE_INDEX, 21872 0 + UNICODE_MAX_TABLE_INDEX, 21873 0 + UNICODE_MAX_TABLE_INDEX, 21874 0 + UNICODE_MAX_TABLE_INDEX, 21875 0 + UNICODE_MAX_TABLE_INDEX, 21876 0 + UNICODE_MAX_TABLE_INDEX, 21877 0 + UNICODE_MAX_TABLE_INDEX, 21878 0 + UNICODE_MAX_TABLE_INDEX, 21879 0 + UNICODE_MAX_TABLE_INDEX, 21880 0 + UNICODE_MAX_TABLE_INDEX, 21881 0 + UNICODE_MAX_TABLE_INDEX, 21882 0 + UNICODE_MAX_TABLE_INDEX, 21883 0 + UNICODE_MAX_TABLE_INDEX, 21884 0 + UNICODE_MAX_TABLE_INDEX, 21885 0 + UNICODE_MAX_TABLE_INDEX, 21886 0 + UNICODE_MAX_TABLE_INDEX, 21887 0 + UNICODE_MAX_TABLE_INDEX, 21888 0 + UNICODE_MAX_TABLE_INDEX, 21889 0 + UNICODE_MAX_TABLE_INDEX, 21890 0 + UNICODE_MAX_TABLE_INDEX, 21891 0 + UNICODE_MAX_TABLE_INDEX, 21892 0 + UNICODE_MAX_TABLE_INDEX, 21893 0 + UNICODE_MAX_TABLE_INDEX, 21894 0 + UNICODE_MAX_TABLE_INDEX, 21895 0 + UNICODE_MAX_TABLE_INDEX, 21896 0 + UNICODE_MAX_TABLE_INDEX, 21897 0 + UNICODE_MAX_TABLE_INDEX, 21898 0 + UNICODE_MAX_TABLE_INDEX, 21899 0 + UNICODE_MAX_TABLE_INDEX, 21900 0 + UNICODE_MAX_TABLE_INDEX, 21901 0 + UNICODE_MAX_TABLE_INDEX, 21902 0 + UNICODE_MAX_TABLE_INDEX, 21903 0 + UNICODE_MAX_TABLE_INDEX, 21904 0 + UNICODE_MAX_TABLE_INDEX, 21905 0 + UNICODE_MAX_TABLE_INDEX, 21906 0 + UNICODE_MAX_TABLE_INDEX, 21907 0 + UNICODE_MAX_TABLE_INDEX, 21908 0 + UNICODE_MAX_TABLE_INDEX, 21909 0 + UNICODE_MAX_TABLE_INDEX, 21910 0 + UNICODE_MAX_TABLE_INDEX, 21911 0 + UNICODE_MAX_TABLE_INDEX, 21912 0 + UNICODE_MAX_TABLE_INDEX, 21913 0 + UNICODE_MAX_TABLE_INDEX, 21914 0 + UNICODE_MAX_TABLE_INDEX, 21915 0 + UNICODE_MAX_TABLE_INDEX, 21916 0 + UNICODE_MAX_TABLE_INDEX, 21917 0 + UNICODE_MAX_TABLE_INDEX, 21918 0 + UNICODE_MAX_TABLE_INDEX, 21919 0 + UNICODE_MAX_TABLE_INDEX, 21920 0 + UNICODE_MAX_TABLE_INDEX, 21921 0 + UNICODE_MAX_TABLE_INDEX, 21922 0 + UNICODE_MAX_TABLE_INDEX, 21923 0 + UNICODE_MAX_TABLE_INDEX, 21924 0 + UNICODE_MAX_TABLE_INDEX, 21925 0 + UNICODE_MAX_TABLE_INDEX, 21926 0 + UNICODE_MAX_TABLE_INDEX, 21927 0 + UNICODE_MAX_TABLE_INDEX, 21928 0 + UNICODE_MAX_TABLE_INDEX, 21929 0 + UNICODE_MAX_TABLE_INDEX, 21930 0 + UNICODE_MAX_TABLE_INDEX, 21931 0 + UNICODE_MAX_TABLE_INDEX, 21932 0 + UNICODE_MAX_TABLE_INDEX, 21933 0 + UNICODE_MAX_TABLE_INDEX, 21934 0 + UNICODE_MAX_TABLE_INDEX, 21935 0 + UNICODE_MAX_TABLE_INDEX, 21936 0 + UNICODE_MAX_TABLE_INDEX, 21937 0 + UNICODE_MAX_TABLE_INDEX, 21938 0 + UNICODE_MAX_TABLE_INDEX, 21939 0 + UNICODE_MAX_TABLE_INDEX, 21940 0 + UNICODE_MAX_TABLE_INDEX, 21941 0 + UNICODE_MAX_TABLE_INDEX, 21942 0 + UNICODE_MAX_TABLE_INDEX, 21943 0 + UNICODE_MAX_TABLE_INDEX, 21944 0 + UNICODE_MAX_TABLE_INDEX, 21945 0 + UNICODE_MAX_TABLE_INDEX, 21946 0 + UNICODE_MAX_TABLE_INDEX, 21947 0 + UNICODE_MAX_TABLE_INDEX, 21948 0 + UNICODE_MAX_TABLE_INDEX, 21949 0 + UNICODE_MAX_TABLE_INDEX, 21950 0 + UNICODE_MAX_TABLE_INDEX, 21951 0 + UNICODE_MAX_TABLE_INDEX, 21952 0 + UNICODE_MAX_TABLE_INDEX, 21953 0 + UNICODE_MAX_TABLE_INDEX, 21954 0 + UNICODE_MAX_TABLE_INDEX, 21955 0 + UNICODE_MAX_TABLE_INDEX, 21956 0 + UNICODE_MAX_TABLE_INDEX, 21957 0 + UNICODE_MAX_TABLE_INDEX, 21958 0 + UNICODE_MAX_TABLE_INDEX, 21959 0 + UNICODE_MAX_TABLE_INDEX, 21960 0 + UNICODE_MAX_TABLE_INDEX, 21961 0 + UNICODE_MAX_TABLE_INDEX, 21962 0 + UNICODE_MAX_TABLE_INDEX, 21963 0 + UNICODE_MAX_TABLE_INDEX, 21964 0 + UNICODE_MAX_TABLE_INDEX, 21965 0 + UNICODE_MAX_TABLE_INDEX, 21966 0 + UNICODE_MAX_TABLE_INDEX, 21967 0 + UNICODE_MAX_TABLE_INDEX, 21968 0 + UNICODE_MAX_TABLE_INDEX, 21969 0 + UNICODE_MAX_TABLE_INDEX, 21970 0 + UNICODE_MAX_TABLE_INDEX, 21971 0 + UNICODE_MAX_TABLE_INDEX, 21972 0 + UNICODE_MAX_TABLE_INDEX, 21973 0 + UNICODE_MAX_TABLE_INDEX, 21974 0 + UNICODE_MAX_TABLE_INDEX, 21975 0 + UNICODE_MAX_TABLE_INDEX, 21976 0 + UNICODE_MAX_TABLE_INDEX, 21977 0 + UNICODE_MAX_TABLE_INDEX, 21978 0 + UNICODE_MAX_TABLE_INDEX, 21979 0 + UNICODE_MAX_TABLE_INDEX, 21980 0 + UNICODE_MAX_TABLE_INDEX, 21981 0 + UNICODE_MAX_TABLE_INDEX, 21982 0 + UNICODE_MAX_TABLE_INDEX, 21983 0 + UNICODE_MAX_TABLE_INDEX, 21984 0 + UNICODE_MAX_TABLE_INDEX, 21985 0 + UNICODE_MAX_TABLE_INDEX, 21986 0 + UNICODE_MAX_TABLE_INDEX, 21987 0 + UNICODE_MAX_TABLE_INDEX, 21988 0 + UNICODE_MAX_TABLE_INDEX, 21989 0 + UNICODE_MAX_TABLE_INDEX, 21990 0 + UNICODE_MAX_TABLE_INDEX, 21991 0 + UNICODE_MAX_TABLE_INDEX, 21992 0 + UNICODE_MAX_TABLE_INDEX, 21993 0 + UNICODE_MAX_TABLE_INDEX, 21994 0 + UNICODE_MAX_TABLE_INDEX, 21995 0 + UNICODE_MAX_TABLE_INDEX, 21996 0 + UNICODE_MAX_TABLE_INDEX, 21997 0 + UNICODE_MAX_TABLE_INDEX, 21998 0 + UNICODE_MAX_TABLE_INDEX, 21999 0 + UNICODE_MAX_TABLE_INDEX, 22000 0 + UNICODE_MAX_TABLE_INDEX, 22001 0 + UNICODE_MAX_TABLE_INDEX, 22002 0 + UNICODE_MAX_TABLE_INDEX, 22003 0 + UNICODE_MAX_TABLE_INDEX, 22004 0 + UNICODE_MAX_TABLE_INDEX, 22005 0 + UNICODE_MAX_TABLE_INDEX, 22006 0 + UNICODE_MAX_TABLE_INDEX, 22007 0 + UNICODE_MAX_TABLE_INDEX, 22008 0 + UNICODE_MAX_TABLE_INDEX, 22009 0 + UNICODE_MAX_TABLE_INDEX, 22010 0 + UNICODE_MAX_TABLE_INDEX, 22011 0 + UNICODE_MAX_TABLE_INDEX, 22012 0 + UNICODE_MAX_TABLE_INDEX, 22013 0 + UNICODE_MAX_TABLE_INDEX, 22014 0 + UNICODE_MAX_TABLE_INDEX, 22015 0 + UNICODE_MAX_TABLE_INDEX, 22016 0 + UNICODE_MAX_TABLE_INDEX, 22017 0 + UNICODE_MAX_TABLE_INDEX, 22018 0 + UNICODE_MAX_TABLE_INDEX, 22019 0 + UNICODE_MAX_TABLE_INDEX, 22020 0 + UNICODE_MAX_TABLE_INDEX, 22021 0 + UNICODE_MAX_TABLE_INDEX, 22022 0 + UNICODE_MAX_TABLE_INDEX, 22023 0 + UNICODE_MAX_TABLE_INDEX, 22024 0 + UNICODE_MAX_TABLE_INDEX, 22025 0 + UNICODE_MAX_TABLE_INDEX, 22026 0 + UNICODE_MAX_TABLE_INDEX, 22027 0 + UNICODE_MAX_TABLE_INDEX, 22028 0 + UNICODE_MAX_TABLE_INDEX, 22029 0 + UNICODE_MAX_TABLE_INDEX, 22030 0 + UNICODE_MAX_TABLE_INDEX, 22031 0 + UNICODE_MAX_TABLE_INDEX, 22032 0 + UNICODE_MAX_TABLE_INDEX, 22033 0 + UNICODE_MAX_TABLE_INDEX, 22034 0 + UNICODE_MAX_TABLE_INDEX, 22035 0 + UNICODE_MAX_TABLE_INDEX, 22036 0 + UNICODE_MAX_TABLE_INDEX, 22037 0 + UNICODE_MAX_TABLE_INDEX, 22038 0 + UNICODE_MAX_TABLE_INDEX, 22039 0 + UNICODE_MAX_TABLE_INDEX, 22040 0 + UNICODE_MAX_TABLE_INDEX, 22041 0 + UNICODE_MAX_TABLE_INDEX, 22042 0 + UNICODE_MAX_TABLE_INDEX, 22043 0 + UNICODE_MAX_TABLE_INDEX, 22044 0 + UNICODE_MAX_TABLE_INDEX, 22045 0 + UNICODE_MAX_TABLE_INDEX, 22046 0 + UNICODE_MAX_TABLE_INDEX, 22047 0 + UNICODE_MAX_TABLE_INDEX, 22048 0 + UNICODE_MAX_TABLE_INDEX, 22049 0 + UNICODE_MAX_TABLE_INDEX, 22050 0 + UNICODE_MAX_TABLE_INDEX, 22051 0 + UNICODE_MAX_TABLE_INDEX, 22052 0 + UNICODE_MAX_TABLE_INDEX, 22053 0 + UNICODE_MAX_TABLE_INDEX, 22054 0 + UNICODE_MAX_TABLE_INDEX, 22055 0 + UNICODE_MAX_TABLE_INDEX, 22056 0 + UNICODE_MAX_TABLE_INDEX, 22057 0 + UNICODE_MAX_TABLE_INDEX, 22058 0 + UNICODE_MAX_TABLE_INDEX, 22059 0 + UNICODE_MAX_TABLE_INDEX, 22060 0 + UNICODE_MAX_TABLE_INDEX, 22061 0 + UNICODE_MAX_TABLE_INDEX, 22062 0 + UNICODE_MAX_TABLE_INDEX, 22063 0 + UNICODE_MAX_TABLE_INDEX, 22064 0 + UNICODE_MAX_TABLE_INDEX, 22065 0 + UNICODE_MAX_TABLE_INDEX, 22066 0 + UNICODE_MAX_TABLE_INDEX, 22067 0 + UNICODE_MAX_TABLE_INDEX, 22068 0 + UNICODE_MAX_TABLE_INDEX, 22069 0 + UNICODE_MAX_TABLE_INDEX, 22070 0 + UNICODE_MAX_TABLE_INDEX, 22071 0 + UNICODE_MAX_TABLE_INDEX, 22072 0 + UNICODE_MAX_TABLE_INDEX, 22073 0 + UNICODE_MAX_TABLE_INDEX, 22074 0 + UNICODE_MAX_TABLE_INDEX, 22075 0 + UNICODE_MAX_TABLE_INDEX, 22076 0 + UNICODE_MAX_TABLE_INDEX, 22077 0 + UNICODE_MAX_TABLE_INDEX, 22078 0 + UNICODE_MAX_TABLE_INDEX, 22079 0 + UNICODE_MAX_TABLE_INDEX, 22080 0 + UNICODE_MAX_TABLE_INDEX, 22081 0 + UNICODE_MAX_TABLE_INDEX, 22082 0 + UNICODE_MAX_TABLE_INDEX, 22083 0 + UNICODE_MAX_TABLE_INDEX, 22084 0 + UNICODE_MAX_TABLE_INDEX, 22085 0 + UNICODE_MAX_TABLE_INDEX, 22086 0 + UNICODE_MAX_TABLE_INDEX, 22087 0 + UNICODE_MAX_TABLE_INDEX, 22088 0 + UNICODE_MAX_TABLE_INDEX, 22089 0 + UNICODE_MAX_TABLE_INDEX, 22090 0 + UNICODE_MAX_TABLE_INDEX, 22091 0 + UNICODE_MAX_TABLE_INDEX, 22092 0 + UNICODE_MAX_TABLE_INDEX, 22093 0 + UNICODE_MAX_TABLE_INDEX, 22094 0 + UNICODE_MAX_TABLE_INDEX, 22095 0 + UNICODE_MAX_TABLE_INDEX, 22096 0 + UNICODE_MAX_TABLE_INDEX, 22097 0 + UNICODE_MAX_TABLE_INDEX, 22098 0 + UNICODE_MAX_TABLE_INDEX, 22099 0 + UNICODE_MAX_TABLE_INDEX, 22100 0 + UNICODE_MAX_TABLE_INDEX, 22101 0 + UNICODE_MAX_TABLE_INDEX, 22102 0 + UNICODE_MAX_TABLE_INDEX, 22103 0 + UNICODE_MAX_TABLE_INDEX, 22104 0 + UNICODE_MAX_TABLE_INDEX, 22105 0 + UNICODE_MAX_TABLE_INDEX, 22106 0 + UNICODE_MAX_TABLE_INDEX, 22107 0 + UNICODE_MAX_TABLE_INDEX, 22108 0 + UNICODE_MAX_TABLE_INDEX, 22109 0 + UNICODE_MAX_TABLE_INDEX, 22110 0 + UNICODE_MAX_TABLE_INDEX, 22111 0 + UNICODE_MAX_TABLE_INDEX, 22112 0 + UNICODE_MAX_TABLE_INDEX, 22113 0 + UNICODE_MAX_TABLE_INDEX, 22114 0 + UNICODE_MAX_TABLE_INDEX, 22115 0 + UNICODE_MAX_TABLE_INDEX, 22116 0 + UNICODE_MAX_TABLE_INDEX, 22117 0 + UNICODE_MAX_TABLE_INDEX, 22118 0 + UNICODE_MAX_TABLE_INDEX, 22119 0 + UNICODE_MAX_TABLE_INDEX, 22120 0 + UNICODE_MAX_TABLE_INDEX, 22121 0 + UNICODE_MAX_TABLE_INDEX, 22122 0 + UNICODE_MAX_TABLE_INDEX, 22123 0 + UNICODE_MAX_TABLE_INDEX, 22124 0 + UNICODE_MAX_TABLE_INDEX, 22125 0 + UNICODE_MAX_TABLE_INDEX, 22126 0 + UNICODE_MAX_TABLE_INDEX, 22127 0 + UNICODE_MAX_TABLE_INDEX, 22128 0 + UNICODE_MAX_TABLE_INDEX, 22129 0 + UNICODE_MAX_TABLE_INDEX, 22130 0 + UNICODE_MAX_TABLE_INDEX, 22131 0 + UNICODE_MAX_TABLE_INDEX, 22132 0 + UNICODE_MAX_TABLE_INDEX, 22133 0 + UNICODE_MAX_TABLE_INDEX, 22134 0 + UNICODE_MAX_TABLE_INDEX, 22135 0 + UNICODE_MAX_TABLE_INDEX, 22136 0 + UNICODE_MAX_TABLE_INDEX, 22137 0 + UNICODE_MAX_TABLE_INDEX, 22138 0 + UNICODE_MAX_TABLE_INDEX, 22139 0 + UNICODE_MAX_TABLE_INDEX, 22140 0 + UNICODE_MAX_TABLE_INDEX, 22141 0 + UNICODE_MAX_TABLE_INDEX, 22142 0 + UNICODE_MAX_TABLE_INDEX, 22143 0 + UNICODE_MAX_TABLE_INDEX, 22144 0 + UNICODE_MAX_TABLE_INDEX, 22145 0 + UNICODE_MAX_TABLE_INDEX, 22146 0 + UNICODE_MAX_TABLE_INDEX, 22147 0 + UNICODE_MAX_TABLE_INDEX, 22148 0 + UNICODE_MAX_TABLE_INDEX, 22149 0 + UNICODE_MAX_TABLE_INDEX, 22150 0 + UNICODE_MAX_TABLE_INDEX, 22151 0 + UNICODE_MAX_TABLE_INDEX, 22152 0 + UNICODE_MAX_TABLE_INDEX, 22153 0 + UNICODE_MAX_TABLE_INDEX, 22154 0 + UNICODE_MAX_TABLE_INDEX, 22155 0 + UNICODE_MAX_TABLE_INDEX, 22156 0 + UNICODE_MAX_TABLE_INDEX, 22157 0 + UNICODE_MAX_TABLE_INDEX, 22158 0 + UNICODE_MAX_TABLE_INDEX, 22159 0 + UNICODE_MAX_TABLE_INDEX, 22160 0 + UNICODE_MAX_TABLE_INDEX, 22161 0 + UNICODE_MAX_TABLE_INDEX, 22162 0 + UNICODE_MAX_TABLE_INDEX, 22163 0 + UNICODE_MAX_TABLE_INDEX, 22164 0 + UNICODE_MAX_TABLE_INDEX, 22165 0 + UNICODE_MAX_TABLE_INDEX, 22166 0 + UNICODE_MAX_TABLE_INDEX, 22167 0 + UNICODE_MAX_TABLE_INDEX, 22168 0 + UNICODE_MAX_TABLE_INDEX, 22169 0 + UNICODE_MAX_TABLE_INDEX, 22170 0 + UNICODE_MAX_TABLE_INDEX, 22171 0 + UNICODE_MAX_TABLE_INDEX, 22172 0 + UNICODE_MAX_TABLE_INDEX, 22173 0 + UNICODE_MAX_TABLE_INDEX, 22174 0 + UNICODE_MAX_TABLE_INDEX, 22175 0 + UNICODE_MAX_TABLE_INDEX, 22176 0 + UNICODE_MAX_TABLE_INDEX, 22177 0 + UNICODE_MAX_TABLE_INDEX, 22178 0 + UNICODE_MAX_TABLE_INDEX, 22179 0 + UNICODE_MAX_TABLE_INDEX, 22180 0 + UNICODE_MAX_TABLE_INDEX, 22181 0 + UNICODE_MAX_TABLE_INDEX, 22182 0 + UNICODE_MAX_TABLE_INDEX, 22183 0 + UNICODE_MAX_TABLE_INDEX, 22184 0 + UNICODE_MAX_TABLE_INDEX, 22185 0 + UNICODE_MAX_TABLE_INDEX, 22186 0 + UNICODE_MAX_TABLE_INDEX, 22187 0 + UNICODE_MAX_TABLE_INDEX, 22188 0 + UNICODE_MAX_TABLE_INDEX, 22189 0 + UNICODE_MAX_TABLE_INDEX, 22190 0 + UNICODE_MAX_TABLE_INDEX, 22191 0 + UNICODE_MAX_TABLE_INDEX, 22192 0 + UNICODE_MAX_TABLE_INDEX, 22193 0 + UNICODE_MAX_TABLE_INDEX, 22194 0 + UNICODE_MAX_TABLE_INDEX, 22195 0 + UNICODE_MAX_TABLE_INDEX, 22196 0 + UNICODE_MAX_TABLE_INDEX, 22197 0 + UNICODE_MAX_TABLE_INDEX, 22198 0 + UNICODE_MAX_TABLE_INDEX, 22199 0 + UNICODE_MAX_TABLE_INDEX, 22200 0 + UNICODE_MAX_TABLE_INDEX, 22201 0 + UNICODE_MAX_TABLE_INDEX, 22202 0 + UNICODE_MAX_TABLE_INDEX, 22203 0 + UNICODE_MAX_TABLE_INDEX, 22204 0 + UNICODE_MAX_TABLE_INDEX, 22205 0 + UNICODE_MAX_TABLE_INDEX, 22206 0 + UNICODE_MAX_TABLE_INDEX, 22207 0 + UNICODE_MAX_TABLE_INDEX, 22208 0 + UNICODE_MAX_TABLE_INDEX, 22209 0 + UNICODE_MAX_TABLE_INDEX, 22210 0 + UNICODE_MAX_TABLE_INDEX, 22211 0 + UNICODE_MAX_TABLE_INDEX, 22212 0 + UNICODE_MAX_TABLE_INDEX, 22213 0 + UNICODE_MAX_TABLE_INDEX, 22214 0 + UNICODE_MAX_TABLE_INDEX, 22215 0 + UNICODE_MAX_TABLE_INDEX, 22216 0 + UNICODE_MAX_TABLE_INDEX, 22217 0 + UNICODE_MAX_TABLE_INDEX, 22218 0 + UNICODE_MAX_TABLE_INDEX, 22219 0 + UNICODE_MAX_TABLE_INDEX, 22220 0 + UNICODE_MAX_TABLE_INDEX, 22221 0 + UNICODE_MAX_TABLE_INDEX, 22222 0 + UNICODE_MAX_TABLE_INDEX, 22223 0 + UNICODE_MAX_TABLE_INDEX, 22224 0 + UNICODE_MAX_TABLE_INDEX, 22225 0 + UNICODE_MAX_TABLE_INDEX, 22226 0 + UNICODE_MAX_TABLE_INDEX, 22227 0 + UNICODE_MAX_TABLE_INDEX, 22228 0 + UNICODE_MAX_TABLE_INDEX, 22229 0 + UNICODE_MAX_TABLE_INDEX, 22230 0 + UNICODE_MAX_TABLE_INDEX, 22231 0 + UNICODE_MAX_TABLE_INDEX, 22232 0 + UNICODE_MAX_TABLE_INDEX, 22233 0 + UNICODE_MAX_TABLE_INDEX, 22234 0 + UNICODE_MAX_TABLE_INDEX, 22235 0 + UNICODE_MAX_TABLE_INDEX, 22236 0 + UNICODE_MAX_TABLE_INDEX, 22237 0 + UNICODE_MAX_TABLE_INDEX, 22238 0 + UNICODE_MAX_TABLE_INDEX, 22239 0 + UNICODE_MAX_TABLE_INDEX, 22240 0 + UNICODE_MAX_TABLE_INDEX, 22241 0 + UNICODE_MAX_TABLE_INDEX, 22242 0 + UNICODE_MAX_TABLE_INDEX, 22243 0 + UNICODE_MAX_TABLE_INDEX, 22244 0 + UNICODE_MAX_TABLE_INDEX, 22245 0 + UNICODE_MAX_TABLE_INDEX, 22246 0 + UNICODE_MAX_TABLE_INDEX, 22247 0 + UNICODE_MAX_TABLE_INDEX, 22248 0 + UNICODE_MAX_TABLE_INDEX, 22249 0 + UNICODE_MAX_TABLE_INDEX, 22250 0 + UNICODE_MAX_TABLE_INDEX, 22251 0 + UNICODE_MAX_TABLE_INDEX, 22252 0 + UNICODE_MAX_TABLE_INDEX, 22253 0 + UNICODE_MAX_TABLE_INDEX, 22254 0 + UNICODE_MAX_TABLE_INDEX, 22255 0 + UNICODE_MAX_TABLE_INDEX, 22256 0 + UNICODE_MAX_TABLE_INDEX, 22257 0 + UNICODE_MAX_TABLE_INDEX, 22258 0 + UNICODE_MAX_TABLE_INDEX, 22259 0 + UNICODE_MAX_TABLE_INDEX, 22260 0 + UNICODE_MAX_TABLE_INDEX, 22261 0 + UNICODE_MAX_TABLE_INDEX, 22262 0 + UNICODE_MAX_TABLE_INDEX, 22263 0 + UNICODE_MAX_TABLE_INDEX, 22264 0 + UNICODE_MAX_TABLE_INDEX, 22265 0 + UNICODE_MAX_TABLE_INDEX, 22266 0 + UNICODE_MAX_TABLE_INDEX, 22267 0 + UNICODE_MAX_TABLE_INDEX, 22268 0 + UNICODE_MAX_TABLE_INDEX, 22269 0 + UNICODE_MAX_TABLE_INDEX, 22270 0 + UNICODE_MAX_TABLE_INDEX, 22271 0 + UNICODE_MAX_TABLE_INDEX, 22272 0 + UNICODE_MAX_TABLE_INDEX, 22273 0 + UNICODE_MAX_TABLE_INDEX, 22274 0 + UNICODE_MAX_TABLE_INDEX, 22275 0 + UNICODE_MAX_TABLE_INDEX, 22276 0 + UNICODE_MAX_TABLE_INDEX, 22277 0 + UNICODE_MAX_TABLE_INDEX, 22278 0 + UNICODE_MAX_TABLE_INDEX, 22279 0 + UNICODE_MAX_TABLE_INDEX, 22280 0 + UNICODE_MAX_TABLE_INDEX, 22281 0 + UNICODE_MAX_TABLE_INDEX, 22282 0 + UNICODE_MAX_TABLE_INDEX, 22283 0 + UNICODE_MAX_TABLE_INDEX, 22284 0 + UNICODE_MAX_TABLE_INDEX, 22285 0 + UNICODE_MAX_TABLE_INDEX, 22286 0 + UNICODE_MAX_TABLE_INDEX, 22287 0 + UNICODE_MAX_TABLE_INDEX, 22288 0 + UNICODE_MAX_TABLE_INDEX, 22289 0 + UNICODE_MAX_TABLE_INDEX, 22290 0 + UNICODE_MAX_TABLE_INDEX, 22291 0 + UNICODE_MAX_TABLE_INDEX, 22292 0 + UNICODE_MAX_TABLE_INDEX, 22293 0 + UNICODE_MAX_TABLE_INDEX, 22294 0 + UNICODE_MAX_TABLE_INDEX, 22295 0 + UNICODE_MAX_TABLE_INDEX, 22296 0 + UNICODE_MAX_TABLE_INDEX, 22297 0 + UNICODE_MAX_TABLE_INDEX, 22298 0 + UNICODE_MAX_TABLE_INDEX, 22299 0 + UNICODE_MAX_TABLE_INDEX, 22300 0 + UNICODE_MAX_TABLE_INDEX, 22301 0 + UNICODE_MAX_TABLE_INDEX, 22302 0 + UNICODE_MAX_TABLE_INDEX, 22303 0 + UNICODE_MAX_TABLE_INDEX, 22304 0 + UNICODE_MAX_TABLE_INDEX, 22305 0 + UNICODE_MAX_TABLE_INDEX, 22306 0 + UNICODE_MAX_TABLE_INDEX, 22307 0 + UNICODE_MAX_TABLE_INDEX, 22308 0 + UNICODE_MAX_TABLE_INDEX, 22309 0 + UNICODE_MAX_TABLE_INDEX, 22310 0 + UNICODE_MAX_TABLE_INDEX, 22311 0 + UNICODE_MAX_TABLE_INDEX, 22312 0 + UNICODE_MAX_TABLE_INDEX, 22313 0 + UNICODE_MAX_TABLE_INDEX, 22314 0 + UNICODE_MAX_TABLE_INDEX, 22315 0 + UNICODE_MAX_TABLE_INDEX, 22316 0 + UNICODE_MAX_TABLE_INDEX, 22317 0 + UNICODE_MAX_TABLE_INDEX, 22318 0 + UNICODE_MAX_TABLE_INDEX, 22319 0 + UNICODE_MAX_TABLE_INDEX, 22320 0 + UNICODE_MAX_TABLE_INDEX, 22321 0 + UNICODE_MAX_TABLE_INDEX, 22322 0 + UNICODE_MAX_TABLE_INDEX 22323 }; 22324 22325 #define ATTR_TABLE(Page) (((Page) <= UNICODE_LAST_PAGE_PART1) \ 22326 ? attr_table_part1[Page] \ 22327 : attr_table_part2[(Page) - 0xe00]) 22328 22329 #define ATTTABLE(Page, Char) \ 22330 ((ATTR_TABLE(Page) == UNICODE_MAX_TABLE_INDEX) ? 0 : (attr_data[ATTR_TABLE(Page)][Char])) 22331 22332 #define TTYPE_PART1(Page, Char) \ 22333 ((type_table_part1[Page] >= UNICODE_MAX_TABLE_INDEX) \ 22334 ? (type_table_part1[Page] - UNICODE_MAX_TABLE_INDEX) \ 22335 : (type_data[type_table_part1[Page]][Char])) 22336 22337 #define TTYPE_PART2(Page, Char) \ 22338 ((type_table_part2[Page] >= UNICODE_MAX_TABLE_INDEX) \ 22339 ? (type_table_part2[Page] - UNICODE_MAX_TABLE_INDEX) \ 22340 : (type_data[type_table_part2[Page]][Char])) 22341 22342 #define RUNETYPE(rn) \ 22343 (((rn) <= UNICODE_LAST_CHAR_PART1) \ 22344 ? TTYPE_PART1 ((rn) >> 8, (rn) & 0xff) \ 22345 : (((rn) >= 0xe0000 && (rn) <= runeMax) \ 22346 ? TTYPE_PART2 (((rn) - 0xe0000) >> 8, (rn) & 0xff) \ 22347 : UNICODE_UNASSIGNED)) 22348 22349 #define IS(Type, Class) (((uint32_t)1 << (Type)) & (Class)) 22350 #define OR(Type, Rest) (((uint32_t)1 << (Type)) | (Rest)) 22351 22352 #define ISMARK(Type) IS((Type),\ 22353 OR(UNICODE_NON_SPACING_MARK,\ 22354 OR(UNICODE_SPACING_MARK,\ 22355 OR(UNICODE_ENCLOSING_MARK, 0)))) 22356 22357 #define ISALPHA(Type) IS((Type),\ 22358 OR(UNICODE_LOWERCASE_LETTER,\ 22359 OR(UNICODE_UPPERCASE_LETTER,\ 22360 OR(UNICODE_TITLECASE_LETTER,\ 22361 OR(UNICODE_MODIFIER_LETTER,\ 22362 OR(UNICODE_OTHER_LETTER, 0)))))) 22363 22364 #define RUNE_MAX_DECOMPOSITION_LENGTH 18 /* codepoints */ 22365 22366 #define CC_PART1(Page, Char) \ 22367 ((combining_class_table_part1[Page] >= UNICODE_MAX_TABLE_INDEX) \ 22368 ? (combining_class_table_part1[Page] - UNICODE_MAX_TABLE_INDEX) \ 22369 : (cclass_data[combining_class_table_part1[Page]][Char])) 22370 22371 #define CC_PART2(Page, Char) \ 22372 ((combining_class_table_part2[Page] >= UNICODE_MAX_TABLE_INDEX) \ 22373 ? (combining_class_table_part2[Page] - UNICODE_MAX_TABLE_INDEX) \ 22374 : (cclass_data[combining_class_table_part2[Page]][Char])) 22375 22376 #define COMBINING_CLASS(Char) \ 22377 (((Char) <= UNICODE_LAST_CHAR_PART1) \ 22378 ? CC_PART1 ((Char) >> 8, (Char) & 0xff) \ 22379 : (((Char) >= 0xe0000 && (Char) <= runeMax) \ 22380 ? CC_PART2 (((Char) - 0xe0000) >> 8, (Char) & 0xff) \ 22381 : 0)) 22382 22383 typedef struct { rune ch; uint16_t canon_offset; uint16_t compat_offset;} decomposition; 22384 22385 static const decomposition decomp_table[] = 22386 { 22387 { 0x00a0, UNICODE_NOT_PRESENT_OFFSET, 0 }, 22388 { 0x00a8, UNICODE_NOT_PRESENT_OFFSET, 2 }, 22389 { 0x00aa, UNICODE_NOT_PRESENT_OFFSET, 6 }, 22390 { 0x00af, UNICODE_NOT_PRESENT_OFFSET, 8 }, 22391 { 0x00b2, UNICODE_NOT_PRESENT_OFFSET, 12 }, 22392 { 0x00b3, UNICODE_NOT_PRESENT_OFFSET, 14 }, 22393 { 0x00b4, UNICODE_NOT_PRESENT_OFFSET, 16 }, 22394 { 0x00b5, UNICODE_NOT_PRESENT_OFFSET, 20 }, 22395 { 0x00b8, UNICODE_NOT_PRESENT_OFFSET, 23 }, 22396 { 0x00b9, UNICODE_NOT_PRESENT_OFFSET, 27 }, 22397 { 0x00ba, UNICODE_NOT_PRESENT_OFFSET, 29 }, 22398 { 0x00bc, UNICODE_NOT_PRESENT_OFFSET, 31 }, 22399 { 0x00bd, UNICODE_NOT_PRESENT_OFFSET, 37 }, 22400 { 0x00be, UNICODE_NOT_PRESENT_OFFSET, 43 }, 22401 { 0x00c0, 49, UNICODE_NOT_PRESENT_OFFSET }, 22402 { 0x00c1, 53, UNICODE_NOT_PRESENT_OFFSET }, 22403 { 0x00c2, 57, UNICODE_NOT_PRESENT_OFFSET }, 22404 { 0x00c3, 61, UNICODE_NOT_PRESENT_OFFSET }, 22405 { 0x00c4, 65, UNICODE_NOT_PRESENT_OFFSET }, 22406 { 0x00c5, 69, UNICODE_NOT_PRESENT_OFFSET }, 22407 { 0x00c7, 73, UNICODE_NOT_PRESENT_OFFSET }, 22408 { 0x00c8, 77, UNICODE_NOT_PRESENT_OFFSET }, 22409 { 0x00c9, 81, UNICODE_NOT_PRESENT_OFFSET }, 22410 { 0x00ca, 85, UNICODE_NOT_PRESENT_OFFSET }, 22411 { 0x00cb, 89, UNICODE_NOT_PRESENT_OFFSET }, 22412 { 0x00cc, 93, UNICODE_NOT_PRESENT_OFFSET }, 22413 { 0x00cd, 97, UNICODE_NOT_PRESENT_OFFSET }, 22414 { 0x00ce, 101, UNICODE_NOT_PRESENT_OFFSET }, 22415 { 0x00cf, 105, UNICODE_NOT_PRESENT_OFFSET }, 22416 { 0x00d1, 109, UNICODE_NOT_PRESENT_OFFSET }, 22417 { 0x00d2, 113, UNICODE_NOT_PRESENT_OFFSET }, 22418 { 0x00d3, 117, UNICODE_NOT_PRESENT_OFFSET }, 22419 { 0x00d4, 121, UNICODE_NOT_PRESENT_OFFSET }, 22420 { 0x00d5, 125, UNICODE_NOT_PRESENT_OFFSET }, 22421 { 0x00d6, 129, UNICODE_NOT_PRESENT_OFFSET }, 22422 { 0x00d9, 133, UNICODE_NOT_PRESENT_OFFSET }, 22423 { 0x00da, 137, UNICODE_NOT_PRESENT_OFFSET }, 22424 { 0x00db, 141, UNICODE_NOT_PRESENT_OFFSET }, 22425 { 0x00dc, 145, UNICODE_NOT_PRESENT_OFFSET }, 22426 { 0x00dd, 149, UNICODE_NOT_PRESENT_OFFSET }, 22427 { 0x00e0, 153, UNICODE_NOT_PRESENT_OFFSET }, 22428 { 0x00e1, 157, UNICODE_NOT_PRESENT_OFFSET }, 22429 { 0x00e2, 161, UNICODE_NOT_PRESENT_OFFSET }, 22430 { 0x00e3, 165, UNICODE_NOT_PRESENT_OFFSET }, 22431 { 0x00e4, 169, UNICODE_NOT_PRESENT_OFFSET }, 22432 { 0x00e5, 173, UNICODE_NOT_PRESENT_OFFSET }, 22433 { 0x00e7, 177, UNICODE_NOT_PRESENT_OFFSET }, 22434 { 0x00e8, 181, UNICODE_NOT_PRESENT_OFFSET }, 22435 { 0x00e9, 185, UNICODE_NOT_PRESENT_OFFSET }, 22436 { 0x00ea, 189, UNICODE_NOT_PRESENT_OFFSET }, 22437 { 0x00eb, 193, UNICODE_NOT_PRESENT_OFFSET }, 22438 { 0x00ec, 197, UNICODE_NOT_PRESENT_OFFSET }, 22439 { 0x00ed, 201, UNICODE_NOT_PRESENT_OFFSET }, 22440 { 0x00ee, 205, UNICODE_NOT_PRESENT_OFFSET }, 22441 { 0x00ef, 209, UNICODE_NOT_PRESENT_OFFSET }, 22442 { 0x00f1, 213, UNICODE_NOT_PRESENT_OFFSET }, 22443 { 0x00f2, 217, UNICODE_NOT_PRESENT_OFFSET }, 22444 { 0x00f3, 221, UNICODE_NOT_PRESENT_OFFSET }, 22445 { 0x00f4, 225, UNICODE_NOT_PRESENT_OFFSET }, 22446 { 0x00f5, 229, UNICODE_NOT_PRESENT_OFFSET }, 22447 { 0x00f6, 233, UNICODE_NOT_PRESENT_OFFSET }, 22448 { 0x00f9, 237, UNICODE_NOT_PRESENT_OFFSET }, 22449 { 0x00fa, 241, UNICODE_NOT_PRESENT_OFFSET }, 22450 { 0x00fb, 245, UNICODE_NOT_PRESENT_OFFSET }, 22451 { 0x00fc, 249, UNICODE_NOT_PRESENT_OFFSET }, 22452 { 0x00fd, 253, UNICODE_NOT_PRESENT_OFFSET }, 22453 { 0x00ff, 257, UNICODE_NOT_PRESENT_OFFSET }, 22454 { 0x0100, 261, UNICODE_NOT_PRESENT_OFFSET }, 22455 { 0x0101, 265, UNICODE_NOT_PRESENT_OFFSET }, 22456 { 0x0102, 269, UNICODE_NOT_PRESENT_OFFSET }, 22457 { 0x0103, 273, UNICODE_NOT_PRESENT_OFFSET }, 22458 { 0x0104, 277, UNICODE_NOT_PRESENT_OFFSET }, 22459 { 0x0105, 281, UNICODE_NOT_PRESENT_OFFSET }, 22460 { 0x0106, 285, UNICODE_NOT_PRESENT_OFFSET }, 22461 { 0x0107, 289, UNICODE_NOT_PRESENT_OFFSET }, 22462 { 0x0108, 293, UNICODE_NOT_PRESENT_OFFSET }, 22463 { 0x0109, 297, UNICODE_NOT_PRESENT_OFFSET }, 22464 { 0x010a, 301, UNICODE_NOT_PRESENT_OFFSET }, 22465 { 0x010b, 305, UNICODE_NOT_PRESENT_OFFSET }, 22466 { 0x010c, 309, UNICODE_NOT_PRESENT_OFFSET }, 22467 { 0x010d, 313, UNICODE_NOT_PRESENT_OFFSET }, 22468 { 0x010e, 317, UNICODE_NOT_PRESENT_OFFSET }, 22469 { 0x010f, 321, UNICODE_NOT_PRESENT_OFFSET }, 22470 { 0x0112, 325, UNICODE_NOT_PRESENT_OFFSET }, 22471 { 0x0113, 329, UNICODE_NOT_PRESENT_OFFSET }, 22472 { 0x0114, 333, UNICODE_NOT_PRESENT_OFFSET }, 22473 { 0x0115, 337, UNICODE_NOT_PRESENT_OFFSET }, 22474 { 0x0116, 341, UNICODE_NOT_PRESENT_OFFSET }, 22475 { 0x0117, 345, UNICODE_NOT_PRESENT_OFFSET }, 22476 { 0x0118, 349, UNICODE_NOT_PRESENT_OFFSET }, 22477 { 0x0119, 353, UNICODE_NOT_PRESENT_OFFSET }, 22478 { 0x011a, 357, UNICODE_NOT_PRESENT_OFFSET }, 22479 { 0x011b, 361, UNICODE_NOT_PRESENT_OFFSET }, 22480 { 0x011c, 365, UNICODE_NOT_PRESENT_OFFSET }, 22481 { 0x011d, 369, UNICODE_NOT_PRESENT_OFFSET }, 22482 { 0x011e, 373, UNICODE_NOT_PRESENT_OFFSET }, 22483 { 0x011f, 377, UNICODE_NOT_PRESENT_OFFSET }, 22484 { 0x0120, 381, UNICODE_NOT_PRESENT_OFFSET }, 22485 { 0x0121, 385, UNICODE_NOT_PRESENT_OFFSET }, 22486 { 0x0122, 389, UNICODE_NOT_PRESENT_OFFSET }, 22487 { 0x0123, 393, UNICODE_NOT_PRESENT_OFFSET }, 22488 { 0x0124, 397, UNICODE_NOT_PRESENT_OFFSET }, 22489 { 0x0125, 401, UNICODE_NOT_PRESENT_OFFSET }, 22490 { 0x0128, 405, UNICODE_NOT_PRESENT_OFFSET }, 22491 { 0x0129, 409, UNICODE_NOT_PRESENT_OFFSET }, 22492 { 0x012a, 413, UNICODE_NOT_PRESENT_OFFSET }, 22493 { 0x012b, 417, UNICODE_NOT_PRESENT_OFFSET }, 22494 { 0x012c, 421, UNICODE_NOT_PRESENT_OFFSET }, 22495 { 0x012d, 425, UNICODE_NOT_PRESENT_OFFSET }, 22496 { 0x012e, 429, UNICODE_NOT_PRESENT_OFFSET }, 22497 { 0x012f, 433, UNICODE_NOT_PRESENT_OFFSET }, 22498 { 0x0130, 437, UNICODE_NOT_PRESENT_OFFSET }, 22499 { 0x0132, UNICODE_NOT_PRESENT_OFFSET, 441 }, 22500 { 0x0133, UNICODE_NOT_PRESENT_OFFSET, 444 }, 22501 { 0x0134, 447, UNICODE_NOT_PRESENT_OFFSET }, 22502 { 0x0135, 451, UNICODE_NOT_PRESENT_OFFSET }, 22503 { 0x0136, 455, UNICODE_NOT_PRESENT_OFFSET }, 22504 { 0x0137, 459, UNICODE_NOT_PRESENT_OFFSET }, 22505 { 0x0139, 463, UNICODE_NOT_PRESENT_OFFSET }, 22506 { 0x013a, 467, UNICODE_NOT_PRESENT_OFFSET }, 22507 { 0x013b, 471, UNICODE_NOT_PRESENT_OFFSET }, 22508 { 0x013c, 475, UNICODE_NOT_PRESENT_OFFSET }, 22509 { 0x013d, 479, UNICODE_NOT_PRESENT_OFFSET }, 22510 { 0x013e, 483, UNICODE_NOT_PRESENT_OFFSET }, 22511 { 0x013f, UNICODE_NOT_PRESENT_OFFSET, 487 }, 22512 { 0x0140, UNICODE_NOT_PRESENT_OFFSET, 491 }, 22513 { 0x0143, 495, UNICODE_NOT_PRESENT_OFFSET }, 22514 { 0x0144, 499, UNICODE_NOT_PRESENT_OFFSET }, 22515 { 0x0145, 503, UNICODE_NOT_PRESENT_OFFSET }, 22516 { 0x0146, 507, UNICODE_NOT_PRESENT_OFFSET }, 22517 { 0x0147, 511, UNICODE_NOT_PRESENT_OFFSET }, 22518 { 0x0148, 515, UNICODE_NOT_PRESENT_OFFSET }, 22519 { 0x0149, UNICODE_NOT_PRESENT_OFFSET, 519 }, 22520 { 0x014c, 523, UNICODE_NOT_PRESENT_OFFSET }, 22521 { 0x014d, 527, UNICODE_NOT_PRESENT_OFFSET }, 22522 { 0x014e, 531, UNICODE_NOT_PRESENT_OFFSET }, 22523 { 0x014f, 535, UNICODE_NOT_PRESENT_OFFSET }, 22524 { 0x0150, 539, UNICODE_NOT_PRESENT_OFFSET }, 22525 { 0x0151, 543, UNICODE_NOT_PRESENT_OFFSET }, 22526 { 0x0154, 547, UNICODE_NOT_PRESENT_OFFSET }, 22527 { 0x0155, 551, UNICODE_NOT_PRESENT_OFFSET }, 22528 { 0x0156, 555, UNICODE_NOT_PRESENT_OFFSET }, 22529 { 0x0157, 559, UNICODE_NOT_PRESENT_OFFSET }, 22530 { 0x0158, 563, UNICODE_NOT_PRESENT_OFFSET }, 22531 { 0x0159, 567, UNICODE_NOT_PRESENT_OFFSET }, 22532 { 0x015a, 571, UNICODE_NOT_PRESENT_OFFSET }, 22533 { 0x015b, 575, UNICODE_NOT_PRESENT_OFFSET }, 22534 { 0x015c, 579, UNICODE_NOT_PRESENT_OFFSET }, 22535 { 0x015d, 583, UNICODE_NOT_PRESENT_OFFSET }, 22536 { 0x015e, 587, UNICODE_NOT_PRESENT_OFFSET }, 22537 { 0x015f, 591, UNICODE_NOT_PRESENT_OFFSET }, 22538 { 0x0160, 595, UNICODE_NOT_PRESENT_OFFSET }, 22539 { 0x0161, 599, UNICODE_NOT_PRESENT_OFFSET }, 22540 { 0x0162, 603, UNICODE_NOT_PRESENT_OFFSET }, 22541 { 0x0163, 607, UNICODE_NOT_PRESENT_OFFSET }, 22542 { 0x0164, 611, UNICODE_NOT_PRESENT_OFFSET }, 22543 { 0x0165, 615, UNICODE_NOT_PRESENT_OFFSET }, 22544 { 0x0168, 619, UNICODE_NOT_PRESENT_OFFSET }, 22545 { 0x0169, 623, UNICODE_NOT_PRESENT_OFFSET }, 22546 { 0x016a, 627, UNICODE_NOT_PRESENT_OFFSET }, 22547 { 0x016b, 631, UNICODE_NOT_PRESENT_OFFSET }, 22548 { 0x016c, 635, UNICODE_NOT_PRESENT_OFFSET }, 22549 { 0x016d, 639, UNICODE_NOT_PRESENT_OFFSET }, 22550 { 0x016e, 643, UNICODE_NOT_PRESENT_OFFSET }, 22551 { 0x016f, 647, UNICODE_NOT_PRESENT_OFFSET }, 22552 { 0x0170, 651, UNICODE_NOT_PRESENT_OFFSET }, 22553 { 0x0171, 655, UNICODE_NOT_PRESENT_OFFSET }, 22554 { 0x0172, 659, UNICODE_NOT_PRESENT_OFFSET }, 22555 { 0x0173, 663, UNICODE_NOT_PRESENT_OFFSET }, 22556 { 0x0174, 667, UNICODE_NOT_PRESENT_OFFSET }, 22557 { 0x0175, 671, UNICODE_NOT_PRESENT_OFFSET }, 22558 { 0x0176, 675, UNICODE_NOT_PRESENT_OFFSET }, 22559 { 0x0177, 679, UNICODE_NOT_PRESENT_OFFSET }, 22560 { 0x0178, 683, UNICODE_NOT_PRESENT_OFFSET }, 22561 { 0x0179, 687, UNICODE_NOT_PRESENT_OFFSET }, 22562 { 0x017a, 691, UNICODE_NOT_PRESENT_OFFSET }, 22563 { 0x017b, 695, UNICODE_NOT_PRESENT_OFFSET }, 22564 { 0x017c, 699, UNICODE_NOT_PRESENT_OFFSET }, 22565 { 0x017d, 703, UNICODE_NOT_PRESENT_OFFSET }, 22566 { 0x017e, 707, UNICODE_NOT_PRESENT_OFFSET }, 22567 { 0x017f, UNICODE_NOT_PRESENT_OFFSET, 711 }, 22568 { 0x01a0, 713, UNICODE_NOT_PRESENT_OFFSET }, 22569 { 0x01a1, 717, UNICODE_NOT_PRESENT_OFFSET }, 22570 { 0x01af, 721, UNICODE_NOT_PRESENT_OFFSET }, 22571 { 0x01b0, 725, UNICODE_NOT_PRESENT_OFFSET }, 22572 { 0x01c4, UNICODE_NOT_PRESENT_OFFSET, 729 }, 22573 { 0x01c5, UNICODE_NOT_PRESENT_OFFSET, 734 }, 22574 { 0x01c6, UNICODE_NOT_PRESENT_OFFSET, 739 }, 22575 { 0x01c7, UNICODE_NOT_PRESENT_OFFSET, 744 }, 22576 { 0x01c8, UNICODE_NOT_PRESENT_OFFSET, 747 }, 22577 { 0x01c9, UNICODE_NOT_PRESENT_OFFSET, 750 }, 22578 { 0x01ca, UNICODE_NOT_PRESENT_OFFSET, 753 }, 22579 { 0x01cb, UNICODE_NOT_PRESENT_OFFSET, 756 }, 22580 { 0x01cc, UNICODE_NOT_PRESENT_OFFSET, 759 }, 22581 { 0x01cd, 762, UNICODE_NOT_PRESENT_OFFSET }, 22582 { 0x01ce, 766, UNICODE_NOT_PRESENT_OFFSET }, 22583 { 0x01cf, 770, UNICODE_NOT_PRESENT_OFFSET }, 22584 { 0x01d0, 774, UNICODE_NOT_PRESENT_OFFSET }, 22585 { 0x01d1, 778, UNICODE_NOT_PRESENT_OFFSET }, 22586 { 0x01d2, 782, UNICODE_NOT_PRESENT_OFFSET }, 22587 { 0x01d3, 786, UNICODE_NOT_PRESENT_OFFSET }, 22588 { 0x01d4, 790, UNICODE_NOT_PRESENT_OFFSET }, 22589 { 0x01d5, 794, UNICODE_NOT_PRESENT_OFFSET }, 22590 { 0x01d6, 800, UNICODE_NOT_PRESENT_OFFSET }, 22591 { 0x01d7, 806, UNICODE_NOT_PRESENT_OFFSET }, 22592 { 0x01d8, 812, UNICODE_NOT_PRESENT_OFFSET }, 22593 { 0x01d9, 818, UNICODE_NOT_PRESENT_OFFSET }, 22594 { 0x01da, 824, UNICODE_NOT_PRESENT_OFFSET }, 22595 { 0x01db, 830, UNICODE_NOT_PRESENT_OFFSET }, 22596 { 0x01dc, 836, UNICODE_NOT_PRESENT_OFFSET }, 22597 { 0x01de, 842, UNICODE_NOT_PRESENT_OFFSET }, 22598 { 0x01df, 848, UNICODE_NOT_PRESENT_OFFSET }, 22599 { 0x01e0, 854, UNICODE_NOT_PRESENT_OFFSET }, 22600 { 0x01e1, 860, UNICODE_NOT_PRESENT_OFFSET }, 22601 { 0x01e2, 866, UNICODE_NOT_PRESENT_OFFSET }, 22602 { 0x01e3, 871, UNICODE_NOT_PRESENT_OFFSET }, 22603 { 0x01e6, 876, UNICODE_NOT_PRESENT_OFFSET }, 22604 { 0x01e7, 880, UNICODE_NOT_PRESENT_OFFSET }, 22605 { 0x01e8, 884, UNICODE_NOT_PRESENT_OFFSET }, 22606 { 0x01e9, 888, UNICODE_NOT_PRESENT_OFFSET }, 22607 { 0x01ea, 892, UNICODE_NOT_PRESENT_OFFSET }, 22608 { 0x01eb, 896, UNICODE_NOT_PRESENT_OFFSET }, 22609 { 0x01ec, 900, UNICODE_NOT_PRESENT_OFFSET }, 22610 { 0x01ed, 906, UNICODE_NOT_PRESENT_OFFSET }, 22611 { 0x01ee, 912, UNICODE_NOT_PRESENT_OFFSET }, 22612 { 0x01ef, 917, UNICODE_NOT_PRESENT_OFFSET }, 22613 { 0x01f0, 922, UNICODE_NOT_PRESENT_OFFSET }, 22614 { 0x01f1, UNICODE_NOT_PRESENT_OFFSET, 926 }, 22615 { 0x01f2, UNICODE_NOT_PRESENT_OFFSET, 929 }, 22616 { 0x01f3, UNICODE_NOT_PRESENT_OFFSET, 932 }, 22617 { 0x01f4, 935, UNICODE_NOT_PRESENT_OFFSET }, 22618 { 0x01f5, 939, UNICODE_NOT_PRESENT_OFFSET }, 22619 { 0x01f8, 943, UNICODE_NOT_PRESENT_OFFSET }, 22620 { 0x01f9, 947, UNICODE_NOT_PRESENT_OFFSET }, 22621 { 0x01fa, 951, UNICODE_NOT_PRESENT_OFFSET }, 22622 { 0x01fb, 957, UNICODE_NOT_PRESENT_OFFSET }, 22623 { 0x01fc, 963, UNICODE_NOT_PRESENT_OFFSET }, 22624 { 0x01fd, 968, UNICODE_NOT_PRESENT_OFFSET }, 22625 { 0x01fe, 973, UNICODE_NOT_PRESENT_OFFSET }, 22626 { 0x01ff, 978, UNICODE_NOT_PRESENT_OFFSET }, 22627 { 0x0200, 983, UNICODE_NOT_PRESENT_OFFSET }, 22628 { 0x0201, 987, UNICODE_NOT_PRESENT_OFFSET }, 22629 { 0x0202, 991, UNICODE_NOT_PRESENT_OFFSET }, 22630 { 0x0203, 995, UNICODE_NOT_PRESENT_OFFSET }, 22631 { 0x0204, 999, UNICODE_NOT_PRESENT_OFFSET }, 22632 { 0x0205, 1003, UNICODE_NOT_PRESENT_OFFSET }, 22633 { 0x0206, 1007, UNICODE_NOT_PRESENT_OFFSET }, 22634 { 0x0207, 1011, UNICODE_NOT_PRESENT_OFFSET }, 22635 { 0x0208, 1015, UNICODE_NOT_PRESENT_OFFSET }, 22636 { 0x0209, 1019, UNICODE_NOT_PRESENT_OFFSET }, 22637 { 0x020a, 1023, UNICODE_NOT_PRESENT_OFFSET }, 22638 { 0x020b, 1027, UNICODE_NOT_PRESENT_OFFSET }, 22639 { 0x020c, 1031, UNICODE_NOT_PRESENT_OFFSET }, 22640 { 0x020d, 1035, UNICODE_NOT_PRESENT_OFFSET }, 22641 { 0x020e, 1039, UNICODE_NOT_PRESENT_OFFSET }, 22642 { 0x020f, 1043, UNICODE_NOT_PRESENT_OFFSET }, 22643 { 0x0210, 1047, UNICODE_NOT_PRESENT_OFFSET }, 22644 { 0x0211, 1051, UNICODE_NOT_PRESENT_OFFSET }, 22645 { 0x0212, 1055, UNICODE_NOT_PRESENT_OFFSET }, 22646 { 0x0213, 1059, UNICODE_NOT_PRESENT_OFFSET }, 22647 { 0x0214, 1063, UNICODE_NOT_PRESENT_OFFSET }, 22648 { 0x0215, 1067, UNICODE_NOT_PRESENT_OFFSET }, 22649 { 0x0216, 1071, UNICODE_NOT_PRESENT_OFFSET }, 22650 { 0x0217, 1075, UNICODE_NOT_PRESENT_OFFSET }, 22651 { 0x0218, 1079, UNICODE_NOT_PRESENT_OFFSET }, 22652 { 0x0219, 1083, UNICODE_NOT_PRESENT_OFFSET }, 22653 { 0x021a, 1087, UNICODE_NOT_PRESENT_OFFSET }, 22654 { 0x021b, 1091, UNICODE_NOT_PRESENT_OFFSET }, 22655 { 0x021e, 1095, UNICODE_NOT_PRESENT_OFFSET }, 22656 { 0x021f, 1099, UNICODE_NOT_PRESENT_OFFSET }, 22657 { 0x0226, 1103, UNICODE_NOT_PRESENT_OFFSET }, 22658 { 0x0227, 1107, UNICODE_NOT_PRESENT_OFFSET }, 22659 { 0x0228, 1111, UNICODE_NOT_PRESENT_OFFSET }, 22660 { 0x0229, 1115, UNICODE_NOT_PRESENT_OFFSET }, 22661 { 0x022a, 1119, UNICODE_NOT_PRESENT_OFFSET }, 22662 { 0x022b, 1125, UNICODE_NOT_PRESENT_OFFSET }, 22663 { 0x022c, 1131, UNICODE_NOT_PRESENT_OFFSET }, 22664 { 0x022d, 1137, UNICODE_NOT_PRESENT_OFFSET }, 22665 { 0x022e, 1143, UNICODE_NOT_PRESENT_OFFSET }, 22666 { 0x022f, 1147, UNICODE_NOT_PRESENT_OFFSET }, 22667 { 0x0230, 1151, UNICODE_NOT_PRESENT_OFFSET }, 22668 { 0x0231, 1157, UNICODE_NOT_PRESENT_OFFSET }, 22669 { 0x0232, 1163, UNICODE_NOT_PRESENT_OFFSET }, 22670 { 0x0233, 1167, UNICODE_NOT_PRESENT_OFFSET }, 22671 { 0x02b0, UNICODE_NOT_PRESENT_OFFSET, 1171 }, 22672 { 0x02b1, UNICODE_NOT_PRESENT_OFFSET, 1173 }, 22673 { 0x02b2, UNICODE_NOT_PRESENT_OFFSET, 1176 }, 22674 { 0x02b3, UNICODE_NOT_PRESENT_OFFSET, 1178 }, 22675 { 0x02b4, UNICODE_NOT_PRESENT_OFFSET, 1180 }, 22676 { 0x02b5, UNICODE_NOT_PRESENT_OFFSET, 1183 }, 22677 { 0x02b6, UNICODE_NOT_PRESENT_OFFSET, 1186 }, 22678 { 0x02b7, UNICODE_NOT_PRESENT_OFFSET, 1189 }, 22679 { 0x02b8, UNICODE_NOT_PRESENT_OFFSET, 1191 }, 22680 { 0x02d8, UNICODE_NOT_PRESENT_OFFSET, 1193 }, 22681 { 0x02d9, UNICODE_NOT_PRESENT_OFFSET, 1197 }, 22682 { 0x02da, UNICODE_NOT_PRESENT_OFFSET, 1201 }, 22683 { 0x02db, UNICODE_NOT_PRESENT_OFFSET, 1205 }, 22684 { 0x02dc, UNICODE_NOT_PRESENT_OFFSET, 1209 }, 22685 { 0x02dd, UNICODE_NOT_PRESENT_OFFSET, 1213 }, 22686 { 0x02e0, UNICODE_NOT_PRESENT_OFFSET, 1217 }, 22687 { 0x02e1, UNICODE_NOT_PRESENT_OFFSET, 1220 }, 22688 { 0x02e2, UNICODE_NOT_PRESENT_OFFSET, 711 }, 22689 { 0x02e3, UNICODE_NOT_PRESENT_OFFSET, 1222 }, 22690 { 0x02e4, UNICODE_NOT_PRESENT_OFFSET, 1224 }, 22691 { 0x0340, 1227, UNICODE_NOT_PRESENT_OFFSET }, 22692 { 0x0341, 1230, UNICODE_NOT_PRESENT_OFFSET }, 22693 { 0x0343, 1233, UNICODE_NOT_PRESENT_OFFSET }, 22694 { 0x0344, 1236, UNICODE_NOT_PRESENT_OFFSET }, 22695 { 0x0374, 1241, UNICODE_NOT_PRESENT_OFFSET }, 22696 { 0x037a, UNICODE_NOT_PRESENT_OFFSET, 1244 }, 22697 { 0x037e, 1248, UNICODE_NOT_PRESENT_OFFSET }, 22698 { 0x0384, UNICODE_NOT_PRESENT_OFFSET, 16 }, 22699 { 0x0385, 1250, 1255 }, 22700 { 0x0386, 1261, UNICODE_NOT_PRESENT_OFFSET }, 22701 { 0x0387, 1266, UNICODE_NOT_PRESENT_OFFSET }, 22702 { 0x0388, 1269, UNICODE_NOT_PRESENT_OFFSET }, 22703 { 0x0389, 1274, UNICODE_NOT_PRESENT_OFFSET }, 22704 { 0x038a, 1279, UNICODE_NOT_PRESENT_OFFSET }, 22705 { 0x038c, 1284, UNICODE_NOT_PRESENT_OFFSET }, 22706 { 0x038e, 1289, UNICODE_NOT_PRESENT_OFFSET }, 22707 { 0x038f, 1294, UNICODE_NOT_PRESENT_OFFSET }, 22708 { 0x0390, 1299, UNICODE_NOT_PRESENT_OFFSET }, 22709 { 0x03aa, 1306, UNICODE_NOT_PRESENT_OFFSET }, 22710 { 0x03ab, 1311, UNICODE_NOT_PRESENT_OFFSET }, 22711 { 0x03ac, 1316, UNICODE_NOT_PRESENT_OFFSET }, 22712 { 0x03ad, 1321, UNICODE_NOT_PRESENT_OFFSET }, 22713 { 0x03ae, 1326, UNICODE_NOT_PRESENT_OFFSET }, 22714 { 0x03af, 1331, UNICODE_NOT_PRESENT_OFFSET }, 22715 { 0x03b0, 1336, UNICODE_NOT_PRESENT_OFFSET }, 22716 { 0x03ca, 1343, UNICODE_NOT_PRESENT_OFFSET }, 22717 { 0x03cb, 1348, UNICODE_NOT_PRESENT_OFFSET }, 22718 { 0x03cc, 1353, UNICODE_NOT_PRESENT_OFFSET }, 22719 { 0x03cd, 1358, UNICODE_NOT_PRESENT_OFFSET }, 22720 { 0x03ce, 1363, UNICODE_NOT_PRESENT_OFFSET }, 22721 { 0x03d0, UNICODE_NOT_PRESENT_OFFSET, 1368 }, 22722 { 0x03d1, UNICODE_NOT_PRESENT_OFFSET, 1371 }, 22723 { 0x03d2, UNICODE_NOT_PRESENT_OFFSET, 1374 }, 22724 { 0x03d3, 1377, 1289 }, 22725 { 0x03d4, 1382, 1311 }, 22726 { 0x03d5, UNICODE_NOT_PRESENT_OFFSET, 1387 }, 22727 { 0x03d6, UNICODE_NOT_PRESENT_OFFSET, 1390 }, 22728 { 0x03f0, UNICODE_NOT_PRESENT_OFFSET, 1393 }, 22729 { 0x03f1, UNICODE_NOT_PRESENT_OFFSET, 1396 }, 22730 { 0x03f2, UNICODE_NOT_PRESENT_OFFSET, 1399 }, 22731 { 0x03f4, UNICODE_NOT_PRESENT_OFFSET, 1402 }, 22732 { 0x03f5, UNICODE_NOT_PRESENT_OFFSET, 1405 }, 22733 { 0x03f9, UNICODE_NOT_PRESENT_OFFSET, 1408 }, 22734 { 0x0400, 1411, UNICODE_NOT_PRESENT_OFFSET }, 22735 { 0x0401, 1416, UNICODE_NOT_PRESENT_OFFSET }, 22736 { 0x0403, 1421, UNICODE_NOT_PRESENT_OFFSET }, 22737 { 0x0407, 1426, UNICODE_NOT_PRESENT_OFFSET }, 22738 { 0x040c, 1431, UNICODE_NOT_PRESENT_OFFSET }, 22739 { 0x040d, 1436, UNICODE_NOT_PRESENT_OFFSET }, 22740 { 0x040e, 1441, UNICODE_NOT_PRESENT_OFFSET }, 22741 { 0x0419, 1446, UNICODE_NOT_PRESENT_OFFSET }, 22742 { 0x0439, 1451, UNICODE_NOT_PRESENT_OFFSET }, 22743 { 0x0450, 1456, UNICODE_NOT_PRESENT_OFFSET }, 22744 { 0x0451, 1461, UNICODE_NOT_PRESENT_OFFSET }, 22745 { 0x0453, 1466, UNICODE_NOT_PRESENT_OFFSET }, 22746 { 0x0457, 1471, UNICODE_NOT_PRESENT_OFFSET }, 22747 { 0x045c, 1476, UNICODE_NOT_PRESENT_OFFSET }, 22748 { 0x045d, 1481, UNICODE_NOT_PRESENT_OFFSET }, 22749 { 0x045e, 1486, UNICODE_NOT_PRESENT_OFFSET }, 22750 { 0x0476, 1491, UNICODE_NOT_PRESENT_OFFSET }, 22751 { 0x0477, 1496, UNICODE_NOT_PRESENT_OFFSET }, 22752 { 0x04c1, 1501, UNICODE_NOT_PRESENT_OFFSET }, 22753 { 0x04c2, 1506, UNICODE_NOT_PRESENT_OFFSET }, 22754 { 0x04d0, 1511, UNICODE_NOT_PRESENT_OFFSET }, 22755 { 0x04d1, 1516, UNICODE_NOT_PRESENT_OFFSET }, 22756 { 0x04d2, 1521, UNICODE_NOT_PRESENT_OFFSET }, 22757 { 0x04d3, 1526, UNICODE_NOT_PRESENT_OFFSET }, 22758 { 0x04d6, 1531, UNICODE_NOT_PRESENT_OFFSET }, 22759 { 0x04d7, 1536, UNICODE_NOT_PRESENT_OFFSET }, 22760 { 0x04da, 1541, UNICODE_NOT_PRESENT_OFFSET }, 22761 { 0x04db, 1546, UNICODE_NOT_PRESENT_OFFSET }, 22762 { 0x04dc, 1551, UNICODE_NOT_PRESENT_OFFSET }, 22763 { 0x04dd, 1556, UNICODE_NOT_PRESENT_OFFSET }, 22764 { 0x04de, 1561, UNICODE_NOT_PRESENT_OFFSET }, 22765 { 0x04df, 1566, UNICODE_NOT_PRESENT_OFFSET }, 22766 { 0x04e2, 1571, UNICODE_NOT_PRESENT_OFFSET }, 22767 { 0x04e3, 1576, UNICODE_NOT_PRESENT_OFFSET }, 22768 { 0x04e4, 1581, UNICODE_NOT_PRESENT_OFFSET }, 22769 { 0x04e5, 1586, UNICODE_NOT_PRESENT_OFFSET }, 22770 { 0x04e6, 1591, UNICODE_NOT_PRESENT_OFFSET }, 22771 { 0x04e7, 1596, UNICODE_NOT_PRESENT_OFFSET }, 22772 { 0x04ea, 1601, UNICODE_NOT_PRESENT_OFFSET }, 22773 { 0x04eb, 1606, UNICODE_NOT_PRESENT_OFFSET }, 22774 { 0x04ec, 1611, UNICODE_NOT_PRESENT_OFFSET }, 22775 { 0x04ed, 1616, UNICODE_NOT_PRESENT_OFFSET }, 22776 { 0x04ee, 1621, UNICODE_NOT_PRESENT_OFFSET }, 22777 { 0x04ef, 1626, UNICODE_NOT_PRESENT_OFFSET }, 22778 { 0x04f0, 1631, UNICODE_NOT_PRESENT_OFFSET }, 22779 { 0x04f1, 1636, UNICODE_NOT_PRESENT_OFFSET }, 22780 { 0x04f2, 1641, UNICODE_NOT_PRESENT_OFFSET }, 22781 { 0x04f3, 1646, UNICODE_NOT_PRESENT_OFFSET }, 22782 { 0x04f4, 1651, UNICODE_NOT_PRESENT_OFFSET }, 22783 { 0x04f5, 1656, UNICODE_NOT_PRESENT_OFFSET }, 22784 { 0x04f8, 1661, UNICODE_NOT_PRESENT_OFFSET }, 22785 { 0x04f9, 1666, UNICODE_NOT_PRESENT_OFFSET }, 22786 { 0x0587, UNICODE_NOT_PRESENT_OFFSET, 1671 }, 22787 { 0x0622, 1676, UNICODE_NOT_PRESENT_OFFSET }, 22788 { 0x0623, 1681, UNICODE_NOT_PRESENT_OFFSET }, 22789 { 0x0624, 1686, UNICODE_NOT_PRESENT_OFFSET }, 22790 { 0x0625, 1691, UNICODE_NOT_PRESENT_OFFSET }, 22791 { 0x0626, 1696, UNICODE_NOT_PRESENT_OFFSET }, 22792 { 0x0675, UNICODE_NOT_PRESENT_OFFSET, 1701 }, 22793 { 0x0676, UNICODE_NOT_PRESENT_OFFSET, 1706 }, 22794 { 0x0677, UNICODE_NOT_PRESENT_OFFSET, 1711 }, 22795 { 0x0678, UNICODE_NOT_PRESENT_OFFSET, 1716 }, 22796 { 0x06c0, 1721, UNICODE_NOT_PRESENT_OFFSET }, 22797 { 0x06c2, 1726, UNICODE_NOT_PRESENT_OFFSET }, 22798 { 0x06d3, 1731, UNICODE_NOT_PRESENT_OFFSET }, 22799 { 0x0929, 1736, UNICODE_NOT_PRESENT_OFFSET }, 22800 { 0x0931, 1743, UNICODE_NOT_PRESENT_OFFSET }, 22801 { 0x0934, 1750, UNICODE_NOT_PRESENT_OFFSET }, 22802 { 0x0958, 1757, UNICODE_NOT_PRESENT_OFFSET }, 22803 { 0x0959, 1764, UNICODE_NOT_PRESENT_OFFSET }, 22804 { 0x095a, 1771, UNICODE_NOT_PRESENT_OFFSET }, 22805 { 0x095b, 1778, UNICODE_NOT_PRESENT_OFFSET }, 22806 { 0x095c, 1785, UNICODE_NOT_PRESENT_OFFSET }, 22807 { 0x095d, 1792, UNICODE_NOT_PRESENT_OFFSET }, 22808 { 0x095e, 1799, UNICODE_NOT_PRESENT_OFFSET }, 22809 { 0x095f, 1806, UNICODE_NOT_PRESENT_OFFSET }, 22810 { 0x09cb, 1813, UNICODE_NOT_PRESENT_OFFSET }, 22811 { 0x09cc, 1820, UNICODE_NOT_PRESENT_OFFSET }, 22812 { 0x09dc, 1827, UNICODE_NOT_PRESENT_OFFSET }, 22813 { 0x09dd, 1834, UNICODE_NOT_PRESENT_OFFSET }, 22814 { 0x09df, 1841, UNICODE_NOT_PRESENT_OFFSET }, 22815 { 0x0a33, 1848, UNICODE_NOT_PRESENT_OFFSET }, 22816 { 0x0a36, 1855, UNICODE_NOT_PRESENT_OFFSET }, 22817 { 0x0a59, 1862, UNICODE_NOT_PRESENT_OFFSET }, 22818 { 0x0a5a, 1869, UNICODE_NOT_PRESENT_OFFSET }, 22819 { 0x0a5b, 1876, UNICODE_NOT_PRESENT_OFFSET }, 22820 { 0x0a5e, 1883, UNICODE_NOT_PRESENT_OFFSET }, 22821 { 0x0b48, 1890, UNICODE_NOT_PRESENT_OFFSET }, 22822 { 0x0b4b, 1897, UNICODE_NOT_PRESENT_OFFSET }, 22823 { 0x0b4c, 1904, UNICODE_NOT_PRESENT_OFFSET }, 22824 { 0x0b5c, 1911, UNICODE_NOT_PRESENT_OFFSET }, 22825 { 0x0b5d, 1918, UNICODE_NOT_PRESENT_OFFSET }, 22826 { 0x0b94, 1925, UNICODE_NOT_PRESENT_OFFSET }, 22827 { 0x0bca, 1932, UNICODE_NOT_PRESENT_OFFSET }, 22828 { 0x0bcb, 1939, UNICODE_NOT_PRESENT_OFFSET }, 22829 { 0x0bcc, 1946, UNICODE_NOT_PRESENT_OFFSET }, 22830 { 0x0c48, 1953, UNICODE_NOT_PRESENT_OFFSET }, 22831 { 0x0cc0, 1960, UNICODE_NOT_PRESENT_OFFSET }, 22832 { 0x0cc7, 1967, UNICODE_NOT_PRESENT_OFFSET }, 22833 { 0x0cc8, 1974, UNICODE_NOT_PRESENT_OFFSET }, 22834 { 0x0cca, 1981, UNICODE_NOT_PRESENT_OFFSET }, 22835 { 0x0ccb, 1988, UNICODE_NOT_PRESENT_OFFSET }, 22836 { 0x0d4a, 1998, UNICODE_NOT_PRESENT_OFFSET }, 22837 { 0x0d4b, 2005, UNICODE_NOT_PRESENT_OFFSET }, 22838 { 0x0d4c, 2012, UNICODE_NOT_PRESENT_OFFSET }, 22839 { 0x0dda, 2019, UNICODE_NOT_PRESENT_OFFSET }, 22840 { 0x0ddc, 2026, UNICODE_NOT_PRESENT_OFFSET }, 22841 { 0x0ddd, 2033, UNICODE_NOT_PRESENT_OFFSET }, 22842 { 0x0dde, 2043, UNICODE_NOT_PRESENT_OFFSET }, 22843 { 0x0e33, UNICODE_NOT_PRESENT_OFFSET, 2050 }, 22844 { 0x0eb3, UNICODE_NOT_PRESENT_OFFSET, 2057 }, 22845 { 0x0edc, UNICODE_NOT_PRESENT_OFFSET, 2064 }, 22846 { 0x0edd, UNICODE_NOT_PRESENT_OFFSET, 2071 }, 22847 { 0x0f0c, UNICODE_NOT_PRESENT_OFFSET, 2078 }, 22848 { 0x0f43, 2082, UNICODE_NOT_PRESENT_OFFSET }, 22849 { 0x0f4d, 2089, UNICODE_NOT_PRESENT_OFFSET }, 22850 { 0x0f52, 2096, UNICODE_NOT_PRESENT_OFFSET }, 22851 { 0x0f57, 2103, UNICODE_NOT_PRESENT_OFFSET }, 22852 { 0x0f5c, 2110, UNICODE_NOT_PRESENT_OFFSET }, 22853 { 0x0f69, 2117, UNICODE_NOT_PRESENT_OFFSET }, 22854 { 0x0f73, 2124, UNICODE_NOT_PRESENT_OFFSET }, 22855 { 0x0f75, 2131, UNICODE_NOT_PRESENT_OFFSET }, 22856 { 0x0f76, 2138, UNICODE_NOT_PRESENT_OFFSET }, 22857 { 0x0f77, UNICODE_NOT_PRESENT_OFFSET, 2145 }, 22858 { 0x0f78, 2155, UNICODE_NOT_PRESENT_OFFSET }, 22859 { 0x0f79, UNICODE_NOT_PRESENT_OFFSET, 2162 }, 22860 { 0x0f81, 2172, UNICODE_NOT_PRESENT_OFFSET }, 22861 { 0x0f93, 2179, UNICODE_NOT_PRESENT_OFFSET }, 22862 { 0x0f9d, 2186, UNICODE_NOT_PRESENT_OFFSET }, 22863 { 0x0fa2, 2193, UNICODE_NOT_PRESENT_OFFSET }, 22864 { 0x0fa7, 2200, UNICODE_NOT_PRESENT_OFFSET }, 22865 { 0x0fac, 2207, UNICODE_NOT_PRESENT_OFFSET }, 22866 { 0x0fb9, 2214, UNICODE_NOT_PRESENT_OFFSET }, 22867 { 0x1026, 2221, UNICODE_NOT_PRESENT_OFFSET }, 22868 { 0x10fc, UNICODE_NOT_PRESENT_OFFSET, 2228 }, 22869 { 0x1b06, 2232, UNICODE_NOT_PRESENT_OFFSET }, 22870 { 0x1b08, 2239, UNICODE_NOT_PRESENT_OFFSET }, 22871 { 0x1b0a, 2246, UNICODE_NOT_PRESENT_OFFSET }, 22872 { 0x1b0c, 2253, UNICODE_NOT_PRESENT_OFFSET }, 22873 { 0x1b0e, 2260, UNICODE_NOT_PRESENT_OFFSET }, 22874 { 0x1b12, 2267, UNICODE_NOT_PRESENT_OFFSET }, 22875 { 0x1b3b, 2274, UNICODE_NOT_PRESENT_OFFSET }, 22876 { 0x1b3d, 2281, UNICODE_NOT_PRESENT_OFFSET }, 22877 { 0x1b40, 2288, UNICODE_NOT_PRESENT_OFFSET }, 22878 { 0x1b41, 2295, UNICODE_NOT_PRESENT_OFFSET }, 22879 { 0x1b43, 2302, UNICODE_NOT_PRESENT_OFFSET }, 22880 { 0x1d2c, UNICODE_NOT_PRESENT_OFFSET, 2309 }, 22881 { 0x1d2d, UNICODE_NOT_PRESENT_OFFSET, 2311 }, 22882 { 0x1d2e, UNICODE_NOT_PRESENT_OFFSET, 2314 }, 22883 { 0x1d30, UNICODE_NOT_PRESENT_OFFSET, 2316 }, 22884 { 0x1d31, UNICODE_NOT_PRESENT_OFFSET, 2318 }, 22885 { 0x1d32, UNICODE_NOT_PRESENT_OFFSET, 2320 }, 22886 { 0x1d33, UNICODE_NOT_PRESENT_OFFSET, 2323 }, 22887 { 0x1d34, UNICODE_NOT_PRESENT_OFFSET, 2325 }, 22888 { 0x1d35, UNICODE_NOT_PRESENT_OFFSET, 2327 }, 22889 { 0x1d36, UNICODE_NOT_PRESENT_OFFSET, 2329 }, 22890 { 0x1d37, UNICODE_NOT_PRESENT_OFFSET, 2331 }, 22891 { 0x1d38, UNICODE_NOT_PRESENT_OFFSET, 2333 }, 22892 { 0x1d39, UNICODE_NOT_PRESENT_OFFSET, 2335 }, 22893 { 0x1d3a, UNICODE_NOT_PRESENT_OFFSET, 2337 }, 22894 { 0x1d3c, UNICODE_NOT_PRESENT_OFFSET, 2339 }, 22895 { 0x1d3d, UNICODE_NOT_PRESENT_OFFSET, 2341 }, 22896 { 0x1d3e, UNICODE_NOT_PRESENT_OFFSET, 2344 }, 22897 { 0x1d3f, UNICODE_NOT_PRESENT_OFFSET, 2346 }, 22898 { 0x1d40, UNICODE_NOT_PRESENT_OFFSET, 2348 }, 22899 { 0x1d41, UNICODE_NOT_PRESENT_OFFSET, 2350 }, 22900 { 0x1d42, UNICODE_NOT_PRESENT_OFFSET, 2352 }, 22901 { 0x1d43, UNICODE_NOT_PRESENT_OFFSET, 6 }, 22902 { 0x1d44, UNICODE_NOT_PRESENT_OFFSET, 2354 }, 22903 { 0x1d45, UNICODE_NOT_PRESENT_OFFSET, 2357 }, 22904 { 0x1d46, UNICODE_NOT_PRESENT_OFFSET, 2360 }, 22905 { 0x1d47, UNICODE_NOT_PRESENT_OFFSET, 2364 }, 22906 { 0x1d48, UNICODE_NOT_PRESENT_OFFSET, 2366 }, 22907 { 0x1d49, UNICODE_NOT_PRESENT_OFFSET, 2368 }, 22908 { 0x1d4a, UNICODE_NOT_PRESENT_OFFSET, 2370 }, 22909 { 0x1d4b, UNICODE_NOT_PRESENT_OFFSET, 2373 }, 22910 { 0x1d4c, UNICODE_NOT_PRESENT_OFFSET, 2376 }, 22911 { 0x1d4d, UNICODE_NOT_PRESENT_OFFSET, 2379 }, 22912 { 0x1d4f, UNICODE_NOT_PRESENT_OFFSET, 2381 }, 22913 { 0x1d50, UNICODE_NOT_PRESENT_OFFSET, 2383 }, 22914 { 0x1d51, UNICODE_NOT_PRESENT_OFFSET, 2385 }, 22915 { 0x1d52, UNICODE_NOT_PRESENT_OFFSET, 29 }, 22916 { 0x1d53, UNICODE_NOT_PRESENT_OFFSET, 2388 }, 22917 { 0x1d54, UNICODE_NOT_PRESENT_OFFSET, 2391 }, 22918 { 0x1d55, UNICODE_NOT_PRESENT_OFFSET, 2395 }, 22919 { 0x1d56, UNICODE_NOT_PRESENT_OFFSET, 2399 }, 22920 { 0x1d57, UNICODE_NOT_PRESENT_OFFSET, 2401 }, 22921 { 0x1d58, UNICODE_NOT_PRESENT_OFFSET, 2403 }, 22922 { 0x1d59, UNICODE_NOT_PRESENT_OFFSET, 2405 }, 22923 { 0x1d5a, UNICODE_NOT_PRESENT_OFFSET, 2409 }, 22924 { 0x1d5b, UNICODE_NOT_PRESENT_OFFSET, 2412 }, 22925 { 0x1d5c, UNICODE_NOT_PRESENT_OFFSET, 2414 }, 22926 { 0x1d5d, UNICODE_NOT_PRESENT_OFFSET, 1368 }, 22927 { 0x1d5e, UNICODE_NOT_PRESENT_OFFSET, 2418 }, 22928 { 0x1d5f, UNICODE_NOT_PRESENT_OFFSET, 2421 }, 22929 { 0x1d60, UNICODE_NOT_PRESENT_OFFSET, 1387 }, 22930 { 0x1d61, UNICODE_NOT_PRESENT_OFFSET, 2424 }, 22931 { 0x1d62, UNICODE_NOT_PRESENT_OFFSET, 2427 }, 22932 { 0x1d63, UNICODE_NOT_PRESENT_OFFSET, 1178 }, 22933 { 0x1d64, UNICODE_NOT_PRESENT_OFFSET, 2403 }, 22934 { 0x1d65, UNICODE_NOT_PRESENT_OFFSET, 2412 }, 22935 { 0x1d66, UNICODE_NOT_PRESENT_OFFSET, 1368 }, 22936 { 0x1d67, UNICODE_NOT_PRESENT_OFFSET, 2418 }, 22937 { 0x1d68, UNICODE_NOT_PRESENT_OFFSET, 1396 }, 22938 { 0x1d69, UNICODE_NOT_PRESENT_OFFSET, 1387 }, 22939 { 0x1d6a, UNICODE_NOT_PRESENT_OFFSET, 2424 }, 22940 { 0x1d78, UNICODE_NOT_PRESENT_OFFSET, 2429 }, 22941 { 0x1d9b, UNICODE_NOT_PRESENT_OFFSET, 2432 }, 22942 { 0x1d9c, UNICODE_NOT_PRESENT_OFFSET, 2435 }, 22943 { 0x1d9d, UNICODE_NOT_PRESENT_OFFSET, 2437 }, 22944 { 0x1d9e, UNICODE_NOT_PRESENT_OFFSET, 2440 }, 22945 { 0x1d9f, UNICODE_NOT_PRESENT_OFFSET, 2376 }, 22946 { 0x1da0, UNICODE_NOT_PRESENT_OFFSET, 2443 }, 22947 { 0x1da1, UNICODE_NOT_PRESENT_OFFSET, 2445 }, 22948 { 0x1da2, UNICODE_NOT_PRESENT_OFFSET, 2448 }, 22949 { 0x1da3, UNICODE_NOT_PRESENT_OFFSET, 2451 }, 22950 { 0x1da4, UNICODE_NOT_PRESENT_OFFSET, 2454 }, 22951 { 0x1da5, UNICODE_NOT_PRESENT_OFFSET, 2457 }, 22952 { 0x1da6, UNICODE_NOT_PRESENT_OFFSET, 2460 }, 22953 { 0x1da7, UNICODE_NOT_PRESENT_OFFSET, 2463 }, 22954 { 0x1da8, UNICODE_NOT_PRESENT_OFFSET, 2467 }, 22955 { 0x1da9, UNICODE_NOT_PRESENT_OFFSET, 2470 }, 22956 { 0x1daa, UNICODE_NOT_PRESENT_OFFSET, 2473 }, 22957 { 0x1dab, UNICODE_NOT_PRESENT_OFFSET, 2477 }, 22958 { 0x1dac, UNICODE_NOT_PRESENT_OFFSET, 2480 }, 22959 { 0x1dad, UNICODE_NOT_PRESENT_OFFSET, 2483 }, 22960 { 0x1dae, UNICODE_NOT_PRESENT_OFFSET, 2486 }, 22961 { 0x1daf, UNICODE_NOT_PRESENT_OFFSET, 2489 }, 22962 { 0x1db0, UNICODE_NOT_PRESENT_OFFSET, 2492 }, 22963 { 0x1db1, UNICODE_NOT_PRESENT_OFFSET, 2495 }, 22964 { 0x1db2, UNICODE_NOT_PRESENT_OFFSET, 2498 }, 22965 { 0x1db3, UNICODE_NOT_PRESENT_OFFSET, 2501 }, 22966 { 0x1db4, UNICODE_NOT_PRESENT_OFFSET, 2504 }, 22967 { 0x1db5, UNICODE_NOT_PRESENT_OFFSET, 2507 }, 22968 { 0x1db6, UNICODE_NOT_PRESENT_OFFSET, 2510 }, 22969 { 0x1db7, UNICODE_NOT_PRESENT_OFFSET, 2513 }, 22970 { 0x1db8, UNICODE_NOT_PRESENT_OFFSET, 2516 }, 22971 { 0x1db9, UNICODE_NOT_PRESENT_OFFSET, 2520 }, 22972 { 0x1dba, UNICODE_NOT_PRESENT_OFFSET, 2523 }, 22973 { 0x1dbb, UNICODE_NOT_PRESENT_OFFSET, 2526 }, 22974 { 0x1dbc, UNICODE_NOT_PRESENT_OFFSET, 2528 }, 22975 { 0x1dbd, UNICODE_NOT_PRESENT_OFFSET, 2531 }, 22976 { 0x1dbe, UNICODE_NOT_PRESENT_OFFSET, 2534 }, 22977 { 0x1dbf, UNICODE_NOT_PRESENT_OFFSET, 1371 }, 22978 { 0x1e00, 2537, UNICODE_NOT_PRESENT_OFFSET }, 22979 { 0x1e01, 2541, UNICODE_NOT_PRESENT_OFFSET }, 22980 { 0x1e02, 2545, UNICODE_NOT_PRESENT_OFFSET }, 22981 { 0x1e03, 2549, UNICODE_NOT_PRESENT_OFFSET }, 22982 { 0x1e04, 2553, UNICODE_NOT_PRESENT_OFFSET }, 22983 { 0x1e05, 2557, UNICODE_NOT_PRESENT_OFFSET }, 22984 { 0x1e06, 2561, UNICODE_NOT_PRESENT_OFFSET }, 22985 { 0x1e07, 2565, UNICODE_NOT_PRESENT_OFFSET }, 22986 { 0x1e08, 2569, UNICODE_NOT_PRESENT_OFFSET }, 22987 { 0x1e09, 2575, UNICODE_NOT_PRESENT_OFFSET }, 22988 { 0x1e0a, 2581, UNICODE_NOT_PRESENT_OFFSET }, 22989 { 0x1e0b, 2585, UNICODE_NOT_PRESENT_OFFSET }, 22990 { 0x1e0c, 2589, UNICODE_NOT_PRESENT_OFFSET }, 22991 { 0x1e0d, 2593, UNICODE_NOT_PRESENT_OFFSET }, 22992 { 0x1e0e, 2597, UNICODE_NOT_PRESENT_OFFSET }, 22993 { 0x1e0f, 2601, UNICODE_NOT_PRESENT_OFFSET }, 22994 { 0x1e10, 2605, UNICODE_NOT_PRESENT_OFFSET }, 22995 { 0x1e11, 2609, UNICODE_NOT_PRESENT_OFFSET }, 22996 { 0x1e12, 2613, UNICODE_NOT_PRESENT_OFFSET }, 22997 { 0x1e13, 2617, UNICODE_NOT_PRESENT_OFFSET }, 22998 { 0x1e14, 2621, UNICODE_NOT_PRESENT_OFFSET }, 22999 { 0x1e15, 2627, UNICODE_NOT_PRESENT_OFFSET }, 23000 { 0x1e16, 2633, UNICODE_NOT_PRESENT_OFFSET }, 23001 { 0x1e17, 2639, UNICODE_NOT_PRESENT_OFFSET }, 23002 { 0x1e18, 2645, UNICODE_NOT_PRESENT_OFFSET }, 23003 { 0x1e19, 2649, UNICODE_NOT_PRESENT_OFFSET }, 23004 { 0x1e1a, 2653, UNICODE_NOT_PRESENT_OFFSET }, 23005 { 0x1e1b, 2657, UNICODE_NOT_PRESENT_OFFSET }, 23006 { 0x1e1c, 2661, UNICODE_NOT_PRESENT_OFFSET }, 23007 { 0x1e1d, 2667, UNICODE_NOT_PRESENT_OFFSET }, 23008 { 0x1e1e, 2673, UNICODE_NOT_PRESENT_OFFSET }, 23009 { 0x1e1f, 2677, UNICODE_NOT_PRESENT_OFFSET }, 23010 { 0x1e20, 2681, UNICODE_NOT_PRESENT_OFFSET }, 23011 { 0x1e21, 2685, UNICODE_NOT_PRESENT_OFFSET }, 23012 { 0x1e22, 2689, UNICODE_NOT_PRESENT_OFFSET }, 23013 { 0x1e23, 2693, UNICODE_NOT_PRESENT_OFFSET }, 23014 { 0x1e24, 2697, UNICODE_NOT_PRESENT_OFFSET }, 23015 { 0x1e25, 2701, UNICODE_NOT_PRESENT_OFFSET }, 23016 { 0x1e26, 2705, UNICODE_NOT_PRESENT_OFFSET }, 23017 { 0x1e27, 2709, UNICODE_NOT_PRESENT_OFFSET }, 23018 { 0x1e28, 2713, UNICODE_NOT_PRESENT_OFFSET }, 23019 { 0x1e29, 2717, UNICODE_NOT_PRESENT_OFFSET }, 23020 { 0x1e2a, 2721, UNICODE_NOT_PRESENT_OFFSET }, 23021 { 0x1e2b, 2725, UNICODE_NOT_PRESENT_OFFSET }, 23022 { 0x1e2c, 2729, UNICODE_NOT_PRESENT_OFFSET }, 23023 { 0x1e2d, 2733, UNICODE_NOT_PRESENT_OFFSET }, 23024 { 0x1e2e, 2737, UNICODE_NOT_PRESENT_OFFSET }, 23025 { 0x1e2f, 2743, UNICODE_NOT_PRESENT_OFFSET }, 23026 { 0x1e30, 2749, UNICODE_NOT_PRESENT_OFFSET }, 23027 { 0x1e31, 2753, UNICODE_NOT_PRESENT_OFFSET }, 23028 { 0x1e32, 2757, UNICODE_NOT_PRESENT_OFFSET }, 23029 { 0x1e33, 2761, UNICODE_NOT_PRESENT_OFFSET }, 23030 { 0x1e34, 2765, UNICODE_NOT_PRESENT_OFFSET }, 23031 { 0x1e35, 2769, UNICODE_NOT_PRESENT_OFFSET }, 23032 { 0x1e36, 2773, UNICODE_NOT_PRESENT_OFFSET }, 23033 { 0x1e37, 2777, UNICODE_NOT_PRESENT_OFFSET }, 23034 { 0x1e38, 2781, UNICODE_NOT_PRESENT_OFFSET }, 23035 { 0x1e39, 2787, UNICODE_NOT_PRESENT_OFFSET }, 23036 { 0x1e3a, 2793, UNICODE_NOT_PRESENT_OFFSET }, 23037 { 0x1e3b, 2797, UNICODE_NOT_PRESENT_OFFSET }, 23038 { 0x1e3c, 2801, UNICODE_NOT_PRESENT_OFFSET }, 23039 { 0x1e3d, 2805, UNICODE_NOT_PRESENT_OFFSET }, 23040 { 0x1e3e, 2809, UNICODE_NOT_PRESENT_OFFSET }, 23041 { 0x1e3f, 2813, UNICODE_NOT_PRESENT_OFFSET }, 23042 { 0x1e40, 2817, UNICODE_NOT_PRESENT_OFFSET }, 23043 { 0x1e41, 2821, UNICODE_NOT_PRESENT_OFFSET }, 23044 { 0x1e42, 2825, UNICODE_NOT_PRESENT_OFFSET }, 23045 { 0x1e43, 2829, UNICODE_NOT_PRESENT_OFFSET }, 23046 { 0x1e44, 2833, UNICODE_NOT_PRESENT_OFFSET }, 23047 { 0x1e45, 2837, UNICODE_NOT_PRESENT_OFFSET }, 23048 { 0x1e46, 2841, UNICODE_NOT_PRESENT_OFFSET }, 23049 { 0x1e47, 2845, UNICODE_NOT_PRESENT_OFFSET }, 23050 { 0x1e48, 2849, UNICODE_NOT_PRESENT_OFFSET }, 23051 { 0x1e49, 2853, UNICODE_NOT_PRESENT_OFFSET }, 23052 { 0x1e4a, 2857, UNICODE_NOT_PRESENT_OFFSET }, 23053 { 0x1e4b, 2861, UNICODE_NOT_PRESENT_OFFSET }, 23054 { 0x1e4c, 2865, UNICODE_NOT_PRESENT_OFFSET }, 23055 { 0x1e4d, 2871, UNICODE_NOT_PRESENT_OFFSET }, 23056 { 0x1e4e, 2877, UNICODE_NOT_PRESENT_OFFSET }, 23057 { 0x1e4f, 2883, UNICODE_NOT_PRESENT_OFFSET }, 23058 { 0x1e50, 2889, UNICODE_NOT_PRESENT_OFFSET }, 23059 { 0x1e51, 2895, UNICODE_NOT_PRESENT_OFFSET }, 23060 { 0x1e52, 2901, UNICODE_NOT_PRESENT_OFFSET }, 23061 { 0x1e53, 2907, UNICODE_NOT_PRESENT_OFFSET }, 23062 { 0x1e54, 2913, UNICODE_NOT_PRESENT_OFFSET }, 23063 { 0x1e55, 2917, UNICODE_NOT_PRESENT_OFFSET }, 23064 { 0x1e56, 2921, UNICODE_NOT_PRESENT_OFFSET }, 23065 { 0x1e57, 2925, UNICODE_NOT_PRESENT_OFFSET }, 23066 { 0x1e58, 2929, UNICODE_NOT_PRESENT_OFFSET }, 23067 { 0x1e59, 2933, UNICODE_NOT_PRESENT_OFFSET }, 23068 { 0x1e5a, 2937, UNICODE_NOT_PRESENT_OFFSET }, 23069 { 0x1e5b, 2941, UNICODE_NOT_PRESENT_OFFSET }, 23070 { 0x1e5c, 2945, UNICODE_NOT_PRESENT_OFFSET }, 23071 { 0x1e5d, 2951, UNICODE_NOT_PRESENT_OFFSET }, 23072 { 0x1e5e, 2957, UNICODE_NOT_PRESENT_OFFSET }, 23073 { 0x1e5f, 2961, UNICODE_NOT_PRESENT_OFFSET }, 23074 { 0x1e60, 2965, UNICODE_NOT_PRESENT_OFFSET }, 23075 { 0x1e61, 2969, UNICODE_NOT_PRESENT_OFFSET }, 23076 { 0x1e62, 2973, UNICODE_NOT_PRESENT_OFFSET }, 23077 { 0x1e63, 2977, UNICODE_NOT_PRESENT_OFFSET }, 23078 { 0x1e64, 2981, UNICODE_NOT_PRESENT_OFFSET }, 23079 { 0x1e65, 2987, UNICODE_NOT_PRESENT_OFFSET }, 23080 { 0x1e66, 2993, UNICODE_NOT_PRESENT_OFFSET }, 23081 { 0x1e67, 2999, UNICODE_NOT_PRESENT_OFFSET }, 23082 { 0x1e68, 3005, UNICODE_NOT_PRESENT_OFFSET }, 23083 { 0x1e69, 3011, UNICODE_NOT_PRESENT_OFFSET }, 23084 { 0x1e6a, 3017, UNICODE_NOT_PRESENT_OFFSET }, 23085 { 0x1e6b, 3021, UNICODE_NOT_PRESENT_OFFSET }, 23086 { 0x1e6c, 3025, UNICODE_NOT_PRESENT_OFFSET }, 23087 { 0x1e6d, 3029, UNICODE_NOT_PRESENT_OFFSET }, 23088 { 0x1e6e, 3033, UNICODE_NOT_PRESENT_OFFSET }, 23089 { 0x1e6f, 3037, UNICODE_NOT_PRESENT_OFFSET }, 23090 { 0x1e70, 3041, UNICODE_NOT_PRESENT_OFFSET }, 23091 { 0x1e71, 3045, UNICODE_NOT_PRESENT_OFFSET }, 23092 { 0x1e72, 3049, UNICODE_NOT_PRESENT_OFFSET }, 23093 { 0x1e73, 3053, UNICODE_NOT_PRESENT_OFFSET }, 23094 { 0x1e74, 3057, UNICODE_NOT_PRESENT_OFFSET }, 23095 { 0x1e75, 3061, UNICODE_NOT_PRESENT_OFFSET }, 23096 { 0x1e76, 3065, UNICODE_NOT_PRESENT_OFFSET }, 23097 { 0x1e77, 3069, UNICODE_NOT_PRESENT_OFFSET }, 23098 { 0x1e78, 3073, UNICODE_NOT_PRESENT_OFFSET }, 23099 { 0x1e79, 3079, UNICODE_NOT_PRESENT_OFFSET }, 23100 { 0x1e7a, 3085, UNICODE_NOT_PRESENT_OFFSET }, 23101 { 0x1e7b, 3091, UNICODE_NOT_PRESENT_OFFSET }, 23102 { 0x1e7c, 3097, UNICODE_NOT_PRESENT_OFFSET }, 23103 { 0x1e7d, 3101, UNICODE_NOT_PRESENT_OFFSET }, 23104 { 0x1e7e, 3105, UNICODE_NOT_PRESENT_OFFSET }, 23105 { 0x1e7f, 3109, UNICODE_NOT_PRESENT_OFFSET }, 23106 { 0x1e80, 3113, UNICODE_NOT_PRESENT_OFFSET }, 23107 { 0x1e81, 3117, UNICODE_NOT_PRESENT_OFFSET }, 23108 { 0x1e82, 3121, UNICODE_NOT_PRESENT_OFFSET }, 23109 { 0x1e83, 3125, UNICODE_NOT_PRESENT_OFFSET }, 23110 { 0x1e84, 3129, UNICODE_NOT_PRESENT_OFFSET }, 23111 { 0x1e85, 3133, UNICODE_NOT_PRESENT_OFFSET }, 23112 { 0x1e86, 3137, UNICODE_NOT_PRESENT_OFFSET }, 23113 { 0x1e87, 3141, UNICODE_NOT_PRESENT_OFFSET }, 23114 { 0x1e88, 3145, UNICODE_NOT_PRESENT_OFFSET }, 23115 { 0x1e89, 3149, UNICODE_NOT_PRESENT_OFFSET }, 23116 { 0x1e8a, 3153, UNICODE_NOT_PRESENT_OFFSET }, 23117 { 0x1e8b, 3157, UNICODE_NOT_PRESENT_OFFSET }, 23118 { 0x1e8c, 3161, UNICODE_NOT_PRESENT_OFFSET }, 23119 { 0x1e8d, 3165, UNICODE_NOT_PRESENT_OFFSET }, 23120 { 0x1e8e, 3169, UNICODE_NOT_PRESENT_OFFSET }, 23121 { 0x1e8f, 3173, UNICODE_NOT_PRESENT_OFFSET }, 23122 { 0x1e90, 3177, UNICODE_NOT_PRESENT_OFFSET }, 23123 { 0x1e91, 3181, UNICODE_NOT_PRESENT_OFFSET }, 23124 { 0x1e92, 3185, UNICODE_NOT_PRESENT_OFFSET }, 23125 { 0x1e93, 3189, UNICODE_NOT_PRESENT_OFFSET }, 23126 { 0x1e94, 3193, UNICODE_NOT_PRESENT_OFFSET }, 23127 { 0x1e95, 3197, UNICODE_NOT_PRESENT_OFFSET }, 23128 { 0x1e96, 3201, UNICODE_NOT_PRESENT_OFFSET }, 23129 { 0x1e97, 3205, UNICODE_NOT_PRESENT_OFFSET }, 23130 { 0x1e98, 3209, UNICODE_NOT_PRESENT_OFFSET }, 23131 { 0x1e99, 3213, UNICODE_NOT_PRESENT_OFFSET }, 23132 { 0x1e9a, UNICODE_NOT_PRESENT_OFFSET, 3217 }, 23133 { 0x1e9b, 3221, 2969 }, 23134 { 0x1ea0, 3226, UNICODE_NOT_PRESENT_OFFSET }, 23135 { 0x1ea1, 3230, UNICODE_NOT_PRESENT_OFFSET }, 23136 { 0x1ea2, 3234, UNICODE_NOT_PRESENT_OFFSET }, 23137 { 0x1ea3, 3238, UNICODE_NOT_PRESENT_OFFSET }, 23138 { 0x1ea4, 3242, UNICODE_NOT_PRESENT_OFFSET }, 23139 { 0x1ea5, 3248, UNICODE_NOT_PRESENT_OFFSET }, 23140 { 0x1ea6, 3254, UNICODE_NOT_PRESENT_OFFSET }, 23141 { 0x1ea7, 3260, UNICODE_NOT_PRESENT_OFFSET }, 23142 { 0x1ea8, 3266, UNICODE_NOT_PRESENT_OFFSET }, 23143 { 0x1ea9, 3272, UNICODE_NOT_PRESENT_OFFSET }, 23144 { 0x1eaa, 3278, UNICODE_NOT_PRESENT_OFFSET }, 23145 { 0x1eab, 3284, UNICODE_NOT_PRESENT_OFFSET }, 23146 { 0x1eac, 3290, UNICODE_NOT_PRESENT_OFFSET }, 23147 { 0x1ead, 3296, UNICODE_NOT_PRESENT_OFFSET }, 23148 { 0x1eae, 3302, UNICODE_NOT_PRESENT_OFFSET }, 23149 { 0x1eaf, 3308, UNICODE_NOT_PRESENT_OFFSET }, 23150 { 0x1eb0, 3314, UNICODE_NOT_PRESENT_OFFSET }, 23151 { 0x1eb1, 3320, UNICODE_NOT_PRESENT_OFFSET }, 23152 { 0x1eb2, 3326, UNICODE_NOT_PRESENT_OFFSET }, 23153 { 0x1eb3, 3332, UNICODE_NOT_PRESENT_OFFSET }, 23154 { 0x1eb4, 3338, UNICODE_NOT_PRESENT_OFFSET }, 23155 { 0x1eb5, 3344, UNICODE_NOT_PRESENT_OFFSET }, 23156 { 0x1eb6, 3350, UNICODE_NOT_PRESENT_OFFSET }, 23157 { 0x1eb7, 3356, UNICODE_NOT_PRESENT_OFFSET }, 23158 { 0x1eb8, 3362, UNICODE_NOT_PRESENT_OFFSET }, 23159 { 0x1eb9, 3366, UNICODE_NOT_PRESENT_OFFSET }, 23160 { 0x1eba, 3370, UNICODE_NOT_PRESENT_OFFSET }, 23161 { 0x1ebb, 3374, UNICODE_NOT_PRESENT_OFFSET }, 23162 { 0x1ebc, 3378, UNICODE_NOT_PRESENT_OFFSET }, 23163 { 0x1ebd, 3382, UNICODE_NOT_PRESENT_OFFSET }, 23164 { 0x1ebe, 3386, UNICODE_NOT_PRESENT_OFFSET }, 23165 { 0x1ebf, 3392, UNICODE_NOT_PRESENT_OFFSET }, 23166 { 0x1ec0, 3398, UNICODE_NOT_PRESENT_OFFSET }, 23167 { 0x1ec1, 3404, UNICODE_NOT_PRESENT_OFFSET }, 23168 { 0x1ec2, 3410, UNICODE_NOT_PRESENT_OFFSET }, 23169 { 0x1ec3, 3416, UNICODE_NOT_PRESENT_OFFSET }, 23170 { 0x1ec4, 3422, UNICODE_NOT_PRESENT_OFFSET }, 23171 { 0x1ec5, 3428, UNICODE_NOT_PRESENT_OFFSET }, 23172 { 0x1ec6, 3434, UNICODE_NOT_PRESENT_OFFSET }, 23173 { 0x1ec7, 3440, UNICODE_NOT_PRESENT_OFFSET }, 23174 { 0x1ec8, 3446, UNICODE_NOT_PRESENT_OFFSET }, 23175 { 0x1ec9, 3450, UNICODE_NOT_PRESENT_OFFSET }, 23176 { 0x1eca, 3454, UNICODE_NOT_PRESENT_OFFSET }, 23177 { 0x1ecb, 3458, UNICODE_NOT_PRESENT_OFFSET }, 23178 { 0x1ecc, 3462, UNICODE_NOT_PRESENT_OFFSET }, 23179 { 0x1ecd, 3466, UNICODE_NOT_PRESENT_OFFSET }, 23180 { 0x1ece, 3470, UNICODE_NOT_PRESENT_OFFSET }, 23181 { 0x1ecf, 3474, UNICODE_NOT_PRESENT_OFFSET }, 23182 { 0x1ed0, 3478, UNICODE_NOT_PRESENT_OFFSET }, 23183 { 0x1ed1, 3484, UNICODE_NOT_PRESENT_OFFSET }, 23184 { 0x1ed2, 3490, UNICODE_NOT_PRESENT_OFFSET }, 23185 { 0x1ed3, 3496, UNICODE_NOT_PRESENT_OFFSET }, 23186 { 0x1ed4, 3502, UNICODE_NOT_PRESENT_OFFSET }, 23187 { 0x1ed5, 3508, UNICODE_NOT_PRESENT_OFFSET }, 23188 { 0x1ed6, 3514, UNICODE_NOT_PRESENT_OFFSET }, 23189 { 0x1ed7, 3520, UNICODE_NOT_PRESENT_OFFSET }, 23190 { 0x1ed8, 3526, UNICODE_NOT_PRESENT_OFFSET }, 23191 { 0x1ed9, 3532, UNICODE_NOT_PRESENT_OFFSET }, 23192 { 0x1eda, 3538, UNICODE_NOT_PRESENT_OFFSET }, 23193 { 0x1edb, 3544, UNICODE_NOT_PRESENT_OFFSET }, 23194 { 0x1edc, 3550, UNICODE_NOT_PRESENT_OFFSET }, 23195 { 0x1edd, 3556, UNICODE_NOT_PRESENT_OFFSET }, 23196 { 0x1ede, 3562, UNICODE_NOT_PRESENT_OFFSET }, 23197 { 0x1edf, 3568, UNICODE_NOT_PRESENT_OFFSET }, 23198 { 0x1ee0, 3574, UNICODE_NOT_PRESENT_OFFSET }, 23199 { 0x1ee1, 3580, UNICODE_NOT_PRESENT_OFFSET }, 23200 { 0x1ee2, 3586, UNICODE_NOT_PRESENT_OFFSET }, 23201 { 0x1ee3, 3592, UNICODE_NOT_PRESENT_OFFSET }, 23202 { 0x1ee4, 3598, UNICODE_NOT_PRESENT_OFFSET }, 23203 { 0x1ee5, 3602, UNICODE_NOT_PRESENT_OFFSET }, 23204 { 0x1ee6, 3606, UNICODE_NOT_PRESENT_OFFSET }, 23205 { 0x1ee7, 3610, UNICODE_NOT_PRESENT_OFFSET }, 23206 { 0x1ee8, 3614, UNICODE_NOT_PRESENT_OFFSET }, 23207 { 0x1ee9, 3620, UNICODE_NOT_PRESENT_OFFSET }, 23208 { 0x1eea, 3626, UNICODE_NOT_PRESENT_OFFSET }, 23209 { 0x1eeb, 3632, UNICODE_NOT_PRESENT_OFFSET }, 23210 { 0x1eec, 3638, UNICODE_NOT_PRESENT_OFFSET }, 23211 { 0x1eed, 3644, UNICODE_NOT_PRESENT_OFFSET }, 23212 { 0x1eee, 3650, UNICODE_NOT_PRESENT_OFFSET }, 23213 { 0x1eef, 3656, UNICODE_NOT_PRESENT_OFFSET }, 23214 { 0x1ef0, 3662, UNICODE_NOT_PRESENT_OFFSET }, 23215 { 0x1ef1, 3668, UNICODE_NOT_PRESENT_OFFSET }, 23216 { 0x1ef2, 3674, UNICODE_NOT_PRESENT_OFFSET }, 23217 { 0x1ef3, 3678, UNICODE_NOT_PRESENT_OFFSET }, 23218 { 0x1ef4, 3682, UNICODE_NOT_PRESENT_OFFSET }, 23219 { 0x1ef5, 3686, UNICODE_NOT_PRESENT_OFFSET }, 23220 { 0x1ef6, 3690, UNICODE_NOT_PRESENT_OFFSET }, 23221 { 0x1ef7, 3694, UNICODE_NOT_PRESENT_OFFSET }, 23222 { 0x1ef8, 3698, UNICODE_NOT_PRESENT_OFFSET }, 23223 { 0x1ef9, 3702, UNICODE_NOT_PRESENT_OFFSET }, 23224 { 0x1f00, 3706, UNICODE_NOT_PRESENT_OFFSET }, 23225 { 0x1f01, 3711, UNICODE_NOT_PRESENT_OFFSET }, 23226 { 0x1f02, 3716, UNICODE_NOT_PRESENT_OFFSET }, 23227 { 0x1f03, 3723, UNICODE_NOT_PRESENT_OFFSET }, 23228 { 0x1f04, 3730, UNICODE_NOT_PRESENT_OFFSET }, 23229 { 0x1f05, 3737, UNICODE_NOT_PRESENT_OFFSET }, 23230 { 0x1f06, 3744, UNICODE_NOT_PRESENT_OFFSET }, 23231 { 0x1f07, 3751, UNICODE_NOT_PRESENT_OFFSET }, 23232 { 0x1f08, 3758, UNICODE_NOT_PRESENT_OFFSET }, 23233 { 0x1f09, 3763, UNICODE_NOT_PRESENT_OFFSET }, 23234 { 0x1f0a, 3768, UNICODE_NOT_PRESENT_OFFSET }, 23235 { 0x1f0b, 3775, UNICODE_NOT_PRESENT_OFFSET }, 23236 { 0x1f0c, 3782, UNICODE_NOT_PRESENT_OFFSET }, 23237 { 0x1f0d, 3789, UNICODE_NOT_PRESENT_OFFSET }, 23238 { 0x1f0e, 3796, UNICODE_NOT_PRESENT_OFFSET }, 23239 { 0x1f0f, 3803, UNICODE_NOT_PRESENT_OFFSET }, 23240 { 0x1f10, 3810, UNICODE_NOT_PRESENT_OFFSET }, 23241 { 0x1f11, 3815, UNICODE_NOT_PRESENT_OFFSET }, 23242 { 0x1f12, 3820, UNICODE_NOT_PRESENT_OFFSET }, 23243 { 0x1f13, 3827, UNICODE_NOT_PRESENT_OFFSET }, 23244 { 0x1f14, 3834, UNICODE_NOT_PRESENT_OFFSET }, 23245 { 0x1f15, 3841, UNICODE_NOT_PRESENT_OFFSET }, 23246 { 0x1f18, 3848, UNICODE_NOT_PRESENT_OFFSET }, 23247 { 0x1f19, 3853, UNICODE_NOT_PRESENT_OFFSET }, 23248 { 0x1f1a, 3858, UNICODE_NOT_PRESENT_OFFSET }, 23249 { 0x1f1b, 3865, UNICODE_NOT_PRESENT_OFFSET }, 23250 { 0x1f1c, 3872, UNICODE_NOT_PRESENT_OFFSET }, 23251 { 0x1f1d, 3879, UNICODE_NOT_PRESENT_OFFSET }, 23252 { 0x1f20, 3886, UNICODE_NOT_PRESENT_OFFSET }, 23253 { 0x1f21, 3891, UNICODE_NOT_PRESENT_OFFSET }, 23254 { 0x1f22, 3896, UNICODE_NOT_PRESENT_OFFSET }, 23255 { 0x1f23, 3903, UNICODE_NOT_PRESENT_OFFSET }, 23256 { 0x1f24, 3910, UNICODE_NOT_PRESENT_OFFSET }, 23257 { 0x1f25, 3917, UNICODE_NOT_PRESENT_OFFSET }, 23258 { 0x1f26, 3924, UNICODE_NOT_PRESENT_OFFSET }, 23259 { 0x1f27, 3931, UNICODE_NOT_PRESENT_OFFSET }, 23260 { 0x1f28, 3938, UNICODE_NOT_PRESENT_OFFSET }, 23261 { 0x1f29, 3943, UNICODE_NOT_PRESENT_OFFSET }, 23262 { 0x1f2a, 3948, UNICODE_NOT_PRESENT_OFFSET }, 23263 { 0x1f2b, 3955, UNICODE_NOT_PRESENT_OFFSET }, 23264 { 0x1f2c, 3962, UNICODE_NOT_PRESENT_OFFSET }, 23265 { 0x1f2d, 3969, UNICODE_NOT_PRESENT_OFFSET }, 23266 { 0x1f2e, 3976, UNICODE_NOT_PRESENT_OFFSET }, 23267 { 0x1f2f, 3983, UNICODE_NOT_PRESENT_OFFSET }, 23268 { 0x1f30, 3990, UNICODE_NOT_PRESENT_OFFSET }, 23269 { 0x1f31, 3995, UNICODE_NOT_PRESENT_OFFSET }, 23270 { 0x1f32, 4000, UNICODE_NOT_PRESENT_OFFSET }, 23271 { 0x1f33, 4007, UNICODE_NOT_PRESENT_OFFSET }, 23272 { 0x1f34, 4014, UNICODE_NOT_PRESENT_OFFSET }, 23273 { 0x1f35, 4021, UNICODE_NOT_PRESENT_OFFSET }, 23274 { 0x1f36, 4028, UNICODE_NOT_PRESENT_OFFSET }, 23275 { 0x1f37, 4035, UNICODE_NOT_PRESENT_OFFSET }, 23276 { 0x1f38, 4042, UNICODE_NOT_PRESENT_OFFSET }, 23277 { 0x1f39, 4047, UNICODE_NOT_PRESENT_OFFSET }, 23278 { 0x1f3a, 4052, UNICODE_NOT_PRESENT_OFFSET }, 23279 { 0x1f3b, 4059, UNICODE_NOT_PRESENT_OFFSET }, 23280 { 0x1f3c, 4066, UNICODE_NOT_PRESENT_OFFSET }, 23281 { 0x1f3d, 4073, UNICODE_NOT_PRESENT_OFFSET }, 23282 { 0x1f3e, 4080, UNICODE_NOT_PRESENT_OFFSET }, 23283 { 0x1f3f, 4087, UNICODE_NOT_PRESENT_OFFSET }, 23284 { 0x1f40, 4094, UNICODE_NOT_PRESENT_OFFSET }, 23285 { 0x1f41, 4099, UNICODE_NOT_PRESENT_OFFSET }, 23286 { 0x1f42, 4104, UNICODE_NOT_PRESENT_OFFSET }, 23287 { 0x1f43, 4111, UNICODE_NOT_PRESENT_OFFSET }, 23288 { 0x1f44, 4118, UNICODE_NOT_PRESENT_OFFSET }, 23289 { 0x1f45, 4125, UNICODE_NOT_PRESENT_OFFSET }, 23290 { 0x1f48, 4132, UNICODE_NOT_PRESENT_OFFSET }, 23291 { 0x1f49, 4137, UNICODE_NOT_PRESENT_OFFSET }, 23292 { 0x1f4a, 4142, UNICODE_NOT_PRESENT_OFFSET }, 23293 { 0x1f4b, 4149, UNICODE_NOT_PRESENT_OFFSET }, 23294 { 0x1f4c, 4156, UNICODE_NOT_PRESENT_OFFSET }, 23295 { 0x1f4d, 4163, UNICODE_NOT_PRESENT_OFFSET }, 23296 { 0x1f50, 4170, UNICODE_NOT_PRESENT_OFFSET }, 23297 { 0x1f51, 4175, UNICODE_NOT_PRESENT_OFFSET }, 23298 { 0x1f52, 4180, UNICODE_NOT_PRESENT_OFFSET }, 23299 { 0x1f53, 4187, UNICODE_NOT_PRESENT_OFFSET }, 23300 { 0x1f54, 4194, UNICODE_NOT_PRESENT_OFFSET }, 23301 { 0x1f55, 4201, UNICODE_NOT_PRESENT_OFFSET }, 23302 { 0x1f56, 4208, UNICODE_NOT_PRESENT_OFFSET }, 23303 { 0x1f57, 4215, UNICODE_NOT_PRESENT_OFFSET }, 23304 { 0x1f59, 4222, UNICODE_NOT_PRESENT_OFFSET }, 23305 { 0x1f5b, 4227, UNICODE_NOT_PRESENT_OFFSET }, 23306 { 0x1f5d, 4234, UNICODE_NOT_PRESENT_OFFSET }, 23307 { 0x1f5f, 4241, UNICODE_NOT_PRESENT_OFFSET }, 23308 { 0x1f60, 4248, UNICODE_NOT_PRESENT_OFFSET }, 23309 { 0x1f61, 4253, UNICODE_NOT_PRESENT_OFFSET }, 23310 { 0x1f62, 4258, UNICODE_NOT_PRESENT_OFFSET }, 23311 { 0x1f63, 4265, UNICODE_NOT_PRESENT_OFFSET }, 23312 { 0x1f64, 4272, UNICODE_NOT_PRESENT_OFFSET }, 23313 { 0x1f65, 4279, UNICODE_NOT_PRESENT_OFFSET }, 23314 { 0x1f66, 4286, UNICODE_NOT_PRESENT_OFFSET }, 23315 { 0x1f67, 4293, UNICODE_NOT_PRESENT_OFFSET }, 23316 { 0x1f68, 4300, UNICODE_NOT_PRESENT_OFFSET }, 23317 { 0x1f69, 4305, UNICODE_NOT_PRESENT_OFFSET }, 23318 { 0x1f6a, 4310, UNICODE_NOT_PRESENT_OFFSET }, 23319 { 0x1f6b, 4317, UNICODE_NOT_PRESENT_OFFSET }, 23320 { 0x1f6c, 4324, UNICODE_NOT_PRESENT_OFFSET }, 23321 { 0x1f6d, 4331, UNICODE_NOT_PRESENT_OFFSET }, 23322 { 0x1f6e, 4338, UNICODE_NOT_PRESENT_OFFSET }, 23323 { 0x1f6f, 4345, UNICODE_NOT_PRESENT_OFFSET }, 23324 { 0x1f70, 4352, UNICODE_NOT_PRESENT_OFFSET }, 23325 { 0x1f71, 1316, UNICODE_NOT_PRESENT_OFFSET }, 23326 { 0x1f72, 4357, UNICODE_NOT_PRESENT_OFFSET }, 23327 { 0x1f73, 1321, UNICODE_NOT_PRESENT_OFFSET }, 23328 { 0x1f74, 4362, UNICODE_NOT_PRESENT_OFFSET }, 23329 { 0x1f75, 1326, UNICODE_NOT_PRESENT_OFFSET }, 23330 { 0x1f76, 4367, UNICODE_NOT_PRESENT_OFFSET }, 23331 { 0x1f77, 1331, UNICODE_NOT_PRESENT_OFFSET }, 23332 { 0x1f78, 4372, UNICODE_NOT_PRESENT_OFFSET }, 23333 { 0x1f79, 1353, UNICODE_NOT_PRESENT_OFFSET }, 23334 { 0x1f7a, 4377, UNICODE_NOT_PRESENT_OFFSET }, 23335 { 0x1f7b, 1358, UNICODE_NOT_PRESENT_OFFSET }, 23336 { 0x1f7c, 4382, UNICODE_NOT_PRESENT_OFFSET }, 23337 { 0x1f7d, 1363, UNICODE_NOT_PRESENT_OFFSET }, 23338 { 0x1f80, 4387, UNICODE_NOT_PRESENT_OFFSET }, 23339 { 0x1f81, 4394, UNICODE_NOT_PRESENT_OFFSET }, 23340 { 0x1f82, 4401, UNICODE_NOT_PRESENT_OFFSET }, 23341 { 0x1f83, 4410, UNICODE_NOT_PRESENT_OFFSET }, 23342 { 0x1f84, 4419, UNICODE_NOT_PRESENT_OFFSET }, 23343 { 0x1f85, 4428, UNICODE_NOT_PRESENT_OFFSET }, 23344 { 0x1f86, 4437, UNICODE_NOT_PRESENT_OFFSET }, 23345 { 0x1f87, 4446, UNICODE_NOT_PRESENT_OFFSET }, 23346 { 0x1f88, 4455, UNICODE_NOT_PRESENT_OFFSET }, 23347 { 0x1f89, 4462, UNICODE_NOT_PRESENT_OFFSET }, 23348 { 0x1f8a, 4469, UNICODE_NOT_PRESENT_OFFSET }, 23349 { 0x1f8b, 4478, UNICODE_NOT_PRESENT_OFFSET }, 23350 { 0x1f8c, 4487, UNICODE_NOT_PRESENT_OFFSET }, 23351 { 0x1f8d, 4496, UNICODE_NOT_PRESENT_OFFSET }, 23352 { 0x1f8e, 4505, UNICODE_NOT_PRESENT_OFFSET }, 23353 { 0x1f8f, 4514, UNICODE_NOT_PRESENT_OFFSET }, 23354 { 0x1f90, 4523, UNICODE_NOT_PRESENT_OFFSET }, 23355 { 0x1f91, 4530, UNICODE_NOT_PRESENT_OFFSET }, 23356 { 0x1f92, 4537, UNICODE_NOT_PRESENT_OFFSET }, 23357 { 0x1f93, 4546, UNICODE_NOT_PRESENT_OFFSET }, 23358 { 0x1f94, 4555, UNICODE_NOT_PRESENT_OFFSET }, 23359 { 0x1f95, 4564, UNICODE_NOT_PRESENT_OFFSET }, 23360 { 0x1f96, 4573, UNICODE_NOT_PRESENT_OFFSET }, 23361 { 0x1f97, 4582, UNICODE_NOT_PRESENT_OFFSET }, 23362 { 0x1f98, 4591, UNICODE_NOT_PRESENT_OFFSET }, 23363 { 0x1f99, 4598, UNICODE_NOT_PRESENT_OFFSET }, 23364 { 0x1f9a, 4605, UNICODE_NOT_PRESENT_OFFSET }, 23365 { 0x1f9b, 4614, UNICODE_NOT_PRESENT_OFFSET }, 23366 { 0x1f9c, 4623, UNICODE_NOT_PRESENT_OFFSET }, 23367 { 0x1f9d, 4632, UNICODE_NOT_PRESENT_OFFSET }, 23368 { 0x1f9e, 4641, UNICODE_NOT_PRESENT_OFFSET }, 23369 { 0x1f9f, 4650, UNICODE_NOT_PRESENT_OFFSET }, 23370 { 0x1fa0, 4659, UNICODE_NOT_PRESENT_OFFSET }, 23371 { 0x1fa1, 4666, UNICODE_NOT_PRESENT_OFFSET }, 23372 { 0x1fa2, 4673, UNICODE_NOT_PRESENT_OFFSET }, 23373 { 0x1fa3, 4682, UNICODE_NOT_PRESENT_OFFSET }, 23374 { 0x1fa4, 4691, UNICODE_NOT_PRESENT_OFFSET }, 23375 { 0x1fa5, 4700, UNICODE_NOT_PRESENT_OFFSET }, 23376 { 0x1fa6, 4709, UNICODE_NOT_PRESENT_OFFSET }, 23377 { 0x1fa7, 4718, UNICODE_NOT_PRESENT_OFFSET }, 23378 { 0x1fa8, 4727, UNICODE_NOT_PRESENT_OFFSET }, 23379 { 0x1fa9, 4734, UNICODE_NOT_PRESENT_OFFSET }, 23380 { 0x1faa, 4741, UNICODE_NOT_PRESENT_OFFSET }, 23381 { 0x1fab, 4750, UNICODE_NOT_PRESENT_OFFSET }, 23382 { 0x1fac, 4759, UNICODE_NOT_PRESENT_OFFSET }, 23383 { 0x1fad, 4768, UNICODE_NOT_PRESENT_OFFSET }, 23384 { 0x1fae, 4777, UNICODE_NOT_PRESENT_OFFSET }, 23385 { 0x1faf, 4786, UNICODE_NOT_PRESENT_OFFSET }, 23386 { 0x1fb0, 4795, UNICODE_NOT_PRESENT_OFFSET }, 23387 { 0x1fb1, 4800, UNICODE_NOT_PRESENT_OFFSET }, 23388 { 0x1fb2, 4805, UNICODE_NOT_PRESENT_OFFSET }, 23389 { 0x1fb3, 4812, UNICODE_NOT_PRESENT_OFFSET }, 23390 { 0x1fb4, 4817, UNICODE_NOT_PRESENT_OFFSET }, 23391 { 0x1fb6, 4824, UNICODE_NOT_PRESENT_OFFSET }, 23392 { 0x1fb7, 4829, UNICODE_NOT_PRESENT_OFFSET }, 23393 { 0x1fb8, 4836, UNICODE_NOT_PRESENT_OFFSET }, 23394 { 0x1fb9, 4841, UNICODE_NOT_PRESENT_OFFSET }, 23395 { 0x1fba, 4846, UNICODE_NOT_PRESENT_OFFSET }, 23396 { 0x1fbb, 1261, UNICODE_NOT_PRESENT_OFFSET }, 23397 { 0x1fbc, 4851, UNICODE_NOT_PRESENT_OFFSET }, 23398 { 0x1fbd, UNICODE_NOT_PRESENT_OFFSET, 4856 }, 23399 { 0x1fbe, 4860, UNICODE_NOT_PRESENT_OFFSET }, 23400 { 0x1fbf, UNICODE_NOT_PRESENT_OFFSET, 4856 }, 23401 { 0x1fc0, UNICODE_NOT_PRESENT_OFFSET, 4863 }, 23402 { 0x1fc1, 4867, 4872 }, 23403 { 0x1fc2, 4878, UNICODE_NOT_PRESENT_OFFSET }, 23404 { 0x1fc3, 4885, UNICODE_NOT_PRESENT_OFFSET }, 23405 { 0x1fc4, 4890, UNICODE_NOT_PRESENT_OFFSET }, 23406 { 0x1fc6, 4897, UNICODE_NOT_PRESENT_OFFSET }, 23407 { 0x1fc7, 4902, UNICODE_NOT_PRESENT_OFFSET }, 23408 { 0x1fc8, 4909, UNICODE_NOT_PRESENT_OFFSET }, 23409 { 0x1fc9, 1269, UNICODE_NOT_PRESENT_OFFSET }, 23410 { 0x1fca, 4914, UNICODE_NOT_PRESENT_OFFSET }, 23411 { 0x1fcb, 1274, UNICODE_NOT_PRESENT_OFFSET }, 23412 { 0x1fcc, 4919, UNICODE_NOT_PRESENT_OFFSET }, 23413 { 0x1fcd, 4924, 4930 }, 23414 { 0x1fce, 4936, 4942 }, 23415 { 0x1fcf, 4948, 4954 }, 23416 { 0x1fd0, 4960, UNICODE_NOT_PRESENT_OFFSET }, 23417 { 0x1fd1, 4965, UNICODE_NOT_PRESENT_OFFSET }, 23418 { 0x1fd2, 4970, UNICODE_NOT_PRESENT_OFFSET }, 23419 { 0x1fd3, 1299, UNICODE_NOT_PRESENT_OFFSET }, 23420 { 0x1fd6, 4977, UNICODE_NOT_PRESENT_OFFSET }, 23421 { 0x1fd7, 4982, UNICODE_NOT_PRESENT_OFFSET }, 23422 { 0x1fd8, 4989, UNICODE_NOT_PRESENT_OFFSET }, 23423 { 0x1fd9, 4994, UNICODE_NOT_PRESENT_OFFSET }, 23424 { 0x1fda, 4999, UNICODE_NOT_PRESENT_OFFSET }, 23425 { 0x1fdb, 1279, UNICODE_NOT_PRESENT_OFFSET }, 23426 { 0x1fdd, 5004, 5010 }, 23427 { 0x1fde, 5016, 5022 }, 23428 { 0x1fdf, 5028, 5034 }, 23429 { 0x1fe0, 5040, UNICODE_NOT_PRESENT_OFFSET }, 23430 { 0x1fe1, 5045, UNICODE_NOT_PRESENT_OFFSET }, 23431 { 0x1fe2, 5050, UNICODE_NOT_PRESENT_OFFSET }, 23432 { 0x1fe3, 1336, UNICODE_NOT_PRESENT_OFFSET }, 23433 { 0x1fe4, 5057, UNICODE_NOT_PRESENT_OFFSET }, 23434 { 0x1fe5, 5062, UNICODE_NOT_PRESENT_OFFSET }, 23435 { 0x1fe6, 5067, UNICODE_NOT_PRESENT_OFFSET }, 23436 { 0x1fe7, 5072, UNICODE_NOT_PRESENT_OFFSET }, 23437 { 0x1fe8, 5079, UNICODE_NOT_PRESENT_OFFSET }, 23438 { 0x1fe9, 5084, UNICODE_NOT_PRESENT_OFFSET }, 23439 { 0x1fea, 5089, UNICODE_NOT_PRESENT_OFFSET }, 23440 { 0x1feb, 1289, UNICODE_NOT_PRESENT_OFFSET }, 23441 { 0x1fec, 5094, UNICODE_NOT_PRESENT_OFFSET }, 23442 { 0x1fed, 5099, 5104 }, 23443 { 0x1fee, 1250, 1255 }, 23444 { 0x1fef, 5110, UNICODE_NOT_PRESENT_OFFSET }, 23445 { 0x1ff2, 5112, UNICODE_NOT_PRESENT_OFFSET }, 23446 { 0x1ff3, 5119, UNICODE_NOT_PRESENT_OFFSET }, 23447 { 0x1ff4, 5124, UNICODE_NOT_PRESENT_OFFSET }, 23448 { 0x1ff6, 5131, UNICODE_NOT_PRESENT_OFFSET }, 23449 { 0x1ff7, 5136, UNICODE_NOT_PRESENT_OFFSET }, 23450 { 0x1ff8, 5143, UNICODE_NOT_PRESENT_OFFSET }, 23451 { 0x1ff9, 1284, UNICODE_NOT_PRESENT_OFFSET }, 23452 { 0x1ffa, 5148, UNICODE_NOT_PRESENT_OFFSET }, 23453 { 0x1ffb, 1294, UNICODE_NOT_PRESENT_OFFSET }, 23454 { 0x1ffc, 5153, UNICODE_NOT_PRESENT_OFFSET }, 23455 { 0x1ffd, 5158, 16 }, 23456 { 0x1ffe, UNICODE_NOT_PRESENT_OFFSET, 5161 }, 23457 { 0x2000, 5165, 0 }, 23458 { 0x2001, 5169, 0 }, 23459 { 0x2002, UNICODE_NOT_PRESENT_OFFSET, 0 }, 23460 { 0x2003, UNICODE_NOT_PRESENT_OFFSET, 0 }, 23461 { 0x2004, UNICODE_NOT_PRESENT_OFFSET, 0 }, 23462 { 0x2005, UNICODE_NOT_PRESENT_OFFSET, 0 }, 23463 { 0x2006, UNICODE_NOT_PRESENT_OFFSET, 0 }, 23464 { 0x2007, UNICODE_NOT_PRESENT_OFFSET, 0 }, 23465 { 0x2008, UNICODE_NOT_PRESENT_OFFSET, 0 }, 23466 { 0x2009, UNICODE_NOT_PRESENT_OFFSET, 0 }, 23467 { 0x200a, UNICODE_NOT_PRESENT_OFFSET, 0 }, 23468 { 0x2011, UNICODE_NOT_PRESENT_OFFSET, 5173 }, 23469 { 0x2017, UNICODE_NOT_PRESENT_OFFSET, 5177 }, 23470 { 0x2024, UNICODE_NOT_PRESENT_OFFSET, 5181 }, 23471 { 0x2025, UNICODE_NOT_PRESENT_OFFSET, 5183 }, 23472 { 0x2026, UNICODE_NOT_PRESENT_OFFSET, 5186 }, 23473 { 0x202f, UNICODE_NOT_PRESENT_OFFSET, 0 }, 23474 { 0x2033, UNICODE_NOT_PRESENT_OFFSET, 5190 }, 23475 { 0x2034, UNICODE_NOT_PRESENT_OFFSET, 5197 }, 23476 { 0x2036, UNICODE_NOT_PRESENT_OFFSET, 5207 }, 23477 { 0x2037, UNICODE_NOT_PRESENT_OFFSET, 5214 }, 23478 { 0x203c, UNICODE_NOT_PRESENT_OFFSET, 5224 }, 23479 { 0x203e, UNICODE_NOT_PRESENT_OFFSET, 5227 }, 23480 { 0x2047, UNICODE_NOT_PRESENT_OFFSET, 5231 }, 23481 { 0x2048, UNICODE_NOT_PRESENT_OFFSET, 5234 }, 23482 { 0x2049, UNICODE_NOT_PRESENT_OFFSET, 5237 }, 23483 { 0x2057, UNICODE_NOT_PRESENT_OFFSET, 5240 }, 23484 { 0x205f, UNICODE_NOT_PRESENT_OFFSET, 0 }, 23485 { 0x2070, UNICODE_NOT_PRESENT_OFFSET, 5253 }, 23486 { 0x2071, UNICODE_NOT_PRESENT_OFFSET, 2427 }, 23487 { 0x2074, UNICODE_NOT_PRESENT_OFFSET, 5255 }, 23488 { 0x2075, UNICODE_NOT_PRESENT_OFFSET, 5257 }, 23489 { 0x2076, UNICODE_NOT_PRESENT_OFFSET, 5259 }, 23490 { 0x2077, UNICODE_NOT_PRESENT_OFFSET, 5261 }, 23491 { 0x2078, UNICODE_NOT_PRESENT_OFFSET, 5263 }, 23492 { 0x2079, UNICODE_NOT_PRESENT_OFFSET, 5265 }, 23493 { 0x207a, UNICODE_NOT_PRESENT_OFFSET, 5267 }, 23494 { 0x207b, UNICODE_NOT_PRESENT_OFFSET, 5269 }, 23495 { 0x207c, UNICODE_NOT_PRESENT_OFFSET, 5273 }, 23496 { 0x207d, UNICODE_NOT_PRESENT_OFFSET, 5275 }, 23497 { 0x207e, UNICODE_NOT_PRESENT_OFFSET, 5277 }, 23498 { 0x207f, UNICODE_NOT_PRESENT_OFFSET, 5279 }, 23499 { 0x2080, UNICODE_NOT_PRESENT_OFFSET, 5253 }, 23500 { 0x2081, UNICODE_NOT_PRESENT_OFFSET, 27 }, 23501 { 0x2082, UNICODE_NOT_PRESENT_OFFSET, 12 }, 23502 { 0x2083, UNICODE_NOT_PRESENT_OFFSET, 14 }, 23503 { 0x2084, UNICODE_NOT_PRESENT_OFFSET, 5255 }, 23504 { 0x2085, UNICODE_NOT_PRESENT_OFFSET, 5257 }, 23505 { 0x2086, UNICODE_NOT_PRESENT_OFFSET, 5259 }, 23506 { 0x2087, UNICODE_NOT_PRESENT_OFFSET, 5261 }, 23507 { 0x2088, UNICODE_NOT_PRESENT_OFFSET, 5263 }, 23508 { 0x2089, UNICODE_NOT_PRESENT_OFFSET, 5265 }, 23509 { 0x208a, UNICODE_NOT_PRESENT_OFFSET, 5267 }, 23510 { 0x208b, UNICODE_NOT_PRESENT_OFFSET, 5269 }, 23511 { 0x208c, UNICODE_NOT_PRESENT_OFFSET, 5273 }, 23512 { 0x208d, UNICODE_NOT_PRESENT_OFFSET, 5275 }, 23513 { 0x208e, UNICODE_NOT_PRESENT_OFFSET, 5277 }, 23514 { 0x2090, UNICODE_NOT_PRESENT_OFFSET, 6 }, 23515 { 0x2091, UNICODE_NOT_PRESENT_OFFSET, 2368 }, 23516 { 0x2092, UNICODE_NOT_PRESENT_OFFSET, 29 }, 23517 { 0x2093, UNICODE_NOT_PRESENT_OFFSET, 1222 }, 23518 { 0x2094, UNICODE_NOT_PRESENT_OFFSET, 2370 }, 23519 { 0x2095, UNICODE_NOT_PRESENT_OFFSET, 1171 }, 23520 { 0x2096, UNICODE_NOT_PRESENT_OFFSET, 2381 }, 23521 { 0x2097, UNICODE_NOT_PRESENT_OFFSET, 1220 }, 23522 { 0x2098, UNICODE_NOT_PRESENT_OFFSET, 2383 }, 23523 { 0x2099, UNICODE_NOT_PRESENT_OFFSET, 5279 }, 23524 { 0x209a, UNICODE_NOT_PRESENT_OFFSET, 2399 }, 23525 { 0x209b, UNICODE_NOT_PRESENT_OFFSET, 711 }, 23526 { 0x209c, UNICODE_NOT_PRESENT_OFFSET, 2401 }, 23527 { 0x20a8, UNICODE_NOT_PRESENT_OFFSET, 5281 }, 23528 { 0x2100, UNICODE_NOT_PRESENT_OFFSET, 5284 }, 23529 { 0x2101, UNICODE_NOT_PRESENT_OFFSET, 5288 }, 23530 { 0x2102, UNICODE_NOT_PRESENT_OFFSET, 5292 }, 23531 { 0x2103, UNICODE_NOT_PRESENT_OFFSET, 5294 }, 23532 { 0x2105, UNICODE_NOT_PRESENT_OFFSET, 5298 }, 23533 { 0x2106, UNICODE_NOT_PRESENT_OFFSET, 5302 }, 23534 { 0x2107, UNICODE_NOT_PRESENT_OFFSET, 5306 }, 23535 { 0x2109, UNICODE_NOT_PRESENT_OFFSET, 5309 }, 23536 { 0x210a, UNICODE_NOT_PRESENT_OFFSET, 2379 }, 23537 { 0x210b, UNICODE_NOT_PRESENT_OFFSET, 2325 }, 23538 { 0x210c, UNICODE_NOT_PRESENT_OFFSET, 2325 }, 23539 { 0x210d, UNICODE_NOT_PRESENT_OFFSET, 2325 }, 23540 { 0x210e, UNICODE_NOT_PRESENT_OFFSET, 1171 }, 23541 { 0x210f, UNICODE_NOT_PRESENT_OFFSET, 5313 }, 23542 { 0x2110, UNICODE_NOT_PRESENT_OFFSET, 2327 }, 23543 { 0x2111, UNICODE_NOT_PRESENT_OFFSET, 2327 }, 23544 { 0x2112, UNICODE_NOT_PRESENT_OFFSET, 2333 }, 23545 { 0x2113, UNICODE_NOT_PRESENT_OFFSET, 1220 }, 23546 { 0x2115, UNICODE_NOT_PRESENT_OFFSET, 2337 }, 23547 { 0x2116, UNICODE_NOT_PRESENT_OFFSET, 5316 }, 23548 { 0x2119, UNICODE_NOT_PRESENT_OFFSET, 2344 }, 23549 { 0x211a, UNICODE_NOT_PRESENT_OFFSET, 5319 }, 23550 { 0x211b, UNICODE_NOT_PRESENT_OFFSET, 2346 }, 23551 { 0x211c, UNICODE_NOT_PRESENT_OFFSET, 2346 }, 23552 { 0x211d, UNICODE_NOT_PRESENT_OFFSET, 2346 }, 23553 { 0x2120, UNICODE_NOT_PRESENT_OFFSET, 5321 }, 23554 { 0x2121, UNICODE_NOT_PRESENT_OFFSET, 5324 }, 23555 { 0x2122, UNICODE_NOT_PRESENT_OFFSET, 5328 }, 23556 { 0x2124, UNICODE_NOT_PRESENT_OFFSET, 5331 }, 23557 { 0x2126, 5333, UNICODE_NOT_PRESENT_OFFSET }, 23558 { 0x2128, UNICODE_NOT_PRESENT_OFFSET, 5331 }, 23559 { 0x212a, 2331, UNICODE_NOT_PRESENT_OFFSET }, 23560 { 0x212b, 69, UNICODE_NOT_PRESENT_OFFSET }, 23561 { 0x212c, UNICODE_NOT_PRESENT_OFFSET, 2314 }, 23562 { 0x212d, UNICODE_NOT_PRESENT_OFFSET, 5292 }, 23563 { 0x212f, UNICODE_NOT_PRESENT_OFFSET, 2368 }, 23564 { 0x2130, UNICODE_NOT_PRESENT_OFFSET, 2318 }, 23565 { 0x2131, UNICODE_NOT_PRESENT_OFFSET, 5336 }, 23566 { 0x2133, UNICODE_NOT_PRESENT_OFFSET, 2335 }, 23567 { 0x2134, UNICODE_NOT_PRESENT_OFFSET, 29 }, 23568 { 0x2135, UNICODE_NOT_PRESENT_OFFSET, 5338 }, 23569 { 0x2136, UNICODE_NOT_PRESENT_OFFSET, 5341 }, 23570 { 0x2137, UNICODE_NOT_PRESENT_OFFSET, 5344 }, 23571 { 0x2138, UNICODE_NOT_PRESENT_OFFSET, 5347 }, 23572 { 0x2139, UNICODE_NOT_PRESENT_OFFSET, 2427 }, 23573 { 0x213b, UNICODE_NOT_PRESENT_OFFSET, 5350 }, 23574 { 0x213c, UNICODE_NOT_PRESENT_OFFSET, 1390 }, 23575 { 0x213d, UNICODE_NOT_PRESENT_OFFSET, 2418 }, 23576 { 0x213e, UNICODE_NOT_PRESENT_OFFSET, 5354 }, 23577 { 0x213f, UNICODE_NOT_PRESENT_OFFSET, 5357 }, 23578 { 0x2140, UNICODE_NOT_PRESENT_OFFSET, 5360 }, 23579 { 0x2145, UNICODE_NOT_PRESENT_OFFSET, 2316 }, 23580 { 0x2146, UNICODE_NOT_PRESENT_OFFSET, 2366 }, 23581 { 0x2147, UNICODE_NOT_PRESENT_OFFSET, 2368 }, 23582 { 0x2148, UNICODE_NOT_PRESENT_OFFSET, 2427 }, 23583 { 0x2149, UNICODE_NOT_PRESENT_OFFSET, 1176 }, 23584 { 0x2150, UNICODE_NOT_PRESENT_OFFSET, 5364 }, 23585 { 0x2151, UNICODE_NOT_PRESENT_OFFSET, 5370 }, 23586 { 0x2152, UNICODE_NOT_PRESENT_OFFSET, 5376 }, 23587 { 0x2153, UNICODE_NOT_PRESENT_OFFSET, 5383 }, 23588 { 0x2154, UNICODE_NOT_PRESENT_OFFSET, 5389 }, 23589 { 0x2155, UNICODE_NOT_PRESENT_OFFSET, 5395 }, 23590 { 0x2156, UNICODE_NOT_PRESENT_OFFSET, 5401 }, 23591 { 0x2157, UNICODE_NOT_PRESENT_OFFSET, 5407 }, 23592 { 0x2158, UNICODE_NOT_PRESENT_OFFSET, 5413 }, 23593 { 0x2159, UNICODE_NOT_PRESENT_OFFSET, 5419 }, 23594 { 0x215a, UNICODE_NOT_PRESENT_OFFSET, 5425 }, 23595 { 0x215b, UNICODE_NOT_PRESENT_OFFSET, 5431 }, 23596 { 0x215c, UNICODE_NOT_PRESENT_OFFSET, 5437 }, 23597 { 0x215d, UNICODE_NOT_PRESENT_OFFSET, 5443 }, 23598 { 0x215e, UNICODE_NOT_PRESENT_OFFSET, 5449 }, 23599 { 0x215f, UNICODE_NOT_PRESENT_OFFSET, 5455 }, 23600 { 0x2160, UNICODE_NOT_PRESENT_OFFSET, 2327 }, 23601 { 0x2161, UNICODE_NOT_PRESENT_OFFSET, 5460 }, 23602 { 0x2162, UNICODE_NOT_PRESENT_OFFSET, 5463 }, 23603 { 0x2163, UNICODE_NOT_PRESENT_OFFSET, 5467 }, 23604 { 0x2164, UNICODE_NOT_PRESENT_OFFSET, 5470 }, 23605 { 0x2165, UNICODE_NOT_PRESENT_OFFSET, 5472 }, 23606 { 0x2166, UNICODE_NOT_PRESENT_OFFSET, 5475 }, 23607 { 0x2167, UNICODE_NOT_PRESENT_OFFSET, 5479 }, 23608 { 0x2168, UNICODE_NOT_PRESENT_OFFSET, 5484 }, 23609 { 0x2169, UNICODE_NOT_PRESENT_OFFSET, 5487 }, 23610 { 0x216a, UNICODE_NOT_PRESENT_OFFSET, 5489 }, 23611 { 0x216b, UNICODE_NOT_PRESENT_OFFSET, 5492 }, 23612 { 0x216c, UNICODE_NOT_PRESENT_OFFSET, 2333 }, 23613 { 0x216d, UNICODE_NOT_PRESENT_OFFSET, 5292 }, 23614 { 0x216e, UNICODE_NOT_PRESENT_OFFSET, 2316 }, 23615 { 0x216f, UNICODE_NOT_PRESENT_OFFSET, 2335 }, 23616 { 0x2170, UNICODE_NOT_PRESENT_OFFSET, 2427 }, 23617 { 0x2171, UNICODE_NOT_PRESENT_OFFSET, 5496 }, 23618 { 0x2172, UNICODE_NOT_PRESENT_OFFSET, 5499 }, 23619 { 0x2173, UNICODE_NOT_PRESENT_OFFSET, 5503 }, 23620 { 0x2174, UNICODE_NOT_PRESENT_OFFSET, 2412 }, 23621 { 0x2175, UNICODE_NOT_PRESENT_OFFSET, 5506 }, 23622 { 0x2176, UNICODE_NOT_PRESENT_OFFSET, 5509 }, 23623 { 0x2177, UNICODE_NOT_PRESENT_OFFSET, 5513 }, 23624 { 0x2178, UNICODE_NOT_PRESENT_OFFSET, 5518 }, 23625 { 0x2179, UNICODE_NOT_PRESENT_OFFSET, 1222 }, 23626 { 0x217a, UNICODE_NOT_PRESENT_OFFSET, 5521 }, 23627 { 0x217b, UNICODE_NOT_PRESENT_OFFSET, 5524 }, 23628 { 0x217c, UNICODE_NOT_PRESENT_OFFSET, 1220 }, 23629 { 0x217d, UNICODE_NOT_PRESENT_OFFSET, 2435 }, 23630 { 0x217e, UNICODE_NOT_PRESENT_OFFSET, 2366 }, 23631 { 0x217f, UNICODE_NOT_PRESENT_OFFSET, 2383 }, 23632 { 0x2189, UNICODE_NOT_PRESENT_OFFSET, 5528 }, 23633 { 0x219a, 5534, UNICODE_NOT_PRESENT_OFFSET }, 23634 { 0x219b, 5540, UNICODE_NOT_PRESENT_OFFSET }, 23635 { 0x21ae, 5546, UNICODE_NOT_PRESENT_OFFSET }, 23636 { 0x21cd, 5552, UNICODE_NOT_PRESENT_OFFSET }, 23637 { 0x21ce, 5558, UNICODE_NOT_PRESENT_OFFSET }, 23638 { 0x21cf, 5564, UNICODE_NOT_PRESENT_OFFSET }, 23639 { 0x2204, 5570, UNICODE_NOT_PRESENT_OFFSET }, 23640 { 0x2209, 5576, UNICODE_NOT_PRESENT_OFFSET }, 23641 { 0x220c, 5582, UNICODE_NOT_PRESENT_OFFSET }, 23642 { 0x2224, 5588, UNICODE_NOT_PRESENT_OFFSET }, 23643 { 0x2226, 5594, UNICODE_NOT_PRESENT_OFFSET }, 23644 { 0x222c, UNICODE_NOT_PRESENT_OFFSET, 5600 }, 23645 { 0x222d, UNICODE_NOT_PRESENT_OFFSET, 5607 }, 23646 { 0x222f, UNICODE_NOT_PRESENT_OFFSET, 5617 }, 23647 { 0x2230, UNICODE_NOT_PRESENT_OFFSET, 5624 }, 23648 { 0x2241, 5634, UNICODE_NOT_PRESENT_OFFSET }, 23649 { 0x2244, 5640, UNICODE_NOT_PRESENT_OFFSET }, 23650 { 0x2247, 5646, UNICODE_NOT_PRESENT_OFFSET }, 23651 { 0x2249, 5652, UNICODE_NOT_PRESENT_OFFSET }, 23652 { 0x2260, 5658, UNICODE_NOT_PRESENT_OFFSET }, 23653 { 0x2262, 5662, UNICODE_NOT_PRESENT_OFFSET }, 23654 { 0x226d, 5668, UNICODE_NOT_PRESENT_OFFSET }, 23655 { 0x226e, 5674, UNICODE_NOT_PRESENT_OFFSET }, 23656 { 0x226f, 5678, UNICODE_NOT_PRESENT_OFFSET }, 23657 { 0x2270, 5682, UNICODE_NOT_PRESENT_OFFSET }, 23658 { 0x2271, 5688, UNICODE_NOT_PRESENT_OFFSET }, 23659 { 0x2274, 5694, UNICODE_NOT_PRESENT_OFFSET }, 23660 { 0x2275, 5700, UNICODE_NOT_PRESENT_OFFSET }, 23661 { 0x2278, 5706, UNICODE_NOT_PRESENT_OFFSET }, 23662 { 0x2279, 5712, UNICODE_NOT_PRESENT_OFFSET }, 23663 { 0x2280, 5718, UNICODE_NOT_PRESENT_OFFSET }, 23664 { 0x2281, 5724, UNICODE_NOT_PRESENT_OFFSET }, 23665 { 0x2284, 5730, UNICODE_NOT_PRESENT_OFFSET }, 23666 { 0x2285, 5736, UNICODE_NOT_PRESENT_OFFSET }, 23667 { 0x2288, 5742, UNICODE_NOT_PRESENT_OFFSET }, 23668 { 0x2289, 5748, UNICODE_NOT_PRESENT_OFFSET }, 23669 { 0x22ac, 5754, UNICODE_NOT_PRESENT_OFFSET }, 23670 { 0x22ad, 5760, UNICODE_NOT_PRESENT_OFFSET }, 23671 { 0x22ae, 5766, UNICODE_NOT_PRESENT_OFFSET }, 23672 { 0x22af, 5772, UNICODE_NOT_PRESENT_OFFSET }, 23673 { 0x22e0, 5778, UNICODE_NOT_PRESENT_OFFSET }, 23674 { 0x22e1, 5784, UNICODE_NOT_PRESENT_OFFSET }, 23675 { 0x22e2, 5790, UNICODE_NOT_PRESENT_OFFSET }, 23676 { 0x22e3, 5796, UNICODE_NOT_PRESENT_OFFSET }, 23677 { 0x22ea, 5802, UNICODE_NOT_PRESENT_OFFSET }, 23678 { 0x22eb, 5808, UNICODE_NOT_PRESENT_OFFSET }, 23679 { 0x22ec, 5814, UNICODE_NOT_PRESENT_OFFSET }, 23680 { 0x22ed, 5820, UNICODE_NOT_PRESENT_OFFSET }, 23681 { 0x2329, 5826, UNICODE_NOT_PRESENT_OFFSET }, 23682 { 0x232a, 5830, UNICODE_NOT_PRESENT_OFFSET }, 23683 { 0x2460, UNICODE_NOT_PRESENT_OFFSET, 27 }, 23684 { 0x2461, UNICODE_NOT_PRESENT_OFFSET, 12 }, 23685 { 0x2462, UNICODE_NOT_PRESENT_OFFSET, 14 }, 23686 { 0x2463, UNICODE_NOT_PRESENT_OFFSET, 5255 }, 23687 { 0x2464, UNICODE_NOT_PRESENT_OFFSET, 5257 }, 23688 { 0x2465, UNICODE_NOT_PRESENT_OFFSET, 5259 }, 23689 { 0x2466, UNICODE_NOT_PRESENT_OFFSET, 5261 }, 23690 { 0x2467, UNICODE_NOT_PRESENT_OFFSET, 5263 }, 23691 { 0x2468, UNICODE_NOT_PRESENT_OFFSET, 5265 }, 23692 { 0x2469, UNICODE_NOT_PRESENT_OFFSET, 5834 }, 23693 { 0x246a, UNICODE_NOT_PRESENT_OFFSET, 5837 }, 23694 { 0x246b, UNICODE_NOT_PRESENT_OFFSET, 5840 }, 23695 { 0x246c, UNICODE_NOT_PRESENT_OFFSET, 5843 }, 23696 { 0x246d, UNICODE_NOT_PRESENT_OFFSET, 5846 }, 23697 { 0x246e, UNICODE_NOT_PRESENT_OFFSET, 5849 }, 23698 { 0x246f, UNICODE_NOT_PRESENT_OFFSET, 5852 }, 23699 { 0x2470, UNICODE_NOT_PRESENT_OFFSET, 5855 }, 23700 { 0x2471, UNICODE_NOT_PRESENT_OFFSET, 5858 }, 23701 { 0x2472, UNICODE_NOT_PRESENT_OFFSET, 5861 }, 23702 { 0x2473, UNICODE_NOT_PRESENT_OFFSET, 5864 }, 23703 { 0x2474, UNICODE_NOT_PRESENT_OFFSET, 5867 }, 23704 { 0x2475, UNICODE_NOT_PRESENT_OFFSET, 5871 }, 23705 { 0x2476, UNICODE_NOT_PRESENT_OFFSET, 5875 }, 23706 { 0x2477, UNICODE_NOT_PRESENT_OFFSET, 5879 }, 23707 { 0x2478, UNICODE_NOT_PRESENT_OFFSET, 5883 }, 23708 { 0x2479, UNICODE_NOT_PRESENT_OFFSET, 5887 }, 23709 { 0x247a, UNICODE_NOT_PRESENT_OFFSET, 5891 }, 23710 { 0x247b, UNICODE_NOT_PRESENT_OFFSET, 5895 }, 23711 { 0x247c, UNICODE_NOT_PRESENT_OFFSET, 5899 }, 23712 { 0x247d, UNICODE_NOT_PRESENT_OFFSET, 5903 }, 23713 { 0x247e, UNICODE_NOT_PRESENT_OFFSET, 5908 }, 23714 { 0x247f, UNICODE_NOT_PRESENT_OFFSET, 5913 }, 23715 { 0x2480, UNICODE_NOT_PRESENT_OFFSET, 5918 }, 23716 { 0x2481, UNICODE_NOT_PRESENT_OFFSET, 5923 }, 23717 { 0x2482, UNICODE_NOT_PRESENT_OFFSET, 5928 }, 23718 { 0x2483, UNICODE_NOT_PRESENT_OFFSET, 5933 }, 23719 { 0x2484, UNICODE_NOT_PRESENT_OFFSET, 5938 }, 23720 { 0x2485, UNICODE_NOT_PRESENT_OFFSET, 5943 }, 23721 { 0x2486, UNICODE_NOT_PRESENT_OFFSET, 5948 }, 23722 { 0x2487, UNICODE_NOT_PRESENT_OFFSET, 5953 }, 23723 { 0x2488, UNICODE_NOT_PRESENT_OFFSET, 5958 }, 23724 { 0x2489, UNICODE_NOT_PRESENT_OFFSET, 5961 }, 23725 { 0x248a, UNICODE_NOT_PRESENT_OFFSET, 5964 }, 23726 { 0x248b, UNICODE_NOT_PRESENT_OFFSET, 5967 }, 23727 { 0x248c, UNICODE_NOT_PRESENT_OFFSET, 5970 }, 23728 { 0x248d, UNICODE_NOT_PRESENT_OFFSET, 5973 }, 23729 { 0x248e, UNICODE_NOT_PRESENT_OFFSET, 5976 }, 23730 { 0x248f, UNICODE_NOT_PRESENT_OFFSET, 5979 }, 23731 { 0x2490, UNICODE_NOT_PRESENT_OFFSET, 5982 }, 23732 { 0x2491, UNICODE_NOT_PRESENT_OFFSET, 5985 }, 23733 { 0x2492, UNICODE_NOT_PRESENT_OFFSET, 5989 }, 23734 { 0x2493, UNICODE_NOT_PRESENT_OFFSET, 5993 }, 23735 { 0x2494, UNICODE_NOT_PRESENT_OFFSET, 5997 }, 23736 { 0x2495, UNICODE_NOT_PRESENT_OFFSET, 6001 }, 23737 { 0x2496, UNICODE_NOT_PRESENT_OFFSET, 6005 }, 23738 { 0x2497, UNICODE_NOT_PRESENT_OFFSET, 6009 }, 23739 { 0x2498, UNICODE_NOT_PRESENT_OFFSET, 6013 }, 23740 { 0x2499, UNICODE_NOT_PRESENT_OFFSET, 6017 }, 23741 { 0x249a, UNICODE_NOT_PRESENT_OFFSET, 6021 }, 23742 { 0x249b, UNICODE_NOT_PRESENT_OFFSET, 6025 }, 23743 { 0x249c, UNICODE_NOT_PRESENT_OFFSET, 6029 }, 23744 { 0x249d, UNICODE_NOT_PRESENT_OFFSET, 6033 }, 23745 { 0x249e, UNICODE_NOT_PRESENT_OFFSET, 6037 }, 23746 { 0x249f, UNICODE_NOT_PRESENT_OFFSET, 6041 }, 23747 { 0x24a0, UNICODE_NOT_PRESENT_OFFSET, 6045 }, 23748 { 0x24a1, UNICODE_NOT_PRESENT_OFFSET, 6049 }, 23749 { 0x24a2, UNICODE_NOT_PRESENT_OFFSET, 6053 }, 23750 { 0x24a3, UNICODE_NOT_PRESENT_OFFSET, 6057 }, 23751 { 0x24a4, UNICODE_NOT_PRESENT_OFFSET, 6061 }, 23752 { 0x24a5, UNICODE_NOT_PRESENT_OFFSET, 6065 }, 23753 { 0x24a6, UNICODE_NOT_PRESENT_OFFSET, 6069 }, 23754 { 0x24a7, UNICODE_NOT_PRESENT_OFFSET, 6073 }, 23755 { 0x24a8, UNICODE_NOT_PRESENT_OFFSET, 6077 }, 23756 { 0x24a9, UNICODE_NOT_PRESENT_OFFSET, 6081 }, 23757 { 0x24aa, UNICODE_NOT_PRESENT_OFFSET, 6085 }, 23758 { 0x24ab, UNICODE_NOT_PRESENT_OFFSET, 6089 }, 23759 { 0x24ac, UNICODE_NOT_PRESENT_OFFSET, 6093 }, 23760 { 0x24ad, UNICODE_NOT_PRESENT_OFFSET, 6097 }, 23761 { 0x24ae, UNICODE_NOT_PRESENT_OFFSET, 6101 }, 23762 { 0x24af, UNICODE_NOT_PRESENT_OFFSET, 6105 }, 23763 { 0x24b0, UNICODE_NOT_PRESENT_OFFSET, 6109 }, 23764 { 0x24b1, UNICODE_NOT_PRESENT_OFFSET, 6113 }, 23765 { 0x24b2, UNICODE_NOT_PRESENT_OFFSET, 6117 }, 23766 { 0x24b3, UNICODE_NOT_PRESENT_OFFSET, 6121 }, 23767 { 0x24b4, UNICODE_NOT_PRESENT_OFFSET, 6125 }, 23768 { 0x24b5, UNICODE_NOT_PRESENT_OFFSET, 6129 }, 23769 { 0x24b6, UNICODE_NOT_PRESENT_OFFSET, 2309 }, 23770 { 0x24b7, UNICODE_NOT_PRESENT_OFFSET, 2314 }, 23771 { 0x24b8, UNICODE_NOT_PRESENT_OFFSET, 5292 }, 23772 { 0x24b9, UNICODE_NOT_PRESENT_OFFSET, 2316 }, 23773 { 0x24ba, UNICODE_NOT_PRESENT_OFFSET, 2318 }, 23774 { 0x24bb, UNICODE_NOT_PRESENT_OFFSET, 5336 }, 23775 { 0x24bc, UNICODE_NOT_PRESENT_OFFSET, 2323 }, 23776 { 0x24bd, UNICODE_NOT_PRESENT_OFFSET, 2325 }, 23777 { 0x24be, UNICODE_NOT_PRESENT_OFFSET, 2327 }, 23778 { 0x24bf, UNICODE_NOT_PRESENT_OFFSET, 2329 }, 23779 { 0x24c0, UNICODE_NOT_PRESENT_OFFSET, 2331 }, 23780 { 0x24c1, UNICODE_NOT_PRESENT_OFFSET, 2333 }, 23781 { 0x24c2, UNICODE_NOT_PRESENT_OFFSET, 2335 }, 23782 { 0x24c3, UNICODE_NOT_PRESENT_OFFSET, 2337 }, 23783 { 0x24c4, UNICODE_NOT_PRESENT_OFFSET, 2339 }, 23784 { 0x24c5, UNICODE_NOT_PRESENT_OFFSET, 2344 }, 23785 { 0x24c6, UNICODE_NOT_PRESENT_OFFSET, 5319 }, 23786 { 0x24c7, UNICODE_NOT_PRESENT_OFFSET, 2346 }, 23787 { 0x24c8, UNICODE_NOT_PRESENT_OFFSET, 6133 }, 23788 { 0x24c9, UNICODE_NOT_PRESENT_OFFSET, 2348 }, 23789 { 0x24ca, UNICODE_NOT_PRESENT_OFFSET, 2350 }, 23790 { 0x24cb, UNICODE_NOT_PRESENT_OFFSET, 5470 }, 23791 { 0x24cc, UNICODE_NOT_PRESENT_OFFSET, 2352 }, 23792 { 0x24cd, UNICODE_NOT_PRESENT_OFFSET, 5487 }, 23793 { 0x24ce, UNICODE_NOT_PRESENT_OFFSET, 6135 }, 23794 { 0x24cf, UNICODE_NOT_PRESENT_OFFSET, 5331 }, 23795 { 0x24d0, UNICODE_NOT_PRESENT_OFFSET, 6 }, 23796 { 0x24d1, UNICODE_NOT_PRESENT_OFFSET, 2364 }, 23797 { 0x24d2, UNICODE_NOT_PRESENT_OFFSET, 2435 }, 23798 { 0x24d3, UNICODE_NOT_PRESENT_OFFSET, 2366 }, 23799 { 0x24d4, UNICODE_NOT_PRESENT_OFFSET, 2368 }, 23800 { 0x24d5, UNICODE_NOT_PRESENT_OFFSET, 2443 }, 23801 { 0x24d6, UNICODE_NOT_PRESENT_OFFSET, 2379 }, 23802 { 0x24d7, UNICODE_NOT_PRESENT_OFFSET, 1171 }, 23803 { 0x24d8, UNICODE_NOT_PRESENT_OFFSET, 2427 }, 23804 { 0x24d9, UNICODE_NOT_PRESENT_OFFSET, 1176 }, 23805 { 0x24da, UNICODE_NOT_PRESENT_OFFSET, 2381 }, 23806 { 0x24db, UNICODE_NOT_PRESENT_OFFSET, 1220 }, 23807 { 0x24dc, UNICODE_NOT_PRESENT_OFFSET, 2383 }, 23808 { 0x24dd, UNICODE_NOT_PRESENT_OFFSET, 5279 }, 23809 { 0x24de, UNICODE_NOT_PRESENT_OFFSET, 29 }, 23810 { 0x24df, UNICODE_NOT_PRESENT_OFFSET, 2399 }, 23811 { 0x24e0, UNICODE_NOT_PRESENT_OFFSET, 6137 }, 23812 { 0x24e1, UNICODE_NOT_PRESENT_OFFSET, 1178 }, 23813 { 0x24e2, UNICODE_NOT_PRESENT_OFFSET, 711 }, 23814 { 0x24e3, UNICODE_NOT_PRESENT_OFFSET, 2401 }, 23815 { 0x24e4, UNICODE_NOT_PRESENT_OFFSET, 2403 }, 23816 { 0x24e5, UNICODE_NOT_PRESENT_OFFSET, 2412 }, 23817 { 0x24e6, UNICODE_NOT_PRESENT_OFFSET, 1189 }, 23818 { 0x24e7, UNICODE_NOT_PRESENT_OFFSET, 1222 }, 23819 { 0x24e8, UNICODE_NOT_PRESENT_OFFSET, 1191 }, 23820 { 0x24e9, UNICODE_NOT_PRESENT_OFFSET, 2526 }, 23821 { 0x24ea, UNICODE_NOT_PRESENT_OFFSET, 5253 }, 23822 { 0x2a0c, UNICODE_NOT_PRESENT_OFFSET, 6139 }, 23823 { 0x2a74, UNICODE_NOT_PRESENT_OFFSET, 6152 }, 23824 { 0x2a75, UNICODE_NOT_PRESENT_OFFSET, 6156 }, 23825 { 0x2a76, UNICODE_NOT_PRESENT_OFFSET, 6159 }, 23826 { 0x2adc, 6163, UNICODE_NOT_PRESENT_OFFSET }, 23827 { 0x2c7c, UNICODE_NOT_PRESENT_OFFSET, 1176 }, 23828 { 0x2c7d, UNICODE_NOT_PRESENT_OFFSET, 5470 }, 23829 { 0x2d6f, UNICODE_NOT_PRESENT_OFFSET, 6169 }, 23830 { 0x2e9f, UNICODE_NOT_PRESENT_OFFSET, 6173 }, 23831 { 0x2ef3, UNICODE_NOT_PRESENT_OFFSET, 6177 }, 23832 { 0x2f00, UNICODE_NOT_PRESENT_OFFSET, 6181 }, 23833 { 0x2f01, UNICODE_NOT_PRESENT_OFFSET, 6185 }, 23834 { 0x2f02, UNICODE_NOT_PRESENT_OFFSET, 6189 }, 23835 { 0x2f03, UNICODE_NOT_PRESENT_OFFSET, 6193 }, 23836 { 0x2f04, UNICODE_NOT_PRESENT_OFFSET, 6197 }, 23837 { 0x2f05, UNICODE_NOT_PRESENT_OFFSET, 6201 }, 23838 { 0x2f06, UNICODE_NOT_PRESENT_OFFSET, 6205 }, 23839 { 0x2f07, UNICODE_NOT_PRESENT_OFFSET, 6209 }, 23840 { 0x2f08, UNICODE_NOT_PRESENT_OFFSET, 6213 }, 23841 { 0x2f09, UNICODE_NOT_PRESENT_OFFSET, 6217 }, 23842 { 0x2f0a, UNICODE_NOT_PRESENT_OFFSET, 6221 }, 23843 { 0x2f0b, UNICODE_NOT_PRESENT_OFFSET, 6225 }, 23844 { 0x2f0c, UNICODE_NOT_PRESENT_OFFSET, 6229 }, 23845 { 0x2f0d, UNICODE_NOT_PRESENT_OFFSET, 6233 }, 23846 { 0x2f0e, UNICODE_NOT_PRESENT_OFFSET, 6237 }, 23847 { 0x2f0f, UNICODE_NOT_PRESENT_OFFSET, 6241 }, 23848 { 0x2f10, UNICODE_NOT_PRESENT_OFFSET, 6245 }, 23849 { 0x2f11, UNICODE_NOT_PRESENT_OFFSET, 6249 }, 23850 { 0x2f12, UNICODE_NOT_PRESENT_OFFSET, 6253 }, 23851 { 0x2f13, UNICODE_NOT_PRESENT_OFFSET, 6257 }, 23852 { 0x2f14, UNICODE_NOT_PRESENT_OFFSET, 6261 }, 23853 { 0x2f15, UNICODE_NOT_PRESENT_OFFSET, 6265 }, 23854 { 0x2f16, UNICODE_NOT_PRESENT_OFFSET, 6269 }, 23855 { 0x2f17, UNICODE_NOT_PRESENT_OFFSET, 6273 }, 23856 { 0x2f18, UNICODE_NOT_PRESENT_OFFSET, 6277 }, 23857 { 0x2f19, UNICODE_NOT_PRESENT_OFFSET, 6281 }, 23858 { 0x2f1a, UNICODE_NOT_PRESENT_OFFSET, 6285 }, 23859 { 0x2f1b, UNICODE_NOT_PRESENT_OFFSET, 6289 }, 23860 { 0x2f1c, UNICODE_NOT_PRESENT_OFFSET, 6293 }, 23861 { 0x2f1d, UNICODE_NOT_PRESENT_OFFSET, 6297 }, 23862 { 0x2f1e, UNICODE_NOT_PRESENT_OFFSET, 6301 }, 23863 { 0x2f1f, UNICODE_NOT_PRESENT_OFFSET, 6305 }, 23864 { 0x2f20, UNICODE_NOT_PRESENT_OFFSET, 6309 }, 23865 { 0x2f21, UNICODE_NOT_PRESENT_OFFSET, 6313 }, 23866 { 0x2f22, UNICODE_NOT_PRESENT_OFFSET, 6317 }, 23867 { 0x2f23, UNICODE_NOT_PRESENT_OFFSET, 6321 }, 23868 { 0x2f24, UNICODE_NOT_PRESENT_OFFSET, 6325 }, 23869 { 0x2f25, UNICODE_NOT_PRESENT_OFFSET, 6329 }, 23870 { 0x2f26, UNICODE_NOT_PRESENT_OFFSET, 6333 }, 23871 { 0x2f27, UNICODE_NOT_PRESENT_OFFSET, 6337 }, 23872 { 0x2f28, UNICODE_NOT_PRESENT_OFFSET, 6341 }, 23873 { 0x2f29, UNICODE_NOT_PRESENT_OFFSET, 6345 }, 23874 { 0x2f2a, UNICODE_NOT_PRESENT_OFFSET, 6349 }, 23875 { 0x2f2b, UNICODE_NOT_PRESENT_OFFSET, 6353 }, 23876 { 0x2f2c, UNICODE_NOT_PRESENT_OFFSET, 6357 }, 23877 { 0x2f2d, UNICODE_NOT_PRESENT_OFFSET, 6361 }, 23878 { 0x2f2e, UNICODE_NOT_PRESENT_OFFSET, 6365 }, 23879 { 0x2f2f, UNICODE_NOT_PRESENT_OFFSET, 6369 }, 23880 { 0x2f30, UNICODE_NOT_PRESENT_OFFSET, 6373 }, 23881 { 0x2f31, UNICODE_NOT_PRESENT_OFFSET, 6377 }, 23882 { 0x2f32, UNICODE_NOT_PRESENT_OFFSET, 6381 }, 23883 { 0x2f33, UNICODE_NOT_PRESENT_OFFSET, 6385 }, 23884 { 0x2f34, UNICODE_NOT_PRESENT_OFFSET, 6389 }, 23885 { 0x2f35, UNICODE_NOT_PRESENT_OFFSET, 6393 }, 23886 { 0x2f36, UNICODE_NOT_PRESENT_OFFSET, 6397 }, 23887 { 0x2f37, UNICODE_NOT_PRESENT_OFFSET, 6401 }, 23888 { 0x2f38, UNICODE_NOT_PRESENT_OFFSET, 6405 }, 23889 { 0x2f39, UNICODE_NOT_PRESENT_OFFSET, 6409 }, 23890 { 0x2f3a, UNICODE_NOT_PRESENT_OFFSET, 6413 }, 23891 { 0x2f3b, UNICODE_NOT_PRESENT_OFFSET, 6417 }, 23892 { 0x2f3c, UNICODE_NOT_PRESENT_OFFSET, 6421 }, 23893 { 0x2f3d, UNICODE_NOT_PRESENT_OFFSET, 6425 }, 23894 { 0x2f3e, UNICODE_NOT_PRESENT_OFFSET, 6429 }, 23895 { 0x2f3f, UNICODE_NOT_PRESENT_OFFSET, 6433 }, 23896 { 0x2f40, UNICODE_NOT_PRESENT_OFFSET, 6437 }, 23897 { 0x2f41, UNICODE_NOT_PRESENT_OFFSET, 6441 }, 23898 { 0x2f42, UNICODE_NOT_PRESENT_OFFSET, 6445 }, 23899 { 0x2f43, UNICODE_NOT_PRESENT_OFFSET, 6449 }, 23900 { 0x2f44, UNICODE_NOT_PRESENT_OFFSET, 6453 }, 23901 { 0x2f45, UNICODE_NOT_PRESENT_OFFSET, 6457 }, 23902 { 0x2f46, UNICODE_NOT_PRESENT_OFFSET, 6461 }, 23903 { 0x2f47, UNICODE_NOT_PRESENT_OFFSET, 6465 }, 23904 { 0x2f48, UNICODE_NOT_PRESENT_OFFSET, 6469 }, 23905 { 0x2f49, UNICODE_NOT_PRESENT_OFFSET, 6473 }, 23906 { 0x2f4a, UNICODE_NOT_PRESENT_OFFSET, 6477 }, 23907 { 0x2f4b, UNICODE_NOT_PRESENT_OFFSET, 6481 }, 23908 { 0x2f4c, UNICODE_NOT_PRESENT_OFFSET, 6485 }, 23909 { 0x2f4d, UNICODE_NOT_PRESENT_OFFSET, 6489 }, 23910 { 0x2f4e, UNICODE_NOT_PRESENT_OFFSET, 6493 }, 23911 { 0x2f4f, UNICODE_NOT_PRESENT_OFFSET, 6497 }, 23912 { 0x2f50, UNICODE_NOT_PRESENT_OFFSET, 6501 }, 23913 { 0x2f51, UNICODE_NOT_PRESENT_OFFSET, 6505 }, 23914 { 0x2f52, UNICODE_NOT_PRESENT_OFFSET, 6509 }, 23915 { 0x2f53, UNICODE_NOT_PRESENT_OFFSET, 6513 }, 23916 { 0x2f54, UNICODE_NOT_PRESENT_OFFSET, 6517 }, 23917 { 0x2f55, UNICODE_NOT_PRESENT_OFFSET, 6521 }, 23918 { 0x2f56, UNICODE_NOT_PRESENT_OFFSET, 6525 }, 23919 { 0x2f57, UNICODE_NOT_PRESENT_OFFSET, 6529 }, 23920 { 0x2f58, UNICODE_NOT_PRESENT_OFFSET, 6533 }, 23921 { 0x2f59, UNICODE_NOT_PRESENT_OFFSET, 6537 }, 23922 { 0x2f5a, UNICODE_NOT_PRESENT_OFFSET, 6541 }, 23923 { 0x2f5b, UNICODE_NOT_PRESENT_OFFSET, 6545 }, 23924 { 0x2f5c, UNICODE_NOT_PRESENT_OFFSET, 6549 }, 23925 { 0x2f5d, UNICODE_NOT_PRESENT_OFFSET, 6553 }, 23926 { 0x2f5e, UNICODE_NOT_PRESENT_OFFSET, 6557 }, 23927 { 0x2f5f, UNICODE_NOT_PRESENT_OFFSET, 6561 }, 23928 { 0x2f60, UNICODE_NOT_PRESENT_OFFSET, 6565 }, 23929 { 0x2f61, UNICODE_NOT_PRESENT_OFFSET, 6569 }, 23930 { 0x2f62, UNICODE_NOT_PRESENT_OFFSET, 6573 }, 23931 { 0x2f63, UNICODE_NOT_PRESENT_OFFSET, 6577 }, 23932 { 0x2f64, UNICODE_NOT_PRESENT_OFFSET, 6581 }, 23933 { 0x2f65, UNICODE_NOT_PRESENT_OFFSET, 6585 }, 23934 { 0x2f66, UNICODE_NOT_PRESENT_OFFSET, 6589 }, 23935 { 0x2f67, UNICODE_NOT_PRESENT_OFFSET, 6593 }, 23936 { 0x2f68, UNICODE_NOT_PRESENT_OFFSET, 6597 }, 23937 { 0x2f69, UNICODE_NOT_PRESENT_OFFSET, 6601 }, 23938 { 0x2f6a, UNICODE_NOT_PRESENT_OFFSET, 6605 }, 23939 { 0x2f6b, UNICODE_NOT_PRESENT_OFFSET, 6609 }, 23940 { 0x2f6c, UNICODE_NOT_PRESENT_OFFSET, 6613 }, 23941 { 0x2f6d, UNICODE_NOT_PRESENT_OFFSET, 6617 }, 23942 { 0x2f6e, UNICODE_NOT_PRESENT_OFFSET, 6621 }, 23943 { 0x2f6f, UNICODE_NOT_PRESENT_OFFSET, 6625 }, 23944 { 0x2f70, UNICODE_NOT_PRESENT_OFFSET, 6629 }, 23945 { 0x2f71, UNICODE_NOT_PRESENT_OFFSET, 6633 }, 23946 { 0x2f72, UNICODE_NOT_PRESENT_OFFSET, 6637 }, 23947 { 0x2f73, UNICODE_NOT_PRESENT_OFFSET, 6641 }, 23948 { 0x2f74, UNICODE_NOT_PRESENT_OFFSET, 6645 }, 23949 { 0x2f75, UNICODE_NOT_PRESENT_OFFSET, 6649 }, 23950 { 0x2f76, UNICODE_NOT_PRESENT_OFFSET, 6653 }, 23951 { 0x2f77, UNICODE_NOT_PRESENT_OFFSET, 6657 }, 23952 { 0x2f78, UNICODE_NOT_PRESENT_OFFSET, 6661 }, 23953 { 0x2f79, UNICODE_NOT_PRESENT_OFFSET, 6665 }, 23954 { 0x2f7a, UNICODE_NOT_PRESENT_OFFSET, 6669 }, 23955 { 0x2f7b, UNICODE_NOT_PRESENT_OFFSET, 6673 }, 23956 { 0x2f7c, UNICODE_NOT_PRESENT_OFFSET, 6677 }, 23957 { 0x2f7d, UNICODE_NOT_PRESENT_OFFSET, 6681 }, 23958 { 0x2f7e, UNICODE_NOT_PRESENT_OFFSET, 6685 }, 23959 { 0x2f7f, UNICODE_NOT_PRESENT_OFFSET, 6689 }, 23960 { 0x2f80, UNICODE_NOT_PRESENT_OFFSET, 6693 }, 23961 { 0x2f81, UNICODE_NOT_PRESENT_OFFSET, 6697 }, 23962 { 0x2f82, UNICODE_NOT_PRESENT_OFFSET, 6701 }, 23963 { 0x2f83, UNICODE_NOT_PRESENT_OFFSET, 6705 }, 23964 { 0x2f84, UNICODE_NOT_PRESENT_OFFSET, 6709 }, 23965 { 0x2f85, UNICODE_NOT_PRESENT_OFFSET, 6713 }, 23966 { 0x2f86, UNICODE_NOT_PRESENT_OFFSET, 6717 }, 23967 { 0x2f87, UNICODE_NOT_PRESENT_OFFSET, 6721 }, 23968 { 0x2f88, UNICODE_NOT_PRESENT_OFFSET, 6725 }, 23969 { 0x2f89, UNICODE_NOT_PRESENT_OFFSET, 6729 }, 23970 { 0x2f8a, UNICODE_NOT_PRESENT_OFFSET, 6733 }, 23971 { 0x2f8b, UNICODE_NOT_PRESENT_OFFSET, 6737 }, 23972 { 0x2f8c, UNICODE_NOT_PRESENT_OFFSET, 6741 }, 23973 { 0x2f8d, UNICODE_NOT_PRESENT_OFFSET, 6745 }, 23974 { 0x2f8e, UNICODE_NOT_PRESENT_OFFSET, 6749 }, 23975 { 0x2f8f, UNICODE_NOT_PRESENT_OFFSET, 6753 }, 23976 { 0x2f90, UNICODE_NOT_PRESENT_OFFSET, 6757 }, 23977 { 0x2f91, UNICODE_NOT_PRESENT_OFFSET, 6761 }, 23978 { 0x2f92, UNICODE_NOT_PRESENT_OFFSET, 6765 }, 23979 { 0x2f93, UNICODE_NOT_PRESENT_OFFSET, 6769 }, 23980 { 0x2f94, UNICODE_NOT_PRESENT_OFFSET, 6773 }, 23981 { 0x2f95, UNICODE_NOT_PRESENT_OFFSET, 6777 }, 23982 { 0x2f96, UNICODE_NOT_PRESENT_OFFSET, 6781 }, 23983 { 0x2f97, UNICODE_NOT_PRESENT_OFFSET, 6785 }, 23984 { 0x2f98, UNICODE_NOT_PRESENT_OFFSET, 6789 }, 23985 { 0x2f99, UNICODE_NOT_PRESENT_OFFSET, 6793 }, 23986 { 0x2f9a, UNICODE_NOT_PRESENT_OFFSET, 6797 }, 23987 { 0x2f9b, UNICODE_NOT_PRESENT_OFFSET, 6801 }, 23988 { 0x2f9c, UNICODE_NOT_PRESENT_OFFSET, 6805 }, 23989 { 0x2f9d, UNICODE_NOT_PRESENT_OFFSET, 6809 }, 23990 { 0x2f9e, UNICODE_NOT_PRESENT_OFFSET, 6813 }, 23991 { 0x2f9f, UNICODE_NOT_PRESENT_OFFSET, 6817 }, 23992 { 0x2fa0, UNICODE_NOT_PRESENT_OFFSET, 6821 }, 23993 { 0x2fa1, UNICODE_NOT_PRESENT_OFFSET, 6825 }, 23994 { 0x2fa2, UNICODE_NOT_PRESENT_OFFSET, 6829 }, 23995 { 0x2fa3, UNICODE_NOT_PRESENT_OFFSET, 6833 }, 23996 { 0x2fa4, UNICODE_NOT_PRESENT_OFFSET, 6837 }, 23997 { 0x2fa5, UNICODE_NOT_PRESENT_OFFSET, 6841 }, 23998 { 0x2fa6, UNICODE_NOT_PRESENT_OFFSET, 6845 }, 23999 { 0x2fa7, UNICODE_NOT_PRESENT_OFFSET, 6849 }, 24000 { 0x2fa8, UNICODE_NOT_PRESENT_OFFSET, 6853 }, 24001 { 0x2fa9, UNICODE_NOT_PRESENT_OFFSET, 6857 }, 24002 { 0x2faa, UNICODE_NOT_PRESENT_OFFSET, 6861 }, 24003 { 0x2fab, UNICODE_NOT_PRESENT_OFFSET, 6865 }, 24004 { 0x2fac, UNICODE_NOT_PRESENT_OFFSET, 6869 }, 24005 { 0x2fad, UNICODE_NOT_PRESENT_OFFSET, 6873 }, 24006 { 0x2fae, UNICODE_NOT_PRESENT_OFFSET, 6877 }, 24007 { 0x2faf, UNICODE_NOT_PRESENT_OFFSET, 6881 }, 24008 { 0x2fb0, UNICODE_NOT_PRESENT_OFFSET, 6885 }, 24009 { 0x2fb1, UNICODE_NOT_PRESENT_OFFSET, 6889 }, 24010 { 0x2fb2, UNICODE_NOT_PRESENT_OFFSET, 6893 }, 24011 { 0x2fb3, UNICODE_NOT_PRESENT_OFFSET, 6897 }, 24012 { 0x2fb4, UNICODE_NOT_PRESENT_OFFSET, 6901 }, 24013 { 0x2fb5, UNICODE_NOT_PRESENT_OFFSET, 6905 }, 24014 { 0x2fb6, UNICODE_NOT_PRESENT_OFFSET, 6909 }, 24015 { 0x2fb7, UNICODE_NOT_PRESENT_OFFSET, 6913 }, 24016 { 0x2fb8, UNICODE_NOT_PRESENT_OFFSET, 6917 }, 24017 { 0x2fb9, UNICODE_NOT_PRESENT_OFFSET, 6921 }, 24018 { 0x2fba, UNICODE_NOT_PRESENT_OFFSET, 6925 }, 24019 { 0x2fbb, UNICODE_NOT_PRESENT_OFFSET, 6929 }, 24020 { 0x2fbc, UNICODE_NOT_PRESENT_OFFSET, 6933 }, 24021 { 0x2fbd, UNICODE_NOT_PRESENT_OFFSET, 6937 }, 24022 { 0x2fbe, UNICODE_NOT_PRESENT_OFFSET, 6941 }, 24023 { 0x2fbf, UNICODE_NOT_PRESENT_OFFSET, 6945 }, 24024 { 0x2fc0, UNICODE_NOT_PRESENT_OFFSET, 6949 }, 24025 { 0x2fc1, UNICODE_NOT_PRESENT_OFFSET, 6953 }, 24026 { 0x2fc2, UNICODE_NOT_PRESENT_OFFSET, 6957 }, 24027 { 0x2fc3, UNICODE_NOT_PRESENT_OFFSET, 6961 }, 24028 { 0x2fc4, UNICODE_NOT_PRESENT_OFFSET, 6965 }, 24029 { 0x2fc5, UNICODE_NOT_PRESENT_OFFSET, 6969 }, 24030 { 0x2fc6, UNICODE_NOT_PRESENT_OFFSET, 6973 }, 24031 { 0x2fc7, UNICODE_NOT_PRESENT_OFFSET, 6977 }, 24032 { 0x2fc8, UNICODE_NOT_PRESENT_OFFSET, 6981 }, 24033 { 0x2fc9, UNICODE_NOT_PRESENT_OFFSET, 6985 }, 24034 { 0x2fca, UNICODE_NOT_PRESENT_OFFSET, 6989 }, 24035 { 0x2fcb, UNICODE_NOT_PRESENT_OFFSET, 6993 }, 24036 { 0x2fcc, UNICODE_NOT_PRESENT_OFFSET, 6997 }, 24037 { 0x2fcd, UNICODE_NOT_PRESENT_OFFSET, 7001 }, 24038 { 0x2fce, UNICODE_NOT_PRESENT_OFFSET, 7005 }, 24039 { 0x2fcf, UNICODE_NOT_PRESENT_OFFSET, 7009 }, 24040 { 0x2fd0, UNICODE_NOT_PRESENT_OFFSET, 7013 }, 24041 { 0x2fd1, UNICODE_NOT_PRESENT_OFFSET, 7017 }, 24042 { 0x2fd2, UNICODE_NOT_PRESENT_OFFSET, 7021 }, 24043 { 0x2fd3, UNICODE_NOT_PRESENT_OFFSET, 7025 }, 24044 { 0x2fd4, UNICODE_NOT_PRESENT_OFFSET, 7029 }, 24045 { 0x2fd5, UNICODE_NOT_PRESENT_OFFSET, 7033 }, 24046 { 0x3000, UNICODE_NOT_PRESENT_OFFSET, 0 }, 24047 { 0x3036, UNICODE_NOT_PRESENT_OFFSET, 7037 }, 24048 { 0x3038, UNICODE_NOT_PRESENT_OFFSET, 6273 }, 24049 { 0x3039, UNICODE_NOT_PRESENT_OFFSET, 7041 }, 24050 { 0x303a, UNICODE_NOT_PRESENT_OFFSET, 7045 }, 24051 { 0x304c, 7049, UNICODE_NOT_PRESENT_OFFSET }, 24052 { 0x304e, 7056, UNICODE_NOT_PRESENT_OFFSET }, 24053 { 0x3050, 7063, UNICODE_NOT_PRESENT_OFFSET }, 24054 { 0x3052, 7070, UNICODE_NOT_PRESENT_OFFSET }, 24055 { 0x3054, 7077, UNICODE_NOT_PRESENT_OFFSET }, 24056 { 0x3056, 7084, UNICODE_NOT_PRESENT_OFFSET }, 24057 { 0x3058, 7091, UNICODE_NOT_PRESENT_OFFSET }, 24058 { 0x305a, 7098, UNICODE_NOT_PRESENT_OFFSET }, 24059 { 0x305c, 7105, UNICODE_NOT_PRESENT_OFFSET }, 24060 { 0x305e, 7112, UNICODE_NOT_PRESENT_OFFSET }, 24061 { 0x3060, 7119, UNICODE_NOT_PRESENT_OFFSET }, 24062 { 0x3062, 7126, UNICODE_NOT_PRESENT_OFFSET }, 24063 { 0x3065, 7133, UNICODE_NOT_PRESENT_OFFSET }, 24064 { 0x3067, 7140, UNICODE_NOT_PRESENT_OFFSET }, 24065 { 0x3069, 7147, UNICODE_NOT_PRESENT_OFFSET }, 24066 { 0x3070, 7154, UNICODE_NOT_PRESENT_OFFSET }, 24067 { 0x3071, 7161, UNICODE_NOT_PRESENT_OFFSET }, 24068 { 0x3073, 7168, UNICODE_NOT_PRESENT_OFFSET }, 24069 { 0x3074, 7175, UNICODE_NOT_PRESENT_OFFSET }, 24070 { 0x3076, 7182, UNICODE_NOT_PRESENT_OFFSET }, 24071 { 0x3077, 7189, UNICODE_NOT_PRESENT_OFFSET }, 24072 { 0x3079, 7196, UNICODE_NOT_PRESENT_OFFSET }, 24073 { 0x307a, 7203, UNICODE_NOT_PRESENT_OFFSET }, 24074 { 0x307c, 7210, UNICODE_NOT_PRESENT_OFFSET }, 24075 { 0x307d, 7217, UNICODE_NOT_PRESENT_OFFSET }, 24076 { 0x3094, 7224, UNICODE_NOT_PRESENT_OFFSET }, 24077 { 0x309b, UNICODE_NOT_PRESENT_OFFSET, 7231 }, 24078 { 0x309c, UNICODE_NOT_PRESENT_OFFSET, 7236 }, 24079 { 0x309e, 7241, UNICODE_NOT_PRESENT_OFFSET }, 24080 { 0x309f, UNICODE_NOT_PRESENT_OFFSET, 7248 }, 24081 { 0x30ac, 7255, UNICODE_NOT_PRESENT_OFFSET }, 24082 { 0x30ae, 7262, UNICODE_NOT_PRESENT_OFFSET }, 24083 { 0x30b0, 7269, UNICODE_NOT_PRESENT_OFFSET }, 24084 { 0x30b2, 7276, UNICODE_NOT_PRESENT_OFFSET }, 24085 { 0x30b4, 7283, UNICODE_NOT_PRESENT_OFFSET }, 24086 { 0x30b6, 7290, UNICODE_NOT_PRESENT_OFFSET }, 24087 { 0x30b8, 7297, UNICODE_NOT_PRESENT_OFFSET }, 24088 { 0x30ba, 7304, UNICODE_NOT_PRESENT_OFFSET }, 24089 { 0x30bc, 7311, UNICODE_NOT_PRESENT_OFFSET }, 24090 { 0x30be, 7318, UNICODE_NOT_PRESENT_OFFSET }, 24091 { 0x30c0, 7325, UNICODE_NOT_PRESENT_OFFSET }, 24092 { 0x30c2, 7332, UNICODE_NOT_PRESENT_OFFSET }, 24093 { 0x30c5, 7339, UNICODE_NOT_PRESENT_OFFSET }, 24094 { 0x30c7, 7346, UNICODE_NOT_PRESENT_OFFSET }, 24095 { 0x30c9, 7353, UNICODE_NOT_PRESENT_OFFSET }, 24096 { 0x30d0, 7360, UNICODE_NOT_PRESENT_OFFSET }, 24097 { 0x30d1, 7367, UNICODE_NOT_PRESENT_OFFSET }, 24098 { 0x30d3, 7374, UNICODE_NOT_PRESENT_OFFSET }, 24099 { 0x30d4, 7381, UNICODE_NOT_PRESENT_OFFSET }, 24100 { 0x30d6, 7388, UNICODE_NOT_PRESENT_OFFSET }, 24101 { 0x30d7, 7395, UNICODE_NOT_PRESENT_OFFSET }, 24102 { 0x30d9, 7402, UNICODE_NOT_PRESENT_OFFSET }, 24103 { 0x30da, 7409, UNICODE_NOT_PRESENT_OFFSET }, 24104 { 0x30dc, 7416, UNICODE_NOT_PRESENT_OFFSET }, 24105 { 0x30dd, 7423, UNICODE_NOT_PRESENT_OFFSET }, 24106 { 0x30f4, 7430, UNICODE_NOT_PRESENT_OFFSET }, 24107 { 0x30f7, 7437, UNICODE_NOT_PRESENT_OFFSET }, 24108 { 0x30f8, 7444, UNICODE_NOT_PRESENT_OFFSET }, 24109 { 0x30f9, 7451, UNICODE_NOT_PRESENT_OFFSET }, 24110 { 0x30fa, 7458, UNICODE_NOT_PRESENT_OFFSET }, 24111 { 0x30fe, 7465, UNICODE_NOT_PRESENT_OFFSET }, 24112 { 0x30ff, UNICODE_NOT_PRESENT_OFFSET, 7472 }, 24113 { 0x3131, UNICODE_NOT_PRESENT_OFFSET, 7479 }, 24114 { 0x3132, UNICODE_NOT_PRESENT_OFFSET, 7483 }, 24115 { 0x3133, UNICODE_NOT_PRESENT_OFFSET, 7487 }, 24116 { 0x3134, UNICODE_NOT_PRESENT_OFFSET, 7491 }, 24117 { 0x3135, UNICODE_NOT_PRESENT_OFFSET, 7495 }, 24118 { 0x3136, UNICODE_NOT_PRESENT_OFFSET, 7499 }, 24119 { 0x3137, UNICODE_NOT_PRESENT_OFFSET, 7503 }, 24120 { 0x3138, UNICODE_NOT_PRESENT_OFFSET, 7507 }, 24121 { 0x3139, UNICODE_NOT_PRESENT_OFFSET, 7511 }, 24122 { 0x313a, UNICODE_NOT_PRESENT_OFFSET, 7515 }, 24123 { 0x313b, UNICODE_NOT_PRESENT_OFFSET, 7519 }, 24124 { 0x313c, UNICODE_NOT_PRESENT_OFFSET, 7523 }, 24125 { 0x313d, UNICODE_NOT_PRESENT_OFFSET, 7527 }, 24126 { 0x313e, UNICODE_NOT_PRESENT_OFFSET, 7531 }, 24127 { 0x313f, UNICODE_NOT_PRESENT_OFFSET, 7535 }, 24128 { 0x3140, UNICODE_NOT_PRESENT_OFFSET, 7539 }, 24129 { 0x3141, UNICODE_NOT_PRESENT_OFFSET, 7543 }, 24130 { 0x3142, UNICODE_NOT_PRESENT_OFFSET, 7547 }, 24131 { 0x3143, UNICODE_NOT_PRESENT_OFFSET, 7551 }, 24132 { 0x3144, UNICODE_NOT_PRESENT_OFFSET, 7555 }, 24133 { 0x3145, UNICODE_NOT_PRESENT_OFFSET, 7559 }, 24134 { 0x3146, UNICODE_NOT_PRESENT_OFFSET, 7563 }, 24135 { 0x3147, UNICODE_NOT_PRESENT_OFFSET, 7567 }, 24136 { 0x3148, UNICODE_NOT_PRESENT_OFFSET, 7571 }, 24137 { 0x3149, UNICODE_NOT_PRESENT_OFFSET, 7575 }, 24138 { 0x314a, UNICODE_NOT_PRESENT_OFFSET, 7579 }, 24139 { 0x314b, UNICODE_NOT_PRESENT_OFFSET, 7583 }, 24140 { 0x314c, UNICODE_NOT_PRESENT_OFFSET, 7587 }, 24141 { 0x314d, UNICODE_NOT_PRESENT_OFFSET, 7591 }, 24142 { 0x314e, UNICODE_NOT_PRESENT_OFFSET, 7595 }, 24143 { 0x314f, UNICODE_NOT_PRESENT_OFFSET, 7599 }, 24144 { 0x3150, UNICODE_NOT_PRESENT_OFFSET, 7603 }, 24145 { 0x3151, UNICODE_NOT_PRESENT_OFFSET, 7607 }, 24146 { 0x3152, UNICODE_NOT_PRESENT_OFFSET, 7611 }, 24147 { 0x3153, UNICODE_NOT_PRESENT_OFFSET, 7615 }, 24148 { 0x3154, UNICODE_NOT_PRESENT_OFFSET, 7619 }, 24149 { 0x3155, UNICODE_NOT_PRESENT_OFFSET, 7623 }, 24150 { 0x3156, UNICODE_NOT_PRESENT_OFFSET, 7627 }, 24151 { 0x3157, UNICODE_NOT_PRESENT_OFFSET, 7631 }, 24152 { 0x3158, UNICODE_NOT_PRESENT_OFFSET, 7635 }, 24153 { 0x3159, UNICODE_NOT_PRESENT_OFFSET, 7639 }, 24154 { 0x315a, UNICODE_NOT_PRESENT_OFFSET, 7643 }, 24155 { 0x315b, UNICODE_NOT_PRESENT_OFFSET, 7647 }, 24156 { 0x315c, UNICODE_NOT_PRESENT_OFFSET, 7651 }, 24157 { 0x315d, UNICODE_NOT_PRESENT_OFFSET, 7655 }, 24158 { 0x315e, UNICODE_NOT_PRESENT_OFFSET, 7659 }, 24159 { 0x315f, UNICODE_NOT_PRESENT_OFFSET, 7663 }, 24160 { 0x3160, UNICODE_NOT_PRESENT_OFFSET, 7667 }, 24161 { 0x3161, UNICODE_NOT_PRESENT_OFFSET, 7671 }, 24162 { 0x3162, UNICODE_NOT_PRESENT_OFFSET, 7675 }, 24163 { 0x3163, UNICODE_NOT_PRESENT_OFFSET, 7679 }, 24164 { 0x3164, UNICODE_NOT_PRESENT_OFFSET, 7683 }, 24165 { 0x3165, UNICODE_NOT_PRESENT_OFFSET, 7687 }, 24166 { 0x3166, UNICODE_NOT_PRESENT_OFFSET, 7691 }, 24167 { 0x3167, UNICODE_NOT_PRESENT_OFFSET, 7695 }, 24168 { 0x3168, UNICODE_NOT_PRESENT_OFFSET, 7699 }, 24169 { 0x3169, UNICODE_NOT_PRESENT_OFFSET, 7703 }, 24170 { 0x316a, UNICODE_NOT_PRESENT_OFFSET, 7707 }, 24171 { 0x316b, UNICODE_NOT_PRESENT_OFFSET, 7711 }, 24172 { 0x316c, UNICODE_NOT_PRESENT_OFFSET, 7715 }, 24173 { 0x316d, UNICODE_NOT_PRESENT_OFFSET, 7719 }, 24174 { 0x316e, UNICODE_NOT_PRESENT_OFFSET, 7723 }, 24175 { 0x316f, UNICODE_NOT_PRESENT_OFFSET, 7727 }, 24176 { 0x3170, UNICODE_NOT_PRESENT_OFFSET, 7731 }, 24177 { 0x3171, UNICODE_NOT_PRESENT_OFFSET, 7735 }, 24178 { 0x3172, UNICODE_NOT_PRESENT_OFFSET, 7739 }, 24179 { 0x3173, UNICODE_NOT_PRESENT_OFFSET, 7743 }, 24180 { 0x3174, UNICODE_NOT_PRESENT_OFFSET, 7747 }, 24181 { 0x3175, UNICODE_NOT_PRESENT_OFFSET, 7751 }, 24182 { 0x3176, UNICODE_NOT_PRESENT_OFFSET, 7755 }, 24183 { 0x3177, UNICODE_NOT_PRESENT_OFFSET, 7759 }, 24184 { 0x3178, UNICODE_NOT_PRESENT_OFFSET, 7763 }, 24185 { 0x3179, UNICODE_NOT_PRESENT_OFFSET, 7767 }, 24186 { 0x317a, UNICODE_NOT_PRESENT_OFFSET, 7771 }, 24187 { 0x317b, UNICODE_NOT_PRESENT_OFFSET, 7775 }, 24188 { 0x317c, UNICODE_NOT_PRESENT_OFFSET, 7779 }, 24189 { 0x317d, UNICODE_NOT_PRESENT_OFFSET, 7783 }, 24190 { 0x317e, UNICODE_NOT_PRESENT_OFFSET, 7787 }, 24191 { 0x317f, UNICODE_NOT_PRESENT_OFFSET, 7791 }, 24192 { 0x3180, UNICODE_NOT_PRESENT_OFFSET, 7795 }, 24193 { 0x3181, UNICODE_NOT_PRESENT_OFFSET, 7799 }, 24194 { 0x3182, UNICODE_NOT_PRESENT_OFFSET, 7803 }, 24195 { 0x3183, UNICODE_NOT_PRESENT_OFFSET, 7807 }, 24196 { 0x3184, UNICODE_NOT_PRESENT_OFFSET, 7811 }, 24197 { 0x3185, UNICODE_NOT_PRESENT_OFFSET, 7815 }, 24198 { 0x3186, UNICODE_NOT_PRESENT_OFFSET, 7819 }, 24199 { 0x3187, UNICODE_NOT_PRESENT_OFFSET, 7823 }, 24200 { 0x3188, UNICODE_NOT_PRESENT_OFFSET, 7827 }, 24201 { 0x3189, UNICODE_NOT_PRESENT_OFFSET, 7831 }, 24202 { 0x318a, UNICODE_NOT_PRESENT_OFFSET, 7835 }, 24203 { 0x318b, UNICODE_NOT_PRESENT_OFFSET, 7839 }, 24204 { 0x318c, UNICODE_NOT_PRESENT_OFFSET, 7843 }, 24205 { 0x318d, UNICODE_NOT_PRESENT_OFFSET, 7847 }, 24206 { 0x318e, UNICODE_NOT_PRESENT_OFFSET, 7851 }, 24207 { 0x3192, UNICODE_NOT_PRESENT_OFFSET, 6181 }, 24208 { 0x3193, UNICODE_NOT_PRESENT_OFFSET, 6205 }, 24209 { 0x3194, UNICODE_NOT_PRESENT_OFFSET, 7855 }, 24210 { 0x3195, UNICODE_NOT_PRESENT_OFFSET, 7859 }, 24211 { 0x3196, UNICODE_NOT_PRESENT_OFFSET, 7863 }, 24212 { 0x3197, UNICODE_NOT_PRESENT_OFFSET, 7867 }, 24213 { 0x3198, UNICODE_NOT_PRESENT_OFFSET, 7871 }, 24214 { 0x3199, UNICODE_NOT_PRESENT_OFFSET, 7875 }, 24215 { 0x319a, UNICODE_NOT_PRESENT_OFFSET, 6197 }, 24216 { 0x319b, UNICODE_NOT_PRESENT_OFFSET, 7879 }, 24217 { 0x319c, UNICODE_NOT_PRESENT_OFFSET, 7883 }, 24218 { 0x319d, UNICODE_NOT_PRESENT_OFFSET, 7887 }, 24219 { 0x319e, UNICODE_NOT_PRESENT_OFFSET, 7891 }, 24220 { 0x319f, UNICODE_NOT_PRESENT_OFFSET, 6213 }, 24221 { 0x3200, UNICODE_NOT_PRESENT_OFFSET, 7895 }, 24222 { 0x3201, UNICODE_NOT_PRESENT_OFFSET, 7901 }, 24223 { 0x3202, UNICODE_NOT_PRESENT_OFFSET, 7907 }, 24224 { 0x3203, UNICODE_NOT_PRESENT_OFFSET, 7913 }, 24225 { 0x3204, UNICODE_NOT_PRESENT_OFFSET, 7919 }, 24226 { 0x3205, UNICODE_NOT_PRESENT_OFFSET, 7925 }, 24227 { 0x3206, UNICODE_NOT_PRESENT_OFFSET, 7931 }, 24228 { 0x3207, UNICODE_NOT_PRESENT_OFFSET, 7937 }, 24229 { 0x3208, UNICODE_NOT_PRESENT_OFFSET, 7943 }, 24230 { 0x3209, UNICODE_NOT_PRESENT_OFFSET, 7949 }, 24231 { 0x320a, UNICODE_NOT_PRESENT_OFFSET, 7955 }, 24232 { 0x320b, UNICODE_NOT_PRESENT_OFFSET, 7961 }, 24233 { 0x320c, UNICODE_NOT_PRESENT_OFFSET, 7967 }, 24234 { 0x320d, UNICODE_NOT_PRESENT_OFFSET, 7973 }, 24235 { 0x320e, UNICODE_NOT_PRESENT_OFFSET, 7979 }, 24236 { 0x320f, UNICODE_NOT_PRESENT_OFFSET, 7988 }, 24237 { 0x3210, UNICODE_NOT_PRESENT_OFFSET, 7997 }, 24238 { 0x3211, UNICODE_NOT_PRESENT_OFFSET, 8006 }, 24239 { 0x3212, UNICODE_NOT_PRESENT_OFFSET, 8015 }, 24240 { 0x3213, UNICODE_NOT_PRESENT_OFFSET, 8024 }, 24241 { 0x3214, UNICODE_NOT_PRESENT_OFFSET, 8033 }, 24242 { 0x3215, UNICODE_NOT_PRESENT_OFFSET, 8042 }, 24243 { 0x3216, UNICODE_NOT_PRESENT_OFFSET, 8051 }, 24244 { 0x3217, UNICODE_NOT_PRESENT_OFFSET, 8060 }, 24245 { 0x3218, UNICODE_NOT_PRESENT_OFFSET, 8069 }, 24246 { 0x3219, UNICODE_NOT_PRESENT_OFFSET, 8078 }, 24247 { 0x321a, UNICODE_NOT_PRESENT_OFFSET, 8087 }, 24248 { 0x321b, UNICODE_NOT_PRESENT_OFFSET, 8096 }, 24249 { 0x321c, UNICODE_NOT_PRESENT_OFFSET, 8105 }, 24250 { 0x321d, UNICODE_NOT_PRESENT_OFFSET, 8114 }, 24251 { 0x321e, UNICODE_NOT_PRESENT_OFFSET, 8132 }, 24252 { 0x3220, UNICODE_NOT_PRESENT_OFFSET, 8147 }, 24253 { 0x3221, UNICODE_NOT_PRESENT_OFFSET, 8153 }, 24254 { 0x3222, UNICODE_NOT_PRESENT_OFFSET, 8159 }, 24255 { 0x3223, UNICODE_NOT_PRESENT_OFFSET, 8165 }, 24256 { 0x3224, UNICODE_NOT_PRESENT_OFFSET, 8171 }, 24257 { 0x3225, UNICODE_NOT_PRESENT_OFFSET, 8177 }, 24258 { 0x3226, UNICODE_NOT_PRESENT_OFFSET, 8183 }, 24259 { 0x3227, UNICODE_NOT_PRESENT_OFFSET, 8189 }, 24260 { 0x3228, UNICODE_NOT_PRESENT_OFFSET, 8195 }, 24261 { 0x3229, UNICODE_NOT_PRESENT_OFFSET, 8201 }, 24262 { 0x322a, UNICODE_NOT_PRESENT_OFFSET, 8207 }, 24263 { 0x322b, UNICODE_NOT_PRESENT_OFFSET, 8213 }, 24264 { 0x322c, UNICODE_NOT_PRESENT_OFFSET, 8219 }, 24265 { 0x322d, UNICODE_NOT_PRESENT_OFFSET, 8225 }, 24266 { 0x322e, UNICODE_NOT_PRESENT_OFFSET, 8231 }, 24267 { 0x322f, UNICODE_NOT_PRESENT_OFFSET, 8237 }, 24268 { 0x3230, UNICODE_NOT_PRESENT_OFFSET, 8243 }, 24269 { 0x3231, UNICODE_NOT_PRESENT_OFFSET, 8249 }, 24270 { 0x3232, UNICODE_NOT_PRESENT_OFFSET, 8255 }, 24271 { 0x3233, UNICODE_NOT_PRESENT_OFFSET, 8261 }, 24272 { 0x3234, UNICODE_NOT_PRESENT_OFFSET, 8267 }, 24273 { 0x3235, UNICODE_NOT_PRESENT_OFFSET, 8273 }, 24274 { 0x3236, UNICODE_NOT_PRESENT_OFFSET, 8279 }, 24275 { 0x3237, UNICODE_NOT_PRESENT_OFFSET, 8285 }, 24276 { 0x3238, UNICODE_NOT_PRESENT_OFFSET, 8291 }, 24277 { 0x3239, UNICODE_NOT_PRESENT_OFFSET, 8297 }, 24278 { 0x323a, UNICODE_NOT_PRESENT_OFFSET, 8303 }, 24279 { 0x323b, UNICODE_NOT_PRESENT_OFFSET, 8309 }, 24280 { 0x323c, UNICODE_NOT_PRESENT_OFFSET, 8315 }, 24281 { 0x323d, UNICODE_NOT_PRESENT_OFFSET, 8321 }, 24282 { 0x323e, UNICODE_NOT_PRESENT_OFFSET, 8327 }, 24283 { 0x323f, UNICODE_NOT_PRESENT_OFFSET, 8333 }, 24284 { 0x3240, UNICODE_NOT_PRESENT_OFFSET, 8339 }, 24285 { 0x3241, UNICODE_NOT_PRESENT_OFFSET, 8345 }, 24286 { 0x3242, UNICODE_NOT_PRESENT_OFFSET, 8351 }, 24287 { 0x3243, UNICODE_NOT_PRESENT_OFFSET, 8357 }, 24288 { 0x3244, UNICODE_NOT_PRESENT_OFFSET, 8363 }, 24289 { 0x3245, UNICODE_NOT_PRESENT_OFFSET, 8367 }, 24290 { 0x3246, UNICODE_NOT_PRESENT_OFFSET, 6445 }, 24291 { 0x3247, UNICODE_NOT_PRESENT_OFFSET, 8371 }, 24292 { 0x3250, UNICODE_NOT_PRESENT_OFFSET, 8375 }, 24293 { 0x3251, UNICODE_NOT_PRESENT_OFFSET, 8379 }, 24294 { 0x3252, UNICODE_NOT_PRESENT_OFFSET, 8382 }, 24295 { 0x3253, UNICODE_NOT_PRESENT_OFFSET, 8385 }, 24296 { 0x3254, UNICODE_NOT_PRESENT_OFFSET, 8388 }, 24297 { 0x3255, UNICODE_NOT_PRESENT_OFFSET, 8391 }, 24298 { 0x3256, UNICODE_NOT_PRESENT_OFFSET, 8394 }, 24299 { 0x3257, UNICODE_NOT_PRESENT_OFFSET, 8397 }, 24300 { 0x3258, UNICODE_NOT_PRESENT_OFFSET, 8400 }, 24301 { 0x3259, UNICODE_NOT_PRESENT_OFFSET, 8403 }, 24302 { 0x325a, UNICODE_NOT_PRESENT_OFFSET, 8406 }, 24303 { 0x325b, UNICODE_NOT_PRESENT_OFFSET, 8409 }, 24304 { 0x325c, UNICODE_NOT_PRESENT_OFFSET, 8412 }, 24305 { 0x325d, UNICODE_NOT_PRESENT_OFFSET, 8415 }, 24306 { 0x325e, UNICODE_NOT_PRESENT_OFFSET, 8418 }, 24307 { 0x325f, UNICODE_NOT_PRESENT_OFFSET, 8421 }, 24308 { 0x3260, UNICODE_NOT_PRESENT_OFFSET, 7479 }, 24309 { 0x3261, UNICODE_NOT_PRESENT_OFFSET, 7491 }, 24310 { 0x3262, UNICODE_NOT_PRESENT_OFFSET, 7503 }, 24311 { 0x3263, UNICODE_NOT_PRESENT_OFFSET, 7511 }, 24312 { 0x3264, UNICODE_NOT_PRESENT_OFFSET, 7543 }, 24313 { 0x3265, UNICODE_NOT_PRESENT_OFFSET, 7547 }, 24314 { 0x3266, UNICODE_NOT_PRESENT_OFFSET, 7559 }, 24315 { 0x3267, UNICODE_NOT_PRESENT_OFFSET, 7567 }, 24316 { 0x3268, UNICODE_NOT_PRESENT_OFFSET, 7571 }, 24317 { 0x3269, UNICODE_NOT_PRESENT_OFFSET, 7579 }, 24318 { 0x326a, UNICODE_NOT_PRESENT_OFFSET, 7583 }, 24319 { 0x326b, UNICODE_NOT_PRESENT_OFFSET, 7587 }, 24320 { 0x326c, UNICODE_NOT_PRESENT_OFFSET, 7591 }, 24321 { 0x326d, UNICODE_NOT_PRESENT_OFFSET, 7595 }, 24322 { 0x326e, UNICODE_NOT_PRESENT_OFFSET, 8424 }, 24323 { 0x326f, UNICODE_NOT_PRESENT_OFFSET, 8431 }, 24324 { 0x3270, UNICODE_NOT_PRESENT_OFFSET, 8438 }, 24325 { 0x3271, UNICODE_NOT_PRESENT_OFFSET, 8445 }, 24326 { 0x3272, UNICODE_NOT_PRESENT_OFFSET, 8452 }, 24327 { 0x3273, UNICODE_NOT_PRESENT_OFFSET, 8459 }, 24328 { 0x3274, UNICODE_NOT_PRESENT_OFFSET, 8466 }, 24329 { 0x3275, UNICODE_NOT_PRESENT_OFFSET, 8473 }, 24330 { 0x3276, UNICODE_NOT_PRESENT_OFFSET, 8480 }, 24331 { 0x3277, UNICODE_NOT_PRESENT_OFFSET, 8487 }, 24332 { 0x3278, UNICODE_NOT_PRESENT_OFFSET, 8494 }, 24333 { 0x3279, UNICODE_NOT_PRESENT_OFFSET, 8501 }, 24334 { 0x327a, UNICODE_NOT_PRESENT_OFFSET, 8508 }, 24335 { 0x327b, UNICODE_NOT_PRESENT_OFFSET, 8515 }, 24336 { 0x327c, UNICODE_NOT_PRESENT_OFFSET, 8522 }, 24337 { 0x327d, UNICODE_NOT_PRESENT_OFFSET, 8538 }, 24338 { 0x327e, UNICODE_NOT_PRESENT_OFFSET, 8551 }, 24339 { 0x3280, UNICODE_NOT_PRESENT_OFFSET, 6181 }, 24340 { 0x3281, UNICODE_NOT_PRESENT_OFFSET, 6205 }, 24341 { 0x3282, UNICODE_NOT_PRESENT_OFFSET, 7855 }, 24342 { 0x3283, UNICODE_NOT_PRESENT_OFFSET, 7859 }, 24343 { 0x3284, UNICODE_NOT_PRESENT_OFFSET, 8558 }, 24344 { 0x3285, UNICODE_NOT_PRESENT_OFFSET, 8562 }, 24345 { 0x3286, UNICODE_NOT_PRESENT_OFFSET, 8566 }, 24346 { 0x3287, UNICODE_NOT_PRESENT_OFFSET, 6225 }, 24347 { 0x3288, UNICODE_NOT_PRESENT_OFFSET, 8570 }, 24348 { 0x3289, UNICODE_NOT_PRESENT_OFFSET, 6273 }, 24349 { 0x328a, UNICODE_NOT_PRESENT_OFFSET, 6473 }, 24350 { 0x328b, UNICODE_NOT_PRESENT_OFFSET, 6521 }, 24351 { 0x328c, UNICODE_NOT_PRESENT_OFFSET, 6517 }, 24352 { 0x328d, UNICODE_NOT_PRESENT_OFFSET, 6477 }, 24353 { 0x328e, UNICODE_NOT_PRESENT_OFFSET, 6845 }, 24354 { 0x328f, UNICODE_NOT_PRESENT_OFFSET, 6305 }, 24355 { 0x3290, UNICODE_NOT_PRESENT_OFFSET, 6465 }, 24356 { 0x3291, UNICODE_NOT_PRESENT_OFFSET, 8574 }, 24357 { 0x3292, UNICODE_NOT_PRESENT_OFFSET, 8578 }, 24358 { 0x3293, UNICODE_NOT_PRESENT_OFFSET, 8582 }, 24359 { 0x3294, UNICODE_NOT_PRESENT_OFFSET, 8586 }, 24360 { 0x3295, UNICODE_NOT_PRESENT_OFFSET, 8590 }, 24361 { 0x3296, UNICODE_NOT_PRESENT_OFFSET, 8594 }, 24362 { 0x3297, UNICODE_NOT_PRESENT_OFFSET, 8598 }, 24363 { 0x3298, UNICODE_NOT_PRESENT_OFFSET, 8602 }, 24364 { 0x3299, UNICODE_NOT_PRESENT_OFFSET, 8606 }, 24365 { 0x329a, UNICODE_NOT_PRESENT_OFFSET, 8610 }, 24366 { 0x329b, UNICODE_NOT_PRESENT_OFFSET, 6329 }, 24367 { 0x329c, UNICODE_NOT_PRESENT_OFFSET, 8614 }, 24368 { 0x329d, UNICODE_NOT_PRESENT_OFFSET, 8618 }, 24369 { 0x329e, UNICODE_NOT_PRESENT_OFFSET, 8622 }, 24370 { 0x329f, UNICODE_NOT_PRESENT_OFFSET, 8626 }, 24371 { 0x32a0, UNICODE_NOT_PRESENT_OFFSET, 8630 }, 24372 { 0x32a1, UNICODE_NOT_PRESENT_OFFSET, 8634 }, 24373 { 0x32a2, UNICODE_NOT_PRESENT_OFFSET, 8638 }, 24374 { 0x32a3, UNICODE_NOT_PRESENT_OFFSET, 8642 }, 24375 { 0x32a4, UNICODE_NOT_PRESENT_OFFSET, 7863 }, 24376 { 0x32a5, UNICODE_NOT_PRESENT_OFFSET, 7867 }, 24377 { 0x32a6, UNICODE_NOT_PRESENT_OFFSET, 7871 }, 24378 { 0x32a7, UNICODE_NOT_PRESENT_OFFSET, 8646 }, 24379 { 0x32a8, UNICODE_NOT_PRESENT_OFFSET, 8650 }, 24380 { 0x32a9, UNICODE_NOT_PRESENT_OFFSET, 8654 }, 24381 { 0x32aa, UNICODE_NOT_PRESENT_OFFSET, 8658 }, 24382 { 0x32ab, UNICODE_NOT_PRESENT_OFFSET, 8662 }, 24383 { 0x32ac, UNICODE_NOT_PRESENT_OFFSET, 8666 }, 24384 { 0x32ad, UNICODE_NOT_PRESENT_OFFSET, 8670 }, 24385 { 0x32ae, UNICODE_NOT_PRESENT_OFFSET, 8674 }, 24386 { 0x32af, UNICODE_NOT_PRESENT_OFFSET, 8678 }, 24387 { 0x32b0, UNICODE_NOT_PRESENT_OFFSET, 8682 }, 24388 { 0x32b1, UNICODE_NOT_PRESENT_OFFSET, 8686 }, 24389 { 0x32b2, UNICODE_NOT_PRESENT_OFFSET, 8689 }, 24390 { 0x32b3, UNICODE_NOT_PRESENT_OFFSET, 8692 }, 24391 { 0x32b4, UNICODE_NOT_PRESENT_OFFSET, 8695 }, 24392 { 0x32b5, UNICODE_NOT_PRESENT_OFFSET, 8698 }, 24393 { 0x32b6, UNICODE_NOT_PRESENT_OFFSET, 8701 }, 24394 { 0x32b7, UNICODE_NOT_PRESENT_OFFSET, 8704 }, 24395 { 0x32b8, UNICODE_NOT_PRESENT_OFFSET, 8707 }, 24396 { 0x32b9, UNICODE_NOT_PRESENT_OFFSET, 8710 }, 24397 { 0x32ba, UNICODE_NOT_PRESENT_OFFSET, 8713 }, 24398 { 0x32bb, UNICODE_NOT_PRESENT_OFFSET, 8716 }, 24399 { 0x32bc, UNICODE_NOT_PRESENT_OFFSET, 8719 }, 24400 { 0x32bd, UNICODE_NOT_PRESENT_OFFSET, 8722 }, 24401 { 0x32be, UNICODE_NOT_PRESENT_OFFSET, 8725 }, 24402 { 0x32bf, UNICODE_NOT_PRESENT_OFFSET, 8728 }, 24403 { 0x32c0, UNICODE_NOT_PRESENT_OFFSET, 8731 }, 24404 { 0x32c1, UNICODE_NOT_PRESENT_OFFSET, 8736 }, 24405 { 0x32c2, UNICODE_NOT_PRESENT_OFFSET, 8741 }, 24406 { 0x32c3, UNICODE_NOT_PRESENT_OFFSET, 8746 }, 24407 { 0x32c4, UNICODE_NOT_PRESENT_OFFSET, 8751 }, 24408 { 0x32c5, UNICODE_NOT_PRESENT_OFFSET, 8756 }, 24409 { 0x32c6, UNICODE_NOT_PRESENT_OFFSET, 8761 }, 24410 { 0x32c7, UNICODE_NOT_PRESENT_OFFSET, 8766 }, 24411 { 0x32c8, UNICODE_NOT_PRESENT_OFFSET, 8771 }, 24412 { 0x32c9, UNICODE_NOT_PRESENT_OFFSET, 8776 }, 24413 { 0x32ca, UNICODE_NOT_PRESENT_OFFSET, 8782 }, 24414 { 0x32cb, UNICODE_NOT_PRESENT_OFFSET, 8788 }, 24415 { 0x32cc, UNICODE_NOT_PRESENT_OFFSET, 8794 }, 24416 { 0x32cd, UNICODE_NOT_PRESENT_OFFSET, 8797 }, 24417 { 0x32ce, UNICODE_NOT_PRESENT_OFFSET, 8801 }, 24418 { 0x32cf, UNICODE_NOT_PRESENT_OFFSET, 8804 }, 24419 { 0x32d0, UNICODE_NOT_PRESENT_OFFSET, 8808 }, 24420 { 0x32d1, UNICODE_NOT_PRESENT_OFFSET, 8812 }, 24421 { 0x32d2, UNICODE_NOT_PRESENT_OFFSET, 8816 }, 24422 { 0x32d3, UNICODE_NOT_PRESENT_OFFSET, 8820 }, 24423 { 0x32d4, UNICODE_NOT_PRESENT_OFFSET, 8824 }, 24424 { 0x32d5, UNICODE_NOT_PRESENT_OFFSET, 8828 }, 24425 { 0x32d6, UNICODE_NOT_PRESENT_OFFSET, 8832 }, 24426 { 0x32d7, UNICODE_NOT_PRESENT_OFFSET, 8836 }, 24427 { 0x32d8, UNICODE_NOT_PRESENT_OFFSET, 8840 }, 24428 { 0x32d9, UNICODE_NOT_PRESENT_OFFSET, 8844 }, 24429 { 0x32da, UNICODE_NOT_PRESENT_OFFSET, 8848 }, 24430 { 0x32db, UNICODE_NOT_PRESENT_OFFSET, 8852 }, 24431 { 0x32dc, UNICODE_NOT_PRESENT_OFFSET, 8856 }, 24432 { 0x32dd, UNICODE_NOT_PRESENT_OFFSET, 8860 }, 24433 { 0x32de, UNICODE_NOT_PRESENT_OFFSET, 8864 }, 24434 { 0x32df, UNICODE_NOT_PRESENT_OFFSET, 8868 }, 24435 { 0x32e0, UNICODE_NOT_PRESENT_OFFSET, 8872 }, 24436 { 0x32e1, UNICODE_NOT_PRESENT_OFFSET, 8876 }, 24437 { 0x32e2, UNICODE_NOT_PRESENT_OFFSET, 8880 }, 24438 { 0x32e3, UNICODE_NOT_PRESENT_OFFSET, 8884 }, 24439 { 0x32e4, UNICODE_NOT_PRESENT_OFFSET, 8888 }, 24440 { 0x32e5, UNICODE_NOT_PRESENT_OFFSET, 8892 }, 24441 { 0x32e6, UNICODE_NOT_PRESENT_OFFSET, 8896 }, 24442 { 0x32e7, UNICODE_NOT_PRESENT_OFFSET, 8900 }, 24443 { 0x32e8, UNICODE_NOT_PRESENT_OFFSET, 8904 }, 24444 { 0x32e9, UNICODE_NOT_PRESENT_OFFSET, 8908 }, 24445 { 0x32ea, UNICODE_NOT_PRESENT_OFFSET, 8912 }, 24446 { 0x32eb, UNICODE_NOT_PRESENT_OFFSET, 8916 }, 24447 { 0x32ec, UNICODE_NOT_PRESENT_OFFSET, 8920 }, 24448 { 0x32ed, UNICODE_NOT_PRESENT_OFFSET, 8924 }, 24449 { 0x32ee, UNICODE_NOT_PRESENT_OFFSET, 8928 }, 24450 { 0x32ef, UNICODE_NOT_PRESENT_OFFSET, 8932 }, 24451 { 0x32f0, UNICODE_NOT_PRESENT_OFFSET, 8936 }, 24452 { 0x32f1, UNICODE_NOT_PRESENT_OFFSET, 8940 }, 24453 { 0x32f2, UNICODE_NOT_PRESENT_OFFSET, 8944 }, 24454 { 0x32f3, UNICODE_NOT_PRESENT_OFFSET, 8948 }, 24455 { 0x32f4, UNICODE_NOT_PRESENT_OFFSET, 8952 }, 24456 { 0x32f5, UNICODE_NOT_PRESENT_OFFSET, 8956 }, 24457 { 0x32f6, UNICODE_NOT_PRESENT_OFFSET, 8960 }, 24458 { 0x32f7, UNICODE_NOT_PRESENT_OFFSET, 8964 }, 24459 { 0x32f8, UNICODE_NOT_PRESENT_OFFSET, 8968 }, 24460 { 0x32f9, UNICODE_NOT_PRESENT_OFFSET, 8972 }, 24461 { 0x32fa, UNICODE_NOT_PRESENT_OFFSET, 8976 }, 24462 { 0x32fb, UNICODE_NOT_PRESENT_OFFSET, 8980 }, 24463 { 0x32fc, UNICODE_NOT_PRESENT_OFFSET, 8984 }, 24464 { 0x32fd, UNICODE_NOT_PRESENT_OFFSET, 8988 }, 24465 { 0x32fe, UNICODE_NOT_PRESENT_OFFSET, 8992 }, 24466 { 0x3300, UNICODE_NOT_PRESENT_OFFSET, 8996 }, 24467 { 0x3301, UNICODE_NOT_PRESENT_OFFSET, 9012 }, 24468 { 0x3302, UNICODE_NOT_PRESENT_OFFSET, 9025 }, 24469 { 0x3303, UNICODE_NOT_PRESENT_OFFSET, 9041 }, 24470 { 0x3304, UNICODE_NOT_PRESENT_OFFSET, 9051 }, 24471 { 0x3305, UNICODE_NOT_PRESENT_OFFSET, 9067 }, 24472 { 0x3306, UNICODE_NOT_PRESENT_OFFSET, 9077 }, 24473 { 0x3307, UNICODE_NOT_PRESENT_OFFSET, 9087 }, 24474 { 0x3308, UNICODE_NOT_PRESENT_OFFSET, 9106 }, 24475 { 0x3309, UNICODE_NOT_PRESENT_OFFSET, 9119 }, 24476 { 0x330a, UNICODE_NOT_PRESENT_OFFSET, 9129 }, 24477 { 0x330b, UNICODE_NOT_PRESENT_OFFSET, 9139 }, 24478 { 0x330c, UNICODE_NOT_PRESENT_OFFSET, 9149 }, 24479 { 0x330d, UNICODE_NOT_PRESENT_OFFSET, 9162 }, 24480 { 0x330e, UNICODE_NOT_PRESENT_OFFSET, 9175 }, 24481 { 0x330f, UNICODE_NOT_PRESENT_OFFSET, 9188 }, 24482 { 0x3310, UNICODE_NOT_PRESENT_OFFSET, 9201 }, 24483 { 0x3311, UNICODE_NOT_PRESENT_OFFSET, 9214 }, 24484 { 0x3312, UNICODE_NOT_PRESENT_OFFSET, 9227 }, 24485 { 0x3313, UNICODE_NOT_PRESENT_OFFSET, 9240 }, 24486 { 0x3314, UNICODE_NOT_PRESENT_OFFSET, 9259 }, 24487 { 0x3315, UNICODE_NOT_PRESENT_OFFSET, 9266 }, 24488 { 0x3316, UNICODE_NOT_PRESENT_OFFSET, 9285 }, 24489 { 0x3317, UNICODE_NOT_PRESENT_OFFSET, 9304 }, 24490 { 0x3318, UNICODE_NOT_PRESENT_OFFSET, 9320 }, 24491 { 0x3319, UNICODE_NOT_PRESENT_OFFSET, 9333 }, 24492 { 0x331a, UNICODE_NOT_PRESENT_OFFSET, 9352 }, 24493 { 0x331b, UNICODE_NOT_PRESENT_OFFSET, 9371 }, 24494 { 0x331c, UNICODE_NOT_PRESENT_OFFSET, 9384 }, 24495 { 0x331d, UNICODE_NOT_PRESENT_OFFSET, 9394 }, 24496 { 0x331e, UNICODE_NOT_PRESENT_OFFSET, 9404 }, 24497 { 0x331f, UNICODE_NOT_PRESENT_OFFSET, 9417 }, 24498 { 0x3320, UNICODE_NOT_PRESENT_OFFSET, 9430 }, 24499 { 0x3321, UNICODE_NOT_PRESENT_OFFSET, 9446 }, 24500 { 0x3322, UNICODE_NOT_PRESENT_OFFSET, 9462 }, 24501 { 0x3323, UNICODE_NOT_PRESENT_OFFSET, 9472 }, 24502 { 0x3324, UNICODE_NOT_PRESENT_OFFSET, 9482 }, 24503 { 0x3325, UNICODE_NOT_PRESENT_OFFSET, 9495 }, 24504 { 0x3326, UNICODE_NOT_PRESENT_OFFSET, 9505 }, 24505 { 0x3327, UNICODE_NOT_PRESENT_OFFSET, 9515 }, 24506 { 0x3328, UNICODE_NOT_PRESENT_OFFSET, 9522 }, 24507 { 0x3329, UNICODE_NOT_PRESENT_OFFSET, 9529 }, 24508 { 0x332a, UNICODE_NOT_PRESENT_OFFSET, 9539 }, 24509 { 0x332b, UNICODE_NOT_PRESENT_OFFSET, 9549 }, 24510 { 0x332c, UNICODE_NOT_PRESENT_OFFSET, 9568 }, 24511 { 0x332d, UNICODE_NOT_PRESENT_OFFSET, 9581 }, 24512 { 0x332e, UNICODE_NOT_PRESENT_OFFSET, 9597 }, 24513 { 0x332f, UNICODE_NOT_PRESENT_OFFSET, 9616 }, 24514 { 0x3330, UNICODE_NOT_PRESENT_OFFSET, 9629 }, 24515 { 0x3331, UNICODE_NOT_PRESENT_OFFSET, 9639 }, 24516 { 0x3332, UNICODE_NOT_PRESENT_OFFSET, 9649 }, 24517 { 0x3333, UNICODE_NOT_PRESENT_OFFSET, 9668 }, 24518 { 0x3334, UNICODE_NOT_PRESENT_OFFSET, 9681 }, 24519 { 0x3335, UNICODE_NOT_PRESENT_OFFSET, 9700 }, 24520 { 0x3336, UNICODE_NOT_PRESENT_OFFSET, 9710 }, 24521 { 0x3337, UNICODE_NOT_PRESENT_OFFSET, 9726 }, 24522 { 0x3338, UNICODE_NOT_PRESENT_OFFSET, 9736 }, 24523 { 0x3339, UNICODE_NOT_PRESENT_OFFSET, 9749 }, 24524 { 0x333a, UNICODE_NOT_PRESENT_OFFSET, 9759 }, 24525 { 0x333b, UNICODE_NOT_PRESENT_OFFSET, 9772 }, 24526 { 0x333c, UNICODE_NOT_PRESENT_OFFSET, 9788 }, 24527 { 0x333d, UNICODE_NOT_PRESENT_OFFSET, 9801 }, 24528 { 0x333e, UNICODE_NOT_PRESENT_OFFSET, 9817 }, 24529 { 0x333f, UNICODE_NOT_PRESENT_OFFSET, 9830 }, 24530 { 0x3340, UNICODE_NOT_PRESENT_OFFSET, 9837 }, 24531 { 0x3341, UNICODE_NOT_PRESENT_OFFSET, 9853 }, 24532 { 0x3342, UNICODE_NOT_PRESENT_OFFSET, 9863 }, 24533 { 0x3343, UNICODE_NOT_PRESENT_OFFSET, 9873 }, 24534 { 0x3344, UNICODE_NOT_PRESENT_OFFSET, 9886 }, 24535 { 0x3345, UNICODE_NOT_PRESENT_OFFSET, 9896 }, 24536 { 0x3346, UNICODE_NOT_PRESENT_OFFSET, 9906 }, 24537 { 0x3347, UNICODE_NOT_PRESENT_OFFSET, 9916 }, 24538 { 0x3348, UNICODE_NOT_PRESENT_OFFSET, 9932 }, 24539 { 0x3349, UNICODE_NOT_PRESENT_OFFSET, 9945 }, 24540 { 0x334a, UNICODE_NOT_PRESENT_OFFSET, 9952 }, 24541 { 0x334b, UNICODE_NOT_PRESENT_OFFSET, 9971 }, 24542 { 0x334c, UNICODE_NOT_PRESENT_OFFSET, 9981 }, 24543 { 0x334d, UNICODE_NOT_PRESENT_OFFSET, 9997 }, 24544 { 0x334e, UNICODE_NOT_PRESENT_OFFSET, 10010 }, 24545 { 0x334f, UNICODE_NOT_PRESENT_OFFSET, 10023 }, 24546 { 0x3350, UNICODE_NOT_PRESENT_OFFSET, 10033 }, 24547 { 0x3351, UNICODE_NOT_PRESENT_OFFSET, 10043 }, 24548 { 0x3352, UNICODE_NOT_PRESENT_OFFSET, 10056 }, 24549 { 0x3353, UNICODE_NOT_PRESENT_OFFSET, 10063 }, 24550 { 0x3354, UNICODE_NOT_PRESENT_OFFSET, 10076 }, 24551 { 0x3355, UNICODE_NOT_PRESENT_OFFSET, 10092 }, 24552 { 0x3356, UNICODE_NOT_PRESENT_OFFSET, 10099 }, 24553 { 0x3357, UNICODE_NOT_PRESENT_OFFSET, 10118 }, 24554 { 0x3358, UNICODE_NOT_PRESENT_OFFSET, 10128 }, 24555 { 0x3359, UNICODE_NOT_PRESENT_OFFSET, 10133 }, 24556 { 0x335a, UNICODE_NOT_PRESENT_OFFSET, 10138 }, 24557 { 0x335b, UNICODE_NOT_PRESENT_OFFSET, 10143 }, 24558 { 0x335c, UNICODE_NOT_PRESENT_OFFSET, 10148 }, 24559 { 0x335d, UNICODE_NOT_PRESENT_OFFSET, 10153 }, 24560 { 0x335e, UNICODE_NOT_PRESENT_OFFSET, 10158 }, 24561 { 0x335f, UNICODE_NOT_PRESENT_OFFSET, 10163 }, 24562 { 0x3360, UNICODE_NOT_PRESENT_OFFSET, 10168 }, 24563 { 0x3361, UNICODE_NOT_PRESENT_OFFSET, 10173 }, 24564 { 0x3362, UNICODE_NOT_PRESENT_OFFSET, 10178 }, 24565 { 0x3363, UNICODE_NOT_PRESENT_OFFSET, 10184 }, 24566 { 0x3364, UNICODE_NOT_PRESENT_OFFSET, 10190 }, 24567 { 0x3365, UNICODE_NOT_PRESENT_OFFSET, 10196 }, 24568 { 0x3366, UNICODE_NOT_PRESENT_OFFSET, 10202 }, 24569 { 0x3367, UNICODE_NOT_PRESENT_OFFSET, 10208 }, 24570 { 0x3368, UNICODE_NOT_PRESENT_OFFSET, 10214 }, 24571 { 0x3369, UNICODE_NOT_PRESENT_OFFSET, 10220 }, 24572 { 0x336a, UNICODE_NOT_PRESENT_OFFSET, 10226 }, 24573 { 0x336b, UNICODE_NOT_PRESENT_OFFSET, 10232 }, 24574 { 0x336c, UNICODE_NOT_PRESENT_OFFSET, 10238 }, 24575 { 0x336d, UNICODE_NOT_PRESENT_OFFSET, 10244 }, 24576 { 0x336e, UNICODE_NOT_PRESENT_OFFSET, 10250 }, 24577 { 0x336f, UNICODE_NOT_PRESENT_OFFSET, 10256 }, 24578 { 0x3370, UNICODE_NOT_PRESENT_OFFSET, 10262 }, 24579 { 0x3371, UNICODE_NOT_PRESENT_OFFSET, 10268 }, 24580 { 0x3372, UNICODE_NOT_PRESENT_OFFSET, 10272 }, 24581 { 0x3373, UNICODE_NOT_PRESENT_OFFSET, 10275 }, 24582 { 0x3374, UNICODE_NOT_PRESENT_OFFSET, 10278 }, 24583 { 0x3375, UNICODE_NOT_PRESENT_OFFSET, 10282 }, 24584 { 0x3376, UNICODE_NOT_PRESENT_OFFSET, 10285 }, 24585 { 0x3377, UNICODE_NOT_PRESENT_OFFSET, 10288 }, 24586 { 0x3378, UNICODE_NOT_PRESENT_OFFSET, 10291 }, 24587 { 0x3379, UNICODE_NOT_PRESENT_OFFSET, 10295 }, 24588 { 0x337a, UNICODE_NOT_PRESENT_OFFSET, 10299 }, 24589 { 0x337b, UNICODE_NOT_PRESENT_OFFSET, 10302 }, 24590 { 0x337c, UNICODE_NOT_PRESENT_OFFSET, 10309 }, 24591 { 0x337d, UNICODE_NOT_PRESENT_OFFSET, 10316 }, 24592 { 0x337e, UNICODE_NOT_PRESENT_OFFSET, 10323 }, 24593 { 0x337f, UNICODE_NOT_PRESENT_OFFSET, 10330 }, 24594 { 0x3380, UNICODE_NOT_PRESENT_OFFSET, 10343 }, 24595 { 0x3381, UNICODE_NOT_PRESENT_OFFSET, 10346 }, 24596 { 0x3382, UNICODE_NOT_PRESENT_OFFSET, 10349 }, 24597 { 0x3383, UNICODE_NOT_PRESENT_OFFSET, 10353 }, 24598 { 0x3384, UNICODE_NOT_PRESENT_OFFSET, 10356 }, 24599 { 0x3385, UNICODE_NOT_PRESENT_OFFSET, 10359 }, 24600 { 0x3386, UNICODE_NOT_PRESENT_OFFSET, 10362 }, 24601 { 0x3387, UNICODE_NOT_PRESENT_OFFSET, 10365 }, 24602 { 0x3388, UNICODE_NOT_PRESENT_OFFSET, 10368 }, 24603 { 0x3389, UNICODE_NOT_PRESENT_OFFSET, 10372 }, 24604 { 0x338a, UNICODE_NOT_PRESENT_OFFSET, 10377 }, 24605 { 0x338b, UNICODE_NOT_PRESENT_OFFSET, 10380 }, 24606 { 0x338c, UNICODE_NOT_PRESENT_OFFSET, 10383 }, 24607 { 0x338d, UNICODE_NOT_PRESENT_OFFSET, 10387 }, 24608 { 0x338e, UNICODE_NOT_PRESENT_OFFSET, 10391 }, 24609 { 0x338f, UNICODE_NOT_PRESENT_OFFSET, 10394 }, 24610 { 0x3390, UNICODE_NOT_PRESENT_OFFSET, 10397 }, 24611 { 0x3391, UNICODE_NOT_PRESENT_OFFSET, 10400 }, 24612 { 0x3392, UNICODE_NOT_PRESENT_OFFSET, 10404 }, 24613 { 0x3393, UNICODE_NOT_PRESENT_OFFSET, 10408 }, 24614 { 0x3394, UNICODE_NOT_PRESENT_OFFSET, 10412 }, 24615 { 0x3395, UNICODE_NOT_PRESENT_OFFSET, 10416 }, 24616 { 0x3396, UNICODE_NOT_PRESENT_OFFSET, 10420 }, 24617 { 0x3397, UNICODE_NOT_PRESENT_OFFSET, 10423 }, 24618 { 0x3398, UNICODE_NOT_PRESENT_OFFSET, 10426 }, 24619 { 0x3399, UNICODE_NOT_PRESENT_OFFSET, 10429 }, 24620 { 0x339a, UNICODE_NOT_PRESENT_OFFSET, 10432 }, 24621 { 0x339b, UNICODE_NOT_PRESENT_OFFSET, 10435 }, 24622 { 0x339c, UNICODE_NOT_PRESENT_OFFSET, 10439 }, 24623 { 0x339d, UNICODE_NOT_PRESENT_OFFSET, 10442 }, 24624 { 0x339e, UNICODE_NOT_PRESENT_OFFSET, 10445 }, 24625 { 0x339f, UNICODE_NOT_PRESENT_OFFSET, 10448 }, 24626 { 0x33a0, UNICODE_NOT_PRESENT_OFFSET, 10452 }, 24627 { 0x33a1, UNICODE_NOT_PRESENT_OFFSET, 10456 }, 24628 { 0x33a2, UNICODE_NOT_PRESENT_OFFSET, 10459 }, 24629 { 0x33a3, UNICODE_NOT_PRESENT_OFFSET, 10463 }, 24630 { 0x33a4, UNICODE_NOT_PRESENT_OFFSET, 10467 }, 24631 { 0x33a5, UNICODE_NOT_PRESENT_OFFSET, 10471 }, 24632 { 0x33a6, UNICODE_NOT_PRESENT_OFFSET, 10474 }, 24633 { 0x33a7, UNICODE_NOT_PRESENT_OFFSET, 10478 }, 24634 { 0x33a8, UNICODE_NOT_PRESENT_OFFSET, 10484 }, 24635 { 0x33a9, UNICODE_NOT_PRESENT_OFFSET, 10491 }, 24636 { 0x33aa, UNICODE_NOT_PRESENT_OFFSET, 10494 }, 24637 { 0x33ab, UNICODE_NOT_PRESENT_OFFSET, 10498 }, 24638 { 0x33ac, UNICODE_NOT_PRESENT_OFFSET, 10502 }, 24639 { 0x33ad, UNICODE_NOT_PRESENT_OFFSET, 10506 }, 24640 { 0x33ae, UNICODE_NOT_PRESENT_OFFSET, 10510 }, 24641 { 0x33af, UNICODE_NOT_PRESENT_OFFSET, 10518 }, 24642 { 0x33b0, UNICODE_NOT_PRESENT_OFFSET, 10527 }, 24643 { 0x33b1, UNICODE_NOT_PRESENT_OFFSET, 10530 }, 24644 { 0x33b2, UNICODE_NOT_PRESENT_OFFSET, 10533 }, 24645 { 0x33b3, UNICODE_NOT_PRESENT_OFFSET, 10537 }, 24646 { 0x33b4, UNICODE_NOT_PRESENT_OFFSET, 10540 }, 24647 { 0x33b5, UNICODE_NOT_PRESENT_OFFSET, 10543 }, 24648 { 0x33b6, UNICODE_NOT_PRESENT_OFFSET, 10546 }, 24649 { 0x33b7, UNICODE_NOT_PRESENT_OFFSET, 10550 }, 24650 { 0x33b8, UNICODE_NOT_PRESENT_OFFSET, 10553 }, 24651 { 0x33b9, UNICODE_NOT_PRESENT_OFFSET, 10556 }, 24652 { 0x33ba, UNICODE_NOT_PRESENT_OFFSET, 10559 }, 24653 { 0x33bb, UNICODE_NOT_PRESENT_OFFSET, 10562 }, 24654 { 0x33bc, UNICODE_NOT_PRESENT_OFFSET, 10565 }, 24655 { 0x33bd, UNICODE_NOT_PRESENT_OFFSET, 10569 }, 24656 { 0x33be, UNICODE_NOT_PRESENT_OFFSET, 10572 }, 24657 { 0x33bf, UNICODE_NOT_PRESENT_OFFSET, 10575 }, 24658 { 0x33c0, UNICODE_NOT_PRESENT_OFFSET, 10578 }, 24659 { 0x33c1, UNICODE_NOT_PRESENT_OFFSET, 10582 }, 24660 { 0x33c2, UNICODE_NOT_PRESENT_OFFSET, 10586 }, 24661 { 0x33c3, UNICODE_NOT_PRESENT_OFFSET, 10591 }, 24662 { 0x33c4, UNICODE_NOT_PRESENT_OFFSET, 10594 }, 24663 { 0x33c5, UNICODE_NOT_PRESENT_OFFSET, 10597 }, 24664 { 0x33c6, UNICODE_NOT_PRESENT_OFFSET, 10600 }, 24665 { 0x33c7, UNICODE_NOT_PRESENT_OFFSET, 10607 }, 24666 { 0x33c8, UNICODE_NOT_PRESENT_OFFSET, 10611 }, 24667 { 0x33c9, UNICODE_NOT_PRESENT_OFFSET, 10614 }, 24668 { 0x33ca, UNICODE_NOT_PRESENT_OFFSET, 10617 }, 24669 { 0x33cb, UNICODE_NOT_PRESENT_OFFSET, 10620 }, 24670 { 0x33cc, UNICODE_NOT_PRESENT_OFFSET, 10623 }, 24671 { 0x33cd, UNICODE_NOT_PRESENT_OFFSET, 10626 }, 24672 { 0x33ce, UNICODE_NOT_PRESENT_OFFSET, 10629 }, 24673 { 0x33cf, UNICODE_NOT_PRESENT_OFFSET, 10632 }, 24674 { 0x33d0, UNICODE_NOT_PRESENT_OFFSET, 10635 }, 24675 { 0x33d1, UNICODE_NOT_PRESENT_OFFSET, 10638 }, 24676 { 0x33d2, UNICODE_NOT_PRESENT_OFFSET, 10641 }, 24677 { 0x33d3, UNICODE_NOT_PRESENT_OFFSET, 10645 }, 24678 { 0x33d4, UNICODE_NOT_PRESENT_OFFSET, 10648 }, 24679 { 0x33d5, UNICODE_NOT_PRESENT_OFFSET, 10651 }, 24680 { 0x33d6, UNICODE_NOT_PRESENT_OFFSET, 10655 }, 24681 { 0x33d7, UNICODE_NOT_PRESENT_OFFSET, 10659 }, 24682 { 0x33d8, UNICODE_NOT_PRESENT_OFFSET, 10662 }, 24683 { 0x33d9, UNICODE_NOT_PRESENT_OFFSET, 10667 }, 24684 { 0x33da, UNICODE_NOT_PRESENT_OFFSET, 10671 }, 24685 { 0x33db, UNICODE_NOT_PRESENT_OFFSET, 10674 }, 24686 { 0x33dc, UNICODE_NOT_PRESENT_OFFSET, 10677 }, 24687 { 0x33dd, UNICODE_NOT_PRESENT_OFFSET, 10680 }, 24688 { 0x33de, UNICODE_NOT_PRESENT_OFFSET, 10683 }, 24689 { 0x33df, UNICODE_NOT_PRESENT_OFFSET, 10689 }, 24690 { 0x33e0, UNICODE_NOT_PRESENT_OFFSET, 10695 }, 24691 { 0x33e1, UNICODE_NOT_PRESENT_OFFSET, 10700 }, 24692 { 0x33e2, UNICODE_NOT_PRESENT_OFFSET, 10705 }, 24693 { 0x33e3, UNICODE_NOT_PRESENT_OFFSET, 10710 }, 24694 { 0x33e4, UNICODE_NOT_PRESENT_OFFSET, 10715 }, 24695 { 0x33e5, UNICODE_NOT_PRESENT_OFFSET, 10720 }, 24696 { 0x33e6, UNICODE_NOT_PRESENT_OFFSET, 10725 }, 24697 { 0x33e7, UNICODE_NOT_PRESENT_OFFSET, 10730 }, 24698 { 0x33e8, UNICODE_NOT_PRESENT_OFFSET, 10735 }, 24699 { 0x33e9, UNICODE_NOT_PRESENT_OFFSET, 10740 }, 24700 { 0x33ea, UNICODE_NOT_PRESENT_OFFSET, 10746 }, 24701 { 0x33eb, UNICODE_NOT_PRESENT_OFFSET, 10752 }, 24702 { 0x33ec, UNICODE_NOT_PRESENT_OFFSET, 10758 }, 24703 { 0x33ed, UNICODE_NOT_PRESENT_OFFSET, 10764 }, 24704 { 0x33ee, UNICODE_NOT_PRESENT_OFFSET, 10770 }, 24705 { 0x33ef, UNICODE_NOT_PRESENT_OFFSET, 10776 }, 24706 { 0x33f0, UNICODE_NOT_PRESENT_OFFSET, 10782 }, 24707 { 0x33f1, UNICODE_NOT_PRESENT_OFFSET, 10788 }, 24708 { 0x33f2, UNICODE_NOT_PRESENT_OFFSET, 10794 }, 24709 { 0x33f3, UNICODE_NOT_PRESENT_OFFSET, 10800 }, 24710 { 0x33f4, UNICODE_NOT_PRESENT_OFFSET, 10806 }, 24711 { 0x33f5, UNICODE_NOT_PRESENT_OFFSET, 10812 }, 24712 { 0x33f6, UNICODE_NOT_PRESENT_OFFSET, 10818 }, 24713 { 0x33f7, UNICODE_NOT_PRESENT_OFFSET, 10824 }, 24714 { 0x33f8, UNICODE_NOT_PRESENT_OFFSET, 10830 }, 24715 { 0x33f9, UNICODE_NOT_PRESENT_OFFSET, 10836 }, 24716 { 0x33fa, UNICODE_NOT_PRESENT_OFFSET, 10842 }, 24717 { 0x33fb, UNICODE_NOT_PRESENT_OFFSET, 10848 }, 24718 { 0x33fc, UNICODE_NOT_PRESENT_OFFSET, 10854 }, 24719 { 0x33fd, UNICODE_NOT_PRESENT_OFFSET, 10860 }, 24720 { 0x33fe, UNICODE_NOT_PRESENT_OFFSET, 10866 }, 24721 { 0x33ff, UNICODE_NOT_PRESENT_OFFSET, 10872 }, 24722 { 0xa69c, UNICODE_NOT_PRESENT_OFFSET, 10876 }, 24723 { 0xa69d, UNICODE_NOT_PRESENT_OFFSET, 10879 }, 24724 { 0xa770, UNICODE_NOT_PRESENT_OFFSET, 10882 }, 24725 { 0xa7f8, UNICODE_NOT_PRESENT_OFFSET, 10886 }, 24726 { 0xa7f9, UNICODE_NOT_PRESENT_OFFSET, 10889 }, 24727 { 0xab5c, UNICODE_NOT_PRESENT_OFFSET, 10892 }, 24728 { 0xab5d, UNICODE_NOT_PRESENT_OFFSET, 10896 }, 24729 { 0xab5e, UNICODE_NOT_PRESENT_OFFSET, 10900 }, 24730 { 0xab5f, UNICODE_NOT_PRESENT_OFFSET, 10903 }, 24731 { 0xf900, 10907, UNICODE_NOT_PRESENT_OFFSET }, 24732 { 0xf901, 10911, UNICODE_NOT_PRESENT_OFFSET }, 24733 { 0xf902, 6813, UNICODE_NOT_PRESENT_OFFSET }, 24734 { 0xf903, 10915, UNICODE_NOT_PRESENT_OFFSET }, 24735 { 0xf904, 10919, UNICODE_NOT_PRESENT_OFFSET }, 24736 { 0xf905, 10923, UNICODE_NOT_PRESENT_OFFSET }, 24737 { 0xf906, 10927, UNICODE_NOT_PRESENT_OFFSET }, 24738 { 0xf907, 7029, UNICODE_NOT_PRESENT_OFFSET }, 24739 { 0xf908, 7029, UNICODE_NOT_PRESENT_OFFSET }, 24740 { 0xf909, 10931, UNICODE_NOT_PRESENT_OFFSET }, 24741 { 0xf90a, 6845, UNICODE_NOT_PRESENT_OFFSET }, 24742 { 0xf90b, 10935, UNICODE_NOT_PRESENT_OFFSET }, 24743 { 0xf90c, 10939, UNICODE_NOT_PRESENT_OFFSET }, 24744 { 0xf90d, 10943, UNICODE_NOT_PRESENT_OFFSET }, 24745 { 0xf90e, 10947, UNICODE_NOT_PRESENT_OFFSET }, 24746 { 0xf90f, 10951, UNICODE_NOT_PRESENT_OFFSET }, 24747 { 0xf910, 10955, UNICODE_NOT_PRESENT_OFFSET }, 24748 { 0xf911, 10959, UNICODE_NOT_PRESENT_OFFSET }, 24749 { 0xf912, 10963, UNICODE_NOT_PRESENT_OFFSET }, 24750 { 0xf913, 10967, UNICODE_NOT_PRESENT_OFFSET }, 24751 { 0xf914, 10971, UNICODE_NOT_PRESENT_OFFSET }, 24752 { 0xf915, 10975, UNICODE_NOT_PRESENT_OFFSET }, 24753 { 0xf916, 10979, UNICODE_NOT_PRESENT_OFFSET }, 24754 { 0xf917, 10983, UNICODE_NOT_PRESENT_OFFSET }, 24755 { 0xf918, 10987, UNICODE_NOT_PRESENT_OFFSET }, 24756 { 0xf919, 10991, UNICODE_NOT_PRESENT_OFFSET }, 24757 { 0xf91a, 10995, UNICODE_NOT_PRESENT_OFFSET }, 24758 { 0xf91b, 10999, UNICODE_NOT_PRESENT_OFFSET }, 24759 { 0xf91c, 11003, UNICODE_NOT_PRESENT_OFFSET }, 24760 { 0xf91d, 11007, UNICODE_NOT_PRESENT_OFFSET }, 24761 { 0xf91e, 11011, UNICODE_NOT_PRESENT_OFFSET }, 24762 { 0xf91f, 11015, UNICODE_NOT_PRESENT_OFFSET }, 24763 { 0xf920, 11019, UNICODE_NOT_PRESENT_OFFSET }, 24764 { 0xf921, 11023, UNICODE_NOT_PRESENT_OFFSET }, 24765 { 0xf922, 11027, UNICODE_NOT_PRESENT_OFFSET }, 24766 { 0xf923, 11031, UNICODE_NOT_PRESENT_OFFSET }, 24767 { 0xf924, 11035, UNICODE_NOT_PRESENT_OFFSET }, 24768 { 0xf925, 11039, UNICODE_NOT_PRESENT_OFFSET }, 24769 { 0xf926, 11043, UNICODE_NOT_PRESENT_OFFSET }, 24770 { 0xf927, 11047, UNICODE_NOT_PRESENT_OFFSET }, 24771 { 0xf928, 11051, UNICODE_NOT_PRESENT_OFFSET }, 24772 { 0xf929, 11055, UNICODE_NOT_PRESENT_OFFSET }, 24773 { 0xf92a, 11059, UNICODE_NOT_PRESENT_OFFSET }, 24774 { 0xf92b, 11063, UNICODE_NOT_PRESENT_OFFSET }, 24775 { 0xf92c, 11067, UNICODE_NOT_PRESENT_OFFSET }, 24776 { 0xf92d, 11071, UNICODE_NOT_PRESENT_OFFSET }, 24777 { 0xf92e, 11075, UNICODE_NOT_PRESENT_OFFSET }, 24778 { 0xf92f, 11079, UNICODE_NOT_PRESENT_OFFSET }, 24779 { 0xf930, 11083, UNICODE_NOT_PRESENT_OFFSET }, 24780 { 0xf931, 11087, UNICODE_NOT_PRESENT_OFFSET }, 24781 { 0xf932, 11091, UNICODE_NOT_PRESENT_OFFSET }, 24782 { 0xf933, 11095, UNICODE_NOT_PRESENT_OFFSET }, 24783 { 0xf934, 6677, UNICODE_NOT_PRESENT_OFFSET }, 24784 { 0xf935, 11099, UNICODE_NOT_PRESENT_OFFSET }, 24785 { 0xf936, 11103, UNICODE_NOT_PRESENT_OFFSET }, 24786 { 0xf937, 11107, UNICODE_NOT_PRESENT_OFFSET }, 24787 { 0xf938, 11111, UNICODE_NOT_PRESENT_OFFSET }, 24788 { 0xf939, 11115, UNICODE_NOT_PRESENT_OFFSET }, 24789 { 0xf93a, 11119, UNICODE_NOT_PRESENT_OFFSET }, 24790 { 0xf93b, 11123, UNICODE_NOT_PRESENT_OFFSET }, 24791 { 0xf93c, 11127, UNICODE_NOT_PRESENT_OFFSET }, 24792 { 0xf93d, 11131, UNICODE_NOT_PRESENT_OFFSET }, 24793 { 0xf93e, 11135, UNICODE_NOT_PRESENT_OFFSET }, 24794 { 0xf93f, 11139, UNICODE_NOT_PRESENT_OFFSET }, 24795 { 0xf940, 6969, UNICODE_NOT_PRESENT_OFFSET }, 24796 { 0xf941, 11143, UNICODE_NOT_PRESENT_OFFSET }, 24797 { 0xf942, 11147, UNICODE_NOT_PRESENT_OFFSET }, 24798 { 0xf943, 11151, UNICODE_NOT_PRESENT_OFFSET }, 24799 { 0xf944, 11155, UNICODE_NOT_PRESENT_OFFSET }, 24800 { 0xf945, 11159, UNICODE_NOT_PRESENT_OFFSET }, 24801 { 0xf946, 11163, UNICODE_NOT_PRESENT_OFFSET }, 24802 { 0xf947, 11167, UNICODE_NOT_PRESENT_OFFSET }, 24803 { 0xf948, 11171, UNICODE_NOT_PRESENT_OFFSET }, 24804 { 0xf949, 11175, UNICODE_NOT_PRESENT_OFFSET }, 24805 { 0xf94a, 11179, UNICODE_NOT_PRESENT_OFFSET }, 24806 { 0xf94b, 11183, UNICODE_NOT_PRESENT_OFFSET }, 24807 { 0xf94c, 11187, UNICODE_NOT_PRESENT_OFFSET }, 24808 { 0xf94d, 11191, UNICODE_NOT_PRESENT_OFFSET }, 24809 { 0xf94e, 11195, UNICODE_NOT_PRESENT_OFFSET }, 24810 { 0xf94f, 11199, UNICODE_NOT_PRESENT_OFFSET }, 24811 { 0xf950, 11203, UNICODE_NOT_PRESENT_OFFSET }, 24812 { 0xf951, 11207, UNICODE_NOT_PRESENT_OFFSET }, 24813 { 0xf952, 11211, UNICODE_NOT_PRESENT_OFFSET }, 24814 { 0xf953, 11215, UNICODE_NOT_PRESENT_OFFSET }, 24815 { 0xf954, 11219, UNICODE_NOT_PRESENT_OFFSET }, 24816 { 0xf955, 11223, UNICODE_NOT_PRESENT_OFFSET }, 24817 { 0xf956, 11227, UNICODE_NOT_PRESENT_OFFSET }, 24818 { 0xf957, 11231, UNICODE_NOT_PRESENT_OFFSET }, 24819 { 0xf958, 11235, UNICODE_NOT_PRESENT_OFFSET }, 24820 { 0xf959, 11239, UNICODE_NOT_PRESENT_OFFSET }, 24821 { 0xf95a, 11243, UNICODE_NOT_PRESENT_OFFSET }, 24822 { 0xf95b, 11247, UNICODE_NOT_PRESENT_OFFSET }, 24823 { 0xf95c, 10971, UNICODE_NOT_PRESENT_OFFSET }, 24824 { 0xf95d, 11251, UNICODE_NOT_PRESENT_OFFSET }, 24825 { 0xf95e, 11255, UNICODE_NOT_PRESENT_OFFSET }, 24826 { 0xf95f, 11259, UNICODE_NOT_PRESENT_OFFSET }, 24827 { 0xf960, 11263, UNICODE_NOT_PRESENT_OFFSET }, 24828 { 0xf961, 11267, UNICODE_NOT_PRESENT_OFFSET }, 24829 { 0xf962, 11271, UNICODE_NOT_PRESENT_OFFSET }, 24830 { 0xf963, 11275, UNICODE_NOT_PRESENT_OFFSET }, 24831 { 0xf964, 11279, UNICODE_NOT_PRESENT_OFFSET }, 24832 { 0xf965, 11283, UNICODE_NOT_PRESENT_OFFSET }, 24833 { 0xf966, 11287, UNICODE_NOT_PRESENT_OFFSET }, 24834 { 0xf967, 11291, UNICODE_NOT_PRESENT_OFFSET }, 24835 { 0xf968, 11295, UNICODE_NOT_PRESENT_OFFSET }, 24836 { 0xf969, 11299, UNICODE_NOT_PRESENT_OFFSET }, 24837 { 0xf96a, 11303, UNICODE_NOT_PRESENT_OFFSET }, 24838 { 0xf96b, 11307, UNICODE_NOT_PRESENT_OFFSET }, 24839 { 0xf96c, 11311, UNICODE_NOT_PRESENT_OFFSET }, 24840 { 0xf96d, 11315, UNICODE_NOT_PRESENT_OFFSET }, 24841 { 0xf96e, 11319, UNICODE_NOT_PRESENT_OFFSET }, 24842 { 0xf96f, 11323, UNICODE_NOT_PRESENT_OFFSET }, 24843 { 0xf970, 11327, UNICODE_NOT_PRESENT_OFFSET }, 24844 { 0xf971, 6821, UNICODE_NOT_PRESENT_OFFSET }, 24845 { 0xf972, 11331, UNICODE_NOT_PRESENT_OFFSET }, 24846 { 0xf973, 11335, UNICODE_NOT_PRESENT_OFFSET }, 24847 { 0xf974, 11339, UNICODE_NOT_PRESENT_OFFSET }, 24848 { 0xf975, 11343, UNICODE_NOT_PRESENT_OFFSET }, 24849 { 0xf976, 11347, UNICODE_NOT_PRESENT_OFFSET }, 24850 { 0xf977, 11351, UNICODE_NOT_PRESENT_OFFSET }, 24851 { 0xf978, 11355, UNICODE_NOT_PRESENT_OFFSET }, 24852 { 0xf979, 11359, UNICODE_NOT_PRESENT_OFFSET }, 24853 { 0xf97a, 11363, UNICODE_NOT_PRESENT_OFFSET }, 24854 { 0xf97b, 11367, UNICODE_NOT_PRESENT_OFFSET }, 24855 { 0xf97c, 11371, UNICODE_NOT_PRESENT_OFFSET }, 24856 { 0xf97d, 11375, UNICODE_NOT_PRESENT_OFFSET }, 24857 { 0xf97e, 11379, UNICODE_NOT_PRESENT_OFFSET }, 24858 { 0xf97f, 11383, UNICODE_NOT_PRESENT_OFFSET }, 24859 { 0xf980, 11387, UNICODE_NOT_PRESENT_OFFSET }, 24860 { 0xf981, 6329, UNICODE_NOT_PRESENT_OFFSET }, 24861 { 0xf982, 11391, UNICODE_NOT_PRESENT_OFFSET }, 24862 { 0xf983, 11395, UNICODE_NOT_PRESENT_OFFSET }, 24863 { 0xf984, 11399, UNICODE_NOT_PRESENT_OFFSET }, 24864 { 0xf985, 11403, UNICODE_NOT_PRESENT_OFFSET }, 24865 { 0xf986, 11407, UNICODE_NOT_PRESENT_OFFSET }, 24866 { 0xf987, 11411, UNICODE_NOT_PRESENT_OFFSET }, 24867 { 0xf988, 11415, UNICODE_NOT_PRESENT_OFFSET }, 24868 { 0xf989, 11419, UNICODE_NOT_PRESENT_OFFSET }, 24869 { 0xf98a, 6253, UNICODE_NOT_PRESENT_OFFSET }, 24870 { 0xf98b, 11423, UNICODE_NOT_PRESENT_OFFSET }, 24871 { 0xf98c, 11427, UNICODE_NOT_PRESENT_OFFSET }, 24872 { 0xf98d, 11431, UNICODE_NOT_PRESENT_OFFSET }, 24873 { 0xf98e, 11435, UNICODE_NOT_PRESENT_OFFSET }, 24874 { 0xf98f, 11439, UNICODE_NOT_PRESENT_OFFSET }, 24875 { 0xf990, 11443, UNICODE_NOT_PRESENT_OFFSET }, 24876 { 0xf991, 11447, UNICODE_NOT_PRESENT_OFFSET }, 24877 { 0xf992, 11451, UNICODE_NOT_PRESENT_OFFSET }, 24878 { 0xf993, 11455, UNICODE_NOT_PRESENT_OFFSET }, 24879 { 0xf994, 11459, UNICODE_NOT_PRESENT_OFFSET }, 24880 { 0xf995, 11463, UNICODE_NOT_PRESENT_OFFSET }, 24881 { 0xf996, 11467, UNICODE_NOT_PRESENT_OFFSET }, 24882 { 0xf997, 11471, UNICODE_NOT_PRESENT_OFFSET }, 24883 { 0xf998, 11475, UNICODE_NOT_PRESENT_OFFSET }, 24884 { 0xf999, 11479, UNICODE_NOT_PRESENT_OFFSET }, 24885 { 0xf99a, 11483, UNICODE_NOT_PRESENT_OFFSET }, 24886 { 0xf99b, 11487, UNICODE_NOT_PRESENT_OFFSET }, 24887 { 0xf99c, 11491, UNICODE_NOT_PRESENT_OFFSET }, 24888 { 0xf99d, 11495, UNICODE_NOT_PRESENT_OFFSET }, 24889 { 0xf99e, 11499, UNICODE_NOT_PRESENT_OFFSET }, 24890 { 0xf99f, 11503, UNICODE_NOT_PRESENT_OFFSET }, 24891 { 0xf9a0, 11507, UNICODE_NOT_PRESENT_OFFSET }, 24892 { 0xf9a1, 11323, UNICODE_NOT_PRESENT_OFFSET }, 24893 { 0xf9a2, 11511, UNICODE_NOT_PRESENT_OFFSET }, 24894 { 0xf9a3, 11515, UNICODE_NOT_PRESENT_OFFSET }, 24895 { 0xf9a4, 11519, UNICODE_NOT_PRESENT_OFFSET }, 24896 { 0xf9a5, 11523, UNICODE_NOT_PRESENT_OFFSET }, 24897 { 0xf9a6, 11527, UNICODE_NOT_PRESENT_OFFSET }, 24898 { 0xf9a7, 11531, UNICODE_NOT_PRESENT_OFFSET }, 24899 { 0xf9a8, 11535, UNICODE_NOT_PRESENT_OFFSET }, 24900 { 0xf9a9, 11539, UNICODE_NOT_PRESENT_OFFSET }, 24901 { 0xf9aa, 11259, UNICODE_NOT_PRESENT_OFFSET }, 24902 { 0xf9ab, 11543, UNICODE_NOT_PRESENT_OFFSET }, 24903 { 0xf9ac, 11547, UNICODE_NOT_PRESENT_OFFSET }, 24904 { 0xf9ad, 11551, UNICODE_NOT_PRESENT_OFFSET }, 24905 { 0xf9ae, 11555, UNICODE_NOT_PRESENT_OFFSET }, 24906 { 0xf9af, 11559, UNICODE_NOT_PRESENT_OFFSET }, 24907 { 0xf9b0, 11563, UNICODE_NOT_PRESENT_OFFSET }, 24908 { 0xf9b1, 11567, UNICODE_NOT_PRESENT_OFFSET }, 24909 { 0xf9b2, 11571, UNICODE_NOT_PRESENT_OFFSET }, 24910 { 0xf9b3, 11575, UNICODE_NOT_PRESENT_OFFSET }, 24911 { 0xf9b4, 11579, UNICODE_NOT_PRESENT_OFFSET }, 24912 { 0xf9b5, 11583, UNICODE_NOT_PRESENT_OFFSET }, 24913 { 0xf9b6, 11587, UNICODE_NOT_PRESENT_OFFSET }, 24914 { 0xf9b7, 11591, UNICODE_NOT_PRESENT_OFFSET }, 24915 { 0xf9b8, 11595, UNICODE_NOT_PRESENT_OFFSET }, 24916 { 0xf9b9, 11599, UNICODE_NOT_PRESENT_OFFSET }, 24917 { 0xf9ba, 11603, UNICODE_NOT_PRESENT_OFFSET }, 24918 { 0xf9bb, 11607, UNICODE_NOT_PRESENT_OFFSET }, 24919 { 0xf9bc, 11611, UNICODE_NOT_PRESENT_OFFSET }, 24920 { 0xf9bd, 11615, UNICODE_NOT_PRESENT_OFFSET }, 24921 { 0xf9be, 11619, UNICODE_NOT_PRESENT_OFFSET }, 24922 { 0xf9bf, 10971, UNICODE_NOT_PRESENT_OFFSET }, 24923 { 0xf9c0, 11623, UNICODE_NOT_PRESENT_OFFSET }, 24924 { 0xf9c1, 11627, UNICODE_NOT_PRESENT_OFFSET }, 24925 { 0xf9c2, 11631, UNICODE_NOT_PRESENT_OFFSET }, 24926 { 0xf9c3, 11635, UNICODE_NOT_PRESENT_OFFSET }, 24927 { 0xf9c4, 7025, UNICODE_NOT_PRESENT_OFFSET }, 24928 { 0xf9c5, 11639, UNICODE_NOT_PRESENT_OFFSET }, 24929 { 0xf9c6, 11643, UNICODE_NOT_PRESENT_OFFSET }, 24930 { 0xf9c7, 11647, UNICODE_NOT_PRESENT_OFFSET }, 24931 { 0xf9c8, 11651, UNICODE_NOT_PRESENT_OFFSET }, 24932 { 0xf9c9, 11655, UNICODE_NOT_PRESENT_OFFSET }, 24933 { 0xf9ca, 11659, UNICODE_NOT_PRESENT_OFFSET }, 24934 { 0xf9cb, 11663, UNICODE_NOT_PRESENT_OFFSET }, 24935 { 0xf9cc, 11667, UNICODE_NOT_PRESENT_OFFSET }, 24936 { 0xf9cd, 11671, UNICODE_NOT_PRESENT_OFFSET }, 24937 { 0xf9ce, 11675, UNICODE_NOT_PRESENT_OFFSET }, 24938 { 0xf9cf, 11679, UNICODE_NOT_PRESENT_OFFSET }, 24939 { 0xf9d0, 11683, UNICODE_NOT_PRESENT_OFFSET }, 24940 { 0xf9d1, 8562, UNICODE_NOT_PRESENT_OFFSET }, 24941 { 0xf9d2, 11687, UNICODE_NOT_PRESENT_OFFSET }, 24942 { 0xf9d3, 11691, UNICODE_NOT_PRESENT_OFFSET }, 24943 { 0xf9d4, 11695, UNICODE_NOT_PRESENT_OFFSET }, 24944 { 0xf9d5, 11699, UNICODE_NOT_PRESENT_OFFSET }, 24945 { 0xf9d6, 11703, UNICODE_NOT_PRESENT_OFFSET }, 24946 { 0xf9d7, 11707, UNICODE_NOT_PRESENT_OFFSET }, 24947 { 0xf9d8, 11711, UNICODE_NOT_PRESENT_OFFSET }, 24948 { 0xf9d9, 11715, UNICODE_NOT_PRESENT_OFFSET }, 24949 { 0xf9da, 11719, UNICODE_NOT_PRESENT_OFFSET }, 24950 { 0xf9db, 11267, UNICODE_NOT_PRESENT_OFFSET }, 24951 { 0xf9dc, 11723, UNICODE_NOT_PRESENT_OFFSET }, 24952 { 0xf9dd, 11727, UNICODE_NOT_PRESENT_OFFSET }, 24953 { 0xf9de, 11731, UNICODE_NOT_PRESENT_OFFSET }, 24954 { 0xf9df, 11735, UNICODE_NOT_PRESENT_OFFSET }, 24955 { 0xf9e0, 11739, UNICODE_NOT_PRESENT_OFFSET }, 24956 { 0xf9e1, 11743, UNICODE_NOT_PRESENT_OFFSET }, 24957 { 0xf9e2, 11747, UNICODE_NOT_PRESENT_OFFSET }, 24958 { 0xf9e3, 11751, UNICODE_NOT_PRESENT_OFFSET }, 24959 { 0xf9e4, 11755, UNICODE_NOT_PRESENT_OFFSET }, 24960 { 0xf9e5, 11759, UNICODE_NOT_PRESENT_OFFSET }, 24961 { 0xf9e6, 11763, UNICODE_NOT_PRESENT_OFFSET }, 24962 { 0xf9e7, 11767, UNICODE_NOT_PRESENT_OFFSET }, 24963 { 0xf9e8, 11771, UNICODE_NOT_PRESENT_OFFSET }, 24964 { 0xf9e9, 6841, UNICODE_NOT_PRESENT_OFFSET }, 24965 { 0xf9ea, 11775, UNICODE_NOT_PRESENT_OFFSET }, 24966 { 0xf9eb, 11779, UNICODE_NOT_PRESENT_OFFSET }, 24967 { 0xf9ec, 11783, UNICODE_NOT_PRESENT_OFFSET }, 24968 { 0xf9ed, 11787, UNICODE_NOT_PRESENT_OFFSET }, 24969 { 0xf9ee, 11791, UNICODE_NOT_PRESENT_OFFSET }, 24970 { 0xf9ef, 11795, UNICODE_NOT_PRESENT_OFFSET }, 24971 { 0xf9f0, 11799, UNICODE_NOT_PRESENT_OFFSET }, 24972 { 0xf9f1, 11803, UNICODE_NOT_PRESENT_OFFSET }, 24973 { 0xf9f2, 11807, UNICODE_NOT_PRESENT_OFFSET }, 24974 { 0xf9f3, 11811, UNICODE_NOT_PRESENT_OFFSET }, 24975 { 0xf9f4, 11815, UNICODE_NOT_PRESENT_OFFSET }, 24976 { 0xf9f5, 11819, UNICODE_NOT_PRESENT_OFFSET }, 24977 { 0xf9f6, 11823, UNICODE_NOT_PRESENT_OFFSET }, 24978 { 0xf9f7, 6645, UNICODE_NOT_PRESENT_OFFSET }, 24979 { 0xf9f8, 11827, UNICODE_NOT_PRESENT_OFFSET }, 24980 { 0xf9f9, 11831, UNICODE_NOT_PRESENT_OFFSET }, 24981 { 0xf9fa, 11835, UNICODE_NOT_PRESENT_OFFSET }, 24982 { 0xf9fb, 11839, UNICODE_NOT_PRESENT_OFFSET }, 24983 { 0xf9fc, 11843, UNICODE_NOT_PRESENT_OFFSET }, 24984 { 0xf9fd, 11847, UNICODE_NOT_PRESENT_OFFSET }, 24985 { 0xf9fe, 11851, UNICODE_NOT_PRESENT_OFFSET }, 24986 { 0xf9ff, 11855, UNICODE_NOT_PRESENT_OFFSET }, 24987 { 0xfa00, 11859, UNICODE_NOT_PRESENT_OFFSET }, 24988 { 0xfa01, 11863, UNICODE_NOT_PRESENT_OFFSET }, 24989 { 0xfa02, 11867, UNICODE_NOT_PRESENT_OFFSET }, 24990 { 0xfa03, 11871, UNICODE_NOT_PRESENT_OFFSET }, 24991 { 0xfa04, 11875, UNICODE_NOT_PRESENT_OFFSET }, 24992 { 0xfa05, 11879, UNICODE_NOT_PRESENT_OFFSET }, 24993 { 0xfa06, 11883, UNICODE_NOT_PRESENT_OFFSET }, 24994 { 0xfa07, 11887, UNICODE_NOT_PRESENT_OFFSET }, 24995 { 0xfa08, 6753, UNICODE_NOT_PRESENT_OFFSET }, 24996 { 0xfa09, 11891, UNICODE_NOT_PRESENT_OFFSET }, 24997 { 0xfa0a, 6765, UNICODE_NOT_PRESENT_OFFSET }, 24998 { 0xfa0b, 11895, UNICODE_NOT_PRESENT_OFFSET }, 24999 { 0xfa0c, 11899, UNICODE_NOT_PRESENT_OFFSET }, 25000 { 0xfa0d, 11903, UNICODE_NOT_PRESENT_OFFSET }, 25001 { 0xfa10, 11907, UNICODE_NOT_PRESENT_OFFSET }, 25002 { 0xfa12, 11911, UNICODE_NOT_PRESENT_OFFSET }, 25003 { 0xfa15, 11915, UNICODE_NOT_PRESENT_OFFSET }, 25004 { 0xfa16, 11919, UNICODE_NOT_PRESENT_OFFSET }, 25005 { 0xfa17, 11923, UNICODE_NOT_PRESENT_OFFSET }, 25006 { 0xfa18, 11927, UNICODE_NOT_PRESENT_OFFSET }, 25007 { 0xfa19, 11931, UNICODE_NOT_PRESENT_OFFSET }, 25008 { 0xfa1a, 11935, UNICODE_NOT_PRESENT_OFFSET }, 25009 { 0xfa1b, 11939, UNICODE_NOT_PRESENT_OFFSET }, 25010 { 0xfa1c, 11943, UNICODE_NOT_PRESENT_OFFSET }, 25011 { 0xfa1d, 11947, UNICODE_NOT_PRESENT_OFFSET }, 25012 { 0xfa1e, 6673, UNICODE_NOT_PRESENT_OFFSET }, 25013 { 0xfa20, 11951, UNICODE_NOT_PRESENT_OFFSET }, 25014 { 0xfa22, 11955, UNICODE_NOT_PRESENT_OFFSET }, 25015 { 0xfa25, 11959, UNICODE_NOT_PRESENT_OFFSET }, 25016 { 0xfa26, 11963, UNICODE_NOT_PRESENT_OFFSET }, 25017 { 0xfa2a, 11967, UNICODE_NOT_PRESENT_OFFSET }, 25018 { 0xfa2b, 11971, UNICODE_NOT_PRESENT_OFFSET }, 25019 { 0xfa2c, 11975, UNICODE_NOT_PRESENT_OFFSET }, 25020 { 0xfa2d, 11979, UNICODE_NOT_PRESENT_OFFSET }, 25021 { 0xfa2e, 11983, UNICODE_NOT_PRESENT_OFFSET }, 25022 { 0xfa2f, 11987, UNICODE_NOT_PRESENT_OFFSET }, 25023 { 0xfa30, 11991, UNICODE_NOT_PRESENT_OFFSET }, 25024 { 0xfa31, 11995, UNICODE_NOT_PRESENT_OFFSET }, 25025 { 0xfa32, 11999, UNICODE_NOT_PRESENT_OFFSET }, 25026 { 0xfa33, 12003, UNICODE_NOT_PRESENT_OFFSET }, 25027 { 0xfa34, 12007, UNICODE_NOT_PRESENT_OFFSET }, 25028 { 0xfa35, 12011, UNICODE_NOT_PRESENT_OFFSET }, 25029 { 0xfa36, 12015, UNICODE_NOT_PRESENT_OFFSET }, 25030 { 0xfa37, 12019, UNICODE_NOT_PRESENT_OFFSET }, 25031 { 0xfa38, 12023, UNICODE_NOT_PRESENT_OFFSET }, 25032 { 0xfa39, 12027, UNICODE_NOT_PRESENT_OFFSET }, 25033 { 0xfa3a, 12031, UNICODE_NOT_PRESENT_OFFSET }, 25034 { 0xfa3b, 12035, UNICODE_NOT_PRESENT_OFFSET }, 25035 { 0xfa3c, 6357, UNICODE_NOT_PRESENT_OFFSET }, 25036 { 0xfa3d, 12039, UNICODE_NOT_PRESENT_OFFSET }, 25037 { 0xfa3e, 12043, UNICODE_NOT_PRESENT_OFFSET }, 25038 { 0xfa3f, 12047, UNICODE_NOT_PRESENT_OFFSET }, 25039 { 0xfa40, 12051, UNICODE_NOT_PRESENT_OFFSET }, 25040 { 0xfa41, 12055, UNICODE_NOT_PRESENT_OFFSET }, 25041 { 0xfa42, 12059, UNICODE_NOT_PRESENT_OFFSET }, 25042 { 0xfa43, 12063, UNICODE_NOT_PRESENT_OFFSET }, 25043 { 0xfa44, 12067, UNICODE_NOT_PRESENT_OFFSET }, 25044 { 0xfa45, 12071, UNICODE_NOT_PRESENT_OFFSET }, 25045 { 0xfa46, 12075, UNICODE_NOT_PRESENT_OFFSET }, 25046 { 0xfa47, 12079, UNICODE_NOT_PRESENT_OFFSET }, 25047 { 0xfa48, 12083, UNICODE_NOT_PRESENT_OFFSET }, 25048 { 0xfa49, 12087, UNICODE_NOT_PRESENT_OFFSET }, 25049 { 0xfa4a, 12091, UNICODE_NOT_PRESENT_OFFSET }, 25050 { 0xfa4b, 12095, UNICODE_NOT_PRESENT_OFFSET }, 25051 { 0xfa4c, 8582, UNICODE_NOT_PRESENT_OFFSET }, 25052 { 0xfa4d, 12099, UNICODE_NOT_PRESENT_OFFSET }, 25053 { 0xfa4e, 12103, UNICODE_NOT_PRESENT_OFFSET }, 25054 { 0xfa4f, 12107, UNICODE_NOT_PRESENT_OFFSET }, 25055 { 0xfa50, 12111, UNICODE_NOT_PRESENT_OFFSET }, 25056 { 0xfa51, 8598, UNICODE_NOT_PRESENT_OFFSET }, 25057 { 0xfa52, 12115, UNICODE_NOT_PRESENT_OFFSET }, 25058 { 0xfa53, 12119, UNICODE_NOT_PRESENT_OFFSET }, 25059 { 0xfa54, 12123, UNICODE_NOT_PRESENT_OFFSET }, 25060 { 0xfa55, 12127, UNICODE_NOT_PRESENT_OFFSET }, 25061 { 0xfa56, 12131, UNICODE_NOT_PRESENT_OFFSET }, 25062 { 0xfa57, 11467, UNICODE_NOT_PRESENT_OFFSET }, 25063 { 0xfa58, 12135, UNICODE_NOT_PRESENT_OFFSET }, 25064 { 0xfa59, 12139, UNICODE_NOT_PRESENT_OFFSET }, 25065 { 0xfa5a, 12143, UNICODE_NOT_PRESENT_OFFSET }, 25066 { 0xfa5b, 12147, UNICODE_NOT_PRESENT_OFFSET }, 25067 { 0xfa5c, 12151, UNICODE_NOT_PRESENT_OFFSET }, 25068 { 0xfa5d, 12155, UNICODE_NOT_PRESENT_OFFSET }, 25069 { 0xfa5e, 12155, UNICODE_NOT_PRESENT_OFFSET }, 25070 { 0xfa5f, 12159, UNICODE_NOT_PRESENT_OFFSET }, 25071 { 0xfa60, 12163, UNICODE_NOT_PRESENT_OFFSET }, 25072 { 0xfa61, 12167, UNICODE_NOT_PRESENT_OFFSET }, 25073 { 0xfa62, 12171, UNICODE_NOT_PRESENT_OFFSET }, 25074 { 0xfa63, 12175, UNICODE_NOT_PRESENT_OFFSET }, 25075 { 0xfa64, 12179, UNICODE_NOT_PRESENT_OFFSET }, 25076 { 0xfa65, 12183, UNICODE_NOT_PRESENT_OFFSET }, 25077 { 0xfa66, 12187, UNICODE_NOT_PRESENT_OFFSET }, 25078 { 0xfa67, 11959, UNICODE_NOT_PRESENT_OFFSET }, 25079 { 0xfa68, 12191, UNICODE_NOT_PRESENT_OFFSET }, 25080 { 0xfa69, 12195, UNICODE_NOT_PRESENT_OFFSET }, 25081 { 0xfa6a, 12199, UNICODE_NOT_PRESENT_OFFSET }, 25082 { 0xfa6b, 12203, UNICODE_NOT_PRESENT_OFFSET }, 25083 { 0xfa6c, 12207, UNICODE_NOT_PRESENT_OFFSET }, 25084 { 0xfa6d, 12212, UNICODE_NOT_PRESENT_OFFSET }, 25085 { 0xfa70, 12216, UNICODE_NOT_PRESENT_OFFSET }, 25086 { 0xfa71, 12220, UNICODE_NOT_PRESENT_OFFSET }, 25087 { 0xfa72, 12224, UNICODE_NOT_PRESENT_OFFSET }, 25088 { 0xfa73, 12228, UNICODE_NOT_PRESENT_OFFSET }, 25089 { 0xfa74, 12232, UNICODE_NOT_PRESENT_OFFSET }, 25090 { 0xfa75, 12236, UNICODE_NOT_PRESENT_OFFSET }, 25091 { 0xfa76, 12240, UNICODE_NOT_PRESENT_OFFSET }, 25092 { 0xfa77, 12244, UNICODE_NOT_PRESENT_OFFSET }, 25093 { 0xfa78, 12015, UNICODE_NOT_PRESENT_OFFSET }, 25094 { 0xfa79, 12248, UNICODE_NOT_PRESENT_OFFSET }, 25095 { 0xfa7a, 12252, UNICODE_NOT_PRESENT_OFFSET }, 25096 { 0xfa7b, 12256, UNICODE_NOT_PRESENT_OFFSET }, 25097 { 0xfa7c, 11907, UNICODE_NOT_PRESENT_OFFSET }, 25098 { 0xfa7d, 12260, UNICODE_NOT_PRESENT_OFFSET }, 25099 { 0xfa7e, 12264, UNICODE_NOT_PRESENT_OFFSET }, 25100 { 0xfa7f, 12268, UNICODE_NOT_PRESENT_OFFSET }, 25101 { 0xfa80, 12272, UNICODE_NOT_PRESENT_OFFSET }, 25102 { 0xfa81, 12276, UNICODE_NOT_PRESENT_OFFSET }, 25103 { 0xfa82, 12280, UNICODE_NOT_PRESENT_OFFSET }, 25104 { 0xfa83, 12284, UNICODE_NOT_PRESENT_OFFSET }, 25105 { 0xfa84, 12288, UNICODE_NOT_PRESENT_OFFSET }, 25106 { 0xfa85, 12292, UNICODE_NOT_PRESENT_OFFSET }, 25107 { 0xfa86, 12296, UNICODE_NOT_PRESENT_OFFSET }, 25108 { 0xfa87, 12300, UNICODE_NOT_PRESENT_OFFSET }, 25109 { 0xfa88, 12304, UNICODE_NOT_PRESENT_OFFSET }, 25110 { 0xfa89, 12047, UNICODE_NOT_PRESENT_OFFSET }, 25111 { 0xfa8a, 12308, UNICODE_NOT_PRESENT_OFFSET }, 25112 { 0xfa8b, 12051, UNICODE_NOT_PRESENT_OFFSET }, 25113 { 0xfa8c, 12312, UNICODE_NOT_PRESENT_OFFSET }, 25114 { 0xfa8d, 12316, UNICODE_NOT_PRESENT_OFFSET }, 25115 { 0xfa8e, 12320, UNICODE_NOT_PRESENT_OFFSET }, 25116 { 0xfa8f, 12324, UNICODE_NOT_PRESENT_OFFSET }, 25117 { 0xfa90, 12328, UNICODE_NOT_PRESENT_OFFSET }, 25118 { 0xfa91, 11911, UNICODE_NOT_PRESENT_OFFSET }, 25119 { 0xfa92, 11055, UNICODE_NOT_PRESENT_OFFSET }, 25120 { 0xfa93, 12332, UNICODE_NOT_PRESENT_OFFSET }, 25121 { 0xfa94, 12336, UNICODE_NOT_PRESENT_OFFSET }, 25122 { 0xfa95, 6489, UNICODE_NOT_PRESENT_OFFSET }, 25123 { 0xfa96, 11327, UNICODE_NOT_PRESENT_OFFSET }, 25124 { 0xfa97, 11659, UNICODE_NOT_PRESENT_OFFSET }, 25125 { 0xfa98, 12340, UNICODE_NOT_PRESENT_OFFSET }, 25126 { 0xfa99, 12344, UNICODE_NOT_PRESENT_OFFSET }, 25127 { 0xfa9a, 12079, UNICODE_NOT_PRESENT_OFFSET }, 25128 { 0xfa9b, 12348, UNICODE_NOT_PRESENT_OFFSET }, 25129 { 0xfa9c, 12083, UNICODE_NOT_PRESENT_OFFSET }, 25130 { 0xfa9d, 12352, UNICODE_NOT_PRESENT_OFFSET }, 25131 { 0xfa9e, 12356, UNICODE_NOT_PRESENT_OFFSET }, 25132 { 0xfa9f, 12360, UNICODE_NOT_PRESENT_OFFSET }, 25133 { 0xfaa0, 11919, UNICODE_NOT_PRESENT_OFFSET }, 25134 { 0xfaa1, 12364, UNICODE_NOT_PRESENT_OFFSET }, 25135 { 0xfaa2, 12368, UNICODE_NOT_PRESENT_OFFSET }, 25136 { 0xfaa3, 12372, UNICODE_NOT_PRESENT_OFFSET }, 25137 { 0xfaa4, 12376, UNICODE_NOT_PRESENT_OFFSET }, 25138 { 0xfaa5, 12380, UNICODE_NOT_PRESENT_OFFSET }, 25139 { 0xfaa6, 11923, UNICODE_NOT_PRESENT_OFFSET }, 25140 { 0xfaa7, 12384, UNICODE_NOT_PRESENT_OFFSET }, 25141 { 0xfaa8, 12388, UNICODE_NOT_PRESENT_OFFSET }, 25142 { 0xfaa9, 12392, UNICODE_NOT_PRESENT_OFFSET }, 25143 { 0xfaaa, 12396, UNICODE_NOT_PRESENT_OFFSET }, 25144 { 0xfaab, 12400, UNICODE_NOT_PRESENT_OFFSET }, 25145 { 0xfaac, 12404, UNICODE_NOT_PRESENT_OFFSET }, 25146 { 0xfaad, 12131, UNICODE_NOT_PRESENT_OFFSET }, 25147 { 0xfaae, 12408, UNICODE_NOT_PRESENT_OFFSET }, 25148 { 0xfaaf, 12412, UNICODE_NOT_PRESENT_OFFSET }, 25149 { 0xfab0, 11467, UNICODE_NOT_PRESENT_OFFSET }, 25150 { 0xfab1, 12416, UNICODE_NOT_PRESENT_OFFSET }, 25151 { 0xfab2, 12147, UNICODE_NOT_PRESENT_OFFSET }, 25152 { 0xfab3, 12420, UNICODE_NOT_PRESENT_OFFSET }, 25153 { 0xfab4, 12424, UNICODE_NOT_PRESENT_OFFSET }, 25154 { 0xfab5, 12428, UNICODE_NOT_PRESENT_OFFSET }, 25155 { 0xfab6, 12432, UNICODE_NOT_PRESENT_OFFSET }, 25156 { 0xfab7, 12436, UNICODE_NOT_PRESENT_OFFSET }, 25157 { 0xfab8, 12167, UNICODE_NOT_PRESENT_OFFSET }, 25158 { 0xfab9, 12440, UNICODE_NOT_PRESENT_OFFSET }, 25159 { 0xfaba, 11955, UNICODE_NOT_PRESENT_OFFSET }, 25160 { 0xfabb, 12444, UNICODE_NOT_PRESENT_OFFSET }, 25161 { 0xfabc, 12171, UNICODE_NOT_PRESENT_OFFSET }, 25162 { 0xfabd, 11251, UNICODE_NOT_PRESENT_OFFSET }, 25163 { 0xfabe, 12448, UNICODE_NOT_PRESENT_OFFSET }, 25164 { 0xfabf, 12175, UNICODE_NOT_PRESENT_OFFSET }, 25165 { 0xfac0, 12452, UNICODE_NOT_PRESENT_OFFSET }, 25166 { 0xfac1, 12183, UNICODE_NOT_PRESENT_OFFSET }, 25167 { 0xfac2, 12456, UNICODE_NOT_PRESENT_OFFSET }, 25168 { 0xfac3, 12460, UNICODE_NOT_PRESENT_OFFSET }, 25169 { 0xfac4, 12464, UNICODE_NOT_PRESENT_OFFSET }, 25170 { 0xfac5, 12468, UNICODE_NOT_PRESENT_OFFSET }, 25171 { 0xfac6, 12472, UNICODE_NOT_PRESENT_OFFSET }, 25172 { 0xfac7, 12191, UNICODE_NOT_PRESENT_OFFSET }, 25173 { 0xfac8, 11943, UNICODE_NOT_PRESENT_OFFSET }, 25174 { 0xfac9, 12476, UNICODE_NOT_PRESENT_OFFSET }, 25175 { 0xfaca, 12195, UNICODE_NOT_PRESENT_OFFSET }, 25176 { 0xfacb, 12480, UNICODE_NOT_PRESENT_OFFSET }, 25177 { 0xfacc, 12199, UNICODE_NOT_PRESENT_OFFSET }, 25178 { 0xfacd, 12484, UNICODE_NOT_PRESENT_OFFSET }, 25179 { 0xface, 7029, UNICODE_NOT_PRESENT_OFFSET }, 25180 { 0xfacf, 12488, UNICODE_NOT_PRESENT_OFFSET }, 25181 { 0xfad0, 12493, UNICODE_NOT_PRESENT_OFFSET }, 25182 { 0xfad1, 12498, UNICODE_NOT_PRESENT_OFFSET }, 25183 { 0xfad2, 12503, UNICODE_NOT_PRESENT_OFFSET }, 25184 { 0xfad3, 12507, UNICODE_NOT_PRESENT_OFFSET }, 25185 { 0xfad4, 12511, UNICODE_NOT_PRESENT_OFFSET }, 25186 { 0xfad5, 12515, UNICODE_NOT_PRESENT_OFFSET }, 25187 { 0xfad6, 12520, UNICODE_NOT_PRESENT_OFFSET }, 25188 { 0xfad7, 12525, UNICODE_NOT_PRESENT_OFFSET }, 25189 { 0xfad8, 12530, UNICODE_NOT_PRESENT_OFFSET }, 25190 { 0xfad9, 12534, UNICODE_NOT_PRESENT_OFFSET }, 25191 { 0xfb00, UNICODE_NOT_PRESENT_OFFSET, 12538 }, 25192 { 0xfb01, UNICODE_NOT_PRESENT_OFFSET, 12541 }, 25193 { 0xfb02, UNICODE_NOT_PRESENT_OFFSET, 12544 }, 25194 { 0xfb03, UNICODE_NOT_PRESENT_OFFSET, 12547 }, 25195 { 0xfb04, UNICODE_NOT_PRESENT_OFFSET, 12551 }, 25196 { 0xfb05, UNICODE_NOT_PRESENT_OFFSET, 12555 }, 25197 { 0xfb06, UNICODE_NOT_PRESENT_OFFSET, 12555 }, 25198 { 0xfb13, UNICODE_NOT_PRESENT_OFFSET, 12558 }, 25199 { 0xfb14, UNICODE_NOT_PRESENT_OFFSET, 12563 }, 25200 { 0xfb15, UNICODE_NOT_PRESENT_OFFSET, 12568 }, 25201 { 0xfb16, UNICODE_NOT_PRESENT_OFFSET, 12573 }, 25202 { 0xfb17, UNICODE_NOT_PRESENT_OFFSET, 12578 }, 25203 { 0xfb1d, 12583, UNICODE_NOT_PRESENT_OFFSET }, 25204 { 0xfb1f, 12588, UNICODE_NOT_PRESENT_OFFSET }, 25205 { 0xfb20, UNICODE_NOT_PRESENT_OFFSET, 12593 }, 25206 { 0xfb21, UNICODE_NOT_PRESENT_OFFSET, 5338 }, 25207 { 0xfb22, UNICODE_NOT_PRESENT_OFFSET, 5347 }, 25208 { 0xfb23, UNICODE_NOT_PRESENT_OFFSET, 12596 }, 25209 { 0xfb24, UNICODE_NOT_PRESENT_OFFSET, 12599 }, 25210 { 0xfb25, UNICODE_NOT_PRESENT_OFFSET, 12602 }, 25211 { 0xfb26, UNICODE_NOT_PRESENT_OFFSET, 12605 }, 25212 { 0xfb27, UNICODE_NOT_PRESENT_OFFSET, 12608 }, 25213 { 0xfb28, UNICODE_NOT_PRESENT_OFFSET, 12611 }, 25214 { 0xfb29, UNICODE_NOT_PRESENT_OFFSET, 5267 }, 25215 { 0xfb2a, 12614, UNICODE_NOT_PRESENT_OFFSET }, 25216 { 0xfb2b, 12619, UNICODE_NOT_PRESENT_OFFSET }, 25217 { 0xfb2c, 12624, UNICODE_NOT_PRESENT_OFFSET }, 25218 { 0xfb2d, 12631, UNICODE_NOT_PRESENT_OFFSET }, 25219 { 0xfb2e, 12638, UNICODE_NOT_PRESENT_OFFSET }, 25220 { 0xfb2f, 12643, UNICODE_NOT_PRESENT_OFFSET }, 25221 { 0xfb30, 12648, UNICODE_NOT_PRESENT_OFFSET }, 25222 { 0xfb31, 12653, UNICODE_NOT_PRESENT_OFFSET }, 25223 { 0xfb32, 12658, UNICODE_NOT_PRESENT_OFFSET }, 25224 { 0xfb33, 12663, UNICODE_NOT_PRESENT_OFFSET }, 25225 { 0xfb34, 12668, UNICODE_NOT_PRESENT_OFFSET }, 25226 { 0xfb35, 12673, UNICODE_NOT_PRESENT_OFFSET }, 25227 { 0xfb36, 12678, UNICODE_NOT_PRESENT_OFFSET }, 25228 { 0xfb38, 12683, UNICODE_NOT_PRESENT_OFFSET }, 25229 { 0xfb39, 12688, UNICODE_NOT_PRESENT_OFFSET }, 25230 { 0xfb3a, 12693, UNICODE_NOT_PRESENT_OFFSET }, 25231 { 0xfb3b, 12698, UNICODE_NOT_PRESENT_OFFSET }, 25232 { 0xfb3c, 12703, UNICODE_NOT_PRESENT_OFFSET }, 25233 { 0xfb3e, 12708, UNICODE_NOT_PRESENT_OFFSET }, 25234 { 0xfb40, 12713, UNICODE_NOT_PRESENT_OFFSET }, 25235 { 0xfb41, 12718, UNICODE_NOT_PRESENT_OFFSET }, 25236 { 0xfb43, 12723, UNICODE_NOT_PRESENT_OFFSET }, 25237 { 0xfb44, 12728, UNICODE_NOT_PRESENT_OFFSET }, 25238 { 0xfb46, 12733, UNICODE_NOT_PRESENT_OFFSET }, 25239 { 0xfb47, 12738, UNICODE_NOT_PRESENT_OFFSET }, 25240 { 0xfb48, 12743, UNICODE_NOT_PRESENT_OFFSET }, 25241 { 0xfb49, 12748, UNICODE_NOT_PRESENT_OFFSET }, 25242 { 0xfb4a, 12753, UNICODE_NOT_PRESENT_OFFSET }, 25243 { 0xfb4b, 12758, UNICODE_NOT_PRESENT_OFFSET }, 25244 { 0xfb4c, 12763, UNICODE_NOT_PRESENT_OFFSET }, 25245 { 0xfb4d, 12768, UNICODE_NOT_PRESENT_OFFSET }, 25246 { 0xfb4e, 12773, UNICODE_NOT_PRESENT_OFFSET }, 25247 { 0xfb4f, UNICODE_NOT_PRESENT_OFFSET, 12778 }, 25248 { 0xfb50, UNICODE_NOT_PRESENT_OFFSET, 12783 }, 25249 { 0xfb51, UNICODE_NOT_PRESENT_OFFSET, 12783 }, 25250 { 0xfb52, UNICODE_NOT_PRESENT_OFFSET, 12786 }, 25251 { 0xfb53, UNICODE_NOT_PRESENT_OFFSET, 12786 }, 25252 { 0xfb54, UNICODE_NOT_PRESENT_OFFSET, 12786 }, 25253 { 0xfb55, UNICODE_NOT_PRESENT_OFFSET, 12786 }, 25254 { 0xfb56, UNICODE_NOT_PRESENT_OFFSET, 12789 }, 25255 { 0xfb57, UNICODE_NOT_PRESENT_OFFSET, 12789 }, 25256 { 0xfb58, UNICODE_NOT_PRESENT_OFFSET, 12789 }, 25257 { 0xfb59, UNICODE_NOT_PRESENT_OFFSET, 12789 }, 25258 { 0xfb5a, UNICODE_NOT_PRESENT_OFFSET, 12792 }, 25259 { 0xfb5b, UNICODE_NOT_PRESENT_OFFSET, 12792 }, 25260 { 0xfb5c, UNICODE_NOT_PRESENT_OFFSET, 12792 }, 25261 { 0xfb5d, UNICODE_NOT_PRESENT_OFFSET, 12792 }, 25262 { 0xfb5e, UNICODE_NOT_PRESENT_OFFSET, 12795 }, 25263 { 0xfb5f, UNICODE_NOT_PRESENT_OFFSET, 12795 }, 25264 { 0xfb60, UNICODE_NOT_PRESENT_OFFSET, 12795 }, 25265 { 0xfb61, UNICODE_NOT_PRESENT_OFFSET, 12795 }, 25266 { 0xfb62, UNICODE_NOT_PRESENT_OFFSET, 12798 }, 25267 { 0xfb63, UNICODE_NOT_PRESENT_OFFSET, 12798 }, 25268 { 0xfb64, UNICODE_NOT_PRESENT_OFFSET, 12798 }, 25269 { 0xfb65, UNICODE_NOT_PRESENT_OFFSET, 12798 }, 25270 { 0xfb66, UNICODE_NOT_PRESENT_OFFSET, 12801 }, 25271 { 0xfb67, UNICODE_NOT_PRESENT_OFFSET, 12801 }, 25272 { 0xfb68, UNICODE_NOT_PRESENT_OFFSET, 12801 }, 25273 { 0xfb69, UNICODE_NOT_PRESENT_OFFSET, 12801 }, 25274 { 0xfb6a, UNICODE_NOT_PRESENT_OFFSET, 12804 }, 25275 { 0xfb6b, UNICODE_NOT_PRESENT_OFFSET, 12804 }, 25276 { 0xfb6c, UNICODE_NOT_PRESENT_OFFSET, 12804 }, 25277 { 0xfb6d, UNICODE_NOT_PRESENT_OFFSET, 12804 }, 25278 { 0xfb6e, UNICODE_NOT_PRESENT_OFFSET, 12807 }, 25279 { 0xfb6f, UNICODE_NOT_PRESENT_OFFSET, 12807 }, 25280 { 0xfb70, UNICODE_NOT_PRESENT_OFFSET, 12807 }, 25281 { 0xfb71, UNICODE_NOT_PRESENT_OFFSET, 12807 }, 25282 { 0xfb72, UNICODE_NOT_PRESENT_OFFSET, 12810 }, 25283 { 0xfb73, UNICODE_NOT_PRESENT_OFFSET, 12810 }, 25284 { 0xfb74, UNICODE_NOT_PRESENT_OFFSET, 12810 }, 25285 { 0xfb75, UNICODE_NOT_PRESENT_OFFSET, 12810 }, 25286 { 0xfb76, UNICODE_NOT_PRESENT_OFFSET, 12813 }, 25287 { 0xfb77, UNICODE_NOT_PRESENT_OFFSET, 12813 }, 25288 { 0xfb78, UNICODE_NOT_PRESENT_OFFSET, 12813 }, 25289 { 0xfb79, UNICODE_NOT_PRESENT_OFFSET, 12813 }, 25290 { 0xfb7a, UNICODE_NOT_PRESENT_OFFSET, 12816 }, 25291 { 0xfb7b, UNICODE_NOT_PRESENT_OFFSET, 12816 }, 25292 { 0xfb7c, UNICODE_NOT_PRESENT_OFFSET, 12816 }, 25293 { 0xfb7d, UNICODE_NOT_PRESENT_OFFSET, 12816 }, 25294 { 0xfb7e, UNICODE_NOT_PRESENT_OFFSET, 12819 }, 25295 { 0xfb7f, UNICODE_NOT_PRESENT_OFFSET, 12819 }, 25296 { 0xfb80, UNICODE_NOT_PRESENT_OFFSET, 12819 }, 25297 { 0xfb81, UNICODE_NOT_PRESENT_OFFSET, 12819 }, 25298 { 0xfb82, UNICODE_NOT_PRESENT_OFFSET, 12822 }, 25299 { 0xfb83, UNICODE_NOT_PRESENT_OFFSET, 12822 }, 25300 { 0xfb84, UNICODE_NOT_PRESENT_OFFSET, 12825 }, 25301 { 0xfb85, UNICODE_NOT_PRESENT_OFFSET, 12825 }, 25302 { 0xfb86, UNICODE_NOT_PRESENT_OFFSET, 12828 }, 25303 { 0xfb87, UNICODE_NOT_PRESENT_OFFSET, 12828 }, 25304 { 0xfb88, UNICODE_NOT_PRESENT_OFFSET, 12831 }, 25305 { 0xfb89, UNICODE_NOT_PRESENT_OFFSET, 12831 }, 25306 { 0xfb8a, UNICODE_NOT_PRESENT_OFFSET, 12834 }, 25307 { 0xfb8b, UNICODE_NOT_PRESENT_OFFSET, 12834 }, 25308 { 0xfb8c, UNICODE_NOT_PRESENT_OFFSET, 12837 }, 25309 { 0xfb8d, UNICODE_NOT_PRESENT_OFFSET, 12837 }, 25310 { 0xfb8e, UNICODE_NOT_PRESENT_OFFSET, 12840 }, 25311 { 0xfb8f, UNICODE_NOT_PRESENT_OFFSET, 12840 }, 25312 { 0xfb90, UNICODE_NOT_PRESENT_OFFSET, 12840 }, 25313 { 0xfb91, UNICODE_NOT_PRESENT_OFFSET, 12840 }, 25314 { 0xfb92, UNICODE_NOT_PRESENT_OFFSET, 12843 }, 25315 { 0xfb93, UNICODE_NOT_PRESENT_OFFSET, 12843 }, 25316 { 0xfb94, UNICODE_NOT_PRESENT_OFFSET, 12843 }, 25317 { 0xfb95, UNICODE_NOT_PRESENT_OFFSET, 12843 }, 25318 { 0xfb96, UNICODE_NOT_PRESENT_OFFSET, 12846 }, 25319 { 0xfb97, UNICODE_NOT_PRESENT_OFFSET, 12846 }, 25320 { 0xfb98, UNICODE_NOT_PRESENT_OFFSET, 12846 }, 25321 { 0xfb99, UNICODE_NOT_PRESENT_OFFSET, 12846 }, 25322 { 0xfb9a, UNICODE_NOT_PRESENT_OFFSET, 12849 }, 25323 { 0xfb9b, UNICODE_NOT_PRESENT_OFFSET, 12849 }, 25324 { 0xfb9c, UNICODE_NOT_PRESENT_OFFSET, 12849 }, 25325 { 0xfb9d, UNICODE_NOT_PRESENT_OFFSET, 12849 }, 25326 { 0xfb9e, UNICODE_NOT_PRESENT_OFFSET, 12852 }, 25327 { 0xfb9f, UNICODE_NOT_PRESENT_OFFSET, 12852 }, 25328 { 0xfba0, UNICODE_NOT_PRESENT_OFFSET, 12855 }, 25329 { 0xfba1, UNICODE_NOT_PRESENT_OFFSET, 12855 }, 25330 { 0xfba2, UNICODE_NOT_PRESENT_OFFSET, 12855 }, 25331 { 0xfba3, UNICODE_NOT_PRESENT_OFFSET, 12855 }, 25332 { 0xfba4, UNICODE_NOT_PRESENT_OFFSET, 1721 }, 25333 { 0xfba5, UNICODE_NOT_PRESENT_OFFSET, 1721 }, 25334 { 0xfba6, UNICODE_NOT_PRESENT_OFFSET, 12858 }, 25335 { 0xfba7, UNICODE_NOT_PRESENT_OFFSET, 12858 }, 25336 { 0xfba8, UNICODE_NOT_PRESENT_OFFSET, 12858 }, 25337 { 0xfba9, UNICODE_NOT_PRESENT_OFFSET, 12858 }, 25338 { 0xfbaa, UNICODE_NOT_PRESENT_OFFSET, 12861 }, 25339 { 0xfbab, UNICODE_NOT_PRESENT_OFFSET, 12861 }, 25340 { 0xfbac, UNICODE_NOT_PRESENT_OFFSET, 12861 }, 25341 { 0xfbad, UNICODE_NOT_PRESENT_OFFSET, 12861 }, 25342 { 0xfbae, UNICODE_NOT_PRESENT_OFFSET, 12864 }, 25343 { 0xfbaf, UNICODE_NOT_PRESENT_OFFSET, 12864 }, 25344 { 0xfbb0, UNICODE_NOT_PRESENT_OFFSET, 1731 }, 25345 { 0xfbb1, UNICODE_NOT_PRESENT_OFFSET, 1731 }, 25346 { 0xfbd3, UNICODE_NOT_PRESENT_OFFSET, 12867 }, 25347 { 0xfbd4, UNICODE_NOT_PRESENT_OFFSET, 12867 }, 25348 { 0xfbd5, UNICODE_NOT_PRESENT_OFFSET, 12867 }, 25349 { 0xfbd6, UNICODE_NOT_PRESENT_OFFSET, 12867 }, 25350 { 0xfbd7, UNICODE_NOT_PRESENT_OFFSET, 12870 }, 25351 { 0xfbd8, UNICODE_NOT_PRESENT_OFFSET, 12870 }, 25352 { 0xfbd9, UNICODE_NOT_PRESENT_OFFSET, 12873 }, 25353 { 0xfbda, UNICODE_NOT_PRESENT_OFFSET, 12873 }, 25354 { 0xfbdb, UNICODE_NOT_PRESENT_OFFSET, 12876 }, 25355 { 0xfbdc, UNICODE_NOT_PRESENT_OFFSET, 12876 }, 25356 { 0xfbdd, UNICODE_NOT_PRESENT_OFFSET, 1711 }, 25357 { 0xfbde, UNICODE_NOT_PRESENT_OFFSET, 12879 }, 25358 { 0xfbdf, UNICODE_NOT_PRESENT_OFFSET, 12879 }, 25359 { 0xfbe0, UNICODE_NOT_PRESENT_OFFSET, 12882 }, 25360 { 0xfbe1, UNICODE_NOT_PRESENT_OFFSET, 12882 }, 25361 { 0xfbe2, UNICODE_NOT_PRESENT_OFFSET, 12885 }, 25362 { 0xfbe3, UNICODE_NOT_PRESENT_OFFSET, 12885 }, 25363 { 0xfbe4, UNICODE_NOT_PRESENT_OFFSET, 12888 }, 25364 { 0xfbe5, UNICODE_NOT_PRESENT_OFFSET, 12888 }, 25365 { 0xfbe6, UNICODE_NOT_PRESENT_OFFSET, 12888 }, 25366 { 0xfbe7, UNICODE_NOT_PRESENT_OFFSET, 12888 }, 25367 { 0xfbe8, UNICODE_NOT_PRESENT_OFFSET, 12891 }, 25368 { 0xfbe9, UNICODE_NOT_PRESENT_OFFSET, 12891 }, 25369 { 0xfbea, UNICODE_NOT_PRESENT_OFFSET, 12894 }, 25370 { 0xfbeb, UNICODE_NOT_PRESENT_OFFSET, 12894 }, 25371 { 0xfbec, UNICODE_NOT_PRESENT_OFFSET, 12901 }, 25372 { 0xfbed, UNICODE_NOT_PRESENT_OFFSET, 12901 }, 25373 { 0xfbee, UNICODE_NOT_PRESENT_OFFSET, 12908 }, 25374 { 0xfbef, UNICODE_NOT_PRESENT_OFFSET, 12908 }, 25375 { 0xfbf0, UNICODE_NOT_PRESENT_OFFSET, 12915 }, 25376 { 0xfbf1, UNICODE_NOT_PRESENT_OFFSET, 12915 }, 25377 { 0xfbf2, UNICODE_NOT_PRESENT_OFFSET, 12922 }, 25378 { 0xfbf3, UNICODE_NOT_PRESENT_OFFSET, 12922 }, 25379 { 0xfbf4, UNICODE_NOT_PRESENT_OFFSET, 12929 }, 25380 { 0xfbf5, UNICODE_NOT_PRESENT_OFFSET, 12929 }, 25381 { 0xfbf6, UNICODE_NOT_PRESENT_OFFSET, 12936 }, 25382 { 0xfbf7, UNICODE_NOT_PRESENT_OFFSET, 12936 }, 25383 { 0xfbf8, UNICODE_NOT_PRESENT_OFFSET, 12936 }, 25384 { 0xfbf9, UNICODE_NOT_PRESENT_OFFSET, 12943 }, 25385 { 0xfbfa, UNICODE_NOT_PRESENT_OFFSET, 12943 }, 25386 { 0xfbfb, UNICODE_NOT_PRESENT_OFFSET, 12943 }, 25387 { 0xfbfc, UNICODE_NOT_PRESENT_OFFSET, 12950 }, 25388 { 0xfbfd, UNICODE_NOT_PRESENT_OFFSET, 12950 }, 25389 { 0xfbfe, UNICODE_NOT_PRESENT_OFFSET, 12950 }, 25390 { 0xfbff, UNICODE_NOT_PRESENT_OFFSET, 12950 }, 25391 { 0xfc00, UNICODE_NOT_PRESENT_OFFSET, 12953 }, 25392 { 0xfc01, UNICODE_NOT_PRESENT_OFFSET, 12960 }, 25393 { 0xfc02, UNICODE_NOT_PRESENT_OFFSET, 12967 }, 25394 { 0xfc03, UNICODE_NOT_PRESENT_OFFSET, 12943 }, 25395 { 0xfc04, UNICODE_NOT_PRESENT_OFFSET, 12974 }, 25396 { 0xfc05, UNICODE_NOT_PRESENT_OFFSET, 12981 }, 25397 { 0xfc06, UNICODE_NOT_PRESENT_OFFSET, 12986 }, 25398 { 0xfc07, UNICODE_NOT_PRESENT_OFFSET, 12991 }, 25399 { 0xfc08, UNICODE_NOT_PRESENT_OFFSET, 12996 }, 25400 { 0xfc09, UNICODE_NOT_PRESENT_OFFSET, 13001 }, 25401 { 0xfc0a, UNICODE_NOT_PRESENT_OFFSET, 13006 }, 25402 { 0xfc0b, UNICODE_NOT_PRESENT_OFFSET, 13011 }, 25403 { 0xfc0c, UNICODE_NOT_PRESENT_OFFSET, 13016 }, 25404 { 0xfc0d, UNICODE_NOT_PRESENT_OFFSET, 13021 }, 25405 { 0xfc0e, UNICODE_NOT_PRESENT_OFFSET, 13026 }, 25406 { 0xfc0f, UNICODE_NOT_PRESENT_OFFSET, 13031 }, 25407 { 0xfc10, UNICODE_NOT_PRESENT_OFFSET, 13036 }, 25408 { 0xfc11, UNICODE_NOT_PRESENT_OFFSET, 13041 }, 25409 { 0xfc12, UNICODE_NOT_PRESENT_OFFSET, 13046 }, 25410 { 0xfc13, UNICODE_NOT_PRESENT_OFFSET, 13051 }, 25411 { 0xfc14, UNICODE_NOT_PRESENT_OFFSET, 13056 }, 25412 { 0xfc15, UNICODE_NOT_PRESENT_OFFSET, 13061 }, 25413 { 0xfc16, UNICODE_NOT_PRESENT_OFFSET, 13066 }, 25414 { 0xfc17, UNICODE_NOT_PRESENT_OFFSET, 13071 }, 25415 { 0xfc18, UNICODE_NOT_PRESENT_OFFSET, 13076 }, 25416 { 0xfc19, UNICODE_NOT_PRESENT_OFFSET, 13081 }, 25417 { 0xfc1a, UNICODE_NOT_PRESENT_OFFSET, 13086 }, 25418 { 0xfc1b, UNICODE_NOT_PRESENT_OFFSET, 13091 }, 25419 { 0xfc1c, UNICODE_NOT_PRESENT_OFFSET, 13096 }, 25420 { 0xfc1d, UNICODE_NOT_PRESENT_OFFSET, 13101 }, 25421 { 0xfc1e, UNICODE_NOT_PRESENT_OFFSET, 13106 }, 25422 { 0xfc1f, UNICODE_NOT_PRESENT_OFFSET, 13111 }, 25423 { 0xfc20, UNICODE_NOT_PRESENT_OFFSET, 13116 }, 25424 { 0xfc21, UNICODE_NOT_PRESENT_OFFSET, 13121 }, 25425 { 0xfc22, UNICODE_NOT_PRESENT_OFFSET, 13126 }, 25426 { 0xfc23, UNICODE_NOT_PRESENT_OFFSET, 13131 }, 25427 { 0xfc24, UNICODE_NOT_PRESENT_OFFSET, 13136 }, 25428 { 0xfc25, UNICODE_NOT_PRESENT_OFFSET, 13141 }, 25429 { 0xfc26, UNICODE_NOT_PRESENT_OFFSET, 13146 }, 25430 { 0xfc27, UNICODE_NOT_PRESENT_OFFSET, 13151 }, 25431 { 0xfc28, UNICODE_NOT_PRESENT_OFFSET, 13156 }, 25432 { 0xfc29, UNICODE_NOT_PRESENT_OFFSET, 13161 }, 25433 { 0xfc2a, UNICODE_NOT_PRESENT_OFFSET, 13166 }, 25434 { 0xfc2b, UNICODE_NOT_PRESENT_OFFSET, 13171 }, 25435 { 0xfc2c, UNICODE_NOT_PRESENT_OFFSET, 13176 }, 25436 { 0xfc2d, UNICODE_NOT_PRESENT_OFFSET, 13181 }, 25437 { 0xfc2e, UNICODE_NOT_PRESENT_OFFSET, 13186 }, 25438 { 0xfc2f, UNICODE_NOT_PRESENT_OFFSET, 13191 }, 25439 { 0xfc30, UNICODE_NOT_PRESENT_OFFSET, 13196 }, 25440 { 0xfc31, UNICODE_NOT_PRESENT_OFFSET, 13201 }, 25441 { 0xfc32, UNICODE_NOT_PRESENT_OFFSET, 13206 }, 25442 { 0xfc33, UNICODE_NOT_PRESENT_OFFSET, 13211 }, 25443 { 0xfc34, UNICODE_NOT_PRESENT_OFFSET, 13216 }, 25444 { 0xfc35, UNICODE_NOT_PRESENT_OFFSET, 13221 }, 25445 { 0xfc36, UNICODE_NOT_PRESENT_OFFSET, 13226 }, 25446 { 0xfc37, UNICODE_NOT_PRESENT_OFFSET, 13231 }, 25447 { 0xfc38, UNICODE_NOT_PRESENT_OFFSET, 13236 }, 25448 { 0xfc39, UNICODE_NOT_PRESENT_OFFSET, 13241 }, 25449 { 0xfc3a, UNICODE_NOT_PRESENT_OFFSET, 13246 }, 25450 { 0xfc3b, UNICODE_NOT_PRESENT_OFFSET, 13251 }, 25451 { 0xfc3c, UNICODE_NOT_PRESENT_OFFSET, 13256 }, 25452 { 0xfc3d, UNICODE_NOT_PRESENT_OFFSET, 13261 }, 25453 { 0xfc3e, UNICODE_NOT_PRESENT_OFFSET, 13266 }, 25454 { 0xfc3f, UNICODE_NOT_PRESENT_OFFSET, 13271 }, 25455 { 0xfc40, UNICODE_NOT_PRESENT_OFFSET, 13276 }, 25456 { 0xfc41, UNICODE_NOT_PRESENT_OFFSET, 13281 }, 25457 { 0xfc42, UNICODE_NOT_PRESENT_OFFSET, 13286 }, 25458 { 0xfc43, UNICODE_NOT_PRESENT_OFFSET, 13291 }, 25459 { 0xfc44, UNICODE_NOT_PRESENT_OFFSET, 13296 }, 25460 { 0xfc45, UNICODE_NOT_PRESENT_OFFSET, 13301 }, 25461 { 0xfc46, UNICODE_NOT_PRESENT_OFFSET, 13306 }, 25462 { 0xfc47, UNICODE_NOT_PRESENT_OFFSET, 13311 }, 25463 { 0xfc48, UNICODE_NOT_PRESENT_OFFSET, 13316 }, 25464 { 0xfc49, UNICODE_NOT_PRESENT_OFFSET, 13321 }, 25465 { 0xfc4a, UNICODE_NOT_PRESENT_OFFSET, 13326 }, 25466 { 0xfc4b, UNICODE_NOT_PRESENT_OFFSET, 13331 }, 25467 { 0xfc4c, UNICODE_NOT_PRESENT_OFFSET, 13336 }, 25468 { 0xfc4d, UNICODE_NOT_PRESENT_OFFSET, 13341 }, 25469 { 0xfc4e, UNICODE_NOT_PRESENT_OFFSET, 13346 }, 25470 { 0xfc4f, UNICODE_NOT_PRESENT_OFFSET, 13351 }, 25471 { 0xfc50, UNICODE_NOT_PRESENT_OFFSET, 13356 }, 25472 { 0xfc51, UNICODE_NOT_PRESENT_OFFSET, 13361 }, 25473 { 0xfc52, UNICODE_NOT_PRESENT_OFFSET, 13366 }, 25474 { 0xfc53, UNICODE_NOT_PRESENT_OFFSET, 13371 }, 25475 { 0xfc54, UNICODE_NOT_PRESENT_OFFSET, 13376 }, 25476 { 0xfc55, UNICODE_NOT_PRESENT_OFFSET, 13381 }, 25477 { 0xfc56, UNICODE_NOT_PRESENT_OFFSET, 13386 }, 25478 { 0xfc57, UNICODE_NOT_PRESENT_OFFSET, 13391 }, 25479 { 0xfc58, UNICODE_NOT_PRESENT_OFFSET, 13396 }, 25480 { 0xfc59, UNICODE_NOT_PRESENT_OFFSET, 13401 }, 25481 { 0xfc5a, UNICODE_NOT_PRESENT_OFFSET, 13406 }, 25482 { 0xfc5b, UNICODE_NOT_PRESENT_OFFSET, 13411 }, 25483 { 0xfc5c, UNICODE_NOT_PRESENT_OFFSET, 13416 }, 25484 { 0xfc5d, UNICODE_NOT_PRESENT_OFFSET, 13421 }, 25485 { 0xfc5e, UNICODE_NOT_PRESENT_OFFSET, 13426 }, 25486 { 0xfc5f, UNICODE_NOT_PRESENT_OFFSET, 13432 }, 25487 { 0xfc60, UNICODE_NOT_PRESENT_OFFSET, 13438 }, 25488 { 0xfc61, UNICODE_NOT_PRESENT_OFFSET, 13444 }, 25489 { 0xfc62, UNICODE_NOT_PRESENT_OFFSET, 13450 }, 25490 { 0xfc63, UNICODE_NOT_PRESENT_OFFSET, 13456 }, 25491 { 0xfc64, UNICODE_NOT_PRESENT_OFFSET, 13462 }, 25492 { 0xfc65, UNICODE_NOT_PRESENT_OFFSET, 13469 }, 25493 { 0xfc66, UNICODE_NOT_PRESENT_OFFSET, 12967 }, 25494 { 0xfc67, UNICODE_NOT_PRESENT_OFFSET, 13476 }, 25495 { 0xfc68, UNICODE_NOT_PRESENT_OFFSET, 12943 }, 25496 { 0xfc69, UNICODE_NOT_PRESENT_OFFSET, 12974 }, 25497 { 0xfc6a, UNICODE_NOT_PRESENT_OFFSET, 13483 }, 25498 { 0xfc6b, UNICODE_NOT_PRESENT_OFFSET, 13488 }, 25499 { 0xfc6c, UNICODE_NOT_PRESENT_OFFSET, 12996 }, 25500 { 0xfc6d, UNICODE_NOT_PRESENT_OFFSET, 13493 }, 25501 { 0xfc6e, UNICODE_NOT_PRESENT_OFFSET, 13001 }, 25502 { 0xfc6f, UNICODE_NOT_PRESENT_OFFSET, 13006 }, 25503 { 0xfc70, UNICODE_NOT_PRESENT_OFFSET, 13498 }, 25504 { 0xfc71, UNICODE_NOT_PRESENT_OFFSET, 13503 }, 25505 { 0xfc72, UNICODE_NOT_PRESENT_OFFSET, 13026 }, 25506 { 0xfc73, UNICODE_NOT_PRESENT_OFFSET, 13508 }, 25507 { 0xfc74, UNICODE_NOT_PRESENT_OFFSET, 13031 }, 25508 { 0xfc75, UNICODE_NOT_PRESENT_OFFSET, 13036 }, 25509 { 0xfc76, UNICODE_NOT_PRESENT_OFFSET, 13513 }, 25510 { 0xfc77, UNICODE_NOT_PRESENT_OFFSET, 13518 }, 25511 { 0xfc78, UNICODE_NOT_PRESENT_OFFSET, 13046 }, 25512 { 0xfc79, UNICODE_NOT_PRESENT_OFFSET, 13523 }, 25513 { 0xfc7a, UNICODE_NOT_PRESENT_OFFSET, 13051 }, 25514 { 0xfc7b, UNICODE_NOT_PRESENT_OFFSET, 13056 }, 25515 { 0xfc7c, UNICODE_NOT_PRESENT_OFFSET, 13201 }, 25516 { 0xfc7d, UNICODE_NOT_PRESENT_OFFSET, 13206 }, 25517 { 0xfc7e, UNICODE_NOT_PRESENT_OFFSET, 13221 }, 25518 { 0xfc7f, UNICODE_NOT_PRESENT_OFFSET, 13226 }, 25519 { 0xfc80, UNICODE_NOT_PRESENT_OFFSET, 13231 }, 25520 { 0xfc81, UNICODE_NOT_PRESENT_OFFSET, 13251 }, 25521 { 0xfc82, UNICODE_NOT_PRESENT_OFFSET, 13256 }, 25522 { 0xfc83, UNICODE_NOT_PRESENT_OFFSET, 13261 }, 25523 { 0xfc84, UNICODE_NOT_PRESENT_OFFSET, 13266 }, 25524 { 0xfc85, UNICODE_NOT_PRESENT_OFFSET, 13286 }, 25525 { 0xfc86, UNICODE_NOT_PRESENT_OFFSET, 13291 }, 25526 { 0xfc87, UNICODE_NOT_PRESENT_OFFSET, 13296 }, 25527 { 0xfc88, UNICODE_NOT_PRESENT_OFFSET, 13528 }, 25528 { 0xfc89, UNICODE_NOT_PRESENT_OFFSET, 13316 }, 25529 { 0xfc8a, UNICODE_NOT_PRESENT_OFFSET, 13533 }, 25530 { 0xfc8b, UNICODE_NOT_PRESENT_OFFSET, 13538 }, 25531 { 0xfc8c, UNICODE_NOT_PRESENT_OFFSET, 13346 }, 25532 { 0xfc8d, UNICODE_NOT_PRESENT_OFFSET, 13543 }, 25533 { 0xfc8e, UNICODE_NOT_PRESENT_OFFSET, 13351 }, 25534 { 0xfc8f, UNICODE_NOT_PRESENT_OFFSET, 13356 }, 25535 { 0xfc90, UNICODE_NOT_PRESENT_OFFSET, 13421 }, 25536 { 0xfc91, UNICODE_NOT_PRESENT_OFFSET, 13548 }, 25537 { 0xfc92, UNICODE_NOT_PRESENT_OFFSET, 13553 }, 25538 { 0xfc93, UNICODE_NOT_PRESENT_OFFSET, 13396 }, 25539 { 0xfc94, UNICODE_NOT_PRESENT_OFFSET, 13558 }, 25540 { 0xfc95, UNICODE_NOT_PRESENT_OFFSET, 13401 }, 25541 { 0xfc96, UNICODE_NOT_PRESENT_OFFSET, 13406 }, 25542 { 0xfc97, UNICODE_NOT_PRESENT_OFFSET, 12953 }, 25543 { 0xfc98, UNICODE_NOT_PRESENT_OFFSET, 12960 }, 25544 { 0xfc99, UNICODE_NOT_PRESENT_OFFSET, 13563 }, 25545 { 0xfc9a, UNICODE_NOT_PRESENT_OFFSET, 12967 }, 25546 { 0xfc9b, UNICODE_NOT_PRESENT_OFFSET, 13570 }, 25547 { 0xfc9c, UNICODE_NOT_PRESENT_OFFSET, 12981 }, 25548 { 0xfc9d, UNICODE_NOT_PRESENT_OFFSET, 12986 }, 25549 { 0xfc9e, UNICODE_NOT_PRESENT_OFFSET, 12991 }, 25550 { 0xfc9f, UNICODE_NOT_PRESENT_OFFSET, 12996 }, 25551 { 0xfca0, UNICODE_NOT_PRESENT_OFFSET, 13577 }, 25552 { 0xfca1, UNICODE_NOT_PRESENT_OFFSET, 13011 }, 25553 { 0xfca2, UNICODE_NOT_PRESENT_OFFSET, 13016 }, 25554 { 0xfca3, UNICODE_NOT_PRESENT_OFFSET, 13021 }, 25555 { 0xfca4, UNICODE_NOT_PRESENT_OFFSET, 13026 }, 25556 { 0xfca5, UNICODE_NOT_PRESENT_OFFSET, 13582 }, 25557 { 0xfca6, UNICODE_NOT_PRESENT_OFFSET, 13046 }, 25558 { 0xfca7, UNICODE_NOT_PRESENT_OFFSET, 13061 }, 25559 { 0xfca8, UNICODE_NOT_PRESENT_OFFSET, 13066 }, 25560 { 0xfca9, UNICODE_NOT_PRESENT_OFFSET, 13071 }, 25561 { 0xfcaa, UNICODE_NOT_PRESENT_OFFSET, 13076 }, 25562 { 0xfcab, UNICODE_NOT_PRESENT_OFFSET, 13081 }, 25563 { 0xfcac, UNICODE_NOT_PRESENT_OFFSET, 13091 }, 25564 { 0xfcad, UNICODE_NOT_PRESENT_OFFSET, 13096 }, 25565 { 0xfcae, UNICODE_NOT_PRESENT_OFFSET, 13101 }, 25566 { 0xfcaf, UNICODE_NOT_PRESENT_OFFSET, 13106 }, 25567 { 0xfcb0, UNICODE_NOT_PRESENT_OFFSET, 13111 }, 25568 { 0xfcb1, UNICODE_NOT_PRESENT_OFFSET, 13116 }, 25569 { 0xfcb2, UNICODE_NOT_PRESENT_OFFSET, 13587 }, 25570 { 0xfcb3, UNICODE_NOT_PRESENT_OFFSET, 13121 }, 25571 { 0xfcb4, UNICODE_NOT_PRESENT_OFFSET, 13126 }, 25572 { 0xfcb5, UNICODE_NOT_PRESENT_OFFSET, 13131 }, 25573 { 0xfcb6, UNICODE_NOT_PRESENT_OFFSET, 13136 }, 25574 { 0xfcb7, UNICODE_NOT_PRESENT_OFFSET, 13141 }, 25575 { 0xfcb8, UNICODE_NOT_PRESENT_OFFSET, 13146 }, 25576 { 0xfcb9, UNICODE_NOT_PRESENT_OFFSET, 13156 }, 25577 { 0xfcba, UNICODE_NOT_PRESENT_OFFSET, 13161 }, 25578 { 0xfcbb, UNICODE_NOT_PRESENT_OFFSET, 13166 }, 25579 { 0xfcbc, UNICODE_NOT_PRESENT_OFFSET, 13171 }, 25580 { 0xfcbd, UNICODE_NOT_PRESENT_OFFSET, 13176 }, 25581 { 0xfcbe, UNICODE_NOT_PRESENT_OFFSET, 13181 }, 25582 { 0xfcbf, UNICODE_NOT_PRESENT_OFFSET, 13186 }, 25583 { 0xfcc0, UNICODE_NOT_PRESENT_OFFSET, 13191 }, 25584 { 0xfcc1, UNICODE_NOT_PRESENT_OFFSET, 13196 }, 25585 { 0xfcc2, UNICODE_NOT_PRESENT_OFFSET, 13211 }, 25586 { 0xfcc3, UNICODE_NOT_PRESENT_OFFSET, 13216 }, 25587 { 0xfcc4, UNICODE_NOT_PRESENT_OFFSET, 13236 }, 25588 { 0xfcc5, UNICODE_NOT_PRESENT_OFFSET, 13241 }, 25589 { 0xfcc6, UNICODE_NOT_PRESENT_OFFSET, 13246 }, 25590 { 0xfcc7, UNICODE_NOT_PRESENT_OFFSET, 13251 }, 25591 { 0xfcc8, UNICODE_NOT_PRESENT_OFFSET, 13256 }, 25592 { 0xfcc9, UNICODE_NOT_PRESENT_OFFSET, 13271 }, 25593 { 0xfcca, UNICODE_NOT_PRESENT_OFFSET, 13276 }, 25594 { 0xfccb, UNICODE_NOT_PRESENT_OFFSET, 13281 }, 25595 { 0xfccc, UNICODE_NOT_PRESENT_OFFSET, 13286 }, 25596 { 0xfccd, UNICODE_NOT_PRESENT_OFFSET, 13592 }, 25597 { 0xfcce, UNICODE_NOT_PRESENT_OFFSET, 13301 }, 25598 { 0xfccf, UNICODE_NOT_PRESENT_OFFSET, 13306 }, 25599 { 0xfcd0, UNICODE_NOT_PRESENT_OFFSET, 13311 }, 25600 { 0xfcd1, UNICODE_NOT_PRESENT_OFFSET, 13316 }, 25601 { 0xfcd2, UNICODE_NOT_PRESENT_OFFSET, 13331 }, 25602 { 0xfcd3, UNICODE_NOT_PRESENT_OFFSET, 13336 }, 25603 { 0xfcd4, UNICODE_NOT_PRESENT_OFFSET, 13341 }, 25604 { 0xfcd5, UNICODE_NOT_PRESENT_OFFSET, 13346 }, 25605 { 0xfcd6, UNICODE_NOT_PRESENT_OFFSET, 13597 }, 25606 { 0xfcd7, UNICODE_NOT_PRESENT_OFFSET, 13361 }, 25607 { 0xfcd8, UNICODE_NOT_PRESENT_OFFSET, 13366 }, 25608 { 0xfcd9, UNICODE_NOT_PRESENT_OFFSET, 13602 }, 25609 { 0xfcda, UNICODE_NOT_PRESENT_OFFSET, 13381 }, 25610 { 0xfcdb, UNICODE_NOT_PRESENT_OFFSET, 13386 }, 25611 { 0xfcdc, UNICODE_NOT_PRESENT_OFFSET, 13391 }, 25612 { 0xfcdd, UNICODE_NOT_PRESENT_OFFSET, 13396 }, 25613 { 0xfcde, UNICODE_NOT_PRESENT_OFFSET, 13607 }, 25614 { 0xfcdf, UNICODE_NOT_PRESENT_OFFSET, 12967 }, 25615 { 0xfce0, UNICODE_NOT_PRESENT_OFFSET, 13570 }, 25616 { 0xfce1, UNICODE_NOT_PRESENT_OFFSET, 12996 }, 25617 { 0xfce2, UNICODE_NOT_PRESENT_OFFSET, 13577 }, 25618 { 0xfce3, UNICODE_NOT_PRESENT_OFFSET, 13026 }, 25619 { 0xfce4, UNICODE_NOT_PRESENT_OFFSET, 13582 }, 25620 { 0xfce5, UNICODE_NOT_PRESENT_OFFSET, 13046 }, 25621 { 0xfce6, UNICODE_NOT_PRESENT_OFFSET, 13612 }, 25622 { 0xfce7, UNICODE_NOT_PRESENT_OFFSET, 13111 }, 25623 { 0xfce8, UNICODE_NOT_PRESENT_OFFSET, 13617 }, 25624 { 0xfce9, UNICODE_NOT_PRESENT_OFFSET, 13622 }, 25625 { 0xfcea, UNICODE_NOT_PRESENT_OFFSET, 13627 }, 25626 { 0xfceb, UNICODE_NOT_PRESENT_OFFSET, 13251 }, 25627 { 0xfcec, UNICODE_NOT_PRESENT_OFFSET, 13256 }, 25628 { 0xfced, UNICODE_NOT_PRESENT_OFFSET, 13286 }, 25629 { 0xfcee, UNICODE_NOT_PRESENT_OFFSET, 13346 }, 25630 { 0xfcef, UNICODE_NOT_PRESENT_OFFSET, 13597 }, 25631 { 0xfcf0, UNICODE_NOT_PRESENT_OFFSET, 13396 }, 25632 { 0xfcf1, UNICODE_NOT_PRESENT_OFFSET, 13607 }, 25633 { 0xfcf2, UNICODE_NOT_PRESENT_OFFSET, 13632 }, 25634 { 0xfcf3, UNICODE_NOT_PRESENT_OFFSET, 13639 }, 25635 { 0xfcf4, UNICODE_NOT_PRESENT_OFFSET, 13646 }, 25636 { 0xfcf5, UNICODE_NOT_PRESENT_OFFSET, 13653 }, 25637 { 0xfcf6, UNICODE_NOT_PRESENT_OFFSET, 13658 }, 25638 { 0xfcf7, UNICODE_NOT_PRESENT_OFFSET, 13663 }, 25639 { 0xfcf8, UNICODE_NOT_PRESENT_OFFSET, 13668 }, 25640 { 0xfcf9, UNICODE_NOT_PRESENT_OFFSET, 13673 }, 25641 { 0xfcfa, UNICODE_NOT_PRESENT_OFFSET, 13678 }, 25642 { 0xfcfb, UNICODE_NOT_PRESENT_OFFSET, 13683 }, 25643 { 0xfcfc, UNICODE_NOT_PRESENT_OFFSET, 13688 }, 25644 { 0xfcfd, UNICODE_NOT_PRESENT_OFFSET, 13693 }, 25645 { 0xfcfe, UNICODE_NOT_PRESENT_OFFSET, 13698 }, 25646 { 0xfcff, UNICODE_NOT_PRESENT_OFFSET, 13703 }, 25647 { 0xfd00, UNICODE_NOT_PRESENT_OFFSET, 13708 }, 25648 { 0xfd01, UNICODE_NOT_PRESENT_OFFSET, 13713 }, 25649 { 0xfd02, UNICODE_NOT_PRESENT_OFFSET, 13718 }, 25650 { 0xfd03, UNICODE_NOT_PRESENT_OFFSET, 13723 }, 25651 { 0xfd04, UNICODE_NOT_PRESENT_OFFSET, 13728 }, 25652 { 0xfd05, UNICODE_NOT_PRESENT_OFFSET, 13733 }, 25653 { 0xfd06, UNICODE_NOT_PRESENT_OFFSET, 13738 }, 25654 { 0xfd07, UNICODE_NOT_PRESENT_OFFSET, 13743 }, 25655 { 0xfd08, UNICODE_NOT_PRESENT_OFFSET, 13748 }, 25656 { 0xfd09, UNICODE_NOT_PRESENT_OFFSET, 13753 }, 25657 { 0xfd0a, UNICODE_NOT_PRESENT_OFFSET, 13758 }, 25658 { 0xfd0b, UNICODE_NOT_PRESENT_OFFSET, 13763 }, 25659 { 0xfd0c, UNICODE_NOT_PRESENT_OFFSET, 13622 }, 25660 { 0xfd0d, UNICODE_NOT_PRESENT_OFFSET, 13768 }, 25661 { 0xfd0e, UNICODE_NOT_PRESENT_OFFSET, 13773 }, 25662 { 0xfd0f, UNICODE_NOT_PRESENT_OFFSET, 13778 }, 25663 { 0xfd10, UNICODE_NOT_PRESENT_OFFSET, 13783 }, 25664 { 0xfd11, UNICODE_NOT_PRESENT_OFFSET, 13653 }, 25665 { 0xfd12, UNICODE_NOT_PRESENT_OFFSET, 13658 }, 25666 { 0xfd13, UNICODE_NOT_PRESENT_OFFSET, 13663 }, 25667 { 0xfd14, UNICODE_NOT_PRESENT_OFFSET, 13668 }, 25668 { 0xfd15, UNICODE_NOT_PRESENT_OFFSET, 13673 }, 25669 { 0xfd16, UNICODE_NOT_PRESENT_OFFSET, 13678 }, 25670 { 0xfd17, UNICODE_NOT_PRESENT_OFFSET, 13683 }, 25671 { 0xfd18, UNICODE_NOT_PRESENT_OFFSET, 13688 }, 25672 { 0xfd19, UNICODE_NOT_PRESENT_OFFSET, 13693 }, 25673 { 0xfd1a, UNICODE_NOT_PRESENT_OFFSET, 13698 }, 25674 { 0xfd1b, UNICODE_NOT_PRESENT_OFFSET, 13703 }, 25675 { 0xfd1c, UNICODE_NOT_PRESENT_OFFSET, 13708 }, 25676 { 0xfd1d, UNICODE_NOT_PRESENT_OFFSET, 13713 }, 25677 { 0xfd1e, UNICODE_NOT_PRESENT_OFFSET, 13718 }, 25678 { 0xfd1f, UNICODE_NOT_PRESENT_OFFSET, 13723 }, 25679 { 0xfd20, UNICODE_NOT_PRESENT_OFFSET, 13728 }, 25680 { 0xfd21, UNICODE_NOT_PRESENT_OFFSET, 13733 }, 25681 { 0xfd22, UNICODE_NOT_PRESENT_OFFSET, 13738 }, 25682 { 0xfd23, UNICODE_NOT_PRESENT_OFFSET, 13743 }, 25683 { 0xfd24, UNICODE_NOT_PRESENT_OFFSET, 13748 }, 25684 { 0xfd25, UNICODE_NOT_PRESENT_OFFSET, 13753 }, 25685 { 0xfd26, UNICODE_NOT_PRESENT_OFFSET, 13758 }, 25686 { 0xfd27, UNICODE_NOT_PRESENT_OFFSET, 13763 }, 25687 { 0xfd28, UNICODE_NOT_PRESENT_OFFSET, 13622 }, 25688 { 0xfd29, UNICODE_NOT_PRESENT_OFFSET, 13768 }, 25689 { 0xfd2a, UNICODE_NOT_PRESENT_OFFSET, 13773 }, 25690 { 0xfd2b, UNICODE_NOT_PRESENT_OFFSET, 13778 }, 25691 { 0xfd2c, UNICODE_NOT_PRESENT_OFFSET, 13783 }, 25692 { 0xfd2d, UNICODE_NOT_PRESENT_OFFSET, 13753 }, 25693 { 0xfd2e, UNICODE_NOT_PRESENT_OFFSET, 13758 }, 25694 { 0xfd2f, UNICODE_NOT_PRESENT_OFFSET, 13763 }, 25695 { 0xfd30, UNICODE_NOT_PRESENT_OFFSET, 13622 }, 25696 { 0xfd31, UNICODE_NOT_PRESENT_OFFSET, 13617 }, 25697 { 0xfd32, UNICODE_NOT_PRESENT_OFFSET, 13627 }, 25698 { 0xfd33, UNICODE_NOT_PRESENT_OFFSET, 13151 }, 25699 { 0xfd34, UNICODE_NOT_PRESENT_OFFSET, 13096 }, 25700 { 0xfd35, UNICODE_NOT_PRESENT_OFFSET, 13101 }, 25701 { 0xfd36, UNICODE_NOT_PRESENT_OFFSET, 13106 }, 25702 { 0xfd37, UNICODE_NOT_PRESENT_OFFSET, 13753 }, 25703 { 0xfd38, UNICODE_NOT_PRESENT_OFFSET, 13758 }, 25704 { 0xfd39, UNICODE_NOT_PRESENT_OFFSET, 13763 }, 25705 { 0xfd3a, UNICODE_NOT_PRESENT_OFFSET, 13151 }, 25706 { 0xfd3b, UNICODE_NOT_PRESENT_OFFSET, 13156 }, 25707 { 0xfd3c, UNICODE_NOT_PRESENT_OFFSET, 13788 }, 25708 { 0xfd3d, UNICODE_NOT_PRESENT_OFFSET, 13788 }, 25709 { 0xfd50, UNICODE_NOT_PRESENT_OFFSET, 13793 }, 25710 { 0xfd51, UNICODE_NOT_PRESENT_OFFSET, 13800 }, 25711 { 0xfd52, UNICODE_NOT_PRESENT_OFFSET, 13800 }, 25712 { 0xfd53, UNICODE_NOT_PRESENT_OFFSET, 13807 }, 25713 { 0xfd54, UNICODE_NOT_PRESENT_OFFSET, 13814 }, 25714 { 0xfd55, UNICODE_NOT_PRESENT_OFFSET, 13821 }, 25715 { 0xfd56, UNICODE_NOT_PRESENT_OFFSET, 13828 }, 25716 { 0xfd57, UNICODE_NOT_PRESENT_OFFSET, 13835 }, 25717 { 0xfd58, UNICODE_NOT_PRESENT_OFFSET, 13842 }, 25718 { 0xfd59, UNICODE_NOT_PRESENT_OFFSET, 13842 }, 25719 { 0xfd5a, UNICODE_NOT_PRESENT_OFFSET, 13849 }, 25720 { 0xfd5b, UNICODE_NOT_PRESENT_OFFSET, 13856 }, 25721 { 0xfd5c, UNICODE_NOT_PRESENT_OFFSET, 13863 }, 25722 { 0xfd5d, UNICODE_NOT_PRESENT_OFFSET, 13870 }, 25723 { 0xfd5e, UNICODE_NOT_PRESENT_OFFSET, 13877 }, 25724 { 0xfd5f, UNICODE_NOT_PRESENT_OFFSET, 13884 }, 25725 { 0xfd60, UNICODE_NOT_PRESENT_OFFSET, 13884 }, 25726 { 0xfd61, UNICODE_NOT_PRESENT_OFFSET, 13891 }, 25727 { 0xfd62, UNICODE_NOT_PRESENT_OFFSET, 13898 }, 25728 { 0xfd63, UNICODE_NOT_PRESENT_OFFSET, 13898 }, 25729 { 0xfd64, UNICODE_NOT_PRESENT_OFFSET, 13905 }, 25730 { 0xfd65, UNICODE_NOT_PRESENT_OFFSET, 13905 }, 25731 { 0xfd66, UNICODE_NOT_PRESENT_OFFSET, 13912 }, 25732 { 0xfd67, UNICODE_NOT_PRESENT_OFFSET, 13919 }, 25733 { 0xfd68, UNICODE_NOT_PRESENT_OFFSET, 13919 }, 25734 { 0xfd69, UNICODE_NOT_PRESENT_OFFSET, 13926 }, 25735 { 0xfd6a, UNICODE_NOT_PRESENT_OFFSET, 13933 }, 25736 { 0xfd6b, UNICODE_NOT_PRESENT_OFFSET, 13933 }, 25737 { 0xfd6c, UNICODE_NOT_PRESENT_OFFSET, 13940 }, 25738 { 0xfd6d, UNICODE_NOT_PRESENT_OFFSET, 13940 }, 25739 { 0xfd6e, UNICODE_NOT_PRESENT_OFFSET, 13947 }, 25740 { 0xfd6f, UNICODE_NOT_PRESENT_OFFSET, 13954 }, 25741 { 0xfd70, UNICODE_NOT_PRESENT_OFFSET, 13954 }, 25742 { 0xfd71, UNICODE_NOT_PRESENT_OFFSET, 13961 }, 25743 { 0xfd72, UNICODE_NOT_PRESENT_OFFSET, 13961 }, 25744 { 0xfd73, UNICODE_NOT_PRESENT_OFFSET, 13968 }, 25745 { 0xfd74, UNICODE_NOT_PRESENT_OFFSET, 13975 }, 25746 { 0xfd75, UNICODE_NOT_PRESENT_OFFSET, 13982 }, 25747 { 0xfd76, UNICODE_NOT_PRESENT_OFFSET, 13989 }, 25748 { 0xfd77, UNICODE_NOT_PRESENT_OFFSET, 13989 }, 25749 { 0xfd78, UNICODE_NOT_PRESENT_OFFSET, 13996 }, 25750 { 0xfd79, UNICODE_NOT_PRESENT_OFFSET, 14003 }, 25751 { 0xfd7a, UNICODE_NOT_PRESENT_OFFSET, 14010 }, 25752 { 0xfd7b, UNICODE_NOT_PRESENT_OFFSET, 14017 }, 25753 { 0xfd7c, UNICODE_NOT_PRESENT_OFFSET, 14024 }, 25754 { 0xfd7d, UNICODE_NOT_PRESENT_OFFSET, 14024 }, 25755 { 0xfd7e, UNICODE_NOT_PRESENT_OFFSET, 14031 }, 25756 { 0xfd7f, UNICODE_NOT_PRESENT_OFFSET, 14038 }, 25757 { 0xfd80, UNICODE_NOT_PRESENT_OFFSET, 14045 }, 25758 { 0xfd81, UNICODE_NOT_PRESENT_OFFSET, 14052 }, 25759 { 0xfd82, UNICODE_NOT_PRESENT_OFFSET, 14059 }, 25760 { 0xfd83, UNICODE_NOT_PRESENT_OFFSET, 14066 }, 25761 { 0xfd84, UNICODE_NOT_PRESENT_OFFSET, 14066 }, 25762 { 0xfd85, UNICODE_NOT_PRESENT_OFFSET, 14073 }, 25763 { 0xfd86, UNICODE_NOT_PRESENT_OFFSET, 14073 }, 25764 { 0xfd87, UNICODE_NOT_PRESENT_OFFSET, 14080 }, 25765 { 0xfd88, UNICODE_NOT_PRESENT_OFFSET, 14080 }, 25766 { 0xfd89, UNICODE_NOT_PRESENT_OFFSET, 14087 }, 25767 { 0xfd8a, UNICODE_NOT_PRESENT_OFFSET, 14094 }, 25768 { 0xfd8b, UNICODE_NOT_PRESENT_OFFSET, 14101 }, 25769 { 0xfd8c, UNICODE_NOT_PRESENT_OFFSET, 14108 }, 25770 { 0xfd8d, UNICODE_NOT_PRESENT_OFFSET, 14115 }, 25771 { 0xfd8e, UNICODE_NOT_PRESENT_OFFSET, 14122 }, 25772 { 0xfd8f, UNICODE_NOT_PRESENT_OFFSET, 14129 }, 25773 { 0xfd92, UNICODE_NOT_PRESENT_OFFSET, 14136 }, 25774 { 0xfd93, UNICODE_NOT_PRESENT_OFFSET, 14143 }, 25775 { 0xfd94, UNICODE_NOT_PRESENT_OFFSET, 14150 }, 25776 { 0xfd95, UNICODE_NOT_PRESENT_OFFSET, 14157 }, 25777 { 0xfd96, UNICODE_NOT_PRESENT_OFFSET, 14164 }, 25778 { 0xfd97, UNICODE_NOT_PRESENT_OFFSET, 14171 }, 25779 { 0xfd98, UNICODE_NOT_PRESENT_OFFSET, 14171 }, 25780 { 0xfd99, UNICODE_NOT_PRESENT_OFFSET, 14178 }, 25781 { 0xfd9a, UNICODE_NOT_PRESENT_OFFSET, 14185 }, 25782 { 0xfd9b, UNICODE_NOT_PRESENT_OFFSET, 14192 }, 25783 { 0xfd9c, UNICODE_NOT_PRESENT_OFFSET, 14199 }, 25784 { 0xfd9d, UNICODE_NOT_PRESENT_OFFSET, 14199 }, 25785 { 0xfd9e, UNICODE_NOT_PRESENT_OFFSET, 14206 }, 25786 { 0xfd9f, UNICODE_NOT_PRESENT_OFFSET, 14213 }, 25787 { 0xfda0, UNICODE_NOT_PRESENT_OFFSET, 14220 }, 25788 { 0xfda1, UNICODE_NOT_PRESENT_OFFSET, 14227 }, 25789 { 0xfda2, UNICODE_NOT_PRESENT_OFFSET, 14234 }, 25790 { 0xfda3, UNICODE_NOT_PRESENT_OFFSET, 14241 }, 25791 { 0xfda4, UNICODE_NOT_PRESENT_OFFSET, 14248 }, 25792 { 0xfda5, UNICODE_NOT_PRESENT_OFFSET, 14255 }, 25793 { 0xfda6, UNICODE_NOT_PRESENT_OFFSET, 14262 }, 25794 { 0xfda7, UNICODE_NOT_PRESENT_OFFSET, 14269 }, 25795 { 0xfda8, UNICODE_NOT_PRESENT_OFFSET, 14276 }, 25796 { 0xfda9, UNICODE_NOT_PRESENT_OFFSET, 14283 }, 25797 { 0xfdaa, UNICODE_NOT_PRESENT_OFFSET, 14290 }, 25798 { 0xfdab, UNICODE_NOT_PRESENT_OFFSET, 14297 }, 25799 { 0xfdac, UNICODE_NOT_PRESENT_OFFSET, 14304 }, 25800 { 0xfdad, UNICODE_NOT_PRESENT_OFFSET, 14311 }, 25801 { 0xfdae, UNICODE_NOT_PRESENT_OFFSET, 14318 }, 25802 { 0xfdaf, UNICODE_NOT_PRESENT_OFFSET, 14325 }, 25803 { 0xfdb0, UNICODE_NOT_PRESENT_OFFSET, 14332 }, 25804 { 0xfdb1, UNICODE_NOT_PRESENT_OFFSET, 14339 }, 25805 { 0xfdb2, UNICODE_NOT_PRESENT_OFFSET, 14346 }, 25806 { 0xfdb3, UNICODE_NOT_PRESENT_OFFSET, 14353 }, 25807 { 0xfdb4, UNICODE_NOT_PRESENT_OFFSET, 14031 }, 25808 { 0xfdb5, UNICODE_NOT_PRESENT_OFFSET, 14045 }, 25809 { 0xfdb6, UNICODE_NOT_PRESENT_OFFSET, 14360 }, 25810 { 0xfdb7, UNICODE_NOT_PRESENT_OFFSET, 14367 }, 25811 { 0xfdb8, UNICODE_NOT_PRESENT_OFFSET, 14374 }, 25812 { 0xfdb9, UNICODE_NOT_PRESENT_OFFSET, 14381 }, 25813 { 0xfdba, UNICODE_NOT_PRESENT_OFFSET, 14388 }, 25814 { 0xfdbb, UNICODE_NOT_PRESENT_OFFSET, 14395 }, 25815 { 0xfdbc, UNICODE_NOT_PRESENT_OFFSET, 14388 }, 25816 { 0xfdbd, UNICODE_NOT_PRESENT_OFFSET, 14374 }, 25817 { 0xfdbe, UNICODE_NOT_PRESENT_OFFSET, 14402 }, 25818 { 0xfdbf, UNICODE_NOT_PRESENT_OFFSET, 14409 }, 25819 { 0xfdc0, UNICODE_NOT_PRESENT_OFFSET, 14416 }, 25820 { 0xfdc1, UNICODE_NOT_PRESENT_OFFSET, 14423 }, 25821 { 0xfdc2, UNICODE_NOT_PRESENT_OFFSET, 14430 }, 25822 { 0xfdc3, UNICODE_NOT_PRESENT_OFFSET, 14395 }, 25823 { 0xfdc4, UNICODE_NOT_PRESENT_OFFSET, 13982 }, 25824 { 0xfdc5, UNICODE_NOT_PRESENT_OFFSET, 13912 }, 25825 { 0xfdc6, UNICODE_NOT_PRESENT_OFFSET, 14437 }, 25826 { 0xfdc7, UNICODE_NOT_PRESENT_OFFSET, 14444 }, 25827 { 0xfdf0, UNICODE_NOT_PRESENT_OFFSET, 14451 }, 25828 { 0xfdf1, UNICODE_NOT_PRESENT_OFFSET, 14458 }, 25829 { 0xfdf2, UNICODE_NOT_PRESENT_OFFSET, 14465 }, 25830 { 0xfdf3, UNICODE_NOT_PRESENT_OFFSET, 14474 }, 25831 { 0xfdf4, UNICODE_NOT_PRESENT_OFFSET, 14483 }, 25832 { 0xfdf5, UNICODE_NOT_PRESENT_OFFSET, 14492 }, 25833 { 0xfdf6, UNICODE_NOT_PRESENT_OFFSET, 14501 }, 25834 { 0xfdf7, UNICODE_NOT_PRESENT_OFFSET, 14510 }, 25835 { 0xfdf8, UNICODE_NOT_PRESENT_OFFSET, 14519 }, 25836 { 0xfdf9, UNICODE_NOT_PRESENT_OFFSET, 14528 }, 25837 { 0xfdfa, UNICODE_NOT_PRESENT_OFFSET, 14535 }, 25838 { 0xfdfb, UNICODE_NOT_PRESENT_OFFSET, 14569 }, 25839 { 0xfdfc, UNICODE_NOT_PRESENT_OFFSET, 14585 }, 25840 { 0xfe10, UNICODE_NOT_PRESENT_OFFSET, 14594 }, 25841 { 0xfe11, UNICODE_NOT_PRESENT_OFFSET, 14596 }, 25842 { 0xfe12, UNICODE_NOT_PRESENT_OFFSET, 14600 }, 25843 { 0xfe13, UNICODE_NOT_PRESENT_OFFSET, 14604 }, 25844 { 0xfe14, UNICODE_NOT_PRESENT_OFFSET, 1248 }, 25845 { 0xfe15, UNICODE_NOT_PRESENT_OFFSET, 14606 }, 25846 { 0xfe16, UNICODE_NOT_PRESENT_OFFSET, 14608 }, 25847 { 0xfe17, UNICODE_NOT_PRESENT_OFFSET, 14610 }, 25848 { 0xfe18, UNICODE_NOT_PRESENT_OFFSET, 14614 }, 25849 { 0xfe19, UNICODE_NOT_PRESENT_OFFSET, 5186 }, 25850 { 0xfe30, UNICODE_NOT_PRESENT_OFFSET, 5183 }, 25851 { 0xfe31, UNICODE_NOT_PRESENT_OFFSET, 14618 }, 25852 { 0xfe32, UNICODE_NOT_PRESENT_OFFSET, 14622 }, 25853 { 0xfe33, UNICODE_NOT_PRESENT_OFFSET, 14626 }, 25854 { 0xfe34, UNICODE_NOT_PRESENT_OFFSET, 14626 }, 25855 { 0xfe35, UNICODE_NOT_PRESENT_OFFSET, 5275 }, 25856 { 0xfe36, UNICODE_NOT_PRESENT_OFFSET, 5277 }, 25857 { 0xfe37, UNICODE_NOT_PRESENT_OFFSET, 14628 }, 25858 { 0xfe38, UNICODE_NOT_PRESENT_OFFSET, 14630 }, 25859 { 0xfe39, UNICODE_NOT_PRESENT_OFFSET, 14632 }, 25860 { 0xfe3a, UNICODE_NOT_PRESENT_OFFSET, 14636 }, 25861 { 0xfe3b, UNICODE_NOT_PRESENT_OFFSET, 14640 }, 25862 { 0xfe3c, UNICODE_NOT_PRESENT_OFFSET, 14644 }, 25863 { 0xfe3d, UNICODE_NOT_PRESENT_OFFSET, 14648 }, 25864 { 0xfe3e, UNICODE_NOT_PRESENT_OFFSET, 14652 }, 25865 { 0xfe3f, UNICODE_NOT_PRESENT_OFFSET, 5826 }, 25866 { 0xfe40, UNICODE_NOT_PRESENT_OFFSET, 5830 }, 25867 { 0xfe41, UNICODE_NOT_PRESENT_OFFSET, 14656 }, 25868 { 0xfe42, UNICODE_NOT_PRESENT_OFFSET, 14660 }, 25869 { 0xfe43, UNICODE_NOT_PRESENT_OFFSET, 14664 }, 25870 { 0xfe44, UNICODE_NOT_PRESENT_OFFSET, 14668 }, 25871 { 0xfe47, UNICODE_NOT_PRESENT_OFFSET, 14672 }, 25872 { 0xfe48, UNICODE_NOT_PRESENT_OFFSET, 14674 }, 25873 { 0xfe49, UNICODE_NOT_PRESENT_OFFSET, 5227 }, 25874 { 0xfe4a, UNICODE_NOT_PRESENT_OFFSET, 5227 }, 25875 { 0xfe4b, UNICODE_NOT_PRESENT_OFFSET, 5227 }, 25876 { 0xfe4c, UNICODE_NOT_PRESENT_OFFSET, 5227 }, 25877 { 0xfe4d, UNICODE_NOT_PRESENT_OFFSET, 14626 }, 25878 { 0xfe4e, UNICODE_NOT_PRESENT_OFFSET, 14626 }, 25879 { 0xfe4f, UNICODE_NOT_PRESENT_OFFSET, 14626 }, 25880 { 0xfe50, UNICODE_NOT_PRESENT_OFFSET, 14594 }, 25881 { 0xfe51, UNICODE_NOT_PRESENT_OFFSET, 14596 }, 25882 { 0xfe52, UNICODE_NOT_PRESENT_OFFSET, 5181 }, 25883 { 0xfe54, UNICODE_NOT_PRESENT_OFFSET, 1248 }, 25884 { 0xfe55, UNICODE_NOT_PRESENT_OFFSET, 14604 }, 25885 { 0xfe56, UNICODE_NOT_PRESENT_OFFSET, 14608 }, 25886 { 0xfe57, UNICODE_NOT_PRESENT_OFFSET, 14606 }, 25887 { 0xfe58, UNICODE_NOT_PRESENT_OFFSET, 14618 }, 25888 { 0xfe59, UNICODE_NOT_PRESENT_OFFSET, 5275 }, 25889 { 0xfe5a, UNICODE_NOT_PRESENT_OFFSET, 5277 }, 25890 { 0xfe5b, UNICODE_NOT_PRESENT_OFFSET, 14628 }, 25891 { 0xfe5c, UNICODE_NOT_PRESENT_OFFSET, 14630 }, 25892 { 0xfe5d, UNICODE_NOT_PRESENT_OFFSET, 14632 }, 25893 { 0xfe5e, UNICODE_NOT_PRESENT_OFFSET, 14636 }, 25894 { 0xfe5f, UNICODE_NOT_PRESENT_OFFSET, 14676 }, 25895 { 0xfe60, UNICODE_NOT_PRESENT_OFFSET, 14678 }, 25896 { 0xfe61, UNICODE_NOT_PRESENT_OFFSET, 14680 }, 25897 { 0xfe62, UNICODE_NOT_PRESENT_OFFSET, 5267 }, 25898 { 0xfe63, UNICODE_NOT_PRESENT_OFFSET, 14682 }, 25899 { 0xfe64, UNICODE_NOT_PRESENT_OFFSET, 14684 }, 25900 { 0xfe65, UNICODE_NOT_PRESENT_OFFSET, 14686 }, 25901 { 0xfe66, UNICODE_NOT_PRESENT_OFFSET, 5273 }, 25902 { 0xfe68, UNICODE_NOT_PRESENT_OFFSET, 14688 }, 25903 { 0xfe69, UNICODE_NOT_PRESENT_OFFSET, 14690 }, 25904 { 0xfe6a, UNICODE_NOT_PRESENT_OFFSET, 14692 }, 25905 { 0xfe6b, UNICODE_NOT_PRESENT_OFFSET, 14694 }, 25906 { 0xfe70, UNICODE_NOT_PRESENT_OFFSET, 14696 }, 25907 { 0xfe71, UNICODE_NOT_PRESENT_OFFSET, 14700 }, 25908 { 0xfe72, UNICODE_NOT_PRESENT_OFFSET, 14705 }, 25909 { 0xfe74, UNICODE_NOT_PRESENT_OFFSET, 14709 }, 25910 { 0xfe76, UNICODE_NOT_PRESENT_OFFSET, 14713 }, 25911 { 0xfe77, UNICODE_NOT_PRESENT_OFFSET, 14717 }, 25912 { 0xfe78, UNICODE_NOT_PRESENT_OFFSET, 14722 }, 25913 { 0xfe79, UNICODE_NOT_PRESENT_OFFSET, 14726 }, 25914 { 0xfe7a, UNICODE_NOT_PRESENT_OFFSET, 14731 }, 25915 { 0xfe7b, UNICODE_NOT_PRESENT_OFFSET, 14735 }, 25916 { 0xfe7c, UNICODE_NOT_PRESENT_OFFSET, 14740 }, 25917 { 0xfe7d, UNICODE_NOT_PRESENT_OFFSET, 14744 }, 25918 { 0xfe7e, UNICODE_NOT_PRESENT_OFFSET, 14749 }, 25919 { 0xfe7f, UNICODE_NOT_PRESENT_OFFSET, 14753 }, 25920 { 0xfe80, UNICODE_NOT_PRESENT_OFFSET, 14758 }, 25921 { 0xfe81, UNICODE_NOT_PRESENT_OFFSET, 1676 }, 25922 { 0xfe82, UNICODE_NOT_PRESENT_OFFSET, 1676 }, 25923 { 0xfe83, UNICODE_NOT_PRESENT_OFFSET, 1681 }, 25924 { 0xfe84, UNICODE_NOT_PRESENT_OFFSET, 1681 }, 25925 { 0xfe85, UNICODE_NOT_PRESENT_OFFSET, 1686 }, 25926 { 0xfe86, UNICODE_NOT_PRESENT_OFFSET, 1686 }, 25927 { 0xfe87, UNICODE_NOT_PRESENT_OFFSET, 1691 }, 25928 { 0xfe88, UNICODE_NOT_PRESENT_OFFSET, 1691 }, 25929 { 0xfe89, UNICODE_NOT_PRESENT_OFFSET, 1696 }, 25930 { 0xfe8a, UNICODE_NOT_PRESENT_OFFSET, 1696 }, 25931 { 0xfe8b, UNICODE_NOT_PRESENT_OFFSET, 1696 }, 25932 { 0xfe8c, UNICODE_NOT_PRESENT_OFFSET, 1696 }, 25933 { 0xfe8d, UNICODE_NOT_PRESENT_OFFSET, 14761 }, 25934 { 0xfe8e, UNICODE_NOT_PRESENT_OFFSET, 14761 }, 25935 { 0xfe8f, UNICODE_NOT_PRESENT_OFFSET, 14764 }, 25936 { 0xfe90, UNICODE_NOT_PRESENT_OFFSET, 14764 }, 25937 { 0xfe91, UNICODE_NOT_PRESENT_OFFSET, 14764 }, 25938 { 0xfe92, UNICODE_NOT_PRESENT_OFFSET, 14764 }, 25939 { 0xfe93, UNICODE_NOT_PRESENT_OFFSET, 14767 }, 25940 { 0xfe94, UNICODE_NOT_PRESENT_OFFSET, 14767 }, 25941 { 0xfe95, UNICODE_NOT_PRESENT_OFFSET, 14770 }, 25942 { 0xfe96, UNICODE_NOT_PRESENT_OFFSET, 14770 }, 25943 { 0xfe97, UNICODE_NOT_PRESENT_OFFSET, 14770 }, 25944 { 0xfe98, UNICODE_NOT_PRESENT_OFFSET, 14770 }, 25945 { 0xfe99, UNICODE_NOT_PRESENT_OFFSET, 14773 }, 25946 { 0xfe9a, UNICODE_NOT_PRESENT_OFFSET, 14773 }, 25947 { 0xfe9b, UNICODE_NOT_PRESENT_OFFSET, 14773 }, 25948 { 0xfe9c, UNICODE_NOT_PRESENT_OFFSET, 14773 }, 25949 { 0xfe9d, UNICODE_NOT_PRESENT_OFFSET, 14776 }, 25950 { 0xfe9e, UNICODE_NOT_PRESENT_OFFSET, 14776 }, 25951 { 0xfe9f, UNICODE_NOT_PRESENT_OFFSET, 14776 }, 25952 { 0xfea0, UNICODE_NOT_PRESENT_OFFSET, 14776 }, 25953 { 0xfea1, UNICODE_NOT_PRESENT_OFFSET, 14779 }, 25954 { 0xfea2, UNICODE_NOT_PRESENT_OFFSET, 14779 }, 25955 { 0xfea3, UNICODE_NOT_PRESENT_OFFSET, 14779 }, 25956 { 0xfea4, UNICODE_NOT_PRESENT_OFFSET, 14779 }, 25957 { 0xfea5, UNICODE_NOT_PRESENT_OFFSET, 14782 }, 25958 { 0xfea6, UNICODE_NOT_PRESENT_OFFSET, 14782 }, 25959 { 0xfea7, UNICODE_NOT_PRESENT_OFFSET, 14782 }, 25960 { 0xfea8, UNICODE_NOT_PRESENT_OFFSET, 14782 }, 25961 { 0xfea9, UNICODE_NOT_PRESENT_OFFSET, 14785 }, 25962 { 0xfeaa, UNICODE_NOT_PRESENT_OFFSET, 14785 }, 25963 { 0xfeab, UNICODE_NOT_PRESENT_OFFSET, 14788 }, 25964 { 0xfeac, UNICODE_NOT_PRESENT_OFFSET, 14788 }, 25965 { 0xfead, UNICODE_NOT_PRESENT_OFFSET, 14791 }, 25966 { 0xfeae, UNICODE_NOT_PRESENT_OFFSET, 14791 }, 25967 { 0xfeaf, UNICODE_NOT_PRESENT_OFFSET, 14794 }, 25968 { 0xfeb0, UNICODE_NOT_PRESENT_OFFSET, 14794 }, 25969 { 0xfeb1, UNICODE_NOT_PRESENT_OFFSET, 14797 }, 25970 { 0xfeb2, UNICODE_NOT_PRESENT_OFFSET, 14797 }, 25971 { 0xfeb3, UNICODE_NOT_PRESENT_OFFSET, 14797 }, 25972 { 0xfeb4, UNICODE_NOT_PRESENT_OFFSET, 14797 }, 25973 { 0xfeb5, UNICODE_NOT_PRESENT_OFFSET, 14800 }, 25974 { 0xfeb6, UNICODE_NOT_PRESENT_OFFSET, 14800 }, 25975 { 0xfeb7, UNICODE_NOT_PRESENT_OFFSET, 14800 }, 25976 { 0xfeb8, UNICODE_NOT_PRESENT_OFFSET, 14800 }, 25977 { 0xfeb9, UNICODE_NOT_PRESENT_OFFSET, 14803 }, 25978 { 0xfeba, UNICODE_NOT_PRESENT_OFFSET, 14803 }, 25979 { 0xfebb, UNICODE_NOT_PRESENT_OFFSET, 14803 }, 25980 { 0xfebc, UNICODE_NOT_PRESENT_OFFSET, 14803 }, 25981 { 0xfebd, UNICODE_NOT_PRESENT_OFFSET, 14806 }, 25982 { 0xfebe, UNICODE_NOT_PRESENT_OFFSET, 14806 }, 25983 { 0xfebf, UNICODE_NOT_PRESENT_OFFSET, 14806 }, 25984 { 0xfec0, UNICODE_NOT_PRESENT_OFFSET, 14806 }, 25985 { 0xfec1, UNICODE_NOT_PRESENT_OFFSET, 14809 }, 25986 { 0xfec2, UNICODE_NOT_PRESENT_OFFSET, 14809 }, 25987 { 0xfec3, UNICODE_NOT_PRESENT_OFFSET, 14809 }, 25988 { 0xfec4, UNICODE_NOT_PRESENT_OFFSET, 14809 }, 25989 { 0xfec5, UNICODE_NOT_PRESENT_OFFSET, 14812 }, 25990 { 0xfec6, UNICODE_NOT_PRESENT_OFFSET, 14812 }, 25991 { 0xfec7, UNICODE_NOT_PRESENT_OFFSET, 14812 }, 25992 { 0xfec8, UNICODE_NOT_PRESENT_OFFSET, 14812 }, 25993 { 0xfec9, UNICODE_NOT_PRESENT_OFFSET, 14815 }, 25994 { 0xfeca, UNICODE_NOT_PRESENT_OFFSET, 14815 }, 25995 { 0xfecb, UNICODE_NOT_PRESENT_OFFSET, 14815 }, 25996 { 0xfecc, UNICODE_NOT_PRESENT_OFFSET, 14815 }, 25997 { 0xfecd, UNICODE_NOT_PRESENT_OFFSET, 14818 }, 25998 { 0xfece, UNICODE_NOT_PRESENT_OFFSET, 14818 }, 25999 { 0xfecf, UNICODE_NOT_PRESENT_OFFSET, 14818 }, 26000 { 0xfed0, UNICODE_NOT_PRESENT_OFFSET, 14818 }, 26001 { 0xfed1, UNICODE_NOT_PRESENT_OFFSET, 14821 }, 26002 { 0xfed2, UNICODE_NOT_PRESENT_OFFSET, 14821 }, 26003 { 0xfed3, UNICODE_NOT_PRESENT_OFFSET, 14821 }, 26004 { 0xfed4, UNICODE_NOT_PRESENT_OFFSET, 14821 }, 26005 { 0xfed5, UNICODE_NOT_PRESENT_OFFSET, 14824 }, 26006 { 0xfed6, UNICODE_NOT_PRESENT_OFFSET, 14824 }, 26007 { 0xfed7, UNICODE_NOT_PRESENT_OFFSET, 14824 }, 26008 { 0xfed8, UNICODE_NOT_PRESENT_OFFSET, 14824 }, 26009 { 0xfed9, UNICODE_NOT_PRESENT_OFFSET, 14827 }, 26010 { 0xfeda, UNICODE_NOT_PRESENT_OFFSET, 14827 }, 26011 { 0xfedb, UNICODE_NOT_PRESENT_OFFSET, 14827 }, 26012 { 0xfedc, UNICODE_NOT_PRESENT_OFFSET, 14827 }, 26013 { 0xfedd, UNICODE_NOT_PRESENT_OFFSET, 14830 }, 26014 { 0xfede, UNICODE_NOT_PRESENT_OFFSET, 14830 }, 26015 { 0xfedf, UNICODE_NOT_PRESENT_OFFSET, 14830 }, 26016 { 0xfee0, UNICODE_NOT_PRESENT_OFFSET, 14830 }, 26017 { 0xfee1, UNICODE_NOT_PRESENT_OFFSET, 14833 }, 26018 { 0xfee2, UNICODE_NOT_PRESENT_OFFSET, 14833 }, 26019 { 0xfee3, UNICODE_NOT_PRESENT_OFFSET, 14833 }, 26020 { 0xfee4, UNICODE_NOT_PRESENT_OFFSET, 14833 }, 26021 { 0xfee5, UNICODE_NOT_PRESENT_OFFSET, 14836 }, 26022 { 0xfee6, UNICODE_NOT_PRESENT_OFFSET, 14836 }, 26023 { 0xfee7, UNICODE_NOT_PRESENT_OFFSET, 14836 }, 26024 { 0xfee8, UNICODE_NOT_PRESENT_OFFSET, 14836 }, 26025 { 0xfee9, UNICODE_NOT_PRESENT_OFFSET, 14839 }, 26026 { 0xfeea, UNICODE_NOT_PRESENT_OFFSET, 14839 }, 26027 { 0xfeeb, UNICODE_NOT_PRESENT_OFFSET, 14839 }, 26028 { 0xfeec, UNICODE_NOT_PRESENT_OFFSET, 14839 }, 26029 { 0xfeed, UNICODE_NOT_PRESENT_OFFSET, 14842 }, 26030 { 0xfeee, UNICODE_NOT_PRESENT_OFFSET, 14842 }, 26031 { 0xfeef, UNICODE_NOT_PRESENT_OFFSET, 12891 }, 26032 { 0xfef0, UNICODE_NOT_PRESENT_OFFSET, 12891 }, 26033 { 0xfef1, UNICODE_NOT_PRESENT_OFFSET, 14845 }, 26034 { 0xfef2, UNICODE_NOT_PRESENT_OFFSET, 14845 }, 26035 { 0xfef3, UNICODE_NOT_PRESENT_OFFSET, 14845 }, 26036 { 0xfef4, UNICODE_NOT_PRESENT_OFFSET, 14845 }, 26037 { 0xfef5, UNICODE_NOT_PRESENT_OFFSET, 14848 }, 26038 { 0xfef6, UNICODE_NOT_PRESENT_OFFSET, 14848 }, 26039 { 0xfef7, UNICODE_NOT_PRESENT_OFFSET, 14855 }, 26040 { 0xfef8, UNICODE_NOT_PRESENT_OFFSET, 14855 }, 26041 { 0xfef9, UNICODE_NOT_PRESENT_OFFSET, 14862 }, 26042 { 0xfefa, UNICODE_NOT_PRESENT_OFFSET, 14862 }, 26043 { 0xfefb, UNICODE_NOT_PRESENT_OFFSET, 14869 }, 26044 { 0xfefc, UNICODE_NOT_PRESENT_OFFSET, 14869 }, 26045 { 0xff01, UNICODE_NOT_PRESENT_OFFSET, 14606 }, 26046 { 0xff02, UNICODE_NOT_PRESENT_OFFSET, 14874 }, 26047 { 0xff03, UNICODE_NOT_PRESENT_OFFSET, 14676 }, 26048 { 0xff04, UNICODE_NOT_PRESENT_OFFSET, 14690 }, 26049 { 0xff05, UNICODE_NOT_PRESENT_OFFSET, 14692 }, 26050 { 0xff06, UNICODE_NOT_PRESENT_OFFSET, 14678 }, 26051 { 0xff07, UNICODE_NOT_PRESENT_OFFSET, 14876 }, 26052 { 0xff08, UNICODE_NOT_PRESENT_OFFSET, 5275 }, 26053 { 0xff09, UNICODE_NOT_PRESENT_OFFSET, 5277 }, 26054 { 0xff0a, UNICODE_NOT_PRESENT_OFFSET, 14680 }, 26055 { 0xff0b, UNICODE_NOT_PRESENT_OFFSET, 5267 }, 26056 { 0xff0c, UNICODE_NOT_PRESENT_OFFSET, 14594 }, 26057 { 0xff0d, UNICODE_NOT_PRESENT_OFFSET, 14682 }, 26058 { 0xff0e, UNICODE_NOT_PRESENT_OFFSET, 5181 }, 26059 { 0xff0f, UNICODE_NOT_PRESENT_OFFSET, 14878 }, 26060 { 0xff10, UNICODE_NOT_PRESENT_OFFSET, 5253 }, 26061 { 0xff11, UNICODE_NOT_PRESENT_OFFSET, 27 }, 26062 { 0xff12, UNICODE_NOT_PRESENT_OFFSET, 12 }, 26063 { 0xff13, UNICODE_NOT_PRESENT_OFFSET, 14 }, 26064 { 0xff14, UNICODE_NOT_PRESENT_OFFSET, 5255 }, 26065 { 0xff15, UNICODE_NOT_PRESENT_OFFSET, 5257 }, 26066 { 0xff16, UNICODE_NOT_PRESENT_OFFSET, 5259 }, 26067 { 0xff17, UNICODE_NOT_PRESENT_OFFSET, 5261 }, 26068 { 0xff18, UNICODE_NOT_PRESENT_OFFSET, 5263 }, 26069 { 0xff19, UNICODE_NOT_PRESENT_OFFSET, 5265 }, 26070 { 0xff1a, UNICODE_NOT_PRESENT_OFFSET, 14604 }, 26071 { 0xff1b, UNICODE_NOT_PRESENT_OFFSET, 1248 }, 26072 { 0xff1c, UNICODE_NOT_PRESENT_OFFSET, 14684 }, 26073 { 0xff1d, UNICODE_NOT_PRESENT_OFFSET, 5273 }, 26074 { 0xff1e, UNICODE_NOT_PRESENT_OFFSET, 14686 }, 26075 { 0xff1f, UNICODE_NOT_PRESENT_OFFSET, 14608 }, 26076 { 0xff20, UNICODE_NOT_PRESENT_OFFSET, 14694 }, 26077 { 0xff21, UNICODE_NOT_PRESENT_OFFSET, 2309 }, 26078 { 0xff22, UNICODE_NOT_PRESENT_OFFSET, 2314 }, 26079 { 0xff23, UNICODE_NOT_PRESENT_OFFSET, 5292 }, 26080 { 0xff24, UNICODE_NOT_PRESENT_OFFSET, 2316 }, 26081 { 0xff25, UNICODE_NOT_PRESENT_OFFSET, 2318 }, 26082 { 0xff26, UNICODE_NOT_PRESENT_OFFSET, 5336 }, 26083 { 0xff27, UNICODE_NOT_PRESENT_OFFSET, 2323 }, 26084 { 0xff28, UNICODE_NOT_PRESENT_OFFSET, 2325 }, 26085 { 0xff29, UNICODE_NOT_PRESENT_OFFSET, 2327 }, 26086 { 0xff2a, UNICODE_NOT_PRESENT_OFFSET, 2329 }, 26087 { 0xff2b, UNICODE_NOT_PRESENT_OFFSET, 2331 }, 26088 { 0xff2c, UNICODE_NOT_PRESENT_OFFSET, 2333 }, 26089 { 0xff2d, UNICODE_NOT_PRESENT_OFFSET, 2335 }, 26090 { 0xff2e, UNICODE_NOT_PRESENT_OFFSET, 2337 }, 26091 { 0xff2f, UNICODE_NOT_PRESENT_OFFSET, 2339 }, 26092 { 0xff30, UNICODE_NOT_PRESENT_OFFSET, 2344 }, 26093 { 0xff31, UNICODE_NOT_PRESENT_OFFSET, 5319 }, 26094 { 0xff32, UNICODE_NOT_PRESENT_OFFSET, 2346 }, 26095 { 0xff33, UNICODE_NOT_PRESENT_OFFSET, 6133 }, 26096 { 0xff34, UNICODE_NOT_PRESENT_OFFSET, 2348 }, 26097 { 0xff35, UNICODE_NOT_PRESENT_OFFSET, 2350 }, 26098 { 0xff36, UNICODE_NOT_PRESENT_OFFSET, 5470 }, 26099 { 0xff37, UNICODE_NOT_PRESENT_OFFSET, 2352 }, 26100 { 0xff38, UNICODE_NOT_PRESENT_OFFSET, 5487 }, 26101 { 0xff39, UNICODE_NOT_PRESENT_OFFSET, 6135 }, 26102 { 0xff3a, UNICODE_NOT_PRESENT_OFFSET, 5331 }, 26103 { 0xff3b, UNICODE_NOT_PRESENT_OFFSET, 14672 }, 26104 { 0xff3c, UNICODE_NOT_PRESENT_OFFSET, 14688 }, 26105 { 0xff3d, UNICODE_NOT_PRESENT_OFFSET, 14674 }, 26106 { 0xff3e, UNICODE_NOT_PRESENT_OFFSET, 14880 }, 26107 { 0xff3f, UNICODE_NOT_PRESENT_OFFSET, 14626 }, 26108 { 0xff40, UNICODE_NOT_PRESENT_OFFSET, 5110 }, 26109 { 0xff41, UNICODE_NOT_PRESENT_OFFSET, 6 }, 26110 { 0xff42, UNICODE_NOT_PRESENT_OFFSET, 2364 }, 26111 { 0xff43, UNICODE_NOT_PRESENT_OFFSET, 2435 }, 26112 { 0xff44, UNICODE_NOT_PRESENT_OFFSET, 2366 }, 26113 { 0xff45, UNICODE_NOT_PRESENT_OFFSET, 2368 }, 26114 { 0xff46, UNICODE_NOT_PRESENT_OFFSET, 2443 }, 26115 { 0xff47, UNICODE_NOT_PRESENT_OFFSET, 2379 }, 26116 { 0xff48, UNICODE_NOT_PRESENT_OFFSET, 1171 }, 26117 { 0xff49, UNICODE_NOT_PRESENT_OFFSET, 2427 }, 26118 { 0xff4a, UNICODE_NOT_PRESENT_OFFSET, 1176 }, 26119 { 0xff4b, UNICODE_NOT_PRESENT_OFFSET, 2381 }, 26120 { 0xff4c, UNICODE_NOT_PRESENT_OFFSET, 1220 }, 26121 { 0xff4d, UNICODE_NOT_PRESENT_OFFSET, 2383 }, 26122 { 0xff4e, UNICODE_NOT_PRESENT_OFFSET, 5279 }, 26123 { 0xff4f, UNICODE_NOT_PRESENT_OFFSET, 29 }, 26124 { 0xff50, UNICODE_NOT_PRESENT_OFFSET, 2399 }, 26125 { 0xff51, UNICODE_NOT_PRESENT_OFFSET, 6137 }, 26126 { 0xff52, UNICODE_NOT_PRESENT_OFFSET, 1178 }, 26127 { 0xff53, UNICODE_NOT_PRESENT_OFFSET, 711 }, 26128 { 0xff54, UNICODE_NOT_PRESENT_OFFSET, 2401 }, 26129 { 0xff55, UNICODE_NOT_PRESENT_OFFSET, 2403 }, 26130 { 0xff56, UNICODE_NOT_PRESENT_OFFSET, 2412 }, 26131 { 0xff57, UNICODE_NOT_PRESENT_OFFSET, 1189 }, 26132 { 0xff58, UNICODE_NOT_PRESENT_OFFSET, 1222 }, 26133 { 0xff59, UNICODE_NOT_PRESENT_OFFSET, 1191 }, 26134 { 0xff5a, UNICODE_NOT_PRESENT_OFFSET, 2526 }, 26135 { 0xff5b, UNICODE_NOT_PRESENT_OFFSET, 14628 }, 26136 { 0xff5c, UNICODE_NOT_PRESENT_OFFSET, 14882 }, 26137 { 0xff5d, UNICODE_NOT_PRESENT_OFFSET, 14630 }, 26138 { 0xff5e, UNICODE_NOT_PRESENT_OFFSET, 14884 }, 26139 { 0xff5f, UNICODE_NOT_PRESENT_OFFSET, 14886 }, 26140 { 0xff60, UNICODE_NOT_PRESENT_OFFSET, 14890 }, 26141 { 0xff61, UNICODE_NOT_PRESENT_OFFSET, 14600 }, 26142 { 0xff62, UNICODE_NOT_PRESENT_OFFSET, 14656 }, 26143 { 0xff63, UNICODE_NOT_PRESENT_OFFSET, 14660 }, 26144 { 0xff64, UNICODE_NOT_PRESENT_OFFSET, 14596 }, 26145 { 0xff65, UNICODE_NOT_PRESENT_OFFSET, 14894 }, 26146 { 0xff66, UNICODE_NOT_PRESENT_OFFSET, 8992 }, 26147 { 0xff67, UNICODE_NOT_PRESENT_OFFSET, 14898 }, 26148 { 0xff68, UNICODE_NOT_PRESENT_OFFSET, 14902 }, 26149 { 0xff69, UNICODE_NOT_PRESENT_OFFSET, 14906 }, 26150 { 0xff6a, UNICODE_NOT_PRESENT_OFFSET, 14910 }, 26151 { 0xff6b, UNICODE_NOT_PRESENT_OFFSET, 14914 }, 26152 { 0xff6c, UNICODE_NOT_PRESENT_OFFSET, 14918 }, 26153 { 0xff6d, UNICODE_NOT_PRESENT_OFFSET, 14922 }, 26154 { 0xff6e, UNICODE_NOT_PRESENT_OFFSET, 14926 }, 26155 { 0xff6f, UNICODE_NOT_PRESENT_OFFSET, 14930 }, 26156 { 0xff70, UNICODE_NOT_PRESENT_OFFSET, 14934 }, 26157 { 0xff71, UNICODE_NOT_PRESENT_OFFSET, 8808 }, 26158 { 0xff72, UNICODE_NOT_PRESENT_OFFSET, 8812 }, 26159 { 0xff73, UNICODE_NOT_PRESENT_OFFSET, 8816 }, 26160 { 0xff74, UNICODE_NOT_PRESENT_OFFSET, 8820 }, 26161 { 0xff75, UNICODE_NOT_PRESENT_OFFSET, 8824 }, 26162 { 0xff76, UNICODE_NOT_PRESENT_OFFSET, 8828 }, 26163 { 0xff77, UNICODE_NOT_PRESENT_OFFSET, 8832 }, 26164 { 0xff78, UNICODE_NOT_PRESENT_OFFSET, 8836 }, 26165 { 0xff79, UNICODE_NOT_PRESENT_OFFSET, 8840 }, 26166 { 0xff7a, UNICODE_NOT_PRESENT_OFFSET, 8844 }, 26167 { 0xff7b, UNICODE_NOT_PRESENT_OFFSET, 8848 }, 26168 { 0xff7c, UNICODE_NOT_PRESENT_OFFSET, 8852 }, 26169 { 0xff7d, UNICODE_NOT_PRESENT_OFFSET, 8856 }, 26170 { 0xff7e, UNICODE_NOT_PRESENT_OFFSET, 8860 }, 26171 { 0xff7f, UNICODE_NOT_PRESENT_OFFSET, 8864 }, 26172 { 0xff80, UNICODE_NOT_PRESENT_OFFSET, 8868 }, 26173 { 0xff81, UNICODE_NOT_PRESENT_OFFSET, 8872 }, 26174 { 0xff82, UNICODE_NOT_PRESENT_OFFSET, 8876 }, 26175 { 0xff83, UNICODE_NOT_PRESENT_OFFSET, 8880 }, 26176 { 0xff84, UNICODE_NOT_PRESENT_OFFSET, 8884 }, 26177 { 0xff85, UNICODE_NOT_PRESENT_OFFSET, 8888 }, 26178 { 0xff86, UNICODE_NOT_PRESENT_OFFSET, 8892 }, 26179 { 0xff87, UNICODE_NOT_PRESENT_OFFSET, 8896 }, 26180 { 0xff88, UNICODE_NOT_PRESENT_OFFSET, 8900 }, 26181 { 0xff89, UNICODE_NOT_PRESENT_OFFSET, 8904 }, 26182 { 0xff8a, UNICODE_NOT_PRESENT_OFFSET, 8908 }, 26183 { 0xff8b, UNICODE_NOT_PRESENT_OFFSET, 8912 }, 26184 { 0xff8c, UNICODE_NOT_PRESENT_OFFSET, 8916 }, 26185 { 0xff8d, UNICODE_NOT_PRESENT_OFFSET, 8920 }, 26186 { 0xff8e, UNICODE_NOT_PRESENT_OFFSET, 8924 }, 26187 { 0xff8f, UNICODE_NOT_PRESENT_OFFSET, 8928 }, 26188 { 0xff90, UNICODE_NOT_PRESENT_OFFSET, 8932 }, 26189 { 0xff91, UNICODE_NOT_PRESENT_OFFSET, 8936 }, 26190 { 0xff92, UNICODE_NOT_PRESENT_OFFSET, 8940 }, 26191 { 0xff93, UNICODE_NOT_PRESENT_OFFSET, 8944 }, 26192 { 0xff94, UNICODE_NOT_PRESENT_OFFSET, 8948 }, 26193 { 0xff95, UNICODE_NOT_PRESENT_OFFSET, 8952 }, 26194 { 0xff96, UNICODE_NOT_PRESENT_OFFSET, 8956 }, 26195 { 0xff97, UNICODE_NOT_PRESENT_OFFSET, 8960 }, 26196 { 0xff98, UNICODE_NOT_PRESENT_OFFSET, 8964 }, 26197 { 0xff99, UNICODE_NOT_PRESENT_OFFSET, 8968 }, 26198 { 0xff9a, UNICODE_NOT_PRESENT_OFFSET, 8972 }, 26199 { 0xff9b, UNICODE_NOT_PRESENT_OFFSET, 8976 }, 26200 { 0xff9c, UNICODE_NOT_PRESENT_OFFSET, 8980 }, 26201 { 0xff9d, UNICODE_NOT_PRESENT_OFFSET, 14938 }, 26202 { 0xff9e, UNICODE_NOT_PRESENT_OFFSET, 14942 }, 26203 { 0xff9f, UNICODE_NOT_PRESENT_OFFSET, 14946 }, 26204 { 0xffa0, UNICODE_NOT_PRESENT_OFFSET, 7683 }, 26205 { 0xffa1, UNICODE_NOT_PRESENT_OFFSET, 7479 }, 26206 { 0xffa2, UNICODE_NOT_PRESENT_OFFSET, 7483 }, 26207 { 0xffa3, UNICODE_NOT_PRESENT_OFFSET, 7487 }, 26208 { 0xffa4, UNICODE_NOT_PRESENT_OFFSET, 7491 }, 26209 { 0xffa5, UNICODE_NOT_PRESENT_OFFSET, 7495 }, 26210 { 0xffa6, UNICODE_NOT_PRESENT_OFFSET, 7499 }, 26211 { 0xffa7, UNICODE_NOT_PRESENT_OFFSET, 7503 }, 26212 { 0xffa8, UNICODE_NOT_PRESENT_OFFSET, 7507 }, 26213 { 0xffa9, UNICODE_NOT_PRESENT_OFFSET, 7511 }, 26214 { 0xffaa, UNICODE_NOT_PRESENT_OFFSET, 7515 }, 26215 { 0xffab, UNICODE_NOT_PRESENT_OFFSET, 7519 }, 26216 { 0xffac, UNICODE_NOT_PRESENT_OFFSET, 7523 }, 26217 { 0xffad, UNICODE_NOT_PRESENT_OFFSET, 7527 }, 26218 { 0xffae, UNICODE_NOT_PRESENT_OFFSET, 7531 }, 26219 { 0xffaf, UNICODE_NOT_PRESENT_OFFSET, 7535 }, 26220 { 0xffb0, UNICODE_NOT_PRESENT_OFFSET, 7539 }, 26221 { 0xffb1, UNICODE_NOT_PRESENT_OFFSET, 7543 }, 26222 { 0xffb2, UNICODE_NOT_PRESENT_OFFSET, 7547 }, 26223 { 0xffb3, UNICODE_NOT_PRESENT_OFFSET, 7551 }, 26224 { 0xffb4, UNICODE_NOT_PRESENT_OFFSET, 7555 }, 26225 { 0xffb5, UNICODE_NOT_PRESENT_OFFSET, 7559 }, 26226 { 0xffb6, UNICODE_NOT_PRESENT_OFFSET, 7563 }, 26227 { 0xffb7, UNICODE_NOT_PRESENT_OFFSET, 7567 }, 26228 { 0xffb8, UNICODE_NOT_PRESENT_OFFSET, 7571 }, 26229 { 0xffb9, UNICODE_NOT_PRESENT_OFFSET, 7575 }, 26230 { 0xffba, UNICODE_NOT_PRESENT_OFFSET, 7579 }, 26231 { 0xffbb, UNICODE_NOT_PRESENT_OFFSET, 7583 }, 26232 { 0xffbc, UNICODE_NOT_PRESENT_OFFSET, 7587 }, 26233 { 0xffbd, UNICODE_NOT_PRESENT_OFFSET, 7591 }, 26234 { 0xffbe, UNICODE_NOT_PRESENT_OFFSET, 7595 }, 26235 { 0xffc2, UNICODE_NOT_PRESENT_OFFSET, 7599 }, 26236 { 0xffc3, UNICODE_NOT_PRESENT_OFFSET, 7603 }, 26237 { 0xffc4, UNICODE_NOT_PRESENT_OFFSET, 7607 }, 26238 { 0xffc5, UNICODE_NOT_PRESENT_OFFSET, 7611 }, 26239 { 0xffc6, UNICODE_NOT_PRESENT_OFFSET, 7615 }, 26240 { 0xffc7, UNICODE_NOT_PRESENT_OFFSET, 7619 }, 26241 { 0xffca, UNICODE_NOT_PRESENT_OFFSET, 7623 }, 26242 { 0xffcb, UNICODE_NOT_PRESENT_OFFSET, 7627 }, 26243 { 0xffcc, UNICODE_NOT_PRESENT_OFFSET, 7631 }, 26244 { 0xffcd, UNICODE_NOT_PRESENT_OFFSET, 7635 }, 26245 { 0xffce, UNICODE_NOT_PRESENT_OFFSET, 7639 }, 26246 { 0xffcf, UNICODE_NOT_PRESENT_OFFSET, 7643 }, 26247 { 0xffd2, UNICODE_NOT_PRESENT_OFFSET, 7647 }, 26248 { 0xffd3, UNICODE_NOT_PRESENT_OFFSET, 7651 }, 26249 { 0xffd4, UNICODE_NOT_PRESENT_OFFSET, 7655 }, 26250 { 0xffd5, UNICODE_NOT_PRESENT_OFFSET, 7659 }, 26251 { 0xffd6, UNICODE_NOT_PRESENT_OFFSET, 7663 }, 26252 { 0xffd7, UNICODE_NOT_PRESENT_OFFSET, 7667 }, 26253 { 0xffda, UNICODE_NOT_PRESENT_OFFSET, 7671 }, 26254 { 0xffdb, UNICODE_NOT_PRESENT_OFFSET, 7675 }, 26255 { 0xffdc, UNICODE_NOT_PRESENT_OFFSET, 7679 }, 26256 { 0xffe0, UNICODE_NOT_PRESENT_OFFSET, 14950 }, 26257 { 0xffe1, UNICODE_NOT_PRESENT_OFFSET, 14953 }, 26258 { 0xffe2, UNICODE_NOT_PRESENT_OFFSET, 14956 }, 26259 { 0xffe3, UNICODE_NOT_PRESENT_OFFSET, 8 }, 26260 { 0xffe4, UNICODE_NOT_PRESENT_OFFSET, 14959 }, 26261 { 0xffe5, UNICODE_NOT_PRESENT_OFFSET, 14962 }, 26262 { 0xffe6, UNICODE_NOT_PRESENT_OFFSET, 14965 }, 26263 { 0xffe8, UNICODE_NOT_PRESENT_OFFSET, 14969 }, 26264 { 0xffe9, UNICODE_NOT_PRESENT_OFFSET, 14973 }, 26265 { 0xffea, UNICODE_NOT_PRESENT_OFFSET, 14977 }, 26266 { 0xffeb, UNICODE_NOT_PRESENT_OFFSET, 14981 }, 26267 { 0xffec, UNICODE_NOT_PRESENT_OFFSET, 14985 }, 26268 { 0xffed, UNICODE_NOT_PRESENT_OFFSET, 14989 }, 26269 { 0xffee, UNICODE_NOT_PRESENT_OFFSET, 14993 }, 26270 { 0x1109a, 14997, UNICODE_NOT_PRESENT_OFFSET }, 26271 { 0x1109c, 15006, UNICODE_NOT_PRESENT_OFFSET }, 26272 { 0x110ab, 15015, UNICODE_NOT_PRESENT_OFFSET }, 26273 { 0x1112e, 15024, UNICODE_NOT_PRESENT_OFFSET }, 26274 { 0x1112f, 15033, UNICODE_NOT_PRESENT_OFFSET }, 26275 { 0x1134b, 15042, UNICODE_NOT_PRESENT_OFFSET }, 26276 { 0x1134c, 15051, UNICODE_NOT_PRESENT_OFFSET }, 26277 { 0x114bb, 15060, UNICODE_NOT_PRESENT_OFFSET }, 26278 { 0x114bc, 15069, UNICODE_NOT_PRESENT_OFFSET }, 26279 { 0x114be, 15078, UNICODE_NOT_PRESENT_OFFSET }, 26280 { 0x115ba, 15087, UNICODE_NOT_PRESENT_OFFSET }, 26281 { 0x115bb, 15096, UNICODE_NOT_PRESENT_OFFSET }, 26282 { 0x1d15e, 15105, UNICODE_NOT_PRESENT_OFFSET }, 26283 { 0x1d15f, 15114, UNICODE_NOT_PRESENT_OFFSET }, 26284 { 0x1d160, 15123, UNICODE_NOT_PRESENT_OFFSET }, 26285 { 0x1d161, 15136, UNICODE_NOT_PRESENT_OFFSET }, 26286 { 0x1d162, 15149, UNICODE_NOT_PRESENT_OFFSET }, 26287 { 0x1d163, 15162, UNICODE_NOT_PRESENT_OFFSET }, 26288 { 0x1d164, 15175, UNICODE_NOT_PRESENT_OFFSET }, 26289 { 0x1d1bb, 15188, UNICODE_NOT_PRESENT_OFFSET }, 26290 { 0x1d1bc, 15197, UNICODE_NOT_PRESENT_OFFSET }, 26291 { 0x1d1bd, 15206, UNICODE_NOT_PRESENT_OFFSET }, 26292 { 0x1d1be, 15219, UNICODE_NOT_PRESENT_OFFSET }, 26293 { 0x1d1bf, 15232, UNICODE_NOT_PRESENT_OFFSET }, 26294 { 0x1d1c0, 15245, UNICODE_NOT_PRESENT_OFFSET }, 26295 { 0x1d400, UNICODE_NOT_PRESENT_OFFSET, 2309 }, 26296 { 0x1d401, UNICODE_NOT_PRESENT_OFFSET, 2314 }, 26297 { 0x1d402, UNICODE_NOT_PRESENT_OFFSET, 5292 }, 26298 { 0x1d403, UNICODE_NOT_PRESENT_OFFSET, 2316 }, 26299 { 0x1d404, UNICODE_NOT_PRESENT_OFFSET, 2318 }, 26300 { 0x1d405, UNICODE_NOT_PRESENT_OFFSET, 5336 }, 26301 { 0x1d406, UNICODE_NOT_PRESENT_OFFSET, 2323 }, 26302 { 0x1d407, UNICODE_NOT_PRESENT_OFFSET, 2325 }, 26303 { 0x1d408, UNICODE_NOT_PRESENT_OFFSET, 2327 }, 26304 { 0x1d409, UNICODE_NOT_PRESENT_OFFSET, 2329 }, 26305 { 0x1d40a, UNICODE_NOT_PRESENT_OFFSET, 2331 }, 26306 { 0x1d40b, UNICODE_NOT_PRESENT_OFFSET, 2333 }, 26307 { 0x1d40c, UNICODE_NOT_PRESENT_OFFSET, 2335 }, 26308 { 0x1d40d, UNICODE_NOT_PRESENT_OFFSET, 2337 }, 26309 { 0x1d40e, UNICODE_NOT_PRESENT_OFFSET, 2339 }, 26310 { 0x1d40f, UNICODE_NOT_PRESENT_OFFSET, 2344 }, 26311 { 0x1d410, UNICODE_NOT_PRESENT_OFFSET, 5319 }, 26312 { 0x1d411, UNICODE_NOT_PRESENT_OFFSET, 2346 }, 26313 { 0x1d412, UNICODE_NOT_PRESENT_OFFSET, 6133 }, 26314 { 0x1d413, UNICODE_NOT_PRESENT_OFFSET, 2348 }, 26315 { 0x1d414, UNICODE_NOT_PRESENT_OFFSET, 2350 }, 26316 { 0x1d415, UNICODE_NOT_PRESENT_OFFSET, 5470 }, 26317 { 0x1d416, UNICODE_NOT_PRESENT_OFFSET, 2352 }, 26318 { 0x1d417, UNICODE_NOT_PRESENT_OFFSET, 5487 }, 26319 { 0x1d418, UNICODE_NOT_PRESENT_OFFSET, 6135 }, 26320 { 0x1d419, UNICODE_NOT_PRESENT_OFFSET, 5331 }, 26321 { 0x1d41a, UNICODE_NOT_PRESENT_OFFSET, 6 }, 26322 { 0x1d41b, UNICODE_NOT_PRESENT_OFFSET, 2364 }, 26323 { 0x1d41c, UNICODE_NOT_PRESENT_OFFSET, 2435 }, 26324 { 0x1d41d, UNICODE_NOT_PRESENT_OFFSET, 2366 }, 26325 { 0x1d41e, UNICODE_NOT_PRESENT_OFFSET, 2368 }, 26326 { 0x1d41f, UNICODE_NOT_PRESENT_OFFSET, 2443 }, 26327 { 0x1d420, UNICODE_NOT_PRESENT_OFFSET, 2379 }, 26328 { 0x1d421, UNICODE_NOT_PRESENT_OFFSET, 1171 }, 26329 { 0x1d422, UNICODE_NOT_PRESENT_OFFSET, 2427 }, 26330 { 0x1d423, UNICODE_NOT_PRESENT_OFFSET, 1176 }, 26331 { 0x1d424, UNICODE_NOT_PRESENT_OFFSET, 2381 }, 26332 { 0x1d425, UNICODE_NOT_PRESENT_OFFSET, 1220 }, 26333 { 0x1d426, UNICODE_NOT_PRESENT_OFFSET, 2383 }, 26334 { 0x1d427, UNICODE_NOT_PRESENT_OFFSET, 5279 }, 26335 { 0x1d428, UNICODE_NOT_PRESENT_OFFSET, 29 }, 26336 { 0x1d429, UNICODE_NOT_PRESENT_OFFSET, 2399 }, 26337 { 0x1d42a, UNICODE_NOT_PRESENT_OFFSET, 6137 }, 26338 { 0x1d42b, UNICODE_NOT_PRESENT_OFFSET, 1178 }, 26339 { 0x1d42c, UNICODE_NOT_PRESENT_OFFSET, 711 }, 26340 { 0x1d42d, UNICODE_NOT_PRESENT_OFFSET, 2401 }, 26341 { 0x1d42e, UNICODE_NOT_PRESENT_OFFSET, 2403 }, 26342 { 0x1d42f, UNICODE_NOT_PRESENT_OFFSET, 2412 }, 26343 { 0x1d430, UNICODE_NOT_PRESENT_OFFSET, 1189 }, 26344 { 0x1d431, UNICODE_NOT_PRESENT_OFFSET, 1222 }, 26345 { 0x1d432, UNICODE_NOT_PRESENT_OFFSET, 1191 }, 26346 { 0x1d433, UNICODE_NOT_PRESENT_OFFSET, 2526 }, 26347 { 0x1d434, UNICODE_NOT_PRESENT_OFFSET, 2309 }, 26348 { 0x1d435, UNICODE_NOT_PRESENT_OFFSET, 2314 }, 26349 { 0x1d436, UNICODE_NOT_PRESENT_OFFSET, 5292 }, 26350 { 0x1d437, UNICODE_NOT_PRESENT_OFFSET, 2316 }, 26351 { 0x1d438, UNICODE_NOT_PRESENT_OFFSET, 2318 }, 26352 { 0x1d439, UNICODE_NOT_PRESENT_OFFSET, 5336 }, 26353 { 0x1d43a, UNICODE_NOT_PRESENT_OFFSET, 2323 }, 26354 { 0x1d43b, UNICODE_NOT_PRESENT_OFFSET, 2325 }, 26355 { 0x1d43c, UNICODE_NOT_PRESENT_OFFSET, 2327 }, 26356 { 0x1d43d, UNICODE_NOT_PRESENT_OFFSET, 2329 }, 26357 { 0x1d43e, UNICODE_NOT_PRESENT_OFFSET, 2331 }, 26358 { 0x1d43f, UNICODE_NOT_PRESENT_OFFSET, 2333 }, 26359 { 0x1d440, UNICODE_NOT_PRESENT_OFFSET, 2335 }, 26360 { 0x1d441, UNICODE_NOT_PRESENT_OFFSET, 2337 }, 26361 { 0x1d442, UNICODE_NOT_PRESENT_OFFSET, 2339 }, 26362 { 0x1d443, UNICODE_NOT_PRESENT_OFFSET, 2344 }, 26363 { 0x1d444, UNICODE_NOT_PRESENT_OFFSET, 5319 }, 26364 { 0x1d445, UNICODE_NOT_PRESENT_OFFSET, 2346 }, 26365 { 0x1d446, UNICODE_NOT_PRESENT_OFFSET, 6133 }, 26366 { 0x1d447, UNICODE_NOT_PRESENT_OFFSET, 2348 }, 26367 { 0x1d448, UNICODE_NOT_PRESENT_OFFSET, 2350 }, 26368 { 0x1d449, UNICODE_NOT_PRESENT_OFFSET, 5470 }, 26369 { 0x1d44a, UNICODE_NOT_PRESENT_OFFSET, 2352 }, 26370 { 0x1d44b, UNICODE_NOT_PRESENT_OFFSET, 5487 }, 26371 { 0x1d44c, UNICODE_NOT_PRESENT_OFFSET, 6135 }, 26372 { 0x1d44d, UNICODE_NOT_PRESENT_OFFSET, 5331 }, 26373 { 0x1d44e, UNICODE_NOT_PRESENT_OFFSET, 6 }, 26374 { 0x1d44f, UNICODE_NOT_PRESENT_OFFSET, 2364 }, 26375 { 0x1d450, UNICODE_NOT_PRESENT_OFFSET, 2435 }, 26376 { 0x1d451, UNICODE_NOT_PRESENT_OFFSET, 2366 }, 26377 { 0x1d452, UNICODE_NOT_PRESENT_OFFSET, 2368 }, 26378 { 0x1d453, UNICODE_NOT_PRESENT_OFFSET, 2443 }, 26379 { 0x1d454, UNICODE_NOT_PRESENT_OFFSET, 2379 }, 26380 { 0x1d456, UNICODE_NOT_PRESENT_OFFSET, 2427 }, 26381 { 0x1d457, UNICODE_NOT_PRESENT_OFFSET, 1176 }, 26382 { 0x1d458, UNICODE_NOT_PRESENT_OFFSET, 2381 }, 26383 { 0x1d459, UNICODE_NOT_PRESENT_OFFSET, 1220 }, 26384 { 0x1d45a, UNICODE_NOT_PRESENT_OFFSET, 2383 }, 26385 { 0x1d45b, UNICODE_NOT_PRESENT_OFFSET, 5279 }, 26386 { 0x1d45c, UNICODE_NOT_PRESENT_OFFSET, 29 }, 26387 { 0x1d45d, UNICODE_NOT_PRESENT_OFFSET, 2399 }, 26388 { 0x1d45e, UNICODE_NOT_PRESENT_OFFSET, 6137 }, 26389 { 0x1d45f, UNICODE_NOT_PRESENT_OFFSET, 1178 }, 26390 { 0x1d460, UNICODE_NOT_PRESENT_OFFSET, 711 }, 26391 { 0x1d461, UNICODE_NOT_PRESENT_OFFSET, 2401 }, 26392 { 0x1d462, UNICODE_NOT_PRESENT_OFFSET, 2403 }, 26393 { 0x1d463, UNICODE_NOT_PRESENT_OFFSET, 2412 }, 26394 { 0x1d464, UNICODE_NOT_PRESENT_OFFSET, 1189 }, 26395 { 0x1d465, UNICODE_NOT_PRESENT_OFFSET, 1222 }, 26396 { 0x1d466, UNICODE_NOT_PRESENT_OFFSET, 1191 }, 26397 { 0x1d467, UNICODE_NOT_PRESENT_OFFSET, 2526 }, 26398 { 0x1d468, UNICODE_NOT_PRESENT_OFFSET, 2309 }, 26399 { 0x1d469, UNICODE_NOT_PRESENT_OFFSET, 2314 }, 26400 { 0x1d46a, UNICODE_NOT_PRESENT_OFFSET, 5292 }, 26401 { 0x1d46b, UNICODE_NOT_PRESENT_OFFSET, 2316 }, 26402 { 0x1d46c, UNICODE_NOT_PRESENT_OFFSET, 2318 }, 26403 { 0x1d46d, UNICODE_NOT_PRESENT_OFFSET, 5336 }, 26404 { 0x1d46e, UNICODE_NOT_PRESENT_OFFSET, 2323 }, 26405 { 0x1d46f, UNICODE_NOT_PRESENT_OFFSET, 2325 }, 26406 { 0x1d470, UNICODE_NOT_PRESENT_OFFSET, 2327 }, 26407 { 0x1d471, UNICODE_NOT_PRESENT_OFFSET, 2329 }, 26408 { 0x1d472, UNICODE_NOT_PRESENT_OFFSET, 2331 }, 26409 { 0x1d473, UNICODE_NOT_PRESENT_OFFSET, 2333 }, 26410 { 0x1d474, UNICODE_NOT_PRESENT_OFFSET, 2335 }, 26411 { 0x1d475, UNICODE_NOT_PRESENT_OFFSET, 2337 }, 26412 { 0x1d476, UNICODE_NOT_PRESENT_OFFSET, 2339 }, 26413 { 0x1d477, UNICODE_NOT_PRESENT_OFFSET, 2344 }, 26414 { 0x1d478, UNICODE_NOT_PRESENT_OFFSET, 5319 }, 26415 { 0x1d479, UNICODE_NOT_PRESENT_OFFSET, 2346 }, 26416 { 0x1d47a, UNICODE_NOT_PRESENT_OFFSET, 6133 }, 26417 { 0x1d47b, UNICODE_NOT_PRESENT_OFFSET, 2348 }, 26418 { 0x1d47c, UNICODE_NOT_PRESENT_OFFSET, 2350 }, 26419 { 0x1d47d, UNICODE_NOT_PRESENT_OFFSET, 5470 }, 26420 { 0x1d47e, UNICODE_NOT_PRESENT_OFFSET, 2352 }, 26421 { 0x1d47f, UNICODE_NOT_PRESENT_OFFSET, 5487 }, 26422 { 0x1d480, UNICODE_NOT_PRESENT_OFFSET, 6135 }, 26423 { 0x1d481, UNICODE_NOT_PRESENT_OFFSET, 5331 }, 26424 { 0x1d482, UNICODE_NOT_PRESENT_OFFSET, 6 }, 26425 { 0x1d483, UNICODE_NOT_PRESENT_OFFSET, 2364 }, 26426 { 0x1d484, UNICODE_NOT_PRESENT_OFFSET, 2435 }, 26427 { 0x1d485, UNICODE_NOT_PRESENT_OFFSET, 2366 }, 26428 { 0x1d486, UNICODE_NOT_PRESENT_OFFSET, 2368 }, 26429 { 0x1d487, UNICODE_NOT_PRESENT_OFFSET, 2443 }, 26430 { 0x1d488, UNICODE_NOT_PRESENT_OFFSET, 2379 }, 26431 { 0x1d489, UNICODE_NOT_PRESENT_OFFSET, 1171 }, 26432 { 0x1d48a, UNICODE_NOT_PRESENT_OFFSET, 2427 }, 26433 { 0x1d48b, UNICODE_NOT_PRESENT_OFFSET, 1176 }, 26434 { 0x1d48c, UNICODE_NOT_PRESENT_OFFSET, 2381 }, 26435 { 0x1d48d, UNICODE_NOT_PRESENT_OFFSET, 1220 }, 26436 { 0x1d48e, UNICODE_NOT_PRESENT_OFFSET, 2383 }, 26437 { 0x1d48f, UNICODE_NOT_PRESENT_OFFSET, 5279 }, 26438 { 0x1d490, UNICODE_NOT_PRESENT_OFFSET, 29 }, 26439 { 0x1d491, UNICODE_NOT_PRESENT_OFFSET, 2399 }, 26440 { 0x1d492, UNICODE_NOT_PRESENT_OFFSET, 6137 }, 26441 { 0x1d493, UNICODE_NOT_PRESENT_OFFSET, 1178 }, 26442 { 0x1d494, UNICODE_NOT_PRESENT_OFFSET, 711 }, 26443 { 0x1d495, UNICODE_NOT_PRESENT_OFFSET, 2401 }, 26444 { 0x1d496, UNICODE_NOT_PRESENT_OFFSET, 2403 }, 26445 { 0x1d497, UNICODE_NOT_PRESENT_OFFSET, 2412 }, 26446 { 0x1d498, UNICODE_NOT_PRESENT_OFFSET, 1189 }, 26447 { 0x1d499, UNICODE_NOT_PRESENT_OFFSET, 1222 }, 26448 { 0x1d49a, UNICODE_NOT_PRESENT_OFFSET, 1191 }, 26449 { 0x1d49b, UNICODE_NOT_PRESENT_OFFSET, 2526 }, 26450 { 0x1d49c, UNICODE_NOT_PRESENT_OFFSET, 2309 }, 26451 { 0x1d49e, UNICODE_NOT_PRESENT_OFFSET, 5292 }, 26452 { 0x1d49f, UNICODE_NOT_PRESENT_OFFSET, 2316 }, 26453 { 0x1d4a2, UNICODE_NOT_PRESENT_OFFSET, 2323 }, 26454 { 0x1d4a5, UNICODE_NOT_PRESENT_OFFSET, 2329 }, 26455 { 0x1d4a6, UNICODE_NOT_PRESENT_OFFSET, 2331 }, 26456 { 0x1d4a9, UNICODE_NOT_PRESENT_OFFSET, 2337 }, 26457 { 0x1d4aa, UNICODE_NOT_PRESENT_OFFSET, 2339 }, 26458 { 0x1d4ab, UNICODE_NOT_PRESENT_OFFSET, 2344 }, 26459 { 0x1d4ac, UNICODE_NOT_PRESENT_OFFSET, 5319 }, 26460 { 0x1d4ae, UNICODE_NOT_PRESENT_OFFSET, 6133 }, 26461 { 0x1d4af, UNICODE_NOT_PRESENT_OFFSET, 2348 }, 26462 { 0x1d4b0, UNICODE_NOT_PRESENT_OFFSET, 2350 }, 26463 { 0x1d4b1, UNICODE_NOT_PRESENT_OFFSET, 5470 }, 26464 { 0x1d4b2, UNICODE_NOT_PRESENT_OFFSET, 2352 }, 26465 { 0x1d4b3, UNICODE_NOT_PRESENT_OFFSET, 5487 }, 26466 { 0x1d4b4, UNICODE_NOT_PRESENT_OFFSET, 6135 }, 26467 { 0x1d4b5, UNICODE_NOT_PRESENT_OFFSET, 5331 }, 26468 { 0x1d4b6, UNICODE_NOT_PRESENT_OFFSET, 6 }, 26469 { 0x1d4b7, UNICODE_NOT_PRESENT_OFFSET, 2364 }, 26470 { 0x1d4b8, UNICODE_NOT_PRESENT_OFFSET, 2435 }, 26471 { 0x1d4b9, UNICODE_NOT_PRESENT_OFFSET, 2366 }, 26472 { 0x1d4bb, UNICODE_NOT_PRESENT_OFFSET, 2443 }, 26473 { 0x1d4bd, UNICODE_NOT_PRESENT_OFFSET, 1171 }, 26474 { 0x1d4be, UNICODE_NOT_PRESENT_OFFSET, 2427 }, 26475 { 0x1d4bf, UNICODE_NOT_PRESENT_OFFSET, 1176 }, 26476 { 0x1d4c0, UNICODE_NOT_PRESENT_OFFSET, 2381 }, 26477 { 0x1d4c1, UNICODE_NOT_PRESENT_OFFSET, 1220 }, 26478 { 0x1d4c2, UNICODE_NOT_PRESENT_OFFSET, 2383 }, 26479 { 0x1d4c3, UNICODE_NOT_PRESENT_OFFSET, 5279 }, 26480 { 0x1d4c5, UNICODE_NOT_PRESENT_OFFSET, 2399 }, 26481 { 0x1d4c6, UNICODE_NOT_PRESENT_OFFSET, 6137 }, 26482 { 0x1d4c7, UNICODE_NOT_PRESENT_OFFSET, 1178 }, 26483 { 0x1d4c8, UNICODE_NOT_PRESENT_OFFSET, 711 }, 26484 { 0x1d4c9, UNICODE_NOT_PRESENT_OFFSET, 2401 }, 26485 { 0x1d4ca, UNICODE_NOT_PRESENT_OFFSET, 2403 }, 26486 { 0x1d4cb, UNICODE_NOT_PRESENT_OFFSET, 2412 }, 26487 { 0x1d4cc, UNICODE_NOT_PRESENT_OFFSET, 1189 }, 26488 { 0x1d4cd, UNICODE_NOT_PRESENT_OFFSET, 1222 }, 26489 { 0x1d4ce, UNICODE_NOT_PRESENT_OFFSET, 1191 }, 26490 { 0x1d4cf, UNICODE_NOT_PRESENT_OFFSET, 2526 }, 26491 { 0x1d4d0, UNICODE_NOT_PRESENT_OFFSET, 2309 }, 26492 { 0x1d4d1, UNICODE_NOT_PRESENT_OFFSET, 2314 }, 26493 { 0x1d4d2, UNICODE_NOT_PRESENT_OFFSET, 5292 }, 26494 { 0x1d4d3, UNICODE_NOT_PRESENT_OFFSET, 2316 }, 26495 { 0x1d4d4, UNICODE_NOT_PRESENT_OFFSET, 2318 }, 26496 { 0x1d4d5, UNICODE_NOT_PRESENT_OFFSET, 5336 }, 26497 { 0x1d4d6, UNICODE_NOT_PRESENT_OFFSET, 2323 }, 26498 { 0x1d4d7, UNICODE_NOT_PRESENT_OFFSET, 2325 }, 26499 { 0x1d4d8, UNICODE_NOT_PRESENT_OFFSET, 2327 }, 26500 { 0x1d4d9, UNICODE_NOT_PRESENT_OFFSET, 2329 }, 26501 { 0x1d4da, UNICODE_NOT_PRESENT_OFFSET, 2331 }, 26502 { 0x1d4db, UNICODE_NOT_PRESENT_OFFSET, 2333 }, 26503 { 0x1d4dc, UNICODE_NOT_PRESENT_OFFSET, 2335 }, 26504 { 0x1d4dd, UNICODE_NOT_PRESENT_OFFSET, 2337 }, 26505 { 0x1d4de, UNICODE_NOT_PRESENT_OFFSET, 2339 }, 26506 { 0x1d4df, UNICODE_NOT_PRESENT_OFFSET, 2344 }, 26507 { 0x1d4e0, UNICODE_NOT_PRESENT_OFFSET, 5319 }, 26508 { 0x1d4e1, UNICODE_NOT_PRESENT_OFFSET, 2346 }, 26509 { 0x1d4e2, UNICODE_NOT_PRESENT_OFFSET, 6133 }, 26510 { 0x1d4e3, UNICODE_NOT_PRESENT_OFFSET, 2348 }, 26511 { 0x1d4e4, UNICODE_NOT_PRESENT_OFFSET, 2350 }, 26512 { 0x1d4e5, UNICODE_NOT_PRESENT_OFFSET, 5470 }, 26513 { 0x1d4e6, UNICODE_NOT_PRESENT_OFFSET, 2352 }, 26514 { 0x1d4e7, UNICODE_NOT_PRESENT_OFFSET, 5487 }, 26515 { 0x1d4e8, UNICODE_NOT_PRESENT_OFFSET, 6135 }, 26516 { 0x1d4e9, UNICODE_NOT_PRESENT_OFFSET, 5331 }, 26517 { 0x1d4ea, UNICODE_NOT_PRESENT_OFFSET, 6 }, 26518 { 0x1d4eb, UNICODE_NOT_PRESENT_OFFSET, 2364 }, 26519 { 0x1d4ec, UNICODE_NOT_PRESENT_OFFSET, 2435 }, 26520 { 0x1d4ed, UNICODE_NOT_PRESENT_OFFSET, 2366 }, 26521 { 0x1d4ee, UNICODE_NOT_PRESENT_OFFSET, 2368 }, 26522 { 0x1d4ef, UNICODE_NOT_PRESENT_OFFSET, 2443 }, 26523 { 0x1d4f0, UNICODE_NOT_PRESENT_OFFSET, 2379 }, 26524 { 0x1d4f1, UNICODE_NOT_PRESENT_OFFSET, 1171 }, 26525 { 0x1d4f2, UNICODE_NOT_PRESENT_OFFSET, 2427 }, 26526 { 0x1d4f3, UNICODE_NOT_PRESENT_OFFSET, 1176 }, 26527 { 0x1d4f4, UNICODE_NOT_PRESENT_OFFSET, 2381 }, 26528 { 0x1d4f5, UNICODE_NOT_PRESENT_OFFSET, 1220 }, 26529 { 0x1d4f6, UNICODE_NOT_PRESENT_OFFSET, 2383 }, 26530 { 0x1d4f7, UNICODE_NOT_PRESENT_OFFSET, 5279 }, 26531 { 0x1d4f8, UNICODE_NOT_PRESENT_OFFSET, 29 }, 26532 { 0x1d4f9, UNICODE_NOT_PRESENT_OFFSET, 2399 }, 26533 { 0x1d4fa, UNICODE_NOT_PRESENT_OFFSET, 6137 }, 26534 { 0x1d4fb, UNICODE_NOT_PRESENT_OFFSET, 1178 }, 26535 { 0x1d4fc, UNICODE_NOT_PRESENT_OFFSET, 711 }, 26536 { 0x1d4fd, UNICODE_NOT_PRESENT_OFFSET, 2401 }, 26537 { 0x1d4fe, UNICODE_NOT_PRESENT_OFFSET, 2403 }, 26538 { 0x1d4ff, UNICODE_NOT_PRESENT_OFFSET, 2412 }, 26539 { 0x1d500, UNICODE_NOT_PRESENT_OFFSET, 1189 }, 26540 { 0x1d501, UNICODE_NOT_PRESENT_OFFSET, 1222 }, 26541 { 0x1d502, UNICODE_NOT_PRESENT_OFFSET, 1191 }, 26542 { 0x1d503, UNICODE_NOT_PRESENT_OFFSET, 2526 }, 26543 { 0x1d504, UNICODE_NOT_PRESENT_OFFSET, 2309 }, 26544 { 0x1d505, UNICODE_NOT_PRESENT_OFFSET, 2314 }, 26545 { 0x1d507, UNICODE_NOT_PRESENT_OFFSET, 2316 }, 26546 { 0x1d508, UNICODE_NOT_PRESENT_OFFSET, 2318 }, 26547 { 0x1d509, UNICODE_NOT_PRESENT_OFFSET, 5336 }, 26548 { 0x1d50a, UNICODE_NOT_PRESENT_OFFSET, 2323 }, 26549 { 0x1d50d, UNICODE_NOT_PRESENT_OFFSET, 2329 }, 26550 { 0x1d50e, UNICODE_NOT_PRESENT_OFFSET, 2331 }, 26551 { 0x1d50f, UNICODE_NOT_PRESENT_OFFSET, 2333 }, 26552 { 0x1d510, UNICODE_NOT_PRESENT_OFFSET, 2335 }, 26553 { 0x1d511, UNICODE_NOT_PRESENT_OFFSET, 2337 }, 26554 { 0x1d512, UNICODE_NOT_PRESENT_OFFSET, 2339 }, 26555 { 0x1d513, UNICODE_NOT_PRESENT_OFFSET, 2344 }, 26556 { 0x1d514, UNICODE_NOT_PRESENT_OFFSET, 5319 }, 26557 { 0x1d516, UNICODE_NOT_PRESENT_OFFSET, 6133 }, 26558 { 0x1d517, UNICODE_NOT_PRESENT_OFFSET, 2348 }, 26559 { 0x1d518, UNICODE_NOT_PRESENT_OFFSET, 2350 }, 26560 { 0x1d519, UNICODE_NOT_PRESENT_OFFSET, 5470 }, 26561 { 0x1d51a, UNICODE_NOT_PRESENT_OFFSET, 2352 }, 26562 { 0x1d51b, UNICODE_NOT_PRESENT_OFFSET, 5487 }, 26563 { 0x1d51c, UNICODE_NOT_PRESENT_OFFSET, 6135 }, 26564 { 0x1d51e, UNICODE_NOT_PRESENT_OFFSET, 6 }, 26565 { 0x1d51f, UNICODE_NOT_PRESENT_OFFSET, 2364 }, 26566 { 0x1d520, UNICODE_NOT_PRESENT_OFFSET, 2435 }, 26567 { 0x1d521, UNICODE_NOT_PRESENT_OFFSET, 2366 }, 26568 { 0x1d522, UNICODE_NOT_PRESENT_OFFSET, 2368 }, 26569 { 0x1d523, UNICODE_NOT_PRESENT_OFFSET, 2443 }, 26570 { 0x1d524, UNICODE_NOT_PRESENT_OFFSET, 2379 }, 26571 { 0x1d525, UNICODE_NOT_PRESENT_OFFSET, 1171 }, 26572 { 0x1d526, UNICODE_NOT_PRESENT_OFFSET, 2427 }, 26573 { 0x1d527, UNICODE_NOT_PRESENT_OFFSET, 1176 }, 26574 { 0x1d528, UNICODE_NOT_PRESENT_OFFSET, 2381 }, 26575 { 0x1d529, UNICODE_NOT_PRESENT_OFFSET, 1220 }, 26576 { 0x1d52a, UNICODE_NOT_PRESENT_OFFSET, 2383 }, 26577 { 0x1d52b, UNICODE_NOT_PRESENT_OFFSET, 5279 }, 26578 { 0x1d52c, UNICODE_NOT_PRESENT_OFFSET, 29 }, 26579 { 0x1d52d, UNICODE_NOT_PRESENT_OFFSET, 2399 }, 26580 { 0x1d52e, UNICODE_NOT_PRESENT_OFFSET, 6137 }, 26581 { 0x1d52f, UNICODE_NOT_PRESENT_OFFSET, 1178 }, 26582 { 0x1d530, UNICODE_NOT_PRESENT_OFFSET, 711 }, 26583 { 0x1d531, UNICODE_NOT_PRESENT_OFFSET, 2401 }, 26584 { 0x1d532, UNICODE_NOT_PRESENT_OFFSET, 2403 }, 26585 { 0x1d533, UNICODE_NOT_PRESENT_OFFSET, 2412 }, 26586 { 0x1d534, UNICODE_NOT_PRESENT_OFFSET, 1189 }, 26587 { 0x1d535, UNICODE_NOT_PRESENT_OFFSET, 1222 }, 26588 { 0x1d536, UNICODE_NOT_PRESENT_OFFSET, 1191 }, 26589 { 0x1d537, UNICODE_NOT_PRESENT_OFFSET, 2526 }, 26590 { 0x1d538, UNICODE_NOT_PRESENT_OFFSET, 2309 }, 26591 { 0x1d539, UNICODE_NOT_PRESENT_OFFSET, 2314 }, 26592 { 0x1d53b, UNICODE_NOT_PRESENT_OFFSET, 2316 }, 26593 { 0x1d53c, UNICODE_NOT_PRESENT_OFFSET, 2318 }, 26594 { 0x1d53d, UNICODE_NOT_PRESENT_OFFSET, 5336 }, 26595 { 0x1d53e, UNICODE_NOT_PRESENT_OFFSET, 2323 }, 26596 { 0x1d540, UNICODE_NOT_PRESENT_OFFSET, 2327 }, 26597 { 0x1d541, UNICODE_NOT_PRESENT_OFFSET, 2329 }, 26598 { 0x1d542, UNICODE_NOT_PRESENT_OFFSET, 2331 }, 26599 { 0x1d543, UNICODE_NOT_PRESENT_OFFSET, 2333 }, 26600 { 0x1d544, UNICODE_NOT_PRESENT_OFFSET, 2335 }, 26601 { 0x1d546, UNICODE_NOT_PRESENT_OFFSET, 2339 }, 26602 { 0x1d54a, UNICODE_NOT_PRESENT_OFFSET, 6133 }, 26603 { 0x1d54b, UNICODE_NOT_PRESENT_OFFSET, 2348 }, 26604 { 0x1d54c, UNICODE_NOT_PRESENT_OFFSET, 2350 }, 26605 { 0x1d54d, UNICODE_NOT_PRESENT_OFFSET, 5470 }, 26606 { 0x1d54e, UNICODE_NOT_PRESENT_OFFSET, 2352 }, 26607 { 0x1d54f, UNICODE_NOT_PRESENT_OFFSET, 5487 }, 26608 { 0x1d550, UNICODE_NOT_PRESENT_OFFSET, 6135 }, 26609 { 0x1d552, UNICODE_NOT_PRESENT_OFFSET, 6 }, 26610 { 0x1d553, UNICODE_NOT_PRESENT_OFFSET, 2364 }, 26611 { 0x1d554, UNICODE_NOT_PRESENT_OFFSET, 2435 }, 26612 { 0x1d555, UNICODE_NOT_PRESENT_OFFSET, 2366 }, 26613 { 0x1d556, UNICODE_NOT_PRESENT_OFFSET, 2368 }, 26614 { 0x1d557, UNICODE_NOT_PRESENT_OFFSET, 2443 }, 26615 { 0x1d558, UNICODE_NOT_PRESENT_OFFSET, 2379 }, 26616 { 0x1d559, UNICODE_NOT_PRESENT_OFFSET, 1171 }, 26617 { 0x1d55a, UNICODE_NOT_PRESENT_OFFSET, 2427 }, 26618 { 0x1d55b, UNICODE_NOT_PRESENT_OFFSET, 1176 }, 26619 { 0x1d55c, UNICODE_NOT_PRESENT_OFFSET, 2381 }, 26620 { 0x1d55d, UNICODE_NOT_PRESENT_OFFSET, 1220 }, 26621 { 0x1d55e, UNICODE_NOT_PRESENT_OFFSET, 2383 }, 26622 { 0x1d55f, UNICODE_NOT_PRESENT_OFFSET, 5279 }, 26623 { 0x1d560, UNICODE_NOT_PRESENT_OFFSET, 29 }, 26624 { 0x1d561, UNICODE_NOT_PRESENT_OFFSET, 2399 }, 26625 { 0x1d562, UNICODE_NOT_PRESENT_OFFSET, 6137 }, 26626 { 0x1d563, UNICODE_NOT_PRESENT_OFFSET, 1178 }, 26627 { 0x1d564, UNICODE_NOT_PRESENT_OFFSET, 711 }, 26628 { 0x1d565, UNICODE_NOT_PRESENT_OFFSET, 2401 }, 26629 { 0x1d566, UNICODE_NOT_PRESENT_OFFSET, 2403 }, 26630 { 0x1d567, UNICODE_NOT_PRESENT_OFFSET, 2412 }, 26631 { 0x1d568, UNICODE_NOT_PRESENT_OFFSET, 1189 }, 26632 { 0x1d569, UNICODE_NOT_PRESENT_OFFSET, 1222 }, 26633 { 0x1d56a, UNICODE_NOT_PRESENT_OFFSET, 1191 }, 26634 { 0x1d56b, UNICODE_NOT_PRESENT_OFFSET, 2526 }, 26635 { 0x1d56c, UNICODE_NOT_PRESENT_OFFSET, 2309 }, 26636 { 0x1d56d, UNICODE_NOT_PRESENT_OFFSET, 2314 }, 26637 { 0x1d56e, UNICODE_NOT_PRESENT_OFFSET, 5292 }, 26638 { 0x1d56f, UNICODE_NOT_PRESENT_OFFSET, 2316 }, 26639 { 0x1d570, UNICODE_NOT_PRESENT_OFFSET, 2318 }, 26640 { 0x1d571, UNICODE_NOT_PRESENT_OFFSET, 5336 }, 26641 { 0x1d572, UNICODE_NOT_PRESENT_OFFSET, 2323 }, 26642 { 0x1d573, UNICODE_NOT_PRESENT_OFFSET, 2325 }, 26643 { 0x1d574, UNICODE_NOT_PRESENT_OFFSET, 2327 }, 26644 { 0x1d575, UNICODE_NOT_PRESENT_OFFSET, 2329 }, 26645 { 0x1d576, UNICODE_NOT_PRESENT_OFFSET, 2331 }, 26646 { 0x1d577, UNICODE_NOT_PRESENT_OFFSET, 2333 }, 26647 { 0x1d578, UNICODE_NOT_PRESENT_OFFSET, 2335 }, 26648 { 0x1d579, UNICODE_NOT_PRESENT_OFFSET, 2337 }, 26649 { 0x1d57a, UNICODE_NOT_PRESENT_OFFSET, 2339 }, 26650 { 0x1d57b, UNICODE_NOT_PRESENT_OFFSET, 2344 }, 26651 { 0x1d57c, UNICODE_NOT_PRESENT_OFFSET, 5319 }, 26652 { 0x1d57d, UNICODE_NOT_PRESENT_OFFSET, 2346 }, 26653 { 0x1d57e, UNICODE_NOT_PRESENT_OFFSET, 6133 }, 26654 { 0x1d57f, UNICODE_NOT_PRESENT_OFFSET, 2348 }, 26655 { 0x1d580, UNICODE_NOT_PRESENT_OFFSET, 2350 }, 26656 { 0x1d581, UNICODE_NOT_PRESENT_OFFSET, 5470 }, 26657 { 0x1d582, UNICODE_NOT_PRESENT_OFFSET, 2352 }, 26658 { 0x1d583, UNICODE_NOT_PRESENT_OFFSET, 5487 }, 26659 { 0x1d584, UNICODE_NOT_PRESENT_OFFSET, 6135 }, 26660 { 0x1d585, UNICODE_NOT_PRESENT_OFFSET, 5331 }, 26661 { 0x1d586, UNICODE_NOT_PRESENT_OFFSET, 6 }, 26662 { 0x1d587, UNICODE_NOT_PRESENT_OFFSET, 2364 }, 26663 { 0x1d588, UNICODE_NOT_PRESENT_OFFSET, 2435 }, 26664 { 0x1d589, UNICODE_NOT_PRESENT_OFFSET, 2366 }, 26665 { 0x1d58a, UNICODE_NOT_PRESENT_OFFSET, 2368 }, 26666 { 0x1d58b, UNICODE_NOT_PRESENT_OFFSET, 2443 }, 26667 { 0x1d58c, UNICODE_NOT_PRESENT_OFFSET, 2379 }, 26668 { 0x1d58d, UNICODE_NOT_PRESENT_OFFSET, 1171 }, 26669 { 0x1d58e, UNICODE_NOT_PRESENT_OFFSET, 2427 }, 26670 { 0x1d58f, UNICODE_NOT_PRESENT_OFFSET, 1176 }, 26671 { 0x1d590, UNICODE_NOT_PRESENT_OFFSET, 2381 }, 26672 { 0x1d591, UNICODE_NOT_PRESENT_OFFSET, 1220 }, 26673 { 0x1d592, UNICODE_NOT_PRESENT_OFFSET, 2383 }, 26674 { 0x1d593, UNICODE_NOT_PRESENT_OFFSET, 5279 }, 26675 { 0x1d594, UNICODE_NOT_PRESENT_OFFSET, 29 }, 26676 { 0x1d595, UNICODE_NOT_PRESENT_OFFSET, 2399 }, 26677 { 0x1d596, UNICODE_NOT_PRESENT_OFFSET, 6137 }, 26678 { 0x1d597, UNICODE_NOT_PRESENT_OFFSET, 1178 }, 26679 { 0x1d598, UNICODE_NOT_PRESENT_OFFSET, 711 }, 26680 { 0x1d599, UNICODE_NOT_PRESENT_OFFSET, 2401 }, 26681 { 0x1d59a, UNICODE_NOT_PRESENT_OFFSET, 2403 }, 26682 { 0x1d59b, UNICODE_NOT_PRESENT_OFFSET, 2412 }, 26683 { 0x1d59c, UNICODE_NOT_PRESENT_OFFSET, 1189 }, 26684 { 0x1d59d, UNICODE_NOT_PRESENT_OFFSET, 1222 }, 26685 { 0x1d59e, UNICODE_NOT_PRESENT_OFFSET, 1191 }, 26686 { 0x1d59f, UNICODE_NOT_PRESENT_OFFSET, 2526 }, 26687 { 0x1d5a0, UNICODE_NOT_PRESENT_OFFSET, 2309 }, 26688 { 0x1d5a1, UNICODE_NOT_PRESENT_OFFSET, 2314 }, 26689 { 0x1d5a2, UNICODE_NOT_PRESENT_OFFSET, 5292 }, 26690 { 0x1d5a3, UNICODE_NOT_PRESENT_OFFSET, 2316 }, 26691 { 0x1d5a4, UNICODE_NOT_PRESENT_OFFSET, 2318 }, 26692 { 0x1d5a5, UNICODE_NOT_PRESENT_OFFSET, 5336 }, 26693 { 0x1d5a6, UNICODE_NOT_PRESENT_OFFSET, 2323 }, 26694 { 0x1d5a7, UNICODE_NOT_PRESENT_OFFSET, 2325 }, 26695 { 0x1d5a8, UNICODE_NOT_PRESENT_OFFSET, 2327 }, 26696 { 0x1d5a9, UNICODE_NOT_PRESENT_OFFSET, 2329 }, 26697 { 0x1d5aa, UNICODE_NOT_PRESENT_OFFSET, 2331 }, 26698 { 0x1d5ab, UNICODE_NOT_PRESENT_OFFSET, 2333 }, 26699 { 0x1d5ac, UNICODE_NOT_PRESENT_OFFSET, 2335 }, 26700 { 0x1d5ad, UNICODE_NOT_PRESENT_OFFSET, 2337 }, 26701 { 0x1d5ae, UNICODE_NOT_PRESENT_OFFSET, 2339 }, 26702 { 0x1d5af, UNICODE_NOT_PRESENT_OFFSET, 2344 }, 26703 { 0x1d5b0, UNICODE_NOT_PRESENT_OFFSET, 5319 }, 26704 { 0x1d5b1, UNICODE_NOT_PRESENT_OFFSET, 2346 }, 26705 { 0x1d5b2, UNICODE_NOT_PRESENT_OFFSET, 6133 }, 26706 { 0x1d5b3, UNICODE_NOT_PRESENT_OFFSET, 2348 }, 26707 { 0x1d5b4, UNICODE_NOT_PRESENT_OFFSET, 2350 }, 26708 { 0x1d5b5, UNICODE_NOT_PRESENT_OFFSET, 5470 }, 26709 { 0x1d5b6, UNICODE_NOT_PRESENT_OFFSET, 2352 }, 26710 { 0x1d5b7, UNICODE_NOT_PRESENT_OFFSET, 5487 }, 26711 { 0x1d5b8, UNICODE_NOT_PRESENT_OFFSET, 6135 }, 26712 { 0x1d5b9, UNICODE_NOT_PRESENT_OFFSET, 5331 }, 26713 { 0x1d5ba, UNICODE_NOT_PRESENT_OFFSET, 6 }, 26714 { 0x1d5bb, UNICODE_NOT_PRESENT_OFFSET, 2364 }, 26715 { 0x1d5bc, UNICODE_NOT_PRESENT_OFFSET, 2435 }, 26716 { 0x1d5bd, UNICODE_NOT_PRESENT_OFFSET, 2366 }, 26717 { 0x1d5be, UNICODE_NOT_PRESENT_OFFSET, 2368 }, 26718 { 0x1d5bf, UNICODE_NOT_PRESENT_OFFSET, 2443 }, 26719 { 0x1d5c0, UNICODE_NOT_PRESENT_OFFSET, 2379 }, 26720 { 0x1d5c1, UNICODE_NOT_PRESENT_OFFSET, 1171 }, 26721 { 0x1d5c2, UNICODE_NOT_PRESENT_OFFSET, 2427 }, 26722 { 0x1d5c3, UNICODE_NOT_PRESENT_OFFSET, 1176 }, 26723 { 0x1d5c4, UNICODE_NOT_PRESENT_OFFSET, 2381 }, 26724 { 0x1d5c5, UNICODE_NOT_PRESENT_OFFSET, 1220 }, 26725 { 0x1d5c6, UNICODE_NOT_PRESENT_OFFSET, 2383 }, 26726 { 0x1d5c7, UNICODE_NOT_PRESENT_OFFSET, 5279 }, 26727 { 0x1d5c8, UNICODE_NOT_PRESENT_OFFSET, 29 }, 26728 { 0x1d5c9, UNICODE_NOT_PRESENT_OFFSET, 2399 }, 26729 { 0x1d5ca, UNICODE_NOT_PRESENT_OFFSET, 6137 }, 26730 { 0x1d5cb, UNICODE_NOT_PRESENT_OFFSET, 1178 }, 26731 { 0x1d5cc, UNICODE_NOT_PRESENT_OFFSET, 711 }, 26732 { 0x1d5cd, UNICODE_NOT_PRESENT_OFFSET, 2401 }, 26733 { 0x1d5ce, UNICODE_NOT_PRESENT_OFFSET, 2403 }, 26734 { 0x1d5cf, UNICODE_NOT_PRESENT_OFFSET, 2412 }, 26735 { 0x1d5d0, UNICODE_NOT_PRESENT_OFFSET, 1189 }, 26736 { 0x1d5d1, UNICODE_NOT_PRESENT_OFFSET, 1222 }, 26737 { 0x1d5d2, UNICODE_NOT_PRESENT_OFFSET, 1191 }, 26738 { 0x1d5d3, UNICODE_NOT_PRESENT_OFFSET, 2526 }, 26739 { 0x1d5d4, UNICODE_NOT_PRESENT_OFFSET, 2309 }, 26740 { 0x1d5d5, UNICODE_NOT_PRESENT_OFFSET, 2314 }, 26741 { 0x1d5d6, UNICODE_NOT_PRESENT_OFFSET, 5292 }, 26742 { 0x1d5d7, UNICODE_NOT_PRESENT_OFFSET, 2316 }, 26743 { 0x1d5d8, UNICODE_NOT_PRESENT_OFFSET, 2318 }, 26744 { 0x1d5d9, UNICODE_NOT_PRESENT_OFFSET, 5336 }, 26745 { 0x1d5da, UNICODE_NOT_PRESENT_OFFSET, 2323 }, 26746 { 0x1d5db, UNICODE_NOT_PRESENT_OFFSET, 2325 }, 26747 { 0x1d5dc, UNICODE_NOT_PRESENT_OFFSET, 2327 }, 26748 { 0x1d5dd, UNICODE_NOT_PRESENT_OFFSET, 2329 }, 26749 { 0x1d5de, UNICODE_NOT_PRESENT_OFFSET, 2331 }, 26750 { 0x1d5df, UNICODE_NOT_PRESENT_OFFSET, 2333 }, 26751 { 0x1d5e0, UNICODE_NOT_PRESENT_OFFSET, 2335 }, 26752 { 0x1d5e1, UNICODE_NOT_PRESENT_OFFSET, 2337 }, 26753 { 0x1d5e2, UNICODE_NOT_PRESENT_OFFSET, 2339 }, 26754 { 0x1d5e3, UNICODE_NOT_PRESENT_OFFSET, 2344 }, 26755 { 0x1d5e4, UNICODE_NOT_PRESENT_OFFSET, 5319 }, 26756 { 0x1d5e5, UNICODE_NOT_PRESENT_OFFSET, 2346 }, 26757 { 0x1d5e6, UNICODE_NOT_PRESENT_OFFSET, 6133 }, 26758 { 0x1d5e7, UNICODE_NOT_PRESENT_OFFSET, 2348 }, 26759 { 0x1d5e8, UNICODE_NOT_PRESENT_OFFSET, 2350 }, 26760 { 0x1d5e9, UNICODE_NOT_PRESENT_OFFSET, 5470 }, 26761 { 0x1d5ea, UNICODE_NOT_PRESENT_OFFSET, 2352 }, 26762 { 0x1d5eb, UNICODE_NOT_PRESENT_OFFSET, 5487 }, 26763 { 0x1d5ec, UNICODE_NOT_PRESENT_OFFSET, 6135 }, 26764 { 0x1d5ed, UNICODE_NOT_PRESENT_OFFSET, 5331 }, 26765 { 0x1d5ee, UNICODE_NOT_PRESENT_OFFSET, 6 }, 26766 { 0x1d5ef, UNICODE_NOT_PRESENT_OFFSET, 2364 }, 26767 { 0x1d5f0, UNICODE_NOT_PRESENT_OFFSET, 2435 }, 26768 { 0x1d5f1, UNICODE_NOT_PRESENT_OFFSET, 2366 }, 26769 { 0x1d5f2, UNICODE_NOT_PRESENT_OFFSET, 2368 }, 26770 { 0x1d5f3, UNICODE_NOT_PRESENT_OFFSET, 2443 }, 26771 { 0x1d5f4, UNICODE_NOT_PRESENT_OFFSET, 2379 }, 26772 { 0x1d5f5, UNICODE_NOT_PRESENT_OFFSET, 1171 }, 26773 { 0x1d5f6, UNICODE_NOT_PRESENT_OFFSET, 2427 }, 26774 { 0x1d5f7, UNICODE_NOT_PRESENT_OFFSET, 1176 }, 26775 { 0x1d5f8, UNICODE_NOT_PRESENT_OFFSET, 2381 }, 26776 { 0x1d5f9, UNICODE_NOT_PRESENT_OFFSET, 1220 }, 26777 { 0x1d5fa, UNICODE_NOT_PRESENT_OFFSET, 2383 }, 26778 { 0x1d5fb, UNICODE_NOT_PRESENT_OFFSET, 5279 }, 26779 { 0x1d5fc, UNICODE_NOT_PRESENT_OFFSET, 29 }, 26780 { 0x1d5fd, UNICODE_NOT_PRESENT_OFFSET, 2399 }, 26781 { 0x1d5fe, UNICODE_NOT_PRESENT_OFFSET, 6137 }, 26782 { 0x1d5ff, UNICODE_NOT_PRESENT_OFFSET, 1178 }, 26783 { 0x1d600, UNICODE_NOT_PRESENT_OFFSET, 711 }, 26784 { 0x1d601, UNICODE_NOT_PRESENT_OFFSET, 2401 }, 26785 { 0x1d602, UNICODE_NOT_PRESENT_OFFSET, 2403 }, 26786 { 0x1d603, UNICODE_NOT_PRESENT_OFFSET, 2412 }, 26787 { 0x1d604, UNICODE_NOT_PRESENT_OFFSET, 1189 }, 26788 { 0x1d605, UNICODE_NOT_PRESENT_OFFSET, 1222 }, 26789 { 0x1d606, UNICODE_NOT_PRESENT_OFFSET, 1191 }, 26790 { 0x1d607, UNICODE_NOT_PRESENT_OFFSET, 2526 }, 26791 { 0x1d608, UNICODE_NOT_PRESENT_OFFSET, 2309 }, 26792 { 0x1d609, UNICODE_NOT_PRESENT_OFFSET, 2314 }, 26793 { 0x1d60a, UNICODE_NOT_PRESENT_OFFSET, 5292 }, 26794 { 0x1d60b, UNICODE_NOT_PRESENT_OFFSET, 2316 }, 26795 { 0x1d60c, UNICODE_NOT_PRESENT_OFFSET, 2318 }, 26796 { 0x1d60d, UNICODE_NOT_PRESENT_OFFSET, 5336 }, 26797 { 0x1d60e, UNICODE_NOT_PRESENT_OFFSET, 2323 }, 26798 { 0x1d60f, UNICODE_NOT_PRESENT_OFFSET, 2325 }, 26799 { 0x1d610, UNICODE_NOT_PRESENT_OFFSET, 2327 }, 26800 { 0x1d611, UNICODE_NOT_PRESENT_OFFSET, 2329 }, 26801 { 0x1d612, UNICODE_NOT_PRESENT_OFFSET, 2331 }, 26802 { 0x1d613, UNICODE_NOT_PRESENT_OFFSET, 2333 }, 26803 { 0x1d614, UNICODE_NOT_PRESENT_OFFSET, 2335 }, 26804 { 0x1d615, UNICODE_NOT_PRESENT_OFFSET, 2337 }, 26805 { 0x1d616, UNICODE_NOT_PRESENT_OFFSET, 2339 }, 26806 { 0x1d617, UNICODE_NOT_PRESENT_OFFSET, 2344 }, 26807 { 0x1d618, UNICODE_NOT_PRESENT_OFFSET, 5319 }, 26808 { 0x1d619, UNICODE_NOT_PRESENT_OFFSET, 2346 }, 26809 { 0x1d61a, UNICODE_NOT_PRESENT_OFFSET, 6133 }, 26810 { 0x1d61b, UNICODE_NOT_PRESENT_OFFSET, 2348 }, 26811 { 0x1d61c, UNICODE_NOT_PRESENT_OFFSET, 2350 }, 26812 { 0x1d61d, UNICODE_NOT_PRESENT_OFFSET, 5470 }, 26813 { 0x1d61e, UNICODE_NOT_PRESENT_OFFSET, 2352 }, 26814 { 0x1d61f, UNICODE_NOT_PRESENT_OFFSET, 5487 }, 26815 { 0x1d620, UNICODE_NOT_PRESENT_OFFSET, 6135 }, 26816 { 0x1d621, UNICODE_NOT_PRESENT_OFFSET, 5331 }, 26817 { 0x1d622, UNICODE_NOT_PRESENT_OFFSET, 6 }, 26818 { 0x1d623, UNICODE_NOT_PRESENT_OFFSET, 2364 }, 26819 { 0x1d624, UNICODE_NOT_PRESENT_OFFSET, 2435 }, 26820 { 0x1d625, UNICODE_NOT_PRESENT_OFFSET, 2366 }, 26821 { 0x1d626, UNICODE_NOT_PRESENT_OFFSET, 2368 }, 26822 { 0x1d627, UNICODE_NOT_PRESENT_OFFSET, 2443 }, 26823 { 0x1d628, UNICODE_NOT_PRESENT_OFFSET, 2379 }, 26824 { 0x1d629, UNICODE_NOT_PRESENT_OFFSET, 1171 }, 26825 { 0x1d62a, UNICODE_NOT_PRESENT_OFFSET, 2427 }, 26826 { 0x1d62b, UNICODE_NOT_PRESENT_OFFSET, 1176 }, 26827 { 0x1d62c, UNICODE_NOT_PRESENT_OFFSET, 2381 }, 26828 { 0x1d62d, UNICODE_NOT_PRESENT_OFFSET, 1220 }, 26829 { 0x1d62e, UNICODE_NOT_PRESENT_OFFSET, 2383 }, 26830 { 0x1d62f, UNICODE_NOT_PRESENT_OFFSET, 5279 }, 26831 { 0x1d630, UNICODE_NOT_PRESENT_OFFSET, 29 }, 26832 { 0x1d631, UNICODE_NOT_PRESENT_OFFSET, 2399 }, 26833 { 0x1d632, UNICODE_NOT_PRESENT_OFFSET, 6137 }, 26834 { 0x1d633, UNICODE_NOT_PRESENT_OFFSET, 1178 }, 26835 { 0x1d634, UNICODE_NOT_PRESENT_OFFSET, 711 }, 26836 { 0x1d635, UNICODE_NOT_PRESENT_OFFSET, 2401 }, 26837 { 0x1d636, UNICODE_NOT_PRESENT_OFFSET, 2403 }, 26838 { 0x1d637, UNICODE_NOT_PRESENT_OFFSET, 2412 }, 26839 { 0x1d638, UNICODE_NOT_PRESENT_OFFSET, 1189 }, 26840 { 0x1d639, UNICODE_NOT_PRESENT_OFFSET, 1222 }, 26841 { 0x1d63a, UNICODE_NOT_PRESENT_OFFSET, 1191 }, 26842 { 0x1d63b, UNICODE_NOT_PRESENT_OFFSET, 2526 }, 26843 { 0x1d63c, UNICODE_NOT_PRESENT_OFFSET, 2309 }, 26844 { 0x1d63d, UNICODE_NOT_PRESENT_OFFSET, 2314 }, 26845 { 0x1d63e, UNICODE_NOT_PRESENT_OFFSET, 5292 }, 26846 { 0x1d63f, UNICODE_NOT_PRESENT_OFFSET, 2316 }, 26847 { 0x1d640, UNICODE_NOT_PRESENT_OFFSET, 2318 }, 26848 { 0x1d641, UNICODE_NOT_PRESENT_OFFSET, 5336 }, 26849 { 0x1d642, UNICODE_NOT_PRESENT_OFFSET, 2323 }, 26850 { 0x1d643, UNICODE_NOT_PRESENT_OFFSET, 2325 }, 26851 { 0x1d644, UNICODE_NOT_PRESENT_OFFSET, 2327 }, 26852 { 0x1d645, UNICODE_NOT_PRESENT_OFFSET, 2329 }, 26853 { 0x1d646, UNICODE_NOT_PRESENT_OFFSET, 2331 }, 26854 { 0x1d647, UNICODE_NOT_PRESENT_OFFSET, 2333 }, 26855 { 0x1d648, UNICODE_NOT_PRESENT_OFFSET, 2335 }, 26856 { 0x1d649, UNICODE_NOT_PRESENT_OFFSET, 2337 }, 26857 { 0x1d64a, UNICODE_NOT_PRESENT_OFFSET, 2339 }, 26858 { 0x1d64b, UNICODE_NOT_PRESENT_OFFSET, 2344 }, 26859 { 0x1d64c, UNICODE_NOT_PRESENT_OFFSET, 5319 }, 26860 { 0x1d64d, UNICODE_NOT_PRESENT_OFFSET, 2346 }, 26861 { 0x1d64e, UNICODE_NOT_PRESENT_OFFSET, 6133 }, 26862 { 0x1d64f, UNICODE_NOT_PRESENT_OFFSET, 2348 }, 26863 { 0x1d650, UNICODE_NOT_PRESENT_OFFSET, 2350 }, 26864 { 0x1d651, UNICODE_NOT_PRESENT_OFFSET, 5470 }, 26865 { 0x1d652, UNICODE_NOT_PRESENT_OFFSET, 2352 }, 26866 { 0x1d653, UNICODE_NOT_PRESENT_OFFSET, 5487 }, 26867 { 0x1d654, UNICODE_NOT_PRESENT_OFFSET, 6135 }, 26868 { 0x1d655, UNICODE_NOT_PRESENT_OFFSET, 5331 }, 26869 { 0x1d656, UNICODE_NOT_PRESENT_OFFSET, 6 }, 26870 { 0x1d657, UNICODE_NOT_PRESENT_OFFSET, 2364 }, 26871 { 0x1d658, UNICODE_NOT_PRESENT_OFFSET, 2435 }, 26872 { 0x1d659, UNICODE_NOT_PRESENT_OFFSET, 2366 }, 26873 { 0x1d65a, UNICODE_NOT_PRESENT_OFFSET, 2368 }, 26874 { 0x1d65b, UNICODE_NOT_PRESENT_OFFSET, 2443 }, 26875 { 0x1d65c, UNICODE_NOT_PRESENT_OFFSET, 2379 }, 26876 { 0x1d65d, UNICODE_NOT_PRESENT_OFFSET, 1171 }, 26877 { 0x1d65e, UNICODE_NOT_PRESENT_OFFSET, 2427 }, 26878 { 0x1d65f, UNICODE_NOT_PRESENT_OFFSET, 1176 }, 26879 { 0x1d660, UNICODE_NOT_PRESENT_OFFSET, 2381 }, 26880 { 0x1d661, UNICODE_NOT_PRESENT_OFFSET, 1220 }, 26881 { 0x1d662, UNICODE_NOT_PRESENT_OFFSET, 2383 }, 26882 { 0x1d663, UNICODE_NOT_PRESENT_OFFSET, 5279 }, 26883 { 0x1d664, UNICODE_NOT_PRESENT_OFFSET, 29 }, 26884 { 0x1d665, UNICODE_NOT_PRESENT_OFFSET, 2399 }, 26885 { 0x1d666, UNICODE_NOT_PRESENT_OFFSET, 6137 }, 26886 { 0x1d667, UNICODE_NOT_PRESENT_OFFSET, 1178 }, 26887 { 0x1d668, UNICODE_NOT_PRESENT_OFFSET, 711 }, 26888 { 0x1d669, UNICODE_NOT_PRESENT_OFFSET, 2401 }, 26889 { 0x1d66a, UNICODE_NOT_PRESENT_OFFSET, 2403 }, 26890 { 0x1d66b, UNICODE_NOT_PRESENT_OFFSET, 2412 }, 26891 { 0x1d66c, UNICODE_NOT_PRESENT_OFFSET, 1189 }, 26892 { 0x1d66d, UNICODE_NOT_PRESENT_OFFSET, 1222 }, 26893 { 0x1d66e, UNICODE_NOT_PRESENT_OFFSET, 1191 }, 26894 { 0x1d66f, UNICODE_NOT_PRESENT_OFFSET, 2526 }, 26895 { 0x1d670, UNICODE_NOT_PRESENT_OFFSET, 2309 }, 26896 { 0x1d671, UNICODE_NOT_PRESENT_OFFSET, 2314 }, 26897 { 0x1d672, UNICODE_NOT_PRESENT_OFFSET, 5292 }, 26898 { 0x1d673, UNICODE_NOT_PRESENT_OFFSET, 2316 }, 26899 { 0x1d674, UNICODE_NOT_PRESENT_OFFSET, 2318 }, 26900 { 0x1d675, UNICODE_NOT_PRESENT_OFFSET, 5336 }, 26901 { 0x1d676, UNICODE_NOT_PRESENT_OFFSET, 2323 }, 26902 { 0x1d677, UNICODE_NOT_PRESENT_OFFSET, 2325 }, 26903 { 0x1d678, UNICODE_NOT_PRESENT_OFFSET, 2327 }, 26904 { 0x1d679, UNICODE_NOT_PRESENT_OFFSET, 2329 }, 26905 { 0x1d67a, UNICODE_NOT_PRESENT_OFFSET, 2331 }, 26906 { 0x1d67b, UNICODE_NOT_PRESENT_OFFSET, 2333 }, 26907 { 0x1d67c, UNICODE_NOT_PRESENT_OFFSET, 2335 }, 26908 { 0x1d67d, UNICODE_NOT_PRESENT_OFFSET, 2337 }, 26909 { 0x1d67e, UNICODE_NOT_PRESENT_OFFSET, 2339 }, 26910 { 0x1d67f, UNICODE_NOT_PRESENT_OFFSET, 2344 }, 26911 { 0x1d680, UNICODE_NOT_PRESENT_OFFSET, 5319 }, 26912 { 0x1d681, UNICODE_NOT_PRESENT_OFFSET, 2346 }, 26913 { 0x1d682, UNICODE_NOT_PRESENT_OFFSET, 6133 }, 26914 { 0x1d683, UNICODE_NOT_PRESENT_OFFSET, 2348 }, 26915 { 0x1d684, UNICODE_NOT_PRESENT_OFFSET, 2350 }, 26916 { 0x1d685, UNICODE_NOT_PRESENT_OFFSET, 5470 }, 26917 { 0x1d686, UNICODE_NOT_PRESENT_OFFSET, 2352 }, 26918 { 0x1d687, UNICODE_NOT_PRESENT_OFFSET, 5487 }, 26919 { 0x1d688, UNICODE_NOT_PRESENT_OFFSET, 6135 }, 26920 { 0x1d689, UNICODE_NOT_PRESENT_OFFSET, 5331 }, 26921 { 0x1d68a, UNICODE_NOT_PRESENT_OFFSET, 6 }, 26922 { 0x1d68b, UNICODE_NOT_PRESENT_OFFSET, 2364 }, 26923 { 0x1d68c, UNICODE_NOT_PRESENT_OFFSET, 2435 }, 26924 { 0x1d68d, UNICODE_NOT_PRESENT_OFFSET, 2366 }, 26925 { 0x1d68e, UNICODE_NOT_PRESENT_OFFSET, 2368 }, 26926 { 0x1d68f, UNICODE_NOT_PRESENT_OFFSET, 2443 }, 26927 { 0x1d690, UNICODE_NOT_PRESENT_OFFSET, 2379 }, 26928 { 0x1d691, UNICODE_NOT_PRESENT_OFFSET, 1171 }, 26929 { 0x1d692, UNICODE_NOT_PRESENT_OFFSET, 2427 }, 26930 { 0x1d693, UNICODE_NOT_PRESENT_OFFSET, 1176 }, 26931 { 0x1d694, UNICODE_NOT_PRESENT_OFFSET, 2381 }, 26932 { 0x1d695, UNICODE_NOT_PRESENT_OFFSET, 1220 }, 26933 { 0x1d696, UNICODE_NOT_PRESENT_OFFSET, 2383 }, 26934 { 0x1d697, UNICODE_NOT_PRESENT_OFFSET, 5279 }, 26935 { 0x1d698, UNICODE_NOT_PRESENT_OFFSET, 29 }, 26936 { 0x1d699, UNICODE_NOT_PRESENT_OFFSET, 2399 }, 26937 { 0x1d69a, UNICODE_NOT_PRESENT_OFFSET, 6137 }, 26938 { 0x1d69b, UNICODE_NOT_PRESENT_OFFSET, 1178 }, 26939 { 0x1d69c, UNICODE_NOT_PRESENT_OFFSET, 711 }, 26940 { 0x1d69d, UNICODE_NOT_PRESENT_OFFSET, 2401 }, 26941 { 0x1d69e, UNICODE_NOT_PRESENT_OFFSET, 2403 }, 26942 { 0x1d69f, UNICODE_NOT_PRESENT_OFFSET, 2412 }, 26943 { 0x1d6a0, UNICODE_NOT_PRESENT_OFFSET, 1189 }, 26944 { 0x1d6a1, UNICODE_NOT_PRESENT_OFFSET, 1222 }, 26945 { 0x1d6a2, UNICODE_NOT_PRESENT_OFFSET, 1191 }, 26946 { 0x1d6a3, UNICODE_NOT_PRESENT_OFFSET, 2526 }, 26947 { 0x1d6a4, UNICODE_NOT_PRESENT_OFFSET, 15258 }, 26948 { 0x1d6a5, UNICODE_NOT_PRESENT_OFFSET, 15261 }, 26949 { 0x1d6a8, UNICODE_NOT_PRESENT_OFFSET, 15264 }, 26950 { 0x1d6a9, UNICODE_NOT_PRESENT_OFFSET, 15267 }, 26951 { 0x1d6aa, UNICODE_NOT_PRESENT_OFFSET, 5354 }, 26952 { 0x1d6ab, UNICODE_NOT_PRESENT_OFFSET, 15270 }, 26953 { 0x1d6ac, UNICODE_NOT_PRESENT_OFFSET, 15273 }, 26954 { 0x1d6ad, UNICODE_NOT_PRESENT_OFFSET, 15276 }, 26955 { 0x1d6ae, UNICODE_NOT_PRESENT_OFFSET, 15279 }, 26956 { 0x1d6af, UNICODE_NOT_PRESENT_OFFSET, 1402 }, 26957 { 0x1d6b0, UNICODE_NOT_PRESENT_OFFSET, 15282 }, 26958 { 0x1d6b1, UNICODE_NOT_PRESENT_OFFSET, 15285 }, 26959 { 0x1d6b2, UNICODE_NOT_PRESENT_OFFSET, 15288 }, 26960 { 0x1d6b3, UNICODE_NOT_PRESENT_OFFSET, 15291 }, 26961 { 0x1d6b4, UNICODE_NOT_PRESENT_OFFSET, 15294 }, 26962 { 0x1d6b5, UNICODE_NOT_PRESENT_OFFSET, 15297 }, 26963 { 0x1d6b6, UNICODE_NOT_PRESENT_OFFSET, 15300 }, 26964 { 0x1d6b7, UNICODE_NOT_PRESENT_OFFSET, 5357 }, 26965 { 0x1d6b8, UNICODE_NOT_PRESENT_OFFSET, 15303 }, 26966 { 0x1d6b9, UNICODE_NOT_PRESENT_OFFSET, 1402 }, 26967 { 0x1d6ba, UNICODE_NOT_PRESENT_OFFSET, 1408 }, 26968 { 0x1d6bb, UNICODE_NOT_PRESENT_OFFSET, 15306 }, 26969 { 0x1d6bc, UNICODE_NOT_PRESENT_OFFSET, 1374 }, 26970 { 0x1d6bd, UNICODE_NOT_PRESENT_OFFSET, 15309 }, 26971 { 0x1d6be, UNICODE_NOT_PRESENT_OFFSET, 15312 }, 26972 { 0x1d6bf, UNICODE_NOT_PRESENT_OFFSET, 15315 }, 26973 { 0x1d6c0, UNICODE_NOT_PRESENT_OFFSET, 5333 }, 26974 { 0x1d6c1, UNICODE_NOT_PRESENT_OFFSET, 15318 }, 26975 { 0x1d6c2, UNICODE_NOT_PRESENT_OFFSET, 15322 }, 26976 { 0x1d6c3, UNICODE_NOT_PRESENT_OFFSET, 1368 }, 26977 { 0x1d6c4, UNICODE_NOT_PRESENT_OFFSET, 2418 }, 26978 { 0x1d6c5, UNICODE_NOT_PRESENT_OFFSET, 2421 }, 26979 { 0x1d6c6, UNICODE_NOT_PRESENT_OFFSET, 1405 }, 26980 { 0x1d6c7, UNICODE_NOT_PRESENT_OFFSET, 15325 }, 26981 { 0x1d6c8, UNICODE_NOT_PRESENT_OFFSET, 15328 }, 26982 { 0x1d6c9, UNICODE_NOT_PRESENT_OFFSET, 1371 }, 26983 { 0x1d6ca, UNICODE_NOT_PRESENT_OFFSET, 4860 }, 26984 { 0x1d6cb, UNICODE_NOT_PRESENT_OFFSET, 1393 }, 26985 { 0x1d6cc, UNICODE_NOT_PRESENT_OFFSET, 15331 }, 26986 { 0x1d6cd, UNICODE_NOT_PRESENT_OFFSET, 20 }, 26987 { 0x1d6ce, UNICODE_NOT_PRESENT_OFFSET, 15334 }, 26988 { 0x1d6cf, UNICODE_NOT_PRESENT_OFFSET, 15337 }, 26989 { 0x1d6d0, UNICODE_NOT_PRESENT_OFFSET, 15340 }, 26990 { 0x1d6d1, UNICODE_NOT_PRESENT_OFFSET, 1390 }, 26991 { 0x1d6d2, UNICODE_NOT_PRESENT_OFFSET, 1396 }, 26992 { 0x1d6d3, UNICODE_NOT_PRESENT_OFFSET, 1399 }, 26993 { 0x1d6d4, UNICODE_NOT_PRESENT_OFFSET, 15343 }, 26994 { 0x1d6d5, UNICODE_NOT_PRESENT_OFFSET, 15346 }, 26995 { 0x1d6d6, UNICODE_NOT_PRESENT_OFFSET, 15349 }, 26996 { 0x1d6d7, UNICODE_NOT_PRESENT_OFFSET, 1387 }, 26997 { 0x1d6d8, UNICODE_NOT_PRESENT_OFFSET, 2424 }, 26998 { 0x1d6d9, UNICODE_NOT_PRESENT_OFFSET, 15352 }, 26999 { 0x1d6da, UNICODE_NOT_PRESENT_OFFSET, 15355 }, 27000 { 0x1d6db, UNICODE_NOT_PRESENT_OFFSET, 15358 }, 27001 { 0x1d6dc, UNICODE_NOT_PRESENT_OFFSET, 1405 }, 27002 { 0x1d6dd, UNICODE_NOT_PRESENT_OFFSET, 1371 }, 27003 { 0x1d6de, UNICODE_NOT_PRESENT_OFFSET, 1393 }, 27004 { 0x1d6df, UNICODE_NOT_PRESENT_OFFSET, 1387 }, 27005 { 0x1d6e0, UNICODE_NOT_PRESENT_OFFSET, 1396 }, 27006 { 0x1d6e1, UNICODE_NOT_PRESENT_OFFSET, 1390 }, 27007 { 0x1d6e2, UNICODE_NOT_PRESENT_OFFSET, 15264 }, 27008 { 0x1d6e3, UNICODE_NOT_PRESENT_OFFSET, 15267 }, 27009 { 0x1d6e4, UNICODE_NOT_PRESENT_OFFSET, 5354 }, 27010 { 0x1d6e5, UNICODE_NOT_PRESENT_OFFSET, 15270 }, 27011 { 0x1d6e6, UNICODE_NOT_PRESENT_OFFSET, 15273 }, 27012 { 0x1d6e7, UNICODE_NOT_PRESENT_OFFSET, 15276 }, 27013 { 0x1d6e8, UNICODE_NOT_PRESENT_OFFSET, 15279 }, 27014 { 0x1d6e9, UNICODE_NOT_PRESENT_OFFSET, 1402 }, 27015 { 0x1d6ea, UNICODE_NOT_PRESENT_OFFSET, 15282 }, 27016 { 0x1d6eb, UNICODE_NOT_PRESENT_OFFSET, 15285 }, 27017 { 0x1d6ec, UNICODE_NOT_PRESENT_OFFSET, 15288 }, 27018 { 0x1d6ed, UNICODE_NOT_PRESENT_OFFSET, 15291 }, 27019 { 0x1d6ee, UNICODE_NOT_PRESENT_OFFSET, 15294 }, 27020 { 0x1d6ef, UNICODE_NOT_PRESENT_OFFSET, 15297 }, 27021 { 0x1d6f0, UNICODE_NOT_PRESENT_OFFSET, 15300 }, 27022 { 0x1d6f1, UNICODE_NOT_PRESENT_OFFSET, 5357 }, 27023 { 0x1d6f2, UNICODE_NOT_PRESENT_OFFSET, 15303 }, 27024 { 0x1d6f3, UNICODE_NOT_PRESENT_OFFSET, 1402 }, 27025 { 0x1d6f4, UNICODE_NOT_PRESENT_OFFSET, 1408 }, 27026 { 0x1d6f5, UNICODE_NOT_PRESENT_OFFSET, 15306 }, 27027 { 0x1d6f6, UNICODE_NOT_PRESENT_OFFSET, 1374 }, 27028 { 0x1d6f7, UNICODE_NOT_PRESENT_OFFSET, 15309 }, 27029 { 0x1d6f8, UNICODE_NOT_PRESENT_OFFSET, 15312 }, 27030 { 0x1d6f9, UNICODE_NOT_PRESENT_OFFSET, 15315 }, 27031 { 0x1d6fa, UNICODE_NOT_PRESENT_OFFSET, 5333 }, 27032 { 0x1d6fb, UNICODE_NOT_PRESENT_OFFSET, 15318 }, 27033 { 0x1d6fc, UNICODE_NOT_PRESENT_OFFSET, 15322 }, 27034 { 0x1d6fd, UNICODE_NOT_PRESENT_OFFSET, 1368 }, 27035 { 0x1d6fe, UNICODE_NOT_PRESENT_OFFSET, 2418 }, 27036 { 0x1d6ff, UNICODE_NOT_PRESENT_OFFSET, 2421 }, 27037 { 0x1d700, UNICODE_NOT_PRESENT_OFFSET, 1405 }, 27038 { 0x1d701, UNICODE_NOT_PRESENT_OFFSET, 15325 }, 27039 { 0x1d702, UNICODE_NOT_PRESENT_OFFSET, 15328 }, 27040 { 0x1d703, UNICODE_NOT_PRESENT_OFFSET, 1371 }, 27041 { 0x1d704, UNICODE_NOT_PRESENT_OFFSET, 4860 }, 27042 { 0x1d705, UNICODE_NOT_PRESENT_OFFSET, 1393 }, 27043 { 0x1d706, UNICODE_NOT_PRESENT_OFFSET, 15331 }, 27044 { 0x1d707, UNICODE_NOT_PRESENT_OFFSET, 20 }, 27045 { 0x1d708, UNICODE_NOT_PRESENT_OFFSET, 15334 }, 27046 { 0x1d709, UNICODE_NOT_PRESENT_OFFSET, 15337 }, 27047 { 0x1d70a, UNICODE_NOT_PRESENT_OFFSET, 15340 }, 27048 { 0x1d70b, UNICODE_NOT_PRESENT_OFFSET, 1390 }, 27049 { 0x1d70c, UNICODE_NOT_PRESENT_OFFSET, 1396 }, 27050 { 0x1d70d, UNICODE_NOT_PRESENT_OFFSET, 1399 }, 27051 { 0x1d70e, UNICODE_NOT_PRESENT_OFFSET, 15343 }, 27052 { 0x1d70f, UNICODE_NOT_PRESENT_OFFSET, 15346 }, 27053 { 0x1d710, UNICODE_NOT_PRESENT_OFFSET, 15349 }, 27054 { 0x1d711, UNICODE_NOT_PRESENT_OFFSET, 1387 }, 27055 { 0x1d712, UNICODE_NOT_PRESENT_OFFSET, 2424 }, 27056 { 0x1d713, UNICODE_NOT_PRESENT_OFFSET, 15352 }, 27057 { 0x1d714, UNICODE_NOT_PRESENT_OFFSET, 15355 }, 27058 { 0x1d715, UNICODE_NOT_PRESENT_OFFSET, 15358 }, 27059 { 0x1d716, UNICODE_NOT_PRESENT_OFFSET, 1405 }, 27060 { 0x1d717, UNICODE_NOT_PRESENT_OFFSET, 1371 }, 27061 { 0x1d718, UNICODE_NOT_PRESENT_OFFSET, 1393 }, 27062 { 0x1d719, UNICODE_NOT_PRESENT_OFFSET, 1387 }, 27063 { 0x1d71a, UNICODE_NOT_PRESENT_OFFSET, 1396 }, 27064 { 0x1d71b, UNICODE_NOT_PRESENT_OFFSET, 1390 }, 27065 { 0x1d71c, UNICODE_NOT_PRESENT_OFFSET, 15264 }, 27066 { 0x1d71d, UNICODE_NOT_PRESENT_OFFSET, 15267 }, 27067 { 0x1d71e, UNICODE_NOT_PRESENT_OFFSET, 5354 }, 27068 { 0x1d71f, UNICODE_NOT_PRESENT_OFFSET, 15270 }, 27069 { 0x1d720, UNICODE_NOT_PRESENT_OFFSET, 15273 }, 27070 { 0x1d721, UNICODE_NOT_PRESENT_OFFSET, 15276 }, 27071 { 0x1d722, UNICODE_NOT_PRESENT_OFFSET, 15279 }, 27072 { 0x1d723, UNICODE_NOT_PRESENT_OFFSET, 1402 }, 27073 { 0x1d724, UNICODE_NOT_PRESENT_OFFSET, 15282 }, 27074 { 0x1d725, UNICODE_NOT_PRESENT_OFFSET, 15285 }, 27075 { 0x1d726, UNICODE_NOT_PRESENT_OFFSET, 15288 }, 27076 { 0x1d727, UNICODE_NOT_PRESENT_OFFSET, 15291 }, 27077 { 0x1d728, UNICODE_NOT_PRESENT_OFFSET, 15294 }, 27078 { 0x1d729, UNICODE_NOT_PRESENT_OFFSET, 15297 }, 27079 { 0x1d72a, UNICODE_NOT_PRESENT_OFFSET, 15300 }, 27080 { 0x1d72b, UNICODE_NOT_PRESENT_OFFSET, 5357 }, 27081 { 0x1d72c, UNICODE_NOT_PRESENT_OFFSET, 15303 }, 27082 { 0x1d72d, UNICODE_NOT_PRESENT_OFFSET, 1402 }, 27083 { 0x1d72e, UNICODE_NOT_PRESENT_OFFSET, 1408 }, 27084 { 0x1d72f, UNICODE_NOT_PRESENT_OFFSET, 15306 }, 27085 { 0x1d730, UNICODE_NOT_PRESENT_OFFSET, 1374 }, 27086 { 0x1d731, UNICODE_NOT_PRESENT_OFFSET, 15309 }, 27087 { 0x1d732, UNICODE_NOT_PRESENT_OFFSET, 15312 }, 27088 { 0x1d733, UNICODE_NOT_PRESENT_OFFSET, 15315 }, 27089 { 0x1d734, UNICODE_NOT_PRESENT_OFFSET, 5333 }, 27090 { 0x1d735, UNICODE_NOT_PRESENT_OFFSET, 15318 }, 27091 { 0x1d736, UNICODE_NOT_PRESENT_OFFSET, 15322 }, 27092 { 0x1d737, UNICODE_NOT_PRESENT_OFFSET, 1368 }, 27093 { 0x1d738, UNICODE_NOT_PRESENT_OFFSET, 2418 }, 27094 { 0x1d739, UNICODE_NOT_PRESENT_OFFSET, 2421 }, 27095 { 0x1d73a, UNICODE_NOT_PRESENT_OFFSET, 1405 }, 27096 { 0x1d73b, UNICODE_NOT_PRESENT_OFFSET, 15325 }, 27097 { 0x1d73c, UNICODE_NOT_PRESENT_OFFSET, 15328 }, 27098 { 0x1d73d, UNICODE_NOT_PRESENT_OFFSET, 1371 }, 27099 { 0x1d73e, UNICODE_NOT_PRESENT_OFFSET, 4860 }, 27100 { 0x1d73f, UNICODE_NOT_PRESENT_OFFSET, 1393 }, 27101 { 0x1d740, UNICODE_NOT_PRESENT_OFFSET, 15331 }, 27102 { 0x1d741, UNICODE_NOT_PRESENT_OFFSET, 20 }, 27103 { 0x1d742, UNICODE_NOT_PRESENT_OFFSET, 15334 }, 27104 { 0x1d743, UNICODE_NOT_PRESENT_OFFSET, 15337 }, 27105 { 0x1d744, UNICODE_NOT_PRESENT_OFFSET, 15340 }, 27106 { 0x1d745, UNICODE_NOT_PRESENT_OFFSET, 1390 }, 27107 { 0x1d746, UNICODE_NOT_PRESENT_OFFSET, 1396 }, 27108 { 0x1d747, UNICODE_NOT_PRESENT_OFFSET, 1399 }, 27109 { 0x1d748, UNICODE_NOT_PRESENT_OFFSET, 15343 }, 27110 { 0x1d749, UNICODE_NOT_PRESENT_OFFSET, 15346 }, 27111 { 0x1d74a, UNICODE_NOT_PRESENT_OFFSET, 15349 }, 27112 { 0x1d74b, UNICODE_NOT_PRESENT_OFFSET, 1387 }, 27113 { 0x1d74c, UNICODE_NOT_PRESENT_OFFSET, 2424 }, 27114 { 0x1d74d, UNICODE_NOT_PRESENT_OFFSET, 15352 }, 27115 { 0x1d74e, UNICODE_NOT_PRESENT_OFFSET, 15355 }, 27116 { 0x1d74f, UNICODE_NOT_PRESENT_OFFSET, 15358 }, 27117 { 0x1d750, UNICODE_NOT_PRESENT_OFFSET, 1405 }, 27118 { 0x1d751, UNICODE_NOT_PRESENT_OFFSET, 1371 }, 27119 { 0x1d752, UNICODE_NOT_PRESENT_OFFSET, 1393 }, 27120 { 0x1d753, UNICODE_NOT_PRESENT_OFFSET, 1387 }, 27121 { 0x1d754, UNICODE_NOT_PRESENT_OFFSET, 1396 }, 27122 { 0x1d755, UNICODE_NOT_PRESENT_OFFSET, 1390 }, 27123 { 0x1d756, UNICODE_NOT_PRESENT_OFFSET, 15264 }, 27124 { 0x1d757, UNICODE_NOT_PRESENT_OFFSET, 15267 }, 27125 { 0x1d758, UNICODE_NOT_PRESENT_OFFSET, 5354 }, 27126 { 0x1d759, UNICODE_NOT_PRESENT_OFFSET, 15270 }, 27127 { 0x1d75a, UNICODE_NOT_PRESENT_OFFSET, 15273 }, 27128 { 0x1d75b, UNICODE_NOT_PRESENT_OFFSET, 15276 }, 27129 { 0x1d75c, UNICODE_NOT_PRESENT_OFFSET, 15279 }, 27130 { 0x1d75d, UNICODE_NOT_PRESENT_OFFSET, 1402 }, 27131 { 0x1d75e, UNICODE_NOT_PRESENT_OFFSET, 15282 }, 27132 { 0x1d75f, UNICODE_NOT_PRESENT_OFFSET, 15285 }, 27133 { 0x1d760, UNICODE_NOT_PRESENT_OFFSET, 15288 }, 27134 { 0x1d761, UNICODE_NOT_PRESENT_OFFSET, 15291 }, 27135 { 0x1d762, UNICODE_NOT_PRESENT_OFFSET, 15294 }, 27136 { 0x1d763, UNICODE_NOT_PRESENT_OFFSET, 15297 }, 27137 { 0x1d764, UNICODE_NOT_PRESENT_OFFSET, 15300 }, 27138 { 0x1d765, UNICODE_NOT_PRESENT_OFFSET, 5357 }, 27139 { 0x1d766, UNICODE_NOT_PRESENT_OFFSET, 15303 }, 27140 { 0x1d767, UNICODE_NOT_PRESENT_OFFSET, 1402 }, 27141 { 0x1d768, UNICODE_NOT_PRESENT_OFFSET, 1408 }, 27142 { 0x1d769, UNICODE_NOT_PRESENT_OFFSET, 15306 }, 27143 { 0x1d76a, UNICODE_NOT_PRESENT_OFFSET, 1374 }, 27144 { 0x1d76b, UNICODE_NOT_PRESENT_OFFSET, 15309 }, 27145 { 0x1d76c, UNICODE_NOT_PRESENT_OFFSET, 15312 }, 27146 { 0x1d76d, UNICODE_NOT_PRESENT_OFFSET, 15315 }, 27147 { 0x1d76e, UNICODE_NOT_PRESENT_OFFSET, 5333 }, 27148 { 0x1d76f, UNICODE_NOT_PRESENT_OFFSET, 15318 }, 27149 { 0x1d770, UNICODE_NOT_PRESENT_OFFSET, 15322 }, 27150 { 0x1d771, UNICODE_NOT_PRESENT_OFFSET, 1368 }, 27151 { 0x1d772, UNICODE_NOT_PRESENT_OFFSET, 2418 }, 27152 { 0x1d773, UNICODE_NOT_PRESENT_OFFSET, 2421 }, 27153 { 0x1d774, UNICODE_NOT_PRESENT_OFFSET, 1405 }, 27154 { 0x1d775, UNICODE_NOT_PRESENT_OFFSET, 15325 }, 27155 { 0x1d776, UNICODE_NOT_PRESENT_OFFSET, 15328 }, 27156 { 0x1d777, UNICODE_NOT_PRESENT_OFFSET, 1371 }, 27157 { 0x1d778, UNICODE_NOT_PRESENT_OFFSET, 4860 }, 27158 { 0x1d779, UNICODE_NOT_PRESENT_OFFSET, 1393 }, 27159 { 0x1d77a, UNICODE_NOT_PRESENT_OFFSET, 15331 }, 27160 { 0x1d77b, UNICODE_NOT_PRESENT_OFFSET, 20 }, 27161 { 0x1d77c, UNICODE_NOT_PRESENT_OFFSET, 15334 }, 27162 { 0x1d77d, UNICODE_NOT_PRESENT_OFFSET, 15337 }, 27163 { 0x1d77e, UNICODE_NOT_PRESENT_OFFSET, 15340 }, 27164 { 0x1d77f, UNICODE_NOT_PRESENT_OFFSET, 1390 }, 27165 { 0x1d780, UNICODE_NOT_PRESENT_OFFSET, 1396 }, 27166 { 0x1d781, UNICODE_NOT_PRESENT_OFFSET, 1399 }, 27167 { 0x1d782, UNICODE_NOT_PRESENT_OFFSET, 15343 }, 27168 { 0x1d783, UNICODE_NOT_PRESENT_OFFSET, 15346 }, 27169 { 0x1d784, UNICODE_NOT_PRESENT_OFFSET, 15349 }, 27170 { 0x1d785, UNICODE_NOT_PRESENT_OFFSET, 1387 }, 27171 { 0x1d786, UNICODE_NOT_PRESENT_OFFSET, 2424 }, 27172 { 0x1d787, UNICODE_NOT_PRESENT_OFFSET, 15352 }, 27173 { 0x1d788, UNICODE_NOT_PRESENT_OFFSET, 15355 }, 27174 { 0x1d789, UNICODE_NOT_PRESENT_OFFSET, 15358 }, 27175 { 0x1d78a, UNICODE_NOT_PRESENT_OFFSET, 1405 }, 27176 { 0x1d78b, UNICODE_NOT_PRESENT_OFFSET, 1371 }, 27177 { 0x1d78c, UNICODE_NOT_PRESENT_OFFSET, 1393 }, 27178 { 0x1d78d, UNICODE_NOT_PRESENT_OFFSET, 1387 }, 27179 { 0x1d78e, UNICODE_NOT_PRESENT_OFFSET, 1396 }, 27180 { 0x1d78f, UNICODE_NOT_PRESENT_OFFSET, 1390 }, 27181 { 0x1d790, UNICODE_NOT_PRESENT_OFFSET, 15264 }, 27182 { 0x1d791, UNICODE_NOT_PRESENT_OFFSET, 15267 }, 27183 { 0x1d792, UNICODE_NOT_PRESENT_OFFSET, 5354 }, 27184 { 0x1d793, UNICODE_NOT_PRESENT_OFFSET, 15270 }, 27185 { 0x1d794, UNICODE_NOT_PRESENT_OFFSET, 15273 }, 27186 { 0x1d795, UNICODE_NOT_PRESENT_OFFSET, 15276 }, 27187 { 0x1d796, UNICODE_NOT_PRESENT_OFFSET, 15279 }, 27188 { 0x1d797, UNICODE_NOT_PRESENT_OFFSET, 1402 }, 27189 { 0x1d798, UNICODE_NOT_PRESENT_OFFSET, 15282 }, 27190 { 0x1d799, UNICODE_NOT_PRESENT_OFFSET, 15285 }, 27191 { 0x1d79a, UNICODE_NOT_PRESENT_OFFSET, 15288 }, 27192 { 0x1d79b, UNICODE_NOT_PRESENT_OFFSET, 15291 }, 27193 { 0x1d79c, UNICODE_NOT_PRESENT_OFFSET, 15294 }, 27194 { 0x1d79d, UNICODE_NOT_PRESENT_OFFSET, 15297 }, 27195 { 0x1d79e, UNICODE_NOT_PRESENT_OFFSET, 15300 }, 27196 { 0x1d79f, UNICODE_NOT_PRESENT_OFFSET, 5357 }, 27197 { 0x1d7a0, UNICODE_NOT_PRESENT_OFFSET, 15303 }, 27198 { 0x1d7a1, UNICODE_NOT_PRESENT_OFFSET, 1402 }, 27199 { 0x1d7a2, UNICODE_NOT_PRESENT_OFFSET, 1408 }, 27200 { 0x1d7a3, UNICODE_NOT_PRESENT_OFFSET, 15306 }, 27201 { 0x1d7a4, UNICODE_NOT_PRESENT_OFFSET, 1374 }, 27202 { 0x1d7a5, UNICODE_NOT_PRESENT_OFFSET, 15309 }, 27203 { 0x1d7a6, UNICODE_NOT_PRESENT_OFFSET, 15312 }, 27204 { 0x1d7a7, UNICODE_NOT_PRESENT_OFFSET, 15315 }, 27205 { 0x1d7a8, UNICODE_NOT_PRESENT_OFFSET, 5333 }, 27206 { 0x1d7a9, UNICODE_NOT_PRESENT_OFFSET, 15318 }, 27207 { 0x1d7aa, UNICODE_NOT_PRESENT_OFFSET, 15322 }, 27208 { 0x1d7ab, UNICODE_NOT_PRESENT_OFFSET, 1368 }, 27209 { 0x1d7ac, UNICODE_NOT_PRESENT_OFFSET, 2418 }, 27210 { 0x1d7ad, UNICODE_NOT_PRESENT_OFFSET, 2421 }, 27211 { 0x1d7ae, UNICODE_NOT_PRESENT_OFFSET, 1405 }, 27212 { 0x1d7af, UNICODE_NOT_PRESENT_OFFSET, 15325 }, 27213 { 0x1d7b0, UNICODE_NOT_PRESENT_OFFSET, 15328 }, 27214 { 0x1d7b1, UNICODE_NOT_PRESENT_OFFSET, 1371 }, 27215 { 0x1d7b2, UNICODE_NOT_PRESENT_OFFSET, 4860 }, 27216 { 0x1d7b3, UNICODE_NOT_PRESENT_OFFSET, 1393 }, 27217 { 0x1d7b4, UNICODE_NOT_PRESENT_OFFSET, 15331 }, 27218 { 0x1d7b5, UNICODE_NOT_PRESENT_OFFSET, 20 }, 27219 { 0x1d7b6, UNICODE_NOT_PRESENT_OFFSET, 15334 }, 27220 { 0x1d7b7, UNICODE_NOT_PRESENT_OFFSET, 15337 }, 27221 { 0x1d7b8, UNICODE_NOT_PRESENT_OFFSET, 15340 }, 27222 { 0x1d7b9, UNICODE_NOT_PRESENT_OFFSET, 1390 }, 27223 { 0x1d7ba, UNICODE_NOT_PRESENT_OFFSET, 1396 }, 27224 { 0x1d7bb, UNICODE_NOT_PRESENT_OFFSET, 1399 }, 27225 { 0x1d7bc, UNICODE_NOT_PRESENT_OFFSET, 15343 }, 27226 { 0x1d7bd, UNICODE_NOT_PRESENT_OFFSET, 15346 }, 27227 { 0x1d7be, UNICODE_NOT_PRESENT_OFFSET, 15349 }, 27228 { 0x1d7bf, UNICODE_NOT_PRESENT_OFFSET, 1387 }, 27229 { 0x1d7c0, UNICODE_NOT_PRESENT_OFFSET, 2424 }, 27230 { 0x1d7c1, UNICODE_NOT_PRESENT_OFFSET, 15352 }, 27231 { 0x1d7c2, UNICODE_NOT_PRESENT_OFFSET, 15355 }, 27232 { 0x1d7c3, UNICODE_NOT_PRESENT_OFFSET, 15358 }, 27233 { 0x1d7c4, UNICODE_NOT_PRESENT_OFFSET, 1405 }, 27234 { 0x1d7c5, UNICODE_NOT_PRESENT_OFFSET, 1371 }, 27235 { 0x1d7c6, UNICODE_NOT_PRESENT_OFFSET, 1393 }, 27236 { 0x1d7c7, UNICODE_NOT_PRESENT_OFFSET, 1387 }, 27237 { 0x1d7c8, UNICODE_NOT_PRESENT_OFFSET, 1396 }, 27238 { 0x1d7c9, UNICODE_NOT_PRESENT_OFFSET, 1390 }, 27239 { 0x1d7ca, UNICODE_NOT_PRESENT_OFFSET, 15362 }, 27240 { 0x1d7cb, UNICODE_NOT_PRESENT_OFFSET, 15365 }, 27241 { 0x1d7ce, UNICODE_NOT_PRESENT_OFFSET, 5253 }, 27242 { 0x1d7cf, UNICODE_NOT_PRESENT_OFFSET, 27 }, 27243 { 0x1d7d0, UNICODE_NOT_PRESENT_OFFSET, 12 }, 27244 { 0x1d7d1, UNICODE_NOT_PRESENT_OFFSET, 14 }, 27245 { 0x1d7d2, UNICODE_NOT_PRESENT_OFFSET, 5255 }, 27246 { 0x1d7d3, UNICODE_NOT_PRESENT_OFFSET, 5257 }, 27247 { 0x1d7d4, UNICODE_NOT_PRESENT_OFFSET, 5259 }, 27248 { 0x1d7d5, UNICODE_NOT_PRESENT_OFFSET, 5261 }, 27249 { 0x1d7d6, UNICODE_NOT_PRESENT_OFFSET, 5263 }, 27250 { 0x1d7d7, UNICODE_NOT_PRESENT_OFFSET, 5265 }, 27251 { 0x1d7d8, UNICODE_NOT_PRESENT_OFFSET, 5253 }, 27252 { 0x1d7d9, UNICODE_NOT_PRESENT_OFFSET, 27 }, 27253 { 0x1d7da, UNICODE_NOT_PRESENT_OFFSET, 12 }, 27254 { 0x1d7db, UNICODE_NOT_PRESENT_OFFSET, 14 }, 27255 { 0x1d7dc, UNICODE_NOT_PRESENT_OFFSET, 5255 }, 27256 { 0x1d7dd, UNICODE_NOT_PRESENT_OFFSET, 5257 }, 27257 { 0x1d7de, UNICODE_NOT_PRESENT_OFFSET, 5259 }, 27258 { 0x1d7df, UNICODE_NOT_PRESENT_OFFSET, 5261 }, 27259 { 0x1d7e0, UNICODE_NOT_PRESENT_OFFSET, 5263 }, 27260 { 0x1d7e1, UNICODE_NOT_PRESENT_OFFSET, 5265 }, 27261 { 0x1d7e2, UNICODE_NOT_PRESENT_OFFSET, 5253 }, 27262 { 0x1d7e3, UNICODE_NOT_PRESENT_OFFSET, 27 }, 27263 { 0x1d7e4, UNICODE_NOT_PRESENT_OFFSET, 12 }, 27264 { 0x1d7e5, UNICODE_NOT_PRESENT_OFFSET, 14 }, 27265 { 0x1d7e6, UNICODE_NOT_PRESENT_OFFSET, 5255 }, 27266 { 0x1d7e7, UNICODE_NOT_PRESENT_OFFSET, 5257 }, 27267 { 0x1d7e8, UNICODE_NOT_PRESENT_OFFSET, 5259 }, 27268 { 0x1d7e9, UNICODE_NOT_PRESENT_OFFSET, 5261 }, 27269 { 0x1d7ea, UNICODE_NOT_PRESENT_OFFSET, 5263 }, 27270 { 0x1d7eb, UNICODE_NOT_PRESENT_OFFSET, 5265 }, 27271 { 0x1d7ec, UNICODE_NOT_PRESENT_OFFSET, 5253 }, 27272 { 0x1d7ed, UNICODE_NOT_PRESENT_OFFSET, 27 }, 27273 { 0x1d7ee, UNICODE_NOT_PRESENT_OFFSET, 12 }, 27274 { 0x1d7ef, UNICODE_NOT_PRESENT_OFFSET, 14 }, 27275 { 0x1d7f0, UNICODE_NOT_PRESENT_OFFSET, 5255 }, 27276 { 0x1d7f1, UNICODE_NOT_PRESENT_OFFSET, 5257 }, 27277 { 0x1d7f2, UNICODE_NOT_PRESENT_OFFSET, 5259 }, 27278 { 0x1d7f3, UNICODE_NOT_PRESENT_OFFSET, 5261 }, 27279 { 0x1d7f4, UNICODE_NOT_PRESENT_OFFSET, 5263 }, 27280 { 0x1d7f5, UNICODE_NOT_PRESENT_OFFSET, 5265 }, 27281 { 0x1d7f6, UNICODE_NOT_PRESENT_OFFSET, 5253 }, 27282 { 0x1d7f7, UNICODE_NOT_PRESENT_OFFSET, 27 }, 27283 { 0x1d7f8, UNICODE_NOT_PRESENT_OFFSET, 12 }, 27284 { 0x1d7f9, UNICODE_NOT_PRESENT_OFFSET, 14 }, 27285 { 0x1d7fa, UNICODE_NOT_PRESENT_OFFSET, 5255 }, 27286 { 0x1d7fb, UNICODE_NOT_PRESENT_OFFSET, 5257 }, 27287 { 0x1d7fc, UNICODE_NOT_PRESENT_OFFSET, 5259 }, 27288 { 0x1d7fd, UNICODE_NOT_PRESENT_OFFSET, 5261 }, 27289 { 0x1d7fe, UNICODE_NOT_PRESENT_OFFSET, 5263 }, 27290 { 0x1d7ff, UNICODE_NOT_PRESENT_OFFSET, 5265 }, 27291 { 0x1ee00, UNICODE_NOT_PRESENT_OFFSET, 14761 }, 27292 { 0x1ee01, UNICODE_NOT_PRESENT_OFFSET, 14764 }, 27293 { 0x1ee02, UNICODE_NOT_PRESENT_OFFSET, 14776 }, 27294 { 0x1ee03, UNICODE_NOT_PRESENT_OFFSET, 14785 }, 27295 { 0x1ee05, UNICODE_NOT_PRESENT_OFFSET, 14842 }, 27296 { 0x1ee06, UNICODE_NOT_PRESENT_OFFSET, 14794 }, 27297 { 0x1ee07, UNICODE_NOT_PRESENT_OFFSET, 14779 }, 27298 { 0x1ee08, UNICODE_NOT_PRESENT_OFFSET, 14809 }, 27299 { 0x1ee09, UNICODE_NOT_PRESENT_OFFSET, 14845 }, 27300 { 0x1ee0a, UNICODE_NOT_PRESENT_OFFSET, 14827 }, 27301 { 0x1ee0b, UNICODE_NOT_PRESENT_OFFSET, 14830 }, 27302 { 0x1ee0c, UNICODE_NOT_PRESENT_OFFSET, 14833 }, 27303 { 0x1ee0d, UNICODE_NOT_PRESENT_OFFSET, 14836 }, 27304 { 0x1ee0e, UNICODE_NOT_PRESENT_OFFSET, 14797 }, 27305 { 0x1ee0f, UNICODE_NOT_PRESENT_OFFSET, 14815 }, 27306 { 0x1ee10, UNICODE_NOT_PRESENT_OFFSET, 14821 }, 27307 { 0x1ee11, UNICODE_NOT_PRESENT_OFFSET, 14803 }, 27308 { 0x1ee12, UNICODE_NOT_PRESENT_OFFSET, 14824 }, 27309 { 0x1ee13, UNICODE_NOT_PRESENT_OFFSET, 14791 }, 27310 { 0x1ee14, UNICODE_NOT_PRESENT_OFFSET, 14800 }, 27311 { 0x1ee15, UNICODE_NOT_PRESENT_OFFSET, 14770 }, 27312 { 0x1ee16, UNICODE_NOT_PRESENT_OFFSET, 14773 }, 27313 { 0x1ee17, UNICODE_NOT_PRESENT_OFFSET, 14782 }, 27314 { 0x1ee18, UNICODE_NOT_PRESENT_OFFSET, 14788 }, 27315 { 0x1ee19, UNICODE_NOT_PRESENT_OFFSET, 14806 }, 27316 { 0x1ee1a, UNICODE_NOT_PRESENT_OFFSET, 14812 }, 27317 { 0x1ee1b, UNICODE_NOT_PRESENT_OFFSET, 14818 }, 27318 { 0x1ee1c, UNICODE_NOT_PRESENT_OFFSET, 15368 }, 27319 { 0x1ee1d, UNICODE_NOT_PRESENT_OFFSET, 12852 }, 27320 { 0x1ee1e, UNICODE_NOT_PRESENT_OFFSET, 15371 }, 27321 { 0x1ee1f, UNICODE_NOT_PRESENT_OFFSET, 15374 }, 27322 { 0x1ee21, UNICODE_NOT_PRESENT_OFFSET, 14764 }, 27323 { 0x1ee22, UNICODE_NOT_PRESENT_OFFSET, 14776 }, 27324 { 0x1ee24, UNICODE_NOT_PRESENT_OFFSET, 14839 }, 27325 { 0x1ee27, UNICODE_NOT_PRESENT_OFFSET, 14779 }, 27326 { 0x1ee29, UNICODE_NOT_PRESENT_OFFSET, 14845 }, 27327 { 0x1ee2a, UNICODE_NOT_PRESENT_OFFSET, 14827 }, 27328 { 0x1ee2b, UNICODE_NOT_PRESENT_OFFSET, 14830 }, 27329 { 0x1ee2c, UNICODE_NOT_PRESENT_OFFSET, 14833 }, 27330 { 0x1ee2d, UNICODE_NOT_PRESENT_OFFSET, 14836 }, 27331 { 0x1ee2e, UNICODE_NOT_PRESENT_OFFSET, 14797 }, 27332 { 0x1ee2f, UNICODE_NOT_PRESENT_OFFSET, 14815 }, 27333 { 0x1ee30, UNICODE_NOT_PRESENT_OFFSET, 14821 }, 27334 { 0x1ee31, UNICODE_NOT_PRESENT_OFFSET, 14803 }, 27335 { 0x1ee32, UNICODE_NOT_PRESENT_OFFSET, 14824 }, 27336 { 0x1ee34, UNICODE_NOT_PRESENT_OFFSET, 14800 }, 27337 { 0x1ee35, UNICODE_NOT_PRESENT_OFFSET, 14770 }, 27338 { 0x1ee36, UNICODE_NOT_PRESENT_OFFSET, 14773 }, 27339 { 0x1ee37, UNICODE_NOT_PRESENT_OFFSET, 14782 }, 27340 { 0x1ee39, UNICODE_NOT_PRESENT_OFFSET, 14806 }, 27341 { 0x1ee3b, UNICODE_NOT_PRESENT_OFFSET, 14818 }, 27342 { 0x1ee42, UNICODE_NOT_PRESENT_OFFSET, 14776 }, 27343 { 0x1ee47, UNICODE_NOT_PRESENT_OFFSET, 14779 }, 27344 { 0x1ee49, UNICODE_NOT_PRESENT_OFFSET, 14845 }, 27345 { 0x1ee4b, UNICODE_NOT_PRESENT_OFFSET, 14830 }, 27346 { 0x1ee4d, UNICODE_NOT_PRESENT_OFFSET, 14836 }, 27347 { 0x1ee4e, UNICODE_NOT_PRESENT_OFFSET, 14797 }, 27348 { 0x1ee4f, UNICODE_NOT_PRESENT_OFFSET, 14815 }, 27349 { 0x1ee51, UNICODE_NOT_PRESENT_OFFSET, 14803 }, 27350 { 0x1ee52, UNICODE_NOT_PRESENT_OFFSET, 14824 }, 27351 { 0x1ee54, UNICODE_NOT_PRESENT_OFFSET, 14800 }, 27352 { 0x1ee57, UNICODE_NOT_PRESENT_OFFSET, 14782 }, 27353 { 0x1ee59, UNICODE_NOT_PRESENT_OFFSET, 14806 }, 27354 { 0x1ee5b, UNICODE_NOT_PRESENT_OFFSET, 14818 }, 27355 { 0x1ee5d, UNICODE_NOT_PRESENT_OFFSET, 12852 }, 27356 { 0x1ee5f, UNICODE_NOT_PRESENT_OFFSET, 15374 }, 27357 { 0x1ee61, UNICODE_NOT_PRESENT_OFFSET, 14764 }, 27358 { 0x1ee62, UNICODE_NOT_PRESENT_OFFSET, 14776 }, 27359 { 0x1ee64, UNICODE_NOT_PRESENT_OFFSET, 14839 }, 27360 { 0x1ee67, UNICODE_NOT_PRESENT_OFFSET, 14779 }, 27361 { 0x1ee68, UNICODE_NOT_PRESENT_OFFSET, 14809 }, 27362 { 0x1ee69, UNICODE_NOT_PRESENT_OFFSET, 14845 }, 27363 { 0x1ee6a, UNICODE_NOT_PRESENT_OFFSET, 14827 }, 27364 { 0x1ee6c, UNICODE_NOT_PRESENT_OFFSET, 14833 }, 27365 { 0x1ee6d, UNICODE_NOT_PRESENT_OFFSET, 14836 }, 27366 { 0x1ee6e, UNICODE_NOT_PRESENT_OFFSET, 14797 }, 27367 { 0x1ee6f, UNICODE_NOT_PRESENT_OFFSET, 14815 }, 27368 { 0x1ee70, UNICODE_NOT_PRESENT_OFFSET, 14821 }, 27369 { 0x1ee71, UNICODE_NOT_PRESENT_OFFSET, 14803 }, 27370 { 0x1ee72, UNICODE_NOT_PRESENT_OFFSET, 14824 }, 27371 { 0x1ee74, UNICODE_NOT_PRESENT_OFFSET, 14800 }, 27372 { 0x1ee75, UNICODE_NOT_PRESENT_OFFSET, 14770 }, 27373 { 0x1ee76, UNICODE_NOT_PRESENT_OFFSET, 14773 }, 27374 { 0x1ee77, UNICODE_NOT_PRESENT_OFFSET, 14782 }, 27375 { 0x1ee79, UNICODE_NOT_PRESENT_OFFSET, 14806 }, 27376 { 0x1ee7a, UNICODE_NOT_PRESENT_OFFSET, 14812 }, 27377 { 0x1ee7b, UNICODE_NOT_PRESENT_OFFSET, 14818 }, 27378 { 0x1ee7c, UNICODE_NOT_PRESENT_OFFSET, 15368 }, 27379 { 0x1ee7e, UNICODE_NOT_PRESENT_OFFSET, 15371 }, 27380 { 0x1ee80, UNICODE_NOT_PRESENT_OFFSET, 14761 }, 27381 { 0x1ee81, UNICODE_NOT_PRESENT_OFFSET, 14764 }, 27382 { 0x1ee82, UNICODE_NOT_PRESENT_OFFSET, 14776 }, 27383 { 0x1ee83, UNICODE_NOT_PRESENT_OFFSET, 14785 }, 27384 { 0x1ee84, UNICODE_NOT_PRESENT_OFFSET, 14839 }, 27385 { 0x1ee85, UNICODE_NOT_PRESENT_OFFSET, 14842 }, 27386 { 0x1ee86, UNICODE_NOT_PRESENT_OFFSET, 14794 }, 27387 { 0x1ee87, UNICODE_NOT_PRESENT_OFFSET, 14779 }, 27388 { 0x1ee88, UNICODE_NOT_PRESENT_OFFSET, 14809 }, 27389 { 0x1ee89, UNICODE_NOT_PRESENT_OFFSET, 14845 }, 27390 { 0x1ee8b, UNICODE_NOT_PRESENT_OFFSET, 14830 }, 27391 { 0x1ee8c, UNICODE_NOT_PRESENT_OFFSET, 14833 }, 27392 { 0x1ee8d, UNICODE_NOT_PRESENT_OFFSET, 14836 }, 27393 { 0x1ee8e, UNICODE_NOT_PRESENT_OFFSET, 14797 }, 27394 { 0x1ee8f, UNICODE_NOT_PRESENT_OFFSET, 14815 }, 27395 { 0x1ee90, UNICODE_NOT_PRESENT_OFFSET, 14821 }, 27396 { 0x1ee91, UNICODE_NOT_PRESENT_OFFSET, 14803 }, 27397 { 0x1ee92, UNICODE_NOT_PRESENT_OFFSET, 14824 }, 27398 { 0x1ee93, UNICODE_NOT_PRESENT_OFFSET, 14791 }, 27399 { 0x1ee94, UNICODE_NOT_PRESENT_OFFSET, 14800 }, 27400 { 0x1ee95, UNICODE_NOT_PRESENT_OFFSET, 14770 }, 27401 { 0x1ee96, UNICODE_NOT_PRESENT_OFFSET, 14773 }, 27402 { 0x1ee97, UNICODE_NOT_PRESENT_OFFSET, 14782 }, 27403 { 0x1ee98, UNICODE_NOT_PRESENT_OFFSET, 14788 }, 27404 { 0x1ee99, UNICODE_NOT_PRESENT_OFFSET, 14806 }, 27405 { 0x1ee9a, UNICODE_NOT_PRESENT_OFFSET, 14812 }, 27406 { 0x1ee9b, UNICODE_NOT_PRESENT_OFFSET, 14818 }, 27407 { 0x1eea1, UNICODE_NOT_PRESENT_OFFSET, 14764 }, 27408 { 0x1eea2, UNICODE_NOT_PRESENT_OFFSET, 14776 }, 27409 { 0x1eea3, UNICODE_NOT_PRESENT_OFFSET, 14785 }, 27410 { 0x1eea5, UNICODE_NOT_PRESENT_OFFSET, 14842 }, 27411 { 0x1eea6, UNICODE_NOT_PRESENT_OFFSET, 14794 }, 27412 { 0x1eea7, UNICODE_NOT_PRESENT_OFFSET, 14779 }, 27413 { 0x1eea8, UNICODE_NOT_PRESENT_OFFSET, 14809 }, 27414 { 0x1eea9, UNICODE_NOT_PRESENT_OFFSET, 14845 }, 27415 { 0x1eeab, UNICODE_NOT_PRESENT_OFFSET, 14830 }, 27416 { 0x1eeac, UNICODE_NOT_PRESENT_OFFSET, 14833 }, 27417 { 0x1eead, UNICODE_NOT_PRESENT_OFFSET, 14836 }, 27418 { 0x1eeae, UNICODE_NOT_PRESENT_OFFSET, 14797 }, 27419 { 0x1eeaf, UNICODE_NOT_PRESENT_OFFSET, 14815 }, 27420 { 0x1eeb0, UNICODE_NOT_PRESENT_OFFSET, 14821 }, 27421 { 0x1eeb1, UNICODE_NOT_PRESENT_OFFSET, 14803 }, 27422 { 0x1eeb2, UNICODE_NOT_PRESENT_OFFSET, 14824 }, 27423 { 0x1eeb3, UNICODE_NOT_PRESENT_OFFSET, 14791 }, 27424 { 0x1eeb4, UNICODE_NOT_PRESENT_OFFSET, 14800 }, 27425 { 0x1eeb5, UNICODE_NOT_PRESENT_OFFSET, 14770 }, 27426 { 0x1eeb6, UNICODE_NOT_PRESENT_OFFSET, 14773 }, 27427 { 0x1eeb7, UNICODE_NOT_PRESENT_OFFSET, 14782 }, 27428 { 0x1eeb8, UNICODE_NOT_PRESENT_OFFSET, 14788 }, 27429 { 0x1eeb9, UNICODE_NOT_PRESENT_OFFSET, 14806 }, 27430 { 0x1eeba, UNICODE_NOT_PRESENT_OFFSET, 14812 }, 27431 { 0x1eebb, UNICODE_NOT_PRESENT_OFFSET, 14818 }, 27432 { 0x1f100, UNICODE_NOT_PRESENT_OFFSET, 15377 }, 27433 { 0x1f101, UNICODE_NOT_PRESENT_OFFSET, 15380 }, 27434 { 0x1f102, UNICODE_NOT_PRESENT_OFFSET, 15383 }, 27435 { 0x1f103, UNICODE_NOT_PRESENT_OFFSET, 15386 }, 27436 { 0x1f104, UNICODE_NOT_PRESENT_OFFSET, 15389 }, 27437 { 0x1f105, UNICODE_NOT_PRESENT_OFFSET, 15392 }, 27438 { 0x1f106, UNICODE_NOT_PRESENT_OFFSET, 15395 }, 27439 { 0x1f107, UNICODE_NOT_PRESENT_OFFSET, 15398 }, 27440 { 0x1f108, UNICODE_NOT_PRESENT_OFFSET, 15401 }, 27441 { 0x1f109, UNICODE_NOT_PRESENT_OFFSET, 15404 }, 27442 { 0x1f10a, UNICODE_NOT_PRESENT_OFFSET, 15407 }, 27443 { 0x1f110, UNICODE_NOT_PRESENT_OFFSET, 15410 }, 27444 { 0x1f111, UNICODE_NOT_PRESENT_OFFSET, 15414 }, 27445 { 0x1f112, UNICODE_NOT_PRESENT_OFFSET, 15418 }, 27446 { 0x1f113, UNICODE_NOT_PRESENT_OFFSET, 15422 }, 27447 { 0x1f114, UNICODE_NOT_PRESENT_OFFSET, 15426 }, 27448 { 0x1f115, UNICODE_NOT_PRESENT_OFFSET, 15430 }, 27449 { 0x1f116, UNICODE_NOT_PRESENT_OFFSET, 15434 }, 27450 { 0x1f117, UNICODE_NOT_PRESENT_OFFSET, 15438 }, 27451 { 0x1f118, UNICODE_NOT_PRESENT_OFFSET, 15442 }, 27452 { 0x1f119, UNICODE_NOT_PRESENT_OFFSET, 15446 }, 27453 { 0x1f11a, UNICODE_NOT_PRESENT_OFFSET, 15450 }, 27454 { 0x1f11b, UNICODE_NOT_PRESENT_OFFSET, 15454 }, 27455 { 0x1f11c, UNICODE_NOT_PRESENT_OFFSET, 15458 }, 27456 { 0x1f11d, UNICODE_NOT_PRESENT_OFFSET, 15462 }, 27457 { 0x1f11e, UNICODE_NOT_PRESENT_OFFSET, 15466 }, 27458 { 0x1f11f, UNICODE_NOT_PRESENT_OFFSET, 15470 }, 27459 { 0x1f120, UNICODE_NOT_PRESENT_OFFSET, 15474 }, 27460 { 0x1f121, UNICODE_NOT_PRESENT_OFFSET, 15478 }, 27461 { 0x1f122, UNICODE_NOT_PRESENT_OFFSET, 15482 }, 27462 { 0x1f123, UNICODE_NOT_PRESENT_OFFSET, 15486 }, 27463 { 0x1f124, UNICODE_NOT_PRESENT_OFFSET, 15490 }, 27464 { 0x1f125, UNICODE_NOT_PRESENT_OFFSET, 15494 }, 27465 { 0x1f126, UNICODE_NOT_PRESENT_OFFSET, 15498 }, 27466 { 0x1f127, UNICODE_NOT_PRESENT_OFFSET, 15502 }, 27467 { 0x1f128, UNICODE_NOT_PRESENT_OFFSET, 15506 }, 27468 { 0x1f129, UNICODE_NOT_PRESENT_OFFSET, 15510 }, 27469 { 0x1f12a, UNICODE_NOT_PRESENT_OFFSET, 15514 }, 27470 { 0x1f12b, UNICODE_NOT_PRESENT_OFFSET, 5292 }, 27471 { 0x1f12c, UNICODE_NOT_PRESENT_OFFSET, 2346 }, 27472 { 0x1f12d, UNICODE_NOT_PRESENT_OFFSET, 15522 }, 27473 { 0x1f12e, UNICODE_NOT_PRESENT_OFFSET, 15525 }, 27474 { 0x1f130, UNICODE_NOT_PRESENT_OFFSET, 2309 }, 27475 { 0x1f131, UNICODE_NOT_PRESENT_OFFSET, 2314 }, 27476 { 0x1f132, UNICODE_NOT_PRESENT_OFFSET, 5292 }, 27477 { 0x1f133, UNICODE_NOT_PRESENT_OFFSET, 2316 }, 27478 { 0x1f134, UNICODE_NOT_PRESENT_OFFSET, 2318 }, 27479 { 0x1f135, UNICODE_NOT_PRESENT_OFFSET, 5336 }, 27480 { 0x1f136, UNICODE_NOT_PRESENT_OFFSET, 2323 }, 27481 { 0x1f137, UNICODE_NOT_PRESENT_OFFSET, 2325 }, 27482 { 0x1f138, UNICODE_NOT_PRESENT_OFFSET, 2327 }, 27483 { 0x1f139, UNICODE_NOT_PRESENT_OFFSET, 2329 }, 27484 { 0x1f13a, UNICODE_NOT_PRESENT_OFFSET, 2331 }, 27485 { 0x1f13b, UNICODE_NOT_PRESENT_OFFSET, 2333 }, 27486 { 0x1f13c, UNICODE_NOT_PRESENT_OFFSET, 2335 }, 27487 { 0x1f13d, UNICODE_NOT_PRESENT_OFFSET, 2337 }, 27488 { 0x1f13e, UNICODE_NOT_PRESENT_OFFSET, 2339 }, 27489 { 0x1f13f, UNICODE_NOT_PRESENT_OFFSET, 2344 }, 27490 { 0x1f140, UNICODE_NOT_PRESENT_OFFSET, 5319 }, 27491 { 0x1f141, UNICODE_NOT_PRESENT_OFFSET, 2346 }, 27492 { 0x1f142, UNICODE_NOT_PRESENT_OFFSET, 6133 }, 27493 { 0x1f143, UNICODE_NOT_PRESENT_OFFSET, 2348 }, 27494 { 0x1f144, UNICODE_NOT_PRESENT_OFFSET, 2350 }, 27495 { 0x1f145, UNICODE_NOT_PRESENT_OFFSET, 5470 }, 27496 { 0x1f146, UNICODE_NOT_PRESENT_OFFSET, 2352 }, 27497 { 0x1f147, UNICODE_NOT_PRESENT_OFFSET, 5487 }, 27498 { 0x1f148, UNICODE_NOT_PRESENT_OFFSET, 6135 }, 27499 { 0x1f149, UNICODE_NOT_PRESENT_OFFSET, 5331 }, 27500 { 0x1f14a, UNICODE_NOT_PRESENT_OFFSET, 15528 }, 27501 { 0x1f14b, UNICODE_NOT_PRESENT_OFFSET, 10556 }, 27502 { 0x1f14c, UNICODE_NOT_PRESENT_OFFSET, 15531 }, 27503 { 0x1f14d, UNICODE_NOT_PRESENT_OFFSET, 15534 }, 27504 { 0x1f14e, UNICODE_NOT_PRESENT_OFFSET, 15537 }, 27505 { 0x1f14f, UNICODE_NOT_PRESENT_OFFSET, 15541 }, 27506 { 0x1f16a, UNICODE_NOT_PRESENT_OFFSET, 15544 }, 27507 { 0x1f16b, UNICODE_NOT_PRESENT_OFFSET, 15547 }, 27508 { 0x1f190, UNICODE_NOT_PRESENT_OFFSET, 15550 }, 27509 { 0x1f200, UNICODE_NOT_PRESENT_OFFSET, 15553 }, 27510 { 0x1f201, UNICODE_NOT_PRESENT_OFFSET, 15560 }, 27511 { 0x1f202, UNICODE_NOT_PRESENT_OFFSET, 8848 }, 27512 { 0x1f210, UNICODE_NOT_PRESENT_OFFSET, 6433 }, 27513 { 0x1f211, UNICODE_NOT_PRESENT_OFFSET, 15567 }, 27514 { 0x1f212, UNICODE_NOT_PRESENT_OFFSET, 15571 }, 27515 { 0x1f213, UNICODE_NOT_PRESENT_OFFSET, 7346 }, 27516 { 0x1f214, UNICODE_NOT_PRESENT_OFFSET, 6205 }, 27517 { 0x1f215, UNICODE_NOT_PRESENT_OFFSET, 15575 }, 27518 { 0x1f216, UNICODE_NOT_PRESENT_OFFSET, 15579 }, 27519 { 0x1f217, UNICODE_NOT_PRESENT_OFFSET, 7887 }, 27520 { 0x1f218, UNICODE_NOT_PRESENT_OFFSET, 15583 }, 27521 { 0x1f219, UNICODE_NOT_PRESENT_OFFSET, 15587 }, 27522 { 0x1f21a, UNICODE_NOT_PRESENT_OFFSET, 15591 }, 27523 { 0x1f21b, UNICODE_NOT_PRESENT_OFFSET, 11619 }, 27524 { 0x1f21c, UNICODE_NOT_PRESENT_OFFSET, 15595 }, 27525 { 0x1f21d, UNICODE_NOT_PRESENT_OFFSET, 15599 }, 27526 { 0x1f21e, UNICODE_NOT_PRESENT_OFFSET, 15603 }, 27527 { 0x1f21f, UNICODE_NOT_PRESENT_OFFSET, 15607 }, 27528 { 0x1f220, UNICODE_NOT_PRESENT_OFFSET, 15611 }, 27529 { 0x1f221, UNICODE_NOT_PRESENT_OFFSET, 15615 }, 27530 { 0x1f222, UNICODE_NOT_PRESENT_OFFSET, 6577 }, 27531 { 0x1f223, UNICODE_NOT_PRESENT_OFFSET, 15619 }, 27532 { 0x1f224, UNICODE_NOT_PRESENT_OFFSET, 15623 }, 27533 { 0x1f225, UNICODE_NOT_PRESENT_OFFSET, 15627 }, 27534 { 0x1f226, UNICODE_NOT_PRESENT_OFFSET, 15631 }, 27535 { 0x1f227, UNICODE_NOT_PRESENT_OFFSET, 15635 }, 27536 { 0x1f228, UNICODE_NOT_PRESENT_OFFSET, 15639 }, 27537 { 0x1f229, UNICODE_NOT_PRESENT_OFFSET, 6181 }, 27538 { 0x1f22a, UNICODE_NOT_PRESENT_OFFSET, 7855 }, 27539 { 0x1f22b, UNICODE_NOT_PRESENT_OFFSET, 15643 }, 27540 { 0x1f22c, UNICODE_NOT_PRESENT_OFFSET, 8646 }, 27541 { 0x1f22d, UNICODE_NOT_PRESENT_OFFSET, 7867 }, 27542 { 0x1f22e, UNICODE_NOT_PRESENT_OFFSET, 8650 }, 27543 { 0x1f22f, UNICODE_NOT_PRESENT_OFFSET, 15647 }, 27544 { 0x1f230, UNICODE_NOT_PRESENT_OFFSET, 6801 }, 27545 { 0x1f231, UNICODE_NOT_PRESENT_OFFSET, 15651 }, 27546 { 0x1f232, UNICODE_NOT_PRESENT_OFFSET, 15655 }, 27547 { 0x1f233, UNICODE_NOT_PRESENT_OFFSET, 15659 }, 27548 { 0x1f234, UNICODE_NOT_PRESENT_OFFSET, 15663 }, 27549 { 0x1f235, UNICODE_NOT_PRESENT_OFFSET, 15667 }, 27550 { 0x1f236, UNICODE_NOT_PRESENT_OFFSET, 8578 }, 27551 { 0x1f237, UNICODE_NOT_PRESENT_OFFSET, 6473 }, 27552 { 0x1f238, UNICODE_NOT_PRESENT_OFFSET, 15671 }, 27553 { 0x1f239, UNICODE_NOT_PRESENT_OFFSET, 15675 }, 27554 { 0x1f23a, UNICODE_NOT_PRESENT_OFFSET, 15679 }, 27555 { 0x1f23b, UNICODE_NOT_PRESENT_OFFSET, 15683 }, 27556 { 0x1f240, UNICODE_NOT_PRESENT_OFFSET, 15687 }, 27557 { 0x1f241, UNICODE_NOT_PRESENT_OFFSET, 15697 }, 27558 { 0x1f242, UNICODE_NOT_PRESENT_OFFSET, 15707 }, 27559 { 0x1f243, UNICODE_NOT_PRESENT_OFFSET, 15717 }, 27560 { 0x1f244, UNICODE_NOT_PRESENT_OFFSET, 15727 }, 27561 { 0x1f245, UNICODE_NOT_PRESENT_OFFSET, 15737 }, 27562 { 0x1f246, UNICODE_NOT_PRESENT_OFFSET, 15747 }, 27563 { 0x1f247, UNICODE_NOT_PRESENT_OFFSET, 15757 }, 27564 { 0x1f248, UNICODE_NOT_PRESENT_OFFSET, 15767 }, 27565 { 0x1f250, UNICODE_NOT_PRESENT_OFFSET, 15777 }, 27566 { 0x1f251, UNICODE_NOT_PRESENT_OFFSET, 15781 }, 27567 { 0x2f800, 15785, UNICODE_NOT_PRESENT_OFFSET }, 27568 { 0x2f801, 15789, UNICODE_NOT_PRESENT_OFFSET }, 27569 { 0x2f802, 15793, UNICODE_NOT_PRESENT_OFFSET }, 27570 { 0x2f803, 15797, UNICODE_NOT_PRESENT_OFFSET }, 27571 { 0x2f804, 15802, UNICODE_NOT_PRESENT_OFFSET }, 27572 { 0x2f805, 11991, UNICODE_NOT_PRESENT_OFFSET }, 27573 { 0x2f806, 15806, UNICODE_NOT_PRESENT_OFFSET }, 27574 { 0x2f807, 15810, UNICODE_NOT_PRESENT_OFFSET }, 27575 { 0x2f808, 15814, UNICODE_NOT_PRESENT_OFFSET }, 27576 { 0x2f809, 15818, UNICODE_NOT_PRESENT_OFFSET }, 27577 { 0x2f80a, 11995, UNICODE_NOT_PRESENT_OFFSET }, 27578 { 0x2f80b, 15822, UNICODE_NOT_PRESENT_OFFSET }, 27579 { 0x2f80c, 15826, UNICODE_NOT_PRESENT_OFFSET }, 27580 { 0x2f80d, 15830, UNICODE_NOT_PRESENT_OFFSET }, 27581 { 0x2f80e, 11999, UNICODE_NOT_PRESENT_OFFSET }, 27582 { 0x2f80f, 15835, UNICODE_NOT_PRESENT_OFFSET }, 27583 { 0x2f810, 15839, UNICODE_NOT_PRESENT_OFFSET }, 27584 { 0x2f811, 15843, UNICODE_NOT_PRESENT_OFFSET }, 27585 { 0x2f812, 15847, UNICODE_NOT_PRESENT_OFFSET }, 27586 { 0x2f813, 15852, UNICODE_NOT_PRESENT_OFFSET }, 27587 { 0x2f814, 15856, UNICODE_NOT_PRESENT_OFFSET }, 27588 { 0x2f815, 15603, UNICODE_NOT_PRESENT_OFFSET }, 27589 { 0x2f816, 15860, UNICODE_NOT_PRESENT_OFFSET }, 27590 { 0x2f817, 15865, UNICODE_NOT_PRESENT_OFFSET }, 27591 { 0x2f818, 15869, UNICODE_NOT_PRESENT_OFFSET }, 27592 { 0x2f819, 15873, UNICODE_NOT_PRESENT_OFFSET }, 27593 { 0x2f81a, 15877, UNICODE_NOT_PRESENT_OFFSET }, 27594 { 0x2f81b, 12220, UNICODE_NOT_PRESENT_OFFSET }, 27595 { 0x2f81c, 15881, UNICODE_NOT_PRESENT_OFFSET }, 27596 { 0x2f81d, 6245, UNICODE_NOT_PRESENT_OFFSET }, 27597 { 0x2f81e, 15886, UNICODE_NOT_PRESENT_OFFSET }, 27598 { 0x2f81f, 15890, UNICODE_NOT_PRESENT_OFFSET }, 27599 { 0x2f820, 15894, UNICODE_NOT_PRESENT_OFFSET }, 27600 { 0x2f821, 15898, UNICODE_NOT_PRESENT_OFFSET }, 27601 { 0x2f822, 15675, UNICODE_NOT_PRESENT_OFFSET }, 27602 { 0x2f823, 15902, UNICODE_NOT_PRESENT_OFFSET }, 27603 { 0x2f824, 15906, UNICODE_NOT_PRESENT_OFFSET }, 27604 { 0x2f825, 12240, UNICODE_NOT_PRESENT_OFFSET }, 27605 { 0x2f826, 12003, UNICODE_NOT_PRESENT_OFFSET }, 27606 { 0x2f827, 12007, UNICODE_NOT_PRESENT_OFFSET }, 27607 { 0x2f828, 12244, UNICODE_NOT_PRESENT_OFFSET }, 27608 { 0x2f829, 15910, UNICODE_NOT_PRESENT_OFFSET }, 27609 { 0x2f82a, 15914, UNICODE_NOT_PRESENT_OFFSET }, 27610 { 0x2f82b, 11275, UNICODE_NOT_PRESENT_OFFSET }, 27611 { 0x2f82c, 15918, UNICODE_NOT_PRESENT_OFFSET }, 27612 { 0x2f82d, 12011, UNICODE_NOT_PRESENT_OFFSET }, 27613 { 0x2f82e, 15922, UNICODE_NOT_PRESENT_OFFSET }, 27614 { 0x2f82f, 15926, UNICODE_NOT_PRESENT_OFFSET }, 27615 { 0x2f830, 15930, UNICODE_NOT_PRESENT_OFFSET }, 27616 { 0x2f831, 15934, UNICODE_NOT_PRESENT_OFFSET }, 27617 { 0x2f832, 15934, UNICODE_NOT_PRESENT_OFFSET }, 27618 { 0x2f833, 15934, UNICODE_NOT_PRESENT_OFFSET }, 27619 { 0x2f834, 15938, UNICODE_NOT_PRESENT_OFFSET }, 27620 { 0x2f835, 15943, UNICODE_NOT_PRESENT_OFFSET }, 27621 { 0x2f836, 15947, UNICODE_NOT_PRESENT_OFFSET }, 27622 { 0x2f837, 15951, UNICODE_NOT_PRESENT_OFFSET }, 27623 { 0x2f838, 15955, UNICODE_NOT_PRESENT_OFFSET }, 27624 { 0x2f839, 15960, UNICODE_NOT_PRESENT_OFFSET }, 27625 { 0x2f83a, 15964, UNICODE_NOT_PRESENT_OFFSET }, 27626 { 0x2f83b, 15968, UNICODE_NOT_PRESENT_OFFSET }, 27627 { 0x2f83c, 15972, UNICODE_NOT_PRESENT_OFFSET }, 27628 { 0x2f83d, 15976, UNICODE_NOT_PRESENT_OFFSET }, 27629 { 0x2f83e, 15980, UNICODE_NOT_PRESENT_OFFSET }, 27630 { 0x2f83f, 15984, UNICODE_NOT_PRESENT_OFFSET }, 27631 { 0x2f840, 15988, UNICODE_NOT_PRESENT_OFFSET }, 27632 { 0x2f841, 15992, UNICODE_NOT_PRESENT_OFFSET }, 27633 { 0x2f842, 15996, UNICODE_NOT_PRESENT_OFFSET }, 27634 { 0x2f843, 16000, UNICODE_NOT_PRESENT_OFFSET }, 27635 { 0x2f844, 16004, UNICODE_NOT_PRESENT_OFFSET }, 27636 { 0x2f845, 16008, UNICODE_NOT_PRESENT_OFFSET }, 27637 { 0x2f846, 16008, UNICODE_NOT_PRESENT_OFFSET }, 27638 { 0x2f847, 12252, UNICODE_NOT_PRESENT_OFFSET }, 27639 { 0x2f848, 16012, UNICODE_NOT_PRESENT_OFFSET }, 27640 { 0x2f849, 16016, UNICODE_NOT_PRESENT_OFFSET }, 27641 { 0x2f84a, 16020, UNICODE_NOT_PRESENT_OFFSET }, 27642 { 0x2f84b, 16024, UNICODE_NOT_PRESENT_OFFSET }, 27643 { 0x2f84c, 12019, UNICODE_NOT_PRESENT_OFFSET }, 27644 { 0x2f84d, 16028, UNICODE_NOT_PRESENT_OFFSET }, 27645 { 0x2f84e, 16032, UNICODE_NOT_PRESENT_OFFSET }, 27646 { 0x2f84f, 16036, UNICODE_NOT_PRESENT_OFFSET }, 27647 { 0x2f850, 11859, UNICODE_NOT_PRESENT_OFFSET }, 27648 { 0x2f851, 16040, UNICODE_NOT_PRESENT_OFFSET }, 27649 { 0x2f852, 16044, UNICODE_NOT_PRESENT_OFFSET }, 27650 { 0x2f853, 16048, UNICODE_NOT_PRESENT_OFFSET }, 27651 { 0x2f854, 16052, UNICODE_NOT_PRESENT_OFFSET }, 27652 { 0x2f855, 16056, UNICODE_NOT_PRESENT_OFFSET }, 27653 { 0x2f856, 16060, UNICODE_NOT_PRESENT_OFFSET }, 27654 { 0x2f857, 16064, UNICODE_NOT_PRESENT_OFFSET }, 27655 { 0x2f858, 16068, UNICODE_NOT_PRESENT_OFFSET }, 27656 { 0x2f859, 16072, UNICODE_NOT_PRESENT_OFFSET }, 27657 { 0x2f85a, 16077, UNICODE_NOT_PRESENT_OFFSET }, 27658 { 0x2f85b, 16081, UNICODE_NOT_PRESENT_OFFSET }, 27659 { 0x2f85c, 16085, UNICODE_NOT_PRESENT_OFFSET }, 27660 { 0x2f85d, 15575, UNICODE_NOT_PRESENT_OFFSET }, 27661 { 0x2f85e, 16089, UNICODE_NOT_PRESENT_OFFSET }, 27662 { 0x2f85f, 16093, UNICODE_NOT_PRESENT_OFFSET }, 27663 { 0x2f860, 16097, UNICODE_NOT_PRESENT_OFFSET }, 27664 { 0x2f861, 16102, UNICODE_NOT_PRESENT_OFFSET }, 27665 { 0x2f862, 16107, UNICODE_NOT_PRESENT_OFFSET }, 27666 { 0x2f863, 16111, UNICODE_NOT_PRESENT_OFFSET }, 27667 { 0x2f864, 16115, UNICODE_NOT_PRESENT_OFFSET }, 27668 { 0x2f865, 16119, UNICODE_NOT_PRESENT_OFFSET }, 27669 { 0x2f866, 16123, UNICODE_NOT_PRESENT_OFFSET }, 27670 { 0x2f867, 16127, UNICODE_NOT_PRESENT_OFFSET }, 27671 { 0x2f868, 16131, UNICODE_NOT_PRESENT_OFFSET }, 27672 { 0x2f869, 16135, UNICODE_NOT_PRESENT_OFFSET }, 27673 { 0x2f86a, 16139, UNICODE_NOT_PRESENT_OFFSET }, 27674 { 0x2f86b, 16139, UNICODE_NOT_PRESENT_OFFSET }, 27675 { 0x2f86c, 16143, UNICODE_NOT_PRESENT_OFFSET }, 27676 { 0x2f86d, 16148, UNICODE_NOT_PRESENT_OFFSET }, 27677 { 0x2f86e, 16152, UNICODE_NOT_PRESENT_OFFSET }, 27678 { 0x2f86f, 11259, UNICODE_NOT_PRESENT_OFFSET }, 27679 { 0x2f870, 16156, UNICODE_NOT_PRESENT_OFFSET }, 27680 { 0x2f871, 16160, UNICODE_NOT_PRESENT_OFFSET }, 27681 { 0x2f872, 16165, UNICODE_NOT_PRESENT_OFFSET }, 27682 { 0x2f873, 16169, UNICODE_NOT_PRESENT_OFFSET }, 27683 { 0x2f874, 16173, UNICODE_NOT_PRESENT_OFFSET }, 27684 { 0x2f875, 6349, UNICODE_NOT_PRESENT_OFFSET }, 27685 { 0x2f876, 16177, UNICODE_NOT_PRESENT_OFFSET }, 27686 { 0x2f877, 16181, UNICODE_NOT_PRESENT_OFFSET }, 27687 { 0x2f878, 6357, UNICODE_NOT_PRESENT_OFFSET }, 27688 { 0x2f879, 16185, UNICODE_NOT_PRESENT_OFFSET }, 27689 { 0x2f87a, 16189, UNICODE_NOT_PRESENT_OFFSET }, 27690 { 0x2f87b, 16193, UNICODE_NOT_PRESENT_OFFSET }, 27691 { 0x2f87c, 16198, UNICODE_NOT_PRESENT_OFFSET }, 27692 { 0x2f87d, 16202, UNICODE_NOT_PRESENT_OFFSET }, 27693 { 0x2f87e, 16207, UNICODE_NOT_PRESENT_OFFSET }, 27694 { 0x2f87f, 16211, UNICODE_NOT_PRESENT_OFFSET }, 27695 { 0x2f880, 16215, UNICODE_NOT_PRESENT_OFFSET }, 27696 { 0x2f881, 16219, UNICODE_NOT_PRESENT_OFFSET }, 27697 { 0x2f882, 16223, UNICODE_NOT_PRESENT_OFFSET }, 27698 { 0x2f883, 16227, UNICODE_NOT_PRESENT_OFFSET }, 27699 { 0x2f884, 16231, UNICODE_NOT_PRESENT_OFFSET }, 27700 { 0x2f885, 16235, UNICODE_NOT_PRESENT_OFFSET }, 27701 { 0x2f886, 16239, UNICODE_NOT_PRESENT_OFFSET }, 27702 { 0x2f887, 16243, UNICODE_NOT_PRESENT_OFFSET }, 27703 { 0x2f888, 16247, UNICODE_NOT_PRESENT_OFFSET }, 27704 { 0x2f889, 16251, UNICODE_NOT_PRESENT_OFFSET }, 27705 { 0x2f88a, 16256, UNICODE_NOT_PRESENT_OFFSET }, 27706 { 0x2f88b, 16260, UNICODE_NOT_PRESENT_OFFSET }, 27707 { 0x2f88c, 16264, UNICODE_NOT_PRESENT_OFFSET }, 27708 { 0x2f88d, 16268, UNICODE_NOT_PRESENT_OFFSET }, 27709 { 0x2f88e, 11051, UNICODE_NOT_PRESENT_OFFSET }, 27710 { 0x2f88f, 16272, UNICODE_NOT_PRESENT_OFFSET }, 27711 { 0x2f890, 6397, UNICODE_NOT_PRESENT_OFFSET }, 27712 { 0x2f891, 16277, UNICODE_NOT_PRESENT_OFFSET }, 27713 { 0x2f892, 16277, UNICODE_NOT_PRESENT_OFFSET }, 27714 { 0x2f893, 16282, UNICODE_NOT_PRESENT_OFFSET }, 27715 { 0x2f894, 16286, UNICODE_NOT_PRESENT_OFFSET }, 27716 { 0x2f895, 16286, UNICODE_NOT_PRESENT_OFFSET }, 27717 { 0x2f896, 16290, UNICODE_NOT_PRESENT_OFFSET }, 27718 { 0x2f897, 16294, UNICODE_NOT_PRESENT_OFFSET }, 27719 { 0x2f898, 16299, UNICODE_NOT_PRESENT_OFFSET }, 27720 { 0x2f899, 16304, UNICODE_NOT_PRESENT_OFFSET }, 27721 { 0x2f89a, 16308, UNICODE_NOT_PRESENT_OFFSET }, 27722 { 0x2f89b, 16312, UNICODE_NOT_PRESENT_OFFSET }, 27723 { 0x2f89c, 16316, UNICODE_NOT_PRESENT_OFFSET }, 27724 { 0x2f89d, 16320, UNICODE_NOT_PRESENT_OFFSET }, 27725 { 0x2f89e, 16324, UNICODE_NOT_PRESENT_OFFSET }, 27726 { 0x2f89f, 16328, UNICODE_NOT_PRESENT_OFFSET }, 27727 { 0x2f8a0, 16332, UNICODE_NOT_PRESENT_OFFSET }, 27728 { 0x2f8a1, 16336, UNICODE_NOT_PRESENT_OFFSET }, 27729 { 0x2f8a2, 16340, UNICODE_NOT_PRESENT_OFFSET }, 27730 { 0x2f8a3, 12039, UNICODE_NOT_PRESENT_OFFSET }, 27731 { 0x2f8a4, 16344, UNICODE_NOT_PRESENT_OFFSET }, 27732 { 0x2f8a5, 16349, UNICODE_NOT_PRESENT_OFFSET }, 27733 { 0x2f8a6, 16353, UNICODE_NOT_PRESENT_OFFSET }, 27734 { 0x2f8a7, 16357, UNICODE_NOT_PRESENT_OFFSET }, 27735 { 0x2f8a8, 12300, UNICODE_NOT_PRESENT_OFFSET }, 27736 { 0x2f8a9, 16357, UNICODE_NOT_PRESENT_OFFSET }, 27737 { 0x2f8aa, 16361, UNICODE_NOT_PRESENT_OFFSET }, 27738 { 0x2f8ab, 12047, UNICODE_NOT_PRESENT_OFFSET }, 27739 { 0x2f8ac, 16365, UNICODE_NOT_PRESENT_OFFSET }, 27740 { 0x2f8ad, 16369, UNICODE_NOT_PRESENT_OFFSET }, 27741 { 0x2f8ae, 16373, UNICODE_NOT_PRESENT_OFFSET }, 27742 { 0x2f8af, 16377, UNICODE_NOT_PRESENT_OFFSET }, 27743 { 0x2f8b0, 12051, UNICODE_NOT_PRESENT_OFFSET }, 27744 { 0x2f8b1, 10943, UNICODE_NOT_PRESENT_OFFSET }, 27745 { 0x2f8b2, 16381, UNICODE_NOT_PRESENT_OFFSET }, 27746 { 0x2f8b3, 16385, UNICODE_NOT_PRESENT_OFFSET }, 27747 { 0x2f8b4, 16389, UNICODE_NOT_PRESENT_OFFSET }, 27748 { 0x2f8b5, 16393, UNICODE_NOT_PRESENT_OFFSET }, 27749 { 0x2f8b6, 16397, UNICODE_NOT_PRESENT_OFFSET }, 27750 { 0x2f8b7, 16401, UNICODE_NOT_PRESENT_OFFSET }, 27751 { 0x2f8b8, 16405, UNICODE_NOT_PRESENT_OFFSET }, 27752 { 0x2f8b9, 16410, UNICODE_NOT_PRESENT_OFFSET }, 27753 { 0x2f8ba, 16414, UNICODE_NOT_PRESENT_OFFSET }, 27754 { 0x2f8bb, 16418, UNICODE_NOT_PRESENT_OFFSET }, 27755 { 0x2f8bc, 16422, UNICODE_NOT_PRESENT_OFFSET }, 27756 { 0x2f8bd, 16426, UNICODE_NOT_PRESENT_OFFSET }, 27757 { 0x2f8be, 16430, UNICODE_NOT_PRESENT_OFFSET }, 27758 { 0x2f8bf, 16435, UNICODE_NOT_PRESENT_OFFSET }, 27759 { 0x2f8c0, 16439, UNICODE_NOT_PRESENT_OFFSET }, 27760 { 0x2f8c1, 16443, UNICODE_NOT_PRESENT_OFFSET }, 27761 { 0x2f8c2, 16447, UNICODE_NOT_PRESENT_OFFSET }, 27762 { 0x2f8c3, 16451, UNICODE_NOT_PRESENT_OFFSET }, 27763 { 0x2f8c4, 16455, UNICODE_NOT_PRESENT_OFFSET }, 27764 { 0x2f8c5, 16459, UNICODE_NOT_PRESENT_OFFSET }, 27765 { 0x2f8c6, 16463, UNICODE_NOT_PRESENT_OFFSET }, 27766 { 0x2f8c7, 16467, UNICODE_NOT_PRESENT_OFFSET }, 27767 { 0x2f8c8, 12055, UNICODE_NOT_PRESENT_OFFSET }, 27768 { 0x2f8c9, 16471, UNICODE_NOT_PRESENT_OFFSET }, 27769 { 0x2f8ca, 16475, UNICODE_NOT_PRESENT_OFFSET }, 27770 { 0x2f8cb, 16480, UNICODE_NOT_PRESENT_OFFSET }, 27771 { 0x2f8cc, 16484, UNICODE_NOT_PRESENT_OFFSET }, 27772 { 0x2f8cd, 16488, UNICODE_NOT_PRESENT_OFFSET }, 27773 { 0x2f8ce, 16492, UNICODE_NOT_PRESENT_OFFSET }, 27774 { 0x2f8cf, 12063, UNICODE_NOT_PRESENT_OFFSET }, 27775 { 0x2f8d0, 16496, UNICODE_NOT_PRESENT_OFFSET }, 27776 { 0x2f8d1, 16500, UNICODE_NOT_PRESENT_OFFSET }, 27777 { 0x2f8d2, 16504, UNICODE_NOT_PRESENT_OFFSET }, 27778 { 0x2f8d3, 16508, UNICODE_NOT_PRESENT_OFFSET }, 27779 { 0x2f8d4, 16512, UNICODE_NOT_PRESENT_OFFSET }, 27780 { 0x2f8d5, 16516, UNICODE_NOT_PRESENT_OFFSET }, 27781 { 0x2f8d6, 16520, UNICODE_NOT_PRESENT_OFFSET }, 27782 { 0x2f8d7, 16524, UNICODE_NOT_PRESENT_OFFSET }, 27783 { 0x2f8d8, 11055, UNICODE_NOT_PRESENT_OFFSET }, 27784 { 0x2f8d9, 12332, UNICODE_NOT_PRESENT_OFFSET }, 27785 { 0x2f8da, 16528, UNICODE_NOT_PRESENT_OFFSET }, 27786 { 0x2f8db, 16532, UNICODE_NOT_PRESENT_OFFSET }, 27787 { 0x2f8dc, 16536, UNICODE_NOT_PRESENT_OFFSET }, 27788 { 0x2f8dd, 16540, UNICODE_NOT_PRESENT_OFFSET }, 27789 { 0x2f8de, 16545, UNICODE_NOT_PRESENT_OFFSET }, 27790 { 0x2f8df, 16549, UNICODE_NOT_PRESENT_OFFSET }, 27791 { 0x2f8e0, 16553, UNICODE_NOT_PRESENT_OFFSET }, 27792 { 0x2f8e1, 16557, UNICODE_NOT_PRESENT_OFFSET }, 27793 { 0x2f8e2, 12067, UNICODE_NOT_PRESENT_OFFSET }, 27794 { 0x2f8e3, 16561, UNICODE_NOT_PRESENT_OFFSET }, 27795 { 0x2f8e4, 16566, UNICODE_NOT_PRESENT_OFFSET }, 27796 { 0x2f8e5, 16570, UNICODE_NOT_PRESENT_OFFSET }, 27797 { 0x2f8e6, 16574, UNICODE_NOT_PRESENT_OFFSET }, 27798 { 0x2f8e7, 12503, UNICODE_NOT_PRESENT_OFFSET }, 27799 { 0x2f8e8, 16578, UNICODE_NOT_PRESENT_OFFSET }, 27800 { 0x2f8e9, 16582, UNICODE_NOT_PRESENT_OFFSET }, 27801 { 0x2f8ea, 16586, UNICODE_NOT_PRESENT_OFFSET }, 27802 { 0x2f8eb, 16590, UNICODE_NOT_PRESENT_OFFSET }, 27803 { 0x2f8ec, 16594, UNICODE_NOT_PRESENT_OFFSET }, 27804 { 0x2f8ed, 16599, UNICODE_NOT_PRESENT_OFFSET }, 27805 { 0x2f8ee, 16603, UNICODE_NOT_PRESENT_OFFSET }, 27806 { 0x2f8ef, 16607, UNICODE_NOT_PRESENT_OFFSET }, 27807 { 0x2f8f0, 16611, UNICODE_NOT_PRESENT_OFFSET }, 27808 { 0x2f8f1, 16616, UNICODE_NOT_PRESENT_OFFSET }, 27809 { 0x2f8f2, 16620, UNICODE_NOT_PRESENT_OFFSET }, 27810 { 0x2f8f3, 16624, UNICODE_NOT_PRESENT_OFFSET }, 27811 { 0x2f8f4, 16628, UNICODE_NOT_PRESENT_OFFSET }, 27812 { 0x2f8f5, 11327, UNICODE_NOT_PRESENT_OFFSET }, 27813 { 0x2f8f6, 16632, UNICODE_NOT_PRESENT_OFFSET }, 27814 { 0x2f8f7, 16636, UNICODE_NOT_PRESENT_OFFSET }, 27815 { 0x2f8f8, 16641, UNICODE_NOT_PRESENT_OFFSET }, 27816 { 0x2f8f9, 16646, UNICODE_NOT_PRESENT_OFFSET }, 27817 { 0x2f8fa, 16651, UNICODE_NOT_PRESENT_OFFSET }, 27818 { 0x2f8fb, 16655, UNICODE_NOT_PRESENT_OFFSET }, 27819 { 0x2f8fc, 16660, UNICODE_NOT_PRESENT_OFFSET }, 27820 { 0x2f8fd, 16664, UNICODE_NOT_PRESENT_OFFSET }, 27821 { 0x2f8fe, 16668, UNICODE_NOT_PRESENT_OFFSET }, 27822 { 0x2f8ff, 16672, UNICODE_NOT_PRESENT_OFFSET }, 27823 { 0x2f900, 16676, UNICODE_NOT_PRESENT_OFFSET }, 27824 { 0x2f901, 12071, UNICODE_NOT_PRESENT_OFFSET }, 27825 { 0x2f902, 11659, UNICODE_NOT_PRESENT_OFFSET }, 27826 { 0x2f903, 16680, UNICODE_NOT_PRESENT_OFFSET }, 27827 { 0x2f904, 16684, UNICODE_NOT_PRESENT_OFFSET }, 27828 { 0x2f905, 16688, UNICODE_NOT_PRESENT_OFFSET }, 27829 { 0x2f906, 16692, UNICODE_NOT_PRESENT_OFFSET }, 27830 { 0x2f907, 16697, UNICODE_NOT_PRESENT_OFFSET }, 27831 { 0x2f908, 16701, UNICODE_NOT_PRESENT_OFFSET }, 27832 { 0x2f909, 16705, UNICODE_NOT_PRESENT_OFFSET }, 27833 { 0x2f90a, 16709, UNICODE_NOT_PRESENT_OFFSET }, 27834 { 0x2f90b, 12344, UNICODE_NOT_PRESENT_OFFSET }, 27835 { 0x2f90c, 16713, UNICODE_NOT_PRESENT_OFFSET }, 27836 { 0x2f90d, 16717, UNICODE_NOT_PRESENT_OFFSET }, 27837 { 0x2f90e, 16722, UNICODE_NOT_PRESENT_OFFSET }, 27838 { 0x2f90f, 16726, UNICODE_NOT_PRESENT_OFFSET }, 27839 { 0x2f910, 16730, UNICODE_NOT_PRESENT_OFFSET }, 27840 { 0x2f911, 16735, UNICODE_NOT_PRESENT_OFFSET }, 27841 { 0x2f912, 16740, UNICODE_NOT_PRESENT_OFFSET }, 27842 { 0x2f913, 16744, UNICODE_NOT_PRESENT_OFFSET }, 27843 { 0x2f914, 12348, UNICODE_NOT_PRESENT_OFFSET }, 27844 { 0x2f915, 16748, UNICODE_NOT_PRESENT_OFFSET }, 27845 { 0x2f916, 16752, UNICODE_NOT_PRESENT_OFFSET }, 27846 { 0x2f917, 16756, UNICODE_NOT_PRESENT_OFFSET }, 27847 { 0x2f918, 16760, UNICODE_NOT_PRESENT_OFFSET }, 27848 { 0x2f919, 16764, UNICODE_NOT_PRESENT_OFFSET }, 27849 { 0x2f91a, 16768, UNICODE_NOT_PRESENT_OFFSET }, 27850 { 0x2f91b, 16772, UNICODE_NOT_PRESENT_OFFSET }, 27851 { 0x2f91c, 16777, UNICODE_NOT_PRESENT_OFFSET }, 27852 { 0x2f91d, 16781, UNICODE_NOT_PRESENT_OFFSET }, 27853 { 0x2f91e, 16786, UNICODE_NOT_PRESENT_OFFSET }, 27854 { 0x2f91f, 16790, UNICODE_NOT_PRESENT_OFFSET }, 27855 { 0x2f920, 16795, UNICODE_NOT_PRESENT_OFFSET }, 27856 { 0x2f921, 12356, UNICODE_NOT_PRESENT_OFFSET }, 27857 { 0x2f922, 16799, UNICODE_NOT_PRESENT_OFFSET }, 27858 { 0x2f923, 16803, UNICODE_NOT_PRESENT_OFFSET }, 27859 { 0x2f924, 16808, UNICODE_NOT_PRESENT_OFFSET }, 27860 { 0x2f925, 16812, UNICODE_NOT_PRESENT_OFFSET }, 27861 { 0x2f926, 16816, UNICODE_NOT_PRESENT_OFFSET }, 27862 { 0x2f927, 16821, UNICODE_NOT_PRESENT_OFFSET }, 27863 { 0x2f928, 16826, UNICODE_NOT_PRESENT_OFFSET }, 27864 { 0x2f929, 16830, UNICODE_NOT_PRESENT_OFFSET }, 27865 { 0x2f92a, 16834, UNICODE_NOT_PRESENT_OFFSET }, 27866 { 0x2f92b, 16838, UNICODE_NOT_PRESENT_OFFSET }, 27867 { 0x2f92c, 16842, UNICODE_NOT_PRESENT_OFFSET }, 27868 { 0x2f92d, 16842, UNICODE_NOT_PRESENT_OFFSET }, 27869 { 0x2f92e, 16846, UNICODE_NOT_PRESENT_OFFSET }, 27870 { 0x2f92f, 16850, UNICODE_NOT_PRESENT_OFFSET }, 27871 { 0x2f930, 12364, UNICODE_NOT_PRESENT_OFFSET }, 27872 { 0x2f931, 16854, UNICODE_NOT_PRESENT_OFFSET }, 27873 { 0x2f932, 16858, UNICODE_NOT_PRESENT_OFFSET }, 27874 { 0x2f933, 16862, UNICODE_NOT_PRESENT_OFFSET }, 27875 { 0x2f934, 16866, UNICODE_NOT_PRESENT_OFFSET }, 27876 { 0x2f935, 16870, UNICODE_NOT_PRESENT_OFFSET }, 27877 { 0x2f936, 16875, UNICODE_NOT_PRESENT_OFFSET }, 27878 { 0x2f937, 16879, UNICODE_NOT_PRESENT_OFFSET }, 27879 { 0x2f938, 11271, UNICODE_NOT_PRESENT_OFFSET }, 27880 { 0x2f939, 16884, UNICODE_NOT_PRESENT_OFFSET }, 27881 { 0x2f93a, 16889, UNICODE_NOT_PRESENT_OFFSET }, 27882 { 0x2f93b, 16893, UNICODE_NOT_PRESENT_OFFSET }, 27883 { 0x2f93c, 16898, UNICODE_NOT_PRESENT_OFFSET }, 27884 { 0x2f93d, 16903, UNICODE_NOT_PRESENT_OFFSET }, 27885 { 0x2f93e, 16908, UNICODE_NOT_PRESENT_OFFSET }, 27886 { 0x2f93f, 16912, UNICODE_NOT_PRESENT_OFFSET }, 27887 { 0x2f940, 12388, UNICODE_NOT_PRESENT_OFFSET }, 27888 { 0x2f941, 16916, UNICODE_NOT_PRESENT_OFFSET }, 27889 { 0x2f942, 16921, UNICODE_NOT_PRESENT_OFFSET }, 27890 { 0x2f943, 16926, UNICODE_NOT_PRESENT_OFFSET }, 27891 { 0x2f944, 16931, UNICODE_NOT_PRESENT_OFFSET }, 27892 { 0x2f945, 16936, UNICODE_NOT_PRESENT_OFFSET }, 27893 { 0x2f946, 16940, UNICODE_NOT_PRESENT_OFFSET }, 27894 { 0x2f947, 16940, UNICODE_NOT_PRESENT_OFFSET }, 27895 { 0x2f948, 12392, UNICODE_NOT_PRESENT_OFFSET }, 27896 { 0x2f949, 12511, UNICODE_NOT_PRESENT_OFFSET }, 27897 { 0x2f94a, 16944, UNICODE_NOT_PRESENT_OFFSET }, 27898 { 0x2f94b, 16948, UNICODE_NOT_PRESENT_OFFSET }, 27899 { 0x2f94c, 16952, UNICODE_NOT_PRESENT_OFFSET }, 27900 { 0x2f94d, 16956, UNICODE_NOT_PRESENT_OFFSET }, 27901 { 0x2f94e, 16961, UNICODE_NOT_PRESENT_OFFSET }, 27902 { 0x2f94f, 11123, UNICODE_NOT_PRESENT_OFFSET }, 27903 { 0x2f950, 12400, UNICODE_NOT_PRESENT_OFFSET }, 27904 { 0x2f951, 16965, UNICODE_NOT_PRESENT_OFFSET }, 27905 { 0x2f952, 16969, UNICODE_NOT_PRESENT_OFFSET }, 27906 { 0x2f953, 12111, UNICODE_NOT_PRESENT_OFFSET }, 27907 { 0x2f954, 16974, UNICODE_NOT_PRESENT_OFFSET }, 27908 { 0x2f955, 16979, UNICODE_NOT_PRESENT_OFFSET }, 27909 { 0x2f956, 11939, UNICODE_NOT_PRESENT_OFFSET }, 27910 { 0x2f957, 16984, UNICODE_NOT_PRESENT_OFFSET }, 27911 { 0x2f958, 16988, UNICODE_NOT_PRESENT_OFFSET }, 27912 { 0x2f959, 12123, UNICODE_NOT_PRESENT_OFFSET }, 27913 { 0x2f95a, 16992, UNICODE_NOT_PRESENT_OFFSET }, 27914 { 0x2f95b, 16996, UNICODE_NOT_PRESENT_OFFSET }, 27915 { 0x2f95c, 17000, UNICODE_NOT_PRESENT_OFFSET }, 27916 { 0x2f95d, 17005, UNICODE_NOT_PRESENT_OFFSET }, 27917 { 0x2f95e, 17005, UNICODE_NOT_PRESENT_OFFSET }, 27918 { 0x2f95f, 17010, UNICODE_NOT_PRESENT_OFFSET }, 27919 { 0x2f960, 17014, UNICODE_NOT_PRESENT_OFFSET }, 27920 { 0x2f961, 17018, UNICODE_NOT_PRESENT_OFFSET }, 27921 { 0x2f962, 17023, UNICODE_NOT_PRESENT_OFFSET }, 27922 { 0x2f963, 17027, UNICODE_NOT_PRESENT_OFFSET }, 27923 { 0x2f964, 17031, UNICODE_NOT_PRESENT_OFFSET }, 27924 { 0x2f965, 17035, UNICODE_NOT_PRESENT_OFFSET }, 27925 { 0x2f966, 17040, UNICODE_NOT_PRESENT_OFFSET }, 27926 { 0x2f967, 17044, UNICODE_NOT_PRESENT_OFFSET }, 27927 { 0x2f968, 17048, UNICODE_NOT_PRESENT_OFFSET }, 27928 { 0x2f969, 17052, UNICODE_NOT_PRESENT_OFFSET }, 27929 { 0x2f96a, 17056, UNICODE_NOT_PRESENT_OFFSET }, 27930 { 0x2f96b, 17060, UNICODE_NOT_PRESENT_OFFSET }, 27931 { 0x2f96c, 17065, UNICODE_NOT_PRESENT_OFFSET }, 27932 { 0x2f96d, 17069, UNICODE_NOT_PRESENT_OFFSET }, 27933 { 0x2f96e, 17073, UNICODE_NOT_PRESENT_OFFSET }, 27934 { 0x2f96f, 17077, UNICODE_NOT_PRESENT_OFFSET }, 27935 { 0x2f970, 17081, UNICODE_NOT_PRESENT_OFFSET }, 27936 { 0x2f971, 17085, UNICODE_NOT_PRESENT_OFFSET }, 27937 { 0x2f972, 17089, UNICODE_NOT_PRESENT_OFFSET }, 27938 { 0x2f973, 17094, UNICODE_NOT_PRESENT_OFFSET }, 27939 { 0x2f974, 17099, UNICODE_NOT_PRESENT_OFFSET }, 27940 { 0x2f975, 17103, UNICODE_NOT_PRESENT_OFFSET }, 27941 { 0x2f976, 17108, UNICODE_NOT_PRESENT_OFFSET }, 27942 { 0x2f977, 17112, UNICODE_NOT_PRESENT_OFFSET }, 27943 { 0x2f978, 17117, UNICODE_NOT_PRESENT_OFFSET }, 27944 { 0x2f979, 17121, UNICODE_NOT_PRESENT_OFFSET }, 27945 { 0x2f97a, 12147, UNICODE_NOT_PRESENT_OFFSET }, 27946 { 0x2f97b, 17125, UNICODE_NOT_PRESENT_OFFSET }, 27947 { 0x2f97c, 17130, UNICODE_NOT_PRESENT_OFFSET }, 27948 { 0x2f97d, 17135, UNICODE_NOT_PRESENT_OFFSET }, 27949 { 0x2f97e, 17139, UNICODE_NOT_PRESENT_OFFSET }, 27950 { 0x2f97f, 17144, UNICODE_NOT_PRESENT_OFFSET }, 27951 { 0x2f980, 17148, UNICODE_NOT_PRESENT_OFFSET }, 27952 { 0x2f981, 17153, UNICODE_NOT_PRESENT_OFFSET }, 27953 { 0x2f982, 17157, UNICODE_NOT_PRESENT_OFFSET }, 27954 { 0x2f983, 17161, UNICODE_NOT_PRESENT_OFFSET }, 27955 { 0x2f984, 17165, UNICODE_NOT_PRESENT_OFFSET }, 27956 { 0x2f985, 17169, UNICODE_NOT_PRESENT_OFFSET }, 27957 { 0x2f986, 17173, UNICODE_NOT_PRESENT_OFFSET }, 27958 { 0x2f987, 17177, UNICODE_NOT_PRESENT_OFFSET }, 27959 { 0x2f988, 17182, UNICODE_NOT_PRESENT_OFFSET }, 27960 { 0x2f989, 17187, UNICODE_NOT_PRESENT_OFFSET }, 27961 { 0x2f98a, 17192, UNICODE_NOT_PRESENT_OFFSET }, 27962 { 0x2f98b, 16282, UNICODE_NOT_PRESENT_OFFSET }, 27963 { 0x2f98c, 17197, UNICODE_NOT_PRESENT_OFFSET }, 27964 { 0x2f98d, 17201, UNICODE_NOT_PRESENT_OFFSET }, 27965 { 0x2f98e, 17205, UNICODE_NOT_PRESENT_OFFSET }, 27966 { 0x2f98f, 17209, UNICODE_NOT_PRESENT_OFFSET }, 27967 { 0x2f990, 17213, UNICODE_NOT_PRESENT_OFFSET }, 27968 { 0x2f991, 17217, UNICODE_NOT_PRESENT_OFFSET }, 27969 { 0x2f992, 17221, UNICODE_NOT_PRESENT_OFFSET }, 27970 { 0x2f993, 17225, UNICODE_NOT_PRESENT_OFFSET }, 27971 { 0x2f994, 17229, UNICODE_NOT_PRESENT_OFFSET }, 27972 { 0x2f995, 17233, UNICODE_NOT_PRESENT_OFFSET }, 27973 { 0x2f996, 17237, UNICODE_NOT_PRESENT_OFFSET }, 27974 { 0x2f997, 17241, UNICODE_NOT_PRESENT_OFFSET }, 27975 { 0x2f998, 11339, UNICODE_NOT_PRESENT_OFFSET }, 27976 { 0x2f999, 17246, UNICODE_NOT_PRESENT_OFFSET }, 27977 { 0x2f99a, 17250, UNICODE_NOT_PRESENT_OFFSET }, 27978 { 0x2f99b, 17254, UNICODE_NOT_PRESENT_OFFSET }, 27979 { 0x2f99c, 17258, UNICODE_NOT_PRESENT_OFFSET }, 27980 { 0x2f99d, 17262, UNICODE_NOT_PRESENT_OFFSET }, 27981 { 0x2f99e, 17266, UNICODE_NOT_PRESENT_OFFSET }, 27982 { 0x2f99f, 12159, UNICODE_NOT_PRESENT_OFFSET }, 27983 { 0x2f9a0, 17270, UNICODE_NOT_PRESENT_OFFSET }, 27984 { 0x2f9a1, 17274, UNICODE_NOT_PRESENT_OFFSET }, 27985 { 0x2f9a2, 17278, UNICODE_NOT_PRESENT_OFFSET }, 27986 { 0x2f9a3, 17282, UNICODE_NOT_PRESENT_OFFSET }, 27987 { 0x2f9a4, 17286, UNICODE_NOT_PRESENT_OFFSET }, 27988 { 0x2f9a5, 17291, UNICODE_NOT_PRESENT_OFFSET }, 27989 { 0x2f9a6, 17296, UNICODE_NOT_PRESENT_OFFSET }, 27990 { 0x2f9a7, 17301, UNICODE_NOT_PRESENT_OFFSET }, 27991 { 0x2f9a8, 17305, UNICODE_NOT_PRESENT_OFFSET }, 27992 { 0x2f9a9, 17309, UNICODE_NOT_PRESENT_OFFSET }, 27993 { 0x2f9aa, 17313, UNICODE_NOT_PRESENT_OFFSET }, 27994 { 0x2f9ab, 17317, UNICODE_NOT_PRESENT_OFFSET }, 27995 { 0x2f9ac, 17322, UNICODE_NOT_PRESENT_OFFSET }, 27996 { 0x2f9ad, 17326, UNICODE_NOT_PRESENT_OFFSET }, 27997 { 0x2f9ae, 17331, UNICODE_NOT_PRESENT_OFFSET }, 27998 { 0x2f9af, 17335, UNICODE_NOT_PRESENT_OFFSET }, 27999 { 0x2f9b0, 17339, UNICODE_NOT_PRESENT_OFFSET }, 28000 { 0x2f9b1, 17344, UNICODE_NOT_PRESENT_OFFSET }, 28001 { 0x2f9b2, 17349, UNICODE_NOT_PRESENT_OFFSET }, 28002 { 0x2f9b3, 17353, UNICODE_NOT_PRESENT_OFFSET }, 28003 { 0x2f9b4, 11103, UNICODE_NOT_PRESENT_OFFSET }, 28004 { 0x2f9b5, 17357, UNICODE_NOT_PRESENT_OFFSET }, 28005 { 0x2f9b6, 17361, UNICODE_NOT_PRESENT_OFFSET }, 28006 { 0x2f9b7, 17365, UNICODE_NOT_PRESENT_OFFSET }, 28007 { 0x2f9b8, 17369, UNICODE_NOT_PRESENT_OFFSET }, 28008 { 0x2f9b9, 17373, UNICODE_NOT_PRESENT_OFFSET }, 28009 { 0x2f9ba, 17377, UNICODE_NOT_PRESENT_OFFSET }, 28010 { 0x2f9bb, 12428, UNICODE_NOT_PRESENT_OFFSET }, 28011 { 0x2f9bc, 17381, UNICODE_NOT_PRESENT_OFFSET }, 28012 { 0x2f9bd, 17385, UNICODE_NOT_PRESENT_OFFSET }, 28013 { 0x2f9be, 17389, UNICODE_NOT_PRESENT_OFFSET }, 28014 { 0x2f9bf, 17393, UNICODE_NOT_PRESENT_OFFSET }, 28015 { 0x2f9c0, 17397, UNICODE_NOT_PRESENT_OFFSET }, 28016 { 0x2f9c1, 17401, UNICODE_NOT_PRESENT_OFFSET }, 28017 { 0x2f9c2, 17405, UNICODE_NOT_PRESENT_OFFSET }, 28018 { 0x2f9c3, 17409, UNICODE_NOT_PRESENT_OFFSET }, 28019 { 0x2f9c4, 6757, UNICODE_NOT_PRESENT_OFFSET }, 28020 { 0x2f9c5, 17413, UNICODE_NOT_PRESENT_OFFSET }, 28021 { 0x2f9c6, 17418, UNICODE_NOT_PRESENT_OFFSET }, 28022 { 0x2f9c7, 17422, UNICODE_NOT_PRESENT_OFFSET }, 28023 { 0x2f9c8, 17426, UNICODE_NOT_PRESENT_OFFSET }, 28024 { 0x2f9c9, 17430, UNICODE_NOT_PRESENT_OFFSET }, 28025 { 0x2f9ca, 17434, UNICODE_NOT_PRESENT_OFFSET }, 28026 { 0x2f9cb, 17438, UNICODE_NOT_PRESENT_OFFSET }, 28027 { 0x2f9cc, 17443, UNICODE_NOT_PRESENT_OFFSET }, 28028 { 0x2f9cd, 17448, UNICODE_NOT_PRESENT_OFFSET }, 28029 { 0x2f9ce, 17452, UNICODE_NOT_PRESENT_OFFSET }, 28030 { 0x2f9cf, 17456, UNICODE_NOT_PRESENT_OFFSET }, 28031 { 0x2f9d0, 12448, UNICODE_NOT_PRESENT_OFFSET }, 28032 { 0x2f9d1, 12452, UNICODE_NOT_PRESENT_OFFSET }, 28033 { 0x2f9d2, 6785, UNICODE_NOT_PRESENT_OFFSET }, 28034 { 0x2f9d3, 17460, UNICODE_NOT_PRESENT_OFFSET }, 28035 { 0x2f9d4, 17465, UNICODE_NOT_PRESENT_OFFSET }, 28036 { 0x2f9d5, 17469, UNICODE_NOT_PRESENT_OFFSET }, 28037 { 0x2f9d6, 17473, UNICODE_NOT_PRESENT_OFFSET }, 28038 { 0x2f9d7, 17477, UNICODE_NOT_PRESENT_OFFSET }, 28039 { 0x2f9d8, 17481, UNICODE_NOT_PRESENT_OFFSET }, 28040 { 0x2f9d9, 17486, UNICODE_NOT_PRESENT_OFFSET }, 28041 { 0x2f9da, 17491, UNICODE_NOT_PRESENT_OFFSET }, 28042 { 0x2f9db, 17495, UNICODE_NOT_PRESENT_OFFSET }, 28043 { 0x2f9dc, 17499, UNICODE_NOT_PRESENT_OFFSET }, 28044 { 0x2f9dd, 17503, UNICODE_NOT_PRESENT_OFFSET }, 28045 { 0x2f9de, 17508, UNICODE_NOT_PRESENT_OFFSET }, 28046 { 0x2f9df, 12456, UNICODE_NOT_PRESENT_OFFSET }, 28047 { 0x2f9e0, 17512, UNICODE_NOT_PRESENT_OFFSET }, 28048 { 0x2f9e1, 17517, UNICODE_NOT_PRESENT_OFFSET }, 28049 { 0x2f9e2, 17522, UNICODE_NOT_PRESENT_OFFSET }, 28050 { 0x2f9e3, 17526, UNICODE_NOT_PRESENT_OFFSET }, 28051 { 0x2f9e4, 17530, UNICODE_NOT_PRESENT_OFFSET }, 28052 { 0x2f9e5, 17534, UNICODE_NOT_PRESENT_OFFSET }, 28053 { 0x2f9e6, 17539, UNICODE_NOT_PRESENT_OFFSET }, 28054 { 0x2f9e7, 17543, UNICODE_NOT_PRESENT_OFFSET }, 28055 { 0x2f9e8, 17547, UNICODE_NOT_PRESENT_OFFSET }, 28056 { 0x2f9e9, 17551, UNICODE_NOT_PRESENT_OFFSET }, 28057 { 0x2f9ea, 17555, UNICODE_NOT_PRESENT_OFFSET }, 28058 { 0x2f9eb, 17559, UNICODE_NOT_PRESENT_OFFSET }, 28059 { 0x2f9ec, 17563, UNICODE_NOT_PRESENT_OFFSET }, 28060 { 0x2f9ed, 17567, UNICODE_NOT_PRESENT_OFFSET }, 28061 { 0x2f9ee, 17572, UNICODE_NOT_PRESENT_OFFSET }, 28062 { 0x2f9ef, 17576, UNICODE_NOT_PRESENT_OFFSET }, 28063 { 0x2f9f0, 17580, UNICODE_NOT_PRESENT_OFFSET }, 28064 { 0x2f9f1, 17584, UNICODE_NOT_PRESENT_OFFSET }, 28065 { 0x2f9f2, 17589, UNICODE_NOT_PRESENT_OFFSET }, 28066 { 0x2f9f3, 17593, UNICODE_NOT_PRESENT_OFFSET }, 28067 { 0x2f9f4, 17597, UNICODE_NOT_PRESENT_OFFSET }, 28068 { 0x2f9f5, 17601, UNICODE_NOT_PRESENT_OFFSET }, 28069 { 0x2f9f6, 17605, UNICODE_NOT_PRESENT_OFFSET }, 28070 { 0x2f9f7, 17610, UNICODE_NOT_PRESENT_OFFSET }, 28071 { 0x2f9f8, 17615, UNICODE_NOT_PRESENT_OFFSET }, 28072 { 0x2f9f9, 17619, UNICODE_NOT_PRESENT_OFFSET }, 28073 { 0x2f9fa, 17623, UNICODE_NOT_PRESENT_OFFSET }, 28074 { 0x2f9fb, 17627, UNICODE_NOT_PRESENT_OFFSET }, 28075 { 0x2f9fc, 17632, UNICODE_NOT_PRESENT_OFFSET }, 28076 { 0x2f9fd, 17636, UNICODE_NOT_PRESENT_OFFSET }, 28077 { 0x2f9fe, 12480, UNICODE_NOT_PRESENT_OFFSET }, 28078 { 0x2f9ff, 12480, UNICODE_NOT_PRESENT_OFFSET }, 28079 { 0x2fa00, 17641, UNICODE_NOT_PRESENT_OFFSET }, 28080 { 0x2fa01, 17645, UNICODE_NOT_PRESENT_OFFSET }, 28081 { 0x2fa02, 17650, UNICODE_NOT_PRESENT_OFFSET }, 28082 { 0x2fa03, 17654, UNICODE_NOT_PRESENT_OFFSET }, 28083 { 0x2fa04, 17658, UNICODE_NOT_PRESENT_OFFSET }, 28084 { 0x2fa05, 17662, UNICODE_NOT_PRESENT_OFFSET }, 28085 { 0x2fa06, 17666, UNICODE_NOT_PRESENT_OFFSET }, 28086 { 0x2fa07, 17670, UNICODE_NOT_PRESENT_OFFSET }, 28087 { 0x2fa08, 17674, UNICODE_NOT_PRESENT_OFFSET }, 28088 { 0x2fa09, 17678, UNICODE_NOT_PRESENT_OFFSET }, 28089 { 0x2fa0a, 12484, UNICODE_NOT_PRESENT_OFFSET }, 28090 { 0x2fa0b, 17683, UNICODE_NOT_PRESENT_OFFSET }, 28091 { 0x2fa0c, 17687, UNICODE_NOT_PRESENT_OFFSET }, 28092 { 0x2fa0d, 17691, UNICODE_NOT_PRESENT_OFFSET }, 28093 { 0x2fa0e, 17695, UNICODE_NOT_PRESENT_OFFSET }, 28094 { 0x2fa0f, 17699, UNICODE_NOT_PRESENT_OFFSET }, 28095 { 0x2fa10, 17703, UNICODE_NOT_PRESENT_OFFSET }, 28096 { 0x2fa11, 17708, UNICODE_NOT_PRESENT_OFFSET }, 28097 { 0x2fa12, 17712, UNICODE_NOT_PRESENT_OFFSET }, 28098 { 0x2fa13, 17717, UNICODE_NOT_PRESENT_OFFSET }, 28099 { 0x2fa14, 17722, UNICODE_NOT_PRESENT_OFFSET }, 28100 { 0x2fa15, 6977, UNICODE_NOT_PRESENT_OFFSET }, 28101 { 0x2fa16, 17727, UNICODE_NOT_PRESENT_OFFSET }, 28102 { 0x2fa17, 6993, UNICODE_NOT_PRESENT_OFFSET }, 28103 { 0x2fa18, 17731, UNICODE_NOT_PRESENT_OFFSET }, 28104 { 0x2fa19, 17735, UNICODE_NOT_PRESENT_OFFSET }, 28105 { 0x2fa1a, 17739, UNICODE_NOT_PRESENT_OFFSET }, 28106 { 0x2fa1b, 17743, UNICODE_NOT_PRESENT_OFFSET }, 28107 { 0x2fa1c, 7013, UNICODE_NOT_PRESENT_OFFSET }, 28108 { 0x2fa1d, 17747, UNICODE_NOT_PRESENT_OFFSET } 28109 }; 28110 28111 static const char decomp_expansion_string[] = 28112 "\x20\0" /* offset 0 */ 28113 "\x20\xcc\x88\0" /* offset 2 */ 28114 "\x61\0" /* offset 6 */ 28115 "\x20\xcc\x84\0" /* offset 8 */ 28116 "\x32\0" /* offset 12 */ 28117 "\x33\0" /* offset 14 */ 28118 "\x20\xcc\x81\0" /* offset 16 */ 28119 "\xce\xbc\0" /* offset 20 */ 28120 "\x20\xcc\xa7\0" /* offset 23 */ 28121 "\x31\0" /* offset 27 */ 28122 "\x6f\0" /* offset 29 */ 28123 "\x31\xe2\x81\x84\x34\0" /* offset 31 */ 28124 "\x31\xe2\x81\x84\x32\0" /* offset 37 */ 28125 "\x33\xe2\x81\x84\x34\0" /* offset 43 */ 28126 "\x41\xcc\x80\0" /* offset 49 */ 28127 "\x41\xcc\x81\0" /* offset 53 */ 28128 "\x41\xcc\x82\0" /* offset 57 */ 28129 "\x41\xcc\x83\0" /* offset 61 */ 28130 "\x41\xcc\x88\0" /* offset 65 */ 28131 "\x41\xcc\x8a\0" /* offset 69 */ 28132 "\x43\xcc\xa7\0" /* offset 73 */ 28133 "\x45\xcc\x80\0" /* offset 77 */ 28134 "\x45\xcc\x81\0" /* offset 81 */ 28135 "\x45\xcc\x82\0" /* offset 85 */ 28136 "\x45\xcc\x88\0" /* offset 89 */ 28137 "\x49\xcc\x80\0" /* offset 93 */ 28138 "\x49\xcc\x81\0" /* offset 97 */ 28139 "\x49\xcc\x82\0" /* offset 101 */ 28140 "\x49\xcc\x88\0" /* offset 105 */ 28141 "\x4e\xcc\x83\0" /* offset 109 */ 28142 "\x4f\xcc\x80\0" /* offset 113 */ 28143 "\x4f\xcc\x81\0" /* offset 117 */ 28144 "\x4f\xcc\x82\0" /* offset 121 */ 28145 "\x4f\xcc\x83\0" /* offset 125 */ 28146 "\x4f\xcc\x88\0" /* offset 129 */ 28147 "\x55\xcc\x80\0" /* offset 133 */ 28148 "\x55\xcc\x81\0" /* offset 137 */ 28149 "\x55\xcc\x82\0" /* offset 141 */ 28150 "\x55\xcc\x88\0" /* offset 145 */ 28151 "\x59\xcc\x81\0" /* offset 149 */ 28152 "\x61\xcc\x80\0" /* offset 153 */ 28153 "\x61\xcc\x81\0" /* offset 157 */ 28154 "\x61\xcc\x82\0" /* offset 161 */ 28155 "\x61\xcc\x83\0" /* offset 165 */ 28156 "\x61\xcc\x88\0" /* offset 169 */ 28157 "\x61\xcc\x8a\0" /* offset 173 */ 28158 "\x63\xcc\xa7\0" /* offset 177 */ 28159 "\x65\xcc\x80\0" /* offset 181 */ 28160 "\x65\xcc\x81\0" /* offset 185 */ 28161 "\x65\xcc\x82\0" /* offset 189 */ 28162 "\x65\xcc\x88\0" /* offset 193 */ 28163 "\x69\xcc\x80\0" /* offset 197 */ 28164 "\x69\xcc\x81\0" /* offset 201 */ 28165 "\x69\xcc\x82\0" /* offset 205 */ 28166 "\x69\xcc\x88\0" /* offset 209 */ 28167 "\x6e\xcc\x83\0" /* offset 213 */ 28168 "\x6f\xcc\x80\0" /* offset 217 */ 28169 "\x6f\xcc\x81\0" /* offset 221 */ 28170 "\x6f\xcc\x82\0" /* offset 225 */ 28171 "\x6f\xcc\x83\0" /* offset 229 */ 28172 "\x6f\xcc\x88\0" /* offset 233 */ 28173 "\x75\xcc\x80\0" /* offset 237 */ 28174 "\x75\xcc\x81\0" /* offset 241 */ 28175 "\x75\xcc\x82\0" /* offset 245 */ 28176 "\x75\xcc\x88\0" /* offset 249 */ 28177 "\x79\xcc\x81\0" /* offset 253 */ 28178 "\x79\xcc\x88\0" /* offset 257 */ 28179 "\x41\xcc\x84\0" /* offset 261 */ 28180 "\x61\xcc\x84\0" /* offset 265 */ 28181 "\x41\xcc\x86\0" /* offset 269 */ 28182 "\x61\xcc\x86\0" /* offset 273 */ 28183 "\x41\xcc\xa8\0" /* offset 277 */ 28184 "\x61\xcc\xa8\0" /* offset 281 */ 28185 "\x43\xcc\x81\0" /* offset 285 */ 28186 "\x63\xcc\x81\0" /* offset 289 */ 28187 "\x43\xcc\x82\0" /* offset 293 */ 28188 "\x63\xcc\x82\0" /* offset 297 */ 28189 "\x43\xcc\x87\0" /* offset 301 */ 28190 "\x63\xcc\x87\0" /* offset 305 */ 28191 "\x43\xcc\x8c\0" /* offset 309 */ 28192 "\x63\xcc\x8c\0" /* offset 313 */ 28193 "\x44\xcc\x8c\0" /* offset 317 */ 28194 "\x64\xcc\x8c\0" /* offset 321 */ 28195 "\x45\xcc\x84\0" /* offset 325 */ 28196 "\x65\xcc\x84\0" /* offset 329 */ 28197 "\x45\xcc\x86\0" /* offset 333 */ 28198 "\x65\xcc\x86\0" /* offset 337 */ 28199 "\x45\xcc\x87\0" /* offset 341 */ 28200 "\x65\xcc\x87\0" /* offset 345 */ 28201 "\x45\xcc\xa8\0" /* offset 349 */ 28202 "\x65\xcc\xa8\0" /* offset 353 */ 28203 "\x45\xcc\x8c\0" /* offset 357 */ 28204 "\x65\xcc\x8c\0" /* offset 361 */ 28205 "\x47\xcc\x82\0" /* offset 365 */ 28206 "\x67\xcc\x82\0" /* offset 369 */ 28207 "\x47\xcc\x86\0" /* offset 373 */ 28208 "\x67\xcc\x86\0" /* offset 377 */ 28209 "\x47\xcc\x87\0" /* offset 381 */ 28210 "\x67\xcc\x87\0" /* offset 385 */ 28211 "\x47\xcc\xa7\0" /* offset 389 */ 28212 "\x67\xcc\xa7\0" /* offset 393 */ 28213 "\x48\xcc\x82\0" /* offset 397 */ 28214 "\x68\xcc\x82\0" /* offset 401 */ 28215 "\x49\xcc\x83\0" /* offset 405 */ 28216 "\x69\xcc\x83\0" /* offset 409 */ 28217 "\x49\xcc\x84\0" /* offset 413 */ 28218 "\x69\xcc\x84\0" /* offset 417 */ 28219 "\x49\xcc\x86\0" /* offset 421 */ 28220 "\x69\xcc\x86\0" /* offset 425 */ 28221 "\x49\xcc\xa8\0" /* offset 429 */ 28222 "\x69\xcc\xa8\0" /* offset 433 */ 28223 "\x49\xcc\x87\0" /* offset 437 */ 28224 "\x49\x4a\0" /* offset 441 */ 28225 "\x69\x6a\0" /* offset 444 */ 28226 "\x4a\xcc\x82\0" /* offset 447 */ 28227 "\x6a\xcc\x82\0" /* offset 451 */ 28228 "\x4b\xcc\xa7\0" /* offset 455 */ 28229 "\x6b\xcc\xa7\0" /* offset 459 */ 28230 "\x4c\xcc\x81\0" /* offset 463 */ 28231 "\x6c\xcc\x81\0" /* offset 467 */ 28232 "\x4c\xcc\xa7\0" /* offset 471 */ 28233 "\x6c\xcc\xa7\0" /* offset 475 */ 28234 "\x4c\xcc\x8c\0" /* offset 479 */ 28235 "\x6c\xcc\x8c\0" /* offset 483 */ 28236 "\x4c\xc2\xb7\0" /* offset 487 */ 28237 "\x6c\xc2\xb7\0" /* offset 491 */ 28238 "\x4e\xcc\x81\0" /* offset 495 */ 28239 "\x6e\xcc\x81\0" /* offset 499 */ 28240 "\x4e\xcc\xa7\0" /* offset 503 */ 28241 "\x6e\xcc\xa7\0" /* offset 507 */ 28242 "\x4e\xcc\x8c\0" /* offset 511 */ 28243 "\x6e\xcc\x8c\0" /* offset 515 */ 28244 "\xca\xbc\x6e\0" /* offset 519 */ 28245 "\x4f\xcc\x84\0" /* offset 523 */ 28246 "\x6f\xcc\x84\0" /* offset 527 */ 28247 "\x4f\xcc\x86\0" /* offset 531 */ 28248 "\x6f\xcc\x86\0" /* offset 535 */ 28249 "\x4f\xcc\x8b\0" /* offset 539 */ 28250 "\x6f\xcc\x8b\0" /* offset 543 */ 28251 "\x52\xcc\x81\0" /* offset 547 */ 28252 "\x72\xcc\x81\0" /* offset 551 */ 28253 "\x52\xcc\xa7\0" /* offset 555 */ 28254 "\x72\xcc\xa7\0" /* offset 559 */ 28255 "\x52\xcc\x8c\0" /* offset 563 */ 28256 "\x72\xcc\x8c\0" /* offset 567 */ 28257 "\x53\xcc\x81\0" /* offset 571 */ 28258 "\x73\xcc\x81\0" /* offset 575 */ 28259 "\x53\xcc\x82\0" /* offset 579 */ 28260 "\x73\xcc\x82\0" /* offset 583 */ 28261 "\x53\xcc\xa7\0" /* offset 587 */ 28262 "\x73\xcc\xa7\0" /* offset 591 */ 28263 "\x53\xcc\x8c\0" /* offset 595 */ 28264 "\x73\xcc\x8c\0" /* offset 599 */ 28265 "\x54\xcc\xa7\0" /* offset 603 */ 28266 "\x74\xcc\xa7\0" /* offset 607 */ 28267 "\x54\xcc\x8c\0" /* offset 611 */ 28268 "\x74\xcc\x8c\0" /* offset 615 */ 28269 "\x55\xcc\x83\0" /* offset 619 */ 28270 "\x75\xcc\x83\0" /* offset 623 */ 28271 "\x55\xcc\x84\0" /* offset 627 */ 28272 "\x75\xcc\x84\0" /* offset 631 */ 28273 "\x55\xcc\x86\0" /* offset 635 */ 28274 "\x75\xcc\x86\0" /* offset 639 */ 28275 "\x55\xcc\x8a\0" /* offset 643 */ 28276 "\x75\xcc\x8a\0" /* offset 647 */ 28277 "\x55\xcc\x8b\0" /* offset 651 */ 28278 "\x75\xcc\x8b\0" /* offset 655 */ 28279 "\x55\xcc\xa8\0" /* offset 659 */ 28280 "\x75\xcc\xa8\0" /* offset 663 */ 28281 "\x57\xcc\x82\0" /* offset 667 */ 28282 "\x77\xcc\x82\0" /* offset 671 */ 28283 "\x59\xcc\x82\0" /* offset 675 */ 28284 "\x79\xcc\x82\0" /* offset 679 */ 28285 "\x59\xcc\x88\0" /* offset 683 */ 28286 "\x5a\xcc\x81\0" /* offset 687 */ 28287 "\x7a\xcc\x81\0" /* offset 691 */ 28288 "\x5a\xcc\x87\0" /* offset 695 */ 28289 "\x7a\xcc\x87\0" /* offset 699 */ 28290 "\x5a\xcc\x8c\0" /* offset 703 */ 28291 "\x7a\xcc\x8c\0" /* offset 707 */ 28292 "\x73\0" /* offset 711 */ 28293 "\x4f\xcc\x9b\0" /* offset 713 */ 28294 "\x6f\xcc\x9b\0" /* offset 717 */ 28295 "\x55\xcc\x9b\0" /* offset 721 */ 28296 "\x75\xcc\x9b\0" /* offset 725 */ 28297 "\x44\x5a\xcc\x8c\0" /* offset 729 */ 28298 "\x44\x7a\xcc\x8c\0" /* offset 734 */ 28299 "\x64\x7a\xcc\x8c\0" /* offset 739 */ 28300 "\x4c\x4a\0" /* offset 744 */ 28301 "\x4c\x6a\0" /* offset 747 */ 28302 "\x6c\x6a\0" /* offset 750 */ 28303 "\x4e\x4a\0" /* offset 753 */ 28304 "\x4e\x6a\0" /* offset 756 */ 28305 "\x6e\x6a\0" /* offset 759 */ 28306 "\x41\xcc\x8c\0" /* offset 762 */ 28307 "\x61\xcc\x8c\0" /* offset 766 */ 28308 "\x49\xcc\x8c\0" /* offset 770 */ 28309 "\x69\xcc\x8c\0" /* offset 774 */ 28310 "\x4f\xcc\x8c\0" /* offset 778 */ 28311 "\x6f\xcc\x8c\0" /* offset 782 */ 28312 "\x55\xcc\x8c\0" /* offset 786 */ 28313 "\x75\xcc\x8c\0" /* offset 790 */ 28314 "\x55\xcc\x88\xcc\x84\0" /* offset 794 */ 28315 "\x75\xcc\x88\xcc\x84\0" /* offset 800 */ 28316 "\x55\xcc\x88\xcc\x81\0" /* offset 806 */ 28317 "\x75\xcc\x88\xcc\x81\0" /* offset 812 */ 28318 "\x55\xcc\x88\xcc\x8c\0" /* offset 818 */ 28319 "\x75\xcc\x88\xcc\x8c\0" /* offset 824 */ 28320 "\x55\xcc\x88\xcc\x80\0" /* offset 830 */ 28321 "\x75\xcc\x88\xcc\x80\0" /* offset 836 */ 28322 "\x41\xcc\x88\xcc\x84\0" /* offset 842 */ 28323 "\x61\xcc\x88\xcc\x84\0" /* offset 848 */ 28324 "\x41\xcc\x87\xcc\x84\0" /* offset 854 */ 28325 "\x61\xcc\x87\xcc\x84\0" /* offset 860 */ 28326 "\xc3\x86\xcc\x84\0" /* offset 866 */ 28327 "\xc3\xa6\xcc\x84\0" /* offset 871 */ 28328 "\x47\xcc\x8c\0" /* offset 876 */ 28329 "\x67\xcc\x8c\0" /* offset 880 */ 28330 "\x4b\xcc\x8c\0" /* offset 884 */ 28331 "\x6b\xcc\x8c\0" /* offset 888 */ 28332 "\x4f\xcc\xa8\0" /* offset 892 */ 28333 "\x6f\xcc\xa8\0" /* offset 896 */ 28334 "\x4f\xcc\xa8\xcc\x84\0" /* offset 900 */ 28335 "\x6f\xcc\xa8\xcc\x84\0" /* offset 906 */ 28336 "\xc6\xb7\xcc\x8c\0" /* offset 912 */ 28337 "\xca\x92\xcc\x8c\0" /* offset 917 */ 28338 "\x6a\xcc\x8c\0" /* offset 922 */ 28339 "\x44\x5a\0" /* offset 926 */ 28340 "\x44\x7a\0" /* offset 929 */ 28341 "\x64\x7a\0" /* offset 932 */ 28342 "\x47\xcc\x81\0" /* offset 935 */ 28343 "\x67\xcc\x81\0" /* offset 939 */ 28344 "\x4e\xcc\x80\0" /* offset 943 */ 28345 "\x6e\xcc\x80\0" /* offset 947 */ 28346 "\x41\xcc\x8a\xcc\x81\0" /* offset 951 */ 28347 "\x61\xcc\x8a\xcc\x81\0" /* offset 957 */ 28348 "\xc3\x86\xcc\x81\0" /* offset 963 */ 28349 "\xc3\xa6\xcc\x81\0" /* offset 968 */ 28350 "\xc3\x98\xcc\x81\0" /* offset 973 */ 28351 "\xc3\xb8\xcc\x81\0" /* offset 978 */ 28352 "\x41\xcc\x8f\0" /* offset 983 */ 28353 "\x61\xcc\x8f\0" /* offset 987 */ 28354 "\x41\xcc\x91\0" /* offset 991 */ 28355 "\x61\xcc\x91\0" /* offset 995 */ 28356 "\x45\xcc\x8f\0" /* offset 999 */ 28357 "\x65\xcc\x8f\0" /* offset 1003 */ 28358 "\x45\xcc\x91\0" /* offset 1007 */ 28359 "\x65\xcc\x91\0" /* offset 1011 */ 28360 "\x49\xcc\x8f\0" /* offset 1015 */ 28361 "\x69\xcc\x8f\0" /* offset 1019 */ 28362 "\x49\xcc\x91\0" /* offset 1023 */ 28363 "\x69\xcc\x91\0" /* offset 1027 */ 28364 "\x4f\xcc\x8f\0" /* offset 1031 */ 28365 "\x6f\xcc\x8f\0" /* offset 1035 */ 28366 "\x4f\xcc\x91\0" /* offset 1039 */ 28367 "\x6f\xcc\x91\0" /* offset 1043 */ 28368 "\x52\xcc\x8f\0" /* offset 1047 */ 28369 "\x72\xcc\x8f\0" /* offset 1051 */ 28370 "\x52\xcc\x91\0" /* offset 1055 */ 28371 "\x72\xcc\x91\0" /* offset 1059 */ 28372 "\x55\xcc\x8f\0" /* offset 1063 */ 28373 "\x75\xcc\x8f\0" /* offset 1067 */ 28374 "\x55\xcc\x91\0" /* offset 1071 */ 28375 "\x75\xcc\x91\0" /* offset 1075 */ 28376 "\x53\xcc\xa6\0" /* offset 1079 */ 28377 "\x73\xcc\xa6\0" /* offset 1083 */ 28378 "\x54\xcc\xa6\0" /* offset 1087 */ 28379 "\x74\xcc\xa6\0" /* offset 1091 */ 28380 "\x48\xcc\x8c\0" /* offset 1095 */ 28381 "\x68\xcc\x8c\0" /* offset 1099 */ 28382 "\x41\xcc\x87\0" /* offset 1103 */ 28383 "\x61\xcc\x87\0" /* offset 1107 */ 28384 "\x45\xcc\xa7\0" /* offset 1111 */ 28385 "\x65\xcc\xa7\0" /* offset 1115 */ 28386 "\x4f\xcc\x88\xcc\x84\0" /* offset 1119 */ 28387 "\x6f\xcc\x88\xcc\x84\0" /* offset 1125 */ 28388 "\x4f\xcc\x83\xcc\x84\0" /* offset 1131 */ 28389 "\x6f\xcc\x83\xcc\x84\0" /* offset 1137 */ 28390 "\x4f\xcc\x87\0" /* offset 1143 */ 28391 "\x6f\xcc\x87\0" /* offset 1147 */ 28392 "\x4f\xcc\x87\xcc\x84\0" /* offset 1151 */ 28393 "\x6f\xcc\x87\xcc\x84\0" /* offset 1157 */ 28394 "\x59\xcc\x84\0" /* offset 1163 */ 28395 "\x79\xcc\x84\0" /* offset 1167 */ 28396 "\x68\0" /* offset 1171 */ 28397 "\xc9\xa6\0" /* offset 1173 */ 28398 "\x6a\0" /* offset 1176 */ 28399 "\x72\0" /* offset 1178 */ 28400 "\xc9\xb9\0" /* offset 1180 */ 28401 "\xc9\xbb\0" /* offset 1183 */ 28402 "\xca\x81\0" /* offset 1186 */ 28403 "\x77\0" /* offset 1189 */ 28404 "\x79\0" /* offset 1191 */ 28405 "\x20\xcc\x86\0" /* offset 1193 */ 28406 "\x20\xcc\x87\0" /* offset 1197 */ 28407 "\x20\xcc\x8a\0" /* offset 1201 */ 28408 "\x20\xcc\xa8\0" /* offset 1205 */ 28409 "\x20\xcc\x83\0" /* offset 1209 */ 28410 "\x20\xcc\x8b\0" /* offset 1213 */ 28411 "\xc9\xa3\0" /* offset 1217 */ 28412 "\x6c\0" /* offset 1220 */ 28413 "\x78\0" /* offset 1222 */ 28414 "\xca\x95\0" /* offset 1224 */ 28415 "\xcc\x80\0" /* offset 1227 */ 28416 "\xcc\x81\0" /* offset 1230 */ 28417 "\xcc\x93\0" /* offset 1233 */ 28418 "\xcc\x88\xcc\x81\0" /* offset 1236 */ 28419 "\xca\xb9\0" /* offset 1241 */ 28420 "\x20\xcd\x85\0" /* offset 1244 */ 28421 "\x3b\0" /* offset 1248 */ 28422 "\xc2\xa8\xcc\x81\0" /* offset 1250 */ 28423 "\x20\xcc\x88\xcc\x81\0" /* offset 1255 */ 28424 "\xce\x91\xcc\x81\0" /* offset 1261 */ 28425 "\xc2\xb7\0" /* offset 1266 */ 28426 "\xce\x95\xcc\x81\0" /* offset 1269 */ 28427 "\xce\x97\xcc\x81\0" /* offset 1274 */ 28428 "\xce\x99\xcc\x81\0" /* offset 1279 */ 28429 "\xce\x9f\xcc\x81\0" /* offset 1284 */ 28430 "\xce\xa5\xcc\x81\0" /* offset 1289 */ 28431 "\xce\xa9\xcc\x81\0" /* offset 1294 */ 28432 "\xce\xb9\xcc\x88\xcc\x81\0" /* offset 1299 */ 28433 "\xce\x99\xcc\x88\0" /* offset 1306 */ 28434 "\xce\xa5\xcc\x88\0" /* offset 1311 */ 28435 "\xce\xb1\xcc\x81\0" /* offset 1316 */ 28436 "\xce\xb5\xcc\x81\0" /* offset 1321 */ 28437 "\xce\xb7\xcc\x81\0" /* offset 1326 */ 28438 "\xce\xb9\xcc\x81\0" /* offset 1331 */ 28439 "\xcf\x85\xcc\x88\xcc\x81\0" /* offset 1336 */ 28440 "\xce\xb9\xcc\x88\0" /* offset 1343 */ 28441 "\xcf\x85\xcc\x88\0" /* offset 1348 */ 28442 "\xce\xbf\xcc\x81\0" /* offset 1353 */ 28443 "\xcf\x85\xcc\x81\0" /* offset 1358 */ 28444 "\xcf\x89\xcc\x81\0" /* offset 1363 */ 28445 "\xce\xb2\0" /* offset 1368 */ 28446 "\xce\xb8\0" /* offset 1371 */ 28447 "\xce\xa5\0" /* offset 1374 */ 28448 "\xcf\x92\xcc\x81\0" /* offset 1377 */ 28449 "\xcf\x92\xcc\x88\0" /* offset 1382 */ 28450 "\xcf\x86\0" /* offset 1387 */ 28451 "\xcf\x80\0" /* offset 1390 */ 28452 "\xce\xba\0" /* offset 1393 */ 28453 "\xcf\x81\0" /* offset 1396 */ 28454 "\xcf\x82\0" /* offset 1399 */ 28455 "\xce\x98\0" /* offset 1402 */ 28456 "\xce\xb5\0" /* offset 1405 */ 28457 "\xce\xa3\0" /* offset 1408 */ 28458 "\xd0\x95\xcc\x80\0" /* offset 1411 */ 28459 "\xd0\x95\xcc\x88\0" /* offset 1416 */ 28460 "\xd0\x93\xcc\x81\0" /* offset 1421 */ 28461 "\xd0\x86\xcc\x88\0" /* offset 1426 */ 28462 "\xd0\x9a\xcc\x81\0" /* offset 1431 */ 28463 "\xd0\x98\xcc\x80\0" /* offset 1436 */ 28464 "\xd0\xa3\xcc\x86\0" /* offset 1441 */ 28465 "\xd0\x98\xcc\x86\0" /* offset 1446 */ 28466 "\xd0\xb8\xcc\x86\0" /* offset 1451 */ 28467 "\xd0\xb5\xcc\x80\0" /* offset 1456 */ 28468 "\xd0\xb5\xcc\x88\0" /* offset 1461 */ 28469 "\xd0\xb3\xcc\x81\0" /* offset 1466 */ 28470 "\xd1\x96\xcc\x88\0" /* offset 1471 */ 28471 "\xd0\xba\xcc\x81\0" /* offset 1476 */ 28472 "\xd0\xb8\xcc\x80\0" /* offset 1481 */ 28473 "\xd1\x83\xcc\x86\0" /* offset 1486 */ 28474 "\xd1\xb4\xcc\x8f\0" /* offset 1491 */ 28475 "\xd1\xb5\xcc\x8f\0" /* offset 1496 */ 28476 "\xd0\x96\xcc\x86\0" /* offset 1501 */ 28477 "\xd0\xb6\xcc\x86\0" /* offset 1506 */ 28478 "\xd0\x90\xcc\x86\0" /* offset 1511 */ 28479 "\xd0\xb0\xcc\x86\0" /* offset 1516 */ 28480 "\xd0\x90\xcc\x88\0" /* offset 1521 */ 28481 "\xd0\xb0\xcc\x88\0" /* offset 1526 */ 28482 "\xd0\x95\xcc\x86\0" /* offset 1531 */ 28483 "\xd0\xb5\xcc\x86\0" /* offset 1536 */ 28484 "\xd3\x98\xcc\x88\0" /* offset 1541 */ 28485 "\xd3\x99\xcc\x88\0" /* offset 1546 */ 28486 "\xd0\x96\xcc\x88\0" /* offset 1551 */ 28487 "\xd0\xb6\xcc\x88\0" /* offset 1556 */ 28488 "\xd0\x97\xcc\x88\0" /* offset 1561 */ 28489 "\xd0\xb7\xcc\x88\0" /* offset 1566 */ 28490 "\xd0\x98\xcc\x84\0" /* offset 1571 */ 28491 "\xd0\xb8\xcc\x84\0" /* offset 1576 */ 28492 "\xd0\x98\xcc\x88\0" /* offset 1581 */ 28493 "\xd0\xb8\xcc\x88\0" /* offset 1586 */ 28494 "\xd0\x9e\xcc\x88\0" /* offset 1591 */ 28495 "\xd0\xbe\xcc\x88\0" /* offset 1596 */ 28496 "\xd3\xa8\xcc\x88\0" /* offset 1601 */ 28497 "\xd3\xa9\xcc\x88\0" /* offset 1606 */ 28498 "\xd0\xad\xcc\x88\0" /* offset 1611 */ 28499 "\xd1\x8d\xcc\x88\0" /* offset 1616 */ 28500 "\xd0\xa3\xcc\x84\0" /* offset 1621 */ 28501 "\xd1\x83\xcc\x84\0" /* offset 1626 */ 28502 "\xd0\xa3\xcc\x88\0" /* offset 1631 */ 28503 "\xd1\x83\xcc\x88\0" /* offset 1636 */ 28504 "\xd0\xa3\xcc\x8b\0" /* offset 1641 */ 28505 "\xd1\x83\xcc\x8b\0" /* offset 1646 */ 28506 "\xd0\xa7\xcc\x88\0" /* offset 1651 */ 28507 "\xd1\x87\xcc\x88\0" /* offset 1656 */ 28508 "\xd0\xab\xcc\x88\0" /* offset 1661 */ 28509 "\xd1\x8b\xcc\x88\0" /* offset 1666 */ 28510 "\xd5\xa5\xd6\x82\0" /* offset 1671 */ 28511 "\xd8\xa7\xd9\x93\0" /* offset 1676 */ 28512 "\xd8\xa7\xd9\x94\0" /* offset 1681 */ 28513 "\xd9\x88\xd9\x94\0" /* offset 1686 */ 28514 "\xd8\xa7\xd9\x95\0" /* offset 1691 */ 28515 "\xd9\x8a\xd9\x94\0" /* offset 1696 */ 28516 "\xd8\xa7\xd9\xb4\0" /* offset 1701 */ 28517 "\xd9\x88\xd9\xb4\0" /* offset 1706 */ 28518 "\xdb\x87\xd9\xb4\0" /* offset 1711 */ 28519 "\xd9\x8a\xd9\xb4\0" /* offset 1716 */ 28520 "\xdb\x95\xd9\x94\0" /* offset 1721 */ 28521 "\xdb\x81\xd9\x94\0" /* offset 1726 */ 28522 "\xdb\x92\xd9\x94\0" /* offset 1731 */ 28523 "\xe0\xa4\xa8\xe0\xa4\xbc\0" /* offset 1736 */ 28524 "\xe0\xa4\xb0\xe0\xa4\xbc\0" /* offset 1743 */ 28525 "\xe0\xa4\xb3\xe0\xa4\xbc\0" /* offset 1750 */ 28526 "\xe0\xa4\x95\xe0\xa4\xbc\0" /* offset 1757 */ 28527 "\xe0\xa4\x96\xe0\xa4\xbc\0" /* offset 1764 */ 28528 "\xe0\xa4\x97\xe0\xa4\xbc\0" /* offset 1771 */ 28529 "\xe0\xa4\x9c\xe0\xa4\xbc\0" /* offset 1778 */ 28530 "\xe0\xa4\xa1\xe0\xa4\xbc\0" /* offset 1785 */ 28531 "\xe0\xa4\xa2\xe0\xa4\xbc\0" /* offset 1792 */ 28532 "\xe0\xa4\xab\xe0\xa4\xbc\0" /* offset 1799 */ 28533 "\xe0\xa4\xaf\xe0\xa4\xbc\0" /* offset 1806 */ 28534 "\xe0\xa7\x87\xe0\xa6\xbe\0" /* offset 1813 */ 28535 "\xe0\xa7\x87\xe0\xa7\x97\0" /* offset 1820 */ 28536 "\xe0\xa6\xa1\xe0\xa6\xbc\0" /* offset 1827 */ 28537 "\xe0\xa6\xa2\xe0\xa6\xbc\0" /* offset 1834 */ 28538 "\xe0\xa6\xaf\xe0\xa6\xbc\0" /* offset 1841 */ 28539 "\xe0\xa8\xb2\xe0\xa8\xbc\0" /* offset 1848 */ 28540 "\xe0\xa8\xb8\xe0\xa8\xbc\0" /* offset 1855 */ 28541 "\xe0\xa8\x96\xe0\xa8\xbc\0" /* offset 1862 */ 28542 "\xe0\xa8\x97\xe0\xa8\xbc\0" /* offset 1869 */ 28543 "\xe0\xa8\x9c\xe0\xa8\xbc\0" /* offset 1876 */ 28544 "\xe0\xa8\xab\xe0\xa8\xbc\0" /* offset 1883 */ 28545 "\xe0\xad\x87\xe0\xad\x96\0" /* offset 1890 */ 28546 "\xe0\xad\x87\xe0\xac\xbe\0" /* offset 1897 */ 28547 "\xe0\xad\x87\xe0\xad\x97\0" /* offset 1904 */ 28548 "\xe0\xac\xa1\xe0\xac\xbc\0" /* offset 1911 */ 28549 "\xe0\xac\xa2\xe0\xac\xbc\0" /* offset 1918 */ 28550 "\xe0\xae\x92\xe0\xaf\x97\0" /* offset 1925 */ 28551 "\xe0\xaf\x86\xe0\xae\xbe\0" /* offset 1932 */ 28552 "\xe0\xaf\x87\xe0\xae\xbe\0" /* offset 1939 */ 28553 "\xe0\xaf\x86\xe0\xaf\x97\0" /* offset 1946 */ 28554 "\xe0\xb1\x86\xe0\xb1\x96\0" /* offset 1953 */ 28555 "\xe0\xb2\xbf\xe0\xb3\x95\0" /* offset 1960 */ 28556 "\xe0\xb3\x86\xe0\xb3\x95\0" /* offset 1967 */ 28557 "\xe0\xb3\x86\xe0\xb3\x96\0" /* offset 1974 */ 28558 "\xe0\xb3\x86\xe0\xb3\x82\0" /* offset 1981 */ 28559 "\xe0\xb3\x86\xe0\xb3\x82\xe0\xb3\x95\0" /* offset 1988 */ 28560 "\xe0\xb5\x86\xe0\xb4\xbe\0" /* offset 1998 */ 28561 "\xe0\xb5\x87\xe0\xb4\xbe\0" /* offset 2005 */ 28562 "\xe0\xb5\x86\xe0\xb5\x97\0" /* offset 2012 */ 28563 "\xe0\xb7\x99\xe0\xb7\x8a\0" /* offset 2019 */ 28564 "\xe0\xb7\x99\xe0\xb7\x8f\0" /* offset 2026 */ 28565 "\xe0\xb7\x99\xe0\xb7\x8f\xe0\xb7\x8a\0" /* offset 2033 */ 28566 "\xe0\xb7\x99\xe0\xb7\x9f\0" /* offset 2043 */ 28567 "\xe0\xb9\x8d\xe0\xb8\xb2\0" /* offset 2050 */ 28568 "\xe0\xbb\x8d\xe0\xba\xb2\0" /* offset 2057 */ 28569 "\xe0\xba\xab\xe0\xba\x99\0" /* offset 2064 */ 28570 "\xe0\xba\xab\xe0\xba\xa1\0" /* offset 2071 */ 28571 "\xe0\xbc\x8b\0" /* offset 2078 */ 28572 "\xe0\xbd\x82\xe0\xbe\xb7\0" /* offset 2082 */ 28573 "\xe0\xbd\x8c\xe0\xbe\xb7\0" /* offset 2089 */ 28574 "\xe0\xbd\x91\xe0\xbe\xb7\0" /* offset 2096 */ 28575 "\xe0\xbd\x96\xe0\xbe\xb7\0" /* offset 2103 */ 28576 "\xe0\xbd\x9b\xe0\xbe\xb7\0" /* offset 2110 */ 28577 "\xe0\xbd\x80\xe0\xbe\xb5\0" /* offset 2117 */ 28578 "\xe0\xbd\xb1\xe0\xbd\xb2\0" /* offset 2124 */ 28579 "\xe0\xbd\xb1\xe0\xbd\xb4\0" /* offset 2131 */ 28580 "\xe0\xbe\xb2\xe0\xbe\x80\0" /* offset 2138 */ 28581 "\xe0\xbe\xb2\xe0\xbd\xb1\xe0\xbe\x80\0" /* offset 2145 */ 28582 "\xe0\xbe\xb3\xe0\xbe\x80\0" /* offset 2155 */ 28583 "\xe0\xbe\xb3\xe0\xbd\xb1\xe0\xbe\x80\0" /* offset 2162 */ 28584 "\xe0\xbd\xb1\xe0\xbe\x80\0" /* offset 2172 */ 28585 "\xe0\xbe\x92\xe0\xbe\xb7\0" /* offset 2179 */ 28586 "\xe0\xbe\x9c\xe0\xbe\xb7\0" /* offset 2186 */ 28587 "\xe0\xbe\xa1\xe0\xbe\xb7\0" /* offset 2193 */ 28588 "\xe0\xbe\xa6\xe0\xbe\xb7\0" /* offset 2200 */ 28589 "\xe0\xbe\xab\xe0\xbe\xb7\0" /* offset 2207 */ 28590 "\xe0\xbe\x90\xe0\xbe\xb5\0" /* offset 2214 */ 28591 "\xe1\x80\xa5\xe1\x80\xae\0" /* offset 2221 */ 28592 "\xe1\x83\x9c\0" /* offset 2228 */ 28593 "\xe1\xac\x85\xe1\xac\xb5\0" /* offset 2232 */ 28594 "\xe1\xac\x87\xe1\xac\xb5\0" /* offset 2239 */ 28595 "\xe1\xac\x89\xe1\xac\xb5\0" /* offset 2246 */ 28596 "\xe1\xac\x8b\xe1\xac\xb5\0" /* offset 2253 */ 28597 "\xe1\xac\x8d\xe1\xac\xb5\0" /* offset 2260 */ 28598 "\xe1\xac\x91\xe1\xac\xb5\0" /* offset 2267 */ 28599 "\xe1\xac\xba\xe1\xac\xb5\0" /* offset 2274 */ 28600 "\xe1\xac\xbc\xe1\xac\xb5\0" /* offset 2281 */ 28601 "\xe1\xac\xbe\xe1\xac\xb5\0" /* offset 2288 */ 28602 "\xe1\xac\xbf\xe1\xac\xb5\0" /* offset 2295 */ 28603 "\xe1\xad\x82\xe1\xac\xb5\0" /* offset 2302 */ 28604 "\x41\0" /* offset 2309 */ 28605 "\xc3\x86\0" /* offset 2311 */ 28606 "\x42\0" /* offset 2314 */ 28607 "\x44\0" /* offset 2316 */ 28608 "\x45\0" /* offset 2318 */ 28609 "\xc6\x8e\0" /* offset 2320 */ 28610 "\x47\0" /* offset 2323 */ 28611 "\x48\0" /* offset 2325 */ 28612 "\x49\0" /* offset 2327 */ 28613 "\x4a\0" /* offset 2329 */ 28614 "\x4b\0" /* offset 2331 */ 28615 "\x4c\0" /* offset 2333 */ 28616 "\x4d\0" /* offset 2335 */ 28617 "\x4e\0" /* offset 2337 */ 28618 "\x4f\0" /* offset 2339 */ 28619 "\xc8\xa2\0" /* offset 2341 */ 28620 "\x50\0" /* offset 2344 */ 28621 "\x52\0" /* offset 2346 */ 28622 "\x54\0" /* offset 2348 */ 28623 "\x55\0" /* offset 2350 */ 28624 "\x57\0" /* offset 2352 */ 28625 "\xc9\x90\0" /* offset 2354 */ 28626 "\xc9\x91\0" /* offset 2357 */ 28627 "\xe1\xb4\x82\0" /* offset 2360 */ 28628 "\x62\0" /* offset 2364 */ 28629 "\x64\0" /* offset 2366 */ 28630 "\x65\0" /* offset 2368 */ 28631 "\xc9\x99\0" /* offset 2370 */ 28632 "\xc9\x9b\0" /* offset 2373 */ 28633 "\xc9\x9c\0" /* offset 2376 */ 28634 "\x67\0" /* offset 2379 */ 28635 "\x6b\0" /* offset 2381 */ 28636 "\x6d\0" /* offset 2383 */ 28637 "\xc5\x8b\0" /* offset 2385 */ 28638 "\xc9\x94\0" /* offset 2388 */ 28639 "\xe1\xb4\x96\0" /* offset 2391 */ 28640 "\xe1\xb4\x97\0" /* offset 2395 */ 28641 "\x70\0" /* offset 2399 */ 28642 "\x74\0" /* offset 2401 */ 28643 "\x75\0" /* offset 2403 */ 28644 "\xe1\xb4\x9d\0" /* offset 2405 */ 28645 "\xc9\xaf\0" /* offset 2409 */ 28646 "\x76\0" /* offset 2412 */ 28647 "\xe1\xb4\xa5\0" /* offset 2414 */ 28648 "\xce\xb3\0" /* offset 2418 */ 28649 "\xce\xb4\0" /* offset 2421 */ 28650 "\xcf\x87\0" /* offset 2424 */ 28651 "\x69\0" /* offset 2427 */ 28652 "\xd0\xbd\0" /* offset 2429 */ 28653 "\xc9\x92\0" /* offset 2432 */ 28654 "\x63\0" /* offset 2435 */ 28655 "\xc9\x95\0" /* offset 2437 */ 28656 "\xc3\xb0\0" /* offset 2440 */ 28657 "\x66\0" /* offset 2443 */ 28658 "\xc9\x9f\0" /* offset 2445 */ 28659 "\xc9\xa1\0" /* offset 2448 */ 28660 "\xc9\xa5\0" /* offset 2451 */ 28661 "\xc9\xa8\0" /* offset 2454 */ 28662 "\xc9\xa9\0" /* offset 2457 */ 28663 "\xc9\xaa\0" /* offset 2460 */ 28664 "\xe1\xb5\xbb\0" /* offset 2463 */ 28665 "\xca\x9d\0" /* offset 2467 */ 28666 "\xc9\xad\0" /* offset 2470 */ 28667 "\xe1\xb6\x85\0" /* offset 2473 */ 28668 "\xca\x9f\0" /* offset 2477 */ 28669 "\xc9\xb1\0" /* offset 2480 */ 28670 "\xc9\xb0\0" /* offset 2483 */ 28671 "\xc9\xb2\0" /* offset 2486 */ 28672 "\xc9\xb3\0" /* offset 2489 */ 28673 "\xc9\xb4\0" /* offset 2492 */ 28674 "\xc9\xb5\0" /* offset 2495 */ 28675 "\xc9\xb8\0" /* offset 2498 */ 28676 "\xca\x82\0" /* offset 2501 */ 28677 "\xca\x83\0" /* offset 2504 */ 28678 "\xc6\xab\0" /* offset 2507 */ 28679 "\xca\x89\0" /* offset 2510 */ 28680 "\xca\x8a\0" /* offset 2513 */ 28681 "\xe1\xb4\x9c\0" /* offset 2516 */ 28682 "\xca\x8b\0" /* offset 2520 */ 28683 "\xca\x8c\0" /* offset 2523 */ 28684 "\x7a\0" /* offset 2526 */ 28685 "\xca\x90\0" /* offset 2528 */ 28686 "\xca\x91\0" /* offset 2531 */ 28687 "\xca\x92\0" /* offset 2534 */ 28688 "\x41\xcc\xa5\0" /* offset 2537 */ 28689 "\x61\xcc\xa5\0" /* offset 2541 */ 28690 "\x42\xcc\x87\0" /* offset 2545 */ 28691 "\x62\xcc\x87\0" /* offset 2549 */ 28692 "\x42\xcc\xa3\0" /* offset 2553 */ 28693 "\x62\xcc\xa3\0" /* offset 2557 */ 28694 "\x42\xcc\xb1\0" /* offset 2561 */ 28695 "\x62\xcc\xb1\0" /* offset 2565 */ 28696 "\x43\xcc\xa7\xcc\x81\0" /* offset 2569 */ 28697 "\x63\xcc\xa7\xcc\x81\0" /* offset 2575 */ 28698 "\x44\xcc\x87\0" /* offset 2581 */ 28699 "\x64\xcc\x87\0" /* offset 2585 */ 28700 "\x44\xcc\xa3\0" /* offset 2589 */ 28701 "\x64\xcc\xa3\0" /* offset 2593 */ 28702 "\x44\xcc\xb1\0" /* offset 2597 */ 28703 "\x64\xcc\xb1\0" /* offset 2601 */ 28704 "\x44\xcc\xa7\0" /* offset 2605 */ 28705 "\x64\xcc\xa7\0" /* offset 2609 */ 28706 "\x44\xcc\xad\0" /* offset 2613 */ 28707 "\x64\xcc\xad\0" /* offset 2617 */ 28708 "\x45\xcc\x84\xcc\x80\0" /* offset 2621 */ 28709 "\x65\xcc\x84\xcc\x80\0" /* offset 2627 */ 28710 "\x45\xcc\x84\xcc\x81\0" /* offset 2633 */ 28711 "\x65\xcc\x84\xcc\x81\0" /* offset 2639 */ 28712 "\x45\xcc\xad\0" /* offset 2645 */ 28713 "\x65\xcc\xad\0" /* offset 2649 */ 28714 "\x45\xcc\xb0\0" /* offset 2653 */ 28715 "\x65\xcc\xb0\0" /* offset 2657 */ 28716 "\x45\xcc\xa7\xcc\x86\0" /* offset 2661 */ 28717 "\x65\xcc\xa7\xcc\x86\0" /* offset 2667 */ 28718 "\x46\xcc\x87\0" /* offset 2673 */ 28719 "\x66\xcc\x87\0" /* offset 2677 */ 28720 "\x47\xcc\x84\0" /* offset 2681 */ 28721 "\x67\xcc\x84\0" /* offset 2685 */ 28722 "\x48\xcc\x87\0" /* offset 2689 */ 28723 "\x68\xcc\x87\0" /* offset 2693 */ 28724 "\x48\xcc\xa3\0" /* offset 2697 */ 28725 "\x68\xcc\xa3\0" /* offset 2701 */ 28726 "\x48\xcc\x88\0" /* offset 2705 */ 28727 "\x68\xcc\x88\0" /* offset 2709 */ 28728 "\x48\xcc\xa7\0" /* offset 2713 */ 28729 "\x68\xcc\xa7\0" /* offset 2717 */ 28730 "\x48\xcc\xae\0" /* offset 2721 */ 28731 "\x68\xcc\xae\0" /* offset 2725 */ 28732 "\x49\xcc\xb0\0" /* offset 2729 */ 28733 "\x69\xcc\xb0\0" /* offset 2733 */ 28734 "\x49\xcc\x88\xcc\x81\0" /* offset 2737 */ 28735 "\x69\xcc\x88\xcc\x81\0" /* offset 2743 */ 28736 "\x4b\xcc\x81\0" /* offset 2749 */ 28737 "\x6b\xcc\x81\0" /* offset 2753 */ 28738 "\x4b\xcc\xa3\0" /* offset 2757 */ 28739 "\x6b\xcc\xa3\0" /* offset 2761 */ 28740 "\x4b\xcc\xb1\0" /* offset 2765 */ 28741 "\x6b\xcc\xb1\0" /* offset 2769 */ 28742 "\x4c\xcc\xa3\0" /* offset 2773 */ 28743 "\x6c\xcc\xa3\0" /* offset 2777 */ 28744 "\x4c\xcc\xa3\xcc\x84\0" /* offset 2781 */ 28745 "\x6c\xcc\xa3\xcc\x84\0" /* offset 2787 */ 28746 "\x4c\xcc\xb1\0" /* offset 2793 */ 28747 "\x6c\xcc\xb1\0" /* offset 2797 */ 28748 "\x4c\xcc\xad\0" /* offset 2801 */ 28749 "\x6c\xcc\xad\0" /* offset 2805 */ 28750 "\x4d\xcc\x81\0" /* offset 2809 */ 28751 "\x6d\xcc\x81\0" /* offset 2813 */ 28752 "\x4d\xcc\x87\0" /* offset 2817 */ 28753 "\x6d\xcc\x87\0" /* offset 2821 */ 28754 "\x4d\xcc\xa3\0" /* offset 2825 */ 28755 "\x6d\xcc\xa3\0" /* offset 2829 */ 28756 "\x4e\xcc\x87\0" /* offset 2833 */ 28757 "\x6e\xcc\x87\0" /* offset 2837 */ 28758 "\x4e\xcc\xa3\0" /* offset 2841 */ 28759 "\x6e\xcc\xa3\0" /* offset 2845 */ 28760 "\x4e\xcc\xb1\0" /* offset 2849 */ 28761 "\x6e\xcc\xb1\0" /* offset 2853 */ 28762 "\x4e\xcc\xad\0" /* offset 2857 */ 28763 "\x6e\xcc\xad\0" /* offset 2861 */ 28764 "\x4f\xcc\x83\xcc\x81\0" /* offset 2865 */ 28765 "\x6f\xcc\x83\xcc\x81\0" /* offset 2871 */ 28766 "\x4f\xcc\x83\xcc\x88\0" /* offset 2877 */ 28767 "\x6f\xcc\x83\xcc\x88\0" /* offset 2883 */ 28768 "\x4f\xcc\x84\xcc\x80\0" /* offset 2889 */ 28769 "\x6f\xcc\x84\xcc\x80\0" /* offset 2895 */ 28770 "\x4f\xcc\x84\xcc\x81\0" /* offset 2901 */ 28771 "\x6f\xcc\x84\xcc\x81\0" /* offset 2907 */ 28772 "\x50\xcc\x81\0" /* offset 2913 */ 28773 "\x70\xcc\x81\0" /* offset 2917 */ 28774 "\x50\xcc\x87\0" /* offset 2921 */ 28775 "\x70\xcc\x87\0" /* offset 2925 */ 28776 "\x52\xcc\x87\0" /* offset 2929 */ 28777 "\x72\xcc\x87\0" /* offset 2933 */ 28778 "\x52\xcc\xa3\0" /* offset 2937 */ 28779 "\x72\xcc\xa3\0" /* offset 2941 */ 28780 "\x52\xcc\xa3\xcc\x84\0" /* offset 2945 */ 28781 "\x72\xcc\xa3\xcc\x84\0" /* offset 2951 */ 28782 "\x52\xcc\xb1\0" /* offset 2957 */ 28783 "\x72\xcc\xb1\0" /* offset 2961 */ 28784 "\x53\xcc\x87\0" /* offset 2965 */ 28785 "\x73\xcc\x87\0" /* offset 2969 */ 28786 "\x53\xcc\xa3\0" /* offset 2973 */ 28787 "\x73\xcc\xa3\0" /* offset 2977 */ 28788 "\x53\xcc\x81\xcc\x87\0" /* offset 2981 */ 28789 "\x73\xcc\x81\xcc\x87\0" /* offset 2987 */ 28790 "\x53\xcc\x8c\xcc\x87\0" /* offset 2993 */ 28791 "\x73\xcc\x8c\xcc\x87\0" /* offset 2999 */ 28792 "\x53\xcc\xa3\xcc\x87\0" /* offset 3005 */ 28793 "\x73\xcc\xa3\xcc\x87\0" /* offset 3011 */ 28794 "\x54\xcc\x87\0" /* offset 3017 */ 28795 "\x74\xcc\x87\0" /* offset 3021 */ 28796 "\x54\xcc\xa3\0" /* offset 3025 */ 28797 "\x74\xcc\xa3\0" /* offset 3029 */ 28798 "\x54\xcc\xb1\0" /* offset 3033 */ 28799 "\x74\xcc\xb1\0" /* offset 3037 */ 28800 "\x54\xcc\xad\0" /* offset 3041 */ 28801 "\x74\xcc\xad\0" /* offset 3045 */ 28802 "\x55\xcc\xa4\0" /* offset 3049 */ 28803 "\x75\xcc\xa4\0" /* offset 3053 */ 28804 "\x55\xcc\xb0\0" /* offset 3057 */ 28805 "\x75\xcc\xb0\0" /* offset 3061 */ 28806 "\x55\xcc\xad\0" /* offset 3065 */ 28807 "\x75\xcc\xad\0" /* offset 3069 */ 28808 "\x55\xcc\x83\xcc\x81\0" /* offset 3073 */ 28809 "\x75\xcc\x83\xcc\x81\0" /* offset 3079 */ 28810 "\x55\xcc\x84\xcc\x88\0" /* offset 3085 */ 28811 "\x75\xcc\x84\xcc\x88\0" /* offset 3091 */ 28812 "\x56\xcc\x83\0" /* offset 3097 */ 28813 "\x76\xcc\x83\0" /* offset 3101 */ 28814 "\x56\xcc\xa3\0" /* offset 3105 */ 28815 "\x76\xcc\xa3\0" /* offset 3109 */ 28816 "\x57\xcc\x80\0" /* offset 3113 */ 28817 "\x77\xcc\x80\0" /* offset 3117 */ 28818 "\x57\xcc\x81\0" /* offset 3121 */ 28819 "\x77\xcc\x81\0" /* offset 3125 */ 28820 "\x57\xcc\x88\0" /* offset 3129 */ 28821 "\x77\xcc\x88\0" /* offset 3133 */ 28822 "\x57\xcc\x87\0" /* offset 3137 */ 28823 "\x77\xcc\x87\0" /* offset 3141 */ 28824 "\x57\xcc\xa3\0" /* offset 3145 */ 28825 "\x77\xcc\xa3\0" /* offset 3149 */ 28826 "\x58\xcc\x87\0" /* offset 3153 */ 28827 "\x78\xcc\x87\0" /* offset 3157 */ 28828 "\x58\xcc\x88\0" /* offset 3161 */ 28829 "\x78\xcc\x88\0" /* offset 3165 */ 28830 "\x59\xcc\x87\0" /* offset 3169 */ 28831 "\x79\xcc\x87\0" /* offset 3173 */ 28832 "\x5a\xcc\x82\0" /* offset 3177 */ 28833 "\x7a\xcc\x82\0" /* offset 3181 */ 28834 "\x5a\xcc\xa3\0" /* offset 3185 */ 28835 "\x7a\xcc\xa3\0" /* offset 3189 */ 28836 "\x5a\xcc\xb1\0" /* offset 3193 */ 28837 "\x7a\xcc\xb1\0" /* offset 3197 */ 28838 "\x68\xcc\xb1\0" /* offset 3201 */ 28839 "\x74\xcc\x88\0" /* offset 3205 */ 28840 "\x77\xcc\x8a\0" /* offset 3209 */ 28841 "\x79\xcc\x8a\0" /* offset 3213 */ 28842 "\x61\xca\xbe\0" /* offset 3217 */ 28843 "\xc5\xbf\xcc\x87\0" /* offset 3221 */ 28844 "\x41\xcc\xa3\0" /* offset 3226 */ 28845 "\x61\xcc\xa3\0" /* offset 3230 */ 28846 "\x41\xcc\x89\0" /* offset 3234 */ 28847 "\x61\xcc\x89\0" /* offset 3238 */ 28848 "\x41\xcc\x82\xcc\x81\0" /* offset 3242 */ 28849 "\x61\xcc\x82\xcc\x81\0" /* offset 3248 */ 28850 "\x41\xcc\x82\xcc\x80\0" /* offset 3254 */ 28851 "\x61\xcc\x82\xcc\x80\0" /* offset 3260 */ 28852 "\x41\xcc\x82\xcc\x89\0" /* offset 3266 */ 28853 "\x61\xcc\x82\xcc\x89\0" /* offset 3272 */ 28854 "\x41\xcc\x82\xcc\x83\0" /* offset 3278 */ 28855 "\x61\xcc\x82\xcc\x83\0" /* offset 3284 */ 28856 "\x41\xcc\xa3\xcc\x82\0" /* offset 3290 */ 28857 "\x61\xcc\xa3\xcc\x82\0" /* offset 3296 */ 28858 "\x41\xcc\x86\xcc\x81\0" /* offset 3302 */ 28859 "\x61\xcc\x86\xcc\x81\0" /* offset 3308 */ 28860 "\x41\xcc\x86\xcc\x80\0" /* offset 3314 */ 28861 "\x61\xcc\x86\xcc\x80\0" /* offset 3320 */ 28862 "\x41\xcc\x86\xcc\x89\0" /* offset 3326 */ 28863 "\x61\xcc\x86\xcc\x89\0" /* offset 3332 */ 28864 "\x41\xcc\x86\xcc\x83\0" /* offset 3338 */ 28865 "\x61\xcc\x86\xcc\x83\0" /* offset 3344 */ 28866 "\x41\xcc\xa3\xcc\x86\0" /* offset 3350 */ 28867 "\x61\xcc\xa3\xcc\x86\0" /* offset 3356 */ 28868 "\x45\xcc\xa3\0" /* offset 3362 */ 28869 "\x65\xcc\xa3\0" /* offset 3366 */ 28870 "\x45\xcc\x89\0" /* offset 3370 */ 28871 "\x65\xcc\x89\0" /* offset 3374 */ 28872 "\x45\xcc\x83\0" /* offset 3378 */ 28873 "\x65\xcc\x83\0" /* offset 3382 */ 28874 "\x45\xcc\x82\xcc\x81\0" /* offset 3386 */ 28875 "\x65\xcc\x82\xcc\x81\0" /* offset 3392 */ 28876 "\x45\xcc\x82\xcc\x80\0" /* offset 3398 */ 28877 "\x65\xcc\x82\xcc\x80\0" /* offset 3404 */ 28878 "\x45\xcc\x82\xcc\x89\0" /* offset 3410 */ 28879 "\x65\xcc\x82\xcc\x89\0" /* offset 3416 */ 28880 "\x45\xcc\x82\xcc\x83\0" /* offset 3422 */ 28881 "\x65\xcc\x82\xcc\x83\0" /* offset 3428 */ 28882 "\x45\xcc\xa3\xcc\x82\0" /* offset 3434 */ 28883 "\x65\xcc\xa3\xcc\x82\0" /* offset 3440 */ 28884 "\x49\xcc\x89\0" /* offset 3446 */ 28885 "\x69\xcc\x89\0" /* offset 3450 */ 28886 "\x49\xcc\xa3\0" /* offset 3454 */ 28887 "\x69\xcc\xa3\0" /* offset 3458 */ 28888 "\x4f\xcc\xa3\0" /* offset 3462 */ 28889 "\x6f\xcc\xa3\0" /* offset 3466 */ 28890 "\x4f\xcc\x89\0" /* offset 3470 */ 28891 "\x6f\xcc\x89\0" /* offset 3474 */ 28892 "\x4f\xcc\x82\xcc\x81\0" /* offset 3478 */ 28893 "\x6f\xcc\x82\xcc\x81\0" /* offset 3484 */ 28894 "\x4f\xcc\x82\xcc\x80\0" /* offset 3490 */ 28895 "\x6f\xcc\x82\xcc\x80\0" /* offset 3496 */ 28896 "\x4f\xcc\x82\xcc\x89\0" /* offset 3502 */ 28897 "\x6f\xcc\x82\xcc\x89\0" /* offset 3508 */ 28898 "\x4f\xcc\x82\xcc\x83\0" /* offset 3514 */ 28899 "\x6f\xcc\x82\xcc\x83\0" /* offset 3520 */ 28900 "\x4f\xcc\xa3\xcc\x82\0" /* offset 3526 */ 28901 "\x6f\xcc\xa3\xcc\x82\0" /* offset 3532 */ 28902 "\x4f\xcc\x9b\xcc\x81\0" /* offset 3538 */ 28903 "\x6f\xcc\x9b\xcc\x81\0" /* offset 3544 */ 28904 "\x4f\xcc\x9b\xcc\x80\0" /* offset 3550 */ 28905 "\x6f\xcc\x9b\xcc\x80\0" /* offset 3556 */ 28906 "\x4f\xcc\x9b\xcc\x89\0" /* offset 3562 */ 28907 "\x6f\xcc\x9b\xcc\x89\0" /* offset 3568 */ 28908 "\x4f\xcc\x9b\xcc\x83\0" /* offset 3574 */ 28909 "\x6f\xcc\x9b\xcc\x83\0" /* offset 3580 */ 28910 "\x4f\xcc\x9b\xcc\xa3\0" /* offset 3586 */ 28911 "\x6f\xcc\x9b\xcc\xa3\0" /* offset 3592 */ 28912 "\x55\xcc\xa3\0" /* offset 3598 */ 28913 "\x75\xcc\xa3\0" /* offset 3602 */ 28914 "\x55\xcc\x89\0" /* offset 3606 */ 28915 "\x75\xcc\x89\0" /* offset 3610 */ 28916 "\x55\xcc\x9b\xcc\x81\0" /* offset 3614 */ 28917 "\x75\xcc\x9b\xcc\x81\0" /* offset 3620 */ 28918 "\x55\xcc\x9b\xcc\x80\0" /* offset 3626 */ 28919 "\x75\xcc\x9b\xcc\x80\0" /* offset 3632 */ 28920 "\x55\xcc\x9b\xcc\x89\0" /* offset 3638 */ 28921 "\x75\xcc\x9b\xcc\x89\0" /* offset 3644 */ 28922 "\x55\xcc\x9b\xcc\x83\0" /* offset 3650 */ 28923 "\x75\xcc\x9b\xcc\x83\0" /* offset 3656 */ 28924 "\x55\xcc\x9b\xcc\xa3\0" /* offset 3662 */ 28925 "\x75\xcc\x9b\xcc\xa3\0" /* offset 3668 */ 28926 "\x59\xcc\x80\0" /* offset 3674 */ 28927 "\x79\xcc\x80\0" /* offset 3678 */ 28928 "\x59\xcc\xa3\0" /* offset 3682 */ 28929 "\x79\xcc\xa3\0" /* offset 3686 */ 28930 "\x59\xcc\x89\0" /* offset 3690 */ 28931 "\x79\xcc\x89\0" /* offset 3694 */ 28932 "\x59\xcc\x83\0" /* offset 3698 */ 28933 "\x79\xcc\x83\0" /* offset 3702 */ 28934 "\xce\xb1\xcc\x93\0" /* offset 3706 */ 28935 "\xce\xb1\xcc\x94\0" /* offset 3711 */ 28936 "\xce\xb1\xcc\x93\xcc\x80\0" /* offset 3716 */ 28937 "\xce\xb1\xcc\x94\xcc\x80\0" /* offset 3723 */ 28938 "\xce\xb1\xcc\x93\xcc\x81\0" /* offset 3730 */ 28939 "\xce\xb1\xcc\x94\xcc\x81\0" /* offset 3737 */ 28940 "\xce\xb1\xcc\x93\xcd\x82\0" /* offset 3744 */ 28941 "\xce\xb1\xcc\x94\xcd\x82\0" /* offset 3751 */ 28942 "\xce\x91\xcc\x93\0" /* offset 3758 */ 28943 "\xce\x91\xcc\x94\0" /* offset 3763 */ 28944 "\xce\x91\xcc\x93\xcc\x80\0" /* offset 3768 */ 28945 "\xce\x91\xcc\x94\xcc\x80\0" /* offset 3775 */ 28946 "\xce\x91\xcc\x93\xcc\x81\0" /* offset 3782 */ 28947 "\xce\x91\xcc\x94\xcc\x81\0" /* offset 3789 */ 28948 "\xce\x91\xcc\x93\xcd\x82\0" /* offset 3796 */ 28949 "\xce\x91\xcc\x94\xcd\x82\0" /* offset 3803 */ 28950 "\xce\xb5\xcc\x93\0" /* offset 3810 */ 28951 "\xce\xb5\xcc\x94\0" /* offset 3815 */ 28952 "\xce\xb5\xcc\x93\xcc\x80\0" /* offset 3820 */ 28953 "\xce\xb5\xcc\x94\xcc\x80\0" /* offset 3827 */ 28954 "\xce\xb5\xcc\x93\xcc\x81\0" /* offset 3834 */ 28955 "\xce\xb5\xcc\x94\xcc\x81\0" /* offset 3841 */ 28956 "\xce\x95\xcc\x93\0" /* offset 3848 */ 28957 "\xce\x95\xcc\x94\0" /* offset 3853 */ 28958 "\xce\x95\xcc\x93\xcc\x80\0" /* offset 3858 */ 28959 "\xce\x95\xcc\x94\xcc\x80\0" /* offset 3865 */ 28960 "\xce\x95\xcc\x93\xcc\x81\0" /* offset 3872 */ 28961 "\xce\x95\xcc\x94\xcc\x81\0" /* offset 3879 */ 28962 "\xce\xb7\xcc\x93\0" /* offset 3886 */ 28963 "\xce\xb7\xcc\x94\0" /* offset 3891 */ 28964 "\xce\xb7\xcc\x93\xcc\x80\0" /* offset 3896 */ 28965 "\xce\xb7\xcc\x94\xcc\x80\0" /* offset 3903 */ 28966 "\xce\xb7\xcc\x93\xcc\x81\0" /* offset 3910 */ 28967 "\xce\xb7\xcc\x94\xcc\x81\0" /* offset 3917 */ 28968 "\xce\xb7\xcc\x93\xcd\x82\0" /* offset 3924 */ 28969 "\xce\xb7\xcc\x94\xcd\x82\0" /* offset 3931 */ 28970 "\xce\x97\xcc\x93\0" /* offset 3938 */ 28971 "\xce\x97\xcc\x94\0" /* offset 3943 */ 28972 "\xce\x97\xcc\x93\xcc\x80\0" /* offset 3948 */ 28973 "\xce\x97\xcc\x94\xcc\x80\0" /* offset 3955 */ 28974 "\xce\x97\xcc\x93\xcc\x81\0" /* offset 3962 */ 28975 "\xce\x97\xcc\x94\xcc\x81\0" /* offset 3969 */ 28976 "\xce\x97\xcc\x93\xcd\x82\0" /* offset 3976 */ 28977 "\xce\x97\xcc\x94\xcd\x82\0" /* offset 3983 */ 28978 "\xce\xb9\xcc\x93\0" /* offset 3990 */ 28979 "\xce\xb9\xcc\x94\0" /* offset 3995 */ 28980 "\xce\xb9\xcc\x93\xcc\x80\0" /* offset 4000 */ 28981 "\xce\xb9\xcc\x94\xcc\x80\0" /* offset 4007 */ 28982 "\xce\xb9\xcc\x93\xcc\x81\0" /* offset 4014 */ 28983 "\xce\xb9\xcc\x94\xcc\x81\0" /* offset 4021 */ 28984 "\xce\xb9\xcc\x93\xcd\x82\0" /* offset 4028 */ 28985 "\xce\xb9\xcc\x94\xcd\x82\0" /* offset 4035 */ 28986 "\xce\x99\xcc\x93\0" /* offset 4042 */ 28987 "\xce\x99\xcc\x94\0" /* offset 4047 */ 28988 "\xce\x99\xcc\x93\xcc\x80\0" /* offset 4052 */ 28989 "\xce\x99\xcc\x94\xcc\x80\0" /* offset 4059 */ 28990 "\xce\x99\xcc\x93\xcc\x81\0" /* offset 4066 */ 28991 "\xce\x99\xcc\x94\xcc\x81\0" /* offset 4073 */ 28992 "\xce\x99\xcc\x93\xcd\x82\0" /* offset 4080 */ 28993 "\xce\x99\xcc\x94\xcd\x82\0" /* offset 4087 */ 28994 "\xce\xbf\xcc\x93\0" /* offset 4094 */ 28995 "\xce\xbf\xcc\x94\0" /* offset 4099 */ 28996 "\xce\xbf\xcc\x93\xcc\x80\0" /* offset 4104 */ 28997 "\xce\xbf\xcc\x94\xcc\x80\0" /* offset 4111 */ 28998 "\xce\xbf\xcc\x93\xcc\x81\0" /* offset 4118 */ 28999 "\xce\xbf\xcc\x94\xcc\x81\0" /* offset 4125 */ 29000 "\xce\x9f\xcc\x93\0" /* offset 4132 */ 29001 "\xce\x9f\xcc\x94\0" /* offset 4137 */ 29002 "\xce\x9f\xcc\x93\xcc\x80\0" /* offset 4142 */ 29003 "\xce\x9f\xcc\x94\xcc\x80\0" /* offset 4149 */ 29004 "\xce\x9f\xcc\x93\xcc\x81\0" /* offset 4156 */ 29005 "\xce\x9f\xcc\x94\xcc\x81\0" /* offset 4163 */ 29006 "\xcf\x85\xcc\x93\0" /* offset 4170 */ 29007 "\xcf\x85\xcc\x94\0" /* offset 4175 */ 29008 "\xcf\x85\xcc\x93\xcc\x80\0" /* offset 4180 */ 29009 "\xcf\x85\xcc\x94\xcc\x80\0" /* offset 4187 */ 29010 "\xcf\x85\xcc\x93\xcc\x81\0" /* offset 4194 */ 29011 "\xcf\x85\xcc\x94\xcc\x81\0" /* offset 4201 */ 29012 "\xcf\x85\xcc\x93\xcd\x82\0" /* offset 4208 */ 29013 "\xcf\x85\xcc\x94\xcd\x82\0" /* offset 4215 */ 29014 "\xce\xa5\xcc\x94\0" /* offset 4222 */ 29015 "\xce\xa5\xcc\x94\xcc\x80\0" /* offset 4227 */ 29016 "\xce\xa5\xcc\x94\xcc\x81\0" /* offset 4234 */ 29017 "\xce\xa5\xcc\x94\xcd\x82\0" /* offset 4241 */ 29018 "\xcf\x89\xcc\x93\0" /* offset 4248 */ 29019 "\xcf\x89\xcc\x94\0" /* offset 4253 */ 29020 "\xcf\x89\xcc\x93\xcc\x80\0" /* offset 4258 */ 29021 "\xcf\x89\xcc\x94\xcc\x80\0" /* offset 4265 */ 29022 "\xcf\x89\xcc\x93\xcc\x81\0" /* offset 4272 */ 29023 "\xcf\x89\xcc\x94\xcc\x81\0" /* offset 4279 */ 29024 "\xcf\x89\xcc\x93\xcd\x82\0" /* offset 4286 */ 29025 "\xcf\x89\xcc\x94\xcd\x82\0" /* offset 4293 */ 29026 "\xce\xa9\xcc\x93\0" /* offset 4300 */ 29027 "\xce\xa9\xcc\x94\0" /* offset 4305 */ 29028 "\xce\xa9\xcc\x93\xcc\x80\0" /* offset 4310 */ 29029 "\xce\xa9\xcc\x94\xcc\x80\0" /* offset 4317 */ 29030 "\xce\xa9\xcc\x93\xcc\x81\0" /* offset 4324 */ 29031 "\xce\xa9\xcc\x94\xcc\x81\0" /* offset 4331 */ 29032 "\xce\xa9\xcc\x93\xcd\x82\0" /* offset 4338 */ 29033 "\xce\xa9\xcc\x94\xcd\x82\0" /* offset 4345 */ 29034 "\xce\xb1\xcc\x80\0" /* offset 4352 */ 29035 "\xce\xb5\xcc\x80\0" /* offset 4357 */ 29036 "\xce\xb7\xcc\x80\0" /* offset 4362 */ 29037 "\xce\xb9\xcc\x80\0" /* offset 4367 */ 29038 "\xce\xbf\xcc\x80\0" /* offset 4372 */ 29039 "\xcf\x85\xcc\x80\0" /* offset 4377 */ 29040 "\xcf\x89\xcc\x80\0" /* offset 4382 */ 29041 "\xce\xb1\xcc\x93\xcd\x85\0" /* offset 4387 */ 29042 "\xce\xb1\xcc\x94\xcd\x85\0" /* offset 4394 */ 29043 "\xce\xb1\xcc\x93\xcc\x80\xcd\x85\0" /* offset 4401 */ 29044 "\xce\xb1\xcc\x94\xcc\x80\xcd\x85\0" /* offset 4410 */ 29045 "\xce\xb1\xcc\x93\xcc\x81\xcd\x85\0" /* offset 4419 */ 29046 "\xce\xb1\xcc\x94\xcc\x81\xcd\x85\0" /* offset 4428 */ 29047 "\xce\xb1\xcc\x93\xcd\x82\xcd\x85\0" /* offset 4437 */ 29048 "\xce\xb1\xcc\x94\xcd\x82\xcd\x85\0" /* offset 4446 */ 29049 "\xce\x91\xcc\x93\xcd\x85\0" /* offset 4455 */ 29050 "\xce\x91\xcc\x94\xcd\x85\0" /* offset 4462 */ 29051 "\xce\x91\xcc\x93\xcc\x80\xcd\x85\0" /* offset 4469 */ 29052 "\xce\x91\xcc\x94\xcc\x80\xcd\x85\0" /* offset 4478 */ 29053 "\xce\x91\xcc\x93\xcc\x81\xcd\x85\0" /* offset 4487 */ 29054 "\xce\x91\xcc\x94\xcc\x81\xcd\x85\0" /* offset 4496 */ 29055 "\xce\x91\xcc\x93\xcd\x82\xcd\x85\0" /* offset 4505 */ 29056 "\xce\x91\xcc\x94\xcd\x82\xcd\x85\0" /* offset 4514 */ 29057 "\xce\xb7\xcc\x93\xcd\x85\0" /* offset 4523 */ 29058 "\xce\xb7\xcc\x94\xcd\x85\0" /* offset 4530 */ 29059 "\xce\xb7\xcc\x93\xcc\x80\xcd\x85\0" /* offset 4537 */ 29060 "\xce\xb7\xcc\x94\xcc\x80\xcd\x85\0" /* offset 4546 */ 29061 "\xce\xb7\xcc\x93\xcc\x81\xcd\x85\0" /* offset 4555 */ 29062 "\xce\xb7\xcc\x94\xcc\x81\xcd\x85\0" /* offset 4564 */ 29063 "\xce\xb7\xcc\x93\xcd\x82\xcd\x85\0" /* offset 4573 */ 29064 "\xce\xb7\xcc\x94\xcd\x82\xcd\x85\0" /* offset 4582 */ 29065 "\xce\x97\xcc\x93\xcd\x85\0" /* offset 4591 */ 29066 "\xce\x97\xcc\x94\xcd\x85\0" /* offset 4598 */ 29067 "\xce\x97\xcc\x93\xcc\x80\xcd\x85\0" /* offset 4605 */ 29068 "\xce\x97\xcc\x94\xcc\x80\xcd\x85\0" /* offset 4614 */ 29069 "\xce\x97\xcc\x93\xcc\x81\xcd\x85\0" /* offset 4623 */ 29070 "\xce\x97\xcc\x94\xcc\x81\xcd\x85\0" /* offset 4632 */ 29071 "\xce\x97\xcc\x93\xcd\x82\xcd\x85\0" /* offset 4641 */ 29072 "\xce\x97\xcc\x94\xcd\x82\xcd\x85\0" /* offset 4650 */ 29073 "\xcf\x89\xcc\x93\xcd\x85\0" /* offset 4659 */ 29074 "\xcf\x89\xcc\x94\xcd\x85\0" /* offset 4666 */ 29075 "\xcf\x89\xcc\x93\xcc\x80\xcd\x85\0" /* offset 4673 */ 29076 "\xcf\x89\xcc\x94\xcc\x80\xcd\x85\0" /* offset 4682 */ 29077 "\xcf\x89\xcc\x93\xcc\x81\xcd\x85\0" /* offset 4691 */ 29078 "\xcf\x89\xcc\x94\xcc\x81\xcd\x85\0" /* offset 4700 */ 29079 "\xcf\x89\xcc\x93\xcd\x82\xcd\x85\0" /* offset 4709 */ 29080 "\xcf\x89\xcc\x94\xcd\x82\xcd\x85\0" /* offset 4718 */ 29081 "\xce\xa9\xcc\x93\xcd\x85\0" /* offset 4727 */ 29082 "\xce\xa9\xcc\x94\xcd\x85\0" /* offset 4734 */ 29083 "\xce\xa9\xcc\x93\xcc\x80\xcd\x85\0" /* offset 4741 */ 29084 "\xce\xa9\xcc\x94\xcc\x80\xcd\x85\0" /* offset 4750 */ 29085 "\xce\xa9\xcc\x93\xcc\x81\xcd\x85\0" /* offset 4759 */ 29086 "\xce\xa9\xcc\x94\xcc\x81\xcd\x85\0" /* offset 4768 */ 29087 "\xce\xa9\xcc\x93\xcd\x82\xcd\x85\0" /* offset 4777 */ 29088 "\xce\xa9\xcc\x94\xcd\x82\xcd\x85\0" /* offset 4786 */ 29089 "\xce\xb1\xcc\x86\0" /* offset 4795 */ 29090 "\xce\xb1\xcc\x84\0" /* offset 4800 */ 29091 "\xce\xb1\xcc\x80\xcd\x85\0" /* offset 4805 */ 29092 "\xce\xb1\xcd\x85\0" /* offset 4812 */ 29093 "\xce\xb1\xcc\x81\xcd\x85\0" /* offset 4817 */ 29094 "\xce\xb1\xcd\x82\0" /* offset 4824 */ 29095 "\xce\xb1\xcd\x82\xcd\x85\0" /* offset 4829 */ 29096 "\xce\x91\xcc\x86\0" /* offset 4836 */ 29097 "\xce\x91\xcc\x84\0" /* offset 4841 */ 29098 "\xce\x91\xcc\x80\0" /* offset 4846 */ 29099 "\xce\x91\xcd\x85\0" /* offset 4851 */ 29100 "\x20\xcc\x93\0" /* offset 4856 */ 29101 "\xce\xb9\0" /* offset 4860 */ 29102 "\x20\xcd\x82\0" /* offset 4863 */ 29103 "\xc2\xa8\xcd\x82\0" /* offset 4867 */ 29104 "\x20\xcc\x88\xcd\x82\0" /* offset 4872 */ 29105 "\xce\xb7\xcc\x80\xcd\x85\0" /* offset 4878 */ 29106 "\xce\xb7\xcd\x85\0" /* offset 4885 */ 29107 "\xce\xb7\xcc\x81\xcd\x85\0" /* offset 4890 */ 29108 "\xce\xb7\xcd\x82\0" /* offset 4897 */ 29109 "\xce\xb7\xcd\x82\xcd\x85\0" /* offset 4902 */ 29110 "\xce\x95\xcc\x80\0" /* offset 4909 */ 29111 "\xce\x97\xcc\x80\0" /* offset 4914 */ 29112 "\xce\x97\xcd\x85\0" /* offset 4919 */ 29113 "\xe1\xbe\xbf\xcc\x80\0" /* offset 4924 */ 29114 "\x20\xcc\x93\xcc\x80\0" /* offset 4930 */ 29115 "\xe1\xbe\xbf\xcc\x81\0" /* offset 4936 */ 29116 "\x20\xcc\x93\xcc\x81\0" /* offset 4942 */ 29117 "\xe1\xbe\xbf\xcd\x82\0" /* offset 4948 */ 29118 "\x20\xcc\x93\xcd\x82\0" /* offset 4954 */ 29119 "\xce\xb9\xcc\x86\0" /* offset 4960 */ 29120 "\xce\xb9\xcc\x84\0" /* offset 4965 */ 29121 "\xce\xb9\xcc\x88\xcc\x80\0" /* offset 4970 */ 29122 "\xce\xb9\xcd\x82\0" /* offset 4977 */ 29123 "\xce\xb9\xcc\x88\xcd\x82\0" /* offset 4982 */ 29124 "\xce\x99\xcc\x86\0" /* offset 4989 */ 29125 "\xce\x99\xcc\x84\0" /* offset 4994 */ 29126 "\xce\x99\xcc\x80\0" /* offset 4999 */ 29127 "\xe1\xbf\xbe\xcc\x80\0" /* offset 5004 */ 29128 "\x20\xcc\x94\xcc\x80\0" /* offset 5010 */ 29129 "\xe1\xbf\xbe\xcc\x81\0" /* offset 5016 */ 29130 "\x20\xcc\x94\xcc\x81\0" /* offset 5022 */ 29131 "\xe1\xbf\xbe\xcd\x82\0" /* offset 5028 */ 29132 "\x20\xcc\x94\xcd\x82\0" /* offset 5034 */ 29133 "\xcf\x85\xcc\x86\0" /* offset 5040 */ 29134 "\xcf\x85\xcc\x84\0" /* offset 5045 */ 29135 "\xcf\x85\xcc\x88\xcc\x80\0" /* offset 5050 */ 29136 "\xcf\x81\xcc\x93\0" /* offset 5057 */ 29137 "\xcf\x81\xcc\x94\0" /* offset 5062 */ 29138 "\xcf\x85\xcd\x82\0" /* offset 5067 */ 29139 "\xcf\x85\xcc\x88\xcd\x82\0" /* offset 5072 */ 29140 "\xce\xa5\xcc\x86\0" /* offset 5079 */ 29141 "\xce\xa5\xcc\x84\0" /* offset 5084 */ 29142 "\xce\xa5\xcc\x80\0" /* offset 5089 */ 29143 "\xce\xa1\xcc\x94\0" /* offset 5094 */ 29144 "\xc2\xa8\xcc\x80\0" /* offset 5099 */ 29145 "\x20\xcc\x88\xcc\x80\0" /* offset 5104 */ 29146 "\x60\0" /* offset 5110 */ 29147 "\xcf\x89\xcc\x80\xcd\x85\0" /* offset 5112 */ 29148 "\xcf\x89\xcd\x85\0" /* offset 5119 */ 29149 "\xcf\x89\xcc\x81\xcd\x85\0" /* offset 5124 */ 29150 "\xcf\x89\xcd\x82\0" /* offset 5131 */ 29151 "\xcf\x89\xcd\x82\xcd\x85\0" /* offset 5136 */ 29152 "\xce\x9f\xcc\x80\0" /* offset 5143 */ 29153 "\xce\xa9\xcc\x80\0" /* offset 5148 */ 29154 "\xce\xa9\xcd\x85\0" /* offset 5153 */ 29155 "\xc2\xb4\0" /* offset 5158 */ 29156 "\x20\xcc\x94\0" /* offset 5161 */ 29157 "\xe2\x80\x82\0" /* offset 5165 */ 29158 "\xe2\x80\x83\0" /* offset 5169 */ 29159 "\xe2\x80\x90\0" /* offset 5173 */ 29160 "\x20\xcc\xb3\0" /* offset 5177 */ 29161 "\x2e\0" /* offset 5181 */ 29162 "\x2e\x2e\0" /* offset 5183 */ 29163 "\x2e\x2e\x2e\0" /* offset 5186 */ 29164 "\xe2\x80\xb2\xe2\x80\xb2\0" /* offset 5190 */ 29165 "\xe2\x80\xb2\xe2\x80\xb2\xe2\x80\xb2\0" /* offset 5197 */ 29166 "\xe2\x80\xb5\xe2\x80\xb5\0" /* offset 5207 */ 29167 "\xe2\x80\xb5\xe2\x80\xb5\xe2\x80\xb5\0" /* offset 5214 */ 29168 "\x21\x21\0" /* offset 5224 */ 29169 "\x20\xcc\x85\0" /* offset 5227 */ 29170 "\x3f\x3f\0" /* offset 5231 */ 29171 "\x3f\x21\0" /* offset 5234 */ 29172 "\x21\x3f\0" /* offset 5237 */ 29173 "\xe2\x80\xb2\xe2\x80\xb2\xe2\x80\xb2\xe2\x80\xb2\0" /* offset 5240 */ 29174 "\x30\0" /* offset 5253 */ 29175 "\x34\0" /* offset 5255 */ 29176 "\x35\0" /* offset 5257 */ 29177 "\x36\0" /* offset 5259 */ 29178 "\x37\0" /* offset 5261 */ 29179 "\x38\0" /* offset 5263 */ 29180 "\x39\0" /* offset 5265 */ 29181 "\x2b\0" /* offset 5267 */ 29182 "\xe2\x88\x92\0" /* offset 5269 */ 29183 "\x3d\0" /* offset 5273 */ 29184 "\x28\0" /* offset 5275 */ 29185 "\x29\0" /* offset 5277 */ 29186 "\x6e\0" /* offset 5279 */ 29187 "\x52\x73\0" /* offset 5281 */ 29188 "\x61\x2f\x63\0" /* offset 5284 */ 29189 "\x61\x2f\x73\0" /* offset 5288 */ 29190 "\x43\0" /* offset 5292 */ 29191 "\xc2\xb0\x43\0" /* offset 5294 */ 29192 "\x63\x2f\x6f\0" /* offset 5298 */ 29193 "\x63\x2f\x75\0" /* offset 5302 */ 29194 "\xc6\x90\0" /* offset 5306 */ 29195 "\xc2\xb0\x46\0" /* offset 5309 */ 29196 "\xc4\xa7\0" /* offset 5313 */ 29197 "\x4e\x6f\0" /* offset 5316 */ 29198 "\x51\0" /* offset 5319 */ 29199 "\x53\x4d\0" /* offset 5321 */ 29200 "\x54\x45\x4c\0" /* offset 5324 */ 29201 "\x54\x4d\0" /* offset 5328 */ 29202 "\x5a\0" /* offset 5331 */ 29203 "\xce\xa9\0" /* offset 5333 */ 29204 "\x46\0" /* offset 5336 */ 29205 "\xd7\x90\0" /* offset 5338 */ 29206 "\xd7\x91\0" /* offset 5341 */ 29207 "\xd7\x92\0" /* offset 5344 */ 29208 "\xd7\x93\0" /* offset 5347 */ 29209 "\x46\x41\x58\0" /* offset 5350 */ 29210 "\xce\x93\0" /* offset 5354 */ 29211 "\xce\xa0\0" /* offset 5357 */ 29212 "\xe2\x88\x91\0" /* offset 5360 */ 29213 "\x31\xe2\x81\x84\x37\0" /* offset 5364 */ 29214 "\x31\xe2\x81\x84\x39\0" /* offset 5370 */ 29215 "\x31\xe2\x81\x84\x31\x30\0" /* offset 5376 */ 29216 "\x31\xe2\x81\x84\x33\0" /* offset 5383 */ 29217 "\x32\xe2\x81\x84\x33\0" /* offset 5389 */ 29218 "\x31\xe2\x81\x84\x35\0" /* offset 5395 */ 29219 "\x32\xe2\x81\x84\x35\0" /* offset 5401 */ 29220 "\x33\xe2\x81\x84\x35\0" /* offset 5407 */ 29221 "\x34\xe2\x81\x84\x35\0" /* offset 5413 */ 29222 "\x31\xe2\x81\x84\x36\0" /* offset 5419 */ 29223 "\x35\xe2\x81\x84\x36\0" /* offset 5425 */ 29224 "\x31\xe2\x81\x84\x38\0" /* offset 5431 */ 29225 "\x33\xe2\x81\x84\x38\0" /* offset 5437 */ 29226 "\x35\xe2\x81\x84\x38\0" /* offset 5443 */ 29227 "\x37\xe2\x81\x84\x38\0" /* offset 5449 */ 29228 "\x31\xe2\x81\x84\0" /* offset 5455 */ 29229 "\x49\x49\0" /* offset 5460 */ 29230 "\x49\x49\x49\0" /* offset 5463 */ 29231 "\x49\x56\0" /* offset 5467 */ 29232 "\x56\0" /* offset 5470 */ 29233 "\x56\x49\0" /* offset 5472 */ 29234 "\x56\x49\x49\0" /* offset 5475 */ 29235 "\x56\x49\x49\x49\0" /* offset 5479 */ 29236 "\x49\x58\0" /* offset 5484 */ 29237 "\x58\0" /* offset 5487 */ 29238 "\x58\x49\0" /* offset 5489 */ 29239 "\x58\x49\x49\0" /* offset 5492 */ 29240 "\x69\x69\0" /* offset 5496 */ 29241 "\x69\x69\x69\0" /* offset 5499 */ 29242 "\x69\x76\0" /* offset 5503 */ 29243 "\x76\x69\0" /* offset 5506 */ 29244 "\x76\x69\x69\0" /* offset 5509 */ 29245 "\x76\x69\x69\x69\0" /* offset 5513 */ 29246 "\x69\x78\0" /* offset 5518 */ 29247 "\x78\x69\0" /* offset 5521 */ 29248 "\x78\x69\x69\0" /* offset 5524 */ 29249 "\x30\xe2\x81\x84\x33\0" /* offset 5528 */ 29250 "\xe2\x86\x90\xcc\xb8\0" /* offset 5534 */ 29251 "\xe2\x86\x92\xcc\xb8\0" /* offset 5540 */ 29252 "\xe2\x86\x94\xcc\xb8\0" /* offset 5546 */ 29253 "\xe2\x87\x90\xcc\xb8\0" /* offset 5552 */ 29254 "\xe2\x87\x94\xcc\xb8\0" /* offset 5558 */ 29255 "\xe2\x87\x92\xcc\xb8\0" /* offset 5564 */ 29256 "\xe2\x88\x83\xcc\xb8\0" /* offset 5570 */ 29257 "\xe2\x88\x88\xcc\xb8\0" /* offset 5576 */ 29258 "\xe2\x88\x8b\xcc\xb8\0" /* offset 5582 */ 29259 "\xe2\x88\xa3\xcc\xb8\0" /* offset 5588 */ 29260 "\xe2\x88\xa5\xcc\xb8\0" /* offset 5594 */ 29261 "\xe2\x88\xab\xe2\x88\xab\0" /* offset 5600 */ 29262 "\xe2\x88\xab\xe2\x88\xab\xe2\x88\xab\0" /* offset 5607 */ 29263 "\xe2\x88\xae\xe2\x88\xae\0" /* offset 5617 */ 29264 "\xe2\x88\xae\xe2\x88\xae\xe2\x88\xae\0" /* offset 5624 */ 29265 "\xe2\x88\xbc\xcc\xb8\0" /* offset 5634 */ 29266 "\xe2\x89\x83\xcc\xb8\0" /* offset 5640 */ 29267 "\xe2\x89\x85\xcc\xb8\0" /* offset 5646 */ 29268 "\xe2\x89\x88\xcc\xb8\0" /* offset 5652 */ 29269 "\x3d\xcc\xb8\0" /* offset 5658 */ 29270 "\xe2\x89\xa1\xcc\xb8\0" /* offset 5662 */ 29271 "\xe2\x89\x8d\xcc\xb8\0" /* offset 5668 */ 29272 "\x3c\xcc\xb8\0" /* offset 5674 */ 29273 "\x3e\xcc\xb8\0" /* offset 5678 */ 29274 "\xe2\x89\xa4\xcc\xb8\0" /* offset 5682 */ 29275 "\xe2\x89\xa5\xcc\xb8\0" /* offset 5688 */ 29276 "\xe2\x89\xb2\xcc\xb8\0" /* offset 5694 */ 29277 "\xe2\x89\xb3\xcc\xb8\0" /* offset 5700 */ 29278 "\xe2\x89\xb6\xcc\xb8\0" /* offset 5706 */ 29279 "\xe2\x89\xb7\xcc\xb8\0" /* offset 5712 */ 29280 "\xe2\x89\xba\xcc\xb8\0" /* offset 5718 */ 29281 "\xe2\x89\xbb\xcc\xb8\0" /* offset 5724 */ 29282 "\xe2\x8a\x82\xcc\xb8\0" /* offset 5730 */ 29283 "\xe2\x8a\x83\xcc\xb8\0" /* offset 5736 */ 29284 "\xe2\x8a\x86\xcc\xb8\0" /* offset 5742 */ 29285 "\xe2\x8a\x87\xcc\xb8\0" /* offset 5748 */ 29286 "\xe2\x8a\xa2\xcc\xb8\0" /* offset 5754 */ 29287 "\xe2\x8a\xa8\xcc\xb8\0" /* offset 5760 */ 29288 "\xe2\x8a\xa9\xcc\xb8\0" /* offset 5766 */ 29289 "\xe2\x8a\xab\xcc\xb8\0" /* offset 5772 */ 29290 "\xe2\x89\xbc\xcc\xb8\0" /* offset 5778 */ 29291 "\xe2\x89\xbd\xcc\xb8\0" /* offset 5784 */ 29292 "\xe2\x8a\x91\xcc\xb8\0" /* offset 5790 */ 29293 "\xe2\x8a\x92\xcc\xb8\0" /* offset 5796 */ 29294 "\xe2\x8a\xb2\xcc\xb8\0" /* offset 5802 */ 29295 "\xe2\x8a\xb3\xcc\xb8\0" /* offset 5808 */ 29296 "\xe2\x8a\xb4\xcc\xb8\0" /* offset 5814 */ 29297 "\xe2\x8a\xb5\xcc\xb8\0" /* offset 5820 */ 29298 "\xe3\x80\x88\0" /* offset 5826 */ 29299 "\xe3\x80\x89\0" /* offset 5830 */ 29300 "\x31\x30\0" /* offset 5834 */ 29301 "\x31\x31\0" /* offset 5837 */ 29302 "\x31\x32\0" /* offset 5840 */ 29303 "\x31\x33\0" /* offset 5843 */ 29304 "\x31\x34\0" /* offset 5846 */ 29305 "\x31\x35\0" /* offset 5849 */ 29306 "\x31\x36\0" /* offset 5852 */ 29307 "\x31\x37\0" /* offset 5855 */ 29308 "\x31\x38\0" /* offset 5858 */ 29309 "\x31\x39\0" /* offset 5861 */ 29310 "\x32\x30\0" /* offset 5864 */ 29311 "\x28\x31\x29\0" /* offset 5867 */ 29312 "\x28\x32\x29\0" /* offset 5871 */ 29313 "\x28\x33\x29\0" /* offset 5875 */ 29314 "\x28\x34\x29\0" /* offset 5879 */ 29315 "\x28\x35\x29\0" /* offset 5883 */ 29316 "\x28\x36\x29\0" /* offset 5887 */ 29317 "\x28\x37\x29\0" /* offset 5891 */ 29318 "\x28\x38\x29\0" /* offset 5895 */ 29319 "\x28\x39\x29\0" /* offset 5899 */ 29320 "\x28\x31\x30\x29\0" /* offset 5903 */ 29321 "\x28\x31\x31\x29\0" /* offset 5908 */ 29322 "\x28\x31\x32\x29\0" /* offset 5913 */ 29323 "\x28\x31\x33\x29\0" /* offset 5918 */ 29324 "\x28\x31\x34\x29\0" /* offset 5923 */ 29325 "\x28\x31\x35\x29\0" /* offset 5928 */ 29326 "\x28\x31\x36\x29\0" /* offset 5933 */ 29327 "\x28\x31\x37\x29\0" /* offset 5938 */ 29328 "\x28\x31\x38\x29\0" /* offset 5943 */ 29329 "\x28\x31\x39\x29\0" /* offset 5948 */ 29330 "\x28\x32\x30\x29\0" /* offset 5953 */ 29331 "\x31\x2e\0" /* offset 5958 */ 29332 "\x32\x2e\0" /* offset 5961 */ 29333 "\x33\x2e\0" /* offset 5964 */ 29334 "\x34\x2e\0" /* offset 5967 */ 29335 "\x35\x2e\0" /* offset 5970 */ 29336 "\x36\x2e\0" /* offset 5973 */ 29337 "\x37\x2e\0" /* offset 5976 */ 29338 "\x38\x2e\0" /* offset 5979 */ 29339 "\x39\x2e\0" /* offset 5982 */ 29340 "\x31\x30\x2e\0" /* offset 5985 */ 29341 "\x31\x31\x2e\0" /* offset 5989 */ 29342 "\x31\x32\x2e\0" /* offset 5993 */ 29343 "\x31\x33\x2e\0" /* offset 5997 */ 29344 "\x31\x34\x2e\0" /* offset 6001 */ 29345 "\x31\x35\x2e\0" /* offset 6005 */ 29346 "\x31\x36\x2e\0" /* offset 6009 */ 29347 "\x31\x37\x2e\0" /* offset 6013 */ 29348 "\x31\x38\x2e\0" /* offset 6017 */ 29349 "\x31\x39\x2e\0" /* offset 6021 */ 29350 "\x32\x30\x2e\0" /* offset 6025 */ 29351 "\x28\x61\x29\0" /* offset 6029 */ 29352 "\x28\x62\x29\0" /* offset 6033 */ 29353 "\x28\x63\x29\0" /* offset 6037 */ 29354 "\x28\x64\x29\0" /* offset 6041 */ 29355 "\x28\x65\x29\0" /* offset 6045 */ 29356 "\x28\x66\x29\0" /* offset 6049 */ 29357 "\x28\x67\x29\0" /* offset 6053 */ 29358 "\x28\x68\x29\0" /* offset 6057 */ 29359 "\x28\x69\x29\0" /* offset 6061 */ 29360 "\x28\x6a\x29\0" /* offset 6065 */ 29361 "\x28\x6b\x29\0" /* offset 6069 */ 29362 "\x28\x6c\x29\0" /* offset 6073 */ 29363 "\x28\x6d\x29\0" /* offset 6077 */ 29364 "\x28\x6e\x29\0" /* offset 6081 */ 29365 "\x28\x6f\x29\0" /* offset 6085 */ 29366 "\x28\x70\x29\0" /* offset 6089 */ 29367 "\x28\x71\x29\0" /* offset 6093 */ 29368 "\x28\x72\x29\0" /* offset 6097 */ 29369 "\x28\x73\x29\0" /* offset 6101 */ 29370 "\x28\x74\x29\0" /* offset 6105 */ 29371 "\x28\x75\x29\0" /* offset 6109 */ 29372 "\x28\x76\x29\0" /* offset 6113 */ 29373 "\x28\x77\x29\0" /* offset 6117 */ 29374 "\x28\x78\x29\0" /* offset 6121 */ 29375 "\x28\x79\x29\0" /* offset 6125 */ 29376 "\x28\x7a\x29\0" /* offset 6129 */ 29377 "\x53\0" /* offset 6133 */ 29378 "\x59\0" /* offset 6135 */ 29379 "\x71\0" /* offset 6137 */ 29380 "\xe2\x88\xab\xe2\x88\xab\xe2\x88\xab\xe2\x88\xab\0" /* offset 6139 */ 29381 "\x3a\x3a\x3d\0" /* offset 6152 */ 29382 "\x3d\x3d\0" /* offset 6156 */ 29383 "\x3d\x3d\x3d\0" /* offset 6159 */ 29384 "\xe2\xab\x9d\xcc\xb8\0" /* offset 6163 */ 29385 "\xe2\xb5\xa1\0" /* offset 6169 */ 29386 "\xe6\xaf\x8d\0" /* offset 6173 */ 29387 "\xe9\xbe\x9f\0" /* offset 6177 */ 29388 "\xe4\xb8\x80\0" /* offset 6181 */ 29389 "\xe4\xb8\xa8\0" /* offset 6185 */ 29390 "\xe4\xb8\xb6\0" /* offset 6189 */ 29391 "\xe4\xb8\xbf\0" /* offset 6193 */ 29392 "\xe4\xb9\x99\0" /* offset 6197 */ 29393 "\xe4\xba\x85\0" /* offset 6201 */ 29394 "\xe4\xba\x8c\0" /* offset 6205 */ 29395 "\xe4\xba\xa0\0" /* offset 6209 */ 29396 "\xe4\xba\xba\0" /* offset 6213 */ 29397 "\xe5\x84\xbf\0" /* offset 6217 */ 29398 "\xe5\x85\xa5\0" /* offset 6221 */ 29399 "\xe5\x85\xab\0" /* offset 6225 */ 29400 "\xe5\x86\x82\0" /* offset 6229 */ 29401 "\xe5\x86\x96\0" /* offset 6233 */ 29402 "\xe5\x86\xab\0" /* offset 6237 */ 29403 "\xe5\x87\xa0\0" /* offset 6241 */ 29404 "\xe5\x87\xb5\0" /* offset 6245 */ 29405 "\xe5\x88\x80\0" /* offset 6249 */ 29406 "\xe5\x8a\x9b\0" /* offset 6253 */ 29407 "\xe5\x8b\xb9\0" /* offset 6257 */ 29408 "\xe5\x8c\x95\0" /* offset 6261 */ 29409 "\xe5\x8c\x9a\0" /* offset 6265 */ 29410 "\xe5\x8c\xb8\0" /* offset 6269 */ 29411 "\xe5\x8d\x81\0" /* offset 6273 */ 29412 "\xe5\x8d\x9c\0" /* offset 6277 */ 29413 "\xe5\x8d\xa9\0" /* offset 6281 */ 29414 "\xe5\x8e\x82\0" /* offset 6285 */ 29415 "\xe5\x8e\xb6\0" /* offset 6289 */ 29416 "\xe5\x8f\x88\0" /* offset 6293 */ 29417 "\xe5\x8f\xa3\0" /* offset 6297 */ 29418 "\xe5\x9b\x97\0" /* offset 6301 */ 29419 "\xe5\x9c\x9f\0" /* offset 6305 */ 29420 "\xe5\xa3\xab\0" /* offset 6309 */ 29421 "\xe5\xa4\x82\0" /* offset 6313 */ 29422 "\xe5\xa4\x8a\0" /* offset 6317 */ 29423 "\xe5\xa4\x95\0" /* offset 6321 */ 29424 "\xe5\xa4\xa7\0" /* offset 6325 */ 29425 "\xe5\xa5\xb3\0" /* offset 6329 */ 29426 "\xe5\xad\x90\0" /* offset 6333 */ 29427 "\xe5\xae\x80\0" /* offset 6337 */ 29428 "\xe5\xaf\xb8\0" /* offset 6341 */ 29429 "\xe5\xb0\x8f\0" /* offset 6345 */ 29430 "\xe5\xb0\xa2\0" /* offset 6349 */ 29431 "\xe5\xb0\xb8\0" /* offset 6353 */ 29432 "\xe5\xb1\xae\0" /* offset 6357 */ 29433 "\xe5\xb1\xb1\0" /* offset 6361 */ 29434 "\xe5\xb7\x9b\0" /* offset 6365 */ 29435 "\xe5\xb7\xa5\0" /* offset 6369 */ 29436 "\xe5\xb7\xb1\0" /* offset 6373 */ 29437 "\xe5\xb7\xbe\0" /* offset 6377 */ 29438 "\xe5\xb9\xb2\0" /* offset 6381 */ 29439 "\xe5\xb9\xba\0" /* offset 6385 */ 29440 "\xe5\xb9\xbf\0" /* offset 6389 */ 29441 "\xe5\xbb\xb4\0" /* offset 6393 */ 29442 "\xe5\xbb\xbe\0" /* offset 6397 */ 29443 "\xe5\xbc\x8b\0" /* offset 6401 */ 29444 "\xe5\xbc\x93\0" /* offset 6405 */ 29445 "\xe5\xbd\x90\0" /* offset 6409 */ 29446 "\xe5\xbd\xa1\0" /* offset 6413 */ 29447 "\xe5\xbd\xb3\0" /* offset 6417 */ 29448 "\xe5\xbf\x83\0" /* offset 6421 */ 29449 "\xe6\x88\x88\0" /* offset 6425 */ 29450 "\xe6\x88\xb6\0" /* offset 6429 */ 29451 "\xe6\x89\x8b\0" /* offset 6433 */ 29452 "\xe6\x94\xaf\0" /* offset 6437 */ 29453 "\xe6\x94\xb4\0" /* offset 6441 */ 29454 "\xe6\x96\x87\0" /* offset 6445 */ 29455 "\xe6\x96\x97\0" /* offset 6449 */ 29456 "\xe6\x96\xa4\0" /* offset 6453 */ 29457 "\xe6\x96\xb9\0" /* offset 6457 */ 29458 "\xe6\x97\xa0\0" /* offset 6461 */ 29459 "\xe6\x97\xa5\0" /* offset 6465 */ 29460 "\xe6\x9b\xb0\0" /* offset 6469 */ 29461 "\xe6\x9c\x88\0" /* offset 6473 */ 29462 "\xe6\x9c\xa8\0" /* offset 6477 */ 29463 "\xe6\xac\xa0\0" /* offset 6481 */ 29464 "\xe6\xad\xa2\0" /* offset 6485 */ 29465 "\xe6\xad\xb9\0" /* offset 6489 */ 29466 "\xe6\xae\xb3\0" /* offset 6493 */ 29467 "\xe6\xaf\x8b\0" /* offset 6497 */ 29468 "\xe6\xaf\x94\0" /* offset 6501 */ 29469 "\xe6\xaf\x9b\0" /* offset 6505 */ 29470 "\xe6\xb0\x8f\0" /* offset 6509 */ 29471 "\xe6\xb0\x94\0" /* offset 6513 */ 29472 "\xe6\xb0\xb4\0" /* offset 6517 */ 29473 "\xe7\x81\xab\0" /* offset 6521 */ 29474 "\xe7\x88\xaa\0" /* offset 6525 */ 29475 "\xe7\x88\xb6\0" /* offset 6529 */ 29476 "\xe7\x88\xbb\0" /* offset 6533 */ 29477 "\xe7\x88\xbf\0" /* offset 6537 */ 29478 "\xe7\x89\x87\0" /* offset 6541 */ 29479 "\xe7\x89\x99\0" /* offset 6545 */ 29480 "\xe7\x89\x9b\0" /* offset 6549 */ 29481 "\xe7\x8a\xac\0" /* offset 6553 */ 29482 "\xe7\x8e\x84\0" /* offset 6557 */ 29483 "\xe7\x8e\x89\0" /* offset 6561 */ 29484 "\xe7\x93\x9c\0" /* offset 6565 */ 29485 "\xe7\x93\xa6\0" /* offset 6569 */ 29486 "\xe7\x94\x98\0" /* offset 6573 */ 29487 "\xe7\x94\x9f\0" /* offset 6577 */ 29488 "\xe7\x94\xa8\0" /* offset 6581 */ 29489 "\xe7\x94\xb0\0" /* offset 6585 */ 29490 "\xe7\x96\x8b\0" /* offset 6589 */ 29491 "\xe7\x96\x92\0" /* offset 6593 */ 29492 "\xe7\x99\xb6\0" /* offset 6597 */ 29493 "\xe7\x99\xbd\0" /* offset 6601 */ 29494 "\xe7\x9a\xae\0" /* offset 6605 */ 29495 "\xe7\x9a\xbf\0" /* offset 6609 */ 29496 "\xe7\x9b\xae\0" /* offset 6613 */ 29497 "\xe7\x9f\x9b\0" /* offset 6617 */ 29498 "\xe7\x9f\xa2\0" /* offset 6621 */ 29499 "\xe7\x9f\xb3\0" /* offset 6625 */ 29500 "\xe7\xa4\xba\0" /* offset 6629 */ 29501 "\xe7\xa6\xb8\0" /* offset 6633 */ 29502 "\xe7\xa6\xbe\0" /* offset 6637 */ 29503 "\xe7\xa9\xb4\0" /* offset 6641 */ 29504 "\xe7\xab\x8b\0" /* offset 6645 */ 29505 "\xe7\xab\xb9\0" /* offset 6649 */ 29506 "\xe7\xb1\xb3\0" /* offset 6653 */ 29507 "\xe7\xb3\xb8\0" /* offset 6657 */ 29508 "\xe7\xbc\xb6\0" /* offset 6661 */ 29509 "\xe7\xbd\x91\0" /* offset 6665 */ 29510 "\xe7\xbe\x8a\0" /* offset 6669 */ 29511 "\xe7\xbe\xbd\0" /* offset 6673 */ 29512 "\xe8\x80\x81\0" /* offset 6677 */ 29513 "\xe8\x80\x8c\0" /* offset 6681 */ 29514 "\xe8\x80\x92\0" /* offset 6685 */ 29515 "\xe8\x80\xb3\0" /* offset 6689 */ 29516 "\xe8\x81\xbf\0" /* offset 6693 */ 29517 "\xe8\x82\x89\0" /* offset 6697 */ 29518 "\xe8\x87\xa3\0" /* offset 6701 */ 29519 "\xe8\x87\xaa\0" /* offset 6705 */ 29520 "\xe8\x87\xb3\0" /* offset 6709 */ 29521 "\xe8\x87\xbc\0" /* offset 6713 */ 29522 "\xe8\x88\x8c\0" /* offset 6717 */ 29523 "\xe8\x88\x9b\0" /* offset 6721 */ 29524 "\xe8\x88\x9f\0" /* offset 6725 */ 29525 "\xe8\x89\xae\0" /* offset 6729 */ 29526 "\xe8\x89\xb2\0" /* offset 6733 */ 29527 "\xe8\x89\xb8\0" /* offset 6737 */ 29528 "\xe8\x99\x8d\0" /* offset 6741 */ 29529 "\xe8\x99\xab\0" /* offset 6745 */ 29530 "\xe8\xa1\x80\0" /* offset 6749 */ 29531 "\xe8\xa1\x8c\0" /* offset 6753 */ 29532 "\xe8\xa1\xa3\0" /* offset 6757 */ 29533 "\xe8\xa5\xbe\0" /* offset 6761 */ 29534 "\xe8\xa6\x8b\0" /* offset 6765 */ 29535 "\xe8\xa7\x92\0" /* offset 6769 */ 29536 "\xe8\xa8\x80\0" /* offset 6773 */ 29537 "\xe8\xb0\xb7\0" /* offset 6777 */ 29538 "\xe8\xb1\x86\0" /* offset 6781 */ 29539 "\xe8\xb1\x95\0" /* offset 6785 */ 29540 "\xe8\xb1\xb8\0" /* offset 6789 */ 29541 "\xe8\xb2\x9d\0" /* offset 6793 */ 29542 "\xe8\xb5\xa4\0" /* offset 6797 */ 29543 "\xe8\xb5\xb0\0" /* offset 6801 */ 29544 "\xe8\xb6\xb3\0" /* offset 6805 */ 29545 "\xe8\xba\xab\0" /* offset 6809 */ 29546 "\xe8\xbb\x8a\0" /* offset 6813 */ 29547 "\xe8\xbe\x9b\0" /* offset 6817 */ 29548 "\xe8\xbe\xb0\0" /* offset 6821 */ 29549 "\xe8\xbe\xb5\0" /* offset 6825 */ 29550 "\xe9\x82\x91\0" /* offset 6829 */ 29551 "\xe9\x85\x89\0" /* offset 6833 */ 29552 "\xe9\x87\x86\0" /* offset 6837 */ 29553 "\xe9\x87\x8c\0" /* offset 6841 */ 29554 "\xe9\x87\x91\0" /* offset 6845 */ 29555 "\xe9\x95\xb7\0" /* offset 6849 */ 29556 "\xe9\x96\x80\0" /* offset 6853 */ 29557 "\xe9\x98\x9c\0" /* offset 6857 */ 29558 "\xe9\x9a\xb6\0" /* offset 6861 */ 29559 "\xe9\x9a\xb9\0" /* offset 6865 */ 29560 "\xe9\x9b\xa8\0" /* offset 6869 */ 29561 "\xe9\x9d\x91\0" /* offset 6873 */ 29562 "\xe9\x9d\x9e\0" /* offset 6877 */ 29563 "\xe9\x9d\xa2\0" /* offset 6881 */ 29564 "\xe9\x9d\xa9\0" /* offset 6885 */ 29565 "\xe9\x9f\x8b\0" /* offset 6889 */ 29566 "\xe9\x9f\xad\0" /* offset 6893 */ 29567 "\xe9\x9f\xb3\0" /* offset 6897 */ 29568 "\xe9\xa0\x81\0" /* offset 6901 */ 29569 "\xe9\xa2\xa8\0" /* offset 6905 */ 29570 "\xe9\xa3\x9b\0" /* offset 6909 */ 29571 "\xe9\xa3\x9f\0" /* offset 6913 */ 29572 "\xe9\xa6\x96\0" /* offset 6917 */ 29573 "\xe9\xa6\x99\0" /* offset 6921 */ 29574 "\xe9\xa6\xac\0" /* offset 6925 */ 29575 "\xe9\xaa\xa8\0" /* offset 6929 */ 29576 "\xe9\xab\x98\0" /* offset 6933 */ 29577 "\xe9\xab\x9f\0" /* offset 6937 */ 29578 "\xe9\xac\xa5\0" /* offset 6941 */ 29579 "\xe9\xac\xaf\0" /* offset 6945 */ 29580 "\xe9\xac\xb2\0" /* offset 6949 */ 29581 "\xe9\xac\xbc\0" /* offset 6953 */ 29582 "\xe9\xad\x9a\0" /* offset 6957 */ 29583 "\xe9\xb3\xa5\0" /* offset 6961 */ 29584 "\xe9\xb9\xb5\0" /* offset 6965 */ 29585 "\xe9\xb9\xbf\0" /* offset 6969 */ 29586 "\xe9\xba\xa5\0" /* offset 6973 */ 29587 "\xe9\xba\xbb\0" /* offset 6977 */ 29588 "\xe9\xbb\x83\0" /* offset 6981 */ 29589 "\xe9\xbb\x8d\0" /* offset 6985 */ 29590 "\xe9\xbb\x91\0" /* offset 6989 */ 29591 "\xe9\xbb\xb9\0" /* offset 6993 */ 29592 "\xe9\xbb\xbd\0" /* offset 6997 */ 29593 "\xe9\xbc\x8e\0" /* offset 7001 */ 29594 "\xe9\xbc\x93\0" /* offset 7005 */ 29595 "\xe9\xbc\xa0\0" /* offset 7009 */ 29596 "\xe9\xbc\xbb\0" /* offset 7013 */ 29597 "\xe9\xbd\x8a\0" /* offset 7017 */ 29598 "\xe9\xbd\x92\0" /* offset 7021 */ 29599 "\xe9\xbe\x8d\0" /* offset 7025 */ 29600 "\xe9\xbe\x9c\0" /* offset 7029 */ 29601 "\xe9\xbe\xa0\0" /* offset 7033 */ 29602 "\xe3\x80\x92\0" /* offset 7037 */ 29603 "\xe5\x8d\x84\0" /* offset 7041 */ 29604 "\xe5\x8d\x85\0" /* offset 7045 */ 29605 "\xe3\x81\x8b\xe3\x82\x99\0" /* offset 7049 */ 29606 "\xe3\x81\x8d\xe3\x82\x99\0" /* offset 7056 */ 29607 "\xe3\x81\x8f\xe3\x82\x99\0" /* offset 7063 */ 29608 "\xe3\x81\x91\xe3\x82\x99\0" /* offset 7070 */ 29609 "\xe3\x81\x93\xe3\x82\x99\0" /* offset 7077 */ 29610 "\xe3\x81\x95\xe3\x82\x99\0" /* offset 7084 */ 29611 "\xe3\x81\x97\xe3\x82\x99\0" /* offset 7091 */ 29612 "\xe3\x81\x99\xe3\x82\x99\0" /* offset 7098 */ 29613 "\xe3\x81\x9b\xe3\x82\x99\0" /* offset 7105 */ 29614 "\xe3\x81\x9d\xe3\x82\x99\0" /* offset 7112 */ 29615 "\xe3\x81\x9f\xe3\x82\x99\0" /* offset 7119 */ 29616 "\xe3\x81\xa1\xe3\x82\x99\0" /* offset 7126 */ 29617 "\xe3\x81\xa4\xe3\x82\x99\0" /* offset 7133 */ 29618 "\xe3\x81\xa6\xe3\x82\x99\0" /* offset 7140 */ 29619 "\xe3\x81\xa8\xe3\x82\x99\0" /* offset 7147 */ 29620 "\xe3\x81\xaf\xe3\x82\x99\0" /* offset 7154 */ 29621 "\xe3\x81\xaf\xe3\x82\x9a\0" /* offset 7161 */ 29622 "\xe3\x81\xb2\xe3\x82\x99\0" /* offset 7168 */ 29623 "\xe3\x81\xb2\xe3\x82\x9a\0" /* offset 7175 */ 29624 "\xe3\x81\xb5\xe3\x82\x99\0" /* offset 7182 */ 29625 "\xe3\x81\xb5\xe3\x82\x9a\0" /* offset 7189 */ 29626 "\xe3\x81\xb8\xe3\x82\x99\0" /* offset 7196 */ 29627 "\xe3\x81\xb8\xe3\x82\x9a\0" /* offset 7203 */ 29628 "\xe3\x81\xbb\xe3\x82\x99\0" /* offset 7210 */ 29629 "\xe3\x81\xbb\xe3\x82\x9a\0" /* offset 7217 */ 29630 "\xe3\x81\x86\xe3\x82\x99\0" /* offset 7224 */ 29631 "\x20\xe3\x82\x99\0" /* offset 7231 */ 29632 "\x20\xe3\x82\x9a\0" /* offset 7236 */ 29633 "\xe3\x82\x9d\xe3\x82\x99\0" /* offset 7241 */ 29634 "\xe3\x82\x88\xe3\x82\x8a\0" /* offset 7248 */ 29635 "\xe3\x82\xab\xe3\x82\x99\0" /* offset 7255 */ 29636 "\xe3\x82\xad\xe3\x82\x99\0" /* offset 7262 */ 29637 "\xe3\x82\xaf\xe3\x82\x99\0" /* offset 7269 */ 29638 "\xe3\x82\xb1\xe3\x82\x99\0" /* offset 7276 */ 29639 "\xe3\x82\xb3\xe3\x82\x99\0" /* offset 7283 */ 29640 "\xe3\x82\xb5\xe3\x82\x99\0" /* offset 7290 */ 29641 "\xe3\x82\xb7\xe3\x82\x99\0" /* offset 7297 */ 29642 "\xe3\x82\xb9\xe3\x82\x99\0" /* offset 7304 */ 29643 "\xe3\x82\xbb\xe3\x82\x99\0" /* offset 7311 */ 29644 "\xe3\x82\xbd\xe3\x82\x99\0" /* offset 7318 */ 29645 "\xe3\x82\xbf\xe3\x82\x99\0" /* offset 7325 */ 29646 "\xe3\x83\x81\xe3\x82\x99\0" /* offset 7332 */ 29647 "\xe3\x83\x84\xe3\x82\x99\0" /* offset 7339 */ 29648 "\xe3\x83\x86\xe3\x82\x99\0" /* offset 7346 */ 29649 "\xe3\x83\x88\xe3\x82\x99\0" /* offset 7353 */ 29650 "\xe3\x83\x8f\xe3\x82\x99\0" /* offset 7360 */ 29651 "\xe3\x83\x8f\xe3\x82\x9a\0" /* offset 7367 */ 29652 "\xe3\x83\x92\xe3\x82\x99\0" /* offset 7374 */ 29653 "\xe3\x83\x92\xe3\x82\x9a\0" /* offset 7381 */ 29654 "\xe3\x83\x95\xe3\x82\x99\0" /* offset 7388 */ 29655 "\xe3\x83\x95\xe3\x82\x9a\0" /* offset 7395 */ 29656 "\xe3\x83\x98\xe3\x82\x99\0" /* offset 7402 */ 29657 "\xe3\x83\x98\xe3\x82\x9a\0" /* offset 7409 */ 29658 "\xe3\x83\x9b\xe3\x82\x99\0" /* offset 7416 */ 29659 "\xe3\x83\x9b\xe3\x82\x9a\0" /* offset 7423 */ 29660 "\xe3\x82\xa6\xe3\x82\x99\0" /* offset 7430 */ 29661 "\xe3\x83\xaf\xe3\x82\x99\0" /* offset 7437 */ 29662 "\xe3\x83\xb0\xe3\x82\x99\0" /* offset 7444 */ 29663 "\xe3\x83\xb1\xe3\x82\x99\0" /* offset 7451 */ 29664 "\xe3\x83\xb2\xe3\x82\x99\0" /* offset 7458 */ 29665 "\xe3\x83\xbd\xe3\x82\x99\0" /* offset 7465 */ 29666 "\xe3\x82\xb3\xe3\x83\x88\0" /* offset 7472 */ 29667 "\xe1\x84\x80\0" /* offset 7479 */ 29668 "\xe1\x84\x81\0" /* offset 7483 */ 29669 "\xe1\x86\xaa\0" /* offset 7487 */ 29670 "\xe1\x84\x82\0" /* offset 7491 */ 29671 "\xe1\x86\xac\0" /* offset 7495 */ 29672 "\xe1\x86\xad\0" /* offset 7499 */ 29673 "\xe1\x84\x83\0" /* offset 7503 */ 29674 "\xe1\x84\x84\0" /* offset 7507 */ 29675 "\xe1\x84\x85\0" /* offset 7511 */ 29676 "\xe1\x86\xb0\0" /* offset 7515 */ 29677 "\xe1\x86\xb1\0" /* offset 7519 */ 29678 "\xe1\x86\xb2\0" /* offset 7523 */ 29679 "\xe1\x86\xb3\0" /* offset 7527 */ 29680 "\xe1\x86\xb4\0" /* offset 7531 */ 29681 "\xe1\x86\xb5\0" /* offset 7535 */ 29682 "\xe1\x84\x9a\0" /* offset 7539 */ 29683 "\xe1\x84\x86\0" /* offset 7543 */ 29684 "\xe1\x84\x87\0" /* offset 7547 */ 29685 "\xe1\x84\x88\0" /* offset 7551 */ 29686 "\xe1\x84\xa1\0" /* offset 7555 */ 29687 "\xe1\x84\x89\0" /* offset 7559 */ 29688 "\xe1\x84\x8a\0" /* offset 7563 */ 29689 "\xe1\x84\x8b\0" /* offset 7567 */ 29690 "\xe1\x84\x8c\0" /* offset 7571 */ 29691 "\xe1\x84\x8d\0" /* offset 7575 */ 29692 "\xe1\x84\x8e\0" /* offset 7579 */ 29693 "\xe1\x84\x8f\0" /* offset 7583 */ 29694 "\xe1\x84\x90\0" /* offset 7587 */ 29695 "\xe1\x84\x91\0" /* offset 7591 */ 29696 "\xe1\x84\x92\0" /* offset 7595 */ 29697 "\xe1\x85\xa1\0" /* offset 7599 */ 29698 "\xe1\x85\xa2\0" /* offset 7603 */ 29699 "\xe1\x85\xa3\0" /* offset 7607 */ 29700 "\xe1\x85\xa4\0" /* offset 7611 */ 29701 "\xe1\x85\xa5\0" /* offset 7615 */ 29702 "\xe1\x85\xa6\0" /* offset 7619 */ 29703 "\xe1\x85\xa7\0" /* offset 7623 */ 29704 "\xe1\x85\xa8\0" /* offset 7627 */ 29705 "\xe1\x85\xa9\0" /* offset 7631 */ 29706 "\xe1\x85\xaa\0" /* offset 7635 */ 29707 "\xe1\x85\xab\0" /* offset 7639 */ 29708 "\xe1\x85\xac\0" /* offset 7643 */ 29709 "\xe1\x85\xad\0" /* offset 7647 */ 29710 "\xe1\x85\xae\0" /* offset 7651 */ 29711 "\xe1\x85\xaf\0" /* offset 7655 */ 29712 "\xe1\x85\xb0\0" /* offset 7659 */ 29713 "\xe1\x85\xb1\0" /* offset 7663 */ 29714 "\xe1\x85\xb2\0" /* offset 7667 */ 29715 "\xe1\x85\xb3\0" /* offset 7671 */ 29716 "\xe1\x85\xb4\0" /* offset 7675 */ 29717 "\xe1\x85\xb5\0" /* offset 7679 */ 29718 "\xe1\x85\xa0\0" /* offset 7683 */ 29719 "\xe1\x84\x94\0" /* offset 7687 */ 29720 "\xe1\x84\x95\0" /* offset 7691 */ 29721 "\xe1\x87\x87\0" /* offset 7695 */ 29722 "\xe1\x87\x88\0" /* offset 7699 */ 29723 "\xe1\x87\x8c\0" /* offset 7703 */ 29724 "\xe1\x87\x8e\0" /* offset 7707 */ 29725 "\xe1\x87\x93\0" /* offset 7711 */ 29726 "\xe1\x87\x97\0" /* offset 7715 */ 29727 "\xe1\x87\x99\0" /* offset 7719 */ 29728 "\xe1\x84\x9c\0" /* offset 7723 */ 29729 "\xe1\x87\x9d\0" /* offset 7727 */ 29730 "\xe1\x87\x9f\0" /* offset 7731 */ 29731 "\xe1\x84\x9d\0" /* offset 7735 */ 29732 "\xe1\x84\x9e\0" /* offset 7739 */ 29733 "\xe1\x84\xa0\0" /* offset 7743 */ 29734 "\xe1\x84\xa2\0" /* offset 7747 */ 29735 "\xe1\x84\xa3\0" /* offset 7751 */ 29736 "\xe1\x84\xa7\0" /* offset 7755 */ 29737 "\xe1\x84\xa9\0" /* offset 7759 */ 29738 "\xe1\x84\xab\0" /* offset 7763 */ 29739 "\xe1\x84\xac\0" /* offset 7767 */ 29740 "\xe1\x84\xad\0" /* offset 7771 */ 29741 "\xe1\x84\xae\0" /* offset 7775 */ 29742 "\xe1\x84\xaf\0" /* offset 7779 */ 29743 "\xe1\x84\xb2\0" /* offset 7783 */ 29744 "\xe1\x84\xb6\0" /* offset 7787 */ 29745 "\xe1\x85\x80\0" /* offset 7791 */ 29746 "\xe1\x85\x87\0" /* offset 7795 */ 29747 "\xe1\x85\x8c\0" /* offset 7799 */ 29748 "\xe1\x87\xb1\0" /* offset 7803 */ 29749 "\xe1\x87\xb2\0" /* offset 7807 */ 29750 "\xe1\x85\x97\0" /* offset 7811 */ 29751 "\xe1\x85\x98\0" /* offset 7815 */ 29752 "\xe1\x85\x99\0" /* offset 7819 */ 29753 "\xe1\x86\x84\0" /* offset 7823 */ 29754 "\xe1\x86\x85\0" /* offset 7827 */ 29755 "\xe1\x86\x88\0" /* offset 7831 */ 29756 "\xe1\x86\x91\0" /* offset 7835 */ 29757 "\xe1\x86\x92\0" /* offset 7839 */ 29758 "\xe1\x86\x94\0" /* offset 7843 */ 29759 "\xe1\x86\x9e\0" /* offset 7847 */ 29760 "\xe1\x86\xa1\0" /* offset 7851 */ 29761 "\xe4\xb8\x89\0" /* offset 7855 */ 29762 "\xe5\x9b\x9b\0" /* offset 7859 */ 29763 "\xe4\xb8\x8a\0" /* offset 7863 */ 29764 "\xe4\xb8\xad\0" /* offset 7867 */ 29765 "\xe4\xb8\x8b\0" /* offset 7871 */ 29766 "\xe7\x94\xb2\0" /* offset 7875 */ 29767 "\xe4\xb8\x99\0" /* offset 7879 */ 29768 "\xe4\xb8\x81\0" /* offset 7883 */ 29769 "\xe5\xa4\xa9\0" /* offset 7887 */ 29770 "\xe5\x9c\xb0\0" /* offset 7891 */ 29771 "\x28\xe1\x84\x80\x29\0" /* offset 7895 */ 29772 "\x28\xe1\x84\x82\x29\0" /* offset 7901 */ 29773 "\x28\xe1\x84\x83\x29\0" /* offset 7907 */ 29774 "\x28\xe1\x84\x85\x29\0" /* offset 7913 */ 29775 "\x28\xe1\x84\x86\x29\0" /* offset 7919 */ 29776 "\x28\xe1\x84\x87\x29\0" /* offset 7925 */ 29777 "\x28\xe1\x84\x89\x29\0" /* offset 7931 */ 29778 "\x28\xe1\x84\x8b\x29\0" /* offset 7937 */ 29779 "\x28\xe1\x84\x8c\x29\0" /* offset 7943 */ 29780 "\x28\xe1\x84\x8e\x29\0" /* offset 7949 */ 29781 "\x28\xe1\x84\x8f\x29\0" /* offset 7955 */ 29782 "\x28\xe1\x84\x90\x29\0" /* offset 7961 */ 29783 "\x28\xe1\x84\x91\x29\0" /* offset 7967 */ 29784 "\x28\xe1\x84\x92\x29\0" /* offset 7973 */ 29785 "\x28\xe1\x84\x80\xe1\x85\xa1\x29\0" /* offset 7979 */ 29786 "\x28\xe1\x84\x82\xe1\x85\xa1\x29\0" /* offset 7988 */ 29787 "\x28\xe1\x84\x83\xe1\x85\xa1\x29\0" /* offset 7997 */ 29788 "\x28\xe1\x84\x85\xe1\x85\xa1\x29\0" /* offset 8006 */ 29789 "\x28\xe1\x84\x86\xe1\x85\xa1\x29\0" /* offset 8015 */ 29790 "\x28\xe1\x84\x87\xe1\x85\xa1\x29\0" /* offset 8024 */ 29791 "\x28\xe1\x84\x89\xe1\x85\xa1\x29\0" /* offset 8033 */ 29792 "\x28\xe1\x84\x8b\xe1\x85\xa1\x29\0" /* offset 8042 */ 29793 "\x28\xe1\x84\x8c\xe1\x85\xa1\x29\0" /* offset 8051 */ 29794 "\x28\xe1\x84\x8e\xe1\x85\xa1\x29\0" /* offset 8060 */ 29795 "\x28\xe1\x84\x8f\xe1\x85\xa1\x29\0" /* offset 8069 */ 29796 "\x28\xe1\x84\x90\xe1\x85\xa1\x29\0" /* offset 8078 */ 29797 "\x28\xe1\x84\x91\xe1\x85\xa1\x29\0" /* offset 8087 */ 29798 "\x28\xe1\x84\x92\xe1\x85\xa1\x29\0" /* offset 8096 */ 29799 "\x28\xe1\x84\x8c\xe1\x85\xae\x29\0" /* offset 8105 */ 29800 "\x28\xe1\x84\x8b\xe1\x85\xa9\xe1\x84\x8c\xe1\x85\xa5\xe1\x86\xab\x29\0" /* offset 8114 */ 29801 "\x28\xe1\x84\x8b\xe1\x85\xa9\xe1\x84\x92\xe1\x85\xae\x29\0" /* offset 8132 */ 29802 "\x28\xe4\xb8\x80\x29\0" /* offset 8147 */ 29803 "\x28\xe4\xba\x8c\x29\0" /* offset 8153 */ 29804 "\x28\xe4\xb8\x89\x29\0" /* offset 8159 */ 29805 "\x28\xe5\x9b\x9b\x29\0" /* offset 8165 */ 29806 "\x28\xe4\xba\x94\x29\0" /* offset 8171 */ 29807 "\x28\xe5\x85\xad\x29\0" /* offset 8177 */ 29808 "\x28\xe4\xb8\x83\x29\0" /* offset 8183 */ 29809 "\x28\xe5\x85\xab\x29\0" /* offset 8189 */ 29810 "\x28\xe4\xb9\x9d\x29\0" /* offset 8195 */ 29811 "\x28\xe5\x8d\x81\x29\0" /* offset 8201 */ 29812 "\x28\xe6\x9c\x88\x29\0" /* offset 8207 */ 29813 "\x28\xe7\x81\xab\x29\0" /* offset 8213 */ 29814 "\x28\xe6\xb0\xb4\x29\0" /* offset 8219 */ 29815 "\x28\xe6\x9c\xa8\x29\0" /* offset 8225 */ 29816 "\x28\xe9\x87\x91\x29\0" /* offset 8231 */ 29817 "\x28\xe5\x9c\x9f\x29\0" /* offset 8237 */ 29818 "\x28\xe6\x97\xa5\x29\0" /* offset 8243 */ 29819 "\x28\xe6\xa0\xaa\x29\0" /* offset 8249 */ 29820 "\x28\xe6\x9c\x89\x29\0" /* offset 8255 */ 29821 "\x28\xe7\xa4\xbe\x29\0" /* offset 8261 */ 29822 "\x28\xe5\x90\x8d\x29\0" /* offset 8267 */ 29823 "\x28\xe7\x89\xb9\x29\0" /* offset 8273 */ 29824 "\x28\xe8\xb2\xa1\x29\0" /* offset 8279 */ 29825 "\x28\xe7\xa5\x9d\x29\0" /* offset 8285 */ 29826 "\x28\xe5\x8a\xb4\x29\0" /* offset 8291 */ 29827 "\x28\xe4\xbb\xa3\x29\0" /* offset 8297 */ 29828 "\x28\xe5\x91\xbc\x29\0" /* offset 8303 */ 29829 "\x28\xe5\xad\xa6\x29\0" /* offset 8309 */ 29830 "\x28\xe7\x9b\xa3\x29\0" /* offset 8315 */ 29831 "\x28\xe4\xbc\x81\x29\0" /* offset 8321 */ 29832 "\x28\xe8\xb3\x87\x29\0" /* offset 8327 */ 29833 "\x28\xe5\x8d\x94\x29\0" /* offset 8333 */ 29834 "\x28\xe7\xa5\xad\x29\0" /* offset 8339 */ 29835 "\x28\xe4\xbc\x91\x29\0" /* offset 8345 */ 29836 "\x28\xe8\x87\xaa\x29\0" /* offset 8351 */ 29837 "\x28\xe8\x87\xb3\x29\0" /* offset 8357 */ 29838 "\xe5\x95\x8f\0" /* offset 8363 */ 29839 "\xe5\xb9\xbc\0" /* offset 8367 */ 29840 "\xe7\xae\x8f\0" /* offset 8371 */ 29841 "\x50\x54\x45\0" /* offset 8375 */ 29842 "\x32\x31\0" /* offset 8379 */ 29843 "\x32\x32\0" /* offset 8382 */ 29844 "\x32\x33\0" /* offset 8385 */ 29845 "\x32\x34\0" /* offset 8388 */ 29846 "\x32\x35\0" /* offset 8391 */ 29847 "\x32\x36\0" /* offset 8394 */ 29848 "\x32\x37\0" /* offset 8397 */ 29849 "\x32\x38\0" /* offset 8400 */ 29850 "\x32\x39\0" /* offset 8403 */ 29851 "\x33\x30\0" /* offset 8406 */ 29852 "\x33\x31\0" /* offset 8409 */ 29853 "\x33\x32\0" /* offset 8412 */ 29854 "\x33\x33\0" /* offset 8415 */ 29855 "\x33\x34\0" /* offset 8418 */ 29856 "\x33\x35\0" /* offset 8421 */ 29857 "\xe1\x84\x80\xe1\x85\xa1\0" /* offset 8424 */ 29858 "\xe1\x84\x82\xe1\x85\xa1\0" /* offset 8431 */ 29859 "\xe1\x84\x83\xe1\x85\xa1\0" /* offset 8438 */ 29860 "\xe1\x84\x85\xe1\x85\xa1\0" /* offset 8445 */ 29861 "\xe1\x84\x86\xe1\x85\xa1\0" /* offset 8452 */ 29862 "\xe1\x84\x87\xe1\x85\xa1\0" /* offset 8459 */ 29863 "\xe1\x84\x89\xe1\x85\xa1\0" /* offset 8466 */ 29864 "\xe1\x84\x8b\xe1\x85\xa1\0" /* offset 8473 */ 29865 "\xe1\x84\x8c\xe1\x85\xa1\0" /* offset 8480 */ 29866 "\xe1\x84\x8e\xe1\x85\xa1\0" /* offset 8487 */ 29867 "\xe1\x84\x8f\xe1\x85\xa1\0" /* offset 8494 */ 29868 "\xe1\x84\x90\xe1\x85\xa1\0" /* offset 8501 */ 29869 "\xe1\x84\x91\xe1\x85\xa1\0" /* offset 8508 */ 29870 "\xe1\x84\x92\xe1\x85\xa1\0" /* offset 8515 */ 29871 "\xe1\x84\x8e\xe1\x85\xa1\xe1\x86\xb7\xe1\x84\x80\xe1\x85\xa9\0" /* offset 8522 */ 29872 "\xe1\x84\x8c\xe1\x85\xae\xe1\x84\x8b\xe1\x85\xb4\0" /* offset 8538 */ 29873 "\xe1\x84\x8b\xe1\x85\xae\0" /* offset 8551 */ 29874 "\xe4\xba\x94\0" /* offset 8558 */ 29875 "\xe5\x85\xad\0" /* offset 8562 */ 29876 "\xe4\xb8\x83\0" /* offset 8566 */ 29877 "\xe4\xb9\x9d\0" /* offset 8570 */ 29878 "\xe6\xa0\xaa\0" /* offset 8574 */ 29879 "\xe6\x9c\x89\0" /* offset 8578 */ 29880 "\xe7\xa4\xbe\0" /* offset 8582 */ 29881 "\xe5\x90\x8d\0" /* offset 8586 */ 29882 "\xe7\x89\xb9\0" /* offset 8590 */ 29883 "\xe8\xb2\xa1\0" /* offset 8594 */ 29884 "\xe7\xa5\x9d\0" /* offset 8598 */ 29885 "\xe5\x8a\xb4\0" /* offset 8602 */ 29886 "\xe7\xa7\x98\0" /* offset 8606 */ 29887 "\xe7\x94\xb7\0" /* offset 8610 */ 29888 "\xe9\x81\xa9\0" /* offset 8614 */ 29889 "\xe5\x84\xaa\0" /* offset 8618 */ 29890 "\xe5\x8d\xb0\0" /* offset 8622 */ 29891 "\xe6\xb3\xa8\0" /* offset 8626 */ 29892 "\xe9\xa0\x85\0" /* offset 8630 */ 29893 "\xe4\xbc\x91\0" /* offset 8634 */ 29894 "\xe5\x86\x99\0" /* offset 8638 */ 29895 "\xe6\xad\xa3\0" /* offset 8642 */ 29896 "\xe5\xb7\xa6\0" /* offset 8646 */ 29897 "\xe5\x8f\xb3\0" /* offset 8650 */ 29898 "\xe5\x8c\xbb\0" /* offset 8654 */ 29899 "\xe5\xae\x97\0" /* offset 8658 */ 29900 "\xe5\xad\xa6\0" /* offset 8662 */ 29901 "\xe7\x9b\xa3\0" /* offset 8666 */ 29902 "\xe4\xbc\x81\0" /* offset 8670 */ 29903 "\xe8\xb3\x87\0" /* offset 8674 */ 29904 "\xe5\x8d\x94\0" /* offset 8678 */ 29905 "\xe5\xa4\x9c\0" /* offset 8682 */ 29906 "\x33\x36\0" /* offset 8686 */ 29907 "\x33\x37\0" /* offset 8689 */ 29908 "\x33\x38\0" /* offset 8692 */ 29909 "\x33\x39\0" /* offset 8695 */ 29910 "\x34\x30\0" /* offset 8698 */ 29911 "\x34\x31\0" /* offset 8701 */ 29912 "\x34\x32\0" /* offset 8704 */ 29913 "\x34\x33\0" /* offset 8707 */ 29914 "\x34\x34\0" /* offset 8710 */ 29915 "\x34\x35\0" /* offset 8713 */ 29916 "\x34\x36\0" /* offset 8716 */ 29917 "\x34\x37\0" /* offset 8719 */ 29918 "\x34\x38\0" /* offset 8722 */ 29919 "\x34\x39\0" /* offset 8725 */ 29920 "\x35\x30\0" /* offset 8728 */ 29921 "\x31\xe6\x9c\x88\0" /* offset 8731 */ 29922 "\x32\xe6\x9c\x88\0" /* offset 8736 */ 29923 "\x33\xe6\x9c\x88\0" /* offset 8741 */ 29924 "\x34\xe6\x9c\x88\0" /* offset 8746 */ 29925 "\x35\xe6\x9c\x88\0" /* offset 8751 */ 29926 "\x36\xe6\x9c\x88\0" /* offset 8756 */ 29927 "\x37\xe6\x9c\x88\0" /* offset 8761 */ 29928 "\x38\xe6\x9c\x88\0" /* offset 8766 */ 29929 "\x39\xe6\x9c\x88\0" /* offset 8771 */ 29930 "\x31\x30\xe6\x9c\x88\0" /* offset 8776 */ 29931 "\x31\x31\xe6\x9c\x88\0" /* offset 8782 */ 29932 "\x31\x32\xe6\x9c\x88\0" /* offset 8788 */ 29933 "\x48\x67\0" /* offset 8794 */ 29934 "\x65\x72\x67\0" /* offset 8797 */ 29935 "\x65\x56\0" /* offset 8801 */ 29936 "\x4c\x54\x44\0" /* offset 8804 */ 29937 "\xe3\x82\xa2\0" /* offset 8808 */ 29938 "\xe3\x82\xa4\0" /* offset 8812 */ 29939 "\xe3\x82\xa6\0" /* offset 8816 */ 29940 "\xe3\x82\xa8\0" /* offset 8820 */ 29941 "\xe3\x82\xaa\0" /* offset 8824 */ 29942 "\xe3\x82\xab\0" /* offset 8828 */ 29943 "\xe3\x82\xad\0" /* offset 8832 */ 29944 "\xe3\x82\xaf\0" /* offset 8836 */ 29945 "\xe3\x82\xb1\0" /* offset 8840 */ 29946 "\xe3\x82\xb3\0" /* offset 8844 */ 29947 "\xe3\x82\xb5\0" /* offset 8848 */ 29948 "\xe3\x82\xb7\0" /* offset 8852 */ 29949 "\xe3\x82\xb9\0" /* offset 8856 */ 29950 "\xe3\x82\xbb\0" /* offset 8860 */ 29951 "\xe3\x82\xbd\0" /* offset 8864 */ 29952 "\xe3\x82\xbf\0" /* offset 8868 */ 29953 "\xe3\x83\x81\0" /* offset 8872 */ 29954 "\xe3\x83\x84\0" /* offset 8876 */ 29955 "\xe3\x83\x86\0" /* offset 8880 */ 29956 "\xe3\x83\x88\0" /* offset 8884 */ 29957 "\xe3\x83\x8a\0" /* offset 8888 */ 29958 "\xe3\x83\x8b\0" /* offset 8892 */ 29959 "\xe3\x83\x8c\0" /* offset 8896 */ 29960 "\xe3\x83\x8d\0" /* offset 8900 */ 29961 "\xe3\x83\x8e\0" /* offset 8904 */ 29962 "\xe3\x83\x8f\0" /* offset 8908 */ 29963 "\xe3\x83\x92\0" /* offset 8912 */ 29964 "\xe3\x83\x95\0" /* offset 8916 */ 29965 "\xe3\x83\x98\0" /* offset 8920 */ 29966 "\xe3\x83\x9b\0" /* offset 8924 */ 29967 "\xe3\x83\x9e\0" /* offset 8928 */ 29968 "\xe3\x83\x9f\0" /* offset 8932 */ 29969 "\xe3\x83\xa0\0" /* offset 8936 */ 29970 "\xe3\x83\xa1\0" /* offset 8940 */ 29971 "\xe3\x83\xa2\0" /* offset 8944 */ 29972 "\xe3\x83\xa4\0" /* offset 8948 */ 29973 "\xe3\x83\xa6\0" /* offset 8952 */ 29974 "\xe3\x83\xa8\0" /* offset 8956 */ 29975 "\xe3\x83\xa9\0" /* offset 8960 */ 29976 "\xe3\x83\xaa\0" /* offset 8964 */ 29977 "\xe3\x83\xab\0" /* offset 8968 */ 29978 "\xe3\x83\xac\0" /* offset 8972 */ 29979 "\xe3\x83\xad\0" /* offset 8976 */ 29980 "\xe3\x83\xaf\0" /* offset 8980 */ 29981 "\xe3\x83\xb0\0" /* offset 8984 */ 29982 "\xe3\x83\xb1\0" /* offset 8988 */ 29983 "\xe3\x83\xb2\0" /* offset 8992 */ 29984 "\xe3\x82\xa2\xe3\x83\x8f\xe3\x82\x9a\xe3\x83\xbc\xe3\x83\x88\0" /* offset 8996 */ 29985 "\xe3\x82\xa2\xe3\x83\xab\xe3\x83\x95\xe3\x82\xa1\0" /* offset 9012 */ 29986 "\xe3\x82\xa2\xe3\x83\xb3\xe3\x83\x98\xe3\x82\x9a\xe3\x82\xa2\0" /* offset 9025 */ 29987 "\xe3\x82\xa2\xe3\x83\xbc\xe3\x83\xab\0" /* offset 9041 */ 29988 "\xe3\x82\xa4\xe3\x83\x8b\xe3\x83\xb3\xe3\x82\xaf\xe3\x82\x99\0" /* offset 9051 */ 29989 "\xe3\x82\xa4\xe3\x83\xb3\xe3\x83\x81\0" /* offset 9067 */ 29990 "\xe3\x82\xa6\xe3\x82\xa9\xe3\x83\xb3\0" /* offset 9077 */ 29991 "\xe3\x82\xa8\xe3\x82\xb9\xe3\x82\xaf\xe3\x83\xbc\xe3\x83\x88\xe3\x82\x99\0" /* offset 9087 */ 29992 "\xe3\x82\xa8\xe3\x83\xbc\xe3\x82\xab\xe3\x83\xbc\0" /* offset 9106 */ 29993 "\xe3\x82\xaa\xe3\x83\xb3\xe3\x82\xb9\0" /* offset 9119 */ 29994 "\xe3\x82\xaa\xe3\x83\xbc\xe3\x83\xa0\0" /* offset 9129 */ 29995 "\xe3\x82\xab\xe3\x82\xa4\xe3\x83\xaa\0" /* offset 9139 */ 29996 "\xe3\x82\xab\xe3\x83\xa9\xe3\x83\x83\xe3\x83\x88\0" /* offset 9149 */ 29997 "\xe3\x82\xab\xe3\x83\xad\xe3\x83\xaa\xe3\x83\xbc\0" /* offset 9162 */ 29998 "\xe3\x82\xab\xe3\x82\x99\xe3\x83\xad\xe3\x83\xb3\0" /* offset 9175 */ 29999 "\xe3\x82\xab\xe3\x82\x99\xe3\x83\xb3\xe3\x83\x9e\0" /* offset 9188 */ 30000 "\xe3\x82\xad\xe3\x82\x99\xe3\x82\xab\xe3\x82\x99\0" /* offset 9201 */ 30001 "\xe3\x82\xad\xe3\x82\x99\xe3\x83\x8b\xe3\x83\xbc\0" /* offset 9214 */ 30002 "\xe3\x82\xad\xe3\x83\xa5\xe3\x83\xaa\xe3\x83\xbc\0" /* offset 9227 */ 30003 "\xe3\x82\xad\xe3\x82\x99\xe3\x83\xab\xe3\x82\xbf\xe3\x82\x99\xe3\x83\xbc\0" /* offset 9240 */ 30004 "\xe3\x82\xad\xe3\x83\xad\0" /* offset 9259 */ 30005 "\xe3\x82\xad\xe3\x83\xad\xe3\x82\xaf\xe3\x82\x99\xe3\x83\xa9\xe3\x83\xa0\0" /* offset 9266 */ 30006 "\xe3\x82\xad\xe3\x83\xad\xe3\x83\xa1\xe3\x83\xbc\xe3\x83\x88\xe3\x83\xab\0" /* offset 9285 */ 30007 "\xe3\x82\xad\xe3\x83\xad\xe3\x83\xaf\xe3\x83\x83\xe3\x83\x88\0" /* offset 9304 */ 30008 "\xe3\x82\xaf\xe3\x82\x99\xe3\x83\xa9\xe3\x83\xa0\0" /* offset 9320 */ 30009 "\xe3\x82\xaf\xe3\x82\x99\xe3\x83\xa9\xe3\x83\xa0\xe3\x83\x88\xe3\x83\xb3\0" /* offset 9333 */ 30010 "\xe3\x82\xaf\xe3\x83\xab\xe3\x82\xbb\xe3\x82\x99\xe3\x82\xa4\xe3\x83\xad\0" /* offset 9352 */ 30011 "\xe3\x82\xaf\xe3\x83\xad\xe3\x83\xbc\xe3\x83\x8d\0" /* offset 9371 */ 30012 "\xe3\x82\xb1\xe3\x83\xbc\xe3\x82\xb9\0" /* offset 9384 */ 30013 "\xe3\x82\xb3\xe3\x83\xab\xe3\x83\x8a\0" /* offset 9394 */ 30014 "\xe3\x82\xb3\xe3\x83\xbc\xe3\x83\x9b\xe3\x82\x9a\0" /* offset 9404 */ 30015 "\xe3\x82\xb5\xe3\x82\xa4\xe3\x82\xaf\xe3\x83\xab\0" /* offset 9417 */ 30016 "\xe3\x82\xb5\xe3\x83\xb3\xe3\x83\x81\xe3\x83\xbc\xe3\x83\xa0\0" /* offset 9430 */ 30017 "\xe3\x82\xb7\xe3\x83\xaa\xe3\x83\xb3\xe3\x82\xaf\xe3\x82\x99\0" /* offset 9446 */ 30018 "\xe3\x82\xbb\xe3\x83\xb3\xe3\x83\x81\0" /* offset 9462 */ 30019 "\xe3\x82\xbb\xe3\x83\xb3\xe3\x83\x88\0" /* offset 9472 */ 30020 "\xe3\x82\xbf\xe3\x82\x99\xe3\x83\xbc\xe3\x82\xb9\0" /* offset 9482 */ 30021 "\xe3\x83\x86\xe3\x82\x99\xe3\x82\xb7\0" /* offset 9495 */ 30022 "\xe3\x83\x88\xe3\x82\x99\xe3\x83\xab\0" /* offset 9505 */ 30023 "\xe3\x83\x88\xe3\x83\xb3\0" /* offset 9515 */ 30024 "\xe3\x83\x8a\xe3\x83\x8e\0" /* offset 9522 */ 30025 "\xe3\x83\x8e\xe3\x83\x83\xe3\x83\x88\0" /* offset 9529 */ 30026 "\xe3\x83\x8f\xe3\x82\xa4\xe3\x83\x84\0" /* offset 9539 */ 30027 "\xe3\x83\x8f\xe3\x82\x9a\xe3\x83\xbc\xe3\x82\xbb\xe3\x83\xb3\xe3\x83\x88\0" /* offset 9549 */ 30028 "\xe3\x83\x8f\xe3\x82\x9a\xe3\x83\xbc\xe3\x83\x84\0" /* offset 9568 */ 30029 "\xe3\x83\x8f\xe3\x82\x99\xe3\x83\xbc\xe3\x83\xac\xe3\x83\xab\0" /* offset 9581 */ 30030 "\xe3\x83\x92\xe3\x82\x9a\xe3\x82\xa2\xe3\x82\xb9\xe3\x83\x88\xe3\x83\xab\0" /* offset 9597 */ 30031 "\xe3\x83\x92\xe3\x82\x9a\xe3\x82\xaf\xe3\x83\xab\0" /* offset 9616 */ 30032 "\xe3\x83\x92\xe3\x82\x9a\xe3\x82\xb3\0" /* offset 9629 */ 30033 "\xe3\x83\x92\xe3\x82\x99\xe3\x83\xab\0" /* offset 9639 */ 30034 "\xe3\x83\x95\xe3\x82\xa1\xe3\x83\xa9\xe3\x83\x83\xe3\x83\x88\xe3\x82\x99\0" /* offset 9649 */ 30035 "\xe3\x83\x95\xe3\x82\xa3\xe3\x83\xbc\xe3\x83\x88\0" /* offset 9668 */ 30036 "\xe3\x83\x95\xe3\x82\x99\xe3\x83\x83\xe3\x82\xb7\xe3\x82\xa7\xe3\x83\xab\0" /* offset 9681 */ 30037 "\xe3\x83\x95\xe3\x83\xa9\xe3\x83\xb3\0" /* offset 9700 */ 30038 "\xe3\x83\x98\xe3\x82\xaf\xe3\x82\xbf\xe3\x83\xbc\xe3\x83\xab\0" /* offset 9710 */ 30039 "\xe3\x83\x98\xe3\x82\x9a\xe3\x82\xbd\0" /* offset 9726 */ 30040 "\xe3\x83\x98\xe3\x82\x9a\xe3\x83\x8b\xe3\x83\x92\0" /* offset 9736 */ 30041 "\xe3\x83\x98\xe3\x83\xab\xe3\x83\x84\0" /* offset 9749 */ 30042 "\xe3\x83\x98\xe3\x82\x9a\xe3\x83\xb3\xe3\x82\xb9\0" /* offset 9759 */ 30043 "\xe3\x83\x98\xe3\x82\x9a\xe3\x83\xbc\xe3\x82\xb7\xe3\x82\x99\0" /* offset 9772 */ 30044 "\xe3\x83\x98\xe3\x82\x99\xe3\x83\xbc\xe3\x82\xbf\0" /* offset 9788 */ 30045 "\xe3\x83\x9b\xe3\x82\x9a\xe3\x82\xa4\xe3\x83\xb3\xe3\x83\x88\0" /* offset 9801 */ 30046 "\xe3\x83\x9b\xe3\x82\x99\xe3\x83\xab\xe3\x83\x88\0" /* offset 9817 */ 30047 "\xe3\x83\x9b\xe3\x83\xb3\0" /* offset 9830 */ 30048 "\xe3\x83\x9b\xe3\x82\x9a\xe3\x83\xb3\xe3\x83\x88\xe3\x82\x99\0" /* offset 9837 */ 30049 "\xe3\x83\x9b\xe3\x83\xbc\xe3\x83\xab\0" /* offset 9853 */ 30050 "\xe3\x83\x9b\xe3\x83\xbc\xe3\x83\xb3\0" /* offset 9863 */ 30051 "\xe3\x83\x9e\xe3\x82\xa4\xe3\x82\xaf\xe3\x83\xad\0" /* offset 9873 */ 30052 "\xe3\x83\x9e\xe3\x82\xa4\xe3\x83\xab\0" /* offset 9886 */ 30053 "\xe3\x83\x9e\xe3\x83\x83\xe3\x83\x8f\0" /* offset 9896 */ 30054 "\xe3\x83\x9e\xe3\x83\xab\xe3\x82\xaf\0" /* offset 9906 */ 30055 "\xe3\x83\x9e\xe3\x83\xb3\xe3\x82\xb7\xe3\x83\xa7\xe3\x83\xb3\0" /* offset 9916 */ 30056 "\xe3\x83\x9f\xe3\x82\xaf\xe3\x83\xad\xe3\x83\xb3\0" /* offset 9932 */ 30057 "\xe3\x83\x9f\xe3\x83\xaa\0" /* offset 9945 */ 30058 "\xe3\x83\x9f\xe3\x83\xaa\xe3\x83\x8f\xe3\x82\x99\xe3\x83\xbc\xe3\x83\xab\0" /* offset 9952 */ 30059 "\xe3\x83\xa1\xe3\x82\xab\xe3\x82\x99\0" /* offset 9971 */ 30060 "\xe3\x83\xa1\xe3\x82\xab\xe3\x82\x99\xe3\x83\x88\xe3\x83\xb3\0" /* offset 9981 */ 30061 "\xe3\x83\xa1\xe3\x83\xbc\xe3\x83\x88\xe3\x83\xab\0" /* offset 9997 */ 30062 "\xe3\x83\xa4\xe3\x83\xbc\xe3\x83\x88\xe3\x82\x99\0" /* offset 10010 */ 30063 "\xe3\x83\xa4\xe3\x83\xbc\xe3\x83\xab\0" /* offset 10023 */ 30064 "\xe3\x83\xa6\xe3\x82\xa2\xe3\x83\xb3\0" /* offset 10033 */ 30065 "\xe3\x83\xaa\xe3\x83\x83\xe3\x83\x88\xe3\x83\xab\0" /* offset 10043 */ 30066 "\xe3\x83\xaa\xe3\x83\xa9\0" /* offset 10056 */ 30067 "\xe3\x83\xab\xe3\x83\x92\xe3\x82\x9a\xe3\x83\xbc\0" /* offset 10063 */ 30068 "\xe3\x83\xab\xe3\x83\xbc\xe3\x83\x95\xe3\x82\x99\xe3\x83\xab\0" /* offset 10076 */ 30069 "\xe3\x83\xac\xe3\x83\xa0\0" /* offset 10092 */ 30070 "\xe3\x83\xac\xe3\x83\xb3\xe3\x83\x88\xe3\x82\xb1\xe3\x82\x99\xe3\x83\xb3\0" /* offset 10099 */ 30071 "\xe3\x83\xaf\xe3\x83\x83\xe3\x83\x88\0" /* offset 10118 */ 30072 "\x30\xe7\x82\xb9\0" /* offset 10128 */ 30073 "\x31\xe7\x82\xb9\0" /* offset 10133 */ 30074 "\x32\xe7\x82\xb9\0" /* offset 10138 */ 30075 "\x33\xe7\x82\xb9\0" /* offset 10143 */ 30076 "\x34\xe7\x82\xb9\0" /* offset 10148 */ 30077 "\x35\xe7\x82\xb9\0" /* offset 10153 */ 30078 "\x36\xe7\x82\xb9\0" /* offset 10158 */ 30079 "\x37\xe7\x82\xb9\0" /* offset 10163 */ 30080 "\x38\xe7\x82\xb9\0" /* offset 10168 */ 30081 "\x39\xe7\x82\xb9\0" /* offset 10173 */ 30082 "\x31\x30\xe7\x82\xb9\0" /* offset 10178 */ 30083 "\x31\x31\xe7\x82\xb9\0" /* offset 10184 */ 30084 "\x31\x32\xe7\x82\xb9\0" /* offset 10190 */ 30085 "\x31\x33\xe7\x82\xb9\0" /* offset 10196 */ 30086 "\x31\x34\xe7\x82\xb9\0" /* offset 10202 */ 30087 "\x31\x35\xe7\x82\xb9\0" /* offset 10208 */ 30088 "\x31\x36\xe7\x82\xb9\0" /* offset 10214 */ 30089 "\x31\x37\xe7\x82\xb9\0" /* offset 10220 */ 30090 "\x31\x38\xe7\x82\xb9\0" /* offset 10226 */ 30091 "\x31\x39\xe7\x82\xb9\0" /* offset 10232 */ 30092 "\x32\x30\xe7\x82\xb9\0" /* offset 10238 */ 30093 "\x32\x31\xe7\x82\xb9\0" /* offset 10244 */ 30094 "\x32\x32\xe7\x82\xb9\0" /* offset 10250 */ 30095 "\x32\x33\xe7\x82\xb9\0" /* offset 10256 */ 30096 "\x32\x34\xe7\x82\xb9\0" /* offset 10262 */ 30097 "\x68\x50\x61\0" /* offset 10268 */ 30098 "\x64\x61\0" /* offset 10272 */ 30099 "\x41\x55\0" /* offset 10275 */ 30100 "\x62\x61\x72\0" /* offset 10278 */ 30101 "\x6f\x56\0" /* offset 10282 */ 30102 "\x70\x63\0" /* offset 10285 */ 30103 "\x64\x6d\0" /* offset 10288 */ 30104 "\x64\x6d\x32\0" /* offset 10291 */ 30105 "\x64\x6d\x33\0" /* offset 10295 */ 30106 "\x49\x55\0" /* offset 10299 */ 30107 "\xe5\xb9\xb3\xe6\x88\x90\0" /* offset 10302 */ 30108 "\xe6\x98\xad\xe5\x92\x8c\0" /* offset 10309 */ 30109 "\xe5\xa4\xa7\xe6\xad\xa3\0" /* offset 10316 */ 30110 "\xe6\x98\x8e\xe6\xb2\xbb\0" /* offset 10323 */ 30111 "\xe6\xa0\xaa\xe5\xbc\x8f\xe4\xbc\x9a\xe7\xa4\xbe\0" /* offset 10330 */ 30112 "\x70\x41\0" /* offset 10343 */ 30113 "\x6e\x41\0" /* offset 10346 */ 30114 "\xce\xbc\x41\0" /* offset 10349 */ 30115 "\x6d\x41\0" /* offset 10353 */ 30116 "\x6b\x41\0" /* offset 10356 */ 30117 "\x4b\x42\0" /* offset 10359 */ 30118 "\x4d\x42\0" /* offset 10362 */ 30119 "\x47\x42\0" /* offset 10365 */ 30120 "\x63\x61\x6c\0" /* offset 10368 */ 30121 "\x6b\x63\x61\x6c\0" /* offset 10372 */ 30122 "\x70\x46\0" /* offset 10377 */ 30123 "\x6e\x46\0" /* offset 10380 */ 30124 "\xce\xbc\x46\0" /* offset 10383 */ 30125 "\xce\xbc\x67\0" /* offset 10387 */ 30126 "\x6d\x67\0" /* offset 10391 */ 30127 "\x6b\x67\0" /* offset 10394 */ 30128 "\x48\x7a\0" /* offset 10397 */ 30129 "\x6b\x48\x7a\0" /* offset 10400 */ 30130 "\x4d\x48\x7a\0" /* offset 10404 */ 30131 "\x47\x48\x7a\0" /* offset 10408 */ 30132 "\x54\x48\x7a\0" /* offset 10412 */ 30133 "\xce\xbc\x6c\0" /* offset 10416 */ 30134 "\x6d\x6c\0" /* offset 10420 */ 30135 "\x64\x6c\0" /* offset 10423 */ 30136 "\x6b\x6c\0" /* offset 10426 */ 30137 "\x66\x6d\0" /* offset 10429 */ 30138 "\x6e\x6d\0" /* offset 10432 */ 30139 "\xce\xbc\x6d\0" /* offset 10435 */ 30140 "\x6d\x6d\0" /* offset 10439 */ 30141 "\x63\x6d\0" /* offset 10442 */ 30142 "\x6b\x6d\0" /* offset 10445 */ 30143 "\x6d\x6d\x32\0" /* offset 10448 */ 30144 "\x63\x6d\x32\0" /* offset 10452 */ 30145 "\x6d\x32\0" /* offset 10456 */ 30146 "\x6b\x6d\x32\0" /* offset 10459 */ 30147 "\x6d\x6d\x33\0" /* offset 10463 */ 30148 "\x63\x6d\x33\0" /* offset 10467 */ 30149 "\x6d\x33\0" /* offset 10471 */ 30150 "\x6b\x6d\x33\0" /* offset 10474 */ 30151 "\x6d\xe2\x88\x95\x73\0" /* offset 10478 */ 30152 "\x6d\xe2\x88\x95\x73\x32\0" /* offset 10484 */ 30153 "\x50\x61\0" /* offset 10491 */ 30154 "\x6b\x50\x61\0" /* offset 10494 */ 30155 "\x4d\x50\x61\0" /* offset 10498 */ 30156 "\x47\x50\x61\0" /* offset 10502 */ 30157 "\x72\x61\x64\0" /* offset 10506 */ 30158 "\x72\x61\x64\xe2\x88\x95\x73\0" /* offset 10510 */ 30159 "\x72\x61\x64\xe2\x88\x95\x73\x32\0" /* offset 10518 */ 30160 "\x70\x73\0" /* offset 10527 */ 30161 "\x6e\x73\0" /* offset 10530 */ 30162 "\xce\xbc\x73\0" /* offset 10533 */ 30163 "\x6d\x73\0" /* offset 10537 */ 30164 "\x70\x56\0" /* offset 10540 */ 30165 "\x6e\x56\0" /* offset 10543 */ 30166 "\xce\xbc\x56\0" /* offset 10546 */ 30167 "\x6d\x56\0" /* offset 10550 */ 30168 "\x6b\x56\0" /* offset 10553 */ 30169 "\x4d\x56\0" /* offset 10556 */ 30170 "\x70\x57\0" /* offset 10559 */ 30171 "\x6e\x57\0" /* offset 10562 */ 30172 "\xce\xbc\x57\0" /* offset 10565 */ 30173 "\x6d\x57\0" /* offset 10569 */ 30174 "\x6b\x57\0" /* offset 10572 */ 30175 "\x4d\x57\0" /* offset 10575 */ 30176 "\x6b\xce\xa9\0" /* offset 10578 */ 30177 "\x4d\xce\xa9\0" /* offset 10582 */ 30178 "\x61\x2e\x6d\x2e\0" /* offset 10586 */ 30179 "\x42\x71\0" /* offset 10591 */ 30180 "\x63\x63\0" /* offset 10594 */ 30181 "\x63\x64\0" /* offset 10597 */ 30182 "\x43\xe2\x88\x95\x6b\x67\0" /* offset 10600 */ 30183 "\x43\x6f\x2e\0" /* offset 10607 */ 30184 "\x64\x42\0" /* offset 10611 */ 30185 "\x47\x79\0" /* offset 10614 */ 30186 "\x68\x61\0" /* offset 10617 */ 30187 "\x48\x50\0" /* offset 10620 */ 30188 "\x69\x6e\0" /* offset 10623 */ 30189 "\x4b\x4b\0" /* offset 10626 */ 30190 "\x4b\x4d\0" /* offset 10629 */ 30191 "\x6b\x74\0" /* offset 10632 */ 30192 "\x6c\x6d\0" /* offset 10635 */ 30193 "\x6c\x6e\0" /* offset 10638 */ 30194 "\x6c\x6f\x67\0" /* offset 10641 */ 30195 "\x6c\x78\0" /* offset 10645 */ 30196 "\x6d\x62\0" /* offset 10648 */ 30197 "\x6d\x69\x6c\0" /* offset 10651 */ 30198 "\x6d\x6f\x6c\0" /* offset 10655 */ 30199 "\x50\x48\0" /* offset 10659 */ 30200 "\x70\x2e\x6d\x2e\0" /* offset 10662 */ 30201 "\x50\x50\x4d\0" /* offset 10667 */ 30202 "\x50\x52\0" /* offset 10671 */ 30203 "\x73\x72\0" /* offset 10674 */ 30204 "\x53\x76\0" /* offset 10677 */ 30205 "\x57\x62\0" /* offset 10680 */ 30206 "\x56\xe2\x88\x95\x6d\0" /* offset 10683 */ 30207 "\x41\xe2\x88\x95\x6d\0" /* offset 10689 */ 30208 "\x31\xe6\x97\xa5\0" /* offset 10695 */ 30209 "\x32\xe6\x97\xa5\0" /* offset 10700 */ 30210 "\x33\xe6\x97\xa5\0" /* offset 10705 */ 30211 "\x34\xe6\x97\xa5\0" /* offset 10710 */ 30212 "\x35\xe6\x97\xa5\0" /* offset 10715 */ 30213 "\x36\xe6\x97\xa5\0" /* offset 10720 */ 30214 "\x37\xe6\x97\xa5\0" /* offset 10725 */ 30215 "\x38\xe6\x97\xa5\0" /* offset 10730 */ 30216 "\x39\xe6\x97\xa5\0" /* offset 10735 */ 30217 "\x31\x30\xe6\x97\xa5\0" /* offset 10740 */ 30218 "\x31\x31\xe6\x97\xa5\0" /* offset 10746 */ 30219 "\x31\x32\xe6\x97\xa5\0" /* offset 10752 */ 30220 "\x31\x33\xe6\x97\xa5\0" /* offset 10758 */ 30221 "\x31\x34\xe6\x97\xa5\0" /* offset 10764 */ 30222 "\x31\x35\xe6\x97\xa5\0" /* offset 10770 */ 30223 "\x31\x36\xe6\x97\xa5\0" /* offset 10776 */ 30224 "\x31\x37\xe6\x97\xa5\0" /* offset 10782 */ 30225 "\x31\x38\xe6\x97\xa5\0" /* offset 10788 */ 30226 "\x31\x39\xe6\x97\xa5\0" /* offset 10794 */ 30227 "\x32\x30\xe6\x97\xa5\0" /* offset 10800 */ 30228 "\x32\x31\xe6\x97\xa5\0" /* offset 10806 */ 30229 "\x32\x32\xe6\x97\xa5\0" /* offset 10812 */ 30230 "\x32\x33\xe6\x97\xa5\0" /* offset 10818 */ 30231 "\x32\x34\xe6\x97\xa5\0" /* offset 10824 */ 30232 "\x32\x35\xe6\x97\xa5\0" /* offset 10830 */ 30233 "\x32\x36\xe6\x97\xa5\0" /* offset 10836 */ 30234 "\x32\x37\xe6\x97\xa5\0" /* offset 10842 */ 30235 "\x32\x38\xe6\x97\xa5\0" /* offset 10848 */ 30236 "\x32\x39\xe6\x97\xa5\0" /* offset 10854 */ 30237 "\x33\x30\xe6\x97\xa5\0" /* offset 10860 */ 30238 "\x33\x31\xe6\x97\xa5\0" /* offset 10866 */ 30239 "\x67\x61\x6c\0" /* offset 10872 */ 30240 "\xd1\x8a\0" /* offset 10876 */ 30241 "\xd1\x8c\0" /* offset 10879 */ 30242 "\xea\x9d\xaf\0" /* offset 10882 */ 30243 "\xc4\xa6\0" /* offset 10886 */ 30244 "\xc5\x93\0" /* offset 10889 */ 30245 "\xea\x9c\xa7\0" /* offset 10892 */ 30246 "\xea\xac\xb7\0" /* offset 10896 */ 30247 "\xc9\xab\0" /* offset 10900 */ 30248 "\xea\xad\x92\0" /* offset 10903 */ 30249 "\xe8\xb1\x88\0" /* offset 10907 */ 30250 "\xe6\x9b\xb4\0" /* offset 10911 */ 30251 "\xe8\xb3\x88\0" /* offset 10915 */ 30252 "\xe6\xbb\x91\0" /* offset 10919 */ 30253 "\xe4\xb8\xb2\0" /* offset 10923 */ 30254 "\xe5\x8f\xa5\0" /* offset 10927 */ 30255 "\xe5\xa5\x91\0" /* offset 10931 */ 30256 "\xe5\x96\x87\0" /* offset 10935 */ 30257 "\xe5\xa5\x88\0" /* offset 10939 */ 30258 "\xe6\x87\xb6\0" /* offset 10943 */ 30259 "\xe7\x99\xa9\0" /* offset 10947 */ 30260 "\xe7\xbe\x85\0" /* offset 10951 */ 30261 "\xe8\x98\xbf\0" /* offset 10955 */ 30262 "\xe8\x9e\xba\0" /* offset 10959 */ 30263 "\xe8\xa3\xb8\0" /* offset 10963 */ 30264 "\xe9\x82\x8f\0" /* offset 10967 */ 30265 "\xe6\xa8\x82\0" /* offset 10971 */ 30266 "\xe6\xb4\x9b\0" /* offset 10975 */ 30267 "\xe7\x83\x99\0" /* offset 10979 */ 30268 "\xe7\x8f\x9e\0" /* offset 10983 */ 30269 "\xe8\x90\xbd\0" /* offset 10987 */ 30270 "\xe9\x85\xaa\0" /* offset 10991 */ 30271 "\xe9\xa7\xb1\0" /* offset 10995 */ 30272 "\xe4\xba\x82\0" /* offset 10999 */ 30273 "\xe5\x8d\xb5\0" /* offset 11003 */ 30274 "\xe6\xac\x84\0" /* offset 11007 */ 30275 "\xe7\x88\x9b\0" /* offset 11011 */ 30276 "\xe8\x98\xad\0" /* offset 11015 */ 30277 "\xe9\xb8\x9e\0" /* offset 11019 */ 30278 "\xe5\xb5\x90\0" /* offset 11023 */ 30279 "\xe6\xbf\xab\0" /* offset 11027 */ 30280 "\xe8\x97\x8d\0" /* offset 11031 */ 30281 "\xe8\xa5\xa4\0" /* offset 11035 */ 30282 "\xe6\x8b\x89\0" /* offset 11039 */ 30283 "\xe8\x87\x98\0" /* offset 11043 */ 30284 "\xe8\xa0\x9f\0" /* offset 11047 */ 30285 "\xe5\xbb\x8a\0" /* offset 11051 */ 30286 "\xe6\x9c\x97\0" /* offset 11055 */ 30287 "\xe6\xb5\xaa\0" /* offset 11059 */ 30288 "\xe7\x8b\xbc\0" /* offset 11063 */ 30289 "\xe9\x83\x8e\0" /* offset 11067 */ 30290 "\xe4\xbe\x86\0" /* offset 11071 */ 30291 "\xe5\x86\xb7\0" /* offset 11075 */ 30292 "\xe5\x8b\x9e\0" /* offset 11079 */ 30293 "\xe6\x93\x84\0" /* offset 11083 */ 30294 "\xe6\xab\x93\0" /* offset 11087 */ 30295 "\xe7\x88\x90\0" /* offset 11091 */ 30296 "\xe7\x9b\xa7\0" /* offset 11095 */ 30297 "\xe8\x98\x86\0" /* offset 11099 */ 30298 "\xe8\x99\x9c\0" /* offset 11103 */ 30299 "\xe8\xb7\xaf\0" /* offset 11107 */ 30300 "\xe9\x9c\xb2\0" /* offset 11111 */ 30301 "\xe9\xad\xaf\0" /* offset 11115 */ 30302 "\xe9\xb7\xba\0" /* offset 11119 */ 30303 "\xe7\xa2\x8c\0" /* offset 11123 */ 30304 "\xe7\xa5\xbf\0" /* offset 11127 */ 30305 "\xe7\xb6\xa0\0" /* offset 11131 */ 30306 "\xe8\x8f\x89\0" /* offset 11135 */ 30307 "\xe9\x8c\x84\0" /* offset 11139 */ 30308 "\xe8\xab\x96\0" /* offset 11143 */ 30309 "\xe5\xa3\x9f\0" /* offset 11147 */ 30310 "\xe5\xbc\x84\0" /* offset 11151 */ 30311 "\xe7\xb1\xa0\0" /* offset 11155 */ 30312 "\xe8\x81\xbe\0" /* offset 11159 */ 30313 "\xe7\x89\xa2\0" /* offset 11163 */ 30314 "\xe7\xa3\x8a\0" /* offset 11167 */ 30315 "\xe8\xb3\x82\0" /* offset 11171 */ 30316 "\xe9\x9b\xb7\0" /* offset 11175 */ 30317 "\xe5\xa3\x98\0" /* offset 11179 */ 30318 "\xe5\xb1\xa2\0" /* offset 11183 */ 30319 "\xe6\xa8\x93\0" /* offset 11187 */ 30320 "\xe6\xb7\x9a\0" /* offset 11191 */ 30321 "\xe6\xbc\x8f\0" /* offset 11195 */ 30322 "\xe7\xb4\xaf\0" /* offset 11199 */ 30323 "\xe7\xb8\xb7\0" /* offset 11203 */ 30324 "\xe9\x99\x8b\0" /* offset 11207 */ 30325 "\xe5\x8b\x92\0" /* offset 11211 */ 30326 "\xe8\x82\x8b\0" /* offset 11215 */ 30327 "\xe5\x87\x9c\0" /* offset 11219 */ 30328 "\xe5\x87\x8c\0" /* offset 11223 */ 30329 "\xe7\xa8\x9c\0" /* offset 11227 */ 30330 "\xe7\xb6\xbe\0" /* offset 11231 */ 30331 "\xe8\x8f\xb1\0" /* offset 11235 */ 30332 "\xe9\x99\xb5\0" /* offset 11239 */ 30333 "\xe8\xae\x80\0" /* offset 11243 */ 30334 "\xe6\x8b\x8f\0" /* offset 11247 */ 30335 "\xe8\xab\xbe\0" /* offset 11251 */ 30336 "\xe4\xb8\xb9\0" /* offset 11255 */ 30337 "\xe5\xaf\xa7\0" /* offset 11259 */ 30338 "\xe6\x80\x92\0" /* offset 11263 */ 30339 "\xe7\x8e\x87\0" /* offset 11267 */ 30340 "\xe7\x95\xb0\0" /* offset 11271 */ 30341 "\xe5\x8c\x97\0" /* offset 11275 */ 30342 "\xe7\xa3\xbb\0" /* offset 11279 */ 30343 "\xe4\xbe\xbf\0" /* offset 11283 */ 30344 "\xe5\xbe\xa9\0" /* offset 11287 */ 30345 "\xe4\xb8\x8d\0" /* offset 11291 */ 30346 "\xe6\xb3\x8c\0" /* offset 11295 */ 30347 "\xe6\x95\xb8\0" /* offset 11299 */ 30348 "\xe7\xb4\xa2\0" /* offset 11303 */ 30349 "\xe5\x8f\x83\0" /* offset 11307 */ 30350 "\xe5\xa1\x9e\0" /* offset 11311 */ 30351 "\xe7\x9c\x81\0" /* offset 11315 */ 30352 "\xe8\x91\x89\0" /* offset 11319 */ 30353 "\xe8\xaa\xaa\0" /* offset 11323 */ 30354 "\xe6\xae\xba\0" /* offset 11327 */ 30355 "\xe6\xb2\x88\0" /* offset 11331 */ 30356 "\xe6\x8b\xbe\0" /* offset 11335 */ 30357 "\xe8\x8b\xa5\0" /* offset 11339 */ 30358 "\xe6\x8e\xa0\0" /* offset 11343 */ 30359 "\xe7\x95\xa5\0" /* offset 11347 */ 30360 "\xe4\xba\xae\0" /* offset 11351 */ 30361 "\xe5\x85\xa9\0" /* offset 11355 */ 30362 "\xe5\x87\x89\0" /* offset 11359 */ 30363 "\xe6\xa2\x81\0" /* offset 11363 */ 30364 "\xe7\xb3\xa7\0" /* offset 11367 */ 30365 "\xe8\x89\xaf\0" /* offset 11371 */ 30366 "\xe8\xab\x92\0" /* offset 11375 */ 30367 "\xe9\x87\x8f\0" /* offset 11379 */ 30368 "\xe5\x8b\xb5\0" /* offset 11383 */ 30369 "\xe5\x91\x82\0" /* offset 11387 */ 30370 "\xe5\xbb\xac\0" /* offset 11391 */ 30371 "\xe6\x97\x85\0" /* offset 11395 */ 30372 "\xe6\xbf\xbe\0" /* offset 11399 */ 30373 "\xe7\xa4\xaa\0" /* offset 11403 */ 30374 "\xe9\x96\xad\0" /* offset 11407 */ 30375 "\xe9\xa9\xaa\0" /* offset 11411 */ 30376 "\xe9\xba\x97\0" /* offset 11415 */ 30377 "\xe9\xbb\x8e\0" /* offset 11419 */ 30378 "\xe6\x9b\x86\0" /* offset 11423 */ 30379 "\xe6\xad\xb7\0" /* offset 11427 */ 30380 "\xe8\xbd\xa2\0" /* offset 11431 */ 30381 "\xe5\xb9\xb4\0" /* offset 11435 */ 30382 "\xe6\x86\x90\0" /* offset 11439 */ 30383 "\xe6\x88\x80\0" /* offset 11443 */ 30384 "\xe6\x92\x9a\0" /* offset 11447 */ 30385 "\xe6\xbc\xa3\0" /* offset 11451 */ 30386 "\xe7\x85\x89\0" /* offset 11455 */ 30387 "\xe7\x92\x89\0" /* offset 11459 */ 30388 "\xe7\xa7\x8a\0" /* offset 11463 */ 30389 "\xe7\xb7\xb4\0" /* offset 11467 */ 30390 "\xe8\x81\xaf\0" /* offset 11471 */ 30391 "\xe8\xbc\xa6\0" /* offset 11475 */ 30392 "\xe8\x93\xae\0" /* offset 11479 */ 30393 "\xe9\x80\xa3\0" /* offset 11483 */ 30394 "\xe9\x8d\x8a\0" /* offset 11487 */ 30395 "\xe5\x88\x97\0" /* offset 11491 */ 30396 "\xe5\x8a\xa3\0" /* offset 11495 */ 30397 "\xe5\x92\xbd\0" /* offset 11499 */ 30398 "\xe7\x83\x88\0" /* offset 11503 */ 30399 "\xe8\xa3\x82\0" /* offset 11507 */ 30400 "\xe5\xbb\x89\0" /* offset 11511 */ 30401 "\xe5\xbf\xb5\0" /* offset 11515 */ 30402 "\xe6\x8d\xbb\0" /* offset 11519 */ 30403 "\xe6\xae\xae\0" /* offset 11523 */ 30404 "\xe7\xb0\xbe\0" /* offset 11527 */ 30405 "\xe7\x8d\xb5\0" /* offset 11531 */ 30406 "\xe4\xbb\xa4\0" /* offset 11535 */ 30407 "\xe5\x9b\xb9\0" /* offset 11539 */ 30408 "\xe5\xb6\xba\0" /* offset 11543 */ 30409 "\xe6\x80\x9c\0" /* offset 11547 */ 30410 "\xe7\x8e\xb2\0" /* offset 11551 */ 30411 "\xe7\x91\xa9\0" /* offset 11555 */ 30412 "\xe7\xbe\x9a\0" /* offset 11559 */ 30413 "\xe8\x81\x86\0" /* offset 11563 */ 30414 "\xe9\x88\xb4\0" /* offset 11567 */ 30415 "\xe9\x9b\xb6\0" /* offset 11571 */ 30416 "\xe9\x9d\x88\0" /* offset 11575 */ 30417 "\xe9\xa0\x98\0" /* offset 11579 */ 30418 "\xe4\xbe\x8b\0" /* offset 11583 */ 30419 "\xe7\xa6\xae\0" /* offset 11587 */ 30420 "\xe9\x86\xb4\0" /* offset 11591 */ 30421 "\xe9\x9a\xb8\0" /* offset 11595 */ 30422 "\xe6\x83\xa1\0" /* offset 11599 */ 30423 "\xe4\xba\x86\0" /* offset 11603 */ 30424 "\xe5\x83\x9a\0" /* offset 11607 */ 30425 "\xe5\xaf\xae\0" /* offset 11611 */ 30426 "\xe5\xb0\xbf\0" /* offset 11615 */ 30427 "\xe6\x96\x99\0" /* offset 11619 */ 30428 "\xe7\x87\x8e\0" /* offset 11623 */ 30429 "\xe7\x99\x82\0" /* offset 11627 */ 30430 "\xe8\x93\xbc\0" /* offset 11631 */ 30431 "\xe9\x81\xbc\0" /* offset 11635 */ 30432 "\xe6\x9a\x88\0" /* offset 11639 */ 30433 "\xe9\x98\xae\0" /* offset 11643 */ 30434 "\xe5\x8a\x89\0" /* offset 11647 */ 30435 "\xe6\x9d\xbb\0" /* offset 11651 */ 30436 "\xe6\x9f\xb3\0" /* offset 11655 */ 30437 "\xe6\xb5\x81\0" /* offset 11659 */ 30438 "\xe6\xba\x9c\0" /* offset 11663 */ 30439 "\xe7\x90\x89\0" /* offset 11667 */ 30440 "\xe7\x95\x99\0" /* offset 11671 */ 30441 "\xe7\xa1\xab\0" /* offset 11675 */ 30442 "\xe7\xb4\x90\0" /* offset 11679 */ 30443 "\xe9\xa1\x9e\0" /* offset 11683 */ 30444 "\xe6\x88\xae\0" /* offset 11687 */ 30445 "\xe9\x99\xb8\0" /* offset 11691 */ 30446 "\xe5\x80\xab\0" /* offset 11695 */ 30447 "\xe5\xb4\x99\0" /* offset 11699 */ 30448 "\xe6\xb7\xaa\0" /* offset 11703 */ 30449 "\xe8\xbc\xaa\0" /* offset 11707 */ 30450 "\xe5\xbe\x8b\0" /* offset 11711 */ 30451 "\xe6\x85\x84\0" /* offset 11715 */ 30452 "\xe6\xa0\x97\0" /* offset 11719 */ 30453 "\xe9\x9a\x86\0" /* offset 11723 */ 30454 "\xe5\x88\xa9\0" /* offset 11727 */ 30455 "\xe5\x90\x8f\0" /* offset 11731 */ 30456 "\xe5\xb1\xa5\0" /* offset 11735 */ 30457 "\xe6\x98\x93\0" /* offset 11739 */ 30458 "\xe6\x9d\x8e\0" /* offset 11743 */ 30459 "\xe6\xa2\xa8\0" /* offset 11747 */ 30460 "\xe6\xb3\xa5\0" /* offset 11751 */ 30461 "\xe7\x90\x86\0" /* offset 11755 */ 30462 "\xe7\x97\xa2\0" /* offset 11759 */ 30463 "\xe7\xbd\xb9\0" /* offset 11763 */ 30464 "\xe8\xa3\x8f\0" /* offset 11767 */ 30465 "\xe8\xa3\xa1\0" /* offset 11771 */ 30466 "\xe9\x9b\xa2\0" /* offset 11775 */ 30467 "\xe5\x8c\xbf\0" /* offset 11779 */ 30468 "\xe6\xba\xba\0" /* offset 11783 */ 30469 "\xe5\x90\x9d\0" /* offset 11787 */ 30470 "\xe7\x87\x90\0" /* offset 11791 */ 30471 "\xe7\x92\x98\0" /* offset 11795 */ 30472 "\xe8\x97\xba\0" /* offset 11799 */ 30473 "\xe9\x9a\xa3\0" /* offset 11803 */ 30474 "\xe9\xb1\x97\0" /* offset 11807 */ 30475 "\xe9\xba\x9f\0" /* offset 11811 */ 30476 "\xe6\x9e\x97\0" /* offset 11815 */ 30477 "\xe6\xb7\x8b\0" /* offset 11819 */ 30478 "\xe8\x87\xa8\0" /* offset 11823 */ 30479 "\xe7\xac\xa0\0" /* offset 11827 */ 30480 "\xe7\xb2\x92\0" /* offset 11831 */ 30481 "\xe7\x8b\x80\0" /* offset 11835 */ 30482 "\xe7\x82\x99\0" /* offset 11839 */ 30483 "\xe8\xad\x98\0" /* offset 11843 */ 30484 "\xe4\xbb\x80\0" /* offset 11847 */ 30485 "\xe8\x8c\xb6\0" /* offset 11851 */ 30486 "\xe5\x88\xba\0" /* offset 11855 */ 30487 "\xe5\x88\x87\0" /* offset 11859 */ 30488 "\xe5\xba\xa6\0" /* offset 11863 */ 30489 "\xe6\x8b\x93\0" /* offset 11867 */ 30490 "\xe7\xb3\x96\0" /* offset 11871 */ 30491 "\xe5\xae\x85\0" /* offset 11875 */ 30492 "\xe6\xb4\x9e\0" /* offset 11879 */ 30493 "\xe6\x9a\xb4\0" /* offset 11883 */ 30494 "\xe8\xbc\xbb\0" /* offset 11887 */ 30495 "\xe9\x99\x8d\0" /* offset 11891 */ 30496 "\xe5\xbb\x93\0" /* offset 11895 */ 30497 "\xe5\x85\x80\0" /* offset 11899 */ 30498 "\xe5\x97\x80\0" /* offset 11903 */ 30499 "\xe5\xa1\x9a\0" /* offset 11907 */ 30500 "\xe6\x99\xb4\0" /* offset 11911 */ 30501 "\xe5\x87\x9e\0" /* offset 11915 */ 30502 "\xe7\x8c\xaa\0" /* offset 11919 */ 30503 "\xe7\x9b\x8a\0" /* offset 11923 */ 30504 "\xe7\xa4\xbc\0" /* offset 11927 */ 30505 "\xe7\xa5\x9e\0" /* offset 11931 */ 30506 "\xe7\xa5\xa5\0" /* offset 11935 */ 30507 "\xe7\xa6\x8f\0" /* offset 11939 */ 30508 "\xe9\x9d\x96\0" /* offset 11943 */ 30509 "\xe7\xb2\xbe\0" /* offset 11947 */ 30510 "\xe8\x98\x92\0" /* offset 11951 */ 30511 "\xe8\xab\xb8\0" /* offset 11955 */ 30512 "\xe9\x80\xb8\0" /* offset 11959 */ 30513 "\xe9\x83\xbd\0" /* offset 11963 */ 30514 "\xe9\xa3\xaf\0" /* offset 11967 */ 30515 "\xe9\xa3\xbc\0" /* offset 11971 */ 30516 "\xe9\xa4\xa8\0" /* offset 11975 */ 30517 "\xe9\xb6\xb4\0" /* offset 11979 */ 30518 "\xe9\x83\x9e\0" /* offset 11983 */ 30519 "\xe9\x9a\xb7\0" /* offset 11987 */ 30520 "\xe4\xbe\xae\0" /* offset 11991 */ 30521 "\xe5\x83\xa7\0" /* offset 11995 */ 30522 "\xe5\x85\x8d\0" /* offset 11999 */ 30523 "\xe5\x8b\x89\0" /* offset 12003 */ 30524 "\xe5\x8b\xa4\0" /* offset 12007 */ 30525 "\xe5\x8d\x91\0" /* offset 12011 */ 30526 "\xe5\x96\x9d\0" /* offset 12015 */ 30527 "\xe5\x98\x86\0" /* offset 12019 */ 30528 "\xe5\x99\xa8\0" /* offset 12023 */ 30529 "\xe5\xa1\x80\0" /* offset 12027 */ 30530 "\xe5\xa2\xa8\0" /* offset 12031 */ 30531 "\xe5\xb1\xa4\0" /* offset 12035 */ 30532 "\xe6\x82\x94\0" /* offset 12039 */ 30533 "\xe6\x85\xa8\0" /* offset 12043 */ 30534 "\xe6\x86\x8e\0" /* offset 12047 */ 30535 "\xe6\x87\xb2\0" /* offset 12051 */ 30536 "\xe6\x95\x8f\0" /* offset 12055 */ 30537 "\xe6\x97\xa2\0" /* offset 12059 */ 30538 "\xe6\x9a\x91\0" /* offset 12063 */ 30539 "\xe6\xa2\x85\0" /* offset 12067 */ 30540 "\xe6\xb5\xb7\0" /* offset 12071 */ 30541 "\xe6\xb8\x9a\0" /* offset 12075 */ 30542 "\xe6\xbc\xa2\0" /* offset 12079 */ 30543 "\xe7\x85\xae\0" /* offset 12083 */ 30544 "\xe7\x88\xab\0" /* offset 12087 */ 30545 "\xe7\x90\xa2\0" /* offset 12091 */ 30546 "\xe7\xa2\x91\0" /* offset 12095 */ 30547 "\xe7\xa5\x89\0" /* offset 12099 */ 30548 "\xe7\xa5\x88\0" /* offset 12103 */ 30549 "\xe7\xa5\x90\0" /* offset 12107 */ 30550 "\xe7\xa5\x96\0" /* offset 12111 */ 30551 "\xe7\xa6\x8d\0" /* offset 12115 */ 30552 "\xe7\xa6\x8e\0" /* offset 12119 */ 30553 "\xe7\xa9\x80\0" /* offset 12123 */ 30554 "\xe7\xaa\x81\0" /* offset 12127 */ 30555 "\xe7\xaf\x80\0" /* offset 12131 */ 30556 "\xe7\xb8\x89\0" /* offset 12135 */ 30557 "\xe7\xb9\x81\0" /* offset 12139 */ 30558 "\xe7\xbd\xb2\0" /* offset 12143 */ 30559 "\xe8\x80\x85\0" /* offset 12147 */ 30560 "\xe8\x87\xad\0" /* offset 12151 */ 30561 "\xe8\x89\xb9\0" /* offset 12155 */ 30562 "\xe8\x91\x97\0" /* offset 12159 */ 30563 "\xe8\xa4\x90\0" /* offset 12163 */ 30564 "\xe8\xa6\x96\0" /* offset 12167 */ 30565 "\xe8\xac\x81\0" /* offset 12171 */ 30566 "\xe8\xac\xb9\0" /* offset 12175 */ 30567 "\xe8\xb3\x93\0" /* offset 12179 */ 30568 "\xe8\xb4\x88\0" /* offset 12183 */ 30569 "\xe8\xbe\xb6\0" /* offset 12187 */ 30570 "\xe9\x9b\xa3\0" /* offset 12191 */ 30571 "\xe9\x9f\xbf\0" /* offset 12195 */ 30572 "\xe9\xa0\xbb\0" /* offset 12199 */ 30573 "\xe6\x81\xb5\0" /* offset 12203 */ 30574 "\xf0\xa4\x8b\xae\0" /* offset 12207 */ 30575 "\xe8\x88\x98\0" /* offset 12212 */ 30576 "\xe4\xb8\xa6\0" /* offset 12216 */ 30577 "\xe5\x86\xb5\0" /* offset 12220 */ 30578 "\xe5\x85\xa8\0" /* offset 12224 */ 30579 "\xe4\xbe\x80\0" /* offset 12228 */ 30580 "\xe5\x85\x85\0" /* offset 12232 */ 30581 "\xe5\x86\x80\0" /* offset 12236 */ 30582 "\xe5\x8b\x87\0" /* offset 12240 */ 30583 "\xe5\x8b\xba\0" /* offset 12244 */ 30584 "\xe5\x95\x95\0" /* offset 12248 */ 30585 "\xe5\x96\x99\0" /* offset 12252 */ 30586 "\xe5\x97\xa2\0" /* offset 12256 */ 30587 "\xe5\xa2\xb3\0" /* offset 12260 */ 30588 "\xe5\xa5\x84\0" /* offset 12264 */ 30589 "\xe5\xa5\x94\0" /* offset 12268 */ 30590 "\xe5\xa9\xa2\0" /* offset 12272 */ 30591 "\xe5\xac\xa8\0" /* offset 12276 */ 30592 "\xe5\xbb\x92\0" /* offset 12280 */ 30593 "\xe5\xbb\x99\0" /* offset 12284 */ 30594 "\xe5\xbd\xa9\0" /* offset 12288 */ 30595 "\xe5\xbe\xad\0" /* offset 12292 */ 30596 "\xe6\x83\x98\0" /* offset 12296 */ 30597 "\xe6\x85\x8e\0" /* offset 12300 */ 30598 "\xe6\x84\x88\0" /* offset 12304 */ 30599 "\xe6\x85\xa0\0" /* offset 12308 */ 30600 "\xe6\x88\xb4\0" /* offset 12312 */ 30601 "\xe6\x8f\x84\0" /* offset 12316 */ 30602 "\xe6\x90\x9c\0" /* offset 12320 */ 30603 "\xe6\x91\x92\0" /* offset 12324 */ 30604 "\xe6\x95\x96\0" /* offset 12328 */ 30605 "\xe6\x9c\x9b\0" /* offset 12332 */ 30606 "\xe6\x9d\x96\0" /* offset 12336 */ 30607 "\xe6\xbb\x9b\0" /* offset 12340 */ 30608 "\xe6\xbb\x8b\0" /* offset 12344 */ 30609 "\xe7\x80\x9e\0" /* offset 12348 */ 30610 "\xe7\x9e\xa7\0" /* offset 12352 */ 30611 "\xe7\x88\xb5\0" /* offset 12356 */ 30612 "\xe7\x8a\xaf\0" /* offset 12360 */ 30613 "\xe7\x91\xb1\0" /* offset 12364 */ 30614 "\xe7\x94\x86\0" /* offset 12368 */ 30615 "\xe7\x94\xbb\0" /* offset 12372 */ 30616 "\xe7\x98\x9d\0" /* offset 12376 */ 30617 "\xe7\x98\x9f\0" /* offset 12380 */ 30618 "\xe7\x9b\x9b\0" /* offset 12384 */ 30619 "\xe7\x9b\xb4\0" /* offset 12388 */ 30620 "\xe7\x9d\x8a\0" /* offset 12392 */ 30621 "\xe7\x9d\x80\0" /* offset 12396 */ 30622 "\xe7\xa3\x8c\0" /* offset 12400 */ 30623 "\xe7\xaa\xb1\0" /* offset 12404 */ 30624 "\xe7\xb1\xbb\0" /* offset 12408 */ 30625 "\xe7\xb5\x9b\0" /* offset 12412 */ 30626 "\xe7\xbc\xbe\0" /* offset 12416 */ 30627 "\xe8\x8d\x92\0" /* offset 12420 */ 30628 "\xe8\x8f\xaf\0" /* offset 12424 */ 30629 "\xe8\x9d\xb9\0" /* offset 12428 */ 30630 "\xe8\xa5\x81\0" /* offset 12432 */ 30631 "\xe8\xa6\x86\0" /* offset 12436 */ 30632 "\xe8\xaa\xbf\0" /* offset 12440 */ 30633 "\xe8\xab\x8b\0" /* offset 12444 */ 30634 "\xe8\xab\xad\0" /* offset 12448 */ 30635 "\xe8\xae\x8a\0" /* offset 12452 */ 30636 "\xe8\xbc\xb8\0" /* offset 12456 */ 30637 "\xe9\x81\xb2\0" /* offset 12460 */ 30638 "\xe9\x86\x99\0" /* offset 12464 */ 30639 "\xe9\x89\xb6\0" /* offset 12468 */ 30640 "\xe9\x99\xbc\0" /* offset 12472 */ 30641 "\xe9\x9f\x9b\0" /* offset 12476 */ 30642 "\xe9\xa0\x8b\0" /* offset 12480 */ 30643 "\xe9\xac\x92\0" /* offset 12484 */ 30644 "\xf0\xa2\xa1\x8a\0" /* offset 12488 */ 30645 "\xf0\xa2\xa1\x84\0" /* offset 12493 */ 30646 "\xf0\xa3\x8f\x95\0" /* offset 12498 */ 30647 "\xe3\xae\x9d\0" /* offset 12503 */ 30648 "\xe4\x80\x98\0" /* offset 12507 */ 30649 "\xe4\x80\xb9\0" /* offset 12511 */ 30650 "\xf0\xa5\x89\x89\0" /* offset 12515 */ 30651 "\xf0\xa5\xb3\x90\0" /* offset 12520 */ 30652 "\xf0\xa7\xbb\x93\0" /* offset 12525 */ 30653 "\xe9\xbd\x83\0" /* offset 12530 */ 30654 "\xe9\xbe\x8e\0" /* offset 12534 */ 30655 "\x66\x66\0" /* offset 12538 */ 30656 "\x66\x69\0" /* offset 12541 */ 30657 "\x66\x6c\0" /* offset 12544 */ 30658 "\x66\x66\x69\0" /* offset 12547 */ 30659 "\x66\x66\x6c\0" /* offset 12551 */ 30660 "\x73\x74\0" /* offset 12555 */ 30661 "\xd5\xb4\xd5\xb6\0" /* offset 12558 */ 30662 "\xd5\xb4\xd5\xa5\0" /* offset 12563 */ 30663 "\xd5\xb4\xd5\xab\0" /* offset 12568 */ 30664 "\xd5\xbe\xd5\xb6\0" /* offset 12573 */ 30665 "\xd5\xb4\xd5\xad\0" /* offset 12578 */ 30666 "\xd7\x99\xd6\xb4\0" /* offset 12583 */ 30667 "\xd7\xb2\xd6\xb7\0" /* offset 12588 */ 30668 "\xd7\xa2\0" /* offset 12593 */ 30669 "\xd7\x94\0" /* offset 12596 */ 30670 "\xd7\x9b\0" /* offset 12599 */ 30671 "\xd7\x9c\0" /* offset 12602 */ 30672 "\xd7\x9d\0" /* offset 12605 */ 30673 "\xd7\xa8\0" /* offset 12608 */ 30674 "\xd7\xaa\0" /* offset 12611 */ 30675 "\xd7\xa9\xd7\x81\0" /* offset 12614 */ 30676 "\xd7\xa9\xd7\x82\0" /* offset 12619 */ 30677 "\xd7\xa9\xd6\xbc\xd7\x81\0" /* offset 12624 */ 30678 "\xd7\xa9\xd6\xbc\xd7\x82\0" /* offset 12631 */ 30679 "\xd7\x90\xd6\xb7\0" /* offset 12638 */ 30680 "\xd7\x90\xd6\xb8\0" /* offset 12643 */ 30681 "\xd7\x90\xd6\xbc\0" /* offset 12648 */ 30682 "\xd7\x91\xd6\xbc\0" /* offset 12653 */ 30683 "\xd7\x92\xd6\xbc\0" /* offset 12658 */ 30684 "\xd7\x93\xd6\xbc\0" /* offset 12663 */ 30685 "\xd7\x94\xd6\xbc\0" /* offset 12668 */ 30686 "\xd7\x95\xd6\xbc\0" /* offset 12673 */ 30687 "\xd7\x96\xd6\xbc\0" /* offset 12678 */ 30688 "\xd7\x98\xd6\xbc\0" /* offset 12683 */ 30689 "\xd7\x99\xd6\xbc\0" /* offset 12688 */ 30690 "\xd7\x9a\xd6\xbc\0" /* offset 12693 */ 30691 "\xd7\x9b\xd6\xbc\0" /* offset 12698 */ 30692 "\xd7\x9c\xd6\xbc\0" /* offset 12703 */ 30693 "\xd7\x9e\xd6\xbc\0" /* offset 12708 */ 30694 "\xd7\xa0\xd6\xbc\0" /* offset 12713 */ 30695 "\xd7\xa1\xd6\xbc\0" /* offset 12718 */ 30696 "\xd7\xa3\xd6\xbc\0" /* offset 12723 */ 30697 "\xd7\xa4\xd6\xbc\0" /* offset 12728 */ 30698 "\xd7\xa6\xd6\xbc\0" /* offset 12733 */ 30699 "\xd7\xa7\xd6\xbc\0" /* offset 12738 */ 30700 "\xd7\xa8\xd6\xbc\0" /* offset 12743 */ 30701 "\xd7\xa9\xd6\xbc\0" /* offset 12748 */ 30702 "\xd7\xaa\xd6\xbc\0" /* offset 12753 */ 30703 "\xd7\x95\xd6\xb9\0" /* offset 12758 */ 30704 "\xd7\x91\xd6\xbf\0" /* offset 12763 */ 30705 "\xd7\x9b\xd6\xbf\0" /* offset 12768 */ 30706 "\xd7\xa4\xd6\xbf\0" /* offset 12773 */ 30707 "\xd7\x90\xd7\x9c\0" /* offset 12778 */ 30708 "\xd9\xb1\0" /* offset 12783 */ 30709 "\xd9\xbb\0" /* offset 12786 */ 30710 "\xd9\xbe\0" /* offset 12789 */ 30711 "\xda\x80\0" /* offset 12792 */ 30712 "\xd9\xba\0" /* offset 12795 */ 30713 "\xd9\xbf\0" /* offset 12798 */ 30714 "\xd9\xb9\0" /* offset 12801 */ 30715 "\xda\xa4\0" /* offset 12804 */ 30716 "\xda\xa6\0" /* offset 12807 */ 30717 "\xda\x84\0" /* offset 12810 */ 30718 "\xda\x83\0" /* offset 12813 */ 30719 "\xda\x86\0" /* offset 12816 */ 30720 "\xda\x87\0" /* offset 12819 */ 30721 "\xda\x8d\0" /* offset 12822 */ 30722 "\xda\x8c\0" /* offset 12825 */ 30723 "\xda\x8e\0" /* offset 12828 */ 30724 "\xda\x88\0" /* offset 12831 */ 30725 "\xda\x98\0" /* offset 12834 */ 30726 "\xda\x91\0" /* offset 12837 */ 30727 "\xda\xa9\0" /* offset 12840 */ 30728 "\xda\xaf\0" /* offset 12843 */ 30729 "\xda\xb3\0" /* offset 12846 */ 30730 "\xda\xb1\0" /* offset 12849 */ 30731 "\xda\xba\0" /* offset 12852 */ 30732 "\xda\xbb\0" /* offset 12855 */ 30733 "\xdb\x81\0" /* offset 12858 */ 30734 "\xda\xbe\0" /* offset 12861 */ 30735 "\xdb\x92\0" /* offset 12864 */ 30736 "\xda\xad\0" /* offset 12867 */ 30737 "\xdb\x87\0" /* offset 12870 */ 30738 "\xdb\x86\0" /* offset 12873 */ 30739 "\xdb\x88\0" /* offset 12876 */ 30740 "\xdb\x8b\0" /* offset 12879 */ 30741 "\xdb\x85\0" /* offset 12882 */ 30742 "\xdb\x89\0" /* offset 12885 */ 30743 "\xdb\x90\0" /* offset 12888 */ 30744 "\xd9\x89\0" /* offset 12891 */ 30745 "\xd9\x8a\xd9\x94\xd8\xa7\0" /* offset 12894 */ 30746 "\xd9\x8a\xd9\x94\xdb\x95\0" /* offset 12901 */ 30747 "\xd9\x8a\xd9\x94\xd9\x88\0" /* offset 12908 */ 30748 "\xd9\x8a\xd9\x94\xdb\x87\0" /* offset 12915 */ 30749 "\xd9\x8a\xd9\x94\xdb\x86\0" /* offset 12922 */ 30750 "\xd9\x8a\xd9\x94\xdb\x88\0" /* offset 12929 */ 30751 "\xd9\x8a\xd9\x94\xdb\x90\0" /* offset 12936 */ 30752 "\xd9\x8a\xd9\x94\xd9\x89\0" /* offset 12943 */ 30753 "\xdb\x8c\0" /* offset 12950 */ 30754 "\xd9\x8a\xd9\x94\xd8\xac\0" /* offset 12953 */ 30755 "\xd9\x8a\xd9\x94\xd8\xad\0" /* offset 12960 */ 30756 "\xd9\x8a\xd9\x94\xd9\x85\0" /* offset 12967 */ 30757 "\xd9\x8a\xd9\x94\xd9\x8a\0" /* offset 12974 */ 30758 "\xd8\xa8\xd8\xac\0" /* offset 12981 */ 30759 "\xd8\xa8\xd8\xad\0" /* offset 12986 */ 30760 "\xd8\xa8\xd8\xae\0" /* offset 12991 */ 30761 "\xd8\xa8\xd9\x85\0" /* offset 12996 */ 30762 "\xd8\xa8\xd9\x89\0" /* offset 13001 */ 30763 "\xd8\xa8\xd9\x8a\0" /* offset 13006 */ 30764 "\xd8\xaa\xd8\xac\0" /* offset 13011 */ 30765 "\xd8\xaa\xd8\xad\0" /* offset 13016 */ 30766 "\xd8\xaa\xd8\xae\0" /* offset 13021 */ 30767 "\xd8\xaa\xd9\x85\0" /* offset 13026 */ 30768 "\xd8\xaa\xd9\x89\0" /* offset 13031 */ 30769 "\xd8\xaa\xd9\x8a\0" /* offset 13036 */ 30770 "\xd8\xab\xd8\xac\0" /* offset 13041 */ 30771 "\xd8\xab\xd9\x85\0" /* offset 13046 */ 30772 "\xd8\xab\xd9\x89\0" /* offset 13051 */ 30773 "\xd8\xab\xd9\x8a\0" /* offset 13056 */ 30774 "\xd8\xac\xd8\xad\0" /* offset 13061 */ 30775 "\xd8\xac\xd9\x85\0" /* offset 13066 */ 30776 "\xd8\xad\xd8\xac\0" /* offset 13071 */ 30777 "\xd8\xad\xd9\x85\0" /* offset 13076 */ 30778 "\xd8\xae\xd8\xac\0" /* offset 13081 */ 30779 "\xd8\xae\xd8\xad\0" /* offset 13086 */ 30780 "\xd8\xae\xd9\x85\0" /* offset 13091 */ 30781 "\xd8\xb3\xd8\xac\0" /* offset 13096 */ 30782 "\xd8\xb3\xd8\xad\0" /* offset 13101 */ 30783 "\xd8\xb3\xd8\xae\0" /* offset 13106 */ 30784 "\xd8\xb3\xd9\x85\0" /* offset 13111 */ 30785 "\xd8\xb5\xd8\xad\0" /* offset 13116 */ 30786 "\xd8\xb5\xd9\x85\0" /* offset 13121 */ 30787 "\xd8\xb6\xd8\xac\0" /* offset 13126 */ 30788 "\xd8\xb6\xd8\xad\0" /* offset 13131 */ 30789 "\xd8\xb6\xd8\xae\0" /* offset 13136 */ 30790 "\xd8\xb6\xd9\x85\0" /* offset 13141 */ 30791 "\xd8\xb7\xd8\xad\0" /* offset 13146 */ 30792 "\xd8\xb7\xd9\x85\0" /* offset 13151 */ 30793 "\xd8\xb8\xd9\x85\0" /* offset 13156 */ 30794 "\xd8\xb9\xd8\xac\0" /* offset 13161 */ 30795 "\xd8\xb9\xd9\x85\0" /* offset 13166 */ 30796 "\xd8\xba\xd8\xac\0" /* offset 13171 */ 30797 "\xd8\xba\xd9\x85\0" /* offset 13176 */ 30798 "\xd9\x81\xd8\xac\0" /* offset 13181 */ 30799 "\xd9\x81\xd8\xad\0" /* offset 13186 */ 30800 "\xd9\x81\xd8\xae\0" /* offset 13191 */ 30801 "\xd9\x81\xd9\x85\0" /* offset 13196 */ 30802 "\xd9\x81\xd9\x89\0" /* offset 13201 */ 30803 "\xd9\x81\xd9\x8a\0" /* offset 13206 */ 30804 "\xd9\x82\xd8\xad\0" /* offset 13211 */ 30805 "\xd9\x82\xd9\x85\0" /* offset 13216 */ 30806 "\xd9\x82\xd9\x89\0" /* offset 13221 */ 30807 "\xd9\x82\xd9\x8a\0" /* offset 13226 */ 30808 "\xd9\x83\xd8\xa7\0" /* offset 13231 */ 30809 "\xd9\x83\xd8\xac\0" /* offset 13236 */ 30810 "\xd9\x83\xd8\xad\0" /* offset 13241 */ 30811 "\xd9\x83\xd8\xae\0" /* offset 13246 */ 30812 "\xd9\x83\xd9\x84\0" /* offset 13251 */ 30813 "\xd9\x83\xd9\x85\0" /* offset 13256 */ 30814 "\xd9\x83\xd9\x89\0" /* offset 13261 */ 30815 "\xd9\x83\xd9\x8a\0" /* offset 13266 */ 30816 "\xd9\x84\xd8\xac\0" /* offset 13271 */ 30817 "\xd9\x84\xd8\xad\0" /* offset 13276 */ 30818 "\xd9\x84\xd8\xae\0" /* offset 13281 */ 30819 "\xd9\x84\xd9\x85\0" /* offset 13286 */ 30820 "\xd9\x84\xd9\x89\0" /* offset 13291 */ 30821 "\xd9\x84\xd9\x8a\0" /* offset 13296 */ 30822 "\xd9\x85\xd8\xac\0" /* offset 13301 */ 30823 "\xd9\x85\xd8\xad\0" /* offset 13306 */ 30824 "\xd9\x85\xd8\xae\0" /* offset 13311 */ 30825 "\xd9\x85\xd9\x85\0" /* offset 13316 */ 30826 "\xd9\x85\xd9\x89\0" /* offset 13321 */ 30827 "\xd9\x85\xd9\x8a\0" /* offset 13326 */ 30828 "\xd9\x86\xd8\xac\0" /* offset 13331 */ 30829 "\xd9\x86\xd8\xad\0" /* offset 13336 */ 30830 "\xd9\x86\xd8\xae\0" /* offset 13341 */ 30831 "\xd9\x86\xd9\x85\0" /* offset 13346 */ 30832 "\xd9\x86\xd9\x89\0" /* offset 13351 */ 30833 "\xd9\x86\xd9\x8a\0" /* offset 13356 */ 30834 "\xd9\x87\xd8\xac\0" /* offset 13361 */ 30835 "\xd9\x87\xd9\x85\0" /* offset 13366 */ 30836 "\xd9\x87\xd9\x89\0" /* offset 13371 */ 30837 "\xd9\x87\xd9\x8a\0" /* offset 13376 */ 30838 "\xd9\x8a\xd8\xac\0" /* offset 13381 */ 30839 "\xd9\x8a\xd8\xad\0" /* offset 13386 */ 30840 "\xd9\x8a\xd8\xae\0" /* offset 13391 */ 30841 "\xd9\x8a\xd9\x85\0" /* offset 13396 */ 30842 "\xd9\x8a\xd9\x89\0" /* offset 13401 */ 30843 "\xd9\x8a\xd9\x8a\0" /* offset 13406 */ 30844 "\xd8\xb0\xd9\xb0\0" /* offset 13411 */ 30845 "\xd8\xb1\xd9\xb0\0" /* offset 13416 */ 30846 "\xd9\x89\xd9\xb0\0" /* offset 13421 */ 30847 "\x20\xd9\x8c\xd9\x91\0" /* offset 13426 */ 30848 "\x20\xd9\x8d\xd9\x91\0" /* offset 13432 */ 30849 "\x20\xd9\x8e\xd9\x91\0" /* offset 13438 */ 30850 "\x20\xd9\x8f\xd9\x91\0" /* offset 13444 */ 30851 "\x20\xd9\x90\xd9\x91\0" /* offset 13450 */ 30852 "\x20\xd9\x91\xd9\xb0\0" /* offset 13456 */ 30853 "\xd9\x8a\xd9\x94\xd8\xb1\0" /* offset 13462 */ 30854 "\xd9\x8a\xd9\x94\xd8\xb2\0" /* offset 13469 */ 30855 "\xd9\x8a\xd9\x94\xd9\x86\0" /* offset 13476 */ 30856 "\xd8\xa8\xd8\xb1\0" /* offset 13483 */ 30857 "\xd8\xa8\xd8\xb2\0" /* offset 13488 */ 30858 "\xd8\xa8\xd9\x86\0" /* offset 13493 */ 30859 "\xd8\xaa\xd8\xb1\0" /* offset 13498 */ 30860 "\xd8\xaa\xd8\xb2\0" /* offset 13503 */ 30861 "\xd8\xaa\xd9\x86\0" /* offset 13508 */ 30862 "\xd8\xab\xd8\xb1\0" /* offset 13513 */ 30863 "\xd8\xab\xd8\xb2\0" /* offset 13518 */ 30864 "\xd8\xab\xd9\x86\0" /* offset 13523 */ 30865 "\xd9\x85\xd8\xa7\0" /* offset 13528 */ 30866 "\xd9\x86\xd8\xb1\0" /* offset 13533 */ 30867 "\xd9\x86\xd8\xb2\0" /* offset 13538 */ 30868 "\xd9\x86\xd9\x86\0" /* offset 13543 */ 30869 "\xd9\x8a\xd8\xb1\0" /* offset 13548 */ 30870 "\xd9\x8a\xd8\xb2\0" /* offset 13553 */ 30871 "\xd9\x8a\xd9\x86\0" /* offset 13558 */ 30872 "\xd9\x8a\xd9\x94\xd8\xae\0" /* offset 13563 */ 30873 "\xd9\x8a\xd9\x94\xd9\x87\0" /* offset 13570 */ 30874 "\xd8\xa8\xd9\x87\0" /* offset 13577 */ 30875 "\xd8\xaa\xd9\x87\0" /* offset 13582 */ 30876 "\xd8\xb5\xd8\xae\0" /* offset 13587 */ 30877 "\xd9\x84\xd9\x87\0" /* offset 13592 */ 30878 "\xd9\x86\xd9\x87\0" /* offset 13597 */ 30879 "\xd9\x87\xd9\xb0\0" /* offset 13602 */ 30880 "\xd9\x8a\xd9\x87\0" /* offset 13607 */ 30881 "\xd8\xab\xd9\x87\0" /* offset 13612 */ 30882 "\xd8\xb3\xd9\x87\0" /* offset 13617 */ 30883 "\xd8\xb4\xd9\x85\0" /* offset 13622 */ 30884 "\xd8\xb4\xd9\x87\0" /* offset 13627 */ 30885 "\xd9\x80\xd9\x8e\xd9\x91\0" /* offset 13632 */ 30886 "\xd9\x80\xd9\x8f\xd9\x91\0" /* offset 13639 */ 30887 "\xd9\x80\xd9\x90\xd9\x91\0" /* offset 13646 */ 30888 "\xd8\xb7\xd9\x89\0" /* offset 13653 */ 30889 "\xd8\xb7\xd9\x8a\0" /* offset 13658 */ 30890 "\xd8\xb9\xd9\x89\0" /* offset 13663 */ 30891 "\xd8\xb9\xd9\x8a\0" /* offset 13668 */ 30892 "\xd8\xba\xd9\x89\0" /* offset 13673 */ 30893 "\xd8\xba\xd9\x8a\0" /* offset 13678 */ 30894 "\xd8\xb3\xd9\x89\0" /* offset 13683 */ 30895 "\xd8\xb3\xd9\x8a\0" /* offset 13688 */ 30896 "\xd8\xb4\xd9\x89\0" /* offset 13693 */ 30897 "\xd8\xb4\xd9\x8a\0" /* offset 13698 */ 30898 "\xd8\xad\xd9\x89\0" /* offset 13703 */ 30899 "\xd8\xad\xd9\x8a\0" /* offset 13708 */ 30900 "\xd8\xac\xd9\x89\0" /* offset 13713 */ 30901 "\xd8\xac\xd9\x8a\0" /* offset 13718 */ 30902 "\xd8\xae\xd9\x89\0" /* offset 13723 */ 30903 "\xd8\xae\xd9\x8a\0" /* offset 13728 */ 30904 "\xd8\xb5\xd9\x89\0" /* offset 13733 */ 30905 "\xd8\xb5\xd9\x8a\0" /* offset 13738 */ 30906 "\xd8\xb6\xd9\x89\0" /* offset 13743 */ 30907 "\xd8\xb6\xd9\x8a\0" /* offset 13748 */ 30908 "\xd8\xb4\xd8\xac\0" /* offset 13753 */ 30909 "\xd8\xb4\xd8\xad\0" /* offset 13758 */ 30910 "\xd8\xb4\xd8\xae\0" /* offset 13763 */ 30911 "\xd8\xb4\xd8\xb1\0" /* offset 13768 */ 30912 "\xd8\xb3\xd8\xb1\0" /* offset 13773 */ 30913 "\xd8\xb5\xd8\xb1\0" /* offset 13778 */ 30914 "\xd8\xb6\xd8\xb1\0" /* offset 13783 */ 30915 "\xd8\xa7\xd9\x8b\0" /* offset 13788 */ 30916 "\xd8\xaa\xd8\xac\xd9\x85\0" /* offset 13793 */ 30917 "\xd8\xaa\xd8\xad\xd8\xac\0" /* offset 13800 */ 30918 "\xd8\xaa\xd8\xad\xd9\x85\0" /* offset 13807 */ 30919 "\xd8\xaa\xd8\xae\xd9\x85\0" /* offset 13814 */ 30920 "\xd8\xaa\xd9\x85\xd8\xac\0" /* offset 13821 */ 30921 "\xd8\xaa\xd9\x85\xd8\xad\0" /* offset 13828 */ 30922 "\xd8\xaa\xd9\x85\xd8\xae\0" /* offset 13835 */ 30923 "\xd8\xac\xd9\x85\xd8\xad\0" /* offset 13842 */ 30924 "\xd8\xad\xd9\x85\xd9\x8a\0" /* offset 13849 */ 30925 "\xd8\xad\xd9\x85\xd9\x89\0" /* offset 13856 */ 30926 "\xd8\xb3\xd8\xad\xd8\xac\0" /* offset 13863 */ 30927 "\xd8\xb3\xd8\xac\xd8\xad\0" /* offset 13870 */ 30928 "\xd8\xb3\xd8\xac\xd9\x89\0" /* offset 13877 */ 30929 "\xd8\xb3\xd9\x85\xd8\xad\0" /* offset 13884 */ 30930 "\xd8\xb3\xd9\x85\xd8\xac\0" /* offset 13891 */ 30931 "\xd8\xb3\xd9\x85\xd9\x85\0" /* offset 13898 */ 30932 "\xd8\xb5\xd8\xad\xd8\xad\0" /* offset 13905 */ 30933 "\xd8\xb5\xd9\x85\xd9\x85\0" /* offset 13912 */ 30934 "\xd8\xb4\xd8\xad\xd9\x85\0" /* offset 13919 */ 30935 "\xd8\xb4\xd8\xac\xd9\x8a\0" /* offset 13926 */ 30936 "\xd8\xb4\xd9\x85\xd8\xae\0" /* offset 13933 */ 30937 "\xd8\xb4\xd9\x85\xd9\x85\0" /* offset 13940 */ 30938 "\xd8\xb6\xd8\xad\xd9\x89\0" /* offset 13947 */ 30939 "\xd8\xb6\xd8\xae\xd9\x85\0" /* offset 13954 */ 30940 "\xd8\xb7\xd9\x85\xd8\xad\0" /* offset 13961 */ 30941 "\xd8\xb7\xd9\x85\xd9\x85\0" /* offset 13968 */ 30942 "\xd8\xb7\xd9\x85\xd9\x8a\0" /* offset 13975 */ 30943 "\xd8\xb9\xd8\xac\xd9\x85\0" /* offset 13982 */ 30944 "\xd8\xb9\xd9\x85\xd9\x85\0" /* offset 13989 */ 30945 "\xd8\xb9\xd9\x85\xd9\x89\0" /* offset 13996 */ 30946 "\xd8\xba\xd9\x85\xd9\x85\0" /* offset 14003 */ 30947 "\xd8\xba\xd9\x85\xd9\x8a\0" /* offset 14010 */ 30948 "\xd8\xba\xd9\x85\xd9\x89\0" /* offset 14017 */ 30949 "\xd9\x81\xd8\xae\xd9\x85\0" /* offset 14024 */ 30950 "\xd9\x82\xd9\x85\xd8\xad\0" /* offset 14031 */ 30951 "\xd9\x82\xd9\x85\xd9\x85\0" /* offset 14038 */ 30952 "\xd9\x84\xd8\xad\xd9\x85\0" /* offset 14045 */ 30953 "\xd9\x84\xd8\xad\xd9\x8a\0" /* offset 14052 */ 30954 "\xd9\x84\xd8\xad\xd9\x89\0" /* offset 14059 */ 30955 "\xd9\x84\xd8\xac\xd8\xac\0" /* offset 14066 */ 30956 "\xd9\x84\xd8\xae\xd9\x85\0" /* offset 14073 */ 30957 "\xd9\x84\xd9\x85\xd8\xad\0" /* offset 14080 */ 30958 "\xd9\x85\xd8\xad\xd8\xac\0" /* offset 14087 */ 30959 "\xd9\x85\xd8\xad\xd9\x85\0" /* offset 14094 */ 30960 "\xd9\x85\xd8\xad\xd9\x8a\0" /* offset 14101 */ 30961 "\xd9\x85\xd8\xac\xd8\xad\0" /* offset 14108 */ 30962 "\xd9\x85\xd8\xac\xd9\x85\0" /* offset 14115 */ 30963 "\xd9\x85\xd8\xae\xd8\xac\0" /* offset 14122 */ 30964 "\xd9\x85\xd8\xae\xd9\x85\0" /* offset 14129 */ 30965 "\xd9\x85\xd8\xac\xd8\xae\0" /* offset 14136 */ 30966 "\xd9\x87\xd9\x85\xd8\xac\0" /* offset 14143 */ 30967 "\xd9\x87\xd9\x85\xd9\x85\0" /* offset 14150 */ 30968 "\xd9\x86\xd8\xad\xd9\x85\0" /* offset 14157 */ 30969 "\xd9\x86\xd8\xad\xd9\x89\0" /* offset 14164 */ 30970 "\xd9\x86\xd8\xac\xd9\x85\0" /* offset 14171 */ 30971 "\xd9\x86\xd8\xac\xd9\x89\0" /* offset 14178 */ 30972 "\xd9\x86\xd9\x85\xd9\x8a\0" /* offset 14185 */ 30973 "\xd9\x86\xd9\x85\xd9\x89\0" /* offset 14192 */ 30974 "\xd9\x8a\xd9\x85\xd9\x85\0" /* offset 14199 */ 30975 "\xd8\xa8\xd8\xae\xd9\x8a\0" /* offset 14206 */ 30976 "\xd8\xaa\xd8\xac\xd9\x8a\0" /* offset 14213 */ 30977 "\xd8\xaa\xd8\xac\xd9\x89\0" /* offset 14220 */ 30978 "\xd8\xaa\xd8\xae\xd9\x8a\0" /* offset 14227 */ 30979 "\xd8\xaa\xd8\xae\xd9\x89\0" /* offset 14234 */ 30980 "\xd8\xaa\xd9\x85\xd9\x8a\0" /* offset 14241 */ 30981 "\xd8\xaa\xd9\x85\xd9\x89\0" /* offset 14248 */ 30982 "\xd8\xac\xd9\x85\xd9\x8a\0" /* offset 14255 */ 30983 "\xd8\xac\xd8\xad\xd9\x89\0" /* offset 14262 */ 30984 "\xd8\xac\xd9\x85\xd9\x89\0" /* offset 14269 */ 30985 "\xd8\xb3\xd8\xae\xd9\x89\0" /* offset 14276 */ 30986 "\xd8\xb5\xd8\xad\xd9\x8a\0" /* offset 14283 */ 30987 "\xd8\xb4\xd8\xad\xd9\x8a\0" /* offset 14290 */ 30988 "\xd8\xb6\xd8\xad\xd9\x8a\0" /* offset 14297 */ 30989 "\xd9\x84\xd8\xac\xd9\x8a\0" /* offset 14304 */ 30990 "\xd9\x84\xd9\x85\xd9\x8a\0" /* offset 14311 */ 30991 "\xd9\x8a\xd8\xad\xd9\x8a\0" /* offset 14318 */ 30992 "\xd9\x8a\xd8\xac\xd9\x8a\0" /* offset 14325 */ 30993 "\xd9\x8a\xd9\x85\xd9\x8a\0" /* offset 14332 */ 30994 "\xd9\x85\xd9\x85\xd9\x8a\0" /* offset 14339 */ 30995 "\xd9\x82\xd9\x85\xd9\x8a\0" /* offset 14346 */ 30996 "\xd9\x86\xd8\xad\xd9\x8a\0" /* offset 14353 */ 30997 "\xd8\xb9\xd9\x85\xd9\x8a\0" /* offset 14360 */ 30998 "\xd9\x83\xd9\x85\xd9\x8a\0" /* offset 14367 */ 30999 "\xd9\x86\xd8\xac\xd8\xad\0" /* offset 14374 */ 31000 "\xd9\x85\xd8\xae\xd9\x8a\0" /* offset 14381 */ 31001 "\xd9\x84\xd8\xac\xd9\x85\0" /* offset 14388 */ 31002 "\xd9\x83\xd9\x85\xd9\x85\0" /* offset 14395 */ 31003 "\xd8\xac\xd8\xad\xd9\x8a\0" /* offset 14402 */ 31004 "\xd8\xad\xd8\xac\xd9\x8a\0" /* offset 14409 */ 31005 "\xd9\x85\xd8\xac\xd9\x8a\0" /* offset 14416 */ 31006 "\xd9\x81\xd9\x85\xd9\x8a\0" /* offset 14423 */ 31007 "\xd8\xa8\xd8\xad\xd9\x8a\0" /* offset 14430 */ 31008 "\xd8\xb3\xd8\xae\xd9\x8a\0" /* offset 14437 */ 31009 "\xd9\x86\xd8\xac\xd9\x8a\0" /* offset 14444 */ 31010 "\xd8\xb5\xd9\x84\xdb\x92\0" /* offset 14451 */ 31011 "\xd9\x82\xd9\x84\xdb\x92\0" /* offset 14458 */ 31012 "\xd8\xa7\xd9\x84\xd9\x84\xd9\x87\0" /* offset 14465 */ 31013 "\xd8\xa7\xd9\x83\xd8\xa8\xd8\xb1\0" /* offset 14474 */ 31014 "\xd9\x85\xd8\xad\xd9\x85\xd8\xaf\0" /* offset 14483 */ 31015 "\xd8\xb5\xd9\x84\xd8\xb9\xd9\x85\0" /* offset 14492 */ 31016 "\xd8\xb1\xd8\xb3\xd9\x88\xd9\x84\0" /* offset 14501 */ 31017 "\xd8\xb9\xd9\x84\xd9\x8a\xd9\x87\0" /* offset 14510 */ 31018 "\xd9\x88\xd8\xb3\xd9\x84\xd9\x85\0" /* offset 14519 */ 31019 "\xd8\xb5\xd9\x84\xd9\x89\0" /* offset 14528 */ 31020 "\xd8\xb5\xd9\x84\xd9\x89\x20\xd8\xa7\xd9\x84\xd9\x84\xd9\x87\x20\xd8\xb9\xd9\x84\xd9\x8a\xd9\x87\x20\xd9\x88\xd8\xb3\xd9\x84\xd9\x85\0" /* offset 14535 */ 31021 "\xd8\xac\xd9\x84\x20\xd8\xac\xd9\x84\xd8\xa7\xd9\x84\xd9\x87\0" /* offset 14569 */ 31022 "\xd8\xb1\xdb\x8c\xd8\xa7\xd9\x84\0" /* offset 14585 */ 31023 "\x2c\0" /* offset 14594 */ 31024 "\xe3\x80\x81\0" /* offset 14596 */ 31025 "\xe3\x80\x82\0" /* offset 14600 */ 31026 "\x3a\0" /* offset 14604 */ 31027 "\x21\0" /* offset 14606 */ 31028 "\x3f\0" /* offset 14608 */ 31029 "\xe3\x80\x96\0" /* offset 14610 */ 31030 "\xe3\x80\x97\0" /* offset 14614 */ 31031 "\xe2\x80\x94\0" /* offset 14618 */ 31032 "\xe2\x80\x93\0" /* offset 14622 */ 31033 "\x5f\0" /* offset 14626 */ 31034 "\x7b\0" /* offset 14628 */ 31035 "\x7d\0" /* offset 14630 */ 31036 "\xe3\x80\x94\0" /* offset 14632 */ 31037 "\xe3\x80\x95\0" /* offset 14636 */ 31038 "\xe3\x80\x90\0" /* offset 14640 */ 31039 "\xe3\x80\x91\0" /* offset 14644 */ 31040 "\xe3\x80\x8a\0" /* offset 14648 */ 31041 "\xe3\x80\x8b\0" /* offset 14652 */ 31042 "\xe3\x80\x8c\0" /* offset 14656 */ 31043 "\xe3\x80\x8d\0" /* offset 14660 */ 31044 "\xe3\x80\x8e\0" /* offset 14664 */ 31045 "\xe3\x80\x8f\0" /* offset 14668 */ 31046 "\x5b\0" /* offset 14672 */ 31047 "\x5d\0" /* offset 14674 */ 31048 "\x23\0" /* offset 14676 */ 31049 "\x26\0" /* offset 14678 */ 31050 "\x2a\0" /* offset 14680 */ 31051 "\x2d\0" /* offset 14682 */ 31052 "\x3c\0" /* offset 14684 */ 31053 "\x3e\0" /* offset 14686 */ 31054 "\x5c\0" /* offset 14688 */ 31055 "\x24\0" /* offset 14690 */ 31056 "\x25\0" /* offset 14692 */ 31057 "\x40\0" /* offset 14694 */ 31058 "\x20\xd9\x8b\0" /* offset 14696 */ 31059 "\xd9\x80\xd9\x8b\0" /* offset 14700 */ 31060 "\x20\xd9\x8c\0" /* offset 14705 */ 31061 "\x20\xd9\x8d\0" /* offset 14709 */ 31062 "\x20\xd9\x8e\0" /* offset 14713 */ 31063 "\xd9\x80\xd9\x8e\0" /* offset 14717 */ 31064 "\x20\xd9\x8f\0" /* offset 14722 */ 31065 "\xd9\x80\xd9\x8f\0" /* offset 14726 */ 31066 "\x20\xd9\x90\0" /* offset 14731 */ 31067 "\xd9\x80\xd9\x90\0" /* offset 14735 */ 31068 "\x20\xd9\x91\0" /* offset 14740 */ 31069 "\xd9\x80\xd9\x91\0" /* offset 14744 */ 31070 "\x20\xd9\x92\0" /* offset 14749 */ 31071 "\xd9\x80\xd9\x92\0" /* offset 14753 */ 31072 "\xd8\xa1\0" /* offset 14758 */ 31073 "\xd8\xa7\0" /* offset 14761 */ 31074 "\xd8\xa8\0" /* offset 14764 */ 31075 "\xd8\xa9\0" /* offset 14767 */ 31076 "\xd8\xaa\0" /* offset 14770 */ 31077 "\xd8\xab\0" /* offset 14773 */ 31078 "\xd8\xac\0" /* offset 14776 */ 31079 "\xd8\xad\0" /* offset 14779 */ 31080 "\xd8\xae\0" /* offset 14782 */ 31081 "\xd8\xaf\0" /* offset 14785 */ 31082 "\xd8\xb0\0" /* offset 14788 */ 31083 "\xd8\xb1\0" /* offset 14791 */ 31084 "\xd8\xb2\0" /* offset 14794 */ 31085 "\xd8\xb3\0" /* offset 14797 */ 31086 "\xd8\xb4\0" /* offset 14800 */ 31087 "\xd8\xb5\0" /* offset 14803 */ 31088 "\xd8\xb6\0" /* offset 14806 */ 31089 "\xd8\xb7\0" /* offset 14809 */ 31090 "\xd8\xb8\0" /* offset 14812 */ 31091 "\xd8\xb9\0" /* offset 14815 */ 31092 "\xd8\xba\0" /* offset 14818 */ 31093 "\xd9\x81\0" /* offset 14821 */ 31094 "\xd9\x82\0" /* offset 14824 */ 31095 "\xd9\x83\0" /* offset 14827 */ 31096 "\xd9\x84\0" /* offset 14830 */ 31097 "\xd9\x85\0" /* offset 14833 */ 31098 "\xd9\x86\0" /* offset 14836 */ 31099 "\xd9\x87\0" /* offset 14839 */ 31100 "\xd9\x88\0" /* offset 14842 */ 31101 "\xd9\x8a\0" /* offset 14845 */ 31102 "\xd9\x84\xd8\xa7\xd9\x93\0" /* offset 14848 */ 31103 "\xd9\x84\xd8\xa7\xd9\x94\0" /* offset 14855 */ 31104 "\xd9\x84\xd8\xa7\xd9\x95\0" /* offset 14862 */ 31105 "\xd9\x84\xd8\xa7\0" /* offset 14869 */ 31106 "\x22\0" /* offset 14874 */ 31107 "\x27\0" /* offset 14876 */ 31108 "\x2f\0" /* offset 14878 */ 31109 "\x5e\0" /* offset 14880 */ 31110 "\x7c\0" /* offset 14882 */ 31111 "\x7e\0" /* offset 14884 */ 31112 "\xe2\xa6\x85\0" /* offset 14886 */ 31113 "\xe2\xa6\x86\0" /* offset 14890 */ 31114 "\xe3\x83\xbb\0" /* offset 14894 */ 31115 "\xe3\x82\xa1\0" /* offset 14898 */ 31116 "\xe3\x82\xa3\0" /* offset 14902 */ 31117 "\xe3\x82\xa5\0" /* offset 14906 */ 31118 "\xe3\x82\xa7\0" /* offset 14910 */ 31119 "\xe3\x82\xa9\0" /* offset 14914 */ 31120 "\xe3\x83\xa3\0" /* offset 14918 */ 31121 "\xe3\x83\xa5\0" /* offset 14922 */ 31122 "\xe3\x83\xa7\0" /* offset 14926 */ 31123 "\xe3\x83\x83\0" /* offset 14930 */ 31124 "\xe3\x83\xbc\0" /* offset 14934 */ 31125 "\xe3\x83\xb3\0" /* offset 14938 */ 31126 "\xe3\x82\x99\0" /* offset 14942 */ 31127 "\xe3\x82\x9a\0" /* offset 14946 */ 31128 "\xc2\xa2\0" /* offset 14950 */ 31129 "\xc2\xa3\0" /* offset 14953 */ 31130 "\xc2\xac\0" /* offset 14956 */ 31131 "\xc2\xa6\0" /* offset 14959 */ 31132 "\xc2\xa5\0" /* offset 14962 */ 31133 "\xe2\x82\xa9\0" /* offset 14965 */ 31134 "\xe2\x94\x82\0" /* offset 14969 */ 31135 "\xe2\x86\x90\0" /* offset 14973 */ 31136 "\xe2\x86\x91\0" /* offset 14977 */ 31137 "\xe2\x86\x92\0" /* offset 14981 */ 31138 "\xe2\x86\x93\0" /* offset 14985 */ 31139 "\xe2\x96\xa0\0" /* offset 14989 */ 31140 "\xe2\x97\x8b\0" /* offset 14993 */ 31141 "\xf0\x91\x82\x99\xf0\x91\x82\xba\0" /* offset 14997 */ 31142 "\xf0\x91\x82\x9b\xf0\x91\x82\xba\0" /* offset 15006 */ 31143 "\xf0\x91\x82\xa5\xf0\x91\x82\xba\0" /* offset 15015 */ 31144 "\xf0\x91\x84\xb1\xf0\x91\x84\xa7\0" /* offset 15024 */ 31145 "\xf0\x91\x84\xb2\xf0\x91\x84\xa7\0" /* offset 15033 */ 31146 "\xf0\x91\x8d\x87\xf0\x91\x8c\xbe\0" /* offset 15042 */ 31147 "\xf0\x91\x8d\x87\xf0\x91\x8d\x97\0" /* offset 15051 */ 31148 "\xf0\x91\x92\xb9\xf0\x91\x92\xba\0" /* offset 15060 */ 31149 "\xf0\x91\x92\xb9\xf0\x91\x92\xb0\0" /* offset 15069 */ 31150 "\xf0\x91\x92\xb9\xf0\x91\x92\xbd\0" /* offset 15078 */ 31151 "\xf0\x91\x96\xb8\xf0\x91\x96\xaf\0" /* offset 15087 */ 31152 "\xf0\x91\x96\xb9\xf0\x91\x96\xaf\0" /* offset 15096 */ 31153 "\xf0\x9d\x85\x97\xf0\x9d\x85\xa5\0" /* offset 15105 */ 31154 "\xf0\x9d\x85\x98\xf0\x9d\x85\xa5\0" /* offset 15114 */ 31155 "\xf0\x9d\x85\x98\xf0\x9d\x85\xa5\xf0\x9d\x85\xae\0" /* offset 15123 */ 31156 "\xf0\x9d\x85\x98\xf0\x9d\x85\xa5\xf0\x9d\x85\xaf\0" /* offset 15136 */ 31157 "\xf0\x9d\x85\x98\xf0\x9d\x85\xa5\xf0\x9d\x85\xb0\0" /* offset 15149 */ 31158 "\xf0\x9d\x85\x98\xf0\x9d\x85\xa5\xf0\x9d\x85\xb1\0" /* offset 15162 */ 31159 "\xf0\x9d\x85\x98\xf0\x9d\x85\xa5\xf0\x9d\x85\xb2\0" /* offset 15175 */ 31160 "\xf0\x9d\x86\xb9\xf0\x9d\x85\xa5\0" /* offset 15188 */ 31161 "\xf0\x9d\x86\xba\xf0\x9d\x85\xa5\0" /* offset 15197 */ 31162 "\xf0\x9d\x86\xb9\xf0\x9d\x85\xa5\xf0\x9d\x85\xae\0" /* offset 15206 */ 31163 "\xf0\x9d\x86\xba\xf0\x9d\x85\xa5\xf0\x9d\x85\xae\0" /* offset 15219 */ 31164 "\xf0\x9d\x86\xb9\xf0\x9d\x85\xa5\xf0\x9d\x85\xaf\0" /* offset 15232 */ 31165 "\xf0\x9d\x86\xba\xf0\x9d\x85\xa5\xf0\x9d\x85\xaf\0" /* offset 15245 */ 31166 "\xc4\xb1\0" /* offset 15258 */ 31167 "\xc8\xb7\0" /* offset 15261 */ 31168 "\xce\x91\0" /* offset 15264 */ 31169 "\xce\x92\0" /* offset 15267 */ 31170 "\xce\x94\0" /* offset 15270 */ 31171 "\xce\x95\0" /* offset 15273 */ 31172 "\xce\x96\0" /* offset 15276 */ 31173 "\xce\x97\0" /* offset 15279 */ 31174 "\xce\x99\0" /* offset 15282 */ 31175 "\xce\x9a\0" /* offset 15285 */ 31176 "\xce\x9b\0" /* offset 15288 */ 31177 "\xce\x9c\0" /* offset 15291 */ 31178 "\xce\x9d\0" /* offset 15294 */ 31179 "\xce\x9e\0" /* offset 15297 */ 31180 "\xce\x9f\0" /* offset 15300 */ 31181 "\xce\xa1\0" /* offset 15303 */ 31182 "\xce\xa4\0" /* offset 15306 */ 31183 "\xce\xa6\0" /* offset 15309 */ 31184 "\xce\xa7\0" /* offset 15312 */ 31185 "\xce\xa8\0" /* offset 15315 */ 31186 "\xe2\x88\x87\0" /* offset 15318 */ 31187 "\xce\xb1\0" /* offset 15322 */ 31188 "\xce\xb6\0" /* offset 15325 */ 31189 "\xce\xb7\0" /* offset 15328 */ 31190 "\xce\xbb\0" /* offset 15331 */ 31191 "\xce\xbd\0" /* offset 15334 */ 31192 "\xce\xbe\0" /* offset 15337 */ 31193 "\xce\xbf\0" /* offset 15340 */ 31194 "\xcf\x83\0" /* offset 15343 */ 31195 "\xcf\x84\0" /* offset 15346 */ 31196 "\xcf\x85\0" /* offset 15349 */ 31197 "\xcf\x88\0" /* offset 15352 */ 31198 "\xcf\x89\0" /* offset 15355 */ 31199 "\xe2\x88\x82\0" /* offset 15358 */ 31200 "\xcf\x9c\0" /* offset 15362 */ 31201 "\xcf\x9d\0" /* offset 15365 */ 31202 "\xd9\xae\0" /* offset 15368 */ 31203 "\xda\xa1\0" /* offset 15371 */ 31204 "\xd9\xaf\0" /* offset 15374 */ 31205 "\x30\x2e\0" /* offset 15377 */ 31206 "\x30\x2c\0" /* offset 15380 */ 31207 "\x31\x2c\0" /* offset 15383 */ 31208 "\x32\x2c\0" /* offset 15386 */ 31209 "\x33\x2c\0" /* offset 15389 */ 31210 "\x34\x2c\0" /* offset 15392 */ 31211 "\x35\x2c\0" /* offset 15395 */ 31212 "\x36\x2c\0" /* offset 15398 */ 31213 "\x37\x2c\0" /* offset 15401 */ 31214 "\x38\x2c\0" /* offset 15404 */ 31215 "\x39\x2c\0" /* offset 15407 */ 31216 "\x28\x41\x29\0" /* offset 15410 */ 31217 "\x28\x42\x29\0" /* offset 15414 */ 31218 "\x28\x43\x29\0" /* offset 15418 */ 31219 "\x28\x44\x29\0" /* offset 15422 */ 31220 "\x28\x45\x29\0" /* offset 15426 */ 31221 "\x28\x46\x29\0" /* offset 15430 */ 31222 "\x28\x47\x29\0" /* offset 15434 */ 31223 "\x28\x48\x29\0" /* offset 15438 */ 31224 "\x28\x49\x29\0" /* offset 15442 */ 31225 "\x28\x4a\x29\0" /* offset 15446 */ 31226 "\x28\x4b\x29\0" /* offset 15450 */ 31227 "\x28\x4c\x29\0" /* offset 15454 */ 31228 "\x28\x4d\x29\0" /* offset 15458 */ 31229 "\x28\x4e\x29\0" /* offset 15462 */ 31230 "\x28\x4f\x29\0" /* offset 15466 */ 31231 "\x28\x50\x29\0" /* offset 15470 */ 31232 "\x28\x51\x29\0" /* offset 15474 */ 31233 "\x28\x52\x29\0" /* offset 15478 */ 31234 "\x28\x53\x29\0" /* offset 15482 */ 31235 "\x28\x54\x29\0" /* offset 15486 */ 31236 "\x28\x55\x29\0" /* offset 15490 */ 31237 "\x28\x56\x29\0" /* offset 15494 */ 31238 "\x28\x57\x29\0" /* offset 15498 */ 31239 "\x28\x58\x29\0" /* offset 15502 */ 31240 "\x28\x59\x29\0" /* offset 15506 */ 31241 "\x28\x5a\x29\0" /* offset 15510 */ 31242 "\xe3\x80\x94\x53\xe3\x80\x95\0" /* offset 15514 */ 31243 "\x43\x44\0" /* offset 15522 */ 31244 "\x57\x5a\0" /* offset 15525 */ 31245 "\x48\x56\0" /* offset 15528 */ 31246 "\x53\x44\0" /* offset 15531 */ 31247 "\x53\x53\0" /* offset 15534 */ 31248 "\x50\x50\x56\0" /* offset 15537 */ 31249 "\x57\x43\0" /* offset 15541 */ 31250 "\x4d\x43\0" /* offset 15544 */ 31251 "\x4d\x44\0" /* offset 15547 */ 31252 "\x44\x4a\0" /* offset 15550 */ 31253 "\xe3\x81\xbb\xe3\x81\x8b\0" /* offset 15553 */ 31254 "\xe3\x82\xb3\xe3\x82\xb3\0" /* offset 15560 */ 31255 "\xe5\xad\x97\0" /* offset 15567 */ 31256 "\xe5\x8f\x8c\0" /* offset 15571 */ 31257 "\xe5\xa4\x9a\0" /* offset 15575 */ 31258 "\xe8\xa7\xa3\0" /* offset 15579 */ 31259 "\xe4\xba\xa4\0" /* offset 15583 */ 31260 "\xe6\x98\xa0\0" /* offset 15587 */ 31261 "\xe7\x84\xa1\0" /* offset 15591 */ 31262 "\xe5\x89\x8d\0" /* offset 15595 */ 31263 "\xe5\xbe\x8c\0" /* offset 15599 */ 31264 "\xe5\x86\x8d\0" /* offset 15603 */ 31265 "\xe6\x96\xb0\0" /* offset 15607 */ 31266 "\xe5\x88\x9d\0" /* offset 15611 */ 31267 "\xe7\xb5\x82\0" /* offset 15615 */ 31268 "\xe8\xb2\xa9\0" /* offset 15619 */ 31269 "\xe5\xa3\xb0\0" /* offset 15623 */ 31270 "\xe5\x90\xb9\0" /* offset 15627 */ 31271 "\xe6\xbc\x94\0" /* offset 15631 */ 31272 "\xe6\x8a\x95\0" /* offset 15635 */ 31273 "\xe6\x8d\x95\0" /* offset 15639 */ 31274 "\xe9\x81\x8a\0" /* offset 15643 */ 31275 "\xe6\x8c\x87\0" /* offset 15647 */ 31276 "\xe6\x89\x93\0" /* offset 15651 */ 31277 "\xe7\xa6\x81\0" /* offset 15655 */ 31278 "\xe7\xa9\xba\0" /* offset 15659 */ 31279 "\xe5\x90\x88\0" /* offset 15663 */ 31280 "\xe6\xba\x80\0" /* offset 15667 */ 31281 "\xe7\x94\xb3\0" /* offset 15671 */ 31282 "\xe5\x89\xb2\0" /* offset 15675 */ 31283 "\xe5\x96\xb6\0" /* offset 15679 */ 31284 "\xe9\x85\x8d\0" /* offset 15683 */ 31285 "\xe3\x80\x94\xe6\x9c\xac\xe3\x80\x95\0" /* offset 15687 */ 31286 "\xe3\x80\x94\xe4\xb8\x89\xe3\x80\x95\0" /* offset 15697 */ 31287 "\xe3\x80\x94\xe4\xba\x8c\xe3\x80\x95\0" /* offset 15707 */ 31288 "\xe3\x80\x94\xe5\xae\x89\xe3\x80\x95\0" /* offset 15717 */ 31289 "\xe3\x80\x94\xe7\x82\xb9\xe3\x80\x95\0" /* offset 15727 */ 31290 "\xe3\x80\x94\xe6\x89\x93\xe3\x80\x95\0" /* offset 15737 */ 31291 "\xe3\x80\x94\xe7\x9b\x97\xe3\x80\x95\0" /* offset 15747 */ 31292 "\xe3\x80\x94\xe5\x8b\x9d\xe3\x80\x95\0" /* offset 15757 */ 31293 "\xe3\x80\x94\xe6\x95\x97\xe3\x80\x95\0" /* offset 15767 */ 31294 "\xe5\xbe\x97\0" /* offset 15777 */ 31295 "\xe5\x8f\xaf\0" /* offset 15781 */ 31296 "\xe4\xb8\xbd\0" /* offset 15785 */ 31297 "\xe4\xb8\xb8\0" /* offset 15789 */ 31298 "\xe4\xb9\x81\0" /* offset 15793 */ 31299 "\xf0\xa0\x84\xa2\0" /* offset 15797 */ 31300 "\xe4\xbd\xa0\0" /* offset 15802 */ 31301 "\xe4\xbe\xbb\0" /* offset 15806 */ 31302 "\xe5\x80\x82\0" /* offset 15810 */ 31303 "\xe5\x81\xba\0" /* offset 15814 */ 31304 "\xe5\x82\x99\0" /* offset 15818 */ 31305 "\xe5\x83\x8f\0" /* offset 15822 */ 31306 "\xe3\x92\x9e\0" /* offset 15826 */ 31307 "\xf0\xa0\x98\xba\0" /* offset 15830 */ 31308 "\xe5\x85\x94\0" /* offset 15835 */ 31309 "\xe5\x85\xa4\0" /* offset 15839 */ 31310 "\xe5\x85\xb7\0" /* offset 15843 */ 31311 "\xf0\xa0\x94\x9c\0" /* offset 15847 */ 31312 "\xe3\x92\xb9\0" /* offset 15852 */ 31313 "\xe5\x85\xa7\0" /* offset 15856 */ 31314 "\xf0\xa0\x95\x8b\0" /* offset 15860 */ 31315 "\xe5\x86\x97\0" /* offset 15865 */ 31316 "\xe5\x86\xa4\0" /* offset 15869 */ 31317 "\xe4\xbb\x8c\0" /* offset 15873 */ 31318 "\xe5\x86\xac\0" /* offset 15877 */ 31319 "\xf0\xa9\x87\x9f\0" /* offset 15881 */ 31320 "\xe5\x88\x83\0" /* offset 15886 */ 31321 "\xe3\x93\x9f\0" /* offset 15890 */ 31322 "\xe5\x88\xbb\0" /* offset 15894 */ 31323 "\xe5\x89\x86\0" /* offset 15898 */ 31324 "\xe5\x89\xb7\0" /* offset 15902 */ 31325 "\xe3\x94\x95\0" /* offset 15906 */ 31326 "\xe5\x8c\x85\0" /* offset 15910 */ 31327 "\xe5\x8c\x86\0" /* offset 15914 */ 31328 "\xe5\x8d\x89\0" /* offset 15918 */ 31329 "\xe5\x8d\x9a\0" /* offset 15922 */ 31330 "\xe5\x8d\xb3\0" /* offset 15926 */ 31331 "\xe5\x8d\xbd\0" /* offset 15930 */ 31332 "\xe5\x8d\xbf\0" /* offset 15934 */ 31333 "\xf0\xa0\xa8\xac\0" /* offset 15938 */ 31334 "\xe7\x81\xb0\0" /* offset 15943 */ 31335 "\xe5\x8f\x8a\0" /* offset 15947 */ 31336 "\xe5\x8f\x9f\0" /* offset 15951 */ 31337 "\xf0\xa0\xad\xa3\0" /* offset 15955 */ 31338 "\xe5\x8f\xab\0" /* offset 15960 */ 31339 "\xe5\x8f\xb1\0" /* offset 15964 */ 31340 "\xe5\x90\x86\0" /* offset 15968 */ 31341 "\xe5\x92\x9e\0" /* offset 15972 */ 31342 "\xe5\x90\xb8\0" /* offset 15976 */ 31343 "\xe5\x91\x88\0" /* offset 15980 */ 31344 "\xe5\x91\xa8\0" /* offset 15984 */ 31345 "\xe5\x92\xa2\0" /* offset 15988 */ 31346 "\xe5\x93\xb6\0" /* offset 15992 */ 31347 "\xe5\x94\x90\0" /* offset 15996 */ 31348 "\xe5\x95\x93\0" /* offset 16000 */ 31349 "\xe5\x95\xa3\0" /* offset 16004 */ 31350 "\xe5\x96\x84\0" /* offset 16008 */ 31351 "\xe5\x96\xab\0" /* offset 16012 */ 31352 "\xe5\x96\xb3\0" /* offset 16016 */ 31353 "\xe5\x97\x82\0" /* offset 16020 */ 31354 "\xe5\x9c\x96\0" /* offset 16024 */ 31355 "\xe5\x9c\x97\0" /* offset 16028 */ 31356 "\xe5\x99\x91\0" /* offset 16032 */ 31357 "\xe5\x99\xb4\0" /* offset 16036 */ 31358 "\xe5\xa3\xae\0" /* offset 16040 */ 31359 "\xe5\x9f\x8e\0" /* offset 16044 */ 31360 "\xe5\x9f\xb4\0" /* offset 16048 */ 31361 "\xe5\xa0\x8d\0" /* offset 16052 */ 31362 "\xe5\x9e\x8b\0" /* offset 16056 */ 31363 "\xe5\xa0\xb2\0" /* offset 16060 */ 31364 "\xe5\xa0\xb1\0" /* offset 16064 */ 31365 "\xe5\xa2\xac\0" /* offset 16068 */ 31366 "\xf0\xa1\x93\xa4\0" /* offset 16072 */ 31367 "\xe5\xa3\xb2\0" /* offset 16077 */ 31368 "\xe5\xa3\xb7\0" /* offset 16081 */ 31369 "\xe5\xa4\x86\0" /* offset 16085 */ 31370 "\xe5\xa4\xa2\0" /* offset 16089 */ 31371 "\xe5\xa5\xa2\0" /* offset 16093 */ 31372 "\xf0\xa1\x9a\xa8\0" /* offset 16097 */ 31373 "\xf0\xa1\x9b\xaa\0" /* offset 16102 */ 31374 "\xe5\xa7\xac\0" /* offset 16107 */ 31375 "\xe5\xa8\x9b\0" /* offset 16111 */ 31376 "\xe5\xa8\xa7\0" /* offset 16115 */ 31377 "\xe5\xa7\x98\0" /* offset 16119 */ 31378 "\xe5\xa9\xa6\0" /* offset 16123 */ 31379 "\xe3\x9b\xae\0" /* offset 16127 */ 31380 "\xe3\x9b\xbc\0" /* offset 16131 */ 31381 "\xe5\xac\x88\0" /* offset 16135 */ 31382 "\xe5\xac\xbe\0" /* offset 16139 */ 31383 "\xf0\xa1\xa7\x88\0" /* offset 16143 */ 31384 "\xe5\xaf\x83\0" /* offset 16148 */ 31385 "\xe5\xaf\x98\0" /* offset 16152 */ 31386 "\xe5\xaf\xb3\0" /* offset 16156 */ 31387 "\xf0\xa1\xac\x98\0" /* offset 16160 */ 31388 "\xe5\xaf\xbf\0" /* offset 16165 */ 31389 "\xe5\xb0\x86\0" /* offset 16169 */ 31390 "\xe5\xbd\x93\0" /* offset 16173 */ 31391 "\xe3\x9e\x81\0" /* offset 16177 */ 31392 "\xe5\xb1\xa0\0" /* offset 16181 */ 31393 "\xe5\xb3\x80\0" /* offset 16185 */ 31394 "\xe5\xb2\x8d\0" /* offset 16189 */ 31395 "\xf0\xa1\xb7\xa4\0" /* offset 16193 */ 31396 "\xe5\xb5\x83\0" /* offset 16198 */ 31397 "\xf0\xa1\xb7\xa6\0" /* offset 16202 */ 31398 "\xe5\xb5\xae\0" /* offset 16207 */ 31399 "\xe5\xb5\xab\0" /* offset 16211 */ 31400 "\xe5\xb5\xbc\0" /* offset 16215 */ 31401 "\xe5\xb7\xa1\0" /* offset 16219 */ 31402 "\xe5\xb7\xa2\0" /* offset 16223 */ 31403 "\xe3\xa0\xaf\0" /* offset 16227 */ 31404 "\xe5\xb7\xbd\0" /* offset 16231 */ 31405 "\xe5\xb8\xa8\0" /* offset 16235 */ 31406 "\xe5\xb8\xbd\0" /* offset 16239 */ 31407 "\xe5\xb9\xa9\0" /* offset 16243 */ 31408 "\xe3\xa1\xa2\0" /* offset 16247 */ 31409 "\xf0\xa2\x86\x83\0" /* offset 16251 */ 31410 "\xe3\xa1\xbc\0" /* offset 16256 */ 31411 "\xe5\xba\xb0\0" /* offset 16260 */ 31412 "\xe5\xba\xb3\0" /* offset 16264 */ 31413 "\xe5\xba\xb6\0" /* offset 16268 */ 31414 "\xf0\xaa\x8e\x92\0" /* offset 16272 */ 31415 "\xf0\xa2\x8c\xb1\0" /* offset 16277 */ 31416 "\xe8\x88\x81\0" /* offset 16282 */ 31417 "\xe5\xbc\xa2\0" /* offset 16286 */ 31418 "\xe3\xa3\x87\0" /* offset 16290 */ 31419 "\xf0\xa3\x8a\xb8\0" /* offset 16294 */ 31420 "\xf0\xa6\x87\x9a\0" /* offset 16299 */ 31421 "\xe5\xbd\xa2\0" /* offset 16304 */ 31422 "\xe5\xbd\xab\0" /* offset 16308 */ 31423 "\xe3\xa3\xa3\0" /* offset 16312 */ 31424 "\xe5\xbe\x9a\0" /* offset 16316 */ 31425 "\xe5\xbf\x8d\0" /* offset 16320 */ 31426 "\xe5\xbf\x97\0" /* offset 16324 */ 31427 "\xe5\xbf\xb9\0" /* offset 16328 */ 31428 "\xe6\x82\x81\0" /* offset 16332 */ 31429 "\xe3\xa4\xba\0" /* offset 16336 */ 31430 "\xe3\xa4\x9c\0" /* offset 16340 */ 31431 "\xf0\xa2\x9b\x94\0" /* offset 16344 */ 31432 "\xe6\x83\x87\0" /* offset 16349 */ 31433 "\xe6\x85\x88\0" /* offset 16353 */ 31434 "\xe6\x85\x8c\0" /* offset 16357 */ 31435 "\xe6\x85\xba\0" /* offset 16361 */ 31436 "\xe6\x86\xb2\0" /* offset 16365 */ 31437 "\xe6\x86\xa4\0" /* offset 16369 */ 31438 "\xe6\x86\xaf\0" /* offset 16373 */ 31439 "\xe6\x87\x9e\0" /* offset 16377 */ 31440 "\xe6\x88\x90\0" /* offset 16381 */ 31441 "\xe6\x88\x9b\0" /* offset 16385 */ 31442 "\xe6\x89\x9d\0" /* offset 16389 */ 31443 "\xe6\x8a\xb1\0" /* offset 16393 */ 31444 "\xe6\x8b\x94\0" /* offset 16397 */ 31445 "\xe6\x8d\x90\0" /* offset 16401 */ 31446 "\xf0\xa2\xac\x8c\0" /* offset 16405 */ 31447 "\xe6\x8c\xbd\0" /* offset 16410 */ 31448 "\xe6\x8b\xbc\0" /* offset 16414 */ 31449 "\xe6\x8d\xa8\0" /* offset 16418 */ 31450 "\xe6\x8e\x83\0" /* offset 16422 */ 31451 "\xe6\x8f\xa4\0" /* offset 16426 */ 31452 "\xf0\xa2\xaf\xb1\0" /* offset 16430 */ 31453 "\xe6\x90\xa2\0" /* offset 16435 */ 31454 "\xe6\x8f\x85\0" /* offset 16439 */ 31455 "\xe6\x8e\xa9\0" /* offset 16443 */ 31456 "\xe3\xa8\xae\0" /* offset 16447 */ 31457 "\xe6\x91\xa9\0" /* offset 16451 */ 31458 "\xe6\x91\xbe\0" /* offset 16455 */ 31459 "\xe6\x92\x9d\0" /* offset 16459 */ 31460 "\xe6\x91\xb7\0" /* offset 16463 */ 31461 "\xe3\xa9\xac\0" /* offset 16467 */ 31462 "\xe6\x95\xac\0" /* offset 16471 */ 31463 "\xf0\xa3\x80\x8a\0" /* offset 16475 */ 31464 "\xe6\x97\xa3\0" /* offset 16480 */ 31465 "\xe6\x9b\xb8\0" /* offset 16484 */ 31466 "\xe6\x99\x89\0" /* offset 16488 */ 31467 "\xe3\xac\x99\0" /* offset 16492 */ 31468 "\xe3\xac\x88\0" /* offset 16496 */ 31469 "\xe3\xab\xa4\0" /* offset 16500 */ 31470 "\xe5\x86\x92\0" /* offset 16504 */ 31471 "\xe5\x86\x95\0" /* offset 16508 */ 31472 "\xe6\x9c\x80\0" /* offset 16512 */ 31473 "\xe6\x9a\x9c\0" /* offset 16516 */ 31474 "\xe8\x82\xad\0" /* offset 16520 */ 31475 "\xe4\x8f\x99\0" /* offset 16524 */ 31476 "\xe6\x9c\xa1\0" /* offset 16528 */ 31477 "\xe6\x9d\x9e\0" /* offset 16532 */ 31478 "\xe6\x9d\x93\0" /* offset 16536 */ 31479 "\xf0\xa3\x8f\x83\0" /* offset 16540 */ 31480 "\xe3\xad\x89\0" /* offset 16545 */ 31481 "\xe6\x9f\xba\0" /* offset 16549 */ 31482 "\xe6\x9e\x85\0" /* offset 16553 */ 31483 "\xe6\xa1\x92\0" /* offset 16557 */ 31484 "\xf0\xa3\x91\xad\0" /* offset 16561 */ 31485 "\xe6\xa2\x8e\0" /* offset 16566 */ 31486 "\xe6\xa0\x9f\0" /* offset 16570 */ 31487 "\xe6\xa4\x94\0" /* offset 16574 */ 31488 "\xe6\xa5\x82\0" /* offset 16578 */ 31489 "\xe6\xa6\xa3\0" /* offset 16582 */ 31490 "\xe6\xa7\xaa\0" /* offset 16586 */ 31491 "\xe6\xaa\xa8\0" /* offset 16590 */ 31492 "\xf0\xa3\x9a\xa3\0" /* offset 16594 */ 31493 "\xe6\xab\x9b\0" /* offset 16599 */ 31494 "\xe3\xb0\x98\0" /* offset 16603 */ 31495 "\xe6\xac\xa1\0" /* offset 16607 */ 31496 "\xf0\xa3\xa2\xa7\0" /* offset 16611 */ 31497 "\xe6\xad\x94\0" /* offset 16616 */ 31498 "\xe3\xb1\x8e\0" /* offset 16620 */ 31499 "\xe6\xad\xb2\0" /* offset 16624 */ 31500 "\xe6\xae\x9f\0" /* offset 16628 */ 31501 "\xe6\xae\xbb\0" /* offset 16632 */ 31502 "\xf0\xa3\xaa\x8d\0" /* offset 16636 */ 31503 "\xf0\xa1\xb4\x8b\0" /* offset 16641 */ 31504 "\xf0\xa3\xab\xba\0" /* offset 16646 */ 31505 "\xe6\xb1\x8e\0" /* offset 16651 */ 31506 "\xf0\xa3\xb2\xbc\0" /* offset 16655 */ 31507 "\xe6\xb2\xbf\0" /* offset 16660 */ 31508 "\xe6\xb3\x8d\0" /* offset 16664 */ 31509 "\xe6\xb1\xa7\0" /* offset 16668 */ 31510 "\xe6\xb4\x96\0" /* offset 16672 */ 31511 "\xe6\xb4\xbe\0" /* offset 16676 */ 31512 "\xe6\xb5\xa9\0" /* offset 16680 */ 31513 "\xe6\xb5\xb8\0" /* offset 16684 */ 31514 "\xe6\xb6\x85\0" /* offset 16688 */ 31515 "\xf0\xa3\xb4\x9e\0" /* offset 16692 */ 31516 "\xe6\xb4\xb4\0" /* offset 16697 */ 31517 "\xe6\xb8\xaf\0" /* offset 16701 */ 31518 "\xe6\xb9\xae\0" /* offset 16705 */ 31519 "\xe3\xb4\xb3\0" /* offset 16709 */ 31520 "\xe6\xbb\x87\0" /* offset 16713 */ 31521 "\xf0\xa3\xbb\x91\0" /* offset 16717 */ 31522 "\xe6\xb7\xb9\0" /* offset 16722 */ 31523 "\xe6\xbd\xae\0" /* offset 16726 */ 31524 "\xf0\xa3\xbd\x9e\0" /* offset 16730 */ 31525 "\xf0\xa3\xbe\x8e\0" /* offset 16735 */ 31526 "\xe6\xbf\x86\0" /* offset 16740 */ 31527 "\xe7\x80\xb9\0" /* offset 16744 */ 31528 "\xe7\x80\x9b\0" /* offset 16748 */ 31529 "\xe3\xb6\x96\0" /* offset 16752 */ 31530 "\xe7\x81\x8a\0" /* offset 16756 */ 31531 "\xe7\x81\xbd\0" /* offset 16760 */ 31532 "\xe7\x81\xb7\0" /* offset 16764 */ 31533 "\xe7\x82\xad\0" /* offset 16768 */ 31534 "\xf0\xa0\x94\xa5\0" /* offset 16772 */ 31535 "\xe7\x85\x85\0" /* offset 16777 */ 31536 "\xf0\xa4\x89\xa3\0" /* offset 16781 */ 31537 "\xe7\x86\x9c\0" /* offset 16786 */ 31538 "\xf0\xa4\x8e\xab\0" /* offset 16790 */ 31539 "\xe7\x88\xa8\0" /* offset 16795 */ 31540 "\xe7\x89\x90\0" /* offset 16799 */ 31541 "\xf0\xa4\x98\x88\0" /* offset 16803 */ 31542 "\xe7\x8a\x80\0" /* offset 16808 */ 31543 "\xe7\x8a\x95\0" /* offset 16812 */ 31544 "\xf0\xa4\x9c\xb5\0" /* offset 16816 */ 31545 "\xf0\xa4\xa0\x94\0" /* offset 16821 */ 31546 "\xe7\x8d\xba\0" /* offset 16826 */ 31547 "\xe7\x8e\x8b\0" /* offset 16830 */ 31548 "\xe3\xba\xac\0" /* offset 16834 */ 31549 "\xe7\x8e\xa5\0" /* offset 16838 */ 31550 "\xe3\xba\xb8\0" /* offset 16842 */ 31551 "\xe7\x91\x87\0" /* offset 16846 */ 31552 "\xe7\x91\x9c\0" /* offset 16850 */ 31553 "\xe7\x92\x85\0" /* offset 16854 */ 31554 "\xe7\x93\x8a\0" /* offset 16858 */ 31555 "\xe3\xbc\x9b\0" /* offset 16862 */ 31556 "\xe7\x94\xa4\0" /* offset 16866 */ 31557 "\xf0\xa4\xb0\xb6\0" /* offset 16870 */ 31558 "\xe7\x94\xbe\0" /* offset 16875 */ 31559 "\xf0\xa4\xb2\x92\0" /* offset 16879 */ 31560 "\xf0\xa2\x86\x9f\0" /* offset 16884 */ 31561 "\xe7\x98\x90\0" /* offset 16889 */ 31562 "\xf0\xa4\xbe\xa1\0" /* offset 16893 */ 31563 "\xf0\xa4\xbe\xb8\0" /* offset 16898 */ 31564 "\xf0\xa5\x81\x84\0" /* offset 16903 */ 31565 "\xe3\xbf\xbc\0" /* offset 16908 */ 31566 "\xe4\x80\x88\0" /* offset 16912 */ 31567 "\xf0\xa5\x83\xb3\0" /* offset 16916 */ 31568 "\xf0\xa5\x83\xb2\0" /* offset 16921 */ 31569 "\xf0\xa5\x84\x99\0" /* offset 16926 */ 31570 "\xf0\xa5\x84\xb3\0" /* offset 16931 */ 31571 "\xe7\x9c\x9e\0" /* offset 16936 */ 31572 "\xe7\x9c\x9f\0" /* offset 16940 */ 31573 "\xe7\x9e\x8b\0" /* offset 16944 */ 31574 "\xe4\x81\x86\0" /* offset 16948 */ 31575 "\xe4\x82\x96\0" /* offset 16952 */ 31576 "\xf0\xa5\x90\x9d\0" /* offset 16956 */ 31577 "\xe7\xa1\x8e\0" /* offset 16961 */ 31578 "\xe4\x83\xa3\0" /* offset 16965 */ 31579 "\xf0\xa5\x98\xa6\0" /* offset 16969 */ 31580 "\xf0\xa5\x9a\x9a\0" /* offset 16974 */ 31581 "\xf0\xa5\x9b\x85\0" /* offset 16979 */ 31582 "\xe7\xa7\xab\0" /* offset 16984 */ 31583 "\xe4\x84\xaf\0" /* offset 16988 */ 31584 "\xe7\xa9\x8a\0" /* offset 16992 */ 31585 "\xe7\xa9\x8f\0" /* offset 16996 */ 31586 "\xf0\xa5\xa5\xbc\0" /* offset 17000 */ 31587 "\xf0\xa5\xaa\xa7\0" /* offset 17005 */ 31588 "\xe7\xab\xae\0" /* offset 17010 */ 31589 "\xe4\x88\x82\0" /* offset 17014 */ 31590 "\xf0\xa5\xae\xab\0" /* offset 17018 */ 31591 "\xe7\xaf\x86\0" /* offset 17023 */ 31592 "\xe7\xaf\x89\0" /* offset 17027 */ 31593 "\xe4\x88\xa7\0" /* offset 17031 */ 31594 "\xf0\xa5\xb2\x80\0" /* offset 17035 */ 31595 "\xe7\xb3\x92\0" /* offset 17040 */ 31596 "\xe4\x8a\xa0\0" /* offset 17044 */ 31597 "\xe7\xb3\xa8\0" /* offset 17048 */ 31598 "\xe7\xb3\xa3\0" /* offset 17052 */ 31599 "\xe7\xb4\x80\0" /* offset 17056 */ 31600 "\xf0\xa5\xbe\x86\0" /* offset 17060 */ 31601 "\xe7\xb5\xa3\0" /* offset 17065 */ 31602 "\xe4\x8c\x81\0" /* offset 17069 */ 31603 "\xe7\xb7\x87\0" /* offset 17073 */ 31604 "\xe7\xb8\x82\0" /* offset 17077 */ 31605 "\xe7\xb9\x85\0" /* offset 17081 */ 31606 "\xe4\x8c\xb4\0" /* offset 17085 */ 31607 "\xf0\xa6\x88\xa8\0" /* offset 17089 */ 31608 "\xf0\xa6\x89\x87\0" /* offset 17094 */ 31609 "\xe4\x8d\x99\0" /* offset 17099 */ 31610 "\xf0\xa6\x8b\x99\0" /* offset 17103 */ 31611 "\xe7\xbd\xba\0" /* offset 17108 */ 31612 "\xf0\xa6\x8c\xbe\0" /* offset 17112 */ 31613 "\xe7\xbe\x95\0" /* offset 17117 */ 31614 "\xe7\xbf\xba\0" /* offset 17121 */ 31615 "\xf0\xa6\x93\x9a\0" /* offset 17125 */ 31616 "\xf0\xa6\x94\xa3\0" /* offset 17130 */ 31617 "\xe8\x81\xa0\0" /* offset 17135 */ 31618 "\xf0\xa6\x96\xa8\0" /* offset 17139 */ 31619 "\xe8\x81\xb0\0" /* offset 17144 */ 31620 "\xf0\xa3\x8d\x9f\0" /* offset 17148 */ 31621 "\xe4\x8f\x95\0" /* offset 17153 */ 31622 "\xe8\x82\xb2\0" /* offset 17157 */ 31623 "\xe8\x84\x83\0" /* offset 17161 */ 31624 "\xe4\x90\x8b\0" /* offset 17165 */ 31625 "\xe8\x84\xbe\0" /* offset 17169 */ 31626 "\xe5\xaa\xb5\0" /* offset 17173 */ 31627 "\xf0\xa6\x9e\xa7\0" /* offset 17177 */ 31628 "\xf0\xa6\x9e\xb5\0" /* offset 17182 */ 31629 "\xf0\xa3\x8e\x93\0" /* offset 17187 */ 31630 "\xf0\xa3\x8e\x9c\0" /* offset 17192 */ 31631 "\xe8\x88\x84\0" /* offset 17197 */ 31632 "\xe8\xbe\x9e\0" /* offset 17201 */ 31633 "\xe4\x91\xab\0" /* offset 17205 */ 31634 "\xe8\x8a\x91\0" /* offset 17209 */ 31635 "\xe8\x8a\x8b\0" /* offset 17213 */ 31636 "\xe8\x8a\x9d\0" /* offset 17217 */ 31637 "\xe5\x8a\xb3\0" /* offset 17221 */ 31638 "\xe8\x8a\xb1\0" /* offset 17225 */ 31639 "\xe8\x8a\xb3\0" /* offset 17229 */ 31640 "\xe8\x8a\xbd\0" /* offset 17233 */ 31641 "\xe8\x8b\xa6\0" /* offset 17237 */ 31642 "\xf0\xa6\xac\xbc\0" /* offset 17241 */ 31643 "\xe8\x8c\x9d\0" /* offset 17246 */ 31644 "\xe8\x8d\xa3\0" /* offset 17250 */ 31645 "\xe8\x8e\xad\0" /* offset 17254 */ 31646 "\xe8\x8c\xa3\0" /* offset 17258 */ 31647 "\xe8\x8e\xbd\0" /* offset 17262 */ 31648 "\xe8\x8f\xa7\0" /* offset 17266 */ 31649 "\xe8\x8d\x93\0" /* offset 17270 */ 31650 "\xe8\x8f\x8a\0" /* offset 17274 */ 31651 "\xe8\x8f\x8c\0" /* offset 17278 */ 31652 "\xe8\x8f\x9c\0" /* offset 17282 */ 31653 "\xf0\xa6\xb0\xb6\0" /* offset 17286 */ 31654 "\xf0\xa6\xb5\xab\0" /* offset 17291 */ 31655 "\xf0\xa6\xb3\x95\0" /* offset 17296 */ 31656 "\xe4\x94\xab\0" /* offset 17301 */ 31657 "\xe8\x93\xb1\0" /* offset 17305 */ 31658 "\xe8\x93\xb3\0" /* offset 17309 */ 31659 "\xe8\x94\x96\0" /* offset 17313 */ 31660 "\xf0\xa7\x8f\x8a\0" /* offset 17317 */ 31661 "\xe8\x95\xa4\0" /* offset 17322 */ 31662 "\xf0\xa6\xbc\xac\0" /* offset 17326 */ 31663 "\xe4\x95\x9d\0" /* offset 17331 */ 31664 "\xe4\x95\xa1\0" /* offset 17335 */ 31665 "\xf0\xa6\xbe\xb1\0" /* offset 17339 */ 31666 "\xf0\xa7\x83\x92\0" /* offset 17344 */ 31667 "\xe4\x95\xab\0" /* offset 17349 */ 31668 "\xe8\x99\x90\0" /* offset 17353 */ 31669 "\xe8\x99\xa7\0" /* offset 17357 */ 31670 "\xe8\x99\xa9\0" /* offset 17361 */ 31671 "\xe8\x9a\xa9\0" /* offset 17365 */ 31672 "\xe8\x9a\x88\0" /* offset 17369 */ 31673 "\xe8\x9c\x8e\0" /* offset 17373 */ 31674 "\xe8\x9b\xa2\0" /* offset 17377 */ 31675 "\xe8\x9c\xa8\0" /* offset 17381 */ 31676 "\xe8\x9d\xab\0" /* offset 17385 */ 31677 "\xe8\x9e\x86\0" /* offset 17389 */ 31678 "\xe4\x97\x97\0" /* offset 17393 */ 31679 "\xe8\x9f\xa1\0" /* offset 17397 */ 31680 "\xe8\xa0\x81\0" /* offset 17401 */ 31681 "\xe4\x97\xb9\0" /* offset 17405 */ 31682 "\xe8\xa1\xa0\0" /* offset 17409 */ 31683 "\xf0\xa7\x99\xa7\0" /* offset 17413 */ 31684 "\xe8\xa3\x97\0" /* offset 17418 */ 31685 "\xe8\xa3\x9e\0" /* offset 17422 */ 31686 "\xe4\x98\xb5\0" /* offset 17426 */ 31687 "\xe8\xa3\xba\0" /* offset 17430 */ 31688 "\xe3\x92\xbb\0" /* offset 17434 */ 31689 "\xf0\xa7\xa2\xae\0" /* offset 17438 */ 31690 "\xf0\xa7\xa5\xa6\0" /* offset 17443 */ 31691 "\xe4\x9a\xbe\0" /* offset 17448 */ 31692 "\xe4\x9b\x87\0" /* offset 17452 */ 31693 "\xe8\xaa\xa0\0" /* offset 17456 */ 31694 "\xf0\xa7\xb2\xa8\0" /* offset 17460 */ 31695 "\xe8\xb2\xab\0" /* offset 17465 */ 31696 "\xe8\xb3\x81\0" /* offset 17469 */ 31697 "\xe8\xb4\x9b\0" /* offset 17473 */ 31698 "\xe8\xb5\xb7\0" /* offset 17477 */ 31699 "\xf0\xa7\xbc\xaf\0" /* offset 17481 */ 31700 "\xf0\xa0\xa0\x84\0" /* offset 17486 */ 31701 "\xe8\xb7\x8b\0" /* offset 17491 */ 31702 "\xe8\xb6\xbc\0" /* offset 17495 */ 31703 "\xe8\xb7\xb0\0" /* offset 17499 */ 31704 "\xf0\xa0\xa3\x9e\0" /* offset 17503 */ 31705 "\xe8\xbb\x94\0" /* offset 17508 */ 31706 "\xf0\xa8\x97\x92\0" /* offset 17512 */ 31707 "\xf0\xa8\x97\xad\0" /* offset 17517 */ 31708 "\xe9\x82\x94\0" /* offset 17522 */ 31709 "\xe9\x83\xb1\0" /* offset 17526 */ 31710 "\xe9\x84\x91\0" /* offset 17530 */ 31711 "\xf0\xa8\x9c\xae\0" /* offset 17534 */ 31712 "\xe9\x84\x9b\0" /* offset 17539 */ 31713 "\xe9\x88\xb8\0" /* offset 17543 */ 31714 "\xe9\x8b\x97\0" /* offset 17547 */ 31715 "\xe9\x8b\x98\0" /* offset 17551 */ 31716 "\xe9\x89\xbc\0" /* offset 17555 */ 31717 "\xe9\x8f\xb9\0" /* offset 17559 */ 31718 "\xe9\x90\x95\0" /* offset 17563 */ 31719 "\xf0\xa8\xaf\xba\0" /* offset 17567 */ 31720 "\xe9\x96\x8b\0" /* offset 17572 */ 31721 "\xe4\xa6\x95\0" /* offset 17576 */ 31722 "\xe9\x96\xb7\0" /* offset 17580 */ 31723 "\xf0\xa8\xb5\xb7\0" /* offset 17584 */ 31724 "\xe4\xa7\xa6\0" /* offset 17589 */ 31725 "\xe9\x9b\x83\0" /* offset 17593 */ 31726 "\xe5\xb6\xb2\0" /* offset 17597 */ 31727 "\xe9\x9c\xa3\0" /* offset 17601 */ 31728 "\xf0\xa9\x85\x85\0" /* offset 17605 */ 31729 "\xf0\xa9\x88\x9a\0" /* offset 17610 */ 31730 "\xe4\xa9\xae\0" /* offset 17615 */ 31731 "\xe4\xa9\xb6\0" /* offset 17619 */ 31732 "\xe9\x9f\xa0\0" /* offset 17623 */ 31733 "\xf0\xa9\x90\x8a\0" /* offset 17627 */ 31734 "\xe4\xaa\xb2\0" /* offset 17632 */ 31735 "\xf0\xa9\x92\x96\0" /* offset 17636 */ 31736 "\xe9\xa0\xa9\0" /* offset 17641 */ 31737 "\xf0\xa9\x96\xb6\0" /* offset 17645 */ 31738 "\xe9\xa3\xa2\0" /* offset 17650 */ 31739 "\xe4\xac\xb3\0" /* offset 17654 */ 31740 "\xe9\xa4\xa9\0" /* offset 17658 */ 31741 "\xe9\xa6\xa7\0" /* offset 17662 */ 31742 "\xe9\xa7\x82\0" /* offset 17666 */ 31743 "\xe9\xa7\xbe\0" /* offset 17670 */ 31744 "\xe4\xaf\x8e\0" /* offset 17674 */ 31745 "\xf0\xa9\xac\xb0\0" /* offset 17678 */ 31746 "\xe9\xb1\x80\0" /* offset 17683 */ 31747 "\xe9\xb3\xbd\0" /* offset 17687 */ 31748 "\xe4\xb3\x8e\0" /* offset 17691 */ 31749 "\xe4\xb3\xad\0" /* offset 17695 */ 31750 "\xe9\xb5\xa7\0" /* offset 17699 */ 31751 "\xf0\xaa\x83\x8e\0" /* offset 17703 */ 31752 "\xe4\xb3\xb8\0" /* offset 17708 */ 31753 "\xf0\xaa\x84\x85\0" /* offset 17712 */ 31754 "\xf0\xaa\x88\x8e\0" /* offset 17717 */ 31755 "\xf0\xaa\x8a\x91\0" /* offset 17722 */ 31756 "\xe4\xb5\x96\0" /* offset 17727 */ 31757 "\xe9\xbb\xbe\0" /* offset 17731 */ 31758 "\xe9\xbc\x85\0" /* offset 17735 */ 31759 "\xe9\xbc\x8f\0" /* offset 17739 */ 31760 "\xe9\xbc\x96\0" /* offset 17743 */ 31761 "\xf0\xaa\x98\x80\0" /* offset 17747 */; 31762 31763 31764 const uint8_t codeSzUTF8[256] = { 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,6,6,1,1}; 31765 31766 static const char type_data[][256] = { 31767 { /* page 0, index 0 */ 31768 UNICODE_CONTROL, UNICODE_CONTROL, UNICODE_CONTROL, 31769 UNICODE_CONTROL, UNICODE_CONTROL, UNICODE_CONTROL, 31770 UNICODE_CONTROL, UNICODE_CONTROL, UNICODE_CONTROL, 31771 UNICODE_CONTROL, UNICODE_CONTROL, UNICODE_CONTROL, 31772 UNICODE_CONTROL, UNICODE_CONTROL, UNICODE_CONTROL, 31773 UNICODE_CONTROL, UNICODE_CONTROL, UNICODE_CONTROL, 31774 UNICODE_CONTROL, UNICODE_CONTROL, UNICODE_CONTROL, 31775 UNICODE_CONTROL, UNICODE_CONTROL, UNICODE_CONTROL, 31776 UNICODE_CONTROL, UNICODE_CONTROL, UNICODE_CONTROL, 31777 UNICODE_CONTROL, UNICODE_CONTROL, UNICODE_CONTROL, 31778 UNICODE_CONTROL, UNICODE_CONTROL, UNICODE_SPACE_SEPARATOR, 31779 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 31780 UNICODE_OTHER_PUNCTUATION, UNICODE_CURRENCY_SYMBOL, 31781 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 31782 UNICODE_OTHER_PUNCTUATION, UNICODE_OPEN_PUNCTUATION, 31783 UNICODE_CLOSE_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 31784 UNICODE_MATH_SYMBOL, UNICODE_OTHER_PUNCTUATION, 31785 UNICODE_DASH_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 31786 UNICODE_OTHER_PUNCTUATION, UNICODE_DECIMAL_NUMBER, 31787 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 31788 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 31789 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 31790 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 31791 UNICODE_DECIMAL_NUMBER, UNICODE_OTHER_PUNCTUATION, 31792 UNICODE_OTHER_PUNCTUATION, UNICODE_MATH_SYMBOL, 31793 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 31794 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 31795 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31796 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31797 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31798 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31799 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31800 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31801 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31802 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31803 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31804 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31805 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31806 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31807 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31808 UNICODE_OPEN_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 31809 UNICODE_CLOSE_PUNCTUATION, UNICODE_MODIFIER_SYMBOL, 31810 UNICODE_CONNECT_PUNCTUATION, UNICODE_MODIFIER_SYMBOL, 31811 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31812 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31813 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31814 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31815 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31816 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31817 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31818 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31819 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31820 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31821 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31822 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31823 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31824 UNICODE_OPEN_PUNCTUATION, UNICODE_MATH_SYMBOL, 31825 UNICODE_CLOSE_PUNCTUATION, UNICODE_MATH_SYMBOL, UNICODE_CONTROL, 31826 UNICODE_CONTROL, UNICODE_CONTROL, UNICODE_CONTROL, 31827 UNICODE_CONTROL, UNICODE_CONTROL, UNICODE_CONTROL, 31828 UNICODE_CONTROL, UNICODE_CONTROL, UNICODE_CONTROL, 31829 UNICODE_CONTROL, UNICODE_CONTROL, UNICODE_CONTROL, 31830 UNICODE_CONTROL, UNICODE_CONTROL, UNICODE_CONTROL, 31831 UNICODE_CONTROL, UNICODE_CONTROL, UNICODE_CONTROL, 31832 UNICODE_CONTROL, UNICODE_CONTROL, UNICODE_CONTROL, 31833 UNICODE_CONTROL, UNICODE_CONTROL, UNICODE_CONTROL, 31834 UNICODE_CONTROL, UNICODE_CONTROL, UNICODE_CONTROL, 31835 UNICODE_CONTROL, UNICODE_CONTROL, UNICODE_CONTROL, 31836 UNICODE_CONTROL, UNICODE_CONTROL, UNICODE_SPACE_SEPARATOR, 31837 UNICODE_OTHER_PUNCTUATION, UNICODE_CURRENCY_SYMBOL, 31838 UNICODE_CURRENCY_SYMBOL, UNICODE_CURRENCY_SYMBOL, 31839 UNICODE_CURRENCY_SYMBOL, UNICODE_OTHER_SYMBOL, 31840 UNICODE_OTHER_PUNCTUATION, UNICODE_MODIFIER_SYMBOL, 31841 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_LETTER, 31842 UNICODE_INITIAL_PUNCTUATION, UNICODE_MATH_SYMBOL, UNICODE_FORMAT, 31843 UNICODE_OTHER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 31844 UNICODE_OTHER_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_OTHER_NUMBER, 31845 UNICODE_OTHER_NUMBER, UNICODE_MODIFIER_SYMBOL, 31846 UNICODE_LOWERCASE_LETTER, UNICODE_OTHER_PUNCTUATION, 31847 UNICODE_OTHER_PUNCTUATION, UNICODE_MODIFIER_SYMBOL, 31848 UNICODE_OTHER_NUMBER, UNICODE_OTHER_LETTER, 31849 UNICODE_FINAL_PUNCTUATION, UNICODE_OTHER_NUMBER, 31850 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 31851 UNICODE_OTHER_PUNCTUATION, UNICODE_UPPERCASE_LETTER, 31852 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31853 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31854 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31855 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31856 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31857 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31858 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31859 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31860 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31861 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31862 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31863 UNICODE_MATH_SYMBOL, UNICODE_UPPERCASE_LETTER, 31864 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31865 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31866 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31867 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31868 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31869 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31870 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31871 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31872 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31873 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31874 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31875 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31876 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31877 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31878 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31879 UNICODE_MATH_SYMBOL, UNICODE_LOWERCASE_LETTER, 31880 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31881 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31882 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31883 UNICODE_LOWERCASE_LETTER 31884 }, 31885 { /* page 1, index 1 */ 31886 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31887 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31888 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31889 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31890 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31891 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31892 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31893 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31894 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31895 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31896 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31897 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31898 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31899 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31900 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31901 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31902 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31903 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31904 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31905 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31906 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31907 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31908 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31909 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31910 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31911 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31912 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31913 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31914 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31915 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31916 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31917 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31918 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31919 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31920 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31921 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31922 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31923 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31924 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31925 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31926 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31927 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31928 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31929 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31930 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31931 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31932 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31933 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31934 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31935 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31936 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31937 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31938 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31939 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31940 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31941 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31942 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31943 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31944 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31945 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31946 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31947 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31948 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31949 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31950 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31951 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31952 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31953 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31954 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31955 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31956 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31957 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31958 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31959 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31960 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31961 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31962 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31963 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31964 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31965 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31966 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31967 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31968 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31969 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31970 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31971 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31972 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31973 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31974 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31975 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31976 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31977 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31978 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31979 UNICODE_LOWERCASE_LETTER, UNICODE_OTHER_LETTER, 31980 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31981 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31982 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 31983 UNICODE_OTHER_LETTER, UNICODE_UPPERCASE_LETTER, 31984 UNICODE_TITLECASE_LETTER, UNICODE_LOWERCASE_LETTER, 31985 UNICODE_UPPERCASE_LETTER, UNICODE_TITLECASE_LETTER, 31986 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31987 UNICODE_TITLECASE_LETTER, UNICODE_LOWERCASE_LETTER, 31988 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31989 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31990 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31991 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31992 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31993 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31994 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31995 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 31996 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31997 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31998 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 31999 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32000 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32001 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32002 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32003 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32004 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32005 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32006 UNICODE_UPPERCASE_LETTER, UNICODE_TITLECASE_LETTER, 32007 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32008 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32009 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32010 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32011 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32012 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32013 UNICODE_LOWERCASE_LETTER 32014 }, 32015 { /* page 2, index 2 */ 32016 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32017 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32018 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32019 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32020 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32021 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32022 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32023 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32024 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32025 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32026 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32027 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32028 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32029 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32030 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32031 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32032 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32033 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32034 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32035 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32036 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32037 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32038 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32039 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32040 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32041 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32042 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32043 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32044 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32045 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32046 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32047 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32048 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32049 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32050 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32051 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32052 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32053 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32054 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32055 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32056 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32057 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32058 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32059 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32060 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32061 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32062 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32063 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32064 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32065 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32066 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32067 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32068 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32069 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32070 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32071 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32072 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32073 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32074 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32075 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32076 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32077 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32078 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32079 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32080 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32081 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32082 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32083 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32084 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32085 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32086 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32087 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32088 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32089 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32090 UNICODE_OTHER_LETTER, UNICODE_LOWERCASE_LETTER, 32091 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32092 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32093 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32094 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32095 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32096 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32097 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32098 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32099 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32100 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32101 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32102 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32103 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32104 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 32105 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 32106 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 32107 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 32108 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 32109 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 32110 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 32111 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 32112 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 32113 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 32114 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 32115 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 32116 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 32117 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 32118 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 32119 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 32120 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 32121 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 32122 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 32123 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 32124 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 32125 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 32126 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 32127 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 32128 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 32129 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 32130 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_SYMBOL, 32131 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 32132 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 32133 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 32134 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_SYMBOL, 32135 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_SYMBOL, 32136 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 32137 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 32138 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 32139 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 32140 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 32141 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 32142 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 32143 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL 32144 }, 32145 { /* page 3, index 3 */ 32146 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32147 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32148 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32149 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32150 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32151 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32152 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32153 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32154 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32155 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32156 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32157 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32158 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32159 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32160 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32161 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32162 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32163 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32164 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32165 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32166 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32167 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32168 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32169 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32170 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32171 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32172 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32173 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32174 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32175 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32176 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32177 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32178 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32179 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32180 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32181 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32182 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32183 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32184 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32185 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32186 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32187 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32188 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32189 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32190 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32191 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32192 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32193 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32194 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32195 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32196 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32197 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32198 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32199 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32200 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32201 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32202 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32203 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32204 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_SYMBOL, 32205 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32206 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_MODIFIER_LETTER, 32207 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32208 UNICODE_LOWERCASE_LETTER, UNICODE_OTHER_PUNCTUATION, 32209 UNICODE_UPPERCASE_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32210 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_MODIFIER_SYMBOL, 32211 UNICODE_MODIFIER_SYMBOL, UNICODE_UPPERCASE_LETTER, 32212 UNICODE_OTHER_PUNCTUATION, UNICODE_UPPERCASE_LETTER, 32213 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32214 UNICODE_UNASSIGNED, UNICODE_UPPERCASE_LETTER, UNICODE_UNASSIGNED, 32215 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32216 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32217 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32218 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32219 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32220 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32221 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32222 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32223 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32224 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32225 UNICODE_UNASSIGNED, UNICODE_UPPERCASE_LETTER, 32226 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32227 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32228 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32229 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32230 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32231 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32232 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32233 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32234 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32235 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32236 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32237 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32238 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32239 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32240 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32241 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32242 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32243 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32244 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32245 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32246 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32247 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32248 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32249 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32250 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32251 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32252 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32253 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32254 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32255 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32256 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32257 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32258 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32259 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32260 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32261 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32262 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32263 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32264 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32265 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32266 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32267 UNICODE_MATH_SYMBOL, UNICODE_UPPERCASE_LETTER, 32268 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32269 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32270 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32271 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER 32272 }, 32273 { /* page 4, index 4 */ 32274 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32275 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32276 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32277 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32278 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32279 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32280 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32281 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32282 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32283 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32284 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32285 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32286 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32287 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32288 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32289 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32290 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32291 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32292 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32293 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32294 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32295 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32296 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32297 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32298 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32299 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32300 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32301 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32302 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32303 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32304 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32305 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32306 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32307 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32308 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32309 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32310 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32311 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32312 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32313 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32314 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32315 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32316 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32317 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32318 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32319 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32320 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32321 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32322 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32323 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32324 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32325 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32326 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32327 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32328 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32329 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32330 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32331 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32332 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32333 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32334 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32335 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32336 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32337 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32338 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32339 UNICODE_OTHER_SYMBOL, UNICODE_NON_SPACING_MARK, 32340 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32341 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32342 UNICODE_ENCLOSING_MARK, UNICODE_ENCLOSING_MARK, 32343 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32344 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32345 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32346 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32347 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32348 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32349 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32350 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32351 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32352 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32353 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32354 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32355 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32356 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32357 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32358 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32359 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32360 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32361 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32362 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32363 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32364 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32365 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32366 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32367 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32368 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32369 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32370 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32371 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32372 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32373 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32374 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32375 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32376 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32377 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32378 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32379 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32380 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32381 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32382 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32383 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32384 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32385 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32386 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32387 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32388 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32389 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32390 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32391 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32392 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32393 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32394 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32395 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32396 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32397 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32398 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32399 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32400 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32401 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER 32402 }, 32403 { /* page 5, index 5 */ 32404 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32405 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32406 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32407 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32408 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32409 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32410 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32411 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32412 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32413 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32414 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32415 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32416 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32417 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32418 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32419 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32420 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32421 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32422 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32423 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32424 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32425 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32426 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32427 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32428 UNICODE_UNASSIGNED, UNICODE_UPPERCASE_LETTER, 32429 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32430 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32431 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32432 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32433 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32434 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32435 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32436 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32437 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32438 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32439 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32440 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32441 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32442 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32443 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32444 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32445 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32446 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 32447 UNICODE_UPPERCASE_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32448 UNICODE_MODIFIER_LETTER, UNICODE_OTHER_PUNCTUATION, 32449 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 32450 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 32451 UNICODE_OTHER_PUNCTUATION, UNICODE_UNASSIGNED, 32452 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32453 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32454 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32455 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32456 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32457 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32458 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32459 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32460 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32461 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32462 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32463 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32464 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32465 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32466 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32467 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32468 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32469 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32470 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 32471 UNICODE_LOWERCASE_LETTER, UNICODE_UNASSIGNED, 32472 UNICODE_OTHER_PUNCTUATION, UNICODE_DASH_PUNCTUATION, 32473 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_SYMBOL, 32474 UNICODE_OTHER_SYMBOL, UNICODE_CURRENCY_SYMBOL, UNICODE_UNASSIGNED, 32475 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32476 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32477 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32478 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32479 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32480 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32481 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32482 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32483 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32484 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32485 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32486 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32487 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32488 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32489 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32490 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32491 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32492 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32493 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32494 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32495 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32496 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32497 UNICODE_NON_SPACING_MARK, UNICODE_DASH_PUNCTUATION, 32498 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_PUNCTUATION, 32499 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32500 UNICODE_OTHER_PUNCTUATION, UNICODE_NON_SPACING_MARK, 32501 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_PUNCTUATION, 32502 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32503 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32504 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32505 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32506 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32507 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32508 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32509 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32510 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32511 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32512 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32513 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32514 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32515 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 32516 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32517 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 32518 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32519 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32520 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32521 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED 32522 }, 32523 { /* page 6, index 6 */ 32524 UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, 32525 UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_MATH_SYMBOL, 32526 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 32527 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 32528 UNICODE_CURRENCY_SYMBOL, UNICODE_OTHER_PUNCTUATION, 32529 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_SYMBOL, 32530 UNICODE_OTHER_SYMBOL, UNICODE_NON_SPACING_MARK, 32531 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32532 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32533 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32534 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32535 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32536 UNICODE_OTHER_PUNCTUATION, UNICODE_FORMAT, UNICODE_UNASSIGNED, 32537 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 32538 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32539 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32540 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32541 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32542 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32543 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32544 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32545 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32546 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32547 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32548 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32549 UNICODE_MODIFIER_LETTER, UNICODE_OTHER_LETTER, 32550 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32551 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32552 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32553 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32554 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32555 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32556 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32557 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32558 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32559 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32560 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32561 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32562 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32563 UNICODE_NON_SPACING_MARK, UNICODE_DECIMAL_NUMBER, 32564 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 32565 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 32566 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 32567 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 32568 UNICODE_DECIMAL_NUMBER, UNICODE_OTHER_PUNCTUATION, 32569 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 32570 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_LETTER, 32571 UNICODE_OTHER_LETTER, UNICODE_NON_SPACING_MARK, 32572 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32573 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32574 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32575 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32576 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32577 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32578 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32579 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32580 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32581 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32582 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32583 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32584 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32585 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32586 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32587 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32588 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32589 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32590 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32591 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32592 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32593 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32594 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32595 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32596 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32597 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32598 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32599 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32600 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32601 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32602 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32603 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32604 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32605 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_LETTER, 32606 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32607 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32608 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32609 UNICODE_NON_SPACING_MARK, UNICODE_FORMAT, UNICODE_OTHER_SYMBOL, 32610 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32611 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32612 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32613 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 32614 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32615 UNICODE_OTHER_SYMBOL, UNICODE_NON_SPACING_MARK, 32616 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32617 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_LETTER, 32618 UNICODE_OTHER_LETTER, UNICODE_DECIMAL_NUMBER, 32619 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 32620 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 32621 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 32622 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 32623 UNICODE_DECIMAL_NUMBER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32624 UNICODE_OTHER_LETTER, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 32625 UNICODE_OTHER_LETTER 32626 }, 32627 { /* page 7, index 7 */ 32628 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 32629 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 32630 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 32631 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 32632 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 32633 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 32634 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 32635 UNICODE_UNASSIGNED, UNICODE_FORMAT, UNICODE_OTHER_LETTER, 32636 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_LETTER, 32637 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32638 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32639 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32640 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32641 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32642 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32643 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32644 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32645 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32646 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32647 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32648 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32649 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32650 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32651 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32652 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32653 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32654 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32655 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32656 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32657 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32658 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32659 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32660 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32661 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32662 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32663 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32664 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32665 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32666 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32667 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32668 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32669 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32670 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32671 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32672 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32673 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32674 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32675 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32676 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32677 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32678 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32679 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32680 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32681 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32682 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32683 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32684 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32685 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32686 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32687 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32688 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32689 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32690 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32691 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32692 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32693 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32694 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32695 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32696 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 32697 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32698 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32699 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32700 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32701 UNICODE_UNASSIGNED, UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 32702 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 32703 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 32704 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 32705 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 32706 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32707 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32708 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32709 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32710 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32711 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32712 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32713 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32714 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32715 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32716 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32717 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32718 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32719 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32720 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32721 UNICODE_NON_SPACING_MARK, UNICODE_MODIFIER_LETTER, 32722 UNICODE_MODIFIER_LETTER, UNICODE_OTHER_SYMBOL, 32723 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 32724 UNICODE_OTHER_PUNCTUATION, UNICODE_MODIFIER_LETTER, 32725 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32726 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED 32727 }, 32728 { /* page 8, index 8 */ 32729 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32730 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32731 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32732 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32733 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32734 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32735 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32736 UNICODE_OTHER_LETTER, UNICODE_NON_SPACING_MARK, 32737 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32738 UNICODE_NON_SPACING_MARK, UNICODE_MODIFIER_LETTER, 32739 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32740 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32741 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32742 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32743 UNICODE_NON_SPACING_MARK, UNICODE_MODIFIER_LETTER, 32744 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32745 UNICODE_NON_SPACING_MARK, UNICODE_MODIFIER_LETTER, 32746 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32747 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32748 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32749 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 32750 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 32751 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 32752 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 32753 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 32754 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 32755 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 32756 UNICODE_OTHER_PUNCTUATION, UNICODE_UNASSIGNED, 32757 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32758 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32759 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32760 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32761 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32762 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32763 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32764 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32765 UNICODE_OTHER_LETTER, UNICODE_NON_SPACING_MARK, 32766 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32767 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_PUNCTUATION, 32768 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32769 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32770 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32771 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32772 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32773 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32774 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32775 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32776 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32777 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32778 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32779 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32780 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32781 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32782 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32783 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32784 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32785 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32786 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32787 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32788 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32789 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 32790 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32791 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32792 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32793 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32794 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32795 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32796 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 32797 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32798 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32799 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 32800 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32801 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32802 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32803 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32804 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32805 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32806 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32807 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32808 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32809 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32810 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32811 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32812 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32813 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, UNICODE_FORMAT, 32814 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32815 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32816 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32817 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32818 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32819 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32820 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32821 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32822 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32823 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32824 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32825 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32826 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32827 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32828 UNICODE_NON_SPACING_MARK 32829 }, 32830 { /* page 9, index 9 */ 32831 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32832 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 32833 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32834 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32835 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32836 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32837 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32838 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32839 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32840 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32841 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32842 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32843 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32844 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32845 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32846 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32847 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32848 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32849 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32850 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32851 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 32852 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_LETTER, 32853 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 32854 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32855 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32856 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32857 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32858 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 32859 UNICODE_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32860 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_OTHER_LETTER, 32861 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32862 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32863 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32864 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_LETTER, 32865 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32866 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32867 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32868 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32869 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 32870 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 32871 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 32872 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 32873 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 32874 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 32875 UNICODE_OTHER_PUNCTUATION, UNICODE_MODIFIER_LETTER, 32876 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32877 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32878 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32879 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32880 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32881 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 32882 UNICODE_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 32883 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32884 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32885 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32886 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 32887 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32888 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32889 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32890 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32891 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32892 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32893 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32894 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 32895 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32896 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32897 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 32898 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32899 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32900 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32901 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_LETTER, 32902 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 32903 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32904 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32905 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_SPACING_MARK, 32906 UNICODE_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32907 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 32908 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 32909 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32910 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32911 UNICODE_UNASSIGNED, UNICODE_SPACING_MARK, UNICODE_UNASSIGNED, 32912 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32913 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 32914 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32915 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32916 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_DECIMAL_NUMBER, 32917 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 32918 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 32919 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 32920 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 32921 UNICODE_DECIMAL_NUMBER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32922 UNICODE_CURRENCY_SYMBOL, UNICODE_CURRENCY_SYMBOL, 32923 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 32924 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 32925 UNICODE_OTHER_SYMBOL, UNICODE_CURRENCY_SYMBOL, 32926 UNICODE_OTHER_LETTER, UNICODE_OTHER_PUNCTUATION, 32927 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED 32928 }, 32929 { /* page 10, index 10 */ 32930 UNICODE_UNASSIGNED, UNICODE_NON_SPACING_MARK, 32931 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_UNASSIGNED, 32932 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32933 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32934 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32935 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32936 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 32937 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32938 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32939 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32940 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32941 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32942 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32943 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32944 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32945 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32946 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 32947 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 32948 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 32949 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 32950 UNICODE_UNASSIGNED, UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, 32951 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 32952 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32953 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32954 UNICODE_UNASSIGNED, UNICODE_NON_SPACING_MARK, 32955 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32956 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32957 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32958 UNICODE_UNASSIGNED, UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, 32959 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32960 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32961 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32962 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 32963 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32964 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32965 UNICODE_UNASSIGNED, UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 32966 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 32967 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 32968 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 32969 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 32970 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32971 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32972 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32973 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32974 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32975 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32976 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32977 UNICODE_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 32978 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32979 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32980 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 32981 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32982 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32983 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32984 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32985 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32986 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32987 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32988 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32989 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 32990 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32991 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32992 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 32993 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 32994 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 32995 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 32996 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_LETTER, 32997 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 32998 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 32999 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33000 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, 33001 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33002 UNICODE_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_SPACING_MARK, 33003 UNICODE_SPACING_MARK, UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, 33004 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 33005 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33006 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33007 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33008 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33009 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 33010 UNICODE_OTHER_LETTER, UNICODE_NON_SPACING_MARK, 33011 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33012 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33013 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33014 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33015 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33016 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33017 UNICODE_OTHER_PUNCTUATION, UNICODE_CURRENCY_SYMBOL, 33018 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33019 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33020 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_NON_SPACING_MARK, 33021 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33022 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33023 UNICODE_NON_SPACING_MARK 33024 }, 33025 { /* page 11, index 11 */ 33026 UNICODE_UNASSIGNED, UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 33027 UNICODE_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 33028 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33029 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33030 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33031 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 33032 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33033 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33034 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33035 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33036 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33037 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33038 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33039 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 33040 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33041 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33042 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 33043 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 33044 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33045 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33046 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_LETTER, 33047 UNICODE_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33048 UNICODE_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33049 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33050 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33051 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_UNASSIGNED, 33052 UNICODE_UNASSIGNED, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 33053 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33054 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33055 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33056 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_UNASSIGNED, 33057 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33058 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 33059 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33060 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33061 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_DECIMAL_NUMBER, 33062 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33063 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33064 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33065 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33066 UNICODE_DECIMAL_NUMBER, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_LETTER, 33067 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 33068 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 33069 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33070 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33071 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33072 UNICODE_UNASSIGNED, UNICODE_NON_SPACING_MARK, UNICODE_OTHER_LETTER, 33073 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33074 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33075 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33076 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33077 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 33078 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33079 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33080 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 33081 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 33082 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33083 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33084 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33085 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33086 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33087 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33088 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33089 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33090 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33091 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33092 UNICODE_UNASSIGNED, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 33093 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 33094 UNICODE_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33095 UNICODE_UNASSIGNED, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 33096 UNICODE_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_SPACING_MARK, 33097 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 33098 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33099 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33100 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33101 UNICODE_UNASSIGNED, UNICODE_SPACING_MARK, UNICODE_UNASSIGNED, 33102 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33103 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33104 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33105 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33106 UNICODE_UNASSIGNED, UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33107 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33108 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33109 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33110 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33111 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 33112 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 33113 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 33114 UNICODE_CURRENCY_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_UNASSIGNED, 33115 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33116 UNICODE_UNASSIGNED 33117 }, 33118 { /* page 12, index 12 */ 33119 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 33120 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_UNASSIGNED, 33121 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33122 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33123 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 33124 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33125 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33126 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33127 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33128 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33129 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33130 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33131 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33132 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33133 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33134 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33135 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33136 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33137 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33138 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 33139 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 33140 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33141 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 33142 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 33143 UNICODE_UNASSIGNED, UNICODE_NON_SPACING_MARK, 33144 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33145 UNICODE_UNASSIGNED, UNICODE_NON_SPACING_MARK, 33146 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33147 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33148 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33149 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_NON_SPACING_MARK, 33150 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 33151 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 33152 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33153 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33154 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33155 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_DECIMAL_NUMBER, 33156 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33157 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33158 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33159 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33160 UNICODE_DECIMAL_NUMBER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33161 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33162 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33163 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 33164 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 33165 UNICODE_OTHER_NUMBER, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_LETTER, 33166 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 33167 UNICODE_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 33168 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33169 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33170 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 33171 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 33172 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33173 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33174 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33175 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33176 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33177 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33178 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33179 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 33180 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33181 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33182 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33183 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 33184 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33185 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33186 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_LETTER, 33187 UNICODE_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33188 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 33189 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_UNASSIGNED, 33190 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 33191 UNICODE_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_SPACING_MARK, 33192 UNICODE_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33193 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33194 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33195 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_SPACING_MARK, 33196 UNICODE_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33197 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33198 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 33199 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33200 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33201 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_DECIMAL_NUMBER, 33202 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33203 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33204 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33205 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33206 UNICODE_DECIMAL_NUMBER, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 33207 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33208 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33209 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33210 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33211 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED 33212 }, 33213 { /* page 13, index 13 */ 33214 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33215 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_UNASSIGNED, 33216 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33217 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33218 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 33219 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33220 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33221 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33222 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33223 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33224 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33225 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33226 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33227 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33228 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33229 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33230 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33231 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33232 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33233 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33234 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33235 UNICODE_OTHER_LETTER, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 33236 UNICODE_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33237 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33238 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_SPACING_MARK, 33239 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_UNASSIGNED, 33240 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 33241 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_LETTER, 33242 UNICODE_OTHER_SYMBOL, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33243 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 33244 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_SPACING_MARK, 33245 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 33246 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 33247 UNICODE_OTHER_NUMBER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33248 UNICODE_OTHER_LETTER, UNICODE_NON_SPACING_MARK, 33249 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33250 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33251 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33252 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33253 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33254 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33255 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 33256 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 33257 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 33258 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33259 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33260 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33261 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_UNASSIGNED, 33262 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33263 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33264 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33265 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33266 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33267 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33268 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33269 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33270 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33271 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33272 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33273 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33274 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33275 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33276 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33277 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33278 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33279 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33280 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 33281 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 33282 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33283 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33284 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33285 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33286 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_SPACING_MARK, 33287 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 33288 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33289 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, 33290 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_SPACING_MARK, 33291 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 33292 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 33293 UNICODE_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33294 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33295 UNICODE_UNASSIGNED, UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33296 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33297 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33298 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33299 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, UNICODE_UNASSIGNED, 33300 UNICODE_UNASSIGNED, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 33301 UNICODE_OTHER_PUNCTUATION, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33302 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33303 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33304 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED 33305 }, 33306 { /* page 14, index 14 */ 33307 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33308 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33309 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33310 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33311 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33312 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33313 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33314 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33315 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33316 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33317 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33318 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33319 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33320 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33321 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33322 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33323 UNICODE_OTHER_LETTER, UNICODE_NON_SPACING_MARK, 33324 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33325 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33326 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33327 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33328 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33329 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_CURRENCY_SYMBOL, 33330 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33331 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33332 UNICODE_MODIFIER_LETTER, UNICODE_NON_SPACING_MARK, 33333 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33334 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33335 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33336 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_PUNCTUATION, 33337 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33338 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33339 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33340 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33341 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33342 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 33343 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33344 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33345 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33346 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33347 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33348 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33349 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33350 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33351 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33352 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33353 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33354 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33355 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33356 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 33357 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33358 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 33359 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 33360 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33361 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 33362 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33363 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33364 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33365 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 33366 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33367 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 33368 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33369 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 33370 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33371 UNICODE_OTHER_LETTER, UNICODE_NON_SPACING_MARK, 33372 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33373 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33374 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33375 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33376 UNICODE_UNASSIGNED, UNICODE_NON_SPACING_MARK, 33377 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 33378 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33379 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33380 UNICODE_UNASSIGNED, UNICODE_MODIFIER_LETTER, UNICODE_UNASSIGNED, 33381 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33382 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33383 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33384 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_DECIMAL_NUMBER, 33385 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33386 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33387 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33388 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33389 UNICODE_DECIMAL_NUMBER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33390 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33391 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33392 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33393 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33394 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33395 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33396 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33397 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33398 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33399 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33400 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33401 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED 33402 }, 33403 { /* page 15, index 15 */ 33404 UNICODE_OTHER_LETTER, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 33405 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_PUNCTUATION, 33406 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 33407 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 33408 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 33409 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 33410 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 33411 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 33412 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 33413 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_PUNCTUATION, 33414 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 33415 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33416 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 33417 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 33418 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33419 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33420 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33421 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33422 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33423 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 33424 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 33425 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 33426 UNICODE_OTHER_NUMBER, UNICODE_OTHER_SYMBOL, 33427 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_SYMBOL, 33428 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_SYMBOL, 33429 UNICODE_NON_SPACING_MARK, UNICODE_OPEN_PUNCTUATION, 33430 UNICODE_CLOSE_PUNCTUATION, UNICODE_OPEN_PUNCTUATION, 33431 UNICODE_CLOSE_PUNCTUATION, UNICODE_SPACING_MARK, 33432 UNICODE_SPACING_MARK, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33433 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33434 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33435 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33436 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33437 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33438 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33439 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33440 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33441 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33442 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33443 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33444 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33445 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33446 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33447 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33448 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_NON_SPACING_MARK, 33449 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33450 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33451 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33452 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33453 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33454 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33455 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 33456 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33457 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33458 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_PUNCTUATION, 33459 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33460 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33461 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33462 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33463 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33464 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33465 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33466 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33467 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, 33468 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33469 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33470 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33471 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33472 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33473 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33474 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33475 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33476 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33477 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33478 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33479 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33480 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33481 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33482 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33483 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33484 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33485 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33486 UNICODE_UNASSIGNED, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 33487 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 33488 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 33489 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_SYMBOL, 33490 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 33491 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_UNASSIGNED, 33492 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 33493 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 33494 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 33495 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_SYMBOL, 33496 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 33497 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 33498 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33499 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33500 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33501 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33502 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33503 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33504 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33505 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33506 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33507 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33508 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33509 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33510 UNICODE_UNASSIGNED 33511 }, 33512 { /* page 16, index 16 */ 33513 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33514 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33515 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33516 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33517 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33518 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33519 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33520 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33521 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33522 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33523 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33524 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33525 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33526 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33527 UNICODE_OTHER_LETTER, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 33528 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33529 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33530 UNICODE_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33531 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33532 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33533 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 33534 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33535 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 33536 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33537 UNICODE_OTHER_LETTER, UNICODE_DECIMAL_NUMBER, 33538 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33539 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33540 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33541 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33542 UNICODE_DECIMAL_NUMBER, UNICODE_OTHER_PUNCTUATION, 33543 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 33544 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 33545 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_LETTER, 33546 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33547 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_SPACING_MARK, 33548 UNICODE_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33549 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_LETTER, 33550 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33551 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33552 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_LETTER, 33553 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 33554 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_SPACING_MARK, 33555 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 33556 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 33557 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33558 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33559 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33560 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33561 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33562 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33563 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33564 UNICODE_OTHER_LETTER, UNICODE_NON_SPACING_MARK, 33565 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 33566 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33567 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 33568 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 33569 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_LETTER, 33570 UNICODE_SPACING_MARK, UNICODE_DECIMAL_NUMBER, 33571 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33572 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33573 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33574 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 33575 UNICODE_DECIMAL_NUMBER, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 33576 UNICODE_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33577 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 33578 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33579 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33580 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33581 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33582 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33583 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33584 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33585 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33586 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33587 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33588 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33589 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33590 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33591 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33592 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33593 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33594 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33595 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33596 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33597 UNICODE_UNASSIGNED, UNICODE_UPPERCASE_LETTER, UNICODE_UNASSIGNED, 33598 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33599 UNICODE_UNASSIGNED, UNICODE_UPPERCASE_LETTER, UNICODE_UNASSIGNED, 33600 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33601 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33602 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33603 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33604 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33605 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33606 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33607 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33608 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33609 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33610 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33611 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33612 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33613 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33614 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33615 UNICODE_OTHER_PUNCTUATION, UNICODE_MODIFIER_LETTER, 33616 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER 33617 }, 33618 { /* page 18, index 17 */ 33619 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33620 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33621 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33622 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33623 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33624 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33625 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33626 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33627 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33628 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33629 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33630 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33631 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33632 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33633 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33634 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33635 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33636 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33637 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33638 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33639 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33640 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33641 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33642 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33643 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 33644 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33645 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 33646 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33647 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33648 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 33649 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33650 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33651 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33652 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33653 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33654 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33655 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33656 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33657 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33658 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33659 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33660 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33661 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33662 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33663 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33664 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 33665 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33666 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33667 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33668 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33669 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33670 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33671 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33672 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33673 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33674 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33675 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33676 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33677 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33678 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33679 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 33680 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33681 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33682 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 33683 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 33684 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33685 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 33686 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33687 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33688 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33689 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33690 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 33691 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33692 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33693 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33694 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33695 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33696 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33697 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33698 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33699 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33700 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33701 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33702 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33703 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33704 UNICODE_OTHER_LETTER 33705 }, 33706 { /* page 19, index 18 */ 33707 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33708 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33709 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33710 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33711 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33712 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 33713 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33714 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33715 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33716 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33717 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33718 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33719 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33720 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33721 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33722 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33723 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33724 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33725 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33726 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33727 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33728 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33729 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33730 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33731 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33732 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33733 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33734 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33735 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33736 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33737 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33738 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33739 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_PUNCTUATION, 33740 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 33741 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 33742 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 33743 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 33744 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 33745 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 33746 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 33747 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 33748 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 33749 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 33750 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_UNASSIGNED, 33751 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 33752 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33753 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33754 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33755 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33756 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33757 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 33758 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 33759 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 33760 UNICODE_OTHER_SYMBOL, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33761 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33762 UNICODE_UNASSIGNED, UNICODE_UPPERCASE_LETTER, 33763 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33764 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33765 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33766 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33767 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33768 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33769 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33770 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33771 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33772 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33773 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33774 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33775 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33776 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33777 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33778 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33779 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33780 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33781 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33782 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33783 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33784 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33785 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33786 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33787 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33788 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33789 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33790 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33791 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33792 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33793 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33794 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33795 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33796 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33797 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33798 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33799 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33800 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33801 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33802 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33803 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33804 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 33805 UNICODE_UPPERCASE_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33806 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 33807 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 33808 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 33809 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED 33810 }, 33811 { /* page 20, index 19 */ 33812 UNICODE_DASH_PUNCTUATION, UNICODE_OTHER_LETTER, 33813 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33814 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33815 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33816 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33817 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33818 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33819 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33820 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33821 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33822 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33823 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33824 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33825 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33826 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33827 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33828 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33829 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33830 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33831 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33832 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33833 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33834 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33835 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33836 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33837 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33838 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33839 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33840 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33841 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33842 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33843 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33844 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33845 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33846 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33847 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33848 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33849 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33850 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33851 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33852 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33853 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33854 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33855 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33856 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33857 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33858 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33859 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33860 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33861 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33862 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33863 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33864 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33865 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33866 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33867 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33868 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33869 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33870 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33871 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33872 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33873 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33874 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33875 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33876 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33877 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33878 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33879 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33880 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33881 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33882 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33883 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33884 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33885 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33886 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33887 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33888 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33889 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33890 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33891 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33892 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33893 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33894 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33895 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33896 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33897 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER 33898 }, 33899 { /* page 22, index 20 */ 33900 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33901 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33902 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33903 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33904 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33905 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33906 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33907 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33908 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33909 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33910 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33911 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33912 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33913 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33914 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33915 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33916 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33917 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33918 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33919 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33920 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33921 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33922 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33923 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33924 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33925 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33926 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33927 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33928 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33929 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33930 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33931 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33932 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33933 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33934 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33935 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33936 UNICODE_OTHER_LETTER, UNICODE_OTHER_PUNCTUATION, 33937 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_LETTER, 33938 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33939 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33940 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33941 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33942 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33943 UNICODE_OTHER_LETTER, UNICODE_SPACE_SEPARATOR, 33944 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33945 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33946 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33947 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33948 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33949 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33950 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33951 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33952 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33953 UNICODE_OPEN_PUNCTUATION, UNICODE_CLOSE_PUNCTUATION, 33954 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33955 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33956 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33957 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33958 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33959 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33960 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33961 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33962 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33963 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33964 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33965 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33966 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33967 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33968 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33969 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33970 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33971 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33972 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33973 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33974 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33975 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33976 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33977 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33978 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33979 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33980 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 33981 UNICODE_OTHER_PUNCTUATION, UNICODE_LETTER_NUMBER, 33982 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, UNICODE_OTHER_LETTER, 33983 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33984 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33985 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33986 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33987 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED 33988 }, 33989 { /* page 23, index 21 */ 33990 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33991 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33992 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33993 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33994 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 33995 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 33996 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 33997 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33998 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 33999 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34000 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34001 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34002 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34003 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34004 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34005 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34006 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34007 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34008 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_PUNCTUATION, 34009 UNICODE_OTHER_PUNCTUATION, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34010 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34011 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34012 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34013 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34014 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34015 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34016 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34017 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34018 UNICODE_OTHER_LETTER, UNICODE_NON_SPACING_MARK, 34019 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34020 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34021 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34022 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34023 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34024 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34025 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34026 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34027 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 34028 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34029 UNICODE_UNASSIGNED, UNICODE_NON_SPACING_MARK, 34030 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34031 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34032 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34033 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34034 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34035 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34036 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34037 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34038 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34039 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34040 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34041 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34042 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34043 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34044 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34045 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34046 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34047 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34048 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34049 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34050 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34051 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34052 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34053 UNICODE_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34054 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34055 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34056 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34057 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 34058 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 34059 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 34060 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 34061 UNICODE_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34062 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34063 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34064 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34065 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34066 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34067 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 34068 UNICODE_OTHER_PUNCTUATION, UNICODE_MODIFIER_LETTER, 34069 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 34070 UNICODE_OTHER_PUNCTUATION, UNICODE_CURRENCY_SYMBOL, 34071 UNICODE_OTHER_LETTER, UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, 34072 UNICODE_UNASSIGNED, UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 34073 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 34074 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 34075 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 34076 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, UNICODE_UNASSIGNED, 34077 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34078 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_NUMBER, 34079 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 34080 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 34081 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 34082 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34083 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED 34084 }, 34085 { /* page 24, index 22 */ 34086 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 34087 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 34088 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 34089 UNICODE_DASH_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 34090 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 34091 UNICODE_OTHER_PUNCTUATION, UNICODE_NON_SPACING_MARK, 34092 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, UNICODE_FORMAT, 34093 UNICODE_UNASSIGNED, UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 34094 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 34095 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 34096 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 34097 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, UNICODE_UNASSIGNED, 34098 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34099 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 34100 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34101 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34102 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34103 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34104 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34105 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34106 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34107 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34108 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34109 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34110 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34111 UNICODE_OTHER_LETTER, UNICODE_MODIFIER_LETTER, 34112 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34113 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34114 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34115 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34116 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34117 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34118 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34119 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34120 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34121 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34122 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34123 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34124 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34125 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34126 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34127 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34128 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34129 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34130 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34131 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34132 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34133 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34134 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34135 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34136 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34137 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34138 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34139 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34140 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34141 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34142 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34143 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34144 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34145 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34146 UNICODE_OTHER_LETTER, UNICODE_NON_SPACING_MARK, 34147 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34148 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34149 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34150 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34151 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34152 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34153 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34154 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34155 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34156 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34157 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34158 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34159 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34160 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34161 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34162 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34163 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34164 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34165 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34166 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34167 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34168 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34169 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34170 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34171 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34172 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34173 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34174 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34175 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED 34176 }, 34177 { /* page 25, index 23 */ 34178 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34179 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34180 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34181 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34182 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34183 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34184 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34185 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34186 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34187 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34188 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_NON_SPACING_MARK, 34189 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34190 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 34191 UNICODE_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34192 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 34193 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_UNASSIGNED, 34194 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34195 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 34196 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 34197 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 34198 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 34199 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34200 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34201 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_SYMBOL, 34202 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34203 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 34204 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 34205 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 34206 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 34207 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 34208 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 34209 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34210 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34211 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34212 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34213 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34214 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34215 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34216 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34217 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34218 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34219 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 34220 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34221 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34222 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34223 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34224 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34225 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34226 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34227 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34228 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34229 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34230 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34231 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34232 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34233 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34234 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34235 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34236 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34237 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34238 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34239 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 34240 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34241 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34242 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34243 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34244 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34245 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34246 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34247 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34248 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34249 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 34250 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34251 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_DECIMAL_NUMBER, 34252 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 34253 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 34254 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 34255 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 34256 UNICODE_DECIMAL_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_UNASSIGNED, 34257 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_SYMBOL, 34258 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 34259 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 34260 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 34261 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 34262 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 34263 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 34264 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 34265 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 34266 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 34267 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 34268 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL 34269 }, 34270 { /* page 26, index 24 */ 34271 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34272 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34273 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34274 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34275 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34276 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34277 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34278 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34279 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34280 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 34281 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34282 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 34283 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34284 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34285 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34286 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34287 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34288 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34289 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34290 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34291 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34292 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34293 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34294 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34295 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34296 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34297 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34298 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34299 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34300 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_SPACING_MARK, 34301 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 34302 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34303 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34304 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34305 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, 34306 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 34307 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 34308 UNICODE_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34309 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34310 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34311 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34312 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 34313 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 34314 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 34315 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34316 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34317 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34318 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34319 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34320 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_NON_SPACING_MARK, 34321 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 34322 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 34323 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 34324 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 34325 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, UNICODE_UNASSIGNED, 34326 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34327 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_DECIMAL_NUMBER, 34328 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 34329 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 34330 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 34331 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 34332 UNICODE_DECIMAL_NUMBER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34333 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34334 UNICODE_UNASSIGNED, UNICODE_OTHER_PUNCTUATION, 34335 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 34336 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 34337 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 34338 UNICODE_MODIFIER_LETTER, UNICODE_OTHER_PUNCTUATION, 34339 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 34340 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 34341 UNICODE_OTHER_PUNCTUATION, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34342 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34343 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34344 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34345 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34346 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34347 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34348 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34349 UNICODE_ENCLOSING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34350 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34351 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34352 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34353 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34354 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34355 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34356 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34357 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34358 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34359 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34360 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34361 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34362 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34363 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34364 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34365 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34366 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34367 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34368 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34369 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34370 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED 34371 }, 34372 { /* page 27, index 25 */ 34373 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34374 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34375 UNICODE_SPACING_MARK, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34376 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34377 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34378 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34379 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34380 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34381 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34382 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34383 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34384 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34385 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34386 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34387 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34388 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34389 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34390 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34391 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 34392 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34393 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34394 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 34395 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 34396 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 34397 UNICODE_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34398 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_OTHER_LETTER, 34399 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34400 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34401 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34402 UNICODE_UNASSIGNED, UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 34403 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 34404 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 34405 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 34406 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 34407 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 34408 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 34409 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 34410 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_SYMBOL, 34411 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 34412 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 34413 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 34414 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34415 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34416 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34417 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34418 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_SYMBOL, 34419 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 34420 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 34421 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_UNASSIGNED, 34422 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_NON_SPACING_MARK, 34423 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 34424 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34425 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34426 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34427 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34428 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34429 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34430 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34431 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34432 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34433 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34434 UNICODE_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34435 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34436 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 34437 UNICODE_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34438 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 34439 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34440 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_LETTER, 34441 UNICODE_OTHER_LETTER, UNICODE_DECIMAL_NUMBER, 34442 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 34443 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 34444 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 34445 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 34446 UNICODE_DECIMAL_NUMBER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34447 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34448 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34449 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34450 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34451 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34452 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34453 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34454 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34455 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34456 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34457 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34458 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34459 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34460 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34461 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 34462 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34463 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 34464 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 34465 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34466 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 34467 UNICODE_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34468 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34469 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34470 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 34471 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION 34472 }, 34473 { /* page 28, index 26 */ 34474 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34475 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34476 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34477 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34478 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34479 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34480 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34481 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34482 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34483 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34484 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34485 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34486 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 34487 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 34488 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 34489 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34490 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34491 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34492 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34493 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 34494 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34495 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34496 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 34497 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 34498 UNICODE_OTHER_PUNCTUATION, UNICODE_DECIMAL_NUMBER, 34499 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 34500 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 34501 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 34502 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 34503 UNICODE_DECIMAL_NUMBER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34504 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34505 UNICODE_OTHER_LETTER, UNICODE_DECIMAL_NUMBER, 34506 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 34507 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 34508 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 34509 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 34510 UNICODE_DECIMAL_NUMBER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34511 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34512 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34513 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34514 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34515 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34516 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34517 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34518 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34519 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34520 UNICODE_OTHER_LETTER, UNICODE_MODIFIER_LETTER, 34521 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34522 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34523 UNICODE_MODIFIER_LETTER, UNICODE_OTHER_PUNCTUATION, 34524 UNICODE_OTHER_PUNCTUATION, UNICODE_LOWERCASE_LETTER, 34525 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34526 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34527 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34528 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34529 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34530 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34531 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34532 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34533 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34534 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34535 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34536 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34537 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34538 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34539 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34540 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34541 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34542 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34543 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34544 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34545 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34546 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34547 UNICODE_UNASSIGNED, UNICODE_OTHER_PUNCTUATION, 34548 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 34549 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 34550 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 34551 UNICODE_OTHER_PUNCTUATION, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34552 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34553 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34554 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34555 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_PUNCTUATION, 34556 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34557 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34558 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34559 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34560 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34561 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34562 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 34563 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34564 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34565 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34566 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_LETTER, 34567 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34568 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_LETTER, 34569 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 34570 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 34571 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_LETTER, 34572 UNICODE_OTHER_LETTER, UNICODE_SPACING_MARK, 34573 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34574 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34575 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED 34576 }, 34577 { /* page 29, index 27 */ 34578 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34579 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34580 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34581 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34582 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34583 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34584 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34585 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34586 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34587 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34588 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34589 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34590 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34591 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34592 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34593 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34594 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34595 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34596 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34597 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34598 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34599 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34600 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34601 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34602 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34603 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34604 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34605 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34606 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34607 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34608 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34609 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34610 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34611 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34612 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34613 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34614 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34615 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34616 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34617 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34618 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34619 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34620 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34621 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34622 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34623 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34624 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34625 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34626 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34627 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34628 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34629 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34630 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34631 UNICODE_MODIFIER_LETTER, UNICODE_LOWERCASE_LETTER, 34632 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34633 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34634 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34635 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34636 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34637 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34638 UNICODE_MODIFIER_LETTER, UNICODE_LOWERCASE_LETTER, 34639 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34640 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34641 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34642 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34643 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34644 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34645 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34646 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34647 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34648 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34649 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34650 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34651 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34652 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34653 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34654 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34655 UNICODE_LOWERCASE_LETTER, UNICODE_MODIFIER_LETTER, 34656 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34657 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34658 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34659 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34660 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34661 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34662 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34663 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34664 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34665 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34666 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34667 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34668 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34669 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34670 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34671 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34672 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34673 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 34674 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34675 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34676 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34677 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34678 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34679 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34680 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34681 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34682 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34683 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34684 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34685 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34686 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34687 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34688 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34689 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34690 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34691 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34692 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34693 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34694 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34695 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34696 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34697 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34698 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34699 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34700 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34701 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34702 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34703 UNICODE_UNASSIGNED, UNICODE_NON_SPACING_MARK, 34704 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 34705 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK 34706 }, 34707 { /* page 30, index 28 */ 34708 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34709 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34710 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34711 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34712 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34713 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34714 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34715 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34716 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34717 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34718 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34719 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34720 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34721 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34722 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34723 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34724 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34725 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34726 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34727 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34728 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34729 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34730 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34731 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34732 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34733 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34734 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34735 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34736 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34737 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34738 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34739 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34740 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34741 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34742 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34743 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34744 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34745 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34746 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34747 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34748 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34749 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34750 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34751 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34752 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34753 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34754 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34755 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34756 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34757 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34758 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34759 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34760 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34761 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34762 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34763 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34764 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34765 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34766 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34767 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34768 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34769 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34770 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34771 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34772 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34773 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34774 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34775 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34776 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34777 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34778 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34779 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34780 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34781 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34782 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34783 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34784 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34785 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34786 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34787 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34788 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34789 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34790 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34791 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34792 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34793 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34794 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34795 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34796 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34797 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34798 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34799 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34800 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34801 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34802 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34803 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34804 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34805 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34806 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34807 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34808 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34809 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34810 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34811 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34812 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34813 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34814 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34815 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34816 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34817 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34818 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34819 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34820 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34821 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34822 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34823 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34824 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34825 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34826 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34827 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34828 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34829 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34830 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34831 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34832 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34833 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34834 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34835 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER 34836 }, 34837 { /* page 31, index 29 */ 34838 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34839 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34840 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34841 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34842 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 34843 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 34844 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 34845 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 34846 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34847 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34848 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34849 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UPPERCASE_LETTER, 34850 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 34851 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 34852 UNICODE_UPPERCASE_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34853 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34854 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34855 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34856 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34857 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 34858 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 34859 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 34860 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 34861 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34862 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34863 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34864 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34865 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 34866 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 34867 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 34868 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 34869 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34870 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34871 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34872 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UPPERCASE_LETTER, 34873 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 34874 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 34875 UNICODE_UPPERCASE_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34876 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34877 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34878 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34879 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34880 UNICODE_UNASSIGNED, UNICODE_UPPERCASE_LETTER, UNICODE_UNASSIGNED, 34881 UNICODE_UPPERCASE_LETTER, UNICODE_UNASSIGNED, 34882 UNICODE_UPPERCASE_LETTER, UNICODE_UNASSIGNED, 34883 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34884 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34885 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34886 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34887 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 34888 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 34889 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 34890 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 34891 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34892 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34893 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34894 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34895 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34896 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34897 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34898 UNICODE_LOWERCASE_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34899 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34900 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34901 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34902 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34903 UNICODE_TITLECASE_LETTER, UNICODE_TITLECASE_LETTER, 34904 UNICODE_TITLECASE_LETTER, UNICODE_TITLECASE_LETTER, 34905 UNICODE_TITLECASE_LETTER, UNICODE_TITLECASE_LETTER, 34906 UNICODE_TITLECASE_LETTER, UNICODE_TITLECASE_LETTER, 34907 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34908 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34909 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34910 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34911 UNICODE_TITLECASE_LETTER, UNICODE_TITLECASE_LETTER, 34912 UNICODE_TITLECASE_LETTER, UNICODE_TITLECASE_LETTER, 34913 UNICODE_TITLECASE_LETTER, UNICODE_TITLECASE_LETTER, 34914 UNICODE_TITLECASE_LETTER, UNICODE_TITLECASE_LETTER, 34915 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34916 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34917 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34918 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34919 UNICODE_TITLECASE_LETTER, UNICODE_TITLECASE_LETTER, 34920 UNICODE_TITLECASE_LETTER, UNICODE_TITLECASE_LETTER, 34921 UNICODE_TITLECASE_LETTER, UNICODE_TITLECASE_LETTER, 34922 UNICODE_TITLECASE_LETTER, UNICODE_TITLECASE_LETTER, 34923 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34924 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34925 UNICODE_LOWERCASE_LETTER, UNICODE_UNASSIGNED, 34926 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34927 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 34928 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 34929 UNICODE_TITLECASE_LETTER, UNICODE_MODIFIER_SYMBOL, 34930 UNICODE_LOWERCASE_LETTER, UNICODE_MODIFIER_SYMBOL, 34931 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 34932 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34933 UNICODE_LOWERCASE_LETTER, UNICODE_UNASSIGNED, 34934 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34935 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 34936 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 34937 UNICODE_TITLECASE_LETTER, UNICODE_MODIFIER_SYMBOL, 34938 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 34939 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34940 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34941 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_LOWERCASE_LETTER, 34942 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 34943 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 34944 UNICODE_UPPERCASE_LETTER, UNICODE_UNASSIGNED, 34945 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 34946 UNICODE_MODIFIER_SYMBOL, UNICODE_LOWERCASE_LETTER, 34947 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34948 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34949 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34950 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 34951 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 34952 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 34953 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 34954 UNICODE_MODIFIER_SYMBOL, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 34955 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34956 UNICODE_LOWERCASE_LETTER, UNICODE_UNASSIGNED, 34957 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 34958 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 34959 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 34960 UNICODE_TITLECASE_LETTER, UNICODE_MODIFIER_SYMBOL, 34961 UNICODE_MODIFIER_SYMBOL, UNICODE_UNASSIGNED 34962 }, 34963 { /* page 32, index 30 */ 34964 UNICODE_SPACE_SEPARATOR, UNICODE_SPACE_SEPARATOR, 34965 UNICODE_SPACE_SEPARATOR, UNICODE_SPACE_SEPARATOR, 34966 UNICODE_SPACE_SEPARATOR, UNICODE_SPACE_SEPARATOR, 34967 UNICODE_SPACE_SEPARATOR, UNICODE_SPACE_SEPARATOR, 34968 UNICODE_SPACE_SEPARATOR, UNICODE_SPACE_SEPARATOR, 34969 UNICODE_SPACE_SEPARATOR, UNICODE_FORMAT, UNICODE_FORMAT, 34970 UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, 34971 UNICODE_DASH_PUNCTUATION, UNICODE_DASH_PUNCTUATION, 34972 UNICODE_DASH_PUNCTUATION, UNICODE_DASH_PUNCTUATION, 34973 UNICODE_DASH_PUNCTUATION, UNICODE_DASH_PUNCTUATION, 34974 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 34975 UNICODE_INITIAL_PUNCTUATION, UNICODE_FINAL_PUNCTUATION, 34976 UNICODE_OPEN_PUNCTUATION, UNICODE_INITIAL_PUNCTUATION, 34977 UNICODE_INITIAL_PUNCTUATION, UNICODE_FINAL_PUNCTUATION, 34978 UNICODE_OPEN_PUNCTUATION, UNICODE_INITIAL_PUNCTUATION, 34979 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 34980 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 34981 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 34982 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 34983 UNICODE_LINE_SEPARATOR, UNICODE_PARAGRAPH_SEPARATOR, 34984 UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, 34985 UNICODE_FORMAT, UNICODE_SPACE_SEPARATOR, UNICODE_OTHER_PUNCTUATION, 34986 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 34987 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 34988 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 34989 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 34990 UNICODE_INITIAL_PUNCTUATION, UNICODE_FINAL_PUNCTUATION, 34991 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 34992 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 34993 UNICODE_CONNECT_PUNCTUATION, UNICODE_CONNECT_PUNCTUATION, 34994 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 34995 UNICODE_OTHER_PUNCTUATION, UNICODE_MATH_SYMBOL, 34996 UNICODE_OPEN_PUNCTUATION, UNICODE_CLOSE_PUNCTUATION, 34997 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 34998 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 34999 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 35000 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 35001 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 35002 UNICODE_OTHER_PUNCTUATION, UNICODE_MATH_SYMBOL, 35003 UNICODE_OTHER_PUNCTUATION, UNICODE_CONNECT_PUNCTUATION, 35004 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 35005 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 35006 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 35007 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 35008 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 35009 UNICODE_SPACE_SEPARATOR, UNICODE_FORMAT, UNICODE_FORMAT, 35010 UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, 35011 UNICODE_UNASSIGNED, UNICODE_FORMAT, UNICODE_FORMAT, 35012 UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, 35013 UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, 35014 UNICODE_OTHER_NUMBER, UNICODE_MODIFIER_LETTER, UNICODE_UNASSIGNED, 35015 UNICODE_UNASSIGNED, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35016 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35017 UNICODE_OTHER_NUMBER, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35018 UNICODE_MATH_SYMBOL, UNICODE_OPEN_PUNCTUATION, 35019 UNICODE_CLOSE_PUNCTUATION, UNICODE_MODIFIER_LETTER, 35020 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35021 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35022 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35023 UNICODE_OTHER_NUMBER, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35024 UNICODE_MATH_SYMBOL, UNICODE_OPEN_PUNCTUATION, 35025 UNICODE_CLOSE_PUNCTUATION, UNICODE_UNASSIGNED, 35026 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 35027 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 35028 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 35029 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 35030 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 35031 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 35032 UNICODE_MODIFIER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35033 UNICODE_UNASSIGNED, UNICODE_CURRENCY_SYMBOL, 35034 UNICODE_CURRENCY_SYMBOL, UNICODE_CURRENCY_SYMBOL, 35035 UNICODE_CURRENCY_SYMBOL, UNICODE_CURRENCY_SYMBOL, 35036 UNICODE_CURRENCY_SYMBOL, UNICODE_CURRENCY_SYMBOL, 35037 UNICODE_CURRENCY_SYMBOL, UNICODE_CURRENCY_SYMBOL, 35038 UNICODE_CURRENCY_SYMBOL, UNICODE_CURRENCY_SYMBOL, 35039 UNICODE_CURRENCY_SYMBOL, UNICODE_CURRENCY_SYMBOL, 35040 UNICODE_CURRENCY_SYMBOL, UNICODE_CURRENCY_SYMBOL, 35041 UNICODE_CURRENCY_SYMBOL, UNICODE_CURRENCY_SYMBOL, 35042 UNICODE_CURRENCY_SYMBOL, UNICODE_CURRENCY_SYMBOL, 35043 UNICODE_CURRENCY_SYMBOL, UNICODE_CURRENCY_SYMBOL, 35044 UNICODE_CURRENCY_SYMBOL, UNICODE_CURRENCY_SYMBOL, 35045 UNICODE_CURRENCY_SYMBOL, UNICODE_CURRENCY_SYMBOL, 35046 UNICODE_CURRENCY_SYMBOL, UNICODE_CURRENCY_SYMBOL, 35047 UNICODE_CURRENCY_SYMBOL, UNICODE_CURRENCY_SYMBOL, 35048 UNICODE_CURRENCY_SYMBOL, UNICODE_CURRENCY_SYMBOL, 35049 UNICODE_CURRENCY_SYMBOL, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35050 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35051 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35052 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35053 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35054 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_NON_SPACING_MARK, 35055 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 35056 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 35057 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 35058 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 35059 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 35060 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 35061 UNICODE_ENCLOSING_MARK, UNICODE_ENCLOSING_MARK, 35062 UNICODE_ENCLOSING_MARK, UNICODE_ENCLOSING_MARK, 35063 UNICODE_NON_SPACING_MARK, UNICODE_ENCLOSING_MARK, 35064 UNICODE_ENCLOSING_MARK, UNICODE_ENCLOSING_MARK, 35065 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 35066 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 35067 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 35068 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 35069 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 35070 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 35071 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35072 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35073 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35074 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35075 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED 35076 }, 35077 { /* page 33, index 31 */ 35078 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35079 UNICODE_UPPERCASE_LETTER, UNICODE_OTHER_SYMBOL, 35080 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35081 UNICODE_UPPERCASE_LETTER, UNICODE_OTHER_SYMBOL, 35082 UNICODE_OTHER_SYMBOL, UNICODE_LOWERCASE_LETTER, 35083 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 35084 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35085 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 35086 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 35087 UNICODE_LOWERCASE_LETTER, UNICODE_OTHER_SYMBOL, 35088 UNICODE_UPPERCASE_LETTER, UNICODE_OTHER_SYMBOL, 35089 UNICODE_OTHER_SYMBOL, UNICODE_MATH_SYMBOL, 35090 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 35091 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 35092 UNICODE_UPPERCASE_LETTER, UNICODE_OTHER_SYMBOL, 35093 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35094 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35095 UNICODE_UPPERCASE_LETTER, UNICODE_OTHER_SYMBOL, 35096 UNICODE_UPPERCASE_LETTER, UNICODE_OTHER_SYMBOL, 35097 UNICODE_UPPERCASE_LETTER, UNICODE_OTHER_SYMBOL, 35098 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 35099 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 35100 UNICODE_OTHER_SYMBOL, UNICODE_LOWERCASE_LETTER, 35101 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 35102 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 35103 UNICODE_LOWERCASE_LETTER, UNICODE_OTHER_LETTER, 35104 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 35105 UNICODE_LOWERCASE_LETTER, UNICODE_OTHER_SYMBOL, 35106 UNICODE_OTHER_SYMBOL, UNICODE_LOWERCASE_LETTER, 35107 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 35108 UNICODE_UPPERCASE_LETTER, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35109 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35110 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35111 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35112 UNICODE_LOWERCASE_LETTER, UNICODE_OTHER_SYMBOL, 35113 UNICODE_MATH_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35114 UNICODE_LOWERCASE_LETTER, UNICODE_OTHER_SYMBOL, 35115 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35116 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35117 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35118 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35119 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35120 UNICODE_OTHER_NUMBER, UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 35121 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 35122 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 35123 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 35124 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 35125 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 35126 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 35127 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 35128 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 35129 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 35130 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 35131 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 35132 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 35133 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 35134 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 35135 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 35136 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 35137 UNICODE_LETTER_NUMBER, UNICODE_UPPERCASE_LETTER, 35138 UNICODE_LOWERCASE_LETTER, UNICODE_LETTER_NUMBER, 35139 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 35140 UNICODE_LETTER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_SYMBOL, 35141 UNICODE_OTHER_SYMBOL, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35142 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_MATH_SYMBOL, 35143 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35144 UNICODE_MATH_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35145 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35146 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_OTHER_SYMBOL, 35147 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35148 UNICODE_MATH_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35149 UNICODE_MATH_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35150 UNICODE_MATH_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35151 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35152 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_MATH_SYMBOL, 35153 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35154 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35155 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35156 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35157 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35158 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35159 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35160 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35161 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35162 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35163 UNICODE_OTHER_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35164 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_MATH_SYMBOL, 35165 UNICODE_OTHER_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_OTHER_SYMBOL, 35166 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35167 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35168 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35169 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35170 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35171 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35172 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35173 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35174 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35175 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35176 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35177 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35178 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35179 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL 35180 }, 35181 { /* page 35, index 32 */ 35182 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35183 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35184 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35185 UNICODE_OPEN_PUNCTUATION, UNICODE_CLOSE_PUNCTUATION, 35186 UNICODE_OPEN_PUNCTUATION, UNICODE_CLOSE_PUNCTUATION, 35187 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35188 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35189 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35190 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35191 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35192 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35193 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_MATH_SYMBOL, 35194 UNICODE_MATH_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35195 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35196 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35197 UNICODE_OPEN_PUNCTUATION, UNICODE_CLOSE_PUNCTUATION, 35198 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35199 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35200 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35201 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35202 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35203 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35204 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35205 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35206 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35207 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35208 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35209 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35210 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35211 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35212 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35213 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35214 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35215 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35216 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35217 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35218 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35219 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35220 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35221 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35222 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35223 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35224 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35225 UNICODE_MATH_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35226 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35227 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35228 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35229 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35230 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35231 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35232 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35233 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35234 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35235 UNICODE_OTHER_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35236 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35237 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35238 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35239 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35240 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35241 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35242 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35243 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_OTHER_SYMBOL, 35244 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35245 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35246 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35247 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35248 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35249 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35250 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35251 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35252 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35253 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35254 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35255 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35256 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35257 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35258 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35259 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35260 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35261 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35262 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35263 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35264 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35265 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35266 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35267 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35268 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL 35269 }, 35270 { /* page 36, index 33 */ 35271 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35272 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35273 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35274 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35275 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35276 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35277 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35278 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35279 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35280 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35281 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35282 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35283 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35284 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35285 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35286 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35287 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35288 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35289 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35290 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35291 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35292 UNICODE_UNASSIGNED, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35293 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35294 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35295 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35296 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35297 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35298 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35299 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35300 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35301 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35302 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35303 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35304 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35305 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35306 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35307 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35308 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35309 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35310 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35311 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35312 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35313 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35314 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35315 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35316 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35317 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35318 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35319 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35320 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35321 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35322 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35323 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35324 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35325 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35326 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35327 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35328 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35329 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35330 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35331 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35332 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35333 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35334 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35335 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35336 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35337 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35338 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35339 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35340 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35341 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35342 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35343 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35344 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35345 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35346 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35347 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35348 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35349 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35350 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35351 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35352 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35353 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35354 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35355 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35356 UNICODE_OTHER_NUMBER 35357 }, 35358 { /* page 37, index 34 */ 35359 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35360 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35361 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35362 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35363 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35364 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35365 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35366 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35367 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35368 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35369 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35370 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35371 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35372 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35373 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35374 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35375 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35376 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35377 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35378 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35379 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35380 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35381 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35382 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35383 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35384 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35385 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35386 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35387 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35388 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35389 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35390 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35391 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35392 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35393 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35394 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35395 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35396 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35397 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35398 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35399 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35400 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35401 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35402 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35403 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35404 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35405 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35406 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35407 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35408 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35409 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35410 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35411 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35412 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35413 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35414 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35415 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35416 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35417 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35418 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35419 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35420 UNICODE_MATH_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35421 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35422 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35423 UNICODE_OTHER_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_OTHER_SYMBOL, 35424 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35425 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35426 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35427 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35428 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35429 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35430 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35431 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35432 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35433 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35434 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35435 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35436 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35437 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35438 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35439 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35440 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35441 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_MATH_SYMBOL, 35442 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35443 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35444 UNICODE_MATH_SYMBOL 35445 }, 35446 { /* page 38, index 35 */ 35447 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35448 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35449 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35450 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35451 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35452 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35453 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35454 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35455 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35456 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35457 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35458 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35459 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35460 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35461 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35462 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35463 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35464 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35465 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35466 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35467 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35468 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35469 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35470 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35471 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35472 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35473 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35474 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35475 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35476 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35477 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35478 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35479 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35480 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35481 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35482 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35483 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35484 UNICODE_MATH_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35485 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35486 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35487 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35488 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35489 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35490 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35491 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35492 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35493 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35494 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35495 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35496 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35497 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35498 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35499 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35500 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35501 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35502 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35503 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35504 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35505 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35506 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35507 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35508 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35509 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35510 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35511 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35512 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35513 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35514 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35515 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35516 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35517 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35518 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35519 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35520 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35521 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35522 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35523 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35524 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35525 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35526 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35527 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35528 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35529 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35530 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35531 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35532 UNICODE_OTHER_SYMBOL 35533 }, 35534 { /* page 39, index 36 */ 35535 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35536 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35537 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35538 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35539 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35540 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35541 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35542 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35543 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35544 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35545 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35546 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35547 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35548 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35549 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35550 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35551 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35552 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35553 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35554 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35555 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35556 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35557 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35558 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35559 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35560 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35561 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35562 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35563 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35564 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35565 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35566 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35567 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35568 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35569 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35570 UNICODE_OPEN_PUNCTUATION, UNICODE_CLOSE_PUNCTUATION, 35571 UNICODE_OPEN_PUNCTUATION, UNICODE_CLOSE_PUNCTUATION, 35572 UNICODE_OPEN_PUNCTUATION, UNICODE_CLOSE_PUNCTUATION, 35573 UNICODE_OPEN_PUNCTUATION, UNICODE_CLOSE_PUNCTUATION, 35574 UNICODE_OPEN_PUNCTUATION, UNICODE_CLOSE_PUNCTUATION, 35575 UNICODE_OPEN_PUNCTUATION, UNICODE_CLOSE_PUNCTUATION, 35576 UNICODE_OPEN_PUNCTUATION, UNICODE_CLOSE_PUNCTUATION, 35577 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35578 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35579 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35580 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35581 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35582 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35583 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35584 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35585 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35586 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 35587 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35588 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35589 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35590 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35591 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35592 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35593 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35594 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35595 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35596 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35597 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35598 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35599 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35600 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35601 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_MATH_SYMBOL, 35602 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35603 UNICODE_MATH_SYMBOL, UNICODE_OPEN_PUNCTUATION, 35604 UNICODE_CLOSE_PUNCTUATION, UNICODE_MATH_SYMBOL, 35605 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35606 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35607 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35608 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35609 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35610 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35611 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35612 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35613 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35614 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35615 UNICODE_OPEN_PUNCTUATION, UNICODE_CLOSE_PUNCTUATION, 35616 UNICODE_OPEN_PUNCTUATION, UNICODE_CLOSE_PUNCTUATION, 35617 UNICODE_OPEN_PUNCTUATION, UNICODE_CLOSE_PUNCTUATION, 35618 UNICODE_OPEN_PUNCTUATION, UNICODE_CLOSE_PUNCTUATION, 35619 UNICODE_OPEN_PUNCTUATION, UNICODE_CLOSE_PUNCTUATION, 35620 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35621 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35622 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35623 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35624 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35625 UNICODE_MATH_SYMBOL 35626 }, 35627 { /* page 41, index 37 */ 35628 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35629 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35630 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35631 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35632 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35633 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35634 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35635 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35636 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35637 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35638 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35639 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35640 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35641 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35642 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35643 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35644 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35645 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35646 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35647 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35648 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35649 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35650 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35651 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35652 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35653 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35654 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35655 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35656 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35657 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35658 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35659 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35660 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35661 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35662 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35663 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35664 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35665 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35666 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35667 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35668 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35669 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35670 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35671 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_OPEN_PUNCTUATION, 35672 UNICODE_CLOSE_PUNCTUATION, UNICODE_OPEN_PUNCTUATION, 35673 UNICODE_CLOSE_PUNCTUATION, UNICODE_OPEN_PUNCTUATION, 35674 UNICODE_CLOSE_PUNCTUATION, UNICODE_OPEN_PUNCTUATION, 35675 UNICODE_CLOSE_PUNCTUATION, UNICODE_OPEN_PUNCTUATION, 35676 UNICODE_CLOSE_PUNCTUATION, UNICODE_OPEN_PUNCTUATION, 35677 UNICODE_CLOSE_PUNCTUATION, UNICODE_OPEN_PUNCTUATION, 35678 UNICODE_CLOSE_PUNCTUATION, UNICODE_OPEN_PUNCTUATION, 35679 UNICODE_CLOSE_PUNCTUATION, UNICODE_OPEN_PUNCTUATION, 35680 UNICODE_CLOSE_PUNCTUATION, UNICODE_OPEN_PUNCTUATION, 35681 UNICODE_CLOSE_PUNCTUATION, UNICODE_OPEN_PUNCTUATION, 35682 UNICODE_CLOSE_PUNCTUATION, UNICODE_MATH_SYMBOL, 35683 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35684 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35685 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35686 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35687 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35688 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35689 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35690 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35691 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35692 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35693 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35694 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35695 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35696 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35697 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35698 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35699 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35700 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35701 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35702 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35703 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_OPEN_PUNCTUATION, 35704 UNICODE_CLOSE_PUNCTUATION, UNICODE_OPEN_PUNCTUATION, 35705 UNICODE_CLOSE_PUNCTUATION, UNICODE_MATH_SYMBOL, 35706 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35707 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35708 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35709 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35710 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35711 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35712 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35713 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35714 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35715 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35716 UNICODE_MATH_SYMBOL, UNICODE_OPEN_PUNCTUATION, 35717 UNICODE_CLOSE_PUNCTUATION, UNICODE_MATH_SYMBOL, 35718 UNICODE_MATH_SYMBOL 35719 }, 35720 { /* page 43, index 38 */ 35721 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35722 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35723 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35724 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35725 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35726 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35727 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35728 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35729 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35730 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35731 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35732 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35733 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35734 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35735 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35736 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35737 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35738 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35739 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35740 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35741 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35742 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35743 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35744 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_MATH_SYMBOL, 35745 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 35746 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_OTHER_SYMBOL, 35747 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35748 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35749 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35750 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35751 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35752 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35753 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35754 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35755 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35756 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35757 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35758 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35759 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_UNASSIGNED, 35760 UNICODE_UNASSIGNED, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35761 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35762 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35763 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35764 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35765 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35766 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35767 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35768 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35769 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35770 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35771 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_SYMBOL, 35772 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35773 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35774 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35775 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35776 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35777 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35778 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35779 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35780 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35781 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35782 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35783 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35784 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35785 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35786 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35787 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35788 UNICODE_UNASSIGNED, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35789 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35790 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35791 UNICODE_OTHER_SYMBOL, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35792 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35793 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35794 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35795 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35796 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35797 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35798 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35799 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_SYMBOL, 35800 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35801 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35802 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35803 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35804 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35805 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35806 UNICODE_UNASSIGNED 35807 }, 35808 { /* page 44, index 39 */ 35809 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 35810 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 35811 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 35812 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 35813 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 35814 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 35815 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 35816 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 35817 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 35818 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 35819 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 35820 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 35821 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 35822 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 35823 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 35824 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 35825 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 35826 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 35827 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 35828 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 35829 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 35830 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 35831 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 35832 UNICODE_UPPERCASE_LETTER, UNICODE_UNASSIGNED, 35833 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35834 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35835 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35836 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35837 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35838 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35839 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35840 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35841 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35842 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35843 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35844 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35845 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35846 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35847 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35848 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35849 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35850 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35851 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35852 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35853 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35854 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35855 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35856 UNICODE_LOWERCASE_LETTER, UNICODE_UNASSIGNED, 35857 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35858 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 35859 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35860 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 35861 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 35862 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 35863 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 35864 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 35865 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35866 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35867 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 35868 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35869 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35870 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35871 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 35872 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 35873 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35874 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35875 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35876 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35877 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35878 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35879 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35880 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35881 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35882 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35883 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35884 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35885 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35886 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35887 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35888 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35889 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35890 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35891 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35892 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35893 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35894 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35895 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35896 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35897 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35898 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35899 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35900 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35901 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35902 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35903 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35904 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35905 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35906 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35907 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35908 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35909 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35910 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35911 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35912 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35913 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35914 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35915 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35916 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35917 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35918 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35919 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35920 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35921 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35922 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35923 UNICODE_LOWERCASE_LETTER, UNICODE_OTHER_SYMBOL, 35924 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35925 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 35926 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35927 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35928 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 35929 UNICODE_NON_SPACING_MARK, UNICODE_UPPERCASE_LETTER, 35930 UNICODE_LOWERCASE_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35931 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35932 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 35933 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 35934 UNICODE_OTHER_NUMBER, UNICODE_OTHER_PUNCTUATION, 35935 UNICODE_OTHER_PUNCTUATION 35936 }, 35937 { /* page 45, index 40 */ 35938 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35939 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35940 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35941 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35942 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35943 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35944 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35945 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35946 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35947 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35948 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35949 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35950 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35951 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35952 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35953 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35954 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35955 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35956 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 35957 UNICODE_UNASSIGNED, UNICODE_LOWERCASE_LETTER, UNICODE_UNASSIGNED, 35958 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35959 UNICODE_UNASSIGNED, UNICODE_LOWERCASE_LETTER, UNICODE_UNASSIGNED, 35960 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 35961 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 35962 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 35963 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 35964 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 35965 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 35966 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 35967 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 35968 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 35969 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 35970 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 35971 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 35972 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 35973 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 35974 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 35975 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 35976 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 35977 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 35978 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 35979 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35980 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35981 UNICODE_UNASSIGNED, UNICODE_MODIFIER_LETTER, 35982 UNICODE_OTHER_PUNCTUATION, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35983 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35984 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35985 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35986 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35987 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_LETTER, 35988 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 35989 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 35990 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 35991 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 35992 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 35993 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 35994 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 35995 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35996 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35997 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 35998 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 35999 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36000 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 36001 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36002 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36003 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 36004 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36005 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36006 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36007 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36008 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 36009 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36010 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36011 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 36012 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36013 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36014 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36015 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36016 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 36017 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36018 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36019 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_NON_SPACING_MARK, 36020 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 36021 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 36022 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 36023 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 36024 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 36025 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 36026 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 36027 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 36028 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 36029 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 36030 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 36031 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 36032 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 36033 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 36034 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 36035 UNICODE_NON_SPACING_MARK 36036 }, 36037 { /* page 46, index 41 */ 36038 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 36039 UNICODE_INITIAL_PUNCTUATION, UNICODE_FINAL_PUNCTUATION, 36040 UNICODE_INITIAL_PUNCTUATION, UNICODE_FINAL_PUNCTUATION, 36041 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 36042 UNICODE_OTHER_PUNCTUATION, UNICODE_INITIAL_PUNCTUATION, 36043 UNICODE_FINAL_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 36044 UNICODE_INITIAL_PUNCTUATION, UNICODE_FINAL_PUNCTUATION, 36045 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 36046 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 36047 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 36048 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 36049 UNICODE_OTHER_PUNCTUATION, UNICODE_DASH_PUNCTUATION, 36050 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 36051 UNICODE_DASH_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 36052 UNICODE_INITIAL_PUNCTUATION, UNICODE_FINAL_PUNCTUATION, 36053 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 36054 UNICODE_INITIAL_PUNCTUATION, UNICODE_FINAL_PUNCTUATION, 36055 UNICODE_OPEN_PUNCTUATION, UNICODE_CLOSE_PUNCTUATION, 36056 UNICODE_OPEN_PUNCTUATION, UNICODE_CLOSE_PUNCTUATION, 36057 UNICODE_OPEN_PUNCTUATION, UNICODE_CLOSE_PUNCTUATION, 36058 UNICODE_OPEN_PUNCTUATION, UNICODE_CLOSE_PUNCTUATION, 36059 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 36060 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 36061 UNICODE_OTHER_PUNCTUATION, UNICODE_MODIFIER_LETTER, 36062 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 36063 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 36064 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 36065 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 36066 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 36067 UNICODE_DASH_PUNCTUATION, UNICODE_DASH_PUNCTUATION, 36068 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 36069 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 36070 UNICODE_DASH_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 36071 UNICODE_OPEN_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 36072 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 36073 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 36074 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 36075 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36076 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36077 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36078 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36079 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36080 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36081 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36082 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36083 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36084 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36085 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36086 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36087 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36088 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36089 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36090 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36091 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36092 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36093 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36094 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36095 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36096 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36097 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36098 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36099 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36100 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36101 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_UNASSIGNED, 36102 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36103 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36104 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36105 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36106 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36107 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36108 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36109 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36110 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36111 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36112 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36113 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36114 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36115 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36116 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36117 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36118 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36119 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36120 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36121 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36122 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36123 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36124 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36125 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36126 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36127 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36128 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36129 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36130 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36131 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_UNASSIGNED, 36132 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36133 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36134 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36135 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED 36136 }, 36137 { /* page 47, index 42 */ 36138 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36139 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36140 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36141 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36142 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36143 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36144 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36145 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36146 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36147 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36148 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36149 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36150 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36151 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36152 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36153 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36154 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36155 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36156 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36157 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36158 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36159 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36160 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36161 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36162 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36163 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36164 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36165 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36166 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36167 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36168 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36169 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36170 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36171 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36172 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36173 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36174 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36175 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36176 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36177 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36178 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36179 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36180 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36181 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36182 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36183 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36184 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36185 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36186 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36187 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36188 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36189 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36190 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36191 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36192 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36193 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36194 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36195 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36196 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36197 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36198 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36199 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36200 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36201 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36202 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36203 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36204 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36205 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36206 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36207 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36208 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36209 UNICODE_OTHER_SYMBOL, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36210 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36211 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36212 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36213 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36214 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36215 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36216 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36217 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36218 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36219 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36220 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36221 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36222 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36223 UNICODE_UNASSIGNED 36224 }, 36225 { /* page 48, index 43 */ 36226 UNICODE_SPACE_SEPARATOR, UNICODE_OTHER_PUNCTUATION, 36227 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 36228 UNICODE_OTHER_SYMBOL, UNICODE_MODIFIER_LETTER, 36229 UNICODE_OTHER_LETTER, UNICODE_LETTER_NUMBER, 36230 UNICODE_OPEN_PUNCTUATION, UNICODE_CLOSE_PUNCTUATION, 36231 UNICODE_OPEN_PUNCTUATION, UNICODE_CLOSE_PUNCTUATION, 36232 UNICODE_OPEN_PUNCTUATION, UNICODE_CLOSE_PUNCTUATION, 36233 UNICODE_OPEN_PUNCTUATION, UNICODE_CLOSE_PUNCTUATION, 36234 UNICODE_OPEN_PUNCTUATION, UNICODE_CLOSE_PUNCTUATION, 36235 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36236 UNICODE_OPEN_PUNCTUATION, UNICODE_CLOSE_PUNCTUATION, 36237 UNICODE_OPEN_PUNCTUATION, UNICODE_CLOSE_PUNCTUATION, 36238 UNICODE_OPEN_PUNCTUATION, UNICODE_CLOSE_PUNCTUATION, 36239 UNICODE_OPEN_PUNCTUATION, UNICODE_CLOSE_PUNCTUATION, 36240 UNICODE_DASH_PUNCTUATION, UNICODE_OPEN_PUNCTUATION, 36241 UNICODE_CLOSE_PUNCTUATION, UNICODE_CLOSE_PUNCTUATION, 36242 UNICODE_OTHER_SYMBOL, UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 36243 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 36244 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 36245 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 36246 UNICODE_LETTER_NUMBER, UNICODE_NON_SPACING_MARK, 36247 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 36248 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 36249 UNICODE_SPACING_MARK, UNICODE_DASH_PUNCTUATION, 36250 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 36251 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 36252 UNICODE_MODIFIER_LETTER, UNICODE_OTHER_SYMBOL, 36253 UNICODE_OTHER_SYMBOL, UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 36254 UNICODE_LETTER_NUMBER, UNICODE_MODIFIER_LETTER, 36255 UNICODE_OTHER_LETTER, UNICODE_OTHER_PUNCTUATION, 36256 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_UNASSIGNED, 36257 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36258 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36259 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36260 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36261 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36262 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36263 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36264 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36265 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36266 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36267 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36268 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36269 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36270 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36271 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36272 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36273 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36274 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36275 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36276 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36277 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36278 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36279 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36280 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36281 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36282 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36283 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36284 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36285 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 36286 UNICODE_UNASSIGNED, UNICODE_NON_SPACING_MARK, 36287 UNICODE_NON_SPACING_MARK, UNICODE_MODIFIER_SYMBOL, 36288 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_LETTER, 36289 UNICODE_MODIFIER_LETTER, UNICODE_OTHER_LETTER, 36290 UNICODE_DASH_PUNCTUATION, UNICODE_OTHER_LETTER, 36291 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36292 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36293 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36294 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36295 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36296 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36297 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36298 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36299 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36300 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36301 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36302 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36303 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36304 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36305 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36306 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36307 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36308 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36309 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36310 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36311 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36312 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36313 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36314 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36315 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36316 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36317 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36318 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36319 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36320 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36321 UNICODE_OTHER_PUNCTUATION, UNICODE_MODIFIER_LETTER, 36322 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 36323 UNICODE_OTHER_LETTER 36324 }, 36325 { /* page 49, index 44 */ 36326 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36327 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 36328 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36329 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36330 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36331 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36332 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36333 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36334 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36335 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36336 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36337 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36338 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36339 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36340 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36341 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 36342 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36343 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36344 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36345 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36346 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36347 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36348 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36349 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36350 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36351 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36352 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36353 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36354 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36355 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36356 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36357 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36358 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36359 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36360 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36361 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36362 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36363 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36364 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36365 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36366 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36367 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36368 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36369 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36370 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36371 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36372 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36373 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 36374 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_NUMBER, 36375 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 36376 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36377 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36378 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36379 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36380 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36381 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36382 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36383 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36384 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36385 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36386 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36387 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36388 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36389 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36390 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36391 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36392 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36393 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36394 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36395 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36396 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36397 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36398 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36399 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36400 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36401 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36402 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36403 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36404 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36405 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36406 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36407 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36408 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36409 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36410 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36411 UNICODE_OTHER_LETTER 36412 }, 36413 { /* page 50, index 45 */ 36414 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36415 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36416 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36417 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36418 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36419 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36420 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36421 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36422 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36423 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36424 UNICODE_OTHER_SYMBOL, UNICODE_UNASSIGNED, UNICODE_OTHER_NUMBER, 36425 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 36426 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 36427 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 36428 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36429 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36430 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36431 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36432 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36433 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36434 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36435 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36436 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36437 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36438 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 36439 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 36440 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_SYMBOL, 36441 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 36442 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 36443 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 36444 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 36445 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 36446 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36447 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36448 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36449 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36450 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36451 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36452 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36453 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36454 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36455 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36456 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_NUMBER, 36457 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 36458 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 36459 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 36460 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36461 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36462 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36463 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36464 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36465 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36466 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36467 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36468 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36469 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36470 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36471 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36472 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36473 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 36474 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 36475 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 36476 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 36477 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 36478 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36479 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36480 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36481 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36482 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36483 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36484 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36485 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36486 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36487 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36488 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36489 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36490 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36491 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36492 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36493 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36494 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36495 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36496 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36497 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36498 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36499 UNICODE_UNASSIGNED 36500 }, 36501 { /* page 77, index 46 */ 36502 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36503 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36504 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36505 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36506 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36507 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36508 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36509 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36510 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36511 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36512 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36513 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36514 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36515 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36516 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36517 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36518 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36519 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36520 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36521 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36522 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36523 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36524 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36525 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36526 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36527 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36528 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36529 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36530 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36531 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36532 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36533 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36534 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36535 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36536 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36537 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36538 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36539 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36540 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36541 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36542 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36543 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36544 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36545 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36546 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36547 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36548 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36549 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36550 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36551 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36552 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36553 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36554 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36555 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36556 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36557 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36558 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36559 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36560 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36561 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36562 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 36563 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36564 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36565 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36566 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36567 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36568 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36569 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36570 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36571 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36572 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36573 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36574 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36575 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36576 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36577 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36578 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36579 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36580 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36581 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36582 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36583 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36584 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36585 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36586 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36587 UNICODE_OTHER_SYMBOL 36588 }, 36589 { /* page 159, index 47 */ 36590 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36591 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36592 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36593 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36594 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36595 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36596 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36597 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36598 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36599 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36600 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36601 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36602 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36603 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36604 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36605 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36606 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36607 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36608 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36609 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36610 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36611 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36612 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36613 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36614 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36615 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36616 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36617 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36618 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36619 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36620 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36621 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36622 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36623 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36624 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36625 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36626 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36627 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36628 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36629 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36630 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36631 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36632 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36633 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36634 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36635 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36636 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36637 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36638 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36639 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36640 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36641 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36642 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36643 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36644 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36645 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36646 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36647 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36648 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36649 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36650 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36651 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36652 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36653 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36654 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36655 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36656 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36657 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36658 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36659 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36660 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36661 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36662 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36663 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36664 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36665 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36666 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36667 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36668 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36669 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36670 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36671 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36672 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36673 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36674 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36675 UNICODE_UNASSIGNED 36676 }, 36677 { /* page 160, index 48 */ 36678 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36679 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36680 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36681 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36682 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36683 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36684 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36685 UNICODE_MODIFIER_LETTER, UNICODE_OTHER_LETTER, 36686 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36687 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36688 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36689 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36690 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36691 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36692 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36693 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36694 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36695 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36696 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36697 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36698 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36699 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36700 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36701 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36702 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36703 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36704 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36705 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36706 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36707 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36708 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36709 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36710 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36711 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36712 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36713 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36714 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36715 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36716 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36717 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36718 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36719 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36720 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36721 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36722 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36723 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36724 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36725 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36726 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36727 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36728 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36729 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36730 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36731 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36732 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36733 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36734 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36735 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36736 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36737 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36738 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36739 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36740 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36741 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36742 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36743 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36744 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36745 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36746 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36747 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36748 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36749 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36750 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36751 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36752 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36753 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36754 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36755 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36756 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36757 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36758 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36759 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36760 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36761 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36762 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36763 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER 36764 }, 36765 { /* page 164, index 49 */ 36766 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36767 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36768 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36769 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36770 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36771 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36772 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36773 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36774 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36775 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36776 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36777 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36778 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36779 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36780 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36781 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36782 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36783 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36784 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36785 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36786 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36787 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36788 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36789 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36790 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36791 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36792 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36793 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36794 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36795 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36796 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36797 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36798 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36799 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36800 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36801 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36802 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36803 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36804 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36805 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36806 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36807 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36808 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36809 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36810 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36811 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36812 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36813 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36814 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36815 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36816 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36817 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36818 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36819 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36820 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36821 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36822 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36823 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36824 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36825 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36826 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36827 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36828 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36829 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36830 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36831 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 36832 UNICODE_OTHER_SYMBOL, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36833 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36834 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36835 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36836 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36837 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36838 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36839 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36840 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36841 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36842 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36843 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36844 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36845 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36846 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36847 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36848 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36849 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 36850 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 36851 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 36852 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION 36853 }, 36854 { /* page 166, index 50 */ 36855 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36856 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36857 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36858 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36859 UNICODE_MODIFIER_LETTER, UNICODE_OTHER_PUNCTUATION, 36860 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 36861 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36862 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36863 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36864 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36865 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36866 UNICODE_OTHER_LETTER, UNICODE_DECIMAL_NUMBER, 36867 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 36868 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 36869 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 36870 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 36871 UNICODE_DECIMAL_NUMBER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36872 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36873 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36874 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36875 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36876 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36877 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36878 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UPPERCASE_LETTER, 36879 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 36880 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 36881 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 36882 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 36883 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 36884 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 36885 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 36886 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 36887 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 36888 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 36889 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 36890 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 36891 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 36892 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 36893 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 36894 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 36895 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 36896 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 36897 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 36898 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 36899 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 36900 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 36901 UNICODE_LOWERCASE_LETTER, UNICODE_OTHER_LETTER, 36902 UNICODE_NON_SPACING_MARK, UNICODE_ENCLOSING_MARK, 36903 UNICODE_ENCLOSING_MARK, UNICODE_ENCLOSING_MARK, 36904 UNICODE_OTHER_PUNCTUATION, UNICODE_NON_SPACING_MARK, 36905 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 36906 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 36907 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 36908 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 36909 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_PUNCTUATION, 36910 UNICODE_MODIFIER_LETTER, UNICODE_UPPERCASE_LETTER, 36911 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 36912 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 36913 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 36914 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 36915 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 36916 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 36917 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 36918 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 36919 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 36920 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 36921 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 36922 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 36923 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 36924 UNICODE_LOWERCASE_LETTER, UNICODE_MODIFIER_LETTER, 36925 UNICODE_MODIFIER_LETTER, UNICODE_NON_SPACING_MARK, 36926 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_LETTER, 36927 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36928 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36929 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36930 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36931 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36932 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36933 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36934 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36935 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36936 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36937 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36938 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36939 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36940 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36941 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36942 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36943 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36944 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36945 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36946 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36947 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36948 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36949 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 36950 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 36951 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 36952 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 36953 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 36954 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 36955 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 36956 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 36957 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 36958 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 36959 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36960 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 36961 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED 36962 }, 36963 { /* page 167, index 51 */ 36964 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 36965 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 36966 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 36967 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 36968 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 36969 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 36970 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 36971 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 36972 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 36973 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 36974 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 36975 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_LETTER, 36976 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 36977 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 36978 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 36979 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 36980 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 36981 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 36982 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 36983 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 36984 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 36985 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 36986 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 36987 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 36988 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 36989 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 36990 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 36991 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 36992 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 36993 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 36994 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 36995 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 36996 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 36997 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 36998 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 36999 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37000 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37001 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37002 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37003 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37004 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37005 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37006 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37007 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37008 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37009 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37010 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37011 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37012 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37013 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37014 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37015 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37016 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37017 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37018 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37019 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37020 UNICODE_MODIFIER_LETTER, UNICODE_LOWERCASE_LETTER, 37021 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37022 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37023 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37024 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 37025 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 37026 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 37027 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37028 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37029 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37030 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37031 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37032 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_SYMBOL, 37033 UNICODE_MODIFIER_SYMBOL, UNICODE_UPPERCASE_LETTER, 37034 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 37035 UNICODE_LOWERCASE_LETTER, UNICODE_OTHER_LETTER, 37036 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37037 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37038 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37039 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37040 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37041 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37042 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37043 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37044 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37045 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37046 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37047 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37048 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37049 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 37050 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 37051 UNICODE_UPPERCASE_LETTER, UNICODE_UNASSIGNED, 37052 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 37053 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 37054 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37055 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37056 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37057 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37058 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37059 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37060 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37061 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37062 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37063 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37064 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37065 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37066 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37067 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37068 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37069 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37070 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37071 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37072 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37073 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37074 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37075 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37076 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37077 UNICODE_OTHER_LETTER, UNICODE_MODIFIER_LETTER, 37078 UNICODE_MODIFIER_LETTER, UNICODE_LOWERCASE_LETTER, 37079 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37080 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER 37081 }, 37082 { /* page 168, index 52 */ 37083 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37084 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_LETTER, 37085 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37086 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_LETTER, 37087 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37088 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_LETTER, 37089 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37090 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37091 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37092 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37093 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37094 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37095 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37096 UNICODE_OTHER_LETTER, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 37097 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37098 UNICODE_SPACING_MARK, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 37099 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_UNASSIGNED, 37100 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37101 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 37102 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 37103 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 37104 UNICODE_CURRENCY_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_UNASSIGNED, 37105 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37106 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 37107 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37108 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37109 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37110 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37111 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37112 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37113 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37114 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37115 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37116 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37117 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37118 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37119 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37120 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37121 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37122 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37123 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37124 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 37125 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 37126 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37127 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37128 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_SPACING_MARK, 37129 UNICODE_SPACING_MARK, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37130 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37131 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37132 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37133 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37134 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37135 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37136 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37137 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37138 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37139 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37140 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37141 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37142 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37143 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37144 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37145 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37146 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 37147 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 37148 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 37149 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 37150 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 37151 UNICODE_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37152 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37153 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37154 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37155 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 37156 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 37157 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 37158 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 37159 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 37160 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, UNICODE_UNASSIGNED, 37161 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37162 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_NON_SPACING_MARK, 37163 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37164 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37165 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37166 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37167 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37168 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37169 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37170 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37171 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_LETTER, 37172 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37173 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37174 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 37175 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_LETTER, 37176 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_LETTER, 37177 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED 37178 }, 37179 { /* page 169, index 53 */ 37180 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 37181 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 37182 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 37183 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 37184 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 37185 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37186 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37187 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37188 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37189 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37190 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37191 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37192 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37193 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37194 UNICODE_OTHER_LETTER, UNICODE_NON_SPACING_MARK, 37195 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37196 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37197 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37198 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_PUNCTUATION, 37199 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_LETTER, 37200 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37201 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37202 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37203 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37204 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37205 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37206 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37207 UNICODE_OTHER_LETTER, UNICODE_NON_SPACING_MARK, 37208 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37209 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37210 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37211 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37212 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37213 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_UNASSIGNED, 37214 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37215 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37216 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37217 UNICODE_UNASSIGNED, UNICODE_OTHER_PUNCTUATION, 37218 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37219 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37220 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37221 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37222 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37223 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37224 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37225 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37226 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37227 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 37228 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_NON_SPACING_MARK, 37229 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37230 UNICODE_SPACING_MARK, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37231 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37232 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37233 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37234 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37235 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37236 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37237 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37238 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37239 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37240 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37241 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37242 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37243 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37244 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37245 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37246 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 37247 UNICODE_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37248 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37249 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 37250 UNICODE_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37251 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 37252 UNICODE_SPACING_MARK, UNICODE_OTHER_PUNCTUATION, 37253 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 37254 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 37255 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 37256 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 37257 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 37258 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 37259 UNICODE_UNASSIGNED, UNICODE_MODIFIER_LETTER, 37260 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 37261 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 37262 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 37263 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 37264 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, UNICODE_UNASSIGNED, 37265 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37266 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 37267 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37268 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37269 UNICODE_NON_SPACING_MARK, UNICODE_MODIFIER_LETTER, 37270 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37271 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37272 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37273 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 37274 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 37275 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 37276 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 37277 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 37278 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37279 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED 37280 }, 37281 { /* page 170, index 54 */ 37282 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37283 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37284 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37285 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37286 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37287 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37288 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37289 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37290 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37291 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37292 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37293 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37294 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37295 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37296 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37297 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37298 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37299 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 37300 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37301 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 37302 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37303 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37304 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37305 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37306 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37307 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_LETTER, 37308 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37309 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37310 UNICODE_OTHER_LETTER, UNICODE_NON_SPACING_MARK, 37311 UNICODE_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37312 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 37313 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 37314 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 37315 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 37316 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, UNICODE_UNASSIGNED, 37317 UNICODE_UNASSIGNED, UNICODE_OTHER_PUNCTUATION, 37318 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 37319 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_LETTER, 37320 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37321 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37322 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37323 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37324 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37325 UNICODE_MODIFIER_LETTER, UNICODE_OTHER_LETTER, 37326 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37327 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_SYMBOL, 37328 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_LETTER, 37329 UNICODE_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37330 UNICODE_SPACING_MARK, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37331 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37332 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37333 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37334 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37335 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37336 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37337 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37338 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37339 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37340 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37341 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37342 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37343 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37344 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37345 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37346 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37347 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_LETTER, 37348 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37349 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_LETTER, 37350 UNICODE_OTHER_LETTER, UNICODE_NON_SPACING_MARK, 37351 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_LETTER, 37352 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37353 UNICODE_OTHER_LETTER, UNICODE_NON_SPACING_MARK, 37354 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_LETTER, 37355 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 37356 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37357 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37358 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37359 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37360 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37361 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37362 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37363 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 37364 UNICODE_OTHER_LETTER, UNICODE_MODIFIER_LETTER, 37365 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 37366 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37367 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37368 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37369 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_SPACING_MARK, 37370 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37371 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 37372 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 37373 UNICODE_OTHER_LETTER, UNICODE_MODIFIER_LETTER, 37374 UNICODE_MODIFIER_LETTER, UNICODE_SPACING_MARK, 37375 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37376 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37377 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37378 UNICODE_UNASSIGNED 37379 }, 37380 { /* page 171, index 55 */ 37381 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37382 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37383 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37384 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37385 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37386 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 37387 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37388 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 37389 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37390 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37391 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 37392 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37393 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37394 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37395 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37396 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 37397 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37398 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37399 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37400 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37401 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37402 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37403 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37404 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37405 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37406 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37407 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37408 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37409 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37410 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37411 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37412 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37413 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37414 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37415 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37416 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37417 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37418 UNICODE_LOWERCASE_LETTER, UNICODE_MODIFIER_SYMBOL, 37419 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 37420 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 37421 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37422 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37423 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37424 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37425 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37426 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37427 UNICODE_UNASSIGNED, UNICODE_LOWERCASE_LETTER, 37428 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37429 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37430 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37431 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37432 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37433 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37434 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37435 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37436 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37437 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37438 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37439 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37440 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37441 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37442 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37443 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37444 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37445 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37446 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37447 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37448 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37449 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37450 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37451 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37452 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37453 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37454 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37455 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37456 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37457 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37458 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37459 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37460 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37461 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37462 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37463 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37464 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37465 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37466 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37467 UNICODE_LOWERCASE_LETTER, UNICODE_OTHER_LETTER, 37468 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37469 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37470 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37471 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37472 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37473 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37474 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37475 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37476 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37477 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37478 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37479 UNICODE_OTHER_LETTER, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 37480 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 37481 UNICODE_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37482 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 37483 UNICODE_OTHER_PUNCTUATION, UNICODE_SPACING_MARK, 37484 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37485 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 37486 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 37487 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 37488 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 37489 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, UNICODE_UNASSIGNED, 37490 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37491 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED 37492 }, 37493 { /* page 215, index 56 */ 37494 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37495 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37496 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37497 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37498 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37499 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37500 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37501 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37502 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37503 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37504 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37505 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37506 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37507 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37508 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37509 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37510 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37511 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37512 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37513 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37514 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37515 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37516 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37517 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37518 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37519 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37520 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37521 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37522 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37523 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37524 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37525 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37526 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37527 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37528 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37529 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37530 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37531 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37532 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37533 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37534 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37535 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37536 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37537 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37538 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37539 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37540 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37541 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37542 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37543 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37544 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37545 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37546 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37547 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37548 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 37549 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37550 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37551 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37552 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 37553 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37554 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37555 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37556 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37557 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37558 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37559 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37560 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37561 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 37562 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37563 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37564 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37565 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37566 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37567 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37568 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37569 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37570 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37571 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37572 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37573 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37574 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37575 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37576 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37577 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37578 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37579 UNICODE_UNASSIGNED 37580 }, 37581 { /* page 250, index 57 */ 37582 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37583 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37584 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37585 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37586 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37587 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37588 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37589 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37590 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37591 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37592 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37593 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37594 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37595 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37596 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37597 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37598 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37599 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37600 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37601 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37602 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37603 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37604 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37605 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37606 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37607 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37608 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37609 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37610 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37611 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37612 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37613 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37614 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37615 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37616 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37617 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37618 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 37619 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37620 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37621 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37622 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37623 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37624 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37625 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37626 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37627 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37628 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37629 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37630 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37631 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37632 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37633 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37634 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37635 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37636 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37637 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37638 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37639 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37640 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37641 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37642 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37643 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37644 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37645 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37646 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37647 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37648 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37649 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37650 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37651 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37652 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37653 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37654 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 37655 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37656 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37657 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37658 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37659 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37660 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37661 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37662 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37663 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37664 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37665 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37666 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37667 UNICODE_UNASSIGNED 37668 }, 37669 { /* page 251, index 58 */ 37670 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37671 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37672 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37673 UNICODE_LOWERCASE_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37674 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37675 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37676 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37677 UNICODE_UNASSIGNED, UNICODE_LOWERCASE_LETTER, 37678 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37679 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37680 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37681 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 37682 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_LETTER, 37683 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37684 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37685 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37686 UNICODE_MATH_SYMBOL, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37687 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37688 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37689 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37690 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 37691 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37692 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 37693 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 37694 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 37695 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 37696 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37697 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37698 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37699 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37700 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37701 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37702 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37703 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37704 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37705 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37706 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37707 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37708 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37709 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37710 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37711 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37712 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37713 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37714 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37715 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37716 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37717 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37718 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37719 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37720 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37721 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37722 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37723 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37724 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37725 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37726 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37727 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37728 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37729 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37730 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37731 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37732 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 37733 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 37734 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 37735 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 37736 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 37737 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 37738 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 37739 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 37740 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37741 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37742 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37743 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37744 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37745 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 37746 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37747 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37748 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37749 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37750 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37751 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37752 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37753 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37754 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37755 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37756 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37757 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37758 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37759 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37760 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER 37761 }, 37762 { /* page 253, index 59 */ 37763 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37764 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37765 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37766 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37767 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37768 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37769 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37770 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37771 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37772 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37773 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37774 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37775 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37776 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37777 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37778 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37779 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37780 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37781 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37782 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37783 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37784 UNICODE_CLOSE_PUNCTUATION, UNICODE_OPEN_PUNCTUATION, 37785 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37786 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37787 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37788 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37789 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37790 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37791 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37792 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37793 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37794 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37795 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37796 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37797 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37798 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37799 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37800 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37801 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37802 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37803 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37804 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37805 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37806 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37807 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37808 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37809 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37810 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37811 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 37812 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37813 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37814 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37815 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37816 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37817 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37818 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37819 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37820 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37821 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37822 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37823 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37824 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37825 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37826 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37827 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37828 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37829 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37830 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37831 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37832 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37833 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37834 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37835 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37836 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37837 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37838 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37839 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37840 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37841 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37842 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37843 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 37844 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37845 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37846 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37847 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37848 UNICODE_CURRENCY_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_UNASSIGNED, 37849 UNICODE_UNASSIGNED 37850 }, 37851 { /* page 254, index 60 */ 37852 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37853 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37854 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37855 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37856 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37857 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37858 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37859 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37860 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 37861 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 37862 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 37863 UNICODE_OTHER_PUNCTUATION, UNICODE_OPEN_PUNCTUATION, 37864 UNICODE_CLOSE_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 37865 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37866 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37867 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37868 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37869 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37870 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37871 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37872 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37873 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37874 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 37875 UNICODE_OTHER_PUNCTUATION, UNICODE_DASH_PUNCTUATION, 37876 UNICODE_DASH_PUNCTUATION, UNICODE_CONNECT_PUNCTUATION, 37877 UNICODE_CONNECT_PUNCTUATION, UNICODE_OPEN_PUNCTUATION, 37878 UNICODE_CLOSE_PUNCTUATION, UNICODE_OPEN_PUNCTUATION, 37879 UNICODE_CLOSE_PUNCTUATION, UNICODE_OPEN_PUNCTUATION, 37880 UNICODE_CLOSE_PUNCTUATION, UNICODE_OPEN_PUNCTUATION, 37881 UNICODE_CLOSE_PUNCTUATION, UNICODE_OPEN_PUNCTUATION, 37882 UNICODE_CLOSE_PUNCTUATION, UNICODE_OPEN_PUNCTUATION, 37883 UNICODE_CLOSE_PUNCTUATION, UNICODE_OPEN_PUNCTUATION, 37884 UNICODE_CLOSE_PUNCTUATION, UNICODE_OPEN_PUNCTUATION, 37885 UNICODE_CLOSE_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 37886 UNICODE_OTHER_PUNCTUATION, UNICODE_OPEN_PUNCTUATION, 37887 UNICODE_CLOSE_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 37888 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 37889 UNICODE_OTHER_PUNCTUATION, UNICODE_CONNECT_PUNCTUATION, 37890 UNICODE_CONNECT_PUNCTUATION, UNICODE_CONNECT_PUNCTUATION, 37891 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 37892 UNICODE_OTHER_PUNCTUATION, UNICODE_UNASSIGNED, 37893 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 37894 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 37895 UNICODE_DASH_PUNCTUATION, UNICODE_OPEN_PUNCTUATION, 37896 UNICODE_CLOSE_PUNCTUATION, UNICODE_OPEN_PUNCTUATION, 37897 UNICODE_CLOSE_PUNCTUATION, UNICODE_OPEN_PUNCTUATION, 37898 UNICODE_CLOSE_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 37899 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 37900 UNICODE_MATH_SYMBOL, UNICODE_DASH_PUNCTUATION, UNICODE_MATH_SYMBOL, 37901 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_UNASSIGNED, 37902 UNICODE_OTHER_PUNCTUATION, UNICODE_CURRENCY_SYMBOL, 37903 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 37904 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37905 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37906 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37907 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37908 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37909 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37910 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37911 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37912 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37913 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37914 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37915 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37916 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37917 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37918 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37919 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37920 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37921 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37922 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37923 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37924 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37925 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37926 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37927 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37928 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37929 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37930 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37931 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37932 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37933 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37934 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37935 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37936 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37937 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37938 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37939 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37940 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37941 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37942 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37943 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37944 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37945 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37946 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37947 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37948 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37949 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37950 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37951 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 37952 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 37953 UNICODE_FORMAT 37954 }, 37955 { /* page 255, index 61 */ 37956 UNICODE_UNASSIGNED, UNICODE_OTHER_PUNCTUATION, 37957 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 37958 UNICODE_CURRENCY_SYMBOL, UNICODE_OTHER_PUNCTUATION, 37959 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 37960 UNICODE_OPEN_PUNCTUATION, UNICODE_CLOSE_PUNCTUATION, 37961 UNICODE_OTHER_PUNCTUATION, UNICODE_MATH_SYMBOL, 37962 UNICODE_OTHER_PUNCTUATION, UNICODE_DASH_PUNCTUATION, 37963 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 37964 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 37965 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 37966 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 37967 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 37968 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 37969 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 37970 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 37971 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 37972 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 37973 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 37974 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 37975 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 37976 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 37977 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 37978 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 37979 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 37980 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 37981 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 37982 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 37983 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 37984 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 37985 UNICODE_OPEN_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 37986 UNICODE_CLOSE_PUNCTUATION, UNICODE_MODIFIER_SYMBOL, 37987 UNICODE_CONNECT_PUNCTUATION, UNICODE_MODIFIER_SYMBOL, 37988 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37989 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37990 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37991 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37992 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37993 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37994 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37995 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37996 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37997 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37998 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 37999 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 38000 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 38001 UNICODE_OPEN_PUNCTUATION, UNICODE_MATH_SYMBOL, 38002 UNICODE_CLOSE_PUNCTUATION, UNICODE_MATH_SYMBOL, 38003 UNICODE_OPEN_PUNCTUATION, UNICODE_CLOSE_PUNCTUATION, 38004 UNICODE_OTHER_PUNCTUATION, UNICODE_OPEN_PUNCTUATION, 38005 UNICODE_CLOSE_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 38006 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_LETTER, 38007 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38008 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38009 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38010 UNICODE_MODIFIER_LETTER, UNICODE_OTHER_LETTER, 38011 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38012 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38013 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38014 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38015 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38016 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38017 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38018 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38019 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38020 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38021 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38022 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38023 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38024 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38025 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38026 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 38027 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38028 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38029 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38030 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38031 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38032 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38033 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38034 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38035 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38036 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38037 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38038 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38039 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38040 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38041 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38042 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38043 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 38044 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38045 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 38046 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38047 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38048 UNICODE_UNASSIGNED, UNICODE_CURRENCY_SYMBOL, 38049 UNICODE_CURRENCY_SYMBOL, UNICODE_MATH_SYMBOL, 38050 UNICODE_MODIFIER_SYMBOL, UNICODE_OTHER_SYMBOL, 38051 UNICODE_CURRENCY_SYMBOL, UNICODE_CURRENCY_SYMBOL, 38052 UNICODE_UNASSIGNED, UNICODE_OTHER_SYMBOL, UNICODE_MATH_SYMBOL, 38053 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, 38054 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_UNASSIGNED, 38055 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38056 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38057 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38058 UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, 38059 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_UNASSIGNED, 38060 UNICODE_UNASSIGNED 38061 }, 38062 { /* page 256, index 62 */ 38063 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38064 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38065 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38066 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38067 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38068 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38069 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38070 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38071 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38072 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38073 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38074 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38075 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38076 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38077 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38078 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38079 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38080 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38081 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38082 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 38083 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 38084 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38085 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38086 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38087 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38088 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38089 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 38090 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38091 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38092 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38093 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38094 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38095 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38096 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38097 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38098 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38099 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38100 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38101 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38102 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38103 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38104 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38105 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 38106 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38107 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38108 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38109 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38110 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38111 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38112 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38113 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38114 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38115 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38116 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38117 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38118 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38119 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38120 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38121 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38122 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38123 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38124 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38125 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38126 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38127 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38128 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38129 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38130 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38131 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38132 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38133 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38134 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38135 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38136 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38137 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38138 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38139 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38140 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38141 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38142 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38143 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38144 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38145 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38146 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 38147 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38148 UNICODE_UNASSIGNED 38149 }, 38150 { /* page 257, index 63 */ 38151 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 38152 UNICODE_OTHER_PUNCTUATION, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38153 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_NUMBER, 38154 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38155 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38156 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38157 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38158 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38159 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38160 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38161 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38162 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38163 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38164 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38165 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38166 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38167 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38168 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_UNASSIGNED, 38169 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_SYMBOL, 38170 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 38171 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 38172 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_LETTER_NUMBER, 38173 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 38174 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 38175 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 38176 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 38177 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 38178 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 38179 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 38180 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 38181 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 38182 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 38183 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 38184 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 38185 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 38186 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 38187 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 38188 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 38189 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 38190 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 38191 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 38192 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 38193 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 38194 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 38195 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 38196 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 38197 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 38198 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, UNICODE_OTHER_NUMBER, 38199 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38200 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 38201 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 38202 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 38203 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 38204 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 38205 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_NUMBER, 38206 UNICODE_OTHER_NUMBER, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 38207 UNICODE_OTHER_SYMBOL, UNICODE_UNASSIGNED, UNICODE_OTHER_SYMBOL, 38208 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 38209 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 38210 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 38211 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_UNASSIGNED, 38212 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38213 UNICODE_OTHER_SYMBOL, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38214 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38215 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38216 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38217 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38218 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38219 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38220 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38221 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38222 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38223 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38224 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38225 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38226 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38227 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38228 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38229 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 38230 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 38231 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 38232 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 38233 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 38234 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 38235 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 38236 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 38237 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 38238 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 38239 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 38240 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 38241 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 38242 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 38243 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 38244 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED 38245 }, 38246 { /* page 258, index 64 */ 38247 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38248 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38249 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38250 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38251 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38252 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38253 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38254 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38255 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38256 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38257 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38258 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38259 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38260 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38261 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38262 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38263 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38264 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38265 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38266 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38267 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38268 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38269 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38270 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38271 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38272 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38273 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38274 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38275 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38276 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38277 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38278 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38279 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38280 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38281 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38282 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38283 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38284 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38285 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38286 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38287 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38288 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38289 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 38290 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38291 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38292 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38293 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38294 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38295 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38296 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38297 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38298 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38299 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38300 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38301 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38302 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38303 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38304 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38305 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38306 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38307 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38308 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38309 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38310 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38311 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38312 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38313 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38314 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38315 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38316 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 38317 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38318 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38319 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38320 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38321 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_NON_SPACING_MARK, 38322 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38323 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38324 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38325 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38326 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38327 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38328 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38329 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38330 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38331 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38332 UNICODE_UNASSIGNED 38333 }, 38334 { /* page 259, index 65 */ 38335 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38336 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38337 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38338 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38339 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38340 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38341 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38342 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38343 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38344 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38345 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_NUMBER, 38346 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38347 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38348 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38349 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38350 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38351 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38352 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38353 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38354 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38355 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38356 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_LETTER_NUMBER, 38357 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38358 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38359 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_LETTER_NUMBER, 38360 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38361 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 38362 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38363 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38364 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38365 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38366 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38367 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38368 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38369 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38370 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38371 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38372 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38373 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38374 UNICODE_OTHER_LETTER, UNICODE_NON_SPACING_MARK, 38375 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 38376 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 38377 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38378 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 38379 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38380 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38381 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38382 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38383 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38384 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38385 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38386 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38387 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38388 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 38389 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_LETTER, 38390 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38391 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38392 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38393 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38394 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38395 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38396 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38397 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38398 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38399 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38400 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38401 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 38402 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38403 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38404 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38405 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38406 UNICODE_OTHER_PUNCTUATION, UNICODE_LETTER_NUMBER, 38407 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 38408 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, UNICODE_UNASSIGNED, 38409 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38410 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38411 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38412 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38413 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38414 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38415 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38416 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38417 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38418 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38419 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38420 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38421 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38422 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED 38423 }, 38424 { /* page 260, index 66 */ 38425 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 38426 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 38427 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 38428 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 38429 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 38430 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 38431 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 38432 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 38433 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 38434 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 38435 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 38436 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 38437 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 38438 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 38439 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 38440 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 38441 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 38442 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 38443 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 38444 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 38445 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 38446 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 38447 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 38448 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 38449 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 38450 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 38451 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 38452 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 38453 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 38454 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 38455 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 38456 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 38457 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 38458 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 38459 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 38460 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 38461 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 38462 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 38463 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 38464 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 38465 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38466 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38467 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38468 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38469 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38470 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38471 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38472 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38473 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38474 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38475 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38476 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38477 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38478 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38479 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38480 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38481 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38482 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38483 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38484 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38485 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38486 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38487 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38488 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38489 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38490 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38491 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_DECIMAL_NUMBER, 38492 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 38493 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 38494 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 38495 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 38496 UNICODE_DECIMAL_NUMBER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38497 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38498 UNICODE_UNASSIGNED, UNICODE_UPPERCASE_LETTER, 38499 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 38500 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 38501 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 38502 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 38503 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 38504 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 38505 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 38506 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 38507 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 38508 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 38509 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 38510 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 38511 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 38512 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 38513 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 38514 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 38515 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 38516 UNICODE_UPPERCASE_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38517 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_LOWERCASE_LETTER, 38518 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 38519 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 38520 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 38521 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 38522 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 38523 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 38524 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 38525 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 38526 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 38527 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 38528 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 38529 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 38530 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 38531 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 38532 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 38533 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 38534 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 38535 UNICODE_LOWERCASE_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38536 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED 38537 }, 38538 { /* page 261, index 67 */ 38539 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38540 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38541 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38542 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38543 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38544 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38545 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38546 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38547 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38548 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38549 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38550 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38551 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38552 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38553 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38554 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38555 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38556 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38557 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38558 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38559 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38560 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38561 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38562 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38563 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38564 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38565 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38566 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38567 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38568 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38569 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38570 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38571 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38572 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38573 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38574 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38575 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38576 UNICODE_OTHER_PUNCTUATION, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38577 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38578 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38579 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38580 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38581 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38582 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38583 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38584 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38585 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38586 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38587 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38588 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38589 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38590 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38591 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38592 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38593 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38594 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38595 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38596 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38597 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38598 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38599 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38600 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38601 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38602 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38603 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38604 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38605 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38606 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38607 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38608 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38609 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38610 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38611 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38612 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38613 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38614 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38615 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38616 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38617 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38618 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38619 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38620 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38621 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38622 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38623 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38624 UNICODE_UNASSIGNED 38625 }, 38626 { /* page 263, index 68 */ 38627 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38628 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38629 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38630 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38631 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38632 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38633 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38634 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38635 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38636 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38637 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38638 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38639 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38640 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38641 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38642 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38643 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38644 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38645 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38646 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38647 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38648 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38649 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38650 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38651 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38652 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38653 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38654 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38655 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 38656 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38657 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38658 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38659 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38660 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38661 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 38662 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38663 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38664 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38665 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38666 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38667 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38668 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38669 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38670 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38671 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38672 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38673 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38674 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38675 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38676 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38677 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38678 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38679 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38680 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38681 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38682 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38683 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38684 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38685 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38686 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38687 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38688 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38689 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38690 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38691 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38692 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38693 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38694 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38695 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38696 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38697 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38698 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38699 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38700 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38701 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38702 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38703 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38704 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38705 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38706 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38707 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38708 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38709 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38710 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38711 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38712 UNICODE_UNASSIGNED 38713 }, 38714 { /* page 264, index 69 */ 38715 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38716 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38717 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 38718 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38719 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38720 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38721 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38722 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38723 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38724 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38725 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38726 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38727 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38728 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38729 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38730 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38731 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38732 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38733 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38734 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38735 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38736 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38737 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38738 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38739 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38740 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38741 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38742 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38743 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 38744 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_NUMBER, 38745 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38746 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38747 UNICODE_OTHER_NUMBER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38748 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38749 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38750 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38751 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38752 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38753 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38754 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38755 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_NUMBER, 38756 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38757 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38758 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38759 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38760 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38761 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38762 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38763 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38764 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38765 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38766 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38767 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38768 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38769 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38770 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38771 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38772 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38773 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38774 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38775 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38776 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38777 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38778 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38779 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38780 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38781 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38782 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38783 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38784 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38785 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38786 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38787 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38788 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38789 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38790 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38791 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38792 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38793 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38794 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38795 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38796 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 38797 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38798 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38799 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38800 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER 38801 }, 38802 { /* page 265, index 70 */ 38803 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38804 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38805 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38806 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38807 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38808 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38809 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38810 UNICODE_OTHER_LETTER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38811 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38812 UNICODE_OTHER_NUMBER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38813 UNICODE_UNASSIGNED, UNICODE_OTHER_PUNCTUATION, 38814 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38815 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38816 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38817 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38818 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38819 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38820 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38821 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38822 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 38823 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38824 UNICODE_UNASSIGNED, UNICODE_OTHER_PUNCTUATION, UNICODE_UNASSIGNED, 38825 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38826 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38827 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38828 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38829 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38830 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38831 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38832 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38833 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38834 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38835 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38836 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38837 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38838 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38839 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38840 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38841 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38842 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38843 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38844 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38845 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38846 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38847 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38848 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38849 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38850 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38851 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38852 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38853 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38854 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38855 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38856 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38857 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38858 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38859 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38860 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38861 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38862 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38863 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38864 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 38865 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38866 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_LETTER, 38867 UNICODE_OTHER_LETTER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38868 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38869 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38870 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38871 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38872 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_UNASSIGNED, 38873 UNICODE_UNASSIGNED, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38874 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38875 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38876 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38877 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38878 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38879 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38880 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38881 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38882 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38883 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38884 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38885 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38886 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38887 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38888 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER 38889 }, 38890 { /* page 266, index 71 */ 38891 UNICODE_OTHER_LETTER, UNICODE_NON_SPACING_MARK, 38892 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 38893 UNICODE_UNASSIGNED, UNICODE_NON_SPACING_MARK, 38894 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38895 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38896 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 38897 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 38898 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38899 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 38900 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 38901 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38902 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38903 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38904 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38905 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38906 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38907 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38908 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38909 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38910 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38911 UNICODE_UNASSIGNED, UNICODE_NON_SPACING_MARK, 38912 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 38913 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38914 UNICODE_UNASSIGNED, UNICODE_NON_SPACING_MARK, UNICODE_OTHER_NUMBER, 38915 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38916 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38917 UNICODE_OTHER_NUMBER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38918 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38919 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38920 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 38921 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 38922 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 38923 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 38924 UNICODE_OTHER_PUNCTUATION, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38925 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38926 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 38927 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38928 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38929 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38930 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38931 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38932 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38933 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38934 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38935 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38936 UNICODE_OTHER_LETTER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38937 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_LETTER, 38938 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38939 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38940 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38941 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38942 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38943 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38944 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38945 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38946 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38947 UNICODE_OTHER_LETTER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38948 UNICODE_OTHER_NUMBER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38949 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38950 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38951 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38952 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38953 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38954 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38955 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38956 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38957 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38958 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38959 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38960 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38961 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_SYMBOL, 38962 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38963 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38964 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38965 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38966 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38967 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38968 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38969 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38970 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38971 UNICODE_OTHER_LETTER, UNICODE_NON_SPACING_MARK, 38972 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38973 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_NUMBER, 38974 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 38975 UNICODE_OTHER_NUMBER, UNICODE_OTHER_PUNCTUATION, 38976 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 38977 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 38978 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 38979 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38980 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 38981 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED 38982 }, 38983 { /* page 267, index 72 */ 38984 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38985 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38986 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38987 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38988 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38989 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38990 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38991 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38992 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38993 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38994 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38995 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38996 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38997 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38998 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 38999 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39000 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39001 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39002 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39003 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 39004 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 39005 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 39006 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_LETTER, 39007 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39008 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39009 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39010 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39011 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39012 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39013 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39014 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_NUMBER, 39015 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 39016 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 39017 UNICODE_OTHER_NUMBER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39018 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39019 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39020 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39021 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39022 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39023 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 39024 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39025 UNICODE_UNASSIGNED, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 39026 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 39027 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 39028 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39029 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39030 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39031 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39032 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39033 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39034 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39035 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39036 UNICODE_UNASSIGNED, UNICODE_OTHER_PUNCTUATION, 39037 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 39038 UNICODE_OTHER_PUNCTUATION, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39039 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39040 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39041 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39042 UNICODE_UNASSIGNED, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 39043 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 39044 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_UNASSIGNED, 39045 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39046 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39047 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39048 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39049 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39050 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39051 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39052 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39053 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39054 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39055 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39056 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39057 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39058 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39059 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39060 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39061 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39062 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39063 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39064 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39065 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39066 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39067 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39068 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39069 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39070 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39071 UNICODE_UNASSIGNED 39072 }, 39073 { /* page 268, index 73 */ 39074 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39075 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39076 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39077 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39078 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39079 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39080 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39081 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39082 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39083 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39084 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39085 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39086 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39087 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39088 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39089 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39090 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39091 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39092 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39093 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39094 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39095 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39096 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39097 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39098 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39099 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39100 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39101 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39102 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39103 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39104 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39105 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39106 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39107 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39108 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39109 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39110 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39111 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39112 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39113 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39114 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39115 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39116 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UPPERCASE_LETTER, 39117 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 39118 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 39119 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 39120 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 39121 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 39122 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 39123 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 39124 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 39125 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 39126 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 39127 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 39128 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 39129 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 39130 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 39131 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 39132 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 39133 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 39134 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 39135 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 39136 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 39137 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 39138 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 39139 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 39140 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 39141 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 39142 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39143 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39144 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39145 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39146 UNICODE_UNASSIGNED, UNICODE_LOWERCASE_LETTER, 39147 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 39148 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 39149 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 39150 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 39151 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 39152 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 39153 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 39154 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 39155 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 39156 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 39157 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 39158 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 39159 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 39160 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 39161 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 39162 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 39163 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 39164 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 39165 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 39166 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 39167 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 39168 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 39169 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 39170 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 39171 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 39172 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39173 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39174 UNICODE_UNASSIGNED, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 39175 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 39176 UNICODE_OTHER_NUMBER 39177 }, 39178 { /* page 270, index 74 */ 39179 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39180 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39181 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39182 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39183 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39184 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39185 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39186 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39187 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39188 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39189 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39190 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39191 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39192 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39193 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39194 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39195 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39196 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39197 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39198 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39199 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39200 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39201 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39202 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39203 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39204 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39205 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39206 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39207 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39208 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39209 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39210 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39211 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 39212 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 39213 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 39214 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 39215 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 39216 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 39217 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 39218 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 39219 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 39220 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 39221 UNICODE_OTHER_NUMBER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39222 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39223 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39224 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39225 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39226 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39227 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39228 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39229 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39230 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39231 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39232 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39233 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39234 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39235 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39236 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39237 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39238 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39239 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39240 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39241 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39242 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39243 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39244 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39245 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39246 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39247 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39248 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39249 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39250 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39251 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39252 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39253 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39254 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39255 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39256 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39257 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39258 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39259 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39260 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39261 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39262 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39263 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39264 UNICODE_UNASSIGNED 39265 }, 39266 { /* page 272, index 75 */ 39267 UNICODE_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39268 UNICODE_SPACING_MARK, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39269 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39270 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39271 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39272 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39273 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39274 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39275 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39276 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39277 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39278 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39279 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39280 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39281 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39282 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39283 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39284 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39285 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39286 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39287 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39288 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39289 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39290 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39291 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39292 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39293 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_PUNCTUATION, 39294 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 39295 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 39296 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 39297 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39298 UNICODE_UNASSIGNED, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 39299 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 39300 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 39301 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 39302 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 39303 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 39304 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 39305 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39306 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39307 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39308 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39309 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, UNICODE_UNASSIGNED, 39310 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39311 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39312 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39313 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39314 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_NON_SPACING_MARK, 39315 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39316 UNICODE_SPACING_MARK, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39317 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39318 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39319 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39320 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39321 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39322 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39323 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39324 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39325 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39326 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39327 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39328 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39329 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39330 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39331 UNICODE_OTHER_LETTER, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 39332 UNICODE_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39333 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39334 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 39335 UNICODE_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39336 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_PUNCTUATION, 39337 UNICODE_OTHER_PUNCTUATION, UNICODE_FORMAT, 39338 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 39339 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 39340 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39341 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39342 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39343 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39344 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 39345 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39346 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39347 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39348 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39349 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39350 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39351 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39352 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39353 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39354 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39355 UNICODE_UNASSIGNED, UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39356 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39357 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39358 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39359 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, UNICODE_UNASSIGNED, 39360 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39361 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED 39362 }, 39363 { /* page 273, index 76 */ 39364 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39365 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_LETTER, 39366 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39367 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39368 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39369 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39370 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39371 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39372 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39373 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39374 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39375 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39376 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39377 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39378 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39379 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39380 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 39381 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39382 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39383 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39384 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39385 UNICODE_UNASSIGNED, UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39386 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39387 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39388 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39389 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39390 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 39391 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 39392 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39393 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39394 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39395 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39396 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39397 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39398 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39399 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39400 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39401 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39402 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39403 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39404 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39405 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39406 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39407 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39408 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_PUNCTUATION, 39409 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_LETTER, 39410 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39411 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39412 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39413 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39414 UNICODE_SPACING_MARK, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39415 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39416 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39417 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39418 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39419 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39420 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39421 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39422 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39423 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39424 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39425 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39426 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39427 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39428 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39429 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39430 UNICODE_OTHER_LETTER, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 39431 UNICODE_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39432 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39433 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39434 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39435 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39436 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_OTHER_LETTER, 39437 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39438 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 39439 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 39440 UNICODE_OTHER_PUNCTUATION, UNICODE_NON_SPACING_MARK, 39441 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39442 UNICODE_OTHER_PUNCTUATION, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39443 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39444 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39445 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39446 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39447 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39448 UNICODE_OTHER_LETTER, UNICODE_OTHER_PUNCTUATION, 39449 UNICODE_OTHER_LETTER, UNICODE_OTHER_PUNCTUATION, 39450 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 39451 UNICODE_UNASSIGNED, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 39452 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 39453 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 39454 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 39455 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 39456 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 39457 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 39458 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39459 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39460 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39461 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED 39462 }, 39463 { /* page 274, index 77 */ 39464 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39465 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39466 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39467 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39468 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39469 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39470 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39471 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39472 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39473 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39474 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39475 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39476 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39477 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39478 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_SPACING_MARK, 39479 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 39480 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39481 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 39482 UNICODE_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39483 UNICODE_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39484 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_PUNCTUATION, 39485 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 39486 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 39487 UNICODE_OTHER_PUNCTUATION, UNICODE_NON_SPACING_MARK, 39488 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39489 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39490 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39491 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39492 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39493 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39494 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39495 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39496 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39497 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39498 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39499 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39500 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39501 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39502 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39503 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39504 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39505 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39506 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39507 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39508 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39509 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 39510 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39511 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39512 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 39513 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39514 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 39515 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39516 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39517 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39518 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39519 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 39520 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39521 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39522 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39523 UNICODE_OTHER_LETTER, UNICODE_OTHER_PUNCTUATION, 39524 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39525 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39526 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39527 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39528 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39529 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39530 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39531 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39532 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39533 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39534 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39535 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39536 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39537 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39538 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39539 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39540 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39541 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39542 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 39543 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 39544 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39545 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39546 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39547 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39548 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39549 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_DECIMAL_NUMBER, 39550 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39551 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39552 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39553 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39554 UNICODE_DECIMAL_NUMBER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39555 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39556 UNICODE_UNASSIGNED 39557 }, 39558 { /* page 275, index 78 */ 39559 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39560 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_UNASSIGNED, 39561 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39562 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39563 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 39564 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39565 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 39566 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39567 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39568 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39569 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39570 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39571 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39572 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39573 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39574 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39575 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 39576 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 39577 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39578 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 39579 UNICODE_UNASSIGNED, UNICODE_NON_SPACING_MARK, UNICODE_OTHER_LETTER, 39580 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 39581 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 39582 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 39583 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_SPACING_MARK, 39584 UNICODE_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39585 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 39586 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 39587 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39588 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39589 UNICODE_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39590 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39591 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39592 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_SPACING_MARK, 39593 UNICODE_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39594 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39595 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39596 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39597 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39598 UNICODE_UNASSIGNED, UNICODE_NON_SPACING_MARK, 39599 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39600 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39601 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39602 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39603 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39604 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39605 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39606 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39607 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39608 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39609 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39610 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39611 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39612 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39613 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39614 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39615 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39616 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39617 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39618 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39619 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39620 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39621 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39622 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39623 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39624 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39625 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39626 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39627 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39628 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39629 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39630 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39631 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39632 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39633 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39634 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39635 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39636 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39637 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39638 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39639 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39640 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39641 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39642 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39643 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39644 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39645 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39646 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39647 UNICODE_UNASSIGNED 39648 }, 39649 { /* page 276, index 79 */ 39650 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39651 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39652 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39653 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39654 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39655 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39656 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39657 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39658 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39659 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39660 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39661 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39662 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39663 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39664 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39665 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39666 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39667 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_SPACING_MARK, 39668 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 39669 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39670 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39671 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39672 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39673 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 39674 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39675 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 39676 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_LETTER, 39677 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39678 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 39679 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 39680 UNICODE_OTHER_PUNCTUATION, UNICODE_DECIMAL_NUMBER, 39681 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39682 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39683 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39684 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39685 UNICODE_DECIMAL_NUMBER, UNICODE_UNASSIGNED, 39686 UNICODE_OTHER_PUNCTUATION, UNICODE_UNASSIGNED, 39687 UNICODE_OTHER_PUNCTUATION, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39688 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39689 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39690 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39691 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39692 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39693 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39694 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39695 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39696 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39697 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39698 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 39699 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39700 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39701 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39702 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39703 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39704 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39705 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39706 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39707 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39708 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39709 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39710 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39711 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39712 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39713 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39714 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_SPACING_MARK, 39715 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 39716 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39717 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39718 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39719 UNICODE_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39720 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 39721 UNICODE_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39722 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 39723 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39724 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39725 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_LETTER, 39726 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39727 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39728 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_DECIMAL_NUMBER, 39729 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39730 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39731 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39732 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39733 UNICODE_DECIMAL_NUMBER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39734 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39735 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39736 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39737 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39738 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39739 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39740 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39741 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39742 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39743 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39744 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39745 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED 39746 }, 39747 { /* page 277, index 80 */ 39748 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39749 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39750 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39751 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39752 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39753 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39754 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39755 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39756 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39757 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39758 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39759 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39760 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39761 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39762 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39763 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39764 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39765 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39766 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39767 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39768 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39769 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39770 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39771 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39772 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39773 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39774 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39775 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39776 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39777 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39778 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39779 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39780 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39781 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39782 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39783 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39784 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39785 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39786 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39787 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39788 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39789 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39790 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 39791 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39792 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39793 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39794 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39795 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39796 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39797 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39798 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39799 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39800 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39801 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39802 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39803 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39804 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39805 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39806 UNICODE_OTHER_LETTER, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 39807 UNICODE_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39808 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39809 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39810 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 39811 UNICODE_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39812 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 39813 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39814 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 39815 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 39816 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 39817 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 39818 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 39819 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 39820 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 39821 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 39822 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 39823 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 39824 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 39825 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_LETTER, 39826 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39827 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39828 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39829 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39830 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39831 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39832 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39833 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39834 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39835 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39836 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39837 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39838 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39839 UNICODE_UNASSIGNED 39840 }, 39841 { /* page 278, index 81 */ 39842 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39843 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39844 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39845 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39846 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39847 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39848 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39849 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39850 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39851 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39852 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39853 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39854 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39855 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39856 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39857 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39858 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 39859 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39860 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39861 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39862 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39863 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 39864 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 39865 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39866 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 39867 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_LETTER, 39868 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39869 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39870 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39871 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_DECIMAL_NUMBER, 39872 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39873 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39874 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39875 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39876 UNICODE_DECIMAL_NUMBER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39877 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39878 UNICODE_UNASSIGNED, UNICODE_OTHER_PUNCTUATION, 39879 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 39880 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 39881 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 39882 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 39883 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 39884 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 39885 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39886 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39887 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39888 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39889 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39890 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39891 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39892 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39893 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39894 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39895 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39896 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39897 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39898 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39899 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39900 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39901 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39902 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39903 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39904 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39905 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39906 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 39907 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 39908 UNICODE_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39909 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39910 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39911 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 39912 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39913 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39914 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39915 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39916 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39917 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39918 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39919 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, UNICODE_UNASSIGNED, 39920 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39921 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39922 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39923 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39924 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39925 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39926 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39927 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39928 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39929 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39930 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39931 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39932 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39933 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39934 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39935 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39936 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39937 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED 39938 }, 39939 { /* page 279, index 82 */ 39940 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39941 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39942 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39943 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39944 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39945 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39946 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39947 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 39948 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 39949 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_NON_SPACING_MARK, 39950 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39951 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 39952 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39953 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39954 UNICODE_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39955 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39956 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 39957 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39958 UNICODE_UNASSIGNED, UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39959 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39960 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39961 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39962 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 39963 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 39964 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 39965 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_SYMBOL, 39966 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39967 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39968 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39969 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39970 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39971 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39972 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39973 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39974 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39975 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39976 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39977 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39978 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39979 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39980 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39981 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39982 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39983 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39984 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39985 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39986 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39987 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39988 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39989 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39990 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39991 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39992 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39993 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39994 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39995 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39996 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39997 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39998 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 39999 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40000 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40001 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40002 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40003 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40004 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40005 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40006 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40007 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40008 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40009 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40010 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40011 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40012 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40013 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40014 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40015 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40016 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40017 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40018 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40019 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40020 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40021 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40022 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40023 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40024 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40025 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40026 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40027 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40028 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40029 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED 40030 }, 40031 { /* page 280, index 83 */ 40032 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40033 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40034 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40035 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40036 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40037 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40038 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40039 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40040 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40041 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40042 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40043 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40044 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40045 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40046 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40047 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40048 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40049 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40050 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40051 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40052 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40053 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40054 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40055 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40056 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40057 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40058 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40059 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40060 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40061 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40062 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40063 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40064 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40065 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40066 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40067 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40068 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40069 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40070 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40071 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40072 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40073 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40074 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40075 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40076 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40077 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40078 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40079 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40080 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40081 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40082 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40083 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40084 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40085 UNICODE_UNASSIGNED, UNICODE_UPPERCASE_LETTER, 40086 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 40087 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 40088 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 40089 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 40090 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 40091 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 40092 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 40093 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 40094 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 40095 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 40096 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 40097 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 40098 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 40099 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 40100 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 40101 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 40102 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 40103 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 40104 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 40105 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 40106 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 40107 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 40108 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 40109 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 40110 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 40111 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 40112 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 40113 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 40114 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 40115 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 40116 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 40117 UNICODE_LOWERCASE_LETTER, UNICODE_DECIMAL_NUMBER, 40118 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 40119 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 40120 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 40121 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 40122 UNICODE_DECIMAL_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 40123 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 40124 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 40125 UNICODE_OTHER_NUMBER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40126 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40127 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40128 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40129 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER 40130 }, 40131 { /* page 282, index 84 */ 40132 UNICODE_OTHER_LETTER, UNICODE_NON_SPACING_MARK, 40133 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40134 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40135 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 40136 UNICODE_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40137 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_LETTER, 40138 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40139 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40140 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40141 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40142 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40143 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40144 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40145 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40146 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40147 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40148 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40149 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40150 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40151 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40152 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40153 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40154 UNICODE_SPACING_MARK, UNICODE_OTHER_LETTER, 40155 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40156 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40157 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 40158 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 40159 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 40160 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 40161 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40162 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40163 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40164 UNICODE_OTHER_LETTER, UNICODE_NON_SPACING_MARK, 40165 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40166 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40167 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 40168 UNICODE_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40169 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40170 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40171 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40172 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40173 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40174 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40175 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40176 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40177 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40178 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40179 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40180 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40181 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40182 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40183 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40184 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40185 UNICODE_OTHER_LETTER, UNICODE_NON_SPACING_MARK, 40186 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40187 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40188 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40189 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40190 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40191 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40192 UNICODE_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40193 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_PUNCTUATION, 40194 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 40195 UNICODE_UNASSIGNED, UNICODE_OTHER_PUNCTUATION, 40196 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 40197 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 40198 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40199 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40200 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40201 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40202 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40203 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40204 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40205 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40206 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40207 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 40208 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40209 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40210 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40211 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40212 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40213 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40214 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40215 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40216 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40217 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40218 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40219 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40220 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40221 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40222 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40223 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40224 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40225 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40226 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 40227 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40228 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED 40229 }, 40230 { /* page 284, index 85 */ 40231 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40232 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40233 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40234 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40235 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40236 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40237 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40238 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40239 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40240 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40241 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40242 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40243 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40244 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40245 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40246 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_SPACING_MARK, 40247 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40248 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40249 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40250 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, 40251 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40252 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40253 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40254 UNICODE_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40255 UNICODE_OTHER_LETTER, UNICODE_OTHER_PUNCTUATION, 40256 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 40257 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 40258 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40259 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40260 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40261 UNICODE_UNASSIGNED, UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 40262 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 40263 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 40264 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 40265 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 40266 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 40267 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 40268 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 40269 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 40270 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 40271 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 40272 UNICODE_OTHER_NUMBER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40273 UNICODE_UNASSIGNED, UNICODE_OTHER_PUNCTUATION, 40274 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_LETTER, 40275 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40276 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40277 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40278 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40279 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40280 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40281 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40282 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40283 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40284 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 40285 UNICODE_UNASSIGNED, UNICODE_NON_SPACING_MARK, 40286 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40287 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40288 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40289 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40290 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40291 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40292 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40293 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40294 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40295 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40296 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_SPACING_MARK, 40297 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40298 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40299 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40300 UNICODE_NON_SPACING_MARK, UNICODE_SPACING_MARK, 40301 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40302 UNICODE_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40303 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40304 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40305 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40306 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40307 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40308 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40309 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40310 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40311 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40312 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40313 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40314 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40315 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40316 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40317 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40318 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40319 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40320 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40321 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40322 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40323 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40324 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40325 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40326 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40327 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED 40328 }, 40329 { /* page 285, index 86 */ 40330 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40331 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40332 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 40333 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 40334 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40335 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40336 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40337 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40338 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40339 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40340 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40341 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40342 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40343 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40344 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40345 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40346 UNICODE_OTHER_LETTER, UNICODE_NON_SPACING_MARK, 40347 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40348 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40349 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40350 UNICODE_UNASSIGNED, UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, 40351 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40352 UNICODE_UNASSIGNED, UNICODE_NON_SPACING_MARK, 40353 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40354 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40355 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40356 UNICODE_OTHER_LETTER, UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, 40357 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40358 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40359 UNICODE_UNASSIGNED, UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 40360 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 40361 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 40362 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 40363 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, UNICODE_UNASSIGNED, 40364 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40365 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40366 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40367 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40368 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40369 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40370 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40371 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40372 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40373 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40374 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40375 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40376 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40377 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40378 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40379 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40380 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40381 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40382 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40383 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40384 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40385 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40386 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40387 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40388 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40389 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40390 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40391 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40392 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40393 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40394 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40395 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40396 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40397 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40398 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40399 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40400 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40401 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40402 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40403 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40404 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40405 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40406 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40407 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40408 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40409 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40410 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40411 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40412 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40413 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40414 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40415 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40416 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40417 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40418 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED 40419 }, 40420 { /* page 291, index 87 */ 40421 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40422 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40423 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40424 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40425 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40426 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40427 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40428 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40429 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40430 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40431 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40432 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40433 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40434 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40435 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40436 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40437 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40438 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40439 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40440 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40441 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40442 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40443 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40444 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40445 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40446 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40447 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40448 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40449 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40450 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40451 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40452 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40453 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40454 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40455 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40456 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40457 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40458 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40459 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40460 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40461 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40462 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40463 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40464 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40465 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40466 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40467 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40468 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40469 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40470 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40471 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40472 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40473 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40474 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40475 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40476 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40477 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40478 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40479 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40480 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40481 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40482 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40483 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40484 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40485 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40486 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40487 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40488 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40489 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40490 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40491 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40492 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40493 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40494 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40495 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40496 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40497 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40498 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40499 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40500 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40501 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40502 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40503 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40504 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40505 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40506 UNICODE_UNASSIGNED 40507 }, 40508 { /* page 292, index 88 */ 40509 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40510 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40511 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40512 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40513 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40514 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40515 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40516 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40517 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40518 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40519 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40520 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40521 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40522 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40523 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40524 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40525 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40526 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40527 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40528 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40529 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40530 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40531 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40532 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40533 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40534 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40535 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40536 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40537 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40538 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40539 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40540 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40541 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40542 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40543 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40544 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40545 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40546 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40547 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40548 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40549 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40550 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40551 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40552 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40553 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40554 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40555 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40556 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40557 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40558 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40559 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40560 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40561 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40562 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40563 UNICODE_LETTER_NUMBER, UNICODE_LETTER_NUMBER, 40564 UNICODE_LETTER_NUMBER, UNICODE_UNASSIGNED, 40565 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 40566 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 40567 UNICODE_OTHER_PUNCTUATION, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40568 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40569 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40570 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40571 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40572 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40573 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40574 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40575 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40576 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40577 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40578 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40579 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40580 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40581 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40582 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40583 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40584 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40585 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40586 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40587 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40588 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40589 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40590 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40591 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40592 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40593 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40594 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40595 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40596 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40597 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40598 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40599 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40600 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40601 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40602 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40603 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40604 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40605 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40606 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40607 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40608 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40609 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40610 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40611 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40612 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40613 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER 40614 }, 40615 { /* page 293, index 89 */ 40616 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40617 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40618 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40619 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40620 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40621 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40622 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40623 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40624 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40625 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40626 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40627 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40628 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40629 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40630 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40631 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40632 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40633 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40634 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40635 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40636 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40637 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40638 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 40639 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40640 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40641 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40642 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40643 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40644 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40645 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40646 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40647 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40648 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40649 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40650 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40651 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40652 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40653 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40654 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40655 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40656 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40657 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40658 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40659 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40660 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40661 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40662 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40663 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40664 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40665 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40666 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40667 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40668 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40669 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40670 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40671 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40672 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40673 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40674 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40675 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40676 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40677 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40678 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40679 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40680 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40681 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40682 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40683 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40684 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40685 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40686 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40687 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40688 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40689 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40690 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40691 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40692 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40693 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40694 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40695 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40696 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40697 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40698 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40699 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40700 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40701 UNICODE_UNASSIGNED 40702 }, 40703 { /* page 308, index 90 */ 40704 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40705 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40706 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40707 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40708 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40709 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40710 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40711 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40712 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40713 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40714 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40715 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40716 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40717 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40718 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40719 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 40720 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40721 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40722 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40723 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40724 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40725 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40726 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40727 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40728 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40729 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40730 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40731 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40732 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40733 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40734 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40735 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40736 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40737 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40738 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40739 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40740 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40741 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40742 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40743 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40744 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40745 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40746 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40747 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40748 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40749 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40750 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40751 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40752 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40753 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40754 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40755 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40756 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40757 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40758 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40759 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40760 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40761 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40762 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40763 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40764 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40765 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40766 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40767 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40768 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40769 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40770 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40771 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40772 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40773 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40774 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40775 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40776 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40777 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40778 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40779 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40780 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40781 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40782 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40783 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40784 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40785 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40786 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40787 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40788 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40789 UNICODE_UNASSIGNED 40790 }, 40791 { /* page 326, index 91 */ 40792 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40793 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40794 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40795 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40796 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40797 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40798 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40799 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40800 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40801 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40802 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40803 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40804 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40805 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40806 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40807 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40808 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40809 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40810 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40811 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40812 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40813 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40814 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40815 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 40816 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40817 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40818 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40819 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40820 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40821 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40822 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40823 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40824 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40825 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40826 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40827 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40828 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40829 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40830 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40831 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40832 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40833 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40834 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40835 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40836 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40837 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40838 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40839 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40840 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40841 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40842 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40843 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40844 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40845 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40846 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40847 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40848 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40849 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40850 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40851 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40852 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40853 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40854 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40855 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40856 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40857 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40858 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40859 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40860 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40861 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40862 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40863 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40864 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40865 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40866 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40867 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40868 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40869 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40870 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40871 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40872 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40873 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40874 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40875 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40876 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40877 UNICODE_UNASSIGNED 40878 }, 40879 { /* page 362, index 92 */ 40880 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40881 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40882 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40883 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40884 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40885 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40886 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40887 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40888 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40889 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40890 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40891 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40892 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40893 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40894 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40895 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40896 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40897 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40898 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40899 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40900 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40901 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40902 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40903 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40904 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40905 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40906 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40907 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40908 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40909 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40910 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40911 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 40912 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 40913 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 40914 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 40915 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 40916 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, UNICODE_UNASSIGNED, 40917 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40918 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 40919 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40920 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40921 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40922 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40923 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40924 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40925 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40926 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40927 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40928 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40929 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40930 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40931 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40932 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40933 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40934 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40935 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40936 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40937 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40938 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40939 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40940 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40941 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40942 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40943 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40944 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40945 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40946 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40947 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40948 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40949 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40950 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40951 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40952 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40953 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40954 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40955 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40956 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40957 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40958 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40959 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40960 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40961 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_NON_SPACING_MARK, 40962 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40963 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40964 UNICODE_OTHER_PUNCTUATION, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40965 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40966 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40967 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED 40968 }, 40969 { /* page 363, index 93 */ 40970 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40971 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40972 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40973 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40974 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40975 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40976 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40977 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40978 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40979 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40980 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40981 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40982 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40983 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40984 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40985 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 40986 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40987 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40988 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 40989 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_PUNCTUATION, 40990 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 40991 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 40992 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 40993 UNICODE_OTHER_SYMBOL, UNICODE_MODIFIER_LETTER, 40994 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 40995 UNICODE_MODIFIER_LETTER, UNICODE_OTHER_PUNCTUATION, 40996 UNICODE_OTHER_SYMBOL, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40997 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40998 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 40999 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_DECIMAL_NUMBER, 41000 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 41001 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 41002 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 41003 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 41004 UNICODE_DECIMAL_NUMBER, UNICODE_UNASSIGNED, UNICODE_OTHER_NUMBER, 41005 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 41006 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 41007 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41008 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41009 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41010 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41011 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41012 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41013 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41014 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41015 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41016 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41017 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41018 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41019 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41020 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41021 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41022 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41023 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41024 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41025 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41026 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41027 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41028 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41029 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41030 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41031 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41032 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41033 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41034 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41035 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41036 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41037 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41038 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41039 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41040 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41041 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41042 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41043 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41044 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41045 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41046 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41047 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41048 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41049 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41050 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41051 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41052 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41053 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41054 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41055 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41056 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41057 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41058 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41059 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED 41060 }, 41061 { /* page 367, index 94 */ 41062 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41063 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41064 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41065 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41066 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41067 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41068 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41069 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41070 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41071 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41072 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41073 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41074 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41075 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41076 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41077 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41078 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41079 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41080 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41081 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41082 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41083 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41084 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41085 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41086 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41087 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41088 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 41089 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 41090 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 41091 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 41092 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 41093 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 41094 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 41095 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 41096 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 41097 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 41098 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 41099 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 41100 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 41101 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 41102 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 41103 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 41104 UNICODE_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41105 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41106 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41107 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41108 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41109 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_NON_SPACING_MARK, 41110 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 41111 UNICODE_NON_SPACING_MARK, UNICODE_MODIFIER_LETTER, 41112 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 41113 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 41114 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 41115 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 41116 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 41117 UNICODE_MODIFIER_LETTER, UNICODE_MODIFIER_LETTER, 41118 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41119 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41120 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41121 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41122 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41123 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41124 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41125 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41126 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41127 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41128 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41129 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41130 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41131 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41132 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41133 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41134 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41135 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41136 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41137 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41138 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41139 UNICODE_UNASSIGNED, UNICODE_MODIFIER_LETTER, 41140 UNICODE_MODIFIER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41141 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41142 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41143 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41144 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41145 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41146 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41147 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41148 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41149 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41150 UNICODE_UNASSIGNED 41151 }, 41152 { /* page 391, index 95 */ 41153 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41154 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41155 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41156 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41157 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41158 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41159 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41160 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41161 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41162 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41163 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41164 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41165 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41166 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41167 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41168 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41169 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41170 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41171 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41172 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41173 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41174 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41175 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41176 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41177 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41178 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41179 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41180 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41181 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41182 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41183 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41184 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41185 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41186 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41187 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41188 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41189 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41190 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41191 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41192 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41193 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41194 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41195 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41196 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41197 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41198 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41199 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41200 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41201 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41202 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41203 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41204 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41205 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41206 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41207 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41208 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41209 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41210 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41211 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41212 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41213 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41214 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41215 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41216 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41217 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41218 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41219 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41220 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41221 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41222 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41223 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41224 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41225 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41226 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41227 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41228 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41229 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41230 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41231 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41232 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41233 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41234 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41235 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41236 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41237 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41238 UNICODE_UNASSIGNED 41239 }, 41240 { /* page 394, index 96 */ 41241 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41242 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41243 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41244 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41245 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41246 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41247 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41248 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41249 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41250 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41251 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41252 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41253 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41254 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41255 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41256 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41257 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41258 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41259 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41260 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41261 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41262 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41263 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41264 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41265 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41266 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41267 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41268 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41269 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41270 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41271 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41272 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41273 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41274 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41275 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41276 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41277 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41278 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41279 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41280 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41281 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41282 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41283 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41284 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41285 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41286 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41287 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41288 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41289 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41290 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41291 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41292 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41293 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41294 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41295 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41296 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41297 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41298 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41299 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41300 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41301 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41302 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41303 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41304 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41305 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41306 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41307 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41308 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41309 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41310 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41311 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41312 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41313 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41314 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41315 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41316 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41317 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41318 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41319 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41320 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41321 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41322 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41323 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41324 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41325 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41326 UNICODE_UNASSIGNED 41327 }, 41328 { /* page 433, index 97 */ 41329 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41330 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41331 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41332 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41333 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41334 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41335 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41336 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41337 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41338 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41339 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41340 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41341 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41342 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41343 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41344 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41345 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41346 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41347 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41348 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41349 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41350 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41351 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41352 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41353 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41354 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41355 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41356 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41357 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41358 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41359 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41360 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41361 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41362 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41363 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41364 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41365 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41366 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41367 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41368 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41369 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41370 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41371 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41372 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41373 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41374 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41375 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41376 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41377 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41378 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41379 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41380 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41381 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41382 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41383 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41384 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41385 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41386 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41387 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41388 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41389 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41390 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41391 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41392 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41393 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41394 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41395 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41396 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41397 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41398 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41399 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41400 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41401 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41402 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41403 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41404 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41405 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41406 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41407 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41408 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41409 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41410 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41411 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41412 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41413 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41414 UNICODE_OTHER_LETTER 41415 }, 41416 { /* page 434, index 98 */ 41417 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41418 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41419 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41420 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41421 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41422 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41423 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41424 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41425 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41426 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41427 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41428 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41429 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41430 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41431 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41432 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41433 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41434 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41435 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41436 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41437 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41438 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41439 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41440 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41441 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41442 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41443 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41444 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41445 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41446 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41447 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41448 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41449 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41450 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41451 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41452 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41453 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41454 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41455 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41456 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41457 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41458 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41459 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41460 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41461 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41462 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41463 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41464 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41465 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41466 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41467 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41468 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41469 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41470 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41471 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41472 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41473 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41474 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41475 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41476 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41477 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41478 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41479 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41480 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41481 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41482 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41483 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41484 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41485 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41486 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41487 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41488 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41489 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41490 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41491 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41492 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41493 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41494 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41495 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41496 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41497 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41498 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41499 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41500 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41501 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41502 UNICODE_UNASSIGNED 41503 }, 41504 { /* page 444, index 99 */ 41505 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41506 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41507 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41508 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41509 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41510 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41511 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41512 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41513 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41514 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41515 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41516 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41517 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41518 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41519 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41520 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41521 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41522 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41523 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41524 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41525 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41526 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41527 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41528 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41529 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41530 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41531 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41532 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41533 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41534 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41535 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41536 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41537 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41538 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41539 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41540 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 41541 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41542 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41543 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41544 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41545 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41546 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 41547 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 41548 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41549 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41550 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 41551 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41552 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41553 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41554 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41555 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 41556 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41557 UNICODE_OTHER_SYMBOL, UNICODE_NON_SPACING_MARK, 41558 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_PUNCTUATION, 41559 UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, 41560 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41561 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41562 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41563 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41564 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41565 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41566 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41567 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41568 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41569 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41570 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41571 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41572 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41573 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41574 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41575 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41576 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41577 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41578 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41579 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41580 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41581 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41582 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41583 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41584 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41585 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41586 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41587 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41588 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41589 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41590 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED 41591 }, 41592 { /* page 464, index 100 */ 41593 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41594 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41595 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41596 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41597 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41598 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41599 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41600 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41601 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41602 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41603 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41604 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41605 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41606 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41607 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41608 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41609 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41610 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41611 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41612 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41613 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41614 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41615 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41616 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41617 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41618 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41619 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41620 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41621 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41622 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41623 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41624 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41625 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41626 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41627 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41628 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41629 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41630 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41631 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41632 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41633 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41634 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41635 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41636 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41637 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41638 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41639 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41640 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41641 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41642 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41643 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41644 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41645 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41646 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41647 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41648 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41649 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41650 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41651 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41652 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41653 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41654 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41655 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41656 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41657 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41658 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41659 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41660 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41661 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41662 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41663 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41664 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41665 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41666 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41667 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41668 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41669 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41670 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41671 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41672 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41673 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41674 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41675 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41676 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41677 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41678 UNICODE_UNASSIGNED 41679 }, 41680 { /* page 465, index 101 */ 41681 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41682 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41683 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41684 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41685 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41686 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41687 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41688 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41689 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41690 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41691 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41692 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41693 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41694 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_SYMBOL, 41695 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41696 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41697 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41698 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41699 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41700 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41701 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41702 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41703 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41704 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41705 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41706 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41707 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41708 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41709 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41710 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41711 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41712 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41713 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41714 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_SPACING_MARK, 41715 UNICODE_SPACING_MARK, UNICODE_NON_SPACING_MARK, 41716 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 41717 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41718 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 41719 UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, UNICODE_SPACING_MARK, 41720 UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, 41721 UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, 41722 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 41723 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 41724 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 41725 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 41726 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41727 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 41728 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 41729 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 41730 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_SYMBOL, 41731 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41732 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41733 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41734 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41735 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41736 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41737 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41738 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41739 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41740 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41741 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 41742 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 41743 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41744 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41745 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41746 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41747 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41748 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41749 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41750 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41751 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41752 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41753 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41754 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41755 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41756 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41757 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41758 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41759 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41760 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41761 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41762 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_UNASSIGNED, 41763 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41764 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41765 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41766 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41767 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41768 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41769 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41770 UNICODE_UNASSIGNED 41771 }, 41772 { /* page 466, index 102 */ 41773 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41774 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41775 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41776 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41777 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41778 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41779 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41780 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41781 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41782 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41783 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41784 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41785 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41786 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41787 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41788 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41789 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41790 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41791 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41792 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41793 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41794 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41795 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 41796 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_SYMBOL, UNICODE_UNASSIGNED, 41797 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41798 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41799 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41800 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41801 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41802 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41803 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41804 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41805 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41806 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41807 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41808 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41809 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41810 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41811 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41812 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41813 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41814 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41815 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41816 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41817 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41818 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41819 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41820 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41821 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41822 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41823 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41824 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41825 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41826 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41827 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41828 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41829 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41830 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41831 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41832 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41833 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41834 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41835 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41836 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41837 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41838 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41839 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41840 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41841 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41842 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41843 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41844 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41845 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41846 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41847 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41848 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41849 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41850 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41851 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41852 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41853 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41854 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41855 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41856 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41857 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41858 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED 41859 }, 41860 { /* page 467, index 103 */ 41861 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41862 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41863 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41864 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41865 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41866 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41867 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41868 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41869 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41870 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41871 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41872 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41873 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41874 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41875 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41876 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41877 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41878 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41879 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41880 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41881 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41882 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41883 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41884 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41885 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41886 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41887 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41888 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41889 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 41890 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41891 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41892 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41893 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 41894 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 41895 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 41896 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 41897 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 41898 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 41899 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41900 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41901 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41902 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41903 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41904 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41905 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41906 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41907 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41908 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41909 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41910 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41911 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41912 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41913 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41914 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41915 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41916 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41917 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41918 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41919 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41920 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41921 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41922 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41923 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41924 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41925 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41926 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41927 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41928 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41929 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41930 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41931 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41932 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41933 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41934 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41935 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41936 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41937 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41938 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41939 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41940 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41941 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41942 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41943 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41944 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41945 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 41946 UNICODE_UNASSIGNED 41947 }, 41948 { /* page 468, index 104 */ 41949 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 41950 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 41951 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 41952 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 41953 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 41954 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 41955 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 41956 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 41957 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 41958 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 41959 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 41960 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 41961 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 41962 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 41963 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 41964 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 41965 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 41966 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 41967 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 41968 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 41969 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 41970 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 41971 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 41972 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 41973 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 41974 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 41975 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 41976 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 41977 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 41978 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 41979 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 41980 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 41981 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 41982 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 41983 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 41984 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 41985 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 41986 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 41987 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 41988 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 41989 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 41990 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 41991 UNICODE_LOWERCASE_LETTER, UNICODE_UNASSIGNED, 41992 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 41993 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 41994 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 41995 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 41996 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 41997 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 41998 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 41999 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42000 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42001 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42002 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42003 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42004 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42005 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42006 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42007 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42008 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42009 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42010 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42011 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42012 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42013 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42014 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42015 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42016 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42017 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42018 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42019 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42020 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42021 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42022 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42023 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42024 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42025 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42026 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42027 UNICODE_UPPERCASE_LETTER, UNICODE_UNASSIGNED, 42028 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42029 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UPPERCASE_LETTER, 42030 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UPPERCASE_LETTER, 42031 UNICODE_UPPERCASE_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42032 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42033 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42034 UNICODE_UNASSIGNED, UNICODE_UPPERCASE_LETTER, 42035 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42036 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42037 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42038 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42039 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42040 UNICODE_LOWERCASE_LETTER, UNICODE_UNASSIGNED, 42041 UNICODE_LOWERCASE_LETTER, UNICODE_UNASSIGNED, 42042 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42043 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42044 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42045 UNICODE_LOWERCASE_LETTER, UNICODE_UNASSIGNED, 42046 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42047 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42048 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42049 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42050 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42051 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42052 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42053 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42054 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42055 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42056 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42057 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42058 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42059 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42060 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42061 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42062 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42063 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42064 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42065 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42066 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42067 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42068 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42069 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42070 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42071 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42072 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42073 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42074 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42075 UNICODE_LOWERCASE_LETTER 42076 }, 42077 { /* page 469, index 105 */ 42078 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42079 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42080 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42081 UNICODE_UNASSIGNED, UNICODE_UPPERCASE_LETTER, 42082 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42083 UNICODE_UPPERCASE_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42084 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42085 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42086 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42087 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42088 UNICODE_UNASSIGNED, UNICODE_UPPERCASE_LETTER, 42089 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42090 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42091 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42092 UNICODE_UNASSIGNED, UNICODE_LOWERCASE_LETTER, 42093 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42094 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42095 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42096 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42097 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42098 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42099 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42100 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42101 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42102 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42103 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42104 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42105 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42106 UNICODE_UPPERCASE_LETTER, UNICODE_UNASSIGNED, 42107 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42108 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42109 UNICODE_UNASSIGNED, UNICODE_UPPERCASE_LETTER, 42110 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42111 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42112 UNICODE_UNASSIGNED, UNICODE_UPPERCASE_LETTER, UNICODE_UNASSIGNED, 42113 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UPPERCASE_LETTER, 42114 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42115 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42116 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42117 UNICODE_UNASSIGNED, UNICODE_LOWERCASE_LETTER, 42118 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42119 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42120 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42121 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42122 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42123 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42124 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42125 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42126 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42127 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42128 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42129 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42130 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42131 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42132 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42133 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42134 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42135 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42136 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42137 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42138 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42139 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42140 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42141 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42142 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42143 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42144 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42145 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42146 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42147 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42148 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42149 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42150 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42151 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42152 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42153 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42154 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42155 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42156 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42157 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42158 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42159 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42160 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42161 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42162 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42163 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42164 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42165 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42166 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42167 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42168 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42169 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42170 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42171 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42172 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42173 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42174 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42175 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42176 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42177 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42178 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42179 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42180 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42181 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42182 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42183 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42184 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42185 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42186 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42187 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42188 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42189 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42190 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42191 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42192 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42193 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42194 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42195 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42196 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42197 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42198 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42199 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42200 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42201 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42202 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42203 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42204 UNICODE_LOWERCASE_LETTER 42205 }, 42206 { /* page 470, index 106 */ 42207 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42208 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42209 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42210 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42211 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42212 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42213 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42214 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42215 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42216 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42217 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42218 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42219 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42220 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42221 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42222 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42223 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42224 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42225 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42226 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42227 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42228 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42229 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42230 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42231 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42232 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42233 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42234 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42235 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42236 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42237 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42238 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42239 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42240 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42241 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42242 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42243 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42244 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42245 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42246 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42247 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42248 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42249 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42250 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42251 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42252 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42253 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42254 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42255 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42256 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42257 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42258 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42259 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42260 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42261 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42262 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42263 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42264 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42265 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42266 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42267 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42268 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42269 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42270 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42271 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42272 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42273 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42274 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42275 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42276 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42277 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42278 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42279 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42280 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42281 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42282 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42283 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42284 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42285 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42286 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42287 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42288 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42289 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42290 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UPPERCASE_LETTER, 42291 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42292 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42293 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42294 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42295 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42296 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42297 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42298 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42299 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42300 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42301 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42302 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42303 UNICODE_MATH_SYMBOL, UNICODE_LOWERCASE_LETTER, 42304 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42305 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42306 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42307 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42308 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42309 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42310 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42311 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42312 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42313 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42314 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42315 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42316 UNICODE_MATH_SYMBOL, UNICODE_LOWERCASE_LETTER, 42317 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42318 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42319 UNICODE_LOWERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42320 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42321 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42322 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42323 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42324 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42325 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42326 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42327 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42328 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42329 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42330 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42331 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42332 UNICODE_MATH_SYMBOL, UNICODE_LOWERCASE_LETTER, 42333 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42334 UNICODE_LOWERCASE_LETTER 42335 }, 42336 { /* page 471, index 107 */ 42337 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42338 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42339 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42340 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42341 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42342 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42343 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42344 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42345 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42346 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42347 UNICODE_LOWERCASE_LETTER, UNICODE_MATH_SYMBOL, 42348 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42349 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42350 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42351 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42352 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42353 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42354 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42355 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42356 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42357 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42358 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42359 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42360 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42361 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42362 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42363 UNICODE_UPPERCASE_LETTER, UNICODE_MATH_SYMBOL, 42364 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42365 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42366 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42367 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42368 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42369 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42370 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42371 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42372 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42373 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42374 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42375 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42376 UNICODE_LOWERCASE_LETTER, UNICODE_MATH_SYMBOL, 42377 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42378 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42379 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42380 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42381 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42382 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42383 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42384 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42385 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42386 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42387 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42388 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42389 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42390 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42391 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42392 UNICODE_UPPERCASE_LETTER, UNICODE_MATH_SYMBOL, 42393 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42394 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42395 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42396 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42397 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42398 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42399 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42400 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42401 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42402 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42403 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42404 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42405 UNICODE_LOWERCASE_LETTER, UNICODE_MATH_SYMBOL, 42406 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42407 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42408 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42409 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42410 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42411 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42412 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42413 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42414 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42415 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42416 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42417 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42418 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42419 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42420 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42421 UNICODE_UPPERCASE_LETTER, UNICODE_MATH_SYMBOL, 42422 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42423 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42424 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42425 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42426 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42427 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42428 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42429 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42430 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42431 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42432 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42433 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42434 UNICODE_LOWERCASE_LETTER, UNICODE_MATH_SYMBOL, 42435 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42436 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42437 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42438 UNICODE_UPPERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42439 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_DECIMAL_NUMBER, 42440 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 42441 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 42442 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 42443 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 42444 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 42445 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 42446 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 42447 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 42448 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 42449 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 42450 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 42451 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 42452 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 42453 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 42454 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 42455 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 42456 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 42457 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 42458 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 42459 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 42460 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 42461 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 42462 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 42463 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 42464 UNICODE_DECIMAL_NUMBER 42465 }, 42466 { /* page 474, index 108 */ 42467 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42468 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42469 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42470 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42471 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42472 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42473 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42474 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42475 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42476 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42477 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42478 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42479 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42480 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42481 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42482 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42483 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42484 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42485 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42486 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42487 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42488 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42489 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42490 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42491 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42492 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42493 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42494 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_SYMBOL, 42495 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42496 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42497 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42498 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42499 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42500 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42501 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42502 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42503 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42504 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42505 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42506 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42507 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42508 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42509 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42510 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42511 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42512 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42513 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42514 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42515 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42516 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42517 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42518 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42519 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42520 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42521 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42522 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42523 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42524 UNICODE_NON_SPACING_MARK, UNICODE_OTHER_SYMBOL, 42525 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42526 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42527 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42528 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42529 UNICODE_OTHER_SYMBOL, UNICODE_NON_SPACING_MARK, 42530 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42531 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 42532 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 42533 UNICODE_OTHER_PUNCTUATION, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42534 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42535 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42536 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42537 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42538 UNICODE_UNASSIGNED, UNICODE_NON_SPACING_MARK, 42539 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42540 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42541 UNICODE_UNASSIGNED, UNICODE_NON_SPACING_MARK, 42542 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42543 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42544 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42545 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42546 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42547 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42548 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42549 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42550 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42551 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42552 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42553 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42554 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42555 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42556 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42557 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42558 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42559 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42560 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42561 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42562 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42563 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42564 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42565 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42566 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42567 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42568 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42569 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42570 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42571 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42572 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42573 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42574 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42575 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED 42576 }, 42577 { /* page 480, index 109 */ 42578 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42579 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42580 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42581 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, 42582 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42583 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42584 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42585 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42586 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42587 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42588 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42589 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42590 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42591 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42592 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42593 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42594 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, 42595 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42596 UNICODE_UNASSIGNED, UNICODE_NON_SPACING_MARK, 42597 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42598 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42599 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42600 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42601 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42602 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42603 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42604 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42605 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42606 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42607 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42608 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42609 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42610 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42611 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42612 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42613 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42614 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42615 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42616 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42617 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42618 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42619 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42620 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42621 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42622 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42623 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42624 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42625 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42626 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42627 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42628 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42629 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42630 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42631 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42632 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42633 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42634 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42635 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42636 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42637 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42638 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42639 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42640 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42641 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42642 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42643 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42644 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42645 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42646 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42647 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42648 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42649 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42650 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42651 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42652 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42653 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42654 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42655 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42656 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42657 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42658 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42659 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42660 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42661 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42662 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42663 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42664 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42665 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42666 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42667 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42668 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42669 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED 42670 }, 42671 { /* page 488, index 110 */ 42672 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42673 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42674 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42675 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42676 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42677 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42678 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42679 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42680 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42681 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42682 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42683 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42684 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42685 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42686 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42687 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42688 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42689 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42690 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42691 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42692 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42693 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42694 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42695 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42696 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42697 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42698 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42699 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42700 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42701 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42702 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42703 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42704 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42705 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42706 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42707 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42708 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42709 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42710 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42711 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42712 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42713 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42714 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42715 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42716 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42717 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42718 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42719 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42720 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42721 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42722 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42723 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42724 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42725 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42726 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42727 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42728 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42729 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42730 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42731 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42732 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42733 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42734 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42735 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42736 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42737 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 42738 UNICODE_UNASSIGNED, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 42739 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 42740 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 42741 UNICODE_OTHER_NUMBER, UNICODE_NON_SPACING_MARK, 42742 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42743 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42744 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42745 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42746 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42747 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42748 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42749 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42750 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42751 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42752 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42753 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42754 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42755 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42756 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42757 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42758 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED 42759 }, 42760 { /* page 489, index 111 */ 42761 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42762 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42763 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42764 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42765 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42766 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42767 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42768 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42769 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42770 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42771 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42772 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42773 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42774 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42775 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42776 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42777 UNICODE_UPPERCASE_LETTER, UNICODE_UPPERCASE_LETTER, 42778 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42779 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42780 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42781 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42782 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42783 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42784 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42785 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42786 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42787 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42788 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42789 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42790 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42791 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42792 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42793 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42794 UNICODE_LOWERCASE_LETTER, UNICODE_LOWERCASE_LETTER, 42795 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42796 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42797 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 42798 UNICODE_NON_SPACING_MARK, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42799 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42800 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 42801 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 42802 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 42803 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, 42804 UNICODE_DECIMAL_NUMBER, UNICODE_DECIMAL_NUMBER, UNICODE_UNASSIGNED, 42805 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42806 UNICODE_OTHER_PUNCTUATION, UNICODE_OTHER_PUNCTUATION, 42807 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42808 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42809 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42810 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42811 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42812 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42813 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42814 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42815 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42816 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42817 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42818 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42819 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42820 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42821 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42822 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42823 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42824 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42825 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42826 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42827 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42828 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42829 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42830 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42831 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42832 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42833 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42834 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42835 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42836 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42837 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42838 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42839 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42840 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42841 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42842 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42843 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42844 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42845 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42846 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42847 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42848 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42849 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42850 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42851 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42852 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42853 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42854 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42855 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42856 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42857 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42858 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42859 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42860 UNICODE_UNASSIGNED 42861 }, 42862 { /* page 494, index 112 */ 42863 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42864 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 42865 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42866 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42867 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42868 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42869 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42870 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42871 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42872 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42873 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 42874 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 42875 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42876 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 42877 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42878 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42879 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42880 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42881 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 42882 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 42883 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42884 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42885 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42886 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 42887 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 42888 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 42889 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 42890 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 42891 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42892 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 42893 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 42894 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 42895 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42896 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 42897 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42898 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 42899 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42900 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42901 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 42902 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42903 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42904 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 42905 UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 42906 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42907 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42908 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42909 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42910 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42911 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42912 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42913 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42914 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42915 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42916 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 42917 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 42918 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42919 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 42920 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42921 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42922 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42923 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42924 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 42925 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 42926 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42927 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42928 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42929 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42930 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42931 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42932 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42933 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42934 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42935 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42936 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42937 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42938 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42939 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42940 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42941 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42942 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42943 UNICODE_MATH_SYMBOL, UNICODE_MATH_SYMBOL, UNICODE_UNASSIGNED, 42944 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42945 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42946 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42947 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42948 UNICODE_UNASSIGNED 42949 }, 42950 { /* page 496, index 113 */ 42951 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42952 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42953 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42954 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42955 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42956 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42957 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42958 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42959 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42960 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42961 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42962 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42963 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42964 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42965 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_UNASSIGNED, 42966 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 42967 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42968 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42969 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42970 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42971 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42972 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42973 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42974 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42975 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42976 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42977 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42978 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42979 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42980 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42981 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42982 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42983 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42984 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42985 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42986 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42987 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42988 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42989 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42990 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42991 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42992 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42993 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42994 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42995 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42996 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42997 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42998 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 42999 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43000 UNICODE_OTHER_SYMBOL, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43001 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43002 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43003 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43004 UNICODE_UNASSIGNED, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43005 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43006 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43007 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43008 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43009 UNICODE_OTHER_SYMBOL, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43010 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43011 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43012 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43013 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43014 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43015 UNICODE_UNASSIGNED, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43016 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43017 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43018 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43019 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43020 UNICODE_OTHER_SYMBOL, UNICODE_UNASSIGNED, UNICODE_OTHER_SYMBOL, 43021 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43022 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43023 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43024 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43025 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43026 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43027 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43028 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43029 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43030 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43031 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43032 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43033 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43034 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43035 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43036 UNICODE_UNASSIGNED 43037 }, 43038 { /* page 497, index 114 */ 43039 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 43040 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 43041 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 43042 UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, UNICODE_OTHER_NUMBER, 43043 UNICODE_OTHER_NUMBER, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43044 UNICODE_UNASSIGNED, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43045 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43046 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43047 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43048 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43049 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43050 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43051 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43052 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43053 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43054 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_UNASSIGNED, 43055 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43056 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43057 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43058 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43059 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43060 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43061 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43062 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43063 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43064 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43065 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43066 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43067 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43068 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43069 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43070 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43071 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43072 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43073 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43074 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43075 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43076 UNICODE_UNASSIGNED, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43077 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43078 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43079 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43080 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43081 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43082 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43083 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43084 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43085 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43086 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43087 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43088 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43089 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43090 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43091 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43092 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43093 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43094 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43095 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43096 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_UNASSIGNED, 43097 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43098 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43099 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43100 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43101 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43102 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43103 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43104 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43105 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43106 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43107 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43108 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43109 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43110 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43111 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43112 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43113 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43114 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43115 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_SYMBOL, 43116 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43117 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43118 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43119 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43120 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43121 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43122 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43123 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43124 UNICODE_OTHER_SYMBOL 43125 }, 43126 { /* page 498, index 115 */ 43127 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43128 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43129 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43130 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43131 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43132 UNICODE_UNASSIGNED, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43133 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43134 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43135 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43136 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43137 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43138 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43139 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43140 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43141 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43142 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43143 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43144 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43145 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43146 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43147 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43148 UNICODE_UNASSIGNED, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43149 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43150 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43151 UNICODE_OTHER_SYMBOL, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43152 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43153 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_SYMBOL, 43154 UNICODE_OTHER_SYMBOL, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43155 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43156 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43157 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43158 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43159 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43160 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43161 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43162 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43163 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43164 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43165 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43166 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43167 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43168 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43169 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43170 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43171 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43172 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43173 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43174 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43175 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43176 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43177 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43178 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43179 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43180 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43181 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43182 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43183 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43184 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43185 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43186 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43187 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43188 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43189 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43190 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43191 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43192 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43193 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43194 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43195 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43196 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43197 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43198 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43199 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43200 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43201 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43202 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43203 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43204 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43205 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43206 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43207 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43208 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43209 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43210 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43211 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43212 UNICODE_UNASSIGNED 43213 }, 43214 { /* page 499, index 116 */ 43215 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43216 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43217 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43218 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43219 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43220 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43221 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43222 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43223 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43224 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43225 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43226 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43227 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43228 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43229 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43230 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43231 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43232 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43233 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43234 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43235 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43236 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43237 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43238 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43239 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43240 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43241 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43242 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43243 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43244 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43245 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43246 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43247 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43248 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43249 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43250 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43251 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43252 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43253 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43254 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43255 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43256 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43257 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43258 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43259 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43260 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43261 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43262 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43263 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43264 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43265 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43266 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43267 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43268 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43269 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43270 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43271 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43272 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43273 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43274 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43275 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43276 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43277 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43278 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43279 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43280 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43281 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43282 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43283 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43284 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43285 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43286 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43287 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43288 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43289 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43290 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43291 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43292 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43293 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43294 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43295 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43296 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43297 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43298 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43299 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 43300 UNICODE_MODIFIER_SYMBOL, UNICODE_MODIFIER_SYMBOL, 43301 UNICODE_MODIFIER_SYMBOL 43302 }, 43303 { /* page 502, index 117 */ 43304 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43305 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43306 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43307 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43308 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43309 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43310 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43311 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43312 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43313 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43314 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43315 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43316 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43317 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43318 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43319 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43320 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43321 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43322 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43323 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43324 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43325 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43326 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43327 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43328 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43329 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43330 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43331 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43332 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43333 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43334 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43335 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43336 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43337 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43338 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43339 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43340 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43341 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43342 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43343 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43344 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43345 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43346 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43347 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43348 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43349 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43350 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43351 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43352 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43353 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43354 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43355 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43356 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43357 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43358 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43359 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43360 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43361 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43362 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43363 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43364 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43365 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43366 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43367 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43368 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43369 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43370 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43371 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43372 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43373 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43374 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43375 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43376 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43377 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43378 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_SYMBOL, 43379 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43380 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43381 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43382 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43383 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43384 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43385 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43386 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43387 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43388 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43389 UNICODE_UNASSIGNED 43390 }, 43391 { /* page 503, index 118 */ 43392 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43393 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43394 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43395 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43396 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43397 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43398 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43399 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43400 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43401 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43402 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43403 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43404 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43405 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43406 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43407 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43408 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43409 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43410 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43411 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43412 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43413 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43414 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43415 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43416 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43417 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43418 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43419 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43420 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43421 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43422 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43423 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43424 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43425 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43426 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43427 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43428 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43429 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43430 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_UNASSIGNED, 43431 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43432 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43433 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43434 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_SYMBOL, 43435 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43436 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43437 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43438 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43439 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43440 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43441 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43442 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43443 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43444 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43445 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43446 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43447 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43448 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43449 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43450 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43451 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43452 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43453 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43454 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43455 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43456 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43457 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43458 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43459 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43460 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43461 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43462 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43463 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43464 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43465 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43466 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43467 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43468 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43469 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43470 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43471 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43472 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43473 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43474 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43475 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43476 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43477 UNICODE_UNASSIGNED 43478 }, 43479 { /* page 504, index 119 */ 43480 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43481 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43482 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43483 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43484 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43485 UNICODE_UNASSIGNED, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43486 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43487 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43488 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43489 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43490 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43491 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43492 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43493 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43494 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43495 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43496 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43497 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43498 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43499 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43500 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43501 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43502 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43503 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43504 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43505 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43506 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_SYMBOL, 43507 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43508 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43509 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43510 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43511 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43512 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43513 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43514 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43515 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43516 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43517 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43518 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43519 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43520 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43521 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43522 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43523 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43524 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43525 UNICODE_OTHER_SYMBOL, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43526 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43527 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43528 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43529 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43530 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43531 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43532 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43533 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43534 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43535 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43536 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43537 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43538 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43539 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43540 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43541 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43542 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43543 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43544 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43545 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43546 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43547 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43548 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43549 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43550 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43551 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43552 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43553 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43554 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43555 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43556 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43557 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43558 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43559 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43560 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43561 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43562 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43563 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43564 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43565 UNICODE_UNASSIGNED 43566 }, 43567 { /* page 505, index 120 */ 43568 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43569 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43570 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43571 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43572 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43573 UNICODE_UNASSIGNED, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43574 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43575 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43576 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43577 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43578 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43579 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43580 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43581 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43582 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43583 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43584 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43585 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43586 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43587 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43588 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43589 UNICODE_UNASSIGNED, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43590 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43591 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43592 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43593 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_UNASSIGNED, 43594 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_SYMBOL, 43595 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43596 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43597 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43598 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43599 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43600 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43601 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43602 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43603 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43604 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43605 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43606 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43607 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43608 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43609 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43610 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_SYMBOL, 43611 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43612 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43613 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43614 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43615 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43616 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43617 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43618 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_UNASSIGNED, 43619 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43620 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43621 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43622 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43623 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43624 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43625 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43626 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43627 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43628 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43629 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43630 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43631 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43632 UNICODE_OTHER_SYMBOL, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43633 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43634 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43635 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43636 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43637 UNICODE_UNASSIGNED, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43638 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43639 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43640 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43641 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43642 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43643 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43644 UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, UNICODE_OTHER_SYMBOL, 43645 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43646 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43647 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43648 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43649 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43650 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43651 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43652 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43653 UNICODE_UNASSIGNED 43654 }, 43655 { /* page 678, index 121 */ 43656 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43657 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43658 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43659 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43660 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43661 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43662 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43663 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43664 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43665 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43666 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43667 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43668 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43669 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43670 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43671 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43672 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43673 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43674 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43675 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43676 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43677 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43678 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43679 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43680 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43681 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43682 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43683 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43684 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43685 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43686 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43687 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43688 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43689 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43690 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43691 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43692 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43693 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43694 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43695 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43696 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43697 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43698 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43699 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43700 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43701 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43702 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43703 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43704 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43705 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43706 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43707 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43708 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43709 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43710 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43711 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43712 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43713 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43714 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43715 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43716 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43717 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43718 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43719 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43720 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43721 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43722 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43723 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43724 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43725 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43726 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43727 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 43728 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43729 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43730 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43731 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43732 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43733 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43734 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43735 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43736 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43737 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43738 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43739 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43740 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43741 UNICODE_UNASSIGNED 43742 }, 43743 { /* page 695, index 122 */ 43744 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43745 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43746 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43747 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43748 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43749 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43750 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43751 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43752 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43753 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43754 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43755 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43756 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43757 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43758 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43759 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43760 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43761 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_UNASSIGNED, 43762 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43763 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43764 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43765 UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43766 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43767 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43768 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43769 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43770 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43771 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43772 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43773 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43774 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43775 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43776 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43777 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43778 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43779 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43780 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43781 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43782 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43783 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43784 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43785 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43786 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43787 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43788 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43789 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43790 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43791 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43792 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43793 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43794 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43795 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43796 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43797 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43798 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43799 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43800 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43801 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43802 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43803 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43804 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43805 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43806 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43807 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43808 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43809 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43810 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43811 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43812 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43813 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43814 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43815 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43816 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43817 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43818 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43819 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43820 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43821 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43822 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43823 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43824 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43825 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43826 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43827 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43828 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43829 UNICODE_OTHER_LETTER 43830 }, 43831 { /* page 696, index 123 */ 43832 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43833 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43834 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43835 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43836 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43837 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43838 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43839 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43840 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43841 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43842 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 43843 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43844 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43845 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43846 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43847 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43848 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43849 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43850 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43851 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43852 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43853 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43854 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43855 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43856 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43857 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43858 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43859 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43860 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43861 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43862 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43863 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43864 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43865 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43866 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43867 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43868 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43869 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43870 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43871 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43872 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43873 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43874 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43875 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43876 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43877 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43878 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43879 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43880 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43881 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43882 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43883 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43884 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43885 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43886 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43887 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43888 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43889 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43890 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43891 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43892 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43893 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43894 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43895 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43896 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43897 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43898 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43899 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43900 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43901 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43902 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43903 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43904 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43905 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43906 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43907 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43908 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43909 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43910 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43911 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43912 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43913 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43914 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43915 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43916 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43917 UNICODE_OTHER_LETTER 43918 }, 43919 { /* page 718, index 124 */ 43920 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43921 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43922 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43923 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43924 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43925 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43926 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43927 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43928 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43929 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43930 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43931 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43932 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43933 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43934 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43935 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43936 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43937 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43938 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43939 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43940 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43941 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43942 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43943 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43944 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43945 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43946 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43947 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43948 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43949 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43950 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43951 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43952 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43953 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43954 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43955 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43956 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43957 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43958 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43959 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43960 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43961 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43962 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43963 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43964 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43965 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43966 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43967 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43968 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43969 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43970 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43971 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43972 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43973 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43974 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43975 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43976 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43977 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 43978 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_OTHER_LETTER, 43979 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43980 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43981 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43982 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43983 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43984 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43985 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43986 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43987 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43988 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43989 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43990 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43991 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43992 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43993 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43994 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43995 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43996 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43997 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43998 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 43999 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44000 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44001 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44002 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44003 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44004 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44005 UNICODE_OTHER_LETTER 44006 }, 44007 { /* page 747, index 125 */ 44008 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44009 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44010 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44011 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44012 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44013 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44014 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44015 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44016 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44017 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44018 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44019 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44020 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44021 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44022 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44023 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44024 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44025 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44026 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44027 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44028 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44029 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44030 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44031 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44032 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44033 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44034 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44035 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44036 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44037 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44038 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44039 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44040 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44041 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44042 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44043 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44044 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44045 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44046 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44047 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44048 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44049 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44050 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44051 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44052 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44053 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44054 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44055 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44056 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44057 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44058 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44059 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44060 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44061 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44062 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44063 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44064 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44065 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44066 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44067 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44068 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44069 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44070 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44071 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44072 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44073 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44074 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44075 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44076 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44077 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44078 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44079 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44080 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44081 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44082 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44083 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44084 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44085 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44086 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44087 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44088 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44089 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44090 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44091 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44092 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44093 UNICODE_UNASSIGNED 44094 }, 44095 { /* page 762, index 126 */ 44096 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44097 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44098 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44099 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44100 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44101 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44102 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44103 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44104 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44105 UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, UNICODE_OTHER_LETTER, 44106 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44107 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44108 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44109 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44110 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44111 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44112 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44113 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44114 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44115 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44116 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44117 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44118 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44119 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44120 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44121 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44122 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44123 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44124 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44125 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44126 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44127 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44128 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44129 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44130 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44131 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44132 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44133 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44134 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44135 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44136 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44137 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44138 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44139 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44140 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44141 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44142 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44143 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44144 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44145 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44146 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44147 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44148 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44149 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44150 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44151 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44152 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44153 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44154 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44155 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44156 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44157 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44158 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44159 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44160 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44161 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44162 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44163 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44164 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44165 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44166 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44167 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44168 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44169 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44170 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44171 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44172 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44173 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44174 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44175 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44176 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44177 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44178 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44179 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44180 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44181 UNICODE_UNASSIGNED 44182 }, 44183 { /* page 3584, index 127 */ 44184 UNICODE_UNASSIGNED, UNICODE_FORMAT, UNICODE_UNASSIGNED, 44185 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44186 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44187 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44188 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44189 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44190 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44191 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44192 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44193 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44194 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_FORMAT, 44195 UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, 44196 UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, 44197 UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, 44198 UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, 44199 UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, 44200 UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, 44201 UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, 44202 UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, 44203 UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, 44204 UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, 44205 UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, 44206 UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, 44207 UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, 44208 UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, 44209 UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, 44210 UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, 44211 UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, 44212 UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, 44213 UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, 44214 UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, 44215 UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, 44216 UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, 44217 UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, 44218 UNICODE_FORMAT, UNICODE_FORMAT, UNICODE_FORMAT, 44219 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44220 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44221 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44222 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44223 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44224 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44225 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44226 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44227 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44228 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44229 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44230 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44231 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44232 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44233 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44234 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44235 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44236 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44237 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44238 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44239 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44240 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44241 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44242 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44243 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44244 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44245 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44246 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44247 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44248 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44249 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44250 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44251 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44252 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44253 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44254 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44255 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44256 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44257 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44258 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44259 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44260 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44261 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED 44262 }, 44263 { /* page 3585, index 128 */ 44264 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44265 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44266 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44267 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44268 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44269 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44270 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44271 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44272 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44273 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44274 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44275 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44276 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44277 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44278 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44279 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44280 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44281 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44282 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44283 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44284 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44285 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44286 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44287 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44288 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44289 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44290 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44291 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44292 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44293 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44294 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44295 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44296 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44297 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44298 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44299 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44300 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44301 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44302 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44303 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44304 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44305 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44306 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44307 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44308 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44309 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44310 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44311 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44312 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44313 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44314 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44315 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44316 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44317 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44318 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44319 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44320 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44321 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44322 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44323 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44324 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44325 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44326 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44327 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44328 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44329 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44330 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44331 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44332 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44333 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44334 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44335 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44336 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44337 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44338 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44339 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44340 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44341 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44342 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44343 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44344 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44345 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44346 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44347 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44348 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44349 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44350 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44351 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44352 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44353 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44354 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44355 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44356 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44357 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44358 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44359 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44360 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44361 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44362 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44363 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44364 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44365 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44366 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44367 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44368 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44369 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44370 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44371 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44372 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44373 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44374 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44375 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44376 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44377 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44378 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44379 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44380 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44381 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44382 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44383 UNICODE_NON_SPACING_MARK, UNICODE_NON_SPACING_MARK, 44384 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44385 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44386 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44387 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44388 UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, UNICODE_UNASSIGNED, 44389 UNICODE_UNASSIGNED 44390 }, 44391 { /* page 4095, index 129 */ 44392 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44393 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44394 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44395 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44396 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44397 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44398 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44399 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44400 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44401 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44402 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44403 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44404 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44405 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44406 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44407 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44408 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44409 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44410 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44411 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44412 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44413 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44414 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44415 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44416 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44417 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44418 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44419 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44420 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44421 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44422 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44423 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44424 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44425 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44426 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44427 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44428 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44429 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44430 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44431 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44432 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44433 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44434 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44435 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44436 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44437 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44438 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44439 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44440 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44441 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44442 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44443 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44444 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44445 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44446 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44447 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44448 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44449 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44450 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44451 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44452 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44453 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44454 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44455 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44456 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44457 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44458 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44459 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44460 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44461 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44462 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44463 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44464 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44465 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44466 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44467 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44468 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44469 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44470 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44471 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44472 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44473 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44474 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44475 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44476 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_UNASSIGNED, 44477 UNICODE_UNASSIGNED 44478 }, 44479 { /* page 4351, index 130 */ 44480 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44481 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44482 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44483 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44484 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44485 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44486 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44487 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44488 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44489 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44490 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44491 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44492 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44493 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44494 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44495 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44496 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44497 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44498 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44499 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44500 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44501 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44502 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44503 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44504 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44505 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44506 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44507 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44508 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44509 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44510 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44511 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44512 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44513 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44514 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44515 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44516 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44517 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44518 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44519 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44520 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44521 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44522 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44523 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44524 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44525 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44526 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44527 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44528 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44529 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44530 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44531 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44532 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44533 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44534 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44535 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44536 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44537 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44538 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44539 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44540 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44541 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44542 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44543 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44544 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44545 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44546 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44547 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44548 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44549 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44550 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44551 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44552 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44553 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44554 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44555 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44556 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44557 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44558 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44559 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44560 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44561 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44562 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44563 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, 44564 UNICODE_PRIVATE_USE, UNICODE_PRIVATE_USE, UNICODE_UNASSIGNED, 44565 UNICODE_UNASSIGNED 44566 } 44567 }; 44568 44569 /* U+0000 through U+2FAFF */ 44570 static const int16_t type_table_part1[763] = { 44571 0 /* page 0 */, 44572 1 /* page 1 */, 44573 2 /* page 2 */, 44574 3 /* page 3 */, 44575 4 /* page 4 */, 44576 5 /* page 5 */, 44577 6 /* page 6 */, 44578 7 /* page 7 */, 44579 8 /* page 8 */, 44580 9 /* page 9 */, 44581 10 /* page 10 */, 44582 11 /* page 11 */, 44583 12 /* page 12 */, 44584 13 /* page 13 */, 44585 14 /* page 14 */, 44586 15 /* page 15 */, 44587 16 /* page 16 */, 44588 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44589 17 /* page 18 */, 44590 18 /* page 19 */, 44591 19 /* page 20 */, 44592 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44593 20 /* page 22 */, 44594 21 /* page 23 */, 44595 22 /* page 24 */, 44596 23 /* page 25 */, 44597 24 /* page 26 */, 44598 25 /* page 27 */, 44599 26 /* page 28 */, 44600 27 /* page 29 */, 44601 28 /* page 30 */, 44602 29 /* page 31 */, 44603 30 /* page 32 */, 44604 31 /* page 33 */, 44605 UNICODE_MATH_SYMBOL + UNICODE_MAX_TABLE_INDEX, 44606 32 /* page 35 */, 44607 33 /* page 36 */, 44608 34 /* page 37 */, 44609 35 /* page 38 */, 44610 36 /* page 39 */, 44611 UNICODE_OTHER_SYMBOL + UNICODE_MAX_TABLE_INDEX, 44612 37 /* page 41 */, 44613 UNICODE_MATH_SYMBOL + UNICODE_MAX_TABLE_INDEX, 44614 38 /* page 43 */, 44615 39 /* page 44 */, 44616 40 /* page 45 */, 44617 41 /* page 46 */, 44618 42 /* page 47 */, 44619 43 /* page 48 */, 44620 44 /* page 49 */, 44621 45 /* page 50 */, 44622 UNICODE_OTHER_SYMBOL + UNICODE_MAX_TABLE_INDEX, 44623 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44624 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44625 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44626 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44627 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44628 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44629 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44630 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44631 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44632 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44633 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44634 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44635 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44636 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44637 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44638 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44639 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44640 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44641 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44642 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44643 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44644 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44645 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44646 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44647 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44648 46 /* page 77 */, 44649 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44650 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44651 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44652 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44653 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44654 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44655 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44656 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44657 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44658 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44659 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44660 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44661 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44662 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44663 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44664 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44665 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44666 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44667 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44668 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44669 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44670 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44671 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44672 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44673 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44674 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44675 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44676 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44677 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44678 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44679 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44680 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44681 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44682 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44683 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44684 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44685 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44686 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44687 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44688 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44689 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44690 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44691 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44692 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44693 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44694 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44695 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44696 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44697 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44698 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44699 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44700 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44701 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44702 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44703 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44704 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44705 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44706 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44707 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44708 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44709 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44710 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44711 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44712 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44713 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44714 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44715 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44716 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44717 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44718 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44719 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44720 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44721 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44722 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44723 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44724 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44725 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44726 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44727 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44728 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44729 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44730 47 /* page 159 */, 44731 48 /* page 160 */, 44732 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44733 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44734 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44735 49 /* page 164 */, 44736 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44737 50 /* page 166 */, 44738 51 /* page 167 */, 44739 52 /* page 168 */, 44740 53 /* page 169 */, 44741 54 /* page 170 */, 44742 55 /* page 171 */, 44743 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44744 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44745 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44746 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44747 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44748 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44749 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44750 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44751 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44752 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44753 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44754 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44755 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44756 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44757 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44758 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44759 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44760 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44761 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44762 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44763 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44764 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44765 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44766 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44767 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44768 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44769 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44770 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44771 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44772 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44773 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44774 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44775 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44776 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44777 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44778 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44779 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44780 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44781 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44782 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44783 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44784 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44785 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44786 56 /* page 215 */, 44787 UNICODE_SURROGATE + UNICODE_MAX_TABLE_INDEX, 44788 UNICODE_SURROGATE + UNICODE_MAX_TABLE_INDEX, 44789 UNICODE_SURROGATE + UNICODE_MAX_TABLE_INDEX, 44790 UNICODE_SURROGATE + UNICODE_MAX_TABLE_INDEX, 44791 UNICODE_SURROGATE + UNICODE_MAX_TABLE_INDEX, 44792 UNICODE_SURROGATE + UNICODE_MAX_TABLE_INDEX, 44793 UNICODE_SURROGATE + UNICODE_MAX_TABLE_INDEX, 44794 UNICODE_SURROGATE + UNICODE_MAX_TABLE_INDEX, 44795 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 44796 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 44797 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 44798 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 44799 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 44800 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 44801 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 44802 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 44803 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 44804 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 44805 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 44806 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 44807 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 44808 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 44809 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 44810 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 44811 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 44812 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 44813 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 44814 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 44815 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 44816 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 44817 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 44818 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 44819 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 44820 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44821 57 /* page 250 */, 44822 58 /* page 251 */, 44823 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44824 59 /* page 253 */, 44825 60 /* page 254 */, 44826 61 /* page 255 */, 44827 62 /* page 256 */, 44828 63 /* page 257 */, 44829 64 /* page 258 */, 44830 65 /* page 259 */, 44831 66 /* page 260 */, 44832 67 /* page 261 */, 44833 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44834 68 /* page 263 */, 44835 69 /* page 264 */, 44836 70 /* page 265 */, 44837 71 /* page 266 */, 44838 72 /* page 267 */, 44839 73 /* page 268 */, 44840 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44841 74 /* page 270 */, 44842 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44843 75 /* page 272 */, 44844 76 /* page 273 */, 44845 77 /* page 274 */, 44846 78 /* page 275 */, 44847 79 /* page 276 */, 44848 80 /* page 277 */, 44849 81 /* page 278 */, 44850 82 /* page 279 */, 44851 83 /* page 280 */, 44852 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44853 84 /* page 282 */, 44854 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44855 85 /* page 284 */, 44856 86 /* page 285 */, 44857 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44858 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44859 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44860 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44861 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44862 87 /* page 291 */, 44863 88 /* page 292 */, 44864 89 /* page 293 */, 44865 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44866 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44867 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44868 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44869 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44870 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44871 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44872 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44873 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44874 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44875 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44876 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44877 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44878 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44879 90 /* page 308 */, 44880 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44881 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44882 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44883 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44884 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44885 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44886 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44887 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44888 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44889 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44890 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44891 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44892 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44893 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44894 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44895 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44896 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44897 91 /* page 326 */, 44898 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44899 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44900 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44901 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44902 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44903 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44904 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44905 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44906 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44907 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44908 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44909 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44910 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44911 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44912 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44913 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44914 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44915 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44916 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44917 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44918 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44919 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44920 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44921 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44922 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44923 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44924 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44925 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44926 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44927 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44928 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44929 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44930 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44931 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44932 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44933 92 /* page 362 */, 44934 93 /* page 363 */, 44935 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44936 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44937 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44938 94 /* page 367 */, 44939 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44940 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44941 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44942 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44943 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44944 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44945 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44946 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44947 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44948 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44949 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44950 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44951 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44952 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44953 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44954 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44955 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44956 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44957 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44958 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44959 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44960 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44961 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44962 95 /* page 391 */, 44963 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44964 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 44965 96 /* page 394 */, 44966 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44967 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44968 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44969 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44970 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44971 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44972 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44973 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44974 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44975 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44976 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44977 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44978 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44979 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44980 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44981 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44982 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44983 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44984 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44985 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44986 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44987 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44988 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44989 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44990 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44991 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44992 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44993 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44994 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44995 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44996 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44997 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44998 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 44999 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45000 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45001 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45002 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45003 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45004 97 /* page 433 */, 45005 98 /* page 434 */, 45006 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45007 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45008 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45009 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45010 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45011 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45012 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45013 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45014 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45015 99 /* page 444 */, 45016 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45017 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45018 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45019 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45020 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45021 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45022 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45023 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45024 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45025 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45026 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45027 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45028 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45029 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45030 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45031 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45032 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45033 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45034 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45035 100 /* page 464 */, 45036 101 /* page 465 */, 45037 102 /* page 466 */, 45038 103 /* page 467 */, 45039 104 /* page 468 */, 45040 105 /* page 469 */, 45041 106 /* page 470 */, 45042 107 /* page 471 */, 45043 UNICODE_OTHER_SYMBOL + UNICODE_MAX_TABLE_INDEX, 45044 UNICODE_OTHER_SYMBOL + UNICODE_MAX_TABLE_INDEX, 45045 108 /* page 474 */, 45046 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45047 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45048 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45049 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45050 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45051 109 /* page 480 */, 45052 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45053 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45054 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45055 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45056 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45057 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45058 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45059 110 /* page 488 */, 45060 111 /* page 489 */, 45061 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45062 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45063 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45064 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45065 112 /* page 494 */, 45066 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45067 113 /* page 496 */, 45068 114 /* page 497 */, 45069 115 /* page 498 */, 45070 116 /* page 499 */, 45071 UNICODE_OTHER_SYMBOL + UNICODE_MAX_TABLE_INDEX, 45072 UNICODE_OTHER_SYMBOL + UNICODE_MAX_TABLE_INDEX, 45073 117 /* page 502 */, 45074 118 /* page 503 */, 45075 119 /* page 504 */, 45076 120 /* page 505 */, 45077 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45078 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45079 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45080 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45081 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45082 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45083 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45084 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45085 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45086 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45087 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45088 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45089 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45090 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45091 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45092 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45093 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45094 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45095 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45096 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45097 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45098 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45099 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45100 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45101 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45102 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45103 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45104 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45105 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45106 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45107 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45108 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45109 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45110 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45111 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45112 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45113 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45114 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45115 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45116 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45117 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45118 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45119 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45120 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45121 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45122 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45123 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45124 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45125 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45126 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45127 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45128 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45129 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45130 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45131 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45132 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45133 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45134 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45135 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45136 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45137 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45138 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45139 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45140 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45141 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45142 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45143 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45144 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45145 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45146 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45147 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45148 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45149 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45150 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45151 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45152 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45153 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45154 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45155 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45156 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45157 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45158 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45159 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45160 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45161 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45162 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45163 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45164 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45165 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45166 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45167 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45168 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45169 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45170 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45171 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45172 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45173 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45174 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45175 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45176 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45177 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45178 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45179 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45180 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45181 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45182 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45183 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45184 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45185 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45186 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45187 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45188 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45189 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45190 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45191 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45192 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45193 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45194 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45195 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45196 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45197 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45198 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45199 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45200 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45201 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45202 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45203 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45204 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45205 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45206 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45207 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45208 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45209 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45210 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45211 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45212 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45213 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45214 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45215 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45216 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45217 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45218 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45219 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45220 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45221 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45222 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45223 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45224 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45225 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45226 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45227 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45228 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45229 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45230 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45231 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45232 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45233 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45234 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45235 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45236 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45237 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45238 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45239 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45240 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45241 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45242 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45243 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45244 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45245 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45246 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45247 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45248 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45249 121 /* page 678 */, 45250 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45251 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45252 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45253 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45254 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45255 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45256 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45257 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45258 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45259 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45260 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45261 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45262 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45263 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45264 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45265 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45266 122 /* page 695 */, 45267 123 /* page 696 */, 45268 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45269 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45270 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45271 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45272 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45273 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45274 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45275 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45276 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45277 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45278 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45279 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45280 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45281 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45282 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45283 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45284 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45285 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45286 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45287 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45288 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45289 124 /* page 718 */, 45290 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45291 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45292 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45293 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45294 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45295 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45296 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45297 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45298 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45299 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45300 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45301 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45302 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45303 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45304 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45305 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45306 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45307 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45308 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45309 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45310 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45311 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45312 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45313 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45314 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45315 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45316 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45317 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45318 125 /* page 747 */, 45319 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45320 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45321 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45322 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45323 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45324 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45325 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45326 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45327 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45328 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45329 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45330 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45331 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45332 UNICODE_OTHER_LETTER + UNICODE_MAX_TABLE_INDEX, 45333 126 /* page 762 */ 45334 }; 45335 45336 /* U+E0000 through U+10FFFF */ 45337 static const int16_t type_table_part2[768] = { 45338 127 /* page 3584 */, 45339 128 /* page 3585 */, 45340 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45341 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45342 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45343 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45344 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45345 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45346 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45347 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45348 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45349 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45350 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45351 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45352 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45353 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45354 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45355 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45356 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45357 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45358 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45359 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45360 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45361 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45362 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45363 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45364 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45365 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45366 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45367 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45368 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45369 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45370 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45371 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45372 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45373 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45374 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45375 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45376 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45377 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45378 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45379 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45380 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45381 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45382 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45383 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45384 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45385 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45386 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45387 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45388 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45389 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45390 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45391 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45392 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45393 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45394 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45395 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45396 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45397 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45398 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45399 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45400 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45401 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45402 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45403 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45404 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45405 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45406 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45407 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45408 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45409 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45410 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45411 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45412 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45413 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45414 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45415 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45416 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45417 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45418 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45419 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45420 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45421 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45422 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45423 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45424 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45425 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45426 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45427 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45428 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45429 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45430 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45431 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45432 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45433 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45434 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45435 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45436 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45437 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45438 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45439 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45440 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45441 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45442 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45443 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45444 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45445 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45446 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45447 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45448 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45449 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45450 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45451 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45452 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45453 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45454 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45455 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45456 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45457 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45458 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45459 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45460 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45461 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45462 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45463 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45464 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45465 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45466 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45467 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45468 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45469 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45470 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45471 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45472 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45473 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45474 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45475 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45476 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45477 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45478 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45479 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45480 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45481 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45482 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45483 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45484 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45485 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45486 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45487 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45488 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45489 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45490 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45491 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45492 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45493 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45494 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45495 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45496 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45497 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45498 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45499 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45500 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45501 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45502 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45503 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45504 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45505 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45506 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45507 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45508 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45509 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45510 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45511 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45512 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45513 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45514 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45515 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45516 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45517 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45518 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45519 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45520 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45521 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45522 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45523 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45524 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45525 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45526 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45527 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45528 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45529 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45530 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45531 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45532 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45533 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45534 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45535 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45536 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45537 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45538 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45539 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45540 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45541 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45542 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45543 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45544 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45545 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45546 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45547 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45548 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45549 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45550 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45551 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45552 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45553 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45554 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45555 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45556 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45557 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45558 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45559 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45560 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45561 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45562 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45563 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45564 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45565 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45566 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45567 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45568 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45569 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45570 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45571 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45572 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45573 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45574 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45575 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45576 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45577 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45578 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45579 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45580 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45581 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45582 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45583 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45584 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45585 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45586 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45587 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45588 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45589 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45590 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45591 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45592 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45593 UNICODE_UNASSIGNED + UNICODE_MAX_TABLE_INDEX, 45594 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45595 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45596 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45597 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45598 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45599 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45600 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45601 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45602 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45603 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45604 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45605 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45606 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45607 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45608 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45609 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45610 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45611 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45612 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45613 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45614 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45615 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45616 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45617 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45618 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45619 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45620 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45621 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45622 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45623 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45624 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45625 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45626 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45627 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45628 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45629 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45630 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45631 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45632 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45633 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45634 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45635 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45636 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45637 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45638 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45639 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45640 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45641 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45642 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45643 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45644 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45645 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45646 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45647 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45648 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45649 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45650 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45651 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45652 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45653 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45654 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45655 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45656 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45657 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45658 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45659 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45660 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45661 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45662 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45663 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45664 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45665 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45666 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45667 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45668 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45669 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45670 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45671 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45672 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45673 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45674 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45675 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45676 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45677 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45678 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45679 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45680 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45681 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45682 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45683 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45684 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45685 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45686 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45687 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45688 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45689 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45690 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45691 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45692 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45693 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45694 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45695 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45696 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45697 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45698 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45699 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45700 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45701 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45702 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45703 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45704 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45705 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45706 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45707 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45708 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45709 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45710 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45711 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45712 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45713 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45714 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45715 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45716 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45717 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45718 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45719 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45720 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45721 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45722 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45723 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45724 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45725 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45726 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45727 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45728 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45729 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45730 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45731 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45732 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45733 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45734 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45735 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45736 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45737 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45738 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45739 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45740 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45741 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45742 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45743 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45744 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45745 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45746 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45747 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45748 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45749 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45750 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45751 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45752 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45753 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45754 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45755 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45756 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45757 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45758 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45759 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45760 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45761 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45762 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45763 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45764 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45765 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45766 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45767 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45768 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45769 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45770 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45771 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45772 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45773 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45774 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45775 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45776 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45777 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45778 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45779 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45780 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45781 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45782 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45783 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45784 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45785 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45786 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45787 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45788 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45789 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45790 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45791 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45792 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45793 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45794 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45795 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45796 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45797 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45798 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45799 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45800 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45801 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45802 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45803 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45804 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45805 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45806 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45807 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45808 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45809 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45810 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45811 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45812 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45813 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45814 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45815 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45816 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45817 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45818 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45819 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45820 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45821 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45822 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45823 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45824 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45825 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45826 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45827 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45828 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45829 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45830 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45831 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45832 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45833 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45834 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45835 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45836 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45837 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45838 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45839 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45840 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45841 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45842 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45843 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45844 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45845 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45846 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45847 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45848 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45849 129 /* page 4095 */, 45850 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45851 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45852 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45853 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45854 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45855 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45856 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45857 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45858 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45859 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45860 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45861 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45862 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45863 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45864 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45865 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45866 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45867 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45868 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45869 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45870 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45871 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45872 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45873 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45874 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45875 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45876 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45877 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45878 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45879 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45880 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45881 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45882 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45883 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45884 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45885 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45886 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45887 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45888 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45889 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45890 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45891 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45892 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45893 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45894 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45895 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45896 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45897 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45898 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45899 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45900 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45901 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45902 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45903 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45904 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45905 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45906 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45907 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45908 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45909 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45910 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45911 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45912 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45913 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45914 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45915 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45916 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45917 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45918 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45919 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45920 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45921 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45922 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45923 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45924 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45925 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45926 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45927 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45928 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45929 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45930 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45931 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45932 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45933 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45934 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45935 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45936 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45937 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45938 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45939 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45940 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45941 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45942 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45943 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45944 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45945 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45946 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45947 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45948 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45949 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45950 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45951 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45952 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45953 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45954 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45955 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45956 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45957 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45958 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45959 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45960 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45961 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45962 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45963 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45964 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45965 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45966 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45967 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45968 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45969 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45970 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45971 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45972 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45973 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45974 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45975 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45976 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45977 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45978 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45979 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45980 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45981 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45982 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45983 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45984 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45985 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45986 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45987 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45988 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45989 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45990 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45991 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45992 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45993 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45994 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45995 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45996 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45997 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45998 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 45999 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46000 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46001 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46002 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46003 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46004 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46005 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46006 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46007 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46008 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46009 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46010 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46011 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46012 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46013 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46014 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46015 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46016 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46017 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46018 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46019 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46020 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46021 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46022 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46023 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46024 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46025 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46026 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46027 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46028 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46029 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46030 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46031 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46032 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46033 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46034 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46035 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46036 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46037 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46038 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46039 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46040 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46041 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46042 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46043 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46044 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46045 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46046 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46047 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46048 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46049 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46050 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46051 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46052 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46053 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46054 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46055 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46056 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46057 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46058 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46059 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46060 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46061 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46062 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46063 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46064 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46065 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46066 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46067 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46068 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46069 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46070 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46071 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46072 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46073 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46074 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46075 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46076 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46077 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46078 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46079 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46080 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46081 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46082 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46083 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46084 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46085 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46086 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46087 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46088 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46089 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46090 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46091 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46092 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46093 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46094 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46095 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46096 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46097 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46098 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46099 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46100 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46101 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46102 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46103 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46104 UNICODE_PRIVATE_USE + UNICODE_MAX_TABLE_INDEX, 46105 130 /* page 4351 */ 46106 }; 46107 46108 46109 46110 /** 46111 * next UTF-8 code point 46112 * 46113 * find the next UTF-8 code point in the string 46114 * 46115 * the validity of the found UTF-8 code point is not checked 46116 * 46117 * nextUTF8 gives wrong result when utf8 is not on the first byte of a code point 46118 * use findNextUTF8 to find next code point when utf8 is not at the start of a code point 46119 * 46120 * \param 46121 * utf8 UTF-8 encoded string 46122 * \return 46123 * pointer to next UTF-8 code point 46124 * NULL when the end string is reached or utf8 is NULL 46125 */ 46126 const char *nextUTF8(const char *utf8) { 46127 46128 if (!utf8 || !*utf8) { 46129 return(NULL); 46130 } 46131 46132 nxCodeUTF8(utf8); 46133 return(utf8); 46134 } 46135 46136 /** 46137 * buffer length next UTF-8 code point 46138 * 46139 * find the next UTF-8 code point in the string 46140 * 46141 * the validity of the found UTF-8 code point is not checked 46142 * 46143 * bLNextUTF8 gives wrong result when utf8 is not on the first byte of a code point 46144 * use findNextUTF8 to find next code point when utf8 is not at the start of a code point 46145 * 46146 * \param 46147 * string start of the UTF-8 encoded string 46148 * \param 46149 * utf8 pointer to a code point in string 46150 * \param 46151 * utf8Size string buffer size (including NUL, strlen(string) +1 when the buffer is full) 46152 * \return 46153 * pointer to next UTF-8 code point 46154 * NULL when the end string is reached or utf8 is NULL or the start of the next code point is outside the string 46155 */ 46156 const char *bLNextUTF8(const char *string, size_t utf8Size, const char *utf8) { 46157 46158 if (!string || !utf8 || !utf8Size || !*utf8 || (size_t)(utf8 - string) >= utf8Size) { 46159 return(NULL); 46160 } 46161 46162 nxCodeUTF8(utf8); 46163 if (((size_t)(utf8-string) >= utf8Size) || !*utf8) { 46164 return(NULL); 46165 } 46166 46167 return(utf8); 46168 } 46169 46170 /** 46171 * find next UTF-8 code point 46172 * even not at the start of a code point 46173 * 46174 * find the next UTF-8 code point in the string 46175 * 46176 * the validity of the found UTF-8 code point is not checked 46177 * 46178 * \param 46179 * string start of the UTF-8 encoded string 46180 * \param 46181 * utf8 pointer in string 46182 * \param 46183 * ut8Size string buffer size (including NUL, strlen(string) +1 when the buffer is full) 46184 * \return 46185 * pointer to next UTF-8 code point 46186 * NULL when the end string is reached or utf8 is NULL or the start of the next code point is outside the string 46187 */ 46188 const char *findNextUTF8(const char *string, size_t utf8Size, const char *utf8) { 46189 46190 if (!string || !utf8 || !utf8Size || !*utf8 || (size_t)(utf8 - string) >= utf8Size) { 46191 return(NULL); 46192 } 46193 46194 while (*utf8 && ((size_t)(utf8-string) < utf8Size)) { 46195 if ((*utf8++ & 0xC0) != 0x80) { 46196 break; 46197 } 46198 } 46199 if (((size_t)(utf8-string) >= utf8Size) || !*utf8) { 46200 return(NULL); 46201 } 46202 46203 return(utf8); 46204 } 46205 46206 /** 46207 * previous UTF-8 code point 46208 * 46209 * find the previous UTF-8 code point in the string 46210 * 46211 * the validity of the found UTF-8 code point is not checked 46212 * 46213 * the behavior is undefined when utf8 is the start of the string, use instead findPrevUTF8 for safe handling 46214 * 46215 * \param 46216 * utf8 UTF-8 encoded string 46217 * \return 46218 * pointer to previous UTF-8 code point 46219 * NULL when utf8 is NULL 46220 */ 46221 const char *prevUTF8(const char *utf8) { 46222 46223 if (!utf8) { 46224 return(NULL); 46225 } 46226 46227 forever { 46228 utf8--; 46229 if ((*utf8 & 0xC0) != 0x80) { 46230 return(utf8); 46231 } 46232 } 46233 } 46234 46235 /** 46236 * buffer previous UTF-8 code point 46237 * 46238 * find the previous UTF-8 code point in the string 46239 * 46240 * the validity of the found UTF-8 code point is not checked 46241 * 46242 * \param 46243 * string UTF-8 encoded string 46244 * \param 46245 * utf8 pointer in UTF-8 encoded string 46246 * \return 46247 * pointer to previous UTF-8 code point 46248 * NULL when utf8 is NULL 46249 */ 46250 const char *bPrevUTF8(const char *string, const char *utf8) { 46251 46252 if (!string || !utf8) { 46253 return(NULL); 46254 } 46255 46256 return(bPrevUTF8Tiny(string, utf8)); 46257 } 46258 46259 local const char *bPrevUTF8Tiny(const char *string, const char *utf8) { 46260 46261 while (utf8 > string) { 46262 utf8--; 46263 if ((*utf8 & 0xC0) != 0x80) { 46264 return(utf8); 46265 } 46266 } 46267 46268 return(NULL); 46269 } 46270 46271 local char *bPrevRWUTF8Tiny(const char *string, char *utf8) { 46272 46273 while (utf8 > string) { 46274 utf8--; 46275 if ((*utf8 & 0xC0) != 0x80) { 46276 return(utf8); 46277 } 46278 } 46279 46280 return(NULL); 46281 } 46282 46283 /** 46284 * index to pointer UTF8 encoded string 46285 * 46286 * Converts character index to pointer in utf8 46287 * 46288 * \param 46289 * utf8 UTF8 encoded string 46290 * \param 46291 * index character index in utf8, positive or negative. -1 is the last character in the string 46292 * \return 46293 * pointer to character at index 46294 * NULL when index is outside the string 46295 */ 46296 const char *idx2PtrUTF8(const char *utf8, int64_t index) { 46297 46298 if (!utf8 || !*utf8 || !index) { 46299 return(utf8); 46300 } 46301 46302 int64_t len = (int64_t)strlen(utf8); 46303 46304 if (index > 0) { 46305 if (index > len) { 46306 // index is outside the string 46307 return(NULL); 46308 } 46309 46310 // go forward 46311 const char *end = utf8 + len;; 46312 int64_t i = 0;; 46313 while (i != index) { 46314 nxCodeUTF8(utf8); 46315 if (utf8 > end) { 46316 return(NULL); 46317 } 46318 i++; 46319 } 46320 } 46321 else { 46322 if (index < -len) { 46323 // index is outside the string 46324 return(NULL); 46325 } 46326 46327 // go from the end 46328 const char *start = utf8;; 46329 utf8 += len;; 46330 int64_t i = 0;; 46331 while (i != index) { 46332 utf8 = bPrevUTF8Tiny(start, utf8);; 46333 i--; 46334 } 46335 } 46336 return(utf8); 46337 } 46338 46339 /** 46340 * index to pointer UTF8 encoded string - read write utf8 string (char*) 46341 * 46342 * Converts character index to pointer in utf8 46343 * 46344 * \param 46345 * utf8 UTF8 encoded string 46346 * \param 46347 * index character index in utf8, positive or negative. -1 is the last character in the string 46348 * \return 46349 * pointer to character at index 46350 * NULL when index is outside the string 46351 */ 46352 local char *idx2PtrRWUTF8(char *utf8, int64_t index) { 46353 46354 if (!utf8 || !*utf8 || !index) { 46355 return(utf8); 46356 } 46357 46358 int64_t len = (int64_t)strlen(utf8); 46359 46360 if (index > 0) { 46361 if (index > len) { 46362 // index is outside the string 46363 return(NULL); 46364 } 46365 46366 // go forward 46367 char *end = utf8 + len;; 46368 int64_t i = 0;; 46369 while (i != index) { 46370 nxCodeUTF8(utf8); 46371 if (utf8 > end) { 46372 return(NULL); 46373 } 46374 i++; 46375 } 46376 } 46377 else { 46378 if (index < -len) { 46379 // index is outside the string 46380 return(NULL); 46381 } 46382 46383 // go from the end 46384 char *start = utf8;; 46385 utf8 += len;; 46386 int64_t i = 0;; 46387 while (i != index) { 46388 utf8 = bPrevRWUTF8Tiny(start, utf8);; 46389 i--; 46390 } 46391 } 46392 return(utf8); 46393 } 46394 46395 const char *bLIdx2PtrUTF8(const char *utf8, size_t utf8Size, int64_t index) { 46396 46397 if (!utf8 || !*utf8 || !utf8Size || !index) { 46398 return(utf8); 46399 } 46400 46401 if (index > 0) { 46402 if ((size_t)index > utf8Size) { 46403 // index is outside the string 46404 return(NULL); 46405 } 46406 46407 // go forward 46408 const char *end = utf8 + utf8Size;; 46409 int64_t i = 0;; 46410 while (i != index) { 46411 nxCodeUTF8(utf8); 46412 if (utf8 >= end) { 46413 return(NULL); 46414 } 46415 i++; 46416 } 46417 } 46418 else { 46419 if (index < -(int64_t)utf8Size) { 46420 // index is outside the string 46421 return(NULL); 46422 } 46423 46424 // find string end 46425 size_t len; 46426 len = strlen(utf8); 46427 if (len+1 > utf8Size) { 46428 len = utf8Size - 1; 46429 } 46430 46431 // go from the end 46432 const char *start = utf8;; 46433 utf8 += len;; 46434 int64_t i = 0;; 46435 while (i != index) { 46436 utf8 = bPrevUTF8Tiny(start, utf8);; 46437 i--; 46438 } 46439 } 46440 return(utf8); 46441 } 46442 46443 /** 46444 * pointer to code point index UTF8 encoded string 46445 * 46446 * Converts pointer to character index 46447 * 46448 * This function works when utf8 and pos point inside code points 46449 * 46450 * \param 46451 * utf8 pointer to a code point in a UTF8 encoded string 46452 * \param 46453 * pos pointer to a code point in a UTF8 encoded string 46454 * \return 46455 * Number of code points from utf8 to pos, positive or negative 46456 * When utf8 < pos, the result is positive 46457 * When pos < utf8, the result is negative 46458 * 0 failed or index 0 46459 */ 46460 int64_t ptr2IdxUTF8(const char *utf8, const char *pos) { 46461 46462 if (!utf8 || !pos || utf8 == pos) { 46463 return(0); 46464 } 46465 46466 int64_t r = 0; 46467 46468 if (pos > utf8) { 46469 // there is at least one code point 46470 // find next code point, works even when utf8 points inside a code point 46471 while (*utf8) { 46472 if ((*utf8 & 0xC0) != 0x80) { 46473 // check utf8 is in a multibyte code point 46474 // if it is, find the end of the code point 46475 if ((*utf8 & 0xC0) == 0xC0) { 46476 nxCodeUTF8(utf8); 46477 } 46478 else { 46479 utf8++; 46480 } 46481 break; 46482 } 46483 utf8++; 46484 } 46485 r++; 46486 while (*utf8 && (utf8 < pos)) { 46487 nxCodeUTF8(utf8); 46488 r++; 46489 } 46490 if (utf8 > pos || !*utf8) { 46491 // pos points inside a code point, return index to pos code point 46492 // instead of next one 46493 // or reached the end of the string 46494 r--; 46495 } 46496 } 46497 else { 46498 while (utf8 > pos) { 46499 // find previous code point 46500 forever { 46501 utf8--; 46502 if ((*utf8 & 0xC0) != 0x80) { 46503 break; 46504 } 46505 } 46506 r--; 46507 } 46508 } 46509 return(r); 46510 } 46511 46512 /** 46513 * buffer pointer to code point index UTF8 encoded string 46514 * 46515 * Converts pointer to character index 46516 * 46517 * Safe function for negative index 46518 * 46519 * This function works when utf8 and pos point inside code points 46520 * 46521 * \param 46522 * start start of the UTF8 encoded string 46523 * \param 46524 * utf8 pointer to a code point in a UTF8 encoded string 46525 * \param 46526 * pos pointer to a code point in a UTF8 encoded string 46527 * \return 46528 * Number of code points from utf8 to pos, positive or negative 46529 * When utf8 < pos, the result is positive 46530 * When pos < utf8, the result is negative 46531 * 0 failed or index 0 46532 */ 46533 int64_t bPtr2IdxUTF8(const char *start, const char *utf8, const char *pos) { 46534 46535 if (!utf8 || !pos || utf8 == pos || !start || pos < start) { 46536 return(0); 46537 } 46538 46539 int64_t r = 0; 46540 46541 if (pos > utf8) { 46542 // there is at least one code point 46543 // find next code point, works even when utf8 points inside a code point 46544 while (*utf8) { 46545 if ((*utf8++ & 0xC0) != 0x80) { 46546 break; 46547 } 46548 } 46549 nxCodeUTF8(utf8); 46550 r++; 46551 while (*utf8 && (utf8 < pos)) { 46552 nxCodeUTF8(utf8); 46553 r++; 46554 } 46555 if (utf8 > pos || !*utf8) { 46556 // pos points inside a code point, return index to pos code point 46557 // instead of next one 46558 // or reached the end of the string 46559 r--; 46560 } 46561 } 46562 else { 46563 while ((utf8 > pos) && (utf8 > start)) { 46564 // find previous code point 46565 while (utf8 > start) { 46566 utf8--; 46567 if ((*utf8 & 0xC0) != 0x80) { 46568 break; 46569 } 46570 } 46571 r--; 46572 } 46573 } 46574 return(r); 46575 } 46576 46577 /** 46578 * buffer size pointer to code point index UTF8 encoded string 46579 * 46580 * Converts pointer to character index 46581 * 46582 * This function works when utf8 and pos point inside code points 46583 * 46584 * \param 46585 * utf8 pointer to a code point in a UTF8 encoded string 46586 * \param 46587 * utf8Size utf8 buffer size including NUL 46588 * \param 46589 * pos pointer to a code point in a UTF8 encoded string 46590 * \return 46591 * Number of code points from utf8 to pos, positive 46592 * -1 failed 46593 */ 46594 int64_t bLPtr2IdxUTF8(const char *utf8, size_t utf8Size, const char *pos) { 46595 46596 if (!utf8 || !utf8Size || !pos || (pos < utf8) || (pos >= (utf8+utf8Size))) { 46597 return(-1); 46598 } 46599 46600 int64_t r = 0; 46601 46602 // return 0 if utf8 = pos 46603 if (pos > utf8) { 46604 // there is at least one code point 46605 // find next code point, works even when utf8 points inside a code point 46606 const char *end = utf8+utf8Size-1;; 46607 while ((utf8 < end) && *utf8) { 46608 if ((*utf8++ & 0xC0) != 0x80) { 46609 break; 46610 } 46611 } 46612 nxCodeUTF8(utf8); 46613 r++; 46614 while ((utf8 < end) && *utf8 && (utf8 < pos)) { 46615 nxCodeUTF8(utf8); 46616 r++; 46617 } 46618 if (utf8 >= end || utf8 > pos || !*utf8) { 46619 // pos points inside a code point, return index to pos code point 46620 // instead of next one 46621 // or reached the end of the string 46622 r--; 46623 } 46624 } 46625 return(r); 46626 } 46627 46628 /** 46629 * buffer size pointer to negative code point index UTF8 encoded string 46630 * 46631 * Converts pointer to negative character index (from the end of the string) 46632 * 46633 * This function works when utf8 and pos point inside code points 46634 * 46635 * \param 46636 * utf8 pointer to a code point in a UTF8 encoded string 46637 * \param 46638 * utf8Size utf8 buffer size including NUL 46639 * \param 46640 * pos pointer to a code point in a UTF8 encoded string 46641 * \return 46642 * Number of code points from utf8 end to pos, negative 46643 * 0 failed 46644 */ 46645 int64_t bLPtr2NegIdxUTF8(const char *utf8, size_t utf8Size, const char *pos) { 46646 46647 if (!utf8 || !utf8Size || !pos || (pos < utf8) || (pos >= (utf8+utf8Size))) { 46648 return(0); 46649 } 46650 46651 int64_t r = 0; 46652 46653 const char *end = utf8+utf8Size-1; 46654 46655 while ((end > pos) && (end > utf8)) { 46656 // find previous code point 46657 while (end > utf8) { 46658 end--; 46659 if ((*end & 0xC0) != 0x80) { 46660 break; 46661 } 46662 } 46663 r--; 46664 } 46665 return(r); 46666 } 46667 46668 /** 46669 * make valid UTF-8 encoded string 46670 * 46671 * copy utf8 to newly allocated buffer, the invalid code points are 46672 * replaced with '?' 46673 * 46674 * The result buffer size is the same as utf8 size 46675 * 46676 * \param 46677 * utf8 valid or invalid UTF-8 encoded string 46678 * \result 46679 * new valid UTF-8 encoded string (you must free the pointer) 46680 * NULL failed 46681 */ 46682 char *makeValidUTF8(const char *utf8) { 46683 46684 if (!utf8) { 46685 return(NULL); 46686 } 46687 46688 char *r = malloc(strlen(utf8)+1); 46689 if (!r) { 46690 return(NULL); 46691 } 46692 46693 char *c = r; 46694 46695 while (*utf8) { 46696 if (isCodeUTF8(utf8)) { 46697 range(i, codeSizeUTF8(utf8)) { 46698 *c++ = *utf8++; 46699 } 46700 } 46701 else { 46702 *c = '?'; 46703 c++; 46704 utf8++; 46705 } 46706 } 46707 46708 *c = 0; 46709 46710 return(r); 46711 } 46712 46713 /** 46714 * buffer make valid UTF-8 encoded string 46715 * 46716 * replace the invalid code points with '?' in utf8 46717 * 46718 * \param 46719 * utf8 valid or invalid UTF-8 encoded string 46720 * \result 46721 * valid UTF-8 encoded string in utf8 buffer 46722 * NULL failed 46723 */ 46724 char *bMakeValidUTF8(char *utf8) { 46725 46726 if (!utf8) { 46727 return(NULL); 46728 } 46729 46730 char *r = utf8; 46731 46732 while (*utf8) { 46733 if (isCodeUTF8(utf8)) { 46734 nxCodeUTF8(utf8); 46735 } 46736 else { 46737 *utf8 = '?'; 46738 utf8++; 46739 } 46740 } 46741 46742 return(r); 46743 } 46744 46745 /** 46746 * length make valid UTF-8 encoded string 46747 * 46748 * copy utf8 to newly allocated buffer, the invalid code points are 46749 * replaced with '?' 46750 * 46751 * The result buffer size is utf8Len+1 46752 * 46753 * \param 46754 * utf8 valid or invalid UTF-8 encoded string 46755 * \param 46756 * utf8Len utf8 length 46757 * \result 46758 * new valid UTF-8 encoded string (you must free the pointer) 46759 * NULL failed 46760 */ 46761 char *nMakeValidUTF8(const char *utf8, size_t utf8Len) { 46762 46763 if (!utf8 || !utf8Len) { 46764 return(NULL); 46765 } 46766 46767 char *r = malloc(utf8Len+1); 46768 if (!r) { 46769 return(NULL); 46770 } 46771 46772 const char *end = utf8+utf8Len; 46773 char *c = r; 46774 46775 while (*utf8 && utf8 < end) { 46776 if (isCodeUTF8(utf8)) { 46777 range(i, codeSizeUTF8(utf8)) { 46778 *c++ = *utf8++; 46779 if (utf8 == end) { 46780 goto finish; 46781 } 46782 } 46783 } 46784 else { 46785 *c = '?'; 46786 c++; 46787 utf8++; 46788 } 46789 } 46790 46791 finish: 46792 *c = 0; 46793 46794 return(r); 46795 } 46796 46797 /** 46798 * buffer length make valid UTF-8 encoded string 46799 * 46800 * copy utf8 to the dst buffer, the invalid code points are 46801 * replaced with '?' 46802 * 46803 * The result buffer size is utf8Len+1 46804 * 46805 * \param 46806 * utf8 valid or invalid UTF-8 encoded string 46807 * \param 46808 * utf8Len utf8 length 46809 * \result 46810 * new valid UTF-8 encoded string 46811 * NULL failed 46812 */ 46813 char *bNMakeValidUTF8(char *dst, const char *utf8, size_t utf8Len) { 46814 46815 if (!dst || !utf8 || !utf8Len) { 46816 return(NULL); 46817 } 46818 46819 const char *end = utf8+utf8Len; 46820 char *c = dst; 46821 46822 while (*utf8 && utf8 < end) { 46823 if (isCodeUTF8(utf8)) { 46824 range(i, codeSizeUTF8(utf8)) { 46825 *c++ = *utf8++; 46826 if (utf8 == end) { 46827 goto finish; 46828 } 46829 } 46830 } 46831 else { 46832 *c = '?'; 46833 c++; 46834 utf8++; 46835 } 46836 } 46837 46838 finish: 46839 *c = 0; 46840 46841 return(dst); 46842 } 46843 46844 /** 46845 * buffer destination size make valid UTF-8 encoded string 46846 * 46847 * copy utf8 to the dst buffer, the invalid code points are 46848 * replaced with '?' 46849 * 46850 * The result buffer size is dstSize 46851 * 46852 * \param 46853 * dst destination buffer 46854 * \param 46855 * dstSize size of dst 46856 * \param 46857 * utf8 valid or invalid UTF-8 encoded string 46858 * \result 46859 * new valid UTF-8 encoded string 46860 * NULL failed 46861 */ 46862 char *bLMakeValidUTF8(char *dst, size_t dstSize, const char *utf8) { 46863 46864 if (!dst || !utf8 || !dstSize) { 46865 return(NULL); 46866 } 46867 46868 char *end = dst+dstSize-1; 46869 char *c = dst; 46870 46871 while (*utf8 && c < end) { 46872 if (isCodeUTF8(utf8)) { 46873 range(i, codeSizeUTF8(utf8)) { 46874 *c++ = *utf8++; 46875 if (c == end) { 46876 goto finish; 46877 } 46878 } 46879 } 46880 else { 46881 *c = '?'; 46882 c++; 46883 utf8++; 46884 } 46885 } 46886 46887 finish: 46888 *c = 0; 46889 46890 return(dst); 46891 } 46892 46893 /** 46894 * buffer destination size source length make valid UTF-8 encoded string 46895 * 46896 * copy utf8 to the dst buffer, the invalid code points are 46897 * replaced with '?' 46898 * 46899 * This function always reads less than utf8Len+1 bytes in utf8 buffer 46900 * The result buffer size is dstSize 46901 * 46902 * \param 46903 * dst destination buffer 46904 * \param 46905 * dstSize size of dst 46906 * \param 46907 * utf8 valid or invalid UTF-8 encoded string 46908 * \param 46909 * utf8Len utf8 length 46910 * \result 46911 * new valid UTF-8 encoded string 46912 * NULL failed 46913 */ 46914 char *bLNMakeValidUTF8(char *dst, size_t dstSize, const char *utf8, size_t utf8Len) { 46915 46916 if (!dst || !dstSize || !utf8 || !utf8Len) { 46917 return(NULL); 46918 } 46919 46920 const char *end = utf8+utf8Len; 46921 char *dstEnd = dst+dstSize-1; 46922 char *c = dst; 46923 46924 while (*utf8 && utf8 < end && c < dstEnd) { 46925 if (isCodeUTF8(utf8)) { 46926 range(i, codeSizeUTF8(utf8)) { 46927 *c++ = *utf8++; 46928 if (utf8 == end || c == dstEnd) { 46929 goto finish; 46930 } 46931 } 46932 } 46933 else { 46934 *c = '?'; 46935 c++; 46936 utf8++; 46937 } 46938 } 46939 46940 finish: 46941 *c = 0; 46942 46943 return(dst); 46944 } 46945 46946 // No need for randomUTF8 46947 46948 /** 46949 * strNCpyUTF8 - copy src to dst with srcLen in code points 46950 * 46951 * copy srcLen code points from src (UTF-8 encoded string) to dst and add one NUL character when src 46952 * end is not reached (unlike strncpy). 46953 * 46954 * \param 46955 * dst destination buffer 46956 * \param 46957 * src source string 46958 * \param 46959 * srcLen source buffer size in code points 46960 * \return 46961 * dst string 46962 * NULL error 46963 */ 46964 char *strNCpyUTF8(char *dst, const char *src, size_t srcLen) { 46965 46966 if (!dst || !src) { 46967 return(NULL); 46968 } 46969 46970 if (!srcLen) { 46971 return(dst); 46972 } 46973 46974 const char *c = src; 46975 size_t count = 0; 46976 46977 while (*c && count < srcLen) { 46978 nxCodeUTF8(c); 46979 count++; 46980 } 46981 46982 return(strncpy(dst, src, (size_t)(c-src))); 46983 } 46984 46985 /** 46986 * strLCpyUTF8 - copy src to dst 46987 * 46988 * like strncpy and the NUL char is always added at the end of the string 46989 * and the result string is always a valid UTF-8 encoded string 46990 * 46991 * \param 46992 * dst destination buffer 46993 * \param 46994 * dstSize destination buffer size, result string will be no longer than dstSize-1 46995 * \param 46996 * src source string 46997 * \return 46998 * dst string 46999 * NULL error 47000 */ 47001 char *strLCpyUTF8(char *dst, size_t dstSize, const char *src) { 47002 47003 if (!dst || !src) { 47004 return(NULL); 47005 } 47006 47007 char *r = strncpy(dst, src, dstSize);; 47008 if (dstSize) { 47009 r[dstSize-1] = 0; 47010 } 47011 pErrorNULL(bMakeValidUTF8(r)); 47012 return(r); 47013 } 47014 47015 /** 47016 * strNCatUTF8 - concatenate two UTF-8 encoded strings 47017 * 47018 * like strncat with sanity checks and srcLen is the number of code points 47019 * 47020 * \param 47021 * dst destination buffer 47022 * \param 47023 * src source string 47024 * \param 47025 * srcLen max source len in code points 47026 * \return 47027 * string with input strings concatenated 47028 * NULL error 47029 */ 47030 char *strNCatUTF8(char *dst, const char *src, size_t srcLen) { 47031 47032 if (!dst || !src) { 47033 return(NULL); 47034 } 47035 47036 if (!srcLen) { 47037 return(dst); 47038 } 47039 47040 const char *c = src; 47041 size_t count = 0; 47042 47043 while (*c && count < srcLen) { 47044 nxCodeUTF8(c); 47045 count++; 47046 } 47047 47048 return(strncat(dst, src, (size_t)(c-src))); 47049 } 47050 47051 /** 47052 * strLCatUTF8 - concatenate two UTF-8 encoded strings 47053 * 47054 * like strlcat with sanity checks 47055 * the result string is always a valid UTF-8 encoded string 47056 * 47057 * \param 47058 * dst destination buffer 47059 * \param 47060 * src source string 47061 * \param 47062 * dstSize destination buffer size, result string will be no longer than dstSize-1 47063 * \return 47064 * string with input strings concatenated 47065 * NULL error 47066 */ 47067 char *strLCatUTF8(char *dst, size_t dstSize, const char *src) { 47068 47069 if (!dst || !src) { 47070 return(NULL); 47071 } 47072 47073 size_t dL = strnlen(dst, dstSize); 47074 size_t dstLen = dstSize-1; 47075 47076 if (dL >= dstLen) { 47077 // buffer is full 47078 return(dst); 47079 } 47080 47081 size_t sL = strlen(src); 47082 47083 if (dL+sL > dstLen) { 47084 // truncate 47085 char *r = strncat(dst, src, dstLen - dL); 47086 pErrorNULL(bMakeValidUTF8(r)); 47087 return(r); 47088 } 47089 else { 47090 return(strcat(dst, src)); 47091 } 47092 } 47093 47094 /** 47095 * strLNCatUTF8 - concatenate two UTF-8 encoded strings 47096 * 47097 * like strlcat with sanity checks and srcLen is the number of code points 47098 * the result string is always a valid UTF-8 encoded string 47099 * 47100 * \param 47101 * dst destination buffer 47102 * \param 47103 * src source string 47104 * \param 47105 * dstSize destination buffer size, result string will be no longer than dstSize-1 47106 * \param 47107 * srcLen max source len in code points 47108 * \return 47109 * string with input strings concatenated 47110 * NULL error 47111 */ 47112 char *strLNCatUTF8(char *dst, size_t dstSize, const char *src, size_t srcLen) { 47113 47114 if (!dst || !src) { 47115 return(NULL); 47116 } 47117 47118 if (!srcLen) { 47119 return(dst); 47120 } 47121 47122 size_t dL = strnlen(dst, dstSize); 47123 size_t dstLen = dstSize-1; 47124 47125 if (dL >= dstLen) { 47126 // buffer is full 47127 return(dst); 47128 } 47129 47130 const char *c = src; 47131 size_t count = 0; 47132 47133 while (*c && count < srcLen) { 47134 nxCodeUTF8(c); 47135 count++; 47136 } 47137 47138 size_t sL = (size_t)(c-src); 47139 47140 if (dL+sL > dstLen) { 47141 // truncate 47142 char *r = strncat(dst, src, dstLen - dL); 47143 pErrorNULL(bMakeValidUTF8(r)); 47144 return(r); 47145 } 47146 else { 47147 return(strncat(dst, src, sL)); 47148 } 47149 } 47150 47151 /** 47152 * ignore case Replace UTF8 encoded String 47153 * the original remains unchanged 47154 * duplicate s 47155 * the olds string is replaced with the news string max times in the result 47156 * 0 for max means replace all olds strings 47157 * 47158 * \param 47159 * s: UTF8 encoded string 47160 * olds: old UTF8 encoded string to be replaced in s 47161 * news: new UTF8 encoded string replacing olds in s 47162 * max: number of times to replace olds, 0 to replace all found olds 47163 * \return 47164 * new string (you must free the pointer) 47165 * "" when s is empty 47166 * NULL when s is NULL 47167 * NULL when olds is empty 47168 */ 47169 char* icReplaceUTF8(const char UNUSED *s, const char UNUSED *olds, const char UNUSED *news, size_t UNUSED max ) { 47170 47171 // TODO changing UTF8 to lower case with casefold can change the 47172 // number of bytes in the string 47173 return(NULL); 47174 } 47175 47176 char *icReplaceCharSUTF8(const char *s UNUSED, char olds UNUSED, const char *news UNUSED, size_t max UNUSED) { 47177 47178 // TODO changing UTF8 to lower case with casefold can change the 47179 // number of bytes in the string 47180 return(NULL); 47181 } 47182 47183 char *icReplaceSCharUTF8(const char *s UNUSED, const char *olds UNUSED, char news UNUSED, size_t max UNUSED) { 47184 47185 // TODO changing UTF8 to lower case with casefold can change the 47186 // number of bytes in the string 47187 return(NULL); 47188 } 47189 47190 47191 /** 47192 * in place ignore case replace UTF8 encoded String 47193 * the olds UTF8 encoded string is replaced with the news UTF8 encoded string max times in the result 47194 * 0 for max means replace all olds strings 47195 * 47196 * \param 47197 * s: UTF8 encoded string 47198 * olds: old UTF8 encoded string to be replaced in s 47199 * news: new UTF8 encoded string replacing olds in s 47200 * max: number of times to replace olds, 0 to replace all found olds 47201 * \return 47202 * modified s string 47203 * NULL s not modified when s is NULL or empty and when olds is empty 47204 */ 47205 char* iicReplaceUTF8(char UNUSED **s, const char UNUSED *olds, const char UNUSED *news, size_t UNUSED max ) { 47206 47207 // TODO changing UTF8 to lower case with casefold can change the 47208 // number of bytes in the string 47209 return(NULL); 47210 } 47211 47212 char *iicReplaceCharSUTF8(char **s UNUSED, char olds UNUSED, const char *news UNUSED, size_t max UNUSED) { 47213 47214 // TODO changing UTF8 to lower case with casefold can change the 47215 // number of bytes in the string 47216 return(NULL); 47217 } 47218 47219 char *iicReplaceSCharUTF8(char **s UNUSED, const char *olds UNUSED, char news UNUSED, size_t max UNUSED) { 47220 47221 // TODO changing UTF8 to lower case with casefold can change the 47222 // number of bytes in the string 47223 return(NULL); 47224 } 47225 47226 47227 /** 47228 * buffer ignore case replace UTF8 encoded String 47229 * the olds string is replaced with the news string max times in the result 47230 * 0 for max means replace all olds strings 47231 * 47232 * \param 47233 * s: string 47234 * \param 47235 * olds: old string to be replaced in s 47236 * \param 47237 * news: new string replacing olds in s 47238 * \param 47239 * max: number of times to replace olds, 0 to replace all found olds 47240 * \return 47241 * modified s string 47242 * NULL s not modified when s is NULL or empty and when olds is empty 47243 */ 47244 char* bicReplaceUTF8(char UNUSED *s, const char UNUSED *olds, const char UNUSED *news, size_t UNUSED max ) { 47245 47246 // TODO changing UTF8 to lower case with casefold can change the 47247 // number of bytes in the string 47248 return(NULL); 47249 } 47250 47251 47252 /** 47253 * buffer size ignore case replace UTF8 encoded String 47254 * the olds string is replaced with the news string max times in the result 47255 * 0 for max means replace all olds strings 47256 * 47257 * \param 47258 * s: string 47259 * \param 47260 * olds: old string to be replaced in s 47261 * \param 47262 * news: new string replacing olds in s 47263 * \param 47264 * max: number of times to replace olds, 0 to replace all found olds 47265 * \return 47266 * modified s string 47267 * NULL s not modified when s is NULL or empty and when olds is empty 47268 */ 47269 char* bLicReplaceUTF8(char UNUSED *s, size_t UNUSED sSize, const char UNUSED *olds, const char UNUSED *news, size_t max UNUSED) { 47270 47271 // TODO changing UTF8 to lower case with casefold can change the 47272 // number of bytes in the string 47273 return(NULL); 47274 } 47275 47276 47277 /** 47278 * ignore case replace Many UTF8 encoded Strings 47279 * the original remains unchanged 47280 * duplicate s 47281 * the olds string is replaced with the news string max times in the result 47282 * 47283 * Example: 47284 * r = replaceManyUTF8("asd", "s", "BNM", "a", "AAA") 47285 * ^olds ^news ^olds ^news 47286 * 47287 * \param 47288 * s: string 47289 * \param 47290 * olds: old string to be replaced in s 47291 * \param 47292 * news: new string replacing olds in s 47293 * ... 47294 * \return 47295 * new string 47296 * "" when s is empty 47297 * NULL when s is NULL 47298 * NULL when only 2 parameters are given 47299 * NULL when any olds is empty 47300 */ 47301 char *icReplaceManyUTF8F(const char *paramType UNUSED, ...) { 47302 47303 // TODO changing UTF8 to lower case with casefold can change the 47304 // number of bytes in the string 47305 return(NULL); 47306 } 47307 47308 /** 47309 * in place ignore case replace Many UTF8 encoded Strings 47310 * the olds string is replaced with the news string max times in the result 47311 * 47312 * Example: 47313 * iicReplaceManyUTF8(s, "s", "BNM", "a", "AAA") 47314 * ^olds ^news ^olds ^news 47315 * 47316 * \param 47317 * string 47318 * \param 47319 * olds: old string to be replaced in s 47320 * \param 47321 * news: new string replacing olds in s 47322 * ... 47323 * \return 47324 * modified string 47325 * NULL not modified when s is empty, when s is NULL, when only 2 parameters are given, 47326 * when any olds is empty 47327 */ 47328 char *iicReplaceManyUTF8F(char **s UNUSED, char *paramType UNUSED, ...) { 47329 47330 // TODO changing UTF8 to lower case with casefold can change the 47331 // number of bytes in the string 47332 return(NULL); 47333 } 47334 47335 /** 47336 * buffer ignore case replace Many UTF8 encoded Strings 47337 * the olds string is replaced with the news string max times in the result 47338 * 47339 * Example: 47340 * bReplaceManyUTF8(s, "s", "BNM", "a", "AAA") 47341 * ^olds ^news ^olds ^news 47342 * 47343 * \param 47344 * string 47345 * \param 47346 * olds: old string to be replaced in s 47347 * \param 47348 * news: new string replacing olds in s 47349 * ... 47350 * \return 47351 * modified string 47352 * NULL not modified when s is empty, when s is NULL, when only 2 parameters are given, 47353 * when any olds is empty 47354 */ 47355 char *bicReplaceManyUTF8F(char *s UNUSED, char *paramType UNUSED, ...) { 47356 47357 // TODO changing UTF8 to lower case with casefold can change the 47358 // number of bytes in the string 47359 return(NULL); 47360 } 47361 47362 /** 47363 * buffer size ignore case replace Many UTF8 encoded Strings 47364 * the olds string is replaced with the news string max times in the result 47365 * 47366 * Example: 47367 * bReplaceManyUTF8(s, "s", "BNM", "a", "AAA") 47368 * ^olds ^news ^olds ^news 47369 * 47370 * \param 47371 * string 47372 * \param 47373 * olds: old string to be replaced in s 47374 * \param 47375 * news: new string replacing olds in s 47376 * ... 47377 * \return 47378 * modified string 47379 * NULL not modified when s is empty, when s is NULL, when only 2 parameters are given, 47380 * when any olds is empty 47381 */ 47382 char *bLicReplaceManyUTF8F(char *s UNUSED, size_t sSize UNUSED, char *paramType UNUSED, ...) { 47383 47384 // TODO changing UTF8 to lower case with casefold can change the 47385 // number of bytes in the string 47386 return(NULL); 47387 } 47388 47389 47390 /** 47391 * UTF8 encoded string Index Equal 47392 * compare string1 at character index to string2 47393 * when string2 is empty, the result is false 47394 * 47395 * \param 47396 * 2 strings 47397 * \return 47398 * true string1 at index is equal to string2 47399 * false they differ 47400 */ 47401 bool eqIUTF8(const char *string1, const char *string2, int64_t index) { 47402 47403 if (!string1) { 47404 return(false); 47405 } 47406 47407 const char *i = idx2PtrUTF8(string1, index); 47408 return(eqIS(string1, string2, (int64_t)(i-string1))); 47409 } 47410 47411 bool eqICharUTF8(const char *string1, char c, int64_t index) { 47412 47413 if (!string1) { 47414 return(false); 47415 } 47416 47417 const char *i = idx2PtrUTF8(string1, index); 47418 return(eqICharS(string1, c, (int64_t)(i-string1))); 47419 } 47420 47421 47422 /** 47423 * ignore case UTF8 encoded string Equal 47424 * compare string1 to string2 47425 * 47426 * \param 47427 * 2 strings 47428 * \return 47429 * true the strings have identical content 47430 * false they differ 47431 */ 47432 bool icEqUTF8(const char *string1, const char *string2) { 47433 47434 // sanity checks 47435 if (!string1 || !string2) { 47436 return(false); 47437 } 47438 47439 char *s1 = casefoldUTF8(string1); 47440 char *s2 = casefoldUTF8(string2); 47441 bool r = (strcmp(s1,s2) == 0); 47442 freeManyS(s1, s2); 47443 return(r); 47444 } 47445 47446 bool icEqCharUTF8(char c, const char *string2) { 47447 47448 // sanity checks 47449 if (!string2) { 47450 return(false); 47451 } 47452 47453 charToS(s, (char)tolower(c)); 47454 char *s2 = casefoldUTF8(string2); 47455 bool r = (strcmp(s,s2) == 0); 47456 free(s2); 47457 return(r); 47458 } 47459 47460 bool icEqUTF8Char(const char *string1, char c) { 47461 47462 // sanity checks 47463 if (!string1) { 47464 return(false); 47465 } 47466 47467 charToS(s, (char)tolower(c)); 47468 char *s1 = casefoldUTF8(string1); 47469 bool r = (strcmp(s1,s) == 0); 47470 free(s1); 47471 return(r); 47472 } 47473 47474 /** 47475 * ignore case UTF8 encoded string Index Equal 47476 * compare string1 at character index to string2 47477 * when string2 is empty, the result is false 47478 * 47479 * \param 47480 * 2 strings 47481 * \return 47482 * true string1 at index is equal to string2 47483 * false they differ 47484 */ 47485 bool icEqIUTF8(const char *string1 UNUSED, const char *string2 UNUSED, int64_t index UNUSED) { 47486 47487 // TODO casefold changes the number of character, index might change 47488 return(false); 47489 } 47490 47491 bool icEqICharUTF8(const char *string1 UNUSED, char c UNUSED, int64_t index UNUSED) { 47492 47493 // TODO casefold changes the number of character, index might change 47494 return(false); 47495 } 47496 47497 47498 /** 47499 * ignore case starts With UTF8 encoded String 47500 * compare start of string1 with string2 47501 * 47502 * \param 47503 * 2 strings 47504 * \return 47505 * true when string1 starts with string2 47506 * false for other cases 47507 */ 47508 bool icStartsWithUTF8(const char *string1, const char *string2) { 47509 47510 // sanity checks 47511 if (!string1 || !string2) { 47512 return(false); 47513 } 47514 47515 char *s1 = casefoldUTF8(string1); 47516 char *s2 = casefoldUTF8(string2); 47517 bool r = (strncmp(s1, s2, strlen(s2)) == 0); 47518 freeManyS(s1, s2); 47519 return(r); 47520 } 47521 47522 47523 /** 47524 * ignore case ends With UTF8 encoded String 47525 * compare end of string1 with string2 47526 * 47527 * \param 47528 * 2 strings 47529 * \return 47530 * true when string1 ends with string2 47531 * false for other cases 47532 */ 47533 bool icEndsWithUTF8(const char *string1, const char *string2) { 47534 bool r; 47535 47536 // sanity checks 47537 if (!string1 || !string2) { 47538 return(false); 47539 } 47540 47541 char *s1 = casefoldUTF8(string1); 47542 char *s2 = casefoldUTF8(string2); 47543 if (strlen(s1) < strlen(s2)) { 47544 r = false; 47545 goto end; 47546 } 47547 r = (strcmp(s1 + strlen(s1) - strlen(s2), s2) == 0); 47548 end: 47549 freeManyS(s1, s2); 47550 return(r); 47551 } 47552 47553 47554 /** 47555 * ignore case count UTF8 encoded String 47556 * count number of (non-overlapping) occurrences of a substring 47557 * 47558 * Example: 47559 * assert(countUTF8("aaa aaa", "a") == 6); 47560 * assert(countUTF8("aaa aaa", "ab") == 0); 47561 * assert(countUTF8("aaa aaa", "aa") == 2); 47562 * 47563 * \param 47564 * 2 strings 47565 * \return 47566 * string count 47567 * -1 when there is an error 47568 */ 47569 ssize_t icCountUTF8(const char *s, const char *needle) { 47570 char *lower = NULL; 47571 47572 // sanity checks 47573 if (!s || !needle) { 47574 return(-1); 47575 } 47576 47577 lower = casefoldUTF8(s); 47578 needle = casefoldUTF8(needle); 47579 ssize_t r = 0; 47580 size_t len = strlen(needle); 47581 47582 s = lower; 47583 while (s != NULL) { 47584 s = strstr(s, needle); 47585 if (s != NULL) { 47586 r++; 47587 s += len; 47588 } 47589 else { 47590 break; 47591 } 47592 } 47593 47594 freeManyS(lower, needle); 47595 return(r); 47596 } 47597 47598 /** some case convertions depend on the current LOCALE */ 47599 internal localeType getLocaleType(void) { 47600 47601 const char *locale = setlocale (LC_CTYPE, NULL);; 47602 47603 if (!locale) { 47604 return(LOCALE_NORMAL); 47605 } 47606 47607 switch (locale[0]) { 47608 case 'a': 47609 if (locale[1] == 'z') { 47610 return(LOCALE_TURKIC); 47611 } 47612 break; 47613 case 'l': 47614 if (locale[1] == 't') { 47615 return(LOCALE_LITHUANIAN); 47616 } 47617 break; 47618 case 't': 47619 if (locale[1] == 'r') { 47620 return(LOCALE_TURKIC); 47621 } 47622 break; 47623 default:; 47624 // return default value 47625 } 47626 47627 return(LOCALE_NORMAL); 47628 } 47629 47630 /** 47631 * UTF-8 code point to rune 47632 * 47633 * \param 47634 * code UTF-8 code point 47635 * \return 47636 * Rune 47637 * 0 failed 47638 */ 47639 rune code2RuneUTF8(const char *code) { 47640 uint8_t ln; 47641 47642 return(code2RuneLUTF8(code, &ln)); 47643 } 47644 47645 /** 47646 * UTF-8 code point to rune and length 47647 * 47648 * the code point length is returned in *n 47649 * 47650 * \param 47651 * code UTF-8 code point 47652 * \param 47653 * n pointer to returned code point length 47654 * \return 47655 * Rune 47656 * 0 failed 47657 */ 47658 rune code2RuneLUTF8(const char *code, uint8_t *n) { 47659 47660 if (!code || !*code || !n) { 47661 return(0); 47662 } 47663 47664 rune r; 47665 47666 *n = UTFSEQ(code[0]);; 47667 switch (*n) { 47668 case 1: 47669 r = code[0]; 47670 break; /* 0xxxxxxx */ 47671 case 2: 47672 r = code[0] & 0x1F; 47673 break; /* 110xxxxx */ 47674 case 3: 47675 r = code[0] & 0x0F; 47676 break; /* 1110xxxx */ 47677 case 4: 47678 r = code[0] & 0x07; 47679 break; /* 11110xxx */ 47680 case 5: 47681 r = code[0] & 0x03; 47682 break; /* 111110xx */ 47683 case 6: 47684 r = code[0] & 0x01; 47685 break; /* 1111110x */ 47686 default: /* invalid sequence */ 47687 return(0); 47688 } 47689 47690 // add values from continuation bytes 47691 rangeFrom(i, 1, *n) { 47692 if ((code[i] & 0xC0) == 0x80) { 47693 // add bits from continuation byte to rune value 47694 // cannot overflow: 6 byte sequences contain 31 bits 47695 // 10xxxxxx 47696 r = (r << 6) | (code[i] & 0x3F); 47697 } 47698 else { 47699 // expected continuation 47700 return(0); 47701 } 47702 } 47703 47704 if (runeLenUTF8(r) < *n) { 47705 return(0); 47706 } 47707 return(r); 47708 } 47709 47710 static int firstBytesUTF8[6] = {0, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC}; 47711 47712 /** 47713 * rune to UTF-8 code point 47714 * 47715 * \param 47716 * dst destination buffer at least 6 bytes or if NULL, the code point length is computed 47717 * \param 47718 * c UNICODE rune 47719 * \return 47720 * code point length and code point in dst 47721 * when dst is NULL, return code point length only 47722 * 0 bad rune, dst becomes an empty string 47723 */ 47724 size_t bRune2CodeUTF8(char *dst, rune c) { 47725 size_t len = 0;; 47726 int first; 47727 47728 len = runeLenUTF8(c); 47729 if (!len) { 47730 // bad rune 47731 if (dst) { 47732 *dst = 0; 47733 } 47734 return(0); 47735 } 47736 47737 first = firstBytesUTF8[len-1]; 47738 47739 if (dst) { 47740 rangeDownTo(i, (ssize_t)len, 1) { 47741 dst[i] = (char)((c & 0x3f) | 0x80); 47742 c >>= 6; 47743 } 47744 dst[0] = (char)(c | first); 47745 } 47746 47747 return(len); 47748 } 47749 47750 /** 47751 * rune length as UTF-8 code point 47752 * 47753 * \param 47754 * r UNICODE rune 47755 * \return 47756 * code point length 47757 * 0 bad rune 47758 */ 47759 uint8_t runeLenUTF8(rune r) { 47760 47761 if (BADRUNE(r)) { 47762 // error 47763 return(0); 47764 } 47765 else if (r < 0x80) { 47766 return(1); 47767 } 47768 else if (r < 0x800) { 47769 return(2); 47770 } 47771 else if (r < 0x10000) { 47772 return(3); 47773 } 47774 else if (r < 0x200000) { 47775 return(4); 47776 } 47777 else if (r < 0x4000000) { 47778 return(5); 47779 } 47780 else { 47781 return(6); 47782 } 47783 } 47784 47785 // constants for hangul syllable [de]composition 47786 #define SBase 0xAC00 47787 #define LBase 0x1100 47788 #define VBase 0x1161 47789 #define TBase 0x11A7 47790 #define LCount 19 47791 #define VCount 21 47792 #define TCount 28 47793 #define NCount (VCount * TCount) 47794 #define SCount (LCount * NCount) 47795 47796 /* http://www.unicode.org/unicode/reports/tr15/#Hangul 47797 * r should be null or have sufficient space. Calling with r == NULL will 47798 * only calculate the result len; however, a buffer with space for three 47799 * characters will always be big enough. */ 47800 internal size_t decompose_hangul(rune s, rune *r) { 47801 int32_t SIndex = s - SBase;; 47802 int32_t TIndex = SIndex % TCount;; 47803 47804 if (r) { 47805 r[0] = LBase + SIndex / NCount; 47806 r[1] = VBase + (SIndex % NCount) / TCount; 47807 } 47808 47809 if (TIndex) { 47810 if (r) { 47811 r[2] = TBase + TIndex; 47812 } 47813 return(3); 47814 } 47815 else { 47816 return(2); 47817 } 47818 } 47819 47820 /* returns a pointer to a null-terminated UTF-8 string */ 47821 internal const char *find_decomposition (rune ch) { 47822 int start = 0;; 47823 int end = ARRAY_SIZE(decomp_table);; 47824 47825 if (ch >= decomp_table[start].ch && ch <= decomp_table[end - 1].ch) { 47826 forever { 47827 int half = (start + end) / 2; 47828 if (ch == decomp_table[half].ch) { 47829 int offset = decomp_table[half].canon_offset;; 47830 if (offset == UNICODE_NOT_PRESENT_OFFSET) { 47831 return(NULL); 47832 } 47833 47834 return(&(decomp_expansion_string[offset])); 47835 } 47836 else if (half == start) { 47837 break; 47838 } 47839 else if (ch > decomp_table[half].ch) { 47840 start = half; 47841 } 47842 else { 47843 end = half; 47844 } 47845 } 47846 } 47847 47848 return(NULL); 47849 } 47850 47851 47852 internal size_t runeFullyDecompose(rune ch, rune *result, size_t resultLen) { 47853 const char *decomp = NULL; 47854 const char *p = NULL; 47855 47856 // Hangul syllable 47857 if (ch >= SBase && ch < SBase + SCount) { 47858 rune buffer[3]; 47859 size_t len = decompose_hangul(ch, result ? buffer : NULL); 47860 if (result) { 47861 for (size_t i = 0; i < len && i < resultLen; i++) { 47862 result[i] = buffer[i]; 47863 } 47864 } 47865 return(len); 47866 } 47867 else if (EVA(decomp, find_decomposition (ch)) != NULL) { 47868 // Found it. 47869 size_t len = lenUTF8(decomp); 47870 size_t i; 47871 for (p = decomp, i = 0; i < len && i < resultLen; nxCodeUTF8(p), i++) { 47872 result[i] = code2RuneUTF8(p); 47873 } 47874 47875 return(len); 47876 } 47877 47878 // Does not decompose 47879 if (result && resultLen >= 1) { 47880 *result = ch; 47881 } 47882 return(1); 47883 } 47884 47885 internal size_t output_marks(const char **p_inout, char *dst, bool remove_dot) { 47886 const char *p = NULL; 47887 size_t len = 0;; 47888 47889 p = *p_inout; 47890 47891 while (*p) { 47892 rune c = code2RuneUTF8(p);; 47893 47894 if (ISMARK(RUNETYPE(c))) { 47895 if (!remove_dot || c != 0x307) { 47896 // COMBINING DOT ABOVE 47897 len += bRune2CodeUTF8(dst ? dst + len : NULL, c); 47898 } 47899 nxCodeUTF8(p); 47900 } 47901 else { 47902 break; 47903 } 47904 } 47905 47906 *p_inout = p; 47907 return(len); 47908 } 47909 47910 internal size_t output_special_case(char *dst, int offset, int type, int which) { 47911 const char *p = NULL; 47912 size_t len; 47913 47914 p = special_case_table + offset; 47915 47916 if (type != UNICODE_TITLECASE_LETTER) { 47917 nxCodeUTF8(p); 47918 } 47919 47920 if (which == 1) { 47921 p += strlen(p) + 1; 47922 } 47923 47924 len = strlen(p); 47925 if (dst) { 47926 memcpy(dst, p, len); 47927 } 47928 47929 return(len); 47930 } 47931 47932 /** 47933 * rune toupper UTF8 47934 * 47935 * Converts a character to uppercase. 47936 * 47937 * \param 47938 * c rune 47939 * \return 47940 * c converted to uppercase 47941 * c unchanged if c has no upper case or is not lowercase or titlecase 47942 */ 47943 rune toupperUTF8(rune c) { 47944 int t = RUNETYPE(c);; 47945 47946 if (t == UNICODE_LOWERCASE_LETTER) { 47947 rune val = ATTTABLE (c >> 8, c & 0xff); 47948 if (val >= 0x1000000) { 47949 const char *p = special_case_table + val - 0x1000000;; 47950 val = code2RuneUTF8(p); 47951 } 47952 // Some lowercase letters, e.g., U+000AA, FEMININE ORDINAL INDICATOR, 47953 // do not have an uppercase equivalent, in which case val will be 47954 // zero. 47955 return(val ? val : c); 47956 } 47957 else if (t == UNICODE_TITLECASE_LETTER) { 47958 range(i, ARRAY_SIZE(title_table)) { 47959 if (title_table[i][0] == c) { 47960 return(title_table[i][1] ? title_table[i][1] : c); 47961 } 47962 } 47963 } 47964 return(c); 47965 } 47966 47967 internal size_t _upperUTF8(char *dst, const char *utf8, localeType lcl) { 47968 size_t len = 0;; 47969 const char *last = NULL; 47970 bool last_was_i = FALSE;; 47971 47972 while (*utf8) { 47973 rune c = code2RuneUTF8(utf8); 47974 int t = RUNETYPE(c); 47975 47976 last = utf8; 47977 47978 nxCodeUTF8(utf8); 47979 47980 if (lcl == LOCALE_LITHUANIAN) { 47981 if (c == 'i') { 47982 last_was_i = TRUE; 47983 } 47984 else { 47985 if (last_was_i) { 47986 rune decomp[RUNE_MAX_DECOMPOSITION_LENGTH]; 47987 size_t decompLen = runeFullyDecompose(c, decomp, ARRAY_SIZE(decomp)); 47988 range(i, decompLen) { 47989 if (decomp[i] != 0x307) { 47990 // COMBINING DOT ABOVE 47991 len += bRune2CodeUTF8(dst ? dst + len : NULL, toupperUTF8(decomp[i]));; 47992 } 47993 } 47994 47995 len += output_marks(&utf8, dst ? dst + len : NULL, TRUE);; 47996 continue; 47997 } 47998 47999 if (!ISMARK(t)) { 48000 last_was_i = FALSE; 48001 } 48002 } 48003 } 48004 48005 if (lcl == LOCALE_TURKIC && c == 'i') { 48006 // i => LATIN CAPITAL LETTER I WITH DOT ABOVE 48007 len += bRune2CodeUTF8(dst ? dst + len : NULL, 0x130); 48008 } 48009 else if (c == 0x0345) { 48010 // COMBINING GREEK YPOGEGRAMMENI 48011 len += output_marks(&utf8, dst ? dst + len : NULL, FALSE); 48012 48013 // And output as GREEK CAPITAL LETTER IOTA 48014 len += bRune2CodeUTF8(dst ? dst + len : NULL, 0x399); 48015 } 48016 else if (IS(t, OR(UNICODE_LOWERCASE_LETTER, OR(UNICODE_TITLECASE_LETTER, 0)))) { 48017 rune val = ATTTABLE (c >> 8, c & 0xff); 48018 48019 if (val >= 0x1000000) { 48020 len += output_special_case (dst ? dst + len : NULL, val - 0x1000000, t, t == UNICODE_LOWERCASE_LETTER ? 0 : 1); 48021 } 48022 else { 48023 if (t == UNICODE_TITLECASE_LETTER) { 48024 range(i, ARRAY_SIZE(title_table)) { 48025 if (title_table[i][0] == c) { 48026 val = title_table[i][1]; 48027 break; 48028 } 48029 } 48030 } 48031 48032 // Some lowercase letters, e.g., U+000AA, FEMININE ORDINAL INDICATOR, 48033 // do not have an uppercase equivalent, in which case val will be 48034 // zero. 48035 len += bRune2CodeUTF8(dst ? dst + len : NULL, val ? val : c); 48036 } 48037 } 48038 else { 48039 uint8_t codeLen = codeSizeUTF8(last); 48040 48041 if ((dst)) { 48042 memcpy(dst + len, last, codeLen); 48043 } 48044 48045 len += codeLen;; 48046 } 48047 } 48048 if (dst) { 48049 *(dst+len) = 0; 48050 } 48051 return(len); 48052 } 48053 48054 48055 /** 48056 * upper case UTF-8 encoded string 48057 * duplicate string 48058 * 48059 * \param 48060 * string UTF-8 encoded string 48061 * \return 48062 * new upper case string (you must free the pointer) 48063 */ 48064 char *upperUTF8(const char *utf8) { 48065 char *r = NULL; 48066 48067 // sanity checks 48068 if (!utf8) { 48069 return(NULL); 48070 } 48071 48072 localeType lcl = getLocaleType(); 48073 48074 size_t len = _upperUTF8(NULL, utf8, lcl); 48075 r = malloc(len+1); 48076 if (!r) { 48077 return(NULL); 48078 } 48079 _upperUTF8(r, utf8, lcl); 48080 return(r); 48081 } 48082 48083 /** 48084 * upper case UTF-8 encoded string 48085 * 48086 * \param 48087 * string (this parameter is reallocated) 48088 * \return 48089 * upper case string (you must free the pointer) 48090 * NULL error 48091 */ 48092 char *iUpperUTF8(char **utf8) { 48093 48094 if (!utf8 || !*utf8) { 48095 return(NULL); 48096 } 48097 48098 char *s = upperUTF8(*utf8); 48099 48100 free(*utf8); 48101 *utf8 = s; 48102 48103 return(*utf8); 48104 } 48105 48106 /** 48107 * buffer upper case String 48108 * 48109 * \param 48110 * string 48111 * \return 48112 * upper case string 48113 * NULL error 48114 */ 48115 char *bUpperUTF8(char *utf8 UNUSED) { 48116 48117 // TODO 48118 return(NULL); 48119 } 48120 48121 /** 48122 * runeCombiningClass: 48123 * @uc: a Unicode character 48124 * 48125 * Determines the canonical combining class of a Unicode character. 48126 * 48127 * Returns: the combining class of the character 48128 **/ 48129 local int runeCombiningClass (rune uc) { 48130 48131 return(COMBINING_CLASS(uc)); 48132 } 48133 48134 /* traverses the string checking for characters with combining class == 230 48135 * until a base character is found */ 48136 internal bool has_more_above (const char *str) { 48137 const char *p = NULL; 48138 int combining_class; 48139 48140 p = str; 48141 while (*p) { 48142 combining_class = runeCombiningClass(code2RuneUTF8(p)); 48143 if (combining_class == 230) { 48144 return(TRUE); 48145 } 48146 else if (combining_class == 0) { 48147 break; 48148 } 48149 48150 nxCodeUTF8(p); 48151 } 48152 48153 return(FALSE); 48154 } 48155 48156 /** 48157 * rune tolower UTF8 48158 * 48159 * Converts a character to lower case. 48160 * 48161 * \param 48162 * c UNICODE rune 48163 * \return 48164 * lowercase c 48165 * c unchanged if c has lowercase or is not an uppercase or titlecase character 48166 **/ 48167 rune tolowerUTF8(rune c) { 48168 48169 int t = RUNETYPE(c); 48170 if (t == UNICODE_UPPERCASE_LETTER) { 48171 rune val = ATTTABLE (c >> 8, c & 0xff); 48172 if (val >= 0x1000000) { 48173 const char *p = special_case_table + val - 0x1000000; 48174 return(code2RuneUTF8(p)); 48175 } 48176 else { 48177 // Not all uppercase letters are guaranteed to have a lowercase 48178 // equivalent. If this is the case, val will be zero. 48179 return(val ? val : c); 48180 } 48181 } 48182 else if (t == UNICODE_TITLECASE_LETTER) { 48183 range(i, ARRAY_SIZE(title_table)) { 48184 if (title_table[i][0] == c) { 48185 return(title_table[i][2]); 48186 } 48187 } 48188 } 48189 return(c); 48190 } 48191 48192 internal size_t _lowerUTF8(char *dst, const char *utf8, localeType lcl) { 48193 size_t len = 0;; 48194 const char *last = NULL; 48195 48196 while (*utf8) { 48197 rune c = code2RuneUTF8(utf8); 48198 int t = RUNETYPE(c); 48199 48200 last = utf8; 48201 48202 nxCodeUTF8(utf8); 48203 48204 rune val; 48205 48206 if ((lcl == LOCALE_TURKIC && c == 'I')) { 48207 if (code2RuneUTF8(utf8) == 0x0307) { 48208 // I + COMBINING DOT ABOVE => i (U+0069) 48209 len += bRune2CodeUTF8(dst ? dst + len : NULL, 0x0069); 48210 nxCodeUTF8(utf8); 48211 } 48212 else { 48213 // I => LATIN SMALL LETTER DOTLESS I 48214 len += bRune2CodeUTF8(dst ? dst + len : NULL, 0x131); 48215 } 48216 } 48217 // Introduce an explicit dot above when lowercasing capital I's and J's 48218 // whenever there are more accents above. [SpecialCasing.txt] 48219 else if (lcl == LOCALE_LITHUANIAN && (c == 0x00cc || c == 0x00cd || c == 0x0128)) { 48220 len += bRune2CodeUTF8(dst ? dst + len : NULL, 0x0069); 48221 len += bRune2CodeUTF8(dst ? dst + len : NULL, 0x0307); 48222 48223 switch (c) { 48224 case 0x00cc: 48225 len += bRune2CodeUTF8(dst ? dst + len : NULL, 0x0300); 48226 break; 48227 case 0x00cd: 48228 len += bRune2CodeUTF8(dst ? dst + len : NULL, 0x0301); 48229 break; 48230 case 0x0128: 48231 len += bRune2CodeUTF8(dst ? dst + len : NULL, 0x0303); 48232 break; 48233 default:; 48234 // do nothing 48235 } 48236 } 48237 else if (lcl == LOCALE_LITHUANIAN && (c == 'I' || c == 'J' || c == 0x012e) && has_more_above (utf8)) { 48238 len += bRune2CodeUTF8(dst ? dst+len : NULL, tolowerUTF8(c)); 48239 len += bRune2CodeUTF8(dst ? dst+len : NULL, 0x0307); 48240 } 48241 else if (c == 0x03A3) { 48242 // GREEK CAPITAL LETTER SIGMA 48243 if (*utf8) { 48244 rune next_c = code2RuneUTF8(utf8);; 48245 int next_type = RUNETYPE(next_c);; 48246 48247 // SIGMA maps differently depending on whether it is 48248 // final or not. The following simplified test would 48249 // fail in the case of combining marks following the 48250 // sigma, but I don't think that occurs in real text. 48251 // The test here matches that in ICU. 48252 // Lu,Ll,Lt,Lm,Lo 48253 if (ISALPHA(next_type)) { 48254 // GREEK SMALL SIGMA 48255 val = 0x3c3; 48256 } 48257 else { 48258 // GREEK SMALL FINAL SIGMA 48259 val = 0x3c2; 48260 } 48261 } 48262 else { 48263 // GREEK SMALL FINAL SIGMA 48264 val = 0x3c2; 48265 } 48266 48267 len += bRune2CodeUTF8(dst ? dst + len : NULL, val); 48268 } 48269 else if (IS (t, OR (UNICODE_UPPERCASE_LETTER, OR (UNICODE_TITLECASE_LETTER, 0)))) { 48270 val = ATTTABLE(c >> 8, c & 0xff); 48271 48272 if (val >= 0x1000000) { 48273 len += output_special_case(dst ? dst + len : NULL, val - 0x1000000, t, 0); 48274 } 48275 else { 48276 if (t == UNICODE_TITLECASE_LETTER) { 48277 range(i, ARRAY_SIZE(title_table)) { 48278 if (title_table[i][0] == c) { 48279 val = title_table[i][2]; 48280 break; 48281 } 48282 } 48283 } 48284 48285 // Not all uppercase letters are guaranteed to have a lowercase 48286 // equivalent. If this is the case, val will be zero. 48287 len += bRune2CodeUTF8(dst ? dst+len : NULL, val ? val : c);; 48288 } 48289 } 48290 48291 else { 48292 uint8_t codeLen = codeSizeUTF8(last); 48293 48294 if ((dst)) { 48295 memcpy(dst+len, last, codeLen); 48296 } 48297 48298 len += codeLen;; 48299 } 48300 } 48301 48302 if (dst) { 48303 *(dst+len) = 0; 48304 } 48305 return(len); 48306 } 48307 48308 /** 48309 * lower case UTF-8 String 48310 * duplicate string 48311 * 48312 * \param 48313 * string 48314 * \return 48315 * new lower case string (you must free the pointer) 48316 */ 48317 char *lowerUTF8(const char *utf8) { 48318 char *r = NULL; 48319 48320 // sanity checks 48321 if (!utf8) { 48322 return(NULL); 48323 } 48324 48325 localeType lcl = getLocaleType(); 48326 48327 size_t len = _lowerUTF8(NULL, utf8, lcl); 48328 r = malloc(len+1); 48329 if (!r) { 48330 return(NULL); 48331 } 48332 _lowerUTF8(r, utf8, lcl); 48333 return(r); 48334 } 48335 48336 /** 48337 * lower case String 48338 * 48339 * \param 48340 * string (this parameter is reallocated) 48341 * \return 48342 * lower case string (you must free the pointer) 48343 * NULL error 48344 */ 48345 char *iLowerUTF8(char **utf8) { 48346 48347 if (!utf8 || !*utf8) { 48348 return(NULL); 48349 } 48350 48351 char *s = lowerUTF8(*utf8); 48352 48353 free(*utf8); 48354 *utf8 = s; 48355 48356 return(*utf8); 48357 } 48358 48359 /** 48360 * buffer lower case String 48361 * 48362 * \param 48363 * string 48364 * \return 48365 * lower case string 48366 * NULL error 48367 */ 48368 char *bLowerUTF8(char *string UNUSED) { 48369 48370 // TODO 48371 return(NULL); 48372 } 48373 48374 /** 48375 * casefold UTF-8 encoded string 48376 * 48377 * \param 48378 * utf8 UTF-8 encoded string 48379 * \return 48380 * new string (you must free the pointer) 48381 * NULL when utf8 is NULL 48382 */ 48383 char *casefoldUTF8(const char *utf8) { 48384 char *r = NULL; 48385 48386 if (!utf8) { 48387 return(NULL); 48388 } 48389 48390 emptyS(r); 48391 48392 while (*utf8) { 48393 rune ch = code2RuneUTF8(utf8); 48394 48395 int start = 0; 48396 int end = ARRAY_SIZE(casefold_table); 48397 48398 if (ch >= casefold_table[start].ch && ch <= casefold_table[end - 1].ch) { 48399 forever { 48400 int half = (start + end) / 2; 48401 if (ch == casefold_table[half].ch) { 48402 pErrorNULL(iAppendS(&r, casefold_table[half].data)); 48403 goto next; 48404 } 48405 else if (half == start) { 48406 break; 48407 } 48408 else if (ch > casefold_table[half].ch) { 48409 start = half; 48410 } 48411 else { 48412 end = half; 48413 } 48414 } 48415 } 48416 48417 char code[8] = {0, 0, 0, 0, 0, 0, 0, 0}; 48418 pError0(bRune2CodeUTF8(code, tolowerUTF8(ch))); 48419 pErrorNULL(iAppendS(&r, code)); 48420 48421 next: 48422 nxCodeUTF8(utf8); 48423 } 48424 48425 return(r); 48426 } 48427 48428 /** 48429 * uniq UTF-8 String 48430 * duplicate string 48431 * 48432 * remove successive repetitions of UTF-8 code point code 48433 * 48434 * \param 48435 * string 48436 * \param 48437 * c character to remove 48438 * \return 48439 * new string without successive repetitions of char c (you must free the pointer) 48440 */ 48441 char *uniqUTF8(const char *string, const char *code) { 48442 char *r = NULL; 48443 size_t len; 48444 48445 // sanity checks 48446 if (!string || !code) { 48447 return(NULL); 48448 } 48449 48450 r = strdup(string); 48451 if (!r) { 48452 return(NULL); 48453 } 48454 len = lenUTF8(string); 48455 48456 if (len < 2) { 48457 // string is too short to have repetitions 48458 return(r); 48459 } 48460 48461 char *p = r; 48462 char *c = nextCodeUTF8(r); 48463 nxCodeUTF8(string); 48464 48465 while (*string) { 48466 if (startsWithS(p, code) && startsWithS(string, code)) { 48467 // skip 48468 goto next; 48469 } 48470 else { 48471 memcpy(c, string, codeSizeUTF8(string)); 48472 nxCodeUTF8(c); 48473 } 48474 48475 next: 48476 nxCodeUTF8(string); 48477 nxCodeUTF8(p); 48478 } 48479 48480 *c = 0; 48481 48482 return(r); 48483 } 48484 48485 /** 48486 * uniq UTF-8 String 48487 * 48488 * remove successive repetitions of char c 48489 * 48490 * \param 48491 * string 48492 * \param 48493 * c character to remove 48494 * \return 48495 * string without successive repetitions of char c 48496 * NULL error 48497 */ 48498 char *iUniqUTF8(char **string, const char *code) { 48499 size_t len; 48500 48501 // sanity checks 48502 if (!string || !*string || !code) { 48503 return(NULL); 48504 } 48505 48506 len = lenUTF8(*string); 48507 48508 if (len < 2) { 48509 // string is too short to have repetitions 48510 return(*string); 48511 } 48512 48513 char *p = *string; 48514 char *s = *string; 48515 char *c = nextCodeUTF8(*string); 48516 nxCodeUTF8(s); 48517 48518 while (*s) { 48519 if (startsWithS(p, code) && startsWithS(s, code)) { 48520 // skip 48521 goto next; 48522 } 48523 else { 48524 memcpy(c, s, codeSizeUTF8(s)); 48525 nxCodeUTF8(c); 48526 } 48527 48528 next: 48529 nxCodeUTF8(s); 48530 nxCodeUTF8(p); 48531 } 48532 48533 *c = 0; 48534 48535 return(*string); 48536 } 48537 48538 48539 /** 48540 * buffer uniq String 48541 * 48542 * remove successive repetitions of char c 48543 * 48544 * \param 48545 * string 48546 * \param 48547 * c character to remove 48548 * \return 48549 * string without successive repetitions of char c 48550 * NULL error 48551 */ 48552 char *bUniqUTF8(char *string, const char *code) { 48553 size_t len; 48554 48555 // sanity checks 48556 if (!string || !code) { 48557 return(NULL); 48558 } 48559 48560 len = lenUTF8(string); 48561 48562 if (len < 2) { 48563 // string is too short to have repetitions 48564 return(string); 48565 } 48566 48567 char *p = string; 48568 char *s = string; 48569 char *c = nextCodeUTF8(string); 48570 nxCodeUTF8(s); 48571 48572 while (*s) { 48573 if (startsWithS(p, code) && startsWithS(s, code)) { 48574 // skip 48575 goto next; 48576 } 48577 else { 48578 memcpy(c, s, codeSizeUTF8(s)); 48579 nxCodeUTF8(c); 48580 } 48581 48582 next: 48583 nxCodeUTF8(s); 48584 nxCodeUTF8(p); 48585 } 48586 48587 *c = 0; 48588 48589 return(string); 48590 } 48591 48592 /** 48593 * ignore case uniq String 48594 * duplicate string 48595 * 48596 * remove successive repetitions of char c 48597 * 48598 * \param 48599 * string 48600 * \param 48601 * c character to remove 48602 * \return 48603 * new string without successive repetitions of char c (you must free the pointer) 48604 */ 48605 char *icUniqUTF8(const char *string UNUSED, const char *code UNUSED) { 48606 48607 // TODO casefoldUTF8 changes the string length in bytes and characters 48608 return(NULL); 48609 } 48610 48611 /** 48612 * in place ignore case uniq String 48613 * 48614 * remove successive repetitions of char c 48615 * 48616 * \param 48617 * string 48618 * \param 48619 * c character to remove 48620 * \return 48621 * string without successive repetitions of char c 48622 * NULL error 48623 */ 48624 char *iicUniqUTF8(char **string UNUSED, const char *code UNUSED) { 48625 48626 // TODO casefoldUTF8 changes the string length in bytes and characters 48627 return(NULL); 48628 } 48629 48630 /** 48631 * ignore case buffer uniq String 48632 * 48633 * remove successive repetitions of char c 48634 * 48635 * \param 48636 * string 48637 * \param 48638 * c character to remove 48639 * \return 48640 * string without successive repetitions of char c 48641 * NULL error 48642 */ 48643 char *bicUniqUTF8(char *string UNUSED, char c UNUSED) { 48644 48645 // TODO casefoldUTF8 changes the string length in bytes and characters 48646 return(NULL); 48647 } 48648 48649 48650 /** 48651 * get UTF8 encoded string 48652 * 48653 * get char at python index 48654 * 48655 */ 48656 rune getUTF8(const char *string, int64_t index) { 48657 int64_t len; 48658 48659 if (!string) { 48660 return(0); 48661 } 48662 48663 len = (int64_t)lenUTF8(string); 48664 if (index >= len) { 48665 return(0); 48666 } 48667 if (index < -len) { 48668 return(0); 48669 } 48670 if (index < 0) { 48671 index = len + index; 48672 } 48673 48674 const char *c = idx2PtrUTF8(string, index); 48675 return(code2RuneUTF8(c)); 48676 } 48677 48678 48679 /** 48680 * set UTF8 encoded string 48681 * 48682 * set char at python index 48683 * 48684 * TODO this function might make the string invalid UTF8 48685 * check codeSizeUTF8 and adjust the buffer 48686 */ 48687 char *setUTF8(char *string, int64_t index, rune c) { 48688 int64_t len; 48689 48690 if (!string) { 48691 return(NULL); 48692 } 48693 48694 len = (int64_t)lenUTF8(string); 48695 if (index >= len) { 48696 return(NULL); 48697 } 48698 if (index < -len) { 48699 return(NULL); 48700 } 48701 if (index < 0) { 48702 index = len + index; 48703 } 48704 48705 char *p = idx2PtrRWUTF8(string, index); 48706 pError0(bRune2CodeUTF8(p, c)); 48707 // TODO check code point length and shift string end when necessary 48708 return(string); 48709 } 48710 48711 48712 /** 48713 * slice UTF8 encoded String 48714 * return new string which is the string between start and end 48715 * negative indexes are allowed 48716 * 48717 * (copy substring from start to end) 48718 * 48719 * \param 48720 * string to slice 48721 * \param 48722 * start: start character index, must be in the string 48723 * \param 48724 * end: end character index, must be in the string after start 48725 * \return 48726 * new sliced string (you must free the pointer) 48727 * "" when start=end 48728 * NULL when start and end are not set correctly 48729 */ 48730 char *sliceUTF8(const char *string, int64_t start, int64_t end) { 48731 char *s = NULL; 48732 int64_t len; 48733 48734 // sanity checks 48735 if (!string) { 48736 return(NULL); 48737 } 48738 48739 len = (int64_t)lenUTF8(string); 48740 48741 if (start > len) { 48742 return(NULL); 48743 } 48744 if (end > len) { 48745 end = len; 48746 } 48747 if (start <= -len) { 48748 start = -len; 48749 } 48750 if (end <= -len) { 48751 return(NULL); 48752 } 48753 if (start < 0) { 48754 start = len + start; 48755 } 48756 if (end <= 0) { 48757 end = len + end; 48758 } 48759 if (end < start) { 48760 return(NULL); 48761 } 48762 48763 if (start == end) { 48764 emptyS(s) 48765 } 48766 else { 48767 // start < end < len 48768 // copy range to a new string 48769 const char *startp = idx2PtrUTF8(string, start); 48770 const char *endp = idx2PtrUTF8(string, end); 48771 size_t n; 48772 n = (size_t)(endp - startp); 48773 s = MALLOC((n+1)); 48774 if (!s) { 48775 return(NULL);//LCOV_EXCL_LINE 48776 } 48777 s = strncpy(s, string+(size_t)(startp-string), n); 48778 s[n] = 0; 48779 } 48780 48781 return(s); 48782 } 48783 48784 48785 /** 48786 * slice UTF8 encoded String 48787 * return string which is the string between start and end 48788 * negative indexes are allowed 48789 * 48790 * \param 48791 * string to slice (this parameter is reallocated) 48792 * \param 48793 * start: start character index, must be in the string 48794 * \param 48795 * end: end character index, must be in the string after start 48796 * \return 48797 * sliced string (you must free the pointer) 48798 * "" when start=end 48799 * NULL unchanged string when start and end are not set correctly 48800 */ 48801 char *iSliceUTF8(char **string, int64_t start, int64_t end) { 48802 char *s = NULL; 48803 int64_t len; 48804 48805 // sanity checks 48806 if (!string || !*string) { 48807 return(NULL); 48808 } 48809 48810 len = (int64_t)lenUTF8(*string); 48811 48812 if (start > len) { 48813 free(*string); 48814 emptyS(*string); 48815 return(NULL); 48816 } 48817 if (end > len) { 48818 end = len; 48819 } 48820 if (start <= -len) { 48821 start = -len; 48822 } 48823 if (end <= -len) { 48824 free(*string); 48825 emptyS(*string); 48826 return(NULL); 48827 } 48828 if (start < 0) { 48829 start = len + start; 48830 } 48831 if (end <= 0) { 48832 end = len + end; 48833 } 48834 if (end < start) { 48835 free(*string); 48836 emptyS(*string); 48837 return(NULL); 48838 } 48839 48840 if (start == end) { 48841 emptyS(s); 48842 } 48843 else { 48844 // start < end < len 48845 // copy range to a new string 48846 const char *startp = idx2PtrUTF8(*string, start); 48847 const char *endp = idx2PtrUTF8(*string, end); 48848 size_t n; 48849 n = (size_t)(endp - startp); 48850 s = MALLOC(n+1); 48851 if (!s) { 48852 return(NULL); 48853 } 48854 s = strncpy(s, (*string)+(size_t)(startp-*string), n); 48855 s[n] = 0; 48856 } 48857 48858 free(*string); 48859 *string = s; 48860 return(s); 48861 } 48862 48863 48864 /** 48865 * buffer slice UTF8 encoded String 48866 * return string which is the string between start and end 48867 * negative indexes are allowed 48868 * 48869 * \param 48870 * string to slice 48871 * \param 48872 * start: start index, must be in the string 48873 * \param 48874 * end: end index, must be in the string after start 48875 * \return 48876 * sliced string 48877 * "" when start=end 48878 * NULL unchanged string when start and end are not set correctly 48879 */ 48880 char *bSliceUTF8(char *string, int64_t start, int64_t end) { 48881 int64_t len; 48882 48883 // sanity checks 48884 if (!string) { 48885 return(NULL); 48886 } 48887 48888 len = (int64_t)lenUTF8(string); 48889 48890 if (start > len) { 48891 bEmptyS(string); 48892 return(NULL); 48893 } 48894 if (end > len) { 48895 end = len; 48896 } 48897 if (start <= -len) { 48898 start = -len; 48899 } 48900 if (end <= -len) { 48901 bEmptyS(string); 48902 return(NULL); 48903 } 48904 if (start < 0) { 48905 start = len + start; 48906 } 48907 if (end <= 0) { 48908 end = len + end; 48909 } 48910 if (end < start) { 48911 bEmptyS(string); 48912 return(NULL); 48913 } 48914 48915 if (start == end) { 48916 bEmptyS(string); 48917 } 48918 else { 48919 // start < end < len 48920 // copy range to a new string 48921 const char *startp = idx2PtrUTF8(string, start); 48922 const char *endp = idx2PtrUTF8(string, end); 48923 size_t n; 48924 n = (size_t)(endp - startp); 48925 memmove(string, string+(size_t)(startp-string), n); 48926 string[n] = 0; 48927 } 48928 48929 return(string); 48930 } 48931 48932 48933 /** 48934 * buffer size slice UTF8 encoded String 48935 * return string which is the string between start and end 48936 * negative indexes are allowed 48937 * 48938 * \param 48939 * string to slice 48940 * \param 48941 * stringSize string buffer size 48942 * \param 48943 * start: start character index, must be in the string 48944 * \param 48945 * end: end character index, must be in the string after start 48946 * \return 48947 * sliced string 48948 * "" when start=end 48949 * NULL unchanged string when start and end are not set correctly 48950 */ 48951 char *bLSliceUTF8(char *string, size_t stringSize, int64_t start, int64_t end) { 48952 int64_t len; 48953 48954 // sanity checks 48955 if (!string || !stringSize) { 48956 return(NULL); 48957 } 48958 48959 len = (int64_t)strlen(string); 48960 if ((size_t)len+1 > stringSize) { 48961 len = (int64_t)(stringSize - 1); 48962 } 48963 48964 if (start > len) { 48965 bEmptyS(string); 48966 return(NULL); 48967 } 48968 if (end > len) { 48969 end = len; 48970 } 48971 if (start <= -len) { 48972 start = -len; 48973 } 48974 if (end <= -len) { 48975 bEmptyS(string); 48976 return(NULL); 48977 } 48978 if (start < 0) { 48979 start = len + start; 48980 } 48981 if (end <= 0) { 48982 end = len + end; 48983 } 48984 if (end < start) { 48985 bEmptyS(string); 48986 return(NULL); 48987 } 48988 48989 const char *startp = bLIdx2PtrUTF8(string, stringSize, start); 48990 const char *endp = bLIdx2PtrUTF8(string, stringSize, end); 48991 48992 size_t starto = (size_t)(startp-string); 48993 size_t endo = (size_t)(endp-string); 48994 48995 // compute string length without NUL 48996 stringSize--; 48997 if (starto > stringSize) { 48998 bEmptyS(string); 48999 return(NULL); 49000 } 49001 if (endo > stringSize) { 49002 end = (int64_t)stringSize; 49003 } 49004 if (start == 0) { 49005 starto = 0; 49006 } 49007 if (end < start) { 49008 bEmptyS(string); 49009 return(NULL); 49010 } 49011 49012 if (start == end) { 49013 bEmptyS(string); 49014 } 49015 else { 49016 // start < end < stringSize 49017 // copy range to a new string 49018 size_t n; 49019 n = (size_t)(endp - startp); 49020 memmove(string, string+starto, n); 49021 string[n] = 0; 49022 } 49023 49024 return(string); 49025 } 49026 49027 49028 /** 49029 * insert string in UTF8 encoded string at index 49030 * 49031 * return new string with toInsert at index 49032 * negative indexes are allowed 49033 * index -1 is the end of the array and is equivalent to index len 49034 * 49035 * \param 49036 * string UTF8 encoded string 49037 * \param 49038 * index character index in string 49039 * \param 49040 * toInsert UTF8 encoded string 49041 * \return 49042 * new string (you must free the pointer) 49043 * NULL when string is NULL or invalid index 49044 */ 49045 char *insertUTF8(const char *string, int64_t index, const char *toInsert) { 49046 char *r = NULL; 49047 int64_t len; 49048 49049 // sanity checks 49050 if (!string) { 49051 if (index || !toInsert) { 49052 return(NULL); 49053 } 49054 return(strdup(toInsert)); 49055 } 49056 49057 len = (int64_t)lenUTF8(string); 49058 49059 if (!len && index == -1) { 49060 // empty string, index -1 is equal to 0 49061 index = 0; 49062 } 49063 bool neg = false; 49064 if (index < 0) { 49065 neg = true; 49066 } 49067 49068 if (index > len) { 49069 return(NULL); 49070 } 49071 if (neg) { 49072 index++; 49073 } 49074 if (index < -len) { 49075 return(NULL); 49076 } 49077 if (neg) { 49078 index = len + index; 49079 } 49080 49081 49082 if (!toInsert || isEmptyS(toInsert)) { 49083 return(strdup(string)); 49084 } 49085 49086 if (index == 0) { 49087 // insert at beginning 49088 return(catS(toInsert, string)); 49089 } 49090 49091 int64_t offset = idx2PtrUTF8(string, index) - string; 49092 char *s1 = sliceS(string, 0, offset); 49093 char *s2 = sliceS(string, offset, 0); 49094 r = catS(s1, toInsert, s2); 49095 freeManyS(s1,s2); 49096 49097 return(r); 49098 } 49099 49100 49101 /** 49102 * insert string in UTF8 encoded string at index and free toInsert 49103 * 49104 * return new string with toInsert at index 49105 * negative indexes are allowed 49106 * index -1 is the end of the array and is equivalent to index len 49107 * 49108 * \param 49109 * string UTF8 encoded string 49110 * \param 49111 * index character index in string 49112 * \param 49113 * toInsert UTF8 encoded string 49114 * \return 49115 * new string (you must free the pointer) 49116 * NULL when string is NULL or invalid index 49117 */ 49118 char *insertNFreeUTF8(const char *string, int64_t index, char *toInsert) { 49119 char *r = NULL; 49120 int64_t len; 49121 49122 // sanity checks 49123 if (!string) { 49124 if (index) { 49125 return(NULL); 49126 } 49127 if (!toInsert) { 49128 return(NULL); 49129 } 49130 r = strdup(toInsert); 49131 free(toInsert); 49132 return(r); 49133 } 49134 49135 len = (int64_t)lenUTF8(string); 49136 49137 if (!len && index == -1) { 49138 // empty string, index -1 is equal to 0 49139 index = 0; 49140 } 49141 bool neg = false; 49142 if (index < 0) { 49143 neg = true; 49144 } 49145 49146 if (index > len) { 49147 return(NULL); 49148 } 49149 if (neg) { 49150 index++; 49151 } 49152 if (index < -len) { 49153 return(NULL); 49154 } 49155 if (neg) { 49156 index = len + index; 49157 } 49158 49159 49160 if (!toInsert || isEmptyS(toInsert)) { 49161 free(toInsert); 49162 return(strdup(string)); 49163 } 49164 49165 if (index == 0) { 49166 // insert at beginning 49167 r = catS(toInsert, string); 49168 free(toInsert); 49169 return(r); 49170 } 49171 49172 int64_t offset = idx2PtrUTF8(string, index) - string; 49173 char *s1 = sliceS(string, 0, offset); 49174 char *s2 = sliceS(string, offset, 0); 49175 r = catS(s1, toInsert, s2); 49176 freeManyS(s1,s2, toInsert); 49177 49178 return(r); 49179 } 49180 49181 49182 /** 49183 * insert string in UTF8 encoded string at index 49184 * 49185 * return string with toInsert at index 49186 * negative indexes are allowed 49187 * index -1 is the end of the array and is equivalent to index len 49188 * 49189 * \param 49190 * string UTF8 encoded string (this parameter is reallocated) 49191 * \param 49192 * index character index in string 49193 * \param 49194 * toInsert UTF8 encoded string 49195 * \return 49196 * modified string (you must free the pointer) 49197 * NULL unchanged string when string is NULL or invalid index 49198 */ 49199 char *iInsertUTF8(char **string, int64_t index, const char *toInsert) { 49200 char *r = NULL; 49201 int64_t len; 49202 49203 // sanity checks 49204 if (!string) { 49205 return(NULL); 49206 } 49207 if (!*string) { 49208 if (index) { 49209 return(NULL); 49210 } 49211 r = strdup(toInsert); 49212 *string = r; 49213 return(r); 49214 } 49215 49216 len = (int64_t)lenUTF8(*string); 49217 49218 if (!len && index == -1) { 49219 // empty string, index -1 is equal to 0 49220 index = 0; 49221 } 49222 bool neg = false; 49223 if (index < 0) { 49224 neg = true; 49225 } 49226 49227 if (index > len) { 49228 return(NULL); 49229 } 49230 if (neg) { 49231 index++; 49232 } 49233 if (index < -len) { 49234 return(NULL); 49235 } 49236 if (neg) { 49237 index = len + index; 49238 } 49239 49240 49241 if (!toInsert || isEmptyS(toInsert)) { 49242 return(*string); 49243 } 49244 49245 if (index == 0) { 49246 // insert at beginning 49247 r = catS(toInsert, *string); 49248 } 49249 else { 49250 int64_t offset = idx2PtrUTF8(*string, index) - *string; 49251 char *s1 = sliceS(*string, 0, offset); 49252 char *s2 = sliceS(*string, offset, 0); 49253 r = catS(s1, toInsert, s2); 49254 freeManyS(s1,s2); 49255 } 49256 49257 free(*string); 49258 *string = r; 49259 return(r); 49260 } 49261 49262 49263 /** 49264 * insert string in UTF8 encoded string at index and free toInsert 49265 * 49266 * return string with toInsert at index 49267 * negative indexes are allowed 49268 * index -1 is the end of the array and is equivalent to index len 49269 * 49270 * \param 49271 * string UTF8 encoded string (this parameter is reallocated) 49272 * \param 49273 * index character index in string 49274 * \param 49275 * toInsert UTF8 encoded string 49276 * \return 49277 * modified string (you must free the pointer) 49278 * NULL unchanged string when string is NULL or invalid index 49279 */ 49280 char *iInsertNFreeUTF8(char **string, int64_t index, char *toInsert) { 49281 char *r = NULL; 49282 int64_t len; 49283 49284 // sanity checks 49285 if (!string) { 49286 return(NULL); 49287 } 49288 if (!*string) { 49289 if (index) { 49290 return(NULL); 49291 } 49292 r = strdup(toInsert); 49293 free(toInsert); 49294 *string = r; 49295 return(r); 49296 } 49297 49298 len = (int64_t)lenUTF8(*string); 49299 49300 if (!len && index == -1) { 49301 // empty string, index -1 is equal to 0 49302 index = 0; 49303 } 49304 bool neg = false; 49305 if (index < 0) { 49306 neg = true; 49307 } 49308 49309 if (index > len) { 49310 return(NULL); 49311 } 49312 if (neg) { 49313 index++; 49314 } 49315 if (index < -len) { 49316 return(NULL); 49317 } 49318 if (neg) { 49319 index = len + index; 49320 } 49321 49322 49323 if (!toInsert || isEmptyS(toInsert)) { 49324 free(toInsert); 49325 return(*string); 49326 } 49327 49328 if (index == 0) { 49329 // insert at beginning 49330 r = catS(toInsert, *string); 49331 } 49332 else { 49333 int64_t offset = idx2PtrUTF8(*string, index) - *string; 49334 char *s1 = sliceS(*string, 0, offset); 49335 char *s2 = sliceS(*string, offset, 0); 49336 r = catS(s1, toInsert, s2); 49337 freeManyS(s1,s2); 49338 } 49339 free(toInsert); 49340 49341 free(*string); 49342 *string = r; 49343 return(r); 49344 } 49345 49346 49347 /** 49348 * buffer insert string in UTF8 encoded string at index 49349 * 49350 * return string with toInsert at index 49351 * negative indexes are allowed 49352 * index -1 is the end of the array and is equivalent to index len 49353 * 49354 * \param 49355 * string UTF8 encoded string 49356 * \param 49357 * index character index in string 49358 * \param 49359 * toInsert UTF8 encoded string 49360 * \return 49361 * modified string 49362 * NULL unchanged string when string is NULL or invalid index 49363 */ 49364 char *bInsertUTF8(char *string, int64_t index, const char *toInsert) { 49365 int64_t len; 49366 49367 // sanity checks 49368 if (!string) { 49369 return(NULL); 49370 } 49371 49372 len = (int64_t)lenUTF8(string); 49373 49374 if (!len && index == -1) { 49375 // empty string, index -1 is equal to 0 49376 index = 0; 49377 } 49378 bool neg = false; 49379 if (index < 0) { 49380 neg = true; 49381 } 49382 49383 if (index > len) { 49384 return(NULL); 49385 } 49386 if (neg) { 49387 index++; 49388 } 49389 if (index < -len) { 49390 return(NULL); 49391 } 49392 if (neg) { 49393 index = len + index; 49394 } 49395 49396 49397 if (!toInsert || isEmptyS(toInsert)) { 49398 return(string); 49399 } 49400 49401 if (index == 0) { 49402 // insert at beginning 49403 char *s = alloca((size_t)(len+1)); 49404 strcpy(s, string); 49405 pErrorNULL(bCatS(string, toInsert, s)); 49406 } 49407 else { 49408 int64_t offset = idx2PtrUTF8(string, index) - string; 49409 char *s1 = alloca((size_t)(offset+1)); 49410 pErrorNULL(strLCpy(s1, (size_t)(offset+1), string)); 49411 char *s2 = alloca((size_t)(len-offset+1)); 49412 strcpy(s2, string+offset); 49413 pErrorNULL(bCatS(string, s1, toInsert, s2)); 49414 } 49415 return(string); 49416 } 49417 49418 49419 /** 49420 * buffer size insert string in UTF8 encoded string at index 49421 * 49422 * return string with toInsert at index 49423 * negative indexes are allowed 49424 * index -1 is the end of the array and is equivalent to index len 49425 * 49426 * \param 49427 * string UTF8 encoded string 49428 * \param 49429 * index character index in string 49430 * \param 49431 * toInsert UTF8 encoded string 49432 * \return 49433 * modified string 49434 * NULL unchanged string when string is NULL or invalid index 49435 */ 49436 char *bLInsertUTF8(char *string, size_t stringSize, int64_t index, const char *toInsert) { 49437 int64_t len; 49438 49439 // sanity checks 49440 if (!string) { 49441 return(NULL); 49442 } 49443 49444 if (!stringSize) { 49445 // string size is 0 - no change 49446 return(string); 49447 } 49448 49449 len = (int64_t)bLLenUTF8(string, stringSize); 49450 49451 if (!len && index == -1) { 49452 // empty string, index -1 is equal to 0 49453 index = 0; 49454 } 49455 bool neg = false; 49456 if (index < 0) { 49457 neg = true; 49458 } 49459 49460 if (index > len) { 49461 return(NULL); 49462 } 49463 if (neg) { 49464 index++; 49465 } 49466 if (index < -len) { 49467 return(NULL); 49468 } 49469 if (neg) { 49470 index = len + index; 49471 } 49472 49473 49474 if (!toInsert || isEmptyS(toInsert)) { 49475 return(string); 49476 } 49477 49478 if (index == 0) { 49479 // insert at beginning 49480 char *s = alloca((size_t)(len+1));; 49481 strcpy(s, string); 49482 pErrorNULL(bLCatS(string, stringSize, toInsert, s)); 49483 } 49484 else { 49485 int64_t offset = bLIdx2PtrUTF8(string, stringSize, index) - string; 49486 char *s1 = alloca((size_t)(offset+1)); 49487 pErrorNULL(strLCpy(s1, (size_t)(offset+1), string)); 49488 char *s2 = alloca((size_t)(len-offset+1)); 49489 strcpy(s2, string+offset); 49490 pErrorNULL(bLCatS(string, stringSize, s1, toInsert, s2)); 49491 } 49492 return(string); 49493 } 49494 49495 49496 /** 49497 * delete UTF8 encoded string 49498 * 49499 * return new string without the string between start and end 49500 * negative indexes are allowed 49501 * 49502 * \param 49503 * string to delete 49504 * \param 49505 * start: start character index, must be in the string 49506 * \param 49507 * end: end character index, must be in the string after start 49508 * \return 49509 * new sliced string (you must free the pointer) 49510 * new identical string when start=end or when start and end are not set correctly 49511 * NULL when input string is NULL or when malloc failed or when end is under start 49512 */ 49513 char *delUTF8(const char *string, int64_t start, int64_t end) { 49514 char *s = NULL; 49515 int64_t len; 49516 49517 // sanity checks 49518 if (!string) { 49519 return(NULL); 49520 } 49521 49522 len = (int64_t)lenUTF8(string); 49523 49524 if (start >= len) { 49525 start = len; 49526 } 49527 if (end > len) { 49528 end = len; 49529 } 49530 if (start <= -len) { 49531 start = -len; 49532 } 49533 if (end <= -len) { 49534 end = -len; 49535 } 49536 if (start < 0) { 49537 start = len + start; 49538 } 49539 if (end <= 0) { 49540 end = len + end; 49541 } 49542 if (end < start) { 49543 return(NULL); 49544 } 49545 49546 if (start == end) { 49547 return(strdup(string)); 49548 } 49549 49550 // start < end < len 49551 // copy range to a new string 49552 len = (int64_t)strlen(string); 49553 const char *startp = idx2PtrUTF8(string, start); 49554 const char *endp = idx2PtrUTF8(string, end); 49555 size_t starto = (size_t)(startp-string); 49556 int64_t n; 49557 n = endp - startp; 49558 s = MALLOC((size_t)(len-n+1)); 49559 if (!s) { 49560 return(NULL);//LCOV_EXCL_LINE 49561 } 49562 strncpy(s, string, starto); 49563 strncpy(s+starto, string+starto+n, (size_t)(len-n)-starto); 49564 s[len-n] = 0; 49565 49566 return(s); 49567 } 49568 49569 49570 /** 49571 * delete UTF8 encoded string 49572 * 49573 * return string without the string between start and end 49574 * negative indexes are allowed 49575 * 49576 * \param 49577 * string to delete (this parameter is reallocated) 49578 * \param 49579 * start: start character index, must be in the string 49580 * \param 49581 * end: end character index, must be in the string after start 49582 * \return 49583 * sliced string (you must free the pointer) 49584 * unchanged string when start=end 49585 * NULL when start and end are not set correctly 49586 * or when input string is NULL or when malloc failed or when end is under start 49587 */ 49588 char *iDelUTF8(char **string, int64_t start, int64_t end) { 49589 char *s = NULL; 49590 int64_t len; 49591 49592 // sanity checks 49593 if (!string || !*string) { 49594 return(NULL); 49595 } 49596 49597 len = (int64_t)lenUTF8(*string); 49598 49599 if (start >= len) { 49600 start = len; 49601 } 49602 if (end > len) { 49603 end = len; 49604 } 49605 if (start <= -len) { 49606 start = -len; 49607 } 49608 if (end <= -len) { 49609 end = -len; 49610 } 49611 if (start < 0) { 49612 start = len + start; 49613 } 49614 if (end <= 0) { 49615 end = len + end; 49616 } 49617 if (end < start) { 49618 return(NULL); 49619 } 49620 49621 if (start == end) { 49622 return(*string); 49623 } 49624 49625 // start < end < len 49626 // copy range to a new string 49627 len = (int64_t)strlen(*string); 49628 const char *startp = idx2PtrUTF8(*string, start); 49629 const char *endp = idx2PtrUTF8(*string, end); 49630 size_t starto = (size_t)(startp-*string); 49631 int64_t n; 49632 n = endp - startp; 49633 s = MALLOC((size_t)(len-n+1)); 49634 if (!s) { 49635 return(NULL); 49636 } 49637 strncpy(s, *string, starto); 49638 strncpy(s+starto, (*string)+starto+n, (size_t)(len-n)-starto); 49639 s[len-n] = 0; 49640 49641 free(*string); 49642 *string = s; 49643 return(s); 49644 } 49645 49646 49647 /** 49648 * buffer delete UTF8 encoded string 49649 * 49650 * return string without the string between start and end 49651 * negative indexes are allowed 49652 * 49653 * \param 49654 * string to delete 49655 * \param 49656 * start: start character index, must be in the string 49657 * \param 49658 * end: end character index, must be in the string after start 49659 * \return 49660 * sliced string 49661 * unchanged string when start=end 49662 * NULL when start and end are not set correctly 49663 * or when input string is NULL or when malloc failed or when end is under start 49664 */ 49665 char *bDelUTF8(char *string, int64_t start, int64_t end) { 49666 int64_t len; 49667 49668 // sanity checks 49669 if (!string) { 49670 return(NULL); 49671 } 49672 49673 len = (int64_t)lenUTF8(string); 49674 49675 if (start >= len) { 49676 start = len; 49677 } 49678 if (end > len) { 49679 end = len; 49680 } 49681 if (start <= -len) { 49682 start = -len; 49683 } 49684 if (end <= -len) { 49685 end = -len; 49686 } 49687 if (start < 0) { 49688 start = len + start; 49689 } 49690 if (end <= 0) { 49691 end = len + end; 49692 } 49693 if (end < start) { 49694 return(NULL); 49695 } 49696 49697 if (start == end) { 49698 return(string); 49699 } 49700 49701 // start < end < len 49702 // copy range to a new string 49703 len = (int64_t)strlen(string); 49704 const char *startp = idx2PtrUTF8(string, start); 49705 const char *endp = idx2PtrUTF8(string, end); 49706 size_t starto = (size_t)(startp-string); 49707 int64_t n; 49708 n = endp - startp; 49709 memmove(string+starto, string+starto+n, (size_t)(len-n)-starto); 49710 string[len-n] = 0; 49711 49712 return(string); 49713 } 49714 49715 49716 /** 49717 * buffer size delete UTF8 encoded string 49718 * 49719 * return string without the string between start and end 49720 * negative indexes are allowed 49721 * 49722 * \param 49723 * string to delete 49724 * \param 49725 * stringSize string buffer size 49726 * \param 49727 * start: start character index, must be in the string 49728 * \param 49729 * end: end character index, must be in the string after start 49730 * \return 49731 * sliced string 49732 * unchanged string when start=end 49733 * NULL when start and end are not set correctly 49734 * or when input string is NULL or when malloc failed or when end is under start 49735 */ 49736 char *bLDelUTF8(char *string, size_t stringSize, int64_t start, int64_t end) { 49737 int64_t len; 49738 49739 // sanity checks 49740 if (!string || !stringSize) { 49741 return(NULL); 49742 } 49743 49744 len = (int64_t)strlen(string); 49745 if ((size_t)len+1 > stringSize) { 49746 len = (int64_t)(stringSize - 1); 49747 } 49748 49749 // compute string length without NUL 49750 if (start >= len) { 49751 start = len; 49752 } 49753 if (end > len) { 49754 end = len; 49755 } 49756 if (start <= -len) { 49757 start = -len; 49758 } 49759 if (end <= -len) { 49760 end = -len; 49761 } 49762 if (start < 0) { 49763 start = len + start; 49764 } 49765 if (end <= 0) { 49766 end = len + end; 49767 } 49768 if (end < start) { 49769 return(NULL); 49770 } 49771 49772 const char *startp = bLIdx2PtrUTF8(string, stringSize, start); 49773 const char *endp = bLIdx2PtrUTF8(string, stringSize, end); 49774 49775 size_t starto = (size_t)(startp-string); 49776 49777 if (starto >= stringSize) { 49778 starto = stringSize; 49779 } 49780 if (start == 0) { 49781 starto = 0; 49782 } 49783 if (end < start) { 49784 return(NULL); 49785 } 49786 49787 if (start == end) { 49788 return(string); 49789 } 49790 49791 // start < end < len 49792 // copy range to a new string 49793 int64_t n; 49794 n = endp - startp; 49795 memmove(string+starto, string+starto+n, (size_t)(len-n)-starto); 49796 string[len-n] = 0; 49797 49798 return(string); 49799 } 49800 49801 49802 /** 49803 * indexOf UTF8 encoded String 49804 * relative to start 49805 * 49806 * \param 49807 * string 49808 * \param 49809 * needle: string to find 49810 * \return 49811 * character index of first occurence of needle in string 49812 * -1 when needle is not found 49813 * -1 when string or needle are NULL 49814 */ 49815 ssize_t indexOfUTF8(const char *string, const char *needle) { 49816 49817 char *r = findS(string, needle); 49818 if (!r) { 49819 return(-1); 49820 } 49821 return(ptr2IdxUTF8(string, r)); 49822 } 49823 49824 49825 /** 49826 * ignore case indexOf UTF8 encoded String 49827 * relative to start 49828 * 49829 * \param 49830 * string 49831 * \param 49832 * needle: string to find 49833 * \return 49834 * character index of first occurence of needle in string 49835 * -1 when needle is not found 49836 * -1 when string or needle are NULL 49837 */ 49838 ssize_t icIndexOfUTF8(const char *string UNUSED, const char *needle UNUSED) { 49839 49840 //TODO casefoldUTF8 can change the number of characters 49841 return(-1); 49842 } 49843 49844 49845 /** 49846 * ignore case has UTF8 encoded String 49847 * 49848 * \param 49849 * string 49850 * \param 49851 * needle: string to find 49852 * \return 49853 * true when needle is in string 49854 * false when needle is not found 49855 * false when string or needle are NULL 49856 */ 49857 bool icHasUTF8(const char *string, const char *needle) { 49858 49859 // sanity checks 49860 if (!string || !needle) { 49861 return(false); 49862 } 49863 49864 char *s = casefoldUTF8(string); 49865 char *n = casefoldUTF8(needle); 49866 49867 bool r = hasS(s, n); 49868 49869 free(s); 49870 free(n); 49871 return(r); 49872 } 49873 49874 49875 /** 49876 * ignore case token in UTF8 encoded String 49877 * 49878 * parse string into a sequence of tokens delimited by the ENTIRE DELIM string 49879 * work like strtok_r from c stdlib 49880 * (for strtok_r, when delim has multiple characters, each character is a delimiter) 49881 * 49882 * on first call s is the string to parse, optionally initialize *saveptr to NULL 49883 * on next calls, s should be NULL 49884 * 49885 * \param 49886 * s string to parse, the s string is modified 49887 * \param 49888 * delim string 49889 * \return 49890 * token 49891 * *saveptr is set to NULL when the last token is found 49892 */ 49893 char *icTokUTF8(const char *s UNUSED, const char *delim UNUSED, char **saveptr UNUSED) { 49894 49895 //TODO casefoldUTF8 changes the string 49896 return(NULL); 49897 } 49898 49899 49900 /** 49901 * ignore case split UTF8 encoded string with delim string 49902 * return list 49903 * 49904 * \param 49905 * string to split 49906 * \param 49907 * delim delimiter 49908 * \return 49909 * list of tokens 49910 * NULL when list or delim are NULL 49911 */ 49912 char **icSplitUTF8(const char *string UNUSED, const char* delim UNUSED) { 49913 49914 //TODO casefoldUTF8 changes the string 49915 return(NULL); 49916 } 49917 49918 /** 49919 * ignore case extract UTF8 encoded string between delim1 and delim2 strings 49920 * return list 49921 * 49922 * \param 49923 * string to split 49924 * \param 49925 * delim1 first delimiter 49926 * \param 49927 * delim2 second delimiter, has to different from delim1 49928 * \return 49929 * list of tokens 49930 * NULL when list or delim are NULL 49931 */ 49932 char **icExtractUTF8(const char *string UNUSED, const char* delim1 UNUSED, const char* delim2 UNUSED) { 49933 49934 //TODO casefoldUTF8 changes the string 49935 return(NULL); 49936 } 49937 49938 char **icExtractCharSUTF8(const char *string UNUSED, char delim1 UNUSED, const char* delim2 UNUSED) { 49939 49940 //TODO casefoldUTF8 changes the string 49941 return(NULL); 49942 } 49943 49944 char **icExtractSCharUTF8(const char *string UNUSED, const char* delim1 UNUSED, char delim2 UNUSED) { 49945 49946 //TODO casefoldUTF8 changes the string 49947 return(NULL); 49948 } 49949 49950 49951 /** 49952 * ignore case list Sort UTF-8 encoded String Compare function 49953 * 49954 * in: 49955 * a 49956 * b 49957 * out: 49958 * test result 49959 */ 49960 internal int icListSortUTF8Cmp(const void * a, const void * b) { 49961 49962 // sanity checks 49963 if (!a && !b) { 49964 return(0); 49965 } 49966 if (!a && b) { 49967 return(-1); 49968 } 49969 if (a && !b) { 49970 return(1); 49971 } 49972 char *A = casefoldUTF8(*(char *const*)a); 49973 char *B = casefoldUTF8(*(char *const*)b); 49974 int r = strcmp(A,B); 49975 free(A); 49976 free(B); 49977 return(r); 49978 } 49979 49980 49981 /** 49982 * ignore case list Sort UTF8 encoded String 49983 * duplicate list and sort 49984 * 49985 * \param 49986 * list 49987 * \return 49988 * new sorted list (you must free the pointer with listFreeS) 49989 * empty list when list is empty 49990 * NULL when list is NULL 49991 */ 49992 char **icListSortUTF8(char **list) { 49993 size_t len; 49994 char **l = NULL; 49995 49996 // sanity checks 49997 if (!list) { 49998 return(NULL); 49999 } 50000 len = listLengthS(list); 50001 // duplicate 50002 l = listDupS(list); 50003 if (!len) { 50004 return(l); 50005 } 50006 // sort 50007 qsort(l, len, sizeof(char *), icListSortUTF8Cmp); 50008 return(l); 50009 } 50010 50011 50012 /** 50013 * ignore case list Sort UTF8 encoded String 50014 * 50015 * \param 50016 * list 50017 * \return 50018 * sorted list 50019 * empty list when list is empty 50020 * unchanged list when list is NULL 50021 * NULL error 50022 */ 50023 char **iicListSortUTF8(char ***list) { 50024 size_t len; 50025 50026 // sanity checks 50027 if (!list || !*list) { 50028 return(NULL); 50029 } 50030 len = listLengthS(*list); 50031 if (!len) { 50032 return(NULL); 50033 } 50034 // sort 50035 qsort(*list, len, sizeof(char *), icListSortUTF8Cmp); 50036 return(*list); 50037 } 50038 50039 50040 /** 50041 * ignore case list Equal UTF8 encoded String 50042 * compare each element of list1 and list2 50043 * 50044 * \param 50045 * 2 lists 50046 * \return 50047 * true the lists have identical elements 50048 * false they differ 50049 */ 50050 bool icListEqUTF8(char **list1, char **list2) { 50051 50052 // sanity checks 50053 if (!list1 || !list2) { 50054 return(false); 50055 } 50056 if (listLengthS(list1) != listLengthS(list2)) { 50057 return(false); 50058 } 50059 50060 // compare elements 50061 enumerateCharP(list1, e, i) { 50062 if (!icEqUTF8(*e, list2[i])) { 50063 return(false); 50064 } 50065 } 50066 50067 return(true); 50068 } 50069 50070 50071 /** 50072 * ignore case and return true when list has UTF8 encoded string 50073 * 50074 * \param 50075 * list 50076 * \param 50077 * string 50078 * \return 50079 * true when list has string 50080 * false when the string is not found 50081 * false when list or string are NULL 50082 */ 50083 bool icListHasUTF8(char **list, const char *string) { 50084 50085 if (!list || !string) { 50086 return(false); 50087 } 50088 if (icListIndexOfUTF8(list, string) == -1) { 50089 return(false); 50090 } 50091 return(true); 50092 } 50093 50094 50095 /** 50096 * ignore case and return index of UTF8 encoded string in list 50097 * 50098 * \param 50099 * list 50100 * \param 50101 * string 50102 * \return 50103 * index 50104 * -1 when the string is not found 50105 * -1 when list or string are NULL 50106 */ 50107 ssize_t icListIndexOfUTF8(char **list, const char *string) { 50108 bool found = false;; 50109 50110 // sanity checks 50111 if (!list || !string) { 50112 return(-1); 50113 } 50114 // search string in elements 50115 enumerateCharP(list, e, i) { 50116 if (icEqUTF8(*e, string)) { 50117 found = true; 50118 break; 50119 } 50120 } 50121 if (found) { 50122 return((ssize_t)i); 50123 } 50124 else { 50125 return(-1); 50126 } 50127 } 50128 50129 50130 /** 50131 * ignore case list binary search UTF8 encoded string 50132 * 50133 * efficiently finds the index of string in list 50134 * the list has be sorted with for example listSortS 50135 * 50136 * \param 50137 * list 50138 * \param 50139 * string to search 50140 * \return 50141 * index of string 50142 * -1 string not found or NULL input pointers 50143 */ 50144 ssize_t icListBinarySearchUTF8(char **list, const char *string) { 50145 ssize_t first = 0, middle, last;; 50146 50147 if (!list || !string) { 50148 return(-1); 50149 } 50150 50151 char *s = casefoldUTF8(string); 50152 50153 last = (ssize_t)(listLengthS(list) - 1); 50154 while (first <= last) { 50155 middle = (first+last)/2; 50156 char *m = casefoldUTF8(list[middle]); 50157 if (strcmp(m, s) < 0) { 50158 first = middle + 1; 50159 } 50160 else if (strcmp(m, s) == 0) { 50161 free(m); 50162 free(s); 50163 return(middle); 50164 } 50165 else { 50166 last = middle -1; 50167 } 50168 free(m); 50169 } 50170 free(s); 50171 return(-1); 50172 } 50173 50174 50175 /** 50176 * ignore case and uniquify UTF8 encoded elements of list 50177 * duplicate list 50178 * each elements are unique in the new list 50179 * 50180 * \param 50181 * list 50182 * \return 50183 * new list with unique elements (you must free the pointer with listFreeS) 50184 * empty list when list is empty 50185 * NULL when list is NULL 50186 */ 50187 char **icListUniqUTF8(char **list) { 50188 char **r = NULL; 50189 50190 // sanity checks 50191 if (!list) { 50192 return(NULL); 50193 } 50194 50195 size_t len = listLengthS(list); 50196 50197 if (!len) { 50198 listEmptyS(r); 50199 return(r); 50200 } 50201 pErrorNULL(listPushS(&r, list[0])); 50202 // one element list 50203 if (len == 1) { 50204 return(r); 50205 } 50206 // push element to new list if it is not already in new list 50207 forEachCharP(list, e) { 50208 if (icListIndexOfUTF8(r, *e) == -1) { 50209 pErrorNULL(listPushS(&r, *e)); 50210 } 50211 } 50212 return(r); 50213 } 50214 50215 50216 /** 50217 * ignore case and uniquify UTF8 encoded elements of list 50218 * each elements are unique in the list 50219 * 50220 * \param 50221 * list 50222 * \return 50223 * list with unique elements 50224 * empty list when list is empty 50225 * unchanged list when list is NULL 50226 * NULL error 50227 */ 50228 char **iicListUniqUTF8(char ***list) { 50229 char **r = NULL; 50230 50231 // sanity checks 50232 if (!list || !*list) { 50233 return(NULL); 50234 } 50235 50236 size_t len = listLengthS(*list); 50237 50238 if (len < 1) { 50239 return(*list); 50240 } 50241 else if (len < 2) { 50242 // one element list 50243 pErrorNULL(iListPushS(&r, (*list)[0])); 50244 } 50245 else { 50246 // push element to new list if it is not already in new list 50247 forEachCharP(*list, e) { 50248 if (icListIndexOfUTF8(r, *e) == -1) { 50249 pErrorNULL(iListPushS(&r, *e)); 50250 } 50251 else { 50252 free(*e); 50253 } 50254 } 50255 } 50256 50257 free(*list); 50258 *list = r; 50259 return(r); 50260 } 50261 50262 50263 // TODO reverseUTF8 50264 50265 // 50266 // End UTF-8 string functions 50267 // 50268 50269 50270 50271 /** 50272 * empty String Function 50273 * 50274 * \return 50275 * new empty string (you must free the pointer) 50276 */ 50277 char *emptySF(void) { 50278 50279 return(strdup("")); 50280 } 50281 50282 /** 50283 * empty String Function 50284 * 50285 * when *string is NULL, it is freed 50286 * 50287 * \return 50288 * empty string (you must free the pointer) 50289 * NULL nothing when string is NULL 50290 */ 50291 char *iEmptySF(char **string) { 50292 50293 // sanity checks 50294 if (!string) { 50295 return(NULL); 50296 } 50297 50298 if (*string) { 50299 free(*string); 50300 } 50301 *string = strdup(""); 50302 return(*string); 50303 } 50304 50305 /** 50306 * is Empty String 50307 * 50308 * \param 50309 * string 50310 * \return 50311 * false when there are characters in the string 50312 * true when string is empty 50313 * true when string is NULL 50314 */ 50315 bool isEmptyS(const char *string) { 50316 50317 // sanity checks 50318 if (!string || !*string) { 50319 return(true); 50320 } 50321 return(false); 50322 } 50323 50324 /** 50325 * is Blank String 50326 * 50327 * \param 50328 * string 50329 * \return 50330 * false when there are non white space characters in the string 50331 * true when there are only white spaces in the string 50332 * true when string is empty 50333 * true when string is NULL 50334 */ 50335 bool isBlankS(const char *string) { 50336 50337 // sanity checks 50338 if (!string || !*string) { 50339 return(true); 50340 } 50341 50342 char *s = trimS(string); 50343 if (!s || !*s) { 50344 free(s); 50345 return(true); 50346 } 50347 free(s); 50348 return(false); 50349 } 50350 50351 50352 /** 50353 * int to positive index 50354 * index can be negative 50355 * 50356 * \param 50357 * index: index in list, must be inside the list 50358 * \param 50359 * length: list length 50360 * \return 50361 * positive index 50362 * -1 when length is 0 or index is not set correctly 50363 */ 50364 ssize_t intIndex(int64_t index, int64_t length) { 50365 ssize_t r; 50366 50367 // sanity checks 50368 if (length < 1) { 50369 return(-1); 50370 } 50371 50372 if (index >= length) { 50373 return(-1); 50374 } 50375 if (index < -length) { 50376 return(-1); 50377 } 50378 if (index < 0) { 50379 r = length + index; 50380 } 50381 else { 50382 r = index; 50383 } 50384 return(r); 50385 } 50386 50387 50388 /** 50389 * list Empty String Function 50390 * 50391 * \return 50392 * new empty list (you must free the pointer with listFreeS) 50393 */ 50394 char **listEmptySF(void) { 50395 char **list = NULL; 50396 50397 list = MALLOC(1 * sizeof(char *)); 50398 if (list) { 50399 list[0] = NULL; 50400 } 50401 return(list); 50402 } 50403 50404 /** 50405 * list Empty String Function 50406 * 50407 * \return 50408 * empty list (you must free the pointer with listFreeS) 50409 * NULL error 50410 */ 50411 char **iListEmptySF(char ***list) { 50412 50413 // sanity checks 50414 if (!list) { 50415 return(NULL); 50416 } 50417 50418 if (*list) { 50419 listFreeS(*list); 50420 } 50421 50422 *list = MALLOC(1 * sizeof(char *)); 50423 if (*list) { 50424 (*list)[0] = NULL; 50425 } 50426 50427 return(*list); 50428 } 50429 50430 /** 50431 * list Is Empty String 50432 * 50433 * \param 50434 * list 50435 * \return 50436 * false when there are elements in the list 50437 * true when list is empty 50438 * true when list is NULL 50439 */ 50440 bool listIsEmptyS(char **list) { 50441 50442 // sanity checks 50443 if (!list || !*list) { 50444 return(true); 50445 } 50446 return(false); 50447 } 50448 50449 /** 50450 * list Is Empty String 50451 * 50452 * \param 50453 * list 50454 * \return 50455 * false when there are non blank elements in the list 50456 * true when all elements are blank 50457 * true when list is NULL 50458 */ 50459 bool listIsBlankS(char **list) { 50460 50461 // sanity checks 50462 if (!list || !*list) { 50463 return(true); 50464 } 50465 forEachCharP(list, e) { 50466 if (!isBlankS(*e)) { 50467 return(false); 50468 } 50469 } 50470 return(true); 50471 } 50472 50473 /** 50474 * list Create String Function 50475 * create a list from the list of parameters 50476 * used from the listCreateS(...) macro 50477 * 50478 * \param 50479 * list of strings seperated with commas 50480 * \return 50481 * list 50482 * NULL when first element if NULL 50483 */ 50484 char **listCreateSF(const char *paramType, ...) { 50485 va_list pl; 50486 char **l = NULL; 50487 50488 //Not needed if !paramType return NULL 50489 50490 // push arguments to a list 50491 va_start(pl, paramType); 50492 paramType = va_arg(pl, char *); 50493 while (paramType) { 50494 pErrorNULL(listPushS(&l, paramType)); 50495 paramType = va_arg(pl, char *); 50496 } 50497 va_end(pl); 50498 return(l); 50499 } 50500 50501 /** 50502 * list From Array String 50503 * 50504 * copy array of 'size' strings to a new list 50505 * NULL strings are not copied to the list 50506 * 50507 * \param 50508 * array of strings 50509 * \param 50510 * size - number of strings in the array 50511 * \return 50512 * list 50513 * empty list when size is 0 50514 * NULL when array is NULL 50515 */ 50516 char **listFromArrayS(char **array, size_t size) { 50517 char **r = NULL; 50518 50519 // sanity checks 50520 if (!array) { 50521 return(NULL); 50522 } 50523 if (!size) { 50524 listEmptyS(r); 50525 return(r); 50526 } 50527 50528 // TODO allocate array size r for z to avoid reallocs and remove listPushS 50529 // copy array content 50530 for (size_t i = 0 ; i < size ; i++) { 50531 if (array[i]) { 50532 // remove NULL strings 50533 pErrorNULL(listPushS(&r, array[i])); 50534 } 50535 } 50536 return(r); 50537 } 50538 50539 /** 50540 * list From Const Array String 50541 * 50542 * copy array of 'size' strings to a new list 50543 * NULL strings are not copied to the list 50544 * 50545 * \param 50546 * array of strings 50547 * \param 50548 * size - number of strings in the array 50549 * \return 50550 * list 50551 * empty list when size is 0 50552 * NULL when array is NULL 50553 */ 50554 char **listFromCArrayS(const char **array, size_t size) { 50555 char **r = NULL; 50556 50557 // sanity checks 50558 if (!array) { 50559 return(NULL); 50560 } 50561 if (!size) { 50562 listEmptyS(r); 50563 return(r); 50564 } 50565 50566 // copy array content 50567 for (size_t i = 0 ; i < size ; i++) { 50568 if (array[i]) { 50569 // remove NULL strings 50570 pErrorNULL(listPushS(&r, array[i])); 50571 } 50572 } 50573 return(r); 50574 } 50575 50576 /** 50577 * list Push String 50578 * append s at the end of the list 50579 * when list is NULL, a new list with one element is returned 50580 * when list and s are NULL return list with 2 NULL elements 50581 * when s is NULL, NULL is pushed at the end of the list 50582 * 50583 * the list is reallocated to add extra space 50584 * 50585 * \param 50586 * pointer to list - becomes NULL when realloc fails (this parameter is reallocated) 50587 * \param 50588 * s: string to push 50589 * \return 50590 * list success (you must free the pointer with listFreeS) 50591 * NULL error 50592 */ 50593 char **listPushS(char ***list, const char *s) { 50594 50595 // sanity checks 50596 if (!list || !s) { 50597 return(NULL); 50598 } 50599 50600 if (!*list) { 50601 *list = MALLOC(2 * sizeof(char *)); 50602 if (!*list) { 50603 return(NULL); 50604 } 50605 (*list)[0] = strdup(s); 50606 (*list)[1] = NULL; 50607 } 50608 else { 50609 // realloc list and copy s to last element 50610 size_t len; 50611 len = listLengthS(*list); 50612 char **tmp = REALLOC(*list, (len+2) * sizeof(char *)); 50613 if (!tmp) { 50614 return(NULL); 50615 } 50616 else { 50617 *list = tmp; 50618 (*list)[len+1] = NULL; 50619 (*list)[len] = strdup(s); 50620 } 50621 } 50622 return(*list); 50623 } 50624 50625 char **listPushCharS(char ***list, char c) { 50626 50627 charToS(s, c); 50628 return(listPushS(list, s)); 50629 } 50630 50631 /** 50632 * list Push String 50633 * append s pointer at the end of the list 50634 * when list is NULL, a new list with one element is returned 50635 * when list and s are NULL return list with 2 NULL elements 50636 * when s is NULL, NULL is pushed at the end of the list 50637 * 50638 * the list is reallocated to add extra space 50639 * 50640 * \param 50641 * pointer to list - becomes NULL when realloc fails (this parameter is reallocated) 50642 * \param 50643 * s: string to push 50644 * \return 50645 * list success 50646 * NULL error 50647 */ 50648 char **iListPushS(char ***list, char *s) { 50649 50650 // sanity checks 50651 if (!list || !s) { 50652 return(NULL); 50653 } 50654 50655 if (!*list) { 50656 *list = MALLOC(2 * sizeof(char *)); 50657 if (!*list) { 50658 return(NULL); 50659 } 50660 (*list)[0] = s; 50661 (*list)[1] = NULL; 50662 } 50663 else { 50664 // realloc list and copy s to last element 50665 size_t len; 50666 len = listLengthS(*list); 50667 char **tmp = REALLOC(*list, (len+2) * sizeof(char *)); 50668 if (!tmp) { 50669 return(NULL); 50670 } 50671 else { 50672 *list = tmp; 50673 (*list)[len+1] = NULL; 50674 (*list)[len] = s; 50675 } 50676 } 50677 return(*list); 50678 } 50679 50680 50681 /** 50682 * list Pop String 50683 * return last string from list and remove last element from the list 50684 * 50685 * \param 50686 * pointer to list 50687 * \return 50688 * duplicated last string (you must free the pointer) 50689 * NULL when the list is NULL or empty (first element is NULL) 50690 */ 50691 char *listPopS(char ***list) { 50692 char *s = NULL; 50693 size_t len; 50694 50695 // sanity checks 50696 if (!list) { 50697 return(NULL); 50698 } 50699 50700 if (!*list || !**list) { 50701 // empty list 50702 // no element in the list 50703 return(NULL); 50704 } 50705 // copy and free last non NULL element 50706 // the number of elements including NULL element remains the same 50707 len = listLengthS(*list); 50708 s = (*list)[len-1]; 50709 (*list)[len-1] = NULL; 50710 return(s); 50711 } 50712 50713 /** 50714 * list Prepend String 50715 * append s at the beginning of the list 50716 * when list is NULL, a new list with one element is returned 50717 * when list and s are NULL return list with 2 NULL elements 50718 * when s is NULL, the operation is canceled 50719 * 50720 * the list is reallocated to add extra space 50721 * 50722 * \param 50723 * pointer to list - becomes NULL when realloc fails (this parameter is reallocated) 50724 * \param 50725 * s: string to prepend 50726 * \return 50727 * list success (you must free the pointer with listFreeS) 50728 * NULL error 50729 */ 50730 char **listPrependS(char ***list, const char *s) { 50731 50732 // sanity checks 50733 if (!list || !s) { 50734 return(NULL); 50735 } 50736 50737 if (!*list) { 50738 *list = MALLOC(2 * sizeof(char *)); 50739 if (!*list) { 50740 return(NULL); 50741 } 50742 (*list)[0] = strdup(s); 50743 (*list)[1] = NULL; 50744 } 50745 else { 50746 // realloc list and copy s to first element 50747 size_t len; 50748 len = listLengthS(*list); 50749 char **tmp = REALLOC(*list, (len+2) * sizeof(char *)); 50750 if (!tmp) { 50751 return(NULL); 50752 } 50753 else { 50754 *list = tmp; 50755 (*list)[len+1] = NULL; 50756 // shift list 50757 for (size_t i = len; i > 0; i--) { 50758 (*list)[i] = (*list)[i-1]; 50759 } 50760 (*list)[0] = strdup(s); 50761 } 50762 } 50763 return(*list); 50764 } 50765 50766 char **listPrependCharS(char ***list, char c) { 50767 50768 charToS(s, c); 50769 return(listPrependS(list, s)); 50770 } 50771 50772 /** 50773 * list Prepend String 50774 * append s pointer at the beginning of the list 50775 * when list is NULL, a new list with one element is returned 50776 * when list and s are NULL return list with 2 NULL elements 50777 * when s is NULL, the operation is canceled 50778 * 50779 * the list is reallocated to add extra space 50780 * 50781 * \param 50782 * pointer to list - becomes NULL when realloc fails (this parameter is reallocated) 50783 * \param 50784 * s: string to prepend 50785 * \return 50786 * list success 50787 * NULL error 50788 */ 50789 char **iListPrependS(char ***list, char *s) { 50790 50791 // sanity checks 50792 if (!list || !s) { 50793 return(NULL); 50794 } 50795 50796 if (!*list) { 50797 *list = MALLOC(2 * sizeof(char *)); 50798 if (!*list) { 50799 return(NULL); 50800 } 50801 (*list)[0] = s; 50802 (*list)[1] = NULL; 50803 } 50804 else { 50805 // realloc list and copy s to first element 50806 size_t len; 50807 len = listLengthS(*list); 50808 char **tmp = REALLOC(*list, (len+2) * sizeof(char *)); 50809 if (!tmp) { 50810 return(NULL); 50811 } 50812 else { 50813 *list = tmp; 50814 (*list)[len+1] = NULL; 50815 // shift list 50816 for (size_t i = len; i > 0; i--) { 50817 (*list)[i] = (*list)[i-1]; 50818 } 50819 (*list)[0] = s; 50820 } 50821 } 50822 return(*list); 50823 } 50824 50825 /** 50826 * list Dequeue String 50827 * return first string from list and remove it from the list 50828 * 50829 * \param 50830 * pointer to list 50831 * \return 50832 * first string (you must free the pointer) 50833 * NULL when the list is NULL or empty (first element is NULL) 50834 */ 50835 char *listDequeueS(char ***list) { 50836 char *s = NULL; 50837 size_t len; 50838 50839 // sanity checks 50840 if (!list) { 50841 return(NULL); 50842 } 50843 50844 if (!*list || !**list) { 50845 // empty list 50846 // no element in the list 50847 return(NULL); 50848 } 50849 // copy and free last non NULL element 50850 // the number of elements including NULL element remains the same 50851 len = listLengthS(*list); 50852 s = (*list)[0]; 50853 // shift list 50854 for (size_t i = 1; i < len; i++) { 50855 (*list)[i-1] = (*list)[i]; 50856 } 50857 (*list)[len-1] = NULL; 50858 return(s); 50859 } 50860 50861 /** 50862 * list Free String 50863 * 50864 * \param 50865 * list 50866 * \return 50867 * nothing 50868 */ 50869 void listFreeS(char **list) { 50870 50871 // sanity checks 50872 if (list) { 50873 forEachCharP(list, e) { 50874 free(*e); 50875 } 50876 free(list); 50877 } 50878 } 50879 50880 /** 50881 * list free many String 50882 * 50883 * free variable list of pointers 50884 * listFreeManyS(l1, l2, ...); 50885 */ 50886 void listFreeManySF(char **paramType, ...) { 50887 va_list pl; 50888 50889 // add arguments to a list 50890 va_start(pl, paramType); 50891 paramType = va_arg(pl, char **); 50892 while (paramType) { 50893 listFreeS(paramType); 50894 paramType = va_arg(pl, char **); 50895 } 50896 va_end(pl); 50897 } 50898 50899 /** 50900 * list Length String 50901 * return number of elements until the first NULL element 50902 * 50903 * \param 50904 * list 50905 * \return 50906 * number of element until first NULL element 50907 * 0 when list is NULL 50908 */ 50909 size_t listLengthS(char **list) { 50910 size_t r = 0;; 50911 50912 // sanity checks 50913 if (!list) { 50914 return(0); 50915 } 50916 forEachCharP(list, i) { 50917 r++; 50918 } 50919 return(r); 50920 } 50921 50922 /** 50923 * const list Length String 50924 * return number of elements until the first NULL element 50925 * 50926 * \param 50927 * list 50928 * \return 50929 * number of element until first NULL element 50930 * 0 when list is NULL 50931 */ 50932 size_t listLengthCS(const char **list) { 50933 size_t r = 0;; 50934 50935 // sanity checks 50936 if (!list) { 50937 return(0); 50938 } 50939 forEachCCharP(list, i) { 50940 r++; 50941 } 50942 return(r); 50943 } 50944 50945 /** 50946 * list String Length String 50947 * 50948 * \param 50949 * list 50950 * \return 50951 * list length as a single string 50952 * -1 when list is NULL 50953 */ 50954 ssize_t listStrLengthS(char **list) { 50955 ssize_t r = 0;; 50956 50957 // sanity checks 50958 if (!list) { 50959 return(-1); 50960 } 50961 50962 forEachS(list, i) { 50963 r += (ssize_t)strlen(i); 50964 } 50965 50966 return(r); 50967 } 50968 50969 /** 50970 * list int to index String 50971 * index can be negative 50972 * 50973 * \param 50974 * list 50975 * \param 50976 * index: index in list, must be inside the list 50977 * \return 50978 * positive index 50979 * -1 when list is NULL or index is not set correctly 50980 */ 50981 ssize_t listIntIndexS(char **list, int64_t index) { 50982 ssize_t r; 50983 int64_t len; 50984 50985 // sanity checks 50986 if (!list) { 50987 return(-1); 50988 } 50989 50990 len = (int64_t)listLengthS(list); 50991 if (index >= len) { 50992 return(-1); 50993 } 50994 if (index < -len) { 50995 return(-1); 50996 } 50997 if (index < 0) { 50998 r = len + index; 50999 } 51000 else { 51001 r = index; 51002 } 51003 return(r); 51004 } 51005 51006 /** 51007 * list address String 51008 * index can be negative 51009 * 51010 * \param 51011 * list 51012 * \param 51013 * index: index in list, must be inside the list 51014 * \return 51015 * pointer to char* at index 51016 * NULL when list is NULL or index is not set correctly 51017 */ 51018 char **listAddrS(char **list, int64_t index) { 51019 size_t r; 51020 int64_t len; 51021 51022 // sanity checks 51023 if (!list) { 51024 return(NULL); 51025 } 51026 51027 len = (int64_t)listLengthS(list); 51028 if (index >= len) { 51029 return(NULL); 51030 } 51031 if (index < -len) { 51032 return(NULL); 51033 } 51034 if (index < 0) { 51035 r = (size_t)(len + index); 51036 } 51037 else { 51038 r = (size_t)(index); 51039 } 51040 return((list+r)); 51041 } 51042 51043 /** 51044 * list Get String 51045 * duplicate string at given index 51046 * index can be negative 51047 * 51048 * \param 51049 * list 51050 * \param 51051 * index: index in list, must be inside the list 51052 * \return 51053 * duplicated string (you must free the pointer) 51054 * NULL when list is NULL or index is not set correctly 51055 */ 51056 char *listGetS(char **list, int64_t index) { 51057 int64_t len; 51058 51059 // sanity checks 51060 if (!list) { 51061 return(NULL); 51062 } 51063 51064 len = (int64_t)listLengthS(list); 51065 if (index >= len) { 51066 return(NULL); 51067 } 51068 if (index < -len) { 51069 return(NULL); 51070 } 51071 if (index < 0) { 51072 index = len + index; 51073 } 51074 51075 return(strdup(list[index])); 51076 } 51077 51078 /** 51079 * list Get String 51080 * index can be negative 51081 * 51082 * \param 51083 * list 51084 * \param 51085 * index: index in list, must be inside the list 51086 * \return 51087 * string 51088 * NULL when list is NULL or index is not set correctly 51089 */ 51090 char *iListGetS(char **list, int64_t index) { 51091 int64_t len; 51092 51093 // sanity checks 51094 if (!list) { 51095 return(NULL); 51096 } 51097 51098 len = (int64_t)listLengthS(list); 51099 if (index >= len) { 51100 return(NULL); 51101 } 51102 if (index < -len) { 51103 return(NULL); 51104 } 51105 if (index < 0) { 51106 index = len + index; 51107 } 51108 51109 return(list[index]); 51110 } 51111 51112 /** 51113 * const list Get String 51114 * duplicate string at given index 51115 * index can be negative 51116 * 51117 * \param 51118 * list 51119 * \param 51120 * index: index in list, must be inside the list 51121 * \return 51122 * duplicated string (you must free the pointer) 51123 * NULL when list is NULL or index is not set correctly 51124 */ 51125 char *listGetCS(const char **list, int64_t index) { 51126 int64_t len; 51127 51128 // sanity checks 51129 if (!list) { 51130 return(NULL); 51131 } 51132 51133 len = (int64_t)listLengthCS(list); 51134 if (index >= len) { 51135 return(NULL); 51136 } 51137 if (index < -len) { 51138 return(NULL); 51139 } 51140 if (index < 0) { 51141 index = len + index; 51142 } 51143 51144 return(strdup(list[index])); 51145 } 51146 51147 /** 51148 * const list Get String 51149 * index can be negative 51150 * 51151 * \param 51152 * list 51153 * \param 51154 * index: index in list, must be inside the list 51155 * \return 51156 * string 51157 * NULL when list is NULL or index is not set correctly 51158 */ 51159 const char *iListGetCS(const char **list, int64_t index) { 51160 int64_t len; 51161 51162 // sanity checks 51163 if (!list) { 51164 return(NULL); 51165 } 51166 51167 len = (int64_t)listLengthCS(list); 51168 if (index >= len) { 51169 return(NULL); 51170 } 51171 if (index < -len) { 51172 return(NULL); 51173 } 51174 if (index < 0) { 51175 index = len + index; 51176 } 51177 51178 return(list[index]); 51179 } 51180 51181 /** 51182 * list Set String 51183 * duplicate string and store at given index, the existing element is freed 51184 * index can be negative 51185 * 51186 * \param 51187 * list 51188 * \param 51189 * index: index in list, must be inside the list 51190 * \param 51191 * string 51192 * \return 51193 * list success (you must free the pointer with listFreeS) 51194 * NULL error 51195 * 51196 * Does nothing when: 51197 * when list is NULL, index is not set correctly or s is NULL 51198 */ 51199 char **listSetS(char **list, int64_t index, const char *s) { 51200 int64_t len; 51201 51202 // sanity checks 51203 if (!list || !s) { 51204 return(NULL); 51205 } 51206 51207 len = (int64_t)listLengthS(list); 51208 if (index >= len) { 51209 return(NULL); 51210 } 51211 if (index < -len) { 51212 return(NULL); 51213 } 51214 if (index < 0) { 51215 index = len + index; 51216 } 51217 51218 free(list[index]); 51219 list[index] = strdup(s); 51220 return(list); 51221 } 51222 51223 char **listSetCharS(char **list, int64_t index, char c) { 51224 51225 charToS(s, c); 51226 return(listSetS(list, index, s)); 51227 } 51228 51229 /** 51230 * list Set String 51231 * store string at given index 51232 * index can be negative 51233 * 51234 * \param 51235 * list 51236 * \param 51237 * index: index in list, must be inside the list 51238 * \param 51239 * string 51240 * \return 51241 * list success 51242 * NULL error 51243 * 51244 * Does nothing when: 51245 * when list is NULL, index is not set correctly or s is NULL 51246 */ 51247 char **iListSetS(char **list, int64_t index, char *s) { 51248 int64_t len; 51249 51250 // sanity checks 51251 if (!list || !s) { 51252 return(NULL); 51253 } 51254 51255 len = (int64_t)listLengthS(list); 51256 if (index >= len) { 51257 return(NULL); 51258 } 51259 if (index < -len) { 51260 return(NULL); 51261 } 51262 if (index < 0) { 51263 index = len + index; 51264 } 51265 51266 free(list[index]); 51267 list[index] = s; 51268 return(list); 51269 } 51270 51271 /** 51272 * swap elements in list 51273 * 51274 * \param 51275 * list 51276 * \param 51277 * index1 index of character to swap 51278 * \param 51279 * index2 index of second character to swap 51280 * \return 51281 * new list with elements swapped at index1 and index2 (you must free this pointer) 51282 * NULL when list is NULL or when index1 or index2 are outside the list 51283 */ 51284 char **listSwapS(char **list, int64_t index1, int64_t index2) { 51285 int64_t len; 51286 51287 if (!list) { 51288 return(NULL); 51289 } 51290 51291 len = (int64_t)listLengthS(list); 51292 if (index1 >= len) { 51293 return(NULL); 51294 } 51295 if (index1 < -len) { 51296 return(NULL); 51297 } 51298 if (index1 < 0) { 51299 index1 = len + index1; 51300 } 51301 51302 if (index2 >= len) { 51303 return(NULL); 51304 } 51305 if (index2 < -len) { 51306 return(NULL); 51307 } 51308 if (index2 < 0) { 51309 index2 = len + index2; 51310 } 51311 51312 char **r = listDupS(list); 51313 51314 char *tmp = r[index1]; 51315 r[index1] = r[index2]; 51316 r[index2] = tmp;; 51317 51318 return(r); 51319 } 51320 51321 /** 51322 * swap elements in list 51323 * 51324 * \param 51325 * list 51326 * \param 51327 * index1 index of character to swap 51328 * \param 51329 * index2 index of second character to swap 51330 * \return 51331 * updated list with characters swapped at index1 and index2 (you must free this pointer) 51332 * NULL when list is NULL or when index1 or index2 are outside the list 51333 */ 51334 char **iListSwapS(char **list, int64_t index1, int64_t index2) { 51335 int64_t len; 51336 51337 if (!list) { 51338 return(NULL); 51339 } 51340 51341 len = (int64_t)listLengthS(list); 51342 if (index1 >= len) { 51343 return(NULL); 51344 } 51345 if (index1 < -len) { 51346 return(NULL); 51347 } 51348 if (index1 < 0) { 51349 index1 = len + index1; 51350 } 51351 51352 if (index2 >= len) { 51353 return(NULL); 51354 } 51355 if (index2 < -len) { 51356 return(NULL); 51357 } 51358 if (index2 < 0) { 51359 index2 = len + index2; 51360 } 51361 51362 char *tmp = list[index1]; 51363 list[index1] = list[index2]; 51364 list[index2] = tmp;; 51365 51366 return(list); 51367 } 51368 51369 51370 /** 51371 * split string with delim string 51372 * when updating this function, also update splitS (identical to split) 51373 * return list 51374 * 51375 * \param 51376 * string to split 51377 * \param 51378 * delim delimiter 51379 * \return 51380 * list of tokens (you must free the pointer with listFreeS) 51381 * NULL when list or delim are NULL 51382 */ 51383 char **split(const char *string, const char* delim) { 51384 char *startString = NULL; 51385 char *workingString = NULL; 51386 char *line = NULL; 51387 char *token = NULL; 51388 char **r = NULL; 51389 51390 // sanity checks 51391 if (!string || !delim) { 51392 return(NULL); 51393 } 51394 51395 if (!*delim || !*string) { 51396 // empty delimiter empty string, return string in a list 51397 pErrorNULL(listPushS(&r, string)); 51398 return(r); 51399 } 51400 51401 // split using strtok_r 51402 startString = strdup(string); 51403 workingString = startString; 51404 line = workingString; 51405 while (strlen(workingString) != 0) { 51406 token = tokS(line, delim, &workingString); 51407 pErrorNULL(listPushS(&r, token)); 51408 // mac os sets workingString to NULL at the end 51409 if (!workingString) { 51410 break; //LCOV_EXCL_LINE 51411 } 51412 // first parameter should be NULL in next strtok_r calls 51413 line = NULL; 51414 } 51415 free(startString); 51416 51417 // check if delim is at the end of string 51418 // if yes, add an empty string in the result 51419 // ["one",""] = split "one/" "/" 51420 size_t len = strlen(string); 51421 size_t lenD = strlen(delim); 51422 if (strEq(string+(len-lenD), delim)) { 51423 pErrorNULL(listPushS(&r, "")); 51424 } 51425 51426 return(r); 51427 } 51428 51429 // splitS is identical to split 51430 // to make the interface uniform 51431 char **splitS(const char *string, const char* delim) { 51432 char *startString = NULL; 51433 char *workingString = NULL; 51434 char *line = NULL; 51435 char *token = NULL; 51436 char **r = NULL; 51437 51438 // sanity checks 51439 if (!string || !delim) { 51440 return(NULL); 51441 } 51442 51443 if (!*delim || !*string) { 51444 // empty delimiter empty string, return string in a list 51445 pErrorNULL(listPushS(&r, string)); 51446 return(r); 51447 } 51448 51449 // split using strtok_r 51450 startString = strdup(string); 51451 workingString = startString; 51452 line = workingString; 51453 while (strlen(workingString) != 0) { 51454 token = tokS(line, delim, &workingString); 51455 pErrorNULL(listPushS(&r, token)); 51456 // mac os sets workingString to NULL at the end 51457 if (!workingString) { 51458 break; //LCOV_EXCL_LINE 51459 } 51460 // first parameter should be NULL in next strtok_r calls 51461 line = NULL; 51462 } 51463 free(startString); 51464 51465 // check if delim is at the end of string 51466 // if yes, add an empty string in the result 51467 // ["one",""] = split "one/" "/" 51468 size_t len = strlen(string); 51469 size_t lenD = strlen(delim); 51470 if (strEq(string+(len-lenD), delim)) { 51471 pErrorNULL(listPushS(&r, "")); 51472 } 51473 51474 return(r); 51475 } 51476 51477 char **splitChar(const char *string, char delim) { 51478 51479 charToS(s, delim); 51480 return(split(string, s)); 51481 } 51482 51483 /** 51484 * ignore case split string with delim string 51485 * when updating this function, also update icSplitS (identical to icSplit) 51486 * return list 51487 * 51488 * \param 51489 * string to split 51490 * \param 51491 * delim delimiter 51492 * \return 51493 * list of tokens (you must free the pointer with listFreeS) 51494 * NULL when list or delim are NULL 51495 */ 51496 char **icSplit(const char *string, const char* delim) { 51497 char *startString = NULL; 51498 char *workingString = NULL; 51499 char *line = NULL; 51500 char *token = NULL; 51501 char **r = NULL; 51502 51503 // sanity checks 51504 if (!string || !delim) { 51505 return(NULL); 51506 } 51507 51508 if (!*delim || !*string) { 51509 // empty delimiter empty string, return string in a list 51510 pErrorNULL(listPushS(&r, string)); 51511 return(r); 51512 } 51513 51514 // split using strtok_r 51515 startString = strdup(string); 51516 workingString = startString; 51517 line = workingString; 51518 while (strlen(workingString) != 0) { 51519 token = icTokS(line, delim, &workingString); 51520 pErrorNULL(listPushS(&r, token)); 51521 // mac os sets workingString to NULL at the end 51522 if (!workingString) { 51523 break; //LCOV_EXCL_LINE 51524 } 51525 // first parameter should be NULL in next strtok_r calls 51526 line = NULL; 51527 } 51528 free(startString); 51529 51530 // check if delim is at the end of string 51531 // if yes, add an empty string in the result 51532 // ["one",""] = split "one/" "/" 51533 size_t len = strlen(string); 51534 size_t lenD = strlen(delim); 51535 if (icEqS(string+(len-lenD), delim)) { 51536 pErrorNULL(listPushS(&r, "")); 51537 } 51538 51539 return(r); 51540 } 51541 51542 // icSplitS is identical to icSplit 51543 // to make the interface uniform 51544 char **icSplitS(const char *string, const char* delim) { 51545 char *startString = NULL; 51546 char *workingString = NULL; 51547 char *line = NULL; 51548 char *token = NULL; 51549 char **r = NULL; 51550 51551 // sanity checks 51552 if (!string || !delim) { 51553 return(NULL); 51554 } 51555 51556 if (!*delim || !*string) { 51557 // empty delimiter empty string, return string in a list 51558 pErrorNULL(listPushS(&r, string)); 51559 return(r); 51560 } 51561 51562 // split using strtok_r 51563 startString = strdup(string); 51564 workingString = startString; 51565 line = workingString; 51566 while (strlen(workingString) != 0) { 51567 token = icTokS(line, delim, &workingString); 51568 pErrorNULL(listPushS(&r, token)); 51569 // mac os sets workingString to NULL at the end 51570 if (!workingString) { 51571 break; //LCOV_EXCL_LINE 51572 } 51573 // first parameter should be NULL in next strtok_r calls 51574 line = NULL; 51575 } 51576 free(startString); 51577 51578 // check if delim is at the end of string 51579 // if yes, add an empty string in the result 51580 // ["one",""] = split "one/" "/" 51581 size_t len = strlen(string); 51582 size_t lenD = strlen(delim); 51583 if (icEqS(string+(len-lenD), delim)) { 51584 pErrorNULL(listPushS(&r, "")); 51585 } 51586 51587 return(r); 51588 } 51589 51590 char **icSplitChar(const char *string, char delim) { 51591 51592 charToS(s, delim); 51593 return(icSplit(string, s)); 51594 } 51595 51596 /** 51597 * join Length 51598 * list length after joined with delimiter 51599 * 51600 * \param 51601 * list 51602 * \param 51603 * delim: string seperator 51604 * \return 51605 * list length as a single string 51606 * -1 when list is NULL 51607 */ 51608 ssize_t joinLength(char **list, const char* delim) { 51609 ssize_t r = 0;; 51610 51611 // sanity checks 51612 if (!list || !delim) { 51613 return(-1); 51614 } 51615 51616 size_t delimLen = strlen(delim); 51617 bool isFirstElem = true; 51618 forEachS(list, i) { 51619 if (isFirstElem) { 51620 r += (ssize_t)strlen(i); 51621 isFirstElem = no; 51622 } 51623 else { 51624 r += (ssize_t)(strlen(i) + delimLen); 51625 } 51626 } 51627 51628 return(r); 51629 } 51630 51631 /** 51632 * join list, the elements are seperated with delim in the resulting string 51633 * when updating this function, also update joinS (identical to join) 51634 * 51635 * \param 51636 * list 51637 * \param 51638 * delim: string seperator 51639 * \return 51640 * joined string (you must free the pointer) 51641 * NULL when list or delim are NULL 51642 */ 51643 char *join(char **list, const char* delim) { 51644 char *r = NULL; 51645 51646 // sanity checks 51647 if (!list || !delim) { 51648 return(NULL); 51649 } 51650 51651 forEachCharP(list, e) { 51652 if (!r) { 51653 r = strdup(*e); 51654 } 51655 else { 51656 char *tmp; 51657 tmp = REALLOC(r, strlen(r) + strlen(delim) + 1); 51658 if (!tmp) { 51659 free(r); 51660 return(NULL);//LCOV_EXCL_LINE 51661 } 51662 r = tmp; 51663 strcat(r, delim); 51664 tmp = REALLOC(r, strlen(r) + strlen(*e) + 1); 51665 if (!tmp) { 51666 free(r); 51667 return(NULL);//LCOV_EXCL_LINE 51668 } 51669 r = tmp; 51670 strcat(r, *e); 51671 } 51672 } 51673 return(r); 51674 } 51675 51676 // joinS is identical to join 51677 // to make the interface uniform 51678 char *joinS(char **list, const char* delim) { 51679 char *r = NULL; 51680 51681 // sanity checks 51682 if (!list || !delim) { 51683 return(NULL); 51684 } 51685 51686 forEachCharP(list, e) { 51687 if (!r) { 51688 r = strdup(*e); 51689 } 51690 else { 51691 char *tmp; 51692 tmp = REALLOC(r, strlen(r) + strlen(delim) + 1); 51693 if (!tmp) { 51694 free(r); 51695 return(NULL);//LCOV_EXCL_LINE 51696 } 51697 r = tmp; 51698 strcat(r, delim); 51699 tmp = REALLOC(r, strlen(r) + strlen(*e) + 1); 51700 if (!tmp) { 51701 free(r); 51702 return(NULL);//LCOV_EXCL_LINE 51703 } 51704 r = tmp; 51705 strcat(r, *e); 51706 } 51707 } 51708 return(r); 51709 } 51710 51711 /** 51712 * join list, the elements are seperated with delim in the resulting string 51713 * 51714 * \param 51715 * list 51716 * \param 51717 * delim: string seperator 51718 * \return 51719 * joined string (you must free the pointer) 51720 * NULL when list or delim are NULL 51721 */ 51722 char *joinCS(const char **list, const char* delim) { 51723 char *r = NULL; 51724 51725 // sanity checks 51726 if (!list || !delim) { 51727 return(NULL); 51728 } 51729 51730 forEachCCharP(list, e) { 51731 if (!r) { 51732 r = strdup(*e); 51733 } 51734 else { 51735 char *tmp; 51736 tmp = REALLOC(r, strlen(r) + strlen(delim) + 1); 51737 if (!tmp) { 51738 free(r); 51739 return(NULL);//LCOV_EXCL_LINE 51740 } 51741 r = tmp; 51742 strcat(r, delim); 51743 tmp = REALLOC(r, strlen(r) + strlen(*e) + 1); 51744 if (!tmp) { 51745 free(r); 51746 return(NULL);//LCOV_EXCL_LINE 51747 } 51748 r = tmp; 51749 strcat(r, *e); 51750 } 51751 } 51752 return(r); 51753 } 51754 51755 char *joinChar(char **list, char delim) { 51756 51757 charToS(s, delim); 51758 return(join(list, s)); 51759 } 51760 51761 /** 51762 * buffer join list, the elements are seperated with delim in the resulting string 51763 * 51764 * \param 51765 * list 51766 * \param 51767 * delim: string seperator 51768 * \return 51769 * joined string 51770 * NULL when list or delim are NULL 51771 */ 51772 char *bJoin(char *string, char **list, const char* delim) { 51773 51774 // sanity checks 51775 if (!list || !delim || !string || !*list) { 51776 return(NULL); 51777 } 51778 51779 bEmptyS(string); 51780 51781 enumerateCharP(list, e, i) { 51782 if (!i) { 51783 strcpy(string, *e); 51784 } 51785 else { 51786 pErrorNULL(bAppendManyS(string, delim, *e)); 51787 } 51788 } 51789 return(string); 51790 } 51791 51792 char *bJoinChar(char *string, char **list, char delim) { 51793 51794 charToS(s, delim); 51795 return(bJoin(string, list, s)); 51796 } 51797 51798 /** 51799 * buffer size join list, the elements are seperated with delim in the resulting string 51800 * 51801 * \param 51802 * list 51803 * \param 51804 * delim: string seperator 51805 * \return 51806 * joined string 51807 * NULL when list or delim are NULL 51808 */ 51809 char *bLJoin(char *string, size_t stringSize, char **list, const char* delim) { 51810 51811 // sanity checks 51812 if (!list || !delim || !string || !*list) { 51813 return(NULL); 51814 } 51815 51816 if (!stringSize) { 51817 // size 0 - no change 51818 return(string); 51819 } 51820 51821 bEmptyS(string); 51822 51823 enumerateCharP(list, e, i) { 51824 if (!i) { 51825 pErrorNULL(strLCpy(string, stringSize, *e)); 51826 } 51827 else { 51828 pErrorNULL(bLAppendManyS(string, stringSize, delim, *e)); 51829 } 51830 } 51831 return(string); 51832 } 51833 51834 char *bLJoinChar(char *string, size_t stringSize, char **list, char delim) { 51835 51836 charToS(s, delim); 51837 return(bLJoin(string, stringSize, list, s)); 51838 } 51839 51840 /** 51841 * extract string between delim1 and delim2 strings 51842 * return list 51843 * 51844 * \param 51845 * string to split 51846 * \param 51847 * delim1 first delimiter 51848 * \param 51849 * delim2 second delimiter, has to be different from delim1 51850 * \return 51851 * list of tokens (you must free the pointer with listFreeS) 51852 * NULL when list or delim are NULL 51853 */ 51854 char **extractS(const char *string, const char* delim1, const char* delim2) { 51855 char **tmp = NULL; 51856 char **r = NULL; 51857 51858 // sanity checks 51859 if (!string || !delim1 || !delim2) { 51860 return(NULL); 51861 } 51862 51863 if (strEq(delim1, delim2)) { 51864 return(NULL); 51865 } 51866 51867 tmp = split(string, delim1);; 51868 51869 if (!tmp) { 51870 return(NULL); 51871 } 51872 51873 if (listLengthS(tmp) < 2) { 51874 // delim1 not found 51875 listFreeS(tmp); 51876 return(NULL); 51877 } 51878 51879 // remove first element 51880 pErrorNULL(iListSliceS(&tmp, 1, 0)); 51881 51882 forEachCharP(tmp, e) { 51883 char **tmp2 = split(*e, delim2); 51884 if (listLengthS(tmp2) > 1) { 51885 pErrorNULL(listPushS(&r, tmp2[0])); 51886 } 51887 listFreeS(tmp2); 51888 } 51889 51890 listFreeS(tmp); 51891 return(r); 51892 } 51893 51894 char **extractCharSS(const char *string, char delim1, const char* delim2) { 51895 51896 charToS(d1, delim1); 51897 return(extractS(string, d1, delim2)); 51898 } 51899 51900 char **extractSCharS(const char *string, const char* delim1, char delim2) { 51901 51902 charToS(d2, delim2); 51903 return(extractS(string, delim1, d2)); 51904 } 51905 51906 char **extractCharCharS(const char *string, char delim1, char delim2) { 51907 51908 charToS(d1, delim1); 51909 charToS(d2, delim2); 51910 return(extractS(string, d1, d2)); 51911 } 51912 51913 /** 51914 * ignore case extract string between delim1 and delim2 strings 51915 * return list 51916 * 51917 * \param 51918 * string to split 51919 * \param 51920 * delim1 first delimiter 51921 * \param 51922 * delim2 second delimiter, has to different from delim1 51923 * \return 51924 * list of tokens (you must free the pointer with listFreeS) 51925 * NULL when list or delim are NULL 51926 */ 51927 char **icExtractS(const char *string, const char* delim1, const char* delim2) { 51928 char **tmp = NULL; 51929 char **r = NULL; 51930 51931 // sanity checks 51932 if (!string || !delim1 || !delim2) { 51933 return(NULL); 51934 } 51935 51936 if (strEq(delim1, delim2)) { 51937 return(NULL); 51938 } 51939 51940 tmp = icSplit(string, delim1);; 51941 51942 if (!tmp) { 51943 return(NULL); 51944 } 51945 51946 if (listLengthS(tmp) < 2) { 51947 // delim1 not found 51948 listFreeS(tmp); 51949 return(NULL); 51950 } 51951 51952 // remove first element 51953 pErrorNULL(iListSliceS(&tmp, 1, 0)); 51954 51955 forEachCharP(tmp, e) { 51956 char **tmp2 = icSplit(*e, delim2); 51957 if (listLengthS(tmp2) > 1) { 51958 pErrorNULL(listPushS(&r, tmp2[0])); 51959 } 51960 listFreeS(tmp2); 51961 } 51962 51963 listFreeS(tmp); 51964 return(r); 51965 } 51966 51967 char **icExtractCharSS(const char *string, char delim1, const char* delim2) { 51968 51969 charToS(d1, delim1); 51970 return(icExtractS(string, d1, delim2)); 51971 } 51972 51973 char **icExtractSCharS(const char *string, const char* delim1, char delim2) { 51974 51975 charToS(d2, delim2); 51976 return(icExtractS(string, delim1, d2)); 51977 } 51978 51979 char **icExtractCharCharS(const char *string, char delim1, char delim2) { 51980 51981 charToS(d1, delim1); 51982 charToS(d2, delim2); 51983 return(icExtractS(string, d1, d2)); 51984 } 51985 51986 /** 51987 * list Duplicate String 51988 * 51989 * \param 51990 * list 51991 * \return 51992 * duplicated list (you must free the pointer with listFreeS) 51993 * NULL when list is NULL 51994 */ 51995 char **listDupS(char **list) { 51996 char **l = NULL; 51997 size_t len; 51998 51999 // sanity checks 52000 if (!list) { 52001 return(NULL); 52002 } 52003 52004 len = listLengthS(list); 52005 l = MALLOC((len+1) * sizeof(char *)); 52006 if (!l) { 52007 return(NULL);//LCOV_EXCL_LINE 52008 } 52009 52010 // last element is NULL 52011 l[len] = NULL; 52012 52013 // copy each element 52014 enumerateCharP(list, e, i) { 52015 l[i] = strdup(*e); 52016 } 52017 return(l); 52018 } 52019 52020 /** 52021 * const list Duplicate String 52022 * 52023 * \param 52024 * list 52025 * \return 52026 * duplicated list (you must free the pointer with listFreeS) 52027 * NULL when list is NULL 52028 */ 52029 char **listDupCS(const char **list) { 52030 char **l = NULL; 52031 size_t len; 52032 52033 // sanity checks 52034 if (!list) { 52035 return(NULL); 52036 } 52037 52038 len = listLengthCS(list); 52039 l = MALLOC((len+1) * sizeof(char *)); 52040 if (!l) { 52041 return(NULL);//LCOV_EXCL_LINE 52042 } 52043 52044 // last element is NULL 52045 l[len] = NULL; 52046 52047 // copy each element 52048 enumerateCCharP(list, e, i) { 52049 l[i] = strdup(*e); 52050 } 52051 return(l); 52052 } 52053 52054 /** 52055 * list Duplicate String 52056 * 52057 * copy pointers to new list 52058 * After this function, free list with free instead of listFreeS 52059 * 52060 * Note: this function creates a new list, so char *** is not needed. 52061 * Unlike iList functions. 52062 * 52063 * \param 52064 * list 52065 * \return 52066 * new list pointing to the same string as list (you should free the pointer with free) 52067 * NULL when list is NULL 52068 */ 52069 char **iListDupS(char **list) { 52070 char **l = NULL; 52071 size_t len; 52072 52073 // sanity checks 52074 if (!list) { 52075 return(NULL); 52076 } 52077 52078 len = listLengthS(list); 52079 l = MALLOC((len+1) * sizeof(char *)); 52080 if (!l) { 52081 return(NULL);//LCOV_EXCL_LINE 52082 } 52083 52084 // last element is NULL 52085 l[len] = NULL; 52086 52087 // copy each element 52088 enumerateCharP(list, e, i) { 52089 l[i] = *e; 52090 } 52091 return(l); 52092 } 52093 52094 /** 52095 * list Reverse String 52096 * duplicate and reverse list, the last element is the first element of the new list 52097 * 52098 * \param 52099 * list 52100 * \return 52101 * reversed list (you must free the pointer with listFreeS) 52102 * NULL when list is NULL 52103 */ 52104 char **listReverseS(char **list) { 52105 char **l = NULL; 52106 size_t len; 52107 52108 // sanity checks 52109 if (!list) { 52110 return(NULL); 52111 } 52112 52113 len = listLengthS(list); 52114 l = MALLOC((len+1) * sizeof(char *)); 52115 if (!l) { 52116 return(NULL);//LCOV_EXCL_LINE 52117 } 52118 52119 // last element is NULL 52120 l[len] = NULL; 52121 52122 // copy each element in reverse order 52123 enumerateCharP(list, e, i) { 52124 l[len-1-i] = strdup(*e); 52125 } 52126 return(l); 52127 } 52128 52129 /** 52130 * list Reverse String 52131 * reverse list, the last element is the first element of the list 52132 * 52133 * \param 52134 * list (this parameter is reallocated) 52135 * \return 52136 * reversed list (you must free the pointer with listFreeS or free) 52137 * nothing when list is NULL 52138 * NULL error 52139 */ 52140 char **iListReverseS(char ***list) { 52141 char **l = NULL; 52142 size_t len; 52143 52144 // sanity checks 52145 if (!list || !*list) { 52146 return(NULL); 52147 } 52148 52149 len = listLengthS(*list); 52150 l = MALLOC((len+1) * sizeof(char *)); 52151 if (!l) { 52152 return(NULL); 52153 } 52154 52155 // last element is NULL 52156 l[len] = NULL; 52157 52158 // copy each element in reverse order 52159 enumerateCharP(*list, e, i) { 52160 l[len-1-i] = *e; 52161 } 52162 52163 free(*list); 52164 *list = l; 52165 return(l); 52166 } 52167 52168 /** 52169 * list Cat String 52170 * \param 52171 * arbitrary list of lists seperated by commas 52172 * \return 52173 * new list with input lists concatenated (you must free the pointer with listFreeS) 52174 */ 52175 char **listCatSF(char **paramType, ...) { 52176 va_list pl; 52177 char **r = NULL; 52178 52179 // add arguments to a list 52180 va_start(pl, paramType); 52181 paramType = va_arg(pl, char **); 52182 while (paramType) { 52183 pErrorNULL(listAppendS(&r, paramType)); 52184 paramType = va_arg(pl, char **); 52185 } 52186 va_end(pl); 52187 return(r); 52188 } 52189 52190 /** 52191 * list Append String 52192 * Append list2 at the end of list1 52193 * 52194 * list1 is reallocated to add extra space 52195 * 52196 * \param 52197 * list1 (this parameter is reallocated) 52198 * \param 52199 * list2 52200 * \return 52201 * list1 and list2 (you must free the pointer with listFreeS) 52202 * list1 not modified when list1 and list2 are NULL 52203 * NULL error 52204 */ 52205 char **listAppendS(char ***list1, char **list2) { 52206 char **r = NULL; 52207 char **l2 = NULL; 52208 size_t len1; 52209 size_t len2; 52210 bool freeL2Status = false;; 52211 52212 // sanity checks 52213 if (!list1) { 52214 // need a list to store results, abort 52215 return(NULL); 52216 } 52217 if (!(*list1)) { 52218 // copy list2 52219 (*list1) = listDupS(list2); 52220 return(*list1); 52221 } 52222 if (!list2) { 52223 // list1 not modified 52224 return(*list1); 52225 } 52226 52227 len1 = listLengthS(*list1); 52228 52229 if ((*list1) == list2) { 52230 // list1 and list2 identical, duplicate list before realloc 52231 // copy only the string pointers 52232 l2 = MALLOC((len1+1) * sizeof(char *)); 52233 if (!l2) { 52234 return(NULL); 52235 } 52236 int j = 0; 52237 while (list2[j]) { 52238 l2[j] = list2[j]; 52239 j++; 52240 } 52241 l2[j] = NULL; 52242 freeL2Status = true; 52243 } 52244 else { 52245 l2 = list2; 52246 } 52247 len2 = listLengthS(l2); 52248 r = REALLOC((*list1), (len1+len2+1) * sizeof(char *)); 52249 if (!r) { 52250 // realloc fails list1 not modified 52251 if (freeL2Status) { 52252 free(l2); 52253 } 52254 return(NULL); 52255 } 52256 (*list1) = r; 52257 // push list2 to new list 52258 enumerateCharP(l2, e, i) { 52259 r[len1+i] = strdup(*e); 52260 } 52261 52262 r[len1+len2] = NULL; 52263 52264 if (freeL2Status) { 52265 free(l2); 52266 } 52267 return(r); 52268 } 52269 52270 /** 52271 * in place list Append String 52272 * Append list2 at the end of list1 by copying the pointers 52273 * from list2 to list1. 52274 * After this function, free list2 with free instead of listFreeS 52275 * 52276 * list1 is reallocated to add extra space 52277 * 52278 * \param 52279 * list1 (this parameter is reallocated) 52280 * \param 52281 * list2 52282 * \return 52283 * list1 and list2 (you must free the pointer with listFreeS or free) 52284 * list1 not modified when list1 and list2 are NULL 52285 * or when list1 is identical to list2 (same pointers) 52286 * NULL error 52287 */ 52288 char **iListAppendS(char ***list1, char **list2) { 52289 char **r = NULL; 52290 size_t len1; 52291 size_t len2; 52292 52293 // sanity checks 52294 if (!list1) { 52295 // need a list to store results, abort 52296 return(NULL); 52297 } 52298 if (!list2 || !*list2) { 52299 // list1 not modified 52300 return(*list1); 52301 } 52302 if (!(*list1)) { 52303 // copy list2 52304 len2 = listLengthS(list2); 52305 *list1 = MALLOC((len2+1) * sizeof(char *)); 52306 if (!*list1) { 52307 return(NULL); 52308 } 52309 int j = 0; 52310 while (list2[j]) { 52311 (*list1)[j] = list2[j]; 52312 j++; 52313 } 52314 (*list1)[j] = NULL; 52315 return(*list1); 52316 } 52317 52318 len1 = listLengthS(*list1); 52319 52320 if ((*list1) == list2) { 52321 // list1 and list2 identical, cancel this operations 52322 // to avoid double free undefined behavior in listFreeS 52323 return(NULL); 52324 } 52325 52326 len2 = listLengthS(list2); 52327 r = REALLOC((*list1), (len1+len2+1) * sizeof(char *)); 52328 if (!r) { 52329 // realloc fails list1 not modified 52330 return(NULL); 52331 } 52332 (*list1) = r; 52333 // push list2 to new list 52334 enumerateCharP(list2, e, i) { 52335 r[len1+i] = *e; 52336 } 52337 52338 r[len1+len2] = NULL; 52339 52340 return(r); 52341 } 52342 52343 /** 52344 * list Append and smash list2 52345 * Append list2 at the end of list1 by copying the pointers 52346 * from list2 to list1. 52347 * 52348 * list2 is freed (except when there is an error) 52349 * 52350 * list1 is reallocated to add extra space 52351 * 52352 * \param 52353 * list1 (this parameter is reallocated) 52354 * \param 52355 * list2 52356 * \return 52357 * list1 and list2 (you must free the pointer with listFreeS or free) 52358 * list1 not modified when list1 and list2 are NULL 52359 * or when list1 is identical to list2 (same pointers) 52360 * NULL error 52361 */ 52362 char **iListAppendNSmashS(char ***list1, char **list2) { 52363 char **r = NULL; 52364 52365 r = iListAppendS(list1, list2); 52366 if (r) { 52367 free(list2); 52368 } 52369 return(r); 52370 } 52371 52372 /** 52373 * list Shift String 52374 * Append list2 at the start of list1 52375 * 52376 * list1 is reallocated to add extra space 52377 * 52378 * \param 52379 * list1 (this parameter is reallocated) 52380 * \param 52381 * list2 52382 * \return 52383 * list1 and list2 (you must free the pointer with listFreeS) 52384 * list1 not modified when list1 and list2 are NULL 52385 * NULL error 52386 */ 52387 char **listShiftS(char ***list1, char **list2) { 52388 52389 if (!list1) { 52390 return(NULL); 52391 } 52392 52393 char **r = listInsertS(*list1, 0, list2); 52394 if (r) { 52395 listFreeS(*list1); 52396 *list1 = r; 52397 } 52398 return(r); 52399 } 52400 52401 /** 52402 * in place list Shift String 52403 * Append list2 at the start of list1 by copying the pointers 52404 * from list2 to list1. 52405 * After this function, free list2 with free instead of listFreeS 52406 * 52407 * list1 is reallocated to add extra space 52408 * 52409 * \param 52410 * list1 (this parameter is reallocated) 52411 * \param 52412 * list2 52413 * \return 52414 * list1 and list2 (you must free the pointer with listFreeS or free) 52415 * list1 not modified when list1 and list2 are NULL 52416 * or when list1 is identical to list2 (same pointers) 52417 * NULL error 52418 */ 52419 char **iListShiftS(char ***list1, char **list2) { 52420 52421 return(iListInsertS(list1, 0, list2)); 52422 } 52423 52424 /** 52425 * list Append and smash list2 52426 * Append list2 at the start of list1 by copying the pointers 52427 * from list2 to list1. 52428 * 52429 * list2 is freed (except when there is an error) 52430 * 52431 * list1 is reallocated to add extra space 52432 * 52433 * \param 52434 * list1 (this parameter is reallocated) 52435 * \param 52436 * list2 52437 * \return 52438 * list1 and list2 (you must free the pointer with listFreeS or free) 52439 * list1 not modified when list1 and list2 are NULL 52440 * or when list1 is identical to list2 (same pointers) 52441 * NULL error 52442 */ 52443 char **iListShiftNSmashS(char ***list1, char **list2) { 52444 52445 return(iListInsertNFreeS(list1, 0, list2)); 52446 } 52447 52448 52449 /** 52450 * list Add String 52451 * add list1 and list2 in a new list 52452 * 52453 * \param 52454 * list1 52455 * \param 52456 * list2 52457 * \return 52458 * new list with list1 and list2 (you must free the pointer with listFreeS) 52459 * NULL when list1 and list2 are NULL 52460 */ 52461 char **listAddS(char **list1, char **list2) { 52462 char **l = NULL; 52463 char **r = NULL; 52464 size_t len1; 52465 size_t len2; 52466 52467 // sanity checks 52468 if (!list1 && !list2) { 52469 return(NULL); 52470 } 52471 if (!list1) { 52472 // copy list2 52473 return(listDupS(list2)); 52474 } 52475 if (!list2) { 52476 // copy list1 52477 return(listDupS(list1)); 52478 } 52479 // duplicate list1 52480 l = listDupS(list1); 52481 len1 = listLengthS(list1); 52482 len2 = listLengthS(list2); 52483 r = REALLOC(l, (len1+len2+1) * sizeof(char *)); 52484 if (!r) { 52485 // free l when realloc fails 52486 listFreeS(l); 52487 return(NULL);//LCOV_EXCL_LINE 52488 } 52489 // push list2 to new list 52490 enumerateCharP(list2, e, i) { 52491 r[len1+i] = strdup(*e); 52492 } 52493 52494 r[len1+len2] = NULL; 52495 52496 return(r); 52497 } 52498 52499 52500 /** 52501 * const list Add String 52502 * add list1 and list2 in a new list 52503 * 52504 * \param 52505 * list1 52506 * \param 52507 * list2 52508 * \return 52509 * new list with list1 and list2 (you must free the pointer with listFreeS) 52510 * NULL when list1 and list2 are NULL 52511 */ 52512 char **listAddCS(char **list1, const char **list2) { 52513 char **l = NULL; 52514 char **r = NULL; 52515 size_t len1; 52516 size_t len2; 52517 52518 // sanity checks 52519 if (!list1 && !list2) { 52520 return(NULL); 52521 } 52522 if (!list1) { 52523 // copy list2 52524 return(listDupCS(list2)); 52525 } 52526 if (!list2) { 52527 // copy list1 52528 return(listDupS(list1)); 52529 } 52530 // duplicate list1 52531 l = listDupS(list1); 52532 len1 = listLengthS(list1); 52533 len2 = listLengthCS(list2); 52534 r = REALLOC(l, (len1+len2+1) * sizeof(char *)); 52535 if (!r) { 52536 // free l when realloc fails 52537 listFreeS(l); 52538 return(NULL);//LCOV_EXCL_LINE 52539 } 52540 // push list2 to new list 52541 enumerateCCharP(list2, e, i) { 52542 r[len1+i] = strdup(*e); 52543 } 52544 52545 r[len1+len2] = NULL; 52546 52547 return(r); 52548 } 52549 52550 52551 /** 52552 * list Slice String 52553 * return new list with elements from start and end in list 52554 * negative indexes are allowed 52555 * 52556 * \param 52557 * list 52558 * \param 52559 * start index, must be in the list 52560 * \param 52561 * end index, must be in the list 52562 * \return 52563 * sliced list (you must free the pointer with listFreeS) 52564 * empty list when start=end 52565 * NULL when list is empty 52566 * NULL when list is NULL or when start and end are not set correctly 52567 */ 52568 char **listSliceS(char **list, int64_t start, int64_t end) { 52569 char **l = NULL; 52570 int64_t len; 52571 52572 // sanity checks 52573 if (!list) { 52574 return(NULL); 52575 } 52576 52577 len = (int64_t)listLengthS(list); 52578 52579 if (start > len) { 52580 return(NULL); 52581 } 52582 if (end > len) { 52583 end = len; 52584 } 52585 if (start <= -len) { 52586 start = -len; 52587 } 52588 if (end <= -len) { 52589 return(NULL); 52590 } 52591 if (start < 0) { 52592 start = len + start; 52593 } 52594 if (end <= 0) { 52595 end = len + end; 52596 } 52597 if (end < start) { 52598 return(NULL); 52599 } 52600 52601 if (start == end) { 52602 // empty list 52603 listEmptyS(l); 52604 return(l); 52605 } 52606 52607 // start < end < len 52608 int64_t n; 52609 n = end - start; 52610 l = MALLOC((size_t)(n+1) * sizeof(char *)); 52611 if (!l) { 52612 return(NULL);//LCOV_EXCL_LINE 52613 } 52614 for (int64_t i=0;i < n;i++) { 52615 l[i] = strdup(*(list+start+i)); 52616 } 52617 l[n] = NULL; 52618 return(l); 52619 } 52620 52621 /** 52622 * list Copy String 52623 * return new list with element pointers from start and end in list 52624 * negative indexes are allowed 52625 * 52626 * Note: this function creates a new list, so char *** is not needed. 52627 * Unlike iList functions. 52628 * 52629 * \param 52630 * list 52631 * \param 52632 * start index, must be in the list 52633 * \param 52634 * end index, must be in the list 52635 * \return 52636 * new list pointing to the same string as list (you must free the pointer with free) 52637 * empty list when start=end 52638 * NULL when list is empty 52639 * NULL when list is NULL or when start and end are not set correctly 52640 */ 52641 char **iListCopyS(char **list, int64_t start, int64_t end) { 52642 char **l = NULL; 52643 int64_t len; 52644 52645 // sanity checks 52646 if (!list) { 52647 return(NULL); 52648 } 52649 52650 len = (int64_t)listLengthS(list); 52651 52652 if (start > len) { 52653 return(NULL); 52654 } 52655 if (end > len) { 52656 end = len; 52657 } 52658 if (start <= -len) { 52659 start = -len; 52660 } 52661 if (end <= -len) { 52662 return(NULL); 52663 } 52664 if (start < 0) { 52665 start = len + start; 52666 } 52667 if (end <= 0) { 52668 end = len + end; 52669 } 52670 if (end < start) { 52671 return(NULL); 52672 } 52673 52674 if (start == end) { 52675 // empty list 52676 listEmptyS(l); 52677 return(l); 52678 } 52679 52680 // start < end < len 52681 int64_t n; 52682 n = end - start; 52683 l = MALLOC((size_t)(n+1) * sizeof(char *)); 52684 if (!l) { 52685 return(NULL);//LCOV_EXCL_LINE 52686 } 52687 for (int64_t i=0;i < n;i++) { 52688 l[i] = *(list+start+i); 52689 } 52690 l[n] = NULL; 52691 return(l); 52692 } 52693 52694 /** 52695 * list Slice String 52696 * return list with elements from start and end in list 52697 * negative indexes are allowed 52698 * 52699 * \param 52700 * list (this parameter is reallocated) 52701 * \param 52702 * start index, must be in the list 52703 * \param 52704 * end index, must be in the list 52705 * \return 52706 * sliced list (you must free the pointer with listFreeS or free) 52707 * empty list when start=end 52708 * unchanged when list is empty 52709 * unchanged when list is NULL or when start and end are not set correctly 52710 * NULL error 52711 */ 52712 char **iListSliceS(char ***list, int64_t start, int64_t end) { 52713 char **l = NULL; 52714 int64_t len; 52715 52716 // sanity checks 52717 if (!list || !*list) { 52718 return(NULL); 52719 } 52720 52721 len = (int64_t)listLengthS(*list); 52722 52723 if (start > len) { 52724 listFreeS(*list); 52725 listEmptyS(*list); 52726 return(NULL); 52727 } 52728 if (end > len) { 52729 end = len; 52730 } 52731 if (start <= -len) { 52732 start = -len; 52733 } 52734 if (end <= -len) { 52735 listFreeS(*list); 52736 listEmptyS(*list); 52737 return(NULL); 52738 } 52739 if (start < 0) { 52740 start = len + start; 52741 } 52742 if (end <= 0) { 52743 end = len + end; 52744 } 52745 if (end < start) { 52746 listFreeS(*list); 52747 listEmptyS(*list); 52748 return(NULL); 52749 } 52750 52751 if (start == end) { 52752 // empty list 52753 listEmptyS(l); 52754 // free elements 52755 listFreeS(*list); 52756 } 52757 else { 52758 // start < end < len 52759 int64_t n; 52760 n = end - start; 52761 l = MALLOC((size_t)(n+1) * sizeof(char *)); 52762 if (!l) { 52763 return(NULL); 52764 } 52765 for (int64_t i=0;i < n;i++) { 52766 l[i] = *((*list)+start+i); 52767 } 52768 l[n] = NULL; 52769 // free 0 < start 52770 for (int64_t i=0;i < start;i++) { 52771 free((*list)[i]); 52772 } 52773 // free end < len 52774 for (int64_t i=end;i < len;i++) { 52775 free((*list)[i]); 52776 } 52777 free(*list); 52778 } 52779 52780 *list = l; 52781 return(l); 52782 } 52783 52784 /** 52785 * list Crop String 52786 * return a new list with elements from start and end in list 52787 * and delete elements from start to end in the original list 52788 * negative indexes are allowed 52789 * 52790 * iListCropS is faster than listSliceS+iListDelS because only the 52791 * string pointers are copied to the sliced list 52792 * 52793 * \param 52794 * list 52795 * \param 52796 * start index, must be in the list 52797 * \param 52798 * end index, must be in the list 52799 * \return 52800 * new sliced list (you must free the pointer with listFreeS or free) 52801 * empty list when start=end 52802 * unchanged when list is empty 52803 * unchanged when list is NULL or when start and end are not set correctly 52804 * NULL error 52805 */ 52806 char **listCropS(char **list, int64_t start, int64_t end) { 52807 char **l = NULL; 52808 int64_t len; 52809 52810 // sanity checks 52811 if (!list) { 52812 return(NULL); 52813 } 52814 52815 len = (int64_t)listLengthS(list); 52816 52817 if (start > len) { 52818 return(NULL); 52819 } 52820 if (end > len) { 52821 end = len; 52822 } 52823 if (start <= -len) { 52824 start = -len; 52825 } 52826 if (end <= -len) { 52827 return(NULL); 52828 } 52829 if (start < 0) { 52830 start = len + start; 52831 } 52832 if (end <= 0) { 52833 end = len + end; 52834 } 52835 if (end < start) { 52836 return(NULL); 52837 } 52838 52839 if (start == end) { 52840 // empty list 52841 listEmptyS(l); 52842 return(l); 52843 } 52844 else { 52845 // start < end < len 52846 int64_t n; 52847 n = end - start; 52848 l = MALLOC((size_t)(n+1) * sizeof(char *)); 52849 if (!l) { 52850 return(NULL); 52851 } 52852 for (int64_t i=0;i < n;i++) { 52853 l[i] = *(list+start+i); 52854 } 52855 l[n] = NULL; 52856 // free end < len 52857 for (int64_t i=0;i < (len - end);i++) { 52858 list[i+start] = *(list+i+end); 52859 } 52860 list[len-n] = NULL; 52861 } 52862 52863 return(l); 52864 } 52865 52866 /** 52867 * list Crop String 52868 * return a new list with elements from start and end in list 52869 * and delete elements from start to end in the original list 52870 * negative indexes are allowed 52871 * 52872 * iListCropS is faster than listSliceS+iListDelS because only the 52873 * string pointers are copied to the sliced list 52874 * 52875 * \param 52876 * list 52877 * \param 52878 * start index, must be in the list 52879 * \param 52880 * end index, must be in the list 52881 * \return 52882 * new sliced list (you must free the pointer with listFreeS or free) 52883 * empty list when start=end 52884 * unchanged when list is empty 52885 * unchanged when list is NULL or when start and end are not set correctly 52886 * NULL error 52887 */ 52888 char **iListCropS(char ***list, int64_t start, int64_t end) { 52889 char **l = NULL; 52890 int64_t len; 52891 52892 // sanity checks 52893 if (!list || !*list) { 52894 return(NULL); 52895 } 52896 52897 len = (int64_t)listLengthS(*list); 52898 52899 if (start > len) { 52900 return(NULL); 52901 } 52902 if (end > len) { 52903 end = len; 52904 } 52905 if (start <= -len) { 52906 start = -len; 52907 } 52908 if (end <= -len) { 52909 return(NULL); 52910 } 52911 if (start < 0) { 52912 start = len + start; 52913 } 52914 if (end <= 0) { 52915 end = len + end; 52916 } 52917 if (end < start) { 52918 return(NULL); 52919 } 52920 52921 if (start == end) { 52922 // empty list 52923 listEmptyS(l); 52924 return(l); 52925 } 52926 else { 52927 // start < end < len 52928 int64_t n; 52929 n = end - start; 52930 l = MALLOC((size_t)(n+1) * sizeof(char *)); 52931 if (!l) { 52932 return(NULL); 52933 } 52934 for (int64_t i=0;i < n;i++) { 52935 l[i] = *((*list)+start+i); 52936 } 52937 l[n] = NULL; 52938 // free end < len 52939 for (int64_t i=0;i < (len - end);i++) { 52940 (*list)[i+start] = *((*list)+i+end); 52941 } 52942 (*list)[len-n] = NULL; 52943 } 52944 52945 return(l); 52946 } 52947 52948 /** 52949 * list Crop Element String 52950 * return element at index 52951 * and delete element at index in the original list 52952 * negative indexes are allowed 52953 * 52954 * iListCropS is faster than listSliceS+iListDelElemS because only the 52955 * string pointer is returned directly 52956 * 52957 * \param 52958 * list 52959 * \param 52960 * index must be in the list 52961 * \return 52962 * element at index (you must free the pointer with free) 52963 * empty list when start=end 52964 * unchanged when list is empty 52965 * unchanged when list is NULL or when start and end are not set correctly 52966 * NULL error 52967 */ 52968 char *listCropElemS(char **list, int64_t index) { 52969 char *r = NULL; 52970 int64_t len; 52971 52972 // sanity checks 52973 if (!list) { 52974 return(NULL); 52975 } 52976 52977 len = (int64_t)listLengthS(list); 52978 52979 if (len == 0) { 52980 return(NULL); 52981 } 52982 52983 if (index >= len) { 52984 return(NULL); 52985 } 52986 if (index < -len) { 52987 return(NULL); 52988 } 52989 if (index < 0) { 52990 index = len + index; 52991 } 52992 52993 r = *(list+index); 52994 for (int64_t i=index ; i < len-1 ; i++) { 52995 list[i] = *(list+1+i); 52996 } 52997 list[len-1] = NULL; 52998 52999 return(r); 53000 } 53001 53002 /** 53003 * list Crop Element String 53004 * return element at index 53005 * and delete element at index in the original list 53006 * negative indexes are allowed 53007 * 53008 * iListCropS is faster than listSliceS+iListDelElemS because only the 53009 * string pointer is returned directly 53010 * 53011 * \param 53012 * list 53013 * \param 53014 * index must be in the list 53015 * \return 53016 * element at index (you must free the pointer with free) 53017 * empty list when start=end 53018 * unchanged when list is empty 53019 * unchanged when list is NULL or when start and end are not set correctly 53020 * NULL error 53021 */ 53022 char *iListCropElemS(char ***list, int64_t index) { 53023 char *r = NULL; 53024 int64_t len; 53025 53026 // sanity checks 53027 if (!list || !*list) { 53028 return(NULL); 53029 } 53030 53031 len = (int64_t)listLengthS(*list); 53032 53033 if (len == 0) { 53034 return(NULL); 53035 } 53036 53037 if (index >= len) { 53038 return(NULL); 53039 } 53040 if (index < -len) { 53041 return(NULL); 53042 } 53043 if (index < 0) { 53044 index = len + index; 53045 } 53046 53047 r = *((*list)+index); 53048 for (int64_t i=index ; i < len-1 ; i++) { 53049 (*list)[i] = *((*list)+1+i); 53050 } 53051 (*list)[len-1] = NULL; 53052 53053 return(r); 53054 } 53055 53056 /** 53057 * list Insert string 53058 * 53059 * insert list in list at index 53060 * 53061 * return new list with toInsert at index 53062 * negative indexes are allowed 53063 * index -1 is the end of the array and is equivalent to index len 53064 * 53065 * \param 53066 * list 53067 * \param 53068 * index in list 53069 * \param 53070 * toInsert list 53071 * \return 53072 * new list (you must free the pointer with listFreeS) 53073 * NULL when list is NULL or invalid index 53074 */ 53075 char **listInsertS(char **list, int64_t index, char **toInsert) { 53076 char **r = NULL; 53077 int64_t len; 53078 53079 //sanity checks 53080 if (!list) { 53081 if (index || !toInsert) { 53082 return(NULL); 53083 } 53084 return(listDupS(toInsert)); 53085 } 53086 len = (int64_t)listLengthS(list); 53087 53088 if (!len && index == -1) { 53089 // empty string, index -1 is equal to 0 53090 index = 0; 53091 } 53092 bool neg = false; 53093 if (index < 0) { 53094 neg = true; 53095 } 53096 53097 if (index > len) { 53098 return(NULL); 53099 } 53100 if (neg) { 53101 index++; 53102 } 53103 if (index < -len) { 53104 return(NULL); 53105 } 53106 if (neg) { 53107 index = len + index; 53108 } 53109 53110 53111 if (!toInsert || listIsEmptyS(toInsert)) { 53112 return(listDupS(list)); 53113 } 53114 53115 if (index == 0) { 53116 // insert at beginning 53117 return(listAddS(toInsert, list)); 53118 } 53119 53120 char **l1 = listSliceS(list, 0, index); 53121 char **l2 = listSliceS(list, index, 0); 53122 r = listCatS(l1, toInsert, l2); 53123 listFreeManyS(l1,l2); 53124 53125 return(r); 53126 } 53127 53128 /** 53129 * list Insert string 53130 * 53131 * insert list in list at index 53132 * After this function, free toInsert with free instead of listFreeS 53133 * 53134 * return list with toInsert at index 53135 * negative indexes are allowed 53136 * index -1 is the end of the array and is equivalent to index len 53137 * 53138 * \param 53139 * list (this parameter is reallocated) 53140 * \param 53141 * index in list 53142 * \param 53143 * toInsert list 53144 * \return 53145 * list (you must free the pointer with listFreeS or free) 53146 * unchanged list when list is NULL or invalid index 53147 * NULL error 53148 */ 53149 char **iListInsertS(char ***list, int64_t index, char **toInsert) { 53150 char **r = NULL; 53151 int64_t len; 53152 53153 //sanity checks 53154 if (!list || !toInsert) { 53155 return(NULL); 53156 } 53157 if (!*list) { 53158 if (index) { 53159 return(NULL); 53160 } 53161 len = (int64_t)listLengthS(toInsert); 53162 r = MALLOC((size_t)(len+1) * sizeof(char *)); 53163 if (!r) { 53164 return(NULL);//LCOV_EXCL_LINE 53165 } 53166 // last element is NULL 53167 r[len] = NULL; 53168 // copy each element 53169 enumerateCharP(toInsert, e, i) { 53170 r[i] = *e; 53171 } 53172 *list = r; 53173 return(r); 53174 } 53175 53176 len = (int64_t)listLengthS(*list); 53177 53178 if (!len && index == -1) { 53179 // empty string, index -1 is equal to 0 53180 index = 0; 53181 } 53182 bool neg = false; 53183 if (index < 0) { 53184 neg = true; 53185 } 53186 53187 if (index > len) { 53188 return(NULL); 53189 } 53190 if (neg) { 53191 index++; 53192 } 53193 if (index < -len) { 53194 return(NULL); 53195 } 53196 if (neg) { 53197 index = len + index; 53198 } 53199 53200 53201 if (listIsEmptyS(toInsert)) { 53202 return(*list); 53203 } 53204 53205 if ((*list) == toInsert) { 53206 // list1 and list2 identical, cancel this operations 53207 // to avoid double free undefined behavior in listFreeS 53208 return(NULL); 53209 } 53210 53211 if (index == 0) { 53212 // insert at beginning 53213 pErrorNULL(iListAppendS(&r, toInsert)); 53214 pErrorNULL(iListAppendS(&r, *list)); 53215 } 53216 else { 53217 53218 r = iListCopyS(*list, 0, index);; 53219 char **l2 = iListCopyS(*list, index, 0); 53220 pErrorNULL(iListAppendS(&r, toInsert)); 53221 pErrorNULL(iListAppendS(&r, l2)); 53222 free(l2); 53223 } 53224 53225 free(*list); 53226 *list = r; 53227 return(r); 53228 } 53229 53230 /** 53231 * list Insert string and free toInsert 53232 * 53233 * insert list in list at index 53234 * 53235 * return list with toInsert at index 53236 * negative indexes are allowed 53237 * index -1 is the end of the array and is equivalent to index len 53238 * 53239 * \param 53240 * list (this parameter is reallocated) 53241 * \param 53242 * index in list 53243 * \param 53244 * toInsert list 53245 * \return 53246 * list (you must free the pointer with listFreeS or free) 53247 * unchanged list when list is NULL or invalid index 53248 * NULL error 53249 */ 53250 char **iListInsertNFreeS(char ***list, int64_t index, char **toInsert) { 53251 char **r = NULL; 53252 int64_t len; 53253 53254 //sanity checks 53255 if (!list || !toInsert) { 53256 return(NULL); 53257 } 53258 if (!*list) { 53259 if (index) { 53260 return(NULL); 53261 } 53262 r = listDupS(toInsert); 53263 listFreeS(toInsert); 53264 *list = r; 53265 return(r); 53266 } 53267 53268 len = (int64_t)listLengthS(*list); 53269 53270 if (!len && index == -1) { 53271 // empty string, index -1 is equal to 0 53272 index = 0; 53273 } 53274 bool neg = false; 53275 if (index < 0) { 53276 neg = true; 53277 } 53278 53279 if (index > len) { 53280 return(NULL); 53281 } 53282 if (neg) { 53283 index++; 53284 } 53285 if (index < -len) { 53286 return(NULL); 53287 } 53288 if (neg) { 53289 index = len + index; 53290 } 53291 53292 53293 if (listIsEmptyS(toInsert)) { 53294 listFreeS(toInsert); 53295 return(*list); 53296 } 53297 53298 if ((*list) == toInsert) { 53299 // list1 and list2 identical, cancel this operations 53300 // to avoid double free undefined behavior in listFreeS 53301 return(NULL); 53302 } 53303 53304 if (index == 0) { 53305 // insert at beginning 53306 pErrorNULL(iListAppendS(&r, toInsert)); 53307 pErrorNULL(iListAppendS(&r, *list)); 53308 } 53309 else { 53310 53311 r = iListCopyS(*list, 0, index);; 53312 char **l2 = iListCopyS(*list, index, 0); 53313 pErrorNULL(iListAppendS(&r, toInsert)); 53314 pErrorNULL(iListAppendS(&r, l2)); 53315 free(l2); 53316 } 53317 free(toInsert); 53318 53319 free(*list); 53320 *list = r; 53321 return(r); 53322 } 53323 53324 /** 53325 * list Inject string 53326 * 53327 * Inject string in list at index 53328 * 53329 * return new list with toInject at index 53330 * negative indexes are allowed 53331 * index -1 is the end of the array and is equivalent to index len 53332 * 53333 * \param 53334 * list 53335 * \param 53336 * index in list 53337 * \param 53338 * toInject string 53339 * \return 53340 * new list (you must free the pointer with listFreeS) 53341 * NULL when list is NULL or invalid index 53342 */ 53343 char **listInjectS(char **list, int64_t index, char *toInject) { 53344 char **r = NULL; 53345 int64_t len; 53346 53347 //sanity checks 53348 if (!list) { 53349 if (index || !toInject) { 53350 return(NULL); 53351 } 53352 pErrorNULL(listPushS(&r, toInject)); 53353 return(r); 53354 } 53355 53356 if (!toInject) { 53357 return(NULL); 53358 } 53359 53360 len = (int64_t)listLengthS(list); 53361 53362 if (!len && index == -1) { 53363 // empty string, index -1 is equal to 0 53364 index = 0; 53365 } 53366 bool neg = false; 53367 if (index < 0) { 53368 neg = true; 53369 } 53370 53371 if (index > len) { 53372 return(NULL); 53373 } 53374 if (neg) { 53375 index++; 53376 } 53377 if (index < -len) { 53378 return(NULL); 53379 } 53380 if (neg) { 53381 index = len + index; 53382 } 53383 53384 53385 char *inject[2]; 53386 inject[0] = toInject; 53387 inject[1] = NULL; 53388 53389 if (index == 0) { 53390 // Inject at beginning 53391 return(listAddS(inject, list)); 53392 } 53393 53394 char **l1 = listSliceS(list, 0, index); 53395 char **l2 = listSliceS(list, index, 0); 53396 r = listCatS(l1, inject, l2); 53397 listFreeManyS(l1,l2); 53398 53399 return(r); 53400 } 53401 53402 char **listInjectCharS(char **list, int64_t index, char toInject) { 53403 53404 charToS(s, toInject); 53405 return(listInjectS(list, index, s)); 53406 } 53407 53408 /** 53409 * list Inject string 53410 * 53411 * Inject string pointer in list at index 53412 * 53413 * return list with toInject at index 53414 * negative indexes are allowed 53415 * index -1 is the end of the array and is equivalent to index len 53416 * 53417 * \param 53418 * list (this parameter is reallocated) 53419 * \param 53420 * index in list 53421 * \param 53422 * toInject string 53423 * \return 53424 * list (you must free the pointer with listFreeS or free) 53425 * unchanged list when list is NULL or invalid index 53426 * NULL error 53427 */ 53428 char **iListInjectS(char ***list, int64_t index, char *toInject) { 53429 char **r = NULL; 53430 int64_t len; 53431 53432 //sanity checks 53433 if (!list || !toInject) { 53434 return(NULL); 53435 } 53436 if (!*list) { 53437 if (index) { 53438 return(NULL); 53439 } 53440 pErrorNULL(iListPushS(list, toInject)); 53441 return(*list); 53442 } 53443 53444 len = (int64_t)listLengthS(*list); 53445 53446 if (!len && index == -1) { 53447 // empty string, index -1 is equal to 0 53448 index = 0; 53449 } 53450 bool neg = false; 53451 if (index < 0) { 53452 neg = true; 53453 } 53454 53455 if (index > len) { 53456 return(NULL); 53457 } 53458 if (neg) { 53459 index++; 53460 } 53461 if (index < -len) { 53462 return(NULL); 53463 } 53464 if (neg) { 53465 index = len + index; 53466 } 53467 53468 53469 char *inject[2]; 53470 inject[0] = toInject; 53471 inject[1] = NULL; 53472 53473 if (index == 0) { 53474 // Inject at beginning 53475 pErrorNULL(iListAppendS(&r, inject)); 53476 pErrorNULL(iListAppendS(&r, *list)); 53477 } 53478 else { 53479 53480 r = iListCopyS(*list, 0, index);; 53481 char **l2 = iListCopyS(*list, index, 0); 53482 pErrorNULL(iListAppendS(&r, inject)); 53483 pErrorNULL(iListAppendS(&r, l2)); 53484 free(l2); 53485 } 53486 53487 free(*list); 53488 *list = r; 53489 return(r); 53490 } 53491 53492 char **iListInjectCharS(char ***list, int64_t index, char toInject) { 53493 53494 if (!list) { 53495 return(NULL); 53496 } 53497 53498 if (!*list && index) { 53499 return(NULL); 53500 } 53501 53502 charToS(s, toInject); 53503 *list = iListInjectS(list, index, strdup(s)); 53504 return(*list); 53505 } 53506 53507 /** 53508 * list Delete String 53509 * return new list without elements from start and end in list 53510 * negative indexes are allowed 53511 * 53512 * \param 53513 * list 53514 * \param 53515 * start index, must be in the list 53516 * \param 53517 * end index, must be in the list 53518 * \return 53519 * sliced list (you must free the pointer with listFreeS) 53520 * list copy when start=end or when start and end are not set correctly 53521 * NULL when list is empty 53522 * NULL when list is NULL or when end is under start 53523 */ 53524 char **listDelS(char **list, int64_t start, int64_t end) { 53525 char **l = NULL; 53526 int64_t len; 53527 53528 // sanity checks 53529 if (!list) { 53530 return(NULL); 53531 } 53532 53533 len = (int64_t)listLengthS(list); 53534 53535 if (len == 0) { 53536 return(NULL); 53537 } 53538 53539 if (start >= len) { 53540 start = len; 53541 } 53542 if (end > len) { 53543 end = len; 53544 } 53545 if (start <= -len) { 53546 start = -len; 53547 } 53548 if (end <= -len) { 53549 end = -len; 53550 } 53551 if (start < 0) { 53552 start = len + start; 53553 } 53554 if (end <= 0) { 53555 end = len + end; 53556 } 53557 if (end < start) { 53558 return(NULL); 53559 } 53560 53561 if (start == end) { 53562 return(listDupS(list)); 53563 } 53564 53565 // start < end < len 53566 int64_t n; 53567 n = end - start; 53568 l = MALLOC((size_t)(len-n+1) * sizeof(char *)); 53569 if (!l) { 53570 return(NULL);//LCOV_EXCL_LINE 53571 } 53572 for (int64_t i=0;i < start;i++) { 53573 l[i] = strdup(*(list+i)); 53574 } 53575 for (int64_t i=start ; i < len-n ; i++) { 53576 l[i] = strdup(*(list+n+i)); 53577 } 53578 l[len-n] = NULL; 53579 return(l); 53580 } 53581 53582 53583 /** 53584 * list Delete String 53585 * return list without elements from start and end in list 53586 * negative indexes are allowed 53587 * 53588 * \param 53589 * list (this parameter is reallocated) 53590 * \param 53591 * start index, must be in the list 53592 * \param 53593 * end index, must be in the list 53594 * \return 53595 * sliced list (you must free the pointer with listFreeS or free) 53596 * list copy when start=end or when start and end are not set correctly 53597 * NULL when list is empty 53598 * NULL when list is NULL or when end is under start 53599 * NULL error 53600 */ 53601 char **iListDelS(char ***list, int64_t start, int64_t end) { 53602 char **l = NULL; 53603 int64_t len; 53604 53605 // sanity checks 53606 if (!list || !*list) { 53607 return(NULL); 53608 } 53609 53610 len = (int64_t)listLengthS(*list); 53611 53612 if (len == 0) { 53613 return(NULL); 53614 } 53615 53616 if (start >= len) { 53617 start = len; 53618 } 53619 if (end > len) { 53620 end = len; 53621 } 53622 if (start <= -len) { 53623 start = -len; 53624 } 53625 if (end <= -len) { 53626 end = -len; 53627 } 53628 if (start < 0) { 53629 start = len + start; 53630 } 53631 if (end <= 0) { 53632 end = len + end; 53633 } 53634 if (end < start) { 53635 return(NULL); 53636 } 53637 53638 if (start == end) { 53639 return(*list); 53640 } 53641 53642 // start < end < len 53643 int64_t n; 53644 n = end - start; 53645 l = MALLOC((size_t)(len-n+1) * sizeof(char *)); 53646 if (!l) { 53647 return(NULL); 53648 } 53649 for (int64_t i=0;i < start;i++) { 53650 l[i] = *((*list)+i); 53651 } 53652 for (int64_t i=0;i < n;i++) { 53653 free(*((*list)+start+i)); 53654 } 53655 for (int64_t i=start ; i < len-n ; i++) { 53656 l[i] = *((*list)+n+i); 53657 } 53658 l[len-n] = NULL; 53659 53660 free(*list); 53661 *list = l; 53662 return(l); 53663 } 53664 53665 /** 53666 * list Remove String 53667 * return list without elements from start and end in list 53668 * the elements are removed without being freed 53669 * negative indexes are allowed 53670 * 53671 * \param 53672 * list (this parameter is reallocated) 53673 * \param 53674 * start index, must be in the list 53675 * \param 53676 * end index, must be in the list 53677 * \return 53678 * sliced list (you must free the pointer with listFreeS or free) 53679 * list copy when start=end or when start and end are not set correctly 53680 * NULL when list is empty 53681 * NULL when list is NULL or when end is under start 53682 * NULL error 53683 */ 53684 char **iListRemoveS(char ***list, int64_t start, int64_t end) { 53685 char **l = NULL; 53686 int64_t len; 53687 53688 // sanity checks 53689 if (!list || !*list) { 53690 return(NULL); 53691 } 53692 53693 len = (int64_t)listLengthS(*list); 53694 53695 if (len == 0) { 53696 return(NULL); 53697 } 53698 53699 if (start >= len) { 53700 start = len; 53701 } 53702 if (end > len) { 53703 end = len; 53704 } 53705 if (start <= -len) { 53706 start = -len; 53707 } 53708 if (end <= -len) { 53709 end = -len; 53710 } 53711 if (start < 0) { 53712 start = len + start; 53713 } 53714 if (end <= 0) { 53715 end = len + end; 53716 } 53717 if (end < start) { 53718 return(NULL); 53719 } 53720 53721 if (start == end) { 53722 return(*list); 53723 } 53724 53725 // start < end < len 53726 int64_t n; 53727 n = end - start; 53728 l = MALLOC((size_t)(len-n+1) * sizeof(char *)); 53729 if (!l) { 53730 return(NULL); 53731 } 53732 for (int64_t i=0;i < start;i++) { 53733 l[i] = *((*list)+i); 53734 } 53735 for (int64_t i=start ; i < len-n ; i++) { 53736 l[i] = *((*list)+n+i); 53737 } 53738 l[len-n] = NULL; 53739 53740 free(*list); 53741 *list = l; 53742 return(l); 53743 } 53744 53745 /** 53746 * list Delete Element String 53747 * return new list without the element at index 53748 * negative indexes are allowed 53749 * 53750 * \param 53751 * list 53752 * \param 53753 * index must be in the list 53754 * \return 53755 * new list without the element at index (you must free the pointer with listFreeS) 53756 * NULL when list is empty 53757 * NULL when list is NULL 53758 */ 53759 char **listDelElemS(char **list, int64_t index) { 53760 char **l = NULL; 53761 int64_t len; 53762 53763 // sanity checks 53764 if (!list) { 53765 return(NULL); 53766 } 53767 53768 len = (int64_t)listLengthS(list); 53769 53770 if (len == 0) { 53771 return(NULL); 53772 } 53773 53774 if (index >= len) { 53775 return(NULL); 53776 } 53777 if (index < -len) { 53778 return(NULL); 53779 } 53780 if (index < 0) { 53781 index = len + index; 53782 } 53783 53784 l = MALLOC((size_t)(len-1+1) * sizeof(char *)); 53785 if (!l) { 53786 return(NULL);//LCOV_EXCL_LINE 53787 } 53788 for (int64_t i=0;i < index;i++) { 53789 l[i] = strdup(*(list+i)); 53790 } 53791 for (int64_t i=index ; i < len-1 ; i++) { 53792 l[i] = strdup(*(list+1+i)); 53793 } 53794 l[len-1] = NULL; 53795 return(l); 53796 } 53797 53798 53799 /** 53800 * list Delete Element String 53801 * return list without the element at index 53802 * negative indexes are allowed 53803 * 53804 * \param 53805 * list (this parameter is reallocated) 53806 * \param 53807 * index must be in the list 53808 * \return 53809 * new list without the element at index (you must free the pointer with listFreeS) 53810 * NULL when list is empty 53811 * NULL when list is NULL 53812 * NULL error 53813 */ 53814 char **iListDelElemS(char ***list, int64_t index) { 53815 char **l = NULL; 53816 int64_t len; 53817 53818 // sanity checks 53819 if (!list || !*list) { 53820 return(NULL); 53821 } 53822 53823 len = (int64_t)listLengthS(*list); 53824 53825 if (len == 0) { 53826 return(NULL); 53827 } 53828 53829 if (index >= len) { 53830 return(NULL); 53831 } 53832 if (index < -len) { 53833 return(NULL); 53834 } 53835 if (index < 0) { 53836 index = len + index; 53837 } 53838 53839 l = MALLOC((size_t)(len-1+1) * sizeof(char *)); 53840 if (!l) { 53841 return(NULL); 53842 } 53843 for (int64_t i=0;i < index;i++) { 53844 l[i] = *((*list)+i); 53845 } 53846 free(*((*list)+index)); 53847 for (int64_t i=index ; i < len-1 ; i++) { 53848 l[i] = *((*list)+1+i); 53849 } 53850 l[len-1] = NULL; 53851 53852 free(*list); 53853 *list = l; 53854 return(l); 53855 } 53856 53857 53858 /** 53859 * list Remove Element String 53860 * return list without the element at index 53861 * the element is removed without being freed 53862 * negative indexes are allowed 53863 * 53864 * \param 53865 * list (this parameter is reallocated) 53866 * \param 53867 * index must be in the list 53868 * \return 53869 * new list without the element at index (you must free the pointer with listFreeS) 53870 * NULL when list is empty 53871 * NULL when list is NULL 53872 * NULL error 53873 */ 53874 char **iListRemoveElemS(char ***list, int64_t index) { 53875 char **l = NULL; 53876 int64_t len; 53877 53878 // sanity checks 53879 if (!list || !*list) { 53880 return(NULL); 53881 } 53882 53883 len = (int64_t)listLengthS(*list); 53884 53885 if (len == 0) { 53886 return(NULL); 53887 } 53888 53889 if (index >= len) { 53890 return(NULL); 53891 } 53892 if (index < -len) { 53893 return(NULL); 53894 } 53895 if (index < 0) { 53896 index = len + index; 53897 } 53898 53899 l = MALLOC((size_t)(len-1+1) * sizeof(char *)); 53900 if (!l) { 53901 return(NULL); 53902 } 53903 for (int64_t i=0;i < index;i++) { 53904 l[i] = *((*list)+i); 53905 } 53906 for (int64_t i=index ; i < len-1 ; i++) { 53907 l[i] = *((*list)+1+i); 53908 } 53909 l[len-1] = NULL; 53910 53911 free(*list); 53912 *list = l; 53913 return(l); 53914 } 53915 53916 53917 /** 53918 * print list elements 53919 * to stdout 53920 * 53921 * when list is NULL, returns directly without doing anything 53922 * 53923 * \param 53924 * list 53925 * \return 53926 * nothing 53927 * 1 success 53928 * 0 error 53929 */ 53930 int listPrintS(char **list) { 53931 53932 if (!list) { 53933 return(0); 53934 } 53935 forEachCharP(list, e) { 53936 printf("%s\n", *e); 53937 } 53938 return(1); 53939 } 53940 53941 int listPrintCS(const char **list) { 53942 53943 if (!list) { 53944 return(0); 53945 } 53946 forEachCCharP(list, e) { 53947 printf("%s\n", *e); 53948 } 53949 return(1); 53950 } 53951 53952 /** 53953 * list Sort String Compare function 53954 * 53955 * in: 53956 * a 53957 * b 53958 * out: 53959 * test result 53960 */ 53961 internal int listSortSCmp(const void * a, const void * b) { 53962 53963 // sanity checks 53964 if (!a && !b) { 53965 return(0); 53966 } 53967 if (!a && b) { 53968 return(-1); 53969 } 53970 if (a && !b) { 53971 return(1); 53972 } 53973 return(strcmp(*(char *const*)a,*(char *const*)b)); 53974 } 53975 53976 /** 53977 * list Sort String 53978 * duplicate list and sort 53979 * 53980 * \param 53981 * list 53982 * \return 53983 * new sorted list (you must free the pointer with listFreeS) 53984 * empty list when list is empty 53985 * NULL when list is NULL 53986 */ 53987 char **listSortS(char **list) { 53988 size_t len; 53989 char **l = NULL; 53990 53991 // sanity checks 53992 if (!list) { 53993 return(NULL); 53994 } 53995 len = listLengthS(list); 53996 // duplicate 53997 l = listDupS(list); 53998 if (!len) { 53999 return(l); 54000 } 54001 // sort 54002 qsort(l, len, sizeof(char *), listSortSCmp); 54003 return(l); 54004 } 54005 54006 /** 54007 * list Sort String 54008 * 54009 * \param 54010 * list 54011 * \return 54012 * sorted list 54013 * empty list when list is empty 54014 * unchanged list when list is NULL 54015 * NULL error 54016 */ 54017 char **iListSortS(char ***list) { 54018 size_t len; 54019 54020 // sanity checks 54021 if (!list || !*list) { 54022 return(NULL); 54023 } 54024 len = listLengthS(*list); 54025 if (!len) { 54026 return(NULL); 54027 } 54028 // sort 54029 qsort(*list, len, sizeof(char *), listSortSCmp); 54030 return(*list); 54031 } 54032 54033 /** 54034 * list Sort String 54035 * duplicate list and sort 54036 * 54037 * \param 54038 * list 54039 * compareFunction 54040 * \return 54041 * new sorted list (you must free the pointer with listFreeS) 54042 * empty list when list is empty 54043 * NULL when list is NULL 54044 */ 54045 char **listSortFS(char **list, shCmpt compareFunction) { 54046 size_t len; 54047 char **l = NULL; 54048 54049 // sanity checks 54050 if (!list || !compareFunction) { 54051 return(NULL); 54052 } 54053 len = listLengthS(list); 54054 // duplicate 54055 l = listDupS(list); 54056 if (!len) { 54057 return(l); 54058 } 54059 // sort 54060 qsort(l, len, sizeof(char *), compareFunction); 54061 return(l); 54062 } 54063 54064 /** 54065 * list Sort String 54066 * 54067 * \param 54068 * list 54069 * compareFunction 54070 * \return 54071 * sorted list 54072 * empty list when list is empty 54073 * unchanged list when list is NULL 54074 * NULL error 54075 */ 54076 char **iListSortFS(char ***list, shCmpt compareFunction) { 54077 size_t len; 54078 54079 // sanity checks 54080 if (!list || !*list) { 54081 return(NULL); 54082 } 54083 len = listLengthS(*list); 54084 if (!len) { 54085 return(NULL); 54086 } 54087 // sort 54088 qsort(*list, len, sizeof(char *), compareFunction); 54089 return(*list); 54090 } 54091 54092 54093 /** 54094 * ignore case list Sort String Compare function 54095 * 54096 * in: 54097 * a 54098 * b 54099 * out: 54100 * test result 54101 */ 54102 internal int icListSortSCmp(const void * a, const void * b) { 54103 54104 // sanity checks 54105 if (!a && !b) { 54106 return(0); 54107 } 54108 if (!a && b) { 54109 return(-1); 54110 } 54111 if (a && !b) { 54112 return(1); 54113 } 54114 return(strcasecmp(*(char *const*)a,*(char *const*)b)); 54115 } 54116 54117 /** 54118 * ignore case list Sort String 54119 * duplicate list and sort 54120 * 54121 * \param 54122 * list 54123 * \return 54124 * new sorted list (you must free the pointer with listFreeS) 54125 * empty list when list is empty 54126 * NULL when list is NULL 54127 */ 54128 char **icListSortS(char **list) { 54129 size_t len; 54130 char **l = NULL; 54131 54132 // sanity checks 54133 if (!list) { 54134 return(NULL); 54135 } 54136 len = listLengthS(list); 54137 // duplicate 54138 l = listDupS(list); 54139 if (!len) { 54140 return(l); 54141 } 54142 // sort 54143 qsort(l, len, sizeof(char *), icListSortSCmp); 54144 return(l); 54145 } 54146 54147 /** 54148 * ignore case list Sort String 54149 * 54150 * \param 54151 * list 54152 * \return 54153 * sorted list 54154 * empty list when list is empty 54155 * unchanged list when list is NULL 54156 * NULL error 54157 */ 54158 char **iicListSortS(char ***list) { 54159 size_t len; 54160 54161 // sanity checks 54162 if (!list || !*list) { 54163 return(NULL); 54164 } 54165 len = listLengthS(*list); 54166 if (!len) { 54167 return(NULL); 54168 } 54169 // sort 54170 qsort(*list, len, sizeof(char *), icListSortSCmp); 54171 return(*list); 54172 } 54173 54174 54175 /** 54176 * return text from filePath in a list 54177 * new line characters are removed 54178 * 54179 * \param 54180 * filePath: file path 54181 * \return 54182 * lines in list (you must free the pointer with listFreeS) 54183 * empty list when the file is empty 54184 * NULL on failure 54185 */ 54186 /* this readText has the same performance as the original and takes twice the amount of RAM */ 54187 /* most of the cycles are spent in listLengthS */ 54188 /* char **readText(const char *filePath) */ 54189 /* size_t len */ 54190 /* char *buf */ 54191 /* char **list */ 54192 /* */ 54193 /* // sanity checks */ 54194 /* if !filePath */ 54195 /* return NULL */ 54196 /* */ 54197 /* buf = readFileToS(filePath) */ 54198 /* if !buf */ 54199 /* return NULL */ 54200 /* len = fileSize(filePath) */ 54201 /* if len = 0 */ 54202 /* free buf */ 54203 /* return listEmptySF() */ 54204 /* if buf[len-1] = '\n' */ 54205 /* // remove last return char to avoid empty line in split */ 54206 /* buf[len-1] = 0 */ 54207 /* list = split(buf, "\n") */ 54208 /* free buf */ 54209 /* return list */ 54210 54211 char **readText(const char *filePath) { 54212 FILE *fp = NULL; 54213 size_t len; 54214 char* line = NULL; 54215 ssize_t read; 54216 char **list = NULL; 54217 54218 // sanity checks 54219 if (!filePath || isBlankS(filePath)) { 54220 return(NULL); 54221 } 54222 fp = fopen(filePath, "r"); 54223 if (!fp) { 54224 pFuncError 54225 shEPrintfS("The path was: \"%s\"\n", filePath); 54226 return(NULL); 54227 } 54228 // read all lines 54229 read = getline(&line, &len, fp); 54230 size_t index = 0; 54231 size_t alloc = sizeof(*list); 54232 list = MALLOC(alloc); 54233 if (!list) { 54234 goto end; 54235 } 54236 *list = NULL; 54237 while (read != -1) { 54238 { 54239 char* pos = NULL; 54240 pos = strchr(line, '\n'); 54241 if (pos != NULL) 54242 *pos = '\0'; 54243 } 54244 size_t newsize = makeRoom((index+1) * sizeof(*list), alloc, sizeof(*list)); 54245 if (newsize != alloc) { 54246 char **tmp = REALLOC(list, newsize); 54247 if (!tmp) { 54248 listFreeS(list); 54249 list = NULL; 54250 goto end; 54251 } 54252 alloc = newsize; 54253 list = tmp; 54254 } 54255 list[index] = strdup(line); 54256 list[++index] = NULL; 54257 read = getline(&line, &len, fp); 54258 } 54259 end: 54260 fclose(fp); 54261 free(line); 54262 return(list); 54263 } 54264 54265 /** 54266 * return text from stream fp in a list 54267 * new line characters are removed 54268 * 54269 * \param 54270 * fp: file stream 54271 * \return 54272 * lines in list (you must free the pointer with listFreeS) 54273 * empty list when there is no data in the stream 54274 * NULL on failure 54275 */ 54276 char **readStream(FILE *fp) { 54277 size_t len; 54278 char* line = NULL; 54279 ssize_t read; 54280 char **list = NULL; 54281 54282 // sanity checks 54283 if (!fp) { 54284 return(NULL); 54285 } 54286 // read all lines 54287 read = getline(&line, &len, (FILE *) fp); 54288 while (read != -1) { 54289 { 54290 char* pos = NULL; 54291 pos = strchr(line, '\n'); 54292 if (pos != NULL) 54293 *pos = '\0'; 54294 } 54295 pErrorNULL(iListPushS(&list, line)); 54296 line = NULL; 54297 len = 0; 54298 read = getline(&line, &len, (FILE *) fp); 54299 } 54300 free(line); 54301 if (!list) { 54302 // nothing was read 54303 listEmptyS(list); 54304 } 54305 return(list); 54306 } 54307 54308 /** 54309 * write list to filePath 54310 * 54311 * \param 54312 * filePath 54313 * \param 54314 * list 54315 * \return 54316 * true success 54317 * false failed, filePath or list are NULL 54318 */ 54319 bool writeText(const char *filePath, char **list) { 54320 FILE *fp = NULL; 54321 54322 // sanity checks 54323 if (!filePath || isBlankS(filePath)) { 54324 return(false); 54325 } 54326 54327 fp = fopen(filePath, "w"); 54328 if (!fp) { 54329 pFuncError 54330 shEPrintfS("The path was: \"%s\"\n", filePath); 54331 return(false); 54332 } 54333 if (!list) { 54334 fclose(fp); 54335 return(false); 54336 } 54337 forEachCharP(list, e) { 54338 // add new line 54339 fprintf(fp, "%s\n", *e); 54340 } 54341 fclose(fp); 54342 return(true); 54343 } 54344 54345 /** 54346 * write const list to filePath 54347 * 54348 * \param 54349 * filePath 54350 * \param 54351 * list 54352 * \return 54353 * true success 54354 * false failed, filePath or list are NULL 54355 */ 54356 bool writeCText(const char *filePath, const char **list) { 54357 FILE *fp = NULL; 54358 54359 // sanity checks 54360 if (!filePath || isBlankS(filePath)) { 54361 return(false); 54362 } 54363 54364 fp = fopen(filePath, "w"); 54365 if (!fp) { 54366 pFuncError 54367 shEPrintfS("The path was: \"%s\"\n", filePath); 54368 return(false); 54369 } 54370 if (!list) { 54371 fclose(fp); 54372 return(false); 54373 } 54374 forEachCCharP(list, e) { 54375 // add new line 54376 fprintf(fp, "%s\n", *e); 54377 } 54378 fclose(fp); 54379 return(true); 54380 } 54381 54382 /** 54383 * write list to stream 54384 * 54385 * \param 54386 * fp: file stream 54387 * \param 54388 * list 54389 * \return 54390 * true success 54391 * false failed, fp or list are NULL 54392 */ 54393 bool writeStream(FILE *fp, char **list) { 54394 54395 // sanity checks 54396 if (!fp || !list) { 54397 return(false); 54398 } 54399 forEachCharP(list, e) { 54400 // add new line 54401 fprintf((FILE*)fp, "%s\n", *e); 54402 } 54403 return(true); 54404 } 54405 54406 /** 54407 * write const list to stream 54408 * 54409 * \param 54410 * fp: file stream 54411 * \param 54412 * list 54413 * \return 54414 * true success 54415 * false failed, fp or list are NULL 54416 */ 54417 bool writeCStream(FILE *fp, const char **list) { 54418 54419 // sanity checks 54420 if (!fp || !list) { 54421 return(false); 54422 } 54423 forEachCCharP(list, e) { 54424 // add new line 54425 fprintf((FILE*)fp, "%s\n", *e); 54426 } 54427 return(true); 54428 } 54429 54430 /** 54431 * append list to filePath 54432 * 54433 * \param 54434 * filePath 54435 * \param 54436 * list 54437 * \return 54438 * true success 54439 * false failed, filePath or list are NULL 54440 */ 54441 bool appendText(const char *filePath, char **list) { 54442 FILE *fp = NULL; 54443 54444 // sanity checks 54445 if (!filePath || isBlankS(filePath)) { 54446 return(false); 54447 } 54448 54449 fp = fopen(filePath, "a"); 54450 if (!fp) { 54451 pFuncError 54452 shEPrintfS("The path was: \"%s\"\n", filePath); 54453 return(false); 54454 } 54455 if (!list) { 54456 fclose(fp); 54457 return(false); 54458 } 54459 forEachCharP(list, e) { 54460 // add new line 54461 fprintf(fp, "%s\n", *e); 54462 } 54463 fclose(fp); 54464 return(true); 54465 } 54466 54467 /** 54468 * append const list to filePath 54469 * 54470 * \param 54471 * filePath 54472 * \param 54473 * list 54474 * \return 54475 * true success 54476 * false failed, filePath or list are NULL 54477 */ 54478 bool appendCText(const char *filePath, const char **list) { 54479 FILE *fp = NULL; 54480 54481 // sanity checks 54482 if (!filePath || isBlankS(filePath)) { 54483 return(false); 54484 } 54485 54486 fp = fopen(filePath, "a"); 54487 if (!fp) { 54488 pFuncError 54489 shEPrintfS("The path was: \"%s\"\n", filePath); 54490 return(false); 54491 } 54492 if (!list) { 54493 fclose(fp); 54494 return(false); 54495 } 54496 forEachCCharP(list, e) { 54497 // add new line 54498 fprintf(fp, "%s\n", *e); 54499 } 54500 fclose(fp); 54501 return(true); 54502 } 54503 54504 /** 54505 * execute command 54506 * return stdout from cmd 54507 * 54508 * \param 54509 * cmd: command 54510 * \return 54511 * stdout from command in a list (you must free the pointer with listFreeS) 54512 * empty list when command didnt produce any output 54513 * NULL when cmd is NULL 54514 */ 54515 char **execOut(const char *cmd) { 54516 FILE* fp = NULL; 54517 char **list = NULL; 54518 54519 // sanity checks 54520 if (!cmd) { 54521 return(NULL); 54522 } 54523 54524 fp = popen(cmd, "r"); 54525 if (!fp) { 54526 pFuncError 54527 shEPrintfS("The command was: \"%s\"\n", cmd); 54528 return(NULL);//LCOV_EXCL_LINE 54529 } 54530 54531 list = readStream(fp); 54532 54533 pclose(fp); 54534 return(list); 54535 } 54536 54537 /** 54538 * execute system command with formatting 54539 * 54540 * \param 54541 * formatting 54542 * \return 54543 * stdout from command in a list (you must free the pointer with listFreeS) 54544 * empty list when command didnt produce any output 54545 * NULL when cmd is NULL 54546 */ 54547 char **systemOutf(const char *fmt, ...) { 54548 char *cmd = NULL; 54549 va_list pl; 54550 54551 if (!fmt) { 54552 return(NULL); 54553 } 54554 va_start(pl, fmt); 54555 if (vasprintf(&cmd, fmt, pl) == -1) { 54556 return(NULL); 54557 } 54558 va_end(pl); 54559 54560 char **r = execOut(cmd); 54561 free(cmd); 54562 return(r); 54563 } 54564 54565 /** 54566 * execute system command with formatting 54567 * 54568 * \param 54569 * formatting 54570 * \return 54571 * system return code 54572 */ 54573 int systemf(const char *fmt, ...) { 54574 char *cmd = NULL; 54575 va_list pl; 54576 54577 if (!fmt) { 54578 return(-1); 54579 } 54580 va_start(pl, fmt); 54581 if (vasprintf(&cmd, fmt, pl) == -1) { 54582 va_end(pl); 54583 return(-1); 54584 } 54585 va_end(pl); 54586 54587 return(systemNFree(cmd)); 54588 } 54589 54590 /** 54591 * run command in default shell 54592 * 54593 * Exit value equals to 127 is considered an error 54594 * because if a shell could not be executed in the child process, then 54595 * the return value from system() is 127 (man 3 system). 54596 * 54597 * \param 54598 * cmd command string 54599 * \return 54600 * command exit code 54601 * -1 when cmd is NULL or system exited with errors 54602 */ 54603 int commandF(const char *cmd, int line, const char *thisFunc, const char *thisFileName) { 54604 54605 if (!cmd) { 54606 shEPrintfS("\nSystem Error at %d, %s, %s. The command was: NULL\n", line, thisFunc, thisFileName); 54607 return(-1); 54608 } 54609 54610 int r = system(cmd); 54611 54612 if (!WIFEXITED(r)) { 54613 shEPrintfS("\nSystem Error at %d, %s, %s. The command was: \"%s\"\n", line, thisFunc, thisFileName, cmd); 54614 return(-1); 54615 } 54616 54617 r = WEXITSTATUS(r);; 54618 54619 if (r == 127) { 54620 shEPrintfS("\nSystem Error at %d, %s, %s. The command was: \"%s\"\n", line, thisFunc, thisFileName, cmd); 54621 return(-1); 54622 } 54623 54624 return(r); 54625 } 54626 54627 /** 54628 * run command with formatting in default shell 54629 * 54630 * Exit value equals to 127 is considered an error 54631 * because if a shell could not be executed in the child process, then 54632 * the return value from system() is 127 (man 3 system). 54633 * 54634 * \param 54635 * formatting 54636 * \return 54637 * command exit code 54638 * -1 when cmd is NULL or system exited with errors 54639 */ 54640 int commandfF(int line, const char *thisFunc, const char *thisFileName, const char *fmt, ...) { 54641 char *cmd = NULL; 54642 va_list pl; 54643 54644 if (!fmt) { 54645 return(-1); 54646 } 54647 va_start(pl, fmt); 54648 if (vasprintf(&cmd, fmt, pl) == -1) { 54649 va_end(pl); 54650 return(-1); 54651 } 54652 va_end(pl); 54653 54654 return(commandNFreeF(cmd, line, thisFunc, thisFileName)); 54655 } 54656 54657 /** 54658 * run command in default shell and free the cmd parameter 54659 * 54660 * Exit value equals to 127 is considered an error 54661 * because if a shell could not be executed in the child process, then 54662 * the return value from system() is 127 (man 3 system). 54663 * 54664 * \param 54665 * cmd command string 54666 * \return 54667 * command exit code 54668 * -1 when cmd is NULL or system exited with errors 54669 */ 54670 int commandNFreeF(char *cmd, int line, const char *thisFunc, const char *thisFileName) { 54671 int r; 54672 54673 r = commandF(cmd, line, thisFunc, thisFileName); 54674 free(cmd); 54675 return(r); 54676 } 54677 54678 /** 54679 * list Equal String 54680 * compare each element of list1 and list2 54681 * 54682 * \param 54683 * 2 lists 54684 * \return 54685 * true the lists have identical elements 54686 * false they differ 54687 */ 54688 bool listEqS(char **list1, char **list2) { 54689 54690 // sanity checks 54691 if (!list1 || !list2) { 54692 return(false); 54693 } 54694 if (listLengthS(list1) != listLengthS(list2)) { 54695 return(false); 54696 } 54697 54698 // compare elements 54699 enumerateCharP(list1, e, i) { 54700 if (!strEq(*e, list2[i])) { 54701 return(false); 54702 } 54703 } 54704 54705 return(true); 54706 } 54707 54708 /** 54709 * const(list2) list Equal String 54710 * compare each element of list1 and list2 54711 * 54712 * \param 54713 * 2 lists 54714 * \return 54715 * true the lists have identical elements 54716 * false they differ 54717 */ 54718 bool listEqCS(char **list1, const char **list2) { 54719 54720 // sanity checks 54721 if (!list1 || !list2) { 54722 return(false); 54723 } 54724 if (listLengthS(list1) != listLengthCS(list2)) { 54725 return(false); 54726 } 54727 54728 // compare elements 54729 enumerateCharP(list1, e, i) { 54730 if (!strEq(*e, list2[i])) { 54731 return(false); 54732 } 54733 } 54734 54735 return(true); 54736 } 54737 54738 /** 54739 * const(list1) list Equal String 54740 * compare each element of list1 and list2 54741 * 54742 * \param 54743 * 2 lists 54744 * \return 54745 * true the lists have identical elements 54746 * false they differ 54747 */ 54748 bool listEqC1S(const char **list1, char **list2) { 54749 54750 // sanity checks 54751 if (!list1 || !list2) { 54752 return(false); 54753 } 54754 if (listLengthCS(list1) != listLengthS(list2)) { 54755 return(false); 54756 } 54757 54758 // compare elements 54759 enumerateCCharP(list1, e, i) { 54760 if (!strEq(*e, list2[i])) { 54761 return(false); 54762 } 54763 } 54764 54765 return(true); 54766 } 54767 54768 /** 54769 * const(list1 and 2) list Equal String 54770 * compare each element of list1 and list2 54771 * 54772 * \param 54773 * 2 lists 54774 * \return 54775 * true the lists have identical elements 54776 * false they differ 54777 */ 54778 bool listEqCCS(const char **list1, const char **list2) { 54779 54780 // sanity checks 54781 if (!list1 || !list2) { 54782 return(false); 54783 } 54784 if (listLengthCS(list1) != listLengthCS(list2)) { 54785 return(false); 54786 } 54787 54788 // compare elements 54789 enumerateCCharP(list1, e, i) { 54790 if (!strEq(*e, list2[i])) { 54791 return(false); 54792 } 54793 } 54794 54795 return(true); 54796 } 54797 54798 /** 54799 * return true when list has string 54800 * 54801 * \param 54802 * list 54803 * \param 54804 * string 54805 * \return 54806 * true when list has string 54807 * false when the string is not found 54808 * false when list or string are NULL 54809 */ 54810 bool listHasS(char **list, const char *string) { 54811 54812 if (!list || !string) { 54813 return(false); 54814 } 54815 if (listIndexOfS(list, string) == -1) { 54816 return(false); 54817 } 54818 return(true); 54819 } 54820 54821 /** 54822 * return true when const list has string 54823 * 54824 * \param 54825 * list 54826 * \param 54827 * string 54828 * \return 54829 * true when list has string 54830 * false when the string is not found 54831 * false when list or string are NULL 54832 */ 54833 bool listHasCS(const char **list, const char *string) { 54834 54835 if (!list || !string) { 54836 return(false); 54837 } 54838 if (listIndexOfCS(list, string) == -1) { 54839 return(false); 54840 } 54841 return(true); 54842 } 54843 54844 bool listHasCharS(char **list, char c) { 54845 54846 charToS(s, c); 54847 return(listHasS(list, s)); 54848 } 54849 54850 bool listHasCharCS(const char **list, char c) { 54851 54852 charToS(s, c); 54853 return(listHasCS(list, s)); 54854 } 54855 54856 /** 54857 * return index of string in list 54858 * 54859 * \param 54860 * list 54861 * \param 54862 * string 54863 * \return 54864 * index 54865 * -1 when the string is not found 54866 * -1 when list or string are NULL 54867 */ 54868 ssize_t listIndexOfS(char **list, const char *string) { 54869 bool found = false;; 54870 54871 // sanity checks 54872 if (!list || !string) { 54873 return(-1); 54874 } 54875 // search string in elements 54876 enumerateCharP(list, e, i) { 54877 if (strEq(*e, string)) { 54878 found = true; 54879 break; 54880 } 54881 } 54882 if (found) { 54883 return((ssize_t)i); 54884 } 54885 else { 54886 return(-1); 54887 } 54888 } 54889 54890 /** 54891 * return index of string in const list 54892 * 54893 * \param 54894 * list 54895 * \param 54896 * string 54897 * \return 54898 * index 54899 * -1 when the string is not found 54900 * -1 when list or string are NULL 54901 */ 54902 ssize_t listIndexOfCS(const char **list, const char *string) { 54903 bool found = false;; 54904 54905 // sanity checks 54906 if (!list || !string) { 54907 return(-1); 54908 } 54909 // search string in elements 54910 enumerateCCharP(list, e, i) { 54911 if (strEq(*e, string)) { 54912 found = true; 54913 break; 54914 } 54915 } 54916 if (found) { 54917 return((ssize_t)i); 54918 } 54919 else { 54920 return(-1); 54921 } 54922 } 54923 54924 ssize_t listIndexOfCharS(char **list, char c) { 54925 54926 charToS(s, c); 54927 return(listIndexOfS(list, s)); 54928 } 54929 54930 ssize_t listIndexOfCharCS(const char **list, char c) { 54931 54932 charToS(s, c); 54933 return(listIndexOfCS(list, s)); 54934 } 54935 54936 /** 54937 * list binary search string 54938 * 54939 * efficiently finds the index of string in list 54940 * the list has to be sorted with for example listSortS 54941 * 54942 * \param 54943 * list 54944 * \param 54945 * string to search 54946 * \return 54947 * index of string 54948 * -1 string not found or NULL input pointers 54949 */ 54950 ssize_t listBinarySearchS(char **list, const char *string) { 54951 ssize_t first = 0, middle, last;; 54952 54953 if (!list || !string) { 54954 return(-1); 54955 } 54956 54957 last = (ssize_t)(listLengthS(list) - 1); 54958 while (first <= last) { 54959 middle = (first+last)/2; 54960 if (strcmp(list[middle], string) < 0) { 54961 first = middle + 1; 54962 } 54963 else if (strcmp(list[middle], string) == 0) { 54964 return(middle); 54965 } 54966 else { 54967 last = middle -1; 54968 } 54969 } 54970 return(-1); 54971 } 54972 54973 ssize_t listBinarySearchCharS(char **list, char c) { 54974 54975 charToS(s, c); 54976 return(listBinarySearchS(list, s)); 54977 } 54978 54979 /** 54980 * Uniquify elements of list 54981 * duplicate list 54982 * each elements are unique in the new list 54983 * 54984 * \param 54985 * list 54986 * \return 54987 * new list with unique elements (you must free the pointer with listFreeS) 54988 * empty list when list is empty 54989 * NULL when list is NULL 54990 */ 54991 char **listUniqS(char **list) { 54992 char **r = NULL; 54993 54994 // sanity checks 54995 if (!list) { 54996 return(NULL); 54997 } 54998 54999 size_t len = listLengthS(list); 55000 55001 if (!len) { 55002 listEmptyS(r); 55003 return(r); 55004 } 55005 pErrorNULL(listPushS(&r, list[0])); 55006 // one element list 55007 if (len == 1) { 55008 return(r); 55009 } 55010 // push element to new list if it is not already in new list 55011 forEachCharP(list, e) { 55012 if (listIndexOfS(r, *e) == -1) { 55013 pErrorNULL(listPushS(&r, *e)); 55014 } 55015 } 55016 return(r); 55017 } 55018 55019 /** 55020 * Uniquify elements of list 55021 * each elements are unique in the list 55022 * 55023 * \param 55024 * list (this parameter is reallocated) 55025 * \return 55026 * list with unique elements (you must free the pointer with listFreeS) 55027 * empty list when list is empty 55028 * unchanged list when list is NULL 55029 * NULL error 55030 */ 55031 char **iListUniqS(char ***list) { 55032 char **r = NULL; 55033 55034 // sanity checks 55035 if (!list || !*list) { 55036 return(NULL); 55037 } 55038 55039 size_t len = listLengthS(*list); 55040 55041 if (!len) { 55042 listEmptyS(r); 55043 } 55044 else if (len == 1) { 55045 // one element list 55046 pErrorNULL(iListPushS(&r, (*list)[0])); 55047 } 55048 else { 55049 // push element to new list if it is not already in new list 55050 forEachCharP(*list, e) { 55051 if (listIndexOfS(r, *e) == -1) { 55052 pErrorNULL(iListPushS(&r, *e)); 55053 } 55054 else { 55055 free(*e); 55056 } 55057 } 55058 } 55059 55060 free(*list); 55061 *list = r; 55062 return(r); 55063 } 55064 55065 /** 55066 * ignore case list Equal String 55067 * compare each element of list1 and list2 55068 * 55069 * \param 55070 * 2 lists 55071 * \return 55072 * true the lists have identical elements 55073 * false they differ 55074 */ 55075 bool icListEqS(char **list1, char **list2) { 55076 55077 // sanity checks 55078 if (!list1 || !list2) { 55079 return(false); 55080 } 55081 if (listLengthS(list1) != listLengthS(list2)) { 55082 return(false); 55083 } 55084 55085 // compare elements 55086 enumerateCharP(list1, e, i) { 55087 if (!icEqS(*e, list2[i])) { 55088 return(false); 55089 } 55090 } 55091 55092 return(true); 55093 } 55094 55095 /** 55096 * ignore case const(list2) list Equal String 55097 * compare each element of list1 and list2 55098 * 55099 * \param 55100 * 2 lists 55101 * \return 55102 * true the lists have identical elements 55103 * false they differ 55104 */ 55105 bool icListEqCS(char **list1, const char **list2) { 55106 55107 // sanity checks 55108 if (!list1 || !list2) { 55109 return(false); 55110 } 55111 if (listLengthS(list1) != listLengthCS(list2)) { 55112 return(false); 55113 } 55114 55115 // compare elements 55116 enumerateCharP(list1, e, i) { 55117 if (!icEqS(*e, list2[i])) { 55118 return(false); 55119 } 55120 } 55121 55122 return(true); 55123 } 55124 55125 /** 55126 * ignore case const(list1) list Equal String 55127 * compare each element of list1 and list2 55128 * 55129 * \param 55130 * 2 lists 55131 * \return 55132 * true the lists have identical elements 55133 * false they differ 55134 */ 55135 bool icListEqC1S(const char **list1, char **list2) { 55136 55137 // sanity checks 55138 if (!list1 || !list2) { 55139 return(false); 55140 } 55141 if (listLengthCS(list1) != listLengthS(list2)) { 55142 return(false); 55143 } 55144 55145 // compare elements 55146 enumerateCCharP(list1, e, i) { 55147 if (!icEqS(*e, list2[i])) { 55148 return(false); 55149 } 55150 } 55151 55152 return(true); 55153 } 55154 55155 /** 55156 * ignore case const(list1 and 2) list Equal String 55157 * compare each element of list1 and list2 55158 * 55159 * \param 55160 * 2 lists 55161 * \return 55162 * true the lists have identical elements 55163 * false they differ 55164 */ 55165 bool icListEqCCS(const char **list1, const char **list2) { 55166 55167 // sanity checks 55168 if (!list1 || !list2) { 55169 return(false); 55170 } 55171 if (listLengthCS(list1) != listLengthCS(list2)) { 55172 return(false); 55173 } 55174 55175 // compare elements 55176 enumerateCCharP(list1, e, i) { 55177 if (!icEqS(*e, list2[i])) { 55178 return(false); 55179 } 55180 } 55181 55182 return(true); 55183 } 55184 55185 /** 55186 * ignore case and return true when list has string 55187 * 55188 * \param 55189 * list 55190 * \param 55191 * string 55192 * \return 55193 * true when list has string 55194 * false when the string is not found 55195 * false when list or string are NULL 55196 */ 55197 bool icListHasS(char **list, const char *string) { 55198 55199 if (!list || !string) { 55200 return(false); 55201 } 55202 if (icListIndexOfS(list, string) == -1) { 55203 return(false); 55204 } 55205 return(true); 55206 } 55207 55208 bool icListHasCharS(char **list, char c) { 55209 55210 charToS(s, c); 55211 return(icListHasS(list, s)); 55212 } 55213 55214 /** 55215 * ignore case and return true when const list has string 55216 * 55217 * \param 55218 * list 55219 * \param 55220 * string 55221 * \return 55222 * true when list has string 55223 * false when the string is not found 55224 * false when list or string are NULL 55225 */ 55226 bool icListHasCS(const char **list, const char *string) { 55227 55228 if (!list || !string) { 55229 return(false); 55230 } 55231 if (icListIndexOfCS(list, string) == -1) { 55232 return(false); 55233 } 55234 return(true); 55235 } 55236 55237 bool icListHasCharCS(const char **list, char c) { 55238 55239 charToS(s, c); 55240 return(icListHasCS(list, s)); 55241 } 55242 55243 /** 55244 * ignore case and return index of string in list 55245 * 55246 * \param 55247 * list 55248 * \param 55249 * string 55250 * \return 55251 * index 55252 * -1 when the string is not found 55253 * -1 when list or string are NULL 55254 */ 55255 ssize_t icListIndexOfS(char **list, const char *string) { 55256 bool found = false;; 55257 55258 // sanity checks 55259 if (!list || !string) { 55260 return(-1); 55261 } 55262 // search string in elements 55263 enumerateCharP(list, e, i) { 55264 if (icEqS(*e, string)) { 55265 found = true; 55266 break; 55267 } 55268 } 55269 if (found) { 55270 return((ssize_t)i); 55271 } 55272 else { 55273 return(-1); 55274 } 55275 } 55276 55277 /** 55278 * ignore case and return index of string in const list 55279 * 55280 * \param 55281 * list 55282 * \param 55283 * string 55284 * \return 55285 * index 55286 * -1 when the string is not found 55287 * -1 when list or string are NULL 55288 */ 55289 ssize_t icListIndexOfCS(const char **list, const char *string) { 55290 bool found = false;; 55291 55292 // sanity checks 55293 if (!list || !string) { 55294 return(-1); 55295 } 55296 // search string in elements 55297 enumerateCCharP(list, e, i) { 55298 if (icEqS(*e, string)) { 55299 found = true; 55300 break; 55301 } 55302 } 55303 if (found) { 55304 return((ssize_t)i); 55305 } 55306 else { 55307 return(-1); 55308 } 55309 } 55310 55311 ssize_t icListIndexOfCharS(char **list, char c) { 55312 55313 charToS(s, c); 55314 return(icListIndexOfS(list, s)); 55315 } 55316 55317 ssize_t icListIndexOfCharCS(const char **list, char c) { 55318 55319 charToS(s, c); 55320 return(icListIndexOfCS(list, s)); 55321 } 55322 55323 /** 55324 * ignore case list binary search string 55325 * 55326 * efficiently finds the index of string in list 55327 * the list has be sorted with for example listSortS 55328 * 55329 * \param 55330 * list 55331 * \param 55332 * string to search 55333 * \return 55334 * index of string 55335 * -1 string not found or NULL input pointers 55336 */ 55337 ssize_t icListBinarySearchS(char **list, const char *string) { 55338 ssize_t first = 0, middle, last;; 55339 55340 if (!list || !string) { 55341 return(-1); 55342 } 55343 55344 last = (ssize_t)listLengthS(list) - 1; 55345 while (first <= last) { 55346 middle = (first+last)/2; 55347 if (strcasecmp(list[middle], string) < 0) { 55348 first = middle + 1; 55349 } 55350 else if (strcasecmp(list[middle], string) == 0) { 55351 return(middle); 55352 } 55353 else { 55354 last = middle -1; 55355 } 55356 } 55357 return(-1); 55358 } 55359 55360 ssize_t icListBinarySearchCharS(char **list, char c) { 55361 55362 charToS(s, c); 55363 return(icListBinarySearchS(list, s)); 55364 } 55365 55366 /** 55367 * ignore case and uniquify elements of list 55368 * duplicate list 55369 * each elements are unique in the new list 55370 * 55371 * \param 55372 * list 55373 * \return 55374 * new list with unique elements (you must free the pointer with listFreeS) 55375 * empty list when list is empty 55376 * NULL when list is NULL 55377 */ 55378 char **icListUniqS(char **list) { 55379 char **r = NULL; 55380 55381 // sanity checks 55382 if (!list) { 55383 return(NULL); 55384 } 55385 55386 size_t len = listLengthS(list); 55387 55388 if (!len) { 55389 listEmptyS(r); 55390 return(r); 55391 } 55392 pErrorNULL(listPushS(&r, list[0])); 55393 // one element list 55394 if (listLengthS(list) == 1) { 55395 return(r); 55396 } 55397 // push element to new list if it is not already in new list 55398 forEachCharP(list, e) { 55399 if (icListIndexOfS(r, *e) == -1) { 55400 pErrorNULL(listPushS(&r, *e)); 55401 } 55402 } 55403 return(r); 55404 } 55405 55406 /** 55407 * ignore case and uniquify elements of list 55408 * each elements are unique in the list 55409 * 55410 * \param 55411 * list (this parameter is reallocated) 55412 * \return 55413 * list with unique elements (you must free the pointer with listFreeS) 55414 * empty list when list is empty 55415 * unchanged list when list is NULL 55416 * NULL error 55417 */ 55418 char **iicListUniqS(char ***list) { 55419 char **r = NULL; 55420 55421 // sanity checks 55422 if (!list || !*list) { 55423 return(NULL); 55424 } 55425 55426 size_t len = listLengthS(*list); 55427 55428 if (!len) { 55429 listEmptyS(r); 55430 } 55431 else if (len == 1) { 55432 // one element list 55433 pErrorNULL(iListPushS(&r, (*list)[0])); 55434 } 55435 else { 55436 // push element to new list if it is not already in new list 55437 forEachCharP(*list, e) { 55438 if (icListIndexOfS(r, *e) == -1) { 55439 pErrorNULL(iListPushS(&r, *e)); 55440 } 55441 else { 55442 free(*e); 55443 } 55444 } 55445 } 55446 55447 free(*list); 55448 *list = r; 55449 return(r); 55450 } 55451 55452 /** 55453 * remove empty strings from list 55454 * 55455 * \param 55456 * list 55457 * \return 55458 * list without empty strings (you must free the pointer with listFreeS) 55459 * empty list when list is empty 55460 * NULL when list is NULL 55461 */ 55462 char **listCompactS(char **list) { 55463 char **r = NULL; 55464 55465 // sanity checks 55466 if (!list) { 55467 return(NULL); 55468 } 55469 55470 // keep non empty elements 55471 forEachCharP(list, e) { 55472 char *trim = trimS(*e); 55473 if (*trim != 0) { 55474 pErrorNULL(listPushS(&r, *e)); 55475 } 55476 free(trim); 55477 } 55478 if (!r) { 55479 // the new list is empty 55480 listEmptyS(r) 55481 } 55482 return(r); 55483 } 55484 55485 /** 55486 * remove empty strings from list 55487 * 55488 * \param 55489 * list (this parameter is reallocated) 55490 * \return 55491 * list without empty strings (you must free the pointer with listFreeS) 55492 * empty list when list is empty 55493 * unchanged list when list is NULL 55494 * NULL error 55495 */ 55496 char **iListCompactS(char ***list) { 55497 char **r = NULL; 55498 55499 // sanity checks 55500 if (!list || !*list) { 55501 return(NULL); 55502 } 55503 55504 // keep non empty elements 55505 forEachCharP(*list, e) { 55506 char *trim = trimS(*e); 55507 if (*trim != 0) { 55508 pErrorNULL(iListPushS(&r, *e)); 55509 } 55510 else { 55511 free(*e); 55512 if (!r) { 55513 // set NULL to not free a second time in iListEmptySF 55514 // when the input list is [""] 55515 *e = NULL; 55516 } 55517 } 55518 free(trim); 55519 } 55520 if (r) { 55521 free(*list); 55522 *list = r; 55523 } 55524 else { 55525 pErrorNULL(iListEmptySF(list)); 55526 } 55527 return(*list); 55528 } 55529 55530 void btraceEnable(void) { 55531 55532 btraceCfg = true; 55533 } 55534 55535 void btraceDisable(void) { 55536 55537 btraceCfg = false; 55538 } 55539 55540 bool btraceConfig(void) { 55541 55542 return(btraceCfg); 55543 } 55544 55545 /** 55546 * generate backtrace 55547 * the program has to be linked the -rdynamic option for btrace to work 55548 * btrace can backtrace 50 functions at most. 55549 * 55550 * \return 55551 * list of functions in the backtrace, the line format is: function name: source path:line number (you must free the pointer with listFreeS) 55552 */ 55553 #if (__FreeBSD__ || __TERMUX__ || __OpenBSD__ || __DragonFly__ || MUSL_LIBC || __sun__ || __HAIKU__) 55554 // libexecinfo is not installed by default 55555 char **btrace(void) { 55556 55557 return(NULL); 55558 } 55559 55560 #else // #if (__FreeBSD__ || __TERMUX__ || __OpenBSD__ || __DragonFly__ || MUSL_LIBC || __sun__ || __HAIKU__) 55561 char **btrace(void) { 55562 char **r = NULL; 55563 55564 void *bt[51]; 55565 int count = backtrace(bt, 51); 55566 55567 if (count < 2) { 55568 // the program must in at least one function (main is the first function) 55569 // this should never happen 55570 pFuncError 55571 return(NULL); 55572 } 55573 55574 // backtrace strings 55575 char **bts = backtrace_symbols(bt, count); 55576 55577 if (!bts) { 55578 pFuncError 55579 shEPrintfS("malloc failed"); 55580 return(NULL); 55581 } 55582 55583 // check that the symbols are found 55584 if (hasS(bts[0], "(+")) { 55585 logE(BLD RED "No symbols found. Link the program with the '-rdynamic' option" RST); 55586 free(bts); 55587 return(NULL); 55588 } 55589 55590 // get all function symbols 55591 const char *realProgPath = getRealProgPath(); 55592 char *cmd = formatS("readelf -W -s %s", realProgPath); 55593 char **elf = execOut(cmd); 55594 free(cmd); 55595 55596 if (!elf) { 55597 pFuncError 55598 shEPrintfS("readelf failed"); 55599 free(bts); 55600 return(NULL); 55601 } 55602 55603 // dynamic array of uint64_t to store the function addresses 55604 dArrayT(u64Ar, uint64_t); 55605 u64Ar addresses; 55606 dArrayInit(&addresses); 55607 55608 // keep only functions 55609 // symbols stores the function names 55610 char **symbols = NULL;; 55611 forEachCharP(elf, s) { 55612 // keep only one space between columns 55613 pErrorNULL(iUniqS(s, ' ')); 55614 // s = " 530: 000000000000b7e5 65 FUNC GLOBAL DEFAULT 14 zeroS" 55615 size_t len = strlen(*s); 55616 // spaces is the column number 55617 int spaces = 0; 55618 // _ is the symbol type 55619 char *_ = NULL; 55620 // addr is the function address as a string, funcName is the function identifier 55621 char *addr, *funcName; 55622 // scan the columns for current symbol 55623 range(i, len) { 55624 if (*(*s+i) == ' ') { 55625 spaces++; 55626 if (spaces == 2) { 55627 // address column 55628 addr = (*s+i+1); 55629 } 55630 if (spaces == 4) { 55631 // symbol type column 55632 _ = (*s+i+1); 55633 } 55634 if (spaces == 8) { 55635 // stop scanning the symbol line when the function name is found 55636 funcName = (*s+i+1); 55637 break; 55638 } 55639 } 55640 } 55641 if (_ and startsWithS(_, "FUNC")) { 55642 // this symbol is a function 55643 // store function name and function address as a uint64_t 55644 pErrorNULL(iListPushS(&symbols, funcName)); 55645 dArrayAppend(&addresses, parseHex(addr)); 55646 } 55647 } 55648 55649 if (!symbols) { 55650 goto end; 55651 } 55652 // TODO sort and bin search symbols 55653 55654 // convert addresses from backtrace_symbols to source code line numbers 55655 // bts lines: ./exe(main+0x69) [0x556c7d39509b] 55656 // skip btrace call 55657 rangeFrom(i, 1, (size_t)count) { 55658 size_t len = strlen(bts[i]);; 55659 char *funcName = NULL; 55660 char *offset = NULL; 55661 int status = 0; 55662 // find function name after first ( 55663 // and function address separated with + from the function name 55664 range(j, len) { 55665 if (status == 1) { 55666 if (*(bts[i]+j) == '+') { 55667 offset = bts[i]+j+1; 55668 break; 55669 } 55670 } 55671 if (*(bts[i]+j) == '(') { 55672 funcName = bts[i]+j+1; 55673 status = 1; 55674 } 55675 } 55676 if (!offset) { 55677 shEPrintfS("Could not parse backtrace string, got: '%s', expected a string in the form './exe(main+0x69) [0x556c7d39509b]'"); 55678 free(bts); 55679 return(NULL); 55680 } 55681 size_t funcNameLen = (size_t)((offset-1) - funcName); 55682 55683 // search function in all funtions from the elf file 55684 int symbolIndex = 0;; 55685 enumerateCharP(symbols, l, j) { 55686 if (strlen(*l) != funcNameLen) { 55687 continue; 55688 } 55689 if (!strncmp(funcName, *l, funcNameLen)) { 55690 // found function 55691 symbolIndex = (int)j; 55692 break; 55693 } 55694 } 55695 55696 if (symbolIndex) { 55697 // found the function 55698 cmd = formatS("addr2line -e %s 0x%x", realProgPath, dArrayAt(&addresses, symbolIndex) + parseHex(offset)); 55699 char **cres = execOut(cmd);; 55700 free(cmd); 55701 55702 if (!cres) { 55703 pFuncError 55704 shEPrintfS("addr2line failed"); 55705 continue; 55706 } 55707 55708 pErrorNULL(iListPushS(&r, formatS("%s: %s", symbols[symbolIndex], cres[0]))); 55709 55710 listFreeS(cres); 55711 } 55712 55713 if (startsWithS(funcName, "main+")) { 55714 break; 55715 } 55716 } 55717 55718 end: 55719 dArrayFree(&addresses); 55720 free(symbols); 55721 listFreeS(elf); 55722 free(bts); 55723 return(r); 55724 } 55725 #endif 55726 // #if __FreeBSD__ || __TERMUX__ || __OpenBSD__ || __DragonFly__ || MUSL_LIBC || __sun__ || __HAIKU__ 55727 55728 // ************************** 55729 // void ** lists 55730 // ************************** 55731 55732 /** 55733 * list Empty Function 55734 * 55735 * \return 55736 * new empty list (you must free the pointer with listFreeS) 55737 */ 55738 void **listEmptyF(void) { 55739 void **list = NULL; 55740 55741 list = MALLOC(1 * sizeof(void *)); 55742 if (list) { 55743 list[0] = NULL; 55744 } 55745 return(list); 55746 } 55747 55748 /** 55749 * list Empty Function 55750 * 55751 * \param 55752 * list list to empty (this parameter is reallocated) 55753 * \return 55754 * empty list (you must free the pointer with listFreeS) 55755 * NULL error 55756 */ 55757 void **iListEmptyF(void ***list) { 55758 55759 // sanity checks 55760 if (!list) { 55761 return(NULL); 55762 } 55763 55764 if (*list) { 55765 free(*list); 55766 } 55767 55768 *list = MALLOC(1 * sizeof(void *)); 55769 if (*list) { 55770 (*list)[0] = NULL; 55771 } 55772 return(*list); 55773 } 55774 55775 /** 55776 * list Is Empty 55777 * 55778 * \param 55779 * list 55780 * \return 55781 * false when there are elements in the list 55782 * true when list is empty 55783 * true when list is NULL 55784 */ 55785 bool listIsEmpty(void **list) { 55786 55787 // sanity checks 55788 if (!list || !*list) { 55789 return(true); 55790 } 55791 return(false); 55792 } 55793 55794 /** 55795 * list Create Function 55796 * create a list from the list of parameters 55797 * used from the listCreate(...) macro 55798 * 55799 * \param 55800 * list of elements seperated with commas 55801 * \return 55802 * list (you must free the pointer with listFreeS) 55803 * NULL when first element if NULL 55804 */ 55805 void **listCreateF(void *paramType, ...) { 55806 va_list pl; 55807 void **l = NULL; 55808 55809 //Not needed if !paramType return NULL 55810 55811 // push arguments to a list 55812 va_start(pl, paramType); 55813 paramType = va_arg(pl, void *); 55814 while (paramType) { 55815 pErrorNULL(listPush(&l, paramType)); 55816 paramType = va_arg(pl, void *); 55817 } 55818 va_end(pl); 55819 return(l); 55820 } 55821 55822 /** 55823 * list From Array 55824 * 55825 * copy array of 'size' to a new list 55826 * NULL elements are not copied to the list 55827 * 55828 * \param 55829 * array 55830 * \param 55831 * size - number of elements in the array 55832 * \return 55833 * list (you must free the pointer with listFreeS) 55834 * empty list when size is 0 55835 * NULL when array is NULL 55836 */ 55837 void **listFromArray(void **array, size_t size) { 55838 void **r = NULL; 55839 55840 // sanity checks 55841 if (!array) { 55842 return(NULL); 55843 } 55844 if (!size) { 55845 listEmpty(r); 55846 return(r); 55847 } 55848 55849 // copy array content 55850 for (size_t i = 0 ; i < size ; i++) { 55851 if (array[i]) { 55852 // remove NULL elements 55853 pErrorNULL(listPush(&r, array[i])); 55854 } 55855 } 55856 return(r); 55857 } 55858 55859 /** 55860 * list Push 55861 * 55862 * (like iListPushS) 55863 * 55864 * append s pointer at the end of the list 55865 * when list is NULL, a new list with one element is returned 55866 * when list and s are NULL return list with 2 NULL elements 55867 * when s is NULL, NULL is pushed at the end of the list 55868 * 55869 * the list is reallocated to add extra space 55870 * 55871 * \param 55872 * pointer to list - becomes NULL when realloc fails (this parameter is reallocated) 55873 * \param 55874 * s: element to push 55875 * \return 55876 * list success (you must free the pointer) 55877 * NULL error 55878 */ 55879 void **listPush(void ***list, void *s) { 55880 55881 // sanity checks 55882 if (!list || !s) { 55883 return(NULL); 55884 } 55885 55886 if (!*list) { 55887 *list = MALLOC(2 * sizeof(void *)); 55888 if (!*list) { 55889 return(NULL); 55890 } 55891 (*list)[0] = s; 55892 (*list)[1] = NULL; 55893 } 55894 else { 55895 // realloc list and copy s to last element 55896 size_t len; 55897 len = listLength(*list); 55898 void **tmp = REALLOC(*list, (len+2) * sizeof(void *)); 55899 if (!tmp) { 55900 return(NULL); 55901 } 55902 else { 55903 *list = tmp; 55904 (*list)[len+1] = NULL; 55905 (*list)[len] = s; 55906 } 55907 } 55908 return(*list); 55909 } 55910 55911 /** 55912 * list Pop 55913 * return last element from list and remove last element from the list 55914 * 55915 * \param 55916 * pointer to list (this parameter is reallocated) 55917 * \return 55918 * last element 55919 * NULL when the list is NULL or empty (first element is NULL) 55920 */ 55921 void *listPop(void ***list) { 55922 void *s = NULL; 55923 size_t len; 55924 55925 // sanity checks 55926 if (!list) { 55927 return(NULL); 55928 } 55929 55930 if (!*list || !**list) { 55931 // empty list 55932 // no element in the list 55933 return(NULL); 55934 } 55935 // copy and free last non NULL element 55936 // the number of elements including NULL element remains the same 55937 len = listLength(*list); 55938 s = (*list)[len-1]; 55939 (*list)[len-1] = NULL; 55940 return(s); 55941 } 55942 55943 /** 55944 * list Prepend 55945 * 55946 * (like iListPrependS) 55947 * 55948 * append s pointer at the beginning of the list 55949 * when list is NULL, a new list with one element is returned 55950 * when list and s are NULL return list with 2 NULL elements 55951 * when s is NULL, NULL is pushed at the end of the list 55952 * 55953 * the list is reallocated to add extra space 55954 * 55955 * \param 55956 * pointer to list - becomes NULL when realloc fails (this parameter is reallocated) 55957 * \param 55958 * s: element to prepend 55959 * \return 55960 * list success (you must free the pointer) 55961 * NULL error 55962 */ 55963 void **listPrepend(void ***list, void *s) { 55964 55965 // sanity checks 55966 if (!list || !s) { 55967 return(NULL); 55968 } 55969 55970 if (!*list) { 55971 *list = MALLOC(2 * sizeof(void *)); 55972 if (!*list) { 55973 return(NULL); 55974 } 55975 (*list)[0] = s; 55976 (*list)[1] = NULL; 55977 } 55978 else { 55979 // realloc list and copy s to last element 55980 size_t len; 55981 len = listLength(*list); 55982 void **tmp = REALLOC(*list, (len+2) * sizeof(void *)); 55983 if (!tmp) { 55984 return(NULL); 55985 } 55986 else { 55987 *list = tmp; 55988 (*list)[len+1] = NULL; 55989 // shift list 55990 for (size_t i = len; i > 0; i--) { 55991 (*list)[i] = (*list)[i-1]; 55992 } 55993 (*list)[0] = s; 55994 } 55995 } 55996 return(*list); 55997 } 55998 55999 /** 56000 * list Dequeue 56001 * return first element from list and remove last element from the list 56002 * 56003 * \param 56004 * pointer to list 56005 * \return 56006 * first element 56007 * NULL when the list is NULL or empty (first element is NULL) 56008 */ 56009 void *listDequeue(void ***list) { 56010 void *s = NULL; 56011 size_t len; 56012 56013 // sanity checks 56014 if (!list) { 56015 return(NULL); 56016 } 56017 56018 if (!*list || !**list) { 56019 // empty list 56020 // no element in the list 56021 return(NULL); 56022 } 56023 // copy and free last non NULL element 56024 // the number of elements including NULL element remains the same 56025 len = listLength(*list); 56026 s = (*list)[0]; 56027 // shift list 56028 for (size_t i = 1; i < len; i++) { 56029 (*list)[i-1] = (*list)[i]; 56030 } 56031 (*list)[len-1] = NULL; 56032 return(s); 56033 } 56034 56035 /** 56036 * list Free 56037 * 56038 * \param 56039 * list 56040 * \return 56041 * nothing 56042 */ 56043 void listFree(void **list) { 56044 56045 // sanity checks 56046 if (list) { 56047 forEachType(void, list, e) { 56048 free(*e); 56049 } 56050 free(list); 56051 } 56052 } 56053 56054 /** 56055 * list free many 56056 * 56057 * free variable list of pointers 56058 * listFreeManyS(l1, l2, ...); 56059 */ 56060 void listFreeManyF(void **paramType, ...) { 56061 va_list pl; 56062 56063 // add arguments to a list 56064 va_start(pl, paramType); 56065 paramType = va_arg(pl, void **); 56066 while (paramType) { 56067 listFree(paramType); 56068 paramType = va_arg(pl, void **); 56069 } 56070 va_end(pl); 56071 } 56072 56073 /** 56074 * list Length 56075 * return number of elements until the first NULL element 56076 * 56077 * \param 56078 * list 56079 * \return 56080 * number of element until first NULL element 56081 * 0 when list is NULL 56082 */ 56083 size_t listLength(void **list) { 56084 size_t r = 0;; 56085 56086 // sanity checks 56087 if (!list) { 56088 return(0); 56089 } 56090 forEachType(void, list, i) { 56091 r++; 56092 } 56093 return(r); 56094 } 56095 56096 /** 56097 * list Get 56098 * 56099 * (like iListGetS) 56100 * 56101 * index can be negative 56102 * 56103 * \param 56104 * list 56105 * \param 56106 * index: index in list, must be inside the list 56107 * \return 56108 * element 56109 * NULL when list is NULL or index is not set correctly 56110 */ 56111 void *listGet(void **list, int64_t index) { 56112 int64_t len; 56113 56114 // sanity checks 56115 if (!list) { 56116 return(NULL); 56117 } 56118 56119 len = (int64_t)listLength(list); 56120 if (index >= len) { 56121 return(NULL); 56122 } 56123 if (index < -len) { 56124 return(NULL); 56125 } 56126 if (index < 0) { 56127 index = len + index; 56128 } 56129 56130 return(list[index]); 56131 } 56132 56133 /** 56134 * list Set 56135 * 56136 * (like iListSetS) 56137 * 56138 * store element at given index 56139 * previous element at index has to be freed before hand 56140 * index can be negative 56141 * 56142 * \param 56143 * list 56144 * \param 56145 * index: index in list, must be inside the list 56146 * \param 56147 * element 56148 * \return 56149 * list success 56150 * NULL error 56151 * 56152 * Does nothing when: 56153 * when list is NULL, index is not set correctly or s is NULL 56154 */ 56155 void **listSet(void **list, int64_t index, void *s) { 56156 int64_t len; 56157 56158 // sanity checks 56159 if (!list) { 56160 return(NULL); 56161 } 56162 56163 len = (int64_t)listLength(list); 56164 if (index >= len) { 56165 return(NULL); 56166 } 56167 if (index < -len) { 56168 return(NULL); 56169 } 56170 if (index < 0) { 56171 index = len + index; 56172 } 56173 56174 if (!s) { 56175 return(list); 56176 } 56177 56178 list[index] = s; 56179 return(list); 56180 } 56181 56182 /** 56183 * list Duplicate 56184 * 56185 * (like iListDupS) 56186 * 56187 * copy pointers to new list 56188 * After this function, free list with free instead of listFreeS 56189 * 56190 * Note: this function creates a new list, so void *** is not needed. 56191 * Unlike iList functions. 56192 * 56193 * \param 56194 * list 56195 * \return 56196 * new list pointing to the same elements as list (you must free the pointer) 56197 * NULL when list is NULL 56198 */ 56199 void **listDup(void **list) { 56200 void **l = NULL; 56201 size_t len; 56202 56203 // sanity checks 56204 if (!list) { 56205 return(NULL); 56206 } 56207 56208 len = listLength(list); 56209 l = MALLOC((len+1) * sizeof(void *)); 56210 if (!l) { 56211 return(NULL);//LCOV_EXCL_LINE 56212 } 56213 56214 // last element is NULL 56215 l[len] = NULL; 56216 56217 // copy each element 56218 enumerateType(void, list, e, i) { 56219 l[i] = *e; 56220 } 56221 return(l); 56222 } 56223 56224 /** 56225 * list Reverse 56226 * create index list and reverse list, the last element is the first element of the new list 56227 * 56228 * \param 56229 * list 56230 * \return 56231 * reversed list (you must free the pointer) 56232 * NULL when list is NULL 56233 */ 56234 void **listReverse(void **list) { 56235 void **l = NULL; 56236 size_t len; 56237 56238 // sanity checks 56239 if (!list) { 56240 return(NULL); 56241 } 56242 56243 len = listLength(list); 56244 l = MALLOC((len+1) * sizeof(void *)); 56245 if (!l) { 56246 return(NULL);//LCOV_EXCL_LINE 56247 } 56248 56249 // last element is NULL 56250 l[len] = NULL; 56251 56252 // copy each element in reverse order 56253 enumerateType(void, list, e, i) { 56254 l[len-1-i] = *e; 56255 } 56256 return(l); 56257 } 56258 56259 56260 /** 56261 * list Reverse 56262 * reverse list, the last element is the first element of the list 56263 * 56264 * \param 56265 * list (this parameter is reallocated) 56266 * \return 56267 * reversed list (you must free the pointer) 56268 * nothing when list is NULL 56269 * NULL error 56270 */ 56271 void **iListReverse(void ***list) { 56272 void **l = NULL; 56273 56274 if (!list) { 56275 return(NULL); 56276 } 56277 56278 l = listReverse(*list); 56279 56280 free(*list); 56281 *list = l; 56282 return(l); 56283 } 56284 56285 /** 56286 * list Cat 56287 * \param 56288 * arbitrary list of lists seperated by commas 56289 * \return 56290 * new list with input lists concatenated (you must free the pointer) 56291 */ 56292 void **listCatF(void **paramType, ...) { 56293 va_list pl; 56294 void **r = NULL; 56295 56296 // add arguments to a list 56297 va_start(pl, paramType); 56298 paramType = va_arg(pl, void **); 56299 while (paramType) { 56300 pErrorNULL(listAppend(&r, paramType)); 56301 paramType = va_arg(pl, void **); 56302 } 56303 va_end(pl); 56304 return(r); 56305 } 56306 56307 56308 /** 56309 * list Append 56310 * 56311 * (like iListAppendS) 56312 * 56313 * Append list2 at the end of list1 by copying the pointers 56314 * from list2 to list1. 56315 * After this function, free list2 with free instead of listFreeS 56316 * 56317 * list1 is reallocated to add extra space 56318 * 56319 * \param 56320 * list1 (this parameter is reallocated) 56321 * \param 56322 * list2 56323 * \return 56324 * list1 and list2 (you must free the pointer) 56325 * list1 not modified when list1 and list2 are NULL 56326 * or when list1 is identical to list2 (same pointers) 56327 * NULL error 56328 */ 56329 void **listAppend(void ***list1, void **list2) { 56330 void **r = NULL; 56331 size_t len1; 56332 size_t len2; 56333 56334 // sanity checks 56335 if (!list1) { 56336 // need a list to store results, abort 56337 return(NULL); 56338 } 56339 if (!(*list1)) { 56340 // copy list2 56341 len2 = listLength(list2); 56342 *list1 = MALLOC((len2+1) * sizeof(void *)); 56343 if (!*list1) { 56344 return(NULL); 56345 } 56346 int j = 0; 56347 while (list2[j]) { 56348 (*list1)[j] = list2[j]; 56349 j++; 56350 } 56351 (*list1)[j] = NULL; 56352 return(*list1); 56353 } 56354 if (!list2) { 56355 // list1 not modified 56356 return(*list1); 56357 } 56358 56359 len1 = listLength(*list1); 56360 56361 if ((*list1) == list2) { 56362 // list1 and list2 identical, cancel this operations 56363 // to avoid double free undefined behavior in listFreeS 56364 return(NULL); 56365 } 56366 56367 len2 = listLength(list2); 56368 r = REALLOC((*list1), (len1+len2+1) * sizeof(void *)); 56369 if (!r) { 56370 // realloc fails list1 not modified 56371 return(NULL); 56372 } 56373 (*list1) = r; 56374 // push list2 to new list 56375 enumerateType(void, list2, e, i) { 56376 r[len1+i] = *e; 56377 } 56378 56379 r[len1+len2] = NULL; 56380 56381 return(r); 56382 } 56383 56384 56385 /** 56386 * list Add 56387 * add list1 and list2 in a new list 56388 * 56389 * \param 56390 * list1 56391 * \param 56392 * list2 56393 * \return 56394 * new list with list1 and list2 (you must free the pointer) 56395 * NULL when list1 and list2 are NULL 56396 */ 56397 void **listAdd(void **list1, void **list2) { 56398 void **l = NULL; 56399 void **r = NULL; 56400 size_t len1; 56401 size_t len2; 56402 56403 // sanity checks 56404 if (!list1 && !list2) { 56405 return(NULL); 56406 } 56407 if (!list1) { 56408 // copy list2 56409 return(listDup(list2)); 56410 } 56411 if (!list2) { 56412 // copy list1 56413 return(listDup(list1)); 56414 } 56415 // duplicate list1 56416 l = listDup(list1); 56417 len1 = listLength(list1); 56418 len2 = listLength(list2); 56419 r = REALLOC(l, (len1+len2+1) * sizeof(void *)); 56420 if (!r) { 56421 // free l when realloc fails 56422 free(l); 56423 return(NULL);//LCOV_EXCL_LINE 56424 } 56425 // push list2 to new list 56426 enumerateType(void, list2, e, i) { 56427 r[len1+i] = *e; 56428 } 56429 56430 r[len1+len2] = NULL; 56431 56432 return(r); 56433 } 56434 56435 56436 /** 56437 * list Slice 56438 * 56439 * (like iListCopyS) 56440 * 56441 * return new list with element pointers from start and end in list 56442 * negative indexes are allowed 56443 * 56444 * Note: this function creates a new list, so void *** is not needed. 56445 * Unlike iList functions. 56446 * 56447 * \param 56448 * list 56449 * \param 56450 * start index, must be in the list 56451 * \param 56452 * end index, must be in the list 56453 * \return 56454 * new list pointing to the same elements as list (you must free the pointer) 56455 * empty list when start=end 56456 * NULL when list is empty 56457 * NULL when list is NULL or when start and end are not set correctly 56458 */ 56459 void **listSlice(void **list, int64_t start, int64_t end) { 56460 void **l = NULL; 56461 int64_t len; 56462 56463 // sanity checks 56464 if (!list) { 56465 return(NULL); 56466 } 56467 56468 len = (int64_t)listLength(list); 56469 56470 if (start > len) { 56471 return(NULL); 56472 } 56473 if (end > len) { 56474 end = len; 56475 } 56476 if (start <= -len) { 56477 start = -len; 56478 } 56479 if (end <= -len) { 56480 return(NULL); 56481 } 56482 if (start < 0) { 56483 start = len + start; 56484 } 56485 if (end <= 0) { 56486 end = len + end; 56487 } 56488 if (end < start) { 56489 return(NULL); 56490 } 56491 56492 if (start == end) { 56493 // empty list 56494 listEmpty(l); 56495 return(l); 56496 } 56497 56498 // start < end < len 56499 int64_t n; 56500 n = end - start; 56501 l = MALLOC((size_t)(n+1) * sizeof(void *)); 56502 if (!l) { 56503 return(NULL);//LCOV_EXCL_LINE 56504 } 56505 for (int64_t i=0;i < n;i++) { 56506 l[i] = *(list+start+i); 56507 } 56508 l[n] = NULL; 56509 return(l); 56510 } 56511 56512 /** 56513 * list Slice 56514 * return list with elements from start and end in list 56515 * negative indexes are allowed 56516 * 56517 * \param 56518 * list (this parameter is reallocated) 56519 * \param 56520 * start index, must be in the list 56521 * \param 56522 * end index, must be in the list 56523 * \return 56524 * sliced list (you must free the pointer) 56525 * empty list when start=end 56526 * unchanged when list is empty 56527 * unchanged when list is NULL or when start and end are not set correctly 56528 * NULL error 56529 */ 56530 void **iListSlice(void ***list, int64_t start, int64_t end) { 56531 void **l = NULL; 56532 int64_t len; 56533 56534 // sanity checks 56535 if (!list || !*list) { 56536 return(NULL); 56537 } 56538 56539 len = (int64_t)listLength(*list); 56540 56541 if (start > len) { 56542 free(*list); 56543 listEmpty(*list); 56544 return(NULL); 56545 } 56546 if (end > len) { 56547 end = len; 56548 } 56549 if (start <= -len) { 56550 start = -len; 56551 } 56552 if (end <= -len) { 56553 free(*list); 56554 listEmpty(*list); 56555 return(NULL); 56556 } 56557 if (start < 0) { 56558 start = len + start; 56559 } 56560 if (end <= 0) { 56561 end = len + end; 56562 } 56563 if (end < start) { 56564 free(*list); 56565 listEmpty(*list); 56566 return(NULL); 56567 } 56568 56569 if (start == end) { 56570 // empty list 56571 listEmpty(l); 56572 } 56573 else { 56574 // start < end < len 56575 int64_t n; 56576 n = end - start; 56577 l = MALLOC((size_t)(n+1) * sizeof(void *)); 56578 if (!l) { 56579 return(NULL); 56580 } 56581 for (int64_t i=0;i < n;i++) { 56582 l[i] = *((*list)+start+i); 56583 } 56584 l[n] = NULL; 56585 } 56586 56587 free(*list); 56588 *list = l; 56589 return(l); 56590 } 56591 56592 /** 56593 * list Insert 56594 * 56595 * insert list in list at index 56596 * 56597 * return new list with toInsert at index 56598 * negative indexes are allowed 56599 * index -1 is the end of the array and is equivalent to index len 56600 * 56601 * \param 56602 * list 56603 * \param 56604 * index in list 56605 * \param 56606 * toInsert list 56607 * \return 56608 * new list (you must free the pointer) 56609 * NULL when list is NULL or invalid index 56610 */ 56611 void **listInsert(void **list, int64_t index, void **toInsert) { 56612 void **r = NULL; 56613 int64_t len; 56614 56615 //sanity checks 56616 if (!list) { 56617 if (index || !toInsert) { 56618 return(NULL); 56619 } 56620 return(listDup(toInsert)); 56621 } 56622 56623 if (!toInsert) { 56624 return(NULL); 56625 } 56626 56627 len = (int64_t)listLength(list); 56628 56629 if (!len && index == -1) { 56630 // empty string, index -1 is equal to 0 56631 index = 0; 56632 } 56633 bool neg = false; 56634 if (index < 0) { 56635 neg = true; 56636 } 56637 56638 if (index > len) { 56639 return(NULL); 56640 } 56641 if (neg) { 56642 index++; 56643 } 56644 if (index < -len) { 56645 return(NULL); 56646 } 56647 if (neg) { 56648 index = len + index; 56649 } 56650 56651 56652 if (listIsEmpty(toInsert)) { 56653 return(listDup(list)); 56654 } 56655 56656 if (index == 0) { 56657 // insert at beginning 56658 return(listAdd(toInsert, list)); 56659 } 56660 56661 void **l1 = listSlice(list, 0, index); 56662 void **l2 = listSlice(list, index, 0); 56663 r = listCat(l1, toInsert, l2); 56664 free(l1); 56665 free(l2); 56666 56667 return(r); 56668 } 56669 56670 /** 56671 * list Insert 56672 * 56673 * insert list in list at index 56674 * After this function, free toInsert with free instead of listFreeS 56675 * 56676 * return list with toInsert at index 56677 * negative indexes are allowed 56678 * index -1 is the end of the array and is equivalent to index len 56679 * 56680 * \param 56681 * list (this parameter is reallocated) 56682 * \param 56683 * index in list 56684 * \param 56685 * toInsert list 56686 * \return 56687 * list (you must free the pointer) 56688 * unchanged list when list is NULL or invalid index 56689 * NULL error 56690 */ 56691 void **iListInsert(void ***list, int64_t index, void **toInsert) { 56692 void **r = NULL; 56693 int64_t len; 56694 56695 //sanity checks 56696 if (!list || !toInsert) { 56697 return(NULL); 56698 } 56699 if (!*list) { 56700 if (index) { 56701 return(NULL); 56702 } 56703 r = listDup(toInsert); 56704 *list = r; 56705 return(r); 56706 } 56707 56708 len = (int64_t)listLength(*list); 56709 56710 if (!len && index == -1) { 56711 // empty string, index -1 is equal to 0 56712 index = 0; 56713 } 56714 bool neg = false; 56715 if (index < 0) { 56716 neg = true; 56717 } 56718 56719 if (index > len) { 56720 return(NULL); 56721 } 56722 if (neg) { 56723 index++; 56724 } 56725 if (index < -len) { 56726 return(NULL); 56727 } 56728 if (neg) { 56729 index = len + index; 56730 } 56731 56732 56733 if (listIsEmpty(toInsert)) { 56734 return(*list); 56735 } 56736 56737 if (index == 0) { 56738 // insert at beginning 56739 pErrorNULL(listAppend(&r, toInsert)); 56740 pErrorNULL(listAppend(&r, *list)); 56741 } 56742 else { 56743 56744 r = listSlice(*list, 0, index); 56745 void **l2 = listSlice(*list, index, 0); 56746 pErrorNULL(listAppend(&r, toInsert)); 56747 pErrorNULL(listAppend(&r, l2)); 56748 free(l2); 56749 } 56750 56751 free(*list); 56752 *list = r; 56753 return(r); 56754 } 56755 56756 /** 56757 * list Delete 56758 * return new list without elements from start and end in list 56759 * negative indexes are allowed 56760 * 56761 * \param 56762 * list 56763 * \param 56764 * start index, must be in the list 56765 * \param 56766 * end index, must be in the list 56767 * \return 56768 * sliced list (you must free the pointer) 56769 * list copy when start=end or when start and end are not set correctly 56770 * NULL when list is empty 56771 * NULL when list is NULL or when end is under start 56772 */ 56773 void **listDel(void **list, int64_t start, int64_t end) { 56774 void **l = NULL; 56775 int64_t len; 56776 56777 // sanity checks 56778 if (!list) { 56779 return(NULL); 56780 } 56781 56782 len = (int64_t)listLength(list); 56783 56784 if (len == 0) { 56785 return(NULL); 56786 } 56787 56788 if (start >= len) { 56789 start = len; 56790 } 56791 if (end > len) { 56792 end = len; 56793 } 56794 if (start <= -len) { 56795 start = -len; 56796 } 56797 if (end <= -len) { 56798 end = -len; 56799 } 56800 if (start < 0) { 56801 start = len + start; 56802 } 56803 if (end <= 0) { 56804 end = len + end; 56805 } 56806 if (end < start) { 56807 return(NULL); 56808 } 56809 56810 if (start == end) { 56811 return(listDup(list)); 56812 } 56813 56814 // start < end < len 56815 int64_t n; 56816 n = end - start; 56817 l = MALLOC((size_t)(len-n+1) * sizeof(void *)); 56818 if (!l) { 56819 return(NULL);//LCOV_EXCL_LINE 56820 } 56821 for (int64_t i=0;i < start;i++) { 56822 l[i] = *(list+i); 56823 } 56824 for (int64_t i=start ; i < len-n ; i++) { 56825 l[i] = *(list+n+i); 56826 } 56827 l[len-n] = NULL; 56828 return(l); 56829 } 56830 56831 56832 /** 56833 * list Delete 56834 * return list without elements from start and end in list 56835 * negative indexes are allowed 56836 * 56837 * \param 56838 * list (this parameter is reallocated) 56839 * \param 56840 * start index, must be in the list 56841 * \param 56842 * end index, must be in the list 56843 * \return 56844 * sliced list (you must free the pointer) 56845 * list copy when start=end or when start and end are not set correctly 56846 * NULL when list is empty 56847 * NULL when list is NULL or when end is under start 56848 * NULL error 56849 */ 56850 void **iListDel(void ***list, int64_t start, int64_t end) { 56851 void **l = NULL; 56852 int64_t len; 56853 56854 // sanity checks 56855 if (!list || !*list) { 56856 return(NULL); 56857 } 56858 56859 len = (int64_t)listLength(*list); 56860 56861 if (len == 0) { 56862 return(NULL); 56863 } 56864 56865 if (start >= len) { 56866 start = len; 56867 } 56868 if (end > len) { 56869 end = len; 56870 } 56871 if (start <= -len) { 56872 start = -len; 56873 } 56874 if (end <= -len) { 56875 end = -len; 56876 } 56877 if (start < 0) { 56878 start = len + start; 56879 } 56880 if (end <= 0) { 56881 end = len + end; 56882 } 56883 if (end < start) { 56884 return(NULL); 56885 } 56886 56887 if (start == end) { 56888 return(*list); 56889 } 56890 56891 // start < end < len 56892 int64_t n; 56893 n = end - start; 56894 l = MALLOC((size_t)(len-n+1) * sizeof(void *)); 56895 if (!l) { 56896 return(NULL); 56897 } 56898 for (int64_t i=0;i < start;i++) { 56899 l[i] = *((*list)+i); 56900 } 56901 for (int64_t i=start ; i < len-n ; i++) { 56902 l[i] = *((*list)+n+i); 56903 } 56904 l[len-n] = NULL; 56905 56906 free(*list); 56907 *list = l; 56908 return(l); 56909 } 56910 56911 // TODO - add compare function as parameter 56912 /** 56913 * list Sort 56914 * duplicate list and sort 56915 * 56916 * \param 56917 * list 56918 * \return 56919 * new sorted list 56920 * empty list when list is empty 56921 * NULL when list is NULL 56922 */ 56923 /* void **listSort(void **list) */ 56924 /* size_t len */ 56925 /* void **l */ 56926 /* */ 56927 /* // sanity checks */ 56928 /* if !list */ 56929 /* return NULL */ 56930 /* len = listLength(list) */ 56931 /* // duplicate */ 56932 /* l = listDup(list) */ 56933 /* if !len */ 56934 /* return l */ 56935 /* // sort */ 56936 /* qsort(l, len, sizeof(void *), listSortSCmp); */ 56937 /* return l */ 56938 56939 /** 56940 * list Sort 56941 * 56942 * \param 56943 * list 56944 * \return 56945 * sorted list 56946 * empty list when list is empty 56947 * unchanged list when list is NULL 56948 */ 56949 /* void iListSortS(void ***list) */ 56950 /* size_t len */ 56951 /* */ 56952 /* // sanity checks */ 56953 /* if !list || !*list */ 56954 /* return */ 56955 /* len = listLength(*list) */ 56956 /* if !len */ 56957 /* return */ 56958 /* // sort */ 56959 /* qsort(*list, len, sizeof(void *), listSortSCmp); */ 56960 /* return */ 56961 56962 56963 // TODO - add compare function as parameter 56964 /** 56965 * list Equal 56966 * compare each element of list1 and list2 56967 * 56968 * \param 56969 * 2 lists 56970 * \return 56971 * true the lists have identical elements 56972 * false they differ 56973 */ 56974 /* bool listEq(void **list1, void **list2) */ 56975 /* */ 56976 /* // sanity checks */ 56977 /* if !list1 || !list2 */ 56978 /* return false */ 56979 /* if listLength(list1) != listLength(list2) */ 56980 /* return false */ 56981 /* */ 56982 /* // compare elements */ 56983 /* enumerateType(void, list1, e, i) */ 56984 /* if !strEq(*e, list2[i]) */ 56985 /* return false */ 56986 /* */ 56987 /* return true */ 56988 56989 // TODO - add compare function as parameter 56990 /** 56991 * return index of element in list 56992 * 56993 * \param 56994 * list 56995 * element 56996 * \return 56997 * index 56998 * -1 when the element is not found 56999 * -1 when list or element are NULL 57000 */ 57001 /* ssize_t listIndexOf(void **list, const void *string) */ 57002 /* bool found = false */ 57003 /* */ 57004 /* // sanity checks */ 57005 /* if !list */ 57006 /* return -1 */ 57007 /* if !string */ 57008 /* return -1 */ 57009 /* // search string in elements */ 57010 /* enumerateType(void, list, e, i) */ 57011 /* if strEq(*e, string) */ 57012 /* found = true */ 57013 /* break; */ 57014 /* if found */ 57015 /* return i */ 57016 /* else */ 57017 /* return -1 */ 57018 57019 // TODO - add compare function as parameter 57020 /** 57021 * list binary search 57022 * 57023 * efficiently finds the index of element in list 57024 * the list has be sorted with for example listSortS 57025 * 57026 * \param 57027 * list 57028 * element to search 57029 * \return 57030 * index of element 57031 * -1 element not found or NULL input pointers 57032 */ 57033 /* ssize_t listBinarySearch(void **list, const void *string) */ 57034 /* TODO copy listBinarySearchS */ 57035 57036 // TODO - add compare function as parameter 57037 /** 57038 * Uniquify elements of list 57039 * duplicate list 57040 * each elements are unique in the new list 57041 * 57042 * \param 57043 * list 57044 * \return 57045 * new list with unique elements 57046 * empty list when list is empty 57047 * NULL when list is NULL 57048 */ 57049 /* void **listUniq(void **list) */ 57050 /* void **r */ 57051 /* */ 57052 /* // sanity checks */ 57053 /* if !list */ 57054 /* return NULL */ 57055 /* */ 57056 /* listPush(&r, list[0]); */ 57057 /* // one element list */ 57058 /* if listLength(list) = 1 */ 57059 /* return r */ 57060 /* // push element to new list if it is not already in new list */ 57061 /* forEachType(void, list, e) */ 57062 /* if listIndexOf(r, *e) = -1 */ 57063 /* listPush(&r, *e); */ 57064 /* return r */ 57065 57066 /** 57067 * Uniquify elements of list 57068 * each elements are unique in the list 57069 * 57070 * \param 57071 * list 57072 * \return 57073 * list with unique elements 57074 * empty list when list is empty 57075 * unchanged list when list is NULL 57076 */ 57077 /* void iListUniq(void ***list) */ 57078 /* void **r */ 57079 /* */ 57080 /* // sanity checks */ 57081 /* if !list || !*list */ 57082 /* return */ 57083 /* */ 57084 /* listPush(&r, (*list)[0]); */ 57085 /* // one element list */ 57086 /* if listLength(*list) > 1 */ 57087 /* // push element to new list if it is not already in new list */ 57088 /* forEachType(void, *list, e) */ 57089 /* if listIndexOf(r, *e) = -1 */ 57090 /* listPushS(&r, *e); */ 57091 /* */ 57092 /* free *list */ 57093 /* *list = r */ 57094 /* return */ 57095 57096 // TODO - add compare function as parameter 57097 /** 57098 * remove empty element from list 57099 * 57100 * \param 57101 * list 57102 * \return 57103 * list without empty element 57104 * empty list when list is empty 57105 * NULL when list is NULL 57106 */ 57107 /* void **listCompact(void **list) */ 57108 /* void **r */ 57109 /* */ 57110 /* // sanity checks */ 57111 /* if !list */ 57112 /* return NULL */ 57113 /* */ 57114 /* // keep non empty elements */ 57115 /* forEachType(void, list, e) */ 57116 /* void *trim = trimS(*e) */ 57117 /* if *trim != 0 */ 57118 /* listPush(&r, *e); */ 57119 /* free trim */ 57120 /* if !r */ 57121 /* // the new list is empty */ 57122 /* listEmpty(r) */ 57123 /* return r */ 57124 57125 /** 57126 * remove empty elements from list 57127 * 57128 * \param 57129 * list 57130 * \return 57131 * list without empty elements 57132 * empty list when list is empty 57133 * unchanged list when list is NULL 57134 */ 57135 /* void iListCompact(void ***list) */ 57136 /* void **r */ 57137 /* */ 57138 /* // sanity checks */ 57139 /* if !list || !*list */ 57140 /* return */ 57141 /* */ 57142 /* // keep non empty elements */ 57143 /* forEachType(void, *list, e) */ 57144 /* void *trim = trimS(*e) */ 57145 /* if *trim != 0 */ 57146 /* listPush(&r, *e); */ 57147 /* free trim */ 57148 /* if r */ 57149 /* free *list */ 57150 /* *list = r */ 57151 /* return */ 57152 57153 /** 57154 * initialize ring/pointer to staticArray 57155 * sets count and head to 0 57156 * sets maxCount 57157 * 57158 * the ring is empty after this function 57159 * 57160 * a pointer to staticArray is also valid 57161 * the array is empty after this function 57162 * 57163 * \param 57164 * ring pointer to initialize 57165 * \param 57166 * maxCount for this ring type 57167 * \return 57168 * 1 success 57169 * 0 error 57170 */ 57171 int ringInit(void *ring, int maxCount) { 57172 57173 if (!ring) { 57174 return(0); 57175 } 57176 57177 cast(ringBase*, name, ring) 57178 57179 name->last = name->head = 0; 57180 name->maxCount = maxCount; 57181 name->isEmpty = true; 57182 return(1); 57183 } 57184 57185 /** 57186 * empty ring 57187 * Allocated buffers in the list must be freed before running staticArrayEmpty 57188 * 57189 * \return 57190 * 1 success 57191 * 0 error 57192 */ 57193 int ringEmpty(void *ring) { 57194 57195 if (!ring) { 57196 return(0); 57197 } 57198 57199 cast(ringBase*, name, ring) 57200 name->last = name->head = 0; 57201 name->isEmpty = true; 57202 return(1); 57203 } 57204 57205 /** 57206 * 1 when empty 57207 * 0 not empty 57208 * -1 error 57209 */ 57210 int ringIsEmpty(void *ring) { 57211 57212 if (!ring) { 57213 return(-1); 57214 } 57215 57216 cast(ringBase*, name, ring) 57217 57218 return(name->isEmpty); 57219 } 57220 57221 /** 57222 * 1 when full 57223 * 0 not full 57224 * -1 error 57225 */ 57226 int ringIsFull(void *ring) { 57227 57228 if (!ring) { 57229 return(-1); 57230 } 57231 57232 cast(ringBase*, name, ring) 57233 57234 if (((name->last+1) % name->maxCount) == name->head) { 57235 return(1); 57236 } 57237 return(0); 57238 } 57239 57240 57241 /** 57242 * return elements count 57243 * 57244 * \return 57245 * message count 57246 * -1 error 57247 */ 57248 ssize_t ringCount(void *ring) { 57249 57250 if (!ring) { 57251 return(-1); 57252 } 57253 57254 cast(ringBase*, name, ring) 57255 57256 if (name->isEmpty) { 57257 return(0); 57258 } 57259 57260 if ((name->last) > (name->head)) { 57261 return(name->last-name->head+1); 57262 } 57263 return((name->maxCount-name->head + name->last+1)); 57264 } 57265 57266 /** 57267 * push element to ring (only increases last, use ringSend) 57268 * use ringLast to access the element 57269 * 57270 * \return 57271 * position of the element 57272 * -1 ring is full 57273 * -2 error 57274 */ 57275 i64 ringPush(void *ring) { 57276 57277 if (!ring) { 57278 return(-2); 57279 } 57280 if (ringIsFull(ring)) { 57281 return(-1); 57282 } 57283 57284 cast(ringBase*, name, ring) 57285 57286 if (name->isEmpty) { 57287 name->isEmpty = false; 57288 } 57289 else { 57290 name->last++; 57291 name->last %= name->maxCount;; 57292 } 57293 return(name->last); 57294 } 57295 57296 /** 57297 * pop element from ring (only decreases last) 57298 * 57299 * \return 57300 * 1 element is removed 57301 * 0 ring is empty 57302 * -1 error 57303 */ 57304 int ringPop(void *ring) { 57305 57306 if (!ring) { 57307 return(-1); 57308 } 57309 if (ringIsEmpty(ring)) { 57310 return(0); 57311 } 57312 57313 cast(ringBase*, name, ring) 57314 57315 if (!name->isEmpty && (name->last == name->head)) { 57316 name->isEmpty = true; 57317 } 57318 else if (!name->isEmpty && (name->last != name->head)) { 57319 if (name->last) { 57320 name->last--; 57321 } 57322 else { 57323 name->last += name->maxCount-1; 57324 } 57325 } 57326 return(1); 57327 } 57328 57329 /** 57330 * prepend element to ring (only decreases head) 57331 * use ringFirst to access the element 57332 * 57333 * \return 57334 * position of the element 57335 * -1 ring is full 57336 * -2 error 57337 */ 57338 i64 ringPrepend(void *ring) { 57339 57340 if (!ring) { 57341 return(-2); 57342 } 57343 if (ringIsFull(ring)) { 57344 return(-1); 57345 } 57346 57347 cast(ringBase*, name, ring) 57348 57349 if (name->isEmpty) { 57350 name->isEmpty = false; 57351 } 57352 else { 57353 if (name->head) { 57354 name->head--; 57355 } 57356 else { 57357 name->head += name->maxCount-1;; 57358 } 57359 } 57360 return(name->head); 57361 } 57362 57363 /** 57364 * dequeue element from ring (only increases head, use ringRecv) 57365 * 57366 * \return 57367 * 1 element is removed 57368 * 0 ring is empty 57369 * -1 error 57370 */ 57371 int ringDequeue(void *ring) { 57372 57373 if (!ring) { 57374 return(-1); 57375 } 57376 if (ringIsEmpty(ring)) { 57377 return(0); 57378 } 57379 57380 cast(ringBase*, name, ring) 57381 57382 if (!name->isEmpty && (name->last == name->head)) { 57383 name->isEmpty = true; 57384 } 57385 else if (!name->isEmpty && (name->last != name->head)) { 57386 name->head++; 57387 name->head %= name->maxCount;; 57388 } 57389 return(1); 57390 } 57391 57392 57393 /** 57394 * fibers holds the necessary information to schedule fibers 57395 */ 57396 fibersT fibers; 57397 57398 /** 57399 * add new fiber 57400 * 57401 * \param 57402 * ctx context for the fiber at thisSlot 57403 * \param 57404 * thisSlot reserved slot for this fiber 57405 * \param 57406 * func fiber function 57407 * \return 57408 * true 57409 */ 57410 bool fiberAdd(void *ctx, int thisSlot, fiberFT func) { 57411 57412 cast(fiberBaseT*, thisCtx, ctx) 57413 thisCtx->slot = thisSlot; 57414 fibers.context[thisSlot] = ctx; 57415 staticArrayPush(fibers.startL) 57416 staticArrayLast(fibers.startL) = thisSlot; 57417 fibers.F[thisSlot] = func; 57418 return(true); 57419 } 57420 57421 /** 57422 * add new fiber and start immediately after next yield 57423 * 57424 * \param 57425 * ctx context for the fiber at thisSlot 57426 * \param 57427 * thisSlot reserved slot for this fiber 57428 * \param 57429 * func fiber function 57430 * \return 57431 * true 57432 */ 57433 bool fiberPrepend(void *ctx, int thisSlot, fiberFT func) { 57434 57435 cast(fiberBaseT*, thisCtx, ctx) 57436 thisCtx->slot = thisSlot; 57437 fibers.context[thisSlot] = ctx; 57438 staticArrayPrepend(fibers.startL) 57439 staticArrayFirst(fibers.startL) = thisSlot; 57440 fibers.F[thisSlot] = func; 57441 return(true); 57442 } 57443 57444 /** 57445 * Schedule fibers 57446 */ 57447 void scheduler(void) { 57448 static int task; 57449 57450 // Start tasks before the schedule loop 57451 // to add fibers to fiberL 57452 while (!staticArrayIsEmpty(fibers.startL)) { 57453 puts(__func__); 57454 task = staticArrayFirst(fibers.startL); 57455 printf("Start task %d\n", task); 57456 staticArrayDequeue(fibers.startL); 57457 startJump(fibers.F[task](task)); 57458 } 57459 57460 // Schedule Loop 57461 while (!staticArrayIsEmpty(fibers.L)) { 57462 // Start eventual new tasks 57463 while (!staticArrayIsEmpty(fibers.startL)) { 57464 puts(__func__); 57465 task = staticArrayFirst(fibers.startL); 57466 printf("-- Start NEW task %d\n", task); 57467 staticArrayDequeue(fibers.startL); 57468 startJump(fibers.F[task](task)); 57469 } 57470 puts(__func__); 57471 task = staticArrayFirst(fibers.L); 57472 staticArrayDequeue(fibers.L); 57473 57474 logVar(task, "d"); 57475 schedulerYield(task); 57476 } 57477 } 57478 57479 57480 57481 57482 57483 57484 57485 57486 57487 #if ((__GNUC__ > 4)) 57488 /** 57489 * return monotonic time in nanoseconds 57490 */ 57491 uint64_t getMonotonicTime(void) { 57492 struct timespec ts; 57493 57494 clock_gettime(CLOCK_MONOTONIC, &ts); 57495 57496 return((uint64_t)(ts.tv_sec) * 1000000000 + (uint64_t)(ts.tv_nsec)); 57497 } 57498 #else 57499 // not available on older platforms 57500 uint64_t getMonotonicTime(void) { 57501 57502 return(0); 57503 } 57504 #endif 57505 /** 57506 * nanosleep 57507 * 57508 * sleep nanoseconds 57509 * 57510 * \param 57511 * time in nanosceonds 57512 * \return 57513 * 1 ok 57514 * 0 error 57515 */ 57516 int nanoSleepF(uint64_t time) { 57517 struct timespec ts; 57518 57519 ts.tv_sec = (time_t)(time / 1000000000); 57520 ts.tv_nsec = (time_t)(time % 1000000000); 57521 int r = nanosleep(&ts, NULL);; 57522 if (r == -1) { 57523 pFuncError 57524 return(0); 57525 } 57526 return(1); 57527 } 57528 57529 57530 /** 57531 * startJump/yield example 57532 * A B light coroutines 57533 * 57534 * a1 - starts with A 57535 * b1 - switch to B 57536 * a2 - back to A 57537 * r=1 57538 * b2 - switch to B 57539 * r=2 57540 * a3 - back to A 57541 */ 57542 57543 typedef struct {int slot; int a;} AArgs; 57544 typedef struct {int slot; int a; int b;} BArgs; 57545 57546 void A(void *args) { 57547 // static to save local variable 57548 static int r = 0;; 57549 static AArgs *ctx = NULL; 57550 static BArgs Ba UNUSED;; 57551 57552 ctx = args; 57553 puts("a1"); 57554 r++; 57555 ctx->a++; 57556 57557 // switch to B 57558 Ba.a = 1; 57559 Ba.b = 2; 57560 //startJump(0, B(&Ba)); 57561 57562 puts("a2"); 57563 57564 logVar(r, "d"); 57565 logVar(ctx->a, "d"); 57566 57567 ctx->a++; 57568 57569 // switch to B 57570 //yield(0, 1); 57571 57572 puts("a3"); 57573 logVar(r, "d"); 57574 logVar(ctx->a, "d"); 57575 } 57576 57577 void B(void *args) { 57578 // static to save local variable 57579 static int r = 0;; 57580 static BArgs *ctx = NULL; 57581 57582 ctx = args; 57583 57584 puts("b1"); 57585 r+=2;; 57586 ctx->a++; 57587 ctx->b++; 57588 57589 // back to A 57590 //yield(1, 0); 57591 57592 puts("b2"); 57593 57594 logVar(r, "d"); 57595 logVar(ctx->a, "d"); 57596 logVar(ctx->b, "d"); 57597 57598 // back to A 57599 } 57600 57601 void AB(void) { 57602 int r = 0;; 57603 int r2 = 0;; 57604 57605 puts("a1"); 57606 r++; 57607 57608 // switch to B 57609 goNLabel(b1,a2) 57610 //goto b1; a2: 57611 57612 puts("a2"); 57613 57614 logVar(r, "d"); 57615 57616 // switch to B 57617 goNLabel(b2,a3) 57618 //goto b2; a3: 57619 57620 puts("a3"); 57621 return; 57622 57623 b1: 57624 57625 puts("b1"); 57626 r2+=2;; 57627 57628 // back to A 57629 goNLabel(a2,b2) 57630 //goto a2; b2: 57631 57632 puts("b2"); 57633 57634 logVar(r2, "d"); 57635 57636 // back to A 57637 goto a3; 57638 } 57639 57640 void fiberA(int thisSlot) { 57641 // static to save local variable 57642 static int r = 0;; 57643 static AArgs *ctx = NULL; 57644 int slot;; 57645 57646 ctx = fiberCtx(thisSlot); 57647 57648 puts("a1"); 57649 r++; 57650 ctx->a++; 57651 57652 // switch to scheduler 57653 yield(slot, ctx->slot); 57654 ctx = fiberCtx(slot); 57655 57656 puts("a2"); 57657 57658 logVar(r, "d"); 57659 logVar(slot, "d"); 57660 logVar(ctx->a, "d"); 57661 57662 ctx->a++; 57663 57664 // switch to scheduler 57665 //yield(slot, ctx->slot); 57666 if (slot == 1) { 57667 fiberEnd(ctx->slot); 57668 } 57669 else { 57670 yield(slot, ctx->slot); 57671 } 57672 ctx = fiberCtx(slot); 57673 57674 puts("a3"); 57675 logVar(r, "d"); 57676 logVar(slot, "d"); 57677 logVar(ctx->a, "d"); 57678 } 57679 57680 static AArgs Ca; 57681 57682 void fiberB(int thisSlot) { 57683 // static to save local variable 57684 static int r = 0;; 57685 static BArgs *ctx = NULL; 57686 int slot;; 57687 57688 ctx = fiberCtx(thisSlot); 57689 57690 puts("b1"); 57691 r+=2;; 57692 ctx->a++; 57693 ctx->b++; 57694 57695 // back to scheduler 57696 yield(slot, ctx->slot); 57697 ctx = fiberCtx(slot); 57698 57699 puts("b2"); 57700 57701 logVar(r, "d"); 57702 logVar(slot, "d"); 57703 57704 puts(__func__); 57705 Ca.a = 0; 57706 Ca.slot = 3; 57707 fiberAdd(&Ca, 3, fiberA); 57708 57709 yield(slot, ctx->slot); 57710 ctx = fiberCtx(slot); 57711 57712 puts("b3"); 57713 logVar(slot, "d"); 57714 logVar(ctx->a, "d"); 57715 logVar(ctx->b, "d"); 57716 57717 // back to A 57718 } 57719 57720 dArrayT(intDynt, int); 57721 slabT(intSlabt, int); 57722 57723 void bttt(void) { 57724 char *r = NULL; 57725 57726 puts(r); 57727 //logBtrace; 57728 } 57729 57730 #ifndef unitTest 57731 // Remove main when running the unit tests 57732 #define MAIN main 57733 #endif 57734 int MAIN(int ARGC, char** ARGV) { 57735 char **l UNUSED = NULL; 57736 57737 argc = ARGC; argv = ARGV; 57738 /* typ struct {int a; int b;} structuret; */ 57739 57740 cleanCharP(nocolor) = stripColorsS(BLD RED"RED is a primary color"RST);; 57741 puts(nocolor); 57742 logE(BLD RED"RED is a primary color"RST); 57743 keepAnsiColorsInLog(no); 57744 logE(BLD RED"RED is a primary color"RST); 57745 57746 /* logSystem("git log -n 2 --pretty=\"%ai\""); */ 57747 /* */ 57748 /* sliceT(slStruct, structuret); */ 57749 /* slStruct slc; */ 57750 /* sliceInit(&slc); */ 57751 /* slicePush(&slc); */ 57752 /* slicePush(&slc); */ 57753 /* sliceEnumerate(&slc, i, elm) { */ 57754 /* elm->a = 0; */ 57755 /* elm->b = 0; */ 57756 /* printf("sliceEnumerate %zd\n", i); */ 57757 /* } */ 57758 /* sliceFree(&slc); */ 57759 /* */ 57760 /* // list */ 57761 /* */ 57762 /* #<{(| i8 a = 0 |)}># */ 57763 /* #<{(| i16 s = 0 |)}># */ 57764 /* #<{(| i32 d = 0 |)}># */ 57765 /* #<{(| i64 f = 0 |)}># */ 57766 /* #<{(| u8 g = 0 |)}># */ 57767 /* #<{(| u16 h = 0 |)}># */ 57768 /* #<{(| u32 j = 0 |)}># */ 57769 /* u64 k = 7 */ 57770 /* #<{(| f32 x = 0 |)}># */ 57771 /* #<{(| f64 p = 0 |)}># */ 57772 /* */ 57773 /* */ 57774 /* char *toBCroped = strdup("123456") */ 57775 /* char *crp = iCropS(&toBCroped, -1, 1) */ 57776 /* logVar(toBCroped, "s"); */ 57777 /* logVar(crp, "s"); */ 57778 /* */ 57779 /* char **lst = listCreateS("1","2","3","4","5") */ 57780 /* char **lcrop = listCropS(lst, 1,3) */ 57781 /* pError0(listPrintS(lst)); */ 57782 /* AT */ 57783 /* pError0(listPrintS(lcrop)); */ 57784 /* */ 57785 /* setLogStdout(no); */ 57786 /* */ 57787 /* logExit(EXIT_SUCCESS, "qweqwe"); */ 57788 /* logXSuccess("qweqwe"); */ 57789 /* logXFailure("qweqwe"); */ 57790 /* */ 57791 /* logSystemf("ls /home/%s/.ssh/", "remy"); */ 57792 /* */ 57793 /* char *rel = relPath("/wer/w/e", "../wer/ef"); */ 57794 /* printf("rel path %s\n", rel); */ 57795 /* free rel */ 57796 /* */ 57797 /* //printf(">%s< %zu\n",nS(padEndS("123", 10, "-=|=123123")), lenS(padEndS("123", 10, "-=|=123123"))); */ 57798 /* char *e = ellipsisStartS("123", 10, "..."); */ 57799 /* printf("ellipsis start %s\n", e); */ 57800 /* free e */ 57801 /* e =ellipsisStartS("1234567890", 10, "...") */ 57802 /* printf("ellipsis start %s\n", e); */ 57803 /* free e */ 57804 /* e =ellipsisStartS("1234567890abcdef", 10, "...") */ 57805 /* printf("ellipsis start %s\n", e); */ 57806 /* free e */ 57807 /* e =ellipsisStartS("1234567890abcdef", 10, "...xxxxxxxxxxxxxxxxxxxxxxxxx") */ 57808 /* printf("ellipsis start %s\n", e); */ 57809 /* free e */ 57810 /* e =ellipsisEndS("123", 10, "...") */ 57811 /* printf("ellipsis end %s\n", e); */ 57812 /* free e */ 57813 /* e =ellipsisEndS("1234567890", 10, "...") */ 57814 /* printf("ellipsis end %s\n", e); */ 57815 /* free e */ 57816 /* e =ellipsisEndS("1234567890abcdef", 10, "...") */ 57817 /* printf("ellipsis end %s\n", e); */ 57818 /* free e */ 57819 /* e =ellipsisEndS("1234567890abcdef", 10, "...****************************") */ 57820 /* printf("ellipsis end %s\n", e); */ 57821 /* free e */ 57822 /* */ 57823 /* XSUCCESS */ 57824 /* */ 57825 /* char a[8192] = "" */ 57826 /* */ 57827 /* initLibsheepy("exe"); */ 57828 /* setLogSymbols(LOG_UTF8); */ 57829 /* */ 57830 /* logVar(absV(-2), "d"); */ 57831 /* logVar(CMP(2,2), "d"); */ 57832 /* */ 57833 /* char **li = NULL */ 57834 /* //char **li2; */ 57835 /* */ 57836 /* // list negative index */ 57837 /* pErrorNULL(listPushS(&li, "1")); */ 57838 /* pErrorNULL(listPushS(&li, "22")); */ 57839 /* pErrorNULL(listPushS(&li, "333")); */ 57840 /* pErrorNULL(listPushS(&li, "4444")); */ 57841 /* //li2 = iListCropS(&li, 1,-1) */ 57842 /* char *stri = iListCropElemS(&li, 1) */ 57843 /* */ 57844 /* pError0(listPrintS(li)); */ 57845 /* put */ 57846 /* puts(stri); */ 57847 /* //listPrintS(li2); */ 57848 /* */ 57849 /* XSUCCESS */ 57850 /* */ 57851 /* sliceT(slicet, char*); */ 57852 /* slicet slce; */ 57853 /* sliceInit(&slce); */ 57854 /* //sliceElemType(&slce) slEl; */ 57855 /* */ 57856 /* staticSliceT(sslicet, char*, 2); */ 57857 /* sslicet sslce; */ 57858 /* staticSliceInit(&sslce); */ 57859 /* staticSlicePush(&sslce); */ 57860 /* //staticSliceForEach(&sslce, S UNUSED) S = NULL; */ 57861 /* //staticSliceEnumerate(&sslce, iS, S UNUSED) S = NULL; */ 57862 /* */ 57863 /* //staticSliceElemType(&sslce) sslEl; */ 57864 /* */ 57865 /* puts(getCurrentDate()); */ 57866 /* */ 57867 /* vectorT(vect, char *); */ 57868 /* */ 57869 /* vect vec; */ 57870 /* */ 57871 /* //vectorElemType(&vec) vecE; */ 57872 /* */ 57873 /* vectorInitCount(&vec, 17); */ 57874 /* */ 57875 /* */ 57876 /* logVar(vectorMaxCount(&vec), "zu"); */ 57877 /* logVar(vectorCount(&vec), "zu"); */ 57878 /* */ 57879 /* vectorAppend(&vec, "qwe"); */ 57880 /* vectorAppend(&vec, "2345"); */ 57881 /* */ 57882 /* //vectorForEach(&vec, S UNUSED) S = NULL; */ 57883 /* //vectorEnumerate(&vec, iv, S) S = NULL; */ 57884 /* */ 57885 /* logVar(vectorMaxCount(&vec), "zu"); */ 57886 /* logVar(vectorCount(&vec), "zu"); */ 57887 /* */ 57888 /* char *vc = vectorAt(&vec, 1) */ 57889 /* logI(vc); */ 57890 /* */ 57891 /* forEachV(&vec, i) { */ 57892 /* logI(vectorAt(&vec, i)); */ 57893 /* } */ 57894 /* */ 57895 /* vectorDelElem(&vec, 0); */ 57896 /* */ 57897 /* vc = vectorDequeue(&vec) */ 57898 /* logI(vc); */ 57899 /* */ 57900 /* */ 57901 /* logVar(vectorMaxCount(&vec), "zu"); */ 57902 /* logVar(vectorCount(&vec), "zu"); */ 57903 /* */ 57904 /* vectorInject(&vec, 0); */ 57905 /* */ 57906 /* logVar(vectorMaxCount(&vec), "zu"); */ 57907 /* logVar(vectorCount(&vec), "zu"); */ 57908 /* */ 57909 /* vectorAt(&vec, 0) = "#$345" */ 57910 /* */ 57911 /* forEachV(&vec, i) { */ 57912 /* logI(vectorAt(&vec, i)); */ 57913 /* } */ 57914 /* */ 57915 /* var v = vectorCopy(&vec, 0, 1); */ 57916 /* */ 57917 /* logI("copy"); */ 57918 /* */ 57919 /* forEachV(v, i) { */ 57920 /* logI(vectorAt(v, i)); */ 57921 /* } */ 57922 /* */ 57923 /* vectorTerminate(v); */ 57924 /* */ 57925 /* vectorFree(&vec); */ 57926 /* */ 57927 /* dVectorT(dvect, void*); */ 57928 /* dvect dvec; */ 57929 /* dVectorInit(&dvec); */ 57930 /* //dVectorElemType(&dvec) dvecE; */ 57931 /* */ 57932 /* //dVectorForEach(&dvec, S UNUSED) S = NULL; */ 57933 /* //dVectorEnumerate(&dvec, idv, S UNUSED) S = NULL; */ 57934 /* XSUCCESS */ 57935 /* */ 57936 /* */ 57937 /* char *h; */ 57938 /* puts(h = toHexS("123", 4)); */ 57939 /* free h */ 57940 /* puts(h = toHexSepS("123", 4, ",")); */ 57941 /* free h */ 57942 /* puts(h = toHexHeadSepS("123", 3, "\\x", "")); */ 57943 /* free h */ 57944 /* logSI("Buf: [%s]", toHexSepS("123", 4, ",")); */ 57945 /* logSMI(1,"Mask Buf: [%s]", toHexSepS("123", 4, ",")); */ 57946 /* */ 57947 /* const char *AA[] = {"WER", "asd", NULL} */ 57948 /* char **CA = listCreateS("zxc", "cvb"); */ 57949 /* */ 57950 /* pError0(listPrintS((char**)AA)); */ 57951 /* pError0(listPrintS(CA)); */ 57952 /* */ 57953 /* char *utf8 = "Футбол России и мира, новости футбола, видео голов..."; */ 57954 /* char *utf8_l6 = "Футбол"; */ 57955 /* char *utg8_l6 = "/åäöéà"; */ 57956 /* // extra bytes for bLPtr2IdxUTF8 */ 57957 /* //char *utg8_l6bad = "/åäöéàX"; */ 57958 /* char aq[20] = {0x66, 0x7e, 0xc6,0xc1, 0}; */ 57959 /* */ 57960 /* puts("---------------"); */ 57961 /* puts(shDirname("./wer")); */ 57962 /* puts(shDirname("wer")); */ 57963 /* puts(shDirname("DFGDFG/wer")); */ 57964 /* puts("---------------"); */ 57965 /* */ 57966 /* logVar(strlen(utf8_l6), "zu"); */ 57967 /* logVar(lenUTF8(utf8_l6), "zu"); */ 57968 /* logVar(isUTF8(utf8_l6), "b"); */ 57969 /* puts(utf8_l6); */ 57970 /* logVar(strlen(utg8_l6), "zu"); */ 57971 /* logVar(lenUTF8(utg8_l6), "zu"); */ 57972 /* logVar(bLLenUTF8(utg8_l6,3), "zu"); */ 57973 /* logVar(isUTF8(utg8_l6), "b"); */ 57974 /* // idx2PtrUTF8 test */ 57975 /* logPtr(utg8_l6); */ 57976 /* logPtr(utg8_l6+strlen(utg8_l6)); */ 57977 /* logVar(makeValidUTF8(utg8_l6), "s"); */ 57978 /* logVar(makeValidUTF8(aq), "s"); */ 57979 /* pErrorNULL(strNCpyUTF8(aq, utg8_l6, 5)); */ 57980 /* logVar(aq, "s"); */ 57981 /* #<{(| logVar(ptr2IdxUTF8(utg8_l6, utg8_l6+strlen(utg8_l6)+1),"d"); |)}># */ 57982 /* #<{(| logVar(ptr2IdxUTF8(utg8_l6, utg8_l6),"d"); |)}># */ 57983 /* #<{(| logVar(ptr2IdxUTF8(utg8_l6, utg8_l6+1),"d"); |)}># */ 57984 /* #<{(| logVar(ptr2IdxUTF8(utg8_l6, utg8_l6+2),"d"); |)}># */ 57985 /* #<{(| logVar(ptr2IdxUTF8(utg8_l6, utg8_l6+3),"d"); |)}># */ 57986 /* #<{(| logVar(ptr2IdxUTF8(utg8_l6, utg8_l6+10),"d"); |)}># */ 57987 /* #<{(| logVar(ptr2IdxUTF8(utg8_l6, utg8_l6+11),"d"); |)}># */ 57988 /* #<{(| logVar(ptr2IdxUTF8(utg8_l6, utg8_l6+12),"d"); |)}># */ 57989 /* #<{(| logVar(bPtr2IdxUTF8(utg8_l6, utg8_l6, utg8_l6+strlen(utg8_l6)+1),"d"); |)}># */ 57990 /* #<{(| logVar(bPtr2IdxUTF8(utg8_l6, utg8_l6, utg8_l6),"d"); |)}># */ 57991 /* #<{(| logVar(bPtr2IdxUTF8(utg8_l6, utg8_l6, utg8_l6+1),"d"); |)}># */ 57992 /* #<{(| logVar(bPtr2IdxUTF8(utg8_l6, utg8_l6, utg8_l6+2),"d"); |)}># */ 57993 /* #<{(| logVar(bPtr2IdxUTF8(utg8_l6, utg8_l6, utg8_l6+3),"d"); |)}># */ 57994 /* #<{(| logVar(bPtr2IdxUTF8(utg8_l6, utg8_l6, utg8_l6+10),"d"); |)}># */ 57995 /* #<{(| logVar(bPtr2IdxUTF8(utg8_l6, utg8_l6, utg8_l6+11),"d"); |)}># */ 57996 /* #<{(| logVar(bPtr2IdxUTF8(utg8_l6, utg8_l6, utg8_l6+12),"d"); |)}># */ 57997 /* #<{(| logVar(bLPtr2IdxUTF8(utg8_l6, strlen(utg8_l6)+1, utg8_l6+strlen(utg8_l6)+1),"d"); |)}># */ 57998 /* #<{(| logVar(bLPtr2IdxUTF8(utg8_l6, strlen(utg8_l6)+1, utg8_l6),"d"); |)}># */ 57999 /* #<{(| logVar(bLPtr2IdxUTF8(utg8_l6, strlen(utg8_l6)+1, utg8_l6+1),"d"); |)}># */ 58000 /* #<{(| logVar(bLPtr2IdxUTF8(utg8_l6, strlen(utg8_l6)+1, utg8_l6+2),"d"); |)}># */ 58001 /* #<{(| logVar(bLPtr2IdxUTF8(utg8_l6, strlen(utg8_l6)+1, utg8_l6+3),"d"); |)}># */ 58002 /* #<{(| logVar(bLPtr2IdxUTF8(utg8_l6, strlen(utg8_l6)+1, utg8_l6+10),"d"); |)}># */ 58003 /* #<{(| logVar(bLPtr2IdxUTF8(utg8_l6, strlen(utg8_l6)+1, utg8_l6+11),"d"); |)}># */ 58004 /* #<{(| logVar(bLPtr2IdxUTF8(utg8_l6, strlen(utg8_l6)+1, utg8_l6+12),"d"); |)}># */ 58005 /* #<{(| logVar(bLPtr2IdxUTF8(utg8_l6bad, strlen(utg8_l6)+1, utg8_l6bad+strlen(utg8_l6)+1),"d"); |)}># */ 58006 /* #<{(| logVar(bLPtr2IdxUTF8(utg8_l6bad, strlen(utg8_l6)+1, utg8_l6bad),"d"); |)}># */ 58007 /* #<{(| logVar(bLPtr2IdxUTF8(utg8_l6bad, strlen(utg8_l6)+1, utg8_l6bad+1),"d"); |)}># */ 58008 /* #<{(| logVar(bLPtr2IdxUTF8(utg8_l6bad, strlen(utg8_l6)+1, utg8_l6bad+2),"d"); |)}># */ 58009 /* #<{(| logVar(bLPtr2IdxUTF8(utg8_l6bad, strlen(utg8_l6)+1, utg8_l6bad+3),"d"); |)}># */ 58010 /* #<{(| logVar(bLPtr2IdxUTF8(utg8_l6bad, strlen(utg8_l6)+1, utg8_l6bad+10),"d"); |)}># */ 58011 /* #<{(| logVar(bLPtr2IdxUTF8(utg8_l6bad, strlen(utg8_l6)+1, utg8_l6bad+11),"d"); |)}># */ 58012 /* #<{(| logVar(bLPtr2IdxUTF8(utg8_l6bad, strlen(utg8_l6)+1, utg8_l6bad+12),"d"); |)}># */ 58013 /* // negative index */ 58014 /* #<{(| loghex(utg8_l6, strlen(utg8_l6)+1);put |)}># */ 58015 /* #<{(| logVar(ptr2IdxUTF8(utg8_l6+strlen(utg8_l6),utg8_l6),"d"); |)}># */ 58016 /* #<{(| logVar(ptr2IdxUTF8(utg8_l6+strlen(utg8_l6),utg8_l6+1),"d"); |)}># */ 58017 /* #<{(| logVar(ptr2IdxUTF8(utg8_l6+strlen(utg8_l6),utg8_l6+2),"d"); |)}># */ 58018 /* #<{(| logVar(ptr2IdxUTF8(utg8_l6+strlen(utg8_l6),utg8_l6+3),"d"); |)}># */ 58019 /* #<{(| logVar(ptr2IdxUTF8(utg8_l6+strlen(utg8_l6),utg8_l6+9),"d"); |)}># */ 58020 /* #<{(| logVar(ptr2IdxUTF8(utg8_l6+strlen(utg8_l6),utg8_l6+10),"d"); |)}># */ 58021 /* #<{(| logVar(ptr2IdxUTF8(utg8_l6+strlen(utg8_l6),utg8_l6+11),"d"); |)}># */ 58022 /* #<{(| logVar(ptr2IdxUTF8(utg8_l6+strlen(utg8_l6),utg8_l6+12),"d"); |)}># */ 58023 /* #<{(| logVar(bPtr2IdxUTF8(utg8_l6, utg8_l6+strlen(utg8_l6),utg8_l6-1),"d"); |)}># */ 58024 /* #<{(| logVar(bPtr2IdxUTF8(utg8_l6, utg8_l6+strlen(utg8_l6),utg8_l6),"d"); |)}># */ 58025 /* #<{(| logVar(bPtr2IdxUTF8(utg8_l6, utg8_l6+strlen(utg8_l6),utg8_l6+1),"d"); |)}># */ 58026 /* #<{(| logVar(bPtr2IdxUTF8(utg8_l6, utg8_l6+strlen(utg8_l6),utg8_l6+2),"d"); |)}># */ 58027 /* #<{(| logVar(bPtr2IdxUTF8(utg8_l6, utg8_l6+strlen(utg8_l6),utg8_l6+3),"d"); |)}># */ 58028 /* #<{(| logVar(bPtr2IdxUTF8(utg8_l6, utg8_l6+strlen(utg8_l6),utg8_l6+9),"d"); |)}># */ 58029 /* #<{(| logVar(bPtr2IdxUTF8(utg8_l6, utg8_l6+strlen(utg8_l6),utg8_l6+10),"d"); |)}># */ 58030 /* #<{(| logVar(bPtr2IdxUTF8(utg8_l6, utg8_l6+strlen(utg8_l6),utg8_l6+11),"d"); |)}># */ 58031 /* #<{(| logVar(bPtr2IdxUTF8(utg8_l6, utg8_l6+strlen(utg8_l6),utg8_l6+12),"d"); |)}># */ 58032 /* #<{(| logVar(bLPtr2NegIdxUTF8(utg8_l6, 1+strlen(utg8_l6),utg8_l6-1),"d"); |)}># */ 58033 /* #<{(| logVar(bLPtr2NegIdxUTF8(utg8_l6, 1+strlen(utg8_l6),utg8_l6),"d"); |)}># */ 58034 /* #<{(| logVar(bLPtr2NegIdxUTF8(utg8_l6, 1+strlen(utg8_l6),utg8_l6+1),"d"); |)}># */ 58035 /* #<{(| logVar(bLPtr2NegIdxUTF8(utg8_l6, 1+strlen(utg8_l6),utg8_l6+2),"d"); |)}># */ 58036 /* #<{(| logVar(bLPtr2NegIdxUTF8(utg8_l6, 1+strlen(utg8_l6),utg8_l6+3),"d"); |)}># */ 58037 /* #<{(| logVar(bLPtr2NegIdxUTF8(utg8_l6, 1+strlen(utg8_l6),utg8_l6+9),"d"); |)}># */ 58038 /* #<{(| logVar(bLPtr2NegIdxUTF8(utg8_l6, 1+strlen(utg8_l6),utg8_l6+10),"d"); |)}># */ 58039 /* #<{(| logVar(bLPtr2NegIdxUTF8(utg8_l6, 1+strlen(utg8_l6),utg8_l6+11),"d"); |)}># */ 58040 /* #<{(| logVar(bLPtr2NegIdxUTF8(utg8_l6, 1+strlen(utg8_l6),utg8_l6+12),"d"); |)}># */ 58041 /* #<{(| logVar(bLPtr2NegIdxUTF8(utg8_l6bad+1, 1+strlen(utg8_l6),utg8_l6bad-1),"d"); |)}># */ 58042 /* #<{(| logVar(bLPtr2NegIdxUTF8(utg8_l6bad+1, 1+strlen(utg8_l6),utg8_l6bad),"d"); |)}># */ 58043 /* #<{(| logVar(bLPtr2NegIdxUTF8(utg8_l6bad+1, 1+strlen(utg8_l6),utg8_l6bad+1),"d"); |)}># */ 58044 /* #<{(| logVar(bLPtr2NegIdxUTF8(utg8_l6bad+1, 1+strlen(utg8_l6),utg8_l6bad+2),"d"); |)}># */ 58045 /* #<{(| logVar(bLPtr2NegIdxUTF8(utg8_l6bad+1, 1+strlen(utg8_l6),utg8_l6bad+3),"d"); |)}># */ 58046 /* #<{(| logVar(bLPtr2NegIdxUTF8(utg8_l6bad+1, 1+strlen(utg8_l6),utg8_l6bad+9),"d"); |)}># */ 58047 /* #<{(| logVar(bLPtr2NegIdxUTF8(utg8_l6bad+1, 1+strlen(utg8_l6),utg8_l6bad+10),"d"); |)}># */ 58048 /* #<{(| logVar(bLPtr2NegIdxUTF8(utg8_l6bad+1, 1+strlen(utg8_l6),utg8_l6bad+11),"d"); |)}># */ 58049 /* #<{(| logVar(bLPtr2NegIdxUTF8(utg8_l6bad+1, 1+strlen(utg8_l6),utg8_l6bad+12),"d"); |)}># */ 58050 /* #<{(| logPtr(idx2PtrUTF8(utg8_l6, 0)); |)}># */ 58051 /* #<{(| logPtr(idx2PtrUTF8(utg8_l6, 1)); |)}># */ 58052 /* #<{(| logPtr(idx2PtrUTF8(utg8_l6, 2)); |)}># */ 58053 /* #<{(| logPtr(idx2PtrUTF8(utg8_l6, 3)); |)}># */ 58054 /* #<{(| logPtr(idx2PtrUTF8(utg8_l6, 4)); |)}># */ 58055 /* #<{(| logPtr(idx2PtrUTF8(utg8_l6, 5)); |)}># */ 58056 /* #<{(| logPtr(idx2PtrUTF8(utg8_l6, 6)); |)}># */ 58057 /* #<{(| logPtr(idx2PtrUTF8(utg8_l6, 7)); |)}># */ 58058 /* #<{(| logPtr(idx2PtrUTF8(utg8_l6, -1)); |)}># */ 58059 /* #<{(| logPtr(idx2PtrUTF8(utg8_l6, -2)); |)}># */ 58060 /* #<{(| logPtr(idx2PtrUTF8(utg8_l6, -3)); |)}># */ 58061 /* #<{(| logPtr(idx2PtrUTF8(utg8_l6, -4)); |)}># */ 58062 /* #<{(| logPtr(idx2PtrUTF8(utg8_l6, -5)); |)}># */ 58063 /* #<{(| logPtr(idx2PtrUTF8(utg8_l6, -6)); |)}># */ 58064 /* #<{(| logPtr(idx2PtrUTF8(utg8_l6, -7)); |)}># */ 58065 /* #<{(| logPtr(idx2PtrUTF8(utg8_l6, -8)); |)}># */ 58066 /* puts(utg8_l6); */ 58067 /* puts(utf8); */ 58068 /* logVar(bLLenUTF8(aq,sizeof(aq)), "zu"); */ 58069 /* logVar(isUTF8(aq), "b"); */ 58070 /* logVar(isCodeUTF8(&aq[1]), "b"); */ 58071 /* logVar(isCodeUTF8(&aq[2]), "b"); */ 58072 /* logVar(isCodeUTF8(&aq[3]), "b"); */ 58073 /* logVar(isCodeUTF8(&aq[4]), "b"); */ 58074 /* */ 58075 /* char *next = nextUTF8(utf8_l6); */ 58076 /* puts(next); */ 58077 /* puts(nxtCodeUTF8(next)); */ 58078 /* */ 58079 /* */ 58080 /* pLogMask(0x1, LOG_INFO, "mask"); */ 58081 /* logMask = 0; */ 58082 /* puts("__"); */ 58083 /* pLogMask(0x1, LOG_INFO, "mask"); */ 58084 /* puts("--"); */ 58085 /* */ 58086 /* #define group1 0x03 */ 58087 /* #define group11 0x01 */ 58088 /* #define group12 0x02 */ 58089 /* #define group2 0x04 */ 58090 /* logMask = group11; */ 58091 /* logMI(group1, "is shown when logMask has bit 0 or 1 set"); */ 58092 /* logMI(group11, "is shown when logMask has bit 0 set"); */ 58093 /* logMI(group12, "is shown when logMask has bit 1 set"); */ 58094 /* logMI(group2, "is shown when logMask has bit 2 set"); */ 58095 /* */ 58096 /* setMaxLogLevel(LOG_DISABLE); */ 58097 /* pLog(LOG_CRITICAL, "QWE"); */ 58098 /* setMaxLogLevel(LOG_INFO); */ 58099 /* */ 58100 /* puts(getHomePath()); */ 58101 /* */ 58102 /* printf("k = %" PRIu64 "\n", EXTRACT(k,1,1)); */ 58103 /* */ 58104 /* staticArrayT(type, u32, 10); */ 58105 /* type $; */ 58106 /* staticArrayInit($); */ 58107 /* */ 58108 /* //staticArrayElemType($) $E; */ 58109 /* */ 58110 /* range(i, 5) { */ 58111 /* staticArrayPush($); */ 58112 /* staticArrayLast($) = i; */ 58113 /* } */ 58114 /* */ 58115 /* //staticArrayForEach($, S UNUSED) S = 0; */ 58116 /* //staticArrayEnumerate($, isa, S UNUSED) S = 0; */ 58117 /* */ 58118 /* rangeInf(i) { */ 58119 /* puts("infinity"); */ 58120 /* if i = 5 */ 58121 /* break; */ 58122 /* } */ 58123 /* */ 58124 /* staticArrayWriteFilename($, "test.bin"); */ 58125 /* */ 58126 /* staticArrayDequeue($); */ 58127 /* */ 58128 /* logVar($.head, "d"); */ 58129 /* logVar($.last, "d"); */ 58130 /* */ 58131 /* staticArrayReadFilename($, "test.bin"); */ 58132 /* */ 58133 /* logVar($.head, "d"); */ 58134 /* logVar($.last, "d"); */ 58135 /* */ 58136 /* circularDown(i, 2, 4) { */ 58137 /* printf("%d\n", (int)i); */ 58138 /* } */ 58139 /* */ 58140 /* setLogMode(LOG_VERBOSE); */ 58141 /* logI("%k%KRGB color" RST, 0x99EEFF, 0x666666); */ 58142 /* bool bl = true; */ 58143 /* logI("%b", bl); */ 58144 /* */ 58145 /* intSlabt b; */ 58146 /* slabInitCount(&b, 25); */ 58147 /* #<{(|slabResize(&b, 500); */ 58148 /* */ 58149 /* slabReadFilename(&b, "slab.bin"); */ 58150 /* printf("count %ld\n", slabCount(&b)); */ 58151 /* printf("max count %ld\n", slabMaxCount(&b)); */ 58152 /* */ 58153 /* range(i, (size_t)slabCount(&b)) { */ 58154 /* printf("%d\n", slabAt(&b, i)); */ 58155 /* } */ 58156 /* XSUCCESS */ 58157 /* */ 58158 /* range(i, 70) { */ 58159 /* slabAppend(&b, i); */ 58160 /* } */ 58161 /* printf("count %ld\n", slabCount(&b)); */ 58162 /* FILE *ff; */ 58163 /* ff = fopen("slab.bin", "w"); */ 58164 /* slabWrite(&b, ff); */ 58165 /* fclose(ff); */ 58166 /* XSUCCESS|)}># */ 58167 /* */ 58168 /* slabAppend(&b, 1); */ 58169 /* slabAppend(&b, 2); */ 58170 /* */ 58171 /* //slabForEach(&b, S UNUSED) S = 0; */ 58172 /* //slabEnumerate(&b, isl, S UNUSED) S = 0; */ 58173 /* */ 58174 /* printf("size %d\n", slabSz); */ 58175 /* */ 58176 /* slabAt(&b, 1) = 3 */ 58177 /* int *ePtr = slabPtr(&b, 1); */ 58178 /* printf("element 1: %"PRIi32"\n", *ePtr); */ 58179 /* printf("get %"PRIi32"\n", slabAt(&b, 0)); */ 58180 /* printf("pop %"PRIi32"\n", slabPop(&b)); */ 58181 /* printf("dQ %"PRIi32"\n", slabDequeue(&b)); */ 58182 /* slabFirstIndex(&b) = slabMaxCount(&b); */ 58183 /* slabLastIndexVar(&b) = slabMaxCount(&b); */ 58184 /* slabPrepend(&b, 10); */ 58185 /* printf("get %"PRIi32"\n", slabAt(&b, 0)); */ 58186 /* printf("get %"PRIi32"\n", slabAt(&b, slabLastIndex(&b))); */ 58187 /* */ 58188 /* printf("count %ld\n", slabCount(&b)); */ 58189 /* */ 58190 /* slabFree(&b); */ 58191 /* */ 58192 /* //slabElemType(&b) slabE; */ 58193 /* */ 58194 /* XSUCCESS */ 58195 /* */ 58196 /* char **bt = btrace(); */ 58197 /* pError0(listPrintS(bt)); */ 58198 /* listFreeS(bt); */ 58199 /* */ 58200 /* logPtr(bt); */ 58201 /* */ 58202 /* bttt(); */ 58203 /* freeRealProgPath(); */ 58204 /* XSUCCESS */ 58205 /* */ 58206 /* stopwatchStart; */ 58207 /* stopwatchLog; */ 58208 /* stopwatchStart; */ 58209 /* stopwatchLogUs; */ 58210 /* */ 58211 /* timeNs(); */ 58212 /* */ 58213 /* timeUs(loghex(a, 10)); */ 58214 /* */ 58215 /* intDynt bbb UNUSED; */ 58216 /* //dArrayForEach(&bbb, S UNUSED) S = 0; */ 58217 /* //dArrayEnumerate(&bbb, ida, S UNUSED) S = 0; */ 58218 /* //dArrayElemType(&bbb) bbbE; */ 58219 /* #<{(| */ 58220 /* intDynt b; */ 58221 /* dArrayInitCount(&b, 25); */ 58222 /* dArrayResize(&b, 500); */ 58223 /* */ 58224 /* dArrayReadFilename(&b, "darray.bin"); */ 58225 /* printf("count %ld\n", dArrayCount(&b)); */ 58226 /* */ 58227 /* range(i, (size_t)dArrayCount(&b)) { */ 58228 /* printf("%d\n", dArrayAt(&b, i)); */ 58229 /* } */ 58230 /* XSUCCESS */ 58231 /* */ 58232 /* range(i, 70) { */ 58233 /* dArrayAppend(&b, i); */ 58234 /* } */ 58235 /* printf("count %ld\n", dArrayCount(&b)); */ 58236 /* FILE *ff; */ 58237 /* ff = fopen("darray.bin", "w"); */ 58238 /* dArrayWrite(&b, ff); */ 58239 /* fclose(ff); */ 58240 /* XSUCCESS */ 58241 /* */ 58242 /* dArrayAppend(&b, 1); */ 58243 /* dArrayAppend(&b, 2); */ 58244 /* */ 58245 /* printf("size %d\n", dArraySz); */ 58246 /* */ 58247 /* dArrayAt(&b, 1) = 3 */ 58248 /* int *ePtr = dArrayPtr(&b, 1); */ 58249 /* printf("element 1: %"PRIi32"\n", *ePtr); */ 58250 /* printf("get %"PRIi32"\n", dArrayAt(&b, 0)); */ 58251 /* printf("pop %"PRIi32"\n", dArrayPop(&b)); */ 58252 /* printf("dQ %"PRIi32"\n", dArrayDequeue(&b)); */ 58253 /* dArrayFirstIndex(&b) = dArrayMaxCount(&b); */ 58254 /* dArrayLastIndexVar(&b) = dArrayMaxCount(&b); */ 58255 /* dArrayPrepend(&b, 10); */ 58256 /* printf("get %"PRIi32"\n", dArrayAt(&b, 0)); */ 58257 /* printf("get %"PRIi32"\n", dArrayAt(&b, dArrayLastIndex(&b))); */ 58258 /* */ 58259 /* printf("count %ld\n", dArrayCount(&b)); */ 58260 /* */ 58261 /* dArrayFree(&b);|)}># */ 58262 /* */ 58263 /* #<{(| indexerT(iT, i8); |)}># */ 58264 /* #<{(| iT ii; |)}># */ 58265 /* #<{(| logVar(sizeof ii,"lu"); |)}># */ 58266 /* #<{(| logVar(sizeof(staticArrayBase),"lu"); |)}># */ 58267 /* #<{(| |)}># */ 58268 /* #<{(| indexerInit(ii, 90); |)}># */ 58269 /* #<{(| |)}># */ 58270 /* #<{(| int A[] = {1,5,7,9,10,65}; |)}># */ 58271 /* #<{(| A[0] = ARRAY_SIZE(A); |)}># */ 58272 /* #<{(| ssize_t bsr; |)}># */ 58273 /* #<{(| |)}># */ 58274 /* #<{(| #define less(i, se) A[i] < se |)}># */ 58275 /* #<{(| #define equal(i, se) A[i] == se |)}># */ 58276 /* #<{(| |)}># */ 58277 /* #<{(| BSEARCH(bsr, 65, COUNT_ELEMENTS(A), less, equal); |)}># */ 58278 /* #<{(| logVar(bsr,"zd"); |)}># */ 58279 /* #<{(| if bsr != -1 |)}># */ 58280 /* #<{(| logVar(A[bsr],"d"); |)}># */ 58281 /* */ 58282 /* XSUCCESS */ 58283 /* */ 58284 /* //listPrintS(systemf("ls %s", "-ltrh")); */ 58285 /* */ 58286 /* puts(bLGetCurrentDateYMD(a, 50)); */ 58287 /* */ 58288 /* FILE *f = fopen("textOutTest.null", "r") */ 58289 /* logVar(fileSizeFP(f), "ld"); */ 58290 /* fclose(f); */ 58291 /* */ 58292 /* logVar(fileSizeFP(NULL), "ld"); */ 58293 /* */ 58294 /* // bug in cg_c */ 58295 /* #<{(| getCurrentUnixTime(); |)}># */ 58296 /* #<{(| time_t tim = strToUnixTime("2018", "%Y"); |)}># */ 58297 /* #<{(| logVar(tim, "ld"); |)}># */ 58298 /* #<{(| tim = strToUnixTime("asd", "%Y"); |)}># */ 58299 /* #<{(| logVar(tim, "ld"); |)}># */ 58300 /* */ 58301 /* staticArrayInit(fibers.L); */ 58302 /* staticArrayPush(fibers.L); */ 58303 /* //logVar(staticArrayCount(fibers.L), "d"); */ 58304 /* staticArrayLast(fibers.L) = 10; */ 58305 /* staticArrayPush(fibers.L); */ 58306 /* staticArrayLast(fibers.L) = 11; */ 58307 /* staticArrayPush(fibers.L); */ 58308 /* staticArrayLast(fibers.L) = 12; */ 58309 /* staticArrayPush(fibers.L); */ 58310 /* staticArrayLast(fibers.L) = 13; */ 58311 /* int r = staticArrayGet(fibers.L, -1); */ 58312 /* logVar(r, "d"); */ 58313 /* r = staticArrayGet(fibers.L, 3); */ 58314 /* logVar(r, "d"); */ 58315 /* r = indexerRef(fibers.L, -1); */ 58316 /* logVar(r, "d"); */ 58317 /* r = indexerRef(fibers.L, 3); */ 58318 /* logVar(r, "d"); */ 58319 /* r = staticArrayGet(fibers.L, -2); */ 58320 /* logVar(r, "d"); */ 58321 /* r = staticArrayGet(fibers.L, 2); */ 58322 /* logVar(r, "d"); */ 58323 /* r = indexerRef(fibers.L, -2); */ 58324 /* logVar(r, "d"); */ 58325 /* r = indexerRef(fibers.L, 2); */ 58326 /* logVar(r, "d"); */ 58327 /* r = staticArrayGet(fibers.L, -3); */ 58328 /* logVar(r, "d"); */ 58329 /* r = staticArrayGet(fibers.L, 1); */ 58330 /* logVar(r, "d"); */ 58331 /* r = indexerRef(fibers.L, -3); */ 58332 /* logVar(r, "d"); */ 58333 /* r = indexerRef(fibers.L, 1); */ 58334 /* logVar(r, "d"); */ 58335 /* r = staticArrayGet(fibers.L, -4); */ 58336 /* logVar(r, "d"); */ 58337 /* r = staticArrayGet(fibers.L, 0); */ 58338 /* logVar(r, "d"); */ 58339 /* r = indexerRef(fibers.L, -4); */ 58340 /* logVar(r, "d"); */ 58341 /* r = indexerRef(fibers.L, 0); */ 58342 /* logVar(r, "d"); */ 58343 /* staticArrayDequeue(fibers.L); */ 58344 /* put */ 58345 /* r = staticArrayRef(fibers.L, -1); */ 58346 /* logVar(r, "d"); */ 58347 /* r = staticArrayRef(fibers.L, 2); */ 58348 /* logVar(r, "d"); */ 58349 /* r = indexerRef(fibers.L, -1); */ 58350 /* logVar(r, "d"); */ 58351 /* r = indexerRef(fibers.L, 2); */ 58352 /* logVar(r, "d"); */ 58353 /* r = staticArrayRef(fibers.L, -2); */ 58354 /* logVar(r, "d"); */ 58355 /* r = staticArrayRef(fibers.L, 1); */ 58356 /* logVar(r, "d"); */ 58357 /* r = indexerRef(fibers.L, -2); */ 58358 /* logVar(r, "d"); */ 58359 /* r = indexerRef(fibers.L, 1); */ 58360 /* logVar(r, "d"); */ 58361 /* r = staticArrayRef(fibers.L, -3); */ 58362 /* logVar(r, "d"); */ 58363 /* r = staticArrayRef(fibers.L, 0); */ 58364 /* logVar(r, "d"); */ 58365 /* r = indexerRef(fibers.L, -3); */ 58366 /* logVar(r, "d"); */ 58367 /* r = indexerRef(fibers.L, 0); */ 58368 /* logVar(r, "d"); */ 58369 /* */ 58370 /* char **aList = listCreateS("11", "22", "33") */ 58371 /* char **p = listAddrS(aList, -3); */ 58372 /* puts(*p); */ 58373 /* p = listAddrS(aList, -1); */ 58374 /* puts(*p); */ 58375 /* p = listAddrS(aList, 0); */ 58376 /* puts(*p); */ 58377 /* p = listAddrS(aList, 2); */ 58378 /* puts(*p); */ 58379 /* */ 58380 /* XSUCCESS */ 58381 /* */ 58382 /* indexer id; */ 58383 /* indexerInit(id, 10); */ 58384 /* indexerPush(id); */ 58385 /* logVar(id.last, PRIi64); */ 58386 /* a[indexerLast(id)] = 'a'; */ 58387 /* indexerPush(id); */ 58388 /* logVar(id.last, PRIi64); */ 58389 /* a[id.last] = 'b'; */ 58390 /* indexerPush(id); */ 58391 /* a[id.last] = 0; */ 58392 /* logVar(id.last, PRIi64); */ 58393 /* indexerPop(id); */ 58394 /* logVar(id.last, PRIi64); */ 58395 /* */ 58396 /* //passwordEnter:; */ 58397 /* char *c; */ 58398 /* */ 58399 /* printf("P: "); */ 58400 /* c = readPasswordS() */ 58401 /* puts(c); */ 58402 /* printf("O: "); */ 58403 /* char *d = readPasswordS() */ 58404 /* puts(d); */ 58405 /* puts(c); */ 58406 /* XSUCCESS */ 58407 /* */ 58408 /* pError0(listPrintS(walkDirDir("dirTest.null"))); */ 58409 /* */ 58410 /* circular(i, 2, 4) { */ 58411 /* printf("%d\n", (int)i); */ 58412 /* } */ 58413 /* */ 58414 /* char **l2 = listCreateS("lib") */ 58415 /* listEmptyS(l); */ 58416 /* char **R = listInsertS(l, -1, l2); */ 58417 /* puts(R[0]); */ 58418 /* */ 58419 /* pErrorNULL(injectS("s", -2, 'D')); */ 58420 /* */ 58421 /* c = strdup(" SHeePY") */ 58422 /* pErrorNULL(iLTrimS(&c)); */ 58423 /* printf(">%s<\n",c); */ 58424 /* free(c); */ 58425 /* */ 58426 /* pError0(copy("dirTest.null", "..")); */ 58427 /* */ 58428 /* puts(getProgPath()); */ 58429 /* initLibsheepy("test"); */ 58430 /* puts(getProgPath()); */ 58431 /* */ 58432 /* puts( EVA(c, normalizePath("/wef/./../")) ); */ 58433 /* free c */ 58434 /* puts(__func__); */ 58435 /* AT; */ 58436 /* */ 58437 /* pErrorNULL(iCatS(a, "qwee ", "wefwef", "--1`21`2123")); */ 58438 /* puts(a); */ 58439 /* */ 58440 /* XSUCCESS */ 58441 /* */ 58442 /* rangeDown(i, 10) */ 58443 /* printf("%ld\n", i); */ 58444 /* */ 58445 /* XSUCCESS */ 58446 /* */ 58447 /* initLibsheepy(argv[0]); */ 58448 /* puts(getProgPath()); */ 58449 /* */ 58450 /* //mkdirParents("rmAllTest.null/null"); */ 58451 /* k = rmAll("link"); */ 58452 /* logVar(k, PRIi64); */ 58453 /* */ 58454 /* forEachS(l, L) */ 58455 /* free L */ 58456 /* forEachS(l, L) */ 58457 /* free L */ 58458 /* */ 58459 /* XSUCCESS */ 58460 /* */ 58461 /* puts("readDir"); */ 58462 /* put */ 58463 /* pError0(listPrintS(readDir("."))); */ 58464 /* puts("readDirDir"); */ 58465 /* put */ 58466 /* pError0(listPrintS(readDirDir("."))); */ 58467 /* puts("readDirAll"); */ 58468 /* put */ 58469 /* pError0(listPrintS(readDirAll("."))); */ 58470 /* */ 58471 /* pError0(isNumber("-12.3")); */ 58472 /* XSUCCESS */ 58473 /* */ 58474 /* #<{(| int r = 0 |)}># */ 58475 /* #<{(| tryV(r, 0) { |)}># */ 58476 /* #<{(| throwV(0, 10); |)}># */ 58477 /* #<{(| puts("does not print"); |)}># */ 58478 /* #<{(| } |)}># */ 58479 /* #<{(| else |)}># */ 58480 /* #<{(| printf("except value %d\n", r); |)}># */ 58481 /* */ 58482 /* printf("%" PRIu64 "\n", getMonotonicTime()); */ 58483 /* */ 58484 /* #<{(| AArgs Aa; |)}># */ 58485 /* #<{(| Aa.a = 0 |)}># */ 58486 /* #<{(| A(&Aa); |)}># */ 58487 /* //AB(); */ 58488 /* */ 58489 /* AArgs Aa; */ 58490 /* BArgs Ba; */ 58491 /* */ 58492 /* initLibsheepy(argv[0]); */ 58493 /* #<{(| staticArrayInit(fibers.L); |)}># */ 58494 /* #<{(| staticArrayInit(fibers.startL); |)}># */ 58495 /* */ 58496 /* puts(__func__); */ 58497 /* Aa.a = 0 */ 58498 /* fiberAdd(&Aa, 1, fiberA); */ 58499 /* */ 58500 /* puts(__func__); */ 58501 /* Ba.a = 1 */ 58502 /* Ba.b = 2 */ 58503 /* fiberAdd(&Ba, 2, fiberB); */ 58504 /* */ 58505 /* scheduler(); */ 58506 /* */ 58507 /* #<{(| if !setjmp(buf) |)}># */ 58508 /* #<{(| longjmp(buf,1); |)}># */ 58509 /* #<{(| else |)}># */ 58510 /* #<{(| puts("except"); |)}># */ 58511 /* */ 58512 /* XSUCCESS */ 58513 /* */ 58514 /* pError0(copy("cov.info", "qwe")); */ 58515 /* pError0(copy("dirTest.null/", "mkdirTest.null/null/")); */ 58516 /* pError0(copy("dirTest.null", "mkdirTest.null/")); */ 58517 /* */ 58518 /* initLibsheepy(argv[0]); */ 58519 /* */ 58520 /* //NO - limited to 2GB files - sendfile(0, 0, 0, 10); */ 58521 /* setLogFile(NULL); */ 58522 /* */ 58523 /* //char *s = formatS("%s/%d\n", "qwd",645); */ 58524 /* char *s = NULL */ 58525 /* s = formatS("%s/%d\n", "qwd",645); */ 58526 /* //char *s = NULL; */ 58527 /* //pError(asprintf(&s, "%s/%s\n", "qwd","qw")); */ 58528 /* puts(s); */ 58529 /* */ 58530 /* pError0(listPrintS(walkDirAll("."))); */ 58531 /* printf("%o\n", 0777 & ~getUmask()); */ 58532 /* pError0(mkdirParents("mkdirTest.null/null")); */ 58533 /* */ 58534 /* #<{(| pErrorCmd(isDir("json"), == false, pLog(LOG_WARNING, "json is NOT dir")) |)}># */ 58535 /* #<{(| else |)}># */ 58536 /* #<{(| pLog(LOG_INFO, "json is dir"); |)}># */ 58537 /* #<{(| |)}># */ 58538 /* #<{(| pErrorCmd(isDir("qweqwe"), == false, pLog(LOG_WARNING, "qweqwe is NOT dir")) |)}># */ 58539 /* #<{(| else |)}># */ 58540 /* #<{(| pLog(LOG_INFO, "qweqwe is dir"); |)}># */ 58541 /* */ 58542 /* */ 58543 /* setLogMode(LOG_CONCISE); */ 58544 /* pLog(LOG_CRITICAL, "1"); */ 58545 /* pLog(LOG_ERROR, "1"); */ 58546 /* pLog(LOG_WARNING, "1"); */ 58547 /* pLog(LOG_INFO, "1"); */ 58548 /* pLog(LOG_INVALID, "1"); */ 58549 /* pLog(10, "1"); */ 58550 /* */ 58551 /* //uint32_t x; */ 58552 /* //_rdrand32_step(&x); */ 58553 /* //setHardwareRandom(); */ 58554 /* */ 58555 /* //pErrorResult(k, randomWordF(), == 0) */ 58556 /* //pErrorResultCmd(k, randomWordF(), == 0, return(1) */ 58557 /* setSoftwareRandom(); */ 58558 /* pErrorResultCmd(k, randomWordF(), == 0, XFAILURE) */ 58559 /* logVar(k, PRIu64) */ 58560 /* printf("%" PRIu64 "\n\n", randomWordF()); */ 58561 /* */ 58562 /* puts(getProgPath()); */ 58563 /* puts(getRealProgPath()); */ 58564 /* freeRealProgPath(); */ 58565 /* //l = readText("/home/remy/tmp/auth.log"); */ 58566 /* */ 58567 /* #<{(| time_t t = getModificationTime("exe") |)}># */ 58568 /* #<{(| char *ti = timeToS(t) |)}># */ 58569 /* #<{(| logNFree(ti); |)}># */ 58570 /* #<{(| logNFree(timeToS(0)); |)}># */ 58571 /* */ 58572 /* */ 58573 /* #<{(| char *s = readS() |)}># */ 58574 /* #<{(| puts(s); |)}># */ 58575 /* #<{(| puts("Read enter"); |)}># */ 58576 /* #<{(| readEnter(); |)}># */ 58577 /* */ 58578 /* //bool cond = true */ 58579 /* //puts(stringifyExpr(cond)); */ 58580 /* */ 58581 /* XSUCCESS */ 58582 /* */ 58583 /* */ 58584 /* time_t t = getModificationTime("exe"); */ 58585 /* pError0(getModificationTime("wrong")) */ 58586 /* */ 58587 /* pError(setModificationTime("exe", t)) */ 58588 /* pError(setModificationTime("wrong",t)) */ 58589 /* */ 58590 /* */ 58591 /* if equalModificationTimes("exe", "exe") */ 58592 /* puts("exe ="); */ 58593 /* */ 58594 /* if equalModificationTimes("exe", "libsheepy.h") */ 58595 /* puts("exe = ls h"); */ 58596 /* */ 58597 /* l = listCreateS("fdfg", "@#$"); */ 58598 /* */ 58599 /* forEachS(l, e) */ 58600 /* puts(e); */ 58601 /* enumerateS(l, E, i) */ 58602 /* print '%d %s', (int)i, E */ 58603 /* */ 58604 /* int *er = NULL */ 58605 /* cast(char **, tt, er) */ 58606 /* tt = NULL */ 58607 /* er = (int*)tt */ 58608 /* */ 58609 /* char *dum = strdup("ls dasd"); */ 58610 /* pErrorNot0(systemNFree(dum)); */ 58611 /* */ 58612 /* // no ~/ */ 58613 /* char *s1; */ 58614 /* s1 = expandHome("sheepy"); */ 58615 /* //ck_assert_str_eq(s1, "sheepy"); */ 58616 /* free(s1); */ 58617 /* // NULL path */ 58618 /* //ck_assert_ptr_eq(expandHome(NULL), NULL); */ 58619 /* */ 58620 /* s1 = strdup("//w//ef//"); */ 58621 /* pErrorNULL(iUniqS(&s1, '/')); */ 58622 /* puts(s1); */ 58623 /* puts(uniqS("wef", '/')); */ 58624 /* puts(uniqS("//w//ef//", '/')); */ 58625 /* */ 58626 /* l = NULL */ 58627 /* *l = (char *)1; */ 58628 58629 XSUCCESS; 58630 } 58631