From 4b765cfa5a580e49bff9177104b5ec962d45b79c Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Wed, 14 Feb 2007 02:41:49 +0000 Subject: [PATCH] 369.8 svn: r5594 --- collects/mzlib/foreign.ss | 5 +- collects/mzlib/md5.ss | 10 +- collects/tests/mzscheme/foreign-test.c | 2 + collects/tests/mzscheme/foreign-test.ss | 48 +- collects/tests/mzscheme/rx.ss | 15 + collects/wxme/doc.txt | 7 + collects/wxme/wxme.ss | 12 +- doc/release-notes/mzscheme/HISTORY | 5 + src/foreign/foreign.c | 373 +- src/foreign/foreign.ssc | 291 +- src/mzscheme/gc2/Makefile.in | 3 +- src/mzscheme/gc2/compact.c | 5 + src/mzscheme/gc2/gc2.h | 4 + src/mzscheme/gc2/newgc.c | 1 + src/mzscheme/include/mzscheme.exp | 2 + src/mzscheme/include/mzscheme3m.exp | 5 + src/mzscheme/include/mzwin.def | 2 + src/mzscheme/include/mzwin3m.def | 5 + src/mzscheme/include/scheme.h | 25 +- src/mzscheme/src/bool.c | 9 +- src/mzscheme/src/cstartup.inc | 5387 ++++++++++++----------- src/mzscheme/src/env.c | 16 + src/mzscheme/src/eval.c | 89 +- src/mzscheme/src/fun.c | 27 +- src/mzscheme/src/hash.c | 18 +- src/mzscheme/src/jit.c | 73 +- src/mzscheme/src/list.c | 28 +- src/mzscheme/src/mzmark.c | 37 +- src/mzscheme/src/mzmarksrc.c | 14 +- src/mzscheme/src/nummacs.h | 14 +- src/mzscheme/src/read.c | 133 +- src/mzscheme/src/salloc.c | 19 +- src/mzscheme/src/schemef.h | 9 + src/mzscheme/src/schemex.h | 8 + src/mzscheme/src/schemex.inc | 5 + src/mzscheme/src/schemexm.h | 5 + src/mzscheme/src/schminc.h | 2 +- src/mzscheme/src/schpriv.h | 8 + src/mzscheme/src/schvers.h | 4 +- src/mzscheme/src/startup.inc | 1 + src/mzscheme/src/startup.ss | 1 + src/mzscheme/src/stxobj.c | 73 +- src/mzscheme/src/stypes.h | 282 +- src/mzscheme/src/syntax.c | 10 +- src/mzscheme/src/thread.c | 9 +- src/mzscheme/src/type.c | 57 +- src/wxcommon/PSDC.cxx | 1 + 47 files changed, 4120 insertions(+), 3039 deletions(-) diff --git a/collects/mzlib/foreign.ss b/collects/mzlib/foreign.ss index 35e4c3ba23..6a869b8b6a 100644 --- a/collects/mzlib/foreign.ss +++ b/collects/mzlib/foreign.ss @@ -58,12 +58,13 @@ (provide* ctype-sizeof ctype-alignof compiler-sizeof malloc free end-stubborn-change - cpointer? ptr-equal? (unsafe ptr-ref) (unsafe ptr-set!) + cpointer? ptr-equal? ptr-add (unsafe ptr-ref) (unsafe ptr-set!) ctype? make-ctype make-cstruct-type make-sized-byte-string _void _int8 _uint8 _int16 _uint16 _int32 _uint32 _int64 _uint64 _fixint _ufixint _fixnum _ufixnum _float _double _double* - _bool _pointer _scheme _fpointer) + _bool _pointer _scheme _fpointer + (unsafe memcpy) (unsafe memmove) (unsafe memset)) (define-syntax define* (syntax-rules () diff --git a/collects/mzlib/md5.ss b/collects/mzlib/md5.ss index 19f58d9177..bbb1a9f3bd 100644 --- a/collects/mzlib/md5.ss +++ b/collects/mzlib/md5.ss @@ -134,8 +134,8 @@ #xFFF #x1FFF #x3FFF #x7FFF #xFFFF)]) (lambda (a s) (let-values ([(hi lo s) - (cond [(< 0 s 16) (values (car a) (cdr a) s)] - [(< s 32) (values (cdr a) (car a) (- s 16))] + (cond [(< s 16) (values (car a) (cdr a) s)] + [(< s 32) (values (cdr a) (car a) (- s 16))] [else (error 'word<<< "shift out of range: ~e" s)])]) (cons! a @@ -161,12 +161,12 @@ ;; (error 'bytes->word-vector! "something bad happened")) (let loop ([n 15]) (when (<= 0 n) - (let ([m (* 4 n)]) + (let ([m (arithmetic-shift n 2)]) (cons! (vector-ref result n) (+ (bytes-ref l-raw (+ 2 m)) - (* 256 (bytes-ref l-raw (+ 3 m)))) + (arithmetic-shift (bytes-ref l-raw (+ 3 m)) 8)) (+ (bytes-ref l-raw m) - (* 256 (bytes-ref l-raw (+ 1 m)))))) + (arithmetic-shift (bytes-ref l-raw (+ 1 m)) 8)))) (loop (sub1 n))))) (define empty-port (open-input-bytes #"")) diff --git a/collects/tests/mzscheme/foreign-test.c b/collects/tests/mzscheme/foreign-test.c index 464fcfb1ff..cb1dc07906 100644 --- a/collects/tests/mzscheme/foreign-test.c +++ b/collects/tests/mzscheme/foreign-test.c @@ -55,3 +55,5 @@ X int use_g3(int x) { return ((int(*)(int))g3)(x); } /* typedef int2int(*int_to_int2int)(int); */ /* int hoho(int x, int_to_int2int f) { */ X int hoho(int x, int(*(*f)(int))(int)) { return (f(x+1))(x-1); } + +X int grab7th(void *p) { return ((char *)p)[7]; } diff --git a/collects/tests/mzscheme/foreign-test.ss b/collects/tests/mzscheme/foreign-test.ss index 5622537075..3b47bbff6f 100644 --- a/collects/tests/mzscheme/foreign-test.ss +++ b/collects/tests/mzscheme/foreign-test.ss @@ -120,10 +120,56 @@ (lambda (x y) (let ([x (ptr-ref x _int)] [y (ptr-ref y _int)]) (cond [(< x y) -1] [(> x y) +1] [else 0]))))) + + ;; --- + (t 55 'grab7th (_fun _pointer -> _int ) #"012345678") + (t 56 'grab7th (_fun _pointer -> _int ) (ptr-add #"012345678" 1)) + (t 52 'grab7th (_fun _pointer -> _int ) (ptr-add #"012345678" -3)) ) -(report-errs) +;; Test pointer arithmetic and memmove-like operations +(let ([p (malloc 10 _int)]) + (memset p 0 10 _int) + (test 0 ptr-ref p _int) + (test 0 ptr-ref (ptr-add p 3 _int) _int) + (ptr-set! p _int 5) + (test 5 ptr-ref p _int) + (test 0 ptr-ref (ptr-add p 3 _int) _int) + (memcpy p 3 _int p 0 1 _int) + (test 5 ptr-ref (ptr-add p 3 _int) _int) + ;; A MzScheme `int' is always 4 bytes. + (memset p 1 _int 17 9 _int) + (test 5 ptr-ref p _int) + (test #x11111111 ptr-ref (ptr-add p 4) _int) + (memset p 2 18 9 _int) + (test #x12121212 ptr-ref (ptr-add p 4) _int) + (if (system-big-endian?) + (test #x00001212 ptr-ref p _int) + (test #x12120005 ptr-ref p _int)) + + (ptr-set! (ptr-add p 4 _int) _int 10) + (ptr-set! (ptr-add p 5 _int) _int 11) + (ptr-set! (ptr-add p 6 _int) _int 12) + (memmove p 2 _int p 4 _int 3 _int) + (test 10 ptr-ref (ptr-add p 2 _int) _int) + (test 11 ptr-ref (ptr-add p 3 _int) _int) + (test 12 ptr-ref (ptr-add p 4 _int) _int) + (memmove p 6 _short p 8 _byte 12) + (test 10 ptr-ref (ptr-add p 2 _int) _int) + (test 10 ptr-ref (ptr-add p 3 _int) _int) + (test 11 ptr-ref (ptr-add p 4 _int) _int) + (test 12 ptr-ref (ptr-add p 5 _int) _int) + (test 12 ptr-ref (ptr-add p 6 _int) _int) + (memmove p p 8 4) + (test 10 ptr-ref p _int) + + (test #f ptr-equal? p (ptr-add p 3)) + (test #t ptr-equal? p (ptr-add (ptr-add p 3) -3)) + (test #f ptr-equal? #f (ptr-add #f 8)) + (test #t ptr-equal? #f (ptr-add (ptr-add #f 8) -8))) + +(report-errs) #| --- ignore everything below --- diff --git a/collects/tests/mzscheme/rx.ss b/collects/tests/mzscheme/rx.ss index f29484e89d..ea97ba16f4 100644 --- a/collects/tests/mzscheme/rx.ss +++ b/collects/tests/mzscheme/rx.ss @@ -1662,6 +1662,21 @@ ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Check that [\s] doesn't match \s, etc. +(let ([test-both + (lambda (r bstr arg) + (test (and r (list r))regexp-match (byte-pregexp bstr) arg) + (test (and r (list (bytes->string/latin-1 r)) ) + regexp-match + (pregexp (bytes->string/latin-1 bstr)) + (bytes->string/latin-1 arg)))]) + (test-both #f #"[\\s]" #"a") + (test-both #f #"[\\s]" #"s") + (test-both #" " #"[\\s]" #" ") + (test-both #"a" #"[^\\s]" #"a") + (test-both #"s" #"[^\\s]" #"s") + (test-both #f #"[^\\s]" #" ")) + ;; Check that rx doesn't parse as px: (test '(#"aa" #"a") regexp-match #px#"(a)\\1" #"aa") (test '(#"a1" #"a") regexp-match #rx#"(a)\\1" #"a1") diff --git a/collects/wxme/doc.txt b/collects/wxme/doc.txt index 93d906f6de..92a9858640 100644 --- a/collects/wxme/doc.txt +++ b/collects/wxme/doc.txt @@ -73,12 +73,19 @@ Like `read', but for a stream that starts with WXME-format data. If multiple S-expressions are in the WXME data, they are all read and combined with `begin'. +If MrEd is available (as determined by checking for `#%mred-kernel'), +then MrEd is used via `open-input-text-editor'. Otherwise, +`wxme-port->port' is used. + > (wxme-read-syntax source-v port) Like `read-syntax', but for a WXME format input stream. If multiple S-expressions are in the WXME data, they are all read and combined with `begin'. +If MrEd is available (as determined by checking for `#%mred-kernel'), +then MrEd is used via `open-input-text-editor'. Otherwise, +`wxme-port->port' is used. > snip-reader<%> diff --git a/collects/wxme/wxme.ss b/collects/wxme/wxme.ss index 8a53d72d16..f200bcf25a 100644 --- a/collects/wxme/wxme.ss +++ b/collects/wxme/wxme.ss @@ -616,7 +616,17 @@ (wxme-convert-port port close? #f)) (define (do-read port who read) - (let ([port (decode who port (lambda (x) x) #f)]) + (let ([port (if (with-handlers ([exn:fail? (lambda (x) #f)]) + (dynamic-require '#%mred-kernel #f) + #t) + ;; GUI mode, since MrEd is available: + (let ([text% (dynamic-require '(lib "mred.ss" "mred") 'text%)] + [open-input-text-editor (dynamic-require '(lib "mred.ss" "mred") 'open-input-text-editor)]) + (let ([t (new text%)]) + (send t insert-port port 'standard) + (open-input-text-editor t 0 'end values (object-name port) #t))) + ;; Non-GUI mode: + (decode who port (lambda (x) x) #f))]) (let ([v (read port)]) (let ([v2 (let loop () (let ([v2 (read port)]) diff --git a/doc/release-notes/mzscheme/HISTORY b/doc/release-notes/mzscheme/HISTORY index 5642e92b99..c4e161bcaa 100644 --- a/doc/release-notes/mzscheme/HISTORY +++ b/doc/release-notes/mzscheme/HISTORY @@ -1,5 +1,10 @@ Version 369.8 Added -p, -P, and -Q command-line options +Changed H-expression parsing to represent angle brackets specially +Added syntax-local-expand-expression +MzLib: foreign.ss: Added ptr-add, memmove, memcpy, and memset +Inside MzScheme: added scheme_set_type_equality(), based on a patch + from Dimitris Vyzovitis Version 369.7 Added string->path-element and path-element->string diff --git a/src/foreign/foreign.c b/src/foreign/foreign.c index 285d2722c0..4f171eb5d2 100644 --- a/src/foreign/foreign.c +++ b/src/foreign/foreign.c @@ -74,6 +74,8 @@ # define GC_CAN_IGNORE /* empty */ #endif +#define W_OFFSET(src, delta) ((char *)(src) XFORM_OK_PLUS (delta)) + /* same as the macro in file.c */ #define TO_PATH(x) (SCHEME_PATHP(x) ? (x) : scheme_char_string_to_path(x)) @@ -487,6 +489,7 @@ Scheme_Object *utf16_pointer_to_ucs4_string(unsigned short *utf) * C type: -none- * Predicate: -none- * Scheme->C: -none- + * S->C offset: 0 * C->Scheme: scheme_void */ @@ -496,6 +499,7 @@ Scheme_Object *utf16_pointer_to_ucs4_string(unsigned short *utf) * C type: Tsint8 * Predicate: SCHEME_INTP() * Scheme->C: SCHEME_INT_VAL() + * S->C offset: 0 * C->Scheme: scheme_make_integer() */ @@ -505,6 +509,7 @@ Scheme_Object *utf16_pointer_to_ucs4_string(unsigned short *utf) * C type: Tuint8 * Predicate: SCHEME_INTP() * Scheme->C: SCHEME_UINT_VAL() + * S->C offset: 0 * C->Scheme: scheme_make_integer_from_unsigned() */ @@ -514,6 +519,7 @@ Scheme_Object *utf16_pointer_to_ucs4_string(unsigned short *utf) * C type: Tsint16 * Predicate: SCHEME_INTP() * Scheme->C: SCHEME_INT_VAL() + * S->C offset: 0 * C->Scheme: scheme_make_integer() */ @@ -523,6 +529,7 @@ Scheme_Object *utf16_pointer_to_ucs4_string(unsigned short *utf) * C type: Tuint16 * Predicate: SCHEME_INTP() * Scheme->C: SCHEME_UINT_VAL() + * S->C offset: 0 * C->Scheme: scheme_make_integer_from_unsigned() */ @@ -533,6 +540,7 @@ Scheme_Object *utf16_pointer_to_ucs4_string(unsigned short *utf) * C type: Tsint32 * Predicate: scheme_get_realint_val(,&aux) * Scheme->C: -none- (set by the predicate) + * S->C offset: 0 * C->Scheme: scheme_make_realinteger_value() */ @@ -543,6 +551,7 @@ Scheme_Object *utf16_pointer_to_ucs4_string(unsigned short *utf) * C type: Tuint32 * Predicate: scheme_get_unsigned_realint_val(,&aux) * Scheme->C: -none- (set by the predicate) + * S->C offset: 0 * C->Scheme: scheme_make_realinteger_value_from_unsigned() */ @@ -552,6 +561,7 @@ Scheme_Object *utf16_pointer_to_ucs4_string(unsigned short *utf) * C type: Tsint64 * Predicate: scheme_get_long_long_val(,&aux) * Scheme->C: -none- (set by the predicate) + * S->C offset: 0 * C->Scheme: scheme_make_integer_value_from_long_long() */ @@ -561,6 +571,7 @@ Scheme_Object *utf16_pointer_to_ucs4_string(unsigned short *utf) * C type: Tuint64 * Predicate: scheme_get_unsigned_long_long_val(,&aux) * Scheme->C: -none- (set by the predicate) + * S->C offset: 0 * C->Scheme: scheme_make_integer_value_from_unsigned_long_long() */ @@ -571,6 +582,7 @@ Scheme_Object *utf16_pointer_to_ucs4_string(unsigned short *utf) * C type: Tsint32 * Predicate: SCHEME_INTP() * Scheme->C: SCHEME_INT_VAL() + * S->C offset: 0 * C->Scheme: scheme_make_integer() */ @@ -581,6 +593,7 @@ Scheme_Object *utf16_pointer_to_ucs4_string(unsigned short *utf) * C type: Tuint32 * Predicate: SCHEME_INTP() * Scheme->C: SCHEME_UINT_VAL() + * S->C offset: 0 * C->Scheme: scheme_make_integer_from_unsigned() */ @@ -600,6 +613,7 @@ Scheme_Object *utf16_pointer_to_ucs4_string(unsigned short *utf) * C type: long * Predicate: SCHEME_INTP() * Scheme->C: SCHEME_INT_VAL() + * S->C offset: 0 * C->Scheme: scheme_make_integer() */ @@ -610,6 +624,7 @@ Scheme_Object *utf16_pointer_to_ucs4_string(unsigned short *utf) * C type: unsigned long * Predicate: SCHEME_INTP() * Scheme->C: SCHEME_UINT_VAL() + * S->C offset: 0 * C->Scheme: scheme_make_integer_from_unsigned() */ @@ -619,6 +634,7 @@ Scheme_Object *utf16_pointer_to_ucs4_string(unsigned short *utf) * C type: float * Predicate: SCHEME_FLTP() * Scheme->C: SCHEME_FLT_VAL() + * S->C offset: 0 * C->Scheme: scheme_make_float() */ @@ -628,6 +644,7 @@ Scheme_Object *utf16_pointer_to_ucs4_string(unsigned short *utf) * C type: double * Predicate: SCHEME_DBLP() * Scheme->C: SCHEME_DBL_VAL() + * S->C offset: 0 * C->Scheme: scheme_make_double() */ @@ -638,6 +655,7 @@ Scheme_Object *utf16_pointer_to_ucs4_string(unsigned short *utf) * C type: double * Predicate: SCHEME_REALP() * Scheme->C: scheme_real_to_double() + * S->C offset: 0 * C->Scheme: scheme_make_double() */ @@ -648,6 +666,7 @@ Scheme_Object *utf16_pointer_to_ucs4_string(unsigned short *utf) * C type: int * Predicate: 1 * Scheme->C: SCHEME_TRUEP() + * S->C offset: 0 * C->Scheme: (?scheme_true:scheme_false) */ @@ -661,6 +680,7 @@ Scheme_Object *utf16_pointer_to_ucs4_string(unsigned short *utf) * C type: mzchar* * Predicate: SCHEME_CHAR_STRINGP() * Scheme->C: SCHEME_CHAR_STR_VAL() + * S->C offset: 0 * C->Scheme: scheme_make_char_string_without_copying() */ @@ -670,6 +690,7 @@ Scheme_Object *utf16_pointer_to_ucs4_string(unsigned short *utf) * C type: unsigned short* * Predicate: SCHEME_CHAR_STRINGP() * Scheme->C: ucs4_string_to_utf16_pointer() + * S->C offset: 0 * C->Scheme: utf16_pointer_to_ucs4_string() */ @@ -682,6 +703,7 @@ Scheme_Object *utf16_pointer_to_ucs4_string(unsigned short *utf) * C type: char* * Predicate: SCHEME_FALSEP()||SCHEME_BYTE_STRINGP() * Scheme->C: SCHEME_FALSEP()?NULL:SCHEME_BYTE_STR_VAL() + * S->C offset: 0 * C->Scheme: (==NULL)?scheme_false:scheme_make_byte_string_without_copying() */ @@ -691,6 +713,7 @@ Scheme_Object *utf16_pointer_to_ucs4_string(unsigned short *utf) * C type: char* * Predicate: SCHEME_FALSEP()||SCHEME_PATH_STRINGP() * Scheme->C: SCHEME_FALSEP()?NULL:SCHEME_PATH_VAL(TO_PATH()) + * S->C offset: 0 * C->Scheme: (==NULL)?scheme_false:scheme_make_path_without_copying() */ @@ -700,6 +723,7 @@ Scheme_Object *utf16_pointer_to_ucs4_string(unsigned short *utf) * C type: char* * Predicate: SCHEME_SYMBOLP() * Scheme->C: SCHEME_SYM_VAL() + * S->C offset: 0 * C->Scheme: scheme_intern_symbol() */ @@ -712,6 +736,7 @@ Scheme_Object *utf16_pointer_to_ucs4_string(unsigned short *utf) * C type: void* * Predicate: SCHEME_FFIANYPTRP() * Scheme->C: SCHEME_FFIANYPTR_VAL() + * S->C offset: FFIANYPTR * C->Scheme: scheme_make_foreign_cpointer() */ @@ -723,6 +748,7 @@ Scheme_Object *utf16_pointer_to_ucs4_string(unsigned short *utf) * C type: Scheme_Object* * Predicate: 1 * Scheme->C: + * S->C offset: 0 * C->Scheme: */ @@ -735,6 +761,7 @@ Scheme_Object *utf16_pointer_to_ucs4_string(unsigned short *utf) * C type: -none- * Predicate: -none- * Scheme->C: -none- + * S->C offset: 0 * C->Scheme: -none- */ @@ -990,6 +1017,10 @@ static Scheme_Object *foreign_make_cstruct_type(int argc, Scheme_Object *argv[]) (SCHEME_FFIOBJP(x) ? (((ffi_obj_struct*)x)->obj) : \ SCHEME_BYTE_STRINGP(x) ? SCHEME_BYTE_STR_VAL(x) : \ NULL))) +#define SCHEME_FFIANYPTR_OFFSET(x) \ + (SCHEME_CPTRP(x) ? SCHEME_CPTR_OFFSET(x) : 0) +#define SCHEME_FFIANYPTR_OFFSETVAL(x) \ + W_OFFSET(SCHEME_FFIANYPTR_VAL(x), SCHEME_FFIANYPTR_OFFSET(x)) #define scheme_make_foreign_cpointer(x) \ ((x==NULL)?scheme_false:scheme_make_cptr(x,NULL)) @@ -1078,7 +1109,6 @@ END_XFORM_SKIP; #define C2SCHEME(typ,src,delta,argsloc) c_to_scheme(typ,src,delta) #define REF_CTYPE(ctype) (((ctype *)W_OFFSET(src,delta))[0]) #endif -#define W_OFFSET(src, delta) ((char *)(src) XFORM_OK_PLUS (delta)) static Scheme_Object *C2SCHEME(Scheme_Object *type, void *src, int delta, int args_loc) { @@ -1135,9 +1165,9 @@ static Scheme_Object *C2SCHEME(Scheme_Object *type, void *src, int delta, int ar * the function is different: in the relevant cases zero an int and offset the * ptr */ #ifdef SCHEME_BIG_ENDIAN -#define SCHEME2C(typ,dst,delta,val,basep,retloc) scheme_to_c(typ,dst,delta,val,basep,retloc) +#define SCHEME2C(typ,dst,delta,val,basep,_offset,retloc) scheme_to_c(typ,dst,delta,val,basep,_offset,retloc) #else -#define SCHEME2C(typ,dst,delta,val,basep,retloc) scheme_to_c(typ,dst,delta,val,basep) +#define SCHEME2C(typ,dst,delta,val,basep,_offset,retloc) scheme_to_c(typ,dst,delta,val,_offset,basep) #endif /* Usually writes the C object to dst and returns NULL. When basetype_p is not @@ -1145,7 +1175,7 @@ static Scheme_Object *C2SCHEME(Scheme_Object *type, void *src, int delta, int ar * basetype_p is set to the corrsponding number tag. If basetype_p is NULL, * then a struct value will be *copied* into dst. */ static void* SCHEME2C(Scheme_Object *type, void *dst, long delta, - Scheme_Object *val, long *basetype_p, + Scheme_Object *val, long *basetype_p, long *_offset, int ret_loc) { if (!SCHEME_CTYPEP(type)) @@ -1178,7 +1208,6 @@ static void* SCHEME2C(Scheme_Object *type, void *dst, long delta, if (SCHEME_INTP(val)) { Tsint8 tmp; tmp = (Tsint8)(SCHEME_INT_VAL(val)); - (((Tsint8*)W_OFFSET(dst,delta))[0]) = tmp; return NULL; } else { scheme_wrong_type("Scheme->C","int8",0,1,&(val)); return NULL; /* shush the compiler */ @@ -1193,7 +1222,6 @@ static void* SCHEME2C(Scheme_Object *type, void *dst, long delta, if (SCHEME_INTP(val)) { Tuint8 tmp; tmp = (Tuint8)(SCHEME_UINT_VAL(val)); - (((Tuint8*)W_OFFSET(dst,delta))[0]) = tmp; return NULL; } else { scheme_wrong_type("Scheme->C","uint8",0,1,&(val)); return NULL; /* shush the compiler */ @@ -1208,7 +1236,6 @@ static void* SCHEME2C(Scheme_Object *type, void *dst, long delta, if (SCHEME_INTP(val)) { Tsint16 tmp; tmp = (Tsint16)(SCHEME_INT_VAL(val)); - (((Tsint16*)W_OFFSET(dst,delta))[0]) = tmp; return NULL; } else { scheme_wrong_type("Scheme->C","int16",0,1,&(val)); return NULL; /* shush the compiler */ @@ -1223,7 +1250,6 @@ static void* SCHEME2C(Scheme_Object *type, void *dst, long delta, if (SCHEME_INTP(val)) { Tuint16 tmp; tmp = (Tuint16)(SCHEME_UINT_VAL(val)); - (((Tuint16*)W_OFFSET(dst,delta))[0]) = tmp; return NULL; } else { scheme_wrong_type("Scheme->C","uint16",0,1,&(val)); return NULL; /* shush the compiler */ @@ -1250,7 +1276,6 @@ static void* SCHEME2C(Scheme_Object *type, void *dst, long delta, if (SCHEME_INTP(val)) { Tsint32 tmp; tmp = (Tsint32)(SCHEME_INT_VAL(val)); - (((Tsint32*)W_OFFSET(dst,delta))[0]) = tmp; return NULL; } else { scheme_wrong_type("Scheme->C","fixint",0,1,&(val)); return NULL; /* shush the compiler */ @@ -1265,7 +1290,6 @@ static void* SCHEME2C(Scheme_Object *type, void *dst, long delta, if (SCHEME_INTP(val)) { Tuint32 tmp; tmp = (Tuint32)(SCHEME_UINT_VAL(val)); - (((Tuint32*)W_OFFSET(dst,delta))[0]) = tmp; return NULL; } else { scheme_wrong_type("Scheme->C","ufixint",0,1,&(val)); return NULL; /* shush the compiler */ @@ -1280,7 +1304,6 @@ static void* SCHEME2C(Scheme_Object *type, void *dst, long delta, if (SCHEME_INTP(val)) { long tmp; tmp = (long)(SCHEME_INT_VAL(val)); - (((long*)W_OFFSET(dst,delta))[0]) = tmp; return NULL; } else { scheme_wrong_type("Scheme->C","fixnum",0,1,&(val)); return NULL; /* shush the compiler */ @@ -1295,7 +1318,6 @@ static void* SCHEME2C(Scheme_Object *type, void *dst, long delta, if (SCHEME_INTP(val)) { unsigned long tmp; tmp = (unsigned long)(SCHEME_UINT_VAL(val)); - (((unsigned long*)W_OFFSET(dst,delta))[0]) = tmp; return NULL; } else { scheme_wrong_type("Scheme->C","ufixnum",0,1,&(val)); return NULL; /* shush the compiler */ @@ -1310,7 +1332,6 @@ static void* SCHEME2C(Scheme_Object *type, void *dst, long delta, if (SCHEME_FLTP(val)) { float tmp; tmp = (float)(SCHEME_FLT_VAL(val)); - (((float*)W_OFFSET(dst,delta))[0]) = tmp; return NULL; } else { scheme_wrong_type("Scheme->C","float",0,1,&(val)); return NULL; /* shush the compiler */ @@ -1325,7 +1346,6 @@ static void* SCHEME2C(Scheme_Object *type, void *dst, long delta, if (SCHEME_DBLP(val)) { double tmp; tmp = (double)(SCHEME_DBL_VAL(val)); - (((double*)W_OFFSET(dst,delta))[0]) = tmp; return NULL; } else { scheme_wrong_type("Scheme->C","double",0,1,&(val)); return NULL; /* shush the compiler */ @@ -1340,7 +1360,6 @@ static void* SCHEME2C(Scheme_Object *type, void *dst, long delta, if (SCHEME_REALP(val)) { double tmp; tmp = (double)(scheme_real_to_double(val)); - (((double*)W_OFFSET(dst,delta))[0]) = tmp; return NULL; } else { scheme_wrong_type("Scheme->C","double*",0,1,&(val)); return NULL; /* shush the compiler */ @@ -1355,7 +1374,6 @@ static void* SCHEME2C(Scheme_Object *type, void *dst, long delta, if (1) { int tmp; tmp = (int)(SCHEME_TRUEP(val)); - (((int*)W_OFFSET(dst,delta))[0]) = tmp; return NULL; } else { scheme_wrong_type("Scheme->C","bool",0,1,&(val)); return NULL; /* shush the compiler */ @@ -1370,11 +1388,14 @@ static void* SCHEME2C(Scheme_Object *type, void *dst, long delta, if (SCHEME_CHAR_STRINGP(val)) { mzchar* tmp; tmp = (mzchar*)(SCHEME_CHAR_STR_VAL(val)); - if (basetype_p == NULL || tmp == NULL) { - (((mzchar**)W_OFFSET(dst,delta))[0]) = tmp; return NULL; + if (basetype_p == NULL ||tmp == NULL) { + (((mzchar**)W_OFFSET(dst,delta))[0]) = tmp; + return NULL; } else { - *basetype_p = FOREIGN_string_ucs_4; return tmp; + *basetype_p = FOREIGN_string_ucs_4; + return tmp; } + (((mzchar**)W_OFFSET(dst,delta))[0]) = tmp; return NULL; } else { scheme_wrong_type("Scheme->C","string/ucs-4",0,1,&(val)); return NULL; /* shush the compiler */ @@ -1389,11 +1410,14 @@ static void* SCHEME2C(Scheme_Object *type, void *dst, long delta, if (SCHEME_CHAR_STRINGP(val)) { unsigned short* tmp; tmp = (unsigned short*)(ucs4_string_to_utf16_pointer(val)); - if (basetype_p == NULL || tmp == NULL) { - (((unsigned short**)W_OFFSET(dst,delta))[0]) = tmp; return NULL; + if (basetype_p == NULL ||tmp == NULL) { + (((unsigned short**)W_OFFSET(dst,delta))[0]) = tmp; + return NULL; } else { - *basetype_p = FOREIGN_string_utf_16; return tmp; + *basetype_p = FOREIGN_string_utf_16; + return tmp; } + (((unsigned short**)W_OFFSET(dst,delta))[0]) = tmp; return NULL; } else { scheme_wrong_type("Scheme->C","string/utf-16",0,1,&(val)); return NULL; /* shush the compiler */ @@ -1408,11 +1432,14 @@ static void* SCHEME2C(Scheme_Object *type, void *dst, long delta, if (SCHEME_FALSEP(val)||SCHEME_BYTE_STRINGP(val)) { char* tmp; tmp = (char*)(SCHEME_FALSEP(val)?NULL:SCHEME_BYTE_STR_VAL(val)); - if (basetype_p == NULL || tmp == NULL) { - (((char**)W_OFFSET(dst,delta))[0]) = tmp; return NULL; + if (basetype_p == NULL ||tmp == NULL) { + (((char**)W_OFFSET(dst,delta))[0]) = tmp; + return NULL; } else { - *basetype_p = FOREIGN_bytes; return tmp; + *basetype_p = FOREIGN_bytes; + return tmp; } + (((char**)W_OFFSET(dst,delta))[0]) = tmp; return NULL; } else { scheme_wrong_type("Scheme->C","bytes",0,1,&(val)); return NULL; /* shush the compiler */ @@ -1427,11 +1454,14 @@ static void* SCHEME2C(Scheme_Object *type, void *dst, long delta, if (SCHEME_FALSEP(val)||SCHEME_PATH_STRINGP(val)) { char* tmp; tmp = (char*)(SCHEME_FALSEP(val)?NULL:SCHEME_PATH_VAL(TO_PATH(val))); - if (basetype_p == NULL || tmp == NULL) { - (((char**)W_OFFSET(dst,delta))[0]) = tmp; return NULL; + if (basetype_p == NULL ||tmp == NULL) { + (((char**)W_OFFSET(dst,delta))[0]) = tmp; + return NULL; } else { - *basetype_p = FOREIGN_path; return tmp; + *basetype_p = FOREIGN_path; + return tmp; } + (((char**)W_OFFSET(dst,delta))[0]) = tmp; return NULL; } else { scheme_wrong_type("Scheme->C","path",0,1,&(val)); return NULL; /* shush the compiler */ @@ -1446,11 +1476,14 @@ static void* SCHEME2C(Scheme_Object *type, void *dst, long delta, if (SCHEME_SYMBOLP(val)) { char* tmp; tmp = (char*)(SCHEME_SYM_VAL(val)); - if (basetype_p == NULL || tmp == NULL) { - (((char**)W_OFFSET(dst,delta))[0]) = tmp; return NULL; + if (basetype_p == NULL ||tmp == NULL) { + (((char**)W_OFFSET(dst,delta))[0]) = tmp; + return NULL; } else { - *basetype_p = FOREIGN_symbol; return tmp; + *basetype_p = FOREIGN_symbol; + return tmp; } + (((char**)W_OFFSET(dst,delta))[0]) = tmp; return NULL; } else { scheme_wrong_type("Scheme->C","symbol",0,1,&(val)); return NULL; /* shush the compiler */ @@ -1463,13 +1496,18 @@ static void* SCHEME2C(Scheme_Object *type, void *dst, long delta, } #endif if (SCHEME_FFIANYPTRP(val)) { - void* tmp; + void* tmp; long toff; tmp = (void*)(SCHEME_FFIANYPTR_VAL(val)); - if (basetype_p == NULL || tmp == NULL) { - (((void**)W_OFFSET(dst,delta))[0]) = tmp; return NULL; + toff = SCHEME_FFIANYPTR_OFFSET(val); + if (_offset) *_offset = toff; + if (basetype_p == NULL ||(tmp == NULL && toff == 0)) { + (((void**)W_OFFSET(dst,delta))[0]) = (_offset ? tmp : (void*)W_OFFSET(tmp, toff)); + return NULL; } else { - *basetype_p = FOREIGN_pointer; return tmp; + *basetype_p = FOREIGN_pointer; + return _offset ? tmp : (void*)W_OFFSET(tmp, toff); } + (((void**)W_OFFSET(dst,delta))[0]) = tmp; return NULL; } else { scheme_wrong_type("Scheme->C","pointer",0,1,&(val)); return NULL; /* shush the compiler */ @@ -1484,11 +1522,14 @@ static void* SCHEME2C(Scheme_Object *type, void *dst, long delta, if (1) { Scheme_Object* tmp; tmp = (Scheme_Object*)(val); - if (basetype_p == NULL || tmp == NULL) { - (((Scheme_Object**)W_OFFSET(dst,delta))[0]) = tmp; return NULL; + if (basetype_p == NULL ||tmp == NULL) { + (((Scheme_Object**)W_OFFSET(dst,delta))[0]) = tmp; + return NULL; } else { - *basetype_p = FOREIGN_scheme; return tmp; + *basetype_p = FOREIGN_scheme; + return tmp; } + (((Scheme_Object**)W_OFFSET(dst,delta))[0]) = tmp; return NULL; } else { scheme_wrong_type("Scheme->C","scheme",0,1,&(val)); return NULL; /* shush the compiler */ @@ -1498,14 +1539,22 @@ static void* SCHEME2C(Scheme_Object *type, void *dst, long delta, case FOREIGN_struct: if (!SCHEME_FFIANYPTRP(val)) scheme_wrong_type("Scheme->C", "pointer", 0, 1, &val); - if (basetype_p == NULL) { + { void* p = SCHEME_FFIANYPTR_VAL(val); - if (p == NULL) scheme_signal_error("FFI pointer value was NULL."); - memcpy(W_OFFSET(dst, delta), p, CTYPE_PRIMTYPE(type)->size); - return NULL; - } else { - *basetype_p = FOREIGN_struct; - return SCHEME_FFIANYPTR_VAL(val); + long poff = SCHEME_FFIANYPTR_OFFSET(val); + if (basetype_p == NULL) { + if (p == NULL && poff == 0) scheme_signal_error("FFI pointer value was NULL."); + memcpy(W_OFFSET(dst, delta), W_OFFSET(p, poff), CTYPE_PRIMTYPE(type)->size); + return NULL; + } else { + *basetype_p = FOREIGN_struct; + if (_offset) { + *_offset = poff; + return p; + } else { + return W_OFFSET(p, poff); + } + } } default: scheme_signal_error("corrupt foreign type: %V", type); } @@ -1643,6 +1692,8 @@ static Scheme_Object *atomic_sym; static Scheme_Object *stubborn_sym; static Scheme_Object *uncollectable_sym; static Scheme_Object *eternal_sym; +static Scheme_Object *interior_sym; +static Scheme_Object *atomic_interior_sym; static Scheme_Object *raw_sym; static Scheme_Object *fail_ok_sym; @@ -1666,6 +1717,7 @@ static Scheme_Object *foreign_malloc(int argc, Scheme_Object *argv[]) { int i, size=0, num=0, failok=0; void *from = NULL, *res = NULL; + long foff = 0; Scheme_Object *mode = NULL, *a, *base = NULL; void *(*mf)(size_t); for (i=0; i 2) { + if (SCHEME_CTYPEP(argv[2])) { + long size; + if (NULL == get_ctype_base(argv[2])) + scheme_wrong_type(MYNAME, "C-type", 2, argc, argv); + size = ctype_sizeof(argv[2]); + if (size <= 0) + scheme_wrong_type(MYNAME, "non-void-C-type", 2, argc, argv); + + noff = noff * size; + } else + scheme_wrong_type(MYNAME, "C-type", 2, argc, argv); + } + return scheme_make_offset_cptr(ptr, poff + noff, NULL); +} + +/* (mem{move,copy} dest-ptr [dest-offset [dest-offset-type]] + src-ptr [src-offset [src-c-offset-type]] + cnt [c-type]) */ +/* Copies cnt*sizeof(c-type) bytes from src-ptr + src-offset * sizeof(dest-offset-c-type) + to dest-ptr + dest-offset * sizeof(dest-offset-c-type). */ +/* or (memset dest-ptr [dest-offset [dest-offset-type]] byte cnt [c-type]) */ +/* Sets cnt*sizeof(c-type) bytes to byte + at dest-ptr + dest-offset * sizeof(dest-offset-c-type). */ +/* The argument handling for the function is very similar, so we just package it all + together. */ +static Scheme_Object *do_memop(const char *who, int is_copy, int argc, Scheme_Object **argv) +{ + void *src = NULL, *dest = NULL; + long soff = 0, doff = 0, cnt = 0; + int j, i = argc - 1, ch = 0; + + for (j = 3; j--; ) { + if (!is_copy && (j == 1)) { + /* Just get byte */ + if (i < 0) + scheme_raise_exn(MZEXN_FAIL_CONTRACT, + "%s: missing the fill-byte argument (parsing from right to left)", + who); + ch = SCHEME_INTP(argv[i]) ? SCHEME_INT_VAL(argv[i]) : -1; + if ((ch < 0) || (ch > 255)) + scheme_wrong_type(who, "byte", i, argc, argv); + i--; + } else { + long size, v = 0; + if (SCHEME_CTYPEP(argv[i])) { + if (NULL == get_ctype_base(argv[i])) + scheme_wrong_type(who, "C-type", i, argc, argv); + size = ctype_sizeof(argv[i]); + if (size <= 0) + scheme_wrong_type(who, "non-void-C-type", i, argc, argv); + --i; + } else + size = 0; + if (SCHEME_EXACT_INTEGERP(argv[i])) { + if (!scheme_get_int_val(argv[i], &v)) { + scheme_wrong_type(who, C_LONG_TYPE_STR, i, argc, argv); + } + --i; + } else if (size || (j == 2)) { + /* must have final count: */ + scheme_wrong_type(who, "count as " C_LONG_TYPE_STR, i, argc, argv); + } + + if (size) + v = v * size; + + switch (j) { + case 0: + doff = v; + break; + case 1: + soff = v; + break; + case 2: + cnt = v; + } + + if (j < 2) { + if (i < 0) { + scheme_raise_exn(MZEXN_FAIL_CONTRACT, + "%s: missing a pointer argument for %s (parsing from right to left)", + who, + (j == 0 ? "destination" : "source")); + } + + if (!SCHEME_FFIANYPTRP(argv[i])) + scheme_wrong_type(who, "cpointer", i, argc, argv); + if (j == 0) { + dest = SCHEME_FFIANYPTR_VAL(argv[i]); + doff += SCHEME_FFIANYPTR_OFFSET(argv[i]); + } else { + src = SCHEME_FFIANYPTR_VAL(argv[i]); + soff += SCHEME_FFIANYPTR_OFFSET(argv[i]); + } + --i; + } + } + } + + if (i >= 0) { + scheme_arg_mismatch(who, "unexpected extra argument (parsing from right to left): ", argv[i]); + } + + if (is_copy) + memmove(W_OFFSET(dest, doff), W_OFFSET(src, soff), cnt); + else + memset(W_OFFSET(dest, doff), ch, cnt); + + return scheme_void; +} + +#undef MYNAME +#define MYNAME "memmove" +static Scheme_Object *foreign_memmove(int argc, Scheme_Object *argv[]) +{ + return do_memop(MYNAME, 1, argc, argv); +} + +#undef MYNAME +#define MYNAME "memcpy" +static Scheme_Object *foreign_memcpy(int argc, Scheme_Object *argv[]) +{ + return do_memop(MYNAME, 1, argc, argv); +} + +#undef MYNAME +#define MYNAME "memset" +static Scheme_Object *foreign_memset(int argc, Scheme_Object *argv[]) +{ + return do_memop(MYNAME, 0, argc, argv); +} + static Scheme_Object *abs_sym; /* (ptr-ref cpointer type [['abs] n]) -> the object at the given location */ @@ -1763,12 +1970,13 @@ static Scheme_Object *abs_sym; static Scheme_Object *foreign_ptr_ref(int argc, Scheme_Object *argv[]) { int size=0; void *ptr; Scheme_Object *base; - long delta = 0; + long delta; if (!SCHEME_FFIANYPTRP(argv[0])) scheme_wrong_type(MYNAME, "cpointer", 0, argc, argv); ptr = SCHEME_FFIANYPTR_VAL(argv[0]); - if (ptr == NULL) + delta = SCHEME_FFIANYPTR_OFFSET(argv[0]); + if ((ptr == NULL) && (delta == 0)) scheme_wrong_type(MYNAME, "non-null-cpointer", 0, argc, argv); if (NULL == (base = get_ctype_base(argv[1]))) scheme_wrong_type(MYNAME, "C-type", 1, argc, argv); @@ -1789,11 +1997,11 @@ static Scheme_Object *foreign_ptr_ref(int argc, Scheme_Object *argv[]) scheme_wrong_type(MYNAME, "abs-flag", 2, argc, argv); if (!SCHEME_INTP(argv[3])) scheme_wrong_type(MYNAME, "integer", 3, argc, argv); - delta = SCHEME_INT_VAL(argv[3]); + delta += SCHEME_INT_VAL(argv[3]); } else if (argc > 2) { if (!SCHEME_INTP(argv[2])) scheme_wrong_type(MYNAME, "integer", 2, argc, argv); - delta = (size * SCHEME_INT_VAL(argv[2])); + delta += (size * SCHEME_INT_VAL(argv[2])); } return C2SCHEME(argv[1], ptr, delta, 0); } @@ -1808,12 +2016,13 @@ static Scheme_Object *foreign_ptr_ref(int argc, Scheme_Object *argv[]) static Scheme_Object *foreign_ptr_set(int argc, Scheme_Object *argv[]) { int size=0; void *ptr; - long delta = 0; + long delta; Scheme_Object *val = argv[argc-1], *base; if (!SCHEME_FFIANYPTRP(argv[0])) scheme_wrong_type(MYNAME, "cpointer", 0, argc, argv); ptr = SCHEME_FFIANYPTR_VAL(argv[0]); - if (ptr == NULL) + delta = SCHEME_FFIANYPTR_OFFSET(argv[0]); + if ((ptr == NULL) && (delta == 0)) scheme_wrong_type(MYNAME, "non-null-cpointer", 0, argc, argv); if (NULL == (base = get_ctype_base(argv[1]))) scheme_wrong_type(MYNAME, "C-type", 1, argc, argv); @@ -1840,13 +2049,13 @@ static Scheme_Object *foreign_ptr_set(int argc, Scheme_Object *argv[]) scheme_wrong_type(MYNAME, "abs-flag", 2, argc, argv); if (!SCHEME_INTP(argv[3])) scheme_wrong_type(MYNAME, "integer", 3, argc, argv); - delta = SCHEME_INT_VAL(argv[3]); + delta += SCHEME_INT_VAL(argv[3]); } else if (argc > 3) { if (!SCHEME_INTP(argv[2])) scheme_wrong_type(MYNAME, "integer", 2, argc, argv); - delta = (size * SCHEME_INT_VAL(argv[2])); + delta += (size * SCHEME_INT_VAL(argv[2])); } - SCHEME2C(argv[1], ptr, delta, val, NULL, 0); + SCHEME2C(argv[1], ptr, delta, val, NULL, NULL, 0); return scheme_void; } @@ -1860,7 +2069,7 @@ static Scheme_Object *foreign_ptr_equal_p(int argc, Scheme_Object *argv[]) if (!SCHEME_FFIANYPTRP(argv[1])) scheme_wrong_type(MYNAME, "cpointer", 1, argc, argv); return (SAME_OBJ(argv[0],argv[1]) || - (SCHEME_FFIANYPTR_VAL(argv[0]) == SCHEME_FFIANYPTR_VAL(argv[1]))) + ((SCHEME_FFIANYPTR_OFFSETVAL(argv[0]) == SCHEME_FFIANYPTR_OFFSETVAL(argv[1])))) ? scheme_true : scheme_false; } @@ -1869,6 +2078,7 @@ static Scheme_Object *foreign_ptr_equal_p(int argc, Scheme_Object *argv[]) #define MYNAME "make-sized-byte-string" static Scheme_Object *foreign_make_sized_byte_string(int argc, Scheme_Object *argv[]) /* Warning: no copying is done so it is possible to share string contents. */ +/* Warning: if source ptr has a offset, resulting string object uses shifted pointer. */ /* (Should use real byte-strings with new version.) */ { long len; @@ -1878,7 +2088,7 @@ static Scheme_Object *foreign_make_sized_byte_string(int argc, Scheme_Object *ar scheme_wrong_type(MYNAME, "integer in a C long range", 1, argc, argv); if (SCHEME_FALSEP(argv[0])) return scheme_false; else return - scheme_make_sized_byte_string(SCHEME_FFIANYPTR_VAL(argv[0]), len, 0); + scheme_make_sized_byte_string(SCHEME_FFIANYPTR_OFFSETVAL(argv[0]), len, 0); } /* internal: apply Scheme finalizer */ @@ -1950,6 +2160,7 @@ Scheme_Object *ffi_do_call(void *data, int argc, Scheme_Object *argv[]) Scheme_Object *otype = SCHEME_VEC_ELS(data)[3]; Scheme_Object *base; ffi_cif *cif = (ffi_cif*)(SCHEME_VEC_ELS(data)[4]); + long cfoff = SCHEME_INT_VAL(SCHEME_VEC_ELS(data)[5]); int nargs = cif->nargs; /* When the foreign function is called, we need an array (ivals) of nargs * ForeignAny objects to store the actual C values that are created, and we @@ -1970,25 +2181,30 @@ Scheme_Object *ffi_do_call(void *data, int argc, Scheme_Object *argv[]) void **avalues, *p, *newp, *tmp; GC_CAN_IGNORE ForeignAny stack_ivals[MAX_QUICK_ARGS]; void *stack_avalues[MAX_QUICK_ARGS]; + long stack_offsets[MAX_QUICK_ARGS]; int i; - long basetype; + long basetype, offset, *offsets; if (nargs <= MAX_QUICK_ARGS) { ivals = stack_ivals; avalues = stack_avalues; + offsets = stack_offsets; } else { ivals = malloc(nargs * sizeof(ForeignAny)); avalues = scheme_malloc(nargs * sizeof(void*)); + offsets = scheme_malloc(nargs * sizeof(long)); } /* iterate on input values and types */ for (i=0; iproc, argc, argv); - SCHEME2C(data->otype, resultp, 0, p, NULL, 1); + SCHEME2C(data->otype, resultp, 0, p, NULL, NULL, 1); } /* see ffi-callback below */ @@ -2278,6 +2501,10 @@ void scheme_init_foreign(Scheme_Env *env) uncollectable_sym = scheme_intern_symbol("uncollectable"); MZ_REGISTER_STATIC(eternal_sym); eternal_sym = scheme_intern_symbol("eternal"); + MZ_REGISTER_STATIC(interior_sym); + interior_sym = scheme_intern_symbol("interior"); + MZ_REGISTER_STATIC(atomic_interior_sym); + atomic_interior_sym = scheme_intern_symbol("atomic-interior"); MZ_REGISTER_STATIC(raw_sym); raw_sym = scheme_intern_symbol("raw"); MZ_REGISTER_STATIC(fail_ok_sym); @@ -2330,6 +2557,14 @@ void scheme_init_foreign(Scheme_Env *env) scheme_make_prim_w_arity(foreign_end_stubborn_change, "end-stubborn-change", 1, 1), menv); scheme_add_global("free", scheme_make_prim_w_arity(foreign_free, "free", 1, 1), menv); + scheme_add_global("ptr-add", + scheme_make_prim_w_arity(foreign_ptr_add, "ptr-add", 2, 3), menv); + scheme_add_global("memmove", + scheme_make_prim_w_arity(foreign_memmove, "memmove", 3, 8), menv); + scheme_add_global("memcpy", + scheme_make_prim_w_arity(foreign_memcpy, "memcpy", 3, 8), menv); + scheme_add_global("memset", + scheme_make_prim_w_arity(foreign_memset, "memset", 3, 6), menv); scheme_add_global("ptr-ref", scheme_make_prim_w_arity(foreign_ptr_ref, "ptr-ref", 2, 4), menv); scheme_add_global("ptr-set!", diff --git a/src/foreign/foreign.ssc b/src/foreign/foreign.ssc index 3452088202..d8d1ef2b04 100755 --- a/src/foreign/foreign.ssc +++ b/src/foreign/foreign.ssc @@ -81,6 +81,8 @@ exec mzpp -s "---begin" -o `echo "$0" | sed 's/ssc$/c/'` "$0" # define GC_CAN_IGNORE /* empty */ #endif +#define W_OFFSET(src, delta) ((char *)(src) XFORM_OK_PLUS (delta)) + /* same as the macro in file.c */ #define TO_PATH(x) (SCHEME_PATHP(x) ? (x) : scheme_char_string_to_path(x)) @@ -423,6 +425,8 @@ Scheme_Object *utf16_pointer_to_ucs4_string(unsigned short *utf) ;; function with the same arguments as above) ;; c->s: name of value construction macro/function ;; (or a function of the value that generates the expression) +;; offset: if specified as "X", use "SCHEME_X_OFFSET" to extract an offset +;; value for s->c, otherwise leave 0 as the offset (define types '()) @@ -431,7 +435,7 @@ Scheme_Object *utf16_pointer_to_ucs4_string(unsigned short *utf) (define *type-counter* 0) -(define (describe-type stype cname ftype ctype pred s->c c->s) +(define (describe-type stype cname ftype ctype pred s->c c->s offset) (set! *type-counter* (add1 *type-counter*)) (~ "#define FOREIGN_"cname" ("*type-counter*")" \\ "/* Type Name: "stype (and (not (equal? cname stype)) @@ -446,6 +450,9 @@ Scheme_Object *utf16_pointer_to_ucs4_string(unsigned short *utf) (if pred "-none- (set by the predicate)" "-none-")] [(procedure? s->c) (s->c "" "aux")] [else (list s->c"()")]) \\ + " * S->C offset: "(cond + [(not offset) "0"] + [else offset]) \\ " * C->Scheme: "(cond [(not c->s) "-none-"] [(procedure? c->s) (c->s "")] [else (list c->s"()")]) \\ @@ -472,10 +479,11 @@ Scheme_Object *utf16_pointer_to_ucs4_string(unsigned short *utf) [macro (prop 'macro)] [pred (prop 'pred (and macro (list "SCHEME_"macro"P")))] [s->c (prop 's->c (and macro (list "SCHEME_"macro"_VAL")))] - [c->s (prop 'c->s)]) - (describe-type stype cname ftype ctype pred s->c c->s) + [c->s (prop 'c->s)] + [offset (prop 'offset #f)]) + (describe-type stype cname ftype ctype pred s->c c->s offset) `(,type (stype ,stype) (cname ,cname) (ftype ,ftype) (ctype ,ctype) - (macro ,macro) (pred ,pred) (s->c ,s->c) (c->s ,c->s)))) + (macro ,macro) (pred ,pred) (s->c ,s->c) (c->s ,c->s) (offset ,offset)))) (define (defctype name . args) (set! types (append! types (list (make-ctype name args))))) @@ -492,6 +500,7 @@ Scheme_Object *utf16_pointer_to_ucs4_string(unsigned short *utf) [pred (id 'pred)] [s->c (id 's->c)] [c->s (id 'c->s)] + [offset (id 'offset)] [ptr? (id 'ptr?)]) #'(for-each (lambda (t) @@ -505,6 +514,7 @@ Scheme_Object *utf16_pointer_to_ucs4_string(unsigned short *utf) [pred (get 'pred)] [s->c (get 's->c)] [c->s (get 'c->s)] + [offset (get 'offset)] [ptr? (equal? "pointer" ftype)]) body ...)) types)))])) @@ -665,6 +675,7 @@ Scheme_Object *utf16_pointer_to_ucs4_string(unsigned short *utf) (defctype 'pointer 'ctype "void*" 'macro "FFIANYPTR" + 'offset "FFIANYPTR" 'c->s "scheme_make_foreign_cpointer") ;; This is probably not needed @@ -856,6 +867,10 @@ void free_libffi_type(void *ignored, void *p) (SCHEME_FFIOBJP(x) ? (((ffi_obj_struct*)x)->obj) : \ SCHEME_BYTE_STRINGP(x) ? SCHEME_BYTE_STR_VAL(x) : \ NULL))) +#define SCHEME_FFIANYPTR_OFFSET(x) \ + (SCHEME_CPTRP(x) ? SCHEME_CPTR_OFFSET(x) : 0) +#define SCHEME_FFIANYPTR_OFFSETVAL(x) \ + W_OFFSET(SCHEME_FFIANYPTR_VAL(x), SCHEME_FFIANYPTR_OFFSET(x)) #define scheme_make_foreign_cpointer(x) \ ((x==NULL)?scheme_false:scheme_make_cptr(x,NULL)) @@ -906,7 +921,6 @@ void free_libffi_type(void *ignored, void *p) #define C2SCHEME(typ,src,delta,argsloc) c_to_scheme(typ,src,delta) #define REF_CTYPE(ctype) (((ctype *)W_OFFSET(src,delta))[0]) #endif -#define W_OFFSET(src, delta) ((char *)(src) XFORM_OK_PLUS (delta)) static Scheme_Object *C2SCHEME(Scheme_Object *type, void *src, int delta, int args_loc) { @@ -944,9 +958,9 @@ static Scheme_Object *C2SCHEME(Scheme_Object *type, void *src, int delta, int ar * the function is different: in the relevant cases zero an int and offset the * ptr */ #ifdef SCHEME_BIG_ENDIAN -#define SCHEME2C(typ,dst,delta,val,basep,retloc) scheme_to_c(typ,dst,delta,val,basep,retloc) +#define SCHEME2C(typ,dst,delta,val,basep,_offset,retloc) scheme_to_c(typ,dst,delta,val,basep,_offset,retloc) #else -#define SCHEME2C(typ,dst,delta,val,basep,retloc) scheme_to_c(typ,dst,delta,val,basep) +#define SCHEME2C(typ,dst,delta,val,basep,_offset,retloc) scheme_to_c(typ,dst,delta,val,_offset,basep) #endif /* Usually writes the C object to dst and returns NULL. When basetype_p is not @@ -954,7 +968,7 @@ static Scheme_Object *C2SCHEME(Scheme_Object *type, void *src, int delta, int ar * basetype_p is set to the corrsponding number tag. If basetype_p is NULL, * then a struct value will be *copied* into dst. */ static void* SCHEME2C(Scheme_Object *type, void *dst, long delta, - Scheme_Object *val, long *basetype_p, + Scheme_Object *val, long *basetype_p, long *_offset, int ret_loc) { if (!SCHEME_CTYPEP(type)) @@ -993,14 +1007,27 @@ static void* SCHEME2C(Scheme_Object *type, void *dst, long delta, " }") (display "#endif\n") (~ " if ("(f pred)") {" \\ - " "ctype" tmp;" \\ + " "ctype" tmp;" (if offset " long toff;" "") \\ " tmp = ("ctype")("(f s->c)");") - (if ptr? - (~ " if (basetype_p == NULL || tmp == NULL) {" \\ - " "x" = tmp; return NULL;" \\ + (when offset + (~ " toff = SCHEME_"offset"_OFFSET(val);") + (~ " if (_offset) *_offset = toff;")) + (when ptr? + (~ " if (basetype_p == NULL ||" + (if offset + "(tmp == NULL && toff == 0)" + "tmp == NULL") + ") {") + (if offset + (~ " "x" = (_offset ? tmp : ("ctype")W_OFFSET(tmp, toff));") + (~ " "x" = tmp;")) + (~ " return NULL;" \\ " } else {" \\ - " *basetype_p = FOREIGN_"cname"; return tmp;" \\ - " }") + " *basetype_p = FOREIGN_"cname";") + (if offset + (~ " return _offset ? tmp : ("ctype")W_OFFSET(tmp, toff);") + (~ " return tmp;")) + (~ " }") (~ " "x" = tmp; return NULL;")) (~ " } else {" \\ " "(wrong-type "val" stype) \\ @@ -1014,14 +1041,22 @@ static void* SCHEME2C(Scheme_Object *type, void *dst, long delta, case FOREIGN_struct: if (!SCHEME_FFIANYPTRP(val)) scheme_wrong_type("Scheme->C", "pointer", 0, 1, &val); - if (basetype_p == NULL) { + { void* p = SCHEME_FFIANYPTR_VAL(val); - if (p == NULL) scheme_signal_error("FFI pointer value was NULL."); - memcpy(W_OFFSET(dst, delta), p, CTYPE_PRIMTYPE(type)->size); - return NULL; - } else { - *basetype_p = FOREIGN_struct; - return SCHEME_FFIANYPTR_VAL(val); + long poff = SCHEME_FFIANYPTR_OFFSET(val); + if (basetype_p == NULL) { + if (p == NULL && poff == 0) scheme_signal_error("FFI pointer value was NULL."); + memcpy(W_OFFSET(dst, delta), W_OFFSET(p, poff), CTYPE_PRIMTYPE(type)->size); + return NULL; + } else { + *basetype_p = FOREIGN_struct; + if (_offset) { + *_offset = poff; + return p; + } else { + return W_OFFSET(p, poff); + } + } } default: scheme_signal_error("corrupt foreign type: %V", type); } @@ -1148,7 +1183,7 @@ static void* SCHEME2C(Scheme_Object *type, void *dst, long delta, /*****************************************************************************/ /* Pointer type user functions */ -{:(defsymbols nonatomic atomic stubborn uncollectable eternal raw fail-ok):} +{:(defsymbols nonatomic atomic stubborn uncollectable eternal interior atomic-interior raw fail-ok):} /* (malloc num type cpointer mode) -> pointer */ /* The arguments for this function are: @@ -1168,6 +1203,7 @@ static void* SCHEME2C(Scheme_Object *type, void *dst, long delta, { int i, size=0, num=0, failok=0; void *from = NULL, *res = NULL; + long foff = 0; Scheme_Object *mode = NULL, *a, *base = NULL; void *(*mf)(size_t); for (i=0; i 2) { + if (SCHEME_CTYPEP(argv[2])) { + long size; + if (NULL == get_ctype_base(argv[2])) + scheme_wrong_type(MYNAME, "C-type", 2, argc, argv); + size = ctype_sizeof(argv[2]); + if (size <= 0) + scheme_wrong_type(MYNAME, "non-void-C-type", 2, argc, argv); + + noff = noff * size; + } else + scheme_wrong_type(MYNAME, "C-type", 2, argc, argv); + } + return scheme_make_offset_cptr(ptr, poff + noff, NULL); +} + +/* (mem{move,copy} dest-ptr [dest-offset [dest-offset-type]] + src-ptr [src-offset [src-c-offset-type]] + cnt [c-type]) */ +/* Copies cnt*sizeof(c-type) bytes from src-ptr + src-offset * sizeof(dest-offset-c-type) + to dest-ptr + dest-offset * sizeof(dest-offset-c-type). */ +/* or (memset dest-ptr [dest-offset [dest-offset-type]] byte cnt [c-type]) */ +/* Sets cnt*sizeof(c-type) bytes to byte + at dest-ptr + dest-offset * sizeof(dest-offset-c-type). */ +/* The argument handling for the function is very similar, so we just package it all + together. */ +static Scheme_Object *do_memop(const char *who, int is_copy, int argc, Scheme_Object **argv) +{ + void *src = NULL, *dest = NULL; + long soff = 0, doff = 0, cnt = 0; + int j, i = argc - 1, ch = 0; + + for (j = 3; j--; ) { + if (!is_copy && (j == 1)) { + /* Just get byte */ + if (i < 0) + scheme_raise_exn(MZEXN_FAIL_CONTRACT, + "%s: missing the fill-byte argument (parsing from right to left)", + who); + ch = SCHEME_INTP(argv[i]) ? SCHEME_INT_VAL(argv[i]) : -1; + if ((ch < 0) || (ch > 255)) + scheme_wrong_type(who, "byte", i, argc, argv); + i--; + } else { + long size, v = 0; + if (SCHEME_CTYPEP(argv[i])) { + if (NULL == get_ctype_base(argv[i])) + scheme_wrong_type(who, "C-type", i, argc, argv); + size = ctype_sizeof(argv[i]); + if (size <= 0) + scheme_wrong_type(who, "non-void-C-type", i, argc, argv); + --i; + } else + size = 0; + if (SCHEME_EXACT_INTEGERP(argv[i])) { + if (!scheme_get_int_val(argv[i], &v)) { + scheme_wrong_type(who, C_LONG_TYPE_STR, i, argc, argv); + } + --i; + } else if (size || (j == 2)) { + /* must have final count: */ + scheme_wrong_type(who, "count as " C_LONG_TYPE_STR, i, argc, argv); + } + + if (size) + v = v * size; + + switch (j) { + case 0: + doff = v; + break; + case 1: + soff = v; + break; + case 2: + cnt = v; + } + + if (j < 2) { + if (i < 0) { + scheme_raise_exn(MZEXN_FAIL_CONTRACT, + "%s: missing a pointer argument for %s (parsing from right to left)", + who, + (j == 0 ? "destination" : "source")); + } + + if (!SCHEME_FFIANYPTRP(argv[i])) + scheme_wrong_type(who, "cpointer", i, argc, argv); + if (j == 0) { + dest = SCHEME_FFIANYPTR_VAL(argv[i]); + doff += SCHEME_FFIANYPTR_OFFSET(argv[i]); + } else { + src = SCHEME_FFIANYPTR_VAL(argv[i]); + soff += SCHEME_FFIANYPTR_OFFSET(argv[i]); + } + --i; + } + } + } + + if (i >= 0) { + scheme_arg_mismatch(who, "unexpected extra argument (parsing from right to left): ", argv[i]); + } + + if (is_copy) + memmove(W_OFFSET(dest, doff), W_OFFSET(src, soff), cnt); + else + memset(W_OFFSET(dest, doff), ch, cnt); + + return scheme_void; +} + +{:(cdefine memmove 3 8):} +{ + return do_memop(MYNAME, 1, argc, argv); +} + +{:(cdefine memcpy 3 8):} +{ + return do_memop(MYNAME, 1, argc, argv); +} + +{:(cdefine memset 3 6):} +{ + return do_memop(MYNAME, 0, argc, argv); +} + {:(defsymbols abs):} /* (ptr-ref cpointer type [['abs] n]) -> the object at the given location */ @@ -1259,12 +1442,13 @@ static void* SCHEME2C(Scheme_Object *type, void *dst, long delta, {:(cdefine ptr-ref 2 4):} { int size=0; void *ptr; Scheme_Object *base; - long delta = 0; + long delta; if (!SCHEME_FFIANYPTRP(argv[0])) scheme_wrong_type(MYNAME, "cpointer", 0, argc, argv); ptr = SCHEME_FFIANYPTR_VAL(argv[0]); - if (ptr == NULL) + delta = SCHEME_FFIANYPTR_OFFSET(argv[0]); + if ((ptr == NULL) && (delta == 0)) scheme_wrong_type(MYNAME, "non-null-cpointer", 0, argc, argv); if (NULL == (base = get_ctype_base(argv[1]))) scheme_wrong_type(MYNAME, "C-type", 1, argc, argv); @@ -1285,11 +1469,11 @@ static void* SCHEME2C(Scheme_Object *type, void *dst, long delta, scheme_wrong_type(MYNAME, "abs-flag", 2, argc, argv); if (!SCHEME_INTP(argv[3])) scheme_wrong_type(MYNAME, "integer", 3, argc, argv); - delta = SCHEME_INT_VAL(argv[3]); + delta += SCHEME_INT_VAL(argv[3]); } else if (argc > 2) { if (!SCHEME_INTP(argv[2])) scheme_wrong_type(MYNAME, "integer", 2, argc, argv); - delta = (size * SCHEME_INT_VAL(argv[2])); + delta += (size * SCHEME_INT_VAL(argv[2])); } return C2SCHEME(argv[1], ptr, delta, 0); } @@ -1302,12 +1486,13 @@ static void* SCHEME2C(Scheme_Object *type, void *dst, long delta, {:(cdefine ptr-set! 3 5):} { int size=0; void *ptr; - long delta = 0; + long delta; Scheme_Object *val = argv[argc-1], *base; if (!SCHEME_FFIANYPTRP(argv[0])) scheme_wrong_type(MYNAME, "cpointer", 0, argc, argv); ptr = SCHEME_FFIANYPTR_VAL(argv[0]); - if (ptr == NULL) + delta = SCHEME_FFIANYPTR_OFFSET(argv[0]); + if ((ptr == NULL) && (delta == 0)) scheme_wrong_type(MYNAME, "non-null-cpointer", 0, argc, argv); if (NULL == (base = get_ctype_base(argv[1]))) scheme_wrong_type(MYNAME, "C-type", 1, argc, argv); @@ -1334,13 +1519,13 @@ static void* SCHEME2C(Scheme_Object *type, void *dst, long delta, scheme_wrong_type(MYNAME, "abs-flag", 2, argc, argv); if (!SCHEME_INTP(argv[3])) scheme_wrong_type(MYNAME, "integer", 3, argc, argv); - delta = SCHEME_INT_VAL(argv[3]); + delta += SCHEME_INT_VAL(argv[3]); } else if (argc > 3) { if (!SCHEME_INTP(argv[2])) scheme_wrong_type(MYNAME, "integer", 2, argc, argv); - delta = (size * SCHEME_INT_VAL(argv[2])); + delta += (size * SCHEME_INT_VAL(argv[2])); } - SCHEME2C(argv[1], ptr, delta, val, NULL, 0); + SCHEME2C(argv[1], ptr, delta, val, NULL, NULL, 0); return scheme_void; } @@ -1352,13 +1537,14 @@ static void* SCHEME2C(Scheme_Object *type, void *dst, long delta, if (!SCHEME_FFIANYPTRP(argv[1])) scheme_wrong_type(MYNAME, "cpointer", 1, argc, argv); return (SAME_OBJ(argv[0],argv[1]) || - (SCHEME_FFIANYPTR_VAL(argv[0]) == SCHEME_FFIANYPTR_VAL(argv[1]))) + ((SCHEME_FFIANYPTR_OFFSETVAL(argv[0]) == SCHEME_FFIANYPTR_OFFSETVAL(argv[1])))) ? scheme_true : scheme_false; } /* (make-sized-byte-string cpointer len) */ {:(cdefine make-sized-byte-string 2 2):} /* Warning: no copying is done so it is possible to share string contents. */ +/* Warning: if source ptr has a offset, resulting string object uses shifted pointer. */ /* (Should use real byte-strings with new version.) */ { long len; @@ -1368,7 +1554,7 @@ static void* SCHEME2C(Scheme_Object *type, void *dst, long delta, scheme_wrong_type(MYNAME, "integer in a C long range", 1, argc, argv); if (SCHEME_FALSEP(argv[0])) return scheme_false; else return - scheme_make_sized_byte_string(SCHEME_FFIANYPTR_VAL(argv[0]), len, 0); + scheme_make_sized_byte_string(SCHEME_FFIANYPTR_OFFSETVAL(argv[0]), len, 0); } /* internal: apply Scheme finalizer */ @@ -1442,6 +1628,7 @@ Scheme_Object *ffi_do_call(void *data, int argc, Scheme_Object *argv[]) Scheme_Object *otype = SCHEME_VEC_ELS(data)[3]; Scheme_Object *base; ffi_cif *cif = (ffi_cif*)(SCHEME_VEC_ELS(data)[4]); + long cfoff = SCHEME_INT_VAL(SCHEME_VEC_ELS(data)[5]); int nargs = cif->nargs; /* When the foreign function is called, we need an array (ivals) of nargs * ForeignAny objects to store the actual C values that are created, and we @@ -1462,25 +1649,30 @@ Scheme_Object *ffi_do_call(void *data, int argc, Scheme_Object *argv[]) void **avalues, *p, *newp, *tmp; GC_CAN_IGNORE ForeignAny stack_ivals[MAX_QUICK_ARGS]; void *stack_avalues[MAX_QUICK_ARGS]; + long stack_offsets[MAX_QUICK_ARGS]; int i; - long basetype; + long basetype, offset, *offsets; if (nargs <= MAX_QUICK_ARGS) { ivals = stack_ivals; avalues = stack_avalues; + offsets = stack_offsets; } else { ivals = malloc(nargs * sizeof(ForeignAny)); avalues = scheme_malloc(nargs * sizeof(void*)); + offsets = scheme_malloc(nargs * sizeof(long)); } /* iterate on input values and types */ for (i=0; iproc, argc, argv); - SCHEME2C(data->otype, resultp, 0, p, NULL, 1); + SCHEME2C(data->otype, resultp, 0, p, NULL, NULL, 1); } /* see ffi-callback below */ diff --git a/src/mzscheme/gc2/Makefile.in b/src/mzscheme/gc2/Makefile.in index 1a5b751580..8f90337a26 100644 --- a/src/mzscheme/gc2/Makefile.in +++ b/src/mzscheme/gc2/Makefile.in @@ -121,7 +121,8 @@ XFORMDEP_NOPRECOMP = $(srcdir)/gc2.h $(srcdir)/xform.ss $(srcdir)/xform-mod.ss XFORMDEP = $(XFORMDEP_NOPRECOMP) $(XSRCDIR)/precomp.h $(XSRCDIR)/precomp.h : $(XFORMDEP_NOPRECOMP) $(srcdir)/precomp.c $(srcdir)/../src/schpriv.h $(srcdir)/../include/scheme.h \ - $(srcdir)/../sconfig.h $(srcdir)/../uconfig.h $(srcdir)/../src/schvers.h $(srcdir)/../src/schemef.h + $(srcdir)/../sconfig.h $(srcdir)/../uconfig.h $(srcdir)/../src/schvers.h $(srcdir)/../src/schemef.h \ + $(srcdir)/../src/stypes.h env XFORM_PRECOMP=yes $(XFORM_NOPRECOMP) $(XSRCDIR)/precomp.h $(srcdir)/precomp.c $(XSRCDIR)/salloc.c: ../src/salloc.@LTO@ $(XFORMDEP) diff --git a/src/mzscheme/gc2/compact.c b/src/mzscheme/gc2/compact.c index 342a11ecc5..652461b6b7 100644 --- a/src/mzscheme/gc2/compact.c +++ b/src/mzscheme/gc2/compact.c @@ -3884,6 +3884,11 @@ void *GC_malloc_allow_interior(size_t size_in_bytes) return malloc_bigblock(size_in_bytes, MTYPE_ARRAY, 1); } +void *GC_malloc_atomic_allow_interior(size_t size_in_bytes) +{ + return malloc_bigblock(size_in_bytes, MTYPE_ATOMIC, 1); +} + void *GC_malloc_tagged_allow_interior(size_t size_in_bytes) { return malloc_bigblock(size_in_bytes, MTYPE_TAGGED, 1); diff --git a/src/mzscheme/gc2/gc2.h b/src/mzscheme/gc2/gc2.h index bb2e2c719b..454d566391 100644 --- a/src/mzscheme/gc2/gc2.h +++ b/src/mzscheme/gc2/gc2.h @@ -180,6 +180,10 @@ GC2_EXTERN void *GC_malloc_allow_interior(size_t size_in_bytes); pointers into the middle of the array, or just past the end of the array. */ +GC2_EXTERN void *GC_malloc_atomic_allow_interior(size_t size_in_bytes); +/* + Like GC_malloc_allow_interior(), but for an atomic object. */ + GC2_EXTERN void *GC_malloc_tagged_allow_interior(size_t size_in_bytes); /* Like GC_malloc_allow_interior(), but for a tagged object. */ diff --git a/src/mzscheme/gc2/newgc.c b/src/mzscheme/gc2/newgc.c index 1370e430c5..7a2c50c94c 100644 --- a/src/mzscheme/gc2/newgc.c +++ b/src/mzscheme/gc2/newgc.c @@ -491,6 +491,7 @@ void *GC_malloc_array_tagged(size_t s) { return allocate(s, PAGE_TARRAY); } void *GC_malloc_atomic(size_t s) { return allocate(s, PAGE_ATOMIC); } void *GC_malloc_atomic_uncollectable(size_t s) { return malloc(s); } void *GC_malloc_allow_interior(size_t s) {return allocate_big(s, PAGE_ARRAY);} +void *GC_malloc_atomic_allow_interior(size_t s) {return allocate_big(s, PAGE_ATOMIC);} void *GC_malloc_tagged_allow_interior(size_t s) {return allocate_big(s, PAGE_TAGGED);} void GC_free(void *p) {} diff --git a/src/mzscheme/include/mzscheme.exp b/src/mzscheme/include/mzscheme.exp index 3658e6c5dc..14357182a3 100644 --- a/src/mzscheme/include/mzscheme.exp +++ b/src/mzscheme/include/mzscheme.exp @@ -265,6 +265,7 @@ scheme_get_long_long_val scheme_get_unsigned_long_long_val scheme_real_to_double scheme_make_cptr +scheme_make_offset_cptr scheme_get_proc_name scheme_utf8_decode scheme_utf8_decode_as_prefix @@ -487,6 +488,7 @@ scheme_eqv scheme_equal scheme_equal_hash_key scheme_equal_hash_key2 +scheme_set_type_equality scheme_build_list scheme_build_list_offset scheme_make_list_immutable diff --git a/src/mzscheme/include/mzscheme3m.exp b/src/mzscheme/include/mzscheme3m.exp index 39444cf9d7..02e8de4446 100644 --- a/src/mzscheme/include/mzscheme3m.exp +++ b/src/mzscheme/include/mzscheme3m.exp @@ -164,6 +164,9 @@ GC_malloc_one_tagged GC_malloc_atomic_uncollectable scheme_malloc_uncollectable GC_malloc_array_tagged +GC_malloc_allow_interior +GC_malloc_atomic_allow_interior +GC_malloc_tagged_allow_interior scheme_malloc_eternal scheme_end_stubborn_change scheme_calloc @@ -272,6 +275,7 @@ scheme_get_long_long_val scheme_get_unsigned_long_long_val scheme_real_to_double scheme_make_cptr +scheme_make_offset_cptr scheme_get_proc_name scheme_utf8_decode scheme_utf8_decode_as_prefix @@ -495,6 +499,7 @@ scheme_equal scheme_hash_key scheme_equal_hash_key scheme_equal_hash_key2 +scheme_set_type_equality scheme_build_list scheme_build_list_offset scheme_make_list_immutable diff --git a/src/mzscheme/include/mzwin.def b/src/mzscheme/include/mzwin.def index 20da038312..70c8d49fea 100644 --- a/src/mzscheme/include/mzwin.def +++ b/src/mzscheme/include/mzwin.def @@ -253,6 +253,7 @@ EXPORTS scheme_get_unsigned_long_long_val scheme_real_to_double scheme_make_cptr + scheme_make_offset_cptr scheme_get_proc_name scheme_utf8_decode scheme_utf8_decode_as_prefix @@ -475,6 +476,7 @@ EXPORTS scheme_equal scheme_equal_hash_key scheme_equal_hash_key2 + scheme_set_type_equality scheme_build_list scheme_build_list_offset scheme_make_list_immutable diff --git a/src/mzscheme/include/mzwin3m.def b/src/mzscheme/include/mzwin3m.def index 2afb3f6e96..59554ba68f 100644 --- a/src/mzscheme/include/mzwin3m.def +++ b/src/mzscheme/include/mzwin3m.def @@ -156,6 +156,9 @@ EXPORTS GC_malloc_atomic_uncollectable scheme_malloc_uncollectable GC_malloc_array_tagged + GC_malloc_allow_interior + GC_malloc_atomic_allow_interior + GC_malloc_tagged_allow_interior scheme_malloc_eternal scheme_end_stubborn_change scheme_calloc @@ -264,6 +267,7 @@ EXPORTS scheme_get_unsigned_long_long_val scheme_real_to_double scheme_make_cptr + scheme_make_offset_cptr scheme_get_proc_name scheme_utf8_decode scheme_utf8_decode_as_prefix @@ -487,6 +491,7 @@ EXPORTS scheme_hash_key scheme_equal_hash_key scheme_equal_hash_key2 + scheme_set_type_equality scheme_build_list scheme_build_list_offset scheme_make_list_immutable diff --git a/src/mzscheme/include/scheme.h b/src/mzscheme/include/scheme.h index 47019be22b..ade729c3d3 100644 --- a/src/mzscheme/include/scheme.h +++ b/src/mzscheme/include/scheme.h @@ -325,6 +325,10 @@ typedef struct Scheme_Vector { typedef struct Scheme_Print_Params Scheme_Print_Params; typedef void (*Scheme_Type_Printer)(Scheme_Object *v, int for_display, Scheme_Print_Params *pp); +typedef int (*Scheme_Equal_Proc)(Scheme_Object *obj1, Scheme_Object *obj2); +typedef long (*Scheme_Primary_Hash_Proc)(Scheme_Object *obj, long base); +typedef long (*Scheme_Secondary_Hash_Proc)(Scheme_Object *obj); + /* This file defines all the built-in types */ #ifdef INCLUDE_WITHOUT_PATHS # include "stypes.h" @@ -459,7 +463,7 @@ typedef void (*Scheme_Type_Printer)(Scheme_Object *v, int for_display, Scheme_Pr #define SCHEME_UDPP(obj) SAME_TYPE(SCHEME_TYPE(obj), scheme_udp_type) #define SCHEME_UDP_EVTP(obj) SAME_TYPE(SCHEME_TYPE(obj), scheme_udp_evt_type) -#define SCHEME_CPTRP(obj) SAME_TYPE(SCHEME_TYPE(obj), scheme_cpointer_type) +#define SCHEME_CPTRP(obj) (SAME_TYPE(SCHEME_TYPE(obj), scheme_cpointer_type) || SAME_TYPE(SCHEME_TYPE(obj), scheme_offset_cpointer_type)) #define SCHEME_MUTABLEP(obj) (!(MZ_OPT_HASH_KEY((Scheme_Inclhash_Object *)(obj)) & 0x1)) #define SCHEME_IMMUTABLEP(obj) (MZ_OPT_HASH_KEY((Scheme_Inclhash_Object *)(obj)) & 0x1) @@ -549,8 +553,21 @@ typedef void (*Scheme_Type_Printer)(Scheme_Object *v, int for_display, Scheme_Pr #define SCHEME_PINT_VAL(obj) (((Scheme_Simple_Object *)(obj))->u.ptr_int_val.pint) #define SCHEME_PLONG_VAL(obj) (((Scheme_Simple_Object *)(obj))->u.ptr_long_val.pint) -#define SCHEME_CPTR_VAL(obj) (((Scheme_Simple_Object *)(obj))->u.cptr_val.val) -#define SCHEME_CPTR_TYPE(obj) (((Scheme_Simple_Object *)(obj))->u.cptr_val.type) +typedef struct Scheme_Cptr +{ + Scheme_Object so; + void *val; + Scheme_Object *type; +} Scheme_Cptr; +typedef struct Scheme_Offset_Cptr +{ + Scheme_Cptr cptr; + long offset; +} Scheme_Offset_Cptr; + +#define SCHEME_CPTR_VAL(obj) (((Scheme_Cptr *)(obj))->val) +#define SCHEME_CPTR_TYPE(obj) (((Scheme_Cptr *)(obj))->type) +#define SCHEME_CPTR_OFFSET(obj) (SAME_TYPE(_SCHEME_TYPE(obj), scheme_offset_cpointer_type) ? ((Scheme_Offset_Cptr *)obj)->offset : 0) #define SCHEME_SET_IMMUTABLE(obj) ((MZ_OPT_HASH_KEY((Scheme_Inclhash_Object *)(obj)) |= 0x1)) #define SCHEME_SET_CHAR_STRING_IMMUTABLE(obj) SCHEME_SET_IMMUTABLE(obj) @@ -1515,6 +1532,7 @@ void *scheme_malloc(size_t size); # define scheme_malloc_weak GC_malloc_weak # define scheme_malloc_weak_tagged GC_malloc_one_weak_tagged # define scheme_malloc_allow_interior GC_malloc_allow_interior +# define scheme_malloc_atomic_allow_interior GC_malloc_allow_interior #else # ifdef USE_TAGGED_ALLOCATION extern void *scheme_malloc_tagged(size_t); @@ -1537,6 +1555,7 @@ extern void *scheme_malloc_envunbox(size_t); # endif # define scheme_malloc_small_dirty_tagged scheme_malloc_small_tagged # define scheme_malloc_allow_interior scheme_malloc +# define scheme_malloc_atomic_allow_interior scheme_malloc_atomic # define scheme_malloc_small_atomic_tagged scheme_malloc_atomic_tagged #endif diff --git a/src/mzscheme/src/bool.c b/src/mzscheme/src/bool.c index ccf6f76714..e39ca8e741 100644 --- a/src/mzscheme/src/bool.c +++ b/src/mzscheme/src/bool.c @@ -272,8 +272,13 @@ int scheme_equal (Scheme_Object *obj1, Scheme_Object *obj2) return scheme_bucket_table_equal((Scheme_Bucket_Table *)obj1, (Scheme_Bucket_Table *)obj2); } else if (SAME_TYPE(SCHEME_TYPE(obj1), scheme_wrap_chunk_type)) { return vector_equal(obj1, obj2); - } else - return 0; + } else { + Scheme_Equal_Proc eql = scheme_type_equals[SCHEME_TYPE(obj1)]; + if (eql) + return eql(obj1, obj2); + else + return 0; + } } static int vector_equal(Scheme_Object *vec1, Scheme_Object *vec2) diff --git a/src/mzscheme/src/cstartup.inc b/src/mzscheme/src/cstartup.inc index 9ac15db5a9..f484eda868 100644 --- a/src/mzscheme/src/cstartup.inc +++ b/src/mzscheme/src/cstartup.inc @@ -1,5 +1,5 @@ { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,55,22,0,0,0,1,0,0,3,0,15,0,25,0, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,56,22,0,0,0,1,0,0,3,0,15,0,25,0, 37,0,47,0,57,0,65,0,73,0,83,0,95,0,110,0,124,0,132,0,142, 0,153,0,165,0,180,0,185,0,193,0,34,1,110,1,0,0,36,8,0,0, 29,11,11,71,105,100,101,110,116,105,102,105,101,114,63,69,115,116,120,45,110, @@ -11,17 +11,17 @@ 111,110,115,47,35,102,69,97,112,112,101,110,100,47,35,102,70,115,116,120,45, 114,111,116,97,116,101,71,115,116,120,45,114,111,116,97,116,101,42,74,115,112, 108,105,116,45,115,116,120,45,108,105,115,116,64,108,111,111,112,0,6,45,105, -110,102,46,48,32,20,89,162,8,100,35,39,2,18,222,28,248,22,63,193,11, +110,102,46,48,32,20,89,162,8,100,35,44,2,18,222,28,248,22,63,193,11, 28,248,22,56,193,27,248,22,59,194,28,248,22,63,193,11,28,248,22,56,193, 27,248,22,59,194,28,248,22,63,193,11,28,248,22,56,193,248,2,20,248,22, 59,194,28,248,22,149,3,193,248,22,159,3,193,11,28,248,22,149,3,193,248, 22,159,3,193,11,28,248,22,149,3,193,248,22,159,3,193,11,32,21,89,162, -8,64,36,44,2,18,222,28,248,22,63,194,9,28,248,22,56,194,249,22,57, +8,64,36,49,2,18,222,28,248,22,63,194,9,28,248,22,56,194,249,22,57, 248,22,58,196,27,248,22,59,197,28,248,22,63,193,9,28,248,22,56,193,249, 22,57,248,22,58,195,249,2,21,199,248,22,59,197,28,248,22,149,3,193,195, -12,28,248,22,149,3,194,192,12,159,34,20,99,159,34,16,1,20,24,65,98, -101,103,105,110,16,0,83,158,40,20,96,114,65,35,37,115,116,120,2,1,10, -10,10,34,80,158,34,34,20,99,159,36,16,16,30,2,1,2,2,193,30,2, +12,28,248,22,149,3,194,192,12,159,34,20,100,159,34,16,1,20,24,65,98, +101,103,105,110,16,0,83,158,40,20,97,114,65,35,37,115,116,120,2,1,10, +10,10,34,80,158,34,34,20,100,159,36,16,16,30,2,1,2,2,193,30,2, 1,2,3,193,30,2,1,2,4,193,30,2,1,2,5,193,30,2,1,2,6, 193,30,2,1,2,7,193,30,2,1,2,8,193,30,2,1,2,9,193,30,2, 1,2,10,193,30,2,1,2,11,193,30,2,1,2,12,193,30,2,1,2,13, @@ -31,7 +31,7 @@ 2,11,2,10,16,16,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, 11,16,16,2,14,2,13,2,2,2,17,2,9,2,7,2,8,2,12,2,6, 2,4,2,3,2,5,2,15,2,16,2,11,2,10,50,50,9,110,83,158,34, -16,2,89,162,8,64,37,52,2,18,223,0,28,28,248,22,56,196,10,28,248, +16,2,89,162,8,64,37,57,2,18,223,0,28,28,248,22,56,196,10,28,248, 22,149,3,196,248,22,56,248,22,153,3,197,11,91,159,37,11,90,161,37,34, 11,27,28,248,22,56,200,248,22,59,200,248,22,59,248,22,153,3,201,28,28, 248,22,56,193,10,28,248,22,149,3,193,248,22,56,248,22,153,3,194,11,91, @@ -46,7 +46,7 @@ 248,22,153,3,205,197,196,197,250,22,7,9,198,28,197,28,28,248,22,63,199, 10,28,248,22,149,3,199,248,22,63,248,22,153,3,200,11,34,2,19,28,28, 248,22,63,199,10,28,248,22,149,3,199,248,22,63,248,22,153,3,200,11,2, -19,35,80,159,34,51,35,83,158,34,16,2,89,162,8,100,35,45,2,18,223, +19,35,80,159,34,51,35,83,158,34,16,2,89,162,8,100,35,50,2,18,223, 0,28,248,22,56,194,27,248,22,59,195,28,248,22,56,193,27,248,22,59,194, 28,248,22,56,193,27,248,22,59,194,28,248,22,56,193,27,248,22,59,194,28, 248,22,56,193,27,248,22,59,194,28,248,22,56,193,27,248,22,59,194,28,248, @@ -54,15 +54,15 @@ 59,194,248,80,159,42,38,35,193,248,80,159,41,38,35,193,248,80,159,40,38, 35,193,248,80,159,39,38,35,193,248,80,159,38,38,35,193,248,80,159,37,38, 35,193,248,80,159,36,38,35,193,248,80,159,35,38,35,194,80,159,34,50,35, -83,158,34,16,2,32,0,89,162,34,35,37,2,2,222,28,248,22,149,3,193, +83,158,34,16,2,32,0,89,162,34,35,42,2,2,222,28,248,22,149,3,193, 248,22,47,248,22,153,3,194,11,80,159,34,34,35,83,158,34,16,2,32,0, -89,162,34,35,37,2,3,222,28,248,22,63,193,10,28,248,22,149,3,193,248, +89,162,34,35,42,2,3,222,28,248,22,63,193,10,28,248,22,149,3,193,248, 22,63,248,22,153,3,194,11,80,159,34,35,35,83,158,34,16,2,32,0,89, -162,34,35,37,2,4,222,28,248,22,63,193,9,28,248,22,149,3,193,28,248, +162,34,35,42,2,4,222,28,248,22,63,193,9,28,248,22,149,3,193,28,248, 22,63,248,22,153,3,194,9,11,11,80,159,34,36,35,83,158,34,16,2,32, -0,89,162,34,35,37,2,5,222,28,248,22,56,193,10,28,248,22,149,3,193, +0,89,162,34,35,42,2,5,222,28,248,22,56,193,10,28,248,22,149,3,193, 248,22,56,248,22,153,3,194,11,80,159,34,37,35,83,158,34,16,2,89,162, -34,35,46,2,6,223,0,28,248,22,64,194,10,28,248,22,149,3,194,28,248, +34,35,51,2,6,223,0,28,248,22,64,194,10,28,248,22,149,3,194,28,248, 22,64,248,22,153,3,195,10,27,248,22,153,3,195,28,248,22,56,193,27,248, 22,59,194,28,248,22,56,193,27,248,22,59,194,28,248,22,56,193,27,248,22, 59,194,28,248,22,56,193,27,248,22,59,194,28,248,22,56,193,27,248,22,59, @@ -71,27 +71,27 @@ 159,40,38,35,193,248,80,159,39,38,35,193,248,80,159,38,38,35,193,248,80, 159,37,38,35,193,248,80,159,36,38,35,193,28,248,22,56,194,248,80,159,35, 38,35,248,22,59,195,11,80,159,34,38,35,83,158,34,16,2,32,0,89,162, -34,35,37,2,7,222,28,248,22,56,193,248,22,58,193,248,22,58,248,22,153, -3,194,80,159,34,39,35,83,158,34,16,2,32,0,89,162,34,35,37,2,8, +34,35,42,2,7,222,28,248,22,56,193,248,22,58,193,248,22,58,248,22,153, +3,194,80,159,34,39,35,83,158,34,16,2,32,0,89,162,34,35,42,2,8, 222,28,248,22,56,193,248,22,59,193,248,22,59,248,22,153,3,194,80,159,34, -40,35,83,158,34,16,2,32,0,89,162,34,35,42,2,9,222,28,248,22,149, +40,35,83,158,34,16,2,32,0,89,162,34,35,47,2,9,222,28,248,22,149, 3,193,248,22,159,3,193,27,28,248,22,63,194,11,28,248,22,56,194,27,248, 22,59,195,28,248,22,63,193,11,28,248,22,56,193,248,2,20,248,22,59,194, 28,248,22,149,3,193,248,22,159,3,193,11,28,248,22,149,3,194,248,22,159, 3,194,11,28,192,28,248,22,63,194,9,28,248,22,56,194,249,22,57,248,22, 58,196,249,2,21,196,248,22,59,198,28,248,22,149,3,194,192,12,193,80,159, -34,41,35,83,158,34,16,2,32,0,89,162,34,36,40,2,10,222,28,248,22, +34,41,35,83,158,34,16,2,32,0,89,162,34,36,45,2,10,222,28,248,22, 149,3,193,28,248,22,166,7,248,22,153,3,194,28,193,249,22,188,2,195,248, 22,170,7,248,22,153,3,196,10,11,11,80,159,34,42,35,83,158,34,16,2, -32,0,89,162,34,36,39,2,11,222,249,22,171,7,248,22,153,3,195,195,80, -159,34,43,35,83,158,34,16,2,32,0,89,162,34,36,37,2,12,222,28,192, -192,248,194,11,80,159,34,44,35,83,158,34,16,2,32,0,89,162,34,36,38, +32,0,89,162,34,36,44,2,11,222,249,22,171,7,248,22,153,3,195,195,80, +159,34,43,35,83,158,34,16,2,32,0,89,162,34,36,42,2,12,222,28,192, +192,248,194,11,80,159,34,44,35,83,158,34,16,2,32,0,89,162,34,36,43, 2,13,222,28,193,249,22,57,194,195,11,80,159,34,45,35,83,158,34,16,2, -32,0,89,162,34,36,38,2,14,222,28,192,28,193,28,248,22,63,194,192,249, +32,0,89,162,34,36,43,2,14,222,28,192,28,193,28,248,22,63,194,192,249, 22,71,194,195,11,11,80,159,34,46,35,83,158,34,16,2,32,0,89,162,34, -35,38,2,15,222,250,22,1,22,2,22,65,195,80,159,34,47,35,83,158,34, -16,2,32,0,89,162,34,35,40,2,16,222,249,22,1,22,67,250,22,1,22, -2,22,65,197,80,159,34,48,35,83,158,34,16,2,89,162,34,37,52,2,17, +35,43,2,15,222,250,22,1,22,2,22,65,195,80,159,34,47,35,83,158,34, +16,2,32,0,89,162,34,35,45,2,16,222,249,22,1,22,67,250,22,1,22, +2,22,65,197,80,159,34,48,35,83,158,34,16,2,89,162,34,37,57,2,17, 223,0,91,159,37,11,90,161,37,34,11,28,28,248,22,56,197,10,28,248,22, 149,3,197,248,22,56,248,22,153,3,198,11,91,159,37,11,90,161,37,34,11, 250,80,159,43,51,35,203,204,28,248,22,56,203,248,22,59,203,248,22,59,248, @@ -105,8 +105,8 @@ EVAL_ONE_SIZED_STR((char *)expr, 2147); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,55,107,0,0,0,1,0,0,3,0,13,0,20,0, -24,0,27,0,31,0,42,0,47,0,53,0,65,0,76,0,85,0,88,0,94, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,56,107,0,0,0,1,0,0,3,0,13,0,16,0, +20,0,27,0,31,0,42,0,47,0,53,0,65,0,76,0,85,0,88,0,94, 0,105,0,119,0,129,0,133,0,143,0,153,0,163,0,166,0,174,0,191,0, 199,0,210,0,217,0,222,0,232,0,234,0,244,0,250,0,255,0,9,1,15, 1,25,1,35,1,37,1,47,1,49,1,52,1,60,1,69,1,148,1,160,1, @@ -116,8 +116,8 @@ 4,46,4,66,4,82,4,98,4,114,4,133,4,157,4,180,4,199,4,227,4, 16,5,26,5,92,5,149,5,155,5,210,5,215,5,221,5,227,5,232,5,238, 5,254,5,14,6,30,6,45,6,76,6,82,6,88,6,94,6,0,0,52,19, -0,0,29,11,11,69,113,113,45,97,112,112,101,110,100,66,108,101,116,114,101, -99,63,108,101,116,62,111,114,63,97,110,100,70,113,117,97,115,105,113,117,111, +0,0,29,11,11,69,113,113,45,97,112,112,101,110,100,62,111,114,63,108,101, +116,66,108,101,116,114,101,99,63,97,110,100,70,113,117,97,115,105,113,117,111, 116,101,64,108,101,116,42,65,99,104,101,99,107,71,105,100,45,105,110,45,108, 105,115,116,63,70,115,116,120,45,50,108,105,115,116,63,68,115,116,120,45,99, 97,100,114,62,103,111,65,35,37,115,116,120,70,108,97,109,98,100,97,45,115, @@ -131,7 +131,7 @@ 64,108,105,115,116,3,1,7,101,110,118,50,53,51,53,65,108,105,115,116,42, 3,1,7,101,110,118,50,53,51,51,3,1,7,101,110,118,50,53,51,55,61, 108,3,1,7,101,110,118,50,53,52,57,61,101,62,105,102,67,111,114,45,112, -97,114,116,68,35,37,107,101,114,110,101,108,32,44,89,162,34,36,41,2,10, +97,114,116,68,35,37,107,101,114,110,101,108,32,44,89,162,34,36,46,2,10, 222,28,248,22,63,194,11,28,249,22,164,3,194,248,22,58,196,10,27,248,22, 59,195,28,248,22,63,193,11,28,249,22,164,3,195,248,22,58,195,10,27,248, 22,59,194,28,248,22,63,193,11,28,249,22,164,3,196,248,22,58,195,10,249, @@ -139,8 +139,8 @@ 14,67,115,116,120,45,99,100,114,6,30,2,14,69,115,116,120,45,112,97,105, 114,63,11,30,2,14,69,115,116,120,45,110,117,108,108,63,10,30,2,14,69, 115,116,120,45,108,105,115,116,63,8,95,8,193,11,16,0,97,10,35,11,93, -159,2,14,9,11,16,0,96,10,34,11,16,14,2,3,2,1,2,4,2,1, -2,8,2,1,2,6,2,1,2,2,2,1,2,5,2,1,2,7,2,1,95, +159,2,14,9,11,16,0,96,10,34,11,16,14,2,2,2,1,2,6,2,1, +2,7,2,1,2,3,2,1,2,4,2,1,2,5,2,1,2,8,2,1,95, 8,52,8,51,8,50,18,158,2,15,8,53,18,158,2,16,8,53,16,6,11, 11,2,15,77,108,101,116,114,101,99,45,118,97,108,117,101,115,45,115,116,120, 2,17,2,17,102,8,52,8,51,8,50,8,56,16,10,11,11,2,18,66,110, @@ -193,54 +193,54 @@ 11,11,2,28,3,1,7,101,110,118,50,53,54,49,18,99,11,8,52,8,51, 8,50,8,101,8,100,8,99,99,8,52,8,51,8,50,8,101,8,100,8,99, 16,4,11,11,63,116,109,112,3,1,7,101,110,118,50,53,54,52,18,158,2, -4,8,103,18,158,2,41,8,103,18,158,2,5,8,103,159,34,20,99,159,34, -16,1,20,24,65,98,101,103,105,110,16,0,83,158,40,20,96,114,71,35,37, -113,113,45,97,110,100,45,111,114,2,1,10,10,10,34,80,158,34,34,20,99, +4,8,103,18,158,2,41,8,103,18,158,2,3,8,103,159,34,20,100,159,34, +16,1,20,24,65,98,101,103,105,110,16,0,83,158,40,20,97,114,71,35,37, +113,113,45,97,110,100,45,111,114,2,1,10,10,10,34,80,158,34,34,20,100, 159,34,16,1,30,2,1,2,2,193,16,0,11,11,16,1,2,2,35,11,16, 6,2,3,2,4,2,5,2,6,2,7,2,8,16,6,11,11,11,11,11,11, 16,6,2,3,2,4,2,5,2,6,2,7,2,8,34,40,96,16,5,95,2, -4,2,8,2,3,87,98,83,158,34,16,2,89,162,8,64,38,46,2,9,223, +4,2,8,2,5,87,98,83,158,34,16,2,89,162,8,64,38,51,2,9,223, 0,28,248,22,63,196,12,27,28,194,248,22,83,197,248,80,158,36,34,248,80, 158,37,34,248,22,58,199,28,28,248,22,63,198,11,28,249,22,164,3,194,248, 22,58,200,10,27,248,22,59,199,28,248,22,63,193,11,28,249,22,164,3,195, 248,22,58,195,10,27,248,22,59,194,28,248,22,63,193,11,28,249,22,164,3, 196,248,22,58,195,10,27,248,22,59,194,28,248,22,63,193,11,28,249,22,164, -3,197,248,22,58,195,10,249,2,44,197,248,22,59,195,251,22,176,8,11,6, +3,197,248,22,58,195,10,249,2,44,197,248,22,59,195,251,22,177,8,11,6, 20,20,100,117,112,108,105,99,97,116,101,32,105,100,101,110,116,105,102,105,101, 114,199,196,251,80,159,39,52,35,198,199,248,22,59,201,249,22,57,198,203,80, -159,34,52,35,83,158,34,16,2,89,162,8,64,38,47,2,9,223,0,28,248, +159,34,52,35,83,158,34,16,2,89,162,8,64,38,52,2,9,223,0,28,248, 22,63,197,12,27,28,195,248,22,83,198,248,80,158,36,34,248,80,158,37,34, 248,22,58,200,27,250,22,122,198,248,22,153,3,197,9,28,28,248,22,63,193, 11,28,249,22,164,3,195,248,22,58,195,10,27,248,22,59,194,28,248,22,63, 193,11,28,249,22,164,3,196,248,22,58,195,10,27,248,22,59,194,28,248,22, 63,193,11,28,249,22,164,3,197,248,22,58,195,10,27,248,22,59,194,28,248, 22,63,193,11,28,249,22,164,3,198,248,22,58,195,10,249,2,44,198,248,22, -59,195,251,22,176,8,11,6,20,20,100,117,112,108,105,99,97,116,101,32,105, +59,195,251,22,177,8,11,6,20,20,100,117,112,108,105,99,97,116,101,32,105, 100,101,110,116,105,102,105,101,114,201,197,87,94,250,22,121,198,248,22,153,3, 197,249,22,57,198,197,251,80,159,40,51,35,199,200,201,248,22,59,203,80,159, -34,51,35,83,158,34,16,2,89,162,8,100,38,50,64,108,111,111,112,223,0, +34,51,35,83,158,34,16,2,89,162,8,100,38,55,64,108,111,111,112,223,0, 28,248,22,63,197,9,27,248,22,58,198,249,22,62,28,28,248,80,158,38,36, 195,28,248,80,158,38,36,248,80,158,39,35,196,248,80,158,38,37,248,80,158, 39,35,248,80,158,40,35,197,11,11,28,248,22,47,248,22,153,3,248,80,158, 40,34,197,28,196,249,22,57,248,80,158,40,34,197,248,80,158,40,34,248,80, 158,41,35,198,250,22,152,3,201,249,22,62,249,22,62,248,80,158,45,34,202, -9,248,80,158,43,35,200,197,251,22,176,8,11,6,30,30,98,97,100,32,115, +9,248,80,158,43,35,200,197,251,22,177,8,11,6,30,30,98,97,100,32,115, 121,110,116,97,120,32,40,110,111,116,32,97,110,32,105,100,101,110,116,105,102, -105,101,114,41,201,248,80,158,42,34,199,251,22,176,8,11,6,59,59,98,97, +105,101,114,41,201,248,80,158,42,34,199,251,22,177,8,11,6,59,59,98,97, 100,32,115,121,110,116,97,120,32,40,110,111,116,32,97,110,32,105,100,101,110, 116,105,102,105,101,114,32,97,110,100,32,101,120,112,114,101,115,115,105,111,110, 32,102,111,114,32,97,32,98,105,110,100,105,110,103,41,201,198,251,80,159,41, 50,35,200,201,202,248,22,59,204,80,159,34,50,35,83,158,34,16,2,89,162, -34,35,39,2,11,223,0,28,248,80,158,35,36,194,28,248,80,158,35,36,248, +34,35,44,2,11,223,0,28,248,80,158,35,36,194,28,248,80,158,35,36,248, 80,158,36,35,195,248,80,158,35,37,248,80,158,36,35,248,80,158,37,35,196, -11,11,80,159,34,49,35,83,158,34,16,2,89,162,8,64,35,38,2,12,223, +11,11,80,159,34,49,35,83,158,34,16,2,89,162,8,64,35,43,2,12,223, 0,248,80,158,35,34,248,80,158,36,35,195,80,159,34,48,35,27,20,15,159, -35,34,40,27,89,162,34,38,8,32,2,13,224,2,1,91,159,36,11,90,161, +35,34,40,27,89,162,34,38,8,37,2,13,224,2,1,91,159,36,11,90,161, 35,34,11,80,159,37,48,35,90,161,35,35,11,80,159,37,49,35,87,94,28, 28,248,80,158,38,38,197,27,248,80,158,39,35,198,28,248,80,158,39,37,193, 10,28,248,80,158,39,37,248,80,158,40,35,194,10,28,198,28,248,22,47,248, 22,153,3,248,80,158,41,34,195,248,80,158,39,37,248,80,158,40,35,248,80, -158,41,35,195,11,11,10,250,22,176,8,11,6,10,10,98,97,100,32,115,121, +158,41,35,195,11,11,10,250,22,177,8,11,6,10,10,98,97,100,32,115,121, 110,116,97,120,199,12,27,28,198,27,248,80,158,40,34,248,80,158,41,35,200, 28,248,22,47,248,22,153,3,194,192,11,11,27,248,80,158,40,39,27,28,195, 248,80,158,42,35,201,200,248,80,158,42,34,248,80,158,43,35,194,27,248,80, @@ -250,33 +250,33 @@ 52,35,199,204,196,9,250,22,152,3,201,28,198,250,22,1,22,66,250,22,66, 20,15,159,50,36,40,248,22,66,249,22,66,248,22,66,23,16,250,22,68,20, 15,159,56,37,40,249,22,1,22,66,249,22,2,22,58,23,19,23,16,204,249, -22,2,22,59,200,250,22,68,23,17,198,199,203,251,22,176,8,11,6,62,62, +22,2,22,59,200,250,22,68,23,17,198,199,203,251,22,177,8,11,6,62,62, 98,97,100,32,115,121,110,116,97,120,32,40,110,111,116,32,97,32,115,101,113, 117,101,110,99,101,32,111,102,32,105,100,101,110,116,105,102,105,101,114,45,45, 101,120,112,114,101,115,115,105,111,110,32,98,105,110,100,105,110,103,115,41,203, -248,80,158,45,34,248,80,158,46,35,205,250,22,7,89,162,34,35,41,9,224, -5,3,251,196,198,10,11,20,15,159,39,38,40,89,162,34,35,41,9,224,5, -3,251,196,198,11,10,20,15,159,39,39,40,89,162,34,35,41,9,224,5,3, -251,196,198,11,11,20,15,159,39,40,40,39,20,99,159,39,16,6,2,45,2, +248,80,158,45,34,248,80,158,46,35,205,250,22,7,89,162,34,35,46,9,224, +5,3,251,196,198,10,11,20,15,159,39,38,40,89,162,34,35,46,9,224,5, +3,251,196,198,11,10,20,15,159,39,39,40,89,162,34,35,46,9,224,5,3, +251,196,198,11,11,20,15,159,39,40,40,39,20,100,159,39,16,6,2,45,2, 46,2,47,2,48,2,49,30,2,14,69,115,116,120,45,62,108,105,115,116,4, 16,7,33,54,33,55,33,58,33,59,33,61,33,62,33,63,11,16,5,93,2, -7,87,97,83,158,34,16,2,89,162,34,39,53,2,22,223,0,28,248,80,158, +7,87,97,83,158,34,16,2,89,162,34,39,58,2,22,223,0,28,248,80,158, 35,35,197,27,248,80,158,36,38,198,28,28,248,80,158,36,34,193,28,249,22, 166,3,194,197,248,80,158,36,39,198,11,11,27,248,80,158,37,36,199,87,94, 28,28,248,80,158,37,35,193,248,22,146,8,248,80,158,38,37,248,80,158,39, -36,195,10,251,22,176,8,2,23,6,30,30,101,120,112,101,99,116,115,32,101, +36,195,10,251,22,177,8,2,23,6,30,30,101,120,112,101,99,116,115,32,101, 120,97,99,116,108,121,32,111,110,101,32,101,120,112,114,101,115,115,105,111,110, 199,202,12,28,248,22,129,3,200,248,80,158,37,38,193,252,80,159,41,58,35, 200,201,202,203,248,22,178,2,205,28,28,248,80,158,36,34,193,28,249,22,166, 3,194,20,15,159,37,43,40,248,80,158,36,39,198,11,11,252,80,159,40,58, 35,199,200,201,202,248,22,177,2,204,28,28,248,80,158,36,34,193,28,249,22, -166,3,194,198,248,80,158,36,39,198,11,11,251,22,176,8,2,24,6,33,33, +166,3,194,198,248,80,158,36,39,198,11,11,251,22,177,8,2,24,6,33,33, 105,110,118,97,108,105,100,32,99,111,110,116,101,120,116,32,119,105,116,104,105, 110,32,113,117,97,115,105,113,117,111,116,101,198,201,28,28,248,80,158,36,35, 193,28,248,80,158,36,34,248,80,158,37,38,194,28,249,22,166,3,248,80,158, 38,38,195,198,248,80,158,36,39,193,11,11,11,27,248,80,158,37,36,194,87, 94,28,28,248,80,158,37,35,193,248,22,146,8,248,80,158,38,37,248,80,158, -39,36,195,10,251,22,176,8,2,23,6,30,30,101,120,112,101,99,116,115,32, +39,36,195,10,251,22,177,8,2,23,6,30,30,101,120,112,101,99,116,115,32, 101,120,97,99,116,108,121,32,111,110,101,32,101,120,112,114,101,115,115,105,111, 110,199,202,12,27,248,80,158,38,38,194,27,248,80,158,39,36,201,27,252,80, 159,44,57,35,203,204,205,248,80,158,45,36,23,15,23,15,28,248,22,129,3, @@ -301,7 +301,7 @@ 248,22,113,248,22,153,3,198,27,248,22,114,248,22,153,3,199,27,252,80,159, 41,57,35,200,201,202,198,204,28,249,22,148,8,195,194,198,249,22,65,20,15, 159,38,47,40,194,196,196,80,159,34,57,35,83,158,34,16,2,89,162,8,36, -39,50,2,25,223,0,27,248,80,158,36,38,198,27,248,80,158,37,36,199,27, +39,55,2,25,223,0,27,248,80,158,36,38,198,27,248,80,158,37,36,199,27, 252,80,159,42,57,35,201,202,203,199,205,27,252,80,159,43,57,35,202,203,204, 199,206,28,28,249,22,148,8,195,197,249,22,148,8,194,196,11,200,27,28,249, 22,148,8,196,198,28,248,80,158,40,37,195,20,15,159,39,37,40,249,22,65, @@ -311,55 +311,55 @@ 28,249,22,166,3,20,15,159,42,40,40,248,22,58,195,10,249,22,166,3,20, 15,159,42,41,40,248,22,58,195,11,250,22,67,248,22,58,196,196,248,22,59, 196,250,22,65,20,15,159,43,42,40,196,195,80,159,34,58,35,83,158,34,16, -2,89,162,8,36,36,41,2,26,223,0,28,248,80,158,35,37,195,249,22,65, +2,89,162,8,36,36,46,2,26,223,0,28,248,80,158,35,37,195,249,22,65, 20,15,159,36,39,40,195,28,28,248,22,56,195,28,249,22,166,3,20,15,159, 36,40,40,248,22,58,197,10,249,22,166,3,20,15,159,36,41,40,248,22,58, 197,11,250,22,67,248,22,58,198,196,248,22,59,198,250,22,65,20,15,159,37, -42,40,196,197,80,159,34,56,35,83,158,34,16,2,89,162,8,36,36,39,2, +42,40,196,197,80,159,34,56,35,83,158,34,16,2,89,162,8,36,36,44,2, 27,223,0,28,249,22,148,8,195,196,28,248,80,158,35,37,194,20,15,159,34, 37,40,249,22,65,20,15,159,36,38,40,195,193,80,159,34,55,35,27,20,15, 159,35,34,40,27,20,15,159,36,35,40,27,20,15,159,37,36,40,89,162,8, -36,35,50,9,226,3,0,1,2,87,94,28,248,80,158,38,34,197,250,22,176, +36,35,55,9,226,3,0,1,2,87,94,28,248,80,158,38,34,197,250,22,177, 8,11,6,10,10,98,97,100,32,115,121,110,116,97,120,199,12,27,28,248,80, 158,39,35,248,80,158,40,36,199,28,248,80,158,39,37,248,80,158,40,36,248, -80,158,41,36,200,248,80,158,39,38,248,80,158,40,36,199,250,22,176,8,11, -6,10,10,98,97,100,32,115,121,110,116,97,120,200,250,22,176,8,11,6,10, +80,158,41,36,200,248,80,158,39,38,248,80,158,40,36,199,250,22,177,8,11, +6,10,10,98,97,100,32,115,121,110,116,97,120,200,250,22,177,8,11,6,10, 10,98,97,100,32,115,121,110,116,97,120,200,250,22,152,3,196,27,252,80,159, 47,57,35,206,203,204,201,34,28,249,22,148,8,194,198,28,248,80,158,43,37, 193,20,15,159,42,37,40,249,22,65,20,15,159,44,38,40,194,192,200,37,20, -99,159,38,16,6,2,64,2,47,2,46,2,48,2,45,2,49,16,14,33,66, +100,159,38,16,6,2,64,2,47,2,46,2,48,2,45,2,49,16,14,33,66, 33,67,33,68,33,72,33,73,33,75,33,76,33,77,33,78,33,84,33,87,33, 89,33,90,33,91,11,16,5,93,2,6,27,20,15,159,35,34,39,89,162,34, -35,48,9,224,1,0,87,94,28,248,80,158,36,34,195,12,250,22,176,8,11, +35,53,9,224,1,0,87,94,28,248,80,158,36,34,195,12,250,22,177,8,11, 6,10,10,98,97,100,32,115,121,110,116,97,120,197,27,248,80,158,37,35,196, 28,248,80,158,37,36,193,20,15,159,36,35,39,28,28,248,80,158,37,37,193, 248,80,158,37,36,248,80,158,38,35,194,10,248,80,158,37,38,193,250,22,152, 3,196,251,22,65,20,15,159,43,36,39,248,80,158,44,38,200,249,22,57,20, -15,159,45,37,39,248,80,158,46,35,202,20,15,159,43,38,39,198,35,20,99, +15,159,45,37,39,248,80,158,46,35,202,20,15,159,43,38,39,198,35,20,100, 159,34,16,5,2,49,2,46,2,48,2,47,2,45,16,5,33,92,33,94,33, -95,33,96,33,97,11,16,5,93,2,5,27,20,15,159,35,34,40,89,162,34, -35,51,9,224,1,0,87,94,28,248,80,158,36,34,195,250,22,176,8,11,6, +95,33,96,33,97,11,16,5,93,2,3,27,20,15,159,35,34,40,89,162,34, +35,56,9,224,1,0,87,94,28,248,80,158,36,34,195,250,22,177,8,11,6, 10,10,98,97,100,32,115,121,110,116,97,120,197,12,27,248,80,158,37,35,196, 28,248,80,158,37,36,193,20,15,159,36,35,40,28,28,248,80,158,37,37,193, 248,80,158,37,36,248,80,158,38,35,194,11,248,80,158,37,38,193,28,248,80, 158,37,39,193,250,22,152,3,196,250,22,65,20,15,159,42,36,40,248,22,65, 249,22,65,2,42,248,80,158,46,38,202,251,22,65,20,15,159,46,37,40,2, 42,2,42,249,22,57,20,15,159,48,38,40,248,80,158,49,35,205,198,250,22, -176,8,11,6,10,10,98,97,100,32,115,121,110,116,97,120,198,35,20,99,159, +177,8,11,6,10,10,98,97,100,32,115,121,110,116,97,120,198,35,20,100,159, 34,16,6,2,64,2,46,2,48,2,47,2,45,2,49,16,5,33,98,33,102, -33,104,33,105,33,106,11,93,83,158,34,16,2,32,0,89,162,34,36,39,2, -2,222,28,248,22,64,193,249,22,71,194,195,250,22,177,8,2,24,6,11,11, +33,104,33,105,33,106,11,93,83,158,34,16,2,32,0,89,162,34,36,44,2, +2,222,28,248,22,64,193,249,22,71,194,195,250,22,178,8,2,24,6,11,11, 112,114,111,112,101,114,32,108,105,115,116,195,80,159,34,34,35,93,2,43,94, 2,14,2,43,0}; EVAL_ONE_SIZED_STR((char *)expr, 5149); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,55,45,0,0,0,1,0,0,6,0,9,0,14,0, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,56,45,0,0,0,1,0,0,6,0,9,0,14,0, 19,0,25,0,30,0,42,0,52,0,62,0,72,0,77,0,83,0,93,0,104, 0,108,0,111,0,120,0,126,0,143,0,153,0,160,0,181,0,197,0,217,0, 239,0,255,0,9,1,20,1,38,1,68,1,88,1,102,1,109,1,139,1,145, 1,151,1,157,1,163,1,169,1,199,1,205,1,211,1,217,1,223,1,0,0, -15,5,0,0,65,98,101,103,105,110,29,11,11,64,99,111,110,100,64,108,111, +16,5,0,0,65,98,101,103,105,110,29,11,11,64,99,111,110,100,64,108,111, 111,112,65,35,37,115,116,120,64,104,101,114,101,71,35,37,113,113,45,97,110, 100,45,111,114,3,1,7,101,110,118,50,53,55,48,3,1,7,101,110,118,50, 53,55,51,3,1,7,101,110,118,50,53,55,52,64,116,101,115,116,65,118,97, @@ -382,49 +382,49 @@ 1,8,32,18,158,2,1,8,32,103,54,53,52,8,26,59,58,57,56,8,29, 8,31,16,4,11,11,2,15,3,1,7,101,110,118,50,53,55,55,18,158,2, 14,8,40,18,158,2,16,8,40,18,158,2,16,8,32,18,158,2,1,8,32, -159,34,20,99,159,34,16,1,20,24,2,1,16,0,83,158,40,20,96,114,66, -35,37,99,111,110,100,2,2,10,10,10,34,80,158,34,34,20,99,159,34,16, +159,34,20,100,159,34,16,1,20,24,2,1,16,0,83,158,40,20,97,114,66, +35,37,99,111,110,100,2,2,10,10,10,34,80,158,34,34,20,100,159,34,16, 0,16,0,11,11,16,0,34,11,16,1,2,3,16,1,11,16,1,2,3,34, -35,93,16,5,93,2,3,87,94,83,158,34,16,2,89,162,8,64,37,56,2, -4,223,0,28,248,80,158,35,36,195,20,15,159,34,35,39,28,248,80,158,35, -37,195,27,248,80,158,36,38,196,27,248,80,158,37,35,197,28,248,80,158,37, -37,194,27,248,80,158,38,38,195,27,248,80,158,39,35,196,27,28,248,80,158, -40,34,195,249,22,166,3,196,20,15,159,41,36,39,11,87,94,28,192,28,248, -80,158,40,37,196,251,22,176,8,11,6,39,39,98,97,100,32,115,121,110,116, -97,120,32,40,96,101,108,115,101,39,32,99,108,97,117,115,101,32,109,117,115, -116,32,98,101,32,108,97,115,116,41,202,200,12,12,28,28,248,80,158,40,37, -194,28,248,80,158,40,34,248,80,158,41,38,195,249,22,166,3,248,80,158,42, -38,196,20,15,159,41,37,39,11,11,28,28,248,80,158,40,37,248,80,158,41, -35,195,248,80,158,40,36,248,80,158,41,35,248,80,158,42,35,196,11,27,28, -193,10,195,27,247,22,54,250,22,65,20,15,159,44,38,39,248,22,65,249,22, -65,248,22,65,199,199,251,22,65,20,15,159,48,39,39,199,249,22,65,248,80, -158,51,38,248,80,158,52,35,206,201,250,80,159,51,53,35,23,18,23,15,11, -251,22,176,8,11,6,36,36,98,97,100,32,115,121,110,116,97,120,32,40,98, -97,100,32,99,108,97,117,115,101,32,102,111,114,109,32,119,105,116,104,32,61, -62,41,202,200,28,192,28,200,250,22,65,20,15,159,42,40,39,10,249,22,57, -20,15,159,44,41,39,198,249,22,57,20,15,159,41,42,39,195,28,248,80,158, -40,36,194,27,247,22,54,250,22,65,20,15,159,43,43,39,248,22,65,249,22, -65,248,22,65,199,201,251,22,65,20,15,159,47,44,39,199,199,250,80,159,50, -53,35,23,17,206,11,251,22,65,20,15,159,43,45,39,198,249,22,57,20,15, -159,45,46,39,199,250,80,159,46,53,35,205,202,11,251,22,176,8,11,6,44, -44,98,97,100,32,115,121,110,116,97,120,32,40,99,108,97,117,115,101,32,105, -115,32,110,111,116,32,97,32,116,101,115,116,45,118,97,108,117,101,32,112,97, -105,114,41,199,197,251,22,176,8,11,6,46,46,98,97,100,32,115,121,110,116, -97,120,32,40,98,111,100,121,32,109,117,115,116,32,99,111,110,116,97,105,110, -32,97,32,108,105,115,116,32,111,102,32,112,97,105,114,115,41,197,198,80,159, -34,53,35,27,20,15,159,35,34,39,89,162,8,36,35,45,9,224,1,0,87, -94,28,248,80,158,36,34,195,250,22,176,8,11,6,10,10,98,97,100,32,115, -121,110,116,97,120,197,12,250,22,152,3,195,27,248,80,158,40,35,199,250,80, -159,42,53,35,201,195,10,197,35,20,99,159,35,16,5,30,2,5,71,105,100, -101,110,116,105,102,105,101,114,63,2,30,2,5,67,115,116,120,45,99,100,114, -6,30,2,5,69,115,116,120,45,110,117,108,108,63,10,30,2,5,69,115,116, -120,45,112,97,105,114,63,11,30,2,5,67,115,116,120,45,99,97,114,5,16, -13,33,21,33,28,33,30,33,33,33,35,33,36,33,37,33,38,33,39,33,41, -33,42,33,43,33,44,11,9,93,2,17,95,2,5,2,7,2,17,0}; - EVAL_ONE_SIZED_STR((char *)expr, 1404); +35,93,16,5,93,2,3,87,94,83,158,34,16,2,89,162,8,64,37,8,27, +2,4,223,0,28,248,80,158,35,36,195,20,15,159,34,35,39,28,248,80,158, +35,37,195,27,248,80,158,36,38,196,27,248,80,158,37,35,197,28,248,80,158, +37,37,194,27,248,80,158,38,38,195,27,248,80,158,39,35,196,27,28,248,80, +158,40,34,195,249,22,166,3,196,20,15,159,41,36,39,11,87,94,28,192,28, +248,80,158,40,37,196,251,22,177,8,11,6,39,39,98,97,100,32,115,121,110, +116,97,120,32,40,96,101,108,115,101,39,32,99,108,97,117,115,101,32,109,117, +115,116,32,98,101,32,108,97,115,116,41,202,200,12,12,28,28,248,80,158,40, +37,194,28,248,80,158,40,34,248,80,158,41,38,195,249,22,166,3,248,80,158, +42,38,196,20,15,159,41,37,39,11,11,28,28,248,80,158,40,37,248,80,158, +41,35,195,248,80,158,40,36,248,80,158,41,35,248,80,158,42,35,196,11,27, +28,193,10,195,27,247,22,54,250,22,65,20,15,159,44,38,39,248,22,65,249, +22,65,248,22,65,199,199,251,22,65,20,15,159,48,39,39,199,249,22,65,248, +80,158,51,38,248,80,158,52,35,206,201,250,80,159,51,53,35,23,18,23,15, +11,251,22,177,8,11,6,36,36,98,97,100,32,115,121,110,116,97,120,32,40, +98,97,100,32,99,108,97,117,115,101,32,102,111,114,109,32,119,105,116,104,32, +61,62,41,202,200,28,192,28,200,250,22,65,20,15,159,42,40,39,10,249,22, +57,20,15,159,44,41,39,198,249,22,57,20,15,159,41,42,39,195,28,248,80, +158,40,36,194,27,247,22,54,250,22,65,20,15,159,43,43,39,248,22,65,249, +22,65,248,22,65,199,201,251,22,65,20,15,159,47,44,39,199,199,250,80,159, +50,53,35,23,17,206,11,251,22,65,20,15,159,43,45,39,198,249,22,57,20, +15,159,45,46,39,199,250,80,159,46,53,35,205,202,11,251,22,177,8,11,6, +44,44,98,97,100,32,115,121,110,116,97,120,32,40,99,108,97,117,115,101,32, +105,115,32,110,111,116,32,97,32,116,101,115,116,45,118,97,108,117,101,32,112, +97,105,114,41,199,197,251,22,177,8,11,6,46,46,98,97,100,32,115,121,110, +116,97,120,32,40,98,111,100,121,32,109,117,115,116,32,99,111,110,116,97,105, +110,32,97,32,108,105,115,116,32,111,102,32,112,97,105,114,115,41,197,198,80, +159,34,53,35,27,20,15,159,35,34,39,89,162,8,36,35,50,9,224,1,0, +87,94,28,248,80,158,36,34,195,250,22,177,8,11,6,10,10,98,97,100,32, +115,121,110,116,97,120,197,12,250,22,152,3,195,27,248,80,158,40,35,199,250, +80,159,42,53,35,201,195,10,197,35,20,100,159,35,16,5,30,2,5,71,105, +100,101,110,116,105,102,105,101,114,63,2,30,2,5,67,115,116,120,45,99,100, +114,6,30,2,5,69,115,116,120,45,110,117,108,108,63,10,30,2,5,69,115, +116,120,45,112,97,105,114,63,11,30,2,5,67,115,116,120,45,99,97,114,5, +16,13,33,21,33,28,33,30,33,33,33,35,33,36,33,37,33,38,33,39,33, +41,33,42,33,43,33,44,11,9,93,2,17,95,2,5,2,7,2,17,0}; + EVAL_ONE_SIZED_STR((char *)expr, 1405); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,55,11,0,0,0,1,0,0,3,0,18,0,24,0, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,56,11,0,0,0,1,0,0,3,0,18,0,24,0, 36,0,49,0,69,0,97,0,123,0,149,0,174,0,0,0,50,4,0,0,29, 11,11,74,105,100,101,110,116,105,102,105,101,114,47,35,102,63,65,35,37,115, 116,120,71,105,100,47,35,102,45,108,105,115,116,63,72,115,116,114,117,99,116, @@ -434,17 +434,17 @@ 105,110,102,111,45,112,114,101,100,105,99,97,116,101,45,105,100,1,24,115,116, 114,117,99,116,45,105,110,102,111,45,97,99,99,101,115,115,111,114,45,105,100, 115,1,23,115,116,114,117,99,116,45,105,110,102,111,45,109,117,116,97,116,111, -114,45,105,100,115,159,34,20,99,159,34,16,1,20,24,65,98,101,103,105,110, -16,0,83,158,40,20,96,114,73,35,37,115,116,114,117,99,116,45,105,110,102, -111,2,1,10,10,10,34,80,158,34,34,20,99,159,34,16,9,30,2,1,2, +114,45,105,100,115,159,34,20,100,159,34,16,1,20,24,65,98,101,103,105,110, +16,0,83,158,40,20,97,114,73,35,37,115,116,114,117,99,116,45,105,110,102, +111,2,1,10,10,10,34,80,158,34,34,20,100,159,34,16,9,30,2,1,2, 2,193,30,2,3,71,105,100,101,110,116,105,102,105,101,114,63,2,30,2,1, 2,4,193,30,2,1,2,5,193,30,2,1,2,6,193,30,2,1,2,7,193, 30,2,1,2,8,193,30,2,1,2,9,193,30,2,1,2,10,193,16,0,11, 11,16,2,2,4,2,2,36,11,16,6,2,9,2,7,2,10,2,8,2,6, 2,5,16,6,11,11,11,11,11,11,16,6,2,9,2,7,2,10,2,8,2, -6,2,5,40,40,9,100,83,158,34,16,2,89,162,34,35,38,2,2,223,0, +6,2,5,40,40,9,100,83,158,34,16,2,89,162,34,35,43,2,2,223,0, 27,248,22,146,8,195,28,192,192,248,80,158,36,35,195,80,159,34,34,35,83, -158,34,16,2,89,162,34,36,42,2,4,223,0,28,248,22,63,195,10,28,248, +158,34,16,2,89,162,34,36,47,2,4,223,0,28,248,22,63,195,10,28,248, 22,56,195,28,248,22,63,248,22,59,196,27,248,22,58,196,27,248,22,146,8, 194,28,192,192,248,80,158,37,35,194,28,248,194,248,22,58,196,27,248,22,59, 196,28,248,22,63,193,10,28,248,22,56,193,28,248,22,63,248,22,59,194,27, @@ -453,7 +453,7 @@ 28,248,22,63,248,22,59,194,27,248,22,58,194,27,248,22,146,8,194,28,192, 192,248,80,158,39,35,194,28,248,196,248,22,58,194,249,80,159,38,36,35,197, 248,22,59,195,11,11,11,11,11,11,80,159,34,36,35,83,158,34,16,2,89, -162,34,35,42,2,5,223,0,28,248,22,64,194,28,249,22,188,2,248,22,70, +162,34,35,47,2,5,223,0,28,248,22,64,194,28,249,22,188,2,248,22,70, 196,40,28,27,248,22,58,195,27,248,22,146,8,194,28,192,192,248,80,158,37, 35,194,28,27,248,22,84,195,27,248,22,146,8,194,28,192,192,248,80,158,37, 35,194,28,27,248,22,93,195,27,248,22,146,8,194,28,192,192,248,80,158,37, @@ -475,45 +475,45 @@ 11,11,11,11,80,159,34,37,35,83,158,34,16,2,22,58,80,159,34,38,35, 83,158,34,16,2,22,84,80,159,34,39,35,83,158,34,16,2,22,93,80,159, 34,40,35,83,158,34,16,2,22,96,80,159,34,41,35,83,158,34,16,2,32, -0,89,162,34,35,37,2,10,222,249,22,76,194,38,80,159,34,42,35,95,68, +0,89,162,34,35,42,2,10,222,249,22,76,194,38,80,159,34,42,35,95,68, 35,37,107,101,114,110,101,108,2,3,71,35,37,113,113,45,97,110,100,45,111, 114,9,0}; EVAL_ONE_SIZED_STR((char *)expr, 1115); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,55,7,0,0,0,1,0,0,3,0,25,0,38,0, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,56,7,0,0,0,1,0,0,3,0,25,0,38,0, 52,0,145,0,12,1,0,0,184,4,0,0,29,11,11,1,20,108,105,115,116, 45,62,105,109,109,117,116,97,98,108,101,45,108,105,115,116,72,103,101,116,45, 115,116,120,45,105,110,102,111,73,35,37,115,116,114,117,99,116,45,105,110,102, -111,32,5,89,162,34,35,43,71,101,118,101,114,121,45,111,116,104,101,114,222, +111,32,5,89,162,34,35,48,71,101,118,101,114,121,45,111,116,104,101,114,222, 28,248,22,63,193,9,28,248,22,63,248,22,59,194,249,22,57,248,22,58,195, 9,27,248,22,86,194,27,249,22,57,248,22,58,197,9,28,248,22,63,194,192, 28,248,22,63,248,22,59,195,249,22,57,248,22,58,196,194,249,2,6,248,22, -86,196,249,22,57,248,22,58,198,196,32,6,89,162,8,64,36,45,64,108,111, +86,196,249,22,57,248,22,58,198,196,32,6,89,162,8,64,36,50,64,108,111, 111,112,222,28,248,22,63,193,193,28,248,22,63,248,22,59,194,249,22,57,248, 22,58,195,195,27,248,22,86,194,27,249,22,57,248,22,58,197,197,28,248,22, 63,194,192,28,248,22,63,248,22,59,195,249,22,57,248,22,58,196,194,27,248, 22,86,195,27,249,22,57,248,22,58,198,196,28,248,22,63,194,192,28,248,22, 63,248,22,59,195,249,22,57,248,22,58,196,194,249,2,6,248,22,86,196,249, -22,57,248,22,58,198,196,159,34,20,99,159,34,16,1,20,24,65,98,101,103, -105,110,16,0,83,158,40,20,96,114,71,35,37,100,115,45,104,101,108,112,101, -114,2,1,10,10,10,34,80,158,34,34,20,99,159,34,16,6,30,2,1,2, +22,57,248,22,58,198,196,159,34,20,100,159,34,16,1,20,24,65,98,101,103, +105,110,16,0,83,158,40,20,97,114,71,35,37,100,115,45,104,101,108,112,101, +114,2,1,10,10,10,34,80,158,34,34,20,100,159,34,16,6,30,2,1,2, 2,193,30,2,1,2,3,193,30,2,4,72,115,116,114,117,99,116,45,105,110, 102,111,63,5,30,2,4,79,115,116,114,117,99,116,45,105,110,102,111,45,116, 121,112,101,45,105,100,4,30,2,4,1,24,115,116,114,117,99,116,45,105,110, 102,111,45,97,99,99,101,115,115,111,114,45,105,100,115,0,30,2,4,1,23, 115,116,114,117,99,116,45,105,110,102,111,45,109,117,116,97,116,111,114,45,105, 100,115,2,16,0,11,11,16,1,2,2,35,11,16,1,2,3,16,1,11,16, -1,2,3,35,35,9,94,83,158,34,16,2,89,162,8,36,35,46,2,2,223, +1,2,3,35,35,9,94,83,158,34,16,2,89,162,8,36,35,51,2,2,223, 0,28,248,22,63,194,9,249,22,62,248,22,58,196,27,248,22,59,197,28,248, 22,63,193,9,249,22,62,248,22,58,195,27,248,22,59,196,28,248,22,63,193, 9,249,22,62,248,22,58,195,248,80,159,43,34,35,248,22,59,196,80,159,34, -34,35,83,158,34,16,2,89,162,34,38,8,32,2,3,223,0,27,28,197,247, -22,54,11,27,28,198,89,162,8,36,35,40,62,113,115,223,1,28,193,249,22, +34,35,83,158,34,16,2,89,162,34,38,8,37,2,3,223,0,27,28,197,247, +22,54,11,27,28,198,89,162,8,36,35,45,62,113,115,223,1,28,193,249,22, 65,194,249,22,65,72,113,117,111,116,101,45,115,121,110,116,97,120,197,11,22, -7,27,28,197,249,22,170,13,199,32,0,89,162,8,44,34,34,9,222,11,11, +7,27,28,197,249,22,171,13,199,32,0,89,162,8,44,34,39,9,222,11,11, 87,94,28,197,28,28,248,80,158,38,36,193,248,22,146,8,248,80,158,39,37, -194,10,251,22,176,8,11,28,248,80,158,42,36,197,6,63,63,112,97,114,101, +194,10,251,22,177,8,11,28,248,80,158,42,36,197,6,63,63,112,97,114,101, 110,116,32,115,116,114,117,99,116,32,105,110,102,111,114,109,97,116,105,111,110, 32,100,111,101,115,32,110,111,116,32,105,110,99,108,117,100,101,32,97,32,116, 121,112,101,32,102,111,114,32,115,117,98,116,121,112,105,110,103,249,22,128,7, @@ -525,9 +525,9 @@ 80,158,40,37,195,11,28,200,91,159,39,11,90,161,36,34,11,28,199,249,22, 7,249,22,2,204,248,80,158,49,38,204,249,22,2,204,248,80,158,49,39,204, 249,22,7,9,9,90,161,35,36,11,248,22,94,206,90,161,35,37,11,28,206, -32,0,89,162,34,35,37,64,119,114,97,112,222,249,22,57,74,108,105,115,116, +32,0,89,162,34,35,42,64,119,114,97,112,222,249,22,57,74,108,105,115,116, 45,105,109,109,117,116,97,98,108,101,194,22,7,90,161,35,38,11,28,206,89, -162,8,36,35,42,70,116,111,116,97,108,45,119,114,97,112,223,9,250,22,65, +162,8,36,35,47,70,116,111,116,97,108,45,119,114,97,112,223,9,250,22,65, 63,108,101,116,248,22,65,249,22,67,198,21,93,94,1,22,115,121,110,116,97, 120,45,108,111,99,97,108,45,99,101,114,116,105,102,105,101,114,10,196,22,7, 248,197,248,197,253,22,66,248,23,17,248,22,58,23,23,248,23,17,248,22,84, @@ -544,17 +544,17 @@ EVAL_ONE_SIZED_STR((char *)expr, 1241); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,55,74,0,0,0,1,0,0,6,0,9,0,23,0, -38,0,45,0,50,0,57,0,65,0,75,0,82,0,88,0,100,0,105,0,117, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,56,74,0,0,0,1,0,0,6,0,9,0,16,0, +23,0,37,0,52,0,57,0,65,0,75,0,82,0,88,0,100,0,105,0,117, 0,131,0,138,0,143,0,148,0,162,0,178,0,180,0,182,0,185,0,195,0, 205,0,216,0,221,0,227,0,232,0,239,0,246,0,252,0,24,1,51,1,64, 1,74,1,84,1,94,1,104,1,113,1,125,1,137,1,153,1,167,1,181,1, 187,1,219,1,249,1,3,2,19,2,122,2,147,2,153,2,159,2,198,2,204, 2,210,2,216,2,255,2,5,3,11,3,22,3,28,3,88,3,211,3,231,3, 4,4,20,4,38,4,54,4,69,4,93,4,213,4,0,0,65,12,0,0,65, -98,101,103,105,110,29,11,11,73,100,101,102,105,110,101,45,115,116,114,117,99, -116,74,45,100,101,102,105,110,101,45,115,121,110,116,97,120,66,117,110,108,101, -115,115,64,119,104,101,110,66,108,101,116,47,101,99,67,45,100,101,102,105,110, +98,101,103,105,110,29,11,11,66,117,110,108,101,115,115,66,108,101,116,47,101, +99,73,100,101,102,105,110,101,45,115,116,114,117,99,116,74,45,100,101,102,105, +110,101,45,115,121,110,116,97,120,64,119,104,101,110,67,45,100,101,102,105,110, 101,69,109,107,45,100,101,102,105,110,101,66,108,97,109,98,100,97,65,35,37, 115,116,120,71,35,37,113,113,45,97,110,100,45,111,114,64,104,101,114,101,71, 35,37,100,115,45,104,101,108,112,101,114,73,35,37,115,116,114,117,99,116,45, @@ -593,13 +593,13 @@ 13,8,48,8,47,8,46,16,4,11,11,2,17,3,1,7,101,110,118,50,54, 50,50,16,4,11,11,2,22,3,1,7,101,110,118,50,54,50,51,16,6,11, 11,63,118,97,114,65,101,120,112,114,115,2,24,2,24,32,65,89,162,8,100, -36,51,64,108,111,111,112,222,28,248,22,63,193,9,250,22,67,251,22,65,2, +36,56,64,108,111,111,112,222,28,248,22,63,193,9,250,22,67,251,22,65,2, 33,2,30,200,249,22,65,2,32,248,22,58,202,251,22,65,2,34,2,31,200, 249,22,65,2,32,248,22,58,202,27,248,22,59,197,27,248,22,177,2,199,28, 248,22,63,194,9,250,22,67,251,22,65,2,33,2,30,199,249,22,65,2,32, 248,22,58,203,251,22,65,2,34,2,31,199,249,22,65,2,32,248,22,58,203, -249,2,65,248,22,59,199,248,22,177,2,198,32,66,89,162,35,37,42,2,35, -222,252,22,1,22,176,8,11,198,197,199,16,6,11,11,2,35,78,98,117,105, +249,2,65,248,22,59,199,248,22,177,2,198,32,66,89,162,35,37,47,2,35, +222,252,22,1,22,177,8,11,198,197,199,16,6,11,11,2,35,78,98,117,105, 108,100,45,115,116,114,117,99,116,45,110,97,109,101,115,2,37,2,37,16,4, 11,11,2,18,3,1,7,101,110,118,50,54,51,49,16,4,11,11,63,115,116, 120,3,1,7,101,110,118,50,54,51,48,16,4,11,11,2,25,3,1,7,101, @@ -611,47 +611,47 @@ 11,11,73,100,101,102,105,110,101,100,45,110,97,109,101,115,3,1,7,101,110, 118,50,54,52,55,16,6,11,11,76,115,117,112,101,114,45,105,100,47,115,116, 114,117,99,116,58,68,115,116,120,45,105,110,102,111,2,39,2,39,159,34,20, -99,159,34,16,1,20,24,2,1,16,0,83,158,40,20,96,114,74,35,37,100, +100,159,34,16,1,20,24,2,1,16,0,83,158,40,20,97,114,74,35,37,100, 101,102,105,110,101,45,101,116,45,97,108,2,2,10,10,10,34,80,158,34,34, -20,99,159,34,16,0,16,0,11,11,16,0,34,11,16,6,2,3,2,4,2, +20,100,159,34,16,0,16,0,11,11,16,0,34,11,16,6,2,3,2,4,2, 5,2,6,2,7,2,8,16,6,11,11,11,11,11,11,16,6,2,3,2,4, -2,5,2,6,2,7,2,8,34,40,97,16,5,94,2,8,2,4,27,20,15, -159,35,34,39,27,89,162,8,36,35,37,2,9,224,2,1,89,162,8,36,35, -53,9,225,1,0,2,27,248,80,158,38,34,197,27,248,80,158,39,35,194,28, +2,5,2,6,2,7,2,8,34,40,97,16,5,94,2,8,2,6,27,20,15, +159,35,34,39,27,89,162,8,36,35,42,2,9,224,2,1,89,162,8,36,35, +58,9,225,1,0,2,27,248,80,158,38,34,197,27,248,80,158,39,35,194,28, 248,80,158,39,36,193,250,22,152,3,198,250,22,67,200,248,22,65,199,249,80, 158,46,37,248,80,158,47,38,248,80,158,48,34,203,9,200,27,248,80,158,40, 34,195,250,22,152,3,20,15,159,42,35,39,250,22,65,201,248,22,65,248,80, 158,47,35,201,250,22,67,2,10,248,80,158,49,34,203,249,80,158,50,37,248, 80,158,51,38,204,9,201,249,22,7,248,195,20,15,159,39,36,39,248,195,20, -15,159,39,37,39,39,20,99,159,34,16,5,2,41,2,42,2,43,2,44,2, -45,16,4,33,49,33,51,33,53,33,54,11,16,5,93,2,6,89,162,34,35, -47,9,223,0,27,248,22,159,3,195,28,28,192,249,22,190,2,248,22,70,195, +15,159,39,37,39,39,20,100,159,34,16,5,2,41,2,42,2,43,2,44,2, +45,16,4,33,49,33,51,33,53,33,54,11,16,5,93,2,7,89,162,34,35, +52,9,223,0,27,248,22,159,3,195,28,28,192,249,22,190,2,248,22,70,195, 36,11,250,22,152,3,20,15,159,38,34,36,250,22,65,20,15,159,41,35,36, 248,80,158,42,34,248,80,158,43,35,202,249,22,67,20,15,159,43,36,36,248, -80,158,44,35,248,80,158,45,35,204,197,250,22,176,8,11,6,10,10,98,97, -100,32,115,121,110,116,97,120,197,34,20,99,159,34,16,2,2,42,2,41,16, -3,33,56,33,57,33,58,11,16,5,93,2,5,89,162,34,35,47,9,223,0, +80,158,44,35,248,80,158,45,35,204,197,250,22,177,8,11,6,10,10,98,97, +100,32,115,121,110,116,97,120,197,34,20,100,159,34,16,2,2,42,2,41,16, +3,33,56,33,57,33,58,11,16,5,93,2,3,89,162,34,35,52,9,223,0, 27,248,22,159,3,195,28,28,192,249,22,190,2,248,22,70,195,36,11,250,22, 152,3,20,15,159,38,34,34,251,22,65,20,15,159,42,35,34,248,22,84,200, 20,15,159,42,36,34,249,22,67,20,15,159,44,37,34,248,22,86,202,197,250, -22,176,8,11,6,10,10,98,97,100,32,115,121,110,116,97,120,197,34,20,99, -159,34,16,0,16,4,33,60,33,61,33,62,33,63,11,16,5,93,2,7,89, -162,34,35,50,9,223,0,27,248,22,159,3,195,28,28,192,28,249,22,190,2, +22,177,8,11,6,10,10,98,97,100,32,115,121,110,116,97,120,197,34,20,100, +159,34,16,0,16,4,33,60,33,61,33,62,33,63,11,16,5,93,2,4,89, +162,34,35,55,9,223,0,27,248,22,159,3,195,28,28,192,28,249,22,190,2, 248,22,70,195,36,248,80,158,36,34,248,22,84,194,11,11,27,248,22,84,194, 27,248,80,158,38,35,248,80,158,39,35,198,250,22,152,3,20,15,159,40,34, 38,249,22,65,67,99,97,108,108,47,101,99,250,22,67,2,10,248,22,65,202, -249,80,158,47,36,248,80,158,48,37,203,9,199,250,22,176,8,11,6,10,10, -98,97,100,32,115,121,110,116,97,120,197,34,20,99,159,34,16,4,2,43,2, -41,2,44,2,45,16,1,33,64,11,16,5,93,2,3,27,89,162,8,36,38, -8,26,2,25,223,1,250,22,65,2,26,248,22,65,249,22,65,21,97,2,27, +249,80,158,47,36,248,80,158,48,37,203,9,199,250,22,177,8,11,6,10,10, +98,97,100,32,115,121,110,116,97,120,197,34,20,100,159,34,16,4,2,43,2, +41,2,44,2,45,16,1,33,64,11,16,5,93,2,5,27,89,162,8,36,38, +8,31,2,25,223,1,250,22,65,2,26,248,22,65,249,22,65,21,97,2,27, 2,28,2,29,2,30,2,31,26,8,22,65,76,109,97,107,101,45,115,116,114, 117,99,116,45,116,121,112,101,249,22,65,2,32,23,17,23,17,248,22,70,23, 19,34,11,64,110,117,108,108,23,16,252,22,67,66,118,97,108,117,101,115,2, 27,2,28,2,29,249,80,158,44,34,28,248,22,63,23,15,9,250,22,67,251, 22,65,2,33,2,30,34,249,22,65,2,32,248,22,58,23,24,251,22,65,2, 34,2,31,34,249,22,65,2,32,248,22,58,23,24,249,2,65,248,22,59,23, -20,35,9,89,162,8,36,35,8,29,9,224,1,0,87,94,28,248,80,158,36, -35,195,250,22,176,8,11,6,10,10,98,97,100,32,115,121,110,116,97,120,197, +20,35,9,89,162,8,36,35,8,34,9,224,1,0,87,94,28,248,80,158,36, +35,195,250,22,177,8,11,6,10,10,98,97,100,32,115,121,110,116,97,120,197, 12,27,248,80,158,37,36,248,80,158,38,37,197,87,100,27,248,22,56,194,28, 192,192,249,2,66,198,6,17,17,101,109,112,116,121,32,100,101,99,108,97,114, 97,116,105,111,110,27,248,80,158,38,38,194,28,192,192,249,2,66,198,6,18, @@ -671,21 +671,21 @@ 110,32,102,105,101,108,100,32,110,97,109,101,32,115,101,113,117,101,110,99,101, 249,2,66,198,6,30,30,102,105,101,108,100,32,110,97,109,101,115,32,109,117, 115,116,32,98,101,32,97,32,115,101,113,117,101,110,99,101,249,22,3,89,162, -34,35,41,9,224,4,5,27,248,80,158,37,35,196,28,192,192,250,2,66,196, +34,35,46,9,224,4,5,27,248,80,158,37,35,196,28,192,192,250,2,66,196, 6,27,27,102,105,101,108,100,32,110,97,109,101,32,110,111,116,32,97,32,105, 100,101,110,116,105,102,105,101,114,198,248,80,158,39,36,248,22,84,196,28,249, -22,77,247,22,172,13,21,93,70,101,120,112,114,101,115,115,105,111,110,249,2, +22,77,247,22,173,13,21,93,70,101,120,112,114,101,115,115,105,111,110,249,2, 66,197,6,35,35,97,108,108,111,119,101,100,32,111,110,108,121,32,105,110,32, 100,101,102,105,110,105,116,105,111,110,32,99,111,110,116,101,120,116,115,12,27, 28,248,80,158,38,35,248,22,58,195,248,22,58,194,248,80,158,38,40,248,22, 58,195,27,248,80,158,39,36,248,22,84,196,27,28,248,22,63,248,22,86,197, 20,15,159,39,34,43,248,22,93,196,27,28,248,80,158,41,35,248,22,58,198, 11,248,80,158,41,40,248,80,158,42,37,248,22,58,199,27,249,22,2,89,162, -8,36,35,39,9,223,6,250,22,152,3,195,196,195,27,248,22,50,248,22,153, +8,36,35,44,9,223,6,250,22,152,3,195,196,195,27,248,22,50,248,22,153, 3,201,27,249,22,2,22,50,249,22,2,22,153,3,203,249,22,2,22,48,249, 22,71,250,22,65,249,22,167,6,6,7,7,115,116,114,117,99,116,58,202,249, 22,167,6,6,5,5,109,97,107,101,45,202,249,22,167,6,202,6,1,1,63, -249,22,1,22,71,249,22,2,89,162,8,36,35,43,9,223,9,249,22,65,250, +249,22,1,22,71,249,22,2,89,162,8,36,35,48,9,223,9,249,22,65,250, 22,167,6,197,6,1,1,45,198,252,22,167,6,6,4,4,115,101,116,45,199, 6,1,1,45,200,6,1,1,33,200,91,159,36,11,90,161,36,34,11,251,80, 158,47,42,206,199,198,10,27,250,22,152,3,20,15,159,47,35,43,250,22,65, @@ -693,10 +693,10 @@ 15,23,20,28,23,15,251,22,65,2,26,248,22,65,249,22,65,21,93,2,36, 23,22,21,95,2,23,96,2,23,2,36,94,63,110,111,116,94,70,105,110,115, 112,101,99,116,111,114,63,2,36,11,96,76,114,97,105,115,101,45,116,121,112, -101,45,101,114,114,111,114,94,2,32,2,3,6,15,15,105,110,115,112,101,99, +101,45,101,114,114,111,114,94,2,32,2,5,6,15,15,105,110,115,112,101,99, 116,111,114,32,111,114,32,35,102,2,36,196,192,250,22,65,2,20,248,22,65, 23,17,203,206,28,196,250,22,161,3,195,75,100,105,115,97,112,112,101,97,114, -101,100,45,117,115,101,248,22,175,13,200,192,35,20,99,159,34,16,9,2,44, +101,100,45,117,115,101,248,22,176,13,200,192,35,20,100,159,34,16,9,2,44, 2,43,2,45,2,41,30,2,11,69,115,116,120,45,108,105,115,116,63,8,30, 2,11,69,115,116,120,45,112,97,105,114,63,11,2,42,30,2,11,69,115,116, 120,45,110,117,108,108,63,10,30,2,14,72,103,101,116,45,115,116,120,45,105, @@ -705,28 +705,28 @@ EVAL_ONE_SIZED_STR((char *)expr, 3304); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,55,17,0,0,0,1,0,0,4,0,9,0,14,0, -28,0,39,0,46,0,54,0,59,0,66,0,81,0,85,0,92,0,95,0,107, -0,114,0,129,0,0,0,48,1,0,0,63,108,101,116,64,99,111,110,100,64, -108,101,116,42,73,100,101,102,105,110,101,45,115,116,114,117,99,116,70,113,117, -97,115,105,113,117,111,116,101,66,108,101,116,114,101,99,67,45,100,101,102,105, -110,101,64,119,104,101,110,66,117,110,108,101,115,115,74,45,100,101,102,105,110, -101,45,115,121,110,116,97,120,63,97,110,100,66,108,101,116,47,101,99,62,111, -114,71,35,37,113,113,45,97,110,100,45,111,114,66,35,37,99,111,110,100,74, -35,37,100,101,102,105,110,101,45,101,116,45,97,108,159,34,20,99,159,34,16, -1,20,24,65,98,101,103,105,110,16,0,83,158,40,20,96,114,74,35,37,115, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,56,17,0,0,0,1,0,0,4,0,15,0,29,0, +32,0,36,0,51,0,56,0,63,0,68,0,75,0,83,0,90,0,95,0,107, +0,122,0,129,0,0,0,48,1,0,0,63,97,110,100,70,113,117,97,115,105, +113,117,111,116,101,73,100,101,102,105,110,101,45,115,116,114,117,99,116,62,111, +114,63,108,101,116,74,45,100,101,102,105,110,101,45,115,121,110,116,97,120,64, +119,104,101,110,66,108,101,116,114,101,99,64,99,111,110,100,66,117,110,108,101, +115,115,67,45,100,101,102,105,110,101,66,108,101,116,47,101,99,64,108,101,116, +42,71,35,37,113,113,45,97,110,100,45,111,114,74,35,37,100,101,102,105,110, +101,45,101,116,45,97,108,66,35,37,99,111,110,100,159,34,20,100,159,34,16, +1,20,24,65,98,101,103,105,110,16,0,83,158,40,20,97,114,74,35,37,115, 109,97,108,108,45,115,99,104,101,109,101,29,11,11,10,10,10,34,80,158,34, -34,20,99,159,34,16,0,16,0,11,11,16,0,34,11,16,13,2,1,2,2, +34,20,100,159,34,16,0,16,0,11,11,16,0,34,11,16,13,2,1,2,2, 2,3,2,4,2,5,2,6,2,7,2,8,2,9,2,10,2,11,2,12,2, -13,16,13,2,14,2,15,2,14,2,16,2,14,2,14,2,16,2,16,2,16, -2,16,2,14,2,16,2,14,16,13,2,1,2,2,2,3,2,4,2,5,2, +13,16,13,2,14,2,14,2,15,2,14,2,14,2,15,2,15,2,14,2,16, +2,15,2,15,2,15,2,14,16,13,2,1,2,2,2,3,2,4,2,5,2, 6,2,7,2,8,2,9,2,10,2,11,2,12,2,13,34,47,9,9,97,68, -35,37,107,101,114,110,101,108,65,35,37,115,116,120,2,14,2,15,2,16,9, +35,37,107,101,114,110,101,108,65,35,37,115,116,120,2,14,2,16,2,15,9, 0}; EVAL_ONE_SIZED_STR((char *)expr, 357); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,55,116,0,0,0,1,0,0,3,0,8,0,17,0, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,56,116,0,0,0,1,0,0,3,0,8,0,17,0, 22,0,31,0,44,0,58,0,75,0,104,0,114,0,120,0,128,0,136,0,159, 0,176,0,182,0,192,0,196,0,207,0,219,0,231,0,246,0,5,1,18,1, 35,1,48,1,63,1,74,1,85,1,103,1,128,1,146,1,155,1,168,1,191, @@ -736,8 +736,8 @@ 33,3,37,3,43,3,100,3,110,3,121,3,125,3,133,3,143,3,147,3,155, 3,175,3,188,3,193,3,198,3,207,3,214,3,216,3,220,3,225,3,227,3, 229,3,234,3,241,3,250,3,0,4,19,4,72,4,82,4,87,4,248,4,18, -5,219,5,246,5,117,6,37,7,146,7,27,8,250,8,217,9,149,10,105,11, -214,11,67,12,165,12,91,13,200,13,23,14,96,14,0,0,212,54,0,0,29, +5,219,5,246,5,117,6,37,7,146,7,27,8,250,8,217,9,150,10,106,11, +215,11,68,12,166,12,92,13,201,13,24,14,97,14,0,0,214,54,0,0,29, 11,11,64,115,101,116,33,68,35,37,107,101,114,110,101,108,64,46,46,46,63, 68,115,116,120,45,109,101,109,113,72,115,116,120,45,109,101,109,113,45,112,111, 115,73,115,116,120,45,109,101,109,113,42,45,112,111,115,76,112,105,99,107,45, @@ -791,14 +791,14 @@ 110,103,32,101,108,108,105,112,115,101,115,32,119,105,116,104,32,112,97,116,116, 101,114,110,32,118,97,114,105,97,98,108,101,32,105,110,32,116,101,109,112,108, 97,116,101,95,8,193,11,16,2,2,2,2,3,95,35,11,16,0,97,10,34, -11,94,159,2,47,9,11,159,2,11,9,11,16,72,2,15,2,1,2,16,2, -1,2,37,2,1,2,43,2,1,2,30,2,1,2,28,2,1,2,32,2,1, -2,45,2,1,2,22,2,1,2,23,2,1,2,31,2,1,2,9,2,1,2, -40,2,1,2,24,2,1,2,34,2,1,2,35,2,1,2,39,2,1,2,10, -2,1,2,25,2,1,2,29,2,1,2,36,2,1,2,19,2,1,2,38,2, -1,2,42,2,1,2,14,2,1,2,44,2,1,2,5,2,1,2,27,2,1, -2,4,2,1,2,8,2,1,2,6,2,1,2,18,2,1,2,41,2,1,2, -26,2,1,2,33,2,1,2,7,2,1,18,97,2,46,8,97,8,96,8,95, +11,94,159,2,47,9,11,159,2,11,9,11,16,72,2,41,2,1,2,18,2, +1,2,44,2,1,2,38,2,1,2,33,2,1,2,43,2,1,2,25,2,1, +2,14,2,1,2,15,2,1,2,5,2,1,2,26,2,1,2,22,2,1,2, +6,2,1,2,28,2,1,2,40,2,1,2,16,2,1,2,9,2,1,2,31, +2,1,2,45,2,1,2,19,2,1,2,29,2,1,2,8,2,1,2,42,2, +1,2,4,2,1,2,23,2,1,2,36,2,1,2,32,2,1,2,27,2,1, +2,7,2,1,2,24,2,1,2,30,2,1,2,39,2,1,2,35,2,1,2, +37,2,1,2,10,2,1,2,34,2,1,18,97,2,46,8,97,8,96,8,95, 16,4,11,11,61,115,3,1,7,101,110,118,50,54,53,51,18,103,2,46,8, 97,8,96,8,95,16,10,11,11,2,48,2,49,61,107,2,50,2,51,2,51, 2,51,2,51,16,6,11,11,2,52,2,53,3,1,7,101,110,118,50,55,51, @@ -810,14 +810,14 @@ 112,67,108,97,115,116,45,101,108,2,57,2,57,2,57,2,57,16,4,11,11, 2,58,3,1,7,101,110,118,50,55,52,52,16,4,11,11,2,56,3,1,7, 101,110,118,50,55,52,53,18,97,2,2,8,97,8,96,8,95,16,6,11,11, -64,115,101,108,102,63,115,116,120,2,59,2,59,32,101,89,162,8,100,37,45, +64,115,101,108,102,63,115,116,120,2,59,2,59,32,101,89,162,8,100,37,50, 2,58,222,28,248,22,63,195,11,28,28,248,22,149,3,248,22,58,196,249,22, 164,3,194,248,22,58,197,11,193,27,248,22,177,2,195,27,248,22,59,197,28, 248,22,63,193,11,28,28,248,22,149,3,248,22,58,194,249,22,164,3,196,248, 22,58,195,11,193,27,248,22,177,2,195,27,248,22,59,195,28,248,22,63,193, 11,28,28,248,22,149,3,248,22,58,194,249,22,164,3,198,248,22,58,195,11, 193,250,2,101,199,248,22,177,2,197,248,22,59,196,32,102,89,162,8,100,37, -53,2,58,222,28,248,22,63,195,11,28,249,22,164,3,194,27,248,22,58,198, +58,2,58,222,28,248,22,63,195,11,28,249,22,164,3,194,27,248,22,58,198, 28,248,22,149,3,193,192,27,248,22,58,194,28,248,22,149,3,193,192,27,248, 22,58,194,28,248,22,149,3,193,192,27,248,22,58,194,28,248,22,149,3,193, 192,27,248,22,58,194,28,248,22,149,3,193,192,27,248,22,58,194,28,248,22, @@ -825,19 +825,19 @@ 28,248,22,149,3,193,192,27,248,22,58,194,28,248,22,149,3,193,192,27,248, 22,58,194,28,248,22,149,3,193,192,27,248,22,58,194,28,248,22,149,3,193, 192,248,2,103,248,22,58,194,193,250,2,102,195,248,22,177,2,197,248,22,59, -198,32,103,89,162,8,64,35,44,2,58,222,28,248,22,149,3,193,192,27,248, +198,32,103,89,162,8,64,35,49,2,58,222,28,248,22,149,3,193,192,27,248, 22,58,194,28,248,22,149,3,193,192,27,248,22,58,194,28,248,22,149,3,193, 192,27,248,22,58,194,28,248,22,149,3,193,192,27,248,22,58,194,28,248,22, 149,3,193,192,27,248,22,58,194,28,248,22,149,3,193,192,27,248,22,58,194, 28,248,22,149,3,193,192,27,248,22,58,194,28,248,22,149,3,193,192,248,2, -103,248,22,58,194,32,104,89,162,8,100,38,44,2,58,222,28,248,22,149,3, +103,248,22,58,194,32,104,89,162,8,100,38,49,2,58,222,28,248,22,149,3, 196,27,250,22,122,196,248,22,153,3,200,9,87,94,28,249,22,5,89,162,8, -36,35,38,9,223,6,249,22,164,3,195,194,194,251,22,176,8,248,22,153,3, +36,35,43,9,223,6,249,22,164,3,195,194,194,251,22,177,8,248,22,153,3, 199,6,30,30,118,97,114,105,97,98,108,101,32,117,115,101,100,32,116,119,105, 99,101,32,105,110,32,112,97,116,116,101,114,110,199,200,12,250,22,121,196,248, 22,153,3,200,249,22,57,201,197,28,248,22,56,196,87,94,251,2,104,196,197, 198,248,22,58,200,251,2,104,196,197,198,248,22,59,200,12,32,105,89,162,8, -64,35,45,2,58,222,28,248,22,63,193,9,28,248,22,85,193,27,248,22,59, +64,35,50,2,58,222,28,248,22,63,193,9,28,248,22,85,193,27,248,22,59, 194,28,248,22,63,193,9,28,248,22,85,193,27,248,22,59,194,28,248,22,63, 193,9,28,248,22,85,193,248,2,105,248,22,59,194,249,22,57,248,22,83,195, 248,2,105,248,22,59,196,249,22,57,248,22,83,195,27,248,22,59,196,28,248, @@ -847,7 +847,7 @@ 9,28,248,22,85,193,248,2,105,248,22,59,194,249,22,57,248,22,83,195,248, 2,105,248,22,59,196,249,22,57,248,22,83,195,27,248,22,59,196,28,248,22, 63,193,9,28,248,22,85,193,248,2,105,248,22,59,194,249,22,57,248,22,83, -195,248,2,105,248,22,59,196,32,106,89,162,8,64,35,45,2,58,222,28,248, +195,248,2,105,248,22,59,196,32,106,89,162,8,64,35,50,2,58,222,28,248, 22,63,193,9,28,248,22,85,193,249,22,57,248,22,83,195,27,248,22,59,196, 28,248,22,63,193,9,28,248,22,85,193,249,22,57,248,22,83,195,27,248,22, 59,196,28,248,22,63,193,9,28,248,22,85,193,249,22,57,248,22,83,195,248, @@ -858,358 +858,356 @@ 28,248,22,85,193,249,22,57,248,22,83,195,248,2,106,248,22,59,196,248,2, 106,248,22,59,194,27,248,22,59,194,28,248,22,63,193,9,28,248,22,85,193, 249,22,57,248,22,83,195,248,2,106,248,22,59,196,248,2,106,248,22,59,194, -32,107,89,162,8,64,36,55,2,81,222,28,248,22,129,3,194,192,27,250,22, -65,2,92,2,90,196,27,248,22,178,2,196,28,248,22,129,3,193,193,27,250, -22,65,2,92,2,90,197,27,248,22,178,2,195,28,248,22,129,3,193,193,27, +32,107,89,162,8,64,36,8,26,2,81,222,28,248,22,129,3,194,192,27,250, +22,65,2,92,2,90,196,27,248,22,178,2,196,28,248,22,129,3,193,193,27, 250,22,65,2,92,2,90,197,27,248,22,178,2,195,28,248,22,129,3,193,193, 27,250,22,65,2,92,2,90,197,27,248,22,178,2,195,28,248,22,129,3,193, 193,27,250,22,65,2,92,2,90,197,27,248,22,178,2,195,28,248,22,129,3, 193,193,27,250,22,65,2,92,2,90,197,27,248,22,178,2,195,28,248,22,129, 3,193,193,27,250,22,65,2,92,2,90,197,27,248,22,178,2,195,28,248,22, -129,3,193,193,249,2,107,250,22,65,2,92,2,90,198,248,22,178,2,195,32, -108,89,162,8,64,39,47,2,58,222,28,28,248,22,56,195,248,22,56,196,11, -27,248,22,58,196,27,248,22,58,198,28,28,248,22,56,194,248,22,56,193,11, -252,2,108,199,200,248,22,58,199,248,22,58,198,10,28,248,22,56,193,252,2, -108,199,200,198,248,22,58,198,11,28,248,22,149,3,194,28,248,22,149,3,193, -28,249,22,164,3,195,194,249,22,57,196,11,11,11,11,28,248,22,56,196,27, -248,22,58,197,28,28,248,22,56,196,248,22,56,193,11,252,2,108,198,199,248, -22,58,201,248,22,58,198,10,28,248,22,56,193,252,2,108,198,199,200,248,22, -58,198,11,28,248,22,149,3,196,28,248,22,149,3,193,28,249,22,164,3,197, -194,249,22,57,196,10,11,11,11,28,248,22,149,3,195,28,248,22,149,3,196, -28,249,22,164,3,196,197,249,22,57,28,198,194,195,248,22,146,8,199,11,11, -11,32,109,89,162,8,100,35,44,2,58,222,28,248,22,149,3,193,192,27,248, -22,58,194,28,248,22,149,3,193,192,27,248,22,58,194,28,248,22,149,3,193, -192,27,248,22,58,194,28,248,22,149,3,193,192,27,248,22,58,194,28,248,22, -149,3,193,192,27,248,22,58,194,28,248,22,149,3,193,192,27,248,22,58,194, -28,248,22,149,3,193,192,27,248,22,58,194,28,248,22,149,3,193,192,248,2, -109,248,22,58,194,32,110,89,162,8,100,35,44,2,58,222,28,248,22,149,3, +129,3,193,193,27,250,22,65,2,92,2,90,197,27,248,22,178,2,195,28,248, +22,129,3,193,193,249,2,107,250,22,65,2,92,2,90,198,248,22,178,2,195, +32,108,89,162,8,64,39,52,2,58,222,28,28,248,22,56,195,248,22,56,196, +11,27,248,22,58,196,27,248,22,58,198,28,28,248,22,56,194,248,22,56,193, +11,252,2,108,199,200,248,22,58,199,248,22,58,198,10,28,248,22,56,193,252, +2,108,199,200,198,248,22,58,198,11,28,248,22,149,3,194,28,248,22,149,3, +193,28,249,22,164,3,195,194,249,22,57,196,11,11,11,11,28,248,22,56,196, +27,248,22,58,197,28,28,248,22,56,196,248,22,56,193,11,252,2,108,198,199, +248,22,58,201,248,22,58,198,10,28,248,22,56,193,252,2,108,198,199,200,248, +22,58,198,11,28,248,22,149,3,196,28,248,22,149,3,193,28,249,22,164,3, +197,194,249,22,57,196,10,11,11,11,28,248,22,149,3,195,28,248,22,149,3, +196,28,249,22,164,3,196,197,249,22,57,28,198,194,195,248,22,146,8,199,11, +11,11,32,109,89,162,8,100,35,49,2,58,222,28,248,22,149,3,193,192,27, +248,22,58,194,28,248,22,149,3,193,192,27,248,22,58,194,28,248,22,149,3, 193,192,27,248,22,58,194,28,248,22,149,3,193,192,27,248,22,58,194,28,248, 22,149,3,193,192,27,248,22,58,194,28,248,22,149,3,193,192,27,248,22,58, -194,28,248,22,149,3,193,192,27,248,22,58,194,28,248,22,149,3,193,192,27, -248,22,58,194,28,248,22,149,3,193,192,27,248,22,58,194,28,248,22,149,3, -193,192,248,2,110,248,22,58,194,32,111,89,162,8,64,36,41,2,58,222,28, -248,22,149,3,194,28,249,22,164,3,195,194,250,22,176,8,2,83,2,94,195, -12,27,248,22,58,195,28,248,22,149,3,193,28,249,22,164,3,194,195,250,22, -176,8,2,83,2,94,196,12,27,248,22,58,194,28,248,22,149,3,193,28,249, -22,164,3,194,196,250,22,176,8,2,83,2,94,197,12,249,2,111,196,248,22, -58,195,32,112,89,162,8,64,36,52,2,58,222,28,248,22,63,194,9,28,248, -193,248,22,58,195,249,22,57,27,248,22,58,197,28,248,22,149,3,193,192,27, -248,22,58,194,28,248,22,149,3,193,192,27,248,22,58,194,28,248,22,149,3, -193,192,27,248,22,58,194,28,248,22,149,3,193,192,27,248,22,58,194,28,248, +194,28,248,22,149,3,193,192,27,248,22,58,194,28,248,22,149,3,193,192,248, +2,109,248,22,58,194,32,110,89,162,8,100,35,49,2,58,222,28,248,22,149, +3,193,192,27,248,22,58,194,28,248,22,149,3,193,192,27,248,22,58,194,28, +248,22,149,3,193,192,27,248,22,58,194,28,248,22,149,3,193,192,27,248,22, +58,194,28,248,22,149,3,193,192,27,248,22,58,194,28,248,22,149,3,193,192, +27,248,22,58,194,28,248,22,149,3,193,192,27,248,22,58,194,28,248,22,149, +3,193,192,248,2,110,248,22,58,194,32,111,89,162,8,64,36,46,2,58,222, +28,248,22,149,3,194,28,249,22,164,3,195,194,250,22,177,8,2,83,2,94, +195,12,27,248,22,58,195,28,248,22,149,3,193,28,249,22,164,3,194,195,250, +22,177,8,2,83,2,94,196,12,27,248,22,58,194,28,248,22,149,3,193,28, +249,22,164,3,194,196,250,22,177,8,2,83,2,94,197,12,249,2,111,196,248, +22,58,195,32,112,89,162,8,64,36,57,2,58,222,28,248,22,63,194,9,28, +248,193,248,22,58,195,249,22,57,27,248,22,58,197,28,248,22,149,3,193,192, +27,248,22,58,194,28,248,22,149,3,193,192,27,248,22,58,194,28,248,22,149, +3,193,192,27,248,22,58,194,28,248,22,149,3,193,192,27,248,22,58,194,28, +248,22,149,3,193,192,27,248,22,58,194,28,248,22,149,3,193,192,27,248,22, +58,194,28,248,22,149,3,193,192,27,248,22,58,194,28,248,22,149,3,193,192, +27,248,22,58,194,28,248,22,149,3,193,192,27,248,22,58,194,28,248,22,149, +3,193,192,27,248,22,58,194,28,248,22,149,3,193,192,248,2,113,248,22,58, +194,249,2,112,196,248,22,59,198,249,2,112,194,248,22,59,196,32,113,89,162, +8,64,35,49,2,58,222,28,248,22,149,3,193,192,27,248,22,58,194,28,248, 22,149,3,193,192,27,248,22,58,194,28,248,22,149,3,193,192,27,248,22,58, 194,28,248,22,149,3,193,192,27,248,22,58,194,28,248,22,149,3,193,192,27, 248,22,58,194,28,248,22,149,3,193,192,27,248,22,58,194,28,248,22,149,3, 193,192,27,248,22,58,194,28,248,22,149,3,193,192,248,2,113,248,22,58,194, -249,2,112,196,248,22,59,198,249,2,112,194,248,22,59,196,32,113,89,162,8, -64,35,44,2,58,222,28,248,22,149,3,193,192,27,248,22,58,194,28,248,22, -149,3,193,192,27,248,22,58,194,28,248,22,149,3,193,192,27,248,22,58,194, -28,248,22,149,3,193,192,27,248,22,58,194,28,248,22,149,3,193,192,27,248, -22,58,194,28,248,22,149,3,193,192,27,248,22,58,194,28,248,22,149,3,193, -192,27,248,22,58,194,28,248,22,149,3,193,192,248,2,113,248,22,58,194,32, -114,89,162,8,64,35,40,2,58,222,28,248,22,63,193,11,28,248,22,56,248, -22,58,194,27,248,22,59,194,28,248,22,63,193,11,28,248,22,56,248,22,58, -194,10,27,248,22,59,194,28,248,22,63,193,11,28,248,22,56,248,22,58,194, -10,248,2,115,248,22,59,194,248,2,114,248,22,59,194,32,115,89,162,8,64, -35,39,2,58,222,28,248,22,63,193,11,28,248,22,56,248,22,58,194,10,27, -248,22,59,194,28,248,22,63,193,11,28,248,22,56,248,22,58,194,10,27,248, -22,59,194,28,248,22,63,193,11,28,248,22,56,248,22,58,194,10,248,2,115, -248,22,59,194,159,34,20,99,159,34,16,1,20,24,65,98,101,103,105,110,16, -0,83,158,40,20,96,115,64,35,37,115,99,2,1,10,10,18,94,11,8,95, -42,80,158,34,34,20,99,159,42,16,43,30,2,1,2,4,193,30,2,1,2, -5,193,30,2,1,2,6,193,30,2,1,2,7,193,30,2,1,2,8,193,30, -2,1,2,9,193,30,2,1,2,10,193,30,2,11,69,115,116,120,45,110,117, -108,108,63,10,30,2,11,2,12,6,30,2,11,2,13,5,30,2,1,2,14, -193,30,2,1,2,15,193,30,2,1,2,16,193,30,2,11,2,17,11,30,2, -1,2,18,193,30,2,1,2,19,193,30,2,11,2,20,2,30,2,11,2,21, -15,30,71,35,37,113,113,45,97,110,100,45,111,114,69,113,113,45,97,112,112, -101,110,100,0,30,2,1,2,22,193,30,2,1,2,23,193,30,2,1,2,24, -193,30,2,1,2,25,193,30,2,1,2,26,193,30,2,1,2,27,193,30,2, -1,2,28,193,30,2,1,2,29,193,30,2,1,2,30,193,30,2,1,2,31, -193,30,2,1,2,32,193,30,2,1,2,33,193,30,2,1,2,34,193,30,2, -1,2,35,193,30,2,1,2,36,193,30,2,1,2,37,193,30,2,1,2,38, -193,30,2,1,2,39,193,30,2,1,2,40,193,30,2,1,2,41,193,30,2, -1,2,42,193,30,2,1,2,43,193,30,2,1,2,44,193,30,2,1,2,45, -193,16,3,33,98,33,99,33,100,11,11,16,27,2,36,2,40,2,41,2,37, -2,4,2,18,2,19,2,16,2,29,2,27,2,28,2,30,2,25,2,10,2, -26,2,15,2,14,2,9,2,31,2,8,2,35,2,5,2,7,2,33,2,32, -2,38,2,39,8,27,16,9,10,10,10,10,10,10,10,10,10,16,9,2,23, -2,22,2,24,2,42,2,34,2,6,2,44,2,45,2,43,16,9,11,11,11, -11,11,11,11,11,11,16,9,2,23,2,22,2,24,2,42,2,34,2,6,2, -44,2,45,2,43,43,43,9,132,83,158,34,16,2,89,162,8,64,37,47,63, -115,117,98,223,0,28,28,195,28,248,80,158,35,47,195,27,248,80,158,36,42, -196,28,248,80,158,36,47,193,28,27,248,80,158,37,43,194,28,248,22,47,248, -22,153,3,194,249,22,166,3,194,20,15,159,38,34,8,43,11,248,22,146,8, -27,248,80,158,38,43,198,28,248,22,47,248,22,153,3,194,249,22,166,3,194, -20,15,159,39,34,8,43,11,11,11,11,11,91,159,36,11,90,161,36,34,11, -27,248,80,158,38,42,248,80,158,39,42,199,28,28,248,80,158,38,47,193,27, -248,80,158,39,43,194,28,248,22,47,248,22,153,3,194,249,22,166,3,194,20, -15,159,40,34,8,43,11,11,27,248,80,158,39,42,194,27,32,0,89,162,8, -36,35,37,9,222,248,22,65,248,22,65,194,28,28,248,80,158,40,47,194,27, -248,80,158,41,43,195,28,248,22,47,248,22,153,3,194,249,22,166,3,194,20, -15,159,42,34,8,43,11,11,249,80,159,41,8,54,35,248,80,158,42,42,196, -32,0,89,162,8,36,35,38,9,222,248,22,65,248,22,65,248,22,65,195,249, -22,7,195,194,249,22,7,194,22,65,27,250,80,159,40,8,53,35,199,248,80, -158,41,43,201,10,249,22,71,249,22,2,198,196,250,80,159,42,8,53,35,201, -198,10,28,248,80,158,35,47,195,27,248,80,158,36,43,196,28,28,196,28,248, -80,158,36,50,193,28,28,248,22,47,248,22,153,3,194,249,22,166,3,194,20, -15,159,37,34,8,43,11,248,80,158,36,47,248,80,158,37,42,197,11,11,11, -250,80,159,38,8,53,35,197,248,80,158,39,43,248,80,158,40,42,200,11,249, -22,72,250,80,159,40,8,53,35,199,248,80,158,41,43,201,201,250,80,159,40, -8,53,35,199,248,80,158,41,42,201,201,28,248,80,158,35,50,195,28,249,22, -5,89,162,8,36,35,38,9,223,4,28,248,22,149,3,194,249,22,164,3,194, -195,11,195,9,248,22,65,195,28,249,80,158,36,51,196,11,250,80,159,37,8, -53,35,196,248,22,173,7,248,22,153,3,199,198,9,80,159,34,8,53,35,83, -158,34,16,2,89,162,8,64,36,44,2,58,223,0,28,28,248,80,158,35,47, -194,27,248,80,158,36,43,195,28,248,22,47,248,22,153,3,194,249,22,166,3, -194,20,15,159,37,34,8,43,11,11,27,248,80,158,36,42,195,27,89,162,8, -36,35,38,9,223,4,248,22,65,248,194,195,28,28,248,80,158,37,47,194,27, -248,80,158,38,43,195,28,248,22,47,248,22,153,3,194,249,22,166,3,194,20, -15,159,39,34,8,43,11,11,27,248,80,158,38,42,195,27,89,162,8,36,35, -39,9,223,6,248,22,65,248,22,65,248,195,196,28,28,248,80,158,39,47,194, -27,248,80,158,40,43,195,28,248,22,47,248,22,153,3,194,249,22,166,3,194, -20,15,159,41,34,8,43,11,11,249,80,159,40,8,54,35,248,80,158,41,42, -196,89,162,8,36,35,40,9,223,8,248,22,65,248,22,65,248,22,65,248,196, -197,249,22,7,195,194,249,22,7,195,194,249,22,7,195,196,80,159,34,8,54, -35,83,158,34,16,2,89,162,8,100,36,8,35,2,58,223,0,28,248,22,129, -3,195,193,249,22,152,3,11,249,22,65,27,248,22,178,2,200,28,248,22,129, -3,193,198,249,22,152,3,11,249,22,65,27,248,22,178,2,198,28,248,22,129, -3,193,203,249,22,152,3,11,249,22,65,27,248,22,178,2,198,28,248,22,129, -3,193,23,16,249,22,152,3,11,249,22,65,27,248,22,178,2,198,28,248,22, -129,3,193,23,21,249,22,152,3,11,249,22,65,27,248,22,178,2,198,28,248, -22,129,3,193,23,26,249,22,152,3,11,249,22,65,249,80,159,8,31,8,52, -35,23,32,248,22,178,2,199,20,15,159,8,29,35,8,43,20,15,159,58,35, -8,43,20,15,159,53,35,8,43,20,15,159,48,35,8,43,20,15,159,43,35, -8,43,20,15,159,38,35,8,43,80,159,34,8,52,35,83,158,34,16,2,89, -162,8,64,37,48,2,58,223,0,28,28,248,80,158,35,47,194,27,248,80,158, -36,43,195,28,248,22,47,248,22,153,3,194,249,22,166,3,194,20,15,159,37, -34,8,43,11,11,27,248,80,158,36,42,195,27,248,22,177,2,197,27,248,80, -158,38,43,197,28,28,248,80,158,38,47,195,27,248,80,158,39,43,196,28,248, -22,47,248,22,153,3,194,249,22,166,3,194,20,15,159,40,34,8,43,11,11, -27,248,80,158,39,42,196,27,248,22,177,2,196,27,248,80,158,41,43,198,28, -28,248,80,158,41,47,195,27,248,80,158,42,43,196,28,248,22,47,248,22,153, -3,194,249,22,166,3,194,20,15,159,43,34,8,43,11,11,250,80,159,43,8, -51,35,248,80,158,44,42,198,248,22,177,2,197,248,80,158,44,43,198,250,22, -7,196,197,195,250,22,7,196,197,195,250,22,7,197,196,198,80,159,34,8,51, -35,83,158,34,16,2,89,162,34,43,8,45,63,109,38,101,223,0,28,28,199, -28,248,80,158,35,47,198,27,248,80,158,36,42,199,28,248,80,158,36,47,193, -28,27,248,80,158,37,43,194,28,248,22,47,248,22,153,3,194,249,22,166,3, -194,20,15,159,38,34,8,43,11,248,22,146,8,27,248,80,158,38,43,201,28, -248,22,47,248,22,153,3,194,249,22,166,3,194,20,15,159,39,34,8,43,11, -11,11,11,11,28,248,80,158,35,41,248,80,158,36,42,248,80,158,37,42,200, -27,248,80,158,36,43,199,27,249,80,159,38,44,35,195,199,91,159,37,11,90, -161,37,34,11,26,9,80,159,48,8,47,35,23,15,23,16,23,17,23,18,205, -205,10,11,11,28,201,250,22,7,249,22,2,22,65,200,11,11,27,249,80,159, -42,45,35,198,32,0,89,162,8,44,35,35,9,222,10,250,22,7,250,22,65, -2,60,21,93,2,61,251,22,67,2,62,21,94,69,115,116,120,45,108,105,115, -116,63,2,61,27,248,80,159,52,46,35,205,28,249,22,150,8,194,21,94,2, -63,2,61,28,23,25,21,94,2,64,2,61,21,94,2,63,94,2,64,2,61, -28,248,22,63,204,250,22,67,66,97,110,100,109,97,112,250,22,65,2,60,21, -93,2,61,198,21,93,94,2,64,2,61,250,22,65,66,108,101,116,47,101,99, -2,65,250,22,65,2,66,248,22,65,249,22,65,2,67,250,22,67,2,68,250, -22,65,2,60,21,93,2,61,250,22,67,73,115,116,120,45,99,104,101,99,107, -47,101,115,99,23,18,21,93,2,65,21,93,94,2,64,2,61,251,22,65,2, -62,21,94,65,110,117,108,108,63,2,67,249,22,65,2,69,27,249,22,2,32, -0,89,97,8,44,35,35,9,222,23,26,28,23,38,249,22,1,22,67,194,192, -249,22,67,28,23,37,71,115,116,120,45,114,111,116,97,116,101,42,70,115,116, -120,45,114,111,116,97,116,101,21,93,2,67,21,93,11,197,11,27,249,22,65, -248,80,158,38,43,201,248,80,158,38,43,248,80,158,39,42,202,27,248,80,158, -37,42,248,80,158,38,42,201,91,159,36,11,90,161,36,34,11,28,248,80,158, -39,41,195,249,22,7,34,10,28,248,80,158,39,47,195,87,94,28,27,248,80, -158,40,43,196,28,248,22,47,248,22,153,3,194,249,22,166,3,194,20,15,159, -41,34,8,43,11,251,22,176,8,248,22,153,3,202,2,70,202,248,80,158,43, -43,199,12,251,80,159,42,8,48,35,201,202,248,80,158,43,42,199,35,249,22, -7,35,11,91,159,43,11,90,161,37,34,11,28,23,17,26,9,80,159,56,8, -47,35,23,23,23,24,23,25,23,26,23,21,23,21,23,29,11,11,250,22,7, -11,11,11,90,161,37,37,11,26,9,80,159,56,8,47,35,23,23,23,24,23, -25,23,26,23,20,23,28,23,29,23,30,10,90,161,37,40,11,28,23,17,250, -22,7,195,196,11,26,9,80,159,56,8,47,35,23,23,23,24,23,25,23,26, -23,21,23,21,23,29,28,23,30,248,22,146,8,206,11,11,28,23,17,250,22, -7,249,22,71,203,200,11,11,250,22,7,250,22,65,2,60,21,93,2,61,250, -22,65,71,108,101,116,42,45,118,97,108,117,101,115,248,22,65,249,22,65,21, -95,2,71,2,72,2,73,251,22,65,74,115,112,108,105,116,45,115,116,120,45, -108,105,115,116,2,61,23,25,23,26,251,22,67,2,62,2,73,27,27,249,80, -159,8,30,48,35,23,23,2,71,27,249,80,159,8,31,48,35,23,21,2,72, -28,23,23,28,28,248,22,56,194,28,249,22,148,8,248,22,58,196,2,63,28, -248,22,56,248,22,59,195,248,22,63,248,22,86,195,11,11,11,250,22,65,2, -74,248,22,84,197,195,250,22,65,2,75,196,195,251,22,67,2,62,197,196,21, -93,11,28,23,19,28,23,36,250,22,65,2,66,21,93,94,2,76,96,2,62, -94,2,77,2,61,2,61,2,76,195,250,22,65,2,66,21,93,94,2,76,2, -61,195,192,21,93,11,28,202,202,199,28,200,23,25,11,28,248,80,158,35,47, -198,27,248,80,158,36,43,199,28,28,200,28,248,22,47,248,22,153,3,194,249, -22,166,3,194,20,15,159,37,34,8,43,11,11,28,28,248,80,158,36,47,248, -80,158,37,42,200,248,80,158,36,41,248,80,158,37,42,248,80,158,38,42,201, -11,27,248,80,158,37,43,248,80,158,38,42,201,26,9,80,159,45,8,47,35, -204,205,206,23,15,201,201,11,23,19,11,251,22,176,8,248,22,153,3,199,6, -29,29,109,105,115,112,108,97,99,101,100,32,101,108,108,105,112,115,101,115,32, -105,110,32,112,97,116,116,101,114,110,199,196,91,159,43,11,90,161,37,34,11, -28,206,26,9,80,159,53,8,47,35,23,20,23,21,23,22,23,23,23,18,23, -18,23,26,11,11,250,22,7,11,11,11,90,161,37,37,11,26,9,80,159,53, -8,47,35,23,20,23,21,23,22,23,23,248,80,158,54,42,23,25,23,25,23, -26,23,27,10,90,161,37,40,11,28,206,250,22,7,195,196,11,26,9,80,159, -53,8,47,35,23,20,23,21,23,22,23,23,23,18,23,18,23,26,28,23,27, -248,22,146,8,206,11,11,28,206,250,22,7,249,22,71,203,200,11,11,250,22, -7,250,22,65,2,60,21,93,2,61,251,22,67,2,62,21,94,2,17,2,61, -27,27,249,80,159,58,48,35,23,20,21,94,2,13,2,61,27,249,80,159,59, -48,35,23,18,21,94,2,12,2,61,28,23,20,28,28,248,22,56,194,28,249, -22,148,8,248,22,58,196,2,63,28,248,22,56,248,22,59,195,248,22,63,248, -22,86,195,11,11,11,250,22,65,2,74,248,22,84,197,195,250,22,65,2,75, -196,195,251,22,67,2,62,197,196,21,93,11,28,23,16,28,23,30,250,22,65, -2,66,21,93,94,2,76,96,2,62,94,2,77,2,61,2,61,2,76,195,250, -22,65,2,66,21,93,94,2,76,2,61,195,192,21,93,11,28,202,202,199,28, -200,23,22,11,28,248,80,158,35,41,198,28,196,250,22,7,9,11,11,250,22, -7,71,115,116,120,45,110,117,108,108,47,35,102,11,11,28,248,80,158,35,50, -198,28,249,22,5,89,162,8,36,35,38,9,223,7,28,248,22,149,3,194,249, -22,164,3,194,195,11,197,28,196,250,22,7,9,11,11,250,22,7,250,22,65, -2,60,21,93,2,61,251,22,67,2,62,21,94,2,20,2,61,250,22,67,2, -62,250,22,65,2,78,2,61,249,22,65,2,79,23,23,21,94,2,80,11,21, -93,11,11,11,28,28,199,28,248,22,47,248,22,153,3,199,249,22,166,3,199, -20,15,159,36,34,8,43,11,11,251,22,176,8,248,22,153,3,198,6,29,29, -109,105,115,112,108,97,99,101,100,32,101,108,108,105,112,115,101,115,32,105,110, -32,112,97,116,116,101,114,110,198,201,28,196,250,22,7,248,22,65,201,11,11, -250,22,7,27,28,204,32,0,89,162,8,36,35,38,2,81,222,250,22,65,2, -60,21,93,2,61,195,32,0,89,162,8,36,35,40,2,81,222,250,22,65,2, -60,21,93,2,61,249,22,65,2,63,197,28,205,248,193,21,96,1,20,100,97, -116,117,109,45,62,115,121,110,116,97,120,45,111,98,106,101,99,116,2,76,2, -61,2,76,248,193,2,61,10,204,28,249,80,158,36,51,199,11,27,248,22,173, -7,248,22,153,3,200,28,28,197,11,27,248,22,146,8,202,28,192,192,249,22, -4,80,159,38,8,49,35,195,27,248,22,170,7,248,22,153,3,201,26,10,80, -159,46,8,50,35,202,23,17,23,19,205,206,23,15,23,16,202,248,22,146,8, -23,21,9,91,159,37,11,90,161,37,34,11,26,9,80,159,47,8,47,35,206, -23,15,23,16,23,17,204,23,18,23,20,23,21,11,28,200,250,22,7,195,11, -11,250,22,7,250,22,65,2,60,21,93,2,61,251,22,67,2,62,21,95,2, -21,2,61,11,249,80,159,50,48,35,204,21,94,72,118,101,99,116,111,114,45, -62,108,105,115,116,94,2,82,2,61,21,93,11,196,11,28,196,250,22,7,9, -11,11,250,22,7,250,22,65,2,60,21,93,2,61,250,22,67,2,62,27,250, -22,67,66,101,113,117,97,108,63,248,22,153,3,23,19,21,93,94,2,82,2, -61,28,23,19,250,22,65,63,97,110,100,21,94,2,77,2,61,195,192,21,94, -2,80,11,11,11,80,159,34,8,47,35,83,158,34,16,2,89,162,8,64,44, -8,31,2,58,223,0,28,248,22,129,3,201,250,22,7,250,22,65,2,60,21, -93,2,61,251,22,67,2,62,250,22,65,2,21,2,61,206,23,20,21,93,11, -204,11,91,159,37,11,90,161,37,34,11,27,249,22,171,7,248,22,153,3,201, -248,22,178,2,23,15,26,9,80,159,47,8,47,35,23,17,23,18,23,19,23, -20,201,201,23,16,248,22,146,8,23,23,11,26,10,80,159,47,8,50,35,206, -23,15,23,16,23,17,23,18,23,19,23,20,248,22,178,2,23,22,28,23,22, -23,22,203,27,249,80,159,50,48,35,205,250,22,65,74,115,116,120,45,118,101, -99,116,111,114,45,114,101,102,2,61,248,22,178,2,23,28,28,248,22,63,23, -25,192,28,204,28,28,248,22,56,193,28,249,22,148,8,248,22,58,195,2,63, -28,248,22,56,248,22,59,194,248,22,63,248,22,86,194,11,11,11,250,22,65, -2,74,248,22,84,196,23,27,250,22,65,2,75,195,23,27,251,22,67,2,62, -196,23,28,21,93,11,80,159,34,8,50,35,83,158,34,16,2,89,162,8,36, -35,39,9,223,0,248,22,146,8,28,248,22,47,248,22,153,3,196,249,22,166, -3,196,20,15,159,37,34,8,43,11,80,159,34,8,49,35,83,158,34,16,2, -89,162,8,64,38,46,2,58,223,0,28,248,80,158,35,41,196,249,22,7,198, -10,28,248,80,158,35,47,196,87,94,28,27,248,80,158,36,43,197,28,248,22, -47,248,22,153,3,194,249,22,166,3,194,20,15,159,37,34,8,43,11,251,22, -176,8,248,22,153,3,198,2,70,198,248,80,158,39,43,200,12,27,248,80,158, -36,42,197,27,248,22,177,2,199,28,248,80,158,37,41,194,249,22,7,194,10, -28,248,80,158,37,47,194,87,94,28,27,248,80,158,38,43,195,28,248,22,47, -248,22,153,3,194,249,22,166,3,194,20,15,159,39,34,8,43,11,251,22,176, -8,248,22,153,3,200,2,70,200,248,80,158,41,43,198,12,251,80,159,40,8, -48,35,199,200,248,80,158,41,42,198,248,22,177,2,197,249,22,7,248,22,177, -2,195,11,249,22,7,248,22,177,2,199,11,80,159,34,8,48,35,83,158,34, -16,2,89,162,34,35,38,2,4,223,0,28,248,22,47,248,22,153,3,195,249, -22,166,3,195,20,15,159,36,34,8,43,11,80,159,34,34,35,83,158,34,16, -2,32,0,89,162,34,36,38,2,5,222,249,22,5,89,162,8,36,35,38,9, -223,2,28,248,22,149,3,194,249,22,164,3,194,195,11,195,80,159,34,35,35, -83,158,34,16,2,32,0,89,162,34,36,42,2,6,222,28,248,22,63,194,11, -28,28,248,22,149,3,248,22,58,195,249,22,164,3,194,248,22,58,196,11,34, -27,248,22,59,195,28,248,22,63,193,11,28,28,248,22,149,3,248,22,58,194, -249,22,164,3,195,248,22,58,195,11,35,250,2,101,196,36,248,22,59,196,80, -159,34,36,35,83,158,34,16,2,32,0,89,162,34,36,40,2,7,222,250,2, -102,195,34,196,80,159,34,37,35,83,158,34,16,2,32,0,89,162,34,36,38, -2,8,222,28,249,22,148,8,194,195,248,22,65,193,249,22,65,194,195,80,159, -34,38,35,83,158,34,16,2,89,162,8,36,40,54,2,9,223,0,91,159,37, -11,90,161,37,34,11,26,9,80,159,46,8,47,35,205,206,23,16,23,17,23, -15,23,15,10,10,11,28,200,27,247,22,116,87,94,251,2,104,196,201,202,197, -193,28,249,22,150,8,194,21,95,2,60,93,2,61,2,61,28,201,21,95,2, -60,94,2,61,2,78,2,61,21,95,2,60,93,2,61,2,61,250,22,65,2, -60,249,22,67,2,61,249,80,158,44,52,28,23,16,21,93,2,78,9,9,248, -80,159,41,46,35,196,80,159,34,39,35,83,158,34,16,2,89,162,34,39,46, -2,22,223,0,253,80,158,40,39,199,200,201,202,11,203,80,159,34,53,35,83, -158,34,16,2,89,162,34,38,45,2,23,223,0,253,80,158,40,39,199,200,201, -202,10,11,80,159,34,54,35,83,158,34,16,2,32,0,89,162,34,35,38,2, -16,222,28,28,248,22,56,193,28,249,22,148,8,248,22,58,195,2,60,249,22, -150,8,248,22,84,195,21,93,2,61,11,11,248,22,93,193,249,22,67,194,21, -93,2,61,80,159,34,46,35,83,158,34,16,2,32,0,89,162,34,36,40,2, -18,222,28,28,248,22,56,193,28,249,22,148,8,248,22,58,195,2,60,249,22, -150,8,248,22,84,195,21,93,2,61,11,11,27,248,22,93,194,28,249,22,148, -8,194,2,61,194,28,28,248,22,56,193,28,249,22,148,8,248,22,58,195,2, -63,28,248,22,56,248,22,59,194,28,249,22,148,8,248,22,84,195,2,61,248, -22,63,248,22,86,194,11,11,11,11,249,22,65,2,63,196,249,22,65,195,196, -249,22,65,194,195,80,159,34,48,35,83,158,34,16,2,32,0,89,162,34,36, -40,2,19,222,28,28,248,22,56,193,28,249,22,148,8,248,22,58,195,2,63, -28,248,22,56,248,22,59,194,248,22,63,248,22,86,194,11,11,11,250,22,65, -2,74,248,22,84,196,196,250,22,65,2,75,195,196,80,159,34,49,35,83,158, -34,16,2,89,162,34,38,56,2,24,223,0,91,159,36,10,90,161,35,34,10, -195,90,161,35,35,10,89,162,34,40,8,59,2,52,226,2,5,3,1,28,28, -199,28,248,80,158,38,47,197,27,248,80,158,39,42,198,28,248,80,158,39,47, -193,28,27,248,80,158,40,43,194,28,248,22,47,248,22,153,3,194,249,22,166, -3,194,20,15,159,41,34,8,43,11,248,22,146,8,27,248,80,158,41,43,200, -28,248,22,47,248,22,153,3,194,249,22,166,3,194,20,15,159,42,34,8,43, -11,11,11,11,11,91,159,40,11,90,161,35,34,11,248,80,158,44,43,203,90, -161,37,35,11,27,248,80,158,45,42,248,80,158,46,42,205,27,248,80,158,46, -43,248,80,158,47,42,206,28,28,248,80,158,46,47,194,27,248,80,158,47,43, -195,28,248,22,47,248,22,153,3,194,249,22,166,3,194,20,15,159,48,34,8, -43,11,11,27,248,80,158,47,42,195,27,248,80,158,48,43,196,28,28,248,80, -158,48,47,194,27,248,80,158,49,43,195,28,248,22,47,248,22,153,3,194,249, -22,166,3,194,20,15,159,50,34,8,43,11,11,27,248,80,158,49,42,195,27, -248,80,158,50,43,196,28,28,248,80,158,50,47,194,27,248,80,158,51,43,195, -28,248,22,47,248,22,153,3,194,249,22,166,3,194,20,15,159,52,34,8,43, -11,11,27,248,80,158,51,42,195,27,248,80,158,52,43,196,28,28,248,80,158, -52,47,194,27,248,80,158,53,43,195,28,248,22,47,248,22,153,3,194,249,22, -166,3,194,20,15,159,54,34,8,43,11,11,27,248,80,158,53,42,195,27,248, -80,158,54,43,196,28,28,248,80,158,54,47,194,27,248,80,158,55,43,195,28, -248,22,47,248,22,153,3,194,249,22,166,3,194,20,15,159,56,34,8,43,11, -11,250,80,159,56,8,51,35,248,80,158,57,42,197,39,248,80,158,57,43,197, -250,22,7,38,196,195,250,22,7,37,196,195,250,22,7,36,196,195,250,22,7, -35,196,195,250,22,7,34,196,195,90,161,35,38,11,28,248,22,129,3,194,192, -249,22,152,3,11,249,22,65,27,248,22,178,2,199,28,248,22,129,3,193,197, -249,22,152,3,11,249,22,65,27,248,22,178,2,198,28,248,22,129,3,193,202, -249,22,152,3,11,249,22,65,27,248,22,178,2,198,28,248,22,129,3,193,23, -15,249,22,152,3,11,249,22,65,27,248,22,178,2,198,28,248,22,129,3,193, -23,20,249,22,152,3,11,249,22,65,27,248,22,178,2,198,28,248,22,129,3, -193,23,25,249,22,152,3,11,249,22,65,27,248,22,178,2,198,28,248,22,129, -3,193,23,30,249,22,152,3,11,249,22,65,27,248,22,178,2,198,28,248,22, -129,3,193,23,35,249,22,152,3,11,249,22,65,249,80,159,8,50,8,52,35, -23,41,248,22,178,2,199,20,15,159,8,48,35,8,43,20,15,159,8,43,35, -8,43,20,15,159,8,38,35,8,43,20,15,159,8,33,35,8,43,20,15,159, -8,28,35,8,43,20,15,159,57,35,8,43,20,15,159,52,35,8,43,20,15, -159,47,35,8,43,90,161,35,39,11,28,203,249,80,159,45,44,35,198,202,11, -87,94,28,248,22,63,198,251,22,1,22,176,8,2,83,6,48,48,110,111,32, -112,97,116,116,101,114,110,32,118,97,114,105,97,98,108,101,115,32,98,101,102, -111,114,101,32,101,108,108,105,112,115,101,115,32,105,110,32,116,101,109,112,108, -97,116,101,28,249,22,148,8,205,201,248,22,65,204,249,22,65,205,201,12,27, -28,204,249,22,2,89,162,34,35,43,9,226,12,10,15,14,251,80,158,41,56, -200,196,198,197,200,11,27,28,205,28,248,22,63,194,9,28,248,22,85,194,27, -248,22,59,195,28,248,22,63,193,9,28,248,22,85,193,248,2,105,248,22,59, -194,249,22,57,248,22,83,195,248,2,105,248,22,59,196,249,22,57,248,22,83, -196,27,248,22,59,197,28,248,22,63,193,9,28,248,22,85,193,248,2,105,248, -22,59,194,249,22,57,248,22,83,195,248,2,105,248,22,59,196,11,27,28,206, -28,248,22,63,195,9,28,248,22,85,195,249,22,57,248,22,83,197,27,248,22, -59,198,28,248,22,63,193,9,28,248,22,85,193,249,22,57,248,22,83,195,248, -2,106,248,22,59,196,248,2,106,248,22,59,194,27,248,22,59,196,28,248,22, -63,193,9,28,248,22,85,193,249,22,57,248,22,83,195,248,2,106,248,22,59, -196,248,2,106,248,22,59,194,11,27,28,23,15,248,80,159,48,57,35,195,11, -27,28,23,16,248,80,159,49,57,35,195,11,27,28,248,22,63,196,12,28,248, -22,63,197,251,22,1,22,176,8,2,83,6,29,29,116,111,111,32,109,97,110, -121,32,101,108,108,105,112,115,101,115,32,105,110,32,116,101,109,112,108,97,116, -101,28,249,22,148,8,23,19,23,15,248,22,65,23,18,249,22,65,23,19,23, -15,12,27,253,24,19,23,15,23,24,23,25,10,23,27,23,28,27,253,24,20, -23,18,28,23,25,249,22,71,205,206,11,23,18,10,11,23,29,28,23,19,250, -22,65,2,60,21,93,2,84,27,27,27,249,22,2,89,162,8,36,35,43,9, -225,25,30,27,250,80,159,39,58,35,2,84,249,80,159,41,37,35,200,197,196, -204,28,28,249,22,188,2,35,248,22,70,195,28,249,22,188,2,34,23,17,28, -248,22,63,202,249,22,150,8,200,21,95,2,60,93,2,84,94,2,85,2,84, -11,11,11,248,22,58,193,28,28,249,22,188,2,36,248,22,70,195,28,249,22, -188,2,34,23,17,28,248,22,63,202,249,22,150,8,200,21,95,2,60,93,2, -84,95,2,63,94,2,85,2,84,94,2,86,2,84,11,11,11,250,22,67,2, -68,21,95,2,60,94,2,87,2,88,95,2,63,2,87,2,88,249,80,158,8, -28,52,197,9,27,250,22,67,2,68,250,22,65,2,60,2,89,249,22,65,23, -15,28,248,22,63,23,19,2,89,21,95,2,90,2,91,2,89,249,80,158,8, -29,52,198,9,28,248,22,129,3,23,17,192,27,250,22,65,2,92,2,90,196, -27,248,22,178,2,23,19,28,248,22,129,3,193,193,27,250,22,65,2,92,2, -90,197,27,248,22,178,2,195,28,248,22,129,3,193,193,27,250,22,65,2,92, -2,90,197,27,248,22,178,2,195,28,248,22,129,3,193,193,27,250,22,65,2, +32,114,89,162,8,64,35,45,2,58,222,28,248,22,63,193,11,28,248,22,56, +248,22,58,194,27,248,22,59,194,28,248,22,63,193,11,28,248,22,56,248,22, +58,194,10,27,248,22,59,194,28,248,22,63,193,11,28,248,22,56,248,22,58, +194,10,248,2,115,248,22,59,194,248,2,114,248,22,59,194,32,115,89,162,8, +64,35,44,2,58,222,28,248,22,63,193,11,28,248,22,56,248,22,58,194,10, +27,248,22,59,194,28,248,22,63,193,11,28,248,22,56,248,22,58,194,10,27, +248,22,59,194,28,248,22,63,193,11,28,248,22,56,248,22,58,194,10,248,2, +115,248,22,59,194,159,34,20,100,159,34,16,1,20,24,65,98,101,103,105,110, +16,0,83,158,40,20,97,115,64,35,37,115,99,2,1,10,10,18,94,11,8, +95,42,80,158,34,34,20,100,159,42,16,43,30,2,1,2,4,193,30,2,1, +2,5,193,30,2,1,2,6,193,30,2,1,2,7,193,30,2,1,2,8,193, +30,2,1,2,9,193,30,2,1,2,10,193,30,2,11,69,115,116,120,45,110, +117,108,108,63,10,30,2,11,2,12,6,30,2,11,2,13,5,30,2,1,2, +14,193,30,2,1,2,15,193,30,2,1,2,16,193,30,2,11,2,17,11,30, +2,1,2,18,193,30,2,1,2,19,193,30,2,11,2,20,2,30,2,11,2, +21,15,30,71,35,37,113,113,45,97,110,100,45,111,114,69,113,113,45,97,112, +112,101,110,100,0,30,2,1,2,22,193,30,2,1,2,23,193,30,2,1,2, +24,193,30,2,1,2,25,193,30,2,1,2,26,193,30,2,1,2,27,193,30, +2,1,2,28,193,30,2,1,2,29,193,30,2,1,2,30,193,30,2,1,2, +31,193,30,2,1,2,32,193,30,2,1,2,33,193,30,2,1,2,34,193,30, +2,1,2,35,193,30,2,1,2,36,193,30,2,1,2,37,193,30,2,1,2, +38,193,30,2,1,2,39,193,30,2,1,2,40,193,30,2,1,2,41,193,30, +2,1,2,42,193,30,2,1,2,43,193,30,2,1,2,44,193,30,2,1,2, +45,193,16,3,33,98,33,99,33,100,11,11,16,27,2,36,2,40,2,41,2, +37,2,4,2,18,2,19,2,16,2,29,2,27,2,28,2,30,2,25,2,10, +2,26,2,15,2,14,2,9,2,31,2,8,2,35,2,5,2,7,2,33,2, +32,2,38,2,39,8,27,16,9,10,10,10,10,10,10,10,10,10,16,9,2, +23,2,22,2,24,2,42,2,34,2,6,2,44,2,45,2,43,16,9,11,11, +11,11,11,11,11,11,11,16,9,2,23,2,22,2,24,2,42,2,34,2,6, +2,44,2,45,2,43,43,43,9,132,83,158,34,16,2,89,162,8,64,37,52, +63,115,117,98,223,0,28,28,195,28,248,80,158,35,47,195,27,248,80,158,36, +42,196,28,248,80,158,36,47,193,28,27,248,80,158,37,43,194,28,248,22,47, +248,22,153,3,194,249,22,166,3,194,20,15,159,38,34,8,43,11,248,22,146, +8,27,248,80,158,38,43,198,28,248,22,47,248,22,153,3,194,249,22,166,3, +194,20,15,159,39,34,8,43,11,11,11,11,11,91,159,36,11,90,161,36,34, +11,27,248,80,158,38,42,248,80,158,39,42,199,28,28,248,80,158,38,47,193, +27,248,80,158,39,43,194,28,248,22,47,248,22,153,3,194,249,22,166,3,194, +20,15,159,40,34,8,43,11,11,27,248,80,158,39,42,194,27,32,0,89,162, +8,36,35,42,9,222,248,22,65,248,22,65,194,28,28,248,80,158,40,47,194, +27,248,80,158,41,43,195,28,248,22,47,248,22,153,3,194,249,22,166,3,194, +20,15,159,42,34,8,43,11,11,249,80,159,41,8,54,35,248,80,158,42,42, +196,32,0,89,162,8,36,35,43,9,222,248,22,65,248,22,65,248,22,65,195, +249,22,7,195,194,249,22,7,194,22,65,27,250,80,159,40,8,53,35,199,248, +80,158,41,43,201,10,249,22,71,249,22,2,198,196,250,80,159,42,8,53,35, +201,198,10,28,248,80,158,35,47,195,27,248,80,158,36,43,196,28,28,196,28, +248,80,158,36,50,193,28,28,248,22,47,248,22,153,3,194,249,22,166,3,194, +20,15,159,37,34,8,43,11,248,80,158,36,47,248,80,158,37,42,197,11,11, +11,250,80,159,38,8,53,35,197,248,80,158,39,43,248,80,158,40,42,200,11, +249,22,72,250,80,159,40,8,53,35,199,248,80,158,41,43,201,201,250,80,159, +40,8,53,35,199,248,80,158,41,42,201,201,28,248,80,158,35,50,195,28,249, +22,5,89,162,8,36,35,43,9,223,4,28,248,22,149,3,194,249,22,164,3, +194,195,11,195,9,248,22,65,195,28,249,80,158,36,51,196,11,250,80,159,37, +8,53,35,196,248,22,173,7,248,22,153,3,199,198,9,80,159,34,8,53,35, +83,158,34,16,2,89,162,8,64,36,49,2,58,223,0,28,28,248,80,158,35, +47,194,27,248,80,158,36,43,195,28,248,22,47,248,22,153,3,194,249,22,166, +3,194,20,15,159,37,34,8,43,11,11,27,248,80,158,36,42,195,27,89,162, +8,36,35,43,9,223,4,248,22,65,248,194,195,28,28,248,80,158,37,47,194, +27,248,80,158,38,43,195,28,248,22,47,248,22,153,3,194,249,22,166,3,194, +20,15,159,39,34,8,43,11,11,27,248,80,158,38,42,195,27,89,162,8,36, +35,44,9,223,6,248,22,65,248,22,65,248,195,196,28,28,248,80,158,39,47, +194,27,248,80,158,40,43,195,28,248,22,47,248,22,153,3,194,249,22,166,3, +194,20,15,159,41,34,8,43,11,11,249,80,159,40,8,54,35,248,80,158,41, +42,196,89,162,8,36,35,45,9,223,8,248,22,65,248,22,65,248,22,65,248, +196,197,249,22,7,195,194,249,22,7,195,194,249,22,7,195,196,80,159,34,8, +54,35,83,158,34,16,2,89,162,8,100,36,8,40,2,58,223,0,28,248,22, +129,3,195,193,249,22,152,3,11,249,22,65,27,248,22,178,2,200,28,248,22, +129,3,193,198,249,22,152,3,11,249,22,65,27,248,22,178,2,198,28,248,22, +129,3,193,203,249,22,152,3,11,249,22,65,27,248,22,178,2,198,28,248,22, +129,3,193,23,16,249,22,152,3,11,249,22,65,27,248,22,178,2,198,28,248, +22,129,3,193,23,21,249,22,152,3,11,249,22,65,27,248,22,178,2,198,28, +248,22,129,3,193,23,26,249,22,152,3,11,249,22,65,249,80,159,8,31,8, +52,35,23,32,248,22,178,2,199,20,15,159,8,29,35,8,43,20,15,159,58, +35,8,43,20,15,159,53,35,8,43,20,15,159,48,35,8,43,20,15,159,43, +35,8,43,20,15,159,38,35,8,43,80,159,34,8,52,35,83,158,34,16,2, +89,162,8,64,37,53,2,58,223,0,28,28,248,80,158,35,47,194,27,248,80, +158,36,43,195,28,248,22,47,248,22,153,3,194,249,22,166,3,194,20,15,159, +37,34,8,43,11,11,27,248,80,158,36,42,195,27,248,22,177,2,197,27,248, +80,158,38,43,197,28,28,248,80,158,38,47,195,27,248,80,158,39,43,196,28, +248,22,47,248,22,153,3,194,249,22,166,3,194,20,15,159,40,34,8,43,11, +11,27,248,80,158,39,42,196,27,248,22,177,2,196,27,248,80,158,41,43,198, +28,28,248,80,158,41,47,195,27,248,80,158,42,43,196,28,248,22,47,248,22, +153,3,194,249,22,166,3,194,20,15,159,43,34,8,43,11,11,250,80,159,43, +8,51,35,248,80,158,44,42,198,248,22,177,2,197,248,80,158,44,43,198,250, +22,7,196,197,195,250,22,7,196,197,195,250,22,7,197,196,198,80,159,34,8, +51,35,83,158,34,16,2,89,162,34,43,8,50,63,109,38,101,223,0,28,28, +199,28,248,80,158,35,47,198,27,248,80,158,36,42,199,28,248,80,158,36,47, +193,28,27,248,80,158,37,43,194,28,248,22,47,248,22,153,3,194,249,22,166, +3,194,20,15,159,38,34,8,43,11,248,22,146,8,27,248,80,158,38,43,201, +28,248,22,47,248,22,153,3,194,249,22,166,3,194,20,15,159,39,34,8,43, +11,11,11,11,11,28,248,80,158,35,41,248,80,158,36,42,248,80,158,37,42, +200,27,248,80,158,36,43,199,27,249,80,159,38,44,35,195,199,91,159,37,11, +90,161,37,34,11,26,9,80,159,48,8,47,35,23,15,23,16,23,17,23,18, +205,205,10,11,11,28,201,250,22,7,249,22,2,22,65,200,11,11,27,249,80, +159,42,45,35,198,32,0,89,162,8,44,35,40,9,222,10,250,22,7,250,22, +65,2,60,21,93,2,61,251,22,67,2,62,21,94,69,115,116,120,45,108,105, +115,116,63,2,61,27,248,80,159,52,46,35,205,28,249,22,150,8,194,21,94, +2,63,2,61,28,23,25,21,94,2,64,2,61,21,94,2,63,94,2,64,2, +61,28,248,22,63,204,250,22,67,66,97,110,100,109,97,112,250,22,65,2,60, +21,93,2,61,198,21,93,94,2,64,2,61,250,22,65,66,108,101,116,47,101, +99,2,65,250,22,65,2,66,248,22,65,249,22,65,2,67,250,22,67,2,68, +250,22,65,2,60,21,93,2,61,250,22,67,73,115,116,120,45,99,104,101,99, +107,47,101,115,99,23,18,21,93,2,65,21,93,94,2,64,2,61,251,22,65, +2,62,21,94,65,110,117,108,108,63,2,67,249,22,65,2,69,27,249,22,2, +32,0,89,97,8,44,35,40,9,222,23,26,28,23,38,249,22,1,22,67,194, +192,249,22,67,28,23,37,71,115,116,120,45,114,111,116,97,116,101,42,70,115, +116,120,45,114,111,116,97,116,101,21,93,2,67,21,93,11,197,11,27,249,22, +65,248,80,158,38,43,201,248,80,158,38,43,248,80,158,39,42,202,27,248,80, +158,37,42,248,80,158,38,42,201,91,159,36,11,90,161,36,34,11,28,248,80, +158,39,41,195,249,22,7,34,10,28,248,80,158,39,47,195,87,94,28,27,248, +80,158,40,43,196,28,248,22,47,248,22,153,3,194,249,22,166,3,194,20,15, +159,41,34,8,43,11,251,22,177,8,248,22,153,3,202,2,70,202,248,80,158, +43,43,199,12,251,80,159,42,8,48,35,201,202,248,80,158,43,42,199,35,249, +22,7,35,11,91,159,43,11,90,161,37,34,11,28,23,17,26,9,80,159,56, +8,47,35,23,23,23,24,23,25,23,26,23,21,23,21,23,29,11,11,250,22, +7,11,11,11,90,161,37,37,11,26,9,80,159,56,8,47,35,23,23,23,24, +23,25,23,26,23,20,23,28,23,29,23,30,10,90,161,37,40,11,28,23,17, +250,22,7,195,196,11,26,9,80,159,56,8,47,35,23,23,23,24,23,25,23, +26,23,21,23,21,23,29,28,23,30,248,22,146,8,206,11,11,28,23,17,250, +22,7,249,22,71,203,200,11,11,250,22,7,250,22,65,2,60,21,93,2,61, +250,22,65,71,108,101,116,42,45,118,97,108,117,101,115,248,22,65,249,22,65, +21,95,2,71,2,72,2,73,251,22,65,74,115,112,108,105,116,45,115,116,120, +45,108,105,115,116,2,61,23,25,23,26,251,22,67,2,62,2,73,27,27,249, +80,159,8,30,48,35,23,23,2,71,27,249,80,159,8,31,48,35,23,21,2, +72,28,23,23,28,28,248,22,56,194,28,249,22,148,8,248,22,58,196,2,63, +28,248,22,56,248,22,59,195,248,22,63,248,22,86,195,11,11,11,250,22,65, +2,74,248,22,84,197,195,250,22,65,2,75,196,195,251,22,67,2,62,197,196, +21,93,11,28,23,19,28,23,36,250,22,65,2,66,21,93,94,2,76,96,2, +62,94,2,77,2,61,2,61,2,76,195,250,22,65,2,66,21,93,94,2,76, +2,61,195,192,21,93,11,28,202,202,199,28,200,23,25,11,28,248,80,158,35, +47,198,27,248,80,158,36,43,199,28,28,200,28,248,22,47,248,22,153,3,194, +249,22,166,3,194,20,15,159,37,34,8,43,11,11,28,28,248,80,158,36,47, +248,80,158,37,42,200,248,80,158,36,41,248,80,158,37,42,248,80,158,38,42, +201,11,27,248,80,158,37,43,248,80,158,38,42,201,26,9,80,159,45,8,47, +35,204,205,206,23,15,201,201,11,23,19,11,251,22,177,8,248,22,153,3,199, +6,29,29,109,105,115,112,108,97,99,101,100,32,101,108,108,105,112,115,101,115, +32,105,110,32,112,97,116,116,101,114,110,199,196,91,159,43,11,90,161,37,34, +11,28,206,26,9,80,159,53,8,47,35,23,20,23,21,23,22,23,23,23,18, +23,18,23,26,11,11,250,22,7,11,11,11,90,161,37,37,11,26,9,80,159, +53,8,47,35,23,20,23,21,23,22,23,23,248,80,158,54,42,23,25,23,25, +23,26,23,27,10,90,161,37,40,11,28,206,250,22,7,195,196,11,26,9,80, +159,53,8,47,35,23,20,23,21,23,22,23,23,23,18,23,18,23,26,28,23, +27,248,22,146,8,206,11,11,28,206,250,22,7,249,22,71,203,200,11,11,250, +22,7,250,22,65,2,60,21,93,2,61,251,22,67,2,62,21,94,2,17,2, +61,27,27,249,80,159,58,48,35,23,20,21,94,2,13,2,61,27,249,80,159, +59,48,35,23,18,21,94,2,12,2,61,28,23,20,28,28,248,22,56,194,28, +249,22,148,8,248,22,58,196,2,63,28,248,22,56,248,22,59,195,248,22,63, +248,22,86,195,11,11,11,250,22,65,2,74,248,22,84,197,195,250,22,65,2, +75,196,195,251,22,67,2,62,197,196,21,93,11,28,23,16,28,23,30,250,22, +65,2,66,21,93,94,2,76,96,2,62,94,2,77,2,61,2,61,2,76,195, +250,22,65,2,66,21,93,94,2,76,2,61,195,192,21,93,11,28,202,202,199, +28,200,23,22,11,28,248,80,158,35,41,198,28,196,250,22,7,9,11,11,250, +22,7,71,115,116,120,45,110,117,108,108,47,35,102,11,11,28,248,80,158,35, +50,198,28,249,22,5,89,162,8,36,35,43,9,223,7,28,248,22,149,3,194, +249,22,164,3,194,195,11,197,28,196,250,22,7,9,11,11,250,22,7,250,22, +65,2,60,21,93,2,61,251,22,67,2,62,21,94,2,20,2,61,250,22,67, +2,62,250,22,65,2,78,2,61,249,22,65,2,79,23,23,21,94,2,80,11, +21,93,11,11,11,28,28,199,28,248,22,47,248,22,153,3,199,249,22,166,3, +199,20,15,159,36,34,8,43,11,11,251,22,177,8,248,22,153,3,198,6,29, +29,109,105,115,112,108,97,99,101,100,32,101,108,108,105,112,115,101,115,32,105, +110,32,112,97,116,116,101,114,110,198,201,28,196,250,22,7,248,22,65,201,11, +11,250,22,7,27,28,204,32,0,89,162,8,36,35,43,2,81,222,250,22,65, +2,60,21,93,2,61,195,32,0,89,162,8,36,35,45,2,81,222,250,22,65, +2,60,21,93,2,61,249,22,65,2,63,197,28,205,248,193,21,96,1,20,100, +97,116,117,109,45,62,115,121,110,116,97,120,45,111,98,106,101,99,116,2,76, +2,61,2,76,248,193,2,61,10,204,28,249,80,158,36,51,199,11,27,248,22, +173,7,248,22,153,3,200,28,28,197,11,27,248,22,146,8,202,28,192,192,249, +22,4,80,159,38,8,49,35,195,27,248,22,170,7,248,22,153,3,201,26,10, +80,159,46,8,50,35,202,23,17,23,19,205,206,23,15,23,16,202,248,22,146, +8,23,21,9,91,159,37,11,90,161,37,34,11,26,9,80,159,47,8,47,35, +206,23,15,23,16,23,17,204,23,18,23,20,23,21,11,28,200,250,22,7,195, +11,11,250,22,7,250,22,65,2,60,21,93,2,61,251,22,67,2,62,21,95, +2,21,2,61,11,249,80,159,50,48,35,204,21,94,72,118,101,99,116,111,114, +45,62,108,105,115,116,94,2,82,2,61,21,93,11,196,11,28,196,250,22,7, +9,11,11,250,22,7,250,22,65,2,60,21,93,2,61,250,22,67,2,62,27, +250,22,67,66,101,113,117,97,108,63,248,22,153,3,23,19,21,93,94,2,82, +2,61,28,23,19,250,22,65,63,97,110,100,21,94,2,77,2,61,195,192,21, +94,2,80,11,11,11,80,159,34,8,47,35,83,158,34,16,2,89,162,8,64, +44,8,36,2,58,223,0,28,248,22,129,3,201,250,22,7,250,22,65,2,60, +21,93,2,61,251,22,67,2,62,250,22,65,2,21,2,61,206,23,20,21,93, +11,204,11,91,159,37,11,90,161,37,34,11,27,249,22,171,7,248,22,153,3, +201,248,22,178,2,23,15,26,9,80,159,47,8,47,35,23,17,23,18,23,19, +23,20,201,201,23,16,248,22,146,8,23,23,11,26,10,80,159,47,8,50,35, +206,23,15,23,16,23,17,23,18,23,19,23,20,248,22,178,2,23,22,28,23, +22,23,22,203,27,249,80,159,50,48,35,205,250,22,65,74,115,116,120,45,118, +101,99,116,111,114,45,114,101,102,2,61,248,22,178,2,23,28,28,248,22,63, +23,25,192,28,204,28,28,248,22,56,193,28,249,22,148,8,248,22,58,195,2, +63,28,248,22,56,248,22,59,194,248,22,63,248,22,86,194,11,11,11,250,22, +65,2,74,248,22,84,196,23,27,250,22,65,2,75,195,23,27,251,22,67,2, +62,196,23,28,21,93,11,80,159,34,8,50,35,83,158,34,16,2,89,162,8, +36,35,44,9,223,0,248,22,146,8,28,248,22,47,248,22,153,3,196,249,22, +166,3,196,20,15,159,37,34,8,43,11,80,159,34,8,49,35,83,158,34,16, +2,89,162,8,64,38,51,2,58,223,0,28,248,80,158,35,41,196,249,22,7, +198,10,28,248,80,158,35,47,196,87,94,28,27,248,80,158,36,43,197,28,248, +22,47,248,22,153,3,194,249,22,166,3,194,20,15,159,37,34,8,43,11,251, +22,177,8,248,22,153,3,198,2,70,198,248,80,158,39,43,200,12,27,248,80, +158,36,42,197,27,248,22,177,2,199,28,248,80,158,37,41,194,249,22,7,194, +10,28,248,80,158,37,47,194,87,94,28,27,248,80,158,38,43,195,28,248,22, +47,248,22,153,3,194,249,22,166,3,194,20,15,159,39,34,8,43,11,251,22, +177,8,248,22,153,3,200,2,70,200,248,80,158,41,43,198,12,251,80,159,40, +8,48,35,199,200,248,80,158,41,42,198,248,22,177,2,197,249,22,7,248,22, +177,2,195,11,249,22,7,248,22,177,2,199,11,80,159,34,8,48,35,83,158, +34,16,2,89,162,34,35,43,2,4,223,0,28,248,22,47,248,22,153,3,195, +249,22,166,3,195,20,15,159,36,34,8,43,11,80,159,34,34,35,83,158,34, +16,2,32,0,89,162,34,36,43,2,5,222,249,22,5,89,162,8,36,35,43, +9,223,2,28,248,22,149,3,194,249,22,164,3,194,195,11,195,80,159,34,35, +35,83,158,34,16,2,32,0,89,162,34,36,47,2,6,222,28,248,22,63,194, +11,28,28,248,22,149,3,248,22,58,195,249,22,164,3,194,248,22,58,196,11, +34,27,248,22,59,195,28,248,22,63,193,11,28,28,248,22,149,3,248,22,58, +194,249,22,164,3,195,248,22,58,195,11,35,250,2,101,196,36,248,22,59,196, +80,159,34,36,35,83,158,34,16,2,32,0,89,162,34,36,45,2,7,222,250, +2,102,195,34,196,80,159,34,37,35,83,158,34,16,2,32,0,89,162,34,36, +43,2,8,222,28,249,22,148,8,194,195,248,22,65,193,249,22,65,194,195,80, +159,34,38,35,83,158,34,16,2,89,162,8,36,40,59,2,9,223,0,91,159, +37,11,90,161,37,34,11,26,9,80,159,46,8,47,35,205,206,23,16,23,17, +23,15,23,15,10,10,11,28,200,27,247,22,116,87,94,251,2,104,196,201,202, +197,193,28,249,22,150,8,194,21,95,2,60,93,2,61,2,61,28,201,21,95, +2,60,94,2,61,2,78,2,61,21,95,2,60,93,2,61,2,61,250,22,65, +2,60,249,22,67,2,61,249,80,158,44,52,28,23,16,21,93,2,78,9,9, +248,80,159,41,46,35,196,80,159,34,39,35,83,158,34,16,2,89,162,34,39, +51,2,22,223,0,253,80,158,40,39,199,200,201,202,11,203,80,159,34,53,35, +83,158,34,16,2,89,162,34,38,50,2,23,223,0,253,80,158,40,39,199,200, +201,202,10,11,80,159,34,54,35,83,158,34,16,2,32,0,89,162,34,35,43, +2,16,222,28,28,248,22,56,193,28,249,22,148,8,248,22,58,195,2,60,249, +22,150,8,248,22,84,195,21,93,2,61,11,11,248,22,93,193,249,22,67,194, +21,93,2,61,80,159,34,46,35,83,158,34,16,2,32,0,89,162,34,36,45, +2,18,222,28,28,248,22,56,193,28,249,22,148,8,248,22,58,195,2,60,249, +22,150,8,248,22,84,195,21,93,2,61,11,11,27,248,22,93,194,28,249,22, +148,8,194,2,61,194,28,28,248,22,56,193,28,249,22,148,8,248,22,58,195, +2,63,28,248,22,56,248,22,59,194,28,249,22,148,8,248,22,84,195,2,61, +248,22,63,248,22,86,194,11,11,11,11,249,22,65,2,63,196,249,22,65,195, +196,249,22,65,194,195,80,159,34,48,35,83,158,34,16,2,32,0,89,162,34, +36,45,2,19,222,28,28,248,22,56,193,28,249,22,148,8,248,22,58,195,2, +63,28,248,22,56,248,22,59,194,248,22,63,248,22,86,194,11,11,11,250,22, +65,2,74,248,22,84,196,196,250,22,65,2,75,195,196,80,159,34,49,35,83, +158,34,16,2,89,162,34,38,8,27,2,24,223,0,91,159,36,10,90,161,35, +34,10,195,90,161,35,35,10,89,162,34,40,8,64,2,52,226,2,5,3,1, +28,28,199,28,248,80,158,38,47,197,27,248,80,158,39,42,198,28,248,80,158, +39,47,193,28,27,248,80,158,40,43,194,28,248,22,47,248,22,153,3,194,249, +22,166,3,194,20,15,159,41,34,8,43,11,248,22,146,8,27,248,80,158,41, +43,200,28,248,22,47,248,22,153,3,194,249,22,166,3,194,20,15,159,42,34, +8,43,11,11,11,11,11,91,159,40,11,90,161,35,34,11,248,80,158,44,43, +203,90,161,37,35,11,27,248,80,158,45,42,248,80,158,46,42,205,27,248,80, +158,46,43,248,80,158,47,42,206,28,28,248,80,158,46,47,194,27,248,80,158, +47,43,195,28,248,22,47,248,22,153,3,194,249,22,166,3,194,20,15,159,48, +34,8,43,11,11,27,248,80,158,47,42,195,27,248,80,158,48,43,196,28,28, +248,80,158,48,47,194,27,248,80,158,49,43,195,28,248,22,47,248,22,153,3, +194,249,22,166,3,194,20,15,159,50,34,8,43,11,11,27,248,80,158,49,42, +195,27,248,80,158,50,43,196,28,28,248,80,158,50,47,194,27,248,80,158,51, +43,195,28,248,22,47,248,22,153,3,194,249,22,166,3,194,20,15,159,52,34, +8,43,11,11,27,248,80,158,51,42,195,27,248,80,158,52,43,196,28,28,248, +80,158,52,47,194,27,248,80,158,53,43,195,28,248,22,47,248,22,153,3,194, +249,22,166,3,194,20,15,159,54,34,8,43,11,11,27,248,80,158,53,42,195, +27,248,80,158,54,43,196,28,28,248,80,158,54,47,194,27,248,80,158,55,43, +195,28,248,22,47,248,22,153,3,194,249,22,166,3,194,20,15,159,56,34,8, +43,11,11,250,80,159,56,8,51,35,248,80,158,57,42,197,39,248,80,158,57, +43,197,250,22,7,38,196,195,250,22,7,37,196,195,250,22,7,36,196,195,250, +22,7,35,196,195,250,22,7,34,196,195,90,161,35,38,11,28,248,22,129,3, +194,192,249,22,152,3,11,249,22,65,27,248,22,178,2,199,28,248,22,129,3, +193,197,249,22,152,3,11,249,22,65,27,248,22,178,2,198,28,248,22,129,3, +193,202,249,22,152,3,11,249,22,65,27,248,22,178,2,198,28,248,22,129,3, +193,23,15,249,22,152,3,11,249,22,65,27,248,22,178,2,198,28,248,22,129, +3,193,23,20,249,22,152,3,11,249,22,65,27,248,22,178,2,198,28,248,22, +129,3,193,23,25,249,22,152,3,11,249,22,65,27,248,22,178,2,198,28,248, +22,129,3,193,23,30,249,22,152,3,11,249,22,65,27,248,22,178,2,198,28, +248,22,129,3,193,23,35,249,22,152,3,11,249,22,65,249,80,159,8,50,8, +52,35,23,41,248,22,178,2,199,20,15,159,8,48,35,8,43,20,15,159,8, +43,35,8,43,20,15,159,8,38,35,8,43,20,15,159,8,33,35,8,43,20, +15,159,8,28,35,8,43,20,15,159,57,35,8,43,20,15,159,52,35,8,43, +20,15,159,47,35,8,43,90,161,35,39,11,28,203,249,80,159,45,44,35,198, +202,11,87,94,28,248,22,63,198,251,22,1,22,177,8,2,83,6,48,48,110, +111,32,112,97,116,116,101,114,110,32,118,97,114,105,97,98,108,101,115,32,98, +101,102,111,114,101,32,101,108,108,105,112,115,101,115,32,105,110,32,116,101,109, +112,108,97,116,101,28,249,22,148,8,205,201,248,22,65,204,249,22,65,205,201, +12,27,28,204,249,22,2,89,162,34,35,48,9,226,12,10,15,14,251,80,158, +41,56,200,196,198,197,200,11,27,28,205,28,248,22,63,194,9,28,248,22,85, +194,27,248,22,59,195,28,248,22,63,193,9,28,248,22,85,193,248,2,105,248, +22,59,194,249,22,57,248,22,83,195,248,2,105,248,22,59,196,249,22,57,248, +22,83,196,27,248,22,59,197,28,248,22,63,193,9,28,248,22,85,193,248,2, +105,248,22,59,194,249,22,57,248,22,83,195,248,2,105,248,22,59,196,11,27, +28,206,28,248,22,63,195,9,28,248,22,85,195,249,22,57,248,22,83,197,27, +248,22,59,198,28,248,22,63,193,9,28,248,22,85,193,249,22,57,248,22,83, +195,248,2,106,248,22,59,196,248,2,106,248,22,59,194,27,248,22,59,196,28, +248,22,63,193,9,28,248,22,85,193,249,22,57,248,22,83,195,248,2,106,248, +22,59,196,248,2,106,248,22,59,194,11,27,28,23,15,248,80,159,48,57,35, +195,11,27,28,23,16,248,80,159,49,57,35,195,11,27,28,248,22,63,196,12, +28,248,22,63,197,251,22,1,22,177,8,2,83,6,29,29,116,111,111,32,109, +97,110,121,32,101,108,108,105,112,115,101,115,32,105,110,32,116,101,109,112,108, +97,116,101,28,249,22,148,8,23,19,23,15,248,22,65,23,18,249,22,65,23, +19,23,15,12,27,253,24,19,23,15,23,24,23,25,10,23,27,23,28,27,253, +24,20,23,18,28,23,25,249,22,71,205,206,11,23,18,10,11,23,29,28,23, +19,250,22,65,2,60,21,93,2,84,27,27,27,249,22,2,89,162,8,36,35, +48,9,225,25,30,27,250,80,159,39,58,35,2,84,249,80,159,41,37,35,200, +197,196,204,28,28,249,22,188,2,35,248,22,70,195,28,249,22,188,2,34,23, +17,28,248,22,63,202,249,22,150,8,200,21,95,2,60,93,2,84,94,2,85, +2,84,11,11,11,248,22,58,193,28,28,249,22,188,2,36,248,22,70,195,28, +249,22,188,2,34,23,17,28,248,22,63,202,249,22,150,8,200,21,95,2,60, +93,2,84,95,2,63,94,2,85,2,84,94,2,86,2,84,11,11,11,250,22, +67,2,68,21,95,2,60,94,2,87,2,88,95,2,63,2,87,2,88,249,80, +158,8,28,52,197,9,27,250,22,67,2,68,250,22,65,2,60,2,89,249,22, +65,23,15,28,248,22,63,23,19,2,89,21,95,2,90,2,91,2,89,249,80, +158,8,29,52,198,9,28,248,22,129,3,23,17,192,27,250,22,65,2,92,2, +90,196,27,248,22,178,2,23,19,28,248,22,129,3,193,193,27,250,22,65,2, 92,2,90,197,27,248,22,178,2,195,28,248,22,129,3,193,193,27,250,22,65, 2,92,2,90,197,27,248,22,178,2,195,28,248,22,129,3,193,193,27,250,22, 65,2,92,2,90,197,27,248,22,178,2,195,28,248,22,129,3,193,193,27,250, @@ -1217,538 +1215,538 @@ 250,22,65,2,92,2,90,197,27,248,22,178,2,195,28,248,22,129,3,193,193, 27,250,22,65,2,92,2,90,197,27,248,22,178,2,195,28,248,22,129,3,193, 193,27,250,22,65,2,92,2,90,197,27,248,22,178,2,195,28,248,22,129,3, -193,193,249,2,107,250,22,65,2,92,2,90,198,248,22,178,2,195,28,248,22, -63,201,192,250,22,65,2,66,248,22,65,249,22,65,2,91,249,22,67,2,63, -249,80,158,8,32,52,249,22,2,89,162,8,36,35,43,9,225,34,39,36,250, -80,159,39,58,35,2,84,249,80,159,41,37,35,200,197,196,23,20,9,195,27, -248,80,159,57,59,35,199,28,249,22,148,8,194,2,80,193,250,22,65,2,90, -196,195,12,28,248,80,158,38,47,197,27,248,80,158,39,43,198,28,28,200,28, -248,22,47,248,22,153,3,194,249,22,166,3,194,20,15,159,40,34,8,43,11, -11,28,28,248,80,158,39,47,248,80,158,40,42,199,248,80,158,39,41,248,80, -158,40,42,248,80,158,41,42,200,11,27,248,80,158,40,43,248,80,158,41,42, -200,253,215,198,205,198,11,23,16,23,17,251,22,176,8,2,83,6,30,30,109, -105,115,112,108,97,99,101,100,32,101,108,108,105,112,115,101,115,32,105,110,32, -116,101,109,112,108,97,116,101,198,196,27,253,215,199,205,199,23,15,23,16,23, -17,27,253,216,248,80,158,47,42,206,206,23,15,23,16,23,17,23,18,28,200, -250,22,65,2,60,21,93,2,84,251,80,158,47,8,26,206,248,80,159,48,59, -35,201,248,80,159,48,59,35,200,206,12,28,249,80,158,39,51,198,11,27,253, -214,248,22,173,7,248,22,153,3,205,204,203,206,23,15,23,16,28,198,250,22, -65,2,60,21,93,2,84,249,22,65,72,108,105,115,116,45,62,118,101,99,116, -111,114,249,22,65,2,64,248,80,159,46,59,35,200,12,28,248,80,158,38,50, -197,28,249,22,5,89,162,8,36,35,38,9,223,6,28,248,22,149,3,194,249, -22,164,3,194,195,11,196,28,197,250,22,65,2,60,21,93,2,84,249,22,65, -2,79,201,12,28,197,27,249,22,5,89,162,8,36,35,38,9,223,7,28,248, -22,149,3,194,249,22,164,3,194,195,11,200,28,192,250,22,65,2,60,21,93, -2,84,250,80,159,44,58,35,2,84,249,80,159,46,36,35,205,206,23,15,87, -95,28,200,28,28,248,22,47,248,22,153,3,199,249,22,166,3,199,20,15,159, -40,34,8,43,11,251,22,176,8,2,83,6,30,30,109,105,115,112,108,97,99, -101,100,32,101,108,108,105,112,115,101,115,32,105,110,32,116,101,109,112,108,97, -116,101,198,201,12,12,249,80,159,40,8,27,35,199,200,250,22,65,2,60,21, -93,2,84,249,22,65,2,79,202,28,28,28,248,22,47,248,22,153,3,198,249, -22,166,3,198,20,15,159,39,34,8,43,11,199,11,12,248,202,197,28,248,22, -63,197,28,197,21,95,2,60,93,2,84,2,80,12,28,197,250,22,65,2,60, -21,93,2,84,249,22,65,2,79,201,12,27,28,197,11,247,22,116,27,253,216, -203,204,203,10,28,204,248,22,178,2,248,22,70,206,11,28,204,11,89,162,8, -36,35,42,9,223,7,27,250,22,122,196,248,22,153,3,198,9,28,28,248,22, -56,193,249,22,5,89,162,8,36,35,38,9,223,4,249,22,164,3,195,194,194, -11,12,250,22,121,196,248,22,153,3,198,249,22,57,199,197,28,198,250,22,65, -2,60,21,93,2,84,27,27,248,80,159,44,59,35,198,28,28,248,22,56,193, -249,22,148,8,248,22,58,195,2,93,11,192,27,28,206,251,22,152,3,23,18, -2,50,23,18,23,18,11,250,22,65,1,26,100,97,116,117,109,45,62,115,121, -110,116,97,120,45,111,98,106,101,99,116,47,115,104,97,112,101,249,22,65,2, -79,197,196,28,248,80,159,43,8,28,35,203,251,22,65,1,20,99,97,116,99, -104,45,101,108,108,105,112,115,105,115,45,101,114,114,111,114,250,22,65,2,60, -9,199,249,22,65,2,69,23,15,249,22,65,2,79,250,22,152,3,11,2,46, -23,18,192,249,22,1,22,71,249,22,124,197,32,0,89,162,8,36,36,36,9, -222,193,80,159,34,55,35,83,158,34,16,2,32,0,89,162,34,35,38,2,28, -222,28,28,248,22,56,193,28,249,22,148,8,248,22,58,195,2,60,249,22,150, -8,248,22,84,195,21,93,2,84,11,11,248,22,93,193,249,22,67,194,21,93, -2,84,80,159,34,59,35,83,158,34,16,2,89,162,34,38,50,2,29,223,0, -28,28,248,22,56,195,28,249,22,148,8,248,22,58,197,2,79,28,249,22,148, -8,248,22,84,197,248,80,158,37,43,199,27,249,22,148,8,198,2,80,28,192, -192,28,248,22,56,197,28,249,22,148,8,248,22,58,199,2,79,249,22,148,8, -248,22,84,199,248,80,158,38,42,200,11,11,11,11,11,249,22,65,2,79,198, -28,28,248,22,56,196,249,22,148,8,248,22,58,198,2,93,11,28,28,248,22, -56,195,28,249,22,148,8,248,22,58,197,2,79,249,22,148,8,248,22,84,197, -248,80,158,37,43,199,11,11,250,22,67,2,93,249,22,65,2,79,27,249,22, -57,248,22,84,203,248,22,101,204,28,248,22,149,3,200,252,22,152,3,204,197, -204,204,204,192,248,22,86,199,28,28,248,22,56,195,249,22,148,8,2,93,248, -22,58,197,11,250,22,67,2,93,249,22,65,2,79,27,249,22,57,248,22,101, -203,248,22,101,204,28,248,22,149,3,200,252,22,152,3,204,197,204,204,204,192, -249,80,158,39,52,248,22,86,200,248,22,86,201,27,247,22,54,27,249,22,57, -195,248,22,101,200,27,28,248,22,149,3,197,252,22,152,3,201,198,201,201,201, -193,252,22,67,2,93,249,22,65,2,79,199,199,202,248,22,86,204,28,249,22, -148,8,197,2,80,251,80,158,38,8,26,197,198,21,94,2,93,94,2,79,9, -200,28,28,248,22,56,196,28,249,22,148,8,248,22,58,198,2,79,27,248,22, -58,197,249,22,190,2,44,249,80,159,39,8,30,35,196,45,11,11,251,80,158, -38,8,26,197,198,249,22,65,2,93,201,200,251,80,158,38,8,26,197,198,27, -247,22,54,251,22,65,2,93,249,22,65,2,79,198,196,204,200,80,159,34,8, -26,35,83,158,34,16,2,89,162,34,36,47,2,32,223,0,249,22,190,2,196, -27,248,22,177,2,198,28,249,22,189,2,194,35,34,28,248,22,149,3,197,249, -80,159,39,8,30,35,248,22,153,3,199,194,28,248,22,56,197,27,249,80,159, -40,8,30,35,248,22,58,200,195,249,22,179,2,194,249,80,159,42,8,30,35, -248,22,59,202,249,22,180,2,199,198,28,248,22,166,7,197,249,80,159,39,8, -30,35,248,22,173,7,199,194,28,248,22,113,197,248,22,177,2,249,80,159,40, -8,30,35,248,22,114,200,248,22,178,2,196,35,80,159,34,8,29,35,83,158, -34,16,2,89,162,34,36,49,2,33,223,0,28,249,22,189,2,196,35,34,28, -248,22,149,3,194,27,248,22,153,3,195,28,249,22,189,2,197,35,34,28,248, +193,193,27,250,22,65,2,92,2,90,197,27,248,22,178,2,195,28,248,22,129, +3,193,193,27,250,22,65,2,92,2,90,197,27,248,22,178,2,195,28,248,22, +129,3,193,193,249,2,107,250,22,65,2,92,2,90,198,248,22,178,2,195,28, +248,22,63,201,192,250,22,65,2,66,248,22,65,249,22,65,2,91,249,22,67, +2,63,249,80,158,8,32,52,249,22,2,89,162,8,36,35,48,9,225,34,39, +36,250,80,159,39,58,35,2,84,249,80,159,41,37,35,200,197,196,23,20,9, +195,27,248,80,159,57,59,35,199,28,249,22,148,8,194,2,80,193,250,22,65, +2,90,196,195,12,28,248,80,158,38,47,197,27,248,80,158,39,43,198,28,28, +200,28,248,22,47,248,22,153,3,194,249,22,166,3,194,20,15,159,40,34,8, +43,11,11,28,28,248,80,158,39,47,248,80,158,40,42,199,248,80,158,39,41, +248,80,158,40,42,248,80,158,41,42,200,11,27,248,80,158,40,43,248,80,158, +41,42,200,253,215,198,205,198,11,23,16,23,17,251,22,177,8,2,83,6,30, +30,109,105,115,112,108,97,99,101,100,32,101,108,108,105,112,115,101,115,32,105, +110,32,116,101,109,112,108,97,116,101,198,196,27,253,215,199,205,199,23,15,23, +16,23,17,27,253,216,248,80,158,47,42,206,206,23,15,23,16,23,17,23,18, +28,200,250,22,65,2,60,21,93,2,84,251,80,158,47,8,26,206,248,80,159, +48,59,35,201,248,80,159,48,59,35,200,206,12,28,249,80,158,39,51,198,11, +27,253,214,248,22,173,7,248,22,153,3,205,204,203,206,23,15,23,16,28,198, +250,22,65,2,60,21,93,2,84,249,22,65,72,108,105,115,116,45,62,118,101, +99,116,111,114,249,22,65,2,64,248,80,159,46,59,35,200,12,28,248,80,158, +38,50,197,28,249,22,5,89,162,8,36,35,43,9,223,6,28,248,22,149,3, +194,249,22,164,3,194,195,11,196,28,197,250,22,65,2,60,21,93,2,84,249, +22,65,2,79,201,12,28,197,27,249,22,5,89,162,8,36,35,43,9,223,7, +28,248,22,149,3,194,249,22,164,3,194,195,11,200,28,192,250,22,65,2,60, +21,93,2,84,250,80,159,44,58,35,2,84,249,80,159,46,36,35,205,206,23, +15,87,95,28,200,28,28,248,22,47,248,22,153,3,199,249,22,166,3,199,20, +15,159,40,34,8,43,11,251,22,177,8,2,83,6,30,30,109,105,115,112,108, +97,99,101,100,32,101,108,108,105,112,115,101,115,32,105,110,32,116,101,109,112, +108,97,116,101,198,201,12,12,249,80,159,40,8,27,35,199,200,250,22,65,2, +60,21,93,2,84,249,22,65,2,79,202,28,28,28,248,22,47,248,22,153,3, +198,249,22,166,3,198,20,15,159,39,34,8,43,11,199,11,12,248,202,197,28, +248,22,63,197,28,197,21,95,2,60,93,2,84,2,80,12,28,197,250,22,65, +2,60,21,93,2,84,249,22,65,2,79,201,12,27,28,197,11,247,22,116,27, +253,216,203,204,203,10,28,204,248,22,178,2,248,22,70,206,11,28,204,11,89, +162,8,36,35,47,9,223,7,27,250,22,122,196,248,22,153,3,198,9,28,28, +248,22,56,193,249,22,5,89,162,8,36,35,43,9,223,4,249,22,164,3,195, +194,194,11,12,250,22,121,196,248,22,153,3,198,249,22,57,199,197,28,198,250, +22,65,2,60,21,93,2,84,27,27,248,80,159,44,59,35,198,28,28,248,22, +56,193,249,22,148,8,248,22,58,195,2,93,11,192,27,28,206,251,22,152,3, +23,18,2,50,23,18,23,18,11,250,22,65,1,26,100,97,116,117,109,45,62, +115,121,110,116,97,120,45,111,98,106,101,99,116,47,115,104,97,112,101,249,22, +65,2,79,197,196,28,248,80,159,43,8,28,35,203,251,22,65,1,20,99,97, +116,99,104,45,101,108,108,105,112,115,105,115,45,101,114,114,111,114,250,22,65, +2,60,9,199,249,22,65,2,69,23,15,249,22,65,2,79,250,22,152,3,11, +2,46,23,18,192,249,22,1,22,71,249,22,124,197,32,0,89,162,8,36,36, +41,9,222,193,80,159,34,55,35,83,158,34,16,2,32,0,89,162,34,35,43, +2,28,222,28,28,248,22,56,193,28,249,22,148,8,248,22,58,195,2,60,249, +22,150,8,248,22,84,195,21,93,2,84,11,11,248,22,93,193,249,22,67,194, +21,93,2,84,80,159,34,59,35,83,158,34,16,2,89,162,34,38,55,2,29, +223,0,28,28,248,22,56,195,28,249,22,148,8,248,22,58,197,2,79,28,249, +22,148,8,248,22,84,197,248,80,158,37,43,199,27,249,22,148,8,198,2,80, +28,192,192,28,248,22,56,197,28,249,22,148,8,248,22,58,199,2,79,249,22, +148,8,248,22,84,199,248,80,158,38,42,200,11,11,11,11,11,249,22,65,2, +79,198,28,28,248,22,56,196,249,22,148,8,248,22,58,198,2,93,11,28,28, +248,22,56,195,28,249,22,148,8,248,22,58,197,2,79,249,22,148,8,248,22, +84,197,248,80,158,37,43,199,11,11,250,22,67,2,93,249,22,65,2,79,27, +249,22,57,248,22,84,203,248,22,101,204,28,248,22,149,3,200,252,22,152,3, +204,197,204,204,204,192,248,22,86,199,28,28,248,22,56,195,249,22,148,8,2, +93,248,22,58,197,11,250,22,67,2,93,249,22,65,2,79,27,249,22,57,248, +22,101,203,248,22,101,204,28,248,22,149,3,200,252,22,152,3,204,197,204,204, +204,192,249,80,158,39,52,248,22,86,200,248,22,86,201,27,247,22,54,27,249, +22,57,195,248,22,101,200,27,28,248,22,149,3,197,252,22,152,3,201,198,201, +201,201,193,252,22,67,2,93,249,22,65,2,79,199,199,202,248,22,86,204,28, +249,22,148,8,197,2,80,251,80,158,38,8,26,197,198,21,94,2,93,94,2, +79,9,200,28,28,248,22,56,196,28,249,22,148,8,248,22,58,198,2,79,27, +248,22,58,197,249,22,190,2,44,249,80,159,39,8,30,35,196,45,11,11,251, +80,158,38,8,26,197,198,249,22,65,2,93,201,200,251,80,158,38,8,26,197, +198,27,247,22,54,251,22,65,2,93,249,22,65,2,79,198,196,204,200,80,159, +34,8,26,35,83,158,34,16,2,89,162,34,36,52,2,32,223,0,249,22,190, +2,196,27,248,22,177,2,198,28,249,22,189,2,194,35,34,28,248,22,149,3, +197,249,80,159,39,8,30,35,248,22,153,3,199,194,28,248,22,56,197,27,249, +80,159,40,8,30,35,248,22,58,200,195,249,22,179,2,194,249,80,159,42,8, +30,35,248,22,59,202,249,22,180,2,199,198,28,248,22,166,7,197,249,80,159, +39,8,30,35,248,22,173,7,199,194,28,248,22,113,197,248,22,177,2,249,80, +159,40,8,30,35,248,22,114,200,248,22,178,2,196,35,80,159,34,8,29,35, +83,158,34,16,2,89,162,34,36,54,2,33,223,0,28,249,22,189,2,196,35, +34,28,248,22,149,3,194,27,248,22,153,3,195,28,249,22,189,2,197,35,34, +28,248,22,149,3,193,249,80,159,37,8,30,35,248,22,153,3,195,197,28,248, +22,56,193,27,249,80,159,38,8,30,35,248,22,58,196,198,249,22,179,2,194, +249,80,159,40,8,30,35,248,22,59,198,249,22,180,2,202,198,28,248,22,166, +7,193,249,80,159,37,8,30,35,248,22,173,7,195,197,28,248,22,113,193,248, +22,177,2,249,80,159,38,8,30,35,248,22,114,196,248,22,178,2,199,35,28, +248,22,56,194,27,27,248,22,58,196,28,249,22,189,2,198,35,34,28,248,22, +149,3,193,249,80,159,38,8,30,35,248,22,153,3,195,198,28,248,22,56,193, +27,249,80,159,39,8,30,35,248,22,58,196,199,249,22,179,2,194,249,80,159, +41,8,30,35,248,22,59,198,249,22,180,2,203,198,28,248,22,166,7,193,249, +80,159,38,8,30,35,248,22,173,7,195,198,28,248,22,113,193,248,22,177,2, +249,80,159,39,8,30,35,248,22,114,196,248,22,178,2,200,35,249,22,179,2, +194,27,248,22,59,198,27,249,22,180,2,201,198,28,249,22,189,2,194,35,34, +28,248,22,149,3,194,249,80,159,41,8,30,35,248,22,153,3,196,194,28,248, +22,56,194,27,249,80,159,42,8,30,35,248,22,58,197,195,249,22,179,2,194, +249,80,159,44,8,30,35,248,22,59,199,249,22,180,2,199,198,28,248,22,166, +7,194,249,80,159,41,8,30,35,248,22,173,7,196,194,28,248,22,113,194,248, +22,177,2,249,80,159,42,8,30,35,248,22,114,197,248,22,178,2,196,35,28, +248,22,166,7,194,27,248,22,173,7,195,28,249,22,189,2,197,35,34,28,248, 22,149,3,193,249,80,159,37,8,30,35,248,22,153,3,195,197,28,248,22,56, 193,27,249,80,159,38,8,30,35,248,22,58,196,198,249,22,179,2,194,249,80, 159,40,8,30,35,248,22,59,198,249,22,180,2,202,198,28,248,22,166,7,193, 249,80,159,37,8,30,35,248,22,173,7,195,197,28,248,22,113,193,248,22,177, 2,249,80,159,38,8,30,35,248,22,114,196,248,22,178,2,199,35,28,248,22, -56,194,27,27,248,22,58,196,28,249,22,189,2,198,35,34,28,248,22,149,3, -193,249,80,159,38,8,30,35,248,22,153,3,195,198,28,248,22,56,193,27,249, -80,159,39,8,30,35,248,22,58,196,199,249,22,179,2,194,249,80,159,41,8, -30,35,248,22,59,198,249,22,180,2,203,198,28,248,22,166,7,193,249,80,159, -38,8,30,35,248,22,173,7,195,198,28,248,22,113,193,248,22,177,2,249,80, -159,39,8,30,35,248,22,114,196,248,22,178,2,200,35,249,22,179,2,194,27, -248,22,59,198,27,249,22,180,2,201,198,28,249,22,189,2,194,35,34,28,248, -22,149,3,194,249,80,159,41,8,30,35,248,22,153,3,196,194,28,248,22,56, -194,27,249,80,159,42,8,30,35,248,22,58,197,195,249,22,179,2,194,249,80, -159,44,8,30,35,248,22,59,199,249,22,180,2,199,198,28,248,22,166,7,194, -249,80,159,41,8,30,35,248,22,173,7,196,194,28,248,22,113,194,248,22,177, -2,249,80,159,42,8,30,35,248,22,114,197,248,22,178,2,196,35,28,248,22, -166,7,194,27,248,22,173,7,195,28,249,22,189,2,197,35,34,28,248,22,149, -3,193,249,80,159,37,8,30,35,248,22,153,3,195,197,28,248,22,56,193,27, -249,80,159,38,8,30,35,248,22,58,196,198,249,22,179,2,194,249,80,159,40, -8,30,35,248,22,59,198,249,22,180,2,202,198,28,248,22,166,7,193,249,80, -159,37,8,30,35,248,22,173,7,195,197,28,248,22,113,193,248,22,177,2,249, -80,159,38,8,30,35,248,22,114,196,248,22,178,2,199,35,28,248,22,113,194, -248,22,177,2,27,248,22,114,196,27,248,22,178,2,198,28,249,22,189,2,194, -35,34,28,248,22,149,3,194,249,80,159,39,8,30,35,248,22,153,3,196,194, -28,248,22,56,194,27,249,80,159,40,8,30,35,248,22,58,197,195,249,22,179, -2,194,249,80,159,42,8,30,35,248,22,59,199,249,22,180,2,199,198,28,248, -22,166,7,194,249,80,159,39,8,30,35,248,22,173,7,196,194,28,248,22,113, -194,248,22,177,2,249,80,159,40,8,30,35,248,22,114,197,248,22,178,2,196, -35,35,80,159,34,8,30,35,83,158,34,16,2,32,0,89,162,34,37,40,2, -27,222,28,28,194,249,22,188,2,195,196,11,28,249,22,148,8,195,34,192,28, -249,22,148,8,195,35,249,22,65,63,99,100,114,194,28,249,22,148,8,195,36, -249,22,65,64,99,100,100,114,194,28,249,22,148,8,195,37,249,22,65,65,99, -100,100,100,114,194,28,249,22,148,8,195,38,249,22,65,66,99,100,100,100,100, -114,194,250,22,65,69,108,105,115,116,45,116,97,105,108,195,196,28,249,22,148, -8,195,34,249,22,65,2,85,194,28,249,22,148,8,195,35,249,22,65,2,86, -194,28,249,22,148,8,195,36,249,22,65,65,99,97,100,100,114,194,28,249,22, -148,8,195,37,249,22,65,66,99,97,100,100,100,114,194,250,22,65,68,108,105, -115,116,45,114,101,102,195,196,80,159,34,58,35,83,158,34,16,2,89,162,34, -36,41,2,14,223,0,250,80,159,37,8,53,35,197,196,10,80,159,34,44,35, -83,158,34,16,2,89,162,8,36,38,54,2,25,223,0,27,249,22,5,89,162, -34,35,45,9,223,4,27,28,248,22,56,195,248,22,58,195,194,27,248,22,56, -196,28,28,248,22,56,194,248,22,56,195,11,252,2,108,198,200,248,22,58,199, -248,22,58,200,10,28,248,22,56,195,252,2,108,198,200,198,248,22,58,200,11, -28,248,22,149,3,194,28,248,22,149,3,195,28,249,22,164,3,195,196,249,22, -57,28,194,195,197,248,22,146,8,195,11,11,11,197,87,94,28,192,12,251,22, -1,22,176,8,2,83,6,49,49,116,111,111,32,102,101,119,32,101,108,108,105, -112,115,101,115,32,102,111,114,32,112,97,116,116,101,114,110,32,118,97,114,105, -97,98,108,101,32,105,110,32,116,101,109,112,108,97,116,101,27,28,248,22,149, -3,200,199,27,248,22,58,201,28,248,22,149,3,193,192,27,248,22,58,194,28, +113,194,248,22,177,2,27,248,22,114,196,27,248,22,178,2,198,28,249,22,189, +2,194,35,34,28,248,22,149,3,194,249,80,159,39,8,30,35,248,22,153,3, +196,194,28,248,22,56,194,27,249,80,159,40,8,30,35,248,22,58,197,195,249, +22,179,2,194,249,80,159,42,8,30,35,248,22,59,199,249,22,180,2,199,198, +28,248,22,166,7,194,249,80,159,39,8,30,35,248,22,173,7,196,194,28,248, +22,113,194,248,22,177,2,249,80,159,40,8,30,35,248,22,114,197,248,22,178, +2,196,35,35,80,159,34,8,30,35,83,158,34,16,2,32,0,89,162,34,37, +45,2,27,222,28,28,194,249,22,188,2,195,196,11,28,249,22,148,8,195,34, +192,28,249,22,148,8,195,35,249,22,65,63,99,100,114,194,28,249,22,148,8, +195,36,249,22,65,64,99,100,100,114,194,28,249,22,148,8,195,37,249,22,65, +65,99,100,100,100,114,194,28,249,22,148,8,195,38,249,22,65,66,99,100,100, +100,100,114,194,250,22,65,69,108,105,115,116,45,116,97,105,108,195,196,28,249, +22,148,8,195,34,249,22,65,2,85,194,28,249,22,148,8,195,35,249,22,65, +2,86,194,28,249,22,148,8,195,36,249,22,65,65,99,97,100,100,114,194,28, +249,22,148,8,195,37,249,22,65,66,99,97,100,100,100,114,194,250,22,65,68, +108,105,115,116,45,114,101,102,195,196,80,159,34,58,35,83,158,34,16,2,89, +162,34,36,46,2,14,223,0,250,80,159,37,8,53,35,197,196,10,80,159,34, +44,35,83,158,34,16,2,89,162,8,36,38,59,2,25,223,0,27,249,22,5, +89,162,34,35,50,9,223,4,27,28,248,22,56,195,248,22,58,195,194,27,248, +22,56,196,28,28,248,22,56,194,248,22,56,195,11,252,2,108,198,200,248,22, +58,199,248,22,58,200,10,28,248,22,56,195,252,2,108,198,200,198,248,22,58, +200,11,28,248,22,149,3,194,28,248,22,149,3,195,28,249,22,164,3,195,196, +249,22,57,28,194,195,197,248,22,146,8,195,11,11,11,197,87,94,28,192,12, +251,22,1,22,177,8,2,83,6,49,49,116,111,111,32,102,101,119,32,101,108, +108,105,112,115,101,115,32,102,111,114,32,112,97,116,116,101,114,110,32,118,97, +114,105,97,98,108,101,32,105,110,32,116,101,109,112,108,97,116,101,27,28,248, +22,149,3,200,199,27,248,22,58,201,28,248,22,149,3,193,192,27,248,22,58, +194,28,248,22,149,3,193,192,27,248,22,58,194,28,248,22,149,3,193,192,27, +248,22,58,194,28,248,22,149,3,193,192,27,248,22,58,194,28,248,22,149,3, +193,192,27,248,22,58,194,28,248,22,149,3,193,192,248,2,109,248,22,58,194, +28,249,22,148,8,203,194,248,22,65,202,249,22,65,203,194,192,80,159,34,56, +35,83,158,34,16,2,32,0,89,162,34,35,42,2,26,222,249,22,2,32,0, +89,162,8,36,35,49,9,222,28,248,22,149,3,193,192,27,248,22,58,194,28, 248,22,149,3,193,192,27,248,22,58,194,28,248,22,149,3,193,192,27,248,22, 58,194,28,248,22,149,3,193,192,27,248,22,58,194,28,248,22,149,3,193,192, -27,248,22,58,194,28,248,22,149,3,193,192,248,2,109,248,22,58,194,28,249, -22,148,8,203,194,248,22,65,202,249,22,65,203,194,192,80,159,34,56,35,83, -158,34,16,2,32,0,89,162,34,35,37,2,26,222,249,22,2,32,0,89,162, -8,36,35,44,9,222,28,248,22,149,3,193,192,27,248,22,58,194,28,248,22, -149,3,193,192,27,248,22,58,194,28,248,22,149,3,193,192,27,248,22,58,194, -28,248,22,149,3,193,192,27,248,22,58,194,28,248,22,149,3,193,192,27,248, -22,58,194,28,248,22,149,3,193,192,27,248,22,58,194,28,248,22,149,3,193, -192,248,2,110,248,22,58,194,194,80,159,34,57,35,83,158,34,16,2,32,0, -89,162,34,36,38,2,30,222,249,22,3,89,162,34,35,42,9,223,2,28,248, -22,56,194,27,248,22,58,195,28,248,22,149,3,193,28,249,22,164,3,194,195, -250,22,176,8,2,83,2,94,196,12,27,248,22,58,194,28,248,22,149,3,193, -28,249,22,164,3,194,196,250,22,176,8,2,83,2,94,197,12,249,2,111,196, -248,22,58,195,12,195,80,159,34,8,27,35,83,158,34,16,2,89,162,34,35, -41,2,10,223,0,28,248,80,158,35,47,194,27,248,80,158,36,42,195,28,248, -80,158,36,47,193,28,27,248,80,158,37,43,194,28,248,22,47,248,22,153,3, -194,249,22,166,3,194,20,15,159,38,34,8,43,11,248,22,146,8,27,248,80, -158,38,43,197,28,248,22,47,248,22,153,3,194,249,22,166,3,194,20,15,159, -39,34,8,43,11,11,11,11,80,159,34,40,35,83,158,34,16,2,32,0,89, -162,34,36,39,2,15,222,249,2,112,195,194,80,159,34,45,35,83,158,34,16, -2,32,0,89,162,34,35,37,2,31,222,248,2,114,193,80,159,34,8,28,35, -83,158,34,16,2,89,162,34,35,41,2,34,223,0,28,248,80,158,35,47,194, -28,27,248,80,158,36,43,195,28,248,80,158,36,47,193,28,27,248,80,158,37, -43,194,28,248,80,158,37,47,193,28,248,80,159,37,8,31,35,248,80,158,38, -43,194,248,80,159,37,8,31,35,248,80,158,38,42,194,11,28,248,80,158,37, +27,248,22,58,194,28,248,22,149,3,193,192,27,248,22,58,194,28,248,22,149, +3,193,192,248,2,110,248,22,58,194,194,80,159,34,57,35,83,158,34,16,2, +32,0,89,162,34,36,43,2,30,222,249,22,3,89,162,34,35,47,9,223,2, +28,248,22,56,194,27,248,22,58,195,28,248,22,149,3,193,28,249,22,164,3, +194,195,250,22,177,8,2,83,2,94,196,12,27,248,22,58,194,28,248,22,149, +3,193,28,249,22,164,3,194,196,250,22,177,8,2,83,2,94,197,12,249,2, +111,196,248,22,58,195,12,195,80,159,34,8,27,35,83,158,34,16,2,89,162, +34,35,46,2,10,223,0,28,248,80,158,35,47,194,27,248,80,158,36,42,195, +28,248,80,158,36,47,193,28,27,248,80,158,37,43,194,28,248,22,47,248,22, +153,3,194,249,22,166,3,194,20,15,159,38,34,8,43,11,248,22,146,8,27, +248,80,158,38,43,197,28,248,22,47,248,22,153,3,194,249,22,166,3,194,20, +15,159,39,34,8,43,11,11,11,11,80,159,34,40,35,83,158,34,16,2,32, +0,89,162,34,36,44,2,15,222,249,2,112,195,194,80,159,34,45,35,83,158, +34,16,2,32,0,89,162,34,35,42,2,31,222,248,2,114,193,80,159,34,8, +28,35,83,158,34,16,2,89,162,34,35,46,2,34,223,0,28,248,80,158,35, +47,194,28,27,248,80,158,36,43,195,28,248,80,158,36,47,193,28,27,248,80, +158,37,43,194,28,248,80,158,37,47,193,28,248,80,159,37,8,31,35,248,80, +158,38,43,194,248,80,159,37,8,31,35,248,80,158,38,42,194,11,28,248,80, +158,37,50,193,248,22,146,8,28,248,22,47,248,22,153,3,195,249,22,166,3, +195,20,15,159,39,34,8,43,11,10,27,248,80,158,37,42,194,28,248,80,158, +37,47,193,28,248,80,159,37,8,31,35,248,80,158,38,43,194,248,80,159,37, +8,31,35,248,80,158,38,42,194,11,28,248,80,158,37,50,193,248,22,146,8, +28,248,22,47,248,22,153,3,195,249,22,166,3,195,20,15,159,39,34,8,43, +11,10,11,28,248,80,158,36,50,193,248,22,146,8,28,248,22,47,248,22,153, +3,195,249,22,166,3,195,20,15,159,38,34,8,43,11,10,27,248,80,158,36, +42,195,28,248,80,158,36,47,193,28,27,248,80,158,37,43,194,28,248,80,158, +37,47,193,28,248,80,159,37,8,31,35,248,80,158,38,43,194,248,80,159,37, +8,31,35,248,80,158,38,42,194,11,28,248,80,158,37,50,193,248,22,146,8, +28,248,22,47,248,22,153,3,195,249,22,166,3,195,20,15,159,39,34,8,43, +11,10,27,248,80,158,37,42,194,28,248,80,158,37,47,193,28,248,80,159,37, +8,31,35,248,80,158,38,43,194,248,80,159,37,8,31,35,248,80,158,38,42, +194,11,28,248,80,158,37,50,193,248,22,146,8,28,248,22,47,248,22,153,3, +195,249,22,166,3,195,20,15,159,39,34,8,43,11,10,11,28,248,80,158,36, 50,193,248,22,146,8,28,248,22,47,248,22,153,3,195,249,22,166,3,195,20, -15,159,39,34,8,43,11,10,27,248,80,158,37,42,194,28,248,80,158,37,47, -193,28,248,80,159,37,8,31,35,248,80,158,38,43,194,248,80,159,37,8,31, -35,248,80,158,38,42,194,11,28,248,80,158,37,50,193,248,22,146,8,28,248, -22,47,248,22,153,3,195,249,22,166,3,195,20,15,159,39,34,8,43,11,10, -11,28,248,80,158,36,50,193,248,22,146,8,28,248,22,47,248,22,153,3,195, -249,22,166,3,195,20,15,159,38,34,8,43,11,10,27,248,80,158,36,42,195, -28,248,80,158,36,47,193,28,27,248,80,158,37,43,194,28,248,80,158,37,47, -193,28,248,80,159,37,8,31,35,248,80,158,38,43,194,248,80,159,37,8,31, -35,248,80,158,38,42,194,11,28,248,80,158,37,50,193,248,22,146,8,28,248, -22,47,248,22,153,3,195,249,22,166,3,195,20,15,159,39,34,8,43,11,10, -27,248,80,158,37,42,194,28,248,80,158,37,47,193,28,248,80,159,37,8,31, -35,248,80,158,38,43,194,248,80,159,37,8,31,35,248,80,158,38,42,194,11, -28,248,80,158,37,50,193,248,22,146,8,28,248,22,47,248,22,153,3,195,249, -22,166,3,195,20,15,159,39,34,8,43,11,10,11,28,248,80,158,36,50,193, -248,22,146,8,28,248,22,47,248,22,153,3,195,249,22,166,3,195,20,15,159, -38,34,8,43,11,10,11,28,248,80,158,35,50,194,248,22,146,8,28,248,22, -47,248,22,153,3,196,249,22,166,3,196,20,15,159,37,34,8,43,11,10,80, -159,34,8,31,35,83,158,34,16,6,26,8,22,167,9,74,115,121,110,116,97, -120,45,109,97,112,112,105,110,103,11,36,34,11,9,247,22,190,9,89,162,34, -36,44,9,223,8,28,248,80,158,35,50,195,250,22,176,8,11,6,53,53,112, -97,116,116,101,114,110,32,118,97,114,105,97,98,108,101,32,99,97,110,110,111, -116,32,98,101,32,117,115,101,100,32,111,117,116,115,105,100,101,32,111,102,32, -97,32,116,101,109,112,108,97,116,101,197,251,22,176,8,11,6,53,53,112,97, -116,116,101,114,110,32,118,97,114,105,97,98,108,101,32,99,97,110,110,111,116, -32,98,101,32,117,115,101,100,32,111,117,116,115,105,100,101,32,111,102,32,97, -32,116,101,109,112,108,97,116,101,198,28,249,22,168,3,20,15,159,40,36,8, -43,248,80,158,41,43,201,248,80,158,39,43,248,80,158,40,42,200,248,80,158, -39,43,199,80,159,34,8,32,35,80,159,34,8,33,35,80,159,34,8,34,35, -80,159,34,8,35,35,80,159,34,8,36,35,83,158,34,16,2,249,22,169,9, -80,158,36,8,35,34,80,159,34,8,37,35,83,158,34,16,2,249,22,169,9, -80,158,36,8,35,35,80,159,34,8,38,35,83,158,34,16,2,89,162,34,36, -40,2,42,223,0,248,22,178,13,249,80,158,37,8,33,196,197,80,159,34,8, -39,35,83,158,34,16,2,89,162,34,35,38,2,43,223,0,28,248,22,179,13, -194,248,80,158,35,8,34,248,22,180,13,195,11,80,159,34,8,40,35,83,158, -34,16,2,89,162,34,35,38,2,44,223,0,248,80,158,35,8,37,248,22,180, -13,195,80,159,34,8,41,35,83,158,34,16,2,89,162,34,35,38,2,45,223, -0,248,80,158,35,8,38,248,22,180,13,195,80,159,34,8,42,35,95,2,3, -2,11,2,47,9,2,3,0}; - EVAL_ONE_SIZED_STR((char *)expr, 14287); +15,159,38,34,8,43,11,10,11,28,248,80,158,35,50,194,248,22,146,8,28, +248,22,47,248,22,153,3,196,249,22,166,3,196,20,15,159,37,34,8,43,11, +10,80,159,34,8,31,35,83,158,34,16,6,26,8,22,168,9,74,115,121,110, +116,97,120,45,109,97,112,112,105,110,103,11,36,34,11,9,247,22,191,9,89, +162,34,36,49,9,223,8,28,248,80,158,35,50,195,250,22,177,8,11,6,53, +53,112,97,116,116,101,114,110,32,118,97,114,105,97,98,108,101,32,99,97,110, +110,111,116,32,98,101,32,117,115,101,100,32,111,117,116,115,105,100,101,32,111, +102,32,97,32,116,101,109,112,108,97,116,101,197,251,22,177,8,11,6,53,53, +112,97,116,116,101,114,110,32,118,97,114,105,97,98,108,101,32,99,97,110,110, +111,116,32,98,101,32,117,115,101,100,32,111,117,116,115,105,100,101,32,111,102, +32,97,32,116,101,109,112,108,97,116,101,198,28,249,22,168,3,20,15,159,40, +36,8,43,248,80,158,41,43,201,248,80,158,39,43,248,80,158,40,42,200,248, +80,158,39,43,199,80,159,34,8,32,35,80,159,34,8,33,35,80,159,34,8, +34,35,80,159,34,8,35,35,80,159,34,8,36,35,83,158,34,16,2,249,22, +170,9,80,158,36,8,35,34,80,159,34,8,37,35,83,158,34,16,2,249,22, +170,9,80,158,36,8,35,35,80,159,34,8,38,35,83,158,34,16,2,89,162, +34,36,45,2,42,223,0,248,22,179,13,249,80,158,37,8,33,196,197,80,159, +34,8,39,35,83,158,34,16,2,89,162,34,35,43,2,43,223,0,28,248,22, +180,13,194,248,80,158,35,8,34,248,22,181,13,195,11,80,159,34,8,40,35, +83,158,34,16,2,89,162,34,35,43,2,44,223,0,248,80,158,35,8,37,248, +22,181,13,195,80,159,34,8,41,35,83,158,34,16,2,89,162,34,35,43,2, +45,223,0,248,80,158,35,8,38,248,22,181,13,195,80,159,34,8,42,35,95, +2,3,2,11,2,47,9,2,3,0}; + EVAL_ONE_SIZED_STR((char *)expr, 14289); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,55,143,0,0,0,1,0,0,3,0,31,0,53,0, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,56,139,0,0,0,1,0,0,3,0,31,0,53,0, 62,0,78,0,104,0,111,0,125,0,144,0,149,0,153,0,158,0,164,0,171, 0,175,0,180,0,186,0,193,0,202,0,212,0,218,0,223,0,238,0,243,0, 253,0,7,1,14,1,16,1,36,1,41,1,50,1,54,1,56,1,58,1,68, -1,77,1,85,1,93,1,103,1,108,1,118,1,132,1,136,1,149,1,159,1, -167,1,177,1,194,1,204,1,217,1,227,1,239,1,244,1,255,1,9,2,12, -2,24,2,33,2,43,2,53,2,62,2,72,2,82,2,92,2,104,2,113,2, -247,2,125,3,137,3,149,3,163,3,179,3,193,3,199,3,221,3,15,4,111, -4,172,4,0,5,16,5,74,5,90,5,106,5,122,5,142,5,170,5,206,5, -241,5,4,6,10,6,16,6,42,6,48,6,88,6,104,6,147,6,187,6,235, -6,254,6,46,7,62,7,78,7,111,7,117,7,123,7,129,7,135,7,153,7, -165,7,202,7,208,7,214,7,220,7,226,7,232,7,238,7,244,7,250,7,54, -8,60,8,66,8,94,8,160,8,184,8,190,8,196,8,5,9,11,9,17,9, -103,9,210,9,226,9,15,10,42,10,68,10,84,10,92,10,117,10,220,10,226, -10,237,10,90,11,0,0,151,25,0,0,29,11,11,1,26,100,97,116,117,109, -45,62,115,121,110,116,97,120,45,111,98,106,101,99,116,47,115,104,97,112,101, -1,20,99,97,116,99,104,45,101,108,108,105,112,115,105,115,45,101,114,114,111, -114,68,35,37,112,97,114,97,109,122,75,115,117,98,115,116,105,116,117,116,101, -45,115,116,111,112,1,24,97,112,112,108,121,45,112,97,116,116,101,114,110,45, -115,117,98,115,116,105,116,117,116,101,66,115,121,110,116,97,120,73,115,121,110, -116,97,120,45,99,97,115,101,42,42,78,112,97,116,116,101,114,110,45,115,117, -98,115,116,105,116,117,116,101,64,108,111,111,112,63,99,97,114,64,99,97,100, -114,65,99,97,100,100,114,66,99,97,100,100,100,114,63,99,100,114,64,99,100, -100,114,65,99,100,100,100,114,66,99,100,100,100,100,114,68,108,105,115,116,45, -114,101,102,69,108,105,115,116,45,116,97,105,108,65,35,37,115,116,120,64,104, -101,114,101,74,35,37,115,109,97,108,108,45,115,99,104,101,109,101,64,35,37, -115,99,3,1,7,101,110,118,50,56,53,50,3,1,7,101,110,118,50,56,53, -51,66,108,97,109,98,100,97,61,101,79,109,111,100,117,108,101,45,105,100,101, -110,116,105,102,105,101,114,61,63,64,116,97,105,108,68,116,114,121,45,110,101, -120,116,63,97,114,103,61,120,61,108,3,1,7,101,110,118,50,56,55,56,68, -112,97,116,116,101,114,110,115,67,102,101,110,100,101,114,115,67,97,110,115,119, -101,114,115,3,1,7,101,110,118,50,56,56,50,64,114,115,108,116,3,1,7, -101,110,118,50,56,56,54,73,112,97,116,116,101,114,110,45,118,97,114,115,115, -63,108,101,116,72,113,117,111,116,101,45,115,121,110,116,97,120,3,1,7,101, -110,118,50,56,56,57,67,112,97,116,116,101,114,110,3,1,7,101,110,118,50, -56,57,49,76,116,97,105,108,45,112,97,116,116,101,114,110,45,118,97,114,69, -116,101,109,112,45,118,97,114,115,72,112,97,116,116,101,114,110,45,118,97,114, -115,3,1,7,101,110,118,50,56,57,57,71,100,111,45,116,114,121,45,110,101, -120,116,64,109,116,99,104,70,99,97,110,116,45,102,97,105,108,63,3,1,7, -101,110,118,50,57,48,52,62,105,102,71,112,97,116,116,101,114,110,45,118,97, -114,68,116,101,109,112,45,118,97,114,3,1,7,101,110,118,50,57,48,53,3, -1,7,101,110,118,50,57,48,56,68,104,101,114,101,45,115,116,120,3,1,7, -101,110,118,50,57,49,52,3,1,7,101,110,118,50,57,50,54,3,1,7,101, -110,118,50,57,51,53,71,112,97,114,101,110,45,115,104,97,112,101,68,35,37, -107,101,114,110,101,108,32,67,89,162,8,64,36,44,2,10,222,28,248,22,63, -194,9,28,250,22,122,195,248,22,153,3,248,22,58,198,11,27,248,22,86,195, -28,248,22,63,193,9,28,250,22,122,196,248,22,153,3,248,22,58,197,11,249, -2,67,195,248,22,86,195,249,22,57,248,22,58,195,249,2,67,197,248,22,86, -197,249,22,57,248,22,58,196,27,248,22,86,197,28,248,22,63,193,9,28,250, -22,122,198,248,22,153,3,248,22,58,197,11,249,2,67,197,248,22,86,195,249, -22,57,248,22,58,195,249,2,67,199,248,22,86,197,32,68,89,162,8,64,36, -44,2,10,222,28,248,22,63,194,9,28,250,22,122,195,248,22,153,3,248,22, -58,198,11,27,248,22,86,195,28,248,22,63,193,9,28,250,22,122,196,248,22, -153,3,248,22,58,197,11,249,2,68,195,248,22,86,195,249,22,57,248,22,84, -195,249,2,68,197,248,22,86,197,249,22,57,248,22,84,196,27,248,22,86,197, -28,248,22,63,193,9,28,250,22,122,198,248,22,153,3,248,22,58,197,11,249, -2,68,197,248,22,86,195,249,22,57,248,22,84,195,249,2,68,199,248,22,86, -197,30,2,21,67,115,116,120,45,99,97,114,5,30,2,21,67,115,116,120,45, -99,100,114,6,30,2,21,69,115,116,120,45,62,108,105,115,116,4,30,2,21, -71,105,100,101,110,116,105,102,105,101,114,63,2,30,2,21,69,115,116,120,45, -112,97,105,114,63,11,95,8,193,11,16,0,97,10,35,11,95,159,2,24,9, -11,159,2,23,9,11,159,2,21,9,11,16,0,97,10,34,11,95,159,2,4, -9,11,159,2,23,9,11,159,2,21,9,11,16,14,2,2,2,1,2,6,2, -1,2,7,2,1,2,5,2,1,2,8,2,1,2,9,2,1,2,3,2,1, -18,100,2,22,8,76,8,75,8,74,16,4,11,11,63,115,116,120,3,1,7, -101,110,118,50,56,53,49,16,6,11,11,63,112,97,116,64,115,117,98,115,2, -25,2,25,16,6,11,11,69,104,116,45,99,111,109,109,111,110,66,104,116,45, -109,97,112,2,26,2,26,16,4,11,11,71,110,101,119,45,112,97,116,116,101, -114,110,3,1,7,101,110,118,50,56,54,49,32,78,89,162,8,100,35,40,2, -10,222,28,248,22,149,3,193,192,27,248,22,58,194,28,248,22,149,3,193,192, -27,248,22,58,194,28,248,22,149,3,193,192,27,248,22,58,194,28,248,22,149, -3,193,192,248,2,78,248,22,58,194,32,79,89,162,8,100,36,45,2,10,222, -28,248,22,149,3,193,193,27,248,22,58,194,27,248,22,177,2,196,28,248,22, -149,3,194,192,27,248,22,58,195,27,248,22,177,2,195,28,248,22,149,3,194, -192,27,248,22,58,195,27,248,22,177,2,195,28,248,22,149,3,194,192,249,2, -79,248,22,58,196,248,22,177,2,195,16,8,11,11,2,36,2,37,2,38,2, -39,2,39,2,39,16,14,11,11,63,119,104,111,71,97,114,103,45,105,115,45, -115,116,120,63,64,101,120,112,114,63,107,119,115,68,108,105,116,45,99,111,109, -112,67,99,108,97,117,115,101,115,2,35,2,35,2,35,2,35,2,35,2,35, -16,4,11,11,2,34,3,1,7,101,110,118,50,56,55,55,16,4,11,11,2, -34,3,1,7,101,110,118,50,56,55,53,16,4,11,11,2,33,3,1,7,101, -110,118,50,56,55,51,18,101,2,32,8,76,8,75,8,74,8,84,8,83,8, -82,8,81,8,80,18,102,2,40,8,76,8,75,8,74,8,84,8,83,8,82, -8,81,8,80,16,4,11,11,2,32,2,41,18,102,2,29,8,76,8,75,8, -74,8,84,8,83,8,82,8,81,8,80,16,8,11,11,2,32,2,40,2,42, -2,41,2,41,2,41,16,10,11,11,2,32,2,40,2,42,76,108,105,116,45, -99,111,109,112,45,105,115,45,109,111,100,63,2,41,2,41,2,41,2,41,101, -8,76,8,75,8,74,8,84,8,83,8,82,8,81,8,80,8,88,18,158,2, -22,8,89,18,158,2,43,8,89,18,158,1,20,100,97,116,117,109,45,62,115, -121,110,116,97,120,45,111,98,106,101,99,116,8,89,18,158,2,44,8,89,16, -10,11,11,2,36,2,37,1,20,117,110,102,108,97,116,45,112,97,116,116,101, -114,110,45,118,97,114,115,115,2,38,2,45,2,45,2,45,2,45,16,4,11, -11,2,10,3,1,7,101,110,118,50,56,56,56,18,104,78,114,97,105,115,101, -45,115,121,110,116,97,120,45,101,114,114,111,114,8,76,8,75,8,74,8,84, -8,83,8,82,8,81,8,80,8,88,8,95,8,94,16,8,11,11,2,48,2, -49,2,50,3,1,7,101,110,118,50,56,57,55,3,1,7,101,110,118,50,56, -57,53,3,1,7,101,110,118,50,56,57,51,16,10,11,11,2,46,66,102,101, -110,100,101,114,79,117,110,102,108,97,116,45,112,97,116,116,101,114,110,45,118, -97,114,115,66,97,110,115,119,101,114,2,47,2,47,2,47,2,47,16,4,11, -11,64,114,101,115,116,3,1,7,101,110,118,50,56,57,48,18,108,2,31,8, -76,8,75,8,74,8,84,8,83,8,82,8,81,8,80,8,88,8,95,8,94, -8,99,8,98,8,97,16,8,11,11,2,48,2,49,2,50,2,51,2,51,2, -51,16,8,11,11,2,52,2,53,2,54,2,55,2,55,2,55,16,8,11,11, -2,48,2,49,2,50,2,51,2,51,2,51,108,8,76,8,75,8,74,8,84, -8,83,8,82,8,81,8,80,8,88,8,95,8,94,8,99,8,98,8,97,8, -102,8,101,18,158,2,43,8,103,18,158,2,22,8,103,18,158,2,56,8,103, -18,158,2,43,8,103,16,4,11,11,63,112,111,115,3,1,7,101,110,118,50, -57,48,54,16,6,11,11,2,57,2,58,2,59,2,59,110,8,76,8,75,8, -74,8,84,8,83,8,82,8,81,8,80,8,88,8,95,8,94,8,99,8,98, -8,97,8,102,8,101,8,109,8,108,18,158,2,15,8,110,18,158,2,16,8, -110,18,158,2,17,8,110,18,158,2,18,8,110,18,158,2,11,8,110,18,158, -2,12,8,110,18,158,2,13,8,110,18,158,2,14,8,110,111,8,76,8,75, -8,74,8,84,8,83,8,82,8,81,8,80,8,88,8,95,8,94,8,99,8, -98,8,97,8,102,8,101,8,109,8,108,16,4,11,11,68,97,99,99,101,115, -115,111,114,3,1,7,101,110,118,50,57,48,55,18,158,2,20,8,119,18,158, -2,19,8,119,18,158,1,22,108,101,116,114,101,99,45,115,121,110,116,97,120, -101,115,43,118,97,108,117,101,115,8,103,109,8,76,8,75,8,74,8,84,8, -83,8,82,8,81,8,80,8,88,8,95,8,94,8,99,8,98,8,97,8,102, -8,101,16,8,11,11,2,57,78,117,110,102,108,97,116,45,112,97,116,116,101, -114,110,45,118,97,114,2,58,2,60,2,60,2,60,18,158,79,109,97,107,101, -45,115,121,110,116,97,120,45,109,97,112,112,105,110,103,8,123,18,158,2,44, -8,123,18,158,2,56,8,103,108,8,76,8,75,8,74,8,84,8,83,8,82, -8,81,8,80,8,88,8,95,8,94,8,99,8,98,8,97,16,8,11,11,2, -48,2,49,2,50,2,51,2,51,2,51,16,10,11,11,2,52,2,53,2,54, -61,109,2,55,2,55,2,55,2,55,18,158,2,43,8,127,18,158,2,27,8, -127,32,130,2,89,162,8,64,36,45,2,10,222,28,248,22,129,3,194,192,27, -248,22,65,194,27,248,22,178,2,196,28,248,22,129,3,193,193,27,248,22,65, +1,78,1,83,1,93,1,107,1,111,1,124,1,132,1,142,1,159,1,169,1, +182,1,192,1,204,1,209,1,220,1,230,1,233,1,245,1,254,1,8,2,18, +2,27,2,37,2,47,2,57,2,69,2,78,2,212,2,90,3,102,3,114,3, +128,3,144,3,158,3,164,3,186,3,236,3,76,4,137,4,221,4,0,5,58, +5,74,5,90,5,106,5,126,5,154,5,190,5,225,5,244,5,250,5,0,6, +26,6,32,6,68,6,84,6,127,6,167,6,215,6,234,6,26,7,42,7,58, +7,91,7,97,7,103,7,109,7,115,7,133,7,145,7,182,7,188,7,194,7, +200,7,206,7,212,7,218,7,224,7,230,7,34,8,40,8,46,8,74,8,140, +8,164,8,170,8,176,8,241,8,247,8,253,8,81,9,186,9,202,9,247,9, +18,10,44,10,60,10,68,10,93,10,196,10,202,10,213,10,66,11,0,0,126, +25,0,0,29,11,11,1,26,100,97,116,117,109,45,62,115,121,110,116,97,120, +45,111,98,106,101,99,116,47,115,104,97,112,101,1,20,99,97,116,99,104,45, +101,108,108,105,112,115,105,115,45,101,114,114,111,114,68,35,37,112,97,114,97, +109,122,75,115,117,98,115,116,105,116,117,116,101,45,115,116,111,112,1,24,97, +112,112,108,121,45,112,97,116,116,101,114,110,45,115,117,98,115,116,105,116,117, +116,101,66,115,121,110,116,97,120,73,115,121,110,116,97,120,45,99,97,115,101, +42,42,78,112,97,116,116,101,114,110,45,115,117,98,115,116,105,116,117,116,101, +64,108,111,111,112,63,99,97,114,64,99,97,100,114,65,99,97,100,100,114,66, +99,97,100,100,100,114,63,99,100,114,64,99,100,100,114,65,99,100,100,100,114, +66,99,100,100,100,100,114,68,108,105,115,116,45,114,101,102,69,108,105,115,116, +45,116,97,105,108,65,35,37,115,116,120,64,104,101,114,101,74,35,37,115,109, +97,108,108,45,115,99,104,101,109,101,64,35,37,115,99,3,1,7,101,110,118, +50,56,53,50,3,1,7,101,110,118,50,56,53,51,66,108,97,109,98,100,97, +61,101,79,109,111,100,117,108,101,45,105,100,101,110,116,105,102,105,101,114,61, +63,64,116,97,105,108,68,116,114,121,45,110,101,120,116,63,97,114,103,61,120, +61,108,3,1,7,101,110,118,50,56,55,56,3,1,7,101,110,118,50,56,56, +50,64,114,115,108,116,3,1,7,101,110,118,50,56,56,54,73,112,97,116,116, +101,114,110,45,118,97,114,115,115,63,108,101,116,72,113,117,111,116,101,45,115, +121,110,116,97,120,67,112,97,116,116,101,114,110,3,1,7,101,110,118,50,56, +57,49,76,116,97,105,108,45,112,97,116,116,101,114,110,45,118,97,114,69,116, +101,109,112,45,118,97,114,115,72,112,97,116,116,101,114,110,45,118,97,114,115, +3,1,7,101,110,118,50,56,57,57,71,100,111,45,116,114,121,45,110,101,120, +116,64,109,116,99,104,70,99,97,110,116,45,102,97,105,108,63,3,1,7,101, +110,118,50,57,48,52,62,105,102,71,112,97,116,116,101,114,110,45,118,97,114, +68,116,101,109,112,45,118,97,114,3,1,7,101,110,118,50,57,48,53,3,1, +7,101,110,118,50,57,48,56,68,104,101,114,101,45,115,116,120,3,1,7,101, +110,118,50,57,49,52,3,1,7,101,110,118,50,57,50,54,3,1,7,101,110, +118,50,57,51,53,71,112,97,114,101,110,45,115,104,97,112,101,68,35,37,107, +101,114,110,101,108,32,63,89,162,8,64,36,49,2,10,222,28,248,22,63,194, +9,28,250,22,122,195,248,22,153,3,248,22,58,198,11,27,248,22,86,195,28, +248,22,63,193,9,28,250,22,122,196,248,22,153,3,248,22,58,197,11,249,2, +63,195,248,22,86,195,249,22,57,248,22,58,195,249,2,63,197,248,22,86,197, +249,22,57,248,22,58,196,27,248,22,86,197,28,248,22,63,193,9,28,250,22, +122,198,248,22,153,3,248,22,58,197,11,249,2,63,197,248,22,86,195,249,22, +57,248,22,58,195,249,2,63,199,248,22,86,197,32,64,89,162,8,64,36,49, +2,10,222,28,248,22,63,194,9,28,250,22,122,195,248,22,153,3,248,22,58, +198,11,27,248,22,86,195,28,248,22,63,193,9,28,250,22,122,196,248,22,153, +3,248,22,58,197,11,249,2,64,195,248,22,86,195,249,22,57,248,22,84,195, +249,2,64,197,248,22,86,197,249,22,57,248,22,84,196,27,248,22,86,197,28, +248,22,63,193,9,28,250,22,122,198,248,22,153,3,248,22,58,197,11,249,2, +64,197,248,22,86,195,249,22,57,248,22,84,195,249,2,64,199,248,22,86,197, +30,2,21,67,115,116,120,45,99,97,114,5,30,2,21,67,115,116,120,45,99, +100,114,6,30,2,21,69,115,116,120,45,62,108,105,115,116,4,30,2,21,71, +105,100,101,110,116,105,102,105,101,114,63,2,30,2,21,69,115,116,120,45,112, +97,105,114,63,11,95,8,193,11,16,0,97,10,35,11,95,159,2,24,9,11, +159,2,23,9,11,159,2,21,9,11,16,0,97,10,34,11,95,159,2,4,9, +11,159,2,23,9,11,159,2,21,9,11,16,14,2,7,2,1,2,6,2,1, +2,8,2,1,2,3,2,1,2,9,2,1,2,2,2,1,2,5,2,1,18, +100,2,22,8,72,8,71,8,70,16,4,11,11,63,115,116,120,3,1,7,101, +110,118,50,56,53,49,16,6,11,11,63,112,97,116,64,115,117,98,115,2,25, +2,25,16,6,11,11,69,104,116,45,99,111,109,109,111,110,66,104,116,45,109, +97,112,2,26,2,26,16,4,11,11,71,110,101,119,45,112,97,116,116,101,114, +110,3,1,7,101,110,118,50,56,54,49,32,74,89,162,8,100,35,45,2,10, +222,28,248,22,149,3,193,192,27,248,22,58,194,28,248,22,149,3,193,192,27, +248,22,58,194,28,248,22,149,3,193,192,27,248,22,58,194,28,248,22,149,3, +193,192,248,2,74,248,22,58,194,32,75,89,162,8,100,36,50,2,10,222,28, +248,22,149,3,193,193,27,248,22,58,194,27,248,22,177,2,196,28,248,22,149, +3,194,192,27,248,22,58,195,27,248,22,177,2,195,28,248,22,149,3,194,192, +27,248,22,58,195,27,248,22,177,2,195,28,248,22,149,3,194,192,249,2,75, +248,22,58,196,248,22,177,2,195,16,8,11,11,68,112,97,116,116,101,114,110, +115,67,102,101,110,100,101,114,115,67,97,110,115,119,101,114,115,2,36,2,36, +2,36,16,14,11,11,63,119,104,111,71,97,114,103,45,105,115,45,115,116,120, +63,64,101,120,112,114,63,107,119,115,68,108,105,116,45,99,111,109,112,67,99, +108,97,117,115,101,115,2,35,2,35,2,35,2,35,2,35,2,35,16,4,11, +11,2,34,3,1,7,101,110,118,50,56,55,55,16,4,11,11,2,34,3,1, +7,101,110,118,50,56,55,53,16,4,11,11,2,33,3,1,7,101,110,118,50, +56,55,51,18,101,2,32,8,72,8,71,8,70,8,80,8,79,8,78,8,77, +8,76,18,102,2,37,8,72,8,71,8,70,8,80,8,79,8,78,8,77,8, +76,16,4,11,11,2,32,2,38,18,102,2,29,8,72,8,71,8,70,8,80, +8,79,8,78,8,77,8,76,16,8,11,11,2,32,2,37,2,39,2,38,2, +38,2,38,16,10,11,11,2,32,2,37,2,39,76,108,105,116,45,99,111,109, +112,45,105,115,45,109,111,100,63,2,38,2,38,2,38,2,38,101,8,72,8, +71,8,70,8,80,8,79,8,78,8,77,8,76,8,84,18,158,2,22,8,85, +18,158,2,40,8,85,18,158,1,20,100,97,116,117,109,45,62,115,121,110,116, +97,120,45,111,98,106,101,99,116,8,85,18,158,2,41,8,85,16,4,11,11, +1,20,117,110,102,108,97,116,45,112,97,116,116,101,114,110,45,118,97,114,115, +115,3,1,7,101,110,118,50,56,56,57,16,4,11,11,2,10,3,1,7,101, +110,118,50,56,56,56,18,104,78,114,97,105,115,101,45,115,121,110,116,97,120, +45,101,114,114,111,114,8,72,8,71,8,70,8,80,8,79,8,78,8,77,8, +76,8,84,8,91,8,90,16,8,11,11,2,44,2,45,2,46,3,1,7,101, +110,118,50,56,57,55,3,1,7,101,110,118,50,56,57,53,3,1,7,101,110, +118,50,56,57,51,16,10,11,11,2,42,66,102,101,110,100,101,114,79,117,110, +102,108,97,116,45,112,97,116,116,101,114,110,45,118,97,114,115,66,97,110,115, +119,101,114,2,43,2,43,2,43,2,43,16,4,11,11,64,114,101,115,116,3, +1,7,101,110,118,50,56,57,48,18,108,2,31,8,72,8,71,8,70,8,80, +8,79,8,78,8,77,8,76,8,84,8,91,8,90,8,95,8,94,8,93,16, +8,11,11,2,44,2,45,2,46,2,47,2,47,2,47,16,8,11,11,2,48, +2,49,2,50,2,51,2,51,2,51,16,8,11,11,2,44,2,45,2,46,2, +47,2,47,2,47,108,8,72,8,71,8,70,8,80,8,79,8,78,8,77,8, +76,8,84,8,91,8,90,8,95,8,94,8,93,8,98,8,97,18,158,2,40, +8,99,18,158,2,22,8,99,18,158,2,52,8,99,18,158,2,40,8,99,16, +4,11,11,63,112,111,115,3,1,7,101,110,118,50,57,48,54,16,6,11,11, +2,53,2,54,2,55,2,55,110,8,72,8,71,8,70,8,80,8,79,8,78, +8,77,8,76,8,84,8,91,8,90,8,95,8,94,8,93,8,98,8,97,8, +105,8,104,18,158,2,15,8,106,18,158,2,16,8,106,18,158,2,17,8,106, +18,158,2,18,8,106,18,158,2,11,8,106,18,158,2,12,8,106,18,158,2, +13,8,106,18,158,2,14,8,106,111,8,72,8,71,8,70,8,80,8,79,8, +78,8,77,8,76,8,84,8,91,8,90,8,95,8,94,8,93,8,98,8,97, +8,105,8,104,16,4,11,11,68,97,99,99,101,115,115,111,114,3,1,7,101, +110,118,50,57,48,55,18,158,2,20,8,115,18,158,2,19,8,115,18,158,1, +22,108,101,116,114,101,99,45,115,121,110,116,97,120,101,115,43,118,97,108,117, +101,115,8,99,109,8,72,8,71,8,70,8,80,8,79,8,78,8,77,8,76, +8,84,8,91,8,90,8,95,8,94,8,93,8,98,8,97,16,8,11,11,2, +53,78,117,110,102,108,97,116,45,112,97,116,116,101,114,110,45,118,97,114,2, +54,2,56,2,56,2,56,18,158,79,109,97,107,101,45,115,121,110,116,97,120, +45,109,97,112,112,105,110,103,8,119,18,158,2,41,8,119,18,158,2,52,8, +99,108,8,72,8,71,8,70,8,80,8,79,8,78,8,77,8,76,8,84,8, +91,8,90,8,95,8,94,8,93,16,8,11,11,2,44,2,45,2,46,2,47, +2,47,2,47,16,10,11,11,2,48,2,49,2,50,61,109,2,51,2,51,2, +51,2,51,18,158,2,40,8,123,18,158,2,27,8,123,32,126,89,162,8,64, +36,50,2,10,222,28,248,22,129,3,194,192,27,248,22,65,194,27,248,22,178, +2,196,28,248,22,129,3,193,193,27,248,22,65,195,27,248,22,178,2,195,28, +248,22,129,3,193,193,27,248,22,65,195,27,248,22,178,2,195,28,248,22,129, +3,193,193,249,2,126,248,22,65,196,248,22,178,2,195,32,127,89,162,8,64, +36,51,2,10,222,28,248,22,63,194,9,27,27,248,22,59,195,27,248,22,59, +197,28,248,22,63,193,9,27,27,248,22,59,196,27,248,22,59,196,28,248,22, +63,193,9,27,249,2,127,248,22,59,197,248,22,59,196,28,248,22,58,194,192, +249,22,57,248,22,58,197,194,28,248,22,58,194,192,249,22,57,248,22,58,197, +194,28,248,22,58,195,192,249,22,57,248,22,58,196,194,16,4,11,11,2,33, +3,1,7,101,110,118,50,57,49,50,18,100,2,22,8,72,8,71,8,70,8, +128,2,16,4,11,11,2,57,2,58,16,4,11,11,2,57,2,58,16,4,11, +11,2,57,3,1,7,101,110,118,50,57,49,54,16,4,11,11,72,118,97,114, +45,98,105,110,100,105,110,103,115,3,1,7,101,110,118,50,57,50,48,16,4, +11,11,71,117,110,105,113,117,101,45,118,97,114,115,3,1,7,101,110,118,50, +57,49,57,16,4,11,11,2,42,3,1,7,101,110,118,50,57,49,56,16,4, +11,11,2,57,2,58,18,101,2,41,8,72,8,71,8,70,8,128,2,8,133, +2,8,132,2,8,131,2,8,130,2,103,8,72,8,71,8,70,8,128,2,8, +133,2,8,132,2,8,131,2,8,130,2,16,6,11,11,67,112,114,111,116,111, +45,114,76,110,111,110,45,112,97,116,116,101,114,110,45,118,97,114,115,2,59, +2,59,16,6,11,11,79,98,117,105,108,100,45,102,114,111,109,45,116,101,109, +112,108,97,116,101,61,114,2,60,2,60,16,4,11,11,63,108,101,110,3,1, +7,101,110,118,50,57,51,56,18,158,9,8,135,2,18,158,65,108,105,115,116, +42,8,135,2,32,138,2,89,162,8,64,37,50,65,115,108,111,111,112,222,28, +248,22,63,194,192,28,249,22,148,8,194,248,22,58,196,248,22,58,195,27,248, +22,59,195,27,248,22,59,197,28,248,22,63,194,194,28,249,22,148,8,196,248, +22,58,196,248,22,58,193,27,248,22,59,195,27,248,22,59,195,28,248,22,63, +194,196,28,249,22,148,8,198,248,22,58,196,248,22,58,193,250,2,138,2,199, +248,22,59,197,248,22,59,196,159,34,20,100,159,34,16,1,20,24,65,98,101, +103,105,110,16,0,83,158,40,20,97,114,69,35,37,115,116,120,99,97,115,101, +2,1,10,10,10,34,80,158,34,34,20,100,159,34,16,5,30,2,1,2,2, +193,30,2,1,2,3,193,30,2,4,1,21,101,120,99,101,112,116,105,111,110, +45,104,97,110,100,108,101,114,45,107,101,121,2,30,2,1,2,5,193,30,2, +1,2,6,193,16,0,11,11,16,4,2,6,2,3,2,2,2,5,38,11,16, +2,2,7,2,8,16,2,11,11,16,2,2,7,2,8,34,36,95,16,5,93, +2,9,87,94,83,158,34,16,2,89,162,8,100,37,50,2,10,223,0,28,248, +22,63,196,12,87,94,27,248,22,153,3,248,22,58,198,27,248,22,84,198,28, +28,248,80,158,37,37,193,10,28,248,80,158,37,38,193,28,249,22,77,248,22, +153,3,248,80,158,40,34,196,21,102,2,11,2,12,2,13,2,14,2,15,2, +16,2,17,2,18,2,19,2,20,28,248,80,158,37,38,248,80,158,38,35,194, +248,80,158,37,37,248,80,158,38,34,248,80,158,39,35,195,11,11,11,27,248, +22,151,3,194,27,250,22,122,200,196,11,28,192,250,22,121,201,198,195,250,22, +121,200,196,198,12,250,80,159,37,41,35,196,197,248,22,86,199,80,159,34,41, +35,89,162,8,36,35,8,27,9,223,0,27,248,80,158,36,34,248,80,158,37, +35,196,27,248,80,158,37,36,248,80,158,38,35,248,80,158,39,35,198,27,248, +22,116,65,101,113,117,97,108,27,247,22,116,87,94,250,80,159,41,41,35,196, +195,197,27,28,248,22,129,3,248,22,119,195,196,91,159,35,11,20,12,95,35, +248,193,198,89,162,8,64,35,47,2,10,224,2,0,28,248,22,56,195,27,248, +194,248,22,58,197,27,248,195,248,22,59,198,28,28,249,22,148,8,195,248,22, +58,199,249,22,148,8,194,248,22,59,199,11,196,249,22,57,195,194,28,248,22, +47,195,27,250,22,122,197,198,11,28,192,192,195,28,248,22,149,3,195,27,248, +194,248,22,153,3,197,28,249,22,148,8,248,22,153,3,198,194,195,251,22,152, +3,199,196,199,199,28,248,22,166,7,195,248,22,174,7,249,22,2,195,248,22, +173,7,198,28,248,22,113,195,248,22,111,248,194,248,22,114,197,194,250,22,152, +3,20,15,159,42,34,39,251,22,67,2,6,199,249,22,65,65,113,117,111,116, +101,28,248,22,63,205,9,28,250,22,122,205,248,22,153,3,248,22,58,23,17, +11,249,2,63,204,248,22,86,23,15,249,22,57,248,22,58,23,15,249,2,63, +206,248,22,86,23,17,28,248,22,63,203,9,28,250,22,122,203,248,22,153,3, +248,22,58,23,15,11,249,2,64,202,248,22,86,205,249,22,57,248,22,84,205, +249,2,64,204,248,22,86,23,15,201,34,20,100,159,35,16,5,2,65,2,66, +2,67,2,68,2,69,16,1,33,73,11,16,5,93,2,8,87,97,83,158,34, +16,2,89,162,8,36,44,8,46,2,10,223,0,28,248,22,63,200,251,22,65, +20,15,159,38,41,43,11,6,10,10,98,97,100,32,115,121,110,116,97,120,197, +27,26,10,80,159,45,8,41,35,204,205,206,23,15,23,16,23,17,248,22,59, +23,19,248,22,59,23,20,248,22,59,23,21,248,22,59,23,22,27,248,22,58, +202,27,248,22,58,204,27,248,22,58,206,27,248,22,58,23,16,91,159,37,10, +90,161,35,34,10,249,22,2,32,0,89,162,8,36,35,45,9,222,28,248,22, +149,3,193,192,27,248,22,58,194,28,248,22,149,3,193,192,27,248,22,58,194, +28,248,22,149,3,193,192,248,2,74,248,22,58,194,198,90,161,35,35,10,249, +22,2,32,0,89,162,8,36,35,43,9,222,250,22,152,3,195,247,22,54,11, +209,90,161,35,36,10,248,22,178,2,248,22,70,209,27,28,248,22,58,23,18, +248,22,65,20,15,159,44,42,43,200,27,252,80,158,49,41,23,19,205,205,248, +80,158,50,35,23,21,248,22,146,8,23,19,27,28,206,249,22,150,8,195,21, +95,2,27,93,2,28,2,28,249,22,150,8,195,21,95,2,27,94,2,28,2, +29,2,28,27,250,22,65,20,15,159,49,43,43,248,22,65,249,22,65,23,20, +28,199,23,19,250,22,67,250,22,152,3,20,15,159,58,44,43,206,23,22,23, +22,28,23,24,9,248,22,65,23,28,251,22,65,20,15,159,53,45,43,28,200, +10,23,21,250,22,65,20,15,159,56,46,43,250,22,2,89,162,8,36,36,52, +9,226,25,27,19,17,249,22,65,199,27,249,80,158,42,42,201,212,27,28,249, +22,188,2,214,195,28,249,22,148,8,195,34,2,30,28,249,22,148,8,195,35, +20,15,159,41,47,43,28,249,22,148,8,195,36,20,15,159,41,48,43,28,249, +22,148,8,195,37,20,15,159,41,49,43,28,249,22,148,8,195,38,20,15,159, +41,50,43,2,30,28,249,22,148,8,195,34,20,15,159,41,51,43,28,249,22, +148,8,195,35,20,15,159,41,52,43,28,249,22,148,8,195,36,20,15,159,41, +53,43,28,249,22,148,8,195,37,20,15,159,41,54,43,11,28,249,22,148,8, +194,2,30,28,248,22,129,3,194,198,250,22,65,20,15,159,44,55,43,201,196, +28,192,249,22,65,194,200,250,22,65,20,15,159,44,56,43,201,196,24,17,24, +18,251,22,65,20,15,159,8,26,57,43,251,22,2,80,159,8,30,8,42,35, +24,22,23,26,24,23,9,28,23,23,251,22,65,20,15,159,8,30,8,26,43, +23,27,23,25,23,21,23,21,202,28,201,250,22,65,20,15,159,49,8,27,43, +248,22,65,249,22,65,2,31,250,22,65,20,15,159,55,8,28,43,247,22,65, +23,20,195,192,80,159,34,8,41,35,83,158,34,16,2,89,162,8,36,37,54, +9,223,0,249,22,65,248,22,65,196,250,22,65,20,15,159,39,58,43,28,248, +22,149,3,200,34,27,248,22,58,201,28,248,22,149,3,193,35,27,248,22,58, +194,28,248,22,149,3,193,36,249,2,75,248,22,58,195,37,249,22,65,20,15, +159,41,59,43,202,80,159,34,8,42,35,83,158,34,16,2,89,162,34,35,44, +9,223,0,27,248,80,158,36,39,248,80,158,37,39,196,28,248,80,158,36,38, +193,248,80,158,36,37,193,248,80,158,36,37,248,80,158,37,39,196,80,159,34, +8,40,35,83,158,34,16,2,89,162,34,35,44,9,223,0,28,248,80,158,35, +38,248,80,158,36,39,248,80,158,37,39,196,248,80,158,35,37,248,80,158,36, +39,195,11,80,159,34,8,39,35,89,162,8,36,35,8,38,9,223,0,91,159, +35,10,90,161,35,34,10,28,248,80,158,36,34,195,248,22,59,248,80,158,37, +35,196,11,87,94,28,28,248,80,158,36,34,195,249,22,190,2,248,22,70,210, +37,11,12,250,22,177,8,11,6,8,8,98,97,100,32,102,111,114,109,197,27, +248,22,58,209,27,248,22,84,210,27,248,22,93,211,27,248,22,96,212,27,248, +22,96,248,22,59,214,27,248,22,95,248,22,59,215,87,96,28,248,80,158,42, +34,195,12,250,22,177,8,248,22,153,3,201,6,56,56,101,120,112,101,99,116, +101,100,32,97,32,112,97,114,101,110,116,104,101,115,105,122,101,100,32,115,101, +113,117,101,110,99,101,32,111,102,32,108,105,116,101,114,97,108,32,105,100,101, +110,116,105,102,105,101,114,115,197,249,22,3,89,162,34,35,46,9,224,9,7, +28,248,80,158,36,36,195,12,250,22,177,8,248,22,153,3,196,6,28,28,108, +105,116,101,114,97,108,32,105,115,32,110,111,116,32,97,110,32,105,100,101,110, +116,105,102,105,101,114,197,248,80,158,44,35,197,249,22,3,89,162,34,35,47, +9,224,9,7,28,28,248,80,158,36,34,195,250,22,191,2,36,248,22,70,248, +80,158,40,35,199,37,11,12,250,22,177,8,248,22,153,3,196,6,10,10,98, +97,100,32,99,108,97,117,115,101,197,194,27,249,22,2,80,158,44,37,195,27, +249,22,2,80,159,45,8,39,35,196,27,249,22,2,80,159,46,8,40,35,197, +27,20,15,159,45,34,43,27,20,15,159,46,35,43,27,249,22,2,89,162,34, +35,48,9,225,15,10,13,251,80,158,40,40,196,199,199,248,80,158,41,35,198, +248,80,158,50,35,200,27,28,248,80,158,49,36,201,249,22,166,3,202,20,15, +159,50,36,43,11,250,22,152,3,20,15,159,51,37,43,250,22,65,20,15,159, +54,38,43,248,22,65,249,22,65,204,28,248,22,153,3,23,21,23,19,250,22, +65,20,15,159,8,26,39,43,249,22,65,20,15,159,8,28,40,43,249,22,152, +3,23,26,2,22,23,22,26,10,80,159,8,30,8,41,35,23,19,23,18,23, +16,23,28,23,25,23,24,23,22,23,21,23,17,23,20,23,18,34,20,100,159, +38,16,9,30,2,21,69,115,116,120,45,108,105,115,116,63,8,2,67,2,68, +2,65,2,69,2,66,30,2,24,74,103,101,116,45,109,97,116,99,104,45,118, +97,114,115,0,30,2,24,74,109,97,107,101,45,109,97,116,99,104,38,101,110, +118,1,30,2,24,72,115,116,120,45,109,101,109,113,45,112,111,115,5,16,29, +33,81,33,82,33,83,33,86,33,87,33,88,33,89,33,92,33,96,33,100,33, +101,33,102,33,103,33,107,33,108,33,109,33,110,33,111,33,112,33,113,33,114, +33,116,33,117,33,118,33,120,33,121,33,122,33,124,33,125,11,16,5,93,2, +7,87,96,83,158,34,16,2,89,162,8,64,37,55,2,10,223,0,28,248,22, +63,196,9,28,248,22,58,196,249,22,57,250,22,152,3,248,22,58,200,248,22, +153,3,248,80,158,41,42,248,22,58,203,198,27,248,22,59,198,27,248,22,59, +200,28,248,22,63,193,9,28,248,22,58,193,249,22,57,250,22,152,3,248,22, +58,199,248,22,153,3,248,80,158,45,42,248,22,58,200,202,250,80,159,43,51, +35,202,248,22,59,199,248,22,59,198,250,80,159,41,51,35,200,248,22,59,197, +248,22,59,196,27,248,22,59,196,27,248,22,59,198,28,248,22,63,193,9,28, +248,22,58,193,249,22,57,250,22,152,3,248,22,58,199,248,22,153,3,248,80, +158,43,42,248,22,58,200,200,250,80,159,41,51,35,200,248,22,59,199,248,22, +59,198,250,80,159,39,51,35,198,248,22,59,197,248,22,59,196,80,159,34,51, +35,83,158,34,16,2,89,162,8,64,36,8,29,2,10,223,0,28,248,22,63, +195,9,27,249,80,159,37,50,35,248,22,59,197,248,22,59,198,28,248,22,58, +196,249,22,57,27,248,22,58,198,27,248,80,158,40,41,248,22,58,201,28,248, +22,129,3,193,193,27,248,22,65,195,27,248,22,178,2,195,28,248,22,129,3, +193,193,27,248,22,65,195,27,248,22,178,2,195,28,248,22,129,3,193,193,27, +248,22,65,195,27,248,22,178,2,195,28,248,22,129,3,193,193,27,248,22,65, 195,27,248,22,178,2,195,28,248,22,129,3,193,193,27,248,22,65,195,27,248, -22,178,2,195,28,248,22,129,3,193,193,249,2,130,2,248,22,65,196,248,22, -178,2,195,32,131,2,89,162,8,64,36,46,2,10,222,28,248,22,63,194,9, -27,27,248,22,59,195,27,248,22,59,197,28,248,22,63,193,9,27,27,248,22, -59,196,27,248,22,59,196,28,248,22,63,193,9,27,249,2,131,2,248,22,59, +22,178,2,195,28,248,22,129,3,193,193,27,248,22,65,195,27,248,22,178,2, +195,28,248,22,129,3,193,193,249,2,126,248,22,65,196,248,22,178,2,195,194, +192,80,159,34,50,35,83,158,34,16,2,89,162,8,36,35,44,9,223,0,27, +249,22,171,13,196,32,0,89,162,8,44,34,39,9,222,11,28,248,80,158,36, +39,193,192,11,80,159,34,49,35,89,162,8,36,35,8,27,9,223,0,91,159, +35,10,90,161,35,34,10,20,15,159,35,34,44,87,94,28,28,248,80,158,36, +34,195,27,248,80,158,37,35,196,28,248,80,158,37,34,193,248,80,158,37,36, +248,80,158,38,35,194,11,11,12,250,22,177,8,11,6,8,8,98,97,100,32, +102,111,114,109,197,250,22,152,3,210,27,248,80,158,40,37,248,80,158,41,35, +200,27,251,80,158,44,38,197,11,9,11,27,249,22,2,80,159,43,49,35,195, +28,28,28,248,22,63,193,10,248,22,146,8,249,22,5,32,0,89,162,8,36, +35,40,9,222,192,195,248,80,158,42,40,195,11,249,22,65,20,15,159,43,35, +44,196,27,249,80,159,44,50,35,196,195,27,28,248,22,63,195,9,27,27,248, +22,59,198,27,248,22,59,198,28,248,22,63,193,9,27,249,2,127,248,22,59, 197,248,22,59,196,28,248,22,58,194,192,249,22,57,248,22,58,197,194,28,248, -22,58,194,192,249,22,57,248,22,58,197,194,28,248,22,58,195,192,249,22,57, -248,22,58,196,194,16,4,11,11,2,33,3,1,7,101,110,118,50,57,49,50, -18,100,2,22,8,76,8,75,8,74,8,132,2,16,4,11,11,2,61,2,62, -16,4,11,11,2,61,2,62,16,4,11,11,2,61,3,1,7,101,110,118,50, -57,49,54,16,4,11,11,72,118,97,114,45,98,105,110,100,105,110,103,115,3, -1,7,101,110,118,50,57,50,48,16,4,11,11,71,117,110,105,113,117,101,45, -118,97,114,115,3,1,7,101,110,118,50,57,49,57,16,4,11,11,2,46,3, -1,7,101,110,118,50,57,49,56,16,4,11,11,2,61,2,62,18,101,2,44, -8,76,8,75,8,74,8,132,2,8,137,2,8,136,2,8,135,2,8,134,2, -103,8,76,8,75,8,74,8,132,2,8,137,2,8,136,2,8,135,2,8,134, -2,16,6,11,11,67,112,114,111,116,111,45,114,76,110,111,110,45,112,97,116, -116,101,114,110,45,118,97,114,115,2,63,2,63,16,6,11,11,79,98,117,105, -108,100,45,102,114,111,109,45,116,101,109,112,108,97,116,101,61,114,2,64,2, -64,16,4,11,11,63,108,101,110,3,1,7,101,110,118,50,57,51,56,18,158, -9,8,139,2,18,158,65,108,105,115,116,42,8,139,2,32,142,2,89,162,8, -64,37,45,65,115,108,111,111,112,222,28,248,22,63,194,192,28,249,22,148,8, -194,248,22,58,196,248,22,58,195,27,248,22,59,195,27,248,22,59,197,28,248, -22,63,194,194,28,249,22,148,8,196,248,22,58,196,248,22,58,193,27,248,22, -59,195,27,248,22,59,195,28,248,22,63,194,196,28,249,22,148,8,198,248,22, -58,196,248,22,58,193,250,2,142,2,199,248,22,59,197,248,22,59,196,159,34, -20,99,159,34,16,1,20,24,65,98,101,103,105,110,16,0,83,158,40,20,96, -114,69,35,37,115,116,120,99,97,115,101,2,1,10,10,10,34,80,158,34,34, -20,99,159,34,16,5,30,2,1,2,2,193,30,2,1,2,3,193,30,2,4, -1,21,101,120,99,101,112,116,105,111,110,45,104,97,110,100,108,101,114,45,107, -101,121,2,30,2,1,2,5,193,30,2,1,2,6,193,16,0,11,11,16,4, -2,6,2,3,2,2,2,5,38,11,16,2,2,7,2,8,16,2,11,11,16, -2,2,7,2,8,34,36,95,16,5,93,2,9,87,94,83,158,34,16,2,89, -162,8,100,37,45,2,10,223,0,28,248,22,63,196,12,87,94,27,248,22,153, -3,248,22,58,198,27,248,22,84,198,28,28,248,80,158,37,37,193,10,28,248, -80,158,37,38,193,28,249,22,77,248,22,153,3,248,80,158,40,34,196,21,102, -2,11,2,12,2,13,2,14,2,15,2,16,2,17,2,18,2,19,2,20,28, -248,80,158,37,38,248,80,158,38,35,194,248,80,158,37,37,248,80,158,38,34, -248,80,158,39,35,195,11,11,11,27,248,22,151,3,194,27,250,22,122,200,196, -11,28,192,250,22,121,201,198,195,250,22,121,200,196,198,12,250,80,159,37,41, -35,196,197,248,22,86,199,80,159,34,41,35,89,162,8,36,35,56,9,223,0, -27,248,80,158,36,34,248,80,158,37,35,196,27,248,80,158,37,36,248,80,158, -38,35,248,80,158,39,35,198,27,248,22,116,65,101,113,117,97,108,27,247,22, -116,87,94,250,80,159,41,41,35,196,195,197,27,28,248,22,129,3,248,22,119, -195,196,91,159,35,11,20,12,95,35,248,193,198,89,162,8,64,35,42,2,10, -224,2,0,28,248,22,56,195,27,248,194,248,22,58,197,27,248,195,248,22,59, -198,28,28,249,22,148,8,195,248,22,58,199,249,22,148,8,194,248,22,59,199, -11,196,249,22,57,195,194,28,248,22,47,195,27,250,22,122,197,198,11,28,192, -192,195,28,248,22,149,3,195,27,248,194,248,22,153,3,197,28,249,22,148,8, -248,22,153,3,198,194,195,251,22,152,3,199,196,199,199,28,248,22,166,7,195, -248,22,174,7,249,22,2,195,248,22,173,7,198,28,248,22,113,195,248,22,111, -248,194,248,22,114,197,194,250,22,152,3,20,15,159,42,34,39,251,22,67,2, -6,199,249,22,65,65,113,117,111,116,101,28,248,22,63,205,9,28,250,22,122, -205,248,22,153,3,248,22,58,23,17,11,249,2,67,204,248,22,86,23,15,249, -22,57,248,22,58,23,15,249,2,67,206,248,22,86,23,17,28,248,22,63,203, -9,28,250,22,122,203,248,22,153,3,248,22,58,23,15,11,249,2,68,202,248, -22,86,205,249,22,57,248,22,84,205,249,2,68,204,248,22,86,23,15,201,34, -20,99,159,35,16,5,2,69,2,70,2,71,2,72,2,73,16,1,33,77,11, -16,5,93,2,8,87,97,83,158,34,16,2,89,162,8,36,44,8,41,2,10, -223,0,28,248,22,63,200,251,22,65,20,15,159,38,41,43,11,6,10,10,98, -97,100,32,115,121,110,116,97,120,197,27,26,10,80,159,45,8,41,35,204,205, -206,23,15,23,16,23,17,248,22,59,23,19,248,22,59,23,20,248,22,59,23, -21,248,22,59,23,22,27,248,22,58,202,27,248,22,58,204,27,248,22,58,206, -27,248,22,58,23,16,91,159,37,10,90,161,35,34,10,249,22,2,32,0,89, -162,8,36,35,40,9,222,28,248,22,149,3,193,192,27,248,22,58,194,28,248, -22,149,3,193,192,27,248,22,58,194,28,248,22,149,3,193,192,248,2,78,248, -22,58,194,198,90,161,35,35,10,249,22,2,32,0,89,162,8,36,35,38,9, -222,250,22,152,3,195,247,22,54,11,209,90,161,35,36,10,248,22,178,2,248, -22,70,209,27,28,248,22,58,23,18,248,22,65,20,15,159,44,42,43,200,27, -252,80,158,49,41,23,19,205,205,248,80,158,50,35,23,21,248,22,146,8,23, -19,27,28,206,249,22,150,8,195,21,95,2,27,93,2,28,2,28,249,22,150, -8,195,21,95,2,27,94,2,28,2,29,2,28,27,250,22,65,20,15,159,49, -43,43,248,22,65,249,22,65,23,20,28,199,23,19,250,22,67,250,22,152,3, -20,15,159,58,44,43,206,23,22,23,22,28,23,24,9,248,22,65,23,28,251, -22,65,20,15,159,53,45,43,28,200,10,23,21,250,22,65,20,15,159,56,46, -43,250,22,2,89,162,8,36,36,47,9,226,25,27,19,17,249,22,65,199,27, -249,80,158,42,42,201,212,27,28,249,22,188,2,214,195,28,249,22,148,8,195, -34,2,30,28,249,22,148,8,195,35,20,15,159,41,47,43,28,249,22,148,8, -195,36,20,15,159,41,48,43,28,249,22,148,8,195,37,20,15,159,41,49,43, -28,249,22,148,8,195,38,20,15,159,41,50,43,2,30,28,249,22,148,8,195, -34,20,15,159,41,51,43,28,249,22,148,8,195,35,20,15,159,41,52,43,28, -249,22,148,8,195,36,20,15,159,41,53,43,28,249,22,148,8,195,37,20,15, -159,41,54,43,11,28,249,22,148,8,194,2,30,28,248,22,129,3,194,198,250, -22,65,20,15,159,44,55,43,201,196,28,192,249,22,65,194,200,250,22,65,20, -15,159,44,56,43,201,196,24,17,24,18,251,22,65,20,15,159,8,26,57,43, -251,22,2,80,159,8,30,8,42,35,24,22,23,26,24,23,9,28,23,23,251, -22,65,20,15,159,8,30,8,26,43,23,27,23,25,23,21,23,21,202,28,201, -250,22,65,20,15,159,49,8,27,43,248,22,65,249,22,65,2,31,250,22,65, -20,15,159,55,8,28,43,247,22,65,23,20,195,192,80,159,34,8,41,35,83, -158,34,16,2,89,162,8,36,37,49,9,223,0,249,22,65,248,22,65,196,250, -22,65,20,15,159,39,58,43,28,248,22,149,3,200,34,27,248,22,58,201,28, -248,22,149,3,193,35,27,248,22,58,194,28,248,22,149,3,193,36,249,2,79, -248,22,58,195,37,249,22,65,20,15,159,41,59,43,202,80,159,34,8,42,35, -83,158,34,16,2,89,162,34,35,39,9,223,0,27,248,80,158,36,39,248,80, -158,37,39,196,28,248,80,158,36,38,193,248,80,158,36,37,193,248,80,158,36, -37,248,80,158,37,39,196,80,159,34,8,40,35,83,158,34,16,2,89,162,34, -35,39,9,223,0,28,248,80,158,35,38,248,80,158,36,39,248,80,158,37,39, -196,248,80,158,35,37,248,80,158,36,39,195,11,80,159,34,8,39,35,89,162, -8,36,35,8,33,9,223,0,91,159,35,10,90,161,35,34,10,28,248,80,158, -36,34,195,248,22,59,248,80,158,37,35,196,11,87,94,28,28,248,80,158,36, -34,195,249,22,190,2,248,22,70,210,37,11,12,250,22,176,8,11,6,8,8, -98,97,100,32,102,111,114,109,197,27,248,22,58,209,27,248,22,84,210,27,248, -22,93,211,27,248,22,96,212,27,248,22,96,248,22,59,214,27,248,22,95,248, -22,59,215,87,96,28,248,80,158,42,34,195,12,250,22,176,8,248,22,153,3, -201,6,56,56,101,120,112,101,99,116,101,100,32,97,32,112,97,114,101,110,116, -104,101,115,105,122,101,100,32,115,101,113,117,101,110,99,101,32,111,102,32,108, -105,116,101,114,97,108,32,105,100,101,110,116,105,102,105,101,114,115,197,249,22, -3,89,162,34,35,41,9,224,9,7,28,248,80,158,36,36,195,12,250,22,176, -8,248,22,153,3,196,6,28,28,108,105,116,101,114,97,108,32,105,115,32,110, -111,116,32,97,110,32,105,100,101,110,116,105,102,105,101,114,197,248,80,158,44, -35,197,249,22,3,89,162,34,35,42,9,224,9,7,28,28,248,80,158,36,34, -195,250,22,191,2,36,248,22,70,248,80,158,40,35,199,37,11,12,250,22,176, -8,248,22,153,3,196,6,10,10,98,97,100,32,99,108,97,117,115,101,197,194, -27,249,22,2,80,158,44,37,195,27,249,22,2,80,159,45,8,39,35,196,27, -249,22,2,80,159,46,8,40,35,197,27,20,15,159,45,34,43,27,20,15,159, -46,35,43,27,249,22,2,89,162,34,35,43,9,225,15,10,13,251,80,158,40, -40,196,199,199,248,80,158,41,35,198,248,80,158,50,35,200,27,28,248,80,158, -49,36,201,249,22,166,3,202,20,15,159,50,36,43,11,250,22,152,3,20,15, -159,51,37,43,250,22,65,20,15,159,54,38,43,248,22,65,249,22,65,204,28, -248,22,153,3,23,21,23,19,250,22,65,20,15,159,8,26,39,43,249,22,65, -20,15,159,8,28,40,43,249,22,152,3,23,26,2,22,23,22,26,10,80,159, -8,30,8,41,35,23,19,23,18,23,16,23,28,23,25,23,24,23,22,23,21, -23,17,23,20,23,18,34,20,99,159,38,16,9,30,2,21,69,115,116,120,45, -108,105,115,116,63,8,2,71,2,72,2,69,2,73,2,70,30,2,24,74,103, -101,116,45,109,97,116,99,104,45,118,97,114,115,0,30,2,24,74,109,97,107, -101,45,109,97,116,99,104,38,101,110,118,1,30,2,24,72,115,116,120,45,109, -101,109,113,45,112,111,115,5,16,29,33,85,33,86,33,87,33,90,33,91,33, -92,33,93,33,96,33,100,33,104,33,105,33,106,33,107,33,111,33,112,33,113, -33,114,33,115,33,116,33,117,33,118,33,120,33,121,33,122,33,124,33,125,33, -126,33,128,2,33,129,2,11,16,5,93,2,7,87,96,83,158,34,16,2,89, -162,8,64,37,50,2,10,223,0,28,248,22,63,196,9,28,248,22,58,196,249, -22,57,250,22,152,3,248,22,58,200,248,22,153,3,248,80,158,41,42,248,22, -58,203,198,27,248,22,59,198,27,248,22,59,200,28,248,22,63,193,9,28,248, -22,58,193,249,22,57,250,22,152,3,248,22,58,199,248,22,153,3,248,80,158, -45,42,248,22,58,200,202,250,80,159,43,51,35,202,248,22,59,199,248,22,59, -198,250,80,159,41,51,35,200,248,22,59,197,248,22,59,196,27,248,22,59,196, -27,248,22,59,198,28,248,22,63,193,9,28,248,22,58,193,249,22,57,250,22, -152,3,248,22,58,199,248,22,153,3,248,80,158,43,42,248,22,58,200,200,250, -80,159,41,51,35,200,248,22,59,199,248,22,59,198,250,80,159,39,51,35,198, -248,22,59,197,248,22,59,196,80,159,34,51,35,83,158,34,16,2,89,162,8, -64,36,58,2,10,223,0,28,248,22,63,195,9,27,249,80,159,37,50,35,248, -22,59,197,248,22,59,198,28,248,22,58,196,249,22,57,27,248,22,58,198,27, -248,80,158,40,41,248,22,58,201,28,248,22,129,3,193,193,27,248,22,65,195, -27,248,22,178,2,195,28,248,22,129,3,193,193,27,248,22,65,195,27,248,22, -178,2,195,28,248,22,129,3,193,193,27,248,22,65,195,27,248,22,178,2,195, -28,248,22,129,3,193,193,27,248,22,65,195,27,248,22,178,2,195,28,248,22, -129,3,193,193,27,248,22,65,195,27,248,22,178,2,195,28,248,22,129,3,193, -193,27,248,22,65,195,27,248,22,178,2,195,28,248,22,129,3,193,193,249,2, -130,2,248,22,65,196,248,22,178,2,195,194,192,80,159,34,50,35,83,158,34, -16,2,89,162,8,36,35,39,9,223,0,27,249,22,170,13,196,32,0,89,162, -8,44,34,34,9,222,11,28,248,80,158,36,39,193,192,11,80,159,34,49,35, -89,162,8,36,35,56,9,223,0,91,159,35,10,90,161,35,34,10,20,15,159, -35,34,44,87,94,28,28,248,80,158,36,34,195,27,248,80,158,37,35,196,28, -248,80,158,37,34,193,248,80,158,37,36,248,80,158,38,35,194,11,11,12,250, -22,176,8,11,6,8,8,98,97,100,32,102,111,114,109,197,250,22,152,3,210, -27,248,80,158,40,37,248,80,158,41,35,200,27,251,80,158,44,38,197,11,9, -11,27,249,22,2,80,159,43,49,35,195,28,28,28,248,22,63,193,10,248,22, -146,8,249,22,5,32,0,89,162,8,36,35,35,9,222,192,195,248,80,158,42, -40,195,11,249,22,65,20,15,159,43,35,44,196,27,249,80,159,44,50,35,196, -195,27,28,248,22,63,195,9,27,27,248,22,59,198,27,248,22,59,198,28,248, -22,63,193,9,27,249,2,131,2,248,22,59,197,248,22,59,196,28,248,22,58, -194,192,249,22,57,248,22,58,197,194,28,248,22,58,196,192,249,22,57,248,22, -58,199,194,27,251,80,158,48,38,201,198,197,201,27,28,248,22,63,197,9,28, -248,22,58,197,249,22,57,250,22,152,3,248,22,58,203,248,22,153,3,248,80, -158,52,42,248,22,58,204,23,17,250,80,159,50,51,35,23,17,248,22,59,203, -248,22,59,202,250,80,159,48,51,35,23,15,248,22,59,201,248,22,59,200,28, -248,80,158,46,43,199,248,22,58,193,249,22,65,250,22,152,3,24,15,198,203, -27,248,22,70,196,28,248,22,129,3,193,20,15,159,48,36,44,28,249,22,188, -2,194,35,248,22,58,196,249,22,57,20,15,159,50,37,44,197,197,34,20,99, -159,37,16,10,2,73,2,70,30,2,21,69,115,116,120,45,110,117,108,108,63, -10,2,69,30,2,24,72,109,97,107,101,45,112,101,120,112,97,110,100,2,30, -2,24,75,115,121,110,116,97,120,45,109,97,112,112,105,110,103,63,8,30,2, -24,72,110,111,45,101,108,108,105,112,115,101,115,63,4,30,2,24,1,20,115, -121,110,116,97,120,45,109,97,112,112,105,110,103,45,100,101,112,116,104,6,30, -2,24,1,21,115,121,110,116,97,120,45,109,97,112,112,105,110,103,45,118,97, -108,118,97,114,7,2,72,16,4,33,133,2,33,138,2,33,140,2,33,141,2, -11,96,83,158,34,16,2,32,0,89,162,8,36,36,42,2,2,222,28,248,22, -149,3,194,193,27,252,22,152,3,198,199,198,11,198,27,249,22,161,3,196,2, -65,28,192,250,22,161,3,196,2,65,195,193,80,159,34,34,35,83,158,34,16, -2,89,162,34,37,39,2,3,223,0,247,248,22,8,89,162,8,32,35,40,9, -226,1,4,3,2,20,14,159,80,158,37,36,89,162,34,35,39,9,225,2,1, -4,248,193,89,162,34,34,41,9,225,3,2,4,28,248,22,130,11,193,248,22, -134,11,193,251,22,176,8,2,7,6,47,47,105,110,99,111,109,112,97,116,105, -98,108,101,32,101,108,108,105,112,115,105,115,32,109,97,116,99,104,32,99,111, -117,110,116,115,32,102,111,114,32,116,101,109,112,108,97,116,101,197,198,27,247, -193,89,162,8,36,34,35,9,223,0,192,80,159,34,35,35,83,158,34,16,2, -65,100,117,109,109,121,80,159,34,37,35,83,158,34,16,2,89,162,8,37,37, -40,2,6,223,0,91,159,35,11,20,12,95,35,248,193,195,89,162,8,64,35, -46,2,10,226,1,4,3,0,28,248,22,56,197,27,248,194,248,22,58,199,27, -248,195,248,22,59,200,28,28,249,22,148,8,195,248,22,58,201,249,22,148,8, -194,248,22,59,201,11,198,249,22,57,195,194,28,248,22,47,197,28,248,22,63, -194,196,28,249,22,148,8,198,248,22,58,196,248,22,58,195,27,248,22,59,195, -27,248,22,59,197,28,248,22,63,194,198,28,249,22,148,8,200,248,22,58,196, -248,22,58,193,250,2,142,2,201,248,22,59,197,248,22,59,196,28,248,22,149, -3,197,27,248,194,248,22,153,3,199,28,249,22,148,8,248,22,153,3,200,194, -197,28,248,22,149,3,193,192,27,252,22,152,3,203,198,203,11,203,27,249,22, -161,3,201,2,65,28,192,250,22,161,3,196,2,65,195,193,28,248,22,166,7, -197,248,22,174,7,249,22,2,195,248,22,173,7,200,28,248,22,113,197,248,22, -111,248,194,248,22,114,199,196,80,159,34,38,35,96,2,66,2,21,2,23,2, -4,96,2,21,2,23,2,24,2,66,0}; - EVAL_ONE_SIZED_STR((char *)expr, 6856); +22,58,196,192,249,22,57,248,22,58,199,194,27,251,80,158,48,38,201,198,197, +201,27,28,248,22,63,197,9,28,248,22,58,197,249,22,57,250,22,152,3,248, +22,58,203,248,22,153,3,248,80,158,52,42,248,22,58,204,23,17,250,80,159, +50,51,35,23,17,248,22,59,203,248,22,59,202,250,80,159,48,51,35,23,15, +248,22,59,201,248,22,59,200,28,248,80,158,46,43,199,248,22,58,193,249,22, +65,250,22,152,3,24,15,198,203,27,248,22,70,196,28,248,22,129,3,193,20, +15,159,48,36,44,28,249,22,188,2,194,35,248,22,58,196,249,22,57,20,15, +159,50,37,44,197,197,34,20,100,159,37,16,10,2,69,2,66,30,2,21,69, +115,116,120,45,110,117,108,108,63,10,2,65,30,2,24,72,109,97,107,101,45, +112,101,120,112,97,110,100,2,30,2,24,75,115,121,110,116,97,120,45,109,97, +112,112,105,110,103,63,8,30,2,24,72,110,111,45,101,108,108,105,112,115,101, +115,63,4,30,2,24,1,20,115,121,110,116,97,120,45,109,97,112,112,105,110, +103,45,100,101,112,116,104,6,30,2,24,1,21,115,121,110,116,97,120,45,109, +97,112,112,105,110,103,45,118,97,108,118,97,114,7,2,68,16,4,33,129,2, +33,134,2,33,136,2,33,137,2,11,96,83,158,34,16,2,32,0,89,162,8, +36,36,47,2,2,222,28,248,22,149,3,194,193,27,252,22,152,3,198,199,198, +11,198,27,249,22,161,3,196,2,61,28,192,250,22,161,3,196,2,61,195,193, +80,159,34,34,35,83,158,34,16,2,89,162,34,37,44,2,3,223,0,247,248, +22,9,89,162,8,32,35,45,9,226,1,4,3,2,20,14,159,80,158,37,36, +89,162,34,35,44,9,225,2,1,4,248,193,89,162,34,34,46,9,225,3,2, +4,28,248,22,131,11,193,248,22,135,11,193,251,22,177,8,2,7,6,47,47, +105,110,99,111,109,112,97,116,105,98,108,101,32,101,108,108,105,112,115,105,115, +32,109,97,116,99,104,32,99,111,117,110,116,115,32,102,111,114,32,116,101,109, +112,108,97,116,101,197,198,27,247,193,89,162,8,36,34,40,9,223,0,192,80, +159,34,35,35,83,158,34,16,2,65,100,117,109,109,121,80,159,34,37,35,83, +158,34,16,2,89,162,8,37,37,45,2,6,223,0,91,159,35,11,20,12,95, +35,248,193,195,89,162,8,64,35,51,2,10,226,1,4,3,0,28,248,22,56, +197,27,248,194,248,22,58,199,27,248,195,248,22,59,200,28,28,249,22,148,8, +195,248,22,58,201,249,22,148,8,194,248,22,59,201,11,198,249,22,57,195,194, +28,248,22,47,197,28,248,22,63,194,196,28,249,22,148,8,198,248,22,58,196, +248,22,58,195,27,248,22,59,195,27,248,22,59,197,28,248,22,63,194,198,28, +249,22,148,8,200,248,22,58,196,248,22,58,193,250,2,138,2,201,248,22,59, +197,248,22,59,196,28,248,22,149,3,197,27,248,194,248,22,153,3,199,28,249, +22,148,8,248,22,153,3,200,194,197,28,248,22,149,3,193,192,27,252,22,152, +3,203,198,203,11,203,27,249,22,161,3,201,2,61,28,192,250,22,161,3,196, +2,61,195,193,28,248,22,166,7,197,248,22,174,7,249,22,2,195,248,22,173, +7,200,28,248,22,113,197,248,22,111,248,194,248,22,114,199,196,80,159,34,38, +35,96,2,62,2,21,2,23,2,4,96,2,21,2,23,2,24,2,62,0}; + EVAL_ONE_SIZED_STR((char *)expr, 6823); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,55,55,0,0,0,1,0,0,3,0,12,0,25,0, -36,0,48,0,55,0,62,0,69,0,76,0,83,0,96,0,102,0,112,0,126, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,56,55,0,0,0,1,0,0,3,0,12,0,24,0, +37,0,48,0,55,0,62,0,69,0,76,0,83,0,96,0,102,0,112,0,126, 0,141,0,153,0,158,0,162,0,172,0,174,0,179,0,182,0,189,0,199,0, 206,0,213,0,220,0,227,0,237,0,247,0,254,0,5,1,12,1,19,1,29, 1,39,1,48,1,62,1,74,1,86,1,98,1,112,1,126,1,156,1,162,1, 179,1,217,1,60,2,79,2,162,2,199,2,21,3,31,3,46,3,0,0,151, -6,0,0,29,11,11,68,114,101,108,111,99,97,116,101,72,115,121,110,116,97, -120,45,99,97,115,101,42,70,115,121,110,116,97,120,47,108,111,99,71,115,121, -110,116,97,120,45,99,97,115,101,3,1,4,103,52,56,56,3,1,4,103,52, +6,0,0,29,11,11,68,114,101,108,111,99,97,116,101,71,115,121,110,116,97, +120,45,99,97,115,101,72,115,121,110,116,97,120,45,99,97,115,101,42,70,115, +121,110,116,97,120,47,108,111,99,3,1,4,103,52,56,56,3,1,4,103,52, 56,55,3,1,4,103,52,56,54,3,1,4,103,52,56,53,3,1,4,103,52, 56,52,6,10,10,98,97,100,32,115,121,110,116,97,120,65,35,37,115,116,120, 69,35,37,115,116,120,99,97,115,101,73,115,121,110,116,97,120,45,99,97,115, @@ -1767,8 +1765,8 @@ 45,62,108,105,115,116,4,30,2,13,1,24,97,112,112,108,121,45,112,97,116, 116,101,114,110,45,115,117,98,115,116,105,116,117,116,101,0,95,8,193,11,16, 0,97,10,35,11,94,159,2,17,9,11,159,2,13,9,11,16,0,97,10,34, -11,95,159,2,15,9,11,159,2,13,9,11,159,2,16,9,11,16,8,2,3, -2,1,2,4,2,1,2,2,2,1,2,5,2,1,98,8,47,8,46,8,45, +11,95,159,2,15,9,11,159,2,13,9,11,159,2,16,9,11,16,8,2,2, +2,1,2,3,2,1,2,4,2,1,2,5,2,1,98,8,47,8,46,8,45, 16,4,11,11,2,18,3,1,7,101,110,118,50,57,54,48,16,12,11,11,3, 1,4,103,52,55,57,3,1,4,103,52,56,48,3,1,4,103,52,56,49,3, 1,4,103,52,56,50,3,1,4,103,52,56,51,2,19,2,19,2,19,2,19, @@ -1785,512 +1783,516 @@ 1,4,103,52,57,57,2,35,2,35,2,35,16,8,11,11,2,20,63,108,111, 99,67,112,97,116,116,101,114,110,2,36,2,36,2,36,18,158,95,10,2,34, 2,31,8,52,18,158,96,10,2,2,2,32,94,2,34,2,33,8,52,159,34, -20,99,159,34,16,1,20,24,65,98,101,103,105,110,16,0,83,158,40,20,96, +20,100,159,34,16,1,20,24,65,98,101,103,105,110,16,0,83,158,40,20,97, 114,68,35,37,115,116,120,108,111,99,2,1,10,10,10,34,80,158,34,34,20, -99,159,34,16,1,30,2,1,2,2,193,16,0,11,11,16,1,2,2,35,11, +100,159,34,16,1,30,2,1,2,2,193,16,0,11,11,16,1,2,2,35,11, 16,3,2,3,2,4,2,5,16,3,11,11,11,16,3,2,3,2,4,2,5, -34,37,95,16,5,93,2,3,89,162,34,35,51,9,223,0,27,28,248,80,158, +34,37,95,16,5,93,2,4,89,162,34,35,56,9,223,0,27,28,248,80,158, 36,34,195,249,80,158,37,35,248,80,158,38,36,197,27,248,80,158,39,37,198, 28,248,80,158,39,34,193,249,80,158,40,35,248,80,158,41,36,195,27,248,80, 158,42,37,196,28,248,80,158,42,34,193,249,80,158,43,35,248,80,158,44,36, 195,27,248,80,158,45,37,196,28,248,80,158,45,34,193,249,80,158,46,35,248, 80,158,47,36,195,27,248,80,158,48,37,196,28,248,80,158,48,38,193,248,80, 158,48,39,193,11,11,11,11,11,28,192,27,248,22,58,194,27,248,22,84,195, -27,248,22,93,196,27,248,22,96,197,27,248,22,95,198,27,252,22,67,198,202, -201,200,199,254,80,158,48,40,20,15,159,48,34,41,21,97,2,6,2,7,2, -8,2,9,2,10,248,22,84,200,248,22,93,200,248,22,96,200,248,22,95,200, -248,22,58,200,250,22,176,8,11,2,11,197,34,20,99,159,34,16,7,2,38, +27,248,22,93,196,27,248,22,96,197,27,248,22,95,198,27,252,22,67,200,201, +198,199,202,254,80,158,48,40,20,15,159,48,34,41,21,97,2,6,2,7,2, +8,2,9,2,10,248,22,95,200,248,22,84,200,248,22,58,200,248,22,96,200, +248,22,93,200,250,22,177,8,11,2,11,197,34,20,100,159,34,16,7,2,38, 2,39,2,40,2,41,2,42,2,43,2,44,16,1,33,49,11,16,5,93,2, -5,89,162,34,35,49,9,223,0,27,28,248,80,158,36,34,195,249,80,158,37, +3,89,162,34,35,54,9,223,0,27,28,248,80,158,36,34,195,249,80,158,37, 35,248,80,158,38,36,197,27,248,80,158,39,37,198,28,248,80,158,39,34,193, 249,80,158,40,35,248,80,158,41,36,195,27,248,80,158,42,37,196,28,248,80, 158,42,34,193,249,80,158,43,35,248,80,158,44,36,195,27,248,80,158,45,37, 196,28,248,80,158,45,38,193,248,80,158,45,39,193,11,11,11,11,28,192,27, 248,22,58,194,27,248,22,84,195,27,248,22,93,196,27,248,22,94,197,27,251, -22,67,197,200,199,198,253,80,158,46,40,20,15,159,46,34,41,21,96,2,25, -2,26,2,27,2,28,248,22,84,199,248,22,93,199,248,22,94,199,248,22,58, -199,250,22,176,8,11,2,11,197,34,20,99,159,34,16,7,2,38,2,39,2, -40,2,41,2,42,2,43,2,44,16,1,33,51,11,16,5,93,2,4,89,162, -34,35,47,9,223,0,27,28,248,80,158,36,34,195,249,80,158,37,35,248,80, +22,67,198,199,197,200,253,80,158,46,40,20,15,159,46,34,41,21,96,2,25, +2,26,2,27,2,28,248,22,94,199,248,22,84,199,248,22,58,199,248,22,93, +199,250,22,177,8,11,2,11,197,34,20,100,159,34,16,7,2,38,2,39,2, +40,2,41,2,42,2,43,2,44,16,1,33,51,11,16,5,93,2,5,89,162, +34,35,52,9,223,0,27,28,248,80,158,36,34,195,249,80,158,37,35,248,80, 158,38,36,197,27,248,80,158,39,37,198,28,248,80,158,39,34,193,249,80,158, 40,35,248,80,158,41,36,195,27,248,80,158,42,37,196,28,248,80,158,42,34, 193,249,80,158,43,38,248,80,158,44,36,195,248,80,158,44,39,248,80,158,45, 37,196,11,11,11,28,192,27,248,22,58,194,27,248,22,84,195,27,248,22,86, -196,28,28,248,22,47,248,22,153,3,194,248,80,158,39,40,249,22,170,13,195, -32,0,89,162,8,44,34,34,9,222,11,11,250,80,158,41,41,20,15,159,41, +196,28,28,248,22,47,248,22,153,3,194,248,80,158,39,40,249,22,171,13,195, +32,0,89,162,8,44,34,39,9,222,11,11,250,80,158,41,41,20,15,159,41, 34,42,21,93,2,31,195,27,249,22,67,196,195,251,80,158,43,41,20,15,159, -43,35,42,21,94,2,32,2,33,248,22,58,197,248,22,59,197,250,22,176,8, -11,2,11,197,34,20,99,159,34,16,8,2,38,2,39,2,40,2,41,30,2, +43,35,42,21,94,2,32,2,33,248,22,58,197,248,22,59,197,250,22,177,8, +11,2,11,197,34,20,100,159,34,16,8,2,38,2,39,2,40,2,41,30,2, 12,69,97,112,112,101,110,100,47,35,102,0,30,2,12,71,115,116,120,45,110, 117,108,108,47,35,102,9,30,2,17,75,115,121,110,116,97,120,45,109,97,112, 112,105,110,103,63,8,2,44,16,2,33,53,33,54,11,93,83,158,34,16,2, -32,0,89,162,8,36,36,42,2,2,222,28,248,22,158,3,193,252,22,152,3, +32,0,89,162,8,36,36,47,2,2,222,28,248,22,158,3,193,252,22,152,3, 198,248,22,153,3,199,197,11,198,193,80,159,34,34,35,96,2,37,2,16,2, 13,2,15,95,2,37,2,13,2,17,0}; EVAL_ONE_SIZED_STR((char *)expr, 1816); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,55,55,0,0,0,1,0,0,6,0,9,0,26,0, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,56,53,0,0,0,1,0,0,6,0,9,0,26,0, 34,0,48,0,70,0,76,0,86,0,96,0,108,0,113,0,120,0,127,0,140, 0,147,0,154,0,159,0,168,0,178,0,183,0,198,0,205,0,217,0,227,0, -229,0,232,0,235,0,245,0,250,0,4,1,14,1,18,1,28,1,38,1,45, -1,54,1,70,1,76,1,108,1,155,1,167,1,223,1,235,1,6,2,55,2, -71,2,92,2,98,2,104,2,130,2,138,2,158,2,191,2,203,2,0,0,227, -8,0,0,65,98,101,103,105,110,29,11,11,76,119,105,116,104,45,115,121,110, -116,97,120,45,102,97,105,108,67,99,111,117,110,116,101,114,73,97,112,112,101, -110,100,45,110,117,109,98,101,114,1,20,103,101,110,101,114,97,116,101,45,116, -101,109,112,111,114,97,114,105,101,115,65,35,37,115,116,120,69,115,116,120,45, -108,105,115,116,63,69,115,116,120,45,62,108,105,115,116,71,119,105,116,104,45, -115,121,110,116,97,120,64,108,111,111,112,3,1,4,103,53,49,52,3,1,4, -103,53,49,51,72,113,117,111,116,101,45,115,121,110,116,97,120,3,1,4,103, -53,49,50,3,1,4,103,53,49,49,64,104,101,114,101,68,35,37,115,116,120, -108,111,99,69,35,37,115,116,120,99,97,115,101,64,35,37,115,99,74,35,37, -115,109,97,108,108,45,115,99,104,101,109,101,66,35,37,99,111,110,100,71,35, -37,113,113,45,97,110,100,45,111,114,3,1,7,101,110,118,51,48,51,48,61, -95,62,101,49,62,101,50,3,1,7,101,110,118,51,48,51,49,64,100,101,115, -116,3,1,7,101,110,118,51,48,53,48,3,1,7,101,110,118,51,48,53,49, -63,105,110,115,3,1,7,101,110,118,51,48,54,51,3,1,7,101,110,118,51, -48,54,54,6,4,4,126,97,126,115,68,35,37,107,101,114,110,101,108,16,4, -11,11,61,120,3,1,7,101,110,118,51,48,50,51,95,8,193,11,16,0,97, -10,35,11,97,159,2,22,9,11,159,2,23,9,11,159,2,20,9,11,159,2, -18,9,11,159,2,19,9,11,16,0,97,10,34,11,96,159,2,19,9,11,159, -2,21,9,11,159,2,18,9,11,159,2,7,9,11,16,10,2,5,2,2,2, -10,2,2,2,4,2,2,2,6,2,2,2,3,2,2,18,97,2,17,8,40, -8,39,8,38,8,37,98,8,40,8,39,8,38,8,37,16,8,11,11,3,1, -4,103,53,48,56,3,1,4,103,53,48,57,3,1,4,103,53,49,48,2,24, -2,24,2,24,16,8,11,11,2,25,2,26,2,27,2,28,2,28,2,28,18, -158,160,10,2,1,2,15,2,16,8,42,16,12,11,11,2,25,63,111,117,116, -62,105,110,2,26,2,27,2,31,2,31,2,31,2,31,2,31,16,12,11,11, -3,1,4,103,53,48,51,3,1,4,103,53,48,52,3,1,4,103,53,48,53, -3,1,4,103,53,48,54,3,1,4,103,53,48,55,2,30,2,30,2,30,2, -30,2,30,18,99,2,29,8,40,8,39,8,38,8,37,8,45,8,44,99,8, -40,8,39,8,38,8,37,8,45,8,44,16,4,11,11,2,32,2,33,18,158, -2,29,8,47,18,158,2,29,8,47,16,8,11,11,64,116,109,112,115,65,104, -101,114,101,115,64,111,117,116,115,2,34,2,34,2,34,16,4,11,11,2,32, -2,33,18,101,2,17,8,40,8,39,8,38,8,37,8,45,8,44,8,51,8, -50,101,8,40,8,39,8,38,8,37,8,45,8,44,8,51,8,50,16,4,11, -11,2,11,3,1,7,101,110,118,51,48,55,49,18,158,160,10,2,1,2,12, -2,13,8,53,159,34,20,99,159,34,16,1,20,24,2,1,16,0,83,158,40, -20,96,114,70,35,37,119,105,116,104,45,115,116,120,2,2,10,10,10,34,80, -158,34,34,20,99,159,35,16,7,30,2,2,2,3,193,30,2,2,2,4,193, -30,2,2,2,5,193,30,2,2,2,6,193,30,2,7,2,8,8,30,2,7, -2,9,4,30,2,7,71,105,100,101,110,116,105,102,105,101,114,63,2,16,0, -11,11,16,3,2,5,2,4,2,3,37,11,16,2,2,6,2,10,16,2,11, -11,16,2,2,6,2,10,35,36,93,16,5,93,2,10,87,94,83,158,34,16, -2,89,162,8,64,38,58,2,11,223,0,28,248,22,63,196,27,249,22,67,197, -196,251,80,158,39,42,20,15,159,39,40,48,21,94,2,12,2,13,248,22,59, -197,248,22,58,197,26,8,22,65,73,115,121,110,116,97,120,45,99,97,115,101, -42,42,11,10,248,22,58,204,9,79,109,111,100,117,108,101,45,105,100,101,110, -116,105,102,105,101,114,61,63,249,22,65,248,22,58,23,15,251,80,159,48,56, -35,23,15,23,16,248,22,59,23,18,248,22,59,23,19,249,22,65,65,95,101, -108,115,101,249,22,65,2,3,249,22,65,2,14,250,22,152,3,11,248,22,151, -3,248,22,58,23,23,248,22,58,23,22,80,159,34,56,35,89,162,34,35,59, -9,223,0,27,249,22,152,3,20,15,159,37,34,48,196,27,28,248,80,158,37, -34,194,249,80,158,38,35,248,80,158,39,36,196,27,248,80,158,40,37,197,28, -248,80,158,40,34,193,28,248,80,158,40,38,248,80,158,41,36,194,27,248,80, -158,41,37,194,28,248,80,158,41,34,193,249,80,158,42,35,248,80,158,43,36, -195,27,248,80,158,44,37,196,28,248,80,158,44,39,193,248,80,158,44,40,193, -11,11,11,11,11,28,192,27,248,22,58,194,27,248,22,84,195,27,248,22,86, -196,249,80,158,41,41,200,27,249,22,67,197,198,251,80,158,46,42,20,15,159, -46,35,48,21,94,2,15,2,16,248,22,59,197,248,22,58,197,27,28,248,80, -158,38,34,195,249,80,158,39,35,248,80,158,40,36,197,27,248,80,158,41,37, -198,28,248,80,158,41,34,193,249,80,158,42,43,27,248,80,158,44,36,196,28, -248,80,158,44,39,193,248,22,8,89,162,34,35,41,9,224,10,1,27,249,22, -2,89,162,34,35,46,9,224,4,5,249,80,158,37,44,28,248,80,158,38,34, -197,249,80,158,39,35,248,80,158,40,36,199,27,248,80,158,41,37,200,28,248, -80,158,41,34,193,249,80,158,42,35,248,80,158,43,36,195,248,80,158,43,38, -248,80,158,44,37,196,11,11,194,248,80,158,39,40,196,28,248,22,63,193,21, -94,9,9,248,80,158,37,45,193,11,27,248,80,158,44,37,196,28,248,80,158, -44,34,193,249,80,158,45,35,248,80,158,46,36,195,27,248,80,158,47,37,196, -28,248,80,158,47,39,193,248,80,158,47,40,193,11,11,11,11,28,192,27,248, -22,58,194,27,248,22,84,195,27,248,22,93,196,27,248,22,96,197,27,248,22, -95,198,27,248,22,159,3,249,80,158,46,46,20,15,159,46,36,48,198,87,94, -251,80,158,47,47,201,206,249,80,158,49,46,20,15,159,49,37,48,202,9,27, -249,22,2,32,0,89,162,8,36,35,36,9,222,248,22,54,65,119,115,116,109, -112,195,27,249,22,2,32,0,89,162,8,36,35,38,9,222,250,22,152,3,195, -2,17,195,196,27,248,22,159,3,249,80,158,49,46,20,15,159,49,38,48,202, -250,22,152,3,20,15,159,49,39,48,250,22,65,63,108,101,116,251,22,2,32, -0,89,162,8,36,37,44,9,222,249,22,65,194,250,22,65,1,20,100,97,116, -117,109,45,62,115,121,110,116,97,120,45,111,98,106,101,99,116,249,22,65,2, -14,200,199,204,203,205,251,80,159,56,56,35,23,15,206,204,202,23,16,250,22, -176,8,11,6,10,10,98,97,100,32,115,121,110,116,97,120,197,34,20,99,159, -35,16,14,30,2,7,69,115,116,120,45,112,97,105,114,63,11,30,2,7,67, -99,111,110,115,47,35,102,1,30,2,7,67,115,116,120,45,99,97,114,5,30, -2,7,67,115,116,120,45,99,100,114,6,30,2,7,71,115,116,120,45,110,117, -108,108,47,35,102,9,30,2,7,2,8,8,30,2,7,2,9,4,30,2,18, -68,114,101,108,111,99,97,116,101,0,30,2,19,1,24,97,112,112,108,121,45, -112,97,116,116,101,114,110,45,115,117,98,115,116,105,116,117,116,101,0,30,2, -7,69,97,112,112,101,110,100,47,35,102,0,30,2,7,73,115,116,120,45,99, -104,101,99,107,47,101,115,99,7,30,2,7,70,115,116,120,45,114,111,116,97, -116,101,12,30,2,19,1,26,100,97,116,117,109,45,62,115,121,110,116,97,120, -45,111,98,106,101,99,116,47,115,104,97,112,101,2,30,2,20,74,103,101,116, -45,109,97,116,99,104,45,118,97,114,115,0,16,7,33,41,33,43,33,46,33, -48,33,49,33,52,33,54,11,97,83,158,34,16,2,89,162,34,35,44,9,223, -0,248,247,22,176,13,28,248,22,47,195,249,22,152,3,11,87,94,83,160,36, -11,80,158,37,35,248,22,177,2,80,158,38,35,248,22,48,250,22,128,7,2, -35,200,80,158,41,35,28,248,22,144,6,195,249,22,152,3,11,87,94,83,160, -36,11,80,158,37,35,248,22,177,2,80,158,38,35,248,22,48,250,22,128,7, -2,35,200,80,158,41,35,28,248,80,158,36,40,195,249,22,152,3,11,27,248, -22,153,3,198,87,94,83,160,36,11,80,158,38,35,248,22,177,2,80,158,39, -35,248,22,48,250,22,128,7,2,35,196,80,158,42,35,249,22,152,3,11,87, -94,83,160,36,11,80,158,37,35,248,22,177,2,80,158,38,35,248,22,48,250, -22,128,7,2,35,64,116,101,109,112,80,158,41,35,80,159,34,41,35,83,158, -34,16,2,32,0,89,162,34,35,38,2,3,222,250,22,176,8,2,10,6,20, -20,98,105,110,100,105,110,103,32,109,97,116,99,104,32,102,97,105,108,101,100, -195,80,159,34,34,35,83,158,34,16,2,34,80,158,34,35,83,158,34,16,2, -89,162,34,35,40,2,5,223,0,87,94,83,160,36,11,80,158,34,35,248,22, -177,2,80,158,35,35,248,22,48,250,22,128,7,2,35,197,80,158,38,35,80, -159,34,36,35,83,158,34,16,2,89,162,34,35,39,2,6,223,0,87,94,28, -248,80,158,35,38,194,12,250,22,177,8,2,6,6,11,11,115,121,110,116,97, -120,32,112,97,105,114,196,27,248,80,158,36,39,195,249,22,2,80,159,37,41, -35,194,80,159,34,37,35,97,2,36,2,7,2,18,2,21,2,19,98,2,36, -2,19,2,18,2,20,2,23,2,22,0}; - EVAL_ONE_SIZED_STR((char *)expr, 2404); +229,0,232,0,235,0,245,0,250,0,4,1,14,1,24,1,31,1,40,1,56, +1,62,1,94,1,141,1,153,1,209,1,221,1,248,1,41,2,57,2,75,2, +90,2,96,2,102,2,128,2,148,2,181,2,193,2,0,0,219,8,0,0,65, +98,101,103,105,110,29,11,11,76,119,105,116,104,45,115,121,110,116,97,120,45, +102,97,105,108,67,99,111,117,110,116,101,114,73,97,112,112,101,110,100,45,110, +117,109,98,101,114,1,20,103,101,110,101,114,97,116,101,45,116,101,109,112,111, +114,97,114,105,101,115,65,35,37,115,116,120,69,115,116,120,45,108,105,115,116, +63,69,115,116,120,45,62,108,105,115,116,71,119,105,116,104,45,115,121,110,116, +97,120,64,108,111,111,112,3,1,4,103,53,49,52,3,1,4,103,53,49,51, +72,113,117,111,116,101,45,115,121,110,116,97,120,3,1,4,103,53,49,50,3, +1,4,103,53,49,49,64,104,101,114,101,68,35,37,115,116,120,108,111,99,69, +35,37,115,116,120,99,97,115,101,64,35,37,115,99,74,35,37,115,109,97,108, +108,45,115,99,104,101,109,101,66,35,37,99,111,110,100,71,35,37,113,113,45, +97,110,100,45,111,114,3,1,7,101,110,118,51,48,51,48,61,95,62,101,49, +62,101,50,3,1,7,101,110,118,51,48,51,49,64,100,101,115,116,3,1,7, +101,110,118,51,48,53,48,3,1,7,101,110,118,51,48,53,49,3,1,7,101, +110,118,51,48,54,54,6,4,4,126,97,126,115,68,35,37,107,101,114,110,101, +108,16,4,11,11,61,120,3,1,7,101,110,118,51,48,50,51,95,8,193,11, +16,0,97,10,35,11,97,159,2,22,9,11,159,2,23,9,11,159,2,20,9, +11,159,2,18,9,11,159,2,19,9,11,16,0,97,10,34,11,96,159,2,19, +9,11,159,2,21,9,11,159,2,18,9,11,159,2,7,9,11,16,10,2,6, +2,2,2,4,2,2,2,5,2,2,2,10,2,2,2,3,2,2,18,97,2, +17,8,38,8,37,8,36,8,35,98,8,38,8,37,8,36,8,35,16,8,11, +11,3,1,4,103,53,48,56,3,1,4,103,53,48,57,3,1,4,103,53,49, +48,2,24,2,24,2,24,16,8,11,11,2,25,2,26,2,27,2,28,2,28, +2,28,18,158,160,10,2,1,2,15,2,16,8,40,16,12,11,11,2,25,63, +111,117,116,62,105,110,2,26,2,27,2,31,2,31,2,31,2,31,2,31,16, +12,11,11,3,1,4,103,53,48,51,3,1,4,103,53,48,52,3,1,4,103, +53,48,53,3,1,4,103,53,48,54,3,1,4,103,53,48,55,2,30,2,30, +2,30,2,30,2,30,18,99,2,29,8,38,8,37,8,36,8,35,8,43,8, +42,16,4,11,11,63,105,110,115,3,1,7,101,110,118,51,48,54,51,99,8, +38,8,37,8,36,8,35,8,43,8,42,8,45,18,158,2,29,8,46,18,158, +2,29,8,46,16,8,11,11,64,116,109,112,115,65,104,101,114,101,115,64,111, +117,116,115,2,32,2,32,2,32,18,101,2,17,8,38,8,37,8,36,8,35, +8,43,8,42,8,45,8,49,101,8,38,8,37,8,36,8,35,8,43,8,42, +8,45,8,49,16,4,11,11,2,11,3,1,7,101,110,118,51,48,55,49,18, +158,160,10,2,1,2,12,2,13,8,51,159,34,20,100,159,34,16,1,20,24, +2,1,16,0,83,158,40,20,97,114,70,35,37,119,105,116,104,45,115,116,120, +2,2,10,10,10,34,80,158,34,34,20,100,159,35,16,7,30,2,2,2,3, +193,30,2,2,2,4,193,30,2,2,2,5,193,30,2,2,2,6,193,30,2, +7,2,8,8,30,2,7,2,9,4,30,2,7,71,105,100,101,110,116,105,102, +105,101,114,63,2,16,0,11,11,16,3,2,5,2,4,2,3,37,11,16,2, +2,6,2,10,16,2,11,11,16,2,2,6,2,10,35,36,93,16,5,93,2, +10,87,94,83,158,34,16,2,89,162,8,64,38,8,29,2,11,223,0,28,248, +22,63,196,27,249,22,67,196,197,251,80,158,39,42,20,15,159,39,40,48,21, +94,2,12,2,13,248,22,58,197,248,22,59,197,26,8,22,65,73,115,121,110, +116,97,120,45,99,97,115,101,42,42,11,10,248,22,58,204,9,79,109,111,100, +117,108,101,45,105,100,101,110,116,105,102,105,101,114,61,63,249,22,65,248,22, +58,23,15,251,80,159,48,56,35,23,15,23,16,248,22,59,23,18,248,22,59, +23,19,249,22,65,65,95,101,108,115,101,249,22,65,2,3,249,22,65,2,14, +250,22,152,3,11,248,22,151,3,248,22,58,23,23,248,22,58,23,22,80,159, +34,56,35,89,162,34,35,8,30,9,223,0,27,249,22,152,3,20,15,159,37, +34,48,196,27,28,248,80,158,37,34,194,249,80,158,38,35,248,80,158,39,36, +196,27,248,80,158,40,37,197,28,248,80,158,40,34,193,28,248,80,158,40,38, +248,80,158,41,36,194,27,248,80,158,41,37,194,28,248,80,158,41,34,193,249, +80,158,42,35,248,80,158,43,36,195,27,248,80,158,44,37,196,28,248,80,158, +44,39,193,248,80,158,44,40,193,11,11,11,11,11,28,192,27,248,22,58,194, +27,248,22,84,195,27,248,22,86,196,249,80,158,41,41,200,27,249,22,67,198, +197,251,80,158,46,42,20,15,159,46,35,48,21,94,2,15,2,16,248,22,58, +197,248,22,59,197,27,28,248,80,158,38,34,195,249,80,158,39,35,248,80,158, +40,36,197,27,248,80,158,41,37,198,28,248,80,158,41,34,193,249,80,158,42, +43,27,248,80,158,44,36,196,28,248,80,158,44,39,193,248,22,9,89,162,34, +35,46,9,224,10,1,27,249,22,2,89,162,34,35,51,9,224,4,5,249,80, +158,37,44,28,248,80,158,38,34,197,249,80,158,39,35,248,80,158,40,36,199, +27,248,80,158,41,37,200,28,248,80,158,41,34,193,249,80,158,42,35,248,80, +158,43,36,195,248,80,158,43,38,248,80,158,44,37,196,11,11,194,248,80,158, +39,40,196,28,248,22,63,193,21,94,9,9,248,80,158,37,45,193,11,27,248, +80,158,44,37,196,28,248,80,158,44,34,193,249,80,158,45,35,248,80,158,46, +36,195,27,248,80,158,47,37,196,28,248,80,158,47,39,193,248,80,158,47,40, +193,11,11,11,11,28,192,27,248,22,58,194,27,248,22,84,195,27,248,22,93, +196,27,248,22,96,197,27,248,22,95,198,27,248,22,159,3,249,80,158,46,46, +20,15,159,46,36,48,198,87,94,251,80,158,47,47,201,206,249,80,158,49,46, +20,15,159,49,37,48,202,9,27,249,22,2,32,0,89,162,8,36,35,41,9, +222,248,22,54,65,119,115,116,109,112,195,27,249,22,2,32,0,89,162,8,36, +35,43,9,222,250,22,152,3,195,2,17,195,196,27,248,22,159,3,249,80,158, +49,46,20,15,159,49,38,48,202,250,22,152,3,20,15,159,49,39,48,250,22, +65,63,108,101,116,251,22,2,32,0,89,162,8,36,37,49,9,222,249,22,65, +194,250,22,65,1,20,100,97,116,117,109,45,62,115,121,110,116,97,120,45,111, +98,106,101,99,116,249,22,65,2,14,200,199,204,203,205,251,80,159,56,56,35, +23,15,206,204,202,23,16,250,22,177,8,11,6,10,10,98,97,100,32,115,121, +110,116,97,120,197,34,20,100,159,35,16,14,30,2,7,69,115,116,120,45,112, +97,105,114,63,11,30,2,7,67,99,111,110,115,47,35,102,1,30,2,7,67, +115,116,120,45,99,97,114,5,30,2,7,67,115,116,120,45,99,100,114,6,30, +2,7,71,115,116,120,45,110,117,108,108,47,35,102,9,30,2,7,2,8,8, +30,2,7,2,9,4,30,2,18,68,114,101,108,111,99,97,116,101,0,30,2, +19,1,24,97,112,112,108,121,45,112,97,116,116,101,114,110,45,115,117,98,115, +116,105,116,117,116,101,0,30,2,7,69,97,112,112,101,110,100,47,35,102,0, +30,2,7,73,115,116,120,45,99,104,101,99,107,47,101,115,99,7,30,2,7, +70,115,116,120,45,114,111,116,97,116,101,12,30,2,19,1,26,100,97,116,117, +109,45,62,115,121,110,116,97,120,45,111,98,106,101,99,116,47,115,104,97,112, +101,2,30,2,20,74,103,101,116,45,109,97,116,99,104,45,118,97,114,115,0, +16,7,33,39,33,41,33,44,33,47,33,48,33,50,33,52,11,97,83,158,34, +16,2,89,162,34,35,49,9,223,0,248,247,22,177,13,28,248,22,47,195,249, +22,152,3,11,87,94,83,160,36,11,80,158,37,35,248,22,177,2,80,158,38, +35,248,22,48,250,22,128,7,2,33,200,80,158,41,35,28,248,22,144,6,195, +249,22,152,3,11,87,94,83,160,36,11,80,158,37,35,248,22,177,2,80,158, +38,35,248,22,48,250,22,128,7,2,33,200,80,158,41,35,28,248,80,158,36, +40,195,249,22,152,3,11,27,248,22,153,3,198,87,94,83,160,36,11,80,158, +38,35,248,22,177,2,80,158,39,35,248,22,48,250,22,128,7,2,33,196,80, +158,42,35,249,22,152,3,11,87,94,83,160,36,11,80,158,37,35,248,22,177, +2,80,158,38,35,248,22,48,250,22,128,7,2,33,64,116,101,109,112,80,158, +41,35,80,159,34,41,35,83,158,34,16,2,32,0,89,162,34,35,43,2,3, +222,250,22,177,8,2,10,6,20,20,98,105,110,100,105,110,103,32,109,97,116, +99,104,32,102,97,105,108,101,100,195,80,159,34,34,35,83,158,34,16,2,34, +80,158,34,35,83,158,34,16,2,89,162,34,35,45,2,5,223,0,87,94,83, +160,36,11,80,158,34,35,248,22,177,2,80,158,35,35,248,22,48,250,22,128, +7,2,33,197,80,158,38,35,80,159,34,36,35,83,158,34,16,2,89,162,34, +35,44,2,6,223,0,87,94,28,248,80,158,35,38,194,12,250,22,178,8,2, +6,6,11,11,115,121,110,116,97,120,32,112,97,105,114,196,27,248,80,158,36, +39,195,249,22,2,80,159,37,41,35,194,80,159,34,37,35,97,2,34,2,7, +2,18,2,21,2,19,98,2,34,2,19,2,18,2,20,2,23,2,22,0}; + EVAL_ONE_SIZED_STR((char *)expr, 2392); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,55,181,0,0,0,1,0,0,3,0,31,0,37,0, -49,0,71,0,84,0,88,0,93,0,98,0,105,0,116,0,132,0,146,0,158, -0,171,0,175,0,186,0,189,0,202,0,209,0,224,0,236,0,250,0,10,1, -18,1,23,1,30,1,41,1,48,1,59,1,68,1,80,1,90,1,105,1,112, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,56,185,0,0,0,1,0,0,3,0,31,0,37,0, +49,0,71,0,78,0,92,0,96,0,109,0,120,0,127,0,132,0,148,0,156, +0,163,0,177,0,188,0,201,0,206,0,209,0,220,0,225,0,240,0,252,0, +9,1,13,1,20,1,36,1,48,1,59,1,69,1,84,1,96,1,105,1,112, 1,119,1,126,1,133,1,140,1,164,1,167,1,171,1,176,1,182,1,187,1, 200,1,205,1,220,1,224,1,234,1,236,1,246,1,248,1,255,1,6,2,13, 2,20,2,27,2,37,2,47,2,54,2,61,2,68,2,75,2,82,2,89,2, 96,2,103,2,110,2,114,2,121,2,146,2,159,2,169,2,179,2,184,2,190, 2,197,2,204,2,211,2,218,2,225,2,235,2,245,2,252,2,3,3,10,3, 17,3,24,3,31,3,38,3,40,3,54,3,56,3,76,3,82,3,90,3,99, -3,109,3,119,3,126,3,133,3,140,3,147,3,154,3,177,3,187,3,197,3, -206,3,220,3,232,3,244,3,0,4,14,4,28,4,46,4,60,4,76,4,91, -4,104,4,130,4,160,4,176,4,182,4,214,4,18,5,30,5,112,5,128,5, -139,5,172,5,188,5,201,5,28,6,44,6,56,6,89,6,121,6,137,6,158, -6,174,6,187,6,211,6,4,7,20,7,27,7,34,7,87,7,109,7,120,7, -134,7,148,7,181,7,248,7,15,8,31,8,44,8,127,8,142,8,154,8,187, -8,193,8,223,8,16,9,32,9,48,9,55,9,62,9,69,9,122,9,148,9, -167,9,200,9,11,10,31,10,114,10,121,10,150,10,166,10,199,10,0,0,115, -25,0,0,29,11,11,1,26,99,104,101,99,107,45,100,117,112,108,105,99,97, -116,101,45,105,100,101,110,116,105,102,105,101,114,65,35,37,115,116,120,71,105, -100,101,110,116,105,102,105,101,114,63,1,20,103,101,110,101,114,97,116,101,45, -116,101,109,112,111,114,97,114,105,101,115,72,115,121,110,116,97,120,45,99,97, -115,101,42,63,108,101,116,64,99,111,110,100,64,108,101,116,42,66,108,101,116, -114,101,99,70,113,117,97,115,105,113,117,111,116,101,75,108,101,116,114,101,99, -45,115,121,110,116,97,120,101,115,73,108,101,116,114,101,99,45,115,121,110,116, -97,120,71,119,105,116,104,45,115,121,110,116,97,120,72,108,101,116,45,115,121, -110,116,97,120,101,115,63,97,110,100,70,108,101,116,45,115,121,110,116,97,120, -62,111,114,72,115,121,110,116,97,120,45,114,117,108,101,115,66,115,121,110,116, -97,120,74,45,100,101,102,105,110,101,45,115,121,110,116,97,120,71,115,121,110, -116,97,120,45,99,97,115,101,73,100,101,102,105,110,101,45,115,116,114,117,99, -116,75,115,121,110,116,97,120,45,105,100,45,114,117,108,101,115,67,45,100,101, -102,105,110,101,64,119,104,101,110,66,117,110,108,101,115,115,70,115,121,110,116, -97,120,47,108,111,99,66,108,101,116,47,101,99,70,35,37,119,105,116,104,45, -115,116,120,68,35,37,115,116,120,108,111,99,71,35,37,113,113,45,97,110,100, -45,111,114,69,35,37,115,116,120,99,97,115,101,74,35,37,100,101,102,105,110, -101,45,101,116,45,97,108,3,1,4,103,53,50,49,3,1,4,103,53,50,48, -3,1,4,103,53,50,52,3,1,4,103,53,50,51,3,1,4,103,53,50,50, -1,22,108,101,116,114,101,99,45,115,121,110,116,97,120,101,115,43,118,97,108, -117,101,115,62,105,100,63,46,46,46,64,101,120,112,114,65,98,111,100,121,49, -64,98,111,100,121,6,10,10,98,97,100,32,115,121,110,116,97,120,64,104,101, -114,101,74,35,37,115,109,97,108,108,45,115,99,104,101,109,101,63,115,116,120, -3,1,7,101,110,118,51,48,57,56,61,95,3,1,7,101,110,118,51,48,57, -57,61,114,3,1,4,103,53,51,48,3,1,4,103,53,51,49,3,1,4,103, -53,51,52,3,1,4,103,53,51,51,3,1,4,103,53,51,50,3,1,7,101, -110,118,51,49,50,56,3,1,7,101,110,118,51,49,50,57,3,1,4,103,53, -52,55,3,1,4,103,53,52,54,3,1,4,103,53,52,53,3,1,4,103,53, -52,52,3,1,4,103,53,52,51,3,1,4,103,53,53,49,3,1,4,103,53, -53,48,3,1,4,103,53,52,57,3,1,4,103,53,52,56,63,116,109,112,66, -118,97,108,117,101,115,1,23,109,97,107,101,45,114,101,110,97,109,101,45,116, -114,97,110,115,102,111,114,109,101,114,72,113,117,111,116,101,45,115,121,110,116, -97,120,3,1,7,101,110,118,51,49,53,57,3,1,7,101,110,118,51,49,54, -48,64,100,101,115,116,65,95,101,108,115,101,3,1,4,103,53,53,55,3,1, -4,103,53,53,56,3,1,4,103,53,54,49,3,1,4,103,53,54,48,3,1, -4,103,53,53,57,3,1,7,101,110,118,51,50,49,49,3,1,7,101,110,118, -51,50,49,50,3,1,4,103,53,55,49,3,1,4,103,53,55,48,3,1,4, -103,53,55,50,3,1,4,103,53,55,53,3,1,4,103,53,55,52,3,1,4, -103,53,55,51,66,108,97,109,98,100,97,61,120,73,115,121,110,116,97,120,45, -99,97,115,101,42,42,61,107,79,109,111,100,117,108,101,45,105,100,101,110,116, -105,102,105,101,114,61,63,65,100,117,109,109,121,67,112,97,116,116,101,114,110, -68,116,101,109,112,108,97,116,101,3,1,7,101,110,118,51,50,52,53,3,1, -7,101,110,118,51,50,52,54,3,1,4,103,53,56,49,3,1,4,103,53,56, -48,3,1,4,103,53,56,52,3,1,4,103,53,56,51,3,1,4,103,53,56, -50,1,21,109,97,107,101,45,115,101,116,33,45,116,114,97,110,115,102,111,114, -109,101,114,3,1,7,101,110,118,51,50,57,51,3,1,7,101,110,118,51,50, -57,52,68,35,37,107,101,114,110,101,108,30,2,3,69,115,116,120,45,112,97, -105,114,63,11,30,2,3,67,99,111,110,115,47,35,102,1,30,2,3,67,115, -116,120,45,99,97,114,5,30,2,3,67,115,116,120,45,99,100,114,6,30,2, -3,69,97,112,112,101,110,100,47,35,102,0,30,2,3,69,115,116,120,45,108, -105,115,116,63,8,30,2,3,73,115,116,120,45,99,104,101,99,107,47,101,115, -99,7,30,2,3,69,115,116,120,45,62,108,105,115,116,4,30,2,3,71,115, -116,120,45,110,117,108,108,47,35,102,9,30,2,3,70,115,116,120,45,114,111, -116,97,116,101,12,30,2,31,68,114,101,108,111,99,97,116,101,0,30,2,33, -1,20,99,97,116,99,104,45,101,108,108,105,112,115,105,115,45,101,114,114,111, -114,1,30,2,33,1,24,97,112,112,108,121,45,112,97,116,116,101,114,110,45, -115,117,98,115,116,105,116,117,116,101,0,16,4,11,11,2,49,3,1,7,101, -110,118,51,48,56,53,95,8,193,11,16,0,97,10,35,11,97,159,2,31,9, -11,159,2,30,9,11,159,2,33,9,11,159,2,3,9,11,159,2,48,9,11, -16,0,97,10,34,11,97,159,2,31,9,11,159,2,30,9,11,159,2,33,9, -11,159,2,3,9,11,159,2,48,9,11,16,14,2,12,2,1,2,13,2,1, -2,19,2,1,2,15,2,1,2,2,2,1,2,17,2,1,2,24,2,1,18, -97,2,47,8,126,8,125,8,124,8,123,98,8,126,8,125,8,124,8,123,16, -12,11,11,3,1,4,103,53,49,53,3,1,4,103,53,49,54,3,1,4,103, -53,49,55,3,1,4,103,53,49,56,3,1,4,103,53,49,57,2,50,2,50, -2,50,2,50,2,50,16,12,11,11,2,51,2,41,2,43,2,44,2,45,2, -52,2,52,2,52,2,52,2,52,18,158,162,10,2,40,2,37,9,2,38,2, -39,8,128,2,18,158,95,10,2,35,2,36,8,128,2,18,16,2,95,2,42, -93,8,152,42,16,4,11,11,2,53,3,1,7,101,110,118,51,49,49,49,95, -9,8,152,42,2,33,16,4,11,11,2,49,3,1,7,101,110,118,51,49,49, -54,18,97,2,47,8,126,8,125,8,124,8,132,2,98,8,126,8,125,8,124, -8,132,2,16,12,11,11,3,1,4,103,53,50,53,3,1,4,103,53,50,54, -3,1,4,103,53,50,55,3,1,4,103,53,50,56,3,1,4,103,53,50,57, -2,59,2,59,2,59,2,59,2,59,16,12,11,11,2,51,2,41,2,43,2, -44,2,45,2,60,2,60,2,60,2,60,2,60,18,158,162,10,2,40,2,56, -9,2,57,2,58,8,134,2,18,158,95,10,93,2,54,2,55,8,134,2,18, -16,2,95,2,42,93,8,172,42,16,4,11,11,2,53,3,1,7,101,110,118, -51,49,52,49,95,9,8,172,42,2,33,30,2,33,1,26,100,97,116,117,109, -45,62,115,121,110,116,97,120,45,111,98,106,101,99,116,47,115,104,97,112,101, -2,30,2,3,71,115,116,120,45,114,111,116,97,116,101,42,13,30,2,30,76, -119,105,116,104,45,115,121,110,116,97,120,45,102,97,105,108,3,16,4,11,11, -2,49,3,1,7,101,110,118,51,49,52,54,18,97,2,47,8,126,8,125,8, -124,8,141,2,16,12,11,11,2,51,2,41,2,43,2,44,2,45,2,75,2, -75,2,75,2,75,2,75,16,12,11,11,3,1,4,103,53,51,53,3,1,4, -103,53,51,54,3,1,4,103,53,51,55,3,1,4,103,53,51,56,3,1,4, -103,53,51,57,2,74,2,74,2,74,2,74,2,74,98,8,126,8,125,8,124, -8,141,2,8,144,2,8,143,2,18,158,2,47,8,145,2,18,158,2,76,8, -145,2,100,8,126,8,125,8,124,8,141,2,8,144,2,8,143,2,16,4,11, -11,3,1,4,103,53,52,50,3,1,7,101,110,118,51,49,56,48,16,4,11, -11,2,70,3,1,7,101,110,118,51,49,56,49,18,158,97,10,2,40,2,66, -9,161,2,40,2,67,9,2,68,2,69,8,148,2,18,158,95,10,2,64,2, -65,8,148,2,18,158,95,10,2,61,158,2,71,2,62,8,148,2,18,158,95, -10,2,72,94,2,73,2,63,8,148,2,18,16,2,95,2,42,93,8,139,43, -16,4,11,11,2,53,3,1,7,101,110,118,51,49,56,53,95,9,8,139,43, -2,33,96,93,8,191,42,16,4,11,11,3,1,8,119,115,116,109,112,53,52, -48,3,1,7,101,110,118,51,49,55,50,16,4,11,11,3,1,4,103,53,52, -49,3,1,7,101,110,118,51,49,57,52,16,4,11,11,2,77,3,1,7,101, -110,118,51,49,57,53,18,16,2,158,95,10,94,2,70,2,42,2,42,8,154, -2,95,9,8,191,42,2,30,16,4,11,11,2,49,3,1,7,101,110,118,51, -49,57,57,18,97,2,47,8,126,8,125,8,124,8,156,2,98,8,126,8,125, -8,124,8,156,2,16,12,11,11,3,1,4,103,53,53,50,3,1,4,103,53, -53,51,3,1,4,103,53,53,52,3,1,4,103,53,53,53,3,1,4,103,53, -53,54,2,83,2,83,2,83,2,83,2,83,16,12,11,11,2,51,2,41,2, -43,2,44,2,45,2,84,2,84,2,84,2,84,2,84,18,158,161,10,2,15, -2,80,2,81,2,82,8,158,2,18,158,95,10,93,2,78,2,79,8,158,2, -18,16,2,95,2,42,93,8,164,43,16,4,11,11,2,53,3,1,7,101,110, -118,51,50,50,52,95,9,8,164,43,2,33,30,2,3,2,4,2,16,12,11, -11,2,51,2,94,67,107,101,121,119,111,114,100,2,97,2,98,2,100,2,100, -2,100,2,100,2,100,16,12,11,11,3,1,4,103,53,54,50,3,1,4,103, -53,54,51,3,1,4,103,53,54,52,3,1,4,103,53,54,53,3,1,4,103, -53,54,54,2,99,2,99,2,99,2,99,2,99,16,4,11,11,2,49,3,1, -7,101,110,118,51,50,50,57,98,8,126,8,125,8,124,8,165,2,8,164,2, -8,163,2,18,158,2,76,8,166,2,18,158,2,47,8,166,2,18,158,2,76, -8,166,2,100,8,126,8,125,8,124,8,165,2,8,164,2,8,163,2,16,4, -11,11,3,1,4,103,53,54,57,3,1,7,101,110,118,51,50,54,53,16,4, -11,11,2,96,3,1,7,101,110,118,51,50,54,54,18,158,96,10,2,91,93, -2,92,163,2,93,2,88,10,2,92,2,89,2,95,2,90,8,170,2,18,158, -95,10,158,2,85,2,86,95,2,28,2,92,2,87,8,170,2,18,16,2,95, -2,42,93,8,131,44,16,4,11,11,2,53,3,1,7,101,110,118,51,50,55, -48,95,9,8,131,44,2,33,96,93,8,186,43,16,4,11,11,3,1,8,119, -115,116,109,112,53,54,55,3,1,7,101,110,118,51,50,53,56,16,4,11,11, -3,1,4,103,53,54,56,3,1,7,101,110,118,51,50,55,53,16,4,11,11, -2,77,3,1,7,101,110,118,51,50,55,54,18,16,2,158,95,10,2,96,2, -42,8,174,2,95,9,8,186,43,2,30,98,8,126,8,125,8,124,16,4,11, -11,2,92,3,1,7,101,110,118,51,50,56,48,16,10,11,11,3,1,4,103, -53,55,54,3,1,4,103,53,55,55,3,1,4,103,53,55,56,3,1,4,103, -53,55,57,2,107,2,107,2,107,2,107,16,10,11,11,2,51,2,94,2,97, -2,98,2,108,2,108,2,108,2,108,18,158,2,76,8,176,2,18,158,95,10, -2,106,95,2,91,93,2,92,163,2,93,2,103,10,2,92,2,104,2,95,2, -105,8,176,2,18,158,95,10,2,101,95,2,28,2,92,2,102,8,176,2,18, -16,2,95,2,42,93,8,155,44,16,4,11,11,2,53,3,1,7,101,110,118, -51,51,48,52,95,9,8,155,44,2,33,159,34,20,99,159,34,16,1,20,24, -65,98,101,103,105,110,16,0,83,158,40,20,96,114,76,35,37,115,116,120,99, -97,115,101,45,115,99,104,101,109,101,2,1,10,10,10,34,80,158,34,34,20, -99,159,34,16,2,30,2,1,2,2,193,30,2,3,2,4,2,16,0,11,11, -16,0,34,11,16,26,2,2,2,5,2,6,2,7,2,8,2,9,2,10,2, -11,2,12,2,13,2,14,2,15,2,16,2,17,2,18,2,19,2,20,2,21, -2,22,2,23,2,24,2,25,2,26,2,27,2,28,2,29,16,26,11,2,30, -2,31,2,32,66,35,37,99,111,110,100,2,32,2,32,2,32,11,11,2,30, -11,2,32,11,2,32,11,2,33,2,34,2,31,2,34,11,2,34,2,34,2, -34,2,31,2,34,16,26,2,2,2,5,2,6,2,7,2,8,2,9,2,10, -2,11,2,12,2,13,2,14,2,15,2,16,2,17,2,18,2,19,2,20,2, -21,2,22,2,23,2,24,2,25,2,26,2,27,2,28,2,29,36,8,26,98, -16,5,93,2,12,87,94,83,158,34,16,2,89,162,35,35,41,9,223,0,251, -80,158,38,46,20,15,159,38,36,47,21,94,2,35,2,36,248,22,58,198,248, -22,84,198,80,159,34,52,35,89,162,34,35,50,9,223,0,27,249,22,152,3, -20,15,159,37,34,47,196,27,28,248,80,158,37,34,194,249,80,158,38,35,248, -80,158,39,36,196,27,248,80,158,40,37,197,28,248,80,158,40,34,193,249,80, -158,41,38,27,248,80,158,43,36,196,28,248,80,158,43,39,193,248,22,8,89, -162,34,35,41,9,224,9,1,27,249,22,2,89,162,34,35,46,9,224,4,5, -249,80,158,37,40,28,248,80,158,38,34,197,249,80,158,39,38,27,248,80,158, -41,36,200,28,248,80,158,41,39,193,248,22,65,248,80,158,42,41,194,11,27, -248,80,158,41,37,200,28,248,80,158,41,34,193,249,80,158,42,35,248,80,158, -43,36,195,248,80,158,43,42,248,80,158,44,37,196,11,11,194,248,80,158,39, -41,196,28,248,22,63,193,21,94,9,9,248,80,158,37,43,193,11,27,248,80, -158,43,37,196,28,248,80,158,43,34,193,249,80,158,44,35,248,80,158,45,36, -195,27,248,80,158,46,37,196,28,248,80,158,46,39,193,248,80,158,46,41,193, -11,11,11,11,28,192,27,248,22,58,194,27,248,22,84,195,27,248,22,93,196, -27,248,22,96,197,27,248,22,95,198,249,80,158,43,44,202,27,251,22,67,200, -202,201,199,250,80,158,47,45,89,162,34,34,45,9,224,13,3,252,80,158,40, -46,20,15,159,40,35,47,21,95,2,37,2,38,2,39,250,22,2,80,159,43, -52,35,248,22,84,201,248,22,93,201,248,22,58,198,248,22,94,198,21,98,2, -40,94,94,94,2,41,2,42,2,43,2,42,9,2,44,2,45,2,42,20,15, -159,47,37,47,250,22,176,8,11,2,46,196,34,20,99,159,35,16,13,2,110, -2,111,2,112,2,113,2,114,2,115,2,116,2,117,2,118,2,119,2,120,2, -121,2,122,16,4,33,127,33,129,2,33,130,2,33,131,2,11,16,5,93,2, -13,87,94,83,158,34,16,2,89,162,35,35,41,9,223,0,251,80,158,38,46, -20,15,159,38,36,47,21,94,2,54,2,55,248,22,58,198,248,22,84,198,80, -159,34,52,35,89,162,34,35,50,9,223,0,27,249,22,152,3,20,15,159,37, -34,47,196,27,28,248,80,158,37,34,194,249,80,158,38,35,248,80,158,39,36, -196,27,248,80,158,40,37,197,28,248,80,158,40,34,193,249,80,158,41,38,27, -248,80,158,43,36,196,28,248,80,158,43,39,193,248,22,8,89,162,34,35,41, -9,224,9,1,27,249,22,2,89,162,34,35,46,9,224,4,5,249,80,158,37, -40,28,248,80,158,38,34,197,249,80,158,39,35,248,80,158,40,36,199,27,248, -80,158,41,37,200,28,248,80,158,41,34,193,249,80,158,42,35,248,80,158,43, -36,195,248,80,158,43,41,248,80,158,44,37,196,11,11,194,248,80,158,39,42, -196,28,248,22,63,193,21,94,9,9,248,80,158,37,43,193,11,27,248,80,158, -43,37,196,28,248,80,158,43,34,193,249,80,158,44,35,248,80,158,45,36,195, -27,248,80,158,46,37,196,28,248,80,158,46,39,193,248,80,158,46,42,193,11, -11,11,11,28,192,27,248,22,58,194,27,248,22,84,195,27,248,22,93,196,27, -248,22,96,197,27,248,22,95,198,249,80,158,43,44,202,27,251,22,67,200,202, -201,199,250,80,158,47,45,89,162,34,34,45,9,224,13,3,252,80,158,40,46, -20,15,159,40,35,47,21,95,2,56,2,57,2,58,250,22,2,80,159,43,52, -35,248,22,84,201,248,22,93,201,248,22,58,198,248,22,94,198,21,98,2,40, -94,94,93,2,41,2,43,2,42,9,2,44,2,45,2,42,20,15,159,47,37, -47,250,22,176,8,11,2,46,196,34,20,99,159,35,16,13,2,110,2,111,2, -112,2,113,2,114,2,115,2,116,2,118,2,117,2,119,2,120,2,121,2,122, -16,4,33,133,2,33,135,2,33,136,2,33,137,2,11,16,5,93,2,15,87, -96,83,158,34,16,2,89,162,35,35,43,9,223,0,251,80,158,38,49,20,15, -159,38,39,51,21,94,2,61,2,62,248,22,58,198,249,22,2,80,159,40,8, -28,35,248,22,84,200,80,159,34,8,29,35,83,158,34,16,2,89,162,35,35, -40,9,223,0,250,80,158,37,49,20,15,159,37,40,51,21,93,2,63,248,22, -58,197,80,159,34,8,28,35,83,158,34,16,2,89,162,35,35,41,9,223,0, -251,80,158,38,49,20,15,159,38,38,51,21,94,2,64,2,65,248,22,58,198, -248,22,84,198,80,159,34,8,27,35,89,162,34,35,53,9,223,0,27,249,22, -152,3,20,15,159,37,34,51,196,27,28,248,80,158,37,34,194,249,80,158,38, +3,106,3,113,3,120,3,127,3,134,3,144,3,152,3,162,3,169,3,176,3, +183,3,190,3,197,3,220,3,230,3,240,3,249,3,7,4,19,4,31,4,43, +4,57,4,71,4,89,4,103,4,119,4,134,4,147,4,173,4,203,4,219,4, +225,4,1,5,61,5,77,5,163,5,179,5,190,5,223,5,239,5,255,5,85, +6,101,6,113,6,146,6,178,6,194,6,215,6,231,6,247,6,15,7,64,7, +83,7,90,7,97,7,153,7,175,7,186,7,200,7,214,7,247,7,58,8,81, +8,97,8,113,8,199,8,214,8,226,8,3,9,9,9,25,9,86,9,93,9, +100,9,107,9,205,9,231,9,250,9,27,10,94,10,114,10,200,10,207,10,236, +10,252,10,29,11,0,0,208,25,0,0,29,11,11,1,26,99,104,101,99,107, +45,100,117,112,108,105,99,97,116,101,45,105,100,101,110,116,105,102,105,101,114, +65,35,37,115,116,120,71,105,100,101,110,116,105,102,105,101,114,63,1,20,103, +101,110,101,114,97,116,101,45,116,101,109,112,111,114,97,114,105,101,115,66,115, +121,110,116,97,120,73,100,101,102,105,110,101,45,115,116,114,117,99,116,63,108, +101,116,72,115,121,110,116,97,120,45,99,97,115,101,42,70,113,117,97,115,105, +113,117,111,116,101,66,108,101,116,114,101,99,64,119,104,101,110,75,108,101,116, +114,101,99,45,115,121,110,116,97,120,101,115,67,45,100,101,102,105,110,101,66, +108,101,116,47,101,99,73,108,101,116,114,101,99,45,115,121,110,116,97,120,70, +115,121,110,116,97,120,47,108,111,99,72,108,101,116,45,115,121,110,116,97,120, +101,115,64,99,111,110,100,62,111,114,70,108,101,116,45,115,121,110,116,97,120, +64,108,101,116,42,74,45,100,101,102,105,110,101,45,115,121,110,116,97,120,71, +119,105,116,104,45,115,121,110,116,97,120,72,115,121,110,116,97,120,45,114,117, +108,101,115,63,97,110,100,66,117,110,108,101,115,115,75,115,121,110,116,97,120, +45,105,100,45,114,117,108,101,115,71,115,121,110,116,97,120,45,99,97,115,101, +70,35,37,119,105,116,104,45,115,116,120,69,35,37,115,116,120,99,97,115,101, +74,35,37,100,101,102,105,110,101,45,101,116,45,97,108,71,35,37,113,113,45, +97,110,100,45,111,114,68,35,37,115,116,120,108,111,99,3,1,4,103,53,50, +49,3,1,4,103,53,50,48,3,1,4,103,53,50,52,3,1,4,103,53,50, +51,3,1,4,103,53,50,50,1,22,108,101,116,114,101,99,45,115,121,110,116, +97,120,101,115,43,118,97,108,117,101,115,62,105,100,63,46,46,46,64,101,120, +112,114,65,98,111,100,121,49,64,98,111,100,121,6,10,10,98,97,100,32,115, +121,110,116,97,120,64,104,101,114,101,74,35,37,115,109,97,108,108,45,115,99, +104,101,109,101,63,115,116,120,3,1,7,101,110,118,51,48,57,56,61,95,3, +1,7,101,110,118,51,48,57,57,61,114,3,1,4,103,53,51,48,3,1,4, +103,53,51,49,3,1,4,103,53,51,52,3,1,4,103,53,51,51,3,1,4, +103,53,51,50,3,1,7,101,110,118,51,49,50,56,3,1,7,101,110,118,51, +49,50,57,3,1,4,103,53,52,55,3,1,4,103,53,52,54,3,1,4,103, +53,52,53,3,1,4,103,53,52,52,3,1,4,103,53,52,51,3,1,4,103, +53,53,49,3,1,4,103,53,53,48,3,1,4,103,53,52,57,3,1,4,103, +53,52,56,63,116,109,112,66,118,97,108,117,101,115,1,23,109,97,107,101,45, +114,101,110,97,109,101,45,116,114,97,110,115,102,111,114,109,101,114,72,113,117, +111,116,101,45,115,121,110,116,97,120,3,1,7,101,110,118,51,49,53,57,3, +1,7,101,110,118,51,49,54,48,64,100,101,115,116,65,95,101,108,115,101,3, +1,4,103,53,53,55,3,1,4,103,53,53,56,3,1,4,103,53,54,49,3, +1,4,103,53,54,48,3,1,4,103,53,53,57,3,1,7,101,110,118,51,50, +49,49,3,1,7,101,110,118,51,50,49,50,3,1,4,103,53,55,49,3,1, +4,103,53,55,48,3,1,4,103,53,55,50,3,1,4,103,53,55,53,3,1, +4,103,53,55,52,3,1,4,103,53,55,51,66,108,97,109,98,100,97,61,120, +73,115,121,110,116,97,120,45,99,97,115,101,42,42,61,107,79,109,111,100,117, +108,101,45,105,100,101,110,116,105,102,105,101,114,61,63,65,100,117,109,109,121, +67,112,97,116,116,101,114,110,68,116,101,109,112,108,97,116,101,3,1,4,103, +53,54,50,3,1,4,103,53,54,51,3,1,4,103,53,54,52,3,1,4,103, +53,54,53,3,1,4,103,53,54,54,3,1,7,101,110,118,51,50,52,53,67, +107,101,121,119,111,114,100,3,1,7,101,110,118,51,50,52,54,3,1,4,103, +53,56,49,3,1,4,103,53,56,48,3,1,4,103,53,56,52,3,1,4,103, +53,56,51,3,1,4,103,53,56,50,1,21,109,97,107,101,45,115,101,116,33, +45,116,114,97,110,115,102,111,114,109,101,114,3,1,7,101,110,118,51,50,57, +51,3,1,7,101,110,118,51,50,57,52,68,35,37,107,101,114,110,101,108,30, +2,3,69,115,116,120,45,112,97,105,114,63,11,30,2,3,67,99,111,110,115, +47,35,102,1,30,2,3,67,115,116,120,45,99,97,114,5,30,2,3,67,115, +116,120,45,99,100,114,6,30,2,3,69,97,112,112,101,110,100,47,35,102,0, +30,2,3,69,115,116,120,45,108,105,115,116,63,8,30,2,3,73,115,116,120, +45,99,104,101,99,107,47,101,115,99,7,30,2,3,69,115,116,120,45,62,108, +105,115,116,4,30,2,3,71,115,116,120,45,110,117,108,108,47,35,102,9,30, +2,3,70,115,116,120,45,114,111,116,97,116,101,12,30,2,34,68,114,101,108, +111,99,97,116,101,0,30,2,31,1,20,99,97,116,99,104,45,101,108,108,105, +112,115,105,115,45,101,114,114,111,114,1,30,2,31,1,24,97,112,112,108,121, +45,112,97,116,116,101,114,110,45,115,117,98,115,116,105,116,117,116,101,0,16, +4,11,11,2,49,3,1,7,101,110,118,51,48,56,53,95,8,193,11,16,0, +97,10,35,11,97,159,2,34,9,11,159,2,30,9,11,159,2,31,9,11,159, +2,3,9,11,159,2,48,9,11,16,0,97,10,34,11,97,159,2,34,9,11, +159,2,30,9,11,159,2,31,9,11,159,2,3,9,11,159,2,48,9,11,16, +14,2,18,2,1,2,2,2,1,2,13,2,1,2,21,2,1,2,28,2,1, +2,16,2,1,2,25,2,1,18,97,2,47,8,132,2,8,131,2,8,130,2, +8,129,2,98,8,132,2,8,131,2,8,130,2,8,129,2,16,12,11,11,3, +1,4,103,53,49,53,3,1,4,103,53,49,54,3,1,4,103,53,49,55,3, +1,4,103,53,49,56,3,1,4,103,53,49,57,2,50,2,50,2,50,2,50, +2,50,16,12,11,11,2,51,2,41,2,43,2,44,2,45,2,52,2,52,2, +52,2,52,2,52,18,158,162,10,2,40,2,37,9,2,38,2,39,8,134,2, +18,158,95,10,2,35,2,36,8,134,2,18,16,2,95,2,42,93,8,152,42, +16,4,11,11,2,53,3,1,7,101,110,118,51,49,49,49,95,9,8,152,42, +2,31,16,4,11,11,2,49,3,1,7,101,110,118,51,49,49,54,18,97,2, +47,8,132,2,8,131,2,8,130,2,8,138,2,98,8,132,2,8,131,2,8, +130,2,8,138,2,16,12,11,11,3,1,4,103,53,50,53,3,1,4,103,53, +50,54,3,1,4,103,53,50,55,3,1,4,103,53,50,56,3,1,4,103,53, +50,57,2,59,2,59,2,59,2,59,2,59,16,12,11,11,2,51,2,41,2, +43,2,44,2,45,2,60,2,60,2,60,2,60,2,60,18,158,162,10,2,40, +2,56,9,2,57,2,58,8,140,2,18,158,95,10,93,2,54,2,55,8,140, +2,18,16,2,95,2,42,93,8,172,42,16,4,11,11,2,53,3,1,7,101, +110,118,51,49,52,49,95,9,8,172,42,2,31,30,2,31,1,26,100,97,116, +117,109,45,62,115,121,110,116,97,120,45,111,98,106,101,99,116,47,115,104,97, +112,101,2,30,2,3,71,115,116,120,45,114,111,116,97,116,101,42,13,30,2, +30,76,119,105,116,104,45,115,121,110,116,97,120,45,102,97,105,108,3,16,4, +11,11,2,49,3,1,7,101,110,118,51,49,52,54,18,97,2,47,8,132,2, +8,131,2,8,130,2,8,147,2,16,12,11,11,2,51,2,41,2,43,2,44, +2,45,2,75,2,75,2,75,2,75,2,75,16,12,11,11,3,1,4,103,53, +51,53,3,1,4,103,53,51,54,3,1,4,103,53,51,55,3,1,4,103,53, +51,56,3,1,4,103,53,51,57,2,74,2,74,2,74,2,74,2,74,98,8, +132,2,8,131,2,8,130,2,8,147,2,8,150,2,8,149,2,18,158,2,47, +8,151,2,18,158,2,76,8,151,2,100,8,132,2,8,131,2,8,130,2,8, +147,2,8,150,2,8,149,2,16,4,11,11,3,1,4,103,53,52,50,3,1, +7,101,110,118,51,49,56,48,16,4,11,11,2,70,3,1,7,101,110,118,51, +49,56,49,18,158,97,10,2,40,2,66,9,161,2,40,2,67,9,2,68,2, +69,8,154,2,18,158,95,10,2,64,2,65,8,154,2,18,158,95,10,2,61, +158,2,71,2,62,8,154,2,18,158,95,10,2,72,94,2,73,2,63,8,154, +2,18,16,2,95,2,42,93,8,139,43,16,4,11,11,2,53,3,1,7,101, +110,118,51,49,56,53,95,9,8,139,43,2,31,96,93,8,191,42,16,4,11, +11,3,1,8,119,115,116,109,112,53,52,48,3,1,7,101,110,118,51,49,55, +50,16,4,11,11,3,1,4,103,53,52,49,3,1,7,101,110,118,51,49,57, +52,16,4,11,11,2,77,3,1,7,101,110,118,51,49,57,53,18,16,2,158, +95,10,94,2,70,2,42,2,42,8,160,2,95,9,8,191,42,2,30,16,4, +11,11,2,49,3,1,7,101,110,118,51,49,57,57,18,97,2,47,8,132,2, +8,131,2,8,130,2,8,162,2,98,8,132,2,8,131,2,8,130,2,8,162, +2,16,12,11,11,3,1,4,103,53,53,50,3,1,4,103,53,53,51,3,1, +4,103,53,53,52,3,1,4,103,53,53,53,3,1,4,103,53,53,54,2,83, +2,83,2,83,2,83,2,83,16,12,11,11,2,51,2,41,2,43,2,44,2, +45,2,84,2,84,2,84,2,84,2,84,18,158,161,10,2,18,2,80,2,81, +2,82,8,164,2,18,158,95,10,93,2,78,2,79,8,164,2,18,16,2,95, +2,42,93,8,164,43,16,4,11,11,2,53,3,1,7,101,110,118,51,50,50, +52,95,9,8,164,43,2,31,30,2,3,2,4,2,16,4,11,11,2,49,3, +1,7,101,110,118,51,50,50,57,98,8,132,2,8,131,2,8,130,2,8,169, +2,16,12,11,11,2,99,2,100,2,101,2,102,2,103,2,104,2,104,2,104, +2,104,2,104,16,12,11,11,2,51,2,94,2,105,2,97,2,98,2,106,2, +106,2,106,2,106,2,106,18,158,2,76,8,170,2,18,158,2,47,8,170,2, +18,158,2,76,8,170,2,100,8,132,2,8,131,2,8,130,2,8,169,2,16, +12,11,11,2,99,2,100,2,101,2,102,2,103,2,104,2,104,2,104,2,104, +2,104,16,12,11,11,2,51,2,94,2,105,2,97,2,98,2,106,2,106,2, +106,2,106,2,106,16,4,11,11,3,1,4,103,53,54,57,3,1,7,101,110, +118,51,50,54,53,16,4,11,11,2,96,3,1,7,101,110,118,51,50,54,54, +18,158,96,10,2,91,93,2,92,163,2,93,2,88,10,2,92,2,89,2,95, +2,90,8,174,2,18,158,95,10,158,2,85,2,86,95,2,17,2,92,2,87, +8,174,2,18,16,2,95,2,42,93,8,131,44,16,4,11,11,2,53,3,1, +7,101,110,118,51,50,55,48,95,9,8,131,44,2,31,96,93,8,186,43,16, +4,11,11,3,1,8,119,115,116,109,112,53,54,55,3,1,7,101,110,118,51, +50,53,56,16,4,11,11,3,1,4,103,53,54,56,3,1,7,101,110,118,51, +50,55,53,16,4,11,11,2,77,3,1,7,101,110,118,51,50,55,54,18,16, +2,158,95,10,2,96,2,42,8,178,2,95,9,8,186,43,2,30,98,8,132, +2,8,131,2,8,130,2,16,4,11,11,2,92,3,1,7,101,110,118,51,50, +56,48,16,10,11,11,3,1,4,103,53,55,54,3,1,4,103,53,55,55,3, +1,4,103,53,55,56,3,1,4,103,53,55,57,2,113,2,113,2,113,2,113, +16,10,11,11,2,51,2,94,2,97,2,98,2,114,2,114,2,114,2,114,18, +158,2,76,8,180,2,18,158,95,10,2,112,95,2,91,93,2,92,163,2,93, +2,109,10,2,92,2,110,2,95,2,111,8,180,2,18,158,95,10,2,107,95, +2,17,2,92,2,108,8,180,2,18,16,2,95,2,42,93,8,155,44,16,4, +11,11,2,53,3,1,7,101,110,118,51,51,48,52,95,9,8,155,44,2,31, +159,34,20,100,159,34,16,1,20,24,65,98,101,103,105,110,16,0,83,158,40, +20,97,114,76,35,37,115,116,120,99,97,115,101,45,115,99,104,101,109,101,2, +1,10,10,10,34,80,158,34,34,20,100,159,34,16,2,30,2,1,2,2,193, +30,2,3,2,4,2,16,0,11,11,16,0,34,11,16,26,2,2,2,5,2, +6,2,7,2,8,2,9,2,10,2,11,2,12,2,13,2,14,2,15,2,16, +2,17,2,18,2,19,2,20,2,21,2,22,2,23,2,24,2,25,2,26,2, +27,2,28,2,29,16,26,11,2,30,2,31,2,32,2,33,2,34,2,33,2, +33,2,32,11,2,32,2,32,11,2,34,11,66,35,37,99,111,110,100,2,33, +11,2,33,2,32,2,30,11,2,33,2,32,11,2,34,16,26,2,2,2,5, +2,6,2,7,2,8,2,9,2,10,2,11,2,12,2,13,2,14,2,15,2, +16,2,17,2,18,2,19,2,20,2,21,2,22,2,23,2,24,2,25,2,26, +2,27,2,28,2,29,36,8,26,98,16,5,93,2,13,87,94,83,158,34,16, +2,89,162,35,35,46,9,223,0,251,80,158,38,46,20,15,159,38,36,47,21, +94,2,35,2,36,248,22,58,198,248,22,84,198,80,159,34,52,35,89,162,34, +35,55,9,223,0,27,249,22,152,3,20,15,159,37,34,47,196,27,28,248,80, +158,37,34,194,249,80,158,38,35,248,80,158,39,36,196,27,248,80,158,40,37, +197,28,248,80,158,40,34,193,249,80,158,41,38,27,248,80,158,43,36,196,28, +248,80,158,43,39,193,248,22,9,89,162,34,35,46,9,224,9,1,27,249,22, +2,89,162,34,35,51,9,224,4,5,249,80,158,37,40,28,248,80,158,38,34, +197,249,80,158,39,38,27,248,80,158,41,36,200,28,248,80,158,41,39,193,248, +22,65,248,80,158,42,41,194,11,27,248,80,158,41,37,200,28,248,80,158,41, +34,193,249,80,158,42,35,248,80,158,43,36,195,248,80,158,43,42,248,80,158, +44,37,196,11,11,194,248,80,158,39,41,196,28,248,22,63,193,21,94,9,9, +248,80,158,37,43,193,11,27,248,80,158,43,37,196,28,248,80,158,43,34,193, +249,80,158,44,35,248,80,158,45,36,195,27,248,80,158,46,37,196,28,248,80, +158,46,39,193,248,80,158,46,41,193,11,11,11,11,28,192,27,248,22,58,194, +27,248,22,84,195,27,248,22,93,196,27,248,22,96,197,27,248,22,95,198,249, +80,158,43,44,202,27,251,22,67,199,201,200,202,250,80,158,47,45,89,162,34, +34,50,9,224,13,3,252,80,158,40,46,20,15,159,40,35,47,21,95,2,37, +2,38,2,39,250,22,2,80,159,43,52,35,248,22,94,201,248,22,84,201,248, +22,93,198,248,22,58,198,21,98,2,40,94,94,94,2,41,2,42,2,43,2, +42,9,2,44,2,45,2,42,20,15,159,47,37,47,250,22,177,8,11,2,46, +196,34,20,100,159,35,16,13,2,116,2,117,2,118,2,119,2,120,2,121,2, +122,2,123,2,124,2,125,2,126,2,127,2,128,2,16,4,33,133,2,33,135, +2,33,136,2,33,137,2,11,16,5,93,2,16,87,94,83,158,34,16,2,89, +162,35,35,46,9,223,0,251,80,158,38,46,20,15,159,38,36,47,21,94,2, +54,2,55,248,22,58,198,248,22,84,198,80,159,34,52,35,89,162,34,35,55, +9,223,0,27,249,22,152,3,20,15,159,37,34,47,196,27,28,248,80,158,37, +34,194,249,80,158,38,35,248,80,158,39,36,196,27,248,80,158,40,37,197,28, +248,80,158,40,34,193,249,80,158,41,38,27,248,80,158,43,36,196,28,248,80, +158,43,39,193,248,22,9,89,162,34,35,46,9,224,9,1,27,249,22,2,89, +162,34,35,51,9,224,4,5,249,80,158,37,40,28,248,80,158,38,34,197,249, +80,158,39,35,248,80,158,40,36,199,27,248,80,158,41,37,200,28,248,80,158, +41,34,193,249,80,158,42,35,248,80,158,43,36,195,248,80,158,43,41,248,80, +158,44,37,196,11,11,194,248,80,158,39,42,196,28,248,22,63,193,21,94,9, +9,248,80,158,37,43,193,11,27,248,80,158,43,37,196,28,248,80,158,43,34, +193,249,80,158,44,35,248,80,158,45,36,195,27,248,80,158,46,37,196,28,248, +80,158,46,39,193,248,80,158,46,42,193,11,11,11,11,28,192,27,248,22,58, +194,27,248,22,84,195,27,248,22,93,196,27,248,22,96,197,27,248,22,95,198, +249,80,158,43,44,202,27,251,22,67,199,201,200,202,250,80,158,47,45,89,162, +34,34,50,9,224,13,3,252,80,158,40,46,20,15,159,40,35,47,21,95,2, +56,2,57,2,58,250,22,2,80,159,43,52,35,248,22,94,201,248,22,84,201, +248,22,93,198,248,22,58,198,21,98,2,40,94,94,93,2,41,2,43,2,42, +9,2,44,2,45,2,42,20,15,159,47,37,47,250,22,177,8,11,2,46,196, +34,20,100,159,35,16,13,2,116,2,117,2,118,2,119,2,120,2,121,2,122, +2,124,2,123,2,125,2,126,2,127,2,128,2,16,4,33,139,2,33,141,2, +33,142,2,33,143,2,11,16,5,93,2,18,87,96,83,158,34,16,2,89,162, +35,35,48,9,223,0,251,80,158,38,49,20,15,159,38,39,51,21,94,2,61, +2,62,248,22,58,198,249,22,2,80,159,40,8,28,35,248,22,84,200,80,159, +34,8,29,35,83,158,34,16,2,89,162,35,35,45,9,223,0,250,80,158,37, +49,20,15,159,37,40,51,21,93,2,63,248,22,58,197,80,159,34,8,28,35, +83,158,34,16,2,89,162,35,35,46,9,223,0,251,80,158,38,49,20,15,159, +38,38,51,21,94,2,64,2,65,248,22,58,198,248,22,84,198,80,159,34,8, +27,35,89,162,34,35,58,9,223,0,27,249,22,152,3,20,15,159,37,34,51, +196,27,28,248,80,158,37,34,194,249,80,158,38,35,248,80,158,39,36,196,27, +248,80,158,40,37,197,28,248,80,158,40,34,193,249,80,158,41,38,27,248,80, +158,43,36,196,28,248,80,158,43,39,193,248,22,9,89,162,34,35,46,9,224, +9,1,27,249,22,2,89,162,34,35,51,9,224,4,5,249,80,158,37,40,28, +248,80,158,38,34,197,249,80,158,39,38,27,248,80,158,41,36,200,28,248,80, +158,41,39,193,248,22,65,248,80,158,42,41,194,11,27,248,80,158,41,37,200, +28,248,80,158,41,34,193,249,80,158,42,35,248,80,158,43,36,195,248,80,158, +43,42,248,80,158,44,37,196,11,11,194,248,80,158,39,41,196,28,248,22,63, +193,21,94,9,9,248,80,158,37,43,193,11,27,248,80,158,43,37,196,28,248, +80,158,43,34,193,249,80,158,44,35,248,80,158,45,36,195,27,248,80,158,46, +37,196,28,248,80,158,46,39,193,248,80,158,46,41,193,11,11,11,11,28,192, +27,248,22,58,194,27,248,22,84,195,27,248,22,93,196,27,248,22,96,197,27, +248,22,95,198,27,249,22,152,3,20,15,159,44,35,51,249,22,2,80,158,46, +44,248,22,159,3,249,80,158,49,45,20,15,159,49,36,51,203,27,28,248,80, +158,44,39,194,248,22,9,89,162,34,35,46,9,224,10,2,27,249,22,2,89, +162,34,35,46,9,224,4,5,249,80,158,37,40,28,248,80,158,38,39,197,248, +22,65,248,80,158,39,41,198,11,194,248,80,158,39,41,196,28,248,22,63,193, +9,248,80,158,37,46,193,11,28,192,249,80,158,45,47,204,27,252,22,67,203, +204,200,202,205,250,80,158,49,48,89,162,34,34,51,9,224,15,3,253,80,158, +41,49,20,15,159,41,37,51,21,96,2,66,2,67,2,68,2,69,250,22,2, +80,159,44,8,27,35,248,22,93,202,248,22,84,202,250,22,2,80,159,44,8, +29,35,248,22,95,202,248,22,93,202,248,22,58,199,248,22,96,199,21,96,2, +40,94,94,94,2,70,2,42,2,43,2,42,9,98,2,40,94,94,94,2,41, +2,42,95,2,71,94,2,72,94,2,73,2,70,2,42,2,42,9,2,44,2, +45,2,42,20,15,159,49,41,51,248,80,158,44,50,20,15,159,44,42,51,250, +22,177,8,11,2,46,196,34,20,100,159,37,16,17,2,116,2,117,2,118,2, +119,2,120,2,121,2,122,2,123,2,124,2,125,30,2,30,2,5,0,2,144, +2,2,145,2,2,126,2,127,2,128,2,2,146,2,16,9,33,148,2,33,152, +2,33,153,2,33,155,2,33,156,2,33,157,2,33,158,2,33,159,2,33,161, +2,11,16,5,93,2,21,87,94,83,158,34,16,2,89,162,35,35,46,9,223, +0,251,80,158,38,46,20,15,159,38,36,47,21,94,2,78,2,79,248,22,58, +198,248,22,84,198,80,159,34,52,35,89,162,34,35,55,9,223,0,27,249,22, +152,3,20,15,159,37,34,47,196,27,28,248,80,158,37,34,194,249,80,158,38, 35,248,80,158,39,36,196,27,248,80,158,40,37,197,28,248,80,158,40,34,193, 249,80,158,41,38,27,248,80,158,43,36,196,28,248,80,158,43,39,193,248,22, -8,89,162,34,35,41,9,224,9,1,27,249,22,2,89,162,34,35,46,9,224, -4,5,249,80,158,37,40,28,248,80,158,38,34,197,249,80,158,39,38,27,248, -80,158,41,36,200,28,248,80,158,41,39,193,248,22,65,248,80,158,42,41,194, -11,27,248,80,158,41,37,200,28,248,80,158,41,34,193,249,80,158,42,35,248, -80,158,43,36,195,248,80,158,43,42,248,80,158,44,37,196,11,11,194,248,80, -158,39,41,196,28,248,22,63,193,21,94,9,9,248,80,158,37,43,193,11,27, -248,80,158,43,37,196,28,248,80,158,43,34,193,249,80,158,44,35,248,80,158, -45,36,195,27,248,80,158,46,37,196,28,248,80,158,46,39,193,248,80,158,46, -41,193,11,11,11,11,28,192,27,248,22,58,194,27,248,22,84,195,27,248,22, -93,196,27,248,22,96,197,27,248,22,95,198,27,249,22,152,3,20,15,159,44, -35,51,249,22,2,80,158,46,44,248,22,159,3,249,80,158,49,45,20,15,159, -49,36,51,203,27,28,248,80,158,44,39,194,248,22,8,89,162,34,35,41,9, -224,10,2,27,249,22,2,89,162,34,35,41,9,224,4,5,249,80,158,37,40, -28,248,80,158,38,39,197,248,22,65,248,80,158,39,41,198,11,194,248,80,158, -39,41,196,28,248,22,63,193,9,248,80,158,37,46,193,11,28,192,249,80,158, -45,47,204,27,252,22,67,203,200,205,204,202,250,80,158,49,48,89,162,34,34, -46,9,224,15,3,253,80,158,41,49,20,15,159,41,37,51,21,96,2,66,2, -67,2,68,2,69,250,22,2,80,159,44,8,27,35,248,22,84,202,248,22,96, -202,250,22,2,80,159,44,8,29,35,248,22,93,202,248,22,84,202,248,22,58, -199,248,22,95,199,21,96,2,40,94,94,94,2,70,2,42,2,43,2,42,9, -98,2,40,94,94,94,2,41,2,42,95,2,71,94,2,72,94,2,73,2,70, -2,42,2,42,9,2,44,2,45,2,42,20,15,159,49,41,51,248,80,158,44, -50,20,15,159,44,42,51,250,22,176,8,11,2,46,196,34,20,99,159,37,16, -17,2,110,2,111,2,112,2,113,2,114,2,115,2,116,2,117,2,118,2,119, -30,2,30,2,5,0,2,138,2,2,139,2,2,120,2,121,2,122,2,140,2, -16,9,33,142,2,33,146,2,33,147,2,33,149,2,33,150,2,33,151,2,33, -152,2,33,153,2,33,155,2,11,16,5,93,2,17,87,94,83,158,34,16,2, -89,162,35,35,41,9,223,0,251,80,158,38,46,20,15,159,38,36,47,21,94, -2,78,2,79,248,22,58,198,248,22,84,198,80,159,34,52,35,89,162,34,35, -50,9,223,0,27,249,22,152,3,20,15,159,37,34,47,196,27,28,248,80,158, -37,34,194,249,80,158,38,35,248,80,158,39,36,196,27,248,80,158,40,37,197, -28,248,80,158,40,34,193,249,80,158,41,38,27,248,80,158,43,36,196,28,248, -80,158,43,39,193,248,22,8,89,162,34,35,41,9,224,9,1,27,249,22,2, -89,162,34,35,46,9,224,4,5,249,80,158,37,40,28,248,80,158,38,34,197, -249,80,158,39,35,248,80,158,40,36,199,27,248,80,158,41,37,200,28,248,80, -158,41,34,193,249,80,158,42,35,248,80,158,43,36,195,248,80,158,43,41,248, -80,158,44,37,196,11,11,194,248,80,158,39,42,196,28,248,22,63,193,21,94, -9,9,248,80,158,37,43,193,11,27,248,80,158,43,37,196,28,248,80,158,43, -34,193,249,80,158,44,35,248,80,158,45,36,195,27,248,80,158,46,37,196,28, -248,80,158,46,39,193,248,80,158,46,42,193,11,11,11,11,28,192,27,248,22, -58,194,27,248,22,84,195,27,248,22,93,196,27,248,22,96,197,27,248,22,95, -198,249,80,158,43,44,202,27,251,22,67,200,202,201,199,250,80,158,47,45,89, -162,34,34,45,9,224,13,3,252,80,158,40,46,20,15,159,40,35,47,21,95, -2,80,2,81,2,82,250,22,2,80,159,43,52,35,248,22,84,201,248,22,93, -201,248,22,58,198,248,22,94,198,21,97,2,15,94,94,93,2,41,2,43,2, -42,2,44,2,45,2,42,20,15,159,47,37,47,250,22,176,8,11,2,46,196, -34,20,99,159,35,16,13,2,110,2,111,2,112,2,113,2,114,2,115,2,116, -2,118,2,117,2,119,2,120,2,121,2,122,16,4,33,157,2,33,159,2,33, -160,2,33,161,2,11,16,5,93,2,19,87,94,83,158,34,16,2,89,162,35, -35,42,9,223,0,252,80,158,39,48,20,15,159,39,38,50,21,95,2,85,2, -86,2,87,248,22,58,199,248,22,84,199,248,22,93,199,80,159,34,58,35,89, -162,34,35,52,9,223,0,27,28,248,80,158,36,34,195,249,80,158,37,35,248, -80,158,38,36,197,27,248,80,158,39,37,198,28,248,80,158,39,34,193,249,80, -158,40,38,27,248,80,158,42,36,196,28,248,80,158,42,39,193,248,22,65,248, -80,158,43,40,194,11,27,248,80,158,42,37,196,28,248,80,158,42,39,193,248, -22,8,89,162,34,35,41,9,224,8,1,27,249,22,2,89,162,34,35,49,9, -224,4,5,249,80,158,37,41,28,248,80,158,38,34,197,249,80,158,39,38,27, -248,80,158,41,36,200,28,248,80,158,41,34,193,249,80,158,42,35,248,80,158, -43,36,195,27,248,80,158,44,37,196,248,22,65,250,22,152,3,199,196,199,11, +9,89,162,34,35,46,9,224,9,1,27,249,22,2,89,162,34,35,51,9,224, +4,5,249,80,158,37,40,28,248,80,158,38,34,197,249,80,158,39,35,248,80, +158,40,36,199,27,248,80,158,41,37,200,28,248,80,158,41,34,193,249,80,158, +42,35,248,80,158,43,36,195,248,80,158,43,41,248,80,158,44,37,196,11,11, +194,248,80,158,39,42,196,28,248,22,63,193,21,94,9,9,248,80,158,37,43, +193,11,27,248,80,158,43,37,196,28,248,80,158,43,34,193,249,80,158,44,35, +248,80,158,45,36,195,27,248,80,158,46,37,196,28,248,80,158,46,39,193,248, +80,158,46,42,193,11,11,11,11,28,192,27,248,22,58,194,27,248,22,84,195, +27,248,22,93,196,27,248,22,96,197,27,248,22,95,198,249,80,158,43,44,202, +27,251,22,67,201,200,199,202,250,80,158,47,45,89,162,34,34,50,9,224,13, +3,252,80,158,40,46,20,15,159,40,35,47,21,95,2,80,2,81,2,82,250, +22,2,80,159,43,52,35,248,22,94,201,248,22,58,201,248,22,84,198,248,22, +93,198,21,97,2,18,94,94,93,2,41,2,43,2,42,2,44,2,45,2,42, +20,15,159,47,37,47,250,22,177,8,11,2,46,196,34,20,100,159,35,16,13, +2,116,2,117,2,118,2,119,2,120,2,121,2,122,2,124,2,123,2,125,2, +126,2,127,2,128,2,16,4,33,163,2,33,165,2,33,166,2,33,167,2,11, +16,5,93,2,25,87,94,83,158,34,16,2,89,162,35,35,47,9,223,0,252, +80,158,39,48,20,15,159,39,38,50,21,95,2,85,2,86,2,87,248,22,58, +199,248,22,84,199,248,22,93,199,80,159,34,58,35,89,162,34,35,57,9,223, +0,27,28,248,80,158,36,34,195,249,80,158,37,35,248,80,158,38,36,197,27, +248,80,158,39,37,198,28,248,80,158,39,34,193,249,80,158,40,38,27,248,80, +158,42,36,196,28,248,80,158,42,39,193,248,22,65,248,80,158,43,40,194,11, +27,248,80,158,42,37,196,28,248,80,158,42,39,193,248,22,9,89,162,34,35, +46,9,224,8,1,27,249,22,2,89,162,34,35,54,9,224,4,5,249,80,158, +37,41,28,248,80,158,38,34,197,249,80,158,39,38,27,248,80,158,41,36,200, +28,248,80,158,41,34,193,249,80,158,42,35,248,80,158,43,36,195,27,248,80, +158,44,37,196,248,22,65,250,22,152,3,199,196,199,11,27,248,80,158,41,37, +200,28,248,80,158,41,34,193,249,80,158,42,35,248,80,158,43,36,195,248,80, +158,43,42,248,80,158,44,37,196,11,11,194,248,80,158,39,40,196,28,248,22, +63,193,21,94,9,9,248,80,158,37,43,193,11,11,11,28,192,27,248,22,58, +194,27,248,22,84,195,27,248,22,93,196,27,248,22,96,197,27,248,22,95,198, +28,249,22,4,80,158,42,44,248,22,159,3,249,80,158,45,45,20,15,159,45, +34,50,200,27,249,22,152,3,20,15,159,43,35,50,249,22,2,89,162,8,36, +35,46,9,224,11,12,87,94,28,248,80,158,36,44,195,12,251,22,177,8,11, +6,59,59,112,97,116,116,101,114,110,32,109,117,115,116,32,115,116,97,114,116, +32,119,105,116,104,32,97,110,32,105,100,101,110,116,105,102,105,101,114,44,32, +102,111,117,110,100,32,115,111,109,101,116,104,105,110,103,32,101,108,115,101,196, +198,248,22,49,248,22,50,248,22,153,3,197,248,22,159,3,249,80,158,48,45, +20,15,159,48,36,50,202,27,28,248,80,158,43,39,194,248,80,158,43,40,194, +11,28,192,249,80,158,44,46,203,27,252,22,67,203,202,205,200,206,250,80,158, +48,47,89,162,34,34,51,9,224,14,3,252,80,158,40,48,20,15,159,40,37, +50,21,95,2,88,2,89,2,90,248,22,95,198,248,22,93,198,251,22,2,80, +159,44,58,35,248,22,96,202,248,22,58,202,248,22,84,202,21,95,2,91,93, +2,92,100,2,93,2,51,10,2,92,94,2,94,2,42,2,95,94,158,2,96, +2,97,95,2,17,2,92,2,98,2,42,20,15,159,48,39,50,248,80,158,43, +49,20,15,159,43,40,50,250,22,177,8,11,2,46,202,250,22,177,8,11,2, +46,197,34,20,100,159,35,16,16,2,116,2,117,2,118,2,119,2,120,2,121, +2,123,2,122,2,124,2,145,2,2,168,2,2,144,2,2,126,2,127,2,128, +2,2,146,2,16,7,33,171,2,33,172,2,33,173,2,33,175,2,33,176,2, +33,177,2,33,179,2,11,16,5,93,2,28,87,94,83,158,34,16,2,89,162, +35,35,46,9,223,0,251,80,158,38,48,20,15,159,38,36,49,21,94,2,107, +2,108,248,22,58,198,248,22,84,198,80,159,34,54,35,89,162,34,35,53,9, +223,0,27,28,248,80,158,36,34,195,249,80,158,37,35,248,80,158,38,36,197, +27,248,80,158,39,37,198,28,248,80,158,39,34,193,249,80,158,40,38,27,248, +80,158,42,36,196,28,248,80,158,42,39,193,248,22,65,248,80,158,43,40,194, +11,27,248,80,158,42,37,196,28,248,80,158,42,39,193,248,22,9,89,162,34, +35,46,9,224,8,1,27,249,22,2,89,162,34,35,51,9,224,4,5,249,80, +158,37,41,28,248,80,158,38,34,197,249,80,158,39,35,248,80,158,40,36,199, 27,248,80,158,41,37,200,28,248,80,158,41,34,193,249,80,158,42,35,248,80, 158,43,36,195,248,80,158,43,42,248,80,158,44,37,196,11,11,194,248,80,158, -39,40,196,28,248,22,63,193,21,94,9,9,248,80,158,37,43,193,11,11,11, -28,192,27,248,22,58,194,27,248,22,84,195,27,248,22,93,196,27,248,22,96, -197,27,248,22,95,198,28,249,22,4,80,158,42,44,248,22,159,3,249,80,158, -45,45,20,15,159,45,34,50,200,27,249,22,152,3,20,15,159,43,35,50,249, -22,2,89,162,8,36,35,41,9,224,11,12,87,94,28,248,80,158,36,44,195, -12,251,22,176,8,11,6,59,59,112,97,116,116,101,114,110,32,109,117,115,116, -32,115,116,97,114,116,32,119,105,116,104,32,97,110,32,105,100,101,110,116,105, -102,105,101,114,44,32,102,111,117,110,100,32,115,111,109,101,116,104,105,110,103, -32,101,108,115,101,196,198,248,22,49,248,22,50,248,22,153,3,197,248,22,159, -3,249,80,158,48,45,20,15,159,48,36,50,202,27,28,248,80,158,43,39,194, -248,80,158,43,40,194,11,28,192,249,80,158,44,46,203,27,252,22,67,202,205, -203,206,200,250,80,158,48,47,89,162,34,34,46,9,224,14,3,252,80,158,40, -48,20,15,159,40,37,50,21,95,2,88,2,89,2,90,248,22,96,198,248,22, -84,198,251,22,2,80,159,44,58,35,248,22,95,202,248,22,93,202,248,22,58, -202,21,95,2,91,93,2,92,100,2,93,2,51,10,2,92,94,2,94,2,42, -2,95,94,158,2,96,2,97,95,2,28,2,92,2,98,2,42,20,15,159,48, -39,50,248,80,158,43,49,20,15,159,43,40,50,250,22,176,8,11,2,46,202, -250,22,176,8,11,2,46,197,34,20,99,159,35,16,16,2,110,2,111,2,112, -2,113,2,114,2,115,2,117,2,116,2,118,2,139,2,2,162,2,2,138,2, -2,120,2,121,2,122,2,140,2,16,7,33,167,2,33,168,2,33,169,2,33, -171,2,33,172,2,33,173,2,33,175,2,11,16,5,93,2,24,87,94,83,158, -34,16,2,89,162,35,35,41,9,223,0,251,80,158,38,48,20,15,159,38,36, -49,21,94,2,101,2,102,248,22,58,198,248,22,84,198,80,159,34,54,35,89, -162,34,35,48,9,223,0,27,28,248,80,158,36,34,195,249,80,158,37,35,248, -80,158,38,36,197,27,248,80,158,39,37,198,28,248,80,158,39,34,193,249,80, -158,40,38,27,248,80,158,42,36,196,28,248,80,158,42,39,193,248,22,65,248, -80,158,43,40,194,11,27,248,80,158,42,37,196,28,248,80,158,42,39,193,248, -22,8,89,162,34,35,41,9,224,8,1,27,249,22,2,89,162,34,35,46,9, -224,4,5,249,80,158,37,41,28,248,80,158,38,34,197,249,80,158,39,35,248, -80,158,40,36,199,27,248,80,158,41,37,200,28,248,80,158,41,34,193,249,80, -158,42,35,248,80,158,43,36,195,248,80,158,43,42,248,80,158,44,37,196,11, -11,194,248,80,158,39,40,196,28,248,22,63,193,21,93,9,248,80,158,37,43, -193,11,11,11,28,192,27,248,22,58,194,27,248,22,84,195,27,248,22,93,196, -27,248,22,94,197,28,249,22,4,80,158,41,44,248,22,159,3,249,80,158,44, -45,20,15,159,44,34,49,199,249,80,158,41,46,200,27,251,22,67,202,199,201, -200,250,80,158,45,47,89,162,34,34,45,9,224,11,3,252,80,158,40,48,20, -15,159,40,35,49,21,95,2,103,2,104,2,105,248,22,58,198,248,22,93,198, -250,22,2,80,159,43,54,35,248,22,94,201,248,22,84,201,21,94,2,106,95, -2,91,93,2,92,100,2,93,2,51,10,2,92,94,2,94,2,42,2,95,94, -2,97,95,2,28,2,92,2,98,2,42,20,15,159,45,37,49,250,22,176,8, -11,2,46,201,250,22,176,8,11,2,46,197,34,20,99,159,35,16,15,2,110, -2,111,2,112,2,113,2,114,2,115,2,117,2,116,2,118,2,139,2,2,162, -2,2,138,2,2,120,2,121,2,122,16,4,33,177,2,33,178,2,33,179,2, -33,180,2,11,93,83,158,34,16,2,89,162,34,35,37,2,2,223,0,248,22, -8,89,162,8,36,35,40,9,224,1,2,27,247,22,116,87,94,249,22,3,89, -162,8,36,35,45,9,226,4,3,5,2,87,94,28,248,80,158,38,35,197,12, -250,22,177,8,2,2,6,19,19,108,105,115,116,32,111,102,32,105,100,101,110, -116,105,102,105,101,114,115,197,27,250,22,122,196,248,22,153,3,201,9,87,94, -28,249,22,5,89,162,8,36,35,38,9,223,7,249,22,164,3,195,194,194,248, -195,198,12,250,22,121,196,248,22,153,3,201,249,22,57,202,197,195,11,80,159, -34,34,35,98,2,109,2,48,2,3,2,33,2,30,2,31,98,2,109,2,48, -2,3,2,33,2,30,2,31,0}; - EVAL_ONE_SIZED_STR((char *)expr, 6896); +39,40,196,28,248,22,63,193,21,93,9,248,80,158,37,43,193,11,11,11,28, +192,27,248,22,58,194,27,248,22,84,195,27,248,22,93,196,27,248,22,94,197, +28,249,22,4,80,158,41,44,248,22,159,3,249,80,158,44,45,20,15,159,44, +34,49,199,249,80,158,41,46,200,27,251,22,67,199,201,200,202,250,80,158,45, +47,89,162,34,34,50,9,224,11,3,252,80,158,40,48,20,15,159,40,35,49, +21,95,2,109,2,110,2,111,248,22,94,198,248,22,84,198,250,22,2,80,159, +43,54,35,248,22,93,201,248,22,58,201,21,94,2,112,95,2,91,93,2,92, +100,2,93,2,51,10,2,92,94,2,94,2,42,2,95,94,2,97,95,2,17, +2,92,2,98,2,42,20,15,159,45,37,49,250,22,177,8,11,2,46,201,250, +22,177,8,11,2,46,197,34,20,100,159,35,16,15,2,116,2,117,2,118,2, +119,2,120,2,121,2,123,2,122,2,124,2,145,2,2,168,2,2,144,2,2, +126,2,127,2,128,2,16,4,33,181,2,33,182,2,33,183,2,33,184,2,11, +93,83,158,34,16,2,89,162,34,35,42,2,2,223,0,248,22,9,89,162,8, +36,35,45,9,224,1,2,27,247,22,116,87,94,249,22,3,89,162,8,36,35, +50,9,226,4,3,5,2,87,94,28,248,80,158,38,35,197,12,250,22,178,8, +2,2,6,19,19,108,105,115,116,32,111,102,32,105,100,101,110,116,105,102,105, +101,114,115,197,27,250,22,122,196,248,22,153,3,201,9,87,94,28,249,22,5, +89,162,8,36,35,43,9,223,7,249,22,164,3,195,194,194,248,195,198,12,250, +22,121,196,248,22,153,3,201,249,22,57,202,197,195,11,80,159,34,34,35,98, +2,115,2,48,2,3,2,31,2,30,2,34,98,2,115,2,48,2,3,2,31, +2,30,2,34,0}; + EVAL_ONE_SIZED_STR((char *)expr, 6997); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,55,72,0,0,0,1,0,0,3,0,23,0,29,0, -38,0,50,0,66,0,84,0,89,0,93,0,100,0,107,0,114,0,121,0,127, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,56,72,0,0,0,1,0,0,3,0,23,0,29,0, +45,0,57,0,66,0,84,0,89,0,93,0,100,0,107,0,114,0,121,0,127, 0,130,0,143,0,148,0,165,0,174,0,179,0,189,0,193,0,203,0,213,0, 223,0,232,0,242,0,246,0,0,1,2,1,12,1,22,1,32,1,41,1,64, 1,70,1,87,1,124,1,136,1,173,1,189,1,212,1,227,1,233,1,239,1, 245,1,251,1,12,2,27,2,49,2,70,2,76,2,82,2,180,2,186,2,218, 2,224,2,230,2,236,2,84,3,90,3,96,3,102,3,142,3,158,3,174,3, -188,3,1,4,17,4,31,4,119,4,0,0,1,13,0,0,29,11,11,79,99, +188,3,1,4,17,4,31,4,119,4,0,0,2,13,0,0,29,11,11,79,99, 104,101,99,107,45,115,112,108,105,99,105,110,103,45,108,105,115,116,65,35,37, -115,116,120,68,117,110,115,121,110,116,97,120,71,113,117,97,115,105,115,121,110, -116,97,120,75,113,117,97,115,105,115,121,110,116,97,120,47,108,111,99,77,117, +115,116,120,75,113,117,97,115,105,115,121,110,116,97,120,47,108,111,99,71,113, +117,97,115,105,115,121,110,116,97,120,68,117,110,115,121,110,116,97,120,77,117, 110,115,121,110,116,97,120,45,115,112,108,105,99,105,110,103,64,108,111,111,112, 63,99,116,120,3,1,4,103,53,57,55,3,1,4,103,53,57,54,3,1,4, 103,53,57,57,3,1,4,103,53,57,56,65,112,108,111,111,112,62,113,113,6, @@ -2304,14 +2306,14 @@ 3,1,7,101,110,118,51,52,52,48,68,35,37,107,101,114,110,101,108,16,8, 11,11,2,19,2,20,68,109,107,45,102,105,110,97,108,2,21,2,21,2,21, 95,8,193,11,16,0,97,10,35,11,94,159,2,3,9,11,159,2,18,9,11, -16,0,97,10,34,11,94,159,2,3,9,11,159,2,18,9,11,16,10,2,6, -2,1,2,2,2,1,2,5,2,1,2,4,2,1,2,7,2,1,18,97,2, +16,0,97,10,34,11,94,159,2,3,9,11,159,2,18,9,11,16,10,2,4, +2,1,2,5,2,1,2,6,2,1,2,2,2,1,2,7,2,1,18,97,2, 17,8,38,8,37,8,36,8,35,16,10,11,11,2,22,65,100,101,112,116,104, 66,115,97,109,101,45,107,69,99,111,110,118,101,114,116,45,107,2,23,2,23, 2,23,2,23,16,4,11,11,2,8,3,1,7,101,110,118,51,51,50,52,16, 4,11,11,68,104,101,114,101,45,115,116,120,3,1,7,101,110,118,51,51,50, 51,99,8,38,8,37,8,36,8,35,8,42,8,41,8,40,18,158,2,17,8, -43,18,158,2,4,8,43,18,158,2,4,8,43,18,158,2,7,8,43,16,6, +43,18,158,2,6,8,43,18,158,2,6,8,43,18,158,2,7,8,43,16,6, 11,11,66,114,101,115,116,45,118,2,26,2,27,2,27,16,6,11,11,61,120, 64,114,101,115,116,2,25,2,25,16,6,11,11,3,1,4,103,53,56,55,3, 1,4,103,53,56,56,2,24,2,24,102,8,38,8,37,8,36,8,35,8,42, @@ -2328,7 +2330,7 @@ 48,49,16,4,11,11,65,95,101,108,115,101,3,1,7,101,110,118,51,52,48, 50,16,4,11,11,2,14,3,1,7,101,110,118,51,52,48,54,16,4,11,11, 61,108,3,1,7,101,110,118,51,52,48,55,16,4,11,11,61,97,3,1,7, -101,110,118,51,52,48,56,18,158,2,4,8,60,18,158,2,5,8,60,18,158, +101,110,118,51,52,48,56,18,158,2,6,8,60,18,158,2,5,8,60,18,158, 2,7,8,60,18,99,71,119,105,116,104,45,115,121,110,116,97,120,8,38,8, 37,8,36,8,35,8,42,16,4,11,11,2,26,3,1,7,101,110,118,51,52, 50,48,16,4,11,11,2,19,3,1,7,101,110,118,51,52,50,49,16,4,11, @@ -2342,391 +2344,393 @@ 8,69,16,8,11,11,3,1,4,103,54,48,50,3,1,4,103,54,48,51,3, 1,4,103,54,48,52,2,32,2,32,2,32,16,8,11,11,2,30,63,108,111, 99,2,22,2,33,2,33,2,33,16,4,11,11,2,20,3,1,7,101,110,118, -51,52,52,55,159,34,20,99,159,34,16,1,20,24,65,98,101,103,105,110,16, -0,83,158,40,20,96,114,67,35,37,113,113,115,116,120,2,1,10,10,10,34, -80,158,34,34,20,99,159,34,16,2,30,2,1,2,2,193,30,2,3,69,115, +51,52,52,55,159,34,20,100,159,34,16,1,20,24,65,98,101,103,105,110,16, +0,83,158,40,20,97,114,67,35,37,113,113,115,116,120,2,1,10,10,10,34, +80,158,34,34,20,100,159,34,16,2,30,2,1,2,2,193,30,2,3,69,115, 116,120,45,108,105,115,116,63,8,16,0,11,11,16,1,2,2,35,11,16,4, 2,4,2,5,2,6,2,7,16,4,11,11,11,11,16,4,2,4,2,5,2, -6,2,7,34,38,94,16,5,94,2,4,2,7,27,32,0,89,162,34,35,38, -61,102,222,250,22,176,8,11,6,30,30,105,108,108,101,103,97,108,32,111,117, +6,2,7,34,38,94,16,5,94,2,6,2,7,27,32,0,89,162,34,35,43, +61,102,222,250,22,177,8,11,6,30,30,105,108,108,101,103,97,108,32,111,117, 116,115,105,100,101,32,111,102,32,113,117,97,115,105,115,121,110,116,97,120,195, -249,22,7,194,194,37,20,99,159,34,16,0,16,0,11,16,5,94,2,5,2, -6,87,96,83,158,34,16,2,89,162,8,36,35,38,9,223,0,249,22,65,20, +249,22,7,194,194,37,20,100,159,34,16,0,16,0,11,16,5,94,2,5,2, +4,87,96,83,158,34,16,2,89,162,8,36,35,43,9,223,0,249,22,65,20, 15,159,36,51,43,195,80,159,34,8,32,35,83,158,34,16,2,89,162,34,40, -58,2,8,223,0,27,249,22,152,3,20,15,159,37,35,43,198,27,28,248,80, -158,37,34,194,28,27,248,80,158,38,35,195,28,248,80,158,38,36,193,28,249, -22,166,3,194,20,15,159,39,36,43,9,11,11,27,248,80,158,38,37,195,28, -248,80,158,38,34,193,249,80,158,39,38,248,80,158,40,35,195,248,80,158,40, -39,248,80,158,41,37,196,11,11,11,28,192,28,248,22,129,3,199,27,248,22, -58,248,80,158,39,40,21,93,62,117,113,249,203,194,248,22,65,249,22,65,197, -198,253,80,159,42,8,30,35,201,202,198,248,22,178,2,205,205,89,162,34,36, -48,9,226,8,9,14,11,249,195,250,22,152,3,199,249,22,65,248,80,158,45, -35,200,203,197,199,27,28,248,80,158,38,36,195,28,249,22,166,3,196,20,15, -159,39,37,43,9,11,11,28,192,251,22,176,8,11,6,25,25,109,105,115,117, -115,101,32,119,105,116,104,105,110,32,113,117,97,115,105,115,121,110,116,97,120, -201,202,27,28,248,80,158,39,34,196,249,80,158,40,38,27,248,80,158,42,35, -199,28,248,80,158,42,34,193,28,27,248,80,158,43,35,194,28,248,80,158,43, -36,193,28,249,22,166,3,194,20,15,159,44,38,43,9,11,11,27,248,80,158, -43,37,194,28,248,80,158,43,34,193,249,80,158,44,41,248,80,158,45,35,195, -248,80,158,45,39,248,80,158,46,37,196,11,11,11,27,248,80,158,42,37,199, -250,22,152,3,201,195,201,11,28,192,27,248,22,58,194,27,248,22,59,195,28, -248,22,129,3,203,27,89,162,34,36,54,71,114,101,115,116,45,100,111,110,101, -45,107,226,7,13,10,2,27,249,22,152,3,20,15,159,40,39,43,248,22,58, -248,80,158,42,40,21,93,63,117,113,115,27,249,22,152,3,20,15,159,41,40, -43,250,22,152,3,199,2,9,199,249,198,250,22,152,3,200,250,22,67,201,20, -15,159,47,41,43,206,200,249,22,57,27,250,22,67,201,202,200,253,80,158,50, -42,20,15,159,50,42,43,21,96,2,10,2,11,2,12,2,13,248,22,58,199, -20,15,159,50,43,43,248,22,84,199,248,22,86,199,203,253,80,159,47,8,30, -35,206,23,15,199,23,17,89,162,34,34,38,9,224,7,6,249,194,195,9,198, -253,80,159,46,8,30,35,205,206,199,248,22,178,2,23,17,89,162,34,34,50, -9,230,12,14,13,18,17,16,15,6,253,80,159,47,8,30,35,203,204,198,200, -201,27,248,80,158,49,35,201,89,162,34,36,46,9,225,11,8,0,249,196,250, -22,152,3,198,249,22,57,199,202,198,249,22,71,9,200,89,162,34,36,52,9, -229,12,14,13,18,16,15,6,27,27,250,22,152,3,248,80,158,46,35,199,249, -22,65,248,80,158,48,35,248,80,158,49,35,202,206,248,80,158,46,35,199,89, -162,34,36,47,9,226,5,3,10,0,249,197,250,22,152,3,199,249,22,57,199, -203,199,249,22,71,197,201,253,80,159,47,8,30,35,203,204,199,201,89,162,34, -34,38,9,224,7,6,249,194,195,9,198,27,28,248,80,158,40,36,197,28,249, -22,166,3,198,20,15,159,41,44,43,9,11,11,28,192,251,22,176,8,11,6, -25,25,109,105,115,117,115,101,32,119,105,116,104,105,110,32,113,117,97,115,105, -115,121,110,116,97,120,203,204,27,28,248,80,158,41,34,198,28,27,248,80,158, -42,35,199,28,248,80,158,42,36,193,28,249,22,166,3,194,20,15,159,43,45, -43,9,11,11,27,248,80,158,42,37,199,28,248,80,158,42,34,193,249,80,158, -43,38,248,80,158,44,35,195,248,80,158,44,39,248,80,158,45,37,196,11,11, -11,28,192,253,80,159,46,8,30,35,205,206,198,248,22,177,2,23,17,23,17, -89,162,34,36,47,9,225,12,18,15,249,195,250,22,152,3,197,249,22,65,248, -80,158,44,35,200,202,197,198,28,248,22,56,248,22,153,3,203,253,80,159,46, -8,31,35,23,16,205,206,248,22,153,3,23,16,23,17,89,162,34,36,43,9, -224,18,15,249,195,250,22,152,3,197,199,197,197,28,248,22,166,7,248,22,153, -3,203,253,80,159,46,8,30,35,205,206,250,22,152,3,23,18,248,22,173,7, -248,22,153,3,23,20,23,18,23,16,23,17,89,162,34,36,45,9,224,18,15, -249,195,250,22,152,3,197,248,22,174,7,248,22,159,3,201,197,197,247,203,80, -159,34,8,30,35,83,158,34,16,2,89,162,8,64,40,50,2,14,223,0,28, -248,22,56,197,28,27,248,22,58,198,27,28,248,80,158,37,36,194,27,249,22, -166,3,196,20,15,159,39,46,43,28,192,192,249,22,166,3,196,20,15,159,39, -47,43,11,28,192,192,28,248,80,158,37,34,194,27,248,80,158,38,35,195,28, -248,80,158,38,36,193,249,22,166,3,194,20,15,159,39,48,43,11,11,253,80, -159,40,8,30,35,200,201,250,22,152,3,11,205,11,199,203,204,253,80,159,40, -8,31,35,199,200,201,248,22,59,203,89,162,34,34,48,9,229,6,9,8,7, -12,11,10,253,80,159,46,8,30,35,202,203,248,22,58,199,201,199,89,162,34, -36,46,9,224,8,6,249,195,249,22,57,250,22,152,3,248,22,58,200,201,248, -22,58,200,248,22,59,197,197,89,162,34,36,49,9,228,6,9,8,7,12,10, -253,80,159,45,8,30,35,201,202,248,22,58,199,200,89,162,34,34,43,9,226, -7,6,13,12,249,197,249,22,57,248,22,58,199,196,195,89,162,34,36,48,9, -226,7,6,13,12,249,197,249,22,57,250,22,152,3,248,22,58,202,203,248,22, -58,202,196,249,22,71,201,197,28,248,22,63,197,247,197,253,80,159,40,8,30, -35,200,201,202,199,203,204,80,159,34,8,31,35,27,89,162,34,37,46,2,15, -223,1,27,20,15,159,35,34,43,253,80,159,41,8,30,35,198,200,201,34,89, -162,8,36,34,42,9,226,10,9,8,6,250,22,152,3,195,248,199,198,196,89, -162,8,36,36,47,9,226,7,10,8,6,250,22,152,3,195,250,22,65,20,15, -159,43,49,43,203,248,201,203,196,249,22,7,89,162,34,35,46,9,224,3,2, -27,249,22,152,3,20,15,159,38,50,43,197,27,28,248,80,158,38,34,194,249, -80,158,39,41,248,80,158,40,35,196,27,248,80,158,41,37,197,28,248,80,158, -41,34,193,249,80,158,42,38,248,80,158,43,35,195,248,80,158,43,39,248,80, -158,44,37,196,11,11,28,192,27,248,22,58,194,27,248,22,59,195,250,199,201, -195,80,159,42,8,32,35,250,22,176,8,11,2,16,196,89,162,34,35,49,9, -224,3,2,27,249,22,152,3,20,15,159,38,52,43,197,27,28,248,80,158,38, -34,194,249,80,158,39,41,248,80,158,40,35,196,27,248,80,158,41,37,197,28, -248,80,158,41,34,193,249,80,158,42,41,248,80,158,43,35,195,27,248,80,158, -44,37,196,28,248,80,158,44,34,193,249,80,158,45,38,248,80,158,46,35,195, -248,80,158,46,39,248,80,158,47,37,196,11,11,11,28,192,27,248,22,58,194, -27,248,22,84,195,27,248,22,86,196,250,200,202,195,89,162,8,36,35,40,9, -224,9,4,250,22,65,20,15,159,38,53,43,195,197,250,22,176,8,11,2,16, -196,37,20,99,159,37,16,9,30,2,3,69,115,116,120,45,112,97,105,114,63, -11,30,2,3,67,115,116,120,45,99,97,114,5,30,2,3,71,105,100,101,110, -116,105,102,105,101,114,63,2,30,2,3,67,115,116,120,45,99,100,114,6,30, -2,3,69,97,112,112,101,110,100,47,35,102,0,30,2,3,71,115,116,120,45, -110,117,108,108,47,35,102,9,30,70,35,37,119,105,116,104,45,115,116,120,1, -20,103,101,110,101,114,97,116,101,45,116,101,109,112,111,114,97,114,105,101,115, -0,30,2,3,67,99,111,110,115,47,35,102,1,30,69,35,37,115,116,120,99, -97,115,101,1,24,97,112,112,108,121,45,112,97,116,116,101,114,110,45,115,117, -98,115,116,105,116,117,116,101,0,16,20,33,39,33,44,33,45,33,46,33,47, -33,52,33,53,33,55,33,56,33,57,33,58,33,59,33,61,33,62,33,63,33, -64,33,67,33,68,33,70,33,71,11,93,83,158,34,16,2,89,162,8,36,36, -40,2,2,223,0,87,94,28,248,80,158,35,35,194,12,250,22,177,8,2,7, -6,18,18,112,114,111,112,101,114,32,115,121,110,116,97,120,32,108,105,115,116, -196,250,22,152,3,197,196,197,80,159,34,34,35,95,2,34,2,18,2,3,95, -2,34,2,18,2,3,0}; - EVAL_ONE_SIZED_STR((char *)expr, 3492); +8,29,2,8,223,0,27,249,22,152,3,20,15,159,37,35,43,198,27,28,248, +80,158,37,34,194,28,27,248,80,158,38,35,195,28,248,80,158,38,36,193,28, +249,22,166,3,194,20,15,159,39,36,43,9,11,11,27,248,80,158,38,37,195, +28,248,80,158,38,34,193,249,80,158,39,38,248,80,158,40,35,195,248,80,158, +40,39,248,80,158,41,37,196,11,11,11,28,192,28,248,22,129,3,199,27,248, +22,58,248,80,158,39,40,21,93,62,117,113,249,203,194,248,22,65,249,22,65, +197,198,253,80,159,42,8,30,35,201,202,198,248,22,178,2,205,205,89,162,34, +36,53,9,226,8,9,14,11,249,195,250,22,152,3,199,249,22,65,248,80,158, +45,35,200,203,197,199,27,28,248,80,158,38,36,195,28,249,22,166,3,196,20, +15,159,39,37,43,9,11,11,28,192,251,22,177,8,11,6,25,25,109,105,115, +117,115,101,32,119,105,116,104,105,110,32,113,117,97,115,105,115,121,110,116,97, +120,201,202,27,28,248,80,158,39,34,196,249,80,158,40,38,27,248,80,158,42, +35,199,28,248,80,158,42,34,193,28,27,248,80,158,43,35,194,28,248,80,158, +43,36,193,28,249,22,166,3,194,20,15,159,44,38,43,9,11,11,27,248,80, +158,43,37,194,28,248,80,158,43,34,193,249,80,158,44,41,248,80,158,45,35, +195,248,80,158,45,39,248,80,158,46,37,196,11,11,11,27,248,80,158,42,37, +199,250,22,152,3,201,195,201,11,28,192,27,248,22,58,194,27,248,22,59,195, +28,248,22,129,3,203,27,89,162,34,36,59,71,114,101,115,116,45,100,111,110, +101,45,107,226,7,13,10,2,27,249,22,152,3,20,15,159,40,39,43,248,22, +58,248,80,158,42,40,21,93,63,117,113,115,27,249,22,152,3,20,15,159,41, +40,43,250,22,152,3,199,2,9,199,249,198,250,22,152,3,200,250,22,67,201, +20,15,159,47,41,43,206,200,249,22,57,27,250,22,67,202,201,200,253,80,158, +50,42,20,15,159,50,42,43,21,96,2,10,2,11,2,12,2,13,248,22,84, +199,20,15,159,50,43,43,248,22,58,199,248,22,86,199,203,253,80,159,47,8, +30,35,206,23,15,199,23,17,89,162,34,34,43,9,224,7,6,249,194,195,9, +198,253,80,159,46,8,30,35,205,206,199,248,22,178,2,23,17,89,162,34,34, +55,9,230,12,14,13,18,17,16,15,6,253,80,159,47,8,30,35,203,204,198, +200,201,27,248,80,158,49,35,201,89,162,34,36,51,9,225,11,8,0,249,196, +250,22,152,3,198,249,22,57,199,202,198,249,22,71,9,200,89,162,34,36,57, +9,229,12,14,13,18,16,15,6,27,27,250,22,152,3,248,80,158,46,35,199, +249,22,65,248,80,158,48,35,248,80,158,49,35,202,206,248,80,158,46,35,199, +89,162,34,36,52,9,226,5,3,10,0,249,197,250,22,152,3,199,249,22,57, +199,203,199,249,22,71,197,201,253,80,159,47,8,30,35,203,204,199,201,89,162, +34,34,43,9,224,7,6,249,194,195,9,198,27,28,248,80,158,40,36,197,28, +249,22,166,3,198,20,15,159,41,44,43,9,11,11,28,192,251,22,177,8,11, +6,25,25,109,105,115,117,115,101,32,119,105,116,104,105,110,32,113,117,97,115, +105,115,121,110,116,97,120,203,204,27,28,248,80,158,41,34,198,28,27,248,80, +158,42,35,199,28,248,80,158,42,36,193,28,249,22,166,3,194,20,15,159,43, +45,43,9,11,11,27,248,80,158,42,37,199,28,248,80,158,42,34,193,249,80, +158,43,38,248,80,158,44,35,195,248,80,158,44,39,248,80,158,45,37,196,11, +11,11,28,192,253,80,159,46,8,30,35,205,206,198,248,22,177,2,23,17,23, +17,89,162,34,36,52,9,225,12,18,15,249,195,250,22,152,3,197,249,22,65, +248,80,158,44,35,200,202,197,198,28,248,22,56,248,22,153,3,203,253,80,159, +46,8,31,35,23,16,205,206,248,22,153,3,23,16,23,17,89,162,34,36,48, +9,224,18,15,249,195,250,22,152,3,197,199,197,197,28,248,22,166,7,248,22, +153,3,203,253,80,159,46,8,30,35,205,206,250,22,152,3,23,18,248,22,173, +7,248,22,153,3,23,20,23,18,23,16,23,17,89,162,34,36,50,9,224,18, +15,249,195,250,22,152,3,197,248,22,174,7,248,22,159,3,201,197,197,247,203, +80,159,34,8,30,35,83,158,34,16,2,89,162,8,64,40,55,2,14,223,0, +28,248,22,56,197,28,27,248,22,58,198,27,28,248,80,158,37,36,194,27,249, +22,166,3,196,20,15,159,39,46,43,28,192,192,249,22,166,3,196,20,15,159, +39,47,43,11,28,192,192,28,248,80,158,37,34,194,27,248,80,158,38,35,195, +28,248,80,158,38,36,193,249,22,166,3,194,20,15,159,39,48,43,11,11,253, +80,159,40,8,30,35,200,201,250,22,152,3,11,205,11,199,203,204,253,80,159, +40,8,31,35,199,200,201,248,22,59,203,89,162,34,34,53,9,229,6,9,8, +7,12,11,10,253,80,159,46,8,30,35,202,203,248,22,58,199,201,199,89,162, +34,36,51,9,224,8,6,249,195,249,22,57,250,22,152,3,248,22,58,200,201, +248,22,58,200,248,22,59,197,197,89,162,34,36,54,9,228,6,9,8,7,12, +10,253,80,159,45,8,30,35,201,202,248,22,58,199,200,89,162,34,34,48,9, +226,7,6,13,12,249,197,249,22,57,248,22,58,199,196,195,89,162,34,36,53, +9,226,7,6,13,12,249,197,249,22,57,250,22,152,3,248,22,58,202,203,248, +22,58,202,196,249,22,71,201,197,28,248,22,63,197,247,197,253,80,159,40,8, +30,35,200,201,202,199,203,204,80,159,34,8,31,35,27,89,162,34,37,51,2, +15,223,1,27,20,15,159,35,34,43,253,80,159,41,8,30,35,198,200,201,34, +89,162,8,36,34,47,9,226,10,9,8,6,250,22,152,3,195,248,199,198,196, +89,162,8,36,36,52,9,226,7,10,8,6,250,22,152,3,195,250,22,65,20, +15,159,43,49,43,203,248,201,203,196,249,22,7,89,162,34,35,51,9,224,3, +2,27,249,22,152,3,20,15,159,38,50,43,197,27,28,248,80,158,38,34,194, +249,80,158,39,41,248,80,158,40,35,196,27,248,80,158,41,37,197,28,248,80, +158,41,34,193,249,80,158,42,38,248,80,158,43,35,195,248,80,158,43,39,248, +80,158,44,37,196,11,11,28,192,27,248,22,58,194,27,248,22,59,195,250,199, +201,195,80,159,42,8,32,35,250,22,177,8,11,2,16,196,89,162,34,35,54, +9,224,3,2,27,249,22,152,3,20,15,159,38,52,43,197,27,28,248,80,158, +38,34,194,249,80,158,39,41,248,80,158,40,35,196,27,248,80,158,41,37,197, +28,248,80,158,41,34,193,249,80,158,42,41,248,80,158,43,35,195,27,248,80, +158,44,37,196,28,248,80,158,44,34,193,249,80,158,45,38,248,80,158,46,35, +195,248,80,158,46,39,248,80,158,47,37,196,11,11,11,28,192,27,248,22,58, +194,27,248,22,84,195,27,248,22,86,196,250,200,202,195,89,162,8,36,35,45, +9,224,9,4,250,22,65,20,15,159,38,53,43,195,197,250,22,177,8,11,2, +16,196,37,20,100,159,37,16,9,30,2,3,69,115,116,120,45,112,97,105,114, +63,11,30,2,3,67,115,116,120,45,99,97,114,5,30,2,3,71,105,100,101, +110,116,105,102,105,101,114,63,2,30,2,3,67,115,116,120,45,99,100,114,6, +30,2,3,69,97,112,112,101,110,100,47,35,102,0,30,2,3,71,115,116,120, +45,110,117,108,108,47,35,102,9,30,70,35,37,119,105,116,104,45,115,116,120, +1,20,103,101,110,101,114,97,116,101,45,116,101,109,112,111,114,97,114,105,101, +115,0,30,2,3,67,99,111,110,115,47,35,102,1,30,69,35,37,115,116,120, +99,97,115,101,1,24,97,112,112,108,121,45,112,97,116,116,101,114,110,45,115, +117,98,115,116,105,116,117,116,101,0,16,20,33,39,33,44,33,45,33,46,33, +47,33,52,33,53,33,55,33,56,33,57,33,58,33,59,33,61,33,62,33,63, +33,64,33,67,33,68,33,70,33,71,11,93,83,158,34,16,2,89,162,8,36, +36,45,2,2,223,0,87,94,28,248,80,158,35,35,194,12,250,22,178,8,2, +7,6,18,18,112,114,111,112,101,114,32,115,121,110,116,97,120,32,108,105,115, +116,196,250,22,152,3,197,196,197,80,159,34,34,35,95,2,34,2,18,2,3, +95,2,34,2,18,2,3,0}; + EVAL_ONE_SIZED_STR((char *)expr, 3493); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,55,159,0,0,0,1,0,0,6,0,9,0,16,0, -30,0,47,0,65,0,74,0,87,0,94,0,101,0,108,0,122,0,129,0,136, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,56,160,0,0,0,1,0,0,6,0,9,0,27,0, +34,0,51,0,65,0,74,0,87,0,94,0,101,0,108,0,122,0,129,0,136, 0,149,0,156,0,163,0,170,0,177,0,184,0,187,0,194,0,201,0,208,0, -214,0,224,0,252,0,22,1,39,1,44,1,52,1,56,1,66,1,68,1,78, -1,88,1,93,1,103,1,106,1,110,1,120,1,127,1,137,1,142,1,152,1, -167,1,170,1,179,1,188,1,198,1,208,1,218,1,228,1,238,1,248,1,253, -1,7,2,21,2,37,2,63,2,70,2,77,2,90,2,97,2,104,2,111,2, -118,2,125,2,132,2,142,2,147,2,157,2,167,2,177,2,179,2,189,2,199, -2,207,2,216,2,230,2,242,2,254,2,10,3,24,3,38,3,58,3,64,3, -78,3,94,3,110,3,126,3,158,3,164,3,186,3,208,3,222,3,234,3,1, -4,32,4,49,4,55,4,67,4,118,4,124,4,130,4,142,4,206,4,212,4, -188,5,205,5,211,5,223,5,229,5,48,6,58,6,90,6,96,6,102,6,108, -6,121,6,182,6,240,6,246,6,3,7,26,7,32,7,38,7,44,7,62,7, -78,7,94,7,144,7,153,7,200,7,211,7,222,7,234,7,0,8,19,8,184, -8,200,8,222,8,229,8,236,8,39,9,50,9,57,9,113,9,126,9,133,9, -192,9,220,9,247,9,50,10,61,10,68,10,131,10,154,10,0,0,12,25,0, -0,65,98,101,103,105,110,29,11,11,66,100,101,102,105,110,101,73,100,101,102, -105,110,101,45,115,121,110,116,97,120,76,98,101,103,105,110,45,102,111,114,45, -115,121,110,116,97,120,77,100,101,102,105,110,101,45,102,111,114,45,115,121,110, -116,97,120,68,116,114,121,45,110,101,120,116,6,10,10,98,97,100,32,115,121, -110,116,97,120,3,1,4,103,54,53,51,3,1,4,103,54,53,49,3,1,4, -103,54,53,50,73,103,101,110,101,114,97,108,45,112,114,111,116,111,3,1,4, -103,54,52,49,3,1,4,103,54,52,48,72,115,105,109,112,108,101,45,112,114, -111,116,111,3,1,4,103,54,50,54,3,1,4,103,54,50,53,3,1,4,103, -54,50,55,3,1,4,103,54,51,50,3,1,4,103,54,51,49,62,109,107,3, -1,4,103,54,54,55,3,1,4,103,54,54,53,3,1,4,103,54,54,54,65, -35,37,115,116,120,69,35,37,115,116,120,99,97,115,101,1,26,100,97,116,117, -109,45,62,115,121,110,116,97,120,45,111,98,106,101,99,116,47,115,104,97,112, -101,1,24,97,112,112,108,121,45,112,97,116,116,101,114,110,45,115,117,98,115, -116,105,116,117,116,101,76,35,37,115,116,120,99,97,115,101,45,115,99,104,101, -109,101,64,104,101,114,101,67,35,37,113,113,115,116,120,63,115,116,120,3,1, -7,101,110,118,51,52,54,57,61,95,3,1,7,101,110,118,51,52,55,48,3, -1,7,101,110,118,51,52,55,56,64,100,101,115,116,3,1,7,101,110,118,51, -52,56,53,62,105,100,63,97,114,103,3,1,7,101,110,118,51,52,56,54,66, -108,97,109,98,100,97,3,1,7,101,110,118,51,53,49,53,64,114,101,115,116, -3,1,7,101,110,118,51,53,49,54,74,35,37,115,109,97,108,108,45,115,99, -104,101,109,101,29,11,11,68,104,101,114,101,45,115,116,120,3,1,6,101,110, -118,52,53,54,3,1,7,101,110,118,51,53,53,50,3,1,7,101,110,118,51, -53,53,51,3,1,7,101,110,118,51,52,55,55,3,1,7,101,110,118,51,54, -52,51,3,1,7,101,110,118,51,54,52,52,3,1,7,101,110,118,51,54,57, -49,64,101,120,112,114,3,1,7,101,110,118,51,54,57,50,73,100,101,102,105, -110,101,45,118,97,108,117,101,115,75,100,101,102,105,110,101,45,115,121,110,116, -97,120,101,115,1,24,100,101,102,105,110,101,45,118,97,108,117,101,115,45,102, -111,114,45,115,121,110,116,97,120,3,1,4,103,54,55,52,3,1,4,103,54, -55,51,72,109,111,100,117,108,101,45,98,101,103,105,110,3,1,4,103,54,56, -51,3,1,4,103,54,56,53,3,1,4,103,54,56,52,3,1,4,103,54,56, -54,3,1,4,103,54,56,55,3,1,4,103,54,56,56,3,1,7,101,110,118, -51,55,51,48,64,101,108,101,109,3,1,7,101,110,118,51,55,51,49,3,1, -7,101,110,118,51,55,52,51,3,1,7,101,110,118,51,55,52,52,61,118,3, -1,7,101,110,118,51,55,54,55,3,1,7,101,110,118,51,55,54,56,67,114, -101,113,117,105,114,101,68,35,37,107,101,114,110,101,108,30,2,25,69,115,116, -120,45,112,97,105,114,63,11,30,2,25,67,99,111,110,115,47,35,102,1,30, -2,25,67,115,116,120,45,99,97,114,5,30,2,25,67,115,116,120,45,99,100, -114,6,30,2,25,69,115,116,120,45,108,105,115,116,63,8,30,2,25,69,115, -116,120,45,62,108,105,115,116,4,30,68,35,37,115,116,120,108,111,99,68,114, -101,108,111,99,97,116,101,0,30,2,26,2,28,0,30,2,25,69,97,112,112, -101,110,100,47,35,102,0,30,2,25,71,105,100,101,110,116,105,102,105,101,114, -63,2,30,2,25,71,115,116,120,45,110,117,108,108,47,35,102,9,16,4,11, -11,2,32,3,1,7,101,110,118,51,52,53,52,16,4,11,11,77,100,101,102, -105,110,101,45,118,97,108,117,101,115,45,115,116,120,3,1,7,101,110,118,51, -52,53,51,95,8,193,11,16,0,97,10,35,11,95,159,2,31,9,11,159,2, -25,9,11,159,2,29,9,11,16,0,96,10,34,11,16,8,2,3,2,2,2, -4,2,2,2,5,2,2,2,6,2,2,18,98,2,30,8,95,8,94,8,93, -8,92,8,91,16,6,11,11,2,15,2,12,2,36,2,36,16,8,11,11,2, -34,65,112,114,111,116,111,64,98,111,100,121,2,35,2,35,2,35,16,8,11, -11,3,1,4,103,54,48,53,3,1,4,103,54,48,54,3,1,4,103,54,48, -55,2,33,2,33,2,33,100,8,95,8,94,8,93,8,92,8,91,8,99,8, -98,8,97,18,158,2,30,8,100,16,6,11,11,2,15,2,12,2,36,2,36, -102,8,95,8,94,8,93,8,92,8,91,8,99,8,98,8,102,16,6,11,11, -3,1,4,103,54,50,48,3,1,4,103,54,50,49,2,38,2,38,16,6,11, -11,2,39,2,40,2,41,2,41,18,158,2,37,8,103,18,158,2,30,8,103, -18,158,160,10,2,42,2,16,2,17,8,103,102,8,95,8,94,8,93,8,92, -8,91,8,99,8,98,8,102,16,8,11,11,3,1,4,103,54,49,55,3,1, -4,103,54,49,56,3,1,4,103,54,49,57,2,43,2,43,2,43,16,8,11, -11,2,39,2,40,2,44,2,45,2,45,2,45,18,158,2,37,8,107,102,97, -10,34,11,95,159,68,35,37,112,97,114,97,109,122,9,11,159,2,46,9,11, -159,2,25,9,11,16,14,2,27,2,47,2,28,2,47,66,115,121,110,116,97, -120,2,47,75,115,117,98,115,116,105,116,117,116,101,45,115,116,111,112,2,47, -73,115,121,110,116,97,120,45,99,97,115,101,42,42,2,47,78,112,97,116,116, -101,114,110,45,115,117,98,115,116,105,116,117,116,101,2,47,1,20,99,97,116, -99,104,45,101,108,108,105,112,115,105,115,45,101,114,114,111,114,2,47,97,10, -35,11,95,159,64,35,37,115,99,9,11,159,2,46,9,11,159,2,25,9,11, -16,0,95,8,193,11,16,0,16,4,11,11,61,120,3,1,6,101,110,118,52, -53,52,16,4,11,11,2,48,2,49,16,4,11,11,2,48,2,49,16,4,11, -11,2,48,3,1,6,101,110,118,52,53,56,13,16,4,35,2,47,2,26,11, -93,8,134,47,16,4,11,11,61,114,3,1,7,101,110,118,51,53,50,51,18, -16,2,158,94,10,2,18,8,109,95,9,8,134,47,2,26,18,158,2,30,8, -107,18,158,160,10,2,42,2,19,2,20,8,107,18,158,2,30,8,100,102,8, -95,8,94,8,93,8,92,8,91,8,99,8,98,8,97,16,8,11,11,3,1, -4,103,54,51,53,3,1,4,103,54,51,54,3,1,4,103,54,51,55,2,50, -2,50,2,50,16,8,11,11,69,115,111,109,101,116,104,105,110,103,64,109,111, -114,101,2,44,2,51,2,51,2,51,18,158,159,10,2,13,2,14,8,114,100, -8,95,8,94,8,93,8,92,8,91,8,99,8,98,16,6,11,11,2,39,66, -109,107,45,114,104,115,2,52,2,52,18,158,2,30,8,116,18,158,2,30,8, -116,18,158,2,30,8,116,18,158,96,10,2,9,93,2,10,2,11,8,116,18, -100,2,30,8,95,8,94,8,93,8,92,8,91,16,8,11,11,3,1,4,103, -54,49,49,3,1,4,103,54,49,50,3,1,4,103,54,49,51,2,53,2,53, -2,53,16,8,11,11,2,34,2,39,2,44,2,54,2,54,2,54,99,8,95, -8,94,8,93,8,92,8,91,16,8,11,11,3,1,4,103,54,49,52,3,1, -4,103,54,49,53,3,1,4,103,54,49,54,2,55,2,55,2,55,16,8,11, -11,2,34,2,39,2,56,2,57,2,57,2,57,18,158,2,30,8,122,18,158, -96,10,2,22,93,2,23,2,24,8,122,96,8,95,8,94,8,93,16,4,11, -11,2,21,3,1,7,101,110,118,51,52,53,50,18,158,2,58,8,125,18,158, -2,59,8,125,18,158,2,60,8,125,16,4,11,11,63,99,116,120,3,1,7, -101,110,118,51,55,49,53,16,4,11,11,2,32,3,1,7,101,110,118,51,55, -49,52,18,98,2,30,8,95,8,94,8,93,8,130,2,8,129,2,99,8,95, -8,94,8,93,8,130,2,8,129,2,16,4,11,11,3,1,4,103,54,55,50, -3,1,7,101,110,118,51,55,50,48,16,4,11,11,2,34,3,1,7,101,110, -118,51,55,50,49,18,158,94,10,2,1,8,132,2,99,8,95,8,94,8,93, -8,130,2,8,129,2,16,6,11,11,3,1,4,103,54,54,56,3,1,4,103, -54,54,57,2,70,2,70,16,6,11,11,2,34,2,71,2,72,2,72,18,158, -159,10,2,1,2,61,8,134,2,18,158,95,10,2,5,2,62,8,134,2,16, -6,11,11,2,34,2,71,2,74,2,74,16,6,11,11,3,1,4,103,54,55, -48,3,1,4,103,54,55,49,2,73,2,73,99,8,95,8,94,8,93,8,130, -2,8,129,2,8,138,2,8,137,2,18,158,111,10,2,1,2,58,2,59,2, -60,64,115,101,116,33,70,108,101,116,45,118,97,108,117,101,115,71,108,101,116, -42,45,118,97,108,117,101,115,73,108,101,116,114,101,99,45,118,97,108,117,101, -115,2,42,71,99,97,115,101,45,108,97,109,98,100,97,62,105,102,65,113,117, -111,116,101,1,22,108,101,116,114,101,99,45,115,121,110,116,97,120,101,115,43, -118,97,108,117,101,115,76,102,108,117,105,100,45,108,101,116,45,115,121,110,116, -97,120,1,22,119,105,116,104,45,99,111,110,116,105,110,117,97,116,105,111,110, -45,109,97,114,107,65,35,37,97,112,112,65,35,37,116,111,112,67,35,37,100, -97,116,117,109,8,139,2,16,4,11,11,61,101,3,1,7,101,110,118,51,55, -52,57,100,8,95,8,94,8,93,8,130,2,8,129,2,8,138,2,8,137,2, -8,141,2,18,158,2,30,8,142,2,18,158,2,1,8,142,2,102,8,95,8, -94,8,93,8,130,2,8,129,2,8,138,2,8,137,2,8,141,2,16,4,11, -11,3,1,4,103,54,56,50,3,1,7,101,110,118,51,55,53,53,16,4,11, -11,2,75,3,1,7,101,110,118,51,55,53,54,18,158,159,10,2,5,2,64, -8,145,2,18,158,2,58,8,142,2,102,8,95,8,94,8,93,8,130,2,8, -129,2,8,138,2,8,137,2,8,141,2,16,6,11,11,3,1,4,103,54,56, -48,3,1,4,103,54,56,49,2,76,2,76,16,6,11,11,2,39,2,56,2, -77,2,77,18,158,96,10,2,60,2,65,2,66,8,148,2,18,158,2,78,8, -142,2,102,8,95,8,94,8,93,8,130,2,8,129,2,8,138,2,8,137,2, -8,141,2,16,4,11,11,3,1,4,103,54,55,57,3,1,7,101,110,118,51, -55,55,57,16,4,11,11,2,75,3,1,7,101,110,118,51,55,56,48,18,158, -159,10,78,114,101,113,117,105,114,101,45,102,111,114,45,115,121,110,116,97,120, -2,67,8,151,2,18,158,1,20,114,101,113,117,105,114,101,45,102,111,114,45, -116,101,109,112,108,97,116,101,8,142,2,102,8,95,8,94,8,93,8,130,2, -8,129,2,8,138,2,8,137,2,8,141,2,16,4,11,11,3,1,4,103,54, -55,56,3,1,7,101,110,118,51,55,56,57,16,4,11,11,2,75,3,1,7, -101,110,118,51,55,57,48,18,158,159,10,2,78,2,68,8,154,2,18,158,2, -59,8,142,2,102,8,95,8,94,8,93,8,130,2,8,129,2,8,138,2,8, -137,2,8,141,2,16,4,11,11,3,1,4,103,54,55,53,3,1,7,101,110, -118,51,56,48,56,16,4,11,11,65,111,116,104,101,114,3,1,7,101,110,118, -51,56,48,57,18,158,96,10,2,60,9,95,2,1,2,69,93,66,118,97,108, -117,101,115,8,157,2,159,34,20,99,159,34,16,1,20,24,2,1,16,0,83, -158,40,20,96,114,68,35,37,100,101,102,105,110,101,2,2,10,10,10,34,80, -158,34,34,20,99,159,34,16,0,16,0,11,11,16,0,34,11,16,4,2,3, -2,4,2,5,2,6,16,4,11,11,11,11,16,4,2,3,2,4,2,5,2, -6,34,38,94,16,5,95,2,3,2,4,2,6,87,99,83,158,34,16,2,89, -162,34,37,59,2,7,223,0,27,28,248,80,158,36,34,195,249,80,158,37,35, -248,80,158,38,36,197,27,248,80,158,39,37,198,28,248,80,158,39,34,193,27, -28,248,22,149,3,194,193,198,249,80,158,41,35,248,80,158,42,36,196,27,248, -80,158,43,37,197,250,22,152,3,198,195,198,11,11,28,192,27,248,22,58,194, -27,248,22,84,195,27,248,22,86,196,28,248,80,158,39,45,194,250,22,176,8, -11,27,249,22,152,3,20,15,159,44,49,49,204,27,28,248,80,158,44,34,194, -249,80,158,45,35,248,80,158,46,36,196,27,248,80,158,47,37,197,28,248,80, -158,47,34,193,249,80,158,48,44,248,80,158,49,36,195,248,80,158,49,48,248, -80,158,50,37,196,11,11,28,192,27,248,22,58,194,27,248,22,59,195,6,46, -46,98,97,100,32,115,121,110,116,97,120,32,40,122,101,114,111,32,101,120,112, -114,101,115,115,105,111,110,115,32,97,102,116,101,114,32,105,100,101,110,116,105, -102,105,101,114,41,27,28,248,80,158,45,34,195,249,80,158,46,35,248,80,158, -47,36,197,27,248,80,158,48,37,198,28,248,80,158,48,34,193,249,80,158,49, -35,248,80,158,50,36,195,27,248,80,158,51,37,196,28,248,80,158,51,38,193, -248,80,158,51,39,193,11,11,11,28,192,27,248,22,58,194,27,248,22,84,195, -27,248,22,86,196,6,50,50,98,97,100,32,115,121,110,116,97,120,32,40,109, -117,108,116,105,112,108,101,32,101,120,112,114,101,115,115,105,111,110,115,32,97, -102,116,101,114,32,105,100,101,110,116,105,102,105,101,114,41,27,28,248,80,158, -46,34,196,249,80,158,47,35,248,80,158,48,36,198,27,248,80,158,49,37,199, -28,248,80,158,49,34,193,27,28,248,22,149,3,194,193,199,249,80,158,51,35, -248,80,158,52,36,196,27,248,80,158,53,37,197,250,22,152,3,198,195,198,11, -11,28,192,27,248,22,58,194,27,248,22,84,195,27,248,22,86,196,6,31,31, -98,97,100,32,115,121,110,116,97,120,32,40,105,108,108,101,103,97,108,32,117, -115,101,32,111,102,32,96,46,39,41,250,22,176,8,11,2,8,198,201,250,80, -159,41,8,41,35,200,201,202,250,80,159,38,8,41,35,197,198,199,80,159,34, -8,42,35,83,158,34,16,2,89,162,34,37,49,2,7,223,0,27,28,248,80, -158,36,34,195,249,80,158,37,35,248,80,158,38,36,197,27,248,80,158,39,37, -198,28,248,80,158,39,34,193,27,28,248,22,149,3,194,193,198,249,80,158,41, -35,248,80,158,42,36,196,27,248,80,158,43,37,197,250,22,152,3,198,195,198, -11,11,28,192,27,248,22,58,194,27,248,22,84,195,27,248,22,86,196,28,248, -80,158,39,34,194,250,80,159,41,8,40,35,200,201,202,251,22,176,8,11,6, -10,10,98,97,100,32,115,121,110,116,97,120,202,197,250,80,159,38,8,40,35, -197,198,199,80,159,34,8,41,35,83,158,34,16,2,89,162,34,37,56,2,7, -223,0,27,28,248,80,158,36,34,195,249,80,158,37,35,248,80,158,38,36,197, -27,248,80,158,39,37,198,28,248,80,158,39,34,193,27,28,248,22,149,3,194, -193,198,249,80,158,41,35,248,80,158,42,36,196,27,248,80,158,43,37,197,250, -22,152,3,198,195,198,11,11,28,192,27,248,22,58,194,27,248,22,84,195,27, -248,22,86,196,91,159,36,11,90,161,36,34,11,249,80,159,42,8,38,35,202, -197,87,95,28,248,80,158,41,38,195,12,250,22,176,8,11,6,50,50,98,97, -100,32,115,121,110,116,97,120,32,40,105,108,108,101,103,97,108,32,117,115,101, -32,111,102,32,96,46,39,32,102,111,114,32,112,114,111,99,101,100,117,114,101, -32,98,111,100,121,41,203,28,248,80,158,41,47,195,250,22,176,8,11,6,46, -46,98,97,100,32,115,121,110,116,97,120,32,40,110,111,32,101,120,112,114,101, -115,115,105,111,110,115,32,102,111,114,32,112,114,111,99,101,100,117,114,101,32, -98,111,100,121,41,203,12,27,249,22,152,3,20,15,159,43,45,49,204,27,249, -22,152,3,20,15,159,44,46,49,196,27,249,22,152,3,20,15,159,45,47,49, -248,199,200,249,80,158,45,41,205,27,250,22,67,199,198,200,252,80,158,51,42, -20,15,159,51,48,49,21,95,2,9,2,10,2,11,248,22,86,198,248,22,58, -198,248,22,84,198,250,22,176,8,11,2,8,197,80,159,34,8,40,35,83,158, -34,16,2,89,162,34,36,45,2,12,223,0,27,249,22,152,3,20,15,159,37, -43,49,197,27,28,248,80,158,37,34,194,249,80,158,38,35,248,80,158,39,36, -196,27,248,80,158,40,37,197,250,22,152,3,199,195,199,11,28,192,27,248,22, -58,194,27,248,22,59,195,28,248,80,158,39,45,194,249,22,7,195,249,80,159, -42,8,37,35,201,202,250,80,159,41,8,39,35,198,201,200,250,80,159,39,8, -39,35,196,199,198,80,159,34,8,38,35,83,158,34,16,2,89,162,34,37,52, -2,7,223,0,27,28,248,80,158,36,34,195,249,80,158,37,44,27,248,80,158, -39,36,198,28,248,80,158,39,34,193,249,80,158,40,35,248,80,158,41,36,195, -27,248,80,158,42,37,196,248,22,65,250,22,152,3,199,196,199,11,27,248,80, -158,39,37,198,250,22,152,3,200,195,200,11,28,192,27,248,22,58,194,27,248, -22,84,195,27,248,22,86,196,91,159,36,11,90,161,36,34,11,249,80,159,42, -8,38,35,203,27,249,22,67,200,201,251,80,158,47,42,20,15,159,47,44,49, -21,94,2,13,2,14,248,22,59,197,248,22,58,197,27,249,80,159,43,8,37, -35,204,203,249,22,7,195,89,162,34,35,40,9,224,4,2,248,194,248,22,65, -248,195,197,27,28,248,80,158,37,34,196,249,80,158,38,35,248,80,158,39,36, -198,27,248,80,158,40,37,199,250,22,152,3,201,195,201,11,28,192,27,248,22, -58,194,27,248,22,59,195,251,22,176,8,11,6,82,82,98,97,100,32,115,121, -110,116,97,120,32,40,110,111,116,32,97,110,32,105,100,101,110,116,105,102,105, -101,114,32,102,111,114,32,112,114,111,99,101,100,117,114,101,32,110,97,109,101, -44,32,97,110,100,32,110,111,116,32,97,32,110,101,115,116,101,100,32,112,114, -111,99,101,100,117,114,101,32,102,111,114,109,41,203,197,250,22,176,8,11,2, -8,198,80,159,34,8,39,35,83,158,34,16,2,89,162,8,100,36,57,2,15, -223,0,91,159,36,11,90,161,36,34,11,27,249,22,152,3,20,15,159,39,35, -49,199,27,28,248,80,158,39,34,194,249,80,158,40,35,248,80,158,41,36,196, -27,248,80,158,42,37,197,28,248,80,158,42,38,193,248,80,158,42,39,193,11, -11,28,192,27,248,22,58,194,27,248,22,59,195,249,22,7,248,22,159,3,249, -80,158,45,40,20,15,159,45,36,49,197,89,162,34,35,47,9,225,8,9,2, -27,249,22,152,3,20,15,159,39,37,49,198,249,80,158,39,41,196,27,249,22, -67,198,197,251,80,158,44,42,20,15,159,44,38,49,21,94,2,16,2,17,248, -22,58,197,248,22,59,197,27,28,248,80,158,40,34,195,249,80,158,41,35,248, -80,158,42,36,197,27,248,80,158,43,37,198,91,159,37,11,90,161,37,34,11, -250,80,158,48,43,198,35,11,28,194,27,28,248,22,149,3,197,196,201,249,80, -158,48,44,28,248,80,158,49,38,196,248,22,65,248,80,158,50,39,197,11,250, -22,152,3,197,199,197,11,11,28,192,27,248,22,58,194,27,248,22,84,195,27, -248,22,86,196,249,22,7,248,22,159,3,27,249,22,67,199,198,249,80,158,48, -40,20,15,159,48,39,49,249,22,71,248,22,58,197,250,80,158,53,42,20,15, -159,53,40,49,21,93,2,18,248,22,59,200,89,162,34,35,50,9,226,10,11, -2,3,27,249,22,152,3,20,15,159,40,41,49,199,249,80,158,40,41,197,27, -250,22,67,199,198,200,251,80,158,45,42,20,15,159,45,42,49,21,94,2,19, -2,20,249,22,71,248,22,58,199,248,22,86,199,248,22,84,197,250,22,176,8, -11,2,8,197,87,95,249,22,3,89,162,34,35,41,9,224,4,5,28,248,80, -158,36,45,195,12,251,22,176,8,11,6,40,40,110,111,116,32,97,110,32,105, -100,101,110,116,105,102,105,101,114,32,102,111,114,32,112,114,111,99,101,100,117, -114,101,32,97,114,103,117,109,101,110,116,196,198,194,27,248,80,158,38,46,194, -28,192,251,22,176,8,11,6,29,29,100,117,112,108,105,99,97,116,101,32,97, -114,103,117,109,101,110,116,32,105,100,101,110,116,105,102,105,101,114,200,196,12, -193,80,159,34,8,37,35,27,89,162,8,36,35,36,2,21,223,1,89,162,34, -35,52,9,224,0,1,87,94,28,249,22,77,247,22,172,13,21,93,70,101,120, -112,114,101,115,115,105,111,110,250,22,176,8,11,6,36,36,110,111,116,32,97, -108,108,111,119,101,100,32,105,110,32,97,110,32,101,120,112,114,101,115,115,105, -111,110,32,99,111,110,116,101,120,116,197,12,27,249,22,152,3,20,15,159,38, -34,49,197,27,28,248,80,158,38,34,194,249,80,158,39,35,248,80,158,40,36, -196,27,248,80,158,41,37,197,28,248,80,158,41,34,193,249,80,158,42,35,248, -80,158,43,36,195,27,248,80,158,44,37,196,28,248,80,158,44,34,193,249,80, -158,45,44,248,80,158,46,36,195,248,80,158,46,48,248,80,158,47,37,196,11, -11,11,28,192,27,248,22,58,194,27,248,22,84,195,27,248,22,86,196,28,248, -80,158,41,45,194,27,249,22,152,3,20,15,159,43,50,49,200,249,80,158,43, -41,202,27,250,22,67,200,199,198,252,80,158,49,42,20,15,159,49,51,49,21, -95,2,22,2,23,2,24,248,22,86,198,248,22,58,198,248,22,84,198,250,80, -159,43,8,42,35,199,202,200,250,80,159,40,8,42,35,196,199,197,250,22,7, -248,196,20,15,159,39,52,49,248,196,20,15,159,39,53,49,248,196,20,15,159, -39,54,49,39,20,99,159,40,16,15,2,80,2,81,2,82,2,83,2,84,2, -85,30,2,26,2,27,2,2,86,2,87,30,2,25,74,115,112,108,105,116,45, -115,116,120,45,108,105,115,116,3,2,88,2,89,30,2,29,1,26,99,104,101, -99,107,45,100,117,112,108,105,99,97,116,101,45,105,100,101,110,116,105,102,105, -101,114,0,30,2,25,69,115,116,120,45,110,117,108,108,63,10,2,90,16,21, -33,96,33,101,33,104,33,105,33,106,33,108,33,110,33,111,33,112,33,113,33, -115,33,117,33,118,33,119,33,120,33,121,33,123,33,124,33,126,33,127,33,128, -2,11,16,5,93,2,5,87,95,83,158,34,16,2,89,162,34,36,47,2,7, -223,0,27,28,248,80,158,36,34,195,249,80,158,37,39,248,80,158,38,36,197, -27,248,80,158,39,38,198,28,248,80,158,39,40,193,248,80,158,39,41,193,11, -11,28,192,27,248,22,58,194,27,248,22,59,195,249,80,158,39,42,199,250,80, -158,42,43,20,15,159,42,36,45,21,93,2,61,249,22,2,80,159,44,8,28, -35,199,250,22,176,8,11,2,8,197,80,159,34,8,29,35,83,158,34,16,2, -89,162,35,35,40,9,223,0,250,80,158,37,43,20,15,159,37,37,45,21,93, -2,62,248,22,58,197,80,159,34,8,28,35,89,162,34,35,57,9,223,0,27, -247,22,172,13,87,94,28,249,22,77,194,21,95,66,109,111,100,117,108,101,2, -63,69,116,111,112,45,108,101,118,101,108,12,250,22,176,8,11,6,51,51,97, +214,0,224,0,252,0,22,1,39,1,44,1,52,1,56,1,66,1,68,1,74, +1,84,1,94,1,99,1,109,1,112,1,116,1,126,1,133,1,143,1,148,1, +158,1,173,1,176,1,185,1,194,1,204,1,214,1,224,1,234,1,244,1,254, +1,3,2,13,2,27,2,43,2,69,2,76,2,83,2,96,2,103,2,110,2, +117,2,124,2,131,2,138,2,148,2,153,2,163,2,173,2,183,2,185,2,195, +2,205,2,213,2,222,2,236,2,248,2,4,3,16,3,30,3,44,3,64,3, +70,3,84,3,100,3,116,3,132,3,164,3,170,3,192,3,214,3,228,3,244, +3,0,4,19,4,50,4,72,4,125,4,131,4,137,4,149,4,215,4,221,4, +197,5,214,5,220,5,232,5,244,5,8,6,83,6,93,6,125,6,131,6,137, +6,143,6,156,6,217,6,19,7,25,7,38,7,61,7,67,7,73,7,79,7, +97,7,113,7,129,7,179,7,188,7,235,7,246,7,1,8,13,8,35,8,54, +8,219,8,235,8,1,9,8,9,15,9,74,9,85,9,92,9,148,9,161,9, +168,9,227,9,255,9,26,10,85,10,96,10,103,10,166,10,189,10,0,0,52, +25,0,0,65,98,101,103,105,110,29,11,11,77,100,101,102,105,110,101,45,102, +111,114,45,115,121,110,116,97,120,66,100,101,102,105,110,101,76,98,101,103,105, +110,45,102,111,114,45,115,121,110,116,97,120,73,100,101,102,105,110,101,45,115, +121,110,116,97,120,68,116,114,121,45,110,101,120,116,6,10,10,98,97,100,32, +115,121,110,116,97,120,3,1,4,103,54,53,51,3,1,4,103,54,53,49,3, +1,4,103,54,53,50,73,103,101,110,101,114,97,108,45,112,114,111,116,111,3, +1,4,103,54,52,49,3,1,4,103,54,52,48,72,115,105,109,112,108,101,45, +112,114,111,116,111,3,1,4,103,54,50,54,3,1,4,103,54,50,53,3,1, +4,103,54,50,55,3,1,4,103,54,51,50,3,1,4,103,54,51,49,62,109, +107,3,1,4,103,54,54,55,3,1,4,103,54,54,53,3,1,4,103,54,54, +54,65,35,37,115,116,120,69,35,37,115,116,120,99,97,115,101,1,26,100,97, +116,117,109,45,62,115,121,110,116,97,120,45,111,98,106,101,99,116,47,115,104, +97,112,101,1,24,97,112,112,108,121,45,112,97,116,116,101,114,110,45,115,117, +98,115,116,105,116,117,116,101,76,35,37,115,116,120,99,97,115,101,45,115,99, +104,101,109,101,64,104,101,114,101,67,35,37,113,113,115,116,120,63,115,116,120, +3,1,7,101,110,118,51,52,54,57,61,95,65,112,114,111,116,111,3,1,7, +101,110,118,51,52,55,48,3,1,7,101,110,118,51,52,55,56,64,100,101,115, +116,3,1,7,101,110,118,51,52,56,53,62,105,100,63,97,114,103,3,1,7, +101,110,118,51,52,56,54,66,108,97,109,98,100,97,3,1,7,101,110,118,51, +53,49,53,64,114,101,115,116,3,1,7,101,110,118,51,53,49,54,74,35,37, +115,109,97,108,108,45,115,99,104,101,109,101,29,11,11,68,104,101,114,101,45, +115,116,120,3,1,6,101,110,118,52,53,54,3,1,7,101,110,118,51,53,53, +50,3,1,7,101,110,118,51,53,53,51,3,1,7,101,110,118,51,52,55,55, +3,1,7,101,110,118,51,54,52,51,3,1,7,101,110,118,51,54,52,52,3, +1,7,101,110,118,51,54,57,49,64,101,120,112,114,3,1,7,101,110,118,51, +54,57,50,73,100,101,102,105,110,101,45,118,97,108,117,101,115,75,100,101,102, +105,110,101,45,115,121,110,116,97,120,101,115,1,24,100,101,102,105,110,101,45, +118,97,108,117,101,115,45,102,111,114,45,115,121,110,116,97,120,3,1,4,103, +54,55,52,3,1,4,103,54,55,51,72,109,111,100,117,108,101,45,98,101,103, +105,110,3,1,4,103,54,56,51,3,1,4,103,54,56,53,3,1,4,103,54, +56,52,3,1,4,103,54,56,54,3,1,4,103,54,56,55,3,1,4,103,54, +56,56,3,1,7,101,110,118,51,55,51,48,64,101,108,101,109,3,1,7,101, +110,118,51,55,51,49,3,1,7,101,110,118,51,55,52,51,3,1,7,101,110, +118,51,55,52,52,61,118,3,1,7,101,110,118,51,55,54,55,3,1,7,101, +110,118,51,55,54,56,67,114,101,113,117,105,114,101,68,35,37,107,101,114,110, +101,108,30,2,25,69,115,116,120,45,112,97,105,114,63,11,30,2,25,67,99, +111,110,115,47,35,102,1,30,2,25,67,115,116,120,45,99,97,114,5,30,2, +25,67,115,116,120,45,99,100,114,6,30,2,25,69,115,116,120,45,108,105,115, +116,63,8,30,2,25,69,115,116,120,45,62,108,105,115,116,4,30,68,35,37, +115,116,120,108,111,99,68,114,101,108,111,99,97,116,101,0,30,2,26,2,28, +0,30,2,25,69,97,112,112,101,110,100,47,35,102,0,30,2,25,71,105,100, +101,110,116,105,102,105,101,114,63,2,30,2,25,71,115,116,120,45,110,117,108, +108,47,35,102,9,16,4,11,11,2,32,3,1,7,101,110,118,51,52,53,52, +16,4,11,11,77,100,101,102,105,110,101,45,118,97,108,117,101,115,45,115,116, +120,3,1,7,101,110,118,51,52,53,51,95,8,193,11,16,0,97,10,35,11, +95,159,2,31,9,11,159,2,25,9,11,159,2,29,9,11,16,0,96,10,34, +11,16,8,2,3,2,2,2,4,2,2,2,5,2,2,2,6,2,2,18,98, +2,30,8,96,8,95,8,94,8,93,8,92,16,4,11,11,2,35,3,1,7, +101,110,118,51,52,55,57,16,6,11,11,2,15,2,12,2,37,2,37,16,8, +11,11,2,34,2,35,64,98,111,100,121,2,36,2,36,2,36,16,8,11,11, +3,1,4,103,54,48,53,3,1,4,103,54,48,54,3,1,4,103,54,48,55, +2,33,2,33,2,33,18,102,2,30,8,96,8,95,8,94,8,93,8,92,8, +101,8,100,8,99,8,98,103,8,96,8,95,8,94,8,93,8,92,8,101,8, +100,8,99,8,98,16,6,11,11,3,1,4,103,54,50,48,3,1,4,103,54, +50,49,2,39,2,39,16,6,11,11,2,40,2,41,2,42,2,42,18,158,2, +38,8,103,18,158,2,30,8,103,18,158,160,10,2,43,2,16,2,17,8,103, +103,8,96,8,95,8,94,8,93,8,92,8,101,8,100,8,99,8,98,16,8, +11,11,3,1,4,103,54,49,55,3,1,4,103,54,49,56,3,1,4,103,54, +49,57,2,44,2,44,2,44,16,8,11,11,2,40,2,41,2,45,2,46,2, +46,2,46,18,158,2,38,8,107,102,97,10,34,11,95,159,68,35,37,112,97, +114,97,109,122,9,11,159,2,47,9,11,159,2,25,9,11,16,14,66,115,121, +110,116,97,120,2,48,2,28,2,48,73,115,121,110,116,97,120,45,99,97,115, +101,42,42,2,48,1,20,99,97,116,99,104,45,101,108,108,105,112,115,105,115, +45,101,114,114,111,114,2,48,78,112,97,116,116,101,114,110,45,115,117,98,115, +116,105,116,117,116,101,2,48,2,27,2,48,75,115,117,98,115,116,105,116,117, +116,101,45,115,116,111,112,2,48,97,10,35,11,95,159,64,35,37,115,99,9, +11,159,2,47,9,11,159,2,25,9,11,16,0,95,8,193,11,16,0,16,4, +11,11,61,120,3,1,6,101,110,118,52,53,52,16,4,11,11,2,49,2,50, +16,4,11,11,2,49,2,50,16,4,11,11,2,49,3,1,6,101,110,118,52, +53,56,13,16,4,35,2,48,2,26,11,93,8,134,47,16,4,11,11,61,114, +3,1,7,101,110,118,51,53,50,51,18,16,2,158,94,10,2,18,8,109,95, +9,8,134,47,2,26,18,158,2,30,8,107,18,158,160,10,2,43,2,19,2, +20,8,107,16,6,11,11,2,15,2,12,2,37,2,37,18,101,2,30,8,96, +8,95,8,94,8,93,8,92,8,101,8,100,8,113,102,8,96,8,95,8,94, +8,93,8,92,8,101,8,100,8,113,16,8,11,11,3,1,4,103,54,51,53, +3,1,4,103,54,51,54,3,1,4,103,54,51,55,2,51,2,51,2,51,16, +8,11,11,69,115,111,109,101,116,104,105,110,103,64,109,111,114,101,2,45,2, +52,2,52,2,52,18,158,159,10,2,13,2,14,8,115,100,8,96,8,95,8, +94,8,93,8,92,8,101,8,100,16,6,11,11,2,40,66,109,107,45,114,104, +115,2,53,2,53,18,158,2,30,8,117,18,158,2,30,8,117,18,158,2,30, +8,117,18,158,96,10,2,9,93,2,10,2,11,8,117,18,100,2,30,8,96, +8,95,8,94,8,93,8,92,16,8,11,11,3,1,4,103,54,49,49,3,1, +4,103,54,49,50,3,1,4,103,54,49,51,2,54,2,54,2,54,16,8,11, +11,2,34,2,40,2,45,2,55,2,55,2,55,99,8,96,8,95,8,94,8, +93,8,92,16,8,11,11,3,1,4,103,54,49,52,3,1,4,103,54,49,53, +3,1,4,103,54,49,54,2,56,2,56,2,56,16,8,11,11,2,34,2,40, +2,57,2,58,2,58,2,58,18,158,2,30,8,123,18,158,96,10,2,22,93, +2,23,2,24,8,123,96,8,96,8,95,8,94,16,4,11,11,2,21,3,1, +7,101,110,118,51,52,53,50,18,158,2,59,8,126,18,158,2,60,8,126,18, +158,2,61,8,126,16,4,11,11,63,99,116,120,3,1,7,101,110,118,51,55, +49,53,16,4,11,11,2,32,3,1,7,101,110,118,51,55,49,52,18,98,2, +30,8,96,8,95,8,94,8,131,2,8,130,2,99,8,96,8,95,8,94,8, +131,2,8,130,2,16,4,11,11,3,1,4,103,54,55,50,3,1,7,101,110, +118,51,55,50,48,16,4,11,11,2,34,3,1,7,101,110,118,51,55,50,49, +18,158,94,10,2,1,8,133,2,99,8,96,8,95,8,94,8,131,2,8,130, +2,16,6,11,11,3,1,4,103,54,54,56,3,1,4,103,54,54,57,2,71, +2,71,16,6,11,11,2,34,2,72,2,73,2,73,18,158,159,10,2,1,2, +62,8,135,2,18,158,95,10,2,5,2,63,8,135,2,16,6,11,11,2,34, +2,72,2,75,2,75,16,6,11,11,3,1,4,103,54,55,48,3,1,4,103, +54,55,49,2,74,2,74,99,8,96,8,95,8,94,8,131,2,8,130,2,8, +139,2,8,138,2,18,158,111,10,2,1,2,59,2,60,2,61,64,115,101,116, +33,70,108,101,116,45,118,97,108,117,101,115,71,108,101,116,42,45,118,97,108, +117,101,115,73,108,101,116,114,101,99,45,118,97,108,117,101,115,2,43,71,99, +97,115,101,45,108,97,109,98,100,97,62,105,102,65,113,117,111,116,101,1,22, +108,101,116,114,101,99,45,115,121,110,116,97,120,101,115,43,118,97,108,117,101, +115,76,102,108,117,105,100,45,108,101,116,45,115,121,110,116,97,120,1,22,119, +105,116,104,45,99,111,110,116,105,110,117,97,116,105,111,110,45,109,97,114,107, +65,35,37,97,112,112,65,35,37,116,111,112,67,35,37,100,97,116,117,109,8, +140,2,16,4,11,11,61,101,3,1,7,101,110,118,51,55,52,57,100,8,96, +8,95,8,94,8,131,2,8,130,2,8,139,2,8,138,2,8,142,2,18,158, +2,30,8,143,2,18,158,2,1,8,143,2,102,8,96,8,95,8,94,8,131, +2,8,130,2,8,139,2,8,138,2,8,142,2,16,4,11,11,3,1,4,103, +54,56,50,3,1,7,101,110,118,51,55,53,53,16,4,11,11,2,76,3,1, +7,101,110,118,51,55,53,54,18,158,159,10,2,5,2,65,8,146,2,18,158, +2,59,8,143,2,102,8,96,8,95,8,94,8,131,2,8,130,2,8,139,2, +8,138,2,8,142,2,16,6,11,11,3,1,4,103,54,56,48,3,1,4,103, +54,56,49,2,77,2,77,16,6,11,11,2,40,2,57,2,78,2,78,18,158, +96,10,2,61,2,66,2,67,8,149,2,18,158,2,79,8,143,2,102,8,96, +8,95,8,94,8,131,2,8,130,2,8,139,2,8,138,2,8,142,2,16,4, +11,11,3,1,4,103,54,55,57,3,1,7,101,110,118,51,55,55,57,16,4, +11,11,2,76,3,1,7,101,110,118,51,55,56,48,18,158,159,10,78,114,101, +113,117,105,114,101,45,102,111,114,45,115,121,110,116,97,120,2,68,8,152,2, +18,158,1,20,114,101,113,117,105,114,101,45,102,111,114,45,116,101,109,112,108, +97,116,101,8,143,2,102,8,96,8,95,8,94,8,131,2,8,130,2,8,139, +2,8,138,2,8,142,2,16,4,11,11,3,1,4,103,54,55,56,3,1,7, +101,110,118,51,55,56,57,16,4,11,11,2,76,3,1,7,101,110,118,51,55, +57,48,18,158,159,10,2,79,2,69,8,155,2,18,158,2,60,8,143,2,102, +8,96,8,95,8,94,8,131,2,8,130,2,8,139,2,8,138,2,8,142,2, +16,4,11,11,3,1,4,103,54,55,53,3,1,7,101,110,118,51,56,48,56, +16,4,11,11,65,111,116,104,101,114,3,1,7,101,110,118,51,56,48,57,18, +158,96,10,2,61,9,95,2,1,2,70,93,66,118,97,108,117,101,115,8,158, +2,159,34,20,100,159,34,16,1,20,24,2,1,16,0,83,158,40,20,97,114, +68,35,37,100,101,102,105,110,101,2,2,10,10,10,34,80,158,34,34,20,100, +159,34,16,0,16,0,11,11,16,0,34,11,16,4,2,3,2,4,2,5,2, +6,16,4,11,11,11,11,16,4,2,3,2,4,2,5,2,6,34,38,94,16, +5,95,2,4,2,6,2,3,87,99,83,158,34,16,2,89,162,34,37,8,30, +2,7,223,0,27,28,248,80,158,36,34,195,249,80,158,37,35,248,80,158,38, +36,197,27,248,80,158,39,37,198,28,248,80,158,39,34,193,27,28,248,22,149, +3,194,193,198,249,80,158,41,35,248,80,158,42,36,196,27,248,80,158,43,37, +197,250,22,152,3,198,195,198,11,11,28,192,27,248,22,58,194,27,248,22,84, +195,27,248,22,86,196,28,248,80,158,39,45,194,250,22,177,8,11,27,249,22, +152,3,20,15,159,44,49,49,204,27,28,248,80,158,44,34,194,249,80,158,45, +35,248,80,158,46,36,196,27,248,80,158,47,37,197,28,248,80,158,47,34,193, +249,80,158,48,44,248,80,158,49,36,195,248,80,158,49,48,248,80,158,50,37, +196,11,11,28,192,27,248,22,58,194,27,248,22,59,195,6,46,46,98,97,100, +32,115,121,110,116,97,120,32,40,122,101,114,111,32,101,120,112,114,101,115,115, +105,111,110,115,32,97,102,116,101,114,32,105,100,101,110,116,105,102,105,101,114, +41,27,28,248,80,158,45,34,195,249,80,158,46,35,248,80,158,47,36,197,27, +248,80,158,48,37,198,28,248,80,158,48,34,193,249,80,158,49,35,248,80,158, +50,36,195,27,248,80,158,51,37,196,28,248,80,158,51,38,193,248,80,158,51, +39,193,11,11,11,28,192,27,248,22,58,194,27,248,22,84,195,27,248,22,86, +196,6,50,50,98,97,100,32,115,121,110,116,97,120,32,40,109,117,108,116,105, +112,108,101,32,101,120,112,114,101,115,115,105,111,110,115,32,97,102,116,101,114, +32,105,100,101,110,116,105,102,105,101,114,41,27,28,248,80,158,46,34,196,249, +80,158,47,35,248,80,158,48,36,198,27,248,80,158,49,37,199,28,248,80,158, +49,34,193,27,28,248,22,149,3,194,193,199,249,80,158,51,35,248,80,158,52, +36,196,27,248,80,158,53,37,197,250,22,152,3,198,195,198,11,11,28,192,27, +248,22,58,194,27,248,22,84,195,27,248,22,86,196,6,31,31,98,97,100,32, +115,121,110,116,97,120,32,40,105,108,108,101,103,97,108,32,117,115,101,32,111, +102,32,96,46,39,41,250,22,177,8,11,2,8,198,201,250,80,159,41,8,41, +35,200,201,202,250,80,159,38,8,41,35,197,198,199,80,159,34,8,42,35,83, +158,34,16,2,89,162,34,37,54,2,7,223,0,27,28,248,80,158,36,34,195, +249,80,158,37,35,248,80,158,38,36,197,27,248,80,158,39,37,198,28,248,80, +158,39,34,193,27,28,248,22,149,3,194,193,198,249,80,158,41,35,248,80,158, +42,36,196,27,248,80,158,43,37,197,250,22,152,3,198,195,198,11,11,28,192, +27,248,22,58,194,27,248,22,84,195,27,248,22,86,196,28,248,80,158,39,34, +194,250,80,159,41,8,40,35,200,201,202,251,22,177,8,11,6,10,10,98,97, +100,32,115,121,110,116,97,120,202,197,250,80,159,38,8,40,35,197,198,199,80, +159,34,8,41,35,83,158,34,16,2,89,162,34,37,8,27,2,7,223,0,27, +28,248,80,158,36,34,195,249,80,158,37,35,248,80,158,38,36,197,27,248,80, +158,39,37,198,28,248,80,158,39,34,193,27,28,248,22,149,3,194,193,198,249, +80,158,41,35,248,80,158,42,36,196,27,248,80,158,43,37,197,250,22,152,3, +198,195,198,11,11,28,192,27,248,22,58,194,27,248,22,84,195,27,248,22,86, +196,91,159,36,11,90,161,36,34,11,249,80,159,42,8,38,35,202,197,87,95, +28,248,80,158,41,38,195,12,250,22,177,8,11,6,50,50,98,97,100,32,115, +121,110,116,97,120,32,40,105,108,108,101,103,97,108,32,117,115,101,32,111,102, +32,96,46,39,32,102,111,114,32,112,114,111,99,101,100,117,114,101,32,98,111, +100,121,41,203,28,248,80,158,41,47,195,250,22,177,8,11,6,46,46,98,97, +100,32,115,121,110,116,97,120,32,40,110,111,32,101,120,112,114,101,115,115,105, +111,110,115,32,102,111,114,32,112,114,111,99,101,100,117,114,101,32,98,111,100, +121,41,203,12,27,249,22,152,3,20,15,159,43,45,49,204,27,249,22,152,3, +20,15,159,44,46,49,196,27,249,22,152,3,20,15,159,45,47,49,248,199,200, +249,80,158,45,41,205,27,250,22,67,200,198,199,252,80,158,51,42,20,15,159, +51,48,49,21,95,2,9,2,10,2,11,248,22,58,198,248,22,86,198,248,22, +84,198,250,22,177,8,11,2,8,197,80,159,34,8,40,35,83,158,34,16,2, +89,162,34,36,50,2,12,223,0,27,249,22,152,3,20,15,159,37,43,49,197, +27,28,248,80,158,37,34,194,249,80,158,38,35,248,80,158,39,36,196,27,248, +80,158,40,37,197,250,22,152,3,199,195,199,11,28,192,27,248,22,58,194,27, +248,22,59,195,28,248,80,158,39,45,194,249,22,7,195,249,80,159,42,8,37, +35,201,202,250,80,159,41,8,39,35,198,201,200,250,80,159,39,8,39,35,196, +199,198,80,159,34,8,38,35,83,158,34,16,2,89,162,34,37,57,2,7,223, +0,27,28,248,80,158,36,34,195,249,80,158,37,44,27,248,80,158,39,36,198, +28,248,80,158,39,34,193,249,80,158,40,35,248,80,158,41,36,195,27,248,80, +158,42,37,196,248,22,65,250,22,152,3,199,196,199,11,27,248,80,158,39,37, +198,250,22,152,3,200,195,200,11,28,192,27,248,22,58,194,27,248,22,84,195, +27,248,22,86,196,91,159,36,11,90,161,36,34,11,249,80,159,42,8,38,35, +203,27,249,22,67,200,201,251,80,158,47,42,20,15,159,47,44,49,21,94,2, +13,2,14,248,22,59,197,248,22,58,197,27,249,80,159,43,8,37,35,204,203, +249,22,7,195,89,162,34,35,45,9,224,4,2,248,194,248,22,65,248,195,197, +27,28,248,80,158,37,34,196,249,80,158,38,35,248,80,158,39,36,198,27,248, +80,158,40,37,199,250,22,152,3,201,195,201,11,28,192,27,248,22,58,194,27, +248,22,59,195,251,22,177,8,11,6,82,82,98,97,100,32,115,121,110,116,97, +120,32,40,110,111,116,32,97,110,32,105,100,101,110,116,105,102,105,101,114,32, +102,111,114,32,112,114,111,99,101,100,117,114,101,32,110,97,109,101,44,32,97, +110,100,32,110,111,116,32,97,32,110,101,115,116,101,100,32,112,114,111,99,101, +100,117,114,101,32,102,111,114,109,41,203,197,250,22,177,8,11,2,8,198,80, +159,34,8,39,35,83,158,34,16,2,89,162,8,100,36,8,28,2,15,223,0, +91,159,36,11,90,161,36,34,11,27,249,22,152,3,20,15,159,39,35,49,199, +27,28,248,80,158,39,34,194,249,80,158,40,35,248,80,158,41,36,196,27,248, +80,158,42,37,197,28,248,80,158,42,38,193,248,80,158,42,39,193,11,11,28, +192,27,248,22,58,194,27,248,22,59,195,249,22,7,248,22,159,3,249,80,158, +45,40,20,15,159,45,36,49,197,89,162,34,35,52,9,225,8,9,2,27,249, +22,152,3,20,15,159,39,37,49,198,249,80,158,39,41,196,27,249,22,67,197, +198,251,80,158,44,42,20,15,159,44,38,49,21,94,2,16,2,17,248,22,59, +197,248,22,58,197,27,28,248,80,158,40,34,195,249,80,158,41,35,248,80,158, +42,36,197,27,248,80,158,43,37,198,91,159,37,11,90,161,37,34,11,250,80, +158,48,43,198,35,11,28,194,27,28,248,22,149,3,197,196,201,249,80,158,48, +44,28,248,80,158,49,38,196,248,22,65,248,80,158,50,39,197,11,250,22,152, +3,197,199,197,11,11,28,192,27,248,22,58,194,27,248,22,84,195,27,248,22, +86,196,249,22,7,248,22,159,3,27,249,22,67,199,198,249,80,158,48,40,20, +15,159,48,39,49,249,22,71,248,22,58,197,250,80,158,53,42,20,15,159,53, +40,49,21,93,2,18,248,22,59,200,89,162,34,35,55,9,226,10,11,2,3, +27,249,22,152,3,20,15,159,40,41,49,199,249,80,158,40,41,197,27,250,22, +67,200,198,199,251,80,158,45,42,20,15,159,45,42,49,21,94,2,19,2,20, +249,22,71,248,22,86,199,248,22,58,199,248,22,84,197,250,22,177,8,11,2, +8,197,87,95,249,22,3,89,162,34,35,46,9,224,4,5,28,248,80,158,36, +45,195,12,251,22,177,8,11,6,40,40,110,111,116,32,97,110,32,105,100,101, +110,116,105,102,105,101,114,32,102,111,114,32,112,114,111,99,101,100,117,114,101, +32,97,114,103,117,109,101,110,116,196,198,194,27,248,80,158,38,46,194,28,192, +251,22,177,8,11,6,29,29,100,117,112,108,105,99,97,116,101,32,97,114,103, +117,109,101,110,116,32,105,100,101,110,116,105,102,105,101,114,200,196,12,193,80, +159,34,8,37,35,27,89,162,8,36,35,41,2,21,223,1,89,162,34,35,57, +9,224,0,1,87,94,28,249,22,77,247,22,173,13,21,93,70,101,120,112,114, +101,115,115,105,111,110,250,22,177,8,11,6,36,36,110,111,116,32,97,108,108, +111,119,101,100,32,105,110,32,97,110,32,101,120,112,114,101,115,115,105,111,110, +32,99,111,110,116,101,120,116,197,12,27,249,22,152,3,20,15,159,38,34,49, +197,27,28,248,80,158,38,34,194,249,80,158,39,35,248,80,158,40,36,196,27, +248,80,158,41,37,197,28,248,80,158,41,34,193,249,80,158,42,35,248,80,158, +43,36,195,27,248,80,158,44,37,196,28,248,80,158,44,34,193,249,80,158,45, +44,248,80,158,46,36,195,248,80,158,46,48,248,80,158,47,37,196,11,11,11, +28,192,27,248,22,58,194,27,248,22,84,195,27,248,22,86,196,28,248,80,158, +41,45,194,27,249,22,152,3,20,15,159,43,50,49,200,249,80,158,43,41,202, +27,250,22,67,199,200,198,252,80,158,49,42,20,15,159,49,51,49,21,95,2, +22,2,23,2,24,248,22,86,198,248,22,84,198,248,22,58,198,250,80,159,43, +8,42,35,199,202,200,250,80,159,40,8,42,35,196,199,197,250,22,7,248,196, +20,15,159,39,52,49,248,196,20,15,159,39,53,49,248,196,20,15,159,39,54, +49,39,20,100,159,40,16,15,2,81,2,82,2,83,2,84,2,85,2,86,30, +2,26,2,27,2,2,87,2,88,30,2,25,74,115,112,108,105,116,45,115,116, +120,45,108,105,115,116,3,2,89,2,90,30,2,29,1,26,99,104,101,99,107, +45,100,117,112,108,105,99,97,116,101,45,105,100,101,110,116,105,102,105,101,114, +0,30,2,25,69,115,116,120,45,110,117,108,108,63,10,2,91,16,21,33,97, +33,102,33,104,33,105,33,106,33,108,33,110,33,111,33,112,33,114,33,116,33, +118,33,119,33,120,33,121,33,122,33,124,33,125,33,127,33,128,2,33,129,2, +11,16,5,93,2,5,87,95,83,158,34,16,2,89,162,34,36,52,2,7,223, +0,27,28,248,80,158,36,34,195,249,80,158,37,39,248,80,158,38,36,197,27, +248,80,158,39,38,198,28,248,80,158,39,40,193,248,80,158,39,41,193,11,11, +28,192,27,248,22,58,194,27,248,22,59,195,249,80,158,39,42,199,250,80,158, +42,43,20,15,159,42,36,45,21,93,2,62,249,22,2,80,159,44,8,28,35, +199,250,22,177,8,11,2,8,197,80,159,34,8,29,35,83,158,34,16,2,89, +162,35,35,45,9,223,0,250,80,158,37,43,20,15,159,37,37,45,21,93,2, +63,248,22,58,197,80,159,34,8,28,35,89,162,34,35,8,28,9,223,0,27, +247,22,173,13,87,94,28,249,22,77,194,21,95,66,109,111,100,117,108,101,2, +64,69,116,111,112,45,108,101,118,101,108,12,250,22,177,8,11,6,51,51,97, 108,108,111,119,101,100,32,111,110,108,121,32,97,116,32,116,104,101,32,116,111, 112,45,108,101,118,101,108,32,111,114,32,97,32,109,111,100,117,108,101,32,116, 111,112,45,108,101,118,101,108,197,27,249,22,152,3,20,15,159,38,34,45,197, @@ -2735,53 +2739,53 @@ 80,158,39,34,195,249,80,158,40,39,248,80,158,41,36,197,27,248,80,158,42, 38,198,28,248,80,158,42,34,193,249,80,158,43,35,248,80,158,44,36,195,248, 80,158,44,37,248,80,158,45,38,196,11,11,28,192,27,248,22,58,194,27,248, -22,59,195,28,249,22,148,8,199,2,63,249,80,159,42,8,29,35,198,201,27, -250,22,162,8,196,201,248,22,159,3,20,15,159,45,38,45,27,249,22,152,3, +22,59,195,28,249,22,148,8,199,2,64,249,80,159,42,8,29,35,198,201,27, +250,22,163,8,196,201,248,22,159,3,20,15,159,45,38,45,27,249,22,152,3, 20,15,159,44,39,45,195,27,28,248,80,158,44,34,194,28,27,248,80,158,45, 36,195,28,248,80,158,45,44,193,28,249,22,167,3,194,20,15,159,46,40,45, 9,11,11,27,248,80,158,45,38,195,28,248,80,158,45,40,193,248,80,158,45, 41,193,11,11,11,28,192,250,80,158,46,43,20,15,159,46,41,45,21,93,2, -64,195,27,28,248,80,158,45,34,195,28,27,248,80,158,46,36,196,28,248,80, +65,195,27,28,248,80,158,45,34,195,28,27,248,80,158,46,36,196,28,248,80, 158,46,44,193,28,249,22,167,3,194,20,15,159,47,42,45,9,11,11,27,248, 80,158,46,38,196,28,248,80,158,46,34,193,249,80,158,47,35,27,248,80,158, 49,36,196,28,248,80,158,49,40,193,248,22,65,248,80,158,50,41,194,11,27, 248,80,158,49,38,196,28,248,80,158,49,34,193,249,80,158,50,35,248,80,158, 51,36,195,248,80,158,51,37,248,80,158,52,38,196,11,11,11,11,28,192,27, -248,22,58,194,27,248,22,59,195,27,249,22,67,196,195,251,80,158,51,43,20, -15,159,51,43,45,21,94,2,65,2,66,248,22,58,197,248,22,59,197,27,28, +248,22,58,194,27,248,22,59,195,27,249,22,67,195,196,251,80,158,51,43,20, +15,159,51,43,45,21,94,2,66,2,67,248,22,59,197,248,22,58,197,27,28, 248,80,158,46,34,196,28,27,248,80,158,47,36,197,28,248,80,158,47,44,193, 28,249,22,167,3,194,20,15,159,48,44,45,9,11,11,27,248,80,158,47,38, 197,28,248,80,158,47,40,193,248,80,158,47,41,193,11,11,11,28,192,250,80, -158,48,43,20,15,159,48,45,45,21,93,2,67,195,27,28,248,80,158,47,34, +158,48,43,20,15,159,48,45,45,21,93,2,68,195,27,28,248,80,158,47,34, 197,28,27,248,80,158,48,36,198,28,248,80,158,48,44,193,28,249,22,167,3, 194,20,15,159,49,46,45,9,11,11,27,248,80,158,48,38,198,28,248,80,158, 48,40,193,248,80,158,48,41,193,11,11,11,28,192,250,80,158,49,43,20,15, -159,49,47,45,21,93,2,68,195,27,28,248,80,158,48,34,198,28,27,248,80, +159,49,47,45,21,93,2,69,195,27,28,248,80,158,48,34,198,28,27,248,80, 158,49,36,199,28,248,80,158,49,44,193,28,249,22,167,3,194,20,15,159,50, 48,45,9,11,11,27,248,80,158,49,38,199,28,248,80,158,49,34,193,249,80, 158,50,35,27,248,80,158,52,36,196,28,248,80,158,52,40,193,248,22,65,248, 80,158,53,41,194,11,27,248,80,158,52,38,196,28,248,80,158,52,34,193,249, 80,158,53,35,248,80,158,54,36,195,248,80,158,54,37,248,80,158,55,38,196, -11,11,11,11,28,192,27,248,22,58,194,27,248,22,59,195,250,22,176,8,11, +11,11,11,11,28,192,27,248,22,58,194,27,248,22,59,195,250,22,177,8,11, 6,54,54,115,121,110,116,97,120,32,100,101,102,105,110,105,116,105,111,110,115, 32,110,111,116,32,97,108,108,111,119,101,100,32,119,105,116,104,105,110,32,98, 101,103,105,110,45,102,111,114,45,115,121,110,116,97,120,204,250,80,158,50,43, -20,15,159,50,49,45,21,93,2,69,200,249,80,159,40,8,29,35,196,199,34, -20,99,159,36,16,11,2,80,2,88,2,82,2,90,2,83,2,81,2,84,2, -85,2,86,2,87,2,89,16,16,33,131,2,33,133,2,33,135,2,33,136,2, -33,140,2,33,143,2,33,144,2,33,146,2,33,147,2,33,149,2,33,150,2, -33,152,2,33,153,2,33,155,2,33,156,2,33,158,2,11,9,93,2,79,96, -2,79,2,29,2,25,2,31,0}; - EVAL_ONE_SIZED_STR((char *)expr, 6749); +20,15,159,50,49,45,21,93,2,70,200,249,80,159,40,8,29,35,196,199,34, +20,100,159,36,16,11,2,81,2,89,2,83,2,91,2,84,2,82,2,85,2, +86,2,87,2,88,2,90,16,16,33,132,2,33,134,2,33,136,2,33,137,2, +33,141,2,33,144,2,33,145,2,33,147,2,33,148,2,33,150,2,33,151,2, +33,153,2,33,154,2,33,156,2,33,157,2,33,159,2,11,9,93,2,80,96, +2,80,2,29,2,25,2,31,0}; + EVAL_ONE_SIZED_STR((char *)expr, 6791); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,55,182,1,0,0,1,0,0,6,0,9,0,24,0, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,56,182,1,0,0,1,0,0,6,0,9,0,24,0, 37,0,46,0,56,0,71,0,77,0,103,0,112,0,137,0,159,0,187,0,207, 0,225,0,239,0,0,1,18,1,49,1,78,1,103,1,132,1,166,1,198,1, -216,1,250,1,10,2,36,2,65,2,83,2,115,2,134,2,163,2,186,2,191, -2,205,2,217,2,232,2,242,2,255,2,18,3,21,3,26,3,37,3,44,3, +216,1,250,1,10,2,36,2,65,2,83,2,115,2,134,2,163,2,186,2,198, +2,203,2,209,2,220,2,239,2,254,2,5,3,18,3,28,3,33,3,36,3, 50,3,60,3,67,3,74,3,81,3,88,3,95,3,102,3,115,3,121,3,131, -3,157,3,162,3,171,3,186,3,194,3,218,3,226,3,243,3,245,3,255,3, +3,157,3,162,3,171,3,186,3,210,3,218,3,226,3,243,3,245,3,255,3, 1,4,3,4,13,4,19,4,29,4,39,4,46,4,53,4,60,4,67,4,74, 4,81,4,88,4,95,4,98,4,100,4,104,4,107,4,110,4,117,4,124,4, 131,4,138,4,145,4,152,4,156,4,159,4,162,4,184,4,194,4,204,4,214, @@ -2817,7 +2821,7 @@ 133,25,166,25,234,25,255,25,67,26,83,26,100,26,116,26,199,26,228,26,245, 26,5,27,105,27,131,27,164,27,181,27,197,27,9,28,25,28,58,28,112,28, 131,28,138,28,146,28,203,28,252,28,9,29,46,29,79,29,147,29,168,29,185, -29,201,29,13,30,141,30,0,0,184,67,0,0,65,98,101,103,105,110,29,11, +29,201,29,13,30,141,30,0,0,183,67,0,0,65,98,101,103,105,110,29,11, 11,74,115,116,114,117,99,116,58,112,114,111,109,105,115,101,72,109,97,107,101, 45,112,114,111,109,105,115,101,68,112,114,111,109,105,115,101,63,69,112,114,111, 109,105,115,101,45,112,74,115,101,116,45,112,114,111,109,105,115,101,45,112,33, @@ -2850,21 +2854,21 @@ 105,110,45,99,111,110,116,101,120,116,78,104,97,110,100,108,101,114,45,112,114, 111,109,112,116,45,107,101,121,1,27,99,97,108,108,45,119,105,116,104,45,101, 120,99,101,112,116,105,111,110,45,104,97,110,100,108,101,114,1,21,101,120,99, -101,112,116,105,111,110,45,104,97,110,100,108,101,114,45,107,101,121,64,116,105, -109,101,73,119,105,116,104,45,104,97,110,100,108,101,114,115,71,115,101,116,33, -45,118,97,108,117,101,115,74,119,105,116,104,45,104,97,110,100,108,101,114,115, -42,69,102,108,117,105,100,45,108,101,116,72,112,97,114,97,109,101,116,101,114, -105,122,101,78,112,97,114,97,109,101,116,101,114,105,122,101,45,98,114,101,97, -107,62,100,111,64,99,97,115,101,70,108,101,116,45,115,116,114,117,99,116,66, -108,101,116,47,99,99,65,100,101,108,97,121,69,99,97,115,101,45,116,101,115, +101,112,116,105,111,110,45,104,97,110,100,108,101,114,45,107,101,121,71,115,101, +116,33,45,118,97,108,117,101,115,64,116,105,109,101,65,100,101,108,97,121,70, +108,101,116,45,115,116,114,117,99,116,78,112,97,114,97,109,101,116,101,114,105, +122,101,45,98,114,101,97,107,74,119,105,116,104,45,104,97,110,100,108,101,114, +115,42,66,108,101,116,47,99,99,72,112,97,114,97,109,101,116,101,114,105,122, +101,69,102,108,117,105,100,45,108,101,116,64,99,97,115,101,62,100,111,73,119, +105,116,104,45,104,97,110,100,108,101,114,115,69,99,97,115,101,45,116,101,115, 116,3,1,4,103,54,57,54,3,1,4,103,54,57,53,3,1,4,103,54,57, 56,3,1,4,103,54,57,55,3,1,4,103,55,48,48,3,1,4,103,54,57, 57,6,10,10,98,97,100,32,115,121,110,116,97,120,65,35,37,115,116,120,69, 35,37,115,116,120,99,97,115,101,1,24,97,112,112,108,121,45,112,97,116,116, 101,114,110,45,115,117,98,115,116,105,116,117,116,101,64,104,101,114,101,68,35, 37,100,101,102,105,110,101,74,35,37,115,109,97,108,108,45,115,99,104,101,109, -101,67,112,114,111,109,105,115,101,1,22,98,114,101,97,107,45,112,97,114,97, -109,101,116,101,114,105,122,97,116,105,111,110,67,35,37,113,113,115,116,120,76, +101,1,22,98,114,101,97,107,45,112,97,114,97,109,101,116,101,114,105,122,97, +116,105,111,110,67,112,114,111,109,105,115,101,67,35,37,113,113,115,116,120,76, 35,37,115,116,120,99,97,115,101,45,115,99,104,101,109,101,61,120,3,1,7, 101,110,118,51,56,50,50,61,95,61,107,3,1,7,101,110,118,51,56,50,51, 65,113,117,111,116,101,3,1,7,101,110,118,51,56,51,55,3,1,7,101,110, @@ -2948,14 +2952,14 @@ 4,11,11,2,65,3,1,7,101,110,118,51,56,49,53,95,8,193,11,16,0, 97,10,35,11,95,159,2,63,9,11,159,2,64,9,11,159,2,55,9,11,16, 0,97,10,34,11,95,159,2,10,9,11,159,2,59,9,11,159,2,60,9,11, -16,82,2,4,2,2,2,37,2,2,2,20,2,2,2,32,2,2,2,14,2, -2,2,5,2,2,2,26,2,2,2,7,2,2,2,24,2,2,2,15,2,2, -2,40,2,2,2,23,2,2,2,30,2,2,2,43,2,2,2,44,2,2,2, -29,2,2,2,45,2,2,2,28,2,2,2,16,2,2,2,46,2,2,2,35, -2,2,2,21,2,2,2,61,2,2,2,39,2,2,2,31,2,2,2,38,2, -2,2,8,2,2,2,42,2,2,2,17,2,2,2,18,2,2,2,62,2,2, -2,33,2,2,2,6,2,2,2,36,2,2,2,9,2,2,2,22,2,2,2, -41,2,2,2,19,2,2,2,47,2,2,2,13,2,2,2,3,2,2,18,97, +16,82,2,61,2,2,2,37,2,2,2,19,2,2,2,40,2,2,2,18,2, +2,2,13,2,2,2,26,2,2,2,7,2,2,2,38,2,2,2,20,2,2, +2,3,2,2,2,42,2,2,2,30,2,2,2,23,2,2,2,4,2,2,2, +44,2,2,2,22,2,2,2,41,2,2,2,5,2,2,2,24,2,2,2,28, +2,2,2,17,2,2,2,39,2,2,2,6,2,2,2,21,2,2,2,16,2, +2,2,45,2,2,2,46,2,2,2,62,2,2,2,35,2,2,2,32,2,2, +2,14,2,2,2,8,2,2,2,31,2,2,2,43,2,2,2,47,2,2,2, +15,2,2,2,36,2,2,2,29,2,2,2,33,2,2,2,9,2,2,18,97, 2,58,8,146,4,8,145,4,8,144,4,8,143,4,98,8,146,4,8,145,4, 8,144,4,8,143,4,16,8,11,11,3,1,4,103,54,57,50,3,1,4,103, 54,57,51,3,1,4,103,54,57,52,2,66,2,66,2,66,16,6,11,11,2, @@ -2989,7 +2993,7 @@ 2,103,2,103,2,103,2,103,2,103,2,103,2,103,16,16,11,11,2,67,2, 82,2,68,2,84,2,85,2,93,2,94,2,104,2,104,2,104,2,104,2,104, 2,104,2,104,18,158,96,10,2,92,93,94,2,65,2,86,96,2,81,95,2, -47,2,65,2,87,159,2,1,2,88,2,89,160,2,43,2,65,2,90,2,91, +47,2,65,2,87,159,2,1,2,88,2,89,160,2,44,2,65,2,90,2,91, 8,167,4,18,16,2,95,2,83,93,8,155,51,16,4,11,11,2,102,3,1, 7,101,110,118,51,57,51,49,95,9,8,155,51,2,56,30,2,55,73,115,116, 120,45,99,104,101,99,107,47,101,115,99,7,30,2,55,70,115,116,120,45,114, @@ -3014,11 +3018,11 @@ 134,2,2,135,2,16,4,11,11,2,134,2,2,135,2,16,4,11,11,2,65, 3,1,6,101,110,118,52,53,52,95,8,193,11,16,0,97,10,35,11,95,159, 64,35,37,115,99,9,11,159,2,60,9,11,159,2,55,9,11,16,0,97,10, -34,11,95,159,2,10,9,11,159,2,60,9,11,159,2,55,9,11,16,14,2, -126,2,133,2,2,57,2,133,2,66,115,121,110,116,97,120,2,133,2,75,115, -117,98,115,116,105,116,117,116,101,45,115,116,111,112,2,133,2,73,115,121,110, -116,97,120,45,99,97,115,101,42,42,2,133,2,78,112,97,116,116,101,114,110, -45,115,117,98,115,116,105,116,117,116,101,2,133,2,2,95,2,133,2,18,16, +34,11,95,159,2,10,9,11,159,2,60,9,11,159,2,55,9,11,16,14,66, +115,121,110,116,97,120,2,133,2,2,57,2,133,2,73,115,121,110,116,97,120, +45,99,97,115,101,42,42,2,133,2,2,95,2,133,2,78,112,97,116,116,101, +114,110,45,115,117,98,115,116,105,116,117,116,101,2,133,2,2,126,2,133,2, +75,115,117,98,115,116,105,116,117,116,101,45,115,116,111,112,2,133,2,18,16, 2,103,93,158,159,10,2,113,2,112,8,184,4,8,131,5,8,130,5,8,129, 5,8,128,5,8,191,4,8,190,4,8,189,4,13,16,4,35,2,133,2,2, 56,11,93,8,153,52,16,4,11,11,2,102,2,136,2,95,9,8,153,52,2, @@ -3040,7 +3044,7 @@ 65,3,1,7,101,110,118,52,48,56,49,18,97,2,58,8,146,4,8,145,4, 8,144,4,8,141,5,98,8,146,4,8,145,4,8,144,4,8,141,5,16,6, 11,11,3,1,4,103,55,55,51,3,1,4,103,55,55,52,2,141,2,2,141, -2,16,6,11,11,2,46,63,101,120,112,2,142,2,2,142,2,18,158,95,10, +2,16,6,11,11,2,37,63,101,120,112,2,142,2,2,142,2,18,158,95,10, 2,4,95,2,143,2,9,2,140,2,8,143,5,95,8,146,4,8,145,4,8, 144,4,18,158,2,3,8,145,5,18,158,2,4,8,145,5,18,158,2,5,8, 145,5,18,158,2,6,8,145,5,18,158,2,7,8,145,5,16,4,11,11,2, @@ -3190,9 +3194,9 @@ 116,105,109,101,58,32,126,115,32,114,101,97,108,32,116,105,109,101,58,32,126, 115,32,103,99,32,116,105,109,101,58,32,126,115,126,110,2,191,3,2,128,4, 2,129,4,95,65,97,112,112,108,121,66,118,97,108,117,101,115,2,82,8,180, -6,159,34,20,99,159,34,16,1,20,24,2,1,16,0,83,158,40,20,96,114, +6,159,34,20,100,159,34,16,1,20,24,2,1,16,0,83,158,40,20,97,114, 73,35,37,109,111,114,101,45,115,99,104,101,109,101,2,2,10,10,10,48,80, -158,34,34,20,99,159,34,16,31,30,2,2,2,3,193,30,2,2,2,4,193, +158,34,34,20,100,159,34,16,31,30,2,2,2,3,193,30,2,2,2,4,193, 30,2,2,2,5,193,30,2,2,2,6,193,30,2,2,2,7,193,30,2,2, 2,8,193,30,2,2,2,9,193,30,2,10,2,11,3,30,2,10,2,12,4, 30,2,2,2,13,193,30,2,2,2,14,193,30,2,2,2,15,193,30,2,2, @@ -3208,7 +3212,7 @@ 2,43,2,44,2,45,2,46,16,19,11,11,11,11,11,11,11,11,11,11,11, 11,11,11,11,11,11,11,11,16,19,2,26,2,33,2,13,2,24,2,9,2, 8,2,5,2,35,2,36,2,37,2,38,2,39,2,40,2,41,2,42,2,43, -2,44,2,45,2,46,41,53,106,16,5,93,2,47,89,162,34,35,51,9,223, +2,44,2,45,2,46,41,53,106,16,5,93,2,47,89,162,34,35,56,9,223, 0,27,249,22,152,3,20,15,159,37,34,43,196,27,28,248,80,158,37,34,194, 249,80,158,38,35,248,80,158,39,36,196,27,248,80,158,40,37,197,28,248,80, 158,40,34,193,249,80,158,41,35,248,80,158,42,36,195,27,248,80,158,43,37, @@ -3216,20 +3220,20 @@ 248,80,158,46,34,193,249,80,158,47,38,248,80,158,48,36,195,248,80,158,48, 39,248,80,158,49,37,196,11,248,80,158,45,39,248,80,158,46,37,196,11,11, 11,28,192,27,248,22,58,194,27,248,22,84,195,27,248,22,86,196,28,248,22, -47,248,22,153,3,194,27,249,22,67,195,196,251,80,158,44,40,20,15,159,44, -35,43,21,94,2,48,2,49,248,22,59,197,248,22,58,197,27,249,22,67,195, +47,248,22,153,3,194,27,249,22,67,196,195,251,80,158,44,40,20,15,159,44, +35,43,21,94,2,48,2,49,248,22,58,197,248,22,59,197,27,249,22,67,195, 196,251,80,158,44,40,20,15,159,44,36,43,21,94,2,50,2,51,248,22,59, 197,248,22,58,197,27,28,248,80,158,38,34,195,249,80,158,39,35,248,80,158, 40,36,197,27,248,80,158,41,37,198,28,248,80,158,41,34,193,249,80,158,42, 35,248,80,158,43,36,195,27,248,80,158,44,37,196,28,248,80,158,44,34,193, 249,80,158,45,38,27,248,80,158,47,36,196,28,248,80,158,47,41,193,248,80, 158,47,42,193,11,248,80,158,46,39,248,80,158,47,37,196,11,11,11,28,192, -27,248,22,58,194,27,248,22,84,195,27,248,22,86,196,27,249,22,67,195,196, -251,80,158,45,40,20,15,159,45,37,43,21,94,2,52,2,53,248,22,59,197, -248,22,58,197,250,22,176,8,11,2,54,197,34,20,99,159,34,16,9,2,134, +27,248,22,58,194,27,248,22,84,195,27,248,22,86,196,27,249,22,67,196,195, +251,80,158,45,40,20,15,159,45,37,43,21,94,2,52,2,53,248,22,58,197, +248,22,59,197,250,22,177,8,11,2,54,197,34,20,100,159,34,16,9,2,134, 4,2,135,4,2,136,4,2,137,4,2,138,4,2,139,4,2,140,4,2,141, 4,2,142,4,16,4,33,147,4,33,149,4,33,150,4,33,152,4,11,16,5, -93,2,43,89,162,34,35,8,27,9,223,0,27,249,22,152,3,20,15,159,37, +93,2,44,89,162,34,35,8,32,9,223,0,27,249,22,152,3,20,15,159,37, 34,46,196,27,28,248,80,158,37,34,194,249,80,158,38,35,248,80,158,39,36, 196,27,248,80,158,40,37,197,28,248,80,158,40,34,193,249,80,158,41,38,248, 80,158,42,36,195,248,80,158,42,39,248,80,158,43,37,196,11,11,28,192,27, @@ -3255,9 +3259,9 @@ 28,248,80,158,54,42,193,248,80,158,54,43,193,11,11,11,248,80,158,47,39, 248,80,158,48,37,196,11,11,11,28,192,27,248,22,58,194,27,248,22,84,195, 27,248,22,93,196,27,248,22,96,197,27,248,22,95,198,249,80,158,45,44,204, -27,251,22,67,200,201,199,202,250,80,158,49,45,89,162,34,34,43,9,224,15, +27,251,22,67,202,200,201,199,250,80,158,49,45,89,162,34,34,48,9,224,15, 3,253,80,158,41,40,20,15,159,41,38,46,21,96,2,77,2,78,2,79,2, -80,248,22,94,199,248,22,84,199,248,22,58,199,248,22,93,199,21,95,2,81, +80,248,22,58,199,248,22,93,199,248,22,84,199,248,22,94,199,21,95,2,81, 95,2,47,2,82,94,2,68,2,83,96,2,1,2,84,2,85,2,83,20,15, 159,49,39,46,27,28,248,80,158,40,34,197,249,80,158,41,35,248,80,158,42, 36,199,27,248,80,158,43,37,200,28,248,80,158,43,34,193,249,80,158,44,35, @@ -3271,12 +3275,12 @@ 158,52,37,196,28,248,80,158,52,42,193,248,80,158,52,43,193,11,11,11,11, 11,28,192,27,248,22,58,194,27,248,22,84,195,27,248,22,93,196,27,248,22, 96,197,27,249,22,76,199,38,27,249,22,76,200,39,27,249,22,75,201,40,249, -80,158,48,44,23,15,27,253,22,67,201,204,202,205,203,206,250,80,158,52,45, -89,162,34,34,46,9,224,18,3,26,8,80,158,43,40,20,15,159,43,40,46, -21,98,2,86,2,87,2,88,2,89,2,90,2,91,249,22,75,202,39,248,22, -96,201,248,22,84,201,249,22,76,202,38,248,22,93,201,248,22,58,201,21,95, +80,158,48,44,23,15,27,253,22,67,204,206,205,202,203,201,250,80,158,52,45, +89,162,34,34,51,9,224,18,3,26,8,80,158,43,40,20,15,159,43,40,46, +21,98,2,86,2,87,2,88,2,89,2,90,2,91,248,22,84,201,248,22,93, +201,248,22,58,201,249,22,76,202,38,248,22,96,201,249,22,75,202,39,21,95, 2,92,93,94,2,65,2,82,96,2,81,95,2,47,2,65,94,2,68,2,83, -96,2,1,2,84,2,85,2,83,97,2,43,2,65,2,93,2,94,2,83,20, +96,2,1,2,84,2,85,2,83,97,2,44,2,65,2,93,2,94,2,83,20, 15,159,52,41,46,27,28,248,80,158,41,34,198,249,80,158,42,35,248,80,158, 43,36,200,27,248,80,158,44,37,201,28,248,80,158,44,34,193,27,28,248,22, 149,3,194,193,201,249,80,158,46,35,248,80,158,47,36,196,27,248,80,158,48, @@ -3287,7 +3291,7 @@ 58,42,193,248,22,65,248,80,158,59,43,194,11,11,11,27,248,80,158,52,37, 197,250,22,152,3,198,195,198,11,11,11,28,192,27,248,22,58,194,27,248,22, 84,195,27,248,22,93,196,27,248,22,96,197,27,249,22,76,199,38,27,249,22, -75,200,39,251,22,176,8,11,6,33,33,98,97,100,32,115,121,110,116,97,120, +75,200,39,251,22,177,8,11,6,33,33,98,97,100,32,115,121,110,116,97,120, 32,40,110,111,116,32,97,32,100,97,116,117,109,32,115,101,113,117,101,110,99, 101,41,23,17,199,27,28,248,80,158,42,34,199,249,80,158,43,35,248,80,158, 44,36,201,27,248,80,158,45,37,202,28,248,80,158,45,34,193,27,28,248,22, @@ -3295,27 +3299,27 @@ 37,197,28,248,80,158,49,34,193,27,28,248,22,149,3,194,193,196,249,80,158, 51,35,248,80,158,52,36,196,27,248,80,158,53,37,197,250,22,152,3,198,195, 198,11,11,11,28,192,27,248,22,58,194,27,248,22,84,195,27,248,22,93,196, -27,248,22,94,197,251,22,176,8,11,6,52,52,98,97,100,32,115,121,110,116, +27,248,22,94,197,251,22,177,8,11,6,52,52,98,97,100,32,115,121,110,116, 97,120,32,40,109,105,115,115,105,110,103,32,101,120,112,114,101,115,115,105,111, 110,32,97,102,116,101,114,32,100,97,116,117,109,32,115,101,113,117,101,110,99, 101,41,23,16,197,27,28,248,80,158,43,34,200,249,80,158,44,35,248,80,158, 45,36,202,27,248,80,158,46,37,203,250,22,152,3,205,195,205,11,28,192,27, -248,22,58,194,27,248,22,59,195,28,248,22,63,248,22,153,3,194,250,22,176, -8,11,2,54,204,250,22,176,8,11,6,31,31,98,97,100,32,115,121,110,116, +248,22,58,194,27,248,22,59,195,28,248,22,63,248,22,153,3,194,250,22,177, +8,11,2,54,204,250,22,177,8,11,6,31,31,98,97,100,32,115,121,110,116, 97,120,32,40,105,108,108,101,103,97,108,32,117,115,101,32,111,102,32,96,46, -39,41,206,250,22,176,8,11,2,54,202,34,20,99,159,34,16,12,2,134,4, +39,41,206,250,22,177,8,11,2,54,202,34,20,100,159,34,16,12,2,134,4, 2,135,4,2,136,4,2,137,4,2,138,4,2,139,4,2,140,4,2,153,4, 2,141,4,2,142,4,2,154,4,2,155,4,16,8,33,158,4,33,160,4,33, 161,4,33,163,4,33,165,4,33,166,4,33,168,4,33,169,4,11,16,5,93, -2,42,87,95,83,158,34,16,2,89,162,35,35,41,9,223,0,251,80,158,38, +2,45,87,95,83,158,34,16,2,89,162,35,35,46,9,223,0,251,80,158,38, 47,20,15,159,38,46,49,21,94,2,105,2,106,248,22,58,198,248,22,84,198, -80,159,34,8,33,35,83,158,34,16,2,89,162,35,35,41,9,223,0,251,80, +80,159,34,8,33,35,83,158,34,16,2,89,162,35,35,46,9,223,0,251,80, 158,38,47,20,15,159,38,42,49,21,94,2,107,2,108,248,22,58,198,248,22, -84,198,80,159,34,8,32,35,89,162,34,35,8,28,9,223,0,27,249,22,152, +84,198,80,159,34,8,32,35,89,162,34,35,8,33,9,223,0,27,249,22,152, 3,20,15,159,37,34,49,196,27,28,248,80,158,37,34,194,249,80,158,38,35, 248,80,158,39,36,196,27,248,80,158,40,37,197,28,248,80,158,40,34,193,249, -80,158,41,38,27,248,80,158,43,36,196,28,248,80,158,43,39,193,248,22,8, -89,162,34,35,41,9,224,9,1,27,249,22,2,89,162,34,35,50,9,224,4, +80,158,41,38,27,248,80,158,43,36,196,28,248,80,158,43,39,193,248,22,9, +89,162,34,35,46,9,224,9,1,27,249,22,2,89,162,34,35,55,9,224,4, 5,249,80,158,37,40,28,248,80,158,38,34,197,249,80,158,39,35,248,80,158, 40,36,199,27,248,80,158,41,37,200,28,248,80,158,41,34,193,27,28,248,22, 149,3,194,193,200,249,80,158,43,35,248,80,158,44,36,196,27,248,80,158,45, @@ -3328,326 +3332,326 @@ 193,11,11,11,11,28,192,27,248,22,58,194,27,248,22,84,195,27,248,22,93, 196,27,248,22,96,197,27,249,22,76,199,38,27,249,22,76,200,39,27,249,22, 75,201,40,27,249,22,152,3,20,15,159,46,35,49,250,22,2,89,162,34,36, -45,9,224,15,16,27,249,22,152,3,20,15,159,38,36,49,198,27,248,80,158, +50,9,224,15,16,27,249,22,152,3,20,15,159,38,36,49,198,27,248,80,158, 38,43,194,28,192,196,27,28,248,80,158,39,34,195,249,80,158,40,38,248,80, 158,41,36,197,248,80,158,41,43,248,80,158,42,37,198,11,28,192,192,250,22, -176,8,11,6,19,19,98,97,100,32,118,97,114,105,97,98,108,101,32,115,121, +177,8,11,6,19,19,98,97,100,32,118,97,114,105,97,98,108,101,32,115,121, 110,116,97,120,198,248,22,159,3,249,80,158,52,44,20,15,159,52,37,49,206, 248,22,159,3,249,80,158,52,44,20,15,159,52,38,49,204,27,28,248,80,158, 46,39,194,248,80,158,46,41,194,11,28,192,27,249,22,152,3,20,15,159,48, 39,49,249,80,158,50,44,20,15,159,50,40,49,200,27,248,80,158,48,43,194, -28,192,249,80,158,49,45,23,16,27,252,22,67,23,17,204,23,16,206,202,250, -80,158,53,46,89,162,34,34,47,9,224,19,3,252,80,158,40,47,20,15,159, +28,192,249,80,158,49,45,23,16,27,252,22,67,202,204,23,16,23,17,206,250, +80,158,53,46,89,162,34,34,52,9,224,19,3,252,80,158,40,47,20,15,159, 40,41,49,21,95,2,109,2,110,2,111,250,22,2,80,159,43,8,32,35,248, -22,58,201,248,22,93,201,248,22,96,198,249,22,71,248,22,84,200,250,80,158, -45,47,20,15,159,45,43,49,21,93,2,112,248,22,95,203,21,96,2,92,2, +22,96,201,248,22,93,201,248,22,95,198,249,22,71,248,22,84,200,250,80,158, +45,47,20,15,159,45,43,49,21,93,2,112,248,22,58,203,21,96,2,92,2, 113,94,94,2,114,2,115,2,83,95,2,81,94,2,116,2,117,96,2,1,2, 118,2,83,95,2,113,2,119,2,83,20,15,159,53,44,49,27,28,248,80,158, 49,34,195,249,80,158,50,35,248,80,158,51,36,197,27,248,80,158,52,37,198, 28,248,80,158,52,39,193,248,80,158,52,41,193,11,11,28,192,27,248,22,58, -194,27,248,22,59,195,249,80,158,52,45,23,19,27,254,22,67,23,19,23,22, -23,17,23,21,23,15,202,203,250,80,158,56,46,89,162,34,34,50,9,224,22, +194,27,248,22,59,195,249,80,158,52,45,23,19,27,254,22,67,203,23,17,23, +21,23,19,23,22,202,23,15,250,80,158,56,46,89,162,34,34,55,9,224,22, 3,254,80,158,42,47,20,15,159,42,45,49,21,97,2,120,2,121,2,122,2, -123,2,124,250,22,2,80,159,45,8,33,35,248,22,84,203,248,22,96,203,248, -22,58,200,249,22,75,201,40,249,22,76,201,39,249,22,71,248,22,93,202,250, -80,158,47,47,20,15,159,47,47,49,21,93,2,125,249,22,76,206,38,21,96, +123,2,124,250,22,2,80,159,45,8,33,35,249,22,76,204,38,248,22,93,203, +248,22,96,200,248,22,58,200,249,22,76,201,39,249,22,71,248,22,84,202,250, +80,158,47,47,20,15,159,47,47,49,21,93,2,125,249,22,75,206,40,21,96, 2,92,2,113,94,94,2,114,2,115,2,83,96,2,81,2,117,96,2,1,2, 84,2,85,2,83,96,2,1,2,118,2,83,95,2,113,2,119,2,83,20,15, -159,56,48,49,250,22,176,8,11,2,54,197,248,80,158,46,48,20,15,159,46, -49,49,250,22,176,8,11,2,54,196,34,20,99,159,36,16,15,2,134,4,2, +159,56,48,49,250,22,177,8,11,2,54,197,248,80,158,46,48,20,15,159,46, +49,49,250,22,177,8,11,2,54,196,34,20,100,159,36,16,15,2,134,4,2, 135,4,2,136,4,2,137,4,2,138,4,2,141,4,2,170,4,2,142,4,2, 171,4,2,139,4,2,172,4,2,154,4,2,155,4,2,140,4,2,173,4,16, 16,33,175,4,33,179,4,33,180,4,33,181,4,33,182,4,33,185,4,33,186, 4,33,187,4,33,188,4,33,132,5,33,133,5,33,135,5,33,136,5,33,137, -5,33,138,5,33,140,5,11,16,5,93,2,46,89,162,34,35,45,9,223,0, +5,33,138,5,33,140,5,11,16,5,93,2,37,89,162,34,35,50,9,223,0, 27,249,22,152,3,20,15,159,37,34,42,196,27,28,248,80,158,37,34,194,249, 80,158,38,35,248,80,158,39,36,196,27,248,80,158,40,37,197,28,248,80,158, 40,34,193,249,80,158,41,38,248,80,158,42,36,195,248,80,158,42,39,248,80, 158,43,37,196,11,11,28,192,27,248,22,58,194,27,248,22,59,195,249,80,158, 40,40,199,250,80,158,43,41,20,15,159,43,35,42,21,93,2,140,2,197,250, -22,176,8,11,2,54,196,34,20,99,159,34,16,8,2,134,4,2,135,4,2, +22,177,8,11,2,54,196,34,20,100,159,34,16,8,2,134,4,2,135,4,2, 136,4,2,137,4,2,138,4,2,139,4,2,154,4,2,140,4,16,2,33,142, -5,33,144,5,11,16,5,93,2,61,27,248,22,177,13,10,253,22,66,248,199, +5,33,144,5,11,16,5,93,2,62,27,248,22,178,13,10,253,22,66,248,199, 20,15,159,42,34,34,248,199,20,15,159,42,35,34,248,199,20,15,159,42,36, 34,248,22,66,248,200,20,15,159,43,37,34,248,22,66,248,200,20,15,159,43, -38,34,10,43,20,99,159,34,16,0,16,5,33,146,5,33,147,5,33,148,5, -33,149,5,33,150,5,11,16,5,93,2,40,89,162,34,35,55,9,223,0,27, -249,22,152,3,20,15,159,37,34,49,196,27,28,248,80,158,37,34,194,249,80, -158,38,35,248,80,158,39,36,196,27,248,80,158,40,37,197,28,248,80,158,40, -34,193,28,248,80,158,40,38,248,80,158,41,36,194,27,248,80,158,41,37,194, -28,248,80,158,41,34,193,249,80,158,42,35,248,80,158,43,36,195,27,248,80, -158,44,37,196,28,248,80,158,44,39,193,248,80,158,44,40,193,11,11,11,11, -11,28,192,27,248,22,58,194,27,248,22,84,195,27,248,22,86,196,27,249,22, -67,195,196,251,80,158,44,41,20,15,159,44,35,49,21,94,2,144,2,2,145, -2,248,22,59,197,248,22,58,197,27,28,248,80,158,38,34,195,249,80,158,39, -35,248,80,158,40,36,197,27,248,80,158,41,37,198,28,248,80,158,41,34,193, -249,80,158,42,42,27,248,80,158,44,36,196,28,248,80,158,44,39,193,248,22, -8,89,162,34,35,41,9,224,10,1,27,249,22,2,89,162,34,35,46,9,224, -4,5,249,80,158,37,43,28,248,80,158,38,34,197,249,80,158,39,35,248,80, -158,40,36,199,27,248,80,158,41,37,200,28,248,80,158,41,34,193,249,80,158, -42,35,248,80,158,43,36,195,248,80,158,43,38,248,80,158,44,37,196,11,11, -194,248,80,158,39,40,196,28,248,22,63,193,21,94,9,9,248,80,158,37,44, -193,11,27,248,80,158,44,37,196,28,248,80,158,44,34,193,249,80,158,45,35, -248,80,158,46,36,195,27,248,80,158,47,37,196,28,248,80,158,47,39,193,248, -80,158,47,40,193,11,11,11,11,28,192,27,248,22,58,194,27,248,22,84,195, -27,248,22,93,196,27,248,22,96,197,27,248,22,95,198,27,249,22,152,3,20, -15,159,45,36,49,249,22,1,22,71,250,22,2,22,65,248,22,159,3,249,80, -158,53,45,20,15,159,53,37,49,206,248,22,159,3,249,80,158,53,45,20,15, -159,53,38,49,205,27,28,248,80,158,45,39,194,248,80,158,45,40,194,11,28, -192,249,80,158,46,46,205,27,250,22,67,198,200,201,250,80,158,50,47,89,162, -34,34,42,9,224,16,3,252,80,158,40,41,20,15,159,40,39,49,21,95,2, -146,2,2,147,2,2,148,2,248,22,58,198,248,22,86,198,248,22,84,198,21, -96,2,149,2,2,12,96,2,11,95,2,150,2,11,2,12,2,151,2,2,83, -97,2,92,9,2,152,2,2,153,2,2,83,20,15,159,50,40,49,248,80,158, -45,48,20,15,159,45,41,49,250,22,176,8,11,2,54,197,34,20,99,159,34, -16,15,2,134,4,2,135,4,2,136,4,2,137,4,2,139,4,2,141,4,2, -142,4,2,140,4,2,138,4,2,170,4,2,171,4,2,172,4,2,154,4,2, -155,4,2,173,4,16,8,33,152,5,33,154,5,33,158,5,33,159,5,33,160, -5,33,162,5,33,163,5,33,165,5,11,16,5,93,2,41,89,162,34,35,51, -9,223,0,27,249,22,152,3,20,15,159,37,34,42,196,27,28,248,80,158,37, -34,194,249,80,158,38,35,248,80,158,39,36,196,27,248,80,158,40,37,197,28, -248,80,158,40,34,193,249,80,158,41,35,248,80,158,42,36,195,27,248,80,158, -43,37,196,28,248,80,158,43,34,193,249,80,158,44,35,248,80,158,45,36,195, -27,248,80,158,46,37,196,28,248,80,158,46,38,193,248,80,158,46,39,193,11, -11,11,11,28,192,27,248,22,58,194,27,248,22,84,195,27,248,22,93,196,27, -248,22,94,197,249,80,158,42,40,201,27,250,22,67,198,199,200,252,80,158,48, -41,20,15,159,48,35,42,21,95,2,160,2,2,161,2,2,162,2,248,22,86, -198,248,22,84,198,248,22,58,198,250,22,176,8,11,2,54,196,34,20,99,159, -34,16,8,2,134,4,2,135,4,2,136,4,2,137,4,2,141,4,2,142,4, -2,154,4,2,140,4,16,2,33,167,5,33,169,5,11,16,5,93,2,62,27, -248,22,177,13,10,253,22,66,248,199,20,15,159,42,34,34,248,199,20,15,159, -42,35,34,248,199,20,15,159,42,36,34,248,22,66,248,200,20,15,159,43,37, -34,248,22,66,248,200,20,15,159,43,38,34,10,43,20,99,159,34,16,0,16, -5,33,170,5,33,171,5,33,172,5,33,173,5,33,174,5,11,16,5,94,2, -36,2,38,87,96,83,158,34,16,2,89,162,35,35,41,9,223,0,251,80,158, -38,42,20,15,159,38,46,50,21,94,2,165,2,2,166,2,248,22,58,198,248, -22,84,198,80,159,34,8,35,35,83,158,34,16,2,89,162,35,35,41,9,223, -0,251,80,158,38,42,20,15,159,38,45,50,21,94,2,167,2,2,168,2,248, -22,58,198,248,22,84,198,80,159,34,8,34,35,83,158,34,16,2,89,162,35, -35,41,9,223,0,251,80,158,38,42,20,15,159,38,44,50,21,94,2,169,2, -2,170,2,248,22,58,198,248,22,84,198,80,159,34,8,33,35,27,89,162,8, -36,35,36,62,119,104,223,1,89,162,34,35,8,26,9,224,0,1,27,249,22, -152,3,20,15,159,38,34,50,197,27,28,248,80,158,38,34,194,249,80,158,39, -35,248,80,158,40,36,196,27,248,80,158,41,37,197,28,248,80,158,41,34,193, -28,248,80,158,41,38,248,80,158,42,36,194,27,248,80,158,42,37,194,28,248, -80,158,42,34,193,249,80,158,43,35,248,80,158,44,36,195,27,248,80,158,45, -37,196,28,248,80,158,45,39,193,248,80,158,45,40,193,11,11,11,11,11,28, -192,27,248,22,58,194,27,248,22,84,195,27,248,22,86,196,249,80,158,42,41, -201,27,249,22,67,197,198,251,80,158,47,42,20,15,159,47,35,50,21,94,2, -171,2,2,172,2,248,22,59,197,248,22,58,197,27,28,248,80,158,39,34,195, -249,80,158,40,35,248,80,158,41,36,197,27,248,80,158,42,37,198,28,248,80, -158,42,34,193,249,80,158,43,43,27,248,80,158,45,36,196,28,248,80,158,45, -39,193,248,22,8,89,162,34,35,41,9,224,11,1,27,249,22,2,89,162,34, -35,46,9,224,4,5,249,80,158,37,44,28,248,80,158,38,34,197,249,80,158, -39,35,248,80,158,40,36,199,27,248,80,158,41,37,200,28,248,80,158,41,34, -193,249,80,158,42,35,248,80,158,43,36,195,248,80,158,43,38,248,80,158,44, -37,196,11,11,194,248,80,158,39,40,196,28,248,22,63,193,21,94,9,9,248, -80,158,37,45,193,11,27,248,80,158,45,37,196,28,248,80,158,45,34,193,249, -80,158,46,35,248,80,158,47,36,195,27,248,80,158,48,37,196,28,248,80,158, -48,39,193,248,80,158,48,40,193,11,11,11,11,28,192,27,248,22,58,194,27, -248,22,84,195,27,248,22,93,196,27,248,22,96,197,27,248,22,95,198,27,249, -22,152,3,20,15,159,46,36,50,248,80,158,47,46,249,22,2,32,0,89,162, -8,44,35,35,9,222,1,23,119,105,116,104,45,104,97,110,100,108,101,114,115, -45,112,114,101,100,105,99,97,116,101,248,22,159,3,249,80,158,52,47,20,15, -159,52,37,50,204,27,249,22,152,3,20,15,159,47,38,50,248,80,158,48,46, -249,22,2,32,0,89,162,8,44,35,35,9,222,1,21,119,105,116,104,45,104, -97,110,100,108,101,114,115,45,104,97,110,100,108,101,114,248,22,159,3,249,80, -158,53,47,20,15,159,53,39,50,204,27,28,248,80,158,47,39,195,248,80,158, -47,40,195,11,28,192,27,28,248,80,158,48,39,195,248,80,158,48,40,195,11, -28,192,27,249,22,152,3,20,15,159,50,40,50,28,23,15,20,15,159,50,41, -50,20,15,159,50,42,50,249,80,158,50,41,23,17,27,254,22,67,23,17,23, -16,23,18,23,15,204,202,203,250,80,158,54,48,89,162,34,34,50,9,224,20, -3,254,80,158,42,42,20,15,159,42,43,50,21,97,2,173,2,2,174,2,2, -175,2,2,176,2,2,177,2,249,22,71,250,22,2,80,159,47,8,33,35,249, -22,76,206,38,248,22,93,205,250,22,2,80,159,47,8,34,35,249,22,75,206, -40,248,22,58,205,249,22,76,201,39,250,22,2,80,159,45,8,35,35,249,22, -76,204,38,249,22,75,204,40,248,22,84,200,248,22,96,200,21,95,2,92,96, -94,2,178,2,2,179,2,2,83,94,2,180,2,2,181,2,2,83,95,2,92, -93,94,2,182,2,95,2,150,2,11,2,25,96,2,149,2,2,25,2,30,96, -2,183,2,95,2,143,2,9,96,2,149,2,2,25,2,182,2,96,2,149,2, -2,34,95,2,143,2,93,2,184,2,95,2,185,2,2,32,95,2,143,2,9, -96,63,117,113,49,2,184,2,2,182,2,95,2,186,2,95,2,187,2,2,178, -2,2,180,2,2,83,97,2,92,9,2,152,2,2,153,2,2,83,2,32,95, -2,143,2,93,2,188,2,93,2,188,2,20,15,159,54,47,50,248,80,158,48, -49,20,15,159,48,48,50,248,80,158,47,49,20,15,159,47,49,50,250,22,176, -8,11,2,54,197,249,22,7,248,195,10,248,195,11,38,20,99,159,37,16,16, -2,134,4,2,135,4,2,136,4,2,137,4,2,139,4,2,141,4,2,142,4, -2,154,4,2,140,4,2,138,4,2,170,4,2,171,4,2,175,5,2,172,4, -2,155,4,2,173,4,16,16,33,178,5,33,180,5,33,184,5,33,185,5,33, -186,5,33,187,5,33,189,5,33,190,5,33,191,5,33,128,6,33,129,6,33, -130,6,33,131,6,33,132,6,33,134,6,33,136,6,11,16,5,93,2,37,87, -95,83,158,34,16,2,89,162,34,36,49,68,116,114,121,45,110,101,120,116,223, -0,27,28,248,80,158,36,34,195,249,80,158,37,35,248,80,158,38,36,197,27, -248,80,158,39,37,198,28,248,80,158,39,34,193,249,80,158,40,39,27,248,80, -158,42,36,196,28,248,80,158,42,41,193,248,22,65,248,80,158,43,42,194,11, -27,248,80,158,42,37,196,28,248,80,158,42,34,193,249,80,158,43,39,248,80, -158,44,36,195,248,80,158,44,38,248,80,158,45,37,196,11,11,11,28,192,27, -248,22,58,194,27,248,22,84,195,27,248,22,86,196,28,27,248,80,158,40,42, -249,80,158,42,43,20,15,159,42,36,50,197,87,94,249,22,3,89,162,34,35, -41,9,224,7,9,28,248,80,158,36,44,195,12,251,22,176,8,11,6,17,17, -110,111,116,32,97,110,32,105,100,101,110,116,105,102,105,101,114,196,198,194,27, -248,80,158,41,45,194,28,192,251,22,176,8,11,6,20,20,100,117,112,108,105, -99,97,116,101,32,105,100,101,110,116,105,102,105,101,114,204,196,12,27,249,22, -152,3,20,15,159,41,37,50,248,80,158,42,46,249,80,158,44,43,20,15,159, -44,38,50,199,27,28,248,80,158,41,41,194,248,80,158,41,42,194,11,28,192, -249,80,158,42,47,202,27,250,22,67,198,200,201,250,80,158,46,48,89,162,34, -34,45,9,224,12,3,252,80,158,40,40,20,15,159,40,39,50,21,95,2,132, -3,2,133,3,2,134,3,248,22,58,198,248,22,84,198,250,22,2,80,159,43, -8,27,35,248,22,86,201,248,22,58,201,21,96,2,135,3,93,94,94,2,136, -3,2,83,2,153,2,95,2,137,3,2,138,3,2,136,3,2,83,20,15,159, -46,41,50,248,80,158,41,49,20,15,159,41,42,50,250,22,176,8,11,2,54, -200,250,22,176,8,11,2,54,197,80,159,34,8,28,35,83,158,34,16,2,89, -162,35,35,41,9,223,0,251,80,158,38,40,20,15,159,38,40,50,21,94,2, -139,3,2,140,3,248,22,58,198,248,22,84,198,80,159,34,8,27,35,89,162, -34,35,49,9,223,0,27,249,22,152,3,20,15,159,37,34,50,196,27,28,248, -80,158,37,34,194,249,80,158,38,35,248,80,158,39,36,196,27,248,80,158,40, -37,197,28,248,80,158,40,34,193,28,248,80,158,40,38,248,80,158,41,36,194, -27,248,80,158,41,37,194,28,248,80,158,41,34,193,249,80,158,42,39,248,80, -158,43,36,195,248,80,158,43,38,248,80,158,44,37,196,11,11,11,11,28,192, -27,248,22,58,194,27,248,22,59,195,250,80,158,41,40,20,15,159,41,35,50, -21,93,2,141,3,195,27,28,248,80,158,38,34,195,249,80,158,39,35,248,80, -158,40,36,197,27,248,80,158,41,37,198,28,248,80,158,41,34,193,249,80,158, -42,39,27,248,80,158,44,36,196,28,248,80,158,44,34,193,249,80,158,45,35, -248,80,158,46,36,195,248,80,158,46,38,248,80,158,47,37,196,11,27,248,80, -158,44,37,196,28,248,80,158,44,34,193,249,80,158,45,39,248,80,158,46,36, -195,248,80,158,46,38,248,80,158,47,37,196,11,11,11,28,192,27,248,22,58, -194,27,248,22,84,195,27,248,22,86,196,28,248,80,158,41,44,194,27,249,22, -67,195,196,251,80,158,45,40,20,15,159,45,43,50,21,94,2,142,3,2,143, -3,248,22,59,197,248,22,58,197,249,80,159,42,8,28,35,199,201,249,80,159, -39,8,28,35,196,198,34,20,99,159,36,16,16,2,134,4,2,135,4,2,136, -4,2,137,4,2,139,4,2,138,4,2,140,4,2,141,4,2,142,4,2,172, -4,2,153,4,30,2,64,1,26,99,104,101,99,107,45,100,117,112,108,105,99, -97,116,101,45,105,100,101,110,116,105,102,105,101,114,0,2,175,5,2,154,4, -2,155,4,2,173,4,16,10,33,138,6,33,140,6,33,142,6,33,143,6,33, -144,6,33,146,6,33,147,6,33,148,6,33,150,6,33,152,6,11,16,5,93, -2,45,89,162,34,35,51,9,223,0,27,249,22,152,3,20,15,159,37,34,42, -196,27,28,248,80,158,37,34,194,249,80,158,38,35,248,80,158,39,36,196,27, -248,80,158,40,37,197,28,248,80,158,40,34,193,249,80,158,41,35,248,80,158, -42,36,195,27,248,80,158,43,37,196,28,248,80,158,43,34,193,249,80,158,44, -35,248,80,158,45,36,195,27,248,80,158,46,37,196,28,248,80,158,46,38,193, -248,80,158,46,39,193,11,11,11,11,28,192,27,248,22,58,194,27,248,22,84, -195,27,248,22,93,196,27,248,22,94,197,249,80,158,42,40,201,27,250,22,67, -199,198,200,252,80,158,48,41,20,15,159,48,35,42,21,95,2,153,3,2,154, -3,2,155,3,248,22,86,198,248,22,58,198,248,22,84,198,250,22,176,8,11, -2,54,196,34,20,99,159,34,16,8,2,134,4,2,135,4,2,136,4,2,137, -4,2,141,4,2,142,4,2,154,4,2,140,4,16,2,33,154,6,33,156,6, -11,16,5,93,2,44,89,162,34,35,51,9,223,0,27,249,22,152,3,20,15, -159,37,34,44,196,27,28,248,80,158,37,34,194,249,80,158,38,35,248,80,158, -39,36,196,27,248,80,158,40,37,197,28,248,80,158,40,34,193,249,80,158,41, -35,248,80,158,42,36,195,27,248,80,158,43,37,196,28,248,80,158,43,34,193, -249,80,158,44,38,27,248,80,158,46,36,196,28,248,80,158,46,39,193,248,22, -65,248,80,158,47,40,194,11,27,248,80,158,46,37,196,28,248,80,158,46,34, -193,249,80,158,47,35,248,80,158,48,36,195,27,248,80,158,49,37,196,28,248, -80,158,49,39,193,248,80,158,49,40,193,11,11,11,11,11,28,192,27,248,22, -58,194,27,248,22,84,195,27,248,22,93,196,27,248,22,96,197,27,248,22,95, -198,249,80,158,43,41,202,27,251,22,67,201,200,199,202,250,80,158,47,42,89, -162,34,34,43,9,224,13,3,253,80,158,41,43,20,15,159,41,35,44,21,96, -2,160,3,2,161,3,2,162,3,2,163,3,248,22,94,199,248,22,58,199,248, -22,84,199,248,22,93,199,21,98,2,92,9,95,2,164,3,2,165,3,94,2, -166,3,2,83,2,157,3,2,158,3,2,83,20,15,159,47,36,44,250,22,176, -8,11,2,54,196,34,20,99,159,34,16,10,2,134,4,2,135,4,2,136,4, -2,137,4,2,138,4,2,141,4,2,142,4,2,154,4,2,155,4,2,140,4, -16,3,33,158,6,33,160,6,33,161,6,11,16,5,93,2,39,87,95,83,158, -34,16,2,89,162,35,35,41,9,223,0,251,80,158,38,42,20,15,159,38,40, -50,21,94,2,169,3,2,170,3,248,22,58,198,248,22,93,198,80,159,34,8, -27,35,83,158,34,16,2,89,162,35,35,41,9,223,0,251,80,158,38,42,20, -15,159,38,39,50,21,94,2,171,3,2,172,3,248,22,58,198,248,22,84,198, -80,159,34,8,26,35,89,162,34,35,54,9,223,0,27,249,22,152,3,20,15, -159,37,34,50,196,27,28,248,80,158,37,34,194,249,80,158,38,35,248,80,158, -39,36,196,27,248,80,158,40,37,197,28,248,80,158,40,34,193,28,248,80,158, -40,38,248,80,158,41,36,194,27,248,80,158,41,37,194,28,248,80,158,41,34, -193,249,80,158,42,35,248,80,158,43,36,195,27,248,80,158,44,37,196,28,248, -80,158,44,39,193,248,80,158,44,40,193,11,11,11,11,11,28,192,27,248,22, -58,194,27,248,22,84,195,27,248,22,86,196,249,80,158,41,41,200,27,249,22, -67,198,197,251,80,158,46,42,20,15,159,46,35,50,21,94,2,173,3,2,174, -3,248,22,58,197,248,22,59,197,27,28,248,80,158,38,34,195,249,80,158,39, -35,248,80,158,40,36,197,27,248,80,158,41,37,198,28,248,80,158,41,34,193, -249,80,158,42,43,27,248,80,158,44,36,196,28,248,80,158,44,39,193,248,22, -8,89,162,34,35,41,9,224,10,1,27,249,22,2,89,162,34,35,46,9,224, -4,5,249,80,158,37,44,28,248,80,158,38,34,197,249,80,158,39,35,248,80, -158,40,36,199,27,248,80,158,41,37,200,28,248,80,158,41,34,193,249,80,158, -42,35,248,80,158,43,36,195,248,80,158,43,38,248,80,158,44,37,196,11,11, -194,248,80,158,39,40,196,28,248,22,63,193,21,94,9,9,248,80,158,37,45, -193,11,27,248,80,158,44,37,196,28,248,80,158,44,34,193,249,80,158,45,35, -248,80,158,46,36,195,27,248,80,158,47,37,196,28,248,80,158,47,39,193,248, -80,158,47,40,193,11,11,11,11,28,192,27,248,22,58,194,27,248,22,84,195, -27,248,22,93,196,27,248,22,96,197,27,248,22,95,198,27,249,22,152,3,20, -15,159,45,36,50,248,80,158,46,46,249,80,158,48,47,20,15,159,48,37,50, -201,27,28,248,80,158,45,39,194,248,80,158,45,40,194,11,28,192,249,80,158, -46,41,205,27,252,22,67,203,200,205,202,204,250,80,158,50,48,89,162,34,34, -48,9,224,16,3,253,80,158,41,42,20,15,159,41,38,50,21,96,2,175,3, -2,176,3,2,177,3,2,178,3,250,22,2,80,159,44,8,26,35,248,22,84, -202,248,22,95,202,252,22,2,80,159,46,8,27,35,248,22,84,204,248,22,84, -204,248,22,93,204,248,22,93,204,248,22,58,199,248,22,96,199,21,95,2,92, -94,94,2,179,3,2,158,2,2,83,95,2,92,93,94,2,180,3,96,2,143, -2,9,96,2,92,93,94,2,130,2,2,179,3,95,2,137,3,2,179,3,2, -181,3,95,2,137,3,2,181,3,2,130,2,2,83,96,2,182,3,2,180,3, -97,2,143,2,9,2,157,3,2,158,3,2,83,2,180,3,20,15,159,50,41, -50,248,80,158,45,49,20,15,159,45,42,50,250,22,176,8,11,2,54,197,34, -20,99,159,36,16,16,2,134,4,2,135,4,2,136,4,2,137,4,2,139,4, -2,141,4,2,142,4,2,154,4,2,140,4,2,138,4,2,170,4,2,171,4, -2,175,5,2,172,4,2,155,4,2,173,4,16,9,33,163,6,33,165,6,33, -169,6,33,170,6,33,172,6,33,173,6,33,174,6,33,175,6,33,177,6,11, -16,5,93,2,35,89,162,34,35,49,9,223,0,27,249,22,152,3,20,15,159, -37,34,42,196,27,28,248,80,158,37,34,194,249,80,158,38,35,248,80,158,39, +38,34,10,43,20,100,159,34,16,0,16,5,33,146,5,33,147,5,33,148,5, +33,149,5,33,150,5,11,16,5,93,2,42,89,162,34,35,8,26,9,223,0, +27,249,22,152,3,20,15,159,37,34,49,196,27,28,248,80,158,37,34,194,249, +80,158,38,35,248,80,158,39,36,196,27,248,80,158,40,37,197,28,248,80,158, +40,34,193,28,248,80,158,40,38,248,80,158,41,36,194,27,248,80,158,41,37, +194,28,248,80,158,41,34,193,249,80,158,42,35,248,80,158,43,36,195,27,248, +80,158,44,37,196,28,248,80,158,44,39,193,248,80,158,44,40,193,11,11,11, +11,11,28,192,27,248,22,58,194,27,248,22,84,195,27,248,22,86,196,27,249, +22,67,195,196,251,80,158,44,41,20,15,159,44,35,49,21,94,2,144,2,2, +145,2,248,22,59,197,248,22,58,197,27,28,248,80,158,38,34,195,249,80,158, +39,35,248,80,158,40,36,197,27,248,80,158,41,37,198,28,248,80,158,41,34, +193,249,80,158,42,42,27,248,80,158,44,36,196,28,248,80,158,44,39,193,248, +22,9,89,162,34,35,46,9,224,10,1,27,249,22,2,89,162,34,35,51,9, +224,4,5,249,80,158,37,43,28,248,80,158,38,34,197,249,80,158,39,35,248, +80,158,40,36,199,27,248,80,158,41,37,200,28,248,80,158,41,34,193,249,80, +158,42,35,248,80,158,43,36,195,248,80,158,43,38,248,80,158,44,37,196,11, +11,194,248,80,158,39,40,196,28,248,22,63,193,21,94,9,9,248,80,158,37, +44,193,11,27,248,80,158,44,37,196,28,248,80,158,44,34,193,249,80,158,45, +35,248,80,158,46,36,195,27,248,80,158,47,37,196,28,248,80,158,47,39,193, +248,80,158,47,40,193,11,11,11,11,28,192,27,248,22,58,194,27,248,22,84, +195,27,248,22,93,196,27,248,22,96,197,27,248,22,95,198,27,249,22,152,3, +20,15,159,45,36,49,249,22,1,22,71,250,22,2,22,65,248,22,159,3,249, +80,158,53,45,20,15,159,53,37,49,206,248,22,159,3,249,80,158,53,45,20, +15,159,53,38,49,205,27,28,248,80,158,45,39,194,248,80,158,45,40,194,11, +28,192,249,80,158,46,46,205,27,250,22,67,200,198,201,250,80,158,50,47,89, +162,34,34,47,9,224,16,3,252,80,158,40,41,20,15,159,40,39,49,21,95, +2,146,2,2,147,2,2,148,2,248,22,84,198,248,22,86,198,248,22,58,198, +21,96,2,149,2,2,12,96,2,11,95,2,150,2,11,2,12,2,151,2,2, +83,97,2,92,9,2,152,2,2,153,2,2,83,20,15,159,50,40,49,248,80, +158,45,48,20,15,159,45,41,49,250,22,177,8,11,2,54,197,34,20,100,159, +34,16,15,2,134,4,2,135,4,2,136,4,2,137,4,2,139,4,2,141,4, +2,142,4,2,140,4,2,138,4,2,170,4,2,171,4,2,172,4,2,154,4, +2,155,4,2,173,4,16,8,33,152,5,33,154,5,33,158,5,33,159,5,33, +160,5,33,162,5,33,163,5,33,165,5,11,16,5,93,2,39,89,162,34,35, +56,9,223,0,27,249,22,152,3,20,15,159,37,34,42,196,27,28,248,80,158, +37,34,194,249,80,158,38,35,248,80,158,39,36,196,27,248,80,158,40,37,197, +28,248,80,158,40,34,193,249,80,158,41,35,248,80,158,42,36,195,27,248,80, +158,43,37,196,28,248,80,158,43,34,193,249,80,158,44,35,248,80,158,45,36, +195,27,248,80,158,46,37,196,28,248,80,158,46,38,193,248,80,158,46,39,193, +11,11,11,11,28,192,27,248,22,58,194,27,248,22,84,195,27,248,22,93,196, +27,248,22,94,197,249,80,158,42,40,201,27,250,22,67,199,198,200,252,80,158, +48,41,20,15,159,48,35,42,21,95,2,160,2,2,161,2,2,162,2,248,22, +86,198,248,22,58,198,248,22,84,198,250,22,177,8,11,2,54,196,34,20,100, +159,34,16,8,2,134,4,2,135,4,2,136,4,2,137,4,2,141,4,2,142, +4,2,154,4,2,140,4,16,2,33,167,5,33,169,5,11,16,5,93,2,61, +27,248,22,178,13,10,253,22,66,248,199,20,15,159,42,34,34,248,199,20,15, +159,42,35,34,248,199,20,15,159,42,36,34,248,22,66,248,200,20,15,159,43, +37,34,248,22,66,248,200,20,15,159,43,38,34,10,43,20,100,159,34,16,0, +16,5,33,170,5,33,171,5,33,172,5,33,173,5,33,174,5,11,16,5,94, +2,46,2,40,87,96,83,158,34,16,2,89,162,35,35,46,9,223,0,251,80, +158,38,42,20,15,159,38,46,50,21,94,2,165,2,2,166,2,248,22,58,198, +248,22,84,198,80,159,34,8,35,35,83,158,34,16,2,89,162,35,35,46,9, +223,0,251,80,158,38,42,20,15,159,38,45,50,21,94,2,167,2,2,168,2, +248,22,58,198,248,22,84,198,80,159,34,8,34,35,83,158,34,16,2,89,162, +35,35,46,9,223,0,251,80,158,38,42,20,15,159,38,44,50,21,94,2,169, +2,2,170,2,248,22,58,198,248,22,84,198,80,159,34,8,33,35,27,89,162, +8,36,35,41,62,119,104,223,1,89,162,34,35,8,31,9,224,0,1,27,249, +22,152,3,20,15,159,38,34,50,197,27,28,248,80,158,38,34,194,249,80,158, +39,35,248,80,158,40,36,196,27,248,80,158,41,37,197,28,248,80,158,41,34, +193,28,248,80,158,41,38,248,80,158,42,36,194,27,248,80,158,42,37,194,28, +248,80,158,42,34,193,249,80,158,43,35,248,80,158,44,36,195,27,248,80,158, +45,37,196,28,248,80,158,45,39,193,248,80,158,45,40,193,11,11,11,11,11, +28,192,27,248,22,58,194,27,248,22,84,195,27,248,22,86,196,249,80,158,42, +41,201,27,249,22,67,197,198,251,80,158,47,42,20,15,159,47,35,50,21,94, +2,171,2,2,172,2,248,22,59,197,248,22,58,197,27,28,248,80,158,39,34, +195,249,80,158,40,35,248,80,158,41,36,197,27,248,80,158,42,37,198,28,248, +80,158,42,34,193,249,80,158,43,43,27,248,80,158,45,36,196,28,248,80,158, +45,39,193,248,22,9,89,162,34,35,46,9,224,11,1,27,249,22,2,89,162, +34,35,51,9,224,4,5,249,80,158,37,44,28,248,80,158,38,34,197,249,80, +158,39,35,248,80,158,40,36,199,27,248,80,158,41,37,200,28,248,80,158,41, +34,193,249,80,158,42,35,248,80,158,43,36,195,248,80,158,43,38,248,80,158, +44,37,196,11,11,194,248,80,158,39,40,196,28,248,22,63,193,21,94,9,9, +248,80,158,37,45,193,11,27,248,80,158,45,37,196,28,248,80,158,45,34,193, +249,80,158,46,35,248,80,158,47,36,195,27,248,80,158,48,37,196,28,248,80, +158,48,39,193,248,80,158,48,40,193,11,11,11,11,28,192,27,248,22,58,194, +27,248,22,84,195,27,248,22,93,196,27,248,22,96,197,27,248,22,95,198,27, +249,22,152,3,20,15,159,46,36,50,248,80,158,47,46,249,22,2,32,0,89, +162,8,44,35,40,9,222,1,23,119,105,116,104,45,104,97,110,100,108,101,114, +115,45,112,114,101,100,105,99,97,116,101,248,22,159,3,249,80,158,52,47,20, +15,159,52,37,50,204,27,249,22,152,3,20,15,159,47,38,50,248,80,158,48, +46,249,22,2,32,0,89,162,8,44,35,40,9,222,1,21,119,105,116,104,45, +104,97,110,100,108,101,114,115,45,104,97,110,100,108,101,114,248,22,159,3,249, +80,158,53,47,20,15,159,53,39,50,204,27,28,248,80,158,47,39,195,248,80, +158,47,40,195,11,28,192,27,28,248,80,158,48,39,195,248,80,158,48,40,195, +11,28,192,27,249,22,152,3,20,15,159,50,40,50,28,23,15,20,15,159,50, +41,50,20,15,159,50,42,50,249,80,158,50,41,23,17,27,254,22,67,204,203, +23,15,202,23,18,23,17,23,16,250,80,158,54,48,89,162,34,34,55,9,224, +20,3,254,80,158,42,42,20,15,159,42,43,50,21,97,2,173,2,2,174,2, +2,175,2,2,176,2,2,177,2,249,22,71,250,22,2,80,159,47,8,33,35, +248,22,58,205,249,22,76,206,38,250,22,2,80,159,47,8,34,35,248,22,84, +205,249,22,76,206,39,248,22,96,200,250,22,2,80,159,45,8,35,35,248,22, +58,203,248,22,84,203,249,22,75,201,40,248,22,93,200,21,95,2,92,96,94, +2,178,2,2,179,2,2,83,94,2,180,2,2,181,2,2,83,95,2,92,93, +94,2,182,2,95,2,150,2,11,2,25,96,2,149,2,2,25,2,30,96,2, +183,2,95,2,143,2,9,96,2,149,2,2,25,2,182,2,96,2,149,2,2, +34,95,2,143,2,93,2,184,2,95,2,185,2,2,32,95,2,143,2,9,96, +63,117,113,49,2,184,2,2,182,2,95,2,186,2,95,2,187,2,2,178,2, +2,180,2,2,83,97,2,92,9,2,152,2,2,153,2,2,83,2,32,95,2, +143,2,93,2,188,2,93,2,188,2,20,15,159,54,47,50,248,80,158,48,49, +20,15,159,48,48,50,248,80,158,47,49,20,15,159,47,49,50,250,22,177,8, +11,2,54,197,249,22,7,248,195,10,248,195,11,38,20,100,159,37,16,16,2, +134,4,2,135,4,2,136,4,2,137,4,2,139,4,2,141,4,2,142,4,2, +154,4,2,140,4,2,138,4,2,170,4,2,171,4,2,175,5,2,172,4,2, +155,4,2,173,4,16,16,33,178,5,33,180,5,33,184,5,33,185,5,33,186, +5,33,187,5,33,189,5,33,190,5,33,191,5,33,128,6,33,129,6,33,130, +6,33,131,6,33,132,6,33,134,6,33,136,6,11,16,5,93,2,35,87,95, +83,158,34,16,2,89,162,34,36,54,68,116,114,121,45,110,101,120,116,223,0, +27,28,248,80,158,36,34,195,249,80,158,37,35,248,80,158,38,36,197,27,248, +80,158,39,37,198,28,248,80,158,39,34,193,249,80,158,40,39,27,248,80,158, +42,36,196,28,248,80,158,42,41,193,248,22,65,248,80,158,43,42,194,11,27, +248,80,158,42,37,196,28,248,80,158,42,34,193,249,80,158,43,39,248,80,158, +44,36,195,248,80,158,44,38,248,80,158,45,37,196,11,11,11,28,192,27,248, +22,58,194,27,248,22,84,195,27,248,22,86,196,28,27,248,80,158,40,42,249, +80,158,42,43,20,15,159,42,36,50,197,87,94,249,22,3,89,162,34,35,46, +9,224,7,9,28,248,80,158,36,44,195,12,251,22,177,8,11,6,17,17,110, +111,116,32,97,110,32,105,100,101,110,116,105,102,105,101,114,196,198,194,27,248, +80,158,41,45,194,28,192,251,22,177,8,11,6,20,20,100,117,112,108,105,99, +97,116,101,32,105,100,101,110,116,105,102,105,101,114,204,196,12,27,249,22,152, +3,20,15,159,41,37,50,248,80,158,42,46,249,80,158,44,43,20,15,159,44, +38,50,199,27,28,248,80,158,41,41,194,248,80,158,41,42,194,11,28,192,249, +80,158,42,47,202,27,250,22,67,200,198,201,250,80,158,46,48,89,162,34,34, +50,9,224,12,3,252,80,158,40,40,20,15,159,40,39,50,21,95,2,132,3, +2,133,3,2,134,3,248,22,84,198,248,22,58,198,250,22,2,80,159,43,8, +27,35,248,22,86,201,248,22,84,201,21,96,2,135,3,93,94,94,2,136,3, +2,83,2,153,2,95,2,137,3,2,138,3,2,136,3,2,83,20,15,159,46, +41,50,248,80,158,41,49,20,15,159,41,42,50,250,22,177,8,11,2,54,200, +250,22,177,8,11,2,54,197,80,159,34,8,28,35,83,158,34,16,2,89,162, +35,35,46,9,223,0,251,80,158,38,40,20,15,159,38,40,50,21,94,2,139, +3,2,140,3,248,22,58,198,248,22,84,198,80,159,34,8,27,35,89,162,34, +35,54,9,223,0,27,249,22,152,3,20,15,159,37,34,50,196,27,28,248,80, +158,37,34,194,249,80,158,38,35,248,80,158,39,36,196,27,248,80,158,40,37, +197,28,248,80,158,40,34,193,28,248,80,158,40,38,248,80,158,41,36,194,27, +248,80,158,41,37,194,28,248,80,158,41,34,193,249,80,158,42,39,248,80,158, +43,36,195,248,80,158,43,38,248,80,158,44,37,196,11,11,11,11,28,192,27, +248,22,58,194,27,248,22,59,195,250,80,158,41,40,20,15,159,41,35,50,21, +93,2,141,3,195,27,28,248,80,158,38,34,195,249,80,158,39,35,248,80,158, +40,36,197,27,248,80,158,41,37,198,28,248,80,158,41,34,193,249,80,158,42, +39,27,248,80,158,44,36,196,28,248,80,158,44,34,193,249,80,158,45,35,248, +80,158,46,36,195,248,80,158,46,38,248,80,158,47,37,196,11,27,248,80,158, +44,37,196,28,248,80,158,44,34,193,249,80,158,45,39,248,80,158,46,36,195, +248,80,158,46,38,248,80,158,47,37,196,11,11,11,28,192,27,248,22,58,194, +27,248,22,84,195,27,248,22,86,196,28,248,80,158,41,44,194,27,249,22,67, +195,196,251,80,158,45,40,20,15,159,45,43,50,21,94,2,142,3,2,143,3, +248,22,59,197,248,22,58,197,249,80,159,42,8,28,35,199,201,249,80,159,39, +8,28,35,196,198,34,20,100,159,36,16,16,2,134,4,2,135,4,2,136,4, +2,137,4,2,139,4,2,138,4,2,140,4,2,141,4,2,142,4,2,172,4, +2,153,4,30,2,64,1,26,99,104,101,99,107,45,100,117,112,108,105,99,97, +116,101,45,105,100,101,110,116,105,102,105,101,114,0,2,175,5,2,154,4,2, +155,4,2,173,4,16,10,33,138,6,33,140,6,33,142,6,33,143,6,33,144, +6,33,146,6,33,147,6,33,148,6,33,150,6,33,152,6,11,16,5,93,2, +41,89,162,34,35,56,9,223,0,27,249,22,152,3,20,15,159,37,34,42,196, +27,28,248,80,158,37,34,194,249,80,158,38,35,248,80,158,39,36,196,27,248, +80,158,40,37,197,28,248,80,158,40,34,193,249,80,158,41,35,248,80,158,42, +36,195,27,248,80,158,43,37,196,28,248,80,158,43,34,193,249,80,158,44,35, +248,80,158,45,36,195,27,248,80,158,46,37,196,28,248,80,158,46,38,193,248, +80,158,46,39,193,11,11,11,11,28,192,27,248,22,58,194,27,248,22,84,195, +27,248,22,93,196,27,248,22,94,197,249,80,158,42,40,201,27,250,22,67,198, +200,199,252,80,158,48,41,20,15,159,48,35,42,21,95,2,153,3,2,154,3, +2,155,3,248,22,84,198,248,22,86,198,248,22,58,198,250,22,177,8,11,2, +54,196,34,20,100,159,34,16,8,2,134,4,2,135,4,2,136,4,2,137,4, +2,141,4,2,142,4,2,154,4,2,140,4,16,2,33,154,6,33,156,6,11, +16,5,93,2,38,89,162,34,35,56,9,223,0,27,249,22,152,3,20,15,159, +37,34,44,196,27,28,248,80,158,37,34,194,249,80,158,38,35,248,80,158,39, 36,196,27,248,80,158,40,37,197,28,248,80,158,40,34,193,249,80,158,41,35, -248,80,158,42,36,195,27,248,80,158,43,37,196,28,248,80,158,43,38,193,248, -80,158,43,39,193,11,11,11,28,192,27,248,22,58,194,27,248,22,84,195,27, -248,22,86,196,249,80,158,41,40,200,27,249,22,67,198,197,251,80,158,46,41, -20,15,159,46,35,42,21,94,2,187,3,2,188,3,248,22,58,197,248,22,59, -197,250,22,176,8,11,2,54,196,34,20,99,159,34,16,8,2,134,4,2,135, -4,2,136,4,2,137,4,2,141,4,2,142,4,2,154,4,2,140,4,16,2, -33,179,6,33,181,6,11,106,83,158,34,16,6,27,247,22,190,9,87,94,28, -192,28,248,22,189,9,193,12,250,22,177,8,2,164,3,2,130,4,195,12,91, -159,39,11,90,161,39,34,11,254,22,167,9,2,61,11,35,34,11,9,204,252, -22,7,197,198,199,250,22,169,9,203,34,2,131,4,250,22,170,9,204,34,2, -131,4,80,159,34,34,35,80,159,34,35,35,80,159,34,36,35,80,159,34,37, -35,80,159,34,38,35,83,158,34,16,2,89,162,34,35,41,2,8,223,0,87, -94,28,248,80,158,35,36,194,12,250,22,177,8,2,8,6,7,7,112,114,111, -109,105,115,101,196,27,248,80,158,36,37,195,28,248,22,0,193,27,249,22,6, -195,22,65,87,94,28,248,22,0,248,80,158,38,37,197,249,80,158,38,38,197, -194,12,249,22,1,22,7,248,80,158,39,37,198,249,22,1,22,7,194,80,159, -34,39,35,83,158,34,16,2,89,162,34,34,38,2,9,223,0,248,80,158,35, -41,249,22,25,11,80,158,37,42,80,159,34,40,35,83,158,34,16,2,89,162, -34,36,42,2,13,223,0,87,95,28,248,22,170,11,194,12,252,22,177,8,2, -13,6,16,16,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111,110,34, -198,199,28,28,248,22,0,195,249,22,40,196,34,11,12,252,22,177,8,2,13, -6,19,19,112,114,111,99,101,100,117,114,101,32,40,97,114,105,116,121,32,48, -41,35,198,199,20,14,159,80,158,34,42,193,247,194,80,159,34,43,35,83,158, -34,16,6,252,22,167,9,2,62,11,35,34,11,80,159,34,44,35,80,159,34, -45,35,80,159,34,46,35,80,159,34,47,35,80,159,34,48,35,83,158,34,16, -6,27,247,22,190,9,87,94,28,192,28,248,22,146,8,248,22,189,9,194,250, -22,177,8,2,164,3,2,130,4,195,12,12,91,159,39,11,90,161,39,34,11, -254,22,167,9,2,62,11,35,34,11,9,204,252,22,7,197,198,199,250,22,169, -9,203,34,2,132,4,250,22,170,9,204,34,2,132,4,80,159,34,49,35,80, -159,34,50,35,80,159,34,51,35,80,159,34,52,35,80,159,34,53,35,83,158, -34,16,2,89,162,34,34,38,2,24,223,0,248,80,158,35,45,249,22,25,11, -80,158,37,55,80,159,34,54,35,83,158,34,16,2,89,162,38,36,42,2,26, -223,0,87,95,28,248,80,158,35,46,194,12,252,22,177,8,2,26,6,22,22, -98,114,101,97,107,32,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111, -110,34,198,199,28,28,248,22,0,195,249,22,40,196,34,11,12,252,22,177,8, -2,13,6,19,19,112,114,111,99,101,100,117,114,101,32,40,97,114,105,116,121, -32,48,41,35,198,199,83,158,38,20,94,94,20,14,159,80,158,34,55,249,80, -158,36,47,195,34,87,94,247,80,158,34,57,247,194,247,80,158,34,57,80,159, -34,56,35,83,158,34,16,2,89,162,34,37,42,2,28,223,0,28,248,22,63, -196,248,22,134,11,194,28,248,248,22,83,197,194,83,158,38,20,94,94,248,248, -22,85,197,194,20,14,159,80,158,34,55,194,247,80,158,34,57,250,80,158,37, -58,196,197,248,22,59,199,80,159,34,58,35,83,158,34,16,2,89,162,34,37, -42,2,29,223,0,28,248,22,63,196,248,22,134,11,194,28,248,248,22,83,197, -194,20,14,159,80,158,34,55,194,87,94,247,80,158,34,57,248,248,22,85,197, -194,250,80,158,37,59,196,197,248,22,59,199,80,159,34,59,35,83,158,34,16, -2,248,22,172,11,11,80,159,34,8,26,35,83,158,34,16,2,32,0,89,162, -34,35,37,2,31,222,28,248,22,16,193,12,249,22,174,8,2,36,6,37,37, -101,120,99,101,112,116,105,111,110,32,104,97,110,100,108,101,114,32,117,115,101, -100,32,111,117,116,32,111,102,32,99,111,110,116,101,120,116,80,159,34,8,27, -35,83,158,34,16,2,247,22,17,80,159,34,8,28,35,83,158,34,16,2,89, -162,34,36,37,2,33,223,0,20,14,159,80,158,34,8,30,193,247,194,80,159, -34,8,29,35,96,2,133,4,2,60,2,59,2,10,96,2,133,4,2,55,2, -64,2,63,0}; - EVAL_ONE_SIZED_STR((char *)expr, 18231); +248,80,158,42,36,195,27,248,80,158,43,37,196,28,248,80,158,43,34,193,249, +80,158,44,38,27,248,80,158,46,36,196,28,248,80,158,46,39,193,248,22,65, +248,80,158,47,40,194,11,27,248,80,158,46,37,196,28,248,80,158,46,34,193, +249,80,158,47,35,248,80,158,48,36,195,27,248,80,158,49,37,196,28,248,80, +158,49,39,193,248,80,158,49,40,193,11,11,11,11,11,28,192,27,248,22,58, +194,27,248,22,84,195,27,248,22,93,196,27,248,22,96,197,27,248,22,95,198, +249,80,158,43,41,202,27,251,22,67,199,200,201,202,250,80,158,47,42,89,162, +34,34,48,9,224,13,3,253,80,158,41,43,20,15,159,41,35,44,21,96,2, +160,3,2,161,3,2,162,3,2,163,3,248,22,94,199,248,22,93,199,248,22, +84,199,248,22,58,199,21,98,2,92,9,95,2,164,3,2,165,3,94,2,166, +3,2,83,2,157,3,2,158,3,2,83,20,15,159,47,36,44,250,22,177,8, +11,2,54,196,34,20,100,159,34,16,10,2,134,4,2,135,4,2,136,4,2, +137,4,2,138,4,2,141,4,2,142,4,2,154,4,2,155,4,2,140,4,16, +3,33,158,6,33,160,6,33,161,6,11,16,5,93,2,43,87,95,83,158,34, +16,2,89,162,35,35,46,9,223,0,251,80,158,38,42,20,15,159,38,40,50, +21,94,2,169,3,2,170,3,248,22,58,198,248,22,93,198,80,159,34,8,27, +35,83,158,34,16,2,89,162,35,35,46,9,223,0,251,80,158,38,42,20,15, +159,38,39,50,21,94,2,171,3,2,172,3,248,22,58,198,248,22,84,198,80, +159,34,8,26,35,89,162,34,35,59,9,223,0,27,249,22,152,3,20,15,159, +37,34,50,196,27,28,248,80,158,37,34,194,249,80,158,38,35,248,80,158,39, +36,196,27,248,80,158,40,37,197,28,248,80,158,40,34,193,28,248,80,158,40, +38,248,80,158,41,36,194,27,248,80,158,41,37,194,28,248,80,158,41,34,193, +249,80,158,42,35,248,80,158,43,36,195,27,248,80,158,44,37,196,28,248,80, +158,44,39,193,248,80,158,44,40,193,11,11,11,11,11,28,192,27,248,22,58, +194,27,248,22,84,195,27,248,22,86,196,249,80,158,41,41,200,27,249,22,67, +197,198,251,80,158,46,42,20,15,159,46,35,50,21,94,2,173,3,2,174,3, +248,22,59,197,248,22,58,197,27,28,248,80,158,38,34,195,249,80,158,39,35, +248,80,158,40,36,197,27,248,80,158,41,37,198,28,248,80,158,41,34,193,249, +80,158,42,43,27,248,80,158,44,36,196,28,248,80,158,44,39,193,248,22,9, +89,162,34,35,46,9,224,10,1,27,249,22,2,89,162,34,35,51,9,224,4, +5,249,80,158,37,44,28,248,80,158,38,34,197,249,80,158,39,35,248,80,158, +40,36,199,27,248,80,158,41,37,200,28,248,80,158,41,34,193,249,80,158,42, +35,248,80,158,43,36,195,248,80,158,43,38,248,80,158,44,37,196,11,11,194, +248,80,158,39,40,196,28,248,22,63,193,21,94,9,9,248,80,158,37,45,193, +11,27,248,80,158,44,37,196,28,248,80,158,44,34,193,249,80,158,45,35,248, +80,158,46,36,195,27,248,80,158,47,37,196,28,248,80,158,47,39,193,248,80, +158,47,40,193,11,11,11,11,28,192,27,248,22,58,194,27,248,22,84,195,27, +248,22,93,196,27,248,22,96,197,27,248,22,95,198,27,249,22,152,3,20,15, +159,45,36,50,248,80,158,46,46,249,80,158,48,47,20,15,159,48,37,50,201, +27,28,248,80,158,45,39,194,248,80,158,45,40,194,11,28,192,249,80,158,46, +41,205,27,252,22,67,200,205,203,204,202,250,80,158,50,48,89,162,34,34,53, +9,224,16,3,253,80,158,41,42,20,15,159,41,38,50,21,96,2,175,3,2, +176,3,2,177,3,2,178,3,250,22,2,80,159,44,8,26,35,248,22,58,202, +248,22,96,202,252,22,2,80,159,46,8,27,35,248,22,58,204,248,22,58,204, +248,22,84,204,248,22,84,204,248,22,93,199,248,22,95,199,21,95,2,92,94, +94,2,179,3,2,158,2,2,83,95,2,92,93,94,2,180,3,96,2,143,2, +9,96,2,92,93,94,2,130,2,2,179,3,95,2,137,3,2,179,3,2,181, +3,95,2,137,3,2,181,3,2,130,2,2,83,96,2,182,3,2,180,3,97, +2,143,2,9,2,157,3,2,158,3,2,83,2,180,3,20,15,159,50,41,50, +248,80,158,45,49,20,15,159,45,42,50,250,22,177,8,11,2,54,197,34,20, +100,159,36,16,16,2,134,4,2,135,4,2,136,4,2,137,4,2,139,4,2, +141,4,2,142,4,2,154,4,2,140,4,2,138,4,2,170,4,2,171,4,2, +175,5,2,172,4,2,155,4,2,173,4,16,9,33,163,6,33,165,6,33,169, +6,33,170,6,33,172,6,33,173,6,33,174,6,33,175,6,33,177,6,11,16, +5,93,2,36,89,162,34,35,54,9,223,0,27,249,22,152,3,20,15,159,37, +34,42,196,27,28,248,80,158,37,34,194,249,80,158,38,35,248,80,158,39,36, +196,27,248,80,158,40,37,197,28,248,80,158,40,34,193,249,80,158,41,35,248, +80,158,42,36,195,27,248,80,158,43,37,196,28,248,80,158,43,38,193,248,80, +158,43,39,193,11,11,11,28,192,27,248,22,58,194,27,248,22,84,195,27,248, +22,86,196,249,80,158,41,40,200,27,249,22,67,197,198,251,80,158,46,41,20, +15,159,46,35,42,21,94,2,187,3,2,188,3,248,22,59,197,248,22,58,197, +250,22,177,8,11,2,54,196,34,20,100,159,34,16,8,2,134,4,2,135,4, +2,136,4,2,137,4,2,141,4,2,142,4,2,154,4,2,140,4,16,2,33, +179,6,33,181,6,11,106,83,158,34,16,6,27,247,22,191,9,87,94,28,192, +28,248,22,190,9,193,12,250,22,178,8,2,164,3,2,130,4,195,12,91,159, +39,11,90,161,39,34,11,254,22,168,9,2,62,11,35,34,11,9,204,252,22, +7,197,198,199,250,22,170,9,203,34,2,131,4,250,22,171,9,204,34,2,131, +4,80,159,34,34,35,80,159,34,35,35,80,159,34,36,35,80,159,34,37,35, +80,159,34,38,35,83,158,34,16,2,89,162,34,35,46,2,8,223,0,87,94, +28,248,80,158,35,36,194,12,250,22,178,8,2,8,6,7,7,112,114,111,109, +105,115,101,196,27,248,80,158,36,37,195,28,248,22,0,193,27,249,22,6,195, +22,65,87,94,28,248,22,0,248,80,158,38,37,197,249,80,158,38,38,197,194, +12,249,22,1,22,7,248,80,158,39,37,198,249,22,1,22,7,194,80,159,34, +39,35,83,158,34,16,2,89,162,34,34,43,2,9,223,0,248,80,158,35,41, +249,22,25,11,80,158,37,42,80,159,34,40,35,83,158,34,16,2,89,162,34, +36,47,2,13,223,0,87,95,28,248,22,171,11,194,12,252,22,178,8,2,13, +6,16,16,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111,110,34,198, +199,28,28,248,22,0,195,249,22,40,196,34,11,12,252,22,178,8,2,13,6, +19,19,112,114,111,99,101,100,117,114,101,32,40,97,114,105,116,121,32,48,41, +35,198,199,20,14,159,80,158,34,42,193,247,194,80,159,34,43,35,83,158,34, +16,6,252,22,168,9,2,61,11,35,34,11,80,159,34,44,35,80,159,34,45, +35,80,159,34,46,35,80,159,34,47,35,80,159,34,48,35,83,158,34,16,6, +27,247,22,191,9,87,94,28,192,28,248,22,146,8,248,22,190,9,194,250,22, +178,8,2,164,3,2,130,4,195,12,12,91,159,39,11,90,161,39,34,11,254, +22,168,9,2,61,11,35,34,11,9,204,252,22,7,197,198,199,250,22,170,9, +203,34,2,132,4,250,22,171,9,204,34,2,132,4,80,159,34,49,35,80,159, +34,50,35,80,159,34,51,35,80,159,34,52,35,80,159,34,53,35,83,158,34, +16,2,89,162,34,34,43,2,24,223,0,248,80,158,35,45,249,22,25,11,80, +158,37,55,80,159,34,54,35,83,158,34,16,2,89,162,38,36,47,2,26,223, +0,87,95,28,248,80,158,35,46,194,12,252,22,178,8,2,26,6,22,22,98, +114,101,97,107,32,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111,110, +34,198,199,28,28,248,22,0,195,249,22,40,196,34,11,12,252,22,178,8,2, +13,6,19,19,112,114,111,99,101,100,117,114,101,32,40,97,114,105,116,121,32, +48,41,35,198,199,83,158,38,20,95,94,20,14,159,80,158,34,55,249,80,158, +36,47,195,34,87,94,247,80,158,34,57,247,194,247,80,158,34,57,80,159,34, +56,35,83,158,34,16,2,89,162,34,37,47,2,28,223,0,28,248,22,63,196, +248,22,135,11,194,28,248,248,22,83,197,194,83,158,38,20,95,94,248,248,22, +85,197,194,20,14,159,80,158,34,55,194,247,80,158,34,57,250,80,158,37,58, +196,197,248,22,59,199,80,159,34,58,35,83,158,34,16,2,89,162,34,37,47, +2,29,223,0,28,248,22,63,196,248,22,135,11,194,28,248,248,22,83,197,194, +20,14,159,80,158,34,55,194,87,94,247,80,158,34,57,248,248,22,85,197,194, +250,80,158,37,59,196,197,248,22,59,199,80,159,34,59,35,83,158,34,16,2, +248,22,173,11,11,80,159,34,8,26,35,83,158,34,16,2,32,0,89,162,34, +35,42,2,31,222,28,248,22,16,193,12,249,22,175,8,2,46,6,37,37,101, +120,99,101,112,116,105,111,110,32,104,97,110,100,108,101,114,32,117,115,101,100, +32,111,117,116,32,111,102,32,99,111,110,116,101,120,116,80,159,34,8,27,35, +83,158,34,16,2,247,22,17,80,159,34,8,28,35,83,158,34,16,2,89,162, +34,36,42,2,33,223,0,20,14,159,80,158,34,8,30,193,247,194,80,159,34, +8,29,35,96,2,133,4,2,60,2,59,2,10,96,2,133,4,2,55,2,64, +2,63,0}; + EVAL_ONE_SIZED_STR((char *)expr, 18230); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,55,112,0,0,0,1,0,0,3,0,16,0,27,0, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,56,112,0,0,0,1,0,0,3,0,16,0,27,0, 47,0,52,0,69,0,81,0,103,0,111,0,117,0,131,0,156,0,185,0,207, 0,222,0,240,0,250,0,5,1,16,1,43,1,52,1,68,1,86,1,94,1, 103,1,118,1,144,1,156,1,174,1,186,1,202,1,238,1,13,2,19,2,32, @@ -3716,15 +3720,15 @@ 16,4,11,11,61,120,3,1,7,101,110,118,52,52,57,57,95,8,193,11,16, 0,97,10,35,11,94,159,2,60,9,11,159,2,54,9,11,16,0,97,10,34, 11,96,159,2,56,9,11,159,2,57,9,11,159,2,58,9,11,159,2,59,9, -11,16,92,2,11,2,1,2,18,2,1,2,27,2,1,2,46,2,1,2,22, -2,1,2,6,2,1,2,4,2,1,2,38,2,1,2,2,2,1,2,17,2, -1,2,33,2,1,2,41,2,1,2,44,2,1,2,9,2,1,2,5,2,1, -2,19,2,1,2,47,2,1,2,10,2,1,2,13,2,1,2,24,2,1,2, -7,2,1,2,35,2,1,2,48,2,1,2,40,2,1,2,20,2,1,2,28, -2,1,2,14,2,1,2,16,2,1,2,3,2,1,2,29,2,1,2,30,2, -1,2,34,2,1,2,26,2,1,2,23,2,1,2,31,2,1,2,37,2,1, -2,25,2,1,2,42,2,1,2,36,2,1,2,8,2,1,2,15,2,1,2, -12,2,1,2,39,2,1,2,43,2,1,2,32,2,1,2,45,2,1,18,97, +11,16,92,2,26,2,1,2,19,2,1,2,18,2,1,2,47,2,1,2,12, +2,1,2,30,2,1,2,43,2,1,2,27,2,1,2,29,2,1,2,36,2, +1,2,24,2,1,2,2,2,1,2,23,2,1,2,11,2,1,2,13,2,1, +2,14,2,1,2,3,2,1,2,42,2,1,2,38,2,1,2,9,2,1,2, +5,2,1,2,32,2,1,2,46,2,1,2,8,2,1,2,7,2,1,2,20, +2,1,2,25,2,1,2,15,2,1,2,33,2,1,2,4,2,1,2,10,2, +1,2,37,2,1,2,6,2,1,2,48,2,1,2,39,2,1,2,28,2,1, +2,22,2,1,2,40,2,1,2,34,2,1,2,44,2,1,2,16,2,1,2, +17,2,1,2,45,2,1,2,41,2,1,2,31,2,1,2,35,2,1,18,97, 2,55,8,90,8,89,8,88,8,87,16,8,11,11,61,95,64,97,114,103,115, 64,98,111,100,121,2,62,2,62,2,62,16,8,11,11,3,1,4,103,56,57, 52,3,1,4,103,56,57,53,3,1,4,103,56,57,54,2,61,2,61,2,61, @@ -3746,56 +3750,56 @@ 101,119,45,109,101,109,116,114,97,99,101,45,116,114,97,99,107,105,110,103,45, 102,117,110,99,116,105,111,110,2,50,2,50,8,98,0,8,35,114,120,35,34, 94,44,34,0,18,35,114,120,35,34,40,91,46,93,91,94,46,93,42,124,41, -36,34,32,102,89,162,8,64,34,37,69,114,101,112,108,45,108,111,111,112,222, -250,22,13,32,0,89,162,34,34,36,9,222,27,247,247,22,46,28,248,22,142, -5,193,12,87,94,83,159,44,32,0,89,162,35,35,37,9,222,249,22,3,247, -22,45,194,248,22,13,89,162,34,34,41,9,223,1,27,249,22,57,77,35,37, -116,111,112,45,105,110,116,101,114,97,99,116,105,111,110,195,248,247,22,169,8, -28,248,22,149,3,195,248,22,167,8,250,22,152,3,11,197,198,193,248,22,15, -247,22,18,247,22,18,32,0,89,162,8,37,34,34,9,222,247,2,102,32,103, -89,162,8,64,37,44,2,64,222,27,249,22,150,13,196,197,28,192,27,248,22, +36,34,32,102,89,162,8,64,34,42,69,114,101,112,108,45,108,111,111,112,222, +250,22,13,32,0,89,162,34,34,41,9,222,27,247,247,22,46,28,248,22,142, +5,193,12,87,94,83,159,44,32,0,89,162,35,35,42,9,222,249,22,3,247, +22,45,194,248,22,13,89,162,34,34,46,9,223,1,27,249,22,57,77,35,37, +116,111,112,45,105,110,116,101,114,97,99,116,105,111,110,195,248,247,22,170,8, +28,248,22,149,3,195,248,22,168,8,250,22,152,3,11,197,198,193,248,22,15, +247,22,18,247,22,18,32,0,89,162,8,37,34,39,9,222,247,2,102,32,103, +89,162,8,64,37,49,2,64,222,27,249,22,151,13,196,197,28,192,27,248,22, 84,194,27,250,2,103,198,199,248,22,93,198,28,249,22,138,7,195,2,72,249, -22,71,197,194,249,22,57,248,22,174,12,196,194,28,249,22,138,7,197,2,72, -249,22,71,195,9,249,22,57,248,22,174,12,198,9,32,104,89,162,8,100,37, -48,70,102,111,117,110,100,45,101,120,101,99,222,28,192,91,159,37,11,90,161, -37,34,11,248,22,186,12,198,27,28,197,27,248,22,191,12,200,28,249,22,150, -8,194,201,11,28,248,22,187,12,193,250,2,104,200,201,249,22,183,12,199,197, -250,2,104,200,201,195,11,28,192,192,27,28,248,22,165,12,195,27,249,22,183, -12,197,200,28,28,248,22,178,12,193,10,248,22,177,12,193,192,11,11,28,192, -192,28,198,11,27,248,22,191,12,201,28,249,22,150,8,194,202,11,28,248,22, -187,12,193,250,2,104,201,202,249,22,183,12,200,197,250,2,104,201,202,195,194, -32,105,89,162,8,100,38,48,2,64,222,28,248,22,63,196,11,27,248,22,190, -12,248,22,58,198,27,249,22,183,12,195,196,28,248,22,177,12,193,250,2,104, -198,199,195,27,248,22,59,199,28,248,22,63,193,11,27,248,22,190,12,248,22, -58,195,27,249,22,183,12,195,199,28,248,22,177,12,193,250,2,104,201,202,195, -251,2,105,201,202,203,248,22,59,199,32,106,89,162,8,64,39,50,2,74,222, -28,248,22,63,197,248,22,134,11,249,22,173,10,248,22,173,6,251,22,128,7, -2,75,201,28,248,22,63,204,202,250,22,1,22,183,12,205,206,200,247,22,21, -27,249,22,183,12,248,22,58,200,197,28,248,22,178,12,193,27,250,22,1,22, -183,12,196,200,28,248,22,178,12,193,192,252,2,106,199,200,201,202,248,22,59, -204,252,2,106,198,199,200,201,248,22,59,203,32,107,89,162,8,64,38,49,2, -74,222,28,248,22,63,196,248,22,134,11,249,22,173,10,248,22,173,6,251,22, -128,7,2,75,2,22,28,248,22,63,203,201,250,22,1,22,183,12,204,205,200, -247,22,21,27,249,22,183,12,248,22,58,199,196,28,248,22,178,12,193,27,250, -22,1,22,183,12,196,199,28,248,22,178,12,193,192,251,2,107,198,199,200,248, +22,71,197,194,249,22,57,248,22,175,12,196,194,28,249,22,138,7,197,2,72, +249,22,71,195,9,249,22,57,248,22,175,12,198,9,32,104,89,162,8,100,37, +53,70,102,111,117,110,100,45,101,120,101,99,222,28,192,91,159,37,11,90,161, +37,34,11,248,22,187,12,198,27,28,197,27,248,22,128,13,200,28,249,22,150, +8,194,201,11,28,248,22,188,12,193,250,2,104,200,201,249,22,184,12,199,197, +250,2,104,200,201,195,11,28,192,192,27,28,248,22,166,12,195,27,249,22,184, +12,197,200,28,28,248,22,179,12,193,10,248,22,178,12,193,192,11,11,28,192, +192,28,198,11,27,248,22,128,13,201,28,249,22,150,8,194,202,11,28,248,22, +188,12,193,250,2,104,201,202,249,22,184,12,200,197,250,2,104,201,202,195,194, +32,105,89,162,8,100,38,53,2,64,222,28,248,22,63,196,11,27,248,22,191, +12,248,22,58,198,27,249,22,184,12,195,196,28,248,22,178,12,193,250,2,104, +198,199,195,27,248,22,59,199,28,248,22,63,193,11,27,248,22,191,12,248,22, +58,195,27,249,22,184,12,195,199,28,248,22,178,12,193,250,2,104,201,202,195, +251,2,105,201,202,203,248,22,59,199,32,106,89,162,8,64,39,55,2,74,222, +28,248,22,63,197,248,22,135,11,249,22,174,10,248,22,173,6,251,22,128,7, +2,75,201,28,248,22,63,204,202,250,22,1,22,184,12,205,206,200,247,22,21, +27,249,22,184,12,248,22,58,200,197,28,248,22,179,12,193,27,250,22,1,22, +184,12,196,200,28,248,22,179,12,193,192,252,2,106,199,200,201,202,248,22,59, +204,252,2,106,198,199,200,201,248,22,59,203,32,107,89,162,8,64,38,54,2, +74,222,28,248,22,63,196,248,22,135,11,249,22,174,10,248,22,173,6,251,22, +128,7,2,75,2,22,28,248,22,63,203,201,250,22,1,22,184,12,204,205,200, +247,22,21,27,249,22,184,12,248,22,58,199,196,28,248,22,179,12,193,27,250, +22,1,22,184,12,196,199,28,248,22,179,12,193,192,251,2,107,198,199,200,248, 22,59,202,251,2,107,197,198,199,248,22,59,201,0,17,35,114,120,35,34,40, 46,43,63,41,47,43,40,46,42,41,34,0,45,35,114,120,35,34,94,91,45, 97,45,122,65,45,90,48,45,57,95,46,32,93,43,40,47,43,91,45,97,45, 122,65,45,90,48,45,57,95,46,32,93,43,41,42,36,34,32,110,89,162,8, -64,36,47,2,64,222,27,249,22,150,13,2,108,196,28,192,27,249,22,183,12, +64,36,52,2,64,222,27,249,22,151,13,2,108,196,28,192,27,249,22,184,12, 196,27,248,22,84,197,28,249,22,138,7,194,2,80,2,76,28,249,22,138,7, -194,2,81,2,82,248,22,174,12,193,27,248,22,93,195,27,249,22,150,13,2, -108,195,28,192,249,2,110,249,22,183,12,198,27,248,22,84,198,28,249,22,138, -7,194,2,80,2,76,28,249,22,138,7,194,2,81,2,82,248,22,174,12,193, -248,22,93,195,249,22,183,12,196,248,22,174,12,196,249,22,183,12,195,248,22, -174,12,197,32,111,89,162,8,64,38,49,2,74,222,28,248,22,63,196,248,22, -134,11,249,22,173,10,248,22,173,6,251,22,128,7,2,75,2,78,28,248,22, -63,203,201,250,22,1,22,183,12,204,205,200,247,22,21,27,249,22,183,12,248, -22,58,199,196,28,248,22,178,12,193,27,250,22,1,22,183,12,196,199,28,248, -22,178,12,193,192,251,2,111,198,199,200,248,22,59,202,251,2,111,197,198,199, -248,22,59,201,159,34,20,99,159,34,16,1,20,24,65,98,101,103,105,110,16, -0,83,158,40,20,96,114,66,35,37,109,105,115,99,2,1,10,10,10,46,80, -158,34,34,20,99,159,39,16,47,30,2,1,2,2,193,30,2,1,2,3,193, +194,2,81,2,82,248,22,175,12,193,27,248,22,93,195,27,249,22,151,13,2, +108,195,28,192,249,2,110,249,22,184,12,198,27,248,22,84,198,28,249,22,138, +7,194,2,80,2,76,28,249,22,138,7,194,2,81,2,82,248,22,175,12,193, +248,22,93,195,249,22,184,12,196,248,22,175,12,196,249,22,184,12,195,248,22, +175,12,197,32,111,89,162,8,64,38,54,2,74,222,28,248,22,63,196,248,22, +135,11,249,22,174,10,248,22,173,6,251,22,128,7,2,75,2,78,28,248,22, +63,203,201,250,22,1,22,184,12,204,205,200,247,22,21,27,249,22,184,12,248, +22,58,199,196,28,248,22,179,12,193,27,250,22,1,22,184,12,196,199,28,248, +22,179,12,193,192,251,2,111,198,199,200,248,22,59,202,251,2,111,197,198,199, +248,22,59,201,159,34,20,100,159,34,16,1,20,24,65,98,101,103,105,110,16, +0,83,158,40,20,97,114,66,35,37,109,105,115,99,2,1,10,10,10,46,80, +158,34,34,20,100,159,39,16,47,30,2,1,2,2,193,30,2,1,2,3,193, 30,2,1,2,4,193,30,2,1,2,5,193,30,2,1,2,6,193,30,2,1, 2,7,193,30,2,1,2,8,193,30,2,1,2,9,193,30,2,1,2,10,193, 30,2,1,2,11,193,30,2,1,2,12,193,30,2,1,2,13,193,30,2,1, @@ -3819,7 +3823,7 @@ 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, 16,24,2,41,2,43,2,42,2,22,2,20,2,14,2,33,2,40,2,44,2, 11,2,12,2,9,2,23,2,32,2,6,2,47,2,13,2,4,2,2,2,34, -2,7,2,8,2,45,2,48,57,58,93,16,5,93,2,48,89,162,34,35,53, +2,7,2,8,2,45,2,48,57,58,93,16,5,93,2,48,89,162,34,35,58, 9,223,0,27,249,22,152,3,20,15,159,37,34,41,196,27,28,248,80,158,37, 34,194,249,80,158,38,35,248,80,158,39,36,196,27,248,80,158,40,37,197,28, 248,80,158,40,34,193,249,80,158,41,35,248,80,158,42,36,195,27,248,80,158, @@ -3827,76 +3831,76 @@ 27,248,22,58,194,27,248,22,84,195,27,248,22,86,196,27,249,22,152,3,20, 15,159,42,35,41,249,22,152,3,203,247,22,54,27,249,22,152,3,20,15,159, 43,36,41,249,22,152,3,204,247,22,54,27,249,22,152,3,20,15,159,44,37, -41,249,22,152,3,205,247,22,54,27,252,22,67,200,199,202,198,201,254,80,158, +41,249,22,152,3,205,247,22,54,27,252,22,67,200,202,199,198,201,254,80,158, 50,40,20,15,159,50,38,41,21,97,2,49,2,50,2,51,2,52,2,53,248, -22,58,200,248,22,84,200,248,22,93,200,248,22,96,200,248,22,95,200,250,22, -176,8,11,6,10,10,98,97,100,32,115,121,110,116,97,120,196,34,20,99,159, +22,58,200,248,22,93,200,248,22,84,200,248,22,96,200,248,22,95,200,250,22, +177,8,11,6,10,10,98,97,100,32,115,121,110,116,97,120,196,34,20,100,159, 34,16,7,30,2,54,69,115,116,120,45,112,97,105,114,63,11,30,2,54,67, 99,111,110,115,47,35,102,1,30,2,54,67,115,116,120,45,99,97,114,5,30, 2,54,67,115,116,120,45,99,100,114,6,30,2,54,69,115,116,120,45,108,105, 115,116,63,8,30,2,54,69,115,116,120,45,62,108,105,115,116,4,30,69,35, 37,115,116,120,99,97,115,101,1,24,97,112,112,108,121,45,112,97,116,116,101, 114,110,45,115,117,98,115,116,105,116,117,116,101,0,16,5,33,91,33,95,33, -96,33,97,33,99,11,139,83,158,34,16,2,89,162,8,64,35,44,2,64,223, -0,28,248,22,63,194,9,27,248,22,58,195,27,28,248,22,189,12,194,193,28, -248,22,188,12,194,249,22,190,12,195,250,80,158,41,46,248,22,139,13,2,65, -11,10,250,80,158,39,46,248,22,139,13,2,65,196,10,28,192,249,22,57,248, -22,128,13,249,22,190,12,197,247,22,140,13,248,80,159,39,8,51,35,248,22, +96,33,97,33,99,11,139,83,158,34,16,2,89,162,8,64,35,49,2,64,223, +0,28,248,22,63,194,9,27,248,22,58,195,27,28,248,22,190,12,194,193,28, +248,22,189,12,194,249,22,191,12,195,250,80,158,41,46,248,22,140,13,2,65, +11,10,250,80,158,39,46,248,22,140,13,2,65,196,10,28,192,249,22,57,248, +22,129,13,249,22,191,12,197,247,22,141,13,248,80,159,39,8,51,35,248,22, 59,199,248,80,159,37,8,51,35,248,22,59,197,80,159,34,8,51,35,83,158, -34,16,2,89,162,34,35,47,67,103,101,116,45,100,105,114,223,0,27,28,194, +34,16,2,89,162,34,35,52,67,103,101,116,45,100,105,114,223,0,27,28,194, 28,249,22,148,8,196,80,158,37,8,29,80,158,35,8,30,27,248,22,157,7, -248,22,50,197,28,249,22,152,13,2,100,194,91,159,37,11,90,161,37,34,11, -248,22,186,12,248,22,174,12,250,22,141,7,200,35,248,22,135,7,201,87,95, +248,22,50,197,28,249,22,153,13,2,100,194,91,159,37,11,90,161,37,34,11, +248,22,187,12,248,22,175,12,250,22,141,7,200,35,248,22,135,7,201,87,95, 83,160,36,11,80,158,39,8,29,198,83,160,36,11,80,158,39,8,30,192,192, -11,11,28,192,192,27,247,22,162,5,28,192,192,247,22,140,13,80,159,34,8, -50,35,83,158,34,16,2,89,162,34,35,43,9,223,0,87,94,28,27,248,22, -165,12,195,28,192,192,28,248,22,144,6,195,27,248,22,187,12,196,28,192,192, -248,22,188,12,196,11,12,250,22,177,8,2,22,2,66,196,28,248,22,187,12, -194,12,248,22,134,11,249,22,143,10,248,22,173,6,250,22,128,7,2,67,2, -22,200,247,22,21,80,159,34,8,49,35,83,158,34,16,2,89,162,34,36,42, +11,11,28,192,192,27,247,22,162,5,28,192,192,247,22,141,13,80,159,34,8, +50,35,83,158,34,16,2,89,162,34,35,48,9,223,0,87,94,28,27,248,22, +166,12,195,28,192,192,28,248,22,144,6,195,27,248,22,188,12,196,28,192,192, +248,22,189,12,196,11,12,250,22,178,8,2,22,2,66,196,28,248,22,188,12, +194,12,248,22,135,11,249,22,144,10,248,22,173,6,250,22,128,7,2,67,2, +22,200,247,22,21,80,159,34,8,49,35,83,158,34,16,2,89,162,34,36,47, 68,119,105,116,104,45,100,105,114,223,0,20,14,159,80,158,34,53,250,80,158, -37,54,249,22,25,11,80,158,39,53,22,162,5,28,248,22,165,12,197,196,247, -22,140,13,247,194,80,159,34,8,48,35,83,158,34,16,2,89,162,8,36,37, -38,66,103,101,116,45,115,111,223,0,89,162,34,35,46,9,226,0,1,3,2, -252,22,183,12,199,201,2,68,247,22,164,7,28,198,249,80,159,44,36,35,199, +37,54,249,22,25,11,80,158,39,53,22,162,5,28,248,22,166,12,197,196,247, +22,141,13,247,194,80,159,34,8,48,35,83,158,34,16,2,89,162,8,36,37, +43,66,103,101,116,45,115,111,223,0,89,162,34,35,51,9,226,0,1,3,2, +252,22,184,12,199,201,2,68,247,22,164,7,28,198,249,80,159,44,36,35,199, 80,158,44,50,197,80,159,34,8,47,35,83,158,34,16,2,32,0,89,162,34, -35,38,2,2,222,27,248,22,165,12,194,28,192,192,28,248,22,144,6,194,27, -248,22,187,12,195,28,192,192,248,22,188,12,195,11,80,159,34,34,35,83,158, -34,16,2,2,101,80,159,34,35,35,83,158,34,16,2,89,162,34,36,48,2, -4,223,0,87,95,28,28,248,22,166,12,194,10,27,248,22,165,12,195,28,192, -192,28,248,22,144,6,195,27,248,22,187,12,196,28,192,192,248,22,188,12,196, -11,12,252,22,177,8,2,4,6,42,42,112,97,116,104,32,40,102,111,114,32, +35,43,2,2,222,27,248,22,166,12,194,28,192,192,28,248,22,144,6,194,27, +248,22,188,12,195,28,192,192,248,22,189,12,195,11,80,159,34,34,35,83,158, +34,16,2,2,101,80,159,34,35,35,83,158,34,16,2,89,162,34,36,53,2, +4,223,0,87,95,28,28,248,22,167,12,194,10,27,248,22,166,12,195,28,192, +192,28,248,22,144,6,195,27,248,22,188,12,196,28,192,192,248,22,189,12,196, +11,12,252,22,178,8,2,4,6,42,42,112,97,116,104,32,40,102,111,114,32, 97,110,121,32,115,121,115,116,101,109,41,32,111,114,32,118,97,108,105,100,45, 112,97,116,104,32,115,116,114,105,110,103,34,198,199,28,28,248,22,144,6,195, -10,248,22,132,7,195,12,252,22,177,8,2,4,6,21,21,115,116,114,105,110, +10,248,22,132,7,195,12,252,22,178,8,2,4,6,21,21,115,116,114,105,110, 103,32,111,114,32,98,121,116,101,32,115,116,114,105,110,103,35,198,199,91,159, -37,11,90,161,37,34,11,248,22,186,12,197,87,94,28,192,12,250,22,178,8, +37,11,90,161,37,34,11,248,22,187,12,197,87,94,28,192,12,250,22,179,8, 2,4,6,36,36,99,97,110,110,111,116,32,97,100,100,32,97,32,115,117,102, 102,105,120,32,116,111,32,97,32,114,111,111,116,32,112,97,116,104,58,32,199, -27,249,22,175,12,250,22,157,13,2,101,248,22,171,12,200,28,248,22,144,6, -204,249,22,156,7,205,8,63,203,28,248,22,166,12,200,248,22,167,12,200,247, -22,168,12,28,248,22,165,12,194,249,22,183,12,195,194,192,80,159,34,36,35, +27,249,22,176,12,250,22,158,13,2,101,248,22,172,12,200,28,248,22,144,6, +204,249,22,156,7,205,8,63,203,28,248,22,167,12,200,248,22,168,12,200,247, +22,169,12,28,248,22,166,12,194,249,22,184,12,195,194,192,80,159,34,36,35, 83,158,34,16,2,249,22,146,6,7,92,7,92,80,159,34,37,35,83,158,34, -16,2,89,162,34,35,47,2,6,223,0,87,94,28,28,248,22,166,12,194,10, -27,248,22,165,12,195,28,192,192,28,248,22,144,6,195,27,248,22,187,12,196, -28,192,192,248,22,188,12,196,11,12,250,22,177,8,76,110,111,114,109,97,108, +16,2,89,162,34,35,52,2,6,223,0,87,94,28,28,248,22,167,12,194,10, +27,248,22,166,12,195,28,192,192,28,248,22,144,6,195,27,248,22,188,12,196, +28,192,192,248,22,189,12,196,11,12,250,22,178,8,76,110,111,114,109,97,108, 45,112,97,116,104,45,99,97,115,101,6,42,42,112,97,116,104,32,40,102,111, 114,32,97,110,121,32,115,121,115,116,101,109,41,32,111,114,32,118,97,108,105, -100,45,112,97,116,104,32,115,116,114,105,110,103,196,28,28,248,22,166,12,194, -249,22,148,8,248,22,167,12,196,2,69,249,22,148,8,247,22,163,7,2,69, -27,28,248,22,144,6,195,194,248,22,153,7,248,22,170,12,196,28,249,22,152, +100,45,112,97,116,104,32,115,116,114,105,110,103,196,28,28,248,22,167,12,194, +249,22,148,8,248,22,168,12,196,2,69,249,22,148,8,247,22,163,7,2,69, +27,28,248,22,144,6,195,194,248,22,153,7,248,22,171,12,196,28,249,22,153, 13,0,21,35,114,120,34,94,91,92,92,93,91,92,92,93,91,63,93,91,92, -92,93,34,194,28,248,22,144,6,195,248,22,173,12,195,194,27,248,22,183,6, -194,249,22,174,12,248,22,156,7,250,22,158,13,0,6,35,114,120,34,47,34, -28,249,22,152,13,0,22,35,114,120,34,91,47,92,92,93,91,46,32,93,43, -91,47,92,92,93,42,36,34,200,198,250,22,158,13,0,19,35,114,120,34,91, +92,93,34,194,28,248,22,144,6,195,248,22,174,12,195,194,27,248,22,183,6, +194,249,22,175,12,248,22,156,7,250,22,159,13,0,6,35,114,120,34,47,34, +28,249,22,153,13,0,22,35,114,120,34,91,47,92,92,93,91,46,32,93,43, +91,47,92,92,93,42,36,34,200,198,250,22,159,13,0,19,35,114,120,34,91, 32,46,93,43,40,91,47,92,92,93,42,41,36,34,201,6,2,2,92,49,80, -158,42,37,2,69,28,248,22,144,6,194,248,22,173,12,194,193,80,159,34,38, +158,42,37,2,69,28,248,22,144,6,194,248,22,174,12,194,193,80,159,34,38, 35,83,158,34,16,2,91,159,36,11,90,161,35,35,11,32,0,89,162,8,64, -35,38,65,99,104,101,99,107,222,28,248,22,136,2,193,12,250,22,177,8,2, -7,2,70,195,20,12,95,35,89,162,8,36,36,53,2,7,223,0,87,95,28, -248,22,136,2,194,12,250,22,177,8,2,7,2,70,196,28,248,22,136,2,195, -12,250,22,177,8,2,7,2,70,197,27,248,22,183,2,196,27,249,22,180,2, +35,43,65,99,104,101,99,107,222,28,248,22,136,2,193,12,250,22,178,8,2, +7,2,70,195,20,12,95,35,89,162,8,36,36,58,2,7,223,0,87,95,28, +248,22,136,2,194,12,250,22,178,8,2,7,2,70,196,28,248,22,136,2,195, +12,250,22,178,8,2,7,2,70,197,27,248,22,183,2,196,27,249,22,180,2, 197,195,27,249,22,179,2,198,196,28,249,22,188,2,198,198,28,250,22,191,2, 196,34,195,28,248,22,139,2,197,34,0,3,48,46,48,28,248,22,131,3,194, 248,22,180,2,27,248,22,180,2,195,27,248,22,180,2,197,28,248,22,138,2, @@ -3906,109 +3910,109 @@ 193,27,248,22,151,2,195,27,248,22,151,2,195,28,249,22,189,2,195,194,248, 22,177,2,194,249,22,179,2,195,248,22,182,2,249,202,248,22,182,2,249,22, 180,2,202,201,248,22,182,2,249,22,180,2,203,201,0,6,43,110,97,110,46, -48,89,162,8,36,36,54,72,102,105,110,100,45,98,101,116,119,101,101,110,223, +48,89,162,8,36,36,59,72,102,105,110,100,45,98,101,116,119,101,101,110,223, 0,28,248,22,138,2,194,193,27,248,22,151,2,195,27,248,22,151,2,197,28, 249,22,189,2,195,194,248,22,177,2,194,249,22,179,2,195,248,22,182,2,27, 248,22,182,2,249,22,180,2,203,200,27,248,22,182,2,249,22,180,2,203,201, 28,248,22,138,2,194,193,27,248,22,151,2,195,27,248,22,151,2,195,28,249, 22,189,2,195,194,248,22,177,2,194,249,22,179,2,195,248,22,182,2,249,206, 248,22,182,2,249,22,180,2,202,201,248,22,182,2,249,22,180,2,203,201,80, -159,34,39,35,83,158,34,16,2,32,0,89,162,34,34,35,2,8,222,247,2, -102,80,159,34,40,35,83,158,34,16,2,32,0,89,162,34,35,45,2,9,222, -87,94,28,27,248,22,165,12,194,28,192,192,28,248,22,144,6,194,27,248,22, -187,12,195,28,192,192,248,22,188,12,195,11,12,250,22,177,8,2,9,6,25, +159,34,39,35,83,158,34,16,2,32,0,89,162,34,34,40,2,8,222,247,2, +102,80,159,34,40,35,83,158,34,16,2,32,0,89,162,34,35,50,2,9,222, +87,94,28,27,248,22,166,12,194,28,192,192,28,248,22,144,6,194,27,248,22, +188,12,195,28,192,192,248,22,189,12,195,11,12,250,22,178,8,2,9,6,25, 25,112,97,116,104,32,111,114,32,115,116,114,105,110,103,32,40,115,97,110,115, -32,110,117,108,41,195,91,159,37,11,90,161,37,34,11,248,22,186,12,196,28, -194,248,22,134,11,249,22,173,10,248,22,173,6,249,22,128,7,6,36,36,108, +32,110,117,108,41,195,91,159,37,11,90,161,37,34,11,248,22,187,12,196,28, +194,248,22,135,11,249,22,174,10,248,22,173,6,249,22,128,7,6,36,36,108, 111,97,100,47,99,100,58,32,99,97,110,110,111,116,32,111,112,101,110,32,97, 32,100,105,114,101,99,116,111,114,121,58,32,126,115,201,247,22,21,28,248,22, -165,12,193,87,94,28,248,22,178,12,193,12,248,22,134,11,249,22,173,10,248, +166,12,193,87,94,28,248,22,179,12,193,12,248,22,135,11,249,22,174,10,248, 22,173,6,250,22,128,7,6,65,65,108,111,97,100,47,99,100,58,32,100,105, 114,101,99,116,111,114,121,32,111,102,32,126,115,32,100,111,101,115,32,110,111, 116,32,101,120,105,115,116,32,40,99,117,114,114,101,110,116,32,100,105,114,101, -99,116,111,114,121,32,105,115,32,126,115,41,202,247,22,140,13,247,22,21,27, -247,22,140,13,250,22,37,89,162,34,34,36,9,223,4,248,22,140,13,193,89, -162,34,34,36,9,223,5,248,22,160,5,193,89,162,34,34,36,9,223,3,248, -22,140,13,193,248,22,160,5,196,80,159,34,41,35,83,158,34,16,2,32,0, -89,162,34,37,41,2,10,222,87,94,28,27,248,22,165,12,196,28,192,192,28, -248,22,144,6,196,27,248,22,187,12,197,28,192,192,248,22,188,12,197,11,12, -250,22,177,8,196,2,71,197,28,248,22,189,12,195,248,193,195,27,247,22,162, -5,248,194,28,193,249,22,190,12,198,195,196,80,159,34,42,35,83,158,34,16, -2,89,162,34,35,40,2,11,223,0,87,94,28,27,248,22,165,12,195,28,192, -192,28,248,22,144,6,195,27,248,22,187,12,196,28,192,192,248,22,188,12,196, -11,12,250,22,177,8,2,11,2,71,196,28,248,22,189,12,194,248,22,160,5, -194,27,247,22,162,5,248,22,160,5,28,193,249,22,190,12,197,195,195,80,159, -34,43,35,83,158,34,16,2,89,162,34,35,40,2,12,223,0,87,94,28,27, -248,22,165,12,195,28,192,192,28,248,22,144,6,195,27,248,22,187,12,196,28, -192,192,248,22,188,12,196,11,12,250,22,177,8,2,12,2,71,196,28,248,22, -189,12,194,248,22,144,13,194,27,247,22,162,5,248,22,144,13,28,193,249,22, -190,12,197,195,195,80,159,34,44,35,83,158,34,16,2,27,248,22,146,13,248, +99,116,111,114,121,32,105,115,32,126,115,41,202,247,22,141,13,247,22,21,27, +247,22,141,13,250,22,37,89,162,34,34,41,9,223,4,248,22,141,13,193,89, +162,34,34,41,9,223,5,248,22,160,5,193,89,162,34,34,41,9,223,3,248, +22,141,13,193,248,22,160,5,196,80,159,34,41,35,83,158,34,16,2,32,0, +89,162,34,37,46,2,10,222,87,94,28,27,248,22,166,12,196,28,192,192,28, +248,22,144,6,196,27,248,22,188,12,197,28,192,192,248,22,189,12,197,11,12, +250,22,178,8,196,2,71,197,28,248,22,190,12,195,248,193,195,27,247,22,162, +5,248,194,28,193,249,22,191,12,198,195,196,80,159,34,42,35,83,158,34,16, +2,89,162,34,35,45,2,11,223,0,87,94,28,27,248,22,166,12,195,28,192, +192,28,248,22,144,6,195,27,248,22,188,12,196,28,192,192,248,22,189,12,196, +11,12,250,22,178,8,2,11,2,71,196,28,248,22,190,12,194,248,22,160,5, +194,27,247,22,162,5,248,22,160,5,28,193,249,22,191,12,197,195,195,80,159, +34,43,35,83,158,34,16,2,89,162,34,35,45,2,12,223,0,87,94,28,27, +248,22,166,12,195,28,192,192,28,248,22,144,6,195,27,248,22,188,12,196,28, +192,192,248,22,189,12,196,11,12,250,22,178,8,2,12,2,71,196,28,248,22, +190,12,194,248,22,145,13,194,27,247,22,162,5,248,22,145,13,28,193,249,22, +191,12,197,195,195,80,159,34,44,35,83,158,34,16,2,27,248,22,147,13,248, 22,155,7,27,27,247,22,163,7,28,249,22,78,194,21,96,64,117,110,105,120, 64,98,101,111,115,65,111,115,107,105,116,66,109,97,99,111,115,120,6,1,1, 58,28,249,22,78,194,21,94,2,69,65,109,97,99,111,115,6,1,1,59,12, 250,22,128,7,6,14,14,40,91,94,126,97,93,42,41,126,97,40,46,42,41, -195,195,89,162,8,36,36,42,2,13,223,0,87,95,28,28,248,22,132,7,194, -10,248,22,144,6,194,12,250,22,177,8,2,13,6,21,21,98,121,116,101,32, +195,195,89,162,8,36,36,47,2,13,223,0,87,95,28,28,248,22,132,7,194, +10,248,22,144,6,194,12,250,22,178,8,2,13,6,21,21,98,121,116,101,32, 115,116,114,105,110,103,32,111,114,32,115,116,114,105,110,103,196,28,28,248,22, -64,195,249,22,4,22,165,12,196,11,12,250,22,177,8,2,13,6,13,13,108, +64,195,249,22,4,22,166,12,196,11,12,250,22,178,8,2,13,6,13,13,108, 105,115,116,32,111,102,32,112,97,116,104,115,197,250,2,103,197,195,28,248,22, 144,6,197,248,22,155,7,197,196,80,159,34,45,35,83,158,34,16,2,83,158, -37,20,93,96,2,14,89,162,8,36,37,49,9,223,0,87,95,28,27,248,22, -165,12,195,28,192,192,28,248,22,144,6,195,27,248,22,187,12,196,28,192,192, -248,22,188,12,196,11,12,250,22,177,8,2,14,6,25,25,112,97,116,104,32, +37,20,94,96,2,14,89,162,8,36,37,54,9,223,0,87,95,28,27,248,22, +166,12,195,28,192,192,28,248,22,144,6,195,27,248,22,188,12,196,28,192,192, +248,22,189,12,196,11,12,250,22,178,8,2,14,6,25,25,112,97,116,104,32, 111,114,32,115,116,114,105,110,103,32,40,115,97,110,115,32,110,117,108,41,196, -28,28,194,28,27,248,22,165,12,196,28,192,192,28,248,22,144,6,196,27,248, -22,187,12,197,28,192,192,248,22,188,12,197,11,248,22,187,12,195,11,10,12, -250,22,177,8,2,14,6,29,29,35,102,32,111,114,32,114,101,108,97,116,105, +28,28,194,28,27,248,22,166,12,196,28,192,192,28,248,22,144,6,196,27,248, +22,188,12,197,28,192,192,248,22,189,12,197,11,248,22,188,12,195,11,10,12, +250,22,178,8,2,14,6,29,29,35,102,32,111,114,32,114,101,108,97,116,105, 118,101,32,112,97,116,104,32,111,114,32,115,116,114,105,110,103,197,28,28,248, -22,187,12,194,91,159,37,11,90,161,37,34,11,248,22,186,12,197,249,22,148, +22,188,12,194,91,159,37,11,90,161,37,34,11,248,22,187,12,197,249,22,148, 8,194,2,73,11,27,248,22,161,7,6,4,4,80,65,84,72,27,28,193,27, 249,80,158,39,45,196,9,28,249,22,148,8,247,22,163,7,2,69,249,22,57, -248,22,174,12,5,1,46,194,192,9,28,248,22,63,193,11,27,248,22,190,12, -248,22,58,195,27,249,22,183,12,195,199,28,248,22,177,12,193,250,2,104,201, -202,195,251,2,105,201,202,203,248,22,59,199,27,248,22,190,12,195,28,248,22, -177,12,193,250,2,104,198,199,195,11,89,162,34,36,40,9,223,0,250,80,158, -37,46,196,197,11,89,162,34,35,39,9,223,0,250,80,158,37,46,196,11,11, -80,159,34,46,35,83,158,34,16,2,32,0,89,162,34,36,43,2,15,222,87, -94,28,27,248,22,165,12,195,28,192,192,28,248,22,144,6,195,27,248,22,187, -12,196,28,192,192,248,22,188,12,196,11,12,250,22,177,8,195,2,66,196,28, -248,22,187,12,194,12,248,22,134,11,249,22,143,10,248,22,173,6,250,22,128, +248,22,175,12,5,1,46,194,192,9,28,248,22,63,193,11,27,248,22,191,12, +248,22,58,195,27,249,22,184,12,195,199,28,248,22,178,12,193,250,2,104,201, +202,195,251,2,105,201,202,203,248,22,59,199,27,248,22,191,12,195,28,248,22, +178,12,193,250,2,104,198,199,195,11,89,162,34,36,45,9,223,0,250,80,158, +37,46,196,197,11,89,162,34,35,44,9,223,0,250,80,158,37,46,196,11,11, +80,159,34,46,35,83,158,34,16,2,32,0,89,162,34,36,48,2,15,222,87, +94,28,27,248,22,166,12,195,28,192,192,28,248,22,144,6,195,27,248,22,188, +12,196,28,192,192,248,22,189,12,196,11,12,250,22,178,8,195,2,66,196,28, +248,22,188,12,194,12,248,22,135,11,249,22,144,10,248,22,173,6,250,22,128, 7,2,67,199,200,247,22,21,80,159,34,47,35,83,158,34,16,2,89,162,34, -37,45,2,16,223,0,87,94,87,94,28,27,248,22,165,12,196,28,192,192,28, -248,22,144,6,196,27,248,22,187,12,197,28,192,192,248,22,188,12,197,11,12, -250,22,177,8,196,2,66,197,28,248,22,187,12,195,12,248,22,134,11,249,22, -143,10,248,22,173,6,250,22,128,7,2,67,200,201,247,22,21,249,22,3,89, -162,34,35,44,9,224,2,3,87,94,28,27,248,22,165,12,196,28,192,192,28, -248,22,144,6,196,27,248,22,187,12,197,28,192,192,248,22,188,12,197,11,12, -250,22,177,8,195,2,66,197,28,248,22,187,12,195,12,248,22,134,11,249,22, -143,10,248,22,173,6,250,22,128,7,2,67,199,201,247,22,21,197,80,159,34, -48,35,83,158,34,16,2,32,0,89,162,34,37,44,2,17,222,27,247,22,141, +37,50,2,16,223,0,87,94,87,94,28,27,248,22,166,12,196,28,192,192,28, +248,22,144,6,196,27,248,22,188,12,197,28,192,192,248,22,189,12,197,11,12, +250,22,178,8,196,2,66,197,28,248,22,188,12,195,12,248,22,135,11,249,22, +144,10,248,22,173,6,250,22,128,7,2,67,200,201,247,22,21,249,22,3,89, +162,34,35,49,9,224,2,3,87,94,28,27,248,22,166,12,196,28,192,192,28, +248,22,144,6,196,27,248,22,188,12,197,28,192,192,248,22,189,12,197,11,12, +250,22,178,8,195,2,66,197,28,248,22,188,12,195,12,248,22,135,11,249,22, +144,10,248,22,173,6,250,22,128,7,2,67,199,201,247,22,21,197,80,159,34, +48,35,83,158,34,16,2,32,0,89,162,34,37,49,2,17,222,27,247,22,142, 13,252,2,106,197,198,199,200,197,80,159,34,49,35,83,158,34,16,2,248,22, 163,7,69,115,111,45,115,117,102,102,105,120,80,159,34,50,35,83,158,34,16, -2,249,80,159,36,36,35,248,22,174,12,5,10,95,108,111,97,100,101,114,46, -115,115,80,158,36,50,80,159,34,51,35,83,158,34,16,2,249,22,168,11,27, -89,162,34,36,8,28,1,25,100,101,102,97,117,108,116,45,108,111,97,100,47, -117,115,101,45,99,111,109,112,105,108,101,100,223,3,87,94,28,27,248,22,165, -12,195,28,192,192,28,248,22,144,6,195,27,248,22,187,12,196,28,192,192,248, -22,188,12,196,11,12,250,22,177,8,2,23,6,25,25,112,97,116,104,32,111, +2,249,80,159,36,36,35,248,22,175,12,5,10,95,108,111,97,100,101,114,46, +115,115,80,158,36,50,80,159,34,51,35,83,158,34,16,2,249,22,169,11,27, +89,162,34,36,8,33,1,25,100,101,102,97,117,108,116,45,108,111,97,100,47, +117,115,101,45,99,111,109,112,105,108,101,100,223,3,87,94,28,27,248,22,166, +12,195,28,192,192,28,248,22,144,6,195,27,248,22,188,12,196,28,192,192,248, +22,189,12,196,11,12,250,22,178,8,2,23,6,25,25,112,97,116,104,32,111, 114,32,118,97,108,105,100,45,112,97,116,104,32,115,116,114,105,110,103,196,91, -159,40,11,90,161,35,34,11,28,248,22,189,12,200,199,27,247,22,162,5,28, -192,249,22,190,12,202,194,200,90,161,37,35,11,248,22,186,12,193,90,161,35, -38,11,28,249,22,148,8,195,2,73,2,76,193,90,161,35,39,11,247,22,142, -13,27,89,162,34,35,43,62,122,111,225,7,5,3,250,22,183,12,196,198,249, -80,159,41,36,35,197,5,3,46,122,111,27,89,162,34,35,45,9,225,8,6, -4,252,22,183,12,198,200,2,68,247,22,164,7,249,80,159,43,36,35,199,80, -158,43,50,27,27,80,158,44,51,89,162,34,35,43,9,225,10,8,0,252,22, -183,12,198,200,2,68,247,22,164,7,197,27,249,22,5,89,162,34,35,41,9, -223,6,27,193,27,250,22,135,13,196,11,32,0,89,162,8,44,34,34,9,222, +159,40,11,90,161,35,34,11,28,248,22,190,12,200,199,27,247,22,162,5,28, +192,249,22,191,12,202,194,200,90,161,37,35,11,248,22,187,12,193,90,161,35, +38,11,28,249,22,148,8,195,2,73,2,76,193,90,161,35,39,11,247,22,143, +13,27,89,162,34,35,48,62,122,111,225,7,5,3,250,22,184,12,196,198,249, +80,159,41,36,35,197,5,3,46,122,111,27,89,162,34,35,50,9,225,8,6, +4,252,22,184,12,198,200,2,68,247,22,164,7,249,80,159,43,36,35,199,80, +158,43,50,27,27,80,158,44,51,89,162,34,35,48,9,225,10,8,0,252,22, +184,12,198,200,2,68,247,22,164,7,197,27,249,22,5,89,162,34,35,46,9, +223,6,27,193,27,250,22,136,13,196,11,32,0,89,162,8,44,34,39,9,222, 11,28,192,249,22,57,195,194,11,203,27,27,28,195,27,249,22,5,89,162,34, -35,41,9,223,6,27,248,194,195,27,250,22,135,13,196,11,32,0,89,162,8, -44,34,34,9,222,11,28,192,249,22,57,195,194,11,206,27,28,196,11,193,28, +35,46,9,223,6,27,248,194,195,27,250,22,136,13,196,11,32,0,89,162,8, +44,34,39,9,222,11,28,192,249,22,57,195,194,11,206,27,28,196,11,193,28, 192,192,28,193,28,196,28,249,22,128,3,248,22,59,196,248,22,59,199,193,11, -11,11,11,28,192,27,248,22,144,13,248,22,58,195,91,159,36,11,90,161,36, -34,11,248,195,248,22,48,248,22,154,7,248,22,170,12,249,80,159,55,36,35, +11,11,11,28,192,27,248,22,145,13,248,22,58,195,91,159,36,11,90,161,36, +34,11,248,195,248,22,48,248,22,154,7,248,22,171,12,249,80,159,55,36,35, 23,17,5,0,28,192,87,94,28,23,17,28,249,22,148,8,195,23,19,12,248, -22,134,11,249,22,140,10,248,22,173,6,251,22,128,7,6,81,81,108,111,97, +22,135,11,249,22,141,10,248,22,173,6,251,22,128,7,6,81,81,108,111,97, 100,45,101,120,116,101,110,115,105,111,110,58,32,101,120,112,101,99,116,101,100, 32,109,111,100,117,108,101,32,100,101,99,108,97,114,97,116,105,111,110,32,102, 111,114,32,96,126,97,39,44,32,102,111,117,110,100,32,126,97,32,116,104,114, @@ -4016,143 +4020,143 @@ 128,7,6,27,27,109,111,100,117,108,101,32,100,101,99,108,97,114,97,116,105, 111,110,32,102,111,114,32,96,126,97,39,203,6,4,4,110,111,110,101,248,22, 58,204,247,22,21,12,192,11,11,28,192,249,80,159,47,8,48,35,203,194,27, -28,196,27,249,22,5,89,162,34,35,41,9,223,7,27,248,194,195,27,250,22, -135,13,196,11,32,0,89,162,8,44,34,34,9,222,11,28,192,249,22,57,195, +28,196,27,249,22,5,89,162,34,35,46,9,223,7,27,248,194,195,27,250,22, +136,13,196,11,32,0,89,162,8,44,34,39,9,222,11,28,192,249,22,57,195, 194,11,206,27,28,196,11,193,28,192,192,28,193,28,196,28,249,22,128,3,248, 22,59,196,248,22,59,199,193,11,11,11,11,28,192,249,80,159,48,8,48,35, -204,89,162,34,34,39,9,224,16,2,249,247,22,145,13,248,22,58,195,195,27, -28,198,27,249,22,5,89,162,34,35,41,9,223,9,27,248,194,195,27,250,22, -135,13,196,11,32,0,89,162,8,44,34,34,9,222,11,28,192,249,22,57,195, +204,89,162,34,34,44,9,224,16,2,249,247,22,146,13,248,22,58,195,195,27, +28,198,27,249,22,5,89,162,34,35,46,9,223,9,27,248,194,195,27,250,22, +136,13,196,11,32,0,89,162,8,44,34,39,9,222,11,28,192,249,22,57,195, 194,11,23,15,27,28,197,11,193,28,192,192,28,193,28,197,28,249,22,128,3, 248,22,59,196,248,22,59,200,193,11,11,11,11,28,192,249,80,159,49,8,48, -35,205,89,162,34,34,39,9,224,17,2,249,247,22,161,5,248,22,58,195,195, -249,80,159,49,8,48,35,205,89,162,34,34,38,9,224,17,9,249,247,22,161, -5,194,195,192,32,0,89,162,8,36,35,38,9,222,87,94,28,28,248,22,0, -193,249,22,40,194,36,11,12,250,22,177,8,2,20,6,19,19,112,114,111,99, +35,205,89,162,34,34,44,9,224,17,2,249,247,22,161,5,248,22,58,195,195, +249,80,159,49,8,48,35,205,89,162,34,34,43,9,224,17,9,249,247,22,161, +5,194,195,192,32,0,89,162,8,36,35,43,9,222,87,94,28,28,248,22,0, +193,249,22,40,194,36,11,12,250,22,178,8,2,20,6,19,19,112,114,111,99, 101,100,117,114,101,32,40,97,114,105,116,121,32,50,41,195,192,80,159,34,52, -35,83,158,34,16,2,89,162,8,37,36,44,2,22,223,0,87,94,87,94,87, -94,28,27,248,22,165,12,195,28,192,192,28,248,22,144,6,195,27,248,22,187, -12,196,28,192,192,248,22,188,12,196,11,12,250,22,177,8,2,22,2,66,196, -28,248,22,187,12,194,12,248,22,134,11,249,22,143,10,248,22,173,6,250,22, +35,83,158,34,16,2,89,162,8,37,36,49,2,22,223,0,87,94,87,94,87, +94,28,27,248,22,166,12,195,28,192,192,28,248,22,144,6,195,27,248,22,188, +12,196,28,192,192,248,22,189,12,196,11,12,250,22,178,8,2,22,2,66,196, +28,248,22,188,12,194,12,248,22,135,11,249,22,144,10,248,22,173,6,250,22, 128,7,2,67,2,22,200,247,22,21,249,22,3,80,159,36,8,49,35,196,27, -247,22,141,13,251,2,107,196,198,199,196,80,159,34,55,35,83,158,34,16,2, -89,162,34,35,38,2,23,223,0,249,247,80,158,36,52,195,11,80,159,34,56, -35,248,22,143,12,32,0,89,162,8,36,35,35,1,20,100,101,102,97,117,108, +247,22,142,13,251,2,107,196,198,199,196,80,159,34,55,35,83,158,34,16,2, +89,162,34,35,43,2,23,223,0,249,247,80,158,36,52,195,11,80,159,34,56, +35,248,22,144,12,32,0,89,162,8,36,35,40,1,20,100,101,102,97,117,108, 116,45,114,101,97,100,101,114,45,103,117,97,114,100,222,192,83,158,34,16,2, 2,108,80,159,34,57,35,83,158,34,16,2,2,100,80,159,34,58,35,83,158, 34,16,2,2,109,80,159,34,59,35,83,158,34,16,2,248,22,116,2,77,80, 159,34,8,26,35,83,158,34,16,2,249,22,116,2,77,65,101,113,117,97,108, 80,159,34,8,27,35,83,158,34,16,2,247,22,54,80,159,34,8,28,35,83, 158,34,16,2,11,80,158,34,8,29,83,158,34,16,2,11,80,158,34,8,30, -83,158,34,16,2,89,162,8,36,35,38,2,32,223,0,91,159,36,10,90,161, -35,34,10,11,90,161,35,35,10,83,158,37,20,93,96,2,78,89,162,8,36, -35,44,9,224,2,0,87,94,28,207,248,208,195,12,27,27,250,22,122,80,158, -40,8,26,248,22,168,13,247,22,159,11,11,28,192,192,27,247,22,116,87,94, -250,22,121,80,158,41,8,26,248,22,168,13,247,22,159,11,195,192,250,22,121, -195,198,66,97,116,116,97,99,104,89,162,34,37,42,9,223,1,251,211,197,198, -199,10,89,162,34,38,8,28,9,225,2,3,0,28,28,248,22,56,196,249,22, +83,158,34,16,2,89,162,8,36,35,43,2,32,223,0,91,159,36,10,90,161, +35,34,10,11,90,161,35,35,10,83,158,37,20,94,96,2,78,89,162,8,36, +35,49,9,224,2,0,87,94,28,207,248,208,195,12,27,27,250,22,122,80,158, +40,8,26,248,22,169,13,247,22,160,11,11,28,192,192,27,247,22,116,87,94, +250,22,121,80,158,41,8,26,248,22,169,13,247,22,160,11,195,192,250,22,121, +195,198,66,97,116,116,97,99,104,89,162,34,37,47,9,223,1,251,211,197,198, +199,10,89,162,34,38,8,33,9,225,2,3,0,28,28,248,22,56,196,249,22, 148,8,248,22,58,198,66,112,108,97,110,101,116,11,87,94,28,207,12,20,14, -159,80,158,36,53,250,80,158,39,54,249,22,25,11,80,158,41,53,22,159,11, +159,80,158,36,53,250,80,158,39,54,249,22,25,11,80,158,41,53,22,160,11, 196,90,161,35,34,10,249,22,178,3,21,95,2,79,6,11,11,114,101,115,111, 108,118,101,114,46,115,115,6,6,6,112,108,97,110,101,116,1,27,112,108,97, 110,101,116,45,109,111,100,117,108,101,45,110,97,109,101,45,114,101,115,111,108, 118,101,114,12,251,211,199,200,201,202,27,28,248,22,144,6,197,27,248,80,159, 39,8,50,35,199,27,250,22,122,80,158,42,8,27,249,22,57,203,198,11,28, -192,192,27,248,22,155,7,200,28,249,22,152,13,2,109,194,27,249,22,150,13, -2,108,195,28,192,249,2,110,249,22,183,12,199,27,248,22,84,198,28,249,22, -138,7,194,2,80,2,76,28,249,22,138,7,194,2,81,2,82,248,22,174,12, -193,248,22,93,195,249,22,183,12,197,248,22,174,12,196,248,22,65,249,22,167, +192,192,27,248,22,155,7,200,28,249,22,153,13,2,109,194,27,249,22,151,13, +2,108,195,28,192,249,2,110,249,22,184,12,199,27,248,22,84,198,28,249,22, +138,7,194,2,80,2,76,28,249,22,138,7,194,2,81,2,82,248,22,175,12, +193,248,22,93,195,249,22,184,12,197,248,22,175,12,196,248,22,65,249,22,167, 6,6,72,72,32,40,114,101,108,97,116,105,118,101,32,115,116,114,105,110,103, 32,102,111,114,109,32,109,117,115,116,32,99,111,110,116,97,105,110,32,111,110, 108,121,32,97,45,122,44,32,65,45,90,44,32,48,45,57,44,32,45,44,32, 95,44,32,46,44,32,47,44,32,97,110,100,32,6,37,37,115,112,97,99,101, 44,32,119,105,116,104,32,110,111,32,108,101,97,100,105,110,103,32,111,114,32, -116,114,97,105,108,105,110,103,32,47,41,28,248,22,165,12,197,28,248,22,188, +116,114,97,105,108,105,110,103,32,47,41,28,248,22,166,12,197,28,248,22,189, 12,197,196,248,22,65,6,25,25,40,97,32,112,97,116,104,32,109,117,115,116, 32,98,101,32,97,98,115,111,108,117,116,101,41,28,28,248,22,56,197,248,22, 146,8,248,22,64,198,10,11,28,249,22,148,8,248,22,58,199,2,79,27,250, -22,122,80,158,41,8,27,249,22,57,202,247,22,141,13,11,28,192,192,27,27, +22,122,80,158,41,8,27,249,22,57,202,247,22,142,13,11,28,192,192,27,27, 248,22,70,200,28,249,22,188,2,194,36,248,22,65,6,5,5,109,122,108,105, 98,28,249,22,190,2,194,36,248,22,86,200,11,28,192,28,249,22,4,32,0, -89,162,34,35,36,9,222,28,248,22,144,6,193,248,22,187,12,193,11,194,28, -248,22,144,6,248,22,84,200,28,248,22,187,12,248,22,84,200,27,27,248,22, -58,195,27,248,22,59,196,27,247,22,141,13,251,2,111,196,198,197,196,249,22, -183,12,194,248,22,84,202,11,11,11,11,28,249,22,148,8,248,22,58,199,64, +89,162,34,35,41,9,222,28,248,22,144,6,193,248,22,188,12,193,11,194,28, +248,22,144,6,248,22,84,200,28,248,22,188,12,248,22,84,200,27,27,248,22, +58,195,27,248,22,59,196,27,247,22,142,13,251,2,111,196,198,197,196,249,22, +184,12,194,248,22,84,202,11,11,11,11,28,249,22,148,8,248,22,58,199,64, 102,105,108,101,28,249,22,188,2,248,22,70,199,36,27,248,22,84,198,28,248, -22,144,6,193,28,27,248,22,165,12,194,28,192,192,28,248,22,144,6,194,27, -248,22,187,12,195,28,192,192,248,22,188,12,195,11,249,22,190,12,194,248,80, -159,41,8,50,35,201,11,11,11,11,87,94,28,28,248,22,165,12,193,10,248, -22,166,7,193,12,28,198,250,22,176,8,67,114,101,113,117,105,114,101,249,22, +22,144,6,193,28,27,248,22,166,12,194,28,192,192,28,248,22,144,6,194,27, +248,22,188,12,195,28,192,192,248,22,189,12,195,11,249,22,191,12,194,248,80, +159,41,8,50,35,201,11,11,11,11,87,94,28,28,248,22,166,12,193,10,248, +22,166,7,193,12,28,198,250,22,177,8,67,114,101,113,117,105,114,101,249,22, 128,7,6,17,17,98,97,100,32,109,111,100,117,108,101,32,112,97,116,104,126, -97,28,197,248,22,58,198,6,0,0,201,250,22,177,8,2,78,249,22,128,7, +97,28,197,248,22,58,198,6,0,0,201,250,22,178,8,2,78,249,22,128,7, 6,13,13,109,111,100,117,108,101,32,112,97,116,104,126,97,28,197,248,22,58, -198,6,0,0,199,27,28,248,22,166,7,194,249,22,171,7,195,34,248,22,128, -13,248,22,129,13,195,27,28,248,22,166,7,195,249,22,171,7,196,35,248,80, +198,6,0,0,199,27,28,248,22,166,7,194,249,22,171,7,195,34,248,22,129, +13,248,22,130,13,195,27,28,248,22,166,7,195,249,22,171,7,196,35,248,80, 159,40,38,35,194,91,159,37,11,90,161,37,34,11,28,248,22,166,7,198,250, -22,7,2,83,249,22,171,7,202,36,2,83,248,22,186,12,197,27,28,248,22, +22,7,2,83,249,22,171,7,202,36,2,83,248,22,187,12,197,27,28,248,22, 166,7,199,249,22,171,7,200,37,249,80,159,45,36,35,196,5,0,27,28,248, 22,166,7,200,249,22,171,7,201,38,249,22,128,7,6,3,3,44,126,97,248, -22,154,7,248,22,170,12,248,80,159,49,38,35,199,27,28,248,22,166,7,201, -249,22,171,7,202,39,248,22,48,249,22,167,6,196,248,22,154,7,248,22,170, -12,199,27,28,248,22,166,7,202,249,22,171,7,203,40,27,249,22,150,13,2, -101,248,22,170,12,201,28,192,248,22,58,193,10,27,27,250,22,122,80,158,51, -8,26,248,22,168,13,247,22,159,11,11,28,192,192,27,247,22,116,87,94,250, -22,121,80,158,52,8,26,248,22,168,13,247,22,159,11,195,192,87,95,28,23, +22,154,7,248,22,171,12,248,80,159,49,38,35,199,27,28,248,22,166,7,201, +249,22,171,7,202,39,248,22,48,249,22,167,6,196,248,22,154,7,248,22,171, +12,199,27,28,248,22,166,7,202,249,22,171,7,203,40,27,249,22,151,13,2, +101,248,22,171,12,201,28,192,248,22,58,193,10,27,27,250,22,122,80,158,51, +8,26,248,22,169,13,247,22,160,11,11,28,192,192,27,247,22,116,87,94,250, +22,121,80,158,52,8,26,248,22,169,13,247,22,160,11,195,192,87,95,28,23, 17,27,250,22,122,196,198,11,87,94,28,192,28,28,248,22,47,193,10,249,22, -150,8,196,194,12,252,22,174,8,2,78,6,71,71,109,111,100,117,108,101,32, +150,8,196,194,12,252,22,175,8,2,78,6,71,71,109,111,100,117,108,101,32, 112,114,101,118,105,111,117,115,108,121,32,108,111,97,100,101,100,32,119,105,116, 104,32,115,117,102,102,105,120,32,126,115,44,32,99,97,110,110,111,116,32,108, 111,97,100,32,119,105,116,104,32,115,117,102,102,105,120,32,126,115,58,32,126, 101,28,249,22,148,8,10,199,6,0,0,197,28,249,22,148,8,10,201,6,0, 0,199,23,15,12,28,192,12,87,95,27,249,22,23,247,22,21,80,158,51,8, -28,27,247,22,159,11,249,22,3,89,162,34,35,48,9,226,13,14,2,3,28, +28,27,247,22,160,11,249,22,3,89,162,34,35,53,9,226,13,14,2,3,28, 249,22,150,8,248,22,59,199,197,28,249,22,148,8,248,22,58,199,195,251,22, -174,8,2,78,6,26,26,99,121,99,108,101,32,105,110,32,108,111,97,100,105, +175,8,2,78,6,26,26,99,121,99,108,101,32,105,110,32,108,111,97,100,105, 110,103,32,97,116,32,126,101,58,32,126,101,198,249,22,2,22,59,248,22,73, 249,22,57,205,201,12,12,195,27,248,22,48,198,20,14,159,80,158,49,8,28, -249,22,57,247,22,159,11,204,20,14,159,80,158,49,53,250,80,158,52,54,249, +249,22,57,247,22,160,11,204,20,14,159,80,158,49,53,250,80,158,52,54,249, 22,25,11,80,158,54,53,22,177,3,195,249,247,80,158,51,52,205,248,22,48, -248,22,154,7,248,22,170,12,203,250,22,121,196,198,197,12,28,28,248,22,166, +248,22,154,7,248,22,171,12,203,250,22,121,196,198,197,12,28,28,248,22,166, 7,203,11,27,248,22,144,6,23,16,28,192,192,28,248,22,56,23,16,249,22, 148,8,248,22,58,23,18,2,79,11,250,22,121,80,158,50,8,27,28,248,22, 144,6,23,18,249,22,57,23,19,248,80,159,53,8,50,35,23,21,249,22,57, -23,19,247,22,141,13,254,22,168,7,23,19,23,18,23,16,206,205,204,203,12, -194,208,80,159,34,8,31,35,83,158,34,16,2,83,158,37,20,93,95,2,33, -89,162,34,34,36,9,223,0,248,80,158,35,8,32,9,89,162,34,35,47,9, -223,0,27,247,22,143,13,249,80,158,37,45,28,194,27,248,22,161,7,6,11, +23,19,247,22,142,13,254,22,168,7,23,19,23,18,23,16,206,205,204,203,12, +194,208,80,159,34,8,31,35,83,158,34,16,2,83,158,37,20,94,95,2,33, +89,162,34,34,41,9,223,0,248,80,158,35,8,32,9,89,162,34,35,52,9, +223,0,27,247,22,144,13,249,80,158,37,45,28,194,27,248,22,161,7,6,11, 11,80,76,84,67,79,76,76,69,67,84,83,28,192,192,6,0,0,6,0,0, -27,28,195,250,22,183,12,248,22,139,13,69,97,100,100,111,110,45,100,105,114, +27,28,195,250,22,184,12,248,22,140,13,69,97,100,100,111,110,45,100,105,114, 247,22,159,7,6,8,8,99,111,108,108,101,99,116,115,11,27,248,80,159,40, -8,51,35,249,22,71,201,248,22,65,248,22,139,13,72,99,111,108,108,101,99, +8,51,35,249,22,71,201,248,22,65,248,22,140,13,72,99,111,108,108,101,99, 116,115,45,100,105,114,28,193,249,22,57,195,194,192,80,159,34,8,32,35,83, -158,34,16,2,32,0,89,162,8,36,35,37,2,34,222,27,248,22,139,4,194, +158,34,16,2,32,0,89,162,8,36,35,42,2,34,222,27,248,22,139,4,194, 28,192,192,248,22,140,4,194,80,159,34,8,33,35,83,158,34,16,6,26,9, -22,167,9,63,101,118,116,11,35,34,11,248,22,65,249,22,57,22,163,9,34, -247,22,190,9,11,21,93,34,80,159,34,8,34,35,80,159,34,8,35,35,80, +22,168,9,63,101,118,116,11,35,34,11,248,22,65,249,22,57,22,164,9,34, +247,22,191,9,11,21,93,34,80,159,34,8,34,35,80,159,34,8,35,35,80, 159,34,8,36,35,80,159,34,8,37,35,80,159,34,8,38,35,83,158,34,16, -2,89,162,34,35,39,2,40,223,0,87,94,28,28,248,22,0,194,249,22,40, -195,34,11,12,250,22,177,8,2,40,6,19,19,112,114,111,99,101,100,117,114, +2,89,162,34,35,44,2,40,223,0,87,94,28,28,248,22,0,194,249,22,40, +195,34,11,12,250,22,178,8,2,40,6,19,19,112,114,111,99,101,100,117,114, 101,32,40,97,114,105,116,121,32,48,41,196,248,80,158,35,8,35,89,162,34, -35,36,9,223,2,247,192,80,159,34,8,39,35,83,158,34,16,2,32,0,89, -162,34,35,38,2,41,222,87,94,28,248,22,137,12,193,12,250,22,177,8,2, -41,6,7,7,99,104,97,110,110,101,108,195,248,22,186,11,193,80,159,34,8, -40,35,83,158,34,16,2,32,0,89,162,34,35,38,2,42,222,87,94,28,248, -22,137,12,193,12,250,22,177,8,2,42,6,7,7,99,104,97,110,110,101,108, -195,249,22,187,11,34,194,80,159,34,8,41,35,83,158,34,16,2,32,0,89, -162,34,36,39,2,43,222,87,94,28,248,22,137,12,193,12,250,22,177,8,2, -43,6,7,7,99,104,97,110,110,101,108,195,28,248,22,186,11,249,22,136,12, +35,41,9,223,2,247,192,80,159,34,8,39,35,83,158,34,16,2,32,0,89, +162,34,35,43,2,41,222,87,94,28,248,22,138,12,193,12,250,22,178,8,2, +41,6,7,7,99,104,97,110,110,101,108,195,248,22,187,11,193,80,159,34,8, +40,35,83,158,34,16,2,32,0,89,162,34,35,43,2,42,222,87,94,28,248, +22,138,12,193,12,250,22,178,8,2,42,6,7,7,99,104,97,110,110,101,108, +195,249,22,188,11,34,194,80,159,34,8,41,35,83,158,34,16,2,32,0,89, +162,34,36,44,2,43,222,87,94,28,248,22,138,12,193,12,250,22,178,8,2, +43,6,7,7,99,104,97,110,110,101,108,195,28,248,22,187,11,249,22,137,12, 195,196,12,11,80,159,34,8,42,35,83,158,34,16,2,32,0,89,162,34,34, -34,2,44,222,247,22,159,11,80,159,34,8,43,35,83,158,34,16,2,89,162, -34,35,39,2,45,223,0,87,94,28,249,22,188,2,195,39,12,250,22,177,8, +39,2,44,222,247,22,160,11,80,159,34,8,43,35,83,158,34,16,2,89,162, +34,35,44,2,45,223,0,87,94,28,249,22,188,2,195,39,12,250,22,178,8, 2,45,6,1,1,53,196,248,80,158,35,8,45,11,80,159,34,8,44,35,83, -158,34,16,2,89,162,34,35,39,2,47,223,0,87,94,28,249,22,188,2,195, -39,12,250,22,177,8,2,47,6,1,1,53,196,248,80,158,35,8,45,10,80, -159,34,8,46,35,83,158,34,16,2,89,162,8,36,35,43,2,46,223,0,27, -248,22,137,11,65,101,109,112,116,121,27,247,22,137,11,87,94,20,14,159,80, -158,36,53,250,80,158,39,54,249,22,25,11,80,158,41,53,22,159,11,196,87, +158,34,16,2,89,162,34,35,44,2,47,223,0,87,94,28,249,22,188,2,195, +39,12,250,22,178,8,2,47,6,1,1,53,196,248,80,158,35,8,45,10,80, +159,34,8,46,35,83,158,34,16,2,89,162,8,36,35,48,2,46,223,0,27, +248,22,138,11,65,101,109,112,116,121,27,247,22,138,11,87,94,20,14,159,80, +158,36,53,250,80,158,39,54,249,22,25,11,80,158,41,53,22,160,11,196,87, 96,249,22,182,3,194,2,84,248,22,180,3,2,84,248,22,181,3,21,95,64, 111,110,108,121,2,85,72,115,121,110,116,97,120,45,114,117,108,101,115,28,195, -12,249,22,3,32,0,89,162,34,35,39,9,222,249,22,165,13,194,249,22,178, +12,249,22,3,32,0,89,162,34,35,44,9,222,249,22,166,13,194,249,22,178, 3,2,85,196,21,15,139,3,63,99,97,114,63,99,100,114,64,99,97,97,114, 64,99,97,100,114,64,99,100,97,114,64,99,100,100,114,65,99,97,97,97,114, 65,99,97,97,100,114,65,99,97,100,97,114,65,99,97,100,100,114,65,99,100, @@ -4245,7 +4249,7 @@ EVAL_ONE_SIZED_STR((char *)expr, 12485); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,55,15,0,0,0,1,0,0,3,0,12,0,29,0, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,56,15,0,0,0,1,0,0,3,0,12,0,29,0, 59,0,77,0,99,0,108,0,114,0,159,0,171,0,209,0,217,0,222,0,244, 0,0,0,36,2,0,0,29,11,11,68,35,37,100,101,102,105,110,101,76,35, 37,115,116,120,99,97,115,101,45,115,99,104,101,109,101,1,28,109,122,115,99, @@ -4259,130 +4263,133 @@ 11,16,0,95,8,193,11,16,0,16,4,11,11,63,115,116,120,3,1,7,101, 110,118,52,55,57,57,18,158,64,104,101,114,101,45,18,158,2,6,45,18,158, 78,114,101,113,117,105,114,101,45,102,111,114,45,115,121,110,116,97,120,45,159, -34,20,99,159,34,16,1,20,24,65,98,101,103,105,110,16,0,83,158,40,20, -96,114,72,35,37,115,116,120,109,122,45,98,111,100,121,2,1,18,94,11,43, -10,10,34,80,158,34,34,20,99,159,34,16,0,16,0,11,11,16,0,34,11, -16,2,2,4,2,5,16,2,11,11,16,2,2,4,2,5,34,36,94,16,5, -93,2,4,89,162,34,35,46,9,223,0,28,248,80,158,35,34,194,250,22,152, +34,20,100,159,34,16,1,20,24,65,98,101,103,105,110,16,0,83,158,40,20, +97,114,72,35,37,115,116,120,109,122,45,98,111,100,121,2,1,18,94,11,43, +10,10,34,80,158,34,34,20,100,159,34,16,0,16,0,11,11,16,0,34,11, +16,2,2,5,2,4,16,2,11,11,16,2,2,5,2,4,34,36,94,16,5, +93,2,4,89,162,34,35,51,9,223,0,28,248,80,158,35,34,194,250,22,152, 3,20,15,159,37,34,36,250,22,67,20,15,159,40,35,36,249,22,152,3,201, 249,22,65,20,15,159,44,36,36,68,109,122,115,99,104,101,109,101,248,80,158, -41,35,200,196,250,22,176,8,11,6,10,10,98,97,100,32,115,121,110,116,97, -120,196,34,20,99,159,34,16,2,30,2,8,69,115,116,120,45,112,97,105,114, +41,35,200,196,250,22,177,8,11,6,10,10,98,97,100,32,115,121,110,116,97, +120,196,34,20,100,159,34,16,2,30,2,8,69,115,116,120,45,112,97,105,114, 63,11,2,10,16,3,33,12,33,13,33,14,11,16,5,93,2,5,89,162,8, -36,35,41,9,223,0,87,94,28,249,22,148,8,69,116,111,112,45,108,101,118, -101,108,247,22,172,13,62,111,107,250,22,176,8,11,6,16,16,110,111,116,32, +36,35,46,9,223,0,87,94,28,249,22,148,8,69,116,111,112,45,108,101,118, +101,108,247,22,173,13,62,111,107,250,22,177,8,11,6,16,16,110,111,116,32, 97,116,32,116,111,112,32,108,101,118,101,108,196,251,22,152,3,197,248,80,158, -39,34,198,197,197,34,20,99,159,34,16,1,2,10,16,0,11,9,95,2,7, +39,34,198,197,197,34,20,100,159,34,16,1,2,10,16,0,11,9,95,2,7, 2,3,2,2,94,2,7,2,8,0}; EVAL_ONE_SIZED_STR((char *)expr, 597); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,55,90,0,0,0,1,0,0,15,0,49,0,78,0, -106,0,118,0,130,0,146,0,174,0,190,0,222,0,249,0,19,1,41,1,72, -1,78,1,100,1,110,1,122,1,147,1,161,1,186,1,194,1,212,1,229,1, -246,1,19,2,39,2,52,2,58,2,67,2,79,2,101,2,128,2,146,2,164, -2,169,2,172,2,179,2,198,2,210,2,224,2,229,2,234,2,247,2,253,2, -4,3,16,3,23,3,27,3,38,3,52,3,67,3,71,3,76,3,93,3,105, -3,121,3,131,3,134,3,145,3,154,3,170,3,183,3,194,3,207,3,223,3, -235,3,242,3,6,4,24,4,38,4,52,4,65,4,70,4,77,4,88,4,95, -4,109,4,116,4,133,4,144,4,150,4,158,4,171,4,180,4,189,4,201,4, -210,4,225,4,0,0,84,7,0,0,74,35,37,109,111,100,117,108,101,45,98, -101,103,105,110,1,32,99,97,108,108,45,119,105,116,104,45,98,114,101,97,107, -45,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111,110,1,27,99,97, -108,108,45,119,105,116,104,45,101,120,99,101,112,116,105,111,110,45,104,97,110, -100,108,101,114,1,26,99,97,108,108,45,119,105,116,104,45,112,97,114,97,109, -101,116,101,114,105,122,97,116,105,111,110,71,99,104,97,110,110,101,108,45,103, -101,116,71,99,104,97,110,110,101,108,45,112,117,116,75,99,104,97,110,110,101, -108,45,116,114,121,45,103,101,116,1,26,99,104,101,99,107,45,100,117,112,108, -105,99,97,116,101,45,105,100,101,110,116,105,102,105,101,114,75,99,111,108,108, -101,99,116,105,111,110,45,112,97,116,104,1,30,99,117,114,114,101,110,116,45, -98,114,101,97,107,45,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111, -110,1,25,99,117,114,114,101,110,116,45,108,111,97,100,47,117,115,101,45,99, -111,109,112,105,108,101,100,1,24,99,117,114,114,101,110,116,45,112,97,114,97, -109,101,116,101,114,105,122,97,116,105,111,110,1,20,102,105,110,100,45,101,120, -101,99,117,116,97,98,108,101,45,112,97,116,104,1,29,102,105,110,100,45,108, -105,98,114,97,114,121,45,99,111,108,108,101,99,116,105,111,110,45,112,97,116, -104,115,65,102,111,114,99,101,1,20,103,101,110,101,114,97,116,101,45,116,101, -109,112,111,114,97,114,105,101,115,69,103,117,97,114,100,45,101,118,116,71,105, -100,101,110,116,105,102,105,101,114,63,1,23,105,110,116,101,114,97,99,116,105, -111,110,45,101,110,118,105,114,111,110,109,101,110,116,73,108,111,97,100,45,114, -101,108,97,116,105,118,101,1,23,108,111,97,100,45,114,101,108,97,116,105,118, -101,45,101,120,116,101,110,115,105,111,110,67,108,111,97,100,47,99,100,77,108, -111,97,100,47,117,115,101,45,99,111,109,112,105,108,101,100,76,110,111,114,109, -97,108,45,99,97,115,101,45,112,97,116,104,76,110,117,108,108,45,101,110,118, -105,114,111,110,109,101,110,116,1,27,112,97,116,104,45,108,105,115,116,45,115, -116,114,105,110,103,45,62,112,97,116,104,45,108,105,115,116,79,112,97,116,104, -45,114,101,112,108,97,99,101,45,115,117,102,102,105,120,72,112,97,116,104,45, -115,116,114,105,110,103,63,65,112,111,114,116,63,68,112,114,111,109,105,115,101, -63,71,114,97,116,105,111,110,97,108,105,122,101,1,20,114,101,97,100,45,101, -118,97,108,45,112,114,105,110,116,45,108,111,111,112,1,25,115,99,104,101,109, -101,45,114,101,112,111,114,116,45,101,110,118,105,114,111,110,109,101,110,116,77, -117,110,115,121,110,116,97,120,45,115,112,108,105,99,105,110,103,77,35,37,116, -111,112,45,105,110,116,101,114,97,99,116,105,111,110,64,99,97,115,101,62,100, -111,66,100,101,102,105,110,101,78,112,97,114,97,109,101,116,101,114,105,122,101, -45,98,114,101,97,107,71,113,117,97,115,105,115,121,110,116,97,120,73,108,101, -116,114,101,99,45,115,121,110,116,97,120,64,116,105,109,101,64,99,111,110,100, -72,112,97,114,97,109,101,116,101,114,105,122,101,65,100,101,108,97,121,66,108, -101,116,47,99,99,71,115,101,116,33,45,118,97,108,117,101,115,66,115,121,110, -116,97,120,63,97,110,100,70,113,117,97,115,105,113,117,111,116,101,73,119,105, -116,104,45,104,97,110,100,108,101,114,115,74,119,105,116,104,45,104,97,110,100, -108,101,114,115,42,63,108,101,116,64,108,101,116,42,76,98,101,103,105,110,45, -102,111,114,45,115,121,110,116,97,120,71,115,121,110,116,97,120,45,99,97,115, -101,75,113,117,97,115,105,115,121,110,116,97,120,47,108,111,99,69,102,108,117, -105,100,45,108,101,116,62,111,114,70,108,101,116,45,115,116,114,117,99,116,68, -117,110,115,121,110,116,97,120,75,108,101,116,114,101,99,45,115,121,110,116,97, -120,101,115,72,108,101,116,45,115,121,110,116,97,120,101,115,70,108,101,116,45, -115,121,110,116,97,120,72,115,121,110,116,97,120,45,114,117,108,101,115,75,115, -121,110,116,97,120,45,105,100,45,114,117,108,101,115,71,119,105,116,104,45,115, -121,110,116,97,120,66,108,101,116,114,101,99,79,109,101,109,111,114,121,45,116, -114,97,99,101,45,108,97,109,98,100,97,77,100,101,102,105,110,101,45,102,111, -114,45,115,121,110,116,97,120,73,100,101,102,105,110,101,45,115,116,114,117,99, -116,73,100,101,102,105,110,101,45,115,121,110,116,97,120,72,115,121,110,116,97, -120,45,99,97,115,101,42,64,119,104,101,110,66,117,110,108,101,115,115,70,115, -121,110,116,97,120,47,108,111,99,66,108,101,116,47,101,99,73,35,37,109,111, -114,101,45,115,99,104,101,109,101,66,35,37,109,105,115,99,76,35,37,115,116, -120,99,97,115,101,45,115,99,104,101,109,101,70,35,37,119,105,116,104,45,115, -116,120,65,35,37,115,116,120,67,35,37,113,113,115,116,120,72,35,37,115,116, -120,109,122,45,98,111,100,121,68,35,37,100,101,102,105,110,101,68,35,37,107, -101,114,110,101,108,71,35,37,113,113,45,97,110,100,45,111,114,68,35,37,115, -116,120,108,111,99,74,35,37,100,101,102,105,110,101,45,101,116,45,97,108,159, -34,20,99,159,34,16,1,20,24,65,98,101,103,105,110,16,0,83,158,40,20, -96,114,68,109,122,115,99,104,101,109,101,29,11,11,10,10,10,34,80,158,34, -34,20,99,159,34,16,0,16,0,2,1,10,16,0,34,11,16,78,2,2,2, -3,2,4,2,5,2,6,2,7,2,8,2,9,2,10,2,11,2,12,2,13, -2,14,2,15,2,16,2,17,2,18,2,19,2,20,2,21,2,22,2,23,2, -24,2,25,2,26,2,27,2,28,2,29,2,30,2,31,2,32,2,33,2,34, -2,35,2,36,2,37,2,38,2,39,2,40,2,41,2,42,2,43,2,44,2, -45,2,46,2,47,2,48,2,1,2,49,2,50,2,51,2,52,2,53,2,54, -2,55,2,56,2,57,2,58,2,59,1,28,109,122,115,99,104,101,109,101,45, -105,110,45,115,116,120,45,109,111,100,117,108,101,45,98,101,103,105,110,2,60, -2,61,2,62,2,63,2,64,2,65,2,66,2,67,2,68,2,69,2,70,2, -71,2,72,2,73,2,74,2,75,2,76,2,77,16,78,2,78,2,78,2,78, -2,79,2,79,2,79,2,80,2,79,2,78,2,79,2,78,2,79,2,79,2, -78,2,81,2,79,2,82,2,79,2,79,2,79,2,79,2,79,2,79,2,79, -2,79,2,79,2,79,2,79,2,78,2,79,2,79,2,79,2,83,2,84,2, -78,2,78,2,85,2,78,2,83,2,80,2,78,66,35,37,99,111,110,100,2, -78,2,78,2,78,2,78,69,35,37,115,116,120,99,97,115,101,2,86,2,87, -2,87,2,78,2,78,2,87,2,87,2,85,2,88,2,83,2,78,2,87,2, -84,2,78,2,83,2,80,2,80,2,80,2,80,2,80,2,81,2,87,2,79, -2,85,2,89,2,85,2,88,2,89,2,89,2,88,2,89,16,78,2,2,2, -3,2,4,2,5,2,6,2,7,2,8,2,9,2,10,2,11,2,12,2,13, -2,14,2,15,2,16,2,17,2,18,2,19,2,20,2,21,2,22,2,23,2, -24,2,25,2,26,2,27,2,28,2,29,2,30,2,31,2,32,2,33,2,34, -2,35,2,36,2,37,2,38,2,39,2,40,2,41,2,42,2,43,2,44,2, -45,2,46,2,47,2,48,1,20,35,37,112,108,97,105,110,45,109,111,100,117, -108,101,45,98,101,103,105,110,2,49,2,50,2,51,2,52,2,53,2,54,2, -55,2,56,2,57,2,58,2,59,2,1,2,60,2,61,2,62,2,63,2,64, -2,65,2,66,2,67,2,68,2,69,2,70,2,71,2,72,2,73,2,74,2, -75,2,76,2,77,8,32,8,78,9,9,101,2,86,2,78,2,79,2,80,2, -82,2,84,2,83,2,85,68,35,37,101,120,112,111,98,115,9,0}; - EVAL_ONE_SIZED_STR((char *)expr, 2075); + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,56,91,0,0,0,1,0,0,9,0,18,0,26,0, +39,0,45,0,62,0,69,0,83,0,98,0,132,0,161,0,189,0,201,0,213, +0,229,0,1,1,17,1,49,1,76,1,102,1,124,1,155,1,161,1,183,1, +193,1,205,1,230,1,244,1,13,2,21,2,39,2,56,2,73,2,102,2,122, +2,135,2,141,2,150,2,162,2,184,2,211,2,216,2,230,2,237,2,242,2, +247,2,9,3,12,3,18,3,29,3,38,3,50,3,70,3,75,3,82,3,89, +3,107,3,124,3,136,3,143,3,162,3,166,3,169,3,185,3,198,3,202,3, +209,3,227,3,240,3,254,3,11,4,22,4,34,4,45,4,55,4,62,4,78, +4,92,4,106,4,119,4,130,4,135,4,151,4,166,4,178,4,189,4,204,4, +216,4,225,4,234,4,0,0,145,7,0,0,68,35,37,101,120,112,111,98,115, +68,35,37,100,101,102,105,110,101,67,35,37,113,113,115,116,120,72,35,37,115, +116,120,109,122,45,98,111,100,121,65,35,37,115,116,120,76,35,37,115,116,120, +99,97,115,101,45,115,99,104,101,109,101,66,35,37,109,105,115,99,73,35,37, +109,111,114,101,45,115,99,104,101,109,101,74,35,37,109,111,100,117,108,101,45, +98,101,103,105,110,1,32,99,97,108,108,45,119,105,116,104,45,98,114,101,97, +107,45,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111,110,1,27,99, +97,108,108,45,119,105,116,104,45,101,120,99,101,112,116,105,111,110,45,104,97, +110,100,108,101,114,1,26,99,97,108,108,45,119,105,116,104,45,112,97,114,97, +109,101,116,101,114,105,122,97,116,105,111,110,71,99,104,97,110,110,101,108,45, +103,101,116,71,99,104,97,110,110,101,108,45,112,117,116,75,99,104,97,110,110, +101,108,45,116,114,121,45,103,101,116,1,26,99,104,101,99,107,45,100,117,112, +108,105,99,97,116,101,45,105,100,101,110,116,105,102,105,101,114,75,99,111,108, +108,101,99,116,105,111,110,45,112,97,116,104,1,30,99,117,114,114,101,110,116, +45,98,114,101,97,107,45,112,97,114,97,109,101,116,101,114,105,122,97,116,105, +111,110,1,25,99,117,114,114,101,110,116,45,108,111,97,100,47,117,115,101,45, +99,111,109,112,105,108,101,100,1,24,99,117,114,114,101,110,116,45,112,97,114, +97,109,101,116,101,114,105,122,97,116,105,111,110,1,20,102,105,110,100,45,101, +120,101,99,117,116,97,98,108,101,45,112,97,116,104,1,29,102,105,110,100,45, +108,105,98,114,97,114,121,45,99,111,108,108,101,99,116,105,111,110,45,112,97, +116,104,115,65,102,111,114,99,101,1,20,103,101,110,101,114,97,116,101,45,116, +101,109,112,111,114,97,114,105,101,115,69,103,117,97,114,100,45,101,118,116,71, +105,100,101,110,116,105,102,105,101,114,63,1,23,105,110,116,101,114,97,99,116, +105,111,110,45,101,110,118,105,114,111,110,109,101,110,116,73,108,111,97,100,45, +114,101,108,97,116,105,118,101,1,23,108,111,97,100,45,114,101,108,97,116,105, +118,101,45,101,120,116,101,110,115,105,111,110,67,108,111,97,100,47,99,100,77, +108,111,97,100,47,117,115,101,45,99,111,109,112,105,108,101,100,76,110,111,114, +109,97,108,45,99,97,115,101,45,112,97,116,104,76,110,117,108,108,45,101,110, +118,105,114,111,110,109,101,110,116,1,27,112,97,116,104,45,108,105,115,116,45, +115,116,114,105,110,103,45,62,112,97,116,104,45,108,105,115,116,79,112,97,116, +104,45,114,101,112,108,97,99,101,45,115,117,102,102,105,120,72,112,97,116,104, +45,115,116,114,105,110,103,63,65,112,111,114,116,63,68,112,114,111,109,105,115, +101,63,71,114,97,116,105,111,110,97,108,105,122,101,1,20,114,101,97,100,45, +101,118,97,108,45,112,114,105,110,116,45,108,111,111,112,1,25,115,99,104,101, +109,101,45,114,101,112,111,114,116,45,101,110,118,105,114,111,110,109,101,110,116, +64,119,104,101,110,73,100,101,102,105,110,101,45,115,121,110,116,97,120,66,115, +121,110,116,97,120,64,99,111,110,100,64,99,97,115,101,77,35,37,116,111,112, +45,105,110,116,101,114,97,99,116,105,111,110,62,100,111,65,100,101,108,97,121, +70,113,117,97,115,105,113,117,111,116,101,68,117,110,115,121,110,116,97,120,71, +113,117,97,115,105,115,121,110,116,97,120,79,109,101,109,111,114,121,45,116,114, +97,99,101,45,108,97,109,98,100,97,64,108,101,116,42,66,117,110,108,101,115, +115,66,108,101,116,114,101,99,77,100,101,102,105,110,101,45,102,111,114,45,115, +121,110,116,97,120,76,98,101,103,105,110,45,102,111,114,45,115,121,110,116,97, +120,71,119,105,116,104,45,115,121,110,116,97,120,66,108,101,116,47,101,99,78, +112,97,114,97,109,101,116,101,114,105,122,101,45,98,114,101,97,107,63,97,110, +100,62,111,114,75,108,101,116,114,101,99,45,115,121,110,116,97,120,101,115,72, +115,121,110,116,97,120,45,114,117,108,101,115,63,108,101,116,66,108,101,116,47, +99,99,77,117,110,115,121,110,116,97,120,45,115,112,108,105,99,105,110,103,72, +112,97,114,97,109,101,116,101,114,105,122,101,73,119,105,116,104,45,104,97,110, +100,108,101,114,115,72,115,121,110,116,97,120,45,99,97,115,101,42,70,115,121, +110,116,97,120,47,108,111,99,71,115,101,116,33,45,118,97,108,117,101,115,70, +108,101,116,45,115,116,114,117,99,116,69,102,108,117,105,100,45,108,101,116,66, +100,101,102,105,110,101,75,113,117,97,115,105,115,121,110,116,97,120,47,108,111, +99,73,100,101,102,105,110,101,45,115,116,114,117,99,116,73,108,101,116,114,101, +99,45,115,121,110,116,97,120,72,108,101,116,45,115,121,110,116,97,120,101,115, +70,108,101,116,45,115,121,110,116,97,120,64,116,105,109,101,75,115,121,110,116, +97,120,45,105,100,45,114,117,108,101,115,74,119,105,116,104,45,104,97,110,100, +108,101,114,115,42,71,115,121,110,116,97,120,45,99,97,115,101,70,35,37,119, +105,116,104,45,115,116,120,74,35,37,100,101,102,105,110,101,45,101,116,45,97, +108,71,35,37,113,113,45,97,110,100,45,111,114,68,35,37,115,116,120,108,111, +99,68,35,37,107,101,114,110,101,108,159,34,20,100,159,34,16,1,20,24,65, +98,101,103,105,110,16,0,83,158,40,20,97,114,68,109,122,115,99,104,101,109, +101,29,11,11,18,94,11,97,10,34,11,100,159,2,1,9,11,159,2,2,9, +11,159,2,3,9,11,159,2,4,9,11,159,2,5,9,11,159,2,6,9,11, +159,2,7,9,11,159,2,8,9,11,16,0,10,10,34,80,158,34,34,20,100, +159,34,16,0,16,0,2,9,10,16,0,34,11,16,78,2,10,2,11,2,12, +2,13,2,14,2,15,2,16,2,17,2,18,2,19,2,20,2,21,2,22,2, +23,2,24,2,25,2,26,2,27,2,28,2,29,2,30,2,31,2,32,2,33, +2,34,2,35,2,36,2,37,2,38,2,39,2,40,2,41,2,42,2,43,2, +44,2,45,2,46,2,47,2,48,2,49,2,50,2,51,2,52,2,53,2,54, +2,55,2,56,2,57,2,58,2,59,2,60,2,61,2,62,2,63,2,64,2, +65,2,66,2,67,2,68,2,69,2,70,2,71,2,72,2,73,2,74,2,75, +2,76,2,77,2,78,2,9,2,79,2,80,2,81,2,82,2,83,1,28,109, +122,115,99,104,101,109,101,45,105,110,45,115,116,120,45,109,111,100,117,108,101, +45,98,101,103,105,110,2,84,2,85,16,78,2,8,2,8,2,8,2,7,2, +7,2,7,2,6,2,7,2,8,2,7,2,8,2,7,2,7,2,8,2,86, +2,7,2,5,2,7,2,7,2,7,2,7,2,7,2,7,2,7,2,7,2, +7,2,7,2,7,2,8,2,7,2,7,2,7,2,87,2,2,69,35,37,115, +116,120,99,97,115,101,66,35,37,99,111,110,100,2,8,2,4,2,8,2,8, +2,88,2,3,2,3,2,7,2,88,2,87,2,88,2,2,2,2,2,86,2, +87,2,8,2,88,2,88,2,6,2,6,2,88,2,8,2,3,2,8,2,8, +2,89,2,89,2,8,2,8,2,8,2,2,2,3,2,87,2,90,2,6,2, +6,2,6,2,8,2,6,2,4,2,8,2,89,16,78,2,10,2,11,2,12, +2,13,2,14,2,15,2,16,2,17,2,18,2,19,2,20,2,21,2,22,2, +23,2,24,2,25,2,26,2,27,2,28,2,29,2,30,2,31,2,32,2,33, +2,34,2,35,2,36,2,37,2,38,2,39,2,40,2,41,2,42,2,43,2, +44,2,45,2,46,2,47,2,48,2,49,2,50,2,51,2,52,2,53,2,54, +2,55,2,56,2,57,2,58,2,59,2,60,2,61,2,62,2,63,2,64,2, +65,2,66,2,67,2,68,2,69,2,70,2,71,2,72,2,73,2,74,2,75, +2,76,2,77,2,78,1,20,35,37,112,108,97,105,110,45,109,111,100,117,108, +101,45,98,101,103,105,110,2,79,2,80,2,81,2,82,2,83,2,9,2,84, +2,85,8,32,8,78,9,9,102,2,90,2,8,2,7,2,6,2,5,2,4, +2,3,2,2,2,1,69,35,37,102,111,114,101,105,103,110,9,0}; + EVAL_ONE_SIZED_STR((char *)expr, 2138); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,55,99,0,0,0,1,0,0,6,0,9,0,19,0, -24,0,32,0,36,0,43,0,48,0,53,0,58,0,64,0,75,0,87,0,101, -0,107,0,113,0,116,0,120,0,131,0,134,0,142,0,159,0,162,0,169,0, -187,0,201,0,207,0,221,0,230,0,242,0,3,1,12,1,19,1,26,1,33, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,56,99,0,0,0,1,0,0,6,0,9,0,19,0, +22,0,30,0,37,0,42,0,48,0,53,0,57,0,63,0,68,0,82,0,100, +0,107,0,119,0,133,0,138,0,146,0,152,0,155,0,166,0,183,0,187,0, +198,0,201,0,207,0,216,0,228,0,237,0,254,0,12,1,19,1,26,1,33, 1,40,1,47,1,54,1,61,1,68,1,75,1,82,1,89,1,96,1,118,1, 123,1,127,1,133,1,138,1,145,1,152,1,159,1,166,1,172,1,179,1,186, 1,193,1,200,1,222,1,224,1,232,1,237,1,243,1,253,1,19,2,45,2, @@ -4390,19 +4397,19 @@ 2,144,2,154,2,164,2,170,2,182,2,202,2,0,3,17,3,27,3,60,3, 127,3,144,3,154,3,164,3,176,3,171,4,196,4,33,5,54,5,64,5,97, 5,0,0,91,13,0,0,65,98,101,103,105,110,29,11,11,69,117,110,100,101, -102,105,110,101,100,64,99,97,115,101,67,35,37,100,97,116,117,109,63,108,101, -116,66,108,97,109,98,100,97,64,115,101,116,33,64,108,101,116,42,64,99,111, -110,100,65,100,101,108,97,121,70,113,117,97,115,105,113,117,111,116,101,71,114, -53,114,115,58,108,101,116,114,101,99,73,108,101,116,114,101,99,45,115,121,110, -116,97,120,65,113,117,111,116,101,65,35,37,116,111,112,62,105,102,63,97,110, -100,70,108,101,116,45,115,121,110,116,97,120,62,111,114,67,117,110,113,117,111, -116,101,76,117,110,113,117,111,116,101,45,115,112,108,105,99,105,110,103,62,100, -111,66,100,101,102,105,110,101,77,35,37,116,111,112,45,105,110,116,101,114,97, -99,116,105,111,110,73,100,101,102,105,110,101,45,115,121,110,116,97,120,65,35, -37,97,112,112,73,35,37,109,111,114,101,45,115,99,104,101,109,101,68,35,37, -107,101,114,110,101,108,71,35,37,113,113,45,97,110,100,45,111,114,76,35,37, -115,116,120,99,97,115,101,45,115,99,104,101,109,101,68,35,37,100,101,102,105, -110,101,3,1,4,103,57,53,50,3,1,4,103,57,53,49,3,1,4,103,57, +102,105,110,101,100,62,105,102,67,35,37,100,97,116,117,109,66,108,97,109,98, +100,97,64,115,101,116,33,65,35,37,116,111,112,64,108,101,116,42,63,108,101, +116,65,113,117,111,116,101,64,99,111,110,100,73,100,101,102,105,110,101,45,115, +121,110,116,97,120,77,35,37,116,111,112,45,105,110,116,101,114,97,99,116,105, +111,110,66,100,101,102,105,110,101,71,114,53,114,115,58,108,101,116,114,101,99, +73,108,101,116,114,101,99,45,115,121,110,116,97,120,64,99,97,115,101,67,117, +110,113,117,111,116,101,65,100,101,108,97,121,62,100,111,70,108,101,116,45,115, +121,110,116,97,120,76,117,110,113,117,111,116,101,45,115,112,108,105,99,105,110, +103,63,97,110,100,70,113,117,97,115,105,113,117,111,116,101,62,111,114,65,35, +37,97,112,112,68,35,37,107,101,114,110,101,108,71,35,37,113,113,45,97,110, +100,45,111,114,68,35,37,100,101,102,105,110,101,76,35,37,115,116,120,99,97, +115,101,45,115,99,104,101,109,101,73,35,37,109,111,114,101,45,115,99,104,101, +109,101,3,1,4,103,57,53,50,3,1,4,103,57,53,49,3,1,4,103,57, 52,54,3,1,4,103,57,52,53,3,1,4,103,57,52,51,3,1,4,103,57, 52,50,3,1,4,103,57,52,49,3,1,4,103,57,51,55,3,1,4,103,57, 51,54,3,1,4,103,57,52,48,3,1,4,103,57,51,57,3,1,4,103,57, @@ -4423,25 +4430,25 @@ 53,54,3,1,7,101,110,118,52,56,53,54,3,1,7,101,110,118,52,56,56, 48,3,1,7,101,110,118,52,56,56,49,95,8,193,11,16,0,97,10,35,11, 93,159,2,67,9,11,16,0,97,10,34,11,93,159,2,67,9,11,16,4,2, -3,2,2,2,13,2,2,97,8,83,8,82,8,81,16,8,11,11,3,1,4, +16,2,2,2,3,2,2,97,8,83,8,82,8,81,16,8,11,11,3,1,4, 103,57,51,51,3,1,4,103,57,51,52,3,1,4,103,57,51,53,2,68,2, 68,2,68,16,8,11,11,2,46,2,48,2,49,2,69,2,69,2,69,18,158, -163,10,2,13,2,45,2,42,9,2,43,2,44,8,84,18,158,95,10,2,40, +163,10,2,16,2,45,2,42,9,2,43,2,44,8,84,18,158,95,10,2,40, 2,41,8,84,18,16,2,95,2,47,93,8,155,63,16,4,11,11,2,70,3, 1,7,101,110,118,52,56,50,53,95,9,8,155,63,2,64,97,8,83,8,82, 8,81,16,10,11,11,3,1,4,103,57,50,56,3,1,4,103,57,50,57,3, 1,4,103,57,51,48,3,1,4,103,57,51,49,2,71,2,71,2,71,2,71, 16,10,11,11,2,54,2,46,2,48,2,49,2,72,2,72,2,72,2,72,18, -158,96,10,2,6,2,50,159,2,6,2,51,2,52,8,88,18,158,95,10,2, -39,2,3,8,88,18,158,95,10,2,37,2,38,8,88,18,158,96,10,2,8, -2,35,2,36,8,88,18,16,2,103,93,158,160,10,2,6,9,2,53,8,88, +158,96,10,2,10,2,50,159,2,10,2,51,2,52,8,88,18,158,95,10,2, +39,2,3,8,88,18,158,95,10,2,37,2,38,8,88,18,158,96,10,2,7, +2,35,2,36,8,88,18,16,2,103,93,158,160,10,2,10,9,2,53,8,88, 97,10,34,11,95,159,68,35,37,112,97,114,97,109,122,9,11,159,2,73,9, -11,159,2,63,9,11,16,14,1,26,100,97,116,117,109,45,62,115,121,110,116, -97,120,45,111,98,106,101,99,116,47,115,104,97,112,101,2,74,2,66,2,74, -66,115,121,110,116,97,120,2,74,75,115,117,98,115,116,105,116,117,116,101,45, -115,116,111,112,2,74,73,115,121,110,116,97,120,45,99,97,115,101,42,42,2, -74,78,112,97,116,116,101,114,110,45,115,117,98,115,116,105,116,117,116,101,2, -74,2,65,2,74,97,10,35,11,95,159,64,35,37,115,99,9,11,159,2,73, +11,159,2,63,9,11,16,14,66,115,121,110,116,97,120,2,74,2,66,2,74, +73,115,121,110,116,97,120,45,99,97,115,101,42,42,2,74,2,65,2,74,78, +112,97,116,116,101,114,110,45,115,117,98,115,116,105,116,117,116,101,2,74,1, +26,100,97,116,117,109,45,62,115,121,110,116,97,120,45,111,98,106,101,99,116, +47,115,104,97,112,101,2,74,75,115,117,98,115,116,105,116,117,116,101,45,115, +116,111,112,2,74,97,10,35,11,95,159,64,35,37,115,99,9,11,159,2,73, 9,11,159,2,63,9,11,16,0,95,8,193,11,16,0,16,4,11,11,2,75, 3,1,6,101,110,118,52,53,52,16,4,11,11,2,76,2,77,16,4,11,11, 2,76,2,77,16,4,11,11,2,76,3,1,6,101,110,118,52,53,56,13,16, @@ -4452,45 +4459,45 @@ 1,4,103,57,50,52,3,1,4,103,57,50,53,3,1,4,103,57,50,54,2, 79,2,79,2,79,2,79,2,79,2,79,16,14,11,11,2,75,2,60,2,62, 2,46,2,48,2,49,2,80,2,80,2,80,2,80,2,80,2,80,18,158,163, -10,2,13,2,59,2,55,158,2,61,2,56,2,57,2,58,8,95,18,158,95, +10,2,16,2,59,2,55,158,2,61,2,56,2,57,2,58,8,95,18,158,95, 10,2,33,2,34,8,95,18,16,2,95,2,47,93,8,175,63,16,4,11,11, 2,70,3,1,7,101,110,118,52,56,57,55,95,9,8,175,63,2,64,159,34, -20,99,159,34,16,1,20,24,2,1,16,0,83,158,40,20,96,114,66,35,37, -114,53,114,115,2,2,10,10,10,35,80,158,34,34,20,99,159,34,16,1,30, +20,100,159,34,16,1,20,24,2,1,16,0,83,158,40,20,97,114,66,35,37, +114,53,114,115,2,2,10,10,10,35,80,158,34,34,20,100,159,34,16,1,30, 2,2,2,3,193,16,0,11,11,16,1,2,3,35,11,16,25,2,4,2,5, -2,6,2,7,2,8,2,9,2,1,2,10,2,11,2,12,2,13,2,14,2, +2,6,2,7,2,8,2,1,2,9,2,10,2,11,2,12,2,13,2,14,2, 15,2,16,2,17,2,18,2,19,2,20,2,21,2,22,2,23,2,24,2,25, -2,26,2,27,16,25,2,28,2,29,2,30,2,29,2,29,2,30,2,29,66, -35,37,99,111,110,100,2,28,2,30,11,2,31,2,29,2,29,2,29,2,30, -2,31,2,30,2,29,2,29,2,28,2,32,72,35,37,115,116,120,109,122,45, -98,111,100,121,2,32,2,29,16,25,2,4,2,5,2,6,2,7,2,8,2, -9,2,1,2,10,2,11,2,12,66,108,101,116,114,101,99,2,14,2,15,2, -16,2,17,2,18,2,19,2,20,2,21,2,22,2,23,2,24,2,25,2,26, -2,27,34,59,93,16,5,93,2,13,87,98,83,158,34,16,2,89,162,35,35, -41,9,223,0,251,80,158,38,46,20,15,159,38,44,47,21,94,2,33,2,34, +2,26,2,27,16,25,2,28,2,28,2,28,2,28,2,28,2,28,2,29,2, +29,2,28,66,35,37,99,111,110,100,2,30,72,35,37,115,116,120,109,122,45, +98,111,100,121,2,30,11,2,31,2,32,2,28,2,32,2,32,2,31,2,28, +2,29,2,29,2,29,2,28,16,25,2,4,2,5,2,6,2,7,2,8,2, +1,2,9,2,10,2,11,2,12,2,13,2,14,2,15,66,108,101,116,114,101, +99,2,17,2,18,2,19,2,20,2,21,2,22,2,23,2,24,2,25,2,26, +2,27,34,59,93,16,5,93,2,16,87,98,83,158,34,16,2,89,162,35,35, +46,9,223,0,251,80,158,38,46,20,15,159,38,44,47,21,94,2,33,2,34, 248,22,58,198,248,22,84,198,80,159,34,8,30,35,83,158,34,16,2,89,162, -35,35,41,9,223,0,251,80,158,38,46,20,15,159,38,40,47,21,94,2,35, +35,35,46,9,223,0,251,80,158,38,46,20,15,159,38,40,47,21,94,2,35, 2,36,248,22,58,198,248,22,84,198,80,159,34,8,29,35,83,158,34,16,2, -89,162,35,35,41,9,223,0,251,80,158,38,46,20,15,159,38,39,47,21,94, +89,162,35,35,46,9,223,0,251,80,158,38,46,20,15,159,38,39,47,21,94, 2,37,2,38,248,22,58,198,248,22,84,198,80,159,34,8,28,35,83,158,34, -16,2,89,162,35,35,40,9,223,0,250,80,158,37,46,20,15,159,37,38,47, +16,2,89,162,35,35,45,9,223,0,250,80,158,37,46,20,15,159,37,38,47, 21,93,2,39,248,22,58,197,80,159,34,8,27,35,83,158,34,16,2,89,162, -35,35,41,9,223,0,251,80,158,38,46,20,15,159,38,35,47,21,94,2,40, -2,41,248,22,58,198,248,22,84,198,80,159,34,8,26,35,89,162,34,35,54, +35,35,46,9,223,0,251,80,158,38,46,20,15,159,38,35,47,21,94,2,40, +2,41,248,22,58,198,248,22,84,198,80,159,34,8,26,35,89,162,34,35,59, 9,223,0,27,28,248,80,158,36,34,195,249,80,158,37,35,248,80,158,38,36, 197,27,248,80,158,39,37,198,28,248,80,158,39,34,193,249,80,158,40,38,27, -248,80,158,42,36,196,28,248,80,158,42,39,193,248,22,8,89,162,34,35,41, -9,224,8,1,27,249,22,2,89,162,34,35,46,9,224,4,5,249,80,158,37, +248,80,158,42,36,196,28,248,80,158,42,39,193,248,22,9,89,162,34,35,46, +9,224,8,1,27,249,22,2,89,162,34,35,51,9,224,4,5,249,80,158,37, 40,28,248,80,158,38,34,197,249,80,158,39,35,248,80,158,40,36,199,27,248, 80,158,41,37,200,28,248,80,158,41,34,193,249,80,158,42,35,248,80,158,43, 36,195,248,80,158,43,41,248,80,158,44,37,196,11,11,194,248,80,158,39,42, 196,28,248,22,63,193,21,94,9,9,248,80,158,37,43,193,11,27,248,80,158, 42,37,196,28,248,80,158,42,39,193,248,80,158,42,42,193,11,11,11,28,192, 27,248,22,58,194,27,248,22,84,195,27,248,22,93,196,27,248,22,94,197,249, -80,158,41,44,200,27,250,22,67,200,199,198,250,80,158,45,45,89,162,34,34, -45,9,224,11,3,252,80,158,40,46,20,15,159,40,34,47,21,95,2,42,2, -43,2,44,248,22,58,198,250,22,2,80,159,43,8,26,35,248,22,58,201,248, -22,84,201,248,22,86,198,21,99,2,13,2,45,94,2,46,2,47,9,94,94, +80,158,41,44,200,27,250,22,67,198,200,199,250,80,158,45,45,89,162,34,34, +50,9,224,11,3,252,80,158,40,46,20,15,159,40,34,47,21,95,2,42,2, +43,2,44,248,22,84,198,250,22,2,80,159,43,8,26,35,248,22,84,201,248, +22,86,201,248,22,58,198,21,99,2,16,2,45,94,2,46,2,47,9,94,94, 2,46,2,48,2,47,2,49,2,47,20,15,159,45,36,47,27,28,248,80,158, 37,34,196,249,80,158,38,35,248,80,158,39,36,198,27,248,80,158,40,37,199, 28,248,80,158,40,34,193,28,27,248,80,158,41,36,194,28,249,22,150,8,6, @@ -4500,22 +4507,22 @@ 80,158,42,34,193,249,80,158,43,38,27,248,80,158,45,36,196,28,248,80,158, 45,39,193,248,22,65,248,80,158,46,42,194,11,27,248,80,158,45,37,196,28, 248,80,158,45,34,193,249,80,158,46,38,27,248,80,158,48,36,196,28,248,80, -158,48,39,193,248,22,8,89,162,34,35,41,9,224,14,1,27,249,22,2,89, -162,34,35,46,9,224,4,5,249,80,158,37,40,28,248,80,158,38,34,197,249, +158,48,39,193,248,22,9,89,162,34,35,46,9,224,14,1,27,249,22,2,89, +162,34,35,51,9,224,4,5,249,80,158,37,40,28,248,80,158,38,34,197,249, 80,158,39,35,248,80,158,40,36,199,27,248,80,158,41,37,200,28,248,80,158, 41,34,193,249,80,158,42,35,248,80,158,43,36,195,248,80,158,43,41,248,80, 158,44,37,196,11,11,194,248,80,158,39,42,196,28,248,22,63,193,21,94,9, 9,248,80,158,37,43,193,11,27,248,80,158,48,37,196,28,248,80,158,48,39, 193,248,80,158,48,42,193,11,11,11,11,11,11,11,11,28,192,27,248,22,58, 194,27,248,22,84,195,27,248,22,93,196,27,248,22,96,197,27,248,22,95,198, -249,80,158,43,44,202,27,251,22,67,199,201,200,202,250,80,158,47,45,89,162, -34,34,47,9,224,13,3,252,80,158,40,46,20,15,159,40,37,47,21,95,2, -50,2,51,2,52,249,22,2,80,159,42,8,27,35,248,22,84,200,250,22,2, -80,159,43,8,28,35,248,22,94,201,248,22,93,201,249,22,71,250,22,2,80, -159,45,8,29,35,248,22,84,203,248,22,94,203,250,80,158,45,46,20,15,159, -45,41,47,21,93,2,53,248,22,58,203,21,95,2,6,94,94,2,46,2,3, -2,47,97,2,6,94,94,2,54,2,48,2,47,95,2,8,2,46,2,54,2, -47,96,2,6,9,2,49,2,47,20,15,159,47,42,47,27,28,248,80,158,38, +249,80,158,43,44,202,27,251,22,67,201,200,199,202,250,80,158,47,45,89,162, +34,34,52,9,224,13,3,252,80,158,40,46,20,15,159,40,37,47,21,95,2, +50,2,51,2,52,249,22,2,80,159,42,8,27,35,248,22,58,200,250,22,2, +80,159,43,8,28,35,248,22,94,201,248,22,84,201,249,22,71,250,22,2,80, +159,45,8,29,35,248,22,58,203,248,22,94,203,250,80,158,45,46,20,15,159, +45,41,47,21,93,2,53,248,22,93,203,21,95,2,10,94,94,2,46,2,3, +2,47,97,2,10,94,94,2,54,2,48,2,47,95,2,7,2,46,2,54,2, +47,96,2,10,9,2,49,2,47,20,15,159,47,42,47,27,28,248,80,158,38, 34,197,249,80,158,39,35,248,80,158,40,36,199,27,248,80,158,41,37,200,28, 248,80,158,41,34,193,28,27,248,80,158,42,36,194,28,249,22,150,8,6,19, 19,103,101,110,101,114,97,116,101,95,116,101,109,112,95,110,97,109,101,115,248, @@ -4526,8 +4533,8 @@ 80,158,45,34,193,249,80,158,46,38,27,248,80,158,48,36,196,28,248,80,158, 48,39,193,248,22,65,248,80,158,49,42,194,11,27,248,80,158,48,37,196,28, 248,80,158,48,34,193,249,80,158,49,38,27,248,80,158,51,36,196,28,248,80, -158,51,39,193,248,22,8,89,162,34,35,41,9,224,17,1,27,249,22,2,89, -162,34,35,46,9,224,4,5,249,80,158,37,40,28,248,80,158,38,34,197,249, +158,51,39,193,248,22,9,89,162,34,35,46,9,224,17,1,27,249,22,2,89, +162,34,35,51,9,224,4,5,249,80,158,37,40,28,248,80,158,38,34,197,249, 80,158,39,35,248,80,158,40,36,199,27,248,80,158,41,37,200,28,248,80,158, 41,34,193,249,80,158,42,35,248,80,158,43,36,195,248,80,158,43,41,248,80, 158,44,37,196,11,11,194,248,80,158,39,42,196,28,248,22,63,193,21,94,9, @@ -4535,13 +4542,13 @@ 193,248,80,158,51,42,193,11,11,11,11,11,11,11,28,192,27,248,22,58,194, 27,248,22,84,195,27,248,22,93,196,27,248,22,96,197,27,249,22,76,199,38, 27,249,22,76,200,39,27,249,22,75,201,40,249,80,158,46,44,205,27,252,22, -67,203,204,202,201,200,250,80,158,50,45,89,162,34,34,46,9,224,16,3,253, +67,202,201,200,203,204,250,80,158,50,45,89,162,34,34,51,9,224,16,3,253, 80,158,41,46,20,15,159,41,43,47,21,96,2,55,2,56,2,57,2,58,248, -22,84,199,248,22,58,199,250,22,2,80,159,44,8,30,35,248,22,93,202,248, -22,96,202,248,22,95,199,21,99,2,13,2,59,94,2,60,2,47,95,2,61, +22,95,199,248,22,96,199,250,22,2,80,159,44,8,30,35,248,22,58,202,248, +22,84,202,248,22,93,199,21,99,2,16,2,59,94,2,60,2,47,95,2,61, 2,62,2,47,94,94,2,46,2,48,2,47,2,49,2,47,20,15,159,50,45, -47,250,22,176,8,11,6,10,10,98,97,100,32,115,121,110,116,97,120,199,34, -20,99,159,39,16,13,30,2,63,69,115,116,120,45,112,97,105,114,63,11,30, +47,250,22,177,8,11,6,10,10,98,97,100,32,115,121,110,116,97,120,199,34, +20,100,159,39,16,13,30,2,63,69,115,116,120,45,112,97,105,114,63,11,30, 2,63,67,99,111,110,115,47,35,102,1,30,2,63,67,115,116,120,45,99,97, 114,5,30,2,63,67,115,116,120,45,99,100,114,6,30,2,63,69,97,112,112, 101,110,100,47,35,102,0,30,2,63,69,115,116,120,45,108,105,115,116,63,8, @@ -4556,26 +4563,26 @@ EVAL_ONE_SIZED_STR((char *)expr, 3636); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,55,2,0,0,0,1,0,0,3,0,0,0,81,0, -0,0,94,10,11,159,34,20,99,159,34,16,1,20,24,65,98,101,103,105,110, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,56,2,0,0,0,1,0,0,3,0,0,0,81,0, +0,0,94,10,11,159,34,20,100,159,34,16,1,20,24,65,98,101,103,105,110, 16,0,83,160,41,80,158,34,34,34,18,158,95,10,67,114,101,113,117,105,114, 101,95,64,111,110,108,121,68,109,122,115,99,104,101,109,101,1,22,110,97,109, 101,115,112,97,99,101,45,114,101,113,117,105,114,101,47,99,111,112,121,35,0}; EVAL_ONE_SIZED_STR((char *)expr, 104); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,55,3,0,0,0,1,0,0,9,0,12,0,0,0, -75,0,0,0,68,109,122,115,99,104,101,109,101,94,10,11,159,35,20,99,159, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,56,3,0,0,0,1,0,0,9,0,12,0,0,0, +75,0,0,0,68,109,122,115,99,104,101,109,101,94,10,11,159,35,20,100,159, 34,16,1,20,24,65,98,101,103,105,110,16,0,83,158,45,87,94,248,22,184, 3,2,1,83,160,41,80,158,34,34,35,18,158,95,10,78,114,101,113,117,105, 114,101,45,102,111,114,45,115,121,110,116,97,120,2,1,36,0}; EVAL_ONE_SIZED_STR((char *)expr, 100); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,55,1,0,0,0,1,0,0,0,0,66,0,0,0, -159,38,20,99,159,34,16,0,16,0,248,22,176,3,248,249,22,178,3,66,35, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,56,1,0,0,0,1,0,0,0,0,66,0,0,0, +159,38,20,100,159,34,16,0,16,0,248,22,176,3,248,249,22,178,3,66,35, 37,109,105,115,99,1,34,109,97,107,101,45,115,116,97,110,100,97,114,100,45, 109,111,100,117,108,101,45,110,97,109,101,45,114,101,115,111,108,118,101,114,247, -22,159,11,0}; +22,160,11,0}; EVAL_ONE_SIZED_STR((char *)expr, 87); } diff --git a/src/mzscheme/src/env.c b/src/mzscheme/src/env.c index a15a13e305..265c0ccc22 100644 --- a/src/mzscheme/src/env.c +++ b/src/mzscheme/src/env.c @@ -154,6 +154,20 @@ static void init_compile_data(Scheme_Comp_Env *env); /* initialization */ /*========================================================================*/ + +#ifdef DONT_USE_FOREIGN +static void init_dummy_foreign(Scheme *env) +{ + /* Works just well enough that the `mzscheme' module can + import it (so that attaching `mzscheme' to a namespace + also attaches `#%foreign'). */ + Scheme_Env *menv; + menv = scheme_primitive_module(scheme_intern_symbol("#%foreign"), env); + scheme_finish_primitive_module(menv); + scheme_protect_primitive_provide(menv, NULL); +} +#endif + Scheme_Env *scheme_basic_env() { Scheme_Env *env; @@ -350,6 +364,8 @@ Scheme_Env *scheme_basic_env() #ifndef DONT_USE_FOREIGN scheme_init_foreign(env); +#else + init_dummy_foreign(env); #endif scheme_add_embedded_builtins(env); diff --git a/src/mzscheme/src/eval.c b/src/mzscheme/src/eval.c index a5a1ed57b7..be2c4cfa37 100644 --- a/src/mzscheme/src/eval.c +++ b/src/mzscheme/src/eval.c @@ -172,6 +172,7 @@ static Scheme_Object *compile(int argc, Scheme_Object *argv[]); static Scheme_Object *compiled_p(int argc, Scheme_Object *argv[]); static Scheme_Object *expand(int argc, Scheme_Object **argv); static Scheme_Object *local_expand(int argc, Scheme_Object **argv); +static Scheme_Object *local_expand_expr(int argc, Scheme_Object **argv); static Scheme_Object *local_expand_catch_lifts(int argc, Scheme_Object **argv); static Scheme_Object *local_transformer_expand(int argc, Scheme_Object **argv); static Scheme_Object *local_transformer_expand_catch_lifts(int argc, Scheme_Object **argv); @@ -387,6 +388,11 @@ scheme_init_eval (Scheme_Env *env) "local-expand", 3, 4), env); + scheme_add_global_constant("syntax-local-expand-expression", + scheme_make_prim_w_arity(local_expand_expr, + "syntax-local-expand-expression", + 1, 1), + env); scheme_add_global_constant("syntax-local-bind-syntaxes", scheme_make_prim_w_arity(local_eval, "syntax-local-bind-syntaxes", @@ -3975,6 +3981,18 @@ compile_expand_macro_app(Scheme_Object *name, Scheme_Env *menv, Scheme_Object *m /* caller expects rec[drec] to be used to compile the result... */ } +static int same_effective_env(Scheme_Comp_Env *orig, Scheme_Comp_Env *e) +{ + while (1) { + if (orig == e) + return 1; + if (e && e->flags & SCHEME_FOR_STOPS) + e = e->next; + else + return 0; + } +} + static Scheme_Object *compile_expand_expr_k(void) { Scheme_Thread *p = scheme_current_thread; @@ -4045,6 +4063,22 @@ scheme_compile_expand_expr(Scheme_Object *form, Scheme_Comp_Env *env, SCHEME_EXPAND_OBSERVE_VISIT(rec[drec].observer,form); } + if (SAME_TYPE(SCHEME_TYPE(SCHEME_STX_VAL(form)), scheme_expanded_syntax_type)) { + var = SCHEME_STX_VAL(form); + if (scheme_stx_has_empty_wraps(form) + && same_effective_env(SCHEME_PTR2_VAL(var), env)) { + /* FIXME: this needs EXPAND_OBSERVE callbacks. */ + var = scheme_stx_track(SCHEME_PTR1_VAL(var), form, form); + form = scheme_stx_cert(var, scheme_false, NULL, form, NULL, 1); + if (!rec[drec].comp) { + /* Already fully expanded. */ + return form; + } + } else { + scheme_wrong_syntax(NULL, NULL, SCHEME_PTR1_VAL(var), "expanded syntax not in its original context"); + } + } + looking_for_top = 0; if (SCHEME_STX_NULLP(form)) { @@ -7655,15 +7689,16 @@ scheme_make_lifted_defn(Scheme_Object *sys_wraps, Scheme_Object **_id, Scheme_Ob } static Scheme_Object * -do_local_expand(const char *name, int for_stx, int catch_lifts, int argc, Scheme_Object **argv) +do_local_expand(const char *name, int for_stx, int catch_lifts, int for_expr, int argc, Scheme_Object **argv) { - Scheme_Comp_Env *env; - Scheme_Object *l, *local_mark, *renaming = NULL, *orig_l; + Scheme_Comp_Env *env, *orig_env; + Scheme_Object *l, *local_mark, *renaming = NULL, *orig_l, *exp_expr = NULL; int cnt, pos, kind; int bad_sub_env = 0; Scheme_Object *observer; env = scheme_current_thread->current_local_env; + orig_env = env; if (!env) scheme_raise_exn(MZEXN_FAIL_CONTRACT, "%s: not currently transforming", name); @@ -7673,7 +7708,9 @@ do_local_expand(const char *name, int for_stx, int catch_lifts, int argc, Scheme env = scheme_new_comp_env(env->genv->exp_env, env->insp, 0); } - if (SAME_OBJ(argv[1], module_symbol)) + if (for_expr) + kind = 0; /* expression */ + else if (SAME_OBJ(argv[1], module_symbol)) kind = SCHEME_MODULE_BEGIN_FRAME; /* name is backwards compared to symbol! */ else if (SAME_OBJ(argv[1], module_begin_symbol)) kind = SCHEME_MODULE_FRAME; /* name is backwards compared to symbol! */ @@ -7718,7 +7755,8 @@ do_local_expand(const char *name, int for_stx, int catch_lifts, int argc, Scheme local_mark = scheme_current_thread->current_local_mark; - if (SCHEME_TRUEP(argv[2])) { + if (for_expr) { + } else if (SCHEME_TRUEP(argv[2])) { cnt = scheme_stx_proper_list_length(argv[2]); if (cnt > 0) scheme_add_local_syntax(cnt, env); @@ -7804,6 +7842,25 @@ do_local_expand(const char *name, int for_stx, int catch_lifts, int argc, Scheme if (renaming) l = scheme_add_rename(l, renaming); + if (for_expr) { + /* Package up expanded expr with the enviornment. */ + while (1) { + if (orig_env->flags & SCHEME_FOR_STOPS) + orig_env = orig_env->next; + else if ((orig_env->flags & SCHEME_INTDEF_FRAME) + && !orig_env->num_bindings) + orig_env = orig_env->next; + else + break; + } + exp_expr = scheme_alloc_object(); + exp_expr->type = scheme_expanded_syntax_type; + SCHEME_PTR1_VAL(exp_expr) = l; + SCHEME_PTR2_VAL(exp_expr) = orig_env; + exp_expr = scheme_datum_to_syntax(exp_expr, l, scheme_false, 0, 0); + exp_expr = scheme_add_remove_mark(exp_expr, local_mark); + } + if (local_mark) { /* Put the temporary mark back: */ l = scheme_add_remove_mark(l, local_mark); @@ -7811,31 +7868,43 @@ do_local_expand(const char *name, int for_stx, int catch_lifts, int argc, Scheme SCHEME_EXPAND_OBSERVE_EXIT_LOCAL(observer, l); - return l; + if (for_expr) { + Scheme_Object *a[2]; + a[0] = l; + a[1] = exp_expr; + return scheme_values(2, a); + } else + return l; } static Scheme_Object * local_expand(int argc, Scheme_Object **argv) { - return do_local_expand("local-expand", 0, 0, argc, argv); + return do_local_expand("local-expand", 0, 0, 0, argc, argv); +} + +static Scheme_Object * +local_expand_expr(int argc, Scheme_Object **argv) +{ + return do_local_expand("syntax-local-expand-expression", 0, 0, 1, argc, argv); } static Scheme_Object * local_transformer_expand(int argc, Scheme_Object **argv) { - return do_local_expand("local-transformer-expand", 1, 0, argc, argv); + return do_local_expand("local-transformer-expand", 1, 0, 0, argc, argv); } static Scheme_Object * local_expand_catch_lifts(int argc, Scheme_Object **argv) { - return do_local_expand("local-expand/capture-lifts", 0, 1, argc, argv); + return do_local_expand("local-expand/capture-lifts", 0, 1, 0, argc, argv); } static Scheme_Object * local_transformer_expand_catch_lifts(int argc, Scheme_Object **argv) { - return do_local_expand("local-transformer-expand/capture-lifts", 1, 1, argc, argv); + return do_local_expand("local-transformer-expand/capture-lifts", 1, 1, 0, argc, argv); } static Scheme_Object * diff --git a/src/mzscheme/src/fun.c b/src/mzscheme/src/fun.c index 092d08438e..75a2eea926 100644 --- a/src/mzscheme/src/fun.c +++ b/src/mzscheme/src/fun.c @@ -3288,6 +3288,25 @@ static Scheme_Object *call_with_values(int argc, Scheme_Object *argv[]) return SCHEME_TAIL_CALL_WAITING; } +static MZ_INLINE Scheme_Object *values_slow(int argc, Scheme_Object *argv[]) +{ + Scheme_Thread *p = scheme_current_thread; + Scheme_Object **a; + int i; + + a = MALLOC_N(Scheme_Object *, argc); + p->values_buffer = a; + p->values_buffer_size = argc; + + p->ku.multiple.array = a; + + for (i = 0; i < argc; i++) { + a[i] = argv[i]; + } + + return SCHEME_MULTIPLE_VALUES; +} + Scheme_Object *scheme_values(int argc, Scheme_Object *argv[]) { Scheme_Thread *p; @@ -3299,12 +3318,10 @@ Scheme_Object *scheme_values(int argc, Scheme_Object *argv[]) p = scheme_current_thread; p->ku.multiple.count = argc; - if (p->values_buffer && (p->values_buffer_size >= argc)) + if (p->values_buffer && (p->values_buffer_size >= argc)) { a = p->values_buffer; - else { - a = MALLOC_N(Scheme_Object *, argc); - p->values_buffer = a; - p->values_buffer_size = argc; + } else { + return values_slow(argc, argv); } p->ku.multiple.array = a; diff --git a/src/mzscheme/src/hash.c b/src/mzscheme/src/hash.c index c4444d063e..01c139c7eb 100644 --- a/src/mzscheme/src/hash.c +++ b/src/mzscheme/src/hash.c @@ -1079,8 +1079,14 @@ static long equal_hash_key(Scheme_Object *o, long k) return k + (PTR_TO_LONG(o) >> 4); } # endif - default: - return k + (PTR_TO_LONG(o) >> 4); + default: + { + Scheme_Primary_Hash_Proc h1 = scheme_type_hash1s[t]; + if (h1) + return h1(o, k); + else + return k + (PTR_TO_LONG(o) >> 4); + } } k = (k << 1) + k; @@ -1274,6 +1280,12 @@ long scheme_equal_hash_key2(Scheme_Object *o) return k; } default: - return t; + { + Scheme_Secondary_Hash_Proc h2 = scheme_type_hash2s[t]; + if (h2) + return h2(o); + else + return t; + } } } diff --git a/src/mzscheme/src/jit.c b/src/mzscheme/src/jit.c index 8ddb8e739a..15879b525d 100644 --- a/src/mzscheme/src/jit.c +++ b/src/mzscheme/src/jit.c @@ -107,6 +107,7 @@ static void *call_original_binary_arith_for_branch_code; static void *call_original_binary_rev_arith_for_branch_code; static void *bad_car_code, *bad_cdr_code; static void *bad_caar_code, *bad_cdar_code, *bad_cadr_code, *bad_cddr_code; +static void *bad_set_car_code, *bad_set_cdr_code; static void *bad_unbox_code; static void *vector_ref_code, *vector_ref_check_index_code, *vector_set_code, *vector_set_check_index_code; static void *string_ref_code, *string_ref_check_index_code, *string_set_code, *string_set_check_index_code; @@ -1897,7 +1898,9 @@ static int generate_app(Scheme_App_Rec *app, Scheme_Object **alt_rands, int num_ if ((num_rands >= ((Scheme_Primitive_Proc *)rator)->mina) && ((num_rands <= ((Scheme_Primitive_Proc *)rator)->mu.maxa) || (((Scheme_Primitive_Proc *)rator)->mina < 0)) - && is_noncm(rator, jitter, 0, 0)) + && (is_noncm(rator, jitter, 0, 0) + /* It's also ok to directly call `values' if multiple values are ok: */ + || (multi_ok && SAME_OBJ(rator, scheme_values_func)))) direct_prim = 1; } else { Scheme_Type t; @@ -3260,6 +3263,43 @@ static int generate_inlined_binary(mz_jit_state *jitter, Scheme_App3_Rec *app, i else mz_runstack_unskipped(jitter, 1); + return 1; + } else if (IS_NAMED_PRIM(rator, "set-car!") + || IS_NAMED_PRIM(rator, "set-cdr!")) { + GC_CAN_IGNORE jit_insn *reffail, *ref; + int set_car; + + set_car = IS_NAMED_PRIM(rator, "set-car!"); + + LOG_IT(("inlined set-car!\n")); + + generate_two_args(app->rand1, app->rand2, jitter, 1); + CHECK_LIMIT(); + + __START_SHORT_JUMPS__(1); + ref = jit_bmci_ul(jit_forward(), JIT_R0, 0x1); + reffail = _jit.x.pc; + __END_SHORT_JUMPS__(1); + if (set_car) + (void)jit_jmpi(bad_set_car_code); + else + (void)jit_jmpi(bad_set_cdr_code); + __START_SHORT_JUMPS__(1); + mz_patch_branch(ref); + jit_ldxi_s(JIT_R2, JIT_R0, &((Scheme_Object *)0x0)->type); + (void)jit_bnei_i(reffail, JIT_R2, scheme_pair_type); + jit_ldxi_s(JIT_R2, JIT_R0, &(MZ_OPT_HASH_KEY((Scheme_Inclhash_Object *)0x0))); + (void)jit_bmsi_ul(reffail, JIT_R2, 0x1); + __END_SHORT_JUMPS__(1); + CHECK_LIMIT(); + + if (set_car) + (void)jit_stxi_p(&((Scheme_Simple_Object *)0x0)->u.pair_val.car, JIT_R0, JIT_R1); + else + (void)jit_stxi_p(&((Scheme_Simple_Object *)0x0)->u.pair_val.cdr, JIT_R0, JIT_R1); + + (void)jit_movi_p(JIT_R0, scheme_void); + return 1; } else if (IS_NAMED_PRIM(rator, "cons")) { LOG_IT(("inlined cons\n")); @@ -4830,6 +4870,37 @@ static int do_generate_common(mz_jit_state *jitter, void *_data) CHECK_LIMIT(); } + /* *** bad_set_{car,cdr}_code *** */ + /* Bad argument is in R0, other is in R1 */ + for (i = 0; i < 2; i++) { + switch (i) { + case 0: + bad_set_car_code = jit_get_ip().ptr; + break; + case 1: + bad_set_cdr_code = jit_get_ip().ptr; + break; + } + jit_subi_p(JIT_RUNSTACK, JIT_RUNSTACK, WORDS_TO_BYTES(2)); + jit_str_p(JIT_RUNSTACK, JIT_R0); + jit_stxi_p(WORDS_TO_BYTES(1), JIT_RUNSTACK, JIT_R1); + JIT_UPDATE_THREAD_RSPTR(); + CHECK_LIMIT(); + jit_movi_i(JIT_R1, 2); + jit_prepare(2); + jit_pusharg_p(JIT_RUNSTACK); + jit_pusharg_i(JIT_R1); + switch (i) { + case 0: + (void)mz_finish(scheme_checked_set_car); + break; + case 1: + (void)mz_finish(scheme_checked_set_cdr); + break; + } + CHECK_LIMIT(); + } + /* *** bad_unbox_code *** */ /* R0 is argument */ bad_unbox_code = jit_get_ip().ptr; diff --git a/src/mzscheme/src/list.c b/src/mzscheme/src/list.c index 5b45ac63fd..82b1ab117a 100644 --- a/src/mzscheme/src/list.c +++ b/src/mzscheme/src/list.c @@ -30,8 +30,6 @@ Scheme_Object scheme_null[1]; /* locals */ static Scheme_Object *pair_p_prim (int argc, Scheme_Object *argv[]); static Scheme_Object *cons_prim (int argc, Scheme_Object *argv[]); -static Scheme_Object *set_car_prim (int argc, Scheme_Object *argv[]); -static Scheme_Object *set_cdr_prim (int argc, Scheme_Object *argv[]); static Scheme_Object *cons_immutable (int argc, Scheme_Object *argv[]); static Scheme_Object *null_p_prim (int argc, Scheme_Object *argv[]); static Scheme_Object *list_p_prim (int argc, Scheme_Object *argv[]); @@ -138,16 +136,14 @@ scheme_init_list (Scheme_Env *env) SCHEME_PRIM_PROC_FLAGS(p) |= SCHEME_PRIM_IS_UNARY_INLINED; scheme_add_global_constant ("cdr", p, env); - scheme_add_global_constant ("set-car!", - scheme_make_noncm_prim(set_car_prim, - "set-car!", - 2, 2), - env); - scheme_add_global_constant ("set-cdr!", - scheme_make_noncm_prim(set_cdr_prim, - "set-cdr!", - 2, 2), - env); + p = scheme_make_noncm_prim(scheme_checked_set_car, "set-car!", 2, 2); + SCHEME_PRIM_PROC_FLAGS(p) |= SCHEME_PRIM_IS_BINARY_INLINED; + scheme_add_global_constant ("set-car!", p, env); + + p = scheme_make_noncm_prim(scheme_checked_set_cdr, "set-cdr!", 2, 2); + SCHEME_PRIM_PROC_FLAGS(p) |= SCHEME_PRIM_IS_BINARY_INLINED; + scheme_add_global_constant ("set-cdr!", p, env); + scheme_add_global_constant ("cons-immutable", scheme_make_noncm_prim(cons_immutable, "cons-immutable", @@ -766,8 +762,8 @@ scheme_checked_cdr (int argc, Scheme_Object *argv[]) return (SCHEME_CDR (argv[0])); } -static Scheme_Object * -set_car_prim (int argc, Scheme_Object *argv[]) +Scheme_Object * +scheme_checked_set_car (int argc, Scheme_Object *argv[]) { if (!SCHEME_MUTABLE_PAIRP(argv[0])) scheme_wrong_type("set-car!", "mutable-pair", 0, argc, argv); @@ -776,8 +772,8 @@ set_car_prim (int argc, Scheme_Object *argv[]) return scheme_void; } -static Scheme_Object * -set_cdr_prim (int argc, Scheme_Object *argv[]) +Scheme_Object * +scheme_checked_set_cdr (int argc, Scheme_Object *argv[]) { if (!SCHEME_MUTABLE_PAIRP(argv[0])) scheme_wrong_type("set-cdr!", "mutable-pair", 0, argc, argv); diff --git a/src/mzscheme/src/mzmark.c b/src/mzscheme/src/mzmark.c index fbfd32ebe6..0847cdfd18 100644 --- a/src/mzscheme/src/mzmark.c +++ b/src/mzscheme/src/mzmark.c @@ -152,27 +152,50 @@ static int quotesyntax_obj_FIXUP(void *p) { static int cpointer_obj_SIZE(void *p) { return - gcBYTES_TO_WORDS(sizeof(Scheme_Simple_Object)); + gcBYTES_TO_WORDS(sizeof(Scheme_Cptr)); } static int cpointer_obj_MARK(void *p) { - gcMARK(SCHEME_CPTR_VAL((Scheme_Object *)p)); - gcMARK(SCHEME_CPTR_TYPE((Scheme_Object *)p)); + gcMARK(SCHEME_CPTR_VAL(p)); + gcMARK(SCHEME_CPTR_TYPE(p)); return - gcBYTES_TO_WORDS(sizeof(Scheme_Simple_Object)); + gcBYTES_TO_WORDS(sizeof(Scheme_Cptr)); } static int cpointer_obj_FIXUP(void *p) { - gcFIXUP(SCHEME_CPTR_VAL((Scheme_Object *)p)); - gcFIXUP(SCHEME_CPTR_TYPE((Scheme_Object *)p)); + gcFIXUP(SCHEME_CPTR_VAL(p)); + gcFIXUP(SCHEME_CPTR_TYPE(p)); return - gcBYTES_TO_WORDS(sizeof(Scheme_Simple_Object)); + gcBYTES_TO_WORDS(sizeof(Scheme_Cptr)); } #define cpointer_obj_IS_ATOMIC 0 #define cpointer_obj_IS_CONST_SIZE 1 +static int offset_cpointer_obj_SIZE(void *p) { + return + gcBYTES_TO_WORDS(sizeof(Scheme_Offset_Cptr)); +} + +static int offset_cpointer_obj_MARK(void *p) { + gcMARK(SCHEME_CPTR_VAL(p)); + gcMARK(SCHEME_CPTR_TYPE(p)); + return + gcBYTES_TO_WORDS(sizeof(Scheme_Offset_Cptr)); +} + +static int offset_cpointer_obj_FIXUP(void *p) { + gcFIXUP(SCHEME_CPTR_VAL(p)); + gcFIXUP(SCHEME_CPTR_TYPE(p)); + return + gcBYTES_TO_WORDS(sizeof(Scheme_Offset_Cptr)); +} + +#define offset_cpointer_obj_IS_ATOMIC 0 +#define offset_cpointer_obj_IS_CONST_SIZE 1 + + static int second_of_cons_SIZE(void *p) { return gcBYTES_TO_WORDS(sizeof(Scheme_Simple_Object)); diff --git a/src/mzscheme/src/mzmarksrc.c b/src/mzscheme/src/mzmarksrc.c index 82cf367b03..d2c92807f2 100644 --- a/src/mzscheme/src/mzmarksrc.c +++ b/src/mzscheme/src/mzmarksrc.c @@ -56,10 +56,18 @@ quotesyntax_obj { cpointer_obj { mark: - gcMARK(SCHEME_CPTR_VAL((Scheme_Object *)p)); - gcMARK(SCHEME_CPTR_TYPE((Scheme_Object *)p)); + gcMARK(SCHEME_CPTR_VAL(p)); + gcMARK(SCHEME_CPTR_TYPE(p)); size: - gcBYTES_TO_WORDS(sizeof(Scheme_Simple_Object)); + gcBYTES_TO_WORDS(sizeof(Scheme_Cptr)); +} + +offset_cpointer_obj { + mark: + gcMARK(SCHEME_CPTR_VAL(p)); + gcMARK(SCHEME_CPTR_TYPE(p)); + size: + gcBYTES_TO_WORDS(sizeof(Scheme_Offset_Cptr)); } second_of_cons { diff --git a/src/mzscheme/src/nummacs.h b/src/mzscheme/src/nummacs.h index cbf3d90e36..e38d536d4e 100644 --- a/src/mzscheme/src/nummacs.h +++ b/src/mzscheme/src/nummacs.h @@ -553,6 +553,14 @@ static Scheme_Object *name ## __wrong_type(const Scheme_Object *v) \ scheme_wrong_type(scheme_name, "exact integer", -1, 0, a); \ return NULL; \ } \ +static MZ_INLINE Scheme_Object * name ## __int_big(const Scheme_Object *n1, const Scheme_Object *n2) { \ + Small_Bignum sb; \ + return bigop((scheme_make_small_bignum(SCHEME_INT_VAL(n1), &sb)), n2); \ +} \ +static MZ_INLINE Scheme_Object * name ## __big_int(const Scheme_Object *n1, const Scheme_Object *n2) { \ + Small_Bignum sb; \ + return bigop(n1, (scheme_make_small_bignum(SCHEME_INT_VAL(n2), &sb))); \ +} \ static Scheme_Object * \ name (const Scheme_Object *n1, const Scheme_Object *n2) \ { \ @@ -563,13 +571,11 @@ name (const Scheme_Object *n1, const Scheme_Object *n2) \ b = SCHEME_INT_VAL(n2); \ return scheme_make_integer(a op b); \ } else if (SCHEME_BIGNUMP(n2)) { \ - Small_Bignum sb; \ - return bigop(scheme_make_small_bignum(SCHEME_INT_VAL(n1), &sb), n2); \ + return name ## __int_big(n1, n2); \ } \ } else if (SCHEME_BIGNUMP(n1)) { \ if (SCHEME_INTP(n2)) { \ - Small_Bignum sb; \ - return bigop(n1, scheme_make_small_bignum(SCHEME_INT_VAL(n2), &sb)); \ + return name ## __big_int(n1, n2); \ } \ if (SCHEME_BIGNUMP(n2)) \ return bigop(n1, n2); \ diff --git a/src/mzscheme/src/read.c b/src/mzscheme/src/read.c index dd778778c4..b27b2f502e 100644 --- a/src/mzscheme/src/read.c +++ b/src/mzscheme/src/read.c @@ -89,6 +89,7 @@ static Scheme_Object *print_honu(int, Scheme_Object *[]); #define RETURN_FOR_HASH_COMMENT 0x2 #define RETURN_FOR_DELIM 0x4 #define RETURN_FOR_COMMENT 0x8 +#define RETURN_HONU_ANGLE 0x10 static MZ_INLINE long SPAN(Scheme_Object *port, long pos) { long cpos; @@ -303,13 +304,16 @@ static Scheme_Object *unsyntax_splicing_symbol; static Scheme_Object *quasisyntax_symbol; static Scheme_Object *honu_comma, *honu_semicolon; -static Scheme_Object *honu_parens, *honu_braces, *honu_brackets; +static Scheme_Object *honu_parens, *honu_braces, *honu_brackets, *honu_angles; static Scheme_Object *paren_shape_symbol; static Scheme_Object *terminating_macro_symbol, *non_terminating_macro_symbol, *dispatch_macro_symbol; static char *builtin_fast; +/* For matching angle brackets in Honu mode: */ +static Scheme_Object *honu_angle_open, *honu_angle_close; + /* For recoginizing unresolved hash tables and commented-out graph introductions: */ static Scheme_Object *an_uninterned_symbol; @@ -361,12 +365,18 @@ void scheme_init_read(Scheme_Env *env) REGISTER_SO(honu_parens); REGISTER_SO(honu_braces); REGISTER_SO(honu_brackets); + REGISTER_SO(honu_angles); + REGISTER_SO(honu_angle_open); + REGISTER_SO(honu_angle_close); honu_comma = scheme_intern_symbol(","); honu_semicolon = scheme_intern_symbol(";"); honu_parens = scheme_intern_symbol("#%parens"); honu_braces = scheme_intern_symbol("#%braces"); honu_brackets = scheme_intern_symbol("#%brackets"); + honu_angles = scheme_intern_symbol("#%angles"); + honu_angle_open = scheme_make_symbol("<"); /* uninterned */ + honu_angle_close = scheme_make_symbol(">"); /* uninterned */ { int i; @@ -1687,6 +1697,28 @@ read_inner_inner(Scheme_Object *port, Scheme_Object *stxsrc, Scheme_Hash_Table * } special_value = read_symbol(ch, 0, port, stxsrc, line, col, pos, ht, indentation, params, table); break; + case '>': + case '<': + if ((params->honu_mode) && (comment_mode & RETURN_HONU_ANGLE)) { + Scheme_Object *v; + v = read_symbol(ch, 0, port, stxsrc, line, col, pos, ht, indentation, params, table); + special_value = v; + if (SCHEME_STXP(v)) + v = SCHEME_STX_VAL(v); + if (SCHEME_SYMBOLP(v) && (SCHEME_SYM_LEN(v) == 1) + && ((SCHEME_SYM_VAL(v)[0] == '>') || (SCHEME_SYM_VAL(v)[0] == '<'))) { + if (SCHEME_SYM_VAL(v)[0] == '<') + v = honu_angle_open; + else + v = honu_angle_close; + if (SCHEME_STXP(special_value)) + special_value = scheme_datum_to_syntax(v, scheme_false, special_value, 0, 1); + else + special_value = v; + } + } else + special_value = read_symbol(ch, 0, port, stxsrc, line, col, pos, ht, indentation, params, table); + break; default: if (isdigit_ascii(ch)) special_value = read_number(ch, port, stxsrc, line, col, pos, 0, 0, 10, 0, ht, indentation, params, table); @@ -2220,6 +2252,7 @@ static const char *dot_name(ReadParams *params) return mapping_name(params, '.', "`.'", 6); } +static Scheme_Object *combine_angle_brackets(Scheme_Object *list); static Scheme_Object *honu_add_module_wrapper(Scheme_Object *list, Scheme_Object *stxsrc, Scheme_Object *port); @@ -2322,6 +2355,7 @@ read_list(Scheme_Object *port, } } pop_indentation(indentation); + list = combine_angle_brackets(list); list = (stxsrc ? scheme_make_stx_w_offset(list, line, col, pos, SPAN(port, pos), stxsrc, STX_SRCTAG) : list); @@ -2344,7 +2378,8 @@ read_list(Scheme_Object *port, to make sure that it's not a comment. For consistency, always read ahead. */ scheme_ungetc(ch, port); - prefetched = read_inner(port, stxsrc, ht, indentation, params, RETURN_FOR_SPECIAL_COMMENT); + prefetched = read_inner(port, stxsrc, ht, indentation, params, + RETURN_FOR_SPECIAL_COMMENT | RETURN_HONU_ANGLE); if (!prefetched) continue; /* It was a comment; try again. */ @@ -2376,7 +2411,8 @@ read_list(Scheme_Object *port, prefetched = NULL; } else { scheme_ungetc(ch, port); - car = read_inner(port, stxsrc, ht, indentation, params, RETURN_FOR_SPECIAL_COMMENT); + car = read_inner(port, stxsrc, ht, indentation, params, + RETURN_FOR_SPECIAL_COMMENT | RETURN_HONU_ANGLE); if (!car) continue; /* special was a comment */ } /* can't be eof, due to check above */ @@ -2428,6 +2464,8 @@ read_list(Scheme_Object *port, } pop_indentation(indentation); + if (params->honu_mode) + list = combine_angle_brackets(list); list = (stxsrc ? scheme_make_stx_w_offset(list, line, col, pos, SPAN(port, pos), stxsrc, STX_SRCTAG) : list); @@ -2450,7 +2488,7 @@ read_list(Scheme_Object *port, return NULL; } /* can't be eof, due to check above: */ - cdr = read_inner(port, stxsrc, ht, indentation, params, 0); + cdr = read_inner(port, stxsrc, ht, indentation, params, RETURN_HONU_ANGLE); ch = skip_whitespace_comments(port, stxsrc, ht, indentation, params); effective_ch = readtable_effective_char(params->table, ch); if (effective_ch != closer) { @@ -2503,7 +2541,8 @@ read_list(Scheme_Object *port, /* Assert: infixed is NULL (otherwise we raised an exception above) */ pop_indentation(indentation); - + if (params->honu_mode) + list = combine_angle_brackets(list); list = (stxsrc ? scheme_make_stx_w_offset(list, line, col, pos, SPAN(port, pos), stxsrc, STX_SRCTAG) : list); @@ -2514,7 +2553,8 @@ read_list(Scheme_Object *port, if ((ch == SCHEME_SPECIAL) || (params->table && (ch != EOF))) { /* We have to try the read, because it might be a comment. */ scheme_ungetc(ch, port); - prefetched = read_inner(port, stxsrc, ht, indentation, params, RETURN_FOR_SPECIAL_COMMENT); + prefetched = read_inner(port, stxsrc, ht, indentation, params, + RETURN_FOR_SPECIAL_COMMENT | RETURN_HONU_ANGLE); if (!prefetched) goto retry_before_dot; } else { @@ -2538,6 +2578,87 @@ read_list(Scheme_Object *port, } } +static Scheme_Object *combine_angle_brackets(Scheme_Object *list) +{ + Scheme_Object *l, *a, *open_stack = NULL, *prev = NULL; + int i, ch; + + for (l = list; !SCHEME_NULLP(l); l = SCHEME_CDR(l)) { + a = SCHEME_CAR(l); + if (SCHEME_STXP(a)) + a = SCHEME_STX_VAL(a); + if (SAME_OBJ(a, honu_angle_open)) { + open_stack = scheme_make_raw_pair(scheme_make_raw_pair(l, prev), + open_stack); + /* Tentatively assume no matching close: */ + a = scheme_intern_symbol("<"); + if (SCHEME_STXP(SCHEME_CAR(l))) + a = scheme_datum_to_syntax(a, scheme_false, SCHEME_CAR(l), 0, 1); + SCHEME_CAR(l) = a; + } else if (SAME_OBJ(a, honu_angle_close)) { + if (open_stack) { + /* A matching close --- combine the angle brackets! */ + Scheme_Object *open, *open_prev; + Scheme_Object *naya, *ang, *seq; + open = SCHEME_CAR(open_stack); + open_prev = SCHEME_CDR(open); + open = SCHEME_CAR(open); + open_stack = SCHEME_CDR(open_stack); + ang = honu_angles; + if (SCHEME_STXP(SCHEME_CAR(l))) { + Scheme_Stx *o, *c; + int span; + o = (Scheme_Stx *)SCHEME_CAR(open); + c = (Scheme_Stx *)SCHEME_CAR(l); + if ((o->srcloc->pos >= 0) && (c->srcloc->pos >= 0)) + span = (c->srcloc->pos - o->srcloc->pos) + c->srcloc->span; + else + span = -1; + ang = scheme_make_stx_w_offset(ang, + o->srcloc->line, + o->srcloc->col, + o->srcloc->pos, + span, + o->srcloc->src, + STX_SRCTAG); + } + seq = scheme_make_pair(ang, SCHEME_CDR(open)); + SCHEME_CDR(prev) = scheme_null; + if (SCHEME_STXP(ang)) { + seq = scheme_datum_to_syntax(seq, scheme_false, ang, 0, 1); + } + naya = scheme_make_pair(seq, SCHEME_CDR(l)); + if (open_prev) { + SCHEME_CDR(open_prev) = naya; + } else { + list = naya; + } + l = naya; + } else { + /* Not a matching close: */ + a = scheme_intern_symbol(">"); + if (SCHEME_STXP(SCHEME_CAR(l))) + a = scheme_datum_to_syntax(a, scheme_false, SCHEME_CAR(l), 0, 1); + SCHEME_CAR(l) = a; + } + } else if (open_stack && SCHEME_SYMBOLP(a)) { + /* Check for ids containing -, |, or &, which have lower + operator precedence than < and >, and which therefore break up + angle brackets. */ + for (i = SCHEME_SYM_LEN(a); i--; ) { + ch = SCHEME_SYM_VAL(a)[i]; + if ((ch == '=') || (ch == '|') || (ch == '&')) { + open_stack = NULL; + break; + } + } + } + prev = l; + } + + return list; +} + static Scheme_Object * honu_add_module_wrapper(Scheme_Object *list, Scheme_Object *stxsrc, Scheme_Object *port) { diff --git a/src/mzscheme/src/salloc.c b/src/mzscheme/src/salloc.c index dfae4d0284..2d85c284d9 100644 --- a/src/mzscheme/src/salloc.c +++ b/src/mzscheme/src/salloc.c @@ -230,10 +230,23 @@ Scheme_Object *scheme_make_cptr(void *cptr, Scheme_Object *typetag) { Scheme_Object *o; - o = scheme_alloc_object(); + o = (Scheme_Object *)scheme_malloc_small_tagged(sizeof(Scheme_Cptr)); o->type = scheme_cpointer_type; - SCHEME_PTR1_VAL(o) = cptr; - SCHEME_PTR2_VAL(o) = (void *)typetag; + SCHEME_CPTR_VAL(o) = cptr; + SCHEME_CPTR_TYPE(o) = (void *)typetag; + + return o; +} + +Scheme_Object *scheme_make_offset_cptr(void *cptr, long offset, Scheme_Object *typetag) +{ + Scheme_Object *o; + + o = (Scheme_Object *)scheme_malloc_small_tagged(sizeof(Scheme_Offset_Cptr)); + o->type = scheme_offset_cpointer_type; + SCHEME_CPTR_VAL(o) = cptr; + SCHEME_CPTR_TYPE(o) = (void *)typetag; + ((Scheme_Offset_Cptr *)o)->offset = offset; return o; } diff --git a/src/mzscheme/src/schemef.h b/src/mzscheme/src/schemef.h index bf745bf346..bb15f12f43 100644 --- a/src/mzscheme/src/schemef.h +++ b/src/mzscheme/src/schemef.h @@ -335,6 +335,9 @@ MZ_EXTERN void *GC_malloc_one_tagged(size_t size_in_bytes); MZ_EXTERN void *GC_malloc_atomic_uncollectable(size_t size_in_bytes); MZ_EXTERN void *scheme_malloc_uncollectable(size_t size_in_bytes); MZ_EXTERN void *GC_malloc_array_tagged(size_t size_in_bytes); +MZ_EXTERN void *GC_malloc_allow_interior(size_t size_in_bytes); +MZ_EXTERN void *GC_malloc_atomic_allow_interior(size_t size_in_bytes); +MZ_EXTERN void *GC_malloc_tagged_allow_interior(size_t size_in_bytes); # else MZ_EXTERN void *GC_malloc_stubborn(size_t size_in_bytes); MZ_EXTERN void *GC_malloc_uncollectable(size_t size_in_bytes); @@ -524,6 +527,7 @@ XFORM_NONGCING MZ_EXTERN int scheme_get_unsigned_long_long_val(Scheme_Object *o, XFORM_NONGCING MZ_EXTERN double scheme_real_to_double(Scheme_Object *r); MZ_EXTERN Scheme_Object *scheme_make_cptr(void *cptr, Scheme_Object *typetag); +MZ_EXTERN Scheme_Object *scheme_make_offset_cptr(void *cptr, long offset, Scheme_Object *typetag); MZ_EXTERN const char *scheme_get_proc_name(Scheme_Object *p, int *len, int for_error); @@ -964,6 +968,11 @@ XFORM_NONGCING MZ_EXTERN long scheme_hash_key(Scheme_Object *o); MZ_EXTERN long scheme_equal_hash_key(Scheme_Object *o); MZ_EXTERN long scheme_equal_hash_key2(Scheme_Object *o); +MZ_EXTERN void scheme_set_type_equality(Scheme_Type type, + Scheme_Equal_Proc f, + Scheme_Primary_Hash_Proc hash1, + Scheme_Secondary_Hash_Proc hash2); + MZ_EXTERN Scheme_Object *scheme_build_list(int argc, Scheme_Object **argv); MZ_EXTERN Scheme_Object *scheme_build_list_offset(int argc, Scheme_Object **argv, int delta); MZ_EXTERN void scheme_make_list_immutable(Scheme_Object *l); diff --git a/src/mzscheme/src/schemex.h b/src/mzscheme/src/schemex.h index 265cac2461..09d69a05f8 100644 --- a/src/mzscheme/src/schemex.h +++ b/src/mzscheme/src/schemex.h @@ -271,6 +271,9 @@ void *(*GC_malloc_one_tagged)(size_t size_in_bytes); void *(*GC_malloc_atomic_uncollectable)(size_t size_in_bytes); void *(*scheme_malloc_uncollectable)(size_t size_in_bytes); void *(*GC_malloc_array_tagged)(size_t size_in_bytes); +void *(*GC_malloc_allow_interior)(size_t size_in_bytes); +void *(*GC_malloc_atomic_allow_interior)(size_t size_in_bytes); +void *(*GC_malloc_tagged_allow_interior)(size_t size_in_bytes); # else void *(*GC_malloc_stubborn)(size_t size_in_bytes); void *(*GC_malloc_uncollectable)(size_t size_in_bytes); @@ -431,6 +434,7 @@ int (*scheme_get_long_long_val)(Scheme_Object *o, mzlonglong *v); int (*scheme_get_unsigned_long_long_val)(Scheme_Object *o, umzlonglong *v); double (*scheme_real_to_double)(Scheme_Object *r); Scheme_Object *(*scheme_make_cptr)(void *cptr, Scheme_Object *typetag); +Scheme_Object *(*scheme_make_offset_cptr)(void *cptr, long offset, Scheme_Object *typetag); const char *(*scheme_get_proc_name)(Scheme_Object *p, int *len, int for_error); /*========================================================================*/ /* strings */ @@ -798,6 +802,10 @@ long (*scheme_hash_key)(Scheme_Object *o); #endif long (*scheme_equal_hash_key)(Scheme_Object *o); long (*scheme_equal_hash_key2)(Scheme_Object *o); +void (*scheme_set_type_equality)(Scheme_Type type, + Scheme_Equal_Proc f, + Scheme_Primary_Hash_Proc hash1, + Scheme_Secondary_Hash_Proc hash2); Scheme_Object *(*scheme_build_list)(int argc, Scheme_Object **argv); Scheme_Object *(*scheme_build_list_offset)(int argc, Scheme_Object **argv, int delta); void (*scheme_make_list_immutable)(Scheme_Object *l); diff --git a/src/mzscheme/src/schemex.inc b/src/mzscheme/src/schemex.inc index aa80969783..f30cebe391 100644 --- a/src/mzscheme/src/schemex.inc +++ b/src/mzscheme/src/schemex.inc @@ -175,6 +175,9 @@ scheme_extension_table->GC_malloc_atomic_uncollectable = GC_malloc_atomic_uncollectable; scheme_extension_table->scheme_malloc_uncollectable = scheme_malloc_uncollectable; scheme_extension_table->GC_malloc_array_tagged = GC_malloc_array_tagged; + scheme_extension_table->GC_malloc_allow_interior = GC_malloc_allow_interior; + scheme_extension_table->GC_malloc_atomic_allow_interior = GC_malloc_atomic_allow_interior; + scheme_extension_table->GC_malloc_tagged_allow_interior = GC_malloc_tagged_allow_interior; # else scheme_extension_table->GC_malloc_stubborn = GC_malloc_stubborn; scheme_extension_table->GC_malloc_uncollectable = GC_malloc_uncollectable; @@ -296,6 +299,7 @@ scheme_extension_table->scheme_get_unsigned_long_long_val = scheme_get_unsigned_long_long_val; scheme_extension_table->scheme_real_to_double = scheme_real_to_double; scheme_extension_table->scheme_make_cptr = scheme_make_cptr; + scheme_extension_table->scheme_make_offset_cptr = scheme_make_offset_cptr; scheme_extension_table->scheme_get_proc_name = scheme_get_proc_name; scheme_extension_table->scheme_utf8_decode = scheme_utf8_decode; scheme_extension_table->scheme_utf8_decode_as_prefix = scheme_utf8_decode_as_prefix; @@ -539,6 +543,7 @@ #endif scheme_extension_table->scheme_equal_hash_key = scheme_equal_hash_key; scheme_extension_table->scheme_equal_hash_key2 = scheme_equal_hash_key2; + scheme_extension_table->scheme_set_type_equality = scheme_set_type_equality; scheme_extension_table->scheme_build_list = scheme_build_list; scheme_extension_table->scheme_build_list_offset = scheme_build_list_offset; scheme_extension_table->scheme_make_list_immutable = scheme_make_list_immutable; diff --git a/src/mzscheme/src/schemexm.h b/src/mzscheme/src/schemexm.h index e03c9018b1..f9b2813121 100644 --- a/src/mzscheme/src/schemexm.h +++ b/src/mzscheme/src/schemexm.h @@ -175,6 +175,9 @@ #define GC_malloc_atomic_uncollectable (scheme_extension_table->GC_malloc_atomic_uncollectable) #define scheme_malloc_uncollectable (scheme_extension_table->scheme_malloc_uncollectable) #define GC_malloc_array_tagged (scheme_extension_table->GC_malloc_array_tagged) +#define GC_malloc_allow_interior (scheme_extension_table->GC_malloc_allow_interior) +#define GC_malloc_atomic_allow_interior (scheme_extension_table->GC_malloc_atomic_allow_interior) +#define GC_malloc_tagged_allow_interior (scheme_extension_table->GC_malloc_tagged_allow_interior) # else #define GC_malloc_stubborn (scheme_extension_table->GC_malloc_stubborn) #define GC_malloc_uncollectable (scheme_extension_table->GC_malloc_uncollectable) @@ -296,6 +299,7 @@ #define scheme_get_unsigned_long_long_val (scheme_extension_table->scheme_get_unsigned_long_long_val) #define scheme_real_to_double (scheme_extension_table->scheme_real_to_double) #define scheme_make_cptr (scheme_extension_table->scheme_make_cptr) +#define scheme_make_offset_cptr (scheme_extension_table->scheme_make_offset_cptr) #define scheme_get_proc_name (scheme_extension_table->scheme_get_proc_name) #define scheme_utf8_decode (scheme_extension_table->scheme_utf8_decode) #define scheme_utf8_decode_as_prefix (scheme_extension_table->scheme_utf8_decode_as_prefix) @@ -539,6 +543,7 @@ #endif #define scheme_equal_hash_key (scheme_extension_table->scheme_equal_hash_key) #define scheme_equal_hash_key2 (scheme_extension_table->scheme_equal_hash_key2) +#define scheme_set_type_equality (scheme_extension_table->scheme_set_type_equality) #define scheme_build_list (scheme_extension_table->scheme_build_list) #define scheme_build_list_offset (scheme_extension_table->scheme_build_list_offset) #define scheme_make_list_immutable (scheme_extension_table->scheme_make_list_immutable) diff --git a/src/mzscheme/src/schminc.h b/src/mzscheme/src/schminc.h index bab1aaf99b..024de1626c 100644 --- a/src/mzscheme/src/schminc.h +++ b/src/mzscheme/src/schminc.h @@ -13,7 +13,7 @@ #define USE_COMPILED_STARTUP 1 -#define EXPECTED_PRIM_COUNT 890 +#define EXPECTED_PRIM_COUNT 891 #ifdef MZSCHEME_SOMETHING_OMITTED # undef USE_COMPILED_STARTUP diff --git a/src/mzscheme/src/schpriv.h b/src/mzscheme/src/schpriv.h index d35ca785b7..88abc8d216 100644 --- a/src/mzscheme/src/schpriv.h +++ b/src/mzscheme/src/schpriv.h @@ -201,6 +201,10 @@ typedef Scheme_Object *(*Scheme_Type_Writer)(Scheme_Object *obj); extern Scheme_Type_Reader *scheme_type_readers; extern Scheme_Type_Writer *scheme_type_writers; +extern Scheme_Equal_Proc *scheme_type_equals; +extern Scheme_Primary_Hash_Proc *scheme_type_hash1s; +extern Scheme_Secondary_Hash_Proc *scheme_type_hash2s; + void scheme_init_port_config(void); void scheme_init_port_fun_config(void); Scheme_Config *scheme_init_error_escape_proc(Scheme_Config *c); @@ -607,6 +611,8 @@ Scheme_Object *scheme_stx_track(Scheme_Object *naya, Scheme_Object *old, Scheme_Object *origin); +int scheme_stx_has_empty_wraps(Scheme_Object *); + Scheme_Object *scheme_new_mark(void); Scheme_Object *scheme_add_remove_mark(Scheme_Object *o, Scheme_Object *m); @@ -2708,6 +2714,8 @@ Scheme_Object *scheme_checked_caar(int argc, Scheme_Object **argv); Scheme_Object *scheme_checked_cadr(int argc, Scheme_Object **argv); Scheme_Object *scheme_checked_cdar(int argc, Scheme_Object **argv); Scheme_Object *scheme_checked_cddr(int argc, Scheme_Object **argv); +Scheme_Object *scheme_checked_set_car (int argc, Scheme_Object *argv[]); +Scheme_Object *scheme_checked_set_cdr (int argc, Scheme_Object *argv[]); Scheme_Object *scheme_checked_vector_ref(int argc, Scheme_Object **argv); Scheme_Object *scheme_checked_vector_set(int argc, Scheme_Object **argv); Scheme_Object *scheme_checked_string_ref(int argc, Scheme_Object *argv[]); diff --git a/src/mzscheme/src/schvers.h b/src/mzscheme/src/schvers.h index a2a2261bb6..b4f4c83718 100644 --- a/src/mzscheme/src/schvers.h +++ b/src/mzscheme/src/schvers.h @@ -9,6 +9,6 @@ #define MZSCHEME_VERSION_MAJOR 369 -#define MZSCHEME_VERSION_MINOR 7 +#define MZSCHEME_VERSION_MINOR 8 -#define MZSCHEME_VERSION "369.7" _MZ_SPECIAL_TAG +#define MZSCHEME_VERSION "369.8" _MZ_SPECIAL_TAG diff --git a/src/mzscheme/src/startup.inc b/src/mzscheme/src/startup.inc index 483584e847..9ac67ef610 100644 --- a/src/mzscheme/src/startup.inc +++ b/src/mzscheme/src/startup.inc @@ -3564,6 +3564,7 @@ "(require #%qqstx)" "(require #%define)" "(require #%expobs) " +"(require(only #%foreign)) " "(provide(all-from #%more-scheme)" "(all-from-except #%misc make-standard-module-name-resolver)" "(all-from-except #%stxcase-scheme -define -define-syntax)" diff --git a/src/mzscheme/src/startup.ss b/src/mzscheme/src/startup.ss index 8836395567..d4909c9f7d 100644 --- a/src/mzscheme/src/startup.ss +++ b/src/mzscheme/src/startup.ss @@ -4072,6 +4072,7 @@ (require #%qqstx) (require #%define) (require #%expobs) ; so it's attached + (require (only #%foreign)) ; so it's attached, but doesn't depend on any exports (provide (all-from #%more-scheme) (all-from-except #%misc make-standard-module-name-resolver) diff --git a/src/mzscheme/src/stxobj.c b/src/mzscheme/src/stxobj.c index 33194897bd..1aff7d20d9 100644 --- a/src/mzscheme/src/stxobj.c +++ b/src/mzscheme/src/stxobj.c @@ -2494,6 +2494,11 @@ Scheme_Object *scheme_stx_activate_certs(Scheme_Object *o) return lift_inactive_certs(o, 1); } +int scheme_stx_has_empty_wraps(Scheme_Object *o) +{ + return SCHEME_NULLP(((Scheme_Stx *)o)->wraps); +} + /*========================================================================*/ /* stx comparison */ /*========================================================================*/ @@ -2682,6 +2687,14 @@ static void add_all_marks(Scheme_Object *wraps, Scheme_Hash_Table *marks) #define QUICK_STACK_SIZE 10 +#define EXPLAIN_RESOLVE 0 +#if EXPLAIN_RESOLVE +static int explain_resolves = 0; +# define EXPLAIN(x) if (explain_resolves) { x; } +#else +# define EXPLAIN(x) /* empty */ +#endif + /* Although resolve_env may call itself recursively, the recursion depth is bounded (by the fact that modules can't be nested, etc.). */ @@ -2710,6 +2723,8 @@ static Scheme_Object *resolve_env(WRAP_POS *_wraps, Scheme_Object *bdg = NULL; Scheme_Hash_Table *export_registry = NULL; + EXPLAIN(printf("Resolving %s:\n", SCHEME_SYM_VAL(SCHEME_STX_VAL(a)))); + if (_wraps) { WRAP_POS_COPY(wraps, *_wraps); WRAP_POS_INC(wraps); @@ -2722,27 +2737,37 @@ static Scheme_Object *resolve_env(WRAP_POS *_wraps, Scheme_Object *result, *key; int did_lexical = 0; + EXPLAIN(printf("Rename...\n")); + result = scheme_false; while (!SCHEME_NULLP(o_rename_stack)) { key = SCHEME_CAAR(o_rename_stack); if (SAME_OBJ(key, result)) { + EXPLAIN(printf("Match %s\n", scheme_write_to_string(key, 0))); did_lexical = 1; result = SCHEME_CDR(SCHEME_CAR(o_rename_stack)); - } else if (SAME_OBJ(key, scheme_true)) { - /* marks a module-level renaming that overrides lexical renaming */ - did_lexical = 0; - } + } else { + EXPLAIN(printf("No match %s\n", scheme_write_to_string(key, 0))); + if (SAME_OBJ(key, scheme_true)) { + /* marks a module-level renaming that overrides lexical renaming */ + did_lexical = 0; + } + } o_rename_stack = SCHEME_CDR(o_rename_stack); } while (stack_pos) { key = rename_stack[stack_pos - 1]; if (SAME_OBJ(key, result)) { + EXPLAIN(printf("Match %s\n", scheme_write_to_string(key, 0))); result = rename_stack[stack_pos - 2]; did_lexical = 1; - } else if (SAME_OBJ(key, scheme_true)) { - /* marks a module-level renaming that overrides lexical renaming */ - did_lexical = 0; - } + } else { + EXPLAIN(printf("No match %s\n", scheme_write_to_string(key, 0))); + if (SAME_OBJ(key, scheme_true)) { + /* marks a module-level renaming that overrides lexical renaming */ + did_lexical = 0; + } + } stack_pos -= 2; } if (!did_lexical) @@ -2750,6 +2775,8 @@ static Scheme_Object *resolve_env(WRAP_POS *_wraps, else if (get_names) get_names[0] = scheme_undefined; + EXPLAIN(printf("Result: %s\n", scheme_write_to_string(result, 0))); + return result; } else if (SCHEME_RENAMESP(WRAP_POS_FIRST(wraps)) && w_mod) { /* Module rename: */ @@ -2934,6 +2961,9 @@ static Scheme_Object *resolve_env(WRAP_POS *_wraps, other_env = scheme_false; envname = SCHEME_VEC_ELS(rename)[2+c+ri]; same = 1; + EXPLAIN(printf("Targes %s <- %s\n", + scheme_write_to_string(envname, 0), + scheme_write_to_string(other_env, 0))); } else { envname = SCHEME_VEC_ELS(rename)[0]; other_env = SCHEME_VEC_ELS(rename)[2+c+ri]; @@ -2946,10 +2976,17 @@ static Scheme_Object *resolve_env(WRAP_POS *_wraps, SCHEME_USE_FUEL(1); } + EXPLAIN(printf("Target %s <- %s (%d)\n", + scheme_write_to_string(envname, 0), + scheme_write_to_string(other_env, 0), + SCHEME_IMMUTABLEP(rename))); + { WRAP_POS w2; WRAP_POS_INIT(w2, ((Scheme_Stx *)renamed)->wraps); same = same_marks(&w2, &wraps, other_env, WRAP_POS_FIRST(wraps)); + if (!same) + EXPLAIN(printf("Different marks\n")); } } @@ -2977,14 +3014,18 @@ static Scheme_Object *resolve_env(WRAP_POS *_wraps, } else if (SCHEME_RIBP(WRAP_POS_FIRST(wraps)) && !no_lexical) { /* Lexical-rename rib. Splice in the names. */ rib = (Scheme_Lexical_Rib *)WRAP_POS_FIRST(wraps); + EXPLAIN(printf("Rib: %p...\n", rib)); if (skip_ribs) { - if (scheme_bin_gt_eq(rib->timestamp, skip_ribs)) + if (scheme_bin_gt_eq(rib->timestamp, skip_ribs)) { + EXPLAIN(printf("Skip rib\n")); rib = NULL; + } } if (rib) { - if (SAME_OBJ(did_rib, rib)) + if (SAME_OBJ(did_rib, rib)) { + EXPLAIN(printf("Did rib\n")); rib = NULL; - else { + } else { did_rib = rib; rib = rib->next; /* First rib record has no rename */ } @@ -3271,6 +3312,16 @@ int scheme_stx_bound_eq(Scheme_Object *a, Scheme_Object *b, long phase) return scheme_stx_env_bound_eq(a, b, NULL, phase); } +#if EXPLAIN +Scheme_Object *scheme_explain_resolve_env(Scheme_Object *a) +{ + explain_resolves++; + a = resolve_env(NULL, a, 0, 0, NULL, NULL); + --explain_resolves; + return a; +} +#endif + Scheme_Object *scheme_stx_source_module(Scheme_Object *stx, int resolve) { /* Inspect the wraps to look for a self-modidx shift: */ diff --git a/src/mzscheme/src/stypes.h b/src/mzscheme/src/stypes.h index 303d468097..92889cdb13 100644 --- a/src/mzscheme/src/stypes.h +++ b/src/mzscheme/src/stypes.h @@ -84,150 +84,152 @@ enum { scheme_sema_type, /* 66 */ scheme_hash_table_type, /* 67 */ scheme_cpointer_type, /* 68 */ - scheme_weak_box_type, /* 69 */ - scheme_ephemeron_type, /* 70 */ - scheme_struct_type_type, /* 71 */ - scheme_module_index_type, /* 72 */ - scheme_set_macro_type, /* 73 */ - scheme_listener_type, /* 74 */ - scheme_namespace_type, /* 75 */ - scheme_config_type, /* 76 */ - scheme_stx_type, /* 77 */ - scheme_will_executor_type, /* 78 */ - scheme_custodian_type, /* 79 */ - scheme_random_state_type, /* 80 */ - scheme_regexp_type, /* 81 */ - scheme_bucket_type, /* 82 */ - scheme_bucket_table_type, /* 83 */ - scheme_subprocess_type, /* 84 */ - scheme_compilation_top_type, /* 85 */ - scheme_wrap_chunk_type, /* 86 */ - scheme_eval_waiting_type, /* 87 */ - scheme_tail_call_waiting_type, /* 88 */ - scheme_undefined_type, /* 89 */ - scheme_struct_property_type, /* 90 */ - scheme_multiple_values_type, /* 91 */ - scheme_placeholder_type, /* 92 */ - scheme_case_lambda_sequence_type, /* 93 */ - scheme_begin0_sequence_type, /* 94 */ - scheme_rename_table_type, /* 95 */ - scheme_module_type, /* 96 */ - scheme_svector_type, /* 97 */ - scheme_lazy_macro_type, /* 98 */ - scheme_resolve_prefix_type, /* 99 */ - scheme_security_guard_type, /* 100 */ - scheme_indent_type, /* 101 */ - scheme_udp_type, /* 102 */ - scheme_udp_evt_type, /* 103 */ - scheme_tcp_accept_evt_type, /* 104 */ - scheme_id_macro_type, /* 105 */ - scheme_evt_set_type, /* 106 */ - scheme_wrap_evt_type, /* 107 */ - scheme_handle_evt_type, /* 108 */ - scheme_nack_guard_evt_type, /* 109 */ - scheme_semaphore_repost_type, /* 110 */ - scheme_channel_type, /* 111 */ - scheme_channel_put_type, /* 112 */ - scheme_thread_resume_type, /* 113 */ - scheme_thread_suspend_type, /* 114 */ - scheme_thread_dead_type, /* 115 */ - scheme_poll_evt_type, /* 116 */ - scheme_nack_evt_type, /* 117 */ - scheme_module_registry_type, /* 118 */ - scheme_thread_set_type, /* 119 */ - scheme_string_converter_type, /* 120 */ - scheme_alarm_type, /* 121 */ - scheme_thread_cell_type, /* 122 */ - scheme_channel_syncer_type, /* 123 */ - scheme_special_comment_type, /* 124 */ - scheme_write_evt_type, /* 125 */ - scheme_always_evt_type, /* 126 */ - scheme_never_evt_type, /* 127 */ - scheme_progress_evt_type, /* 128 */ - scheme_certifications_type, /* 129 */ - scheme_already_comp_type, /* 130 */ - scheme_readtable_type, /* 131 */ - scheme_intdef_context_type, /* 132 */ - scheme_lexical_rib_type, /* 133 */ - scheme_thread_cell_values_type, /* 134 */ - scheme_global_ref_type, /* 135 */ - scheme_cont_mark_chain_type, /* 136 */ - scheme_raw_pair_type, /* 137 */ - scheme_prompt_type, /* 138 */ - scheme_prompt_tag_type, /* 139 */ - scheme_delay_syntax_type, /* 140 */ + scheme_offset_cpointer_type, /* 69 */ + scheme_weak_box_type, /* 70 */ + scheme_ephemeron_type, /* 71 */ + scheme_struct_type_type, /* 72 */ + scheme_module_index_type, /* 73 */ + scheme_set_macro_type, /* 74 */ + scheme_listener_type, /* 75 */ + scheme_namespace_type, /* 76 */ + scheme_config_type, /* 77 */ + scheme_stx_type, /* 78 */ + scheme_will_executor_type, /* 79 */ + scheme_custodian_type, /* 80 */ + scheme_random_state_type, /* 81 */ + scheme_regexp_type, /* 82 */ + scheme_bucket_type, /* 83 */ + scheme_bucket_table_type, /* 84 */ + scheme_subprocess_type, /* 85 */ + scheme_compilation_top_type, /* 86 */ + scheme_wrap_chunk_type, /* 87 */ + scheme_eval_waiting_type, /* 88 */ + scheme_tail_call_waiting_type, /* 89 */ + scheme_undefined_type, /* 90 */ + scheme_struct_property_type, /* 91 */ + scheme_multiple_values_type, /* 92 */ + scheme_placeholder_type, /* 93 */ + scheme_case_lambda_sequence_type, /* 94 */ + scheme_begin0_sequence_type, /* 95 */ + scheme_rename_table_type, /* 96 */ + scheme_module_type, /* 97 */ + scheme_svector_type, /* 98 */ + scheme_lazy_macro_type, /* 99 */ + scheme_resolve_prefix_type, /* 100 */ + scheme_security_guard_type, /* 101 */ + scheme_indent_type, /* 102 */ + scheme_udp_type, /* 103 */ + scheme_udp_evt_type, /* 104 */ + scheme_tcp_accept_evt_type, /* 105 */ + scheme_id_macro_type, /* 106 */ + scheme_evt_set_type, /* 107 */ + scheme_wrap_evt_type, /* 108 */ + scheme_handle_evt_type, /* 109 */ + scheme_nack_guard_evt_type, /* 110 */ + scheme_semaphore_repost_type, /* 111 */ + scheme_channel_type, /* 112 */ + scheme_channel_put_type, /* 113 */ + scheme_thread_resume_type, /* 114 */ + scheme_thread_suspend_type, /* 115 */ + scheme_thread_dead_type, /* 116 */ + scheme_poll_evt_type, /* 117 */ + scheme_nack_evt_type, /* 118 */ + scheme_module_registry_type, /* 119 */ + scheme_thread_set_type, /* 120 */ + scheme_string_converter_type, /* 121 */ + scheme_alarm_type, /* 122 */ + scheme_thread_cell_type, /* 123 */ + scheme_channel_syncer_type, /* 124 */ + scheme_special_comment_type, /* 125 */ + scheme_write_evt_type, /* 126 */ + scheme_always_evt_type, /* 127 */ + scheme_never_evt_type, /* 128 */ + scheme_progress_evt_type, /* 129 */ + scheme_certifications_type, /* 130 */ + scheme_already_comp_type, /* 131 */ + scheme_readtable_type, /* 132 */ + scheme_intdef_context_type, /* 133 */ + scheme_lexical_rib_type, /* 134 */ + scheme_thread_cell_values_type, /* 135 */ + scheme_global_ref_type, /* 136 */ + scheme_cont_mark_chain_type, /* 137 */ + scheme_raw_pair_type, /* 138 */ + scheme_prompt_type, /* 139 */ + scheme_prompt_tag_type, /* 140 */ + scheme_expanded_syntax_type, /* 141 */ + scheme_delay_syntax_type, /* 142 */ #ifdef MZTAG_REQUIRED - _scheme_last_normal_type_, /* 141 */ + _scheme_last_normal_type_, /* 143 */ - scheme_rt_weak_array, /* 142 */ + scheme_rt_weak_array, /* 144 */ - scheme_rt_comp_env, /* 143 */ - scheme_rt_constant_binding, /* 144 */ - scheme_rt_resolve_info, /* 145 */ - scheme_rt_optimize_info, /* 146 */ - scheme_rt_compile_info, /* 147 */ - scheme_rt_cont_mark, /* 148 */ - scheme_rt_saved_stack, /* 149 */ - scheme_rt_reply_item, /* 150 */ - scheme_rt_closure_info, /* 151 */ - scheme_rt_overflow, /* 152 */ - scheme_rt_overflow_jmp, /* 153 */ - scheme_rt_meta_cont, /* 154 */ - scheme_rt_dyn_wind_cell, /* 155 */ - scheme_rt_dyn_wind_info, /* 156 */ - scheme_rt_dyn_wind, /* 157 */ - scheme_rt_dup_check, /* 158 */ - scheme_rt_thread_memory, /* 159 */ - scheme_rt_input_file, /* 160 */ - scheme_rt_input_fd, /* 161 */ - scheme_rt_oskit_console_input, /* 162 */ - scheme_rt_tested_input_file, /* 163 */ - scheme_rt_tested_output_file, /* 164 */ - scheme_rt_indexed_string, /* 165 */ - scheme_rt_output_file, /* 166 */ - scheme_rt_load_handler_data, /* 167 */ - scheme_rt_pipe, /* 168 */ - scheme_rt_beos_process, /* 169 */ - scheme_rt_system_child, /* 170 */ - scheme_rt_tcp, /* 171 */ - scheme_rt_write_data, /* 172 */ - scheme_rt_tcp_select_info, /* 173 */ - scheme_rt_namespace_option, /* 174 */ - scheme_rt_param_data, /* 175 */ - scheme_rt_will, /* 176 */ - scheme_rt_will_registration, /* 177 */ - scheme_rt_struct_proc_info, /* 178 */ - scheme_rt_linker_name, /* 179 */ - scheme_rt_param_map, /* 180 */ - scheme_rt_finalization, /* 181 */ - scheme_rt_finalizations, /* 182 */ - scheme_rt_cpp_object, /* 183 */ - scheme_rt_cpp_array_object, /* 184 */ - scheme_rt_stack_object, /* 185 */ - scheme_rt_preallocated_object, /* 186 */ - scheme_thread_hop_type, /* 187 */ - scheme_rt_srcloc, /* 188 */ - scheme_rt_evt, /* 189 */ - scheme_rt_syncing, /* 190 */ - scheme_rt_comp_prefix, /* 191 */ - scheme_rt_user_input, /* 192 */ - scheme_rt_user_output, /* 193 */ - scheme_rt_compact_port, /* 194 */ - scheme_rt_read_special_dw, /* 195 */ - scheme_rt_regwork, /* 196 */ - scheme_rt_buf_holder, /* 197 */ - scheme_rt_parameterization, /* 198 */ - scheme_rt_print_params, /* 199 */ - scheme_rt_read_params, /* 200 */ - scheme_rt_native_code, /* 201 */ - scheme_rt_native_code_plus_case, /* 202 */ - scheme_rt_jitter_data, /* 203 */ - scheme_rt_module_exports, /* 204 */ - scheme_rt_delay_load_info, /* 205 */ - scheme_rt_marshal_info, /* 206 */ - scheme_rt_unmarshal_info, /* 207 */ - scheme_rt_runstack, /* 208 */ + scheme_rt_comp_env, /* 145 */ + scheme_rt_constant_binding, /* 146 */ + scheme_rt_resolve_info, /* 147 */ + scheme_rt_optimize_info, /* 148 */ + scheme_rt_compile_info, /* 149 */ + scheme_rt_cont_mark, /* 150 */ + scheme_rt_saved_stack, /* 151 */ + scheme_rt_reply_item, /* 152 */ + scheme_rt_closure_info, /* 153 */ + scheme_rt_overflow, /* 154 */ + scheme_rt_overflow_jmp, /* 155 */ + scheme_rt_meta_cont, /* 156 */ + scheme_rt_dyn_wind_cell, /* 157 */ + scheme_rt_dyn_wind_info, /* 158 */ + scheme_rt_dyn_wind, /* 159 */ + scheme_rt_dup_check, /* 160 */ + scheme_rt_thread_memory, /* 161 */ + scheme_rt_input_file, /* 162 */ + scheme_rt_input_fd, /* 163 */ + scheme_rt_oskit_console_input, /* 164 */ + scheme_rt_tested_input_file, /* 165 */ + scheme_rt_tested_output_file, /* 166 */ + scheme_rt_indexed_string, /* 167 */ + scheme_rt_output_file, /* 168 */ + scheme_rt_load_handler_data, /* 169 */ + scheme_rt_pipe, /* 170 */ + scheme_rt_beos_process, /* 171 */ + scheme_rt_system_child, /* 172 */ + scheme_rt_tcp, /* 173 */ + scheme_rt_write_data, /* 174 */ + scheme_rt_tcp_select_info, /* 175 */ + scheme_rt_namespace_option, /* 176 */ + scheme_rt_param_data, /* 177 */ + scheme_rt_will, /* 178 */ + scheme_rt_will_registration, /* 179 */ + scheme_rt_struct_proc_info, /* 180 */ + scheme_rt_linker_name, /* 181 */ + scheme_rt_param_map, /* 182 */ + scheme_rt_finalization, /* 183 */ + scheme_rt_finalizations, /* 184 */ + scheme_rt_cpp_object, /* 185 */ + scheme_rt_cpp_array_object, /* 186 */ + scheme_rt_stack_object, /* 187 */ + scheme_rt_preallocated_object, /* 188 */ + scheme_thread_hop_type, /* 189 */ + scheme_rt_srcloc, /* 190 */ + scheme_rt_evt, /* 191 */ + scheme_rt_syncing, /* 192 */ + scheme_rt_comp_prefix, /* 193 */ + scheme_rt_user_input, /* 194 */ + scheme_rt_user_output, /* 195 */ + scheme_rt_compact_port, /* 196 */ + scheme_rt_read_special_dw, /* 197 */ + scheme_rt_regwork, /* 198 */ + scheme_rt_buf_holder, /* 199 */ + scheme_rt_parameterization, /* 200 */ + scheme_rt_print_params, /* 201 */ + scheme_rt_read_params, /* 202 */ + scheme_rt_native_code, /* 203 */ + scheme_rt_native_code_plus_case, /* 204 */ + scheme_rt_jitter_data, /* 205 */ + scheme_rt_module_exports, /* 206 */ + scheme_rt_delay_load_info, /* 207 */ + scheme_rt_marshal_info, /* 208 */ + scheme_rt_unmarshal_info, /* 209 */ + scheme_rt_runstack, /* 210 */ #endif _scheme_last_type_ diff --git a/src/mzscheme/src/syntax.c b/src/mzscheme/src/syntax.c index c4572eb762..9ef1c0ff15 100644 --- a/src/mzscheme/src/syntax.c +++ b/src/mzscheme/src/syntax.c @@ -4396,6 +4396,7 @@ static Scheme_Object *check_single(Scheme_Object *form, Scheme_Comp_Env *top_onl static Scheme_Object * single_syntax(Scheme_Object *form, Scheme_Comp_Env *env, Scheme_Compile_Info *rec, int drec, int top_only) { + scheme_rec_add_certs(rec, drec, form); return scheme_compile_expr(check_single(form, top_only ? env: NULL), env, rec, drec); } @@ -4405,15 +4406,20 @@ single_expand(Scheme_Object *form, Scheme_Comp_Env *env, Scheme_Expand_Info *ere { Scheme_Object *expr, *form_name; + scheme_rec_add_certs(erec, drec, form); + expr = check_single(form, top_only ? env : NULL); expr = scheme_expand_expr(expr, env, erec, drec); + form_name = SCHEME_STX_CAR(form); + if (simplify && (erec[drec].depth == -1)) { + /* FIXME: this needs EXPAND_OBSERVE callbacks. */ + expr = scheme_stx_track(expr, form, form_name); + expr = scheme_stx_cert(expr, scheme_false, NULL, form, NULL, 1); return expr; } - form_name = SCHEME_STX_CAR(form); - return scheme_datum_to_syntax(icons(form_name, icons(expr, scheme_null)), form, form, 0, 2); diff --git a/src/mzscheme/src/thread.c b/src/mzscheme/src/thread.c index 5be2ff4c78..a4a6a3a69c 100644 --- a/src/mzscheme/src/thread.c +++ b/src/mzscheme/src/thread.c @@ -6755,8 +6755,13 @@ static void prepare_thread_for_GC(Scheme_Object *t) } } - if (p->values_buffer) - memset(p->values_buffer, 0, sizeof(Scheme_Object*) * p->values_buffer_size); + if (p->values_buffer) { + if (p->values_buffer_size > 128) + p->values_buffer = NULL; + else { + memset(p->values_buffer, 0, sizeof(Scheme_Object*) * p->values_buffer_size); + } + } p->spare_runstack = NULL; diff --git a/src/mzscheme/src/type.c b/src/mzscheme/src/type.c index 79459c77a2..d1bd33f809 100644 --- a/src/mzscheme/src/type.c +++ b/src/mzscheme/src/type.c @@ -27,6 +27,9 @@ Scheme_Type_Reader *scheme_type_readers; Scheme_Type_Writer *scheme_type_writers; +Scheme_Equal_Proc *scheme_type_equals; +Scheme_Primary_Hash_Proc *scheme_type_hash1s; +Scheme_Secondary_Hash_Proc *scheme_type_hash2s; static char **type_names; static Scheme_Type maxtype, allocmax; @@ -42,6 +45,9 @@ static void init_type_arrays() REGISTER_SO(type_names); REGISTER_SO(scheme_type_readers); REGISTER_SO(scheme_type_writers); + REGISTER_SO(scheme_type_equals); + REGISTER_SO(scheme_type_hash1s); + REGISTER_SO(scheme_type_hash2s); maxtype = _scheme_last_type_; allocmax = maxtype + 10; @@ -63,6 +69,18 @@ static void init_type_arrays() #ifdef MEMORY_COUNTING_ON scheme_type_table_count += n; #endif + + scheme_type_equals = MALLOC_N_ATOMIC(Scheme_Equal_Proc, allocmax); + n = allocmax * sizeof(Scheme_Equal_Proc); + memset((char *)scheme_type_equals, 0, n); + + scheme_type_hash1s = MALLOC_N_ATOMIC(Scheme_Primary_Hash_Proc, allocmax); + n = allocmax * sizeof(Scheme_Primary_Hash_Proc); + memset((char *)scheme_type_hash1s, 0, n); + + scheme_type_hash2s = MALLOC_N_ATOMIC(Scheme_Secondary_Hash_Proc, allocmax); + n = allocmax * sizeof(Scheme_Secondary_Hash_Proc); + memset((char *)scheme_type_hash2s, 0, n); } void @@ -183,6 +201,7 @@ scheme_init_type (Scheme_Env *env) set_name(scheme_stx_type, ""); set_name(scheme_stx_offset_type, ""); + set_name(scheme_expanded_syntax_type, ""); set_name(scheme_set_macro_type, ""); set_name(scheme_id_macro_type, ""); @@ -192,6 +211,7 @@ scheme_init_type (Scheme_Env *env) set_name(scheme_subprocess_type, ""); set_name(scheme_cpointer_type, ""); + set_name(scheme_offset_cpointer_type, ""); set_name(scheme_wrap_chunk_type, ""); @@ -270,10 +290,25 @@ Scheme_Type scheme_make_type(const char *name) memcpy(naya, scheme_type_writers, maxtype * sizeof(Scheme_Type_Writer)); scheme_type_writers = (Scheme_Type_Writer *)naya; + naya = scheme_malloc_atomic(n = allocmax * sizeof(Scheme_Equal_Proc)); + memset((char *)naya, 0, n); + memcpy(naya, scheme_type_equals, maxtype * sizeof(Scheme_Equal_Proc)); + scheme_type_equals = (Scheme_Equal_Proc *)naya; + + naya = scheme_malloc_atomic(n = allocmax * sizeof(Scheme_Primary_Hash_Proc)); + memset((char *)naya, 0, n); + memcpy(naya, scheme_type_hash1s, maxtype * sizeof(Scheme_Primary_Hash_Proc)); + scheme_type_hash1s = (Scheme_Primary_Hash_Proc *)naya; + + naya = scheme_malloc_atomic(n = allocmax * sizeof(Scheme_Secondary_Hash_Proc)); + memset((char *)naya, 0, n); + memcpy(naya, scheme_type_hash2s, maxtype * sizeof(Scheme_Secondary_Hash_Proc)); + scheme_type_hash2s = (Scheme_Secondary_Hash_Proc *)naya; + #ifdef MEMORY_COUNTING_ON - scheme_type_table_count += 20 * (sizeof(Scheme_Type_Reader) - + sizeof(Scheme_Type_Writer)); - scheme_misc_count += (20 * sizeof(char *)); + scheme_type_table_count += 20 * (sizeof(Scheme_Type_Reader) + + sizeof(Scheme_Type_Writer)); + scheme_misc_count += (20 * sizeof(char *)); #endif } @@ -309,6 +344,20 @@ void scheme_install_type_writer(Scheme_Type t, Scheme_Type_Writer f) scheme_type_writers[t] = f; } + +void scheme_set_type_equality(Scheme_Type t, + Scheme_Equal_Proc f, + Scheme_Primary_Hash_Proc hash1, + Scheme_Secondary_Hash_Proc hash2) +{ + if (t < 0 || t >= maxtype) + return; + + scheme_type_equals[t] = f; + scheme_type_hash1s[t] = hash1; + scheme_type_hash2s[t] = hash2; +} + int scheme_num_types(void) { return maxtype; @@ -464,6 +513,7 @@ void scheme_register_traversers(void) GC_REG_TRAV(scheme_raw_pair_type, cons_cell); GC_REG_TRAV(scheme_vector_type, vector_obj); GC_REG_TRAV(scheme_cpointer_type, cpointer_obj); + GC_REG_TRAV(scheme_offset_cpointer_type, offset_cpointer_obj); GC_REG_TRAV(scheme_bucket_type, bucket_obj); @@ -512,6 +562,7 @@ void scheme_register_traversers(void) GC_REG_TRAV(scheme_stx_type, stx_val); GC_REG_TRAV(scheme_stx_offset_type, stx_off_val); + GC_REG_TRAV(scheme_expanded_syntax_type, twoptr_obj); GC_REG_TRAV(scheme_module_type, module_val); GC_REG_TRAV(scheme_rt_module_exports, module_exports_val); GC_REG_TRAV(scheme_module_index_type, modidx_val); diff --git a/src/wxcommon/PSDC.cxx b/src/wxcommon/PSDC.cxx index 39cefafb22..67f0f94256 100644 --- a/src/wxcommon/PSDC.cxx +++ b/src/wxcommon/PSDC.cxx @@ -1659,6 +1659,7 @@ void wxPostScriptDC::StartPage (void) pstream->Out("%%EndPageSetup\n"); resetFont = RESET_FONT | RESET_COLOR; + current_font_name = NULL; if (clipping) SetClippingRegion(clipping);