picolisp

Unnamed repository; edit this file to name it for gitweb.
git clone https://logand.com/git/picolisp.git/
Log | Files | Refs | README | LICENSE

sym.c (97961B)


      1 /* 02mar13abu
      2  * (c) Software Lab. Alexander Burger
      3  */
      4 
      5 #include "pico.h"
      6 
      7 /* Internal/transient hash */
      8 unsigned long ihash(any x) {
      9    unsigned long g, h;
     10    word n;
     11 
     12    for (h = 0; isNum(x); x = cdr(numCell(x)))
     13       for (n = unDig(x); n; n >>= 8)
     14          g = (h = (h<<4) + (n&0xFF)) & 0xF0000000,  h = (h ^ g>>24) & ~g;
     15    return h % IHASH;
     16 }
     17 
     18 /* External hash */
     19 unsigned long ehash(any x) {
     20    unsigned long h;
     21    word n;
     22 
     23    for (h = 0; isNum(x); x = cdr(numCell(x)))
     24       for (n = unDig(x); n; n >>= 11)
     25          h += n;
     26    return h % EHASH;
     27 }
     28 
     29 bool hashed(any s, any x) {
     30    while (isCell(x)) {
     31       if (s == car(x))
     32          return YES;
     33       x = cdr(x);
     34    }
     35    return NO;
     36 }
     37 
     38 any findHash(any s, any *p) {
     39    any x, y, *q, h;
     40 
     41    if (isCell(h = *p)) {
     42       x = s,  y = name(car(h));
     43       while (unDig(x) == unDig(y)) {
     44          x = cdr(numCell(x));
     45          y = cdr(numCell(y));
     46          if (!isNum(x) && !isNum(y))
     47             return car(h);
     48       }
     49       while (isCell(h = *(q = &cdr(h)))) {
     50          x = s,  y = name(car(h));
     51          while (unDig(x) == unDig(y)) {
     52             x = cdr(numCell(x));
     53             y = cdr(numCell(y));
     54             if (!isNum(x) && !isNum(y)) {
     55                *q = cdr(h),  cdr(h) = *p,  *p = h;
     56                return car(h);
     57             }
     58          }
     59       }
     60    }
     61    return NULL;
     62 }
     63 
     64 void unintern(any s, any *p) {
     65    any x;
     66 
     67    while (isCell(x = *p)) {
     68       if (s == car(x)) {
     69          *p = cdr(x);
     70          return;
     71       }
     72       p = &x->cdr;
     73    }
     74 }
     75 
     76 /* Get symbol name */
     77 any name(any s) {
     78    for (s = tail1(s); isCell(s); s = cdr(s));
     79    return s;
     80 }
     81 
     82 // (name 'sym ['sym2]) -> sym
     83 any doName(any ex) {
     84    any x, y, *p;
     85    unsigned long n;
     86    cell c1;
     87 
     88    x = cdr(ex),  data(c1) = EVAL(car(x));
     89    NeedSym(ex,data(c1));
     90    y = name(data(c1));
     91    if (!isCell(x = cdr(x)))
     92       return isNum(y)? consStr(y) : Nil;
     93    n = ihash(y);
     94    if (isNil(data(c1)) || isExt(data(c1)) || hashed(data(c1), Intern[n]))
     95       err(ex, data(c1), "Can't rename");
     96    Save(c1);
     97    x = EVAL(car(x));
     98    NeedSym(ex,x);
     99    unintern(data(c1), Transient + n);
    100    for (p = &tail(data(c1)); isCell(*p); p = &cdr(*p));
    101    *p = name(x);
    102    return Pop(c1);
    103 }
    104 
    105 /* Find or create single-char symbol */
    106 any mkChar(int c) {
    107    if (c >= 0x80) {
    108       if (c < 0x800)
    109          c = 0xC0 | c>>6 & 0x1F  |  (0x80 | c & 0x3F) << 8;
    110       else if (c == TOP)
    111          c = 0xFF;
    112       else
    113          c = 0xE0 | c>>12 & 0x0F  |  (0x80 | c>>6 & 0x3F) << 8  |  (0x80 | c & 0x3F) << 16;
    114    }
    115    return consStr(box(c));
    116 }
    117 
    118 /* Make name */
    119 any mkName(char *s) {
    120    int i;
    121    any nm;
    122    cell c1;
    123 
    124    i = 0,  Push(c1, nm = box(*(byte*)s++));
    125    while (*s)
    126       byteSym(*(byte*)s++, &i, &nm);
    127    return Pop(c1);
    128 }
    129 
    130 any intern(char *s) {
    131    any nm, x, *h;
    132 
    133    if (!*s)
    134       return Nil;
    135    nm = mkName(s);
    136    if (x = findHash(nm, h = Intern + ihash(nm)))
    137       return x;
    138    *h = cons(x = consStr(nm), *h);
    139    return x;
    140 }
    141 
    142 /* Make string */
    143 any mkStr(char *s) {return s && *s? consStr(mkName(s)) : Nil;}
    144 
    145 /* Get first byte of symbol name */
    146 int firstByte(any s) {
    147    return !isNum(s = name(s))? 0 : unDig(s) & 0xFF;
    148 }
    149 
    150 int secondByte(any s) {
    151    return !isNum(s = name(s))? 0 : unDig(s) >> 8 & 0xFF;
    152 }
    153 
    154 bool isBlank(any x) {
    155    int c;
    156 
    157    if (!isSym(x))
    158       return NO;
    159    for (c = symChar(name(x)); c; c = symChar(NULL))
    160       if (c > ' ')
    161          return NO;
    162    return YES;
    163 }
    164 
    165 // (sp? 'any) -> flg
    166 any doSpQ(any x) {
    167    x = cdr(x);
    168    return isBlank(EVAL(car(x)))? T : Nil;
    169 }
    170 
    171 // (pat? 'any) -> sym | NIL
    172 any doPatQ(any x) {
    173    x = cdr(x);
    174    return isSym(x = EVAL(car(x))) && firstByte(x) == '@'? x : Nil;
    175 }
    176 
    177 // (fun? 'any) -> any
    178 any doFunQ(any x) {
    179    x = cdr(x);
    180    return funq(EVAL(car(x)));
    181 }
    182 
    183 // (getd 'any) -> fun | NIL
    184 any doGetd(any x) {
    185    x = cdr(x);
    186    if (!isSym(x = EVAL(car(x))))
    187       return Nil;
    188    return !isNil(funq(val(x))) || isNil(val(x)) && sharedLib(x)?
    189       val(x) : Nil;
    190 }
    191 
    192 // (all ['T | '0]) -> lst
    193 any doAll(any x) {
    194    any *p;
    195    int mod, i;
    196    cell c1;
    197 
    198    x = cdr(x),  x = EVAL(car(x));
    199    if isNil(x)
    200       p = Intern,  mod = IHASH;
    201    else if (x == T)
    202       p = Transient,  mod = IHASH;
    203    else
    204       p = Extern,  mod = EHASH;
    205    Push(c1, Nil);
    206    for (i = 0; i < mod; ++i)
    207       for (x = p[i]; isCell(x); x = cdr(x))
    208          data(c1) = cons(car(x), data(c1));
    209    return Pop(c1);
    210 }
    211 
    212 // (intern 'sym) -> sym
    213 any doIntern(any ex) {
    214    any x, y, z, *h;
    215 
    216    x = cdr(ex),  x = EVAL(car(x));
    217    NeedSym(ex,x);
    218    if (!isNum(y = name(x)))
    219       return Nil;
    220    if (unDig(y) == ('L'<<16 | 'I'<<8 | 'N'))
    221       return Nil;
    222    if (z = findHash(y, h = Intern + ihash(y)))
    223       return z;
    224    *h = cons(x,*h);
    225    return x;
    226 }
    227 
    228 // (extern 'sym) -> sym | NIL
    229 any doExtern(any ex) {
    230    int c, i;
    231    any x, y, *h, nm;
    232    cell c1, c2;
    233 
    234    x = cdr(ex),  x = EVAL(car(x));
    235    NeedSym(ex,x);
    236    if (!isNum(x = name(x)))
    237       return Nil;
    238    if (!(y = findHash(x, Extern + ehash(x)))) {
    239       Push(c1, x);
    240       if ((c = symChar(x)) == '{')
    241          c = symChar(NULL);
    242       Push(c2, boxChar(c, &i, &nm));
    243       while ((c = symChar(NULL)) && c != '}')
    244          charSym(c, &i, &nm);
    245       if (!(y = findHash(data(c2), h = Extern + ehash(data(c2))))) {
    246          mkExt(y = consSym(Nil,data(c2)));
    247          *h = cons(y,*h);
    248       }
    249       drop(c1);
    250    }
    251    return isLife(y)? y : Nil;
    252 }
    253 
    254 // (==== ['sym ..]) -> NIL
    255 any doHide(any ex) {
    256    any x, y, z, *h;
    257    int i;
    258 
    259    for (i = 0; i < IHASH; ++i)
    260       Transient[i] = Nil;
    261    for (x = cdr(ex); isCell(x); x = cdr(x)) {
    262       y = EVAL(car(x));
    263       NeedSym(ex,y);
    264       if (isNum(z = name(y)) && !findHash(z, h = Transient + ihash(z)))
    265          *h = cons(y,*h);
    266    }
    267    return Nil;
    268 }
    269 
    270 // (box? 'any) -> sym | NIL
    271 any doBoxQ(any x) {
    272    x = cdr(x);
    273    return isSym(x = EVAL(car(x))) && !isNum(name(x))? x : Nil;
    274 }
    275 
    276 // (str? 'any) -> sym | NIL
    277 any doStrQ(any x) {
    278    x = cdr(x);
    279    return isSym(x = EVAL(car(x))) &&
    280          !isExt(x) && !hashed(x, Intern[ihash(name(x))])? x : Nil;
    281 }
    282 
    283 // (ext? 'any) -> sym | NIL
    284 any doExtQ(any x) {
    285    x = cdr(x);
    286    return isSym(x = EVAL(car(x))) && isExt(x) && isLife(x) ? x : Nil;
    287 }
    288 
    289 // (touch 'sym) -> sym
    290 any doTouch(any ex) {
    291    any x = cdr(ex);
    292    x = EVAL(car(x));
    293    NeedSym(ex,x);
    294    Touch(ex,x);
    295    return x;
    296 }
    297 
    298 // (zap 'sym) -> sym
    299 any doZap(any ex) {
    300    any x;
    301 
    302    x = cdr(ex),  x = EVAL(car(x));
    303    NeedSym(ex,x);
    304    if (isExt(x))
    305       db(ex,x,3);
    306    else {
    307       if (x >= Nil  &&  x <= Bye)
    308          protError(ex,x);
    309       unintern(x, Intern + ihash(name(x)));
    310    }
    311    return x;
    312 }
    313 
    314 // (chop 'any) -> lst
    315 any doChop(any x) {
    316    int c;
    317    cell c1, c2;
    318 
    319    if (isCell(x = EVAL(cadr(x))))
    320       return x;
    321    if (!(c = symChar(name(x = xSym(x)))))
    322       return Nil;
    323    Push(c1, x);
    324    Push(c2, x = cons(mkChar(c), Nil));
    325    while (c = symChar(NULL))
    326       x = cdr(x) = cons(mkChar(c), Nil);
    327    drop(c1);
    328    return data(c2);
    329 }
    330 
    331 void pack(any x, int *i, any *nm, cell *p) {
    332    int c;
    333    cell c1;
    334 
    335    if (isCell(x))
    336       do
    337          pack(car(x), i, nm, p);
    338       while (isCell(x = cdr(x)));
    339    if (!isNil(x)) {
    340       if (isNum(x)) {
    341          Push(c1, x = numToSym(x, 0, 0, 0));
    342          c = symChar(name(x));
    343          if (*nm)
    344             charSym(c, i, nm);
    345          else
    346             Tuck(*p, c1, boxChar(c, i, nm));
    347          while (c = symChar(NULL))
    348             charSym(c, i, nm);
    349          drop(c1);
    350       }
    351       else if (c = symChar(name(x))) {
    352          if (*nm) {
    353             if (isExt(x))
    354                charSym('{', i, nm);
    355             charSym(c, i, nm);
    356          }
    357          else if (!isExt(x))
    358             Push(*p, boxChar(c, i, nm));
    359          else {
    360             Push(*p, boxChar('{', i, nm));
    361             charSym(c, i, nm);
    362          }
    363          while (c = symChar(NULL))
    364             charSym(c, i, nm);
    365          if (isExt(x))
    366             charSym('}', i, nm);
    367       }
    368    }
    369 }
    370 
    371 // (pack 'any ..) -> sym
    372 any doPack(any x) {
    373    int i;
    374    any nm;
    375    cell c1, c2;
    376 
    377    x = cdr(x),  Push(c1, EVAL(car(x)));
    378    nm = NULL,  pack(data(c1), &i, &nm, &c2);
    379    while (isCell(x = cdr(x)))
    380       pack(data(c1) = EVAL(car(x)), &i, &nm, &c2);
    381    drop(c1);
    382    return nm? consStr(data(c2)) : Nil;
    383 }
    384 
    385 // (glue 'any 'lst) -> sym
    386 any doGlue(any x) {
    387    int i;
    388    any nm;
    389    cell c1, c2, c3;
    390 
    391    x = cdr(x),  Push(c1, EVAL(car(x)));
    392    x = cdr(x),  Push(c2, x = EVAL(car(x)));
    393    if (!isCell(x)) {
    394       drop(c1);
    395       return x;
    396    }
    397    nm = NULL,  pack(car(x), &i, &nm, &c3);
    398    while (isCell(x = cdr(x))) {
    399       pack(data(c1), &i, &nm, &c3);
    400       pack(car(x), &i, &nm, &c3);
    401    }
    402    drop(c1);
    403    return nm? consStr(data(c3)) : Nil;
    404 }
    405 
    406 // (text 'any1 'any ..) -> sym
    407 any doText(any x) {
    408    int c, n, i;
    409    any nm;
    410    any y = evSym(x = cdr(x));
    411    char *p, buf[bufSize(y)];
    412    cell c1;
    413 
    414    bufString(y, buf);
    415    if (!*(p = buf))
    416       return Nil;
    417    {
    418       cell arg[length(x = cdr(x))];
    419 
    420       for (n = 0;  isCell(x);  ++n, x = cdr(x))
    421          Push(arg[n], EVAL(car(x)));
    422 
    423       nm = NULL;
    424       do {
    425          if ((c = *p++) != '@') {
    426             if (nm)
    427                byteSym(c, &i, &nm);
    428             else
    429                i = 0,  Push(c1, nm = box(c & 0xFF));
    430          }
    431          else if (!(c = *p++))
    432             break;
    433          else if (c == '@') {
    434             if (nm)
    435                byteSym('@', &i, &nm);
    436             else
    437                i = 0,  Push(c1, nm = box('@'));
    438          }
    439          else if (c >= '1') {
    440             if ((c -= '1') > 8)
    441                c -= 7;
    442             if (n > c)
    443                pack(data(arg[c]), &i, &nm, &c1);
    444          }
    445       } while (*p);
    446       if (n)
    447          drop(arg[0]);
    448       else if (nm)
    449          drop(c1);
    450       return nm? consStr(data(c1)) : Nil;
    451    }
    452 }
    453 
    454 static bool pre(word n1, any y, word n2, any x) {
    455    for (;;) {
    456       if ((n1 & 0xFF) != (n2 & 0xFF))
    457          return NO;
    458       if ((n1 >>= 8) == 0) {
    459          if (!isNum(y = cdr(numCell(y))))
    460             return YES;
    461          n1 = unDig(y);
    462       }
    463       if ((n2 >>= 8) == 0) {
    464          if (!isNum(x = cdr(numCell(x))))
    465             return NO;
    466          n2 = unDig(x);
    467       }
    468    }
    469 }
    470 
    471 bool subStr(any y, any x) {
    472    word n;
    473 
    474    if (!isNum(y = name(y)))
    475       return YES;
    476    if (!isNum(x = name(x)))
    477       return NO;
    478    n = unDig(x);
    479    for (;;) {
    480       if (pre(unDig(y), y, n, x))
    481          return YES;
    482       if ((n >>= 8) == 0) {
    483          if (!isNum(x = cdr(numCell(x))))
    484             return NO;
    485          n = unDig(x);
    486       }
    487    }
    488 }
    489 
    490 // (pre? 'any1 'any2) -> any2 | NIL
    491 any doPreQ(any x) {
    492    any y, z;
    493    cell c1;
    494 
    495    x = cdr(x),  Push(c1, evSym(x));
    496    x = cdr(x),  x = evSym(x);
    497    drop(c1);
    498    if (!isNum(y = name(data(c1))))
    499       return x;
    500    if (!isNum(z = name(x)))
    501       return Nil;
    502    return pre(unDig(y), y, unDig(z), z)? x : Nil;
    503 }
    504 
    505 // (sub? 'any1 'any2) -> any2 | NIL
    506 any doSubQ(any x) {
    507    cell c1;
    508 
    509    x = cdr(x),  Push(c1, evSym(x));
    510    x = cdr(x),  x = evSym(x);
    511    drop(c1);
    512    return subStr(data(c1), x)? x : Nil;
    513 }
    514 
    515 // (val 'var) -> any
    516 any doVal(any ex) {
    517    any x;
    518 
    519    x = cdr(ex),  x = EVAL(car(x));
    520    NeedVar(ex,x);
    521    if (isSym(x))
    522       Fetch(ex,x);
    523    return val(x);
    524 }
    525 
    526 // (set 'var 'any ..) -> any
    527 any doSet(any ex) {
    528    any x;
    529    cell c1, c2;
    530 
    531    x = cdr(ex);
    532    do {
    533       Push(c1, EVAL(car(x))),  x = cdr(x);
    534       NeedVar(ex,data(c1));
    535       CheckVar(ex,data(c1));
    536       if (isSym(data(c1)))
    537          Touch(ex,data(c1));
    538       Push(c2, EVAL(car(x))),  x = cdr(x);
    539       val(data(c1)) = data(c2);
    540       drop(c1);
    541    } while (isCell(x));
    542    return val(data(c1));
    543 }
    544 
    545 // (setq var 'any ..) -> any
    546 any doSetq(any ex) {
    547    any x, y;
    548 
    549    x = cdr(ex);
    550    do {
    551       y = car(x),  x = cdr(x);
    552       NeedVar(ex,y);
    553       CheckVar(ex,y);
    554       val(y) = EVAL(car(x));
    555    } while (isCell(x = cdr(x)));
    556    return val(y);
    557 }
    558 
    559 // (xchg 'var 'var ..) -> any
    560 any doXchg(any ex) {
    561    any x, y;
    562    cell c1, c2;
    563 
    564    x = cdr(ex);
    565    do {
    566       Push(c1, EVAL(car(x))),  x = cdr(x);
    567       NeedVar(ex,data(c1));
    568       CheckVar(ex,data(c1));
    569       if (isSym(data(c1)))
    570          Touch(ex,data(c1));
    571       Push(c2, EVAL(car(x))),  x = cdr(x);
    572       NeedVar(ex,data(c2));
    573       CheckVar(ex,data(c2));
    574       if (isSym(data(c2)))
    575          Touch(ex,data(c2));
    576       y = val(data(c1)),  val(data(c1)) = val(data(c2)),  val(data(c2)) = y;
    577       drop(c1);
    578    } while (isCell(x));
    579    return y;
    580 }
    581 
    582 // (on var ..) -> T
    583 any doOn(any ex) {
    584    any x = cdr(ex);
    585    do {
    586       NeedVar(ex,car(x));
    587       CheckVar(ex,car(x));
    588       val(car(x)) = T;
    589    } while (isCell(x = cdr(x)));
    590    return T;
    591 }
    592 
    593 // (off var ..) -> NIL
    594 any doOff(any ex) {
    595    any x = cdr(ex);
    596    do {
    597       NeedVar(ex,car(x));
    598       CheckVar(ex,car(x));
    599       val(car(x)) = Nil;
    600    } while (isCell(x = cdr(x)));
    601    return Nil;
    602 }
    603 
    604 // (onOff var ..) -> flg
    605 any doOnOff(any ex) {
    606    any x = cdr(ex);
    607    any y;
    608 
    609    do {
    610       NeedVar(ex,car(x));
    611       CheckVar(ex,car(x));
    612       y = val(car(x)) = isNil(val(car(x)))? T : Nil;
    613    } while (isCell(x = cdr(x)));
    614    return y;
    615 }
    616 
    617 // (zero var ..) -> 0
    618 any doZero(any ex) {
    619    any x = cdr(ex);
    620    do {
    621       NeedVar(ex,car(x));
    622       CheckVar(ex,car(x));
    623       val(car(x)) = Zero;
    624    } while (isCell(x = cdr(x)));
    625    return Zero;
    626 }
    627 
    628 // (one var ..) -> 1
    629 any doOne(any ex) {
    630    any x = cdr(ex);
    631    do {
    632       NeedVar(ex,car(x));
    633       CheckVar(ex,car(x));
    634       val(car(x)) = One;
    635    } while (isCell(x = cdr(x)));
    636    return One;
    637 }
    638 
    639 // (default var 'any ..) -> any
    640 any doDefault(any ex) {
    641    any x, y;
    642 
    643    x = cdr(ex);
    644    do {
    645       y = car(x),  x = cdr(x);
    646       NeedVar(ex,y);
    647       CheckVar(ex,y);
    648       if (isNil(val(y)))
    649          val(y) = EVAL(car(x));
    650    } while (isCell(x = cdr(x)));
    651    return val(y);
    652 }
    653 
    654 // (push 'var 'any ..) -> any
    655 any doPush(any ex) {
    656    any x;
    657    cell c1, c2;
    658 
    659    x = cdr(ex),  Push(c1, EVAL(car(x)));
    660    NeedVar(ex,data(c1));
    661    CheckVar(ex,data(c1));
    662    if (isSym(data(c1)))
    663       Touch(ex,data(c1));
    664    x = cdr(x),  Push(c2, EVAL(car(x)));
    665    val(data(c1)) = cons(data(c2), val(data(c1)));
    666    while (isCell(x = cdr(x))) {
    667       data(c2) = EVAL(car(x));
    668       val(data(c1)) = cons(data(c2), val(data(c1)));
    669    }
    670    drop(c1);
    671    return data(c2);
    672 }
    673 
    674 // (push1 'var 'any ..) -> any
    675 any doPush1(any ex) {
    676    any x;
    677    cell c1, c2;
    678 
    679    x = cdr(ex),  Push(c1, EVAL(car(x)));
    680    NeedVar(ex,data(c1));
    681    CheckVar(ex,data(c1));
    682    if (isSym(data(c1)))
    683       Touch(ex,data(c1));
    684    x = cdr(x),  Push(c2, EVAL(car(x)));
    685    if (!member(data(c2), val(data(c1))))
    686       val(data(c1)) = cons(data(c2), val(data(c1)));
    687    while (isCell(x = cdr(x)))
    688       if (!member(data(c2) = EVAL(car(x)), val(data(c1))))
    689          val(data(c1)) = cons(data(c2), val(data(c1)));
    690    drop(c1);
    691    return data(c2);
    692 }
    693 
    694 // (pop 'var) -> any
    695 any doPop(any ex) {
    696    any x, y;
    697 
    698    x = cdr(ex),  x = EVAL(car(x));
    699    NeedVar(ex,x);
    700    CheckVar(ex,x);
    701    if (isSym(x))
    702       Touch(ex,x);
    703    if (!isCell(y = val(x)))
    704       return y;
    705    val(x) = cdr(y);
    706    return car(y);
    707 }
    708 
    709 // (cut 'cnt 'var) -> lst
    710 any doCut(any ex) {
    711    long n;
    712    any x, y;
    713    cell c1, c2;
    714 
    715    if ((n = evCnt(ex, x = cdr(ex))) <= 0)
    716       return Nil;
    717    x = cdr(x),  Push(c1, EVAL(car(x)));
    718    NeedVar(ex,data(c1));
    719    CheckVar(ex,data(c1));
    720    if (isSym(data(c1)))
    721       Touch(ex,data(c1));
    722    if (isCell(val(data(c1)))) {
    723       Push(c2, y = cons(car(val(data(c1))), Nil));
    724       while (isCell(val(data(c1)) = cdr(val(data(c1)))) && --n)
    725          y = cdr(y) = cons(car(val(data(c1))), Nil);
    726       drop(c1);
    727       return data(c2);
    728    }
    729    return val(Pop(c1));
    730 }
    731 
    732 // (del 'any 'var) -> lst
    733 any doDel(any ex) {
    734    any x, y;
    735    cell c1, c2, c3;
    736 
    737    x = cdr(ex),  Push(c1, EVAL(car(x)));
    738    x = cdr(x),  Push(c2, EVAL(car(x)));
    739    NeedVar(ex,data(c2));
    740    CheckVar(ex,data(c2));
    741    if (isSym(data(c2)))
    742       Touch(ex,data(c2));
    743    if (isCell(x = val(data(c2)))) {
    744       if (equal(data(c1), car(x))) {
    745          drop(c1);
    746          return val(data(c2)) = cdr(x);
    747       }
    748       Push(c3, y = cons(car(x), Nil));
    749       while (isCell(x = cdr(x))) {
    750          if (equal(data(c1), car(x))) {
    751             cdr(y) = cdr(x);
    752             drop(c1);
    753             return val(data(c2)) = data(c3);
    754          }
    755          y = cdr(y) = cons(car(x), Nil);
    756       }
    757    }
    758    drop(c1);
    759    return val(data(c2));
    760 }
    761 
    762 // (queue 'var 'any) -> any
    763 any doQueue(any ex) {
    764    any x, y;
    765    cell c1;
    766 
    767    x = cdr(ex),  Push(c1, EVAL(car(x)));
    768    NeedVar(ex,data(c1));
    769    CheckVar(ex,data(c1));
    770    if (isSym(data(c1)))
    771       Touch(ex,data(c1));
    772    x = cdr(x),  x = EVAL(car(x));
    773    if (!isCell(y = val(data(c1))))
    774       val(data(c1)) = cons(x,Nil);
    775    else {
    776       while (isCell(cdr(y)))
    777          y = cdr(y);
    778       cdr(y) = cons(x,Nil);
    779    }
    780    drop(c1);
    781    return x;
    782 }
    783 
    784 // (fifo 'var ['any ..]) -> any
    785 any doFifo(any ex) {
    786    any x, y, z;
    787    cell c1;
    788 
    789    x = cdr(ex),  Push(c1, EVAL(car(x)));
    790    NeedVar(ex,data(c1));
    791    CheckVar(ex,data(c1));
    792    if (isSym(data(c1)))
    793       Touch(ex,data(c1));
    794    if (isCell(x = cdr(x))) {
    795       y = EVAL(car(x));
    796       if (isCell(z = val(data(c1))))
    797          val(data(c1)) = z = cdr(z) = cons(y,cdr(z));
    798       else {
    799          z = val(data(c1)) = cons(y,Nil);
    800          cdr(z) = z;
    801       }
    802       while (isCell(x = cdr(x)))
    803          val(data(c1)) = z = cdr(z) = cons(y = EVAL(car(x)), cdr(z));
    804    }
    805    else if (!isCell(z = val(data(c1))))
    806       y = Nil;
    807    else {
    808       if (z == cdr(z)) {
    809          y = car(z);
    810          val(data(c1)) = Nil;
    811       }
    812       else {
    813          y = cadr(z);
    814          cdr(z) = cddr(z);
    815       }
    816    }
    817    drop(c1);
    818    return y;
    819 }
    820 
    821 any idx(any var, any key, int flg) {
    822    any x, y, z, *p;
    823    int n;
    824 
    825    if (!key) {
    826       cell c1, c2;
    827 
    828       if (!isCell(x = val(var)))
    829          return Nil;
    830       y = Nil;  // Result
    831       Push(c1, x);  // Tree
    832       Push(c2, Nil);  // TOS
    833       for (;;) {
    834          while (isCell(cddr(data(c1))))
    835             z = data(c1),  data(c1) = cddr(z),  cddr(z) = data(c2),  data(c2) = z;
    836          for (;;) {
    837             y = cons(car(data(c1)), y);
    838             if (isCell(cadr(data(c1)))) {
    839                z = data(c1),  data(c1) = cadr(z),  cadr(z) = data(c2),  data(c2) = symPtr(z);
    840                break;
    841             }
    842             for (;;) {
    843                if (isNil(data(c2))) {
    844                   drop(c1);
    845                   return y;
    846                }
    847                if (isCell(data(c2))) {
    848                   z = data(c2),  data(c2) = cddr(z),  cddr(z) = data(c1),  data(c1) = z;
    849                   break;
    850                }
    851                z = cellPtr(data(c2)),  data(c2) = cadr(z),  cadr(z) = data(c1),  data(c1) = z;
    852             }
    853          }
    854       }
    855    }
    856    if (!isCell(x = val(var))) {
    857       if (flg > 0)
    858          val(var) = cons(key,Nil);
    859       return Nil;
    860    }
    861    p = (any*)var;
    862    for (;;) {
    863       if ((n = compare(key, car(x))) == 0) {
    864          if (flg < 0) {
    865             if (!isCell(cadr(x)))
    866                *p = cddr(x);
    867             else if (!isCell(y = cddr(x)))
    868                *p = cadr(x);
    869             else if (!isCell(z = cadr(y)))
    870                car(x) = car(y),  cddr(x) = cddr(y);
    871             else {
    872                while (isCell(cadr(z)))
    873                   z = cadr(y = z);
    874                car(x) = car(z),  cadr(y) = cddr(z);
    875             }
    876          }
    877          return x;
    878       }
    879       if (!isCell(cdr(x))) {
    880          if (flg > 0)
    881             cdr(x) = n < 0? cons(cons(key,Nil), Nil) : cons(Nil, cons(key,Nil));
    882          return Nil;
    883       }
    884       if (n < 0) {
    885          if (!isCell(cadr(x))) {
    886             if (flg > 0)
    887                cadr(x) = cons(key,Nil);
    888             return Nil;
    889          }
    890          x = *(p = &cadr(x));
    891       }
    892       else {
    893          if (!isCell(cddr(x))) {
    894             if (flg > 0)
    895                cddr(x) = cons(key,Nil);
    896             return Nil;
    897          }
    898          x = *(p = &cddr(x));
    899       }
    900    }
    901 }
    902 
    903 // (idx 'var 'any 'flg) -> lst
    904 // (idx 'var 'any) -> lst
    905 // (idx 'var) -> lst
    906 any doIdx(any ex) {
    907    any x;
    908    int flg;
    909    cell c1, c2;
    910 
    911    x = cdr(ex),  Push(c1, EVAL(car(x)));
    912    NeedVar(ex,data(c1));
    913    CheckVar(ex,data(c1));
    914    if (!isCell(x = cdr(x)))
    915       x = idx(data(c1), NULL, 0);
    916    else {
    917       Push(c2, EVAL(car(x)));
    918       if (!isCell(cdr(x)))
    919          flg = 0;
    920       else
    921          flg = isNil(EVAL(cadr(x)))? -1 : +1;
    922       x = idx(data(c1), data(c2), flg);
    923    }
    924    drop(c1);
    925    return x;
    926 }
    927 
    928 // (lup 'lst 'any) -> lst
    929 // (lup 'lst 'any 'any2) -> lst
    930 any doLup(any x) {
    931    int n;
    932    cell c1, c2, c3, c4, c5;
    933 
    934    x = cdr(x),  data(c1) = EVAL(car(x));
    935    if (!isCell(data(c1)))
    936       return data(c1);
    937    Save(c1);
    938    x = cdr(x),  Push(c2, EVAL(car(x)));  // from
    939    if (isCell(x = cdr(x))) {
    940       Push(c3, EVAL(car(x)));  // to
    941       Push(c4, Nil);  // tos
    942       Push(c5, Nil);  // result
    943       for (;;) {
    944          while (isCell(cddr(data(c1))) && car(data(c1)) != T && (!isCell(car(data(c1))) || compare(data(c3), caar(data(c1))) >= 0))
    945             x = data(c1),  data(c1) = cddr(x),  cddr(x) = data(c4),  data(c4) = x;
    946          for (;;) {
    947             if (isCell(car(data(c1))) && compare(data(c2), caar(data(c1))) <= 0) {
    948                if (compare(data(c3), caar(data(c1))) >= 0)
    949                   data(c5) = cons(car(data(c1)), data(c5));
    950                if (isCell(cadr(data(c1)))) {
    951                   x = data(c1),  data(c1) = cadr(x),  cadr(x) = data(c4),  data(c4) = symPtr(x);
    952                   break;
    953                }
    954             }
    955             for (;;) {
    956                if (isNil(data(c4))) {
    957                   drop(c1);
    958                   return data(c5);
    959                }
    960                if (isCell(data(c4))) {
    961                   x = data(c4),  data(c4) = cddr(x),  cddr(x) = data(c1),  data(c1) = x;
    962                   break;
    963                }
    964                else
    965                   x = cellPtr(data(c4)),  data(c4) = cadr(x),  cadr(x) = data(c1),  data(c1) = x;
    966             }
    967          }
    968       }
    969    }
    970    do {
    971       if (car(data(c1)) == T)
    972          data(c1) = cadr(data(c1));
    973       else if (!isCell(car(data(c1))))
    974          data(c1) = cddr(data(c1));
    975       else if (n = compare(data(c2), caar(data(c1))))
    976          data(c1) = n < 0? cadr(data(c1)) : cddr(data(c1));
    977       else {
    978          drop(c1);
    979          return car(data(c1));
    980       }
    981    } while (isCell(data(c1)));
    982    drop(c1);
    983    return Nil;
    984 }
    985 
    986 void put(any x, any key, any val) {
    987    any y, z;
    988 
    989    if (isCell(y = tail1(x))) {
    990       if (isCell(car(y))) {
    991          if (key == cdar(y)) {
    992             if (isNil(val))
    993                Tail(x, cdr(y));
    994             else if (val == T)
    995                car(y) = key;
    996             else
    997                caar(y) = val;
    998             return;
    999          }
   1000       }
   1001       else if (key == car(y)) {
   1002          if (isNil(val))
   1003             Tail(x, cdr(y));
   1004          else if (val != T)
   1005             car(y) = cons(val,key);
   1006          return;
   1007       }
   1008       while (isCell(z = cdr(y))) {
   1009          if (isCell(car(z))) {
   1010             if (key == cdar(z)) {
   1011                if (isNil(val))
   1012                   cdr(y) = cdr(z);
   1013                else {
   1014                   if (val == T)
   1015                      car(z) = key;
   1016                   else
   1017                      caar(z) = val;
   1018                   cdr(y) = cdr(z),  cdr(z) = tail1(x),  Tail(x, z);
   1019                }
   1020                return;
   1021             }
   1022          }
   1023          else if (key == car(z)) {
   1024             if (isNil(val))
   1025                cdr(y) = cdr(z);
   1026             else {
   1027                if (val != T)
   1028                   car(z) = cons(val,key);
   1029                cdr(y) = cdr(z),  cdr(z) = tail1(x),  Tail(x, z);
   1030             }
   1031             return;
   1032          }
   1033          y = z;
   1034       }
   1035    }
   1036    if (!isNil(val))
   1037       Tail(x, cons(val==T? key : cons(val,key), tail1(x)));
   1038 }
   1039 
   1040 any get(any x, any key) {
   1041    any y, z;
   1042 
   1043    if (!isCell(y = tail1(x)))
   1044       return Nil;
   1045    if (!isCell(car(y))) {
   1046       if (key == car(y))
   1047          return T;
   1048    }
   1049    else if (key == cdar(y))
   1050       return caar(y);
   1051    while (isCell(z = cdr(y))) {
   1052       if (!isCell(car(z))) {
   1053          if (key == car(z)) {
   1054             cdr(y) = cdr(z),  cdr(z) = tail1(x),  Tail(x, z);
   1055             return T;
   1056          }
   1057       }
   1058       else if (key == cdar(z)) {
   1059          cdr(y) = cdr(z),  cdr(z) = tail1(x),  Tail(x, z);
   1060          return caar(z);
   1061       }
   1062       y = z;
   1063    }
   1064    return Nil;
   1065 }
   1066 
   1067 any prop(any x, any key) {
   1068    any y, z;
   1069 
   1070    if (isCell(y = tail1(x))) {
   1071       if (!isCell(car(y))) {
   1072          if (key == car(y))
   1073             return key;
   1074       }
   1075       else if (key == cdar(y))
   1076          return car(y);
   1077       while (isCell(z = cdr(y))) {
   1078          if (!isCell(car(z))) {
   1079             if (key == car(z)) {
   1080                cdr(y) = cdr(z),  cdr(z) = tail1(x),  Tail(x, z);
   1081                return key;
   1082             }
   1083          }
   1084          else if (key == cdar(z)) {
   1085             cdr(y) = cdr(z),  cdr(z) = tail1(x),  Tail(x, z);
   1086             return car(z);
   1087          }
   1088          y = z;
   1089       }
   1090    }
   1091    Tail(x, cons(y = cons(Nil,key), tail1(x)));
   1092    return y;
   1093 }
   1094 
   1095 // (put 'sym1|lst ['sym2|cnt ..] 'sym|0 'any) -> any
   1096 any doPut(any ex) {
   1097    any x;
   1098    cell c1, c2, c3;
   1099 
   1100    x = cdr(ex),  Push(c1, EVAL(car(x)));
   1101    x = cdr(x),  Push(c2, EVAL(car(x)));
   1102    while (isCell(cdr(x = cdr(x)))) {
   1103       if (isCell(data(c1)))
   1104          data(c1) = getn(data(c2), data(c1));
   1105       else {
   1106          NeedSym(ex,data(c1));
   1107          Fetch(ex,data(c1));
   1108          data(c1) = isNum(data(c2)) && !unDig(data(c2))? val(data(c1)) : get(data(c1), data(c2));
   1109       }
   1110       data(c2) = EVAL(car(x));
   1111    }
   1112    NeedSym(ex,data(c1));
   1113    Push(c3, EVAL(car(x)));
   1114    if (isNum(data(c2)) && IsZero(data(c2))) {
   1115       Touch(ex,data(c1));
   1116       CheckVar(ex,data(c1));
   1117       val(data(c1)) = x = data(c3);
   1118    }
   1119    else {
   1120       if (!isNil(data(c2)))
   1121          Touch(ex,data(c1));
   1122       put(data(c1), data(c2), x = data(c3));
   1123    }
   1124    drop(c1);
   1125    return x;
   1126 }
   1127 
   1128 // (get 'sym1|lst ['sym2|cnt ..]) -> any
   1129 any doGet(any ex) {
   1130    any x, y;
   1131    cell c1;
   1132 
   1133    x = cdr(ex),  data(c1) = EVAL(car(x));
   1134    if (!isCell(x = cdr(x)))
   1135       return data(c1);
   1136    Save(c1);
   1137    do {
   1138       y = EVAL(car(x));
   1139       if (isCell(data(c1)))
   1140          data(c1) = getn(y, data(c1));
   1141       else {
   1142          NeedSym(ex,data(c1));
   1143          Fetch(ex,data(c1));
   1144          data(c1) = isNum(y) && !unDig(y)? val(data(c1)) : get(data(c1), y);
   1145       }
   1146    } while (isCell(x = cdr(x)));
   1147    return Pop(c1);
   1148 }
   1149 
   1150 // (prop 'sym1|lst ['sym2|cnt ..] 'sym) -> var
   1151 any doProp(any ex) {
   1152    any x;
   1153    cell c1, c2;
   1154 
   1155    x = cdr(ex),  Push(c1, EVAL(car(x)));
   1156    x = cdr(x),  Push(c2, EVAL(car(x)));
   1157    while (isCell(x = cdr(x))) {
   1158       if (isCell(data(c1)))
   1159          data(c1) = getn(data(c2), data(c1));
   1160       else {
   1161          NeedSym(ex,data(c1));
   1162          Fetch(ex,data(c1));
   1163          data(c1) = isNum(data(c2)) && !unDig(data(c2))? val(data(c1)) : get(data(c1), data(c2));
   1164       }
   1165       data(c2) = EVAL(car(x));
   1166    }
   1167    NeedSym(ex,data(c1));
   1168    CheckNil(ex,data(c1));
   1169    Touch(ex,data(c1));
   1170    return prop(Pop(c1), data(c2));
   1171 }
   1172 
   1173 // (; 'sym1|lst [sym2|cnt ..]) -> any
   1174 any doSemicol(any ex) {
   1175    any x;
   1176    cell c1;
   1177 
   1178    x = cdr(ex),  data(c1) = EVAL(car(x));
   1179    if (!isCell(x = cdr(x)))
   1180       return data(c1);
   1181    Save(c1);
   1182    do {
   1183       if (isCell(data(c1)))
   1184          data(c1) = getn(car(x), data(c1));
   1185       else {
   1186          NeedSym(ex,data(c1));
   1187          Fetch(ex,data(c1));
   1188          data(c1) = isNum(car(x)) && !unDig(car(x))? val(data(c1)) : get(data(c1), car(x));
   1189       }
   1190    } while (isCell(x = cdr(x)));
   1191    return Pop(c1);
   1192 }
   1193 
   1194 // (=: sym|0 [sym1|cnt .. sym2|0] 'any) -> any
   1195 any doSetCol(any ex) {
   1196    any x, y, z;
   1197    cell c1;
   1198 
   1199    x = cdr(ex),  y = val(This);
   1200    Fetch(ex,y);
   1201    if (z = car(x),  isCell(cdr(x = cdr(x)))) {
   1202       y = isNum(z) && !unDig(z)? val(y) : get(y,z);
   1203       while (z = car(x),  isCell(cdr(x = cdr(x)))) {
   1204          if (isCell(y))
   1205             y = getn(z,y);
   1206          else {
   1207             NeedSym(ex,y);
   1208             Fetch(ex,y);
   1209             y = isNum(z) && !unDig(z)? val(y) : get(y,z);
   1210          }
   1211       }
   1212    }
   1213    NeedSym(ex,y);
   1214    Push(c1, EVAL(car(x)));
   1215    if (isNum(z) && IsZero(z)) {
   1216       Touch(ex,y);
   1217       CheckVar(ex,y);
   1218       val(y) = x = data(c1);
   1219    }
   1220    else {
   1221       if (!isNil(z))
   1222          Touch(ex,y);
   1223       put(y, z, x = data(c1));
   1224    }
   1225    drop(c1);
   1226    return x;
   1227 }
   1228 
   1229 // (: sym|0 [sym1|cnt ..]) -> any
   1230 any doCol(any ex) {
   1231    any x, y;
   1232 
   1233    x = cdr(ex),  y = val(This);
   1234    Fetch(ex,y);
   1235    y = isNum(car(x)) && !unDig(car(x))? val(y) : get(y, car(x));
   1236    while (isCell(x = cdr(x))) {
   1237       if (isCell(y))
   1238          y = getn(car(x), y);
   1239       else {
   1240          NeedSym(ex,y);
   1241          Fetch(ex,y);
   1242          y = isNum(car(x)) && !unDig(car(x))? val(y) : get(y, car(x));
   1243       }
   1244    }
   1245    return y;
   1246 }
   1247 
   1248 // (:: sym|0 [sym1|cnt .. sym2]) -> var
   1249 any doPropCol(any ex) {
   1250    any x, y;
   1251 
   1252    x = cdr(ex),  y = val(This);
   1253    Fetch(ex,y);
   1254    if (isCell(cdr(x))) {
   1255       y = isNum(car(x)) && !unDig(car(x))? val(y) : get(y, car(x));
   1256       while (isCell(cdr(x = cdr(x)))) {
   1257          if (isCell(y))
   1258             y = getn(car(x), y);
   1259          else {
   1260             NeedSym(ex,y);
   1261             Fetch(ex,y);
   1262             y = isNum(car(x)) && !unDig(car(x))? val(y) : get(y, car(x));
   1263          }
   1264       }
   1265    }
   1266    NeedSym(ex,y);
   1267    CheckNil(ex,y);
   1268    Touch(ex,y);
   1269    return prop(y, car(x));
   1270 }
   1271 
   1272 // (putl 'sym1|lst1 ['sym2|cnt ..] 'lst) -> lst
   1273 any doPutl(any ex) {
   1274    any x;
   1275    cell c1, c2;
   1276 
   1277    x = cdr(ex),  Push(c1, EVAL(car(x)));
   1278    x = cdr(x),  Push(c2, EVAL(car(x)));
   1279    while (isCell(x = cdr(x))) {
   1280       if (isCell(data(c1)))
   1281          data(c1) = getn(data(c2), data(c1));
   1282       else {
   1283          NeedSym(ex,data(c1));
   1284          Fetch(ex,data(c1));
   1285          data(c1) = isNum(data(c2)) && !unDig(data(c2))? val(data(c1)) : get(data(c1), data(c2));
   1286       }
   1287       data(c2) = EVAL(car(x));
   1288    }
   1289    NeedSym(ex,data(c1));
   1290    CheckNil(ex,data(c1));
   1291    Touch(ex,data(c1));
   1292    while (isCell(tail(data(c1))))
   1293       Tail(data(c1), cdr(tail1(data(c1))));
   1294    for (x = data(c2);  isCell(x);  x = cdr(x)) {
   1295       if (!isCell(car(x)))
   1296          Tail(data(c1), cons(car(x), tail1(data(c1))));
   1297       else if (!isNil(caar(x)))
   1298          Tail(data(c1), cons(caar(x)==T? cdar(x) : car(x), tail1(data(c1))));
   1299    }
   1300    drop(c1);
   1301    return data(c2);
   1302 }
   1303 
   1304 // (getl 'sym1|lst1 ['sym2|cnt ..]) -> lst
   1305 any doGetl(any ex) {
   1306    any x, y;
   1307    cell c1, c2;
   1308 
   1309    x = cdr(ex),  Push(c1, EVAL(car(x)));
   1310    while (isCell(x = cdr(x))) {
   1311       y = EVAL(car(x));
   1312       if (isCell(data(c1)))
   1313          data(c1) = getn(y, data(c1));
   1314       else {
   1315          NeedSym(ex,data(c1));
   1316          Fetch(ex,data(c1));
   1317          data(c1) = isNum(y) && !unDig(y)? val(data(c1)) : get(data(c1), y);
   1318       }
   1319    }
   1320    NeedSym(ex,data(c1));
   1321    Fetch(ex,data(c1));
   1322    if (!isCell(x = tail1(data(c1))))
   1323       data(c2) = Nil;
   1324    else {
   1325       Push(c2, y = cons(car(x),Nil));
   1326       while (isCell(x = cdr(x)))
   1327          y = cdr(y) = cons(car(x),Nil);
   1328    }
   1329    drop(c1);
   1330    return data(c2);
   1331 }
   1332 
   1333 static void wipe(any x) {
   1334    any y, z;
   1335 
   1336    for (y = tail1(x); isCell(y); y = cdr(y));
   1337    if (!isNum(y)) {
   1338       val(x) = Nil;
   1339       tail(x) = y;
   1340    }
   1341    else {
   1342       z = numCell(y);
   1343       while (isNum(cdr(z)))
   1344          z = numCell(cdr(z));
   1345       if (isNil(cdr(z)) || cdr(z) == At) {
   1346          val(x) = Nil;
   1347          Tail(x, y);
   1348          cdr(z) = Nil;
   1349       }
   1350    }
   1351 }
   1352 
   1353 // (wipe 'sym|lst) -> sym
   1354 any doWipe(any x) {
   1355    any y;
   1356 
   1357    x = cdr(x);
   1358    if (!isNil(x = EVAL(car(x))))
   1359       if (!isCell(x))
   1360          wipe(x);
   1361       else {
   1362          y = x; do
   1363             wipe(car(y));
   1364          while (isCell(y = cdr(y)));
   1365       }
   1366    return x;
   1367 }
   1368 
   1369 static any meta(any x, any y) {
   1370    any z;
   1371 
   1372    while (isCell(x)) {
   1373       if (isSym(car(x)))
   1374          if (!isNil(z = get(car(x),y)) || !isNil(z = meta(val(car(x)), y)))
   1375             return z;
   1376       x = cdr(x);
   1377    }
   1378    return Nil;
   1379 }
   1380 
   1381 // (meta 'obj|typ 'sym ['sym2|cnt ..]) -> any
   1382 any doMeta(any ex) {
   1383    any x, y;
   1384    cell c1;
   1385 
   1386    x = cdr(ex),  Push(c1, EVAL(car(x)));
   1387    if (isSym(data(c1))) {
   1388       Fetch(ex,data(c1));
   1389       data(c1) = val(data(c1));
   1390    }
   1391    x = cdr(x),  y = EVAL(car(x));
   1392    data(c1) = meta(data(c1), y);
   1393    while (isCell(x = cdr(x))) {
   1394       y = EVAL(car(x));
   1395       if (isCell(data(c1)))
   1396          data(c1) = getn(y, data(c1));
   1397       else {
   1398          NeedSym(ex,data(c1));
   1399          Fetch(ex,data(c1));
   1400          data(c1) = isNum(y) && !unDig(y)? val(data(c1)) : get(data(c1), y);
   1401       }
   1402    }
   1403    return Pop(c1);
   1404 }
   1405 
   1406 /*** Case mappings from the GNU Kaffe Project ***/
   1407 #define CHAR_UPPERCASE  1
   1408 #define CHAR_LOWERCASE  2
   1409 #define CHAR_LETTER     62
   1410 #define CHAR_DIGIT      512
   1411 
   1412 static uint16_t Blocks[] = {
   1413    0x1C2, 0x1C2, 0x1C1, 0x12C, 0x12B, 0x1A0, 0x1F8, 0x2DC, 0x25F, 0x2EE, 0x215, 0x346, 0x2DC, 0x326, 0x2BC, 0x216,
   1414    0x15F, 0x2D4, 0x376, 0x376, 0x376, 0x369, 0xFE8F, 0x344, 0xFF85, 0xFF65, 0xFDB5, 0xFDA1, 0x1B, 0x2C4, 0x1C, 0x47,
   1415    0xFEA8, 0xFF8C, 0x235, 0xFEFF, 0x1A, 0xFEBF, 0x26, 0xFB20, 0xFE28, 0x113, 0x104, 0xFB61, 0xFB5A, 0x10B, 0x109, 0xFE,
   1416    0xFF08, 0x229, 0x25E, 0x1C7, 0x1FC, 0x1DC, 0xFC46, 0x229, 0xFE27, 0xFB55, 0x169, 0xFBC8, 0xFC, 0x103, 0xFB68, 0xFB48,
   1417    0xFB28, 0xFB08, 0xFAE8, 0xFAC8, 0xFAA8, 0xFA88, 0xFA68, 0xFA48, 0x65, 0x50, 0xAB, 0x139, 0xFE0E, 0x63, 0x155, 0x1A8,
   1418    0xF669, 0x129, 0x128, 0xF91F, 0xFE56, 0x108, 0x107, 0xFAC0, 0xFC8E, 0xFEAD, 0xC6, 0xFCA7, 0xFB95, 0xF47D, 0x9F, 0xFB17,
   1419    0xFE20, 0xFD28, 0xFB2F, 0x3B, 0xF3B9, 0xFE57, 0xFCCE, 0xFFBB, 0xF339, 0xFA98, 0xFF8B, 0xFF3B, 0xFA54, 0xF7E3, 0xFF2B, 0xFAD7,
   1420    0xFB69, 0xFC3A, 0xFEE5, 0xF4C8, 0xFCB0, 0xFA88, 0xFDBF, 0xF448, 0xFE45, 0xFCC7, 0xFE4F, 0xF7F1, 0xF715, 0xF2E8, 0xFD9F, 0xF348,
   1421    0xF96A, 0xFC02, 0xFD97, 0xF2C8, 0xF2A8, 0xF4B9, 0xF4B3, 0xEF6B, 0xF86A, 0xF84A, 0xFC58, 0xF80A, 0xF7EA, 0xFC0F, 0xF7AA, 0xEE9C,
   1422    0xFB90, 0xF74A, 0xF7FA, 0xF70A, 0xF7CA, 0xF792, 0xF471, 0xF4D2, 0xF732, 0xF64A, 0xF401, 0xF64D, 0xEFA8, 0xF5CA, 0xF5AA, 0xECA1,
   1423    0xF569, 0xF54A, 0xF52A, 0xF50A, 0xF4EA, 0xF4CA, 0xF4AA, 0xF48A, 0xF46A, 0xF44A, 0xF42A, 0xF40A, 0xF3EA, 0xF3CA, 0xF3AA, 0xF38A,
   1424    0xF36A, 0xF34A, 0xF32A, 0xF289, 0xF777, 0xF2CA, 0xF2AA, 0xF737, 0xEC28, 0xEC08, 0xEBE8, 0xEBC8, 0xF1EA, 0xF4A2, 0xF545, 0xEDC6,
   1425    0xF2D7, 0xF14A, 0xE8ED, 0xE81E, 0xF0EA, 0xF597, 0xEA68, 0xEA48, 0xEA28, 0xEA08, 0xE9E8, 0xE9C8, 0xE9A8, 0xE988, 0xE968, 0xE948,
   1426    0xE928, 0xE908, 0xE8E8, 0xE8C8, 0xE8A8, 0xE888, 0xE868, 0xE848, 0xE828, 0xE808, 0xE7E8, 0xE7C8, 0xE7A8, 0xE788, 0xE768, 0xE748,
   1427    0xE728, 0xE708, 0xE6E8, 0xE6C8, 0xE6A8, 0xE688, 0xE668, 0xE648, 0xE628, 0xE608, 0xE5E8, 0xE5C8, 0xE5A8, 0xE588, 0xE568, 0xE548,
   1428    0xE55F, 0xE53F, 0xE51F, 0xE4FF, 0xEFD7, 0xE4BF, 0xE49F, 0xE485, 0xEF87, 0xEF57, 0xEF57, 0xEF57, 0xEF57, 0xEF47, 0xE1AD, 0xEF46,
   1429    0xEF46, 0xEF46, 0xE1E0, 0xE3DD, 0xEF06, 0xE9D9, 0xEBEB, 0xE244, 0xEED4, 0xEF65, 0xE1F5, 0xEF45, 0xEEE9, 0xEF7C, 0xEE74, 0xEF70,
   1430    0xEF7D, 0xEF78, 0xEE91, 0xEFD3, 0xEE7D, 0xEE25, 0xEE27, 0xEF65, 0xEFDD, 0xEE96, 0xEFD3, 0xEFE1, 0xEF69, 0xDF88, 0xDF68, 0xDF48,
   1431    0xED2B, 0xED3D, 0xED19, 0xEF1C, 0xEF08, 0xED47, 0xED3D, 0xED33, 0xEC2B, 0xEC0B, 0xEBEB, 0xEBCB, 0xEBCE, 0xEA7C, 0xEB69, 0xEB6C,
   1432    0xE9B6, 0xEB0B, 0xEAEB, 0xE9E9, 0xDCA8, 0xDC88, 0xDC68, 0xDC48, 0xE910, 0xEA23, 0xEB58, 0xEB4F, 0xEB45, 0xEAE5, 0xDB68, 0xDB48,
   1433    0xE92B, 0xE90B, 0xE8EB, 0xE8CB, 0xE8AB, 0xE88B, 0xE86B, 0xE84B, 0xDA28, 0xDA08, 0xD9E8, 0xD9C8, 0xD9A8, 0xD988, 0xD968, 0xD948,
   1434    0xD928, 0xD908, 0xD8E8, 0xD8C8, 0xD8A8, 0xD888, 0xD868, 0xD848, 0xD828, 0xD808, 0xD7E8, 0xD7C8, 0xD7A8, 0xD788, 0xD768, 0xD748,
   1435    0xD728, 0xD708, 0xD6E8, 0xD6C8, 0xD6A8, 0xD688, 0xD668, 0xD648, 0xD628, 0xD608, 0xD5E8, 0xD5C8, 0xD5A8, 0xD588, 0xD568, 0xD548,
   1436    0xD528, 0xD508, 0xD4E8, 0xD4C8, 0xE2B1, 0xE28B, 0xE26B, 0xE270, 0xE22B, 0xE20B, 0xE1EB, 0xE1CB, 0xE1AB, 0xE18B, 0xE18E, 0xDD8F,
   1437    0xE3A8, 0xDFD3, 0xD929, 0xD90A, 0xE348, 0xD8C9, 0xD8AA, 0xDCD7, 0xDCB2, 0xD681, 0xD82A, 0xD80A, 0xE268, 0xCEDE, 0xD168, 0xD148,
   1438    0xE116, 0xE0E9, 0xE1CB, 0xE0B7, 0xE0B7, 0xE15E, 0xDF17, 0xE034, 0xE013, 0xDFF3, 0xDFD3, 0xDE6C, 0xDF93, 0xDF73, 0xDF55, 0xDF34,
   1439    0xD56A, 0xD54A, 0xD52A, 0xD50A, 0xD4EA, 0xD4CA, 0xD4AA, 0xD48A, 0xD46A, 0xD44A, 0xD42A, 0xD40A, 0xD3EA, 0xD3CA, 0xD3AA, 0xD38A,
   1440    0xD36A, 0xD34A, 0xD32A, 0xD30A, 0xD2EA, 0xD2CA, 0xD2AA, 0xD28A, 0xD26A, 0xD24A, 0xD22A, 0xD20A, 0xD1EA, 0xD1CA, 0xD1AA, 0xD18A,
   1441    0xD16A, 0xD14A, 0xD12A, 0xD10A, 0xD0EA, 0xD0CA, 0xD0AA, 0xD08A, 0xD06A, 0xD04A, 0xD02A, 0xD00A, 0xCFEA, 0xCFCA, 0xCFAA, 0xCF8A,
   1442    0xCF6A, 0xCF4A, 0xCF2A, 0xCF0A, 0xCEEA, 0xCECA, 0xCEAA, 0xCE8A, 0xCE6A, 0xCE4A, 0xCE2A, 0xCE0A, 0xCDEA, 0xCDCA, 0xCDAA, 0xCD8A,
   1443    0xCD6A, 0xCD4A, 0xCD2A, 0xCD0A, 0xCCEA, 0xCCCA, 0xCCAA, 0xCC8A, 0xCC6A, 0xCC4A, 0xCC2A, 0xCC0A, 0xCBEA, 0xCBCA, 0xCBAA, 0xCB8A,
   1444    0xCB6A, 0xCB4A, 0xCB2A, 0xCB0A, 0xCAEA, 0xCACA, 0xCAAA, 0xCA8A, 0xCA6A, 0xCA4A, 0xCA2A, 0xCA0A, 0xC9EA, 0xC9CA, 0xC9AA, 0xC98A,
   1445    0xC96A, 0xC94A, 0xC92A, 0xC90A, 0xC8EA, 0xC8CA, 0xC8AA, 0xC88A, 0xC86A, 0xC84A, 0xC82A, 0xC80A, 0xC7EA, 0xC7CA, 0xC7AA, 0xC78A,
   1446    0xC76A, 0xC74A, 0xC72A, 0xC70A, 0xC6EA, 0xC6CA, 0xC6AA, 0xC68A, 0xC66A, 0xC64A, 0xC62A, 0xC60A, 0xC5EA, 0xC5CA, 0xC5AA, 0xC58A,
   1447    0xC56A, 0xC54A, 0xC52A, 0xC50A, 0xC4EA, 0xC4CA, 0xC4AA, 0xC48A, 0xC46A, 0xC44A, 0xC42A, 0xC40A, 0xC3EA, 0xC3CA, 0xC3AA, 0xC38A,
   1448    0xC36A, 0xC34A, 0xC32A, 0xC30A, 0xC2EA, 0xC2CA, 0xC2AA, 0xC28A, 0xC26A, 0xC24A, 0xC22A, 0xC20A, 0xC1EA, 0xC1CA, 0xC1AA, 0xC18A,
   1449    0xC16A, 0xC14A, 0xC12A, 0xC10A, 0xC0EA, 0xC0CA, 0xC0AA, 0xC08A, 0xC06A, 0xC04A, 0xC02A, 0xC00A, 0xBFEA, 0xBFCA, 0xBFAA, 0xBF8A,
   1450    0xBF6A, 0xBF4A, 0xBF2A, 0xBF0A, 0xBEEA, 0xBECA, 0xBEAA, 0xBE8A, 0xBE6A, 0xBE4A, 0xBE2A, 0xBE0A, 0xBDEA, 0xBDCA, 0xBDAA, 0xBD8A,
   1451    0xBD6A, 0xBD4A, 0xBD2A, 0xBD0A, 0xBCEA, 0xBCCA, 0xBCAA, 0xBC8A, 0xBC6A, 0xBC4A, 0xBC2A, 0xBC0A, 0xBBEA, 0xB2E0, 0xB568, 0xB548,
   1452    0xBB6A, 0xBB4A, 0xBB2A, 0xBB0A, 0xBAEA, 0xBACA, 0xBAAA, 0xBA8A, 0xBA6A, 0xBA4A, 0xBA2A, 0xBA0A, 0xB9EA, 0xB9CA, 0xB9AA, 0xB98A,
   1453    0xB96A, 0xB94A, 0xB92A, 0xB90A, 0xB8EA, 0xB8CA, 0xB8AA, 0xB88A, 0xB86A, 0xB84A, 0xB82A, 0xB80A, 0xB7EA, 0xB7CA, 0xB7AA, 0xB78A,
   1454    0xB76A, 0xB74A, 0xB72A, 0xB70A, 0xB6EA, 0xB6CA, 0xB6AA, 0xB68A, 0xB66A, 0xB64A, 0xB62A, 0xB60A, 0xB5EA, 0xB5CA, 0xB5AA, 0xB58A,
   1455    0xB56A, 0xB54A, 0xB52A, 0xB50A, 0xB4EA, 0xB4CA, 0xB4AA, 0xB48A, 0xB46A, 0xB44A, 0xB42A, 0xB40A, 0xB3EA, 0xB3CA, 0xB3AA, 0xB38A,
   1456    0xB36A, 0xB34A, 0xB32A, 0xB30A, 0xB2EA, 0xB2CA, 0xB2AA, 0xB28A, 0xB26A, 0xB24A, 0xB22A, 0xB20A, 0xB1EA, 0xB1CA, 0xB1AA, 0xB18A,
   1457    0xB16A, 0xB14A, 0xB12A, 0xB10A, 0xB0EA, 0xB0CA, 0xB0AA, 0xB08A, 0xB06A, 0xB04A, 0xB02A, 0xB00A, 0xAFEA, 0xAFCA, 0xAFAA, 0xAF8A,
   1458    0xAF6A, 0xAF4A, 0xAF2A, 0xAF0A, 0xAEEA, 0xAECA, 0xAEAA, 0xAE8A, 0xAE6A, 0xAE4A, 0xAE2A, 0xAE0A, 0xADEA, 0xADCA, 0xADAA, 0xAD8A,
   1459    0xAD6A, 0xAD4A, 0xAD2A, 0xAD0A, 0xACEA, 0xACCA, 0xACAA, 0xAC8A, 0xAC6A, 0xAC4A, 0xAC2A, 0xAC0A, 0xABEA, 0xABCA, 0xABAA, 0xAB8A,
   1460    0xAB6A, 0xAB4A, 0xAB2A, 0xAB0A, 0xAAEA, 0xAACA, 0xAAAA, 0xAA8A, 0xAA6A, 0xAA4A, 0xAA2A, 0xAA0A, 0xA9EA, 0xA9CA, 0xA9AA, 0xA98A,
   1461    0xA96A, 0xA94A, 0xA92A, 0xA90A, 0xA8EA, 0xA8CA, 0xA8AA, 0xA88A, 0xA86A, 0xA84A, 0xA82A, 0xA80A, 0xA7EA, 0xA7CA, 0xA7AA, 0xA78A,
   1462    0xA76A, 0xA74A, 0xA72A, 0xA70A, 0xA6EA, 0xA6CA, 0xA6AA, 0xA68A, 0xA66A, 0xA64A, 0xA62A, 0xA60A, 0xA5EA, 0xA5CA, 0xA5AA, 0xA58A,
   1463    0xA56A, 0xA54A, 0xA52A, 0xA50A, 0xA4EA, 0xA4CA, 0xA4AA, 0xA48A, 0xA46A, 0xA44A, 0xA42A, 0xA40A, 0xA3EA, 0xA3CA, 0xA3AA, 0xA38A,
   1464    0xA36A, 0xA34A, 0xA32A, 0xA30A, 0xA2EA, 0xA2CA, 0xA2AA, 0xA28A, 0xA26A, 0xA24A, 0xA22A, 0xA20A, 0xA1EA, 0xA1CA, 0xA1AA, 0xA18A,
   1465    0xA16A, 0xA14A, 0xA12A, 0xA10A, 0xA0EA, 0xA0CA, 0xA0AA, 0xA08A, 0xA06A, 0xA04A, 0xA02A, 0xA00A, 0x9FEA, 0x9FCA, 0x9FAA, 0x9F8A,
   1466    0x9F6A, 0x9F4A, 0x9F2A, 0x9F0A, 0x9EEA, 0x9ECA, 0x9EAA, 0x9E8A, 0x9E6A, 0x9E4A, 0x9E2A, 0x9E0A, 0x9DEA, 0x9DCA, 0x9DAA, 0x9D8A,
   1467    0x9D6A, 0x9D4A, 0x9D2A, 0x9D0A, 0x9CEA, 0x9CCA, 0x9CAA, 0x9C8A, 0x9C6A, 0x9C4A, 0x9C2A, 0x9C0A, 0x9BEA, 0x9BCA, 0x9BAA, 0x9B8A,
   1468    0x9B6A, 0x9B4A, 0x9B2A, 0x9B0A, 0x9AEA, 0x9ACA, 0x9AAA, 0x9A8A, 0x9A6A, 0x9A4A, 0x9A2A, 0x9A0A, 0x99EA, 0x99CA, 0x99AA, 0x998A,
   1469    0x996A, 0x994A, 0x992A, 0x990A, 0x98EA, 0x98CA, 0x98AA, 0x988A, 0x986A, 0x984A, 0x982A, 0x980A, 0x97EA, 0x97CA, 0x97AA, 0x978A,
   1470    0x976A, 0x974A, 0x972A, 0x970A, 0x96EA, 0x96CA, 0x96AA, 0x968A, 0x966A, 0x964A, 0x962A, 0x960A, 0x95EA, 0x95CA, 0x95AA, 0x958A,
   1471    0x956A, 0x954A, 0x952A, 0x950A, 0x94EA, 0x94CA, 0x94AA, 0x948A, 0x946A, 0x944A, 0x942A, 0x940A, 0x93EA, 0x93CA, 0x93AA, 0x938A,
   1472    0x936A, 0x934A, 0x932A, 0x930A, 0x92EA, 0x92CA, 0x92AA, 0x928A, 0x926A, 0x924A, 0x922A, 0x920A, 0x91EA, 0x91CA, 0x91AA, 0x918A,
   1473    0x916A, 0x914A, 0x912A, 0x910A, 0x90EA, 0x90CA, 0x90AA, 0x908A, 0x906A, 0x904A, 0x902A, 0x900A, 0x8FEA, 0x8FCA, 0x8FAA, 0x8F8A,
   1474    0x8F6A, 0x8F4A, 0x8F2A, 0x8F0A, 0x8EEA, 0x8ECA, 0x8EAA, 0x8E8A, 0x8E6A, 0x8E4A, 0x8E2A, 0x8E0A, 0x8DEA, 0x8DCA, 0x8DAA, 0x8D8A,
   1475    0x8D6A, 0x8D4A, 0x8D2A, 0x8D0A, 0x8CEA, 0x8CCA, 0x8CAA, 0x8C8A, 0x8C6A, 0x8C4A, 0x8C2A, 0x8C0A, 0x8BEA, 0x8BCA, 0x8BAA, 0x8B8A,
   1476    0x8B6A, 0x8B4A, 0x8B2A, 0x8B0A, 0x8AEA, 0x8ACA, 0x8AAA, 0x8A8A, 0x8A6A, 0x8A4A, 0x8A2A, 0x8A0A, 0x89EA, 0x89CA, 0x89AA, 0x898A,
   1477    0x896A, 0x894A, 0x892A, 0x890A, 0x88EA, 0x88CA, 0x88AA, 0x888A, 0x886A, 0x884A, 0x882A, 0x880A, 0x87EA, 0x87CA, 0x87AA, 0x878A,
   1478    0x876A, 0x874A, 0x872A, 0x870A, 0x86EA, 0x86CA, 0x86AA, 0x868A, 0x866A, 0x864A, 0x862A, 0x860A, 0x85EA, 0x85CA, 0x85AA, 0x858A,
   1479    0x856A, 0x854A, 0x852A, 0x850A, 0x84EA, 0x84CA, 0x84AA, 0x848A, 0x846A, 0x844A, 0x842A, 0x840A, 0x83EA, 0x83CA, 0x83AA, 0x838A,
   1480    0x836A, 0x834A, 0x832A, 0x830A, 0x82EA, 0x82CA, 0x82AA, 0x828A, 0x826A, 0x824A, 0x822A, 0x820A, 0x81EA, 0x81CA, 0x81AA, 0x818A,
   1481    0x816A, 0x814A, 0x812A, 0x810A, 0x80EA, 0x80CA, 0x80AA, 0x808A, 0x806A, 0x804A, 0x802A, 0x800A, 0x7FEA, 0x7FCA, 0x7FAA, 0x7F8A,
   1482    0x7F6A, 0x7F4A, 0x7F2A, 0x7F0A, 0x7EEA, 0x7ECA, 0x7EAA, 0x7E8A, 0x7E6A, 0x7E4A, 0x7E2A, 0x7E0A, 0x7DEA, 0x7DCA, 0x7DAA, 0x7D8A,
   1483    0x7D6A, 0x7D4A, 0x7D2A, 0x7D0A, 0x7CEA, 0x7CCA, 0x7CAA, 0x7C8A, 0x7C6A, 0x7C4A, 0x7C2A, 0x7C0A, 0x7BEA, 0x7BCA, 0x7BAA, 0x7B8A,
   1484    0x7B6A, 0x7B4A, 0x7B2A, 0x7B0A, 0x7AEA, 0x7ACA, 0x7AAA, 0x7A8A, 0x7A6A, 0x7A4A, 0x7A2A, 0x7A0A, 0x79EA, 0x79CA, 0x79AA, 0x798A,
   1485    0x796A, 0x794A, 0x792A, 0x790A, 0x78EA, 0x78CA, 0x78AA, 0x788A, 0x786A, 0x784A, 0x782A, 0x780A, 0x77EA, 0x77CA, 0x77AA, 0x778A,
   1486    0x776A, 0x774A, 0x772A, 0x770A, 0x76EA, 0x76CA, 0x76AA, 0x768A, 0x766A, 0x764A, 0x762A, 0x760A, 0x75EA, 0x75CA, 0x75AA, 0x758A,
   1487    0x756A, 0x754A, 0x752A, 0x750A, 0x74EA, 0x74CA, 0x74AA, 0x748A, 0x746A, 0x744A, 0x742A, 0x740A, 0x73EA, 0x73CA, 0x73AA, 0x738A,
   1488    0x736A, 0x734A, 0x732A, 0x730A, 0x72EA, 0x72CA, 0x72AA, 0x728A, 0x726A, 0x724A, 0x722A, 0x720A, 0x71EA, 0x71CA, 0x71AA, 0x718A,
   1489    0x716A, 0x714A, 0x712A, 0x710A, 0x70EA, 0x70CA, 0x70AA, 0x708A, 0x706A, 0x704A, 0x702A, 0x700A, 0x6FEA, 0x6FCA, 0x6FAA, 0x6F8A,
   1490    0x6F6A, 0x6F4A, 0x6F2A, 0x6F0A, 0x6EEA, 0x6ECA, 0x6EAA, 0x6E8A, 0x6E6A, 0x6E4A, 0x6E2A, 0x6E0A, 0x6DEA, 0x6DCA, 0x6DAA, 0x6D8A,
   1491    0x6D6A, 0x6D4A, 0x6D2A, 0x6D0A, 0x6CEA, 0x6CCA, 0x6CAA, 0x6C8A, 0x6C6A, 0x6C4A, 0x6C2A, 0x6C0A, 0x6BEA, 0x6BCA, 0x6BAA, 0x6B8A,
   1492    0x6B6A, 0x6B4A, 0x6B2A, 0x6B0A, 0x6AEA, 0x6ACA, 0x6AAA, 0x6A8A, 0x6A6A, 0x6A4A, 0x6A2A, 0x6A0A, 0x69EA, 0x60F0, 0x6368, 0x6348,
   1493    0x696A, 0x694A, 0x692A, 0x690A, 0x68EA, 0x68CA, 0x68AA, 0x688A, 0x686A, 0x684A, 0x682A, 0x680A, 0x67EA, 0x67CA, 0x67AA, 0x678A,
   1494    0x676A, 0x674A, 0x672A, 0x670A, 0x66EA, 0x66CA, 0x66AA, 0x668A, 0x666A, 0x664A, 0x662A, 0x660A, 0x65EA, 0x65CA, 0x65AA, 0x658A,
   1495    0x656A, 0x654A, 0x652A, 0x650A, 0x6B26, 0x6DE1, 0x6E9C, 0x5E48, 0x5E28, 0x5E08, 0x5DE8, 0x5DC8, 0x5DA8, 0x5D88, 0x5D68, 0x5D48,
   1496    0x5D28, 0x5D08, 0x5CE8, 0x5CC8, 0x5CA8, 0x5C88, 0x5C68, 0x5C48, 0x5C28, 0x5C08, 0x5BE8, 0x5BC8, 0x5BA8, 0x5B88, 0x5B68, 0x5B48,
   1497    0x5B28, 0x5B08, 0x5AE8, 0x5AC8, 0x5AA8, 0x5A88, 0x5A68, 0x5A48, 0x5A28, 0x5A08, 0x59E8, 0x59C8, 0x59A8, 0x5988, 0x5968, 0x5948,
   1498    0x5928, 0x5908, 0x58E8, 0x58C8, 0x58A8, 0x5888, 0x5868, 0x5848, 0x5828, 0x5808, 0x57E8, 0x57C8, 0x57A8, 0x5788, 0x5768, 0x5748,
   1499    0x5D6A, 0x5D4A, 0x5D2A, 0x5D0A, 0x5CEA, 0x5CCA, 0x5CAA, 0x5C8A, 0x5C6A, 0x5C4A, 0x5C2A, 0x5C0A, 0x5BEA, 0x5BCA, 0x5BAA, 0x5B8A,
   1500    0x5B6A, 0x5B4A, 0x5B2A, 0x5B0A, 0x5AEA, 0x5ACA, 0x5AAA, 0x5A8A, 0x5A6A, 0x5A4A, 0x5A2A, 0x5A0A, 0x59EA, 0x59CA, 0x59AA, 0x598A,
   1501    0x596A, 0x594A, 0x592A, 0x590A, 0x58EA, 0x58CA, 0x58AA, 0x588A, 0x586A, 0x584A, 0x582A, 0x580A, 0x57EA, 0x57CA, 0x57AA, 0x578A,
   1502    0x576A, 0x574A, 0x572A, 0x570A, 0x56EA, 0x56CA, 0x56AA, 0x568A, 0x566A, 0x564A, 0x562A, 0x560A, 0x55EA, 0x55CA, 0x55AA, 0x558A,
   1503    0x556A, 0x554A, 0x552A, 0x550A, 0x54EA, 0x54CA, 0x54AA, 0x548A, 0x546A, 0x544A, 0x542A, 0x540A, 0x53EA, 0x53CA, 0x53AA, 0x538A,
   1504    0x536A, 0x534A, 0x532A, 0x530A, 0x52EA, 0x52CA, 0x52AA, 0x528A, 0x526A, 0x524A, 0x522A, 0x520A, 0x51EA, 0x51CA, 0x51AA, 0x518A,
   1505    0x516A, 0x514A, 0x512A, 0x510A, 0x50EA, 0x50CA, 0x50AA, 0x508A, 0x506A, 0x504A, 0x502A, 0x500A, 0x4FEA, 0x4FCA, 0x4FAA, 0x4F8A,
   1506    0x4F6A, 0x4F4A, 0x4F2A, 0x4F0A, 0x4EEA, 0x4ECA, 0x4EAA, 0x4E8A, 0x4E6A, 0x4E4A, 0x4E2A, 0x4E0A, 0x4DEA, 0x4DCA, 0x4DAA, 0x4D8A,
   1507    0x4D6A, 0x4D4A, 0x4D2A, 0x4D0A, 0x4CEA, 0x4CCA, 0x4CAA, 0x4C8A, 0x4C6A, 0x4C4A, 0x4C2A, 0x4C0A, 0x4BEA, 0x4BCA, 0x4BAA, 0x4B8A,
   1508    0x4B6A, 0x4B4A, 0x4B2A, 0x4B0A, 0x4AEA, 0x4ACA, 0x4AAA, 0x4A8A, 0x4A6A, 0x4A4A, 0x4A2A, 0x4A0A, 0x49EA, 0x49CA, 0x49AA, 0x498A,
   1509    0x496A, 0x494A, 0x492A, 0x490A, 0x48EA, 0x48CA, 0x48AA, 0x488A, 0x486A, 0x484A, 0x482A, 0x480A, 0x47EA, 0x47CA, 0x47AA, 0x478A,
   1510    0x476A, 0x474A, 0x472A, 0x470A, 0x46EA, 0x46CA, 0x46AA, 0x468A, 0x466A, 0x464A, 0x462A, 0x460A, 0x45EA, 0x45CA, 0x45AA, 0x458A,
   1511    0x456A, 0x454A, 0x452A, 0x450A, 0x44EA, 0x44CA, 0x44AA, 0x448A, 0x446A, 0x444A, 0x442A, 0x440A, 0x43EA, 0x43CA, 0x43AA, 0x438A,
   1512    0x436A, 0x434A, 0x432A, 0x430A, 0x42EA, 0x42CA, 0x42AA, 0x428A, 0x426A, 0x424A, 0x422A, 0x420A, 0x41EA, 0x41CA, 0x41AA, 0x418A,
   1513    0x416A, 0x414A, 0x412A, 0x410A, 0x40EA, 0x40CA, 0x40AA, 0x408A, 0x406A, 0x404A, 0x402A, 0x400A, 0x3FEA, 0x3FCA, 0x3FAA, 0x3F8A,
   1514    0x3F6A, 0x3F4A, 0x3F2A, 0x3F0A, 0x3EEA, 0x3ECA, 0x3EAA, 0x3E8A, 0x3E6A, 0x3E4A, 0x3E2A, 0x3E0A, 0x3DEA, 0x3DCA, 0x3DAA, 0x3D8A,
   1515    0x3D6A, 0x3D4A, 0x3D2A, 0x3D0A, 0x3CEA, 0x3CCA, 0x3CAA, 0x3C8A, 0x3C6A, 0x3C4A, 0x3C2A, 0x3C0A, 0x3BEA, 0x3BCA, 0x3BAA, 0x3B8A,
   1516    0x3B6A, 0x3B4A, 0x3B2A, 0x3B0A, 0x3AEA, 0x3ACA, 0x3AAA, 0x3A8A, 0x3A6A, 0x3A4A, 0x3A2A, 0x3A0A, 0x39EA, 0x39CA, 0x39AA, 0x398A,
   1517    0x396A, 0x394A, 0x392A, 0x390A, 0x38EA, 0x38CA, 0x38AA, 0x388A, 0x386A, 0x384A, 0x382A, 0x380A, 0x37EA, 0x37CA, 0x37AA, 0x378A,
   1518    0x376A, 0x374A, 0x372A, 0x370A, 0x36EA, 0x36CA, 0x36AA, 0x368A, 0x366A, 0x364A, 0x362A, 0x360A, 0x35EA, 0x35CA, 0x35AA, 0x358A,
   1519    0x356A, 0x354A, 0x352A, 0x350A, 0x34EA, 0x34CA, 0x34AA, 0x348A, 0x346A, 0x344A, 0x342A, 0x340A, 0x33EA, 0x33CA, 0x33AA, 0x338A,
   1520    0x336A, 0x334A, 0x332A, 0x330A, 0x32EA, 0x32CA, 0x32AA, 0x328A, 0x326A, 0x324A, 0x322A, 0x320A, 0x31EA, 0x28F2, 0x2B68, 0x2B48,
   1521    0x3C2B, 0x3C0B, 0x3BEB, 0x3BCB, 0x3BAB, 0x3B8B, 0x3B6B, 0x3B4B, 0x3B2B, 0x3B0B, 0x3AEB, 0x3ACB, 0x3AAB, 0x3A8B, 0x3A6B, 0x3A4B,
   1522    0x3A2B, 0x3A0B, 0x39EB, 0x39CB, 0x39AB, 0x398B, 0x396B, 0x394B, 0x392B, 0x390B, 0x38EB, 0x38CB, 0x38AB, 0x388B, 0x386B, 0x384B,
   1523    0x382B, 0x380B, 0x37EB, 0x37CB, 0x37AB, 0x378B, 0x376B, 0x374B, 0x372B, 0x370B, 0x36EB, 0x36CB, 0x36AB, 0x368B, 0x366B, 0x364B,
   1524    0x362B, 0x360B, 0x35EB, 0x35CB, 0x35AB, 0x358B, 0x356B, 0x354B, 0x352B, 0x350B, 0x34EB, 0x34CB, 0x34AB, 0x348B, 0x346B, 0x344B,
   1525    0x344B, 0x342B, 0x340B, 0x33EB, 0x33CB, 0x33AB, 0x338B, 0x336B, 0x334B, 0x332B, 0x330B, 0x32EB, 0x32CB, 0x32AB, 0x328B, 0x326B,
   1526    0x324B, 0x322B, 0x320B, 0x31EB, 0x31CB, 0x31AB, 0x318B, 0x316B, 0x314B, 0x312B, 0x310B, 0x30EB, 0x30CB, 0x30AB, 0x308B, 0x306B,
   1527    0x304B, 0x302B, 0x300B, 0x2FEB, 0x2FCB, 0x2FAB, 0x2F8B, 0x2F6B, 0x2F4B, 0x2F2B, 0x2F0B, 0x2EEB, 0x2ECB, 0x2EAB, 0x2E8B, 0x2E6B,
   1528    0x2E4B, 0x2E2B, 0x2E0B, 0x2DEB, 0x2DCB, 0x2DAB, 0x2D8B, 0x2D6B, 0x2D4B, 0x2D2B, 0x2D0B, 0x2CEB, 0x2CCB, 0x2CAB, 0x2C8B, 0x2C6B,
   1529    0x2C4B, 0x2C2B, 0x2C0B, 0x2BEB, 0x2BCB, 0x2BAB, 0x2B8B, 0x2B6B, 0x2B4B, 0x2B2B, 0x2B0B, 0x2AEB, 0x2ACB, 0x2AAB, 0x2A8B, 0x2A6B,
   1530    0x2A4B, 0x2A2B, 0x2A0B, 0x29EB, 0x29CB, 0x29AB, 0x298B, 0x296B, 0x294B, 0x292B, 0x290B, 0x28EB, 0x28CB, 0x28AB, 0x288B, 0x286B,
   1531    0x284B, 0x282B, 0x280B, 0x27EB, 0x27CB, 0x27AB, 0x278B, 0x276B, 0x274B, 0x272B, 0x270B, 0x26EB, 0x26CB, 0x26AB, 0x268B, 0x266B,
   1532    0x264B, 0x262B, 0x260B, 0x25EB, 0x25CB, 0x25AB, 0x258B, 0x256B, 0x254B, 0x252B, 0x250B, 0x24EB, 0x24CB, 0x24AB, 0x248B, 0x246B,
   1533    0x244B, 0x242B, 0x240B, 0x23EB, 0x23CB, 0x23AB, 0x238B, 0x236B, 0x234B, 0x232B, 0x230B, 0x22EB, 0x22CB, 0x22AB, 0x228B, 0x226B,
   1534    0x224B, 0x222B, 0x220B, 0x21EB, 0x21CB, 0x21AB, 0x218B, 0x216B, 0x214B, 0x212B, 0x210B, 0x20EB, 0x20CB, 0x20AB, 0x208B, 0x206B,
   1535    0x204B, 0x202B, 0x200B, 0x1FEB, 0x1FCB, 0x1FAB, 0x1F8B, 0x1F6B, 0x1F4B, 0x1F2B, 0x1F0B, 0x1EEB, 0x1ECB, 0x1EAB, 0x1E8B, 0x1E6B,
   1536    0x1E4B, 0x1E2B, 0x1E0B, 0x1DEB, 0x1DCB, 0x1DAB, 0x1D8B, 0x1D6B, 0x1D4B, 0x1D2B, 0x1D0B, 0x1CEB, 0x1CCB, 0x1CAB, 0x1C8B, 0x1C6B,
   1537    0x1C4B, 0x1C2B, 0x1C0B, 0x1BEB, 0x1BCB, 0x1BAB, 0x1B8B, 0x1B6B, 0x106A, 0x104A, 0x102A, 0x100A, 0xFEA, 0xFCA, 0xFAA, 0xF8A,
   1538    0xF6A, 0x668, 0x8E8, 0x8C8, 0x8A8, 0x888, 0x868, 0x848, 0x7D7, 0x194B, 0x7B6, 0xD1C, 0xCFC, 0xCB2, 0xCA9, 0xC9C,
   1539    0xC7C, 0xC5C, 0xC3C, 0xC1C, 0xBFC, 0xBDC, 0xBBC, 0xB9C, 0xB7C, 0xB5E, 0xB2C, 0xB1C, 0xAB8, 0xADC, 0xA9C, 0x2C2,
   1540    0x528, 0x166B, 0x1667, 0x3FF, 0x9FC, 0x9DC, 0x9BC, 0x659, 0xBB8, 0x15A7, 0xFC6, 0x1C0, 0x1B1, 0x9CB, 0x82C, 0x1285,
   1541 };
   1542 
   1543 static uint16_t Data[] = {
   1544    0x3001, 0x3082, 0x3001, 0x3082, 0x3001, 0x3082, 0x3001, 0x3082, 0x3001, 0x3082, 0x3001, 0x3082, 0x3001, 0x3082, 0x3001, 0x3082,
   1545    0x3001, 0x3082, 0x3001, 0x3082, 0x3001, 0x3082, 0x3E80, 0x3E80, 0x3001, 0x3082, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80,
   1546    0x3A85, 0x3A85, 0x3E80, 0x3E80, 0x3E80, 0x3A85, 0x3A85, 0x3A85, 0x3E80, 0x3E80, 0x3E80, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85,
   1547    0x3A85, 0x3A85, 0x3A85, 0x3E80, 0x3A85, 0x3A85, 0x3A85, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x5B88, 0x5B88, 0x3E80, 0x3A85, 0x3A85,
   1548    0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3E80, 0x3A85, 0x3A85, 0x3A85, 0x3E80, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85,
   1549    0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85,
   1550    0x3A85, 0x3A85, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x5198, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x4606, 0x3E80, 0x3E80, 0x3A85, 0x3A85,
   1551    0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3A85, 0x3A85, 0x3E80, 0x3E80, 0x3A85, 0x3A85, 0x3A85, 0x3A85,
   1552    0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85,
   1553    0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80,
   1554    0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80,
   1555    0x3E80, 0x3E80, 0x5405, 0x5405, 0x5405, 0x5405, 0x5405, 0x5405, 0x5405, 0x5405, 0x5405, 0x5405, 0x5405, 0x5405, 0x3E80, 0x3E80,
   1556    0x3E80, 0x3E80, 0x5202, 0x5202, 0x5202, 0x5202, 0x5202, 0x5202, 0x5202, 0x5202, 0x5202, 0x5202, 0x5202, 0x5202, 0x5202, 0x5202,
   1557    0x5202, 0x5202, 0x5202, 0x5202, 0x5202, 0x5202, 0x5202, 0x5202, 0x5202, 0x5202, 0x5202, 0x5202, 0x5202, 0x5202, 0x5202, 0x5202,
   1558    0x5202, 0x2E82, 0x3E80, 0x5198, 0x2A14, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x4606, 0x4606, 0x4606, 0x4606, 0x4606,
   1559    0x4606, 0x4606, 0x4606, 0x4606, 0x4606, 0x4606, 0x4606, 0x4606, 0x4606, 0x4606, 0x4686, 0x4606, 0x4606, 0x4606, 0x4606, 0x4606,
   1560    0x4606, 0x4606, 0x4606, 0x4606, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80,
   1561    0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x1A1B, 0x1A1B, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x4584, 0x3E80, 0x3E80, 0x3E80, 0x298,
   1562    0x3E80, 0x298, 0x6615, 0x6696, 0x298, 0x1A97, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85,
   1563    0x4584, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85,
   1564    0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x4584,
   1565    0x4584, 0x1A1B, 0x1A1B, 0x1A1B, 0x1A1B, 0x1A1B, 0x1A1B, 0x1A1B, 0x1A1B, 0x1A1B, 0x1A1B, 0x1A1B, 0x1A1B, 0x1A1B, 0x1A1B, 0x4584,
   1566    0x4584, 0x1A1B, 0x1A1B, 0x1A1B, 0x1A1B, 0x1A1B, 0x1A1B, 0x1A1B, 0x1A1B, 0x1A1B, 0x1A1B, 0x1A1B, 0x1A1B, 0x1A1B, 0x1A1B, 0x2E82,
   1567    0x7282, 0x2E82, 0x3E80, 0x2E82, 0x4902, 0x7481, 0x7481, 0x7481, 0x7481, 0x7383, 0x1A1B, 0x1A1B, 0x1A1B, 0x6D82, 0x6D82, 0x4902,
   1568    0x4902, 0x3E80, 0x3E80, 0x2E82, 0x4902, 0x6E01, 0x6E01, 0x7501, 0x7501, 0x3E80, 0x1A1B, 0x1A1B, 0x1A1B, 0x1B02, 0x1B82, 0x1C02,
   1569    0x1C82, 0x1D02, 0x1D82, 0x1E02, 0x1E82, 0x1F02, 0x1F82, 0x2002, 0x2082, 0x2102, 0x2182, 0x2202, 0x2282, 0x2302, 0x2382, 0x2402,
   1570    0x2482, 0x2502, 0x2582, 0x2602, 0x2682, 0x2702, 0x2782, 0x455, 0xC99, 0x4D6, 0xC99, 0xF, 0xF, 0xF, 0xF, 0xF,
   1571    0x10F, 0xF, 0xF, 0xF, 0xF, 0xF, 0xF, 0xF, 0xF, 0xF, 0xF, 0xF, 0xF, 0xF, 0xF, 0xF,
   1572    0xF, 0xF, 0xF, 0xF, 0xF, 0xF, 0xF, 0xF, 0xF, 0xF, 0xF, 0x8F, 0x10F, 0x8F, 0x18F, 0x10F,
   1573    0xF, 0xF, 0xF, 0xF, 0xF, 0xF, 0xF, 0xF, 0xF, 0xF, 0xF, 0xF, 0xF, 0xF, 0x10F, 0x10F,
   1574    0x10F, 0x8F, 0x20C, 0x298, 0x298, 0x318, 0x39A, 0x318, 0x298, 0x298, 0x455, 0x4D6, 0x298, 0x519, 0x598, 0x614,
   1575    0x598, 0x698, 0x709, 0x789, 0x809, 0x889, 0x909, 0x989, 0xA09, 0xA89, 0xB09, 0xB89, 0x598, 0x298, 0xC59, 0xC99,
   1576    0xC59, 0x298, 0xD01, 0xD81, 0xE01, 0xE81, 0xF01, 0xF81, 0x1001, 0x1081, 0x1101, 0x1181, 0x1201, 0x1281, 0x1301, 0x1381,
   1577    0x1401, 0x1481, 0x1501, 0x1581, 0x1601, 0x1681, 0x1701, 0x1781, 0x1801, 0x1881, 0x1901, 0x1981, 0x455, 0x298, 0x4D6, 0x1A1B,
   1578    0x1A97, 0x298, 0x298, 0x298, 0xC99, 0x455, 0x4D6, 0x3E80, 0x298, 0x298, 0x298, 0x298, 0x298, 0x298, 0x3E80, 0x3E80,
   1579    0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80,
   1580    0x282C, 0x298, 0x39A, 0x39A, 0x39A, 0x39A, 0x289C, 0x289C, 0x1A1B, 0x289C, 0x2902, 0x29DD, 0xC99, 0x2A14, 0x289C, 0x1A1B,
   1581    0x2A9C, 0x519, 0x2B0B, 0x2B8B, 0x1A1B, 0x2C02, 0x289C, 0x298, 0x1A1B, 0x2C8B, 0x2902, 0x2D5E, 0x2D8B, 0x2D8B, 0x2D8B, 0x298,
   1582    0x298, 0x519, 0x614, 0xC99, 0xC99, 0xC99, 0x3E80, 0x298, 0x39A, 0x318, 0x298, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x5405,
   1583    0x5405, 0x5405, 0x3E80, 0x5405, 0x3E80, 0x5405, 0x5405, 0x5405, 0x5405, 0x5405, 0x5405, 0x5405, 0x5405, 0x5405, 0x5405, 0x5405,
   1584    0x5405, 0x5405, 0x3E80, 0x3E80, 0x3E80, 0x4606, 0x4606, 0x4606, 0x4606, 0x4606, 0x4606, 0x4606, 0x4606, 0x4606, 0x4606, 0x4606,
   1585    0x4606, 0x4606, 0x4606, 0x4606, 0x4606, 0x4606, 0x4606, 0x4606, 0x4606, 0x4606, 0x4606, 0x4606, 0x4606, 0x4606, 0x4606, 0x4606,
   1586    0x4606, 0x4606, 0x4606, 0x4606, 0x4606, 0x3E80, 0x501C, 0x501C, 0x4F81, 0x4F81, 0x4F81, 0x4F81, 0x4F81, 0x4F81, 0x4F81, 0x4F81,
   1587    0x4F81, 0x4F81, 0x4F81, 0x4F81, 0x4F81, 0x4F81, 0x4F81, 0x4F81, 0x2E01, 0x2E01, 0x2E01, 0x2E01, 0x2E01, 0x2E01, 0x2E01, 0x2E01,
   1588    0x2E01, 0x2E01, 0x2E01, 0x2E01, 0x2E01, 0x2E01, 0x2E01, 0x2E01, 0x2E01, 0x2E01, 0x2E01, 0x2E01, 0x2E01, 0x2E01, 0x2E01, 0xC99,
   1589    0x2E01, 0x2E01, 0x2E01, 0x2E01, 0x2E01, 0x2E01, 0x2E01, 0x2E82, 0x2E82, 0x2E82, 0x4902, 0x4902, 0x2E82, 0x2E82, 0x3E80, 0x3E80,
   1590    0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x2E82, 0x2E82, 0x2E82, 0x2E82, 0x2E82, 0x3E80,
   1591    0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x5305, 0x4606, 0x5305, 0x5305, 0x3E80, 0x5305, 0x5305, 0x3E80, 0x5305, 0x5305, 0x5305, 0x5305,
   1592    0x5305, 0x5305, 0x5305, 0x5305, 0x5305, 0x5305, 0x5405, 0x5405, 0x5405, 0x5405, 0x5405, 0x5405, 0x5405, 0x5405, 0x5405, 0x5405,
   1593    0x5405, 0x5405, 0x5405, 0x5405, 0x5405, 0x5405, 0x5405, 0x5405, 0x5405, 0x5405, 0x5398, 0x5405, 0x4606, 0x4606, 0x4606, 0x4606,
   1594    0x4606, 0x4606, 0x4606, 0x5087, 0x5087, 0x4606, 0x5087, 0x5087, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80,
   1595    0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80,
   1596    0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x2D8B, 0x2D8B, 0x2D8B, 0x2D8B, 0x2D8B, 0x2D8B, 0x2D8B, 0x2D8B,
   1597    0x2D8B, 0x2D8B, 0x2D8B, 0x2D8B, 0x840B, 0x3082, 0x3001, 0x3082, 0x3001, 0x3082, 0x3001, 0x3082, 0x3001, 0x3082, 0x2E82, 0x3001,
   1598    0x3082, 0x3001, 0x3082, 0x3001, 0x3082, 0x3001, 0x3082, 0x3001, 0x3082, 0x3001, 0x3082, 0x3001, 0x3082, 0x3001, 0x3082, 0x3001,
   1599    0x3082, 0x3001, 0x3082, 0x3001, 0x3082, 0x3001, 0x3082, 0x3001, 0x3082, 0x3001, 0x3082, 0x3001, 0x3082, 0x3001, 0x3082, 0x3E80,
   1600    0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x5C09, 0x5C89, 0x5D09, 0x5D89, 0x5E09, 0x5E89, 0x5F09, 0x5F89, 0x6009, 0x6089, 0x4606,
   1601    0x4606, 0x3A85, 0x3A85, 0x3A85, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x1A1B,
   1602    0x1A1B, 0x4701, 0x298, 0x4781, 0x4781, 0x4781, 0x3E80, 0x4801, 0x3E80, 0x4881, 0x4881, 0x4902, 0x2E01, 0x2E01, 0x2E01, 0x2E01,
   1603    0x2E01, 0x2E01, 0x2E01, 0x2E01, 0x2E01, 0x2E01, 0x2E01, 0x2E01, 0x2E01, 0x2E01, 0x2E01, 0x2E01, 0x2F02, 0x2F02, 0x2F02, 0x2F02,
   1604    0x2F02, 0x2F02, 0x2F02, 0x2F02, 0x2F02, 0x2F02, 0x2F02, 0x2F02, 0x2F02, 0x2F02, 0x2F02, 0x2F02, 0x2F02, 0x2F02, 0x2F02, 0x2F02,
   1605    0x2F02, 0x2F02, 0x2F02, 0xC99, 0x2F02, 0x2F02, 0x2F02, 0x2F02, 0x2F02, 0x2F02, 0x2F02, 0x2F82, 0x2F02, 0x2F02, 0x4A82, 0x2F02,
   1606    0x2F02, 0x2F02, 0x2F02, 0x2F02, 0x2F02, 0x2F02, 0x2F02, 0x2F02, 0x4B02, 0x4B82, 0x4B82, 0x3E80, 0x4C02, 0x4C82, 0x4D01, 0x4D01,
   1607    0x4D01, 0x4D82, 0x4E02, 0x2902, 0x3E80, 0x3E80, 0x3001, 0x3082, 0x3001, 0x3082, 0x3001, 0x3082, 0x3001, 0x3082, 0x3001, 0x3082,
   1608    0x3001, 0x3082, 0x3001, 0x3082, 0x3001, 0x3082, 0x2E82, 0x3B81, 0x3C03, 0x3C82, 0x3001, 0x3082, 0x3D81, 0x3E01, 0x3001, 0x3082,
   1609    0x3001, 0x3082, 0x3001, 0x3082, 0x3001, 0x3082, 0x3001, 0x3082, 0x3001, 0x3082, 0x3001, 0x3082, 0x3001, 0x3082, 0x3101, 0x3182,
   1610    0x3001, 0x3082, 0x3001, 0x3082, 0x3001, 0x3082, 0x2902, 0x3001, 0x3082, 0x3001, 0x3082, 0x3001, 0x3082, 0x3001, 0x3082, 0x3001,
   1611    0x3082, 0x3001, 0x3082, 0x3001, 0x3082, 0x3001, 0x3082, 0x4E82, 0x4F02, 0x3D02, 0x2902, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80,
   1612    0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x5B10, 0x5B10, 0x5B10, 0x5B10, 0x5B10, 0x5B10, 0x7F0B, 0x3E80, 0x3E80,
   1613    0x3E80, 0x7F8B, 0x800B, 0x808B, 0x810B, 0x818B, 0x820B, 0x519, 0x519, 0xC99, 0x455, 0x4D6, 0x2902, 0x3301, 0x3001, 0x3082,
   1614    0x3001, 0x3082, 0x3381, 0x3001, 0x3082, 0x3401, 0x3401, 0x3001, 0x3082, 0x2902, 0x3481, 0x3501, 0x3581, 0x3001, 0x3082, 0x3401,
   1615    0x3601, 0x3682, 0x3701, 0x3781, 0x3001, 0x3082, 0x2902, 0x2902, 0x3701, 0x3801, 0x2902, 0x3881, 0x3A85, 0x3A85, 0x3A85, 0x3A85,
   1616    0x3B81, 0x3C03, 0x3C82, 0x3B81, 0x3C03, 0x3C82, 0x3B81, 0x3C03, 0x3C82, 0x3001, 0x3082, 0x3001, 0x3082, 0x3001, 0x3082, 0x3001,
   1617    0x3082, 0x3001, 0x3082, 0x3001, 0x3082, 0x3001, 0x3082, 0x3001, 0x3082, 0x3D02, 0x3001, 0x3082, 0x501C, 0x4606, 0x4606, 0x4606,
   1618    0x4606, 0x3E80, 0x5087, 0x5087, 0x3E80, 0x3E80, 0x3001, 0x3082, 0x3001, 0x3082, 0x3001, 0x3082, 0x3001, 0x3082, 0x3001, 0x3082,
   1619    0x3001, 0x3082, 0x3001, 0x3082, 0x3001, 0x3082, 0x3001, 0x3082, 0x3001, 0x3082, 0x3001, 0x3082, 0x3001, 0x3082, 0x3201, 0x3001,
   1620    0x3082, 0x3001, 0x3082, 0x3001, 0x3082, 0x3282, 0x3001, 0x3082, 0x3001, 0x3082, 0x3001, 0x3082, 0x3901, 0x3001, 0x3082, 0x3901,
   1621    0x2902, 0x2902, 0x3001, 0x3082, 0x3901, 0x3001, 0x3082, 0x3981, 0x3981, 0x3001, 0x3082, 0x3001, 0x3082, 0x3A01, 0x3001, 0x3082,
   1622    0x2902, 0x3A85, 0x3001, 0x3082, 0x2902, 0x3B02, 0x4D01, 0x3001, 0x3082, 0x3001, 0x3082, 0x3E80, 0x3E80, 0x3001, 0x3082, 0x3E80,
   1623    0x3E80, 0x3001, 0x3082, 0x3E80, 0x3E80, 0x3E80, 0x3001, 0x3082, 0x3001, 0x3082, 0x3001, 0x3082, 0x3001, 0x3082, 0x3001, 0x3082,
   1624    0x3001, 0x3082, 0x3001, 0x3082, 0x3001, 0x3082, 0x3001, 0x3082, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80,
   1625    0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x598, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80,
   1626    0x3E80, 0x3E80, 0x3E80, 0x5398, 0x3E80, 0x3E80, 0x3E80, 0x5398, 0x5398, 0x5398, 0x5398, 0x5398, 0x5398, 0x5398, 0x5398, 0x5398,
   1627    0x5398, 0x5398, 0x5398, 0x5398, 0x5398, 0x3E80, 0x5B10, 0x5405, 0x4606, 0x5405, 0x5405, 0x5405, 0x5405, 0x5405, 0x5405, 0x5405,
   1628    0x5405, 0x5405, 0x5405, 0x5405, 0x5405, 0x5405, 0x5405, 0x5405, 0x5405, 0x5405, 0x5405, 0x5405, 0x5405, 0x5405, 0x5405, 0x5405,
   1629    0x5405, 0x5405, 0x5405, 0x5405, 0x5405, 0x5405, 0x3E80, 0x3E80, 0x5B10, 0x4D01, 0x4D01, 0x4D01, 0x4D01, 0x4D01, 0x4D01, 0x4D01,
   1630    0x4D01, 0x4D01, 0x4D01, 0x4D01, 0x4D01, 0x4D01, 0x4D01, 0x4D01, 0x4D01, 0x4D01, 0x4D01, 0x4D01, 0x4D01, 0x4D01, 0x4D01, 0x4D01,
   1631    0x4D01, 0x4D01, 0x4D01, 0x4D01, 0x4D01, 0x4D01, 0x4D01, 0x4D01, 0x4D01, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80,
   1632    0x3E80, 0x3E80, 0x3E80, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85,
   1633    0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3E80, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3E80,
   1634    0x3A85, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x5C09, 0x5C89, 0x5D09, 0x5D89, 0x5E09, 0x5E89, 0x5F09, 0x5F89, 0x6009, 0x6089,
   1635    0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80,
   1636    0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x2902, 0x2902, 0x2902, 0x3F02, 0x3F82, 0x2902, 0x4002, 0x4002, 0x2902, 0x4082,
   1637    0x2902, 0x4102, 0x2902, 0x2902, 0x2902, 0x2902, 0x4002, 0x2902, 0x2902, 0x4182, 0x2902, 0x2902, 0x2902, 0x2902, 0x4202, 0x4282,
   1638    0x2902, 0x2902, 0x2902, 0x2902, 0x2902, 0x4282, 0x2902, 0x2902, 0x4302, 0x2902, 0x2902, 0x4382, 0x2902, 0x2902, 0x2902, 0x2902,
   1639    0x2902, 0x2902, 0x2902, 0x2902, 0x2902, 0x2902, 0x4402, 0x2902, 0x2902, 0x4402, 0x2902, 0x2902, 0x2902, 0x2902, 0x4402, 0x2902,
   1640    0x4482, 0x4482, 0x2902, 0x2902, 0x2902, 0x2902, 0x2902, 0x2902, 0x4502, 0x2902, 0x2902, 0x2902, 0x2902, 0x2902, 0x2902, 0x2902,
   1641    0x2902, 0x2902, 0x2902, 0x2902, 0x2902, 0x2902, 0x2902, 0x3E80, 0x3E80, 0x4584, 0x4584, 0x4584, 0x4584, 0x4584, 0x4584, 0x4584,
   1642    0x4584, 0x4584, 0x1A1B, 0x1A1B, 0x4584, 0x4584, 0x4584, 0x4584, 0x4584, 0x1A1B, 0x1A1B, 0x1A1B, 0x1A1B, 0x1A1B, 0x1A1B, 0x1A1B,
   1643    0x1A1B, 0x1A1B, 0x4584, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80,
   1644    0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x5101, 0x5101, 0x5101, 0x5101, 0x5101, 0x5101, 0x5101, 0x5101, 0x5101, 0x5101, 0x5101, 0x5101,
   1645    0x5101, 0x5101, 0x5101, 0x5101, 0x5101, 0x5101, 0x5101, 0x5101, 0x5101, 0x5101, 0x5101, 0x3E80, 0x3E80, 0x4584, 0x5198, 0x5198,
   1646    0x5198, 0x5198, 0x5198, 0x5198, 0x2E01, 0x2E01, 0x3E80, 0x2E01, 0x2E01, 0x2E01, 0x2E01, 0x2E01, 0x2E01, 0x2E01, 0x2E01, 0x2E01,
   1647    0x4982, 0x4A02, 0x4A02, 0x4A02, 0x4902, 0x2F02, 0x2F02, 0x2F02, 0x2F02, 0x2F02, 0x2F02, 0x2F02, 0x2F02, 0x2F02, 0x2F02, 0x2F02,
   1648    0x2F02, 0x2F02, 0x2F02, 0x2F02, 0x2F02, 0x4F02, 0x4F02, 0x4F02, 0x4F02, 0x4F02, 0x4F02, 0x4F02, 0x4F02, 0x4F02, 0x4F02, 0x4F02,
   1649    0x4F02, 0x4F02, 0x4F02, 0x4F02, 0x4F02, 0x4606, 0x4606, 0x4606, 0x4606, 0x4606, 0x5198, 0x4606, 0x4606, 0x3A85, 0x3A85, 0x3A85,
   1650    0x3A85, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x4606, 0x4606, 0x4606, 0x4606, 0x4606, 0x4606, 0x4606, 0x4606, 0x3E80, 0x4606, 0x4606,
   1651    0x4606, 0x4606, 0x4606, 0x4606, 0x4606, 0x4606, 0x4606, 0x4606, 0x4606, 0x4606, 0x4606, 0x4606, 0x4606, 0x4606, 0x4606, 0x4606,
   1652    0x4606, 0x4606, 0x4606, 0x4606, 0x4606, 0x3E80, 0x4606, 0x4606, 0x4606, 0x5298, 0x4606, 0x4606, 0x5298, 0x4606, 0x3E80, 0x3E80,
   1653    0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x5305, 0x5305, 0x5305, 0x5305, 0x5305, 0x5305, 0x5305,
   1654    0x5305, 0x5305, 0x5305, 0x5305, 0x5305, 0x5305, 0x5305, 0x5305, 0x5305, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x5305, 0x5305,
   1655    0x5305, 0x5298, 0x5298, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x5C89, 0x5D09,
   1656    0x5D89, 0x5E09, 0x5E89, 0x5F09, 0x5F89, 0x6009, 0x6089, 0x640B, 0x648B, 0x650B, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80,
   1657    0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x4606, 0x5B88, 0x3E80, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85,
   1658    0x3E80, 0x3E80, 0x3E80, 0x3A85, 0x3A85, 0x3A85, 0x3E80, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3E80, 0x3E80, 0x3E80, 0x3A85, 0x3A85,
   1659    0x3E80, 0x3A85, 0x3E80, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3E80, 0x3E80, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85,
   1660    0x3E80, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3E80, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85,
   1661    0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3E80, 0x3E80, 0x3E80, 0x3E80,
   1662    0x3E80, 0x3E80, 0x4606, 0x4606, 0x4606, 0x4606, 0x4606, 0x4606, 0x4606, 0x4606, 0x4606, 0x4606, 0x4606, 0x4606, 0x4606, 0x4606,
   1663    0x5B88, 0x5B88, 0x5B88, 0x5B88, 0x3E80, 0x4606, 0x4606, 0x4606, 0x3E80, 0x4606, 0x4606, 0x4606, 0x4606, 0x3E80, 0x3E80, 0x3E80,
   1664    0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x4606, 0x4606, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x4606,
   1665    0x5B88, 0x5B88, 0x3E80, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3E80, 0x3E80, 0x3A85, 0x3A85, 0x3E80,
   1666    0x3E80, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3E80, 0x3E80,
   1667    0x3E80, 0x3E80, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85,
   1668    0x3A85, 0x3E80, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85,
   1669    0x3A85, 0x3A85, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x5B88, 0x5B88, 0x3E80, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85,
   1670    0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3E80, 0x3E80, 0x3E80, 0x3A85, 0x3A85,
   1671    0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3E80, 0x3E80, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3E80, 0x3E80, 0x3A85, 0x3A85,
   1672    0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3E80, 0x3E80, 0x3A85, 0x3A85, 0x3A85, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x5C09, 0x5C89, 0x5D09,
   1673    0x5D89, 0x5E09, 0x5E89, 0x5F09, 0x5F89, 0x6009, 0x6089, 0x501C, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80,
   1674    0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x5509, 0x5589, 0x5609, 0x5689, 0x5709, 0x5789, 0x5809, 0x5889, 0x5909,
   1675    0x5989, 0x318, 0x5A18, 0x5A18, 0x5398, 0x3E80, 0x3E80, 0x4606, 0x5405, 0x5405, 0x5405, 0x5405, 0x5405, 0x5405, 0x5405, 0x5405,
   1676    0x5405, 0x5405, 0x5405, 0x5405, 0x5405, 0x5405, 0x5405, 0x5405, 0x3E80, 0x3E80, 0x5405, 0x5405, 0x5405, 0x5405, 0x5405, 0x5405,
   1677    0x5405, 0x5405, 0x5405, 0x5405, 0x5405, 0x5405, 0x5405, 0x5405, 0x5405, 0x5405, 0x5405, 0x5405, 0x5405, 0x5405, 0x5405, 0x5405,
   1678    0x5405, 0x5405, 0x5405, 0x5405, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80,
   1679    0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x5405, 0x5405, 0x5405, 0x5405,
   1680    0x5405, 0x5405, 0x5405, 0x5405, 0x5405, 0x5405, 0x5405, 0x5405, 0x5405, 0x5405, 0x5405, 0x5405, 0x5405, 0x5405, 0x5405, 0x5405,
   1681    0x5405, 0x5405, 0x5405, 0x5405, 0x5405, 0x5405, 0x5405, 0x5405, 0x5405, 0x5405, 0x5405, 0x5405, 0x6615, 0x6696, 0x5484, 0x5405,
   1682    0x5405, 0x5405, 0x5405, 0x5405, 0x5405, 0x5405, 0x5405, 0x5405, 0x5405, 0x4606, 0x4606, 0x4606, 0x4606, 0x4606, 0x4606, 0x4606,
   1683    0x4606, 0x4606, 0x4606, 0x4606, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80,
   1684    0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x5B88, 0x5B88, 0x5198, 0x3E80, 0x3E80, 0x3E80, 0x3E80,
   1685    0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x4606, 0x4606, 0x5B88, 0x3E80, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85,
   1686    0x3A85, 0x3A85, 0x3E80, 0x3A85, 0x3E80, 0x3A85, 0x3A85, 0x3A85, 0x3E80, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85,
   1687    0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x5198, 0x5198, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85,
   1688    0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x4606, 0x4606, 0x4606, 0x4606, 0x4606, 0x5484, 0x5484,
   1689    0x4606, 0x4606, 0x289C, 0x4606, 0x4606, 0x4606, 0x4606, 0x3E80, 0x3E80, 0x709, 0x789, 0x809, 0x889, 0x909, 0x989, 0xA09,
   1690    0xA89, 0xB09, 0xB89, 0x5405, 0x5405, 0x5405, 0x5A9C, 0x5A9C, 0x3E80, 0x3A85, 0x3A85, 0x3A85, 0x3E80, 0x3A85, 0x3E80, 0x3A85,
   1691    0x3E80, 0x3E80, 0x3A85, 0x3A85, 0x3E80, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x4606, 0x3A85, 0x3A85, 0x4606, 0x4606, 0x4606, 0x4606,
   1692    0x4606, 0x4606, 0x3E80, 0x4606, 0x4606, 0x3A85, 0x3E80, 0x3E80, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85,
   1693    0x3A85, 0x3E80, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3E80, 0x3A85, 0x3A85, 0x3A85,
   1694    0x3A85, 0x3A85, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x4606, 0x4606, 0x5B88, 0x3E80, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85,
   1695    0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85,
   1696    0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3E80, 0x3E80, 0x4606, 0x3A85, 0x5B88, 0x5B88,
   1697    0x5B88, 0x5B88, 0x5B88, 0x3E80, 0x4606, 0x5B88, 0x5B88, 0x3E80, 0x5B88, 0x5B88, 0x4606, 0x4606, 0x3E80, 0x3E80, 0x3E80, 0x3E80,
   1698    0x3E80, 0x3E80, 0x3E80, 0x5B88, 0x5B88, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3A85, 0x3E80, 0x5198, 0x5198,
   1699    0x5198, 0x5198, 0x5198, 0x5198, 0x5198, 0x5198, 0x5C89, 0x5D09, 0x5D89, 0x5E09, 0x5E89, 0x5F09, 0x5F89, 0x6009, 0x6089, 0x640B,
   1700    0x670B, 0x678B, 0x680B, 0x688B, 0x690B, 0x698B, 0x6A0B, 0x6A8B, 0x648B, 0x6B0B, 0x3E80, 0x3E80, 0x3E80, 0x3A85, 0x3A85, 0x3A85,
   1701    0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3E80, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3E80, 0x3A85,
   1702    0x3A85, 0x3E80, 0x3E80, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3E80, 0x3E80, 0x4606, 0x3A85, 0x5B88, 0x4606, 0x4606, 0x4606, 0x4606,
   1703    0x4606, 0x4606, 0x4606, 0x4606, 0x5B88, 0x5B88, 0x5B88, 0x5B88, 0x4606, 0x3E80, 0x3E80, 0x3A85, 0x4606, 0x4606, 0x4606, 0x4606,
   1704    0x3E80, 0x3E80, 0x3E80, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3E80, 0x3A85, 0x3A85, 0x3A85,
   1705    0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3E80, 0x3A85, 0x3E80, 0x3E80, 0x3E80, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3E80, 0x3E80, 0x4606,
   1706    0x3E80, 0x5B88, 0x5B88, 0x5B88, 0x3E80, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3E80, 0x3A85, 0x3A85,
   1707    0x3A85, 0x3E80, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85,
   1708    0x3A85, 0x3E80, 0x3A85, 0x3E80, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3E80, 0x3E80, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85,
   1709    0x3A85, 0x3E80, 0x3A85, 0x3E80, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3E80, 0x3E80, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85,
   1710    0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x4606, 0x3A85, 0x3A85, 0x4606, 0x4606,
   1711    0x4606, 0x4606, 0x4606, 0x4606, 0x4606, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x39A, 0x39A, 0x39A, 0x39A, 0x39A, 0x39A, 0x39A,
   1712    0x39A, 0x39A, 0x39A, 0x39A, 0x39A, 0x39A, 0x39A, 0x39A, 0x39A, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80,
   1713    0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3A85, 0x3A85, 0x4606, 0x4606, 0x5198, 0x5198, 0x5C09,
   1714    0x5C89, 0x5D09, 0x5D89, 0x5E09, 0x5E89, 0x5F09, 0x5F89, 0x6009, 0x6089, 0x5198, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80,
   1715    0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x298, 0x298, 0x318, 0x39A, 0x318, 0x298, 0x298,
   1716    0x6615, 0x6696, 0x298, 0x519, 0x598, 0x614, 0x598, 0x698, 0x709, 0x789, 0x809, 0x889, 0x909, 0x989, 0xA09, 0xA89,
   1717    0xB09, 0xB89, 0x598, 0x298, 0xC99, 0xC99, 0xC99, 0x298, 0x298, 0x298, 0x298, 0x298, 0x298, 0x2A14, 0x298, 0x298,
   1718    0x298, 0x298, 0x5B10, 0x5B10, 0x5B10, 0x5B10, 0x3E80, 0x5C09, 0x5C89, 0x5D09, 0x5D89, 0x5E09, 0x5E89, 0x5F09, 0x5F89, 0x6009,
   1719    0x6089, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85,
   1720    0x3E80, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3E80, 0x3A85, 0x3A85, 0x3A85, 0x3A85,
   1721    0x3A85, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x5B88, 0x4606, 0x4606, 0x4606, 0x4606, 0x3E80, 0x3E80, 0x5B88, 0x5B88, 0x3E80, 0x3E80,
   1722    0x5B88, 0x5B88, 0x4606, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x5B88, 0x3E80, 0x3E80, 0x3E80,
   1723    0x3E80, 0x3A85, 0x3A85, 0x3E80, 0x3A85, 0x3E80, 0x3E80, 0x3A85, 0x3A85, 0x3E80, 0x3A85, 0x3E80, 0x3E80, 0x3A85, 0x3E80, 0x3E80,
   1724    0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3E80, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85,
   1725    0x3A85, 0x3A85, 0x3E80, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3E80, 0x3A85, 0x3A85, 0x3E80, 0x3A85, 0x3A85,
   1726    0x3E80, 0x3A85, 0x3A85, 0x3E80, 0x3E80, 0x4606, 0x3E80, 0x5B88, 0x5B88, 0x4606, 0x4606, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x4606,
   1727    0x4606, 0x3E80, 0x3E80, 0x4606, 0x4606, 0x4606, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80,
   1728    0x3E80, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3E80, 0x3A85, 0x3E80, 0x3A85, 0x3A85, 0x4606, 0x4606, 0x3E80, 0x3E80, 0x5C09, 0x5C89,
   1729    0x5D09, 0x5D89, 0x5E09, 0x5E89, 0x5F09, 0x5F89, 0x6009, 0x6089, 0x3A85, 0x3A85, 0x39A, 0x39A, 0x610B, 0x618B, 0x620B, 0x628B,
   1730    0x630B, 0x638B, 0x501C, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85,
   1731    0x3A85, 0x3E80, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3E80, 0x3A85, 0x3A85, 0x3E80, 0x3A85, 0x3A85, 0x3A85,
   1732    0x3A85, 0x3A85, 0x3E80, 0x3E80, 0x4606, 0x3A85, 0x5B88, 0x5B88, 0x4606, 0x4606, 0x4606, 0x4606, 0x4606, 0x3E80, 0x4606, 0x4606,
   1733    0x5B88, 0x3E80, 0x5B88, 0x5B88, 0x4606, 0x3E80, 0x3E80, 0x3A85, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80,
   1734    0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x5C09, 0x5C89, 0x5D09, 0x5D89, 0x5E09, 0x5E89, 0x5F09, 0x5F89, 0x6009,
   1735    0x6089, 0x630B, 0x630B, 0x630B, 0x630B, 0x630B, 0x630B, 0x630B, 0x630B, 0x630B, 0x630B, 0x501C, 0x4606, 0x501C, 0x4606, 0x501C,
   1736    0x4606, 0x6615, 0x6696, 0x6615, 0x6696, 0x5B88, 0x5B88, 0x4606, 0x4606, 0x4606, 0x3E80, 0x3E80, 0x3E80, 0x5B88, 0x5B88, 0x3E80,
   1737    0x3E80, 0x5B88, 0x5B88, 0x4606, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x4606, 0x5B88, 0x3E80, 0x3E80,
   1738    0x3E80, 0x3E80, 0x3A85, 0x3A85, 0x3E80, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3E80, 0x3A85, 0x3A85, 0x3E80, 0x5B88, 0x4606,
   1739    0x4606, 0x4606, 0x4606, 0x5B88, 0x4606, 0x3E80, 0x3E80, 0x3E80, 0x4606, 0x4606, 0x5B88, 0x4606, 0x3E80, 0x3E80, 0x3E80, 0x3E80,
   1740    0x3E80, 0x3E80, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85,
   1741    0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x5B88, 0x5B88, 0x5B88, 0x4606, 0x4606, 0x4606, 0x4606, 0x4606, 0x4606, 0x4606,
   1742    0x5B88, 0x5B88, 0x3E80, 0x3E80, 0x3E80, 0x5B88, 0x5B88, 0x5B88, 0x3E80, 0x5B88, 0x5B88, 0x5B88, 0x4606, 0x3E80, 0x3E80, 0x3E80,
   1743    0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x5B88, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3A85,
   1744    0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3E80, 0x4584, 0x3E80, 0x4606, 0x4606, 0x4606, 0x4606, 0x4606, 0x4606, 0x3E80, 0x3E80, 0x5C09,
   1745    0x5C89, 0x5D09, 0x5D89, 0x5E09, 0x5E89, 0x5F09, 0x5F89, 0x6009, 0x6089, 0x3E80, 0x3E80, 0x3A85, 0x3A85, 0x3E80, 0x3E80, 0x3E80,
   1746    0x3E80, 0x5C09, 0x5C89, 0x5D09, 0x5D89, 0x5E09, 0x5E89, 0x5F09, 0x5F89, 0x6009, 0x6089, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80,
   1747    0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x4606, 0x4606, 0x4606, 0x4606, 0x4606,
   1748    0x4606, 0x4606, 0x4606, 0x4606, 0x4606, 0x4606, 0x4606, 0x4606, 0x5087, 0x5087, 0x5087, 0x5B88, 0x4606, 0x4606, 0x4606, 0x3E80,
   1749    0x3E80, 0x5B88, 0x5B88, 0x5B88, 0x3E80, 0x5B88, 0x5B88, 0x5B88, 0x4606, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80,
   1750    0x3E80, 0x3E80, 0x5B88, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85,
   1751    0x3A85, 0x3A85, 0x3E80, 0x3E80, 0x3E80, 0x4606, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x5B88, 0x5B88, 0x5B88, 0x4606, 0x4606, 0x4606,
   1752    0x3E80, 0x4606, 0x3E80, 0x5B88, 0x5B88, 0x5B88, 0x5B88, 0x5B88, 0x5B88, 0x5B88, 0x5B88, 0x4606, 0x5B88, 0x5B88, 0x4606, 0x4606,
   1753    0x4606, 0x4606, 0x4606, 0x4606, 0x4606, 0x4606, 0x4606, 0x4606, 0x4606, 0x5198, 0x5198, 0x5198, 0x5198, 0x5198, 0x5198, 0x5198,
   1754    0x39A, 0x5198, 0x3E80, 0x3E80, 0x3E80, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x4584, 0x4606, 0x4606, 0x4606, 0x4606,
   1755    0x4606, 0x4606, 0x4606, 0x4606, 0x5198, 0x5C09, 0x5C89, 0x5D09, 0x5D89, 0x5E09, 0x5E89, 0x5F09, 0x5F89, 0x6009, 0x6089, 0x5198,
   1756    0x5198, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3A85, 0x501C, 0x501C, 0x501C, 0x5198, 0x5198, 0x5198, 0x5198, 0x5198, 0x5198, 0x5198,
   1757    0x5198, 0x65B8, 0x5198, 0x5198, 0x5198, 0x5198, 0x5198, 0x5198, 0x501C, 0x501C, 0x501C, 0x501C, 0x501C, 0x4606, 0x4606, 0x501C,
   1758    0x501C, 0x501C, 0x501C, 0x501C, 0x501C, 0x4606, 0x501C, 0x501C, 0x501C, 0x501C, 0x501C, 0x501C, 0x3E80, 0x3E80, 0x501C, 0x3E80,
   1759    0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x289C,
   1760    0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3A85,
   1761    0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3E80, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85,
   1762    0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85,
   1763    0x3A85, 0x3A85, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85,
   1764    0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85,
   1765    0x3A85, 0x3A85, 0x1A97, 0x4584, 0x4584, 0x4584, 0x3E80, 0x5C09, 0x5C89, 0x5D09, 0x5D89, 0x5E09, 0x5E89, 0x5F09, 0x5F89, 0x6009,
   1766    0x6089, 0x5198, 0x5198, 0x5198, 0x5198, 0x5198, 0x5198, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x5B88, 0x5B88, 0x4606,
   1767    0x4606, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x20C, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85,
   1768    0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85,
   1769    0x3A85, 0x3A85, 0x6615, 0x6696, 0x3E80, 0x3E80, 0x3E80, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85,
   1770    0x3A85, 0x3A85, 0x5198, 0x5198, 0x5198, 0x6B8B, 0x6C0B, 0x6C8B, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80,
   1771    0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85,
   1772    0x4606, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80,
   1773    0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3001, 0x3082, 0x3001, 0x3082, 0x3001, 0x3082, 0x3001, 0x3082, 0x3001,
   1774    0x3082, 0x3001, 0x3082, 0x3001, 0x3082, 0x3001, 0x3082, 0x3001, 0x3082, 0x3001, 0x3082, 0x3001, 0x3082, 0x2E82, 0x2E82, 0x2E82,
   1775    0x2E82, 0x2E82, 0x6D02, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x6D82, 0x6D82, 0x6D82, 0x6D82, 0x6D82, 0x6D82, 0x6D82, 0x6D82, 0x6E01,
   1776    0x6E01, 0x6E01, 0x6E01, 0x6E01, 0x6E01, 0x6E01, 0x6E01, 0x6D82, 0x6D82, 0x6D82, 0x6D82, 0x6D82, 0x6D82, 0x6D82, 0x6D82, 0x6E01,
   1777    0x6E01, 0x6E01, 0x6E01, 0x6E01, 0x6E01, 0x6E01, 0x6E01, 0x6D82, 0x6D82, 0x6D82, 0x6D82, 0x6D82, 0x6D82, 0x3E80, 0x3E80, 0x6E01,
   1778    0x6E01, 0x6E01, 0x6E01, 0x6E01, 0x6E01, 0x3E80, 0x3E80, 0x2E82, 0x6D82, 0x4902, 0x6D82, 0x4902, 0x6D82, 0x4902, 0x6D82, 0x3E80,
   1779    0x6E01, 0x3E80, 0x6E01, 0x3E80, 0x6E01, 0x3E80, 0x6E01, 0x6D82, 0x6D82, 0x6D82, 0x6D82, 0x6D82, 0x6D82, 0x6D82, 0x6D82, 0x6E01,
   1780    0x6E01, 0x6E01, 0x6E01, 0x6E01, 0x6E01, 0x6E01, 0x6E01, 0x6E82, 0x6E82, 0x6F02, 0x6F02, 0x6F02, 0x6F02, 0x6F82, 0x6F82, 0x7002,
   1781    0x7002, 0x7082, 0x7082, 0x7102, 0x7102, 0x3E80, 0x3E80, 0x7182, 0x7182, 0x7182, 0x7182, 0x7182, 0x7182, 0x7182, 0x7182, 0x7203,
   1782    0x7203, 0x7203, 0x7203, 0x7203, 0x7203, 0x7203, 0x7203, 0x7182, 0x7182, 0x7182, 0x7182, 0x7182, 0x7182, 0x7182, 0x7182, 0x7203,
   1783    0x7203, 0x7203, 0x7203, 0x7203, 0x7203, 0x7203, 0x7203, 0x6D82, 0x6D82, 0x2E82, 0x7282, 0x2E82, 0x3E80, 0x2E82, 0x4902, 0x6E01,
   1784    0x6E01, 0x7301, 0x7301, 0x7383, 0x1A1B, 0x7402, 0x1A1B, 0x1B02, 0x1B82, 0x1C02, 0x1C82, 0x1D02, 0x1D82, 0x1E02, 0x1E82, 0x1F02,
   1785    0x1F82, 0x2002, 0x2082, 0x2102, 0x2182, 0x2202, 0x2282, 0x2302, 0x2382, 0x2402, 0x2482, 0x2502, 0x2582, 0x2602, 0x2682, 0x2702,
   1786    0x2782, 0x6615, 0xC99, 0x6696, 0xC99, 0x3E80, 0x6D82, 0x6D82, 0x4902, 0x4902, 0x2E82, 0x7582, 0x2E82, 0x4902, 0x6E01, 0x6E01,
   1787    0x7601, 0x7601, 0x7681, 0x1A1B, 0x1A1B, 0x1A1B, 0x3E80, 0x3E80, 0x2E82, 0x7282, 0x2E82, 0x3E80, 0x2E82, 0x4902, 0x7701, 0x7701,
   1788    0x7781, 0x7781, 0x7383, 0x1A1B, 0x1A1B, 0x3E80, 0x20C, 0x20C, 0x20C, 0x20C, 0x20C, 0x20C, 0x20C, 0x782C, 0x20C, 0x20C,
   1789    0x20C, 0x788C, 0x5B10, 0x5B10, 0x7910, 0x7990, 0x2A14, 0x7A34, 0x2A14, 0x2A14, 0x2A14, 0x2A14, 0x298, 0x298, 0x7A9D, 0x7B1E,
   1790    0x6615, 0x7A9D, 0x7A9D, 0x7B1E, 0x6615, 0x7A9D, 0x298, 0x298, 0x298, 0x298, 0x298, 0x298, 0x298, 0x298, 0x7B8D, 0x7C0E,
   1791    0x7C90, 0x7D10, 0x7D90, 0x7E10, 0x7E90, 0x782C, 0x318, 0x318, 0x318, 0x318, 0x318, 0x298, 0x298, 0x298, 0x298, 0x29DD,
   1792    0x2D5E, 0x298, 0x298, 0x298, 0x298, 0x1A97, 0x7F0B, 0x2C8B, 0x2B0B, 0x2B8B, 0x7F8B, 0x800B, 0x808B, 0x810B, 0x818B, 0x820B,
   1793    0x519, 0x519, 0xC99, 0x455, 0x4D6, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80,
   1794    0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85,
   1795    0x3A85, 0x3A85, 0x3A85, 0x3E80, 0x3E80, 0x3E80, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C,
   1796    0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x289C,
   1797    0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x4D01, 0x289C, 0x289C, 0x289C, 0x289C, 0x4D01, 0x289C, 0x289C, 0x2902, 0x4D01,
   1798    0x4D01, 0x4D01, 0x2902, 0x2902, 0x4D01, 0x4D01, 0x4D01, 0x2902, 0x289C, 0x4D01, 0x289C, 0x289C, 0x289C, 0x4D01, 0x4D01, 0x4D01,
   1799    0x4D01, 0x4D01, 0x289C, 0x289C, 0xA20A, 0xA28A, 0xA30A, 0xA38A, 0xA40A, 0xA48A, 0xA50A, 0xA58A, 0xA60A, 0x4606, 0x4606, 0x4606,
   1800    0x4606, 0x4606, 0x4606, 0x2A14, 0x4584, 0x4584, 0x4584, 0x4584, 0x4584, 0x289C, 0x289C, 0xA68A, 0xA70A, 0xA78A, 0x3E80, 0x3E80,
   1801    0x3E80, 0x289C, 0x289C, 0x289C, 0x289C, 0x3E80, 0x289C, 0x289C, 0x289C, 0x289C, 0x3E80, 0x3E80, 0x289C, 0x289C, 0x289C, 0x289C,
   1802    0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C,
   1803    0x289C, 0x289C, 0x289C, 0xC99, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C,
   1804    0x289C, 0x289C, 0xC99, 0xC99, 0x289C, 0x289C, 0xC99, 0x289C, 0xC99, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C,
   1805    0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0xC99, 0x289C, 0x289C, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80,
   1806    0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x948A, 0x950A, 0x958A, 0x960A, 0x3E80, 0x3E80, 0x3E80,
   1807    0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0xC99, 0xC99, 0xC99, 0xC99, 0xC99, 0x289C, 0x289C,
   1808    0x289C, 0x289C, 0x289C, 0xC99, 0xC99, 0x289C, 0x289C, 0x289C, 0x289C, 0x4D01, 0x289C, 0x8281, 0x289C, 0x4D01, 0x289C, 0x8301,
   1809    0x8381, 0x4D01, 0x4D01, 0x2A9C, 0x2902, 0x4D01, 0x4D01, 0x289C, 0x4D01, 0x2902, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x2902, 0x289C,
   1810    0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x848A, 0x850A, 0x858A, 0x860A, 0x868A, 0x870A, 0x878A, 0x880A, 0x888A, 0x890A, 0x898A,
   1811    0x8A0A, 0x8A8A, 0x8B0A, 0x8B8A, 0x8C0A, 0x8C8A, 0x8D0A, 0x8D8A, 0x8E0A, 0x8E8A, 0x8F0A, 0x8F8A, 0x900A, 0x908A, 0x910A, 0x918A,
   1812    0x920A, 0x928A, 0x930A, 0x938A, 0x940A, 0xC99, 0xC99, 0xC59, 0xC59, 0xC99, 0xC99, 0xC59, 0xC59, 0xC59, 0xC59, 0xC59,
   1813    0xC59, 0xC59, 0xC59, 0xC59, 0xC59, 0xC59, 0xC59, 0xC59, 0xC59, 0xC59, 0xC59, 0xC59, 0xC59, 0xC59, 0xC99, 0xC99,
   1814    0xC99, 0xC99, 0xC99, 0xC59, 0xC59, 0xC59, 0xC59, 0xC99, 0xC99, 0xC99, 0xC99, 0xC99, 0xC99, 0xC99, 0xC99, 0xC99,
   1815    0xC59, 0xC59, 0xC59, 0xC59, 0xC59, 0xC99, 0xC99, 0xC59, 0xC59, 0xC99, 0xC99, 0xC99, 0xC99, 0xC59, 0xC59, 0xC59,
   1816    0xC59, 0xC59, 0xC59, 0xC59, 0xC59, 0xC59, 0xC59, 0xC59, 0xC59, 0xC59, 0xC99, 0xC99, 0xC59, 0xC59, 0xC59, 0xC59,
   1817    0xC99, 0xC99, 0xC99, 0xC99, 0xC99, 0xC59, 0xC99, 0xC99, 0xC99, 0xC99, 0xC99, 0xC99, 0xC99, 0x289C, 0x289C, 0xC99,
   1818    0x289C, 0x289C, 0xC99, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0xC99, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C,
   1819    0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C,
   1820    0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x3E80, 0x289C, 0x289C, 0x289C, 0x289C,
   1821    0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C,
   1822    0x289C, 0x289C, 0x289C, 0x289C, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80,
   1823    0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0xC99, 0xC59, 0xC59,
   1824    0xC59, 0xC59, 0xC99, 0xC99, 0xC99, 0xC59, 0xC59, 0xC59, 0xC59, 0xC59, 0xC59, 0xC99, 0xC99, 0xC99, 0xC59, 0x519,
   1825    0x519, 0xC99, 0xC59, 0xC59, 0xC99, 0xC99, 0xC99, 0xC59, 0xC59, 0xC59, 0xC59, 0xC99, 0xC59, 0xC99, 0xC59, 0xC99,
   1826    0xC99, 0xC99, 0xC99, 0xC59, 0xC59, 0xC59, 0xC59, 0xC59, 0xC59, 0xC59, 0xC59, 0xC59, 0xC99, 0xC99, 0xC99, 0xC99,
   1827    0xC99, 0xC59, 0xC99, 0xC59, 0xC59, 0xC59, 0xC59, 0xC59, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x455,
   1828    0x4D6, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x501C, 0x501C, 0x501C, 0x501C,
   1829    0x501C, 0x501C, 0x501C, 0x501C, 0x501C, 0x501C, 0x501C, 0x501C, 0x501C, 0x501C, 0x501C, 0x501C, 0x501C, 0x501C, 0x501C, 0x501C,
   1830    0x501C, 0x501C, 0x501C, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x501C, 0x501C, 0x501C, 0x501C, 0x501C, 0x501C, 0x501C, 0x501C, 0x501C,
   1831    0x501C, 0x501C, 0x501C, 0x501C, 0x501C, 0x501C, 0x501C, 0x501C, 0x501C, 0x501C, 0x501C, 0x501C, 0x501C, 0x9C1C, 0x9C1C, 0x9C1C,
   1832    0x9C1C, 0x9C1C, 0x9C1C, 0x9C1C, 0x9C1C, 0x9C1C, 0x9C1C, 0x9C1C, 0x9C1C, 0x9C1C, 0x9C1C, 0x9C1C, 0x9C1C, 0x9C9C, 0x9C9C, 0x9C9C,
   1833    0x9C9C, 0x9C9C, 0x9C9C, 0x9C9C, 0x9C9C, 0x9C9C, 0x9C9C, 0x9C9C, 0x9C9C, 0x9C9C, 0x9C9C, 0x9C9C, 0x9C9C, 0x7F0B, 0x3E80, 0x3E80,
   1834    0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80,
   1835    0x3E80, 0x3E80, 0x3E80, 0xC59, 0xC99, 0xC59, 0xC99, 0xC59, 0xC59, 0xC59, 0xC59, 0xC59, 0xC59, 0xC59, 0xC59, 0xC99,
   1836    0xC99, 0xC59, 0xC59, 0xC59, 0xC59, 0xC59, 0xC59, 0xC59, 0xC59, 0xC59, 0xC59, 0xC59, 0xC59, 0xC59, 0xC59, 0xC59,
   1837    0xC59, 0xC59, 0xC59, 0xC99, 0xC99, 0xC59, 0xC59, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80,
   1838    0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x39A, 0x39A, 0xC99, 0x1A1B, 0x289C, 0x39A, 0x39A, 0x3E80, 0x289C, 0xC99, 0xC99,
   1839    0xC99, 0xC99, 0x289C, 0x289C, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x5B10, 0x5B10,
   1840    0x5B10, 0x289C, 0x289C, 0x3E80, 0x3E80, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C,
   1841    0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x3E80, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C,
   1842    0x289C, 0x289C, 0x289C, 0x289C, 0x3E80, 0x289C, 0x3E80, 0x289C, 0x289C, 0x289C, 0x289C, 0x3E80, 0x3E80, 0x3E80, 0x289C, 0x3E80,
   1843    0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80,
   1844    0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x840B, 0x9D0B, 0x9D8B, 0x9E0B, 0x9E8B, 0x9F0B, 0x9F8B, 0xA00B, 0xA08B, 0xA10B, 0x840B,
   1845    0x9D0B, 0x9D8B, 0x9E0B, 0x9E8B, 0x9F0B, 0x9F8B, 0xA00B, 0xA08B, 0xA10B, 0x289C, 0x3E80, 0x3E80, 0x3E80, 0x289C, 0x289C, 0x289C,
   1846    0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0xC59, 0xC59, 0xC59, 0xC59, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C,
   1847    0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x289C, 0x501C, 0x289C,
   1848    0x289C, 0x289C, 0x289C, 0x289C, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x630B, 0x630B, 0x630B, 0x630B, 0x630B, 0x630B, 0x630B,
   1849    0x630B, 0x630B, 0x630B, 0x501C, 0x501C, 0x501C, 0x501C, 0x501C, 0x501C, 0x501C, 0x501C, 0x501C, 0x501C, 0x501C, 0x501C, 0x501C,
   1850    0x501C, 0x501C, 0x501C, 0x501C, 0x501C, 0x501C, 0x501C, 0x501C, 0x501C, 0x501C, 0x501C, 0x501C, 0x501C, 0x501C, 0x501C, 0x501C,
   1851    0x501C, 0x501C, 0x501C, 0x3E80, 0x3E80, 0x3E80, 0x501C, 0x610B, 0x618B, 0x620B, 0x628B, 0xA80B, 0xA88B, 0xA90B, 0xA98B, 0xAA0B,
   1852    0x640B, 0x501C, 0x501C, 0x501C, 0x501C, 0x501C, 0x501C, 0x501C, 0x501C, 0x501C, 0x501C, 0x501C, 0x501C, 0x501C, 0x501C, 0x501C,
   1853    0x501C, 0x501C, 0x501C, 0x501C, 0x501C, 0x501C, 0x501C, 0x501C, 0x501C, 0x501C, 0x501C, 0x501C, 0x289C, 0x3E80, 0x289C, 0x289C,
   1854    0x289C, 0x3E80, 0x289C, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80,
   1855    0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x2C8B, 0x2B0B, 0x2B8B, 0x7F8B,
   1856    0x800B, 0x808B, 0x810B, 0x818B, 0x820B, 0x968B, 0x970B, 0x978B, 0x980B, 0x988B, 0x990B, 0x998B, 0x9A0B, 0x9A8B, 0x9B0B, 0x9B8B,
   1857    0x2C8B, 0x2B0B, 0x2B8B, 0x7F8B, 0x800B, 0x808B, 0x810B, 0x818B, 0x820B, 0x968B, 0x970B, 0x978B, 0x980B, 0x988B, 0x990B, 0x998B,
   1858    0x9A0B, 0x9A8B, 0x9B0B, 0x9B8B, 0x501C, 0x501C, 0x501C, 0x501C, 0x20C, 0x298, 0x298, 0x298, 0x289C, 0x4584, 0x3A85, 0xA18A,
   1859    0x455, 0x4D6, 0x455, 0x4D6, 0x455, 0x4D6, 0x455, 0x4D6, 0x455, 0x4D6, 0x289C, 0x289C, 0x455, 0x4D6, 0x455, 0x4D6,
   1860    0x455, 0x4D6, 0x455, 0x4D6, 0x2A14, 0x6615, 0x6696, 0x6696, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85,
   1861    0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3E80, 0x3E80, 0x3E80,
   1862    0x3E80, 0x4606, 0x4606, 0x1A1B, 0x1A1B, 0x4584, 0x4584, 0x3E80, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85,
   1863    0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3A85, 0x3E80, 0x501C, 0x501C, 0x630B, 0x630B, 0x630B, 0x630B, 0x501C, 0x501C,
   1864    0x501C, 0x501C, 0x501C, 0x501C, 0x501C, 0x501C, 0x501C, 0x501C, 0x501C, 0x501C, 0x501C, 0x501C, 0x501C, 0x501C, 0x501C, 0x3E80,
   1865    0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80,
   1866    0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0xAA93, 0xAA93, 0xAA93, 0xAA93, 0xAA93,
   1867    0xAA93, 0xAA93, 0xAA93, 0xAA93, 0xAA93, 0xAA93, 0xAA93, 0xAA93, 0xAA93, 0xAA93, 0xAA93, 0xAA93, 0xAA93, 0xAA93, 0xAA93, 0xAA93,
   1868    0xAA93, 0xAA93, 0xAA93, 0xAA93, 0xAA93, 0xAA93, 0xAA93, 0xAA93, 0xAA93, 0xAA93, 0xAA93, 0xAB12, 0xAB12, 0xAB12, 0xAB12, 0xAB12,
   1869    0xAB12, 0xAB12, 0xAB12, 0xAB12, 0xAB12, 0xAB12, 0xAB12, 0xAB12, 0xAB12, 0xAB12, 0xAB12, 0xAB12, 0xAB12, 0xAB12, 0xAB12, 0xAB12,
   1870    0xAB12, 0xAB12, 0xAB12, 0xAB12, 0xAB12, 0xAB12, 0xAB12, 0xAB12, 0xAB12, 0xAB12, 0xAB12, 0x5305, 0x5305, 0x5305, 0x5305, 0x5305,
   1871    0x5305, 0x5305, 0x5305, 0x5305, 0x519, 0x5305, 0x5305, 0x5305, 0x5305, 0x5305, 0x5305, 0x5305, 0x5305, 0x5305, 0x5305, 0x5305,
   1872    0x5305, 0x5305, 0x3E80, 0x5305, 0x5305, 0x5305, 0x5305, 0x5305, 0x3E80, 0x5305, 0x3E80, 0x4606, 0x4606, 0x4606, 0x4606, 0x3E80,
   1873    0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x3E80, 0x298, 0x2A14, 0x2A14, 0x1A97, 0x1A97,
   1874    0x6615, 0x6696, 0x6615, 0x6696, 0x6615, 0x6696, 0x6615, 0x6696, 0x6615, 0x6696, 0x6615, 0x6696, 0x3E80, 0x3E80, 0x3E80, 0x3E80,
   1875    0x298, 0x298, 0x298, 0x298, 0x1A97, 0x1A97, 0x1A97, 0x598, 0x298, 0x598, 0x3E80, 0x298, 0x598, 0x298, 0x298, 0x2A14,
   1876    0x6615, 0x6696, 0x6615, 0x6696, 0x6615, 0x6696, 0x318, 0x298, 0xD01, 0xD81, 0xE01, 0xE81, 0xF01, 0xF81, 0x1001, 0x1081,
   1877    0x1101, 0x1181, 0x1201, 0x1281, 0x1301, 0x1381, 0x1401, 0x1481, 0x1501, 0x1581, 0x1601, 0x1681, 0x1701, 0x1781, 0x1801, 0x1881,
   1878    0x1901, 0x1981, 0x6615, 0x298, 0x6696, 0x1A1B, 0x1A97,
   1879 };
   1880 
   1881 static int16_t Upper[] = {
   1882    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
   1883    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
   1884    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
   1885    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFFE0, 0xFFE0, 0xFFE0, 0xFFE0, 0xFFE0, 0xFFE0, 0xFFE0, 0xFFE0, 0xFFE0, 0xFFE0,
   1886    0xFFE0, 0xFFE0, 0xFFE0, 0xFFE0, 0xFFE0, 0xFFE0, 0xFFE0, 0xFFE0, 0xFFE0, 0xFFE0, 0xFFE0, 0xFFE0, 0xFFE0, 0xFFE0, 0xFFE0, 0xFFE0,
   1887    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2E7, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFFE0, 0x79,
   1888    0x0, 0xFFFF, 0x0, 0xFF18, 0x0, 0xFED4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x61, 0x0, 0x0,
   1889    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x38, 0x0, 0xFFFF, 0xFFFE, 0xFFB1, 0x0, 0x0, 0x0, 0xFF2E, 0xFF32,
   1890    0xFF33, 0xFF36, 0xFF35, 0xFF31, 0xFF2F, 0xFF2D, 0xFF2B, 0xFF2A, 0xFF26, 0xFF27, 0xFF25, 0x0, 0x0, 0x54, 0x0, 0x0,
   1891    0x0, 0x0, 0x0, 0xFFDA, 0xFFDB, 0xFFE1, 0xFFC0, 0xFFC1, 0xFFC2, 0xFFC7, 0x0, 0xFFD1, 0xFFCA, 0xFFAA, 0xFFB0, 0x0,
   1892    0x0, 0x0, 0x0, 0x0, 0xFFD0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
   1893    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
   1894    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
   1895    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFFC5, 0x8, 0x0, 0x4A, 0x56, 0x64,
   1896    0x80, 0x70, 0x7E, 0x8, 0x0, 0x9, 0x0, 0x0, 0xE3DB, 0x0, 0x0, 0x7, 0x0, 0x0, 0x0, 0x0,
   1897    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
   1898    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
   1899    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0,
   1900    0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0xFFF0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
   1901    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFFE6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
   1902    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
   1903    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
   1904 };
   1905 
   1906 static int16_t Lower[] = {
   1907    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
   1908    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
   1909    0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
   1910    0x20, 0x20, 0x20, 0x20, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
   1911    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
   1912    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x20, 0x0, 0x0, 0x0,
   1913    0x1, 0x0, 0xFF39, 0x0, 0xFF87, 0x0, 0xD2, 0xCE, 0xCD, 0x4F, 0xCA, 0xCB, 0xCF, 0x0, 0xD3, 0xD1,
   1914    0xD5, 0xD6, 0xDA, 0xD9, 0xDB, 0x0, 0x0, 0x2, 0x1, 0x0, 0x0, 0xFF9F, 0xFFC8, 0x0, 0x0, 0x0,
   1915    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x26, 0x25,
   1916    0x40, 0x3F, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x50,
   1917    0x0, 0x0, 0x30, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
   1918    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
   1919    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
   1920    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFFF8, 0x0, 0x0, 0x0,
   1921    0x0, 0x0, 0x0, 0x0, 0xFFF8, 0x0, 0xFFB6, 0xFFF7, 0x0, 0xFFAA, 0xFF9C, 0x0, 0xFF90, 0xFFF9, 0xFF80, 0xFF82,
   1922    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
   1923    0x0, 0x0, 0x0, 0x0, 0x0, 0xE2A3, 0xDF41, 0xDFBA, 0x0, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
   1924    0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
   1925    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
   1926    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1A, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
   1927    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
   1928    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
   1929 };
   1930 
   1931 static inline int charType(int c) {return Data[Blocks[c>>5]+c & 0xFFFF] & 0x1F;}
   1932 
   1933 static inline bool isLowc(int c) {return charType(c) == CHAR_LOWERCASE;}
   1934 static inline bool isUppc(int c) {return charType(c) == CHAR_UPPERCASE;}
   1935 
   1936 static inline bool isLetterOrDigit(int c) {
   1937    return (1 << charType(c)) & (CHAR_DIGIT | CHAR_LETTER);
   1938 }
   1939 
   1940 static int toUpperCase(int c) {
   1941    return c + Upper[Data[Blocks[c>>5]+c & 0xFFFF] >> 7];
   1942 }
   1943 
   1944 static int toLowerCase(int c) {
   1945    return c + Lower[Data[Blocks[c>>5]+c & 0xFFFF] >> 7];
   1946 }
   1947 
   1948 // (low? 'any) -> sym | NIL
   1949 any doLowQ(any x) {
   1950    x = cdr(x);
   1951    return isSym(x = EVAL(car(x))) && isLowc(symChar(name(x)))? x : Nil;
   1952 }
   1953 
   1954 // (upp? 'any) -> sym | NIL
   1955 any doUppQ(any x) {
   1956    x = cdr(x);
   1957    return isSym(x = EVAL(car(x))) && isUppc(symChar(name(x)))? x : Nil;
   1958 }
   1959 
   1960 // (lowc 'any) -> any
   1961 any doLowc(any x) {
   1962    int c, i;
   1963    any nm;
   1964    cell c1, c2;
   1965 
   1966    x = cdr(x);
   1967    if (!isSym(x = EVAL(car(x))) || !(c = symChar(name(x))))
   1968       return x;
   1969    Push(c1, x);
   1970    Push(c2, boxChar(toLowerCase(c), &i, &nm));
   1971    while (c = symChar(NULL))
   1972       charSym(toLowerCase(c), &i, &nm);
   1973    drop(c1);
   1974    return consStr(data(c2));
   1975 }
   1976 
   1977 // (uppc 'any) -> any
   1978 any doUppc(any x) {
   1979    int c, i;
   1980    any nm;
   1981    cell c1, c2;
   1982 
   1983    x = cdr(x);
   1984    if (!isSym(x = EVAL(car(x))) || !(c = symChar(name(x))))
   1985       return x;
   1986    Push(c1, x);
   1987    Push(c2, boxChar(toUpperCase(c), &i, &nm));
   1988    while (c = symChar(NULL))
   1989       charSym(toUpperCase(c), &i, &nm);
   1990    drop(c1);
   1991    return consStr(data(c2));
   1992 }
   1993 
   1994 // (fold 'any ['cnt]) -> sym
   1995 any doFold(any ex) {
   1996    int n, c, i;
   1997    any x, nm;
   1998    cell c1, c2;
   1999 
   2000    x = cdr(ex);
   2001    if (!isSym(x = EVAL(car(x))) || !(c = symChar(name(x))))
   2002       return x;
   2003    while (!isLetterOrDigit(c))
   2004       if (!(c = symChar(NULL)))
   2005          return Nil;
   2006    Push(c1, x);
   2007    n = isCell(x = cddr(ex))? evCnt(ex,x) : 0;
   2008    Push(c2, boxChar(toLowerCase(c), &i, &nm));
   2009    while (c = symChar(NULL))
   2010       if (isLetterOrDigit(c)) {
   2011          if (!--n)
   2012             break;
   2013          charSym(toLowerCase(c), &i, &nm);
   2014       }
   2015    drop(c1);
   2016    return consStr(data(c2));
   2017 }