From b930ce0747eea1f6ae0d313373e9c770a42e0109 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Fri, 28 Jul 2006 13:00:14 +0000 Subject: [PATCH] 352.1 svn: r3861 --- .../tests/mzscheme/benchmarks/common/tak.sch | 2 +- .../tests/mzscheme/benchmarks/shootout/run.ss | 2 +- doc/release-notes/mzscheme/HISTORY | 7 + src/mzscheme/gc2/newgc.c | 3 +- src/mzscheme/include/scheme.h | 2 +- src/mzscheme/src/cstartup.inc | 8456 +++++++++-------- src/mzscheme/src/env.c | 222 +- src/mzscheme/src/error.c | 86 +- src/mzscheme/src/eval.c | 985 +- src/mzscheme/src/fun.c | 521 +- src/mzscheme/src/jit.c | 187 +- src/mzscheme/src/module.c | 56 +- src/mzscheme/src/mzmark.c | 22 +- src/mzscheme/src/mzmarksrc.c | 9 +- src/mzscheme/src/port.c | 2 +- src/mzscheme/src/print.c | 20 +- src/mzscheme/src/read.c | 23 +- src/mzscheme/src/schcpt.h | 3 +- src/mzscheme/src/schminc.h | 2 +- src/mzscheme/src/schpriv.h | 123 +- src/mzscheme/src/schvers.h | 4 +- src/mzscheme/src/struct.c | 3 + src/mzscheme/src/syntax.c | 677 +- 23 files changed, 6734 insertions(+), 4683 deletions(-) diff --git a/collects/tests/mzscheme/benchmarks/common/tak.sch b/collects/tests/mzscheme/benchmarks/common/tak.sch index 6519c5279e..e742915c0f 100644 --- a/collects/tests/mzscheme/benchmarks/common/tak.sch +++ b/collects/tests/mzscheme/benchmarks/common/tak.sch @@ -20,6 +20,6 @@ ;;; call: (tak 18 12 6) -(time (tak 18 12 2)) +(time (tak 18 12 (read))) diff --git a/collects/tests/mzscheme/benchmarks/shootout/run.ss b/collects/tests/mzscheme/benchmarks/shootout/run.ss index 920d050066..4570ae05ea 100644 --- a/collects/tests/mzscheme/benchmarks/shootout/run.ss +++ b/collects/tests/mzscheme/benchmarks/shootout/run.ss @@ -8,7 +8,7 @@ ("cheapconcurrency.ss") ("echo.ss" . "150000") ("except.ss" . "2500000") - ("fannkuch.ss") + ("fannkuch.ss" . "10") ("fasta.ss") ("fibo.ss" . "32") ("hash.ss" . "100000") diff --git a/doc/release-notes/mzscheme/HISTORY b/doc/release-notes/mzscheme/HISTORY index 978cfd5be2..44121d2b7b 100644 --- a/doc/release-notes/mzscheme/HISTORY +++ b/doc/release-notes/mzscheme/HISTORY @@ -1,3 +1,10 @@ +Version 352.2 +Added raise-arity-error +Changed bytecode compiler to perform more closure conversion + and lifting +Changed local-expand; #f stop list means expand only immediate + + Version 352, July 2006 Minor bug fixes diff --git a/src/mzscheme/gc2/newgc.c b/src/mzscheme/gc2/newgc.c index e4106b3ba5..d2f06fe766 100644 --- a/src/mzscheme/gc2/newgc.c +++ b/src/mzscheme/gc2/newgc.c @@ -1710,7 +1710,7 @@ int GC_set_account_hook(int type, void *c1, unsigned long b, void *c2) /* administration / initialization */ /*****************************************************************************/ -static int generations_available = 0; +static int generations_available = 1; void designate_modified(void *p) { @@ -2608,7 +2608,6 @@ static void garbage_collect(int force_full) /* gc_full, force_full, !generations_available, */ /* (since_last_full > 100), (memory_in_use > (2 * last_full_mem_use))); */ - number++; INIT_DEBUG_FILE(); DUMP_HEAP(); diff --git a/src/mzscheme/include/scheme.h b/src/mzscheme/include/scheme.h index 03690b78cc..75244242ef 100644 --- a/src/mzscheme/include/scheme.h +++ b/src/mzscheme/include/scheme.h @@ -747,7 +747,7 @@ typedef struct Scheme_Hash_Table Scheme_Inclhash_Object iso; int size; /* power of 2 */ int count; - Scheme_Object **keys; + Scheme_Object **keys; Scheme_Object **vals; void (*make_hash_indices)(void *v, long *h1, long *h2); int (*compare)(void *v1, void *v2); diff --git a/src/mzscheme/src/cstartup.inc b/src/mzscheme/src/cstartup.inc index 2243792b3e..4947e091d9 100644 --- a/src/mzscheme/src/cstartup.inc +++ b/src/mzscheme/src/cstartup.inc @@ -1,349 +1,359 @@ { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,3,51,53,50,37,252,132,5,159,32,20,98,158,16,1,20,24,65,98, -101,103,105,110,0,16,0,83,158,39,20,95,114,65,35,37,115,116,120,1,29, -2,11,11,10,10,10,32,80,158,32,32,20,98,158,16,16,30,3,2,2,71, -105,100,101,110,116,105,102,105,101,114,63,4,254,1,30,5,2,2,69,115,116, -120,45,110,117,108,108,63,6,254,1,30,7,2,2,71,115,116,120,45,110,117, -108,108,47,35,102,8,254,1,30,9,2,2,69,115,116,120,45,112,97,105,114, -63,10,254,1,30,11,2,2,69,115,116,120,45,108,105,115,116,63,12,254,1, -30,13,2,2,67,115,116,120,45,99,97,114,14,254,1,30,15,2,2,67,115, -116,120,45,99,100,114,16,254,1,30,17,2,2,69,115,116,120,45,62,108,105, -115,116,18,254,1,30,19,2,2,71,115,116,120,45,118,101,99,116,111,114,63, -20,254,1,30,21,2,2,74,115,116,120,45,118,101,99,116,111,114,45,114,101, -102,22,254,1,30,23,2,2,73,115,116,120,45,99,104,101,99,107,47,101,115, -99,24,254,1,30,25,2,2,67,99,111,110,115,47,35,102,26,254,1,30,27, -2,2,69,97,112,112,101,110,100,47,35,102,28,254,1,30,29,2,2,70,115, -116,120,45,114,111,116,97,116,101,30,254,1,30,31,2,2,71,115,116,120,45, -114,111,116,97,116,101,42,32,254,1,30,33,2,2,74,115,112,108,105,116,45, -115,116,120,45,108,105,115,116,34,254,1,16,0,11,11,16,0,32,11,16,16, -2,28,2,26,2,4,2,34,2,18,2,14,2,16,2,24,2,12,2,8,2, -6,2,10,2,30,2,32,2,22,2,20,16,16,11,11,11,11,11,11,11,11, -11,11,11,11,11,11,11,11,16,16,2,28,2,26,2,4,2,34,2,18,2, -14,2,16,2,24,2,12,2,8,2,6,2,10,2,30,2,32,2,22,2,20, -48,48,9,108,83,159,32,93,80,159,32,32,33,89,162,32,33,35,2,4,222, -28,248,22,206,193,248,22,41,248,22,210,194,11,83,159,32,93,80,159,32,33, -33,89,162,32,33,35,2,6,222,28,248,22,57,193,10,28,248,22,206,193,248, -22,57,248,22,210,194,11,83,159,32,93,80,159,32,34,33,89,162,32,33,35, -2,8,222,28,248,22,57,193,9,28,248,22,206,193,28,248,22,57,248,22,210, -194,9,11,11,83,159,32,93,80,159,32,35,33,89,162,32,33,35,2,10,222, -28,248,22,50,193,10,28,248,22,206,193,248,22,50,248,22,210,194,11,83,159, -32,93,80,159,32,36,33,89,162,32,33,36,2,12,223,0,28,248,22,58,194, -10,28,248,22,206,194,28,248,22,58,248,22,210,195,10,248,91,159,33,11,20, -12,95,33,192,89,162,32,33,40,64,108,111,111,112,35,224,2,0,28,248,22, -50,195,27,248,22,53,196,28,248,22,50,193,27,248,22,53,194,28,248,22,50, -193,27,248,22,53,194,28,248,22,50,193,248,196,248,22,53,194,248,80,159,37, -36,34,193,248,80,159,36,36,34,193,248,80,159,35,36,34,193,248,80,159,34, -36,34,195,248,22,210,195,28,248,22,50,194,248,80,159,33,36,34,248,22,53, -195,11,83,159,32,93,80,159,32,37,33,89,162,32,33,35,2,14,222,28,248, -22,50,193,248,22,52,193,248,22,52,248,22,210,194,83,159,32,93,80,159,32, -38,33,89,162,32,33,35,2,16,222,28,248,22,50,193,248,22,53,193,248,22, -53,248,22,210,194,83,159,32,93,80,159,32,39,33,89,162,32,33,36,2,18, -222,28,248,22,206,193,248,22,216,193,27,248,91,159,33,11,20,12,95,33,192, -89,162,32,33,38,2,35,223,0,28,248,22,57,194,11,28,248,22,50,194,27, -248,22,53,195,28,248,22,57,193,11,28,248,22,50,193,27,248,22,53,194,28, -248,22,57,193,11,28,248,22,50,193,248,195,248,22,53,194,28,248,22,206,193, -248,22,216,193,11,28,248,22,206,193,248,22,216,193,11,28,248,22,206,194,248, -22,216,194,11,194,28,192,248,91,159,33,11,20,12,95,33,192,89,162,32,33, -39,2,35,224,2,0,28,248,22,57,195,9,28,248,22,50,195,249,22,51,248, -22,52,197,248,195,248,22,53,198,28,248,22,206,195,193,12,194,193,83,159,32, -93,80,159,32,40,33,89,162,32,34,38,2,20,222,28,248,22,206,193,28,248, -22,252,222,1,248,22,210,194,28,193,249,22,181,195,248,22,252,226,1,248,22, -210,196,10,11,11,83,159,32,93,80,159,32,41,33,89,162,32,34,37,2,22, -222,249,22,252,227,1,248,22,210,195,195,83,159,32,93,80,159,32,42,33,89, -162,32,34,35,2,24,222,28,192,192,248,194,11,83,159,32,93,80,159,32,43, -33,89,162,32,34,36,2,26,222,28,193,249,22,51,194,195,11,83,159,32,93, -80,159,32,44,33,89,162,32,34,36,2,28,222,28,192,28,193,28,248,22,57, -194,192,249,22,65,194,195,11,11,83,159,32,93,80,159,32,45,33,89,162,32, -33,36,2,30,222,250,22,1,22,2,22,59,195,83,159,32,93,80,159,32,46, -33,89,162,32,33,38,2,32,222,249,22,1,22,61,250,22,1,22,2,22,59, -197,83,159,32,93,80,159,32,47,33,89,162,32,35,44,2,34,223,0,91,159, -35,11,90,161,35,32,11,248,91,159,33,11,20,12,95,33,192,89,162,32,33, -47,2,35,226,5,8,7,0,28,28,248,22,50,197,10,28,248,22,206,197,248, -22,50,248,22,210,198,11,91,159,35,11,90,161,35,32,11,248,196,28,248,22, -50,201,248,22,53,201,248,22,53,248,22,210,202,28,249,22,182,196,198,250,22, -7,9,202,248,22,170,198,250,22,7,249,22,51,28,248,22,50,205,248,22,52, -205,248,22,52,248,22,210,206,197,196,197,250,22,7,9,199,28,197,28,28,248, -22,57,200,10,28,248,22,206,200,248,22,57,248,22,210,201,11,32,0,6,45, -105,110,102,46,48,28,28,248,22,57,200,10,28,248,22,206,200,248,22,57,248, -22,210,201,11,0,6,45,105,110,102,46,48,33,197,250,22,7,195,196,249,22, -181,199,202,93,68,35,37,107,101,114,110,101,108,36,9,0}; - EVAL_ONE_SIZED_STR((char *)expr, 1422); + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,53,50,46,49,53,252,12,6,159,33,20,98,159,33,16,1,20, +24,65,98,101,103,105,110,0,16,0,83,158,40,20,95,114,65,35,37,115,116, +120,1,29,2,11,11,10,10,10,33,80,158,33,33,20,98,159,35,16,16,30, +3,2,2,71,105,100,101,110,116,105,102,105,101,114,63,4,254,1,30,5,2, +2,69,115,116,120,45,110,117,108,108,63,6,254,1,30,7,2,2,71,115,116, +120,45,110,117,108,108,47,35,102,8,254,1,30,9,2,2,69,115,116,120,45, +112,97,105,114,63,10,254,1,30,11,2,2,69,115,116,120,45,108,105,115,116, +63,12,254,1,30,13,2,2,67,115,116,120,45,99,97,114,14,254,1,30,15, +2,2,67,115,116,120,45,99,100,114,16,254,1,30,17,2,2,69,115,116,120, +45,62,108,105,115,116,18,254,1,30,19,2,2,71,115,116,120,45,118,101,99, +116,111,114,63,20,254,1,30,21,2,2,74,115,116,120,45,118,101,99,116,111, +114,45,114,101,102,22,254,1,30,23,2,2,73,115,116,120,45,99,104,101,99, +107,47,101,115,99,24,254,1,30,25,2,2,67,99,111,110,115,47,35,102,26, +254,1,30,27,2,2,69,97,112,112,101,110,100,47,35,102,28,254,1,30,29, +2,2,70,115,116,120,45,114,111,116,97,116,101,30,254,1,30,31,2,2,71, +115,116,120,45,114,111,116,97,116,101,42,32,254,1,30,33,2,2,74,115,112, +108,105,116,45,115,116,120,45,108,105,115,116,34,254,1,16,0,11,11,16,0, +33,11,16,16,2,28,2,26,2,4,2,34,2,18,2,14,2,16,2,24,2, +12,2,8,2,6,2,10,2,30,2,32,2,22,2,20,16,16,11,11,11,11, +11,11,11,11,11,11,11,11,11,11,11,11,16,16,2,28,2,26,2,4,2, +34,2,18,2,14,2,16,2,24,2,12,2,8,2,6,2,10,2,30,2,32, +2,22,2,20,49,49,9,110,83,159,33,93,80,159,33,50,34,89,162,33,36, +47,64,108,111,111,112,35,223,0,28,28,248,22,50,196,10,28,248,22,206,196, +248,22,50,248,22,210,197,11,91,159,36,11,90,161,36,33,11,250,80,159,39, +50,34,199,200,28,248,22,50,202,248,22,53,202,248,22,53,248,22,210,203,28, +249,22,182,196,198,250,22,7,9,201,248,22,170,198,250,22,7,249,22,51,28, +248,22,50,204,248,22,52,204,248,22,52,248,22,210,205,197,196,197,250,22,7, +9,198,28,197,28,28,248,22,57,199,10,28,248,22,206,199,248,22,57,248,22, +210,200,11,33,0,6,45,105,110,102,46,48,28,28,248,22,57,199,10,28,248, +22,206,199,248,22,57,248,22,210,200,11,0,6,45,105,110,102,46,48,34,83, +159,33,93,80,159,33,49,34,89,162,33,34,40,2,35,223,0,28,248,22,50, +194,27,248,22,53,195,28,248,22,50,193,27,248,22,53,194,28,248,22,50,193, +27,248,22,53,194,28,248,22,50,193,248,80,159,37,49,34,248,22,53,194,248, +80,159,37,37,35,193,248,80,159,36,37,35,193,248,80,159,35,37,35,193,248, +80,159,34,37,35,194,83,159,33,93,80,159,33,33,34,32,36,89,162,33,34, +36,2,4,222,28,248,22,206,193,248,22,41,248,22,210,194,11,83,159,33,93, +80,159,33,34,34,32,37,89,162,33,34,36,2,6,222,28,248,22,57,193,10, +28,248,22,206,193,248,22,57,248,22,210,194,11,83,159,33,93,80,159,33,35, +34,32,38,89,162,33,34,36,2,8,222,28,248,22,57,193,9,28,248,22,206, +193,28,248,22,57,248,22,210,194,9,11,11,83,159,33,93,80,159,33,36,34, +32,39,89,162,33,34,36,2,10,222,28,248,22,50,193,10,28,248,22,206,193, +248,22,50,248,22,210,194,11,83,159,33,93,80,159,33,37,34,89,162,33,34, +41,2,12,223,0,28,248,22,58,194,10,28,248,22,206,194,28,248,22,58,248, +22,210,195,10,27,248,22,210,195,28,248,22,50,193,27,248,22,53,194,28,248, +22,50,193,27,248,22,53,194,28,248,22,50,193,248,80,159,37,49,34,248,22, +53,194,248,80,159,37,37,35,193,248,80,159,36,37,35,193,248,80,159,35,37, +35,193,28,248,22,50,194,248,80,159,34,37,35,248,22,53,195,11,83,159,33, +93,80,159,33,38,34,32,40,89,162,33,34,36,2,14,222,28,248,22,50,193, +248,22,52,193,248,22,52,248,22,210,194,83,159,33,93,80,159,33,39,34,32, +41,89,162,33,34,36,2,16,222,28,248,22,50,193,248,22,53,193,248,22,53, +248,22,210,194,83,159,33,93,80,159,33,40,34,32,42,89,162,33,34,39,2, +18,222,28,248,22,206,193,248,22,216,193,27,28,248,22,57,194,11,28,248,22, +50,194,27,248,22,53,195,28,248,22,57,193,11,28,248,22,50,193,248,32,43, +89,162,33,34,38,2,35,222,28,248,22,57,193,11,28,248,22,50,193,27,248, +22,53,194,28,248,22,57,193,11,28,248,22,50,193,27,248,22,53,194,28,248, +22,57,193,11,28,248,22,50,193,248,2,43,248,22,53,194,28,248,22,206,193, +248,22,216,193,11,28,248,22,206,193,248,22,216,193,11,28,248,22,206,193,248, +22,216,193,11,248,22,53,194,28,248,22,206,193,248,22,216,193,11,28,248,22, +206,194,248,22,216,194,11,28,192,249,32,44,89,162,33,35,40,2,35,222,28, +248,22,57,194,9,28,248,22,50,194,249,22,51,248,22,52,196,249,2,44,196, +248,22,53,198,28,248,22,206,194,192,12,194,195,193,83,159,33,93,80,159,33, +41,34,32,45,89,162,33,35,39,2,20,222,28,248,22,206,193,28,248,22,252, +222,1,248,22,210,194,28,193,249,22,181,195,248,22,252,226,1,248,22,210,196, +10,11,11,83,159,33,93,80,159,33,42,34,32,46,89,162,33,35,38,2,22, +222,249,22,252,227,1,248,22,210,195,195,83,159,33,93,80,159,33,43,34,32, +47,89,162,33,35,36,2,24,222,28,192,192,248,194,11,83,159,33,93,80,159, +33,44,34,32,48,89,162,33,35,37,2,26,222,28,193,249,22,51,194,195,11, +83,159,33,93,80,159,33,45,34,32,49,89,162,33,35,37,2,28,222,28,192, +28,193,28,248,22,57,194,192,249,22,65,194,195,11,11,83,159,33,93,80,159, +33,46,34,32,50,89,162,33,34,37,2,30,222,250,22,1,22,2,22,59,195, +83,159,33,93,80,159,33,47,34,32,51,89,162,33,34,39,2,32,222,249,22, +1,22,61,250,22,1,22,2,22,59,197,83,159,33,93,80,159,33,48,34,89, +162,33,36,45,2,34,223,0,91,159,36,11,90,161,36,33,11,250,80,159,39, +50,34,200,201,199,250,22,7,195,196,249,22,181,199,202,93,68,35,37,107,101, +114,110,101,108,52,9,0}; + EVAL_ONE_SIZED_STR((char *)expr, 1560); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,3,51,53,50,80,252,70,10,159,32,20,98,158,16,1,20,24,65,98, -101,103,105,110,0,16,0,83,158,39,20,95,114,71,35,37,113,113,45,97,110, -100,45,111,114,1,29,2,11,11,10,10,10,32,80,158,32,32,20,98,158,16, -1,30,3,2,2,69,113,113,45,97,112,112,101,110,100,4,254,1,16,0,11, -11,16,1,2,4,33,11,16,3,70,113,117,97,115,105,113,117,111,116,101,5, -63,97,110,100,6,62,111,114,7,16,3,11,11,11,16,3,2,5,2,6,2, -7,32,35,95,16,5,93,2,5,27,20,15,159,33,32,38,27,20,15,159,34, -33,38,27,20,15,159,35,34,38,89,162,32,33,46,9,226,3,0,1,2,87, -94,28,248,80,158,36,32,197,250,22,252,39,2,11,6,10,10,98,97,100,32, -115,121,110,116,97,120,199,12,27,28,248,80,158,37,33,248,80,158,38,34,199, -28,248,80,158,37,35,248,80,158,38,34,248,80,158,39,34,200,248,80,158,37, -36,248,80,158,38,34,199,250,22,252,39,2,11,6,10,10,98,97,100,32,115, -121,110,116,97,120,200,250,22,252,39,2,11,6,10,10,98,97,100,32,115,121, -110,116,97,120,200,27,89,162,32,34,39,70,97,112,112,108,121,45,99,111,110, -115,8,223,5,28,248,80,158,33,35,195,249,22,59,20,15,159,34,37,38,195, -28,28,248,22,50,195,28,249,22,223,20,15,159,34,38,38,248,22,52,197,10, -249,22,223,20,15,159,34,39,38,248,22,52,197,11,250,22,61,248,22,52,198, -196,248,22,53,198,250,22,59,20,15,159,35,40,38,196,197,250,22,209,197,27, -91,159,33,11,20,12,95,33,249,194,200,32,89,162,32,34,55,62,113,113,9, -228,10,9,8,11,5,0,27,89,162,32,34,47,67,113,113,45,108,105,115,116, -10,225,6,2,1,27,248,80,158,36,36,197,27,248,80,158,37,34,198,27,249, -197,196,201,27,249,198,196,202,28,28,249,22,252,11,2,195,197,249,22,252,11, -2,194,196,11,199,249,199,28,249,22,252,11,2,197,199,28,248,80,158,41,35, -196,20,15,159,40,35,38,249,22,59,20,15,159,42,36,38,197,195,28,249,22, -252,11,2,196,198,28,248,80,158,41,35,195,20,15,159,40,35,38,249,22,59, -20,15,159,42,36,38,196,194,28,248,80,158,39,33,200,27,248,80,158,40,36, -201,28,28,248,80,158,40,32,193,28,249,22,223,194,199,248,80,158,40,37,201, -11,11,27,248,80,158,41,34,202,87,94,28,28,248,80,158,41,33,193,248,22, -252,9,2,248,80,158,42,35,248,80,158,43,34,195,10,251,22,252,39,2,67, -117,110,113,117,111,116,101,11,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,201, -205,12,28,248,22,186,203,248,80,158,41,36,193,249,196,203,248,22,171,205,28, -28,248,80,158,40,32,193,28,249,22,223,194,20,15,159,41,41,38,248,80,158, -40,37,201,11,11,249,195,202,248,22,170,204,28,28,248,80,158,40,32,193,28, -249,22,223,194,200,248,80,158,40,37,201,11,11,251,22,252,39,2,76,117,110, -113,117,111,116,101,45,115,112,108,105,99,105,110,103,12,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,200,204,28,28,248,80,158,40,33,193,28,248, -80,158,40,32,248,80,158,41,36,194,28,249,22,223,248,80,158,42,36,195,200, -248,80,158,40,37,193,11,11,11,27,248,80,158,41,34,194,87,94,28,28,248, -80,158,41,33,193,248,22,252,9,2,248,80,158,42,35,248,80,158,43,34,195, -10,251,22,252,39,2,2,11,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,201, -205,12,27,248,80,158,42,36,194,27,248,80,158,43,34,204,27,249,200,248,80, -158,46,34,23,15,23,15,28,248,22,186,206,27,28,249,22,252,11,2,195,196, -28,248,80,158,45,35,194,20,15,159,44,35,38,249,22,59,20,15,159,46,36, -38,195,193,250,22,59,20,15,159,47,42,38,198,195,27,249,200,198,248,22,171, -23,17,28,28,249,22,252,11,2,195,196,249,22,252,11,2,194,198,11,205,249, -202,249,204,20,15,159,48,43,38,28,249,22,252,11,2,198,202,28,248,80,158, -49,35,197,20,15,159,48,35,38,249,22,59,20,15,159,50,36,38,198,196,28, -249,22,252,11,2,197,198,28,248,80,158,47,35,196,20,15,159,46,35,38,249, -22,59,20,15,159,48,36,38,197,195,249,195,202,203,28,28,248,22,206,200,248, -22,252,222,1,248,22,210,201,11,27,248,22,252,229,1,248,22,210,202,27,249, -197,195,204,28,249,22,252,11,2,195,194,201,249,22,59,20,15,159,42,44,38, -194,28,248,22,206,200,28,248,22,107,248,22,210,201,27,248,22,108,248,22,210, -202,27,249,197,195,204,28,249,22,252,11,2,195,194,201,249,22,59,20,15,159, -42,45,38,194,199,199,28,249,22,252,11,2,194,199,28,248,80,158,42,35,193, -20,15,159,41,35,38,249,22,59,20,15,159,43,36,38,194,192,201,35,20,98, -158,16,6,30,13,65,35,37,115,116,120,14,71,105,100,101,110,116,105,102,105, -101,114,63,15,2,30,16,2,14,69,115,116,120,45,112,97,105,114,63,17,11, -30,18,2,14,67,115,116,120,45,99,100,114,19,6,30,20,2,14,69,115,116, -120,45,110,117,108,108,63,21,10,30,22,2,14,67,115,116,120,45,99,97,114, -23,5,30,24,2,14,69,115,116,120,45,108,105,115,116,63,25,8,16,14,18, -16,2,97,64,104,101,114,101,26,37,97,35,10,32,11,16,8,2,5,2,2, -2,7,2,2,2,6,2,2,2,4,2,2,98,34,10,33,11,93,159,2,14, -9,11,16,0,96,33,8,254,1,11,16,0,9,18,16,2,158,2,11,37,9, -18,16,2,158,2,12,37,9,18,16,2,100,9,41,35,34,33,16,8,40,11, -2,26,71,117,110,113,117,111,116,101,45,115,116,120,27,1,20,117,110,113,117, -111,116,101,45,115,112,108,105,99,105,110,103,45,115,116,120,28,3,1,7,101, -110,118,50,50,54,49,29,2,29,2,29,16,4,39,11,67,105,110,45,102,111, -114,109,30,3,1,7,101,110,118,50,50,54,50,31,16,6,38,11,61,120,32, -63,111,108,100,33,3,1,7,101,110,118,50,50,54,52,34,2,34,9,18,16, -2,158,65,113,117,111,116,101,35,41,9,18,16,2,100,64,108,105,115,116,36, -43,35,34,33,40,39,16,6,42,11,61,97,37,61,100,38,3,1,7,101,110, -118,50,50,54,53,39,2,39,9,18,16,2,158,2,36,43,9,18,16,2,158, -65,108,105,115,116,42,40,43,9,18,16,2,158,2,40,43,9,18,16,2,104, -2,5,49,35,34,33,40,39,16,8,48,11,64,102,111,114,109,41,66,110,111, -114,109,97,108,42,2,8,3,1,7,101,110,118,50,50,54,51,43,2,43,2, -43,16,4,47,11,2,9,3,1,7,101,110,118,50,50,54,54,44,16,6,46, -11,2,32,65,108,101,118,101,108,45,3,1,7,101,110,118,50,50,54,55,46, -2,46,16,4,45,11,2,10,3,1,7,101,110,118,50,50,54,56,47,16,4, -44,11,65,102,105,114,115,116,48,3,1,7,101,110,118,50,50,55,52,49,9, -18,16,2,106,2,4,52,35,34,33,40,39,48,47,46,45,44,16,4,51,11, -64,114,101,115,116,50,3,1,7,101,110,118,50,50,55,55,51,16,8,50,11, -64,117,113,115,100,52,65,111,108,100,45,108,53,61,108,54,3,1,7,101,110, -118,50,50,55,57,55,2,55,2,55,9,18,16,2,158,94,107,2,35,54,35, -34,33,40,39,48,47,46,45,44,51,50,16,4,53,11,65,114,101,115,116,120, -56,3,1,7,101,110,118,50,50,56,49,57,158,2,12,54,54,9,18,16,2, -105,72,108,105,115,116,45,62,118,101,99,116,111,114,58,57,35,34,33,40,39, -48,47,46,45,16,4,56,11,2,54,3,1,7,101,110,118,50,50,56,50,59, -16,4,55,11,62,108,50,60,3,1,7,101,110,118,50,50,56,51,61,9,18, -16,2,105,63,98,111,120,62,8,28,35,34,33,40,39,48,47,46,45,16,4, -59,11,61,118,63,3,1,7,101,110,118,50,50,56,52,64,16,4,58,11,62, -113,118,65,3,1,7,101,110,118,50,50,56,53,66,9,11,16,5,93,2,6, -27,20,15,159,33,32,37,89,162,32,33,46,9,224,1,0,87,94,28,248,80, -158,34,32,195,12,250,22,252,39,2,11,6,10,10,98,97,100,32,115,121,110, -116,97,120,197,27,248,80,158,35,33,196,28,248,80,158,35,34,193,20,15,159, -34,33,37,28,28,248,80,158,35,35,193,248,80,158,35,34,248,80,158,36,33, -194,10,248,80,158,35,36,193,250,22,209,196,251,22,59,20,15,159,41,34,37, -248,80,158,42,36,200,249,22,51,20,15,159,43,35,37,248,80,158,44,33,202, -20,15,159,41,36,37,198,33,20,98,158,16,5,2,24,2,18,2,20,2,16, -2,22,16,5,18,16,2,97,2,26,8,29,35,34,33,9,18,16,2,100,10, -8,33,35,34,33,16,4,8,32,11,2,26,3,1,7,101,110,118,50,50,56, -55,67,16,4,8,31,11,2,32,3,1,7,101,110,118,50,50,56,56,68,16, -4,8,30,11,61,101,69,3,1,7,101,110,118,50,50,56,57,70,9,18,16, -2,158,62,105,102,71,8,33,9,18,16,2,158,2,6,8,33,9,18,16,2, -158,11,8,33,9,11,16,5,93,2,7,27,20,15,159,33,32,38,89,162,32, -33,49,9,224,1,0,87,94,28,248,80,158,34,32,195,250,22,252,39,2,11, -6,10,10,98,97,100,32,115,121,110,116,97,120,197,12,27,248,80,158,35,33, -196,28,248,80,158,35,34,193,20,15,159,34,33,38,28,28,248,80,158,35,35, -193,248,80,158,35,34,248,80,158,36,33,194,11,248,80,158,35,36,193,28,248, -80,158,35,37,193,250,22,209,196,250,22,59,20,15,159,40,34,38,248,22,59, -249,22,59,67,111,114,45,112,97,114,116,72,248,80,158,44,36,202,251,22,59, -20,15,159,44,35,38,2,72,2,72,249,22,51,20,15,159,46,36,38,248,80, -158,47,33,205,198,250,22,252,39,2,11,6,10,10,98,97,100,32,115,121,110, -116,97,120,198,33,20,98,158,16,6,2,13,2,18,2,20,2,16,2,22,2, -24,16,5,18,16,2,158,2,26,8,29,9,18,16,2,100,11,8,37,35,34, -33,16,4,8,36,11,2,26,3,1,7,101,110,118,50,50,57,49,73,16,4, -8,35,11,2,32,3,1,7,101,110,118,50,50,57,50,74,16,4,8,34,11, -2,69,3,1,7,101,110,118,50,50,57,51,75,9,18,16,2,101,63,108,101, -116,76,8,39,35,34,33,8,36,8,35,8,34,16,4,8,38,11,63,116,109, -112,77,3,1,7,101,110,118,50,50,57,52,78,9,18,16,2,158,2,71,8, -39,9,18,16,2,158,2,7,8,39,9,11,93,83,159,32,93,80,159,32,32, -33,89,162,32,34,37,2,4,222,28,248,22,58,193,249,22,65,194,195,250,22, -252,40,2,2,12,6,11,11,112,114,111,112,101,114,32,108,105,115,116,195,93, -68,35,37,107,101,114,110,101,108,79,94,2,14,2,79,0}; - EVAL_ONE_SIZED_STR((char *)expr, 2640); + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,53,50,46,49,81,252,222,10,159,33,20,98,159,33,16,1,20, +24,65,98,101,103,105,110,0,16,0,83,158,40,20,95,114,71,35,37,113,113, +45,97,110,100,45,111,114,1,29,2,11,11,10,10,10,33,80,158,33,33,20, +98,159,33,16,1,30,3,2,2,69,113,113,45,97,112,112,101,110,100,4,254, +1,16,0,11,11,16,1,2,4,34,11,16,3,70,113,117,97,115,105,113,117, +111,116,101,5,62,111,114,6,63,97,110,100,7,16,3,11,11,11,16,3,2, +5,2,6,2,7,33,36,95,16,5,93,2,5,87,97,83,159,33,93,80,159, +33,56,34,89,162,33,38,51,62,113,113,8,223,0,28,248,80,158,34,34,197, +27,248,80,158,35,37,198,28,28,248,80,158,35,33,193,28,249,22,223,194,197, +248,80,158,35,38,198,11,11,27,248,80,158,36,35,199,87,94,28,28,248,80, +158,36,34,193,248,22,252,9,2,248,80,158,37,36,248,80,158,38,35,195,10, +251,22,252,39,2,67,117,110,113,117,111,116,101,9,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,186,200,248,80,158,36,37,193,252,80, +159,40,57,34,200,201,202,203,248,22,171,205,28,28,248,80,158,35,33,193,28, +249,22,223,194,20,15,159,36,42,39,248,80,158,35,38,198,11,11,252,80,159, +39,57,34,199,200,201,202,248,22,170,204,28,28,248,80,158,35,33,193,28,249, +22,223,194,198,248,80,158,35,38,198,11,11,251,22,252,39,2,76,117,110,113, +117,111,116,101,45,115,112,108,105,99,105,110,103,10,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,35,34,193,28,248,80, +158,35,33,248,80,158,36,37,194,28,249,22,223,248,80,158,37,37,195,198,248, +80,158,35,38,193,11,11,11,27,248,80,158,36,35,194,87,94,28,28,248,80, +158,36,34,193,248,22,252,9,2,248,80,158,37,36,248,80,158,38,35,195,10, +251,22,252,39,2,2,9,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,37,37,194,27,248,80,158,38,35,201,27,252,80,159,43,56, +34,203,204,205,248,80,158,44,35,23,15,23,15,28,248,22,186,203,27,28,249, +22,252,11,2,195,196,28,248,80,158,40,36,194,20,15,159,39,36,39,249,22, +59,20,15,159,41,37,39,195,193,250,22,59,20,15,159,42,43,39,198,195,27, +252,80,159,44,57,34,204,205,206,201,248,22,171,23,17,28,28,249,22,252,11, +2,195,196,249,22,252,11,2,194,198,11,202,249,80,159,41,55,34,249,80,159, +43,55,34,20,15,159,43,44,39,28,249,22,252,11,2,198,202,28,248,80,158, +44,36,197,20,15,159,43,36,39,249,22,59,20,15,159,45,37,39,198,196,28, +249,22,252,11,2,197,198,28,248,80,158,42,36,196,20,15,159,41,36,39,249, +22,59,20,15,159,43,37,39,197,195,252,80,159,39,57,34,199,200,201,202,203, +28,28,248,22,206,197,248,22,252,222,1,248,22,210,198,11,27,248,22,252,229, +1,248,22,210,199,27,252,80,159,40,56,34,200,201,202,198,204,28,249,22,252, +11,2,195,194,198,249,22,59,20,15,159,37,45,39,194,28,248,22,206,197,28, +248,22,107,248,22,210,198,27,248,22,108,248,22,210,199,27,252,80,159,40,56, +34,200,201,202,198,204,28,249,22,252,11,2,195,194,198,249,22,59,20,15,159, +37,46,39,194,196,196,83,159,33,93,80,159,33,57,34,89,162,33,38,48,67, +113,113,45,108,105,115,116,11,223,0,27,248,80,158,35,37,198,27,248,80,158, +36,35,199,27,252,80,159,41,56,34,201,202,203,199,205,27,252,80,159,42,56, +34,202,203,204,199,206,28,28,249,22,252,11,2,195,197,249,22,252,11,2,194, +196,11,200,249,80,159,39,55,34,28,249,22,252,11,2,197,199,28,248,80,158, +40,36,196,20,15,159,39,36,39,249,22,59,20,15,159,41,37,39,197,195,28, +249,22,252,11,2,196,198,28,248,80,158,40,36,195,20,15,159,39,36,39,249, +22,59,20,15,159,41,37,39,196,194,83,159,33,93,80,159,33,55,34,89,162, +33,35,40,70,97,112,112,108,121,45,99,111,110,115,12,223,0,28,248,80,158, +34,36,195,249,22,59,20,15,159,35,38,39,195,28,28,248,22,50,195,28,249, +22,223,20,15,159,35,39,39,248,22,52,197,10,249,22,223,20,15,159,35,40, +39,248,22,52,197,11,250,22,61,248,22,52,198,196,248,22,53,198,250,22,59, +20,15,159,36,41,39,196,197,83,159,33,93,80,159,33,54,34,89,162,33,35, +38,66,110,111,114,109,97,108,13,223,0,28,249,22,252,11,2,195,196,28,248, +80,158,34,36,194,20,15,159,33,36,39,249,22,59,20,15,159,35,37,39,195, +193,27,20,15,159,34,33,39,27,20,15,159,35,34,39,27,20,15,159,36,35, +39,89,162,33,34,49,9,226,3,0,1,2,87,94,28,248,80,158,37,33,197, +250,22,252,39,2,11,6,10,10,98,97,100,32,115,121,110,116,97,120,199,12, +27,28,248,80,158,38,34,248,80,158,39,35,199,28,248,80,158,38,36,248,80, +158,39,35,248,80,158,40,35,200,248,80,158,38,37,248,80,158,39,35,199,250, +22,252,39,2,11,6,10,10,98,97,100,32,115,121,110,116,97,120,200,250,22, +252,39,2,11,6,10,10,98,97,100,32,115,121,110,116,97,120,200,250,22,209, +196,27,252,80,159,46,56,34,206,203,204,201,33,28,249,22,252,11,2,194,198, +28,248,80,158,42,36,193,20,15,159,41,36,39,249,22,59,20,15,159,43,37, +39,194,192,200,36,20,98,159,37,16,6,30,14,65,35,37,115,116,120,15,71, +105,100,101,110,116,105,102,105,101,114,63,16,2,30,17,2,15,69,115,116,120, +45,112,97,105,114,63,18,11,30,19,2,15,67,115,116,120,45,99,100,114,20, +6,30,21,2,15,69,115,116,120,45,110,117,108,108,63,22,10,30,23,2,15, +67,115,116,120,45,99,97,114,24,5,30,25,2,15,69,115,116,120,45,108,105, +115,116,63,26,8,16,14,18,16,2,97,64,104,101,114,101,27,38,97,36,10, +33,11,16,8,2,5,2,2,2,7,2,2,2,6,2,2,2,4,2,2,98, +35,10,34,11,93,159,2,15,9,11,16,0,96,34,8,254,1,11,16,0,9, +18,16,2,158,2,9,38,9,18,16,2,158,2,10,38,9,18,16,2,100,9, +42,36,35,34,16,8,41,11,2,27,71,117,110,113,117,111,116,101,45,115,116, +120,28,1,20,117,110,113,117,111,116,101,45,115,112,108,105,99,105,110,103,45, +115,116,120,29,3,1,7,101,110,118,50,50,54,49,30,2,30,2,30,16,4, +40,11,67,105,110,45,102,111,114,109,31,3,1,7,101,110,118,50,50,54,50, +32,16,6,39,11,61,120,33,63,111,108,100,34,3,1,7,101,110,118,50,50, +54,52,35,2,35,9,18,16,2,158,65,113,117,111,116,101,36,42,9,18,16, +2,100,64,108,105,115,116,37,44,36,35,34,41,40,16,6,43,11,61,97,38, +61,100,39,3,1,7,101,110,118,50,50,54,53,40,2,40,9,18,16,2,158, +2,37,44,9,18,16,2,158,65,108,105,115,116,42,41,44,9,18,16,2,158, +2,41,44,9,18,16,2,104,2,5,50,36,35,34,41,40,16,8,49,11,64, +102,111,114,109,42,2,13,2,12,3,1,7,101,110,118,50,50,54,51,43,2, +43,2,43,16,4,48,11,2,8,3,1,7,101,110,118,50,50,54,54,44,16, +6,47,11,2,33,65,108,101,118,101,108,45,3,1,7,101,110,118,50,50,54, +55,46,2,46,16,4,46,11,2,11,3,1,7,101,110,118,50,50,54,56,47, +16,4,45,11,65,102,105,114,115,116,48,3,1,7,101,110,118,50,50,55,52, +49,9,18,16,2,106,2,4,53,36,35,34,41,40,49,48,47,46,45,16,4, +52,11,64,114,101,115,116,50,3,1,7,101,110,118,50,50,55,55,51,16,8, +51,11,64,117,113,115,100,52,65,111,108,100,45,108,53,61,108,54,3,1,7, +101,110,118,50,50,55,57,55,2,55,2,55,9,18,16,2,158,94,107,2,36, +55,36,35,34,41,40,49,48,47,46,45,52,51,16,4,54,11,65,114,101,115, +116,120,56,3,1,7,101,110,118,50,50,56,49,57,158,2,10,55,55,9,18, +16,2,105,72,108,105,115,116,45,62,118,101,99,116,111,114,58,58,36,35,34, +41,40,49,48,47,46,16,4,57,11,2,54,3,1,7,101,110,118,50,50,56, +50,59,16,4,56,11,62,108,50,60,3,1,7,101,110,118,50,50,56,51,61, +9,18,16,2,105,63,98,111,120,62,8,28,36,35,34,41,40,49,48,47,46, +16,4,8,27,11,61,118,63,3,1,7,101,110,118,50,50,56,52,64,16,4, +59,11,62,113,118,65,3,1,7,101,110,118,50,50,56,53,66,9,11,16,5, +93,2,7,27,20,15,159,34,33,38,89,162,33,34,47,9,224,1,0,87,94, +28,248,80,158,35,33,195,12,250,22,252,39,2,11,6,10,10,98,97,100,32, +115,121,110,116,97,120,197,27,248,80,158,36,34,196,28,248,80,158,36,35,193, +20,15,159,35,34,38,28,28,248,80,158,36,36,193,248,80,158,36,35,248,80, +158,37,34,194,10,248,80,158,36,37,193,250,22,209,196,251,22,59,20,15,159, +42,35,38,248,80,158,43,37,200,249,22,51,20,15,159,44,36,38,248,80,158, +45,34,202,20,15,159,42,37,38,198,34,20,98,159,33,16,5,2,25,2,19, +2,21,2,17,2,23,16,5,18,16,2,97,2,27,8,29,36,35,34,9,18, +16,2,100,10,8,33,36,35,34,16,4,8,32,11,2,27,3,1,7,101,110, +118,50,50,56,55,67,16,4,8,31,11,2,33,3,1,7,101,110,118,50,50, +56,56,68,16,4,8,30,11,61,101,69,3,1,7,101,110,118,50,50,56,57, +70,9,18,16,2,158,62,105,102,71,8,33,9,18,16,2,158,2,7,8,33, +9,18,16,2,158,11,8,33,9,11,16,5,93,2,6,27,20,15,159,34,33, +39,89,162,33,34,50,9,224,1,0,87,94,28,248,80,158,35,33,195,250,22, +252,39,2,11,6,10,10,98,97,100,32,115,121,110,116,97,120,197,12,27,248, +80,158,36,34,196,28,248,80,158,36,35,193,20,15,159,35,34,39,28,28,248, +80,158,36,36,193,248,80,158,36,35,248,80,158,37,34,194,11,248,80,158,36, +37,193,28,248,80,158,36,38,193,250,22,209,196,250,22,59,20,15,159,41,35, +39,248,22,59,249,22,59,67,111,114,45,112,97,114,116,72,248,80,158,45,37, +202,251,22,59,20,15,159,45,36,39,2,72,2,72,249,22,51,20,15,159,47, +37,39,248,80,158,48,34,205,198,250,22,252,39,2,11,6,10,10,98,97,100, +32,115,121,110,116,97,120,198,34,20,98,159,33,16,6,2,14,2,19,2,21, +2,17,2,23,2,25,16,5,18,16,2,158,2,27,8,29,9,18,16,2,100, +11,8,37,36,35,34,16,4,8,36,11,2,27,3,1,7,101,110,118,50,50, +57,49,73,16,4,8,35,11,2,33,3,1,7,101,110,118,50,50,57,50,74, +16,4,8,34,11,2,69,3,1,7,101,110,118,50,50,57,51,75,9,18,16, +2,101,63,108,101,116,76,8,39,36,35,34,8,36,8,35,8,34,16,4,8, +38,11,63,116,109,112,77,3,1,7,101,110,118,50,50,57,52,78,9,18,16, +2,158,2,71,8,39,9,18,16,2,158,2,6,8,39,9,11,93,83,159,33, +93,80,159,33,33,34,32,79,89,162,33,35,38,2,4,222,28,248,22,58,193, +249,22,65,194,195,250,22,252,40,2,2,10,6,11,11,112,114,111,112,101,114, +32,108,105,115,116,195,93,68,35,37,107,101,114,110,101,108,80,94,2,15,2, +80,0}; + EVAL_ONE_SIZED_STR((char *)expr, 2794); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,3,51,53,50,44,252,209,4,159,32,20,98,158,16,1,20,24,65,98, -101,103,105,110,0,16,0,83,158,39,20,95,114,66,35,37,99,111,110,100,1, -29,2,11,11,10,10,10,32,80,158,32,32,20,98,158,16,0,16,0,11,11, -16,0,32,11,16,1,64,99,111,110,100,3,16,1,11,16,1,2,3,32,33, -93,16,5,93,2,3,27,20,15,159,33,32,37,89,162,32,33,42,9,224,1, -0,87,94,28,248,80,158,34,32,195,250,22,252,39,2,11,6,10,10,98,97, -100,32,115,121,110,116,97,120,197,12,250,22,209,195,27,248,80,158,38,33,199, -249,91,159,33,11,20,12,95,33,192,89,162,32,34,55,64,108,111,111,112,4, -225,8,9,0,28,248,80,158,35,34,196,20,15,159,34,33,37,28,248,80,158, -35,35,196,27,248,80,158,36,36,197,27,248,80,158,37,33,198,28,248,80,158, -37,35,194,27,248,80,158,38,36,195,27,248,80,158,39,33,196,27,28,248,80, -158,40,32,195,249,22,223,196,20,15,159,41,34,37,11,87,94,28,192,28,248, -80,158,40,35,196,27,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,251,22,252,39,2,11,196,203,201,12,12,28,28,248,80, -158,40,35,194,28,248,80,158,40,32,248,80,158,41,36,195,249,22,223,248,80, -158,42,36,196,20,15,159,41,35,37,11,11,28,28,248,80,158,40,35,248,80, -158,41,33,195,248,80,158,40,34,248,80,158,41,33,248,80,158,42,33,196,11, -27,28,193,10,195,27,247,22,48,250,22,59,20,15,159,44,36,37,248,22,59, -249,22,59,198,199,251,22,59,20,15,159,48,37,37,199,249,22,59,248,80,158, -51,36,248,80,158,52,33,206,201,249,23,16,206,11,27,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,251,22,252,39,2,11,196,203,201, -28,192,28,201,250,22,59,20,15,159,42,38,37,10,249,22,51,20,15,159,44, -39,37,198,249,22,51,20,15,159,41,40,37,195,28,248,80,158,40,34,194,27, -247,22,48,250,22,59,20,15,159,43,41,37,248,22,59,249,22,59,198,201,251, -22,59,20,15,159,47,42,37,199,199,249,23,15,205,11,251,22,59,20,15,159, -43,43,37,198,249,22,51,20,15,159,45,44,37,199,249,203,201,11,27,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,251,22,252,39,2,11,196,200,198,27,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,251, -22,252,39,2,11,196,198,200,194,10,197,33,20,98,158,16,5,30,5,65,35, -37,115,116,120,6,71,105,100,101,110,116,105,102,105,101,114,63,7,2,30,8, -2,6,67,115,116,120,45,99,100,114,9,6,30,10,2,6,69,115,116,120,45, -110,117,108,108,63,11,10,30,12,2,6,69,115,116,120,45,112,97,105,114,63, -13,11,30,14,2,6,67,115,116,120,45,99,97,114,15,5,16,13,18,16,2, -97,64,104,101,114,101,16,37,97,35,10,32,11,16,2,2,3,2,2,98,34, -10,33,11,94,159,71,35,37,113,113,45,97,110,100,45,111,114,17,9,11,159, -2,6,9,11,16,0,96,33,8,254,1,11,16,0,9,18,16,2,158,93,102, -64,118,111,105,100,18,43,35,34,33,16,4,42,11,2,16,3,1,7,101,110, -118,50,50,57,56,19,16,4,41,11,67,105,110,45,102,111,114,109,20,3,1, -7,101,110,118,50,50,57,57,21,16,6,40,11,64,102,111,114,109,22,66,115, -101,114,114,111,114,23,3,1,7,101,110,118,50,51,48,48,24,2,24,16,4, -39,11,2,4,3,1,7,101,110,118,50,51,48,50,25,16,6,38,11,65,116, -101,115,116,115,26,66,102,105,114,115,116,63,27,3,1,7,101,110,118,50,51, -48,51,28,2,28,43,9,18,104,64,101,108,115,101,29,46,35,34,33,42,41, -40,39,38,16,6,45,11,64,108,105,110,101,30,64,114,101,115,116,31,3,1, -7,101,110,118,50,51,48,52,32,2,32,16,6,44,11,64,116,101,115,116,33, -65,118,97,108,117,101,34,3,1,7,101,110,118,50,51,48,53,35,2,35,18, -104,62,61,62,36,48,35,34,33,42,41,40,39,38,45,16,8,47,11,2,33, -2,34,65,101,108,115,101,63,37,2,35,2,35,2,35,18,105,63,108,101,116, -38,50,35,34,33,42,41,40,39,38,45,47,16,4,49,11,63,103,101,110,39, -3,1,7,101,110,118,50,51,48,54,40,18,158,62,105,102,41,50,18,158,2, -41,48,18,158,2,0,48,18,16,2,158,2,0,48,9,18,105,2,38,52,35, -34,33,42,41,40,39,38,45,47,16,4,51,11,2,39,3,1,7,101,110,118, -50,51,48,55,42,18,158,2,41,52,18,16,2,158,2,41,48,9,18,16,2, -158,2,0,48,9,11,9,93,68,35,37,107,101,114,110,101,108,43,95,2,6, -2,17,2,43,0}; - EVAL_ONE_SIZED_STR((char *)expr, 1243); + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,53,50,46,49,44,252,234,4,159,33,20,98,159,33,16,1,20, +24,65,98,101,103,105,110,0,16,0,83,158,40,20,95,114,66,35,37,99,111, +110,100,1,29,2,11,11,10,10,10,33,80,158,33,33,20,98,159,33,16,0, +16,0,11,11,16,0,33,11,16,1,64,99,111,110,100,3,16,1,11,16,1, +2,3,33,34,93,16,5,93,2,3,87,94,83,159,33,93,80,159,33,52,34, +89,162,33,36,55,64,108,111,111,112,4,223,0,28,248,80,158,34,35,195,20, +15,159,33,34,38,28,248,80,158,34,36,195,27,248,80,158,35,37,196,27,248, +80,158,36,34,197,28,248,80,158,36,36,194,27,248,80,158,37,37,195,27,248, +80,158,38,34,196,27,28,248,80,158,39,33,195,249,22,223,196,20,15,159,40, +35,38,11,87,94,28,192,28,248,80,158,39,36,196,27,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,251,22,252,39,2,11, +196,203,201,12,12,28,28,248,80,158,39,36,194,28,248,80,158,39,33,248,80, +158,40,37,195,249,22,223,248,80,158,41,37,196,20,15,159,40,36,38,11,11, +28,28,248,80,158,39,36,248,80,158,40,34,195,248,80,158,39,35,248,80,158, +40,34,248,80,158,41,34,196,11,27,28,193,10,195,27,247,22,48,250,22,59, +20,15,159,43,37,38,248,22,59,249,22,59,198,199,251,22,59,20,15,159,47, +38,38,199,249,22,59,248,80,158,50,37,248,80,158,51,34,206,201,250,80,159, +50,52,34,23,18,23,15,11,27,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,251,22,252,39,2,11,196,203,201,28,192,28,200,250,22, +59,20,15,159,41,39,38,10,249,22,51,20,15,159,43,40,38,198,249,22,51, +20,15,159,40,41,38,195,28,248,80,158,39,35,194,27,247,22,48,250,22,59, +20,15,159,42,42,38,248,22,59,249,22,59,198,201,251,22,59,20,15,159,46, +43,38,199,199,250,80,159,49,52,34,23,17,206,11,251,22,59,20,15,159,42, +44,38,198,249,22,51,20,15,159,44,45,38,199,250,80,159,45,52,34,205,202, +11,27,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,251,22,252,39,2,11,196,200,198,27,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,251,22,252,39,2,11,196,198,199,27,20,15,159,34,33,38,89,162, +33,34,44,9,224,1,0,87,94,28,248,80,158,35,33,195,250,22,252,39,2, +11,6,10,10,98,97,100,32,115,121,110,116,97,120,197,12,250,22,209,195,27, +248,80,158,39,34,199,250,80,159,41,52,34,201,195,10,197,34,20,98,159,34, +16,5,30,5,65,35,37,115,116,120,6,71,105,100,101,110,116,105,102,105,101, +114,63,7,2,30,8,2,6,67,115,116,120,45,99,100,114,9,6,30,10,2, +6,69,115,116,120,45,110,117,108,108,63,11,10,30,12,2,6,69,115,116,120, +45,112,97,105,114,63,13,11,30,14,2,6,67,115,116,120,45,99,97,114,15, +5,16,13,18,16,2,97,64,104,101,114,101,16,38,97,36,10,33,11,16,2, +2,3,2,2,98,35,10,34,11,94,159,71,35,37,113,113,45,97,110,100,45, +111,114,17,9,11,159,2,6,9,11,16,0,96,34,8,254,1,11,16,0,9, +18,16,2,158,93,102,64,118,111,105,100,18,44,36,35,34,16,4,43,11,2, +16,3,1,7,101,110,118,50,50,57,56,19,16,4,42,11,67,105,110,45,102, +111,114,109,20,3,1,7,101,110,118,50,50,57,57,21,16,6,41,11,64,102, +111,114,109,22,66,115,101,114,114,111,114,23,3,1,7,101,110,118,50,51,48, +48,24,2,24,16,4,40,11,2,4,3,1,7,101,110,118,50,51,48,50,25, +16,6,39,11,65,116,101,115,116,115,26,66,102,105,114,115,116,63,27,3,1, +7,101,110,118,50,51,48,51,28,2,28,44,9,18,104,64,101,108,115,101,29, +47,36,35,34,43,42,41,40,39,16,6,46,11,64,108,105,110,101,30,64,114, +101,115,116,31,3,1,7,101,110,118,50,51,48,52,32,2,32,16,6,45,11, +64,116,101,115,116,33,65,118,97,108,117,101,34,3,1,7,101,110,118,50,51, +48,53,35,2,35,18,104,62,61,62,36,49,36,35,34,43,42,41,40,39,46, +16,8,48,11,2,33,2,34,65,101,108,115,101,63,37,2,35,2,35,2,35, +18,105,63,108,101,116,38,51,36,35,34,43,42,41,40,39,46,48,16,4,50, +11,63,103,101,110,39,3,1,7,101,110,118,50,51,48,54,40,18,158,62,105, +102,41,51,18,158,2,41,49,18,158,2,0,49,18,16,2,158,2,0,49,9, +18,105,2,38,53,36,35,34,43,42,41,40,39,46,48,16,4,52,11,2,39, +3,1,7,101,110,118,50,51,48,55,42,18,158,2,41,53,18,16,2,158,2, +41,49,9,18,16,2,158,2,0,49,9,11,9,93,68,35,37,107,101,114,110, +101,108,43,95,2,6,2,17,2,43,0}; + EVAL_ONE_SIZED_STR((char *)expr, 1270); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,3,51,53,50,24,252,36,4,159,32,20,98,158,16,1,20,24,65,98, -101,103,105,110,0,16,0,83,158,39,20,95,114,73,35,37,115,116,114,117,99, -116,45,105,110,102,111,1,29,2,11,11,10,10,10,32,80,158,32,32,20,98, -158,16,9,30,3,2,2,74,105,100,101,110,116,105,102,105,101,114,47,35,102, -63,4,254,1,30,5,65,35,37,115,116,120,6,71,105,100,101,110,116,105,102, -105,101,114,63,7,2,30,8,2,2,71,105,100,47,35,102,45,108,105,115,116, -63,9,254,1,30,10,2,2,72,115,116,114,117,99,116,45,105,110,102,111,63, -11,254,1,30,12,2,2,79,115,116,114,117,99,116,45,105,110,102,111,45,116, -121,112,101,45,105,100,13,254,1,30,14,2,2,1,26,115,116,114,117,99,116, -45,105,110,102,111,45,99,111,110,115,116,114,117,99,116,111,114,45,105,100,15, -254,1,30,16,2,2,1,24,115,116,114,117,99,116,45,105,110,102,111,45,112, -114,101,100,105,99,97,116,101,45,105,100,17,254,1,30,18,2,2,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,19,254,1,30,20,2,2,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,21,254,1,16,0,11,11,16, -2,2,9,2,4,34,11,16,6,2,19,2,15,2,21,2,17,2,13,2,11, -16,6,11,11,11,11,11,11,16,6,2,19,2,15,2,21,2,17,2,13,2, -11,38,38,9,100,83,159,32,93,80,159,32,32,33,89,162,32,33,36,2,4, -223,0,27,248,22,252,9,2,195,28,192,192,248,80,158,34,33,195,83,159,32, -93,80,159,32,34,33,89,162,32,34,40,2,9,223,0,28,248,22,57,195,10, -28,248,22,50,195,28,248,22,57,248,22,53,196,27,248,22,52,196,27,248,22, -252,9,2,194,28,192,192,248,80,158,35,33,194,28,248,194,248,22,52,196,27, -248,22,53,196,28,248,22,57,193,10,28,248,22,50,193,28,248,22,57,248,22, -53,194,27,248,22,52,194,27,248,22,252,9,2,194,28,192,192,248,80,158,36, -33,194,28,248,195,248,22,52,194,27,248,22,53,194,28,248,22,57,193,10,28, -248,22,50,193,28,248,22,57,248,22,53,194,27,248,22,52,194,27,248,22,252, -9,2,194,28,192,192,248,80,158,37,33,194,28,248,196,248,22,52,194,249,80, -159,36,34,33,197,248,22,53,195,11,11,11,11,11,11,83,159,32,93,80,159, -32,35,33,89,162,32,33,40,2,11,223,0,28,248,22,58,194,28,249,22,181, -248,22,64,196,38,28,27,248,22,52,195,27,248,22,252,9,2,194,28,192,192, -248,80,158,35,33,194,28,27,248,22,78,195,27,248,22,252,9,2,194,28,192, -192,248,80,158,35,33,194,28,27,248,22,87,195,27,248,22,252,9,2,194,28, -192,192,248,80,158,35,33,194,28,27,80,158,33,33,27,249,22,70,197,35,28, -248,22,57,193,10,28,248,22,50,193,28,248,22,57,248,22,53,194,27,248,22, -52,194,27,248,22,252,9,2,194,28,192,192,248,80,158,37,33,194,28,248,194, -248,22,52,194,27,248,22,53,194,28,248,22,57,193,10,28,248,22,50,193,28, -248,22,57,248,22,53,194,27,248,22,52,194,27,248,22,252,9,2,194,28,192, -192,248,80,158,38,33,194,28,248,195,248,22,52,194,249,80,159,37,34,33,196, -248,22,53,195,11,11,11,11,28,27,80,159,33,32,33,27,249,22,70,197,36, -28,248,22,57,193,10,28,248,22,50,193,28,248,22,57,248,22,53,194,27,248, -22,52,194,27,248,22,252,9,2,194,28,192,192,248,80,158,37,33,194,28,248, -194,248,22,52,194,27,248,22,53,194,28,248,22,57,193,10,28,248,22,50,193, -28,248,22,57,248,22,53,194,27,248,22,52,194,27,248,22,252,9,2,194,28, -192,192,248,80,158,38,33,194,28,248,195,248,22,52,194,249,80,159,37,34,33, -196,248,22,53,195,11,11,11,11,27,27,249,22,70,197,37,27,248,22,252,9, -2,194,28,192,192,248,80,158,36,33,194,28,192,192,249,22,252,11,2,10,249, -22,70,198,37,11,11,11,11,11,11,11,83,159,32,93,80,159,32,36,33,22, -52,83,159,32,93,80,159,32,37,33,22,78,83,159,32,93,80,159,32,38,33, -22,87,83,159,32,93,80,159,32,39,33,22,90,83,159,32,93,80,159,32,40, -33,89,162,32,33,35,2,21,222,249,22,70,194,36,95,68,35,37,107,101,114, -110,101,108,22,2,6,71,35,37,113,113,45,97,110,100,45,111,114,23,9,0}; - EVAL_ONE_SIZED_STR((char *)expr, 1070); + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,53,50,46,49,25,252,46,4,159,33,20,98,159,33,16,1,20, +24,65,98,101,103,105,110,0,16,0,83,158,40,20,95,114,73,35,37,115,116, +114,117,99,116,45,105,110,102,111,1,29,2,11,11,10,10,10,33,80,158,33, +33,20,98,159,33,16,9,30,3,2,2,74,105,100,101,110,116,105,102,105,101, +114,47,35,102,63,4,254,1,30,5,65,35,37,115,116,120,6,71,105,100,101, +110,116,105,102,105,101,114,63,7,2,30,8,2,2,71,105,100,47,35,102,45, +108,105,115,116,63,9,254,1,30,10,2,2,72,115,116,114,117,99,116,45,105, +110,102,111,63,11,254,1,30,12,2,2,79,115,116,114,117,99,116,45,105,110, +102,111,45,116,121,112,101,45,105,100,13,254,1,30,14,2,2,1,26,115,116, +114,117,99,116,45,105,110,102,111,45,99,111,110,115,116,114,117,99,116,111,114, +45,105,100,15,254,1,30,16,2,2,1,24,115,116,114,117,99,116,45,105,110, +102,111,45,112,114,101,100,105,99,97,116,101,45,105,100,17,254,1,30,18,2, +2,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,19,254,1,30,20,2,2,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,21,254,1,16, +0,11,11,16,2,2,9,2,4,35,11,16,6,2,19,2,15,2,21,2,17, +2,13,2,11,16,6,11,11,11,11,11,11,16,6,2,19,2,15,2,21,2, +17,2,13,2,11,39,39,9,100,83,159,33,93,80,159,33,33,34,89,162,33, +34,37,2,4,223,0,27,248,22,252,9,2,195,28,192,192,248,80,158,35,34, +195,83,159,33,93,80,159,33,35,34,89,162,33,35,41,2,9,223,0,28,248, +22,57,195,10,28,248,22,50,195,28,248,22,57,248,22,53,196,27,248,22,52, +196,27,248,22,252,9,2,194,28,192,192,248,80,158,36,34,194,28,248,194,248, +22,52,196,27,248,22,53,196,28,248,22,57,193,10,28,248,22,50,193,28,248, +22,57,248,22,53,194,27,248,22,52,194,27,248,22,252,9,2,194,28,192,192, +248,80,158,37,34,194,28,248,195,248,22,52,194,27,248,22,53,194,28,248,22, +57,193,10,28,248,22,50,193,28,248,22,57,248,22,53,194,27,248,22,52,194, +27,248,22,252,9,2,194,28,192,192,248,80,158,38,34,194,28,248,196,248,22, +52,194,249,80,159,37,35,34,197,248,22,53,195,11,11,11,11,11,11,83,159, +33,93,80,159,33,36,34,89,162,33,34,41,2,11,223,0,28,248,22,58,194, +28,249,22,181,248,22,64,196,39,28,27,248,22,52,195,27,248,22,252,9,2, +194,28,192,192,248,80,158,36,34,194,28,27,248,22,78,195,27,248,22,252,9, +2,194,28,192,192,248,80,158,36,34,194,28,27,248,22,87,195,27,248,22,252, +9,2,194,28,192,192,248,80,158,36,34,194,28,27,80,158,34,34,27,249,22, +70,197,36,28,248,22,57,193,10,28,248,22,50,193,28,248,22,57,248,22,53, +194,27,248,22,52,194,27,248,22,252,9,2,194,28,192,192,248,80,158,38,34, +194,28,248,194,248,22,52,194,27,248,22,53,194,28,248,22,57,193,10,28,248, +22,50,193,28,248,22,57,248,22,53,194,27,248,22,52,194,27,248,22,252,9, +2,194,28,192,192,248,80,158,39,34,194,28,248,195,248,22,52,194,249,80,159, +38,35,34,196,248,22,53,195,11,11,11,11,28,27,249,22,70,196,37,28,248, +22,57,193,10,28,248,22,50,193,28,248,22,57,248,22,53,194,27,248,22,52, +194,27,248,22,252,9,2,194,28,192,192,248,80,158,37,34,194,28,248,80,159, +35,33,34,248,22,52,194,27,248,22,53,194,28,248,22,57,193,10,28,248,22, +50,193,28,248,22,57,248,22,53,194,27,248,22,52,194,27,248,22,252,9,2, +194,28,192,192,248,80,158,38,34,194,28,248,80,159,36,33,34,248,22,52,194, +249,80,159,37,35,34,80,159,37,33,34,248,22,53,195,11,11,11,11,27,27, +249,22,70,197,38,27,248,22,252,9,2,194,28,192,192,248,80,158,37,34,194, +28,192,192,249,22,252,11,2,10,249,22,70,198,38,11,11,11,11,11,11,11, +83,159,33,93,80,159,33,37,34,22,52,83,159,33,93,80,159,33,38,34,22, +78,83,159,33,93,80,159,33,39,34,22,87,83,159,33,93,80,159,33,40,34, +22,90,83,159,33,93,80,159,33,41,34,32,22,89,162,33,34,36,2,21,222, +249,22,70,194,37,95,68,35,37,107,101,114,110,101,108,23,2,6,71,35,37, +113,113,45,97,110,100,45,111,114,24,9,0}; + EVAL_ONE_SIZED_STR((char *)expr, 1082); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,3,51,53,50,29,252,27,4,159,32,20,98,158,16,1,20,24,65,98, -101,103,105,110,0,16,0,83,158,39,20,95,114,71,35,37,100,115,45,104,101, -108,112,101,114,1,29,2,11,11,10,10,10,32,80,158,32,32,20,98,158,16, -6,30,3,2,2,1,20,108,105,115,116,45,62,105,109,109,117,116,97,98,108, -101,45,108,105,115,116,4,254,1,30,5,2,2,72,103,101,116,45,115,116,120, -45,105,110,102,111,6,254,1,30,7,73,35,37,115,116,114,117,99,116,45,105, -110,102,111,8,72,115,116,114,117,99,116,45,105,110,102,111,63,9,5,30,10, -2,8,79,115,116,114,117,99,116,45,105,110,102,111,45,116,121,112,101,45,105, -100,11,4,30,12,2,8,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,13,0,30,14,2,8,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,15,2,16,0,11,11,16,1,2,4,33,11,16,1,2,6,16,1,11,16, -1,2,6,33,33,9,94,83,159,32,93,80,159,32,32,33,89,162,32,33,38, -2,4,223,0,28,248,22,57,194,9,249,22,56,248,22,52,196,248,80,159,35, -32,34,248,22,53,197,83,159,32,93,80,159,32,33,33,89,162,32,36,8,32, -2,6,223,0,27,28,197,247,22,48,11,27,28,198,89,162,32,33,38,62,113, -115,16,223,1,28,193,249,22,59,194,249,22,59,72,113,117,111,116,101,45,115, -121,110,116,97,120,17,197,11,22,7,27,89,162,32,33,36,71,101,118,101,114, -121,45,111,116,104,101,114,18,222,249,91,159,33,11,20,12,95,33,192,89,162, -32,34,44,64,108,111,111,112,19,223,0,28,248,22,57,194,194,28,248,22,57, -248,22,53,195,249,22,51,248,22,52,196,196,27,248,22,80,195,27,249,22,51, -248,22,52,198,198,28,248,22,57,194,192,28,248,22,57,248,22,53,195,249,22, -51,248,22,52,196,194,27,248,22,80,195,27,249,22,51,248,22,52,198,196,28, -248,22,57,194,192,28,248,22,57,248,22,53,195,249,22,51,248,22,52,196,194, -249,198,248,22,80,196,249,22,51,248,22,52,198,196,194,9,27,28,198,249,22, -252,81,3,200,89,162,40,32,32,9,222,11,11,87,94,28,198,28,28,248,80, -158,37,34,193,248,22,252,9,2,248,80,158,38,35,194,10,251,22,252,39,2, -11,28,248,80,158,41,34,197,6,63,63,112,97,114,101,110,116,32,115,116,114, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,53,50,46,49,33,252,91,4,159,33,20,98,159,33,16,1,20, +24,65,98,101,103,105,110,0,16,0,83,158,40,20,95,114,71,35,37,100,115, +45,104,101,108,112,101,114,1,29,2,11,11,10,10,10,33,80,158,33,33,20, +98,159,33,16,6,30,3,2,2,1,20,108,105,115,116,45,62,105,109,109,117, +116,97,98,108,101,45,108,105,115,116,4,254,1,30,5,2,2,72,103,101,116, +45,115,116,120,45,105,110,102,111,6,254,1,30,7,73,35,37,115,116,114,117, +99,116,45,105,110,102,111,8,72,115,116,114,117,99,116,45,105,110,102,111,63, +9,5,30,10,2,8,79,115,116,114,117,99,116,45,105,110,102,111,45,116,121, +112,101,45,105,100,11,4,30,12,2,8,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,13,0,30,14,2, +8,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,15,2,16,0,11,11,16,1,2,4,34,11,16,1,2,6, +16,1,11,16,1,2,6,34,34,9,94,83,159,33,93,80,159,33,33,34,89, +162,33,34,39,2,4,223,0,28,248,22,57,194,9,249,22,56,248,22,52,196, +248,80,159,36,33,35,248,22,53,197,83,159,33,93,80,159,33,34,34,89,162, +33,37,8,31,2,6,223,0,27,28,197,247,22,48,11,27,28,198,89,162,33, +34,39,62,113,115,16,223,1,28,193,249,22,59,194,249,22,59,72,113,117,111, +116,101,45,115,121,110,116,97,120,17,197,11,22,7,27,28,197,249,22,252,82, +3,199,32,18,89,162,41,33,33,9,222,11,11,87,94,28,197,28,28,248,80, +158,37,35,193,248,22,252,9,2,248,80,158,38,36,194,10,251,22,252,39,2, +11,28,248,80,158,41,35,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,252,184,1,6,32,32,112,97, @@ -351,1100 +361,1162 @@ 100,101,102,105,110,101,100,126,97,28,198,249,22,252,184,1,6,43,43,32,40, 126,97,32,100,111,101,115,32,110,111,116,32,110,97,109,101,32,115,116,114,117, 99,116,32,116,121,112,101,32,105,110,102,111,114,109,97,116,105,111,110,41,248, -22,210,23,15,6,0,0,201,202,12,12,249,22,7,28,194,248,80,158,39,35, -195,11,28,201,91,159,37,11,90,161,34,32,11,28,199,249,22,7,249,22,2, -205,248,80,158,48,36,204,249,22,2,205,248,80,158,48,37,204,249,22,7,9, -9,90,161,33,34,11,248,22,88,23,15,90,161,33,35,11,28,23,15,89,162, -32,33,35,64,119,114,97,112,20,222,249,22,51,74,108,105,115,116,45,105,109, -109,117,116,97,98,108,101,21,194,22,7,90,161,33,36,11,28,23,15,89,162, -32,33,40,70,116,111,116,97,108,45,119,114,97,112,22,223,10,250,22,59,63, -108,101,116,23,248,22,59,249,22,61,198,21,93,93,1,22,115,121,110,116,97, -120,45,108,111,99,97,108,45,99,101,114,116,105,102,105,101,114,24,196,22,7, -248,197,248,197,253,22,60,248,23,18,248,22,52,23,24,248,23,18,248,22,78, -23,24,248,23,18,248,22,87,23,24,248,204,248,80,159,53,32,34,249,22,65, -249,22,2,23,23,248,23,23,23,17,204,248,204,248,80,159,53,32,34,249,22, -65,249,22,2,23,23,28,248,22,57,23,17,9,248,23,23,248,22,53,23,18, -205,28,23,21,248,23,18,23,22,10,11,97,68,35,37,107,101,114,110,101,108, -25,65,35,37,115,116,120,26,71,35,37,113,113,45,97,110,100,45,111,114,27, -66,35,37,99,111,110,100,28,2,8,9,0}; - EVAL_ONE_SIZED_STR((char *)expr, 1061); +22,210,206,6,0,0,200,201,12,12,249,22,7,28,194,248,80,158,39,36,195, +11,28,200,91,159,38,11,90,161,35,33,11,28,199,249,22,7,249,22,2,204, +248,80,158,48,37,204,249,22,2,204,248,80,158,48,38,204,249,22,7,9,9, +90,161,34,35,11,248,22,88,206,90,161,34,36,11,28,206,32,19,89,162,33, +34,36,64,119,114,97,112,20,222,249,22,51,74,108,105,115,116,45,105,109,109, +117,116,97,98,108,101,21,194,22,7,90,161,34,37,11,28,206,89,162,33,34, +41,70,116,111,116,97,108,45,119,114,97,112,22,223,9,250,22,59,63,108,101, +116,23,248,22,59,249,22,61,198,21,93,93,1,22,115,121,110,116,97,120,45, +108,111,99,97,108,45,99,101,114,116,105,102,105,101,114,24,196,22,7,248,197, +248,197,253,22,60,248,23,17,248,22,52,23,23,248,23,17,248,22,78,23,23, +248,23,17,248,22,87,23,23,248,204,248,80,159,53,33,35,249,22,65,249,22, +2,23,22,248,32,25,89,162,33,34,43,71,101,118,101,114,121,45,111,116,104, +101,114,26,222,27,9,28,248,22,57,194,192,28,248,22,57,248,22,53,195,249, +22,51,248,22,52,196,194,27,248,22,80,195,27,249,22,51,248,22,52,198,196, +28,248,22,57,194,192,28,248,22,57,248,22,53,195,249,22,51,248,22,52,196, +194,249,32,27,89,162,33,35,44,64,108,111,111,112,28,222,28,248,22,57,193, +193,28,248,22,57,248,22,53,194,249,22,51,248,22,52,195,195,27,248,22,80, +194,27,249,22,51,248,22,52,197,197,28,248,22,57,194,192,28,248,22,57,248, +22,53,195,249,22,51,248,22,52,196,194,27,248,22,80,195,27,249,22,51,248, +22,52,198,196,28,248,22,57,194,192,28,248,22,57,248,22,53,195,249,22,51, +248,22,52,196,194,249,2,27,248,22,80,196,249,22,51,248,22,52,198,196,248, +22,80,196,249,22,51,248,22,52,198,196,23,17,204,248,204,248,80,159,53,33, +35,249,22,65,249,22,2,23,22,28,248,22,57,23,17,9,248,2,25,248,22, +53,23,18,205,28,23,20,248,23,17,23,21,10,11,97,68,35,37,107,101,114, +110,101,108,29,65,35,37,115,116,120,30,71,35,37,113,113,45,97,110,100,45, +111,114,31,66,35,37,99,111,110,100,32,2,8,9,0}; + EVAL_ONE_SIZED_STR((char *)expr, 1127); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,3,51,53,50,102,252,162,11,159,32,20,98,158,16,1,20,24,65,98, -101,103,105,110,0,16,0,83,158,39,20,95,114,74,35,37,100,101,102,105,110, -101,45,101,116,45,97,108,1,29,2,11,11,10,10,10,32,80,158,32,32,20, -98,158,16,0,16,0,11,11,16,0,32,11,16,6,66,108,101,116,47,101,99, -3,74,45,100,101,102,105,110,101,45,115,121,110,116,97,120,4,66,117,110,108, -101,115,115,5,73,100,101,102,105,110,101,45,115,116,114,117,99,116,6,64,119, -104,101,110,7,67,45,100,101,102,105,110,101,8,16,6,11,11,11,11,11,11, -16,6,2,3,2,4,2,5,2,6,2,7,2,8,32,38,97,16,5,94,2, -8,2,4,27,20,15,159,33,32,37,27,89,162,32,33,35,69,109,107,45,100, -101,102,105,110,101,9,224,2,1,89,162,32,33,51,9,225,1,0,2,27,248, -80,158,36,32,197,27,248,80,158,37,33,194,28,248,80,158,37,34,193,250,22, -209,198,250,22,61,200,248,22,59,199,249,80,158,44,35,248,80,158,45,36,248, -80,158,46,32,203,9,200,27,248,80,158,38,32,195,250,22,209,20,15,159,40, -33,37,250,22,59,201,248,22,59,248,80,158,45,33,201,250,22,61,66,108,97, -109,98,100,97,10,248,80,158,47,32,203,249,80,158,48,35,248,80,158,49,36, -204,9,201,249,22,7,248,195,20,15,159,37,34,37,248,195,20,15,159,37,35, -37,38,20,98,158,16,5,30,11,65,35,37,115,116,120,12,67,115,116,120,45, -99,100,114,13,6,30,14,2,12,67,115,116,120,45,99,97,114,15,5,30,16, -2,12,71,105,100,101,110,116,105,102,105,101,114,63,17,2,30,18,71,35,37, -113,113,45,97,110,100,45,111,114,19,69,113,113,45,97,112,112,101,110,100,20, -0,30,21,2,12,69,115,116,120,45,62,108,105,115,116,22,4,16,4,18,16, -2,97,64,104,101,114,101,23,37,97,35,10,32,11,16,12,2,3,2,2,2, -4,2,2,2,5,2,2,2,6,2,2,2,7,2,2,2,8,2,2,98,34, -10,33,11,97,159,71,35,37,100,115,45,104,101,108,112,101,114,24,9,11,159, -73,35,37,115,116,114,117,99,116,45,105,110,102,111,25,9,11,159,66,35,37, -99,111,110,100,26,9,11,159,2,19,9,11,159,2,12,9,11,16,0,96,33, -8,254,1,11,16,0,9,18,103,2,23,44,35,34,33,16,4,43,11,2,23, -3,1,7,101,110,118,50,51,51,56,27,16,4,42,11,64,98,97,115,101,28, -3,1,7,101,110,118,50,51,52,48,29,16,4,41,11,64,99,111,100,101,30, -3,1,7,101,110,118,50,51,52,49,31,16,4,40,11,64,98,111,100,121,32, -3,1,7,101,110,118,50,51,52,50,33,16,4,39,11,65,102,105,114,115,116, -34,3,1,7,101,110,118,50,51,52,51,35,16,4,38,11,65,112,98,111,100, -121,36,3,1,7,101,110,118,50,51,52,52,37,18,16,2,99,73,100,101,102, -105,110,101,45,118,97,108,117,101,115,38,46,35,34,33,43,16,4,45,11,2, -9,3,1,7,101,110,118,50,51,51,57,39,9,18,16,2,158,75,100,101,102, -105,110,101,45,115,121,110,116,97,120,101,115,40,46,9,11,16,5,93,2,7, -89,162,32,33,45,9,223,0,27,248,22,216,195,28,28,192,249,22,183,248,22, -64,195,34,11,250,22,209,20,15,159,36,32,34,250,22,59,20,15,159,39,33, -34,248,80,158,40,32,248,80,158,41,33,202,249,22,61,20,15,159,41,34,34, -248,80,158,42,33,248,80,158,43,33,204,197,250,22,252,39,2,11,6,10,10, -98,97,100,32,115,121,110,116,97,120,197,32,20,98,158,16,2,2,14,2,11, -16,3,18,99,2,23,49,35,34,33,16,4,48,11,61,120,41,3,1,7,101, -110,118,50,51,52,54,42,16,4,47,11,61,108,43,3,1,7,101,110,118,50, -51,52,55,44,18,158,62,105,102,45,49,18,158,2,0,49,11,16,5,93,2, -5,89,162,32,33,45,9,223,0,27,248,22,216,195,28,28,192,249,22,183,248, -22,64,195,34,11,250,22,209,20,15,159,36,32,32,251,22,59,20,15,159,40, -33,32,248,22,78,200,20,15,159,40,34,32,249,22,61,20,15,159,42,35,32, -248,22,80,202,197,250,22,252,39,2,11,6,10,10,98,97,100,32,115,121,110, -116,97,120,197,32,20,98,158,16,0,16,4,18,99,2,23,52,35,34,33,16, -4,51,11,2,41,3,1,7,101,110,118,50,51,52,57,46,16,4,50,11,2, -43,3,1,7,101,110,118,50,51,53,48,47,18,158,2,45,52,18,158,93,158, -64,118,111,105,100,48,52,52,18,158,2,0,52,11,16,5,93,2,3,89,162, -32,33,48,9,223,0,27,248,22,216,195,28,28,192,28,249,22,183,248,22,64, -195,34,248,80,158,34,32,248,22,78,194,11,11,27,248,22,78,194,27,248,80, -158,36,33,248,80,158,37,33,198,250,22,209,20,15,159,38,32,36,249,22,59, -67,99,97,108,108,47,101,99,49,250,22,61,2,10,248,22,59,202,249,80,158, -45,34,248,80,158,46,35,203,9,199,250,22,252,39,2,11,6,10,10,98,97, -100,32,115,121,110,116,97,120,197,32,20,98,158,16,4,2,16,2,11,2,18, -2,21,16,1,18,100,2,23,56,35,34,33,16,4,55,11,2,30,3,1,7, -101,110,118,50,51,53,50,50,16,4,54,11,2,43,3,1,7,101,110,118,50, -51,53,51,51,16,6,53,11,63,118,97,114,52,65,101,120,112,114,115,53,3, -1,7,101,110,118,50,51,53,52,54,2,54,11,16,5,93,2,6,27,89,162, -32,36,53,69,109,97,107,101,45,99,111,114,101,55,223,1,250,22,59,70,108, -101,116,45,118,97,108,117,101,115,56,248,22,59,249,22,59,21,97,64,116,121, -112,101,57,65,109,97,107,101,114,58,64,112,114,101,100,59,66,97,99,99,101, -115,115,60,66,109,117,116,97,116,101,61,26,8,22,59,76,109,97,107,101,45, -115,116,114,117,99,116,45,116,121,112,101,62,249,22,59,65,113,117,111,116,101, -63,23,17,23,17,248,22,64,23,19,32,11,64,110,117,108,108,64,23,16,252, -22,61,66,118,97,108,117,101,115,65,2,57,2,58,2,59,249,80,158,42,32, -249,91,159,33,11,20,12,95,33,192,89,162,32,34,45,64,108,111,111,112,66, -223,0,28,248,22,57,194,9,250,22,61,251,22,59,1,26,109,97,107,101,45, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,53,50,46,49,105,252,176,11,159,33,20,98,159,33,16,1,20, +24,65,98,101,103,105,110,0,16,0,83,158,40,20,95,114,74,35,37,100,101, +102,105,110,101,45,101,116,45,97,108,1,29,2,11,11,10,10,10,33,80,158, +33,33,20,98,159,33,16,0,16,0,11,11,16,0,33,11,16,6,73,100,101, +102,105,110,101,45,115,116,114,117,99,116,3,66,108,101,116,47,101,99,4,67, +45,100,101,102,105,110,101,5,66,117,110,108,101,115,115,6,74,45,100,101,102, +105,110,101,45,115,121,110,116,97,120,7,64,119,104,101,110,8,16,6,11,11, +11,11,11,11,16,6,2,3,2,4,2,5,2,6,2,7,2,8,33,39,97, +16,5,94,2,5,2,7,27,20,15,159,34,33,38,27,89,162,33,34,36,69, +109,107,45,100,101,102,105,110,101,9,224,2,1,89,162,33,34,52,9,225,1, +0,2,27,248,80,158,37,33,197,27,248,80,158,38,34,194,28,248,80,158,38, +35,193,250,22,209,198,250,22,61,200,248,22,59,199,249,80,158,45,36,248,80, +158,46,37,248,80,158,47,33,203,9,200,27,248,80,158,39,33,195,250,22,209, +20,15,159,41,34,38,250,22,59,201,248,22,59,248,80,158,46,34,201,250,22, +61,66,108,97,109,98,100,97,10,248,80,158,48,33,203,249,80,158,49,36,248, +80,158,50,37,204,9,201,249,22,7,248,195,20,15,159,38,35,38,248,195,20, +15,159,38,36,38,38,20,98,159,33,16,5,30,11,65,35,37,115,116,120,12, +67,115,116,120,45,99,100,114,13,6,30,14,2,12,67,115,116,120,45,99,97, +114,15,5,30,16,2,12,71,105,100,101,110,116,105,102,105,101,114,63,17,2, +30,18,71,35,37,113,113,45,97,110,100,45,111,114,19,69,113,113,45,97,112, +112,101,110,100,20,0,30,21,2,12,69,115,116,120,45,62,108,105,115,116,22, +4,16,4,18,16,2,97,64,104,101,114,101,23,38,97,36,10,33,11,16,12, +2,3,2,2,2,4,2,2,2,5,2,2,2,6,2,2,2,7,2,2,2, +8,2,2,98,35,10,34,11,97,159,71,35,37,100,115,45,104,101,108,112,101, +114,24,9,11,159,73,35,37,115,116,114,117,99,116,45,105,110,102,111,25,9, +11,159,66,35,37,99,111,110,100,26,9,11,159,2,19,9,11,159,2,12,9, +11,16,0,96,34,8,254,1,11,16,0,9,18,103,2,23,45,36,35,34,16, +4,44,11,2,23,3,1,7,101,110,118,50,51,51,56,27,16,4,43,11,64, +98,97,115,101,28,3,1,7,101,110,118,50,51,52,48,29,16,4,42,11,64, +99,111,100,101,30,3,1,7,101,110,118,50,51,52,49,31,16,4,41,11,64, +98,111,100,121,32,3,1,7,101,110,118,50,51,52,50,33,16,4,40,11,65, +102,105,114,115,116,34,3,1,7,101,110,118,50,51,52,51,35,16,4,39,11, +65,112,98,111,100,121,36,3,1,7,101,110,118,50,51,52,52,37,18,16,2, +99,73,100,101,102,105,110,101,45,118,97,108,117,101,115,38,47,36,35,34,44, +16,4,46,11,2,9,3,1,7,101,110,118,50,51,51,57,39,9,18,16,2, +158,75,100,101,102,105,110,101,45,115,121,110,116,97,120,101,115,40,47,9,11, +16,5,93,2,8,89,162,33,34,46,9,223,0,27,248,22,216,195,28,28,192, +249,22,183,248,22,64,195,35,11,250,22,209,20,15,159,37,33,35,250,22,59, +20,15,159,40,34,35,248,80,158,41,33,248,80,158,42,34,202,249,22,61,20, +15,159,42,35,35,248,80,158,43,34,248,80,158,44,34,204,197,250,22,252,39, +2,11,6,10,10,98,97,100,32,115,121,110,116,97,120,197,33,20,98,159,33, +16,2,2,14,2,11,16,3,18,99,2,23,50,36,35,34,16,4,49,11,61, +120,41,3,1,7,101,110,118,50,51,52,54,42,16,4,48,11,61,108,43,3, +1,7,101,110,118,50,51,52,55,44,18,158,62,105,102,45,50,18,158,2,0, +50,11,16,5,93,2,6,89,162,33,34,46,9,223,0,27,248,22,216,195,28, +28,192,249,22,183,248,22,64,195,35,11,250,22,209,20,15,159,37,33,33,251, +22,59,20,15,159,41,34,33,248,22,78,200,20,15,159,41,35,33,249,22,61, +20,15,159,43,36,33,248,22,80,202,197,250,22,252,39,2,11,6,10,10,98, +97,100,32,115,121,110,116,97,120,197,33,20,98,159,33,16,0,16,4,18,99, +2,23,53,36,35,34,16,4,52,11,2,41,3,1,7,101,110,118,50,51,52, +57,46,16,4,51,11,2,43,3,1,7,101,110,118,50,51,53,48,47,18,158, +2,45,53,18,158,93,158,64,118,111,105,100,48,53,53,18,158,2,0,53,11, +16,5,93,2,4,89,162,33,34,49,9,223,0,27,248,22,216,195,28,28,192, +28,249,22,183,248,22,64,195,35,248,80,158,35,33,248,22,78,194,11,11,27, +248,22,78,194,27,248,80,158,37,34,248,80,158,38,34,198,250,22,209,20,15, +159,39,33,37,249,22,59,67,99,97,108,108,47,101,99,49,250,22,61,2,10, +248,22,59,202,249,80,158,46,35,248,80,158,47,36,203,9,199,250,22,252,39, +2,11,6,10,10,98,97,100,32,115,121,110,116,97,120,197,33,20,98,159,33, +16,4,2,16,2,11,2,18,2,21,16,1,18,100,2,23,57,36,35,34,16, +4,56,11,2,30,3,1,7,101,110,118,50,51,53,50,50,16,4,55,11,2, +43,3,1,7,101,110,118,50,51,53,51,51,16,6,54,11,63,118,97,114,52, +65,101,120,112,114,115,53,3,1,7,101,110,118,50,51,53,52,54,2,54,11, +16,5,93,2,3,27,89,162,33,37,54,69,109,97,107,101,45,99,111,114,101, +55,223,1,250,22,59,70,108,101,116,45,118,97,108,117,101,115,56,248,22,59, +249,22,59,21,97,64,116,121,112,101,57,65,109,97,107,101,114,58,64,112,114, +101,100,59,66,97,99,99,101,115,115,60,66,109,117,116,97,116,101,61,26,8, +22,59,76,109,97,107,101,45,115,116,114,117,99,116,45,116,121,112,101,62,249, +22,59,65,113,117,111,116,101,63,23,17,23,17,248,22,64,23,19,33,11,64, +110,117,108,108,64,23,16,252,22,61,66,118,97,108,117,101,115,65,2,57,2, +58,2,59,249,80,158,43,33,249,32,66,89,162,33,35,45,64,108,111,111,112, +67,222,28,248,22,57,193,9,250,22,61,251,22,59,1,26,109,97,107,101,45, 115,116,114,117,99,116,45,102,105,101,108,100,45,97,99,99,101,115,115,111,114, -67,2,60,201,249,22,59,2,63,248,22,52,203,251,22,59,1,25,109,97,107, +68,2,60,200,249,22,59,2,63,248,22,52,202,251,22,59,1,25,109,97,107, 101,45,115,116,114,117,99,116,45,102,105,101,108,100,45,109,117,116,97,116,111, -114,68,2,61,201,249,22,59,2,63,248,22,52,203,249,197,248,22,53,199,248, -22,170,200,23,16,32,9,89,162,32,33,8,31,9,224,1,0,87,94,28,248, -80,158,34,33,195,250,22,252,39,2,11,6,10,10,98,97,100,32,115,121,110, -116,97,120,197,12,27,248,80,158,35,34,248,80,158,36,35,197,27,89,162,33, -34,40,72,115,121,110,116,97,120,45,101,114,114,111,114,69,223,4,252,22,1, -22,252,39,2,11,198,197,199,27,89,162,32,34,47,78,98,117,105,108,100,45, -115,116,114,117,99,116,45,110,97,109,101,115,70,222,27,248,22,44,248,22,210, -195,27,249,22,2,22,44,249,22,2,22,210,199,249,22,2,22,42,249,22,65, -250,22,59,249,22,252,159,1,6,7,7,115,116,114,117,99,116,58,202,249,22, -252,159,1,6,5,5,109,97,107,101,45,202,249,22,252,159,1,202,6,1,1, -63,249,22,1,22,65,249,22,2,89,162,32,33,44,9,223,9,249,22,59,250, -22,252,159,1,197,6,1,1,45,198,252,22,252,159,1,6,4,4,115,101,116, -45,199,6,1,1,45,200,6,1,1,33,200,87,100,27,248,22,50,196,28,192, -192,248,195,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,36,196,28,192,192,248,195,6,18,18,105,108,108,101, -103,97,108,32,117,115,101,32,111,102,32,96,46,39,27,250,22,184,34,248,22, -64,199,35,28,192,192,248,195,6,21,21,119,114,111,110,103,32,110,117,109,98, -101,114,32,111,102,32,112,97,114,116,115,27,248,80,158,38,33,248,22,52,197, -28,192,192,27,28,248,80,158,39,37,248,22,52,198,28,248,80,158,39,33,248, -80,158,40,38,248,22,52,199,28,248,80,158,39,37,248,80,158,40,35,248,22, -52,199,28,248,80,158,39,33,248,80,158,40,38,248,80,158,41,35,248,22,52, -200,248,80,158,39,39,248,80,158,40,35,248,80,158,41,35,248,22,52,200,11, -11,11,11,28,192,192,248,196,6,55,55,102,105,114,115,116,32,112,97,114,116, -32,109,117,115,116,32,98,101,32,97,110,32,105,100,101,110,116,105,102,105,101, -114,32,111,114,32,112,97,105,114,32,111,102,32,105,100,101,110,116,105,102,105, -101,114,115,27,248,80,158,38,36,248,22,78,197,28,192,192,28,248,80,158,38, -37,248,22,78,197,248,195,6,41,41,105,108,108,101,103,97,108,32,117,115,101, -32,111,102,32,96,46,39,32,105,110,32,102,105,101,108,100,32,110,97,109,101, -32,115,101,113,117,101,110,99,101,248,195,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,32,33,38,9,224,6,3,27,248,80,158,35,33,196, -28,192,192,249,195,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,197,248,80,158,39,34,248, -22,78,198,28,249,22,71,247,22,252,83,3,21,93,70,101,120,112,114,101,115, -115,105,111,110,71,248,194,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,33,248,22,52,197,248,22,52,196,248,80, -158,38,38,248,22,52,197,27,248,80,158,39,34,248,22,78,198,27,28,248,22, -57,248,22,80,199,20,15,159,39,32,41,248,22,87,198,27,28,248,80,158,41, -33,248,22,52,200,11,248,80,158,41,38,248,80,158,42,35,248,22,52,201,27, -249,22,2,89,162,32,33,37,9,223,6,250,22,209,195,196,195,249,201,200,199, -91,159,34,11,90,161,34,32,11,251,80,158,47,40,23,16,199,198,10,27,250, -22,209,20,15,159,47,33,41,250,22,59,2,0,250,22,59,2,38,204,27,251, -23,25,23,21,28,23,19,69,105,110,115,112,101,99,116,111,114,72,11,23,15, -23,20,28,23,15,251,22,59,63,108,101,116,73,248,22,59,249,22,59,2,72, -23,22,21,95,2,45,96,2,45,2,72,94,63,110,111,116,74,94,70,105,110, -115,112,101,99,116,111,114,63,75,2,72,11,96,76,114,97,105,115,101,45,116, -121,112,101,45,101,114,114,111,114,76,94,2,63,2,6,6,15,15,105,110,115, -112,101,99,116,111,114,32,111,114,32,35,102,2,72,196,192,250,22,59,2,40, -248,22,59,23,17,203,23,16,28,196,250,22,218,195,75,100,105,115,97,112,112, -101,97,114,101,100,45,117,115,101,77,248,22,252,86,3,200,192,33,20,98,158, -16,9,2,18,2,16,2,21,2,11,30,78,2,12,69,115,116,120,45,108,105, -115,116,63,79,8,30,80,2,12,69,115,116,120,45,112,97,105,114,63,81,11, -2,14,30,82,2,12,69,115,116,120,45,110,117,108,108,63,83,10,30,84,2, -24,72,103,101,116,45,115,116,120,45,105,110,102,111,85,0,16,2,18,16,2, -158,93,101,77,99,117,114,114,101,110,116,45,105,110,115,112,101,99,116,111,114, -86,8,29,35,34,33,16,4,8,28,11,2,55,3,1,7,101,110,118,50,51, -53,54,87,16,4,59,11,63,115,116,120,88,3,1,7,101,110,118,50,51,54, -48,89,16,4,58,11,2,32,3,1,7,101,110,118,50,51,54,49,90,16,6, -57,11,2,69,2,70,3,1,7,101,110,118,50,51,54,50,91,2,91,8,29, -9,18,16,2,104,2,23,8,33,35,34,33,8,28,59,58,57,16,10,8,32, -11,64,110,97,109,101,92,71,102,105,101,108,100,45,110,97,109,101,115,93,2, -72,68,115,117,112,101,114,45,105,100,94,3,1,7,101,110,118,50,51,55,54, -95,2,95,2,95,2,95,16,4,8,31,11,73,100,101,102,105,110,101,100,45, -110,97,109,101,115,96,3,1,7,101,110,118,50,51,55,55,97,16,6,8,30, -11,76,115,117,112,101,114,45,105,100,47,115,116,114,117,99,116,58,98,68,115, -116,120,45,105,110,102,111,99,3,1,7,101,110,118,50,51,55,57,100,2,100, -9,11,9,93,68,35,37,107,101,114,110,101,108,101,98,2,101,2,12,2,19, -2,26,2,25,2,24,0}; - EVAL_ONE_SIZED_STR((char *)expr, 2988); +114,69,2,61,200,249,22,59,2,63,248,22,52,202,249,2,66,248,22,53,198, +248,22,170,199,23,16,33,9,89,162,33,34,8,29,9,224,1,0,87,94,28, +248,80,158,35,34,195,250,22,252,39,2,11,6,10,10,98,97,100,32,115,121, +110,116,97,120,197,12,27,248,80,158,36,35,248,80,158,37,36,197,87,100,27, +248,22,50,194,28,192,192,249,32,70,89,162,34,36,41,72,115,121,110,116,97, +120,45,101,114,114,111,114,71,222,252,22,1,22,252,39,2,11,198,197,199,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,37,37,194,28,192,192,249,2,70,198,6,18,18,105,108,108,101,103, +97,108,32,117,115,101,32,111,102,32,96,46,39,27,250,22,184,35,248,22,64, +197,36,28,192,192,249,2,70,198,6,21,21,119,114,111,110,103,32,110,117,109, +98,101,114,32,111,102,32,112,97,114,116,115,27,248,80,158,37,34,248,22,52, +195,28,192,192,27,28,248,80,158,38,38,248,22,52,196,28,248,80,158,38,34, +248,80,158,39,39,248,22,52,197,28,248,80,158,38,38,248,80,158,39,36,248, +22,52,197,28,248,80,158,38,34,248,80,158,39,39,248,80,158,40,36,248,22, +52,198,248,80,158,38,40,248,80,158,39,36,248,80,158,40,36,248,22,52,198, +11,11,11,11,28,192,192,249,2,70,199,6,55,55,102,105,114,115,116,32,112, +97,114,116,32,109,117,115,116,32,98,101,32,97,110,32,105,100,101,110,116,105, +102,105,101,114,32,111,114,32,112,97,105,114,32,111,102,32,105,100,101,110,116, +105,102,105,101,114,115,27,248,80,158,37,37,248,22,78,195,28,192,192,28,248, +80,158,37,38,248,22,78,195,249,2,70,198,6,41,41,105,108,108,101,103,97, +108,32,117,115,101,32,111,102,32,96,46,39,32,105,110,32,102,105,101,108,100, +32,110,97,109,101,32,115,101,113,117,101,110,99,101,249,2,70,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,33,34,40,9,224,4,5, +27,248,80,158,36,34,196,28,192,192,250,2,70,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,38,35,248,22,78,196,28,249,22,71,247,22,252,84,3, +21,93,70,101,120,112,114,101,115,115,105,111,110,72,249,2,70,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,37, +34,248,22,52,195,248,22,52,194,248,80,158,37,39,248,22,52,195,27,248,80, +158,38,35,248,22,78,196,27,28,248,22,57,248,22,80,197,20,15,159,38,33, +42,248,22,87,196,27,28,248,80,158,40,34,248,22,52,198,11,248,80,158,40, +39,248,80,158,41,36,248,22,52,199,27,249,22,2,89,162,33,34,38,9,223, +6,250,22,209,195,196,195,249,32,73,89,162,33,35,46,78,98,117,105,108,100, +45,115,116,114,117,99,116,45,110,97,109,101,115,74,222,27,248,22,44,248,22, +210,195,27,249,22,2,22,44,249,22,2,22,210,199,249,22,2,22,42,249,22, +65,250,22,59,249,22,252,159,1,6,7,7,115,116,114,117,99,116,58,202,249, +22,252,159,1,6,5,5,109,97,107,101,45,202,249,22,252,159,1,202,6,1, +1,63,249,22,1,22,65,249,22,2,89,162,33,34,42,9,223,9,249,22,59, +250,22,252,159,1,197,6,1,1,45,198,252,22,252,159,1,6,4,4,115,101, +116,45,199,6,1,1,45,200,6,1,1,33,200,200,199,91,159,35,11,90,161, +35,33,11,251,80,158,46,41,206,199,198,10,27,250,22,209,20,15,159,46,34, +42,250,22,59,2,0,250,22,59,2,38,204,27,251,23,23,23,21,28,23,19, +69,105,110,115,112,101,99,116,111,114,75,11,23,15,23,20,28,23,15,251,22, +59,63,108,101,116,76,248,22,59,249,22,59,2,75,23,22,21,95,2,45,96, +2,45,2,75,94,63,110,111,116,77,94,70,105,110,115,112,101,99,116,111,114, +63,78,2,75,11,96,76,114,97,105,115,101,45,116,121,112,101,45,101,114,114, +111,114,79,94,2,63,2,3,6,15,15,105,110,115,112,101,99,116,111,114,32, +111,114,32,35,102,2,75,196,192,250,22,59,2,40,248,22,59,23,17,203,206, +28,196,250,22,218,195,75,100,105,115,97,112,112,101,97,114,101,100,45,117,115, +101,80,248,22,252,87,3,200,192,34,20,98,159,33,16,9,2,18,2,16,2, +21,2,11,30,81,2,12,69,115,116,120,45,108,105,115,116,63,82,8,30,83, +2,12,69,115,116,120,45,112,97,105,114,63,84,11,2,14,30,85,2,12,69, +115,116,120,45,110,117,108,108,63,86,10,30,87,2,24,72,103,101,116,45,115, +116,120,45,105,110,102,111,88,0,16,2,18,16,2,158,93,101,77,99,117,114, +114,101,110,116,45,105,110,115,112,101,99,116,111,114,89,8,29,36,35,34,16, +4,8,28,11,2,55,3,1,7,101,110,118,50,51,53,54,90,16,4,8,27, +11,63,115,116,120,91,3,1,7,101,110,118,50,51,54,48,92,16,4,59,11, +2,32,3,1,7,101,110,118,50,51,54,49,93,16,6,58,11,2,71,2,74, +3,1,7,101,110,118,50,51,54,50,94,2,94,8,29,9,18,16,2,104,2, +23,8,33,36,35,34,8,28,8,27,59,58,16,10,8,32,11,64,110,97,109, +101,95,71,102,105,101,108,100,45,110,97,109,101,115,96,2,75,68,115,117,112, +101,114,45,105,100,97,3,1,7,101,110,118,50,51,55,54,98,2,98,2,98, +2,98,16,4,8,31,11,73,100,101,102,105,110,101,100,45,110,97,109,101,115, +99,3,1,7,101,110,118,50,51,55,55,100,16,6,8,30,11,76,115,117,112, +101,114,45,105,100,47,115,116,114,117,99,116,58,101,68,115,116,120,45,105,110, +102,111,102,3,1,7,101,110,118,50,51,55,57,103,2,103,9,11,9,93,68, +35,37,107,101,114,110,101,108,104,98,2,104,2,12,2,19,2,26,2,25,2, +24,0}; + EVAL_ONE_SIZED_STR((char *)expr, 3004); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,3,51,53,50,18,252,4,1,159,32,20,98,158,16,1,20,24,65,98, -101,103,105,110,0,16,0,83,158,39,20,95,114,74,35,37,115,109,97,108,108, -45,115,99,104,101,109,101,1,29,2,11,11,10,10,10,32,80,158,32,32,20, -98,158,16,0,16,0,11,11,16,0,32,11,16,10,70,113,117,97,115,105,113, -117,111,116,101,3,66,108,101,116,47,101,99,4,63,97,110,100,5,73,100,101, -102,105,110,101,45,115,116,114,117,99,116,6,64,99,111,110,100,7,67,45,100, -101,102,105,110,101,8,74,45,100,101,102,105,110,101,45,115,121,110,116,97,120, -9,66,117,110,108,101,115,115,10,62,111,114,11,64,119,104,101,110,12,16,10, -71,35,37,113,113,45,97,110,100,45,111,114,13,74,35,37,100,101,102,105,110, -101,45,101,116,45,97,108,14,2,13,2,14,66,35,37,99,111,110,100,15,2, -14,2,14,2,14,2,13,2,14,16,10,2,3,2,4,2,5,2,6,2,7, -2,8,2,9,2,10,2,11,2,12,32,42,9,9,97,68,35,37,107,101,114, -110,101,108,16,65,35,37,115,116,120,17,2,13,2,15,2,14,9,0}; - EVAL_ONE_SIZED_STR((char *)expr, 270); + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,53,50,46,49,18,252,6,1,159,33,20,98,159,33,16,1,20, +24,65,98,101,103,105,110,0,16,0,83,158,40,20,95,114,74,35,37,115,109, +97,108,108,45,115,99,104,101,109,101,1,29,2,11,11,10,10,10,33,80,158, +33,33,20,98,159,33,16,0,16,0,11,11,16,0,33,11,16,10,70,113,117, +97,115,105,113,117,111,116,101,3,63,97,110,100,4,67,45,100,101,102,105,110, +101,5,66,117,110,108,101,115,115,6,64,99,111,110,100,7,66,108,101,116,47, +101,99,8,73,100,101,102,105,110,101,45,115,116,114,117,99,116,9,74,45,100, +101,102,105,110,101,45,115,121,110,116,97,120,10,62,111,114,11,64,119,104,101, +110,12,16,10,71,35,37,113,113,45,97,110,100,45,111,114,13,2,13,74,35, +37,100,101,102,105,110,101,45,101,116,45,97,108,14,2,14,66,35,37,99,111, +110,100,15,2,14,2,14,2,14,2,13,2,14,16,10,2,3,2,4,2,5, +2,6,2,7,2,8,2,9,2,10,2,11,2,12,33,43,9,9,97,68,35, +37,107,101,114,110,101,108,16,65,35,37,115,116,120,17,2,13,2,15,2,14, +9,0}; + EVAL_ONE_SIZED_STR((char *)expr, 274); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,3,51,53,50,181,252,166,37,159,32,20,98,158,16,1,20,24,65,98, -101,103,105,110,0,16,0,83,158,39,20,95,114,64,35,37,115,99,1,29,2, -11,11,10,10,10,48,80,158,32,32,20,98,158,16,37,30,3,2,2,64,46, -46,46,63,4,254,1,30,5,2,2,68,115,116,120,45,109,101,109,113,6,254, -1,30,7,2,2,72,115,116,120,45,109,101,109,113,45,112,111,115,8,254,1, -30,9,2,2,73,115,116,120,45,109,101,109,113,42,45,112,111,115,10,254,1, -30,11,2,2,76,112,105,99,107,45,115,112,101,99,105,102,105,99,105,116,121, -12,254,1,30,13,2,2,1,27,109,97,107,101,45,109,97,116,99,104,38,101, -110,118,47,101,120,116,114,97,99,116,45,118,97,114,115,14,254,1,30,15,2, -2,69,101,108,108,105,112,115,105,115,63,16,254,1,30,17,65,35,37,115,116, -120,18,69,115,116,120,45,110,117,108,108,63,19,10,30,20,2,18,67,115,116, -120,45,99,100,114,21,6,30,22,2,18,67,115,116,120,45,99,97,114,23,5, -30,24,2,2,1,21,103,101,116,45,101,108,108,105,112,115,105,115,45,110,101, -115,116,105,110,103,115,25,254,1,30,26,2,2,76,102,108,97,116,116,101,110, -45,110,101,115,116,105,110,103,115,27,254,1,30,28,2,2,65,97,112,112,45, -101,29,254,1,30,30,2,18,69,115,116,120,45,112,97,105,114,63,31,11,30, -32,2,2,63,97,112,112,33,254,1,30,34,2,2,70,97,112,112,45,97,112, -112,101,110,100,35,254,1,30,36,2,18,71,105,100,101,110,116,105,102,105,101, -114,63,37,2,30,38,2,18,71,115,116,120,45,118,101,99,116,111,114,63,39, -15,30,40,71,35,37,113,113,45,97,110,100,45,111,114,41,69,113,113,45,97, -112,112,101,110,100,42,0,30,43,2,2,74,109,97,107,101,45,109,97,116,99, -104,38,101,110,118,44,254,1,30,45,2,2,74,103,101,116,45,109,97,116,99, -104,45,118,97,114,115,46,254,1,30,47,2,2,72,109,97,107,101,45,112,101, -120,112,97,110,100,48,254,1,30,49,2,2,76,101,108,108,105,112,115,105,115, -45,115,117,98,45,101,110,118,50,254,1,30,51,2,2,72,101,120,116,114,97, -99,116,45,118,97,114,115,52,254,1,30,53,2,2,74,97,112,112,108,121,45, -108,105,115,116,45,114,101,102,54,254,1,30,55,2,2,70,97,112,112,108,121, -45,116,111,45,114,56,254,1,30,57,2,2,70,97,112,112,108,121,45,99,111, -110,115,58,254,1,30,59,2,2,77,99,104,101,99,107,45,110,111,116,45,112, -97,116,116,101,114,110,60,254,1,30,61,2,2,1,23,109,117,108,116,105,112, -108,101,45,101,108,108,105,112,115,105,115,45,118,97,114,115,63,62,254,1,30, -63,2,2,72,110,111,45,101,108,108,105,112,115,101,115,63,64,254,1,30,65, -2,2,1,21,115,116,114,117,99,116,58,115,121,110,116,97,120,45,109,97,112, -112,105,110,103,66,254,1,30,67,2,2,79,109,97,107,101,45,115,121,110,116, -97,120,45,109,97,112,112,105,110,103,68,254,1,30,69,2,2,75,115,121,110, -116,97,120,45,109,97,112,112,105,110,103,63,70,254,1,30,71,2,2,1,20, -115,121,110,116,97,120,45,109,97,112,112,105,110,103,45,100,101,112,116,104,72, -254,1,30,73,2,2,1,25,115,101,116,45,115,121,110,116,97,120,45,109,97, -112,112,105,110,103,45,100,101,112,116,104,33,74,254,1,30,75,2,2,1,21, -115,121,110,116,97,120,45,109,97,112,112,105,110,103,45,118,97,108,118,97,114, -76,254,1,30,77,2,2,1,26,115,101,116,45,115,121,110,116,97,120,45,109, -97,112,112,105,110,103,45,118,97,108,118,97,114,33,78,254,1,16,2,18,98, -63,46,46,46,79,38,98,36,10,32,11,94,159,74,35,37,115,109,97,108,108, -45,115,99,104,101,109,101,80,9,11,159,2,18,9,11,16,62,2,54,2,2, -2,33,2,2,2,78,2,2,2,60,2,2,2,12,2,2,2,68,2,2,2, -72,2,2,2,52,2,2,2,50,2,2,2,14,2,2,2,4,2,2,2,6, -2,2,2,29,2,2,2,56,2,2,2,74,2,2,2,64,2,2,2,46,2, -2,2,16,2,2,2,25,2,2,2,58,2,2,2,48,2,2,2,62,2,2, -2,44,2,2,2,8,2,2,74,115,121,110,116,97,120,45,109,97,112,112,105, -110,103,81,2,2,2,27,2,2,2,76,2,2,2,35,2,2,2,66,2,2, -2,70,2,2,2,10,2,2,96,35,33,11,16,0,96,34,8,254,1,11,16, -0,16,4,33,11,61,115,82,3,1,7,101,110,118,50,51,56,53,83,18,103, -2,79,45,36,35,34,16,10,44,11,61,112,84,67,112,114,111,116,111,45,114, -85,61,107,86,64,100,101,115,116,87,3,1,7,101,110,118,50,52,54,52,88, -2,88,2,88,2,88,16,6,43,11,68,101,120,112,97,110,100,101,114,89,63, -116,111,112,90,3,1,7,101,110,118,50,52,54,56,91,3,1,7,101,110,118, -50,52,54,54,92,16,6,42,11,2,89,2,90,2,91,2,92,16,10,41,11, -69,108,111,99,97,108,45,116,111,112,93,73,117,115,101,45,101,108,108,105,112, -115,101,115,63,94,72,117,115,101,45,116,97,105,108,45,112,111,115,95,65,104, -97,115,104,33,96,3,1,7,101,110,118,50,52,55,48,97,2,97,2,97,2, -97,16,10,40,11,66,112,45,104,101,97,100,98,68,101,108,45,99,111,117,110, -116,99,66,114,101,115,116,45,112,100,67,108,97,115,116,45,101,108,101,3,1, -7,101,110,118,50,52,55,49,102,2,102,2,102,2,102,16,4,39,11,64,108, -111,111,112,103,3,1,7,101,110,118,50,52,55,52,104,11,11,16,21,2,4, -2,33,2,35,2,29,2,58,2,54,2,56,2,60,2,50,2,16,2,52,2, -27,2,25,2,14,2,62,2,12,2,74,2,78,2,66,2,6,2,10,53,16, -9,10,10,10,10,10,10,10,10,10,16,9,2,46,2,44,2,48,2,68,2, -64,2,8,2,72,2,76,2,70,16,9,11,11,11,11,11,11,11,11,11,16, -9,2,46,2,44,2,48,2,68,2,64,2,8,2,72,2,76,2,70,41,41, -93,16,5,93,2,81,27,247,22,252,88,3,253,22,60,248,199,20,15,159,40, -32,32,248,199,20,15,159,40,33,32,248,199,20,15,159,40,34,32,249,22,60, -248,201,20,15,159,42,35,32,248,201,20,15,159,42,36,32,249,22,60,248,201, -20,15,159,42,37,32,248,201,20,15,159,42,38,32,10,43,20,98,158,16,0, -16,7,18,97,2,66,46,36,35,34,18,158,2,68,46,18,158,2,70,46,18, -158,2,76,46,18,158,2,72,46,18,158,2,78,46,18,158,2,74,46,11,116, -83,159,32,93,80,159,32,32,33,89,162,32,33,36,2,4,223,0,28,248,22, -41,248,22,210,195,249,22,223,195,20,15,159,34,32,8,37,11,83,159,32,93, -80,159,32,33,33,89,162,32,34,36,2,6,222,249,22,5,89,162,32,33,36, -9,223,2,28,248,22,206,194,249,22,221,194,195,11,195,83,159,32,93,80,159, -32,34,33,89,162,32,34,37,2,8,222,249,91,159,33,11,20,12,95,33,192, -89,162,32,34,44,2,103,224,3,0,28,248,22,57,196,11,28,28,248,22,206, -248,22,52,197,249,22,221,195,248,22,52,198,11,194,27,248,22,170,196,27,248, -22,53,198,28,248,22,57,193,11,28,28,248,22,206,248,22,52,194,249,22,221, -197,248,22,52,195,11,193,27,248,22,170,195,27,248,22,53,195,28,248,22,57, -193,11,28,28,248,22,206,248,22,52,194,249,22,221,199,248,22,52,195,11,193, -249,198,248,22,170,196,248,22,53,195,32,195,83,159,32,93,80,159,32,35,33, -89,162,32,34,37,2,10,222,249,91,159,33,11,20,12,95,33,192,89,162,32, -34,40,2,103,224,3,0,28,248,22,57,196,11,28,249,22,221,195,248,91,159, -33,11,20,12,95,33,192,89,162,32,33,39,2,103,223,0,28,248,22,206,194, -193,27,248,22,52,195,28,248,22,206,193,192,27,248,22,52,194,28,248,22,206, -193,192,27,248,22,52,194,28,248,22,206,193,192,248,196,248,22,52,194,248,22, -52,199,194,249,194,248,22,170,197,248,22,53,198,32,195,83,159,32,93,80,159, -32,36,33,89,162,32,34,36,2,12,222,28,249,22,252,11,2,194,195,248,22, -59,193,249,22,59,194,195,83,159,32,93,80,159,32,37,33,89,162,32,38,50, -2,14,223,0,91,159,33,11,20,12,95,33,91,159,35,11,90,161,35,32,11, -252,200,204,204,10,10,11,28,201,27,247,22,110,87,94,248,91,159,33,11,20, -12,95,33,192,89,162,32,33,43,2,103,226,9,8,2,0,28,248,22,206,197, -27,250,22,116,197,248,22,210,201,9,87,94,28,249,22,5,89,162,32,33,36, -9,223,7,249,22,221,195,194,194,251,22,252,39,2,248,22,210,200,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,200,201,12,250,22,115,197,248,22,210,201,249, -22,51,202,197,28,248,22,50,197,87,94,248,193,248,22,52,198,248,193,248,22, -53,198,12,194,193,28,249,22,252,13,2,194,21,95,66,108,97,109,98,100,97, -105,93,61,101,106,2,106,28,202,21,95,2,105,94,2,106,79,109,111,100,117, -108,101,45,105,100,101,110,116,105,102,105,101,114,61,63,107,2,106,21,95,2, -105,93,2,106,2,106,250,22,59,2,105,249,22,61,2,106,249,80,158,43,50, -28,23,17,21,93,2,107,9,9,248,80,159,40,44,34,196,89,162,32,37,8, -46,63,109,38,101,108,228,1,6,5,3,2,0,28,28,200,28,248,80,158,38, -45,199,27,248,80,158,39,40,200,28,248,80,158,39,45,193,28,27,248,80,158, -40,41,194,28,248,22,41,248,22,210,194,249,22,223,194,20,15,159,41,32,8, -37,11,248,22,252,9,2,27,248,80,158,41,41,202,28,248,22,41,248,22,210, -194,249,22,223,194,20,15,159,42,32,8,37,11,11,11,11,11,28,248,80,158, -38,39,248,80,158,39,40,248,80,158,40,40,201,27,248,80,158,39,41,200,27, -249,80,159,41,42,34,195,199,91,159,35,11,90,161,35,32,11,252,202,201,201, -10,11,11,28,201,250,22,7,249,22,2,22,59,200,11,11,27,249,80,159,45, -43,34,198,89,162,40,33,33,9,222,10,250,22,7,250,22,59,2,105,21,93, -2,106,251,22,61,62,105,102,109,21,94,69,115,116,120,45,108,105,115,116,63, -110,2,106,27,248,80,159,55,44,34,205,28,249,22,252,13,2,194,21,94,64, -108,105,115,116,111,2,106,28,23,26,21,94,69,115,116,120,45,62,108,105,115, -116,112,2,106,21,94,2,111,94,2,112,2,106,28,248,22,57,204,250,22,61, -66,97,110,100,109,97,112,113,250,22,59,2,105,21,93,2,106,198,21,93,94, -2,112,2,106,250,22,59,66,108,101,116,47,101,99,114,63,101,115,99,115,250, -22,59,63,108,101,116,116,248,22,59,249,22,59,61,108,117,250,22,61,63,109, -97,112,118,250,22,59,2,105,21,93,2,106,250,22,61,73,115,116,120,45,99, -104,101,99,107,47,101,115,99,119,23,18,21,93,2,115,21,93,94,2,112,2, -106,251,22,59,2,109,21,94,65,110,117,108,108,63,120,2,117,249,22,59,65, -113,117,111,116,101,121,27,249,22,2,89,97,40,33,33,9,222,23,26,28,23, -39,249,22,1,22,61,194,192,249,22,61,28,23,38,71,115,116,120,45,114,111, -116,97,116,101,42,122,70,115,116,120,45,114,111,116,97,116,101,123,21,93,2, -117,21,93,11,197,11,27,249,22,59,248,80,158,41,41,202,248,80,158,41,41, -248,80,158,42,40,203,27,248,80,158,40,40,248,80,158,41,40,202,91,159,34, -11,90,161,34,32,11,249,91,159,33,11,20,12,95,33,192,89,162,32,34,43, -2,103,226,12,9,8,0,28,248,80,158,36,39,197,249,22,7,199,10,28,248, -80,158,36,45,197,87,94,28,27,248,80,158,37,41,198,28,248,22,41,248,22, -210,194,249,22,223,194,20,15,159,38,32,8,37,11,251,22,252,39,2,248,22, -210,198,6,54,54,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,32,40,102,111,108,108,111,119, -115,32,111,116,104,101,114,32,101,108,108,105,112,115,101,115,41,198,248,80,158, -40,41,201,12,249,194,248,80,158,38,40,199,248,22,170,200,249,22,7,248,22, -170,200,11,196,32,91,159,41,11,90,161,35,32,11,28,23,17,252,23,18,23, -17,23,17,23,26,11,11,250,22,7,11,11,11,90,161,35,35,11,252,23,18, -23,16,23,25,23,26,23,27,10,90,161,35,38,11,28,23,17,250,22,7,195, -196,11,252,23,18,23,17,23,17,23,26,28,23,27,248,22,252,9,2,202,11, -11,28,23,17,250,22,7,249,22,65,203,200,11,11,250,22,7,250,22,59,2, -105,21,93,2,106,250,22,59,71,108,101,116,42,45,118,97,108,117,101,115,124, -248,22,59,249,22,59,21,95,69,112,114,101,45,105,116,101,109,115,125,70,112, -111,115,116,45,105,116,101,109,115,126,63,111,107,63,127,251,22,59,74,115,112, -108,105,116,45,115,116,120,45,108,105,115,116,128,2,106,23,25,23,26,251,22, -61,2,109,2,127,27,27,249,80,159,8,35,46,34,23,23,2,125,27,249,80, -159,8,36,46,34,23,21,2,126,28,23,23,249,80,159,8,36,47,34,195,194, -251,22,61,2,109,197,196,21,93,11,28,23,19,28,23,37,250,22,59,2,116, -21,93,94,63,99,97,112,129,96,2,109,94,67,115,121,110,116,97,120,63,130, -2,106,2,106,2,129,195,250,22,59,2,116,21,93,94,2,129,2,106,195,192, -21,93,11,28,202,202,199,28,200,23,26,11,28,248,80,158,38,45,199,27,248, -80,158,39,41,200,28,28,201,28,248,22,41,248,22,210,194,249,22,223,194,20, -15,159,40,32,8,37,11,11,28,28,248,80,158,39,45,248,80,158,40,40,201, -248,80,158,39,39,248,80,158,40,40,248,80,158,41,40,202,11,27,248,80,158, -40,41,248,80,158,41,40,202,252,199,197,197,11,23,16,11,251,22,252,39,2, -248,22,210,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,41,11, -90,161,35,32,11,28,206,252,23,15,206,206,23,23,11,11,250,22,7,11,11, -11,90,161,35,35,11,252,23,15,248,80,158,53,40,23,22,23,22,23,23,23, -24,10,90,161,35,38,11,28,206,250,22,7,195,196,11,252,23,15,206,206,23, -23,28,23,24,248,22,252,9,2,202,11,11,28,206,250,22,7,249,22,65,203, -200,11,11,250,22,7,250,22,59,2,105,21,93,2,106,251,22,61,2,109,21, -94,2,31,2,106,27,27,249,80,159,8,29,46,34,23,20,21,94,2,23,2, -106,27,249,80,159,8,30,46,34,23,18,21,94,2,21,2,106,28,23,20,249, -80,159,8,30,47,34,195,194,251,22,61,2,109,197,196,21,93,11,28,23,16, -28,23,31,250,22,59,2,116,21,93,94,2,129,96,2,109,94,2,130,2,106, -2,106,2,129,195,250,22,59,2,116,21,93,94,2,129,2,106,195,192,21,93, -11,28,202,202,199,28,200,23,23,11,28,248,80,158,38,39,199,28,196,250,22, -7,9,11,11,250,22,7,71,115,116,120,45,110,117,108,108,47,35,102,131,11, -11,28,248,80,158,38,48,199,28,249,22,5,89,162,32,33,36,9,223,8,28, -248,22,206,194,249,22,221,194,195,11,197,28,196,250,22,7,9,11,11,250,22, -7,250,22,59,2,105,21,93,2,106,251,22,61,2,109,21,94,2,37,2,106, -250,22,61,2,109,250,22,59,2,107,2,106,249,22,59,72,113,117,111,116,101, -45,115,121,110,116,97,120,132,23,24,21,94,64,110,117,108,108,133,11,21,93, -11,11,11,28,28,200,28,248,22,41,248,22,210,200,249,22,223,200,20,15,159, -39,32,8,37,11,11,251,22,252,39,2,248,22,210,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,202,28,196,250,22,7,248,22,59,202,11,11,250,22,7, -27,28,205,89,162,32,33,36,64,119,114,97,112,134,222,250,22,59,2,105,21, -93,2,106,195,89,162,32,33,38,2,134,222,250,22,59,2,105,21,93,2,106, -249,22,59,2,111,197,28,206,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,135,2,129,2,106,2,129,248, -193,2,106,10,205,28,249,80,158,39,49,200,11,27,248,22,252,229,1,248,22, -210,201,28,28,197,11,27,248,22,252,9,2,203,28,192,192,249,22,4,89,162, -32,33,37,9,223,9,248,22,252,9,2,28,248,22,41,248,22,210,196,249,22, -223,196,20,15,159,35,32,8,37,11,195,27,248,22,252,226,1,248,22,210,202, -250,91,159,33,11,20,12,95,33,192,89,162,32,35,54,2,103,228,11,6,14, -12,4,0,28,248,22,186,199,250,22,7,250,22,59,2,105,21,93,2,106,251, -22,61,2,109,250,22,59,2,39,2,106,206,23,18,21,93,11,202,11,91,159, -35,11,90,161,35,32,11,27,249,22,252,227,1,248,22,210,201,248,22,171,205, -252,205,197,197,204,248,22,252,9,2,23,17,11,250,198,248,22,171,205,28,205, -205,196,27,249,80,159,46,46,34,198,250,22,59,74,115,116,120,45,118,101,99, -116,111,114,45,114,101,102,136,2,106,248,22,171,23,19,28,248,22,57,23,16, -192,28,197,249,80,159,46,47,34,194,23,17,251,22,61,2,109,196,23,19,21, -93,11,195,248,22,252,9,2,23,15,9,91,159,35,11,90,161,35,32,11,252, -201,200,23,15,23,17,23,18,11,28,200,250,22,7,195,11,11,250,22,7,250, -22,59,2,105,21,93,2,106,251,22,61,2,109,21,95,2,39,2,106,11,249, -80,159,53,46,34,204,21,94,72,118,101,99,116,111,114,45,62,108,105,115,116, -137,94,68,115,121,110,116,97,120,45,101,138,2,106,21,93,11,196,11,28,196, -250,22,7,9,11,11,250,22,7,250,22,59,2,105,21,93,2,106,250,22,61, -2,109,27,250,22,61,66,101,113,117,97,108,63,139,248,22,210,23,20,21,93, -94,2,138,2,106,28,23,20,250,22,59,63,97,110,100,140,21,94,2,130,2, -106,195,192,21,94,2,133,11,11,11,83,159,32,93,80,159,32,51,33,89,162, -32,37,44,2,44,223,0,253,80,159,38,37,34,199,200,201,202,11,203,83,159, -32,93,80,159,32,52,33,89,162,32,36,43,2,46,223,0,253,80,159,38,37, -34,199,200,201,202,10,11,83,159,32,93,80,159,32,44,33,89,162,32,33,36, -2,29,222,28,28,248,22,50,193,28,249,22,252,11,2,248,22,52,195,2,105, -249,22,252,13,2,248,22,78,195,21,93,2,106,11,11,248,22,87,193,249,22, -61,194,21,93,2,106,83,159,32,93,80,159,32,46,33,89,162,32,34,38,2, -33,222,28,28,248,22,50,193,28,249,22,252,11,2,248,22,52,195,2,105,249, -22,252,13,2,248,22,78,195,21,93,2,106,11,11,27,248,22,87,194,28,249, -22,252,11,2,194,2,106,194,28,28,248,22,50,193,28,249,22,252,11,2,248, -22,52,195,2,111,28,248,22,50,248,22,53,194,28,249,22,252,11,2,248,22, -78,195,2,106,248,22,57,248,22,80,194,11,11,11,11,249,22,59,2,111,196, -249,22,59,195,196,249,22,59,194,195,83,159,32,93,80,159,32,47,33,89,162, -32,34,38,2,35,222,28,28,248,22,50,193,28,249,22,252,11,2,248,22,52, -195,2,111,28,248,22,50,248,22,53,194,248,22,57,248,22,80,194,11,11,11, -250,22,59,67,99,111,110,115,47,35,102,141,248,22,78,196,196,250,22,59,69, -97,112,112,101,110,100,47,35,102,142,195,196,83,159,32,93,80,159,32,53,33, -89,162,32,36,8,50,2,48,223,0,91,159,34,10,90,161,33,32,10,195,90, -161,33,33,10,89,162,32,38,8,43,2,89,226,2,5,3,1,28,28,199,28, -248,80,158,36,45,197,27,248,80,158,37,40,198,28,248,80,158,37,45,193,28, -27,248,80,158,38,41,194,28,248,22,41,248,22,210,194,249,22,223,194,20,15, -159,39,32,8,37,11,248,22,252,9,2,27,248,80,158,39,41,200,28,248,22, -41,248,22,210,194,249,22,223,194,20,15,159,40,32,8,37,11,11,11,11,11, -91,159,38,11,90,161,33,32,11,248,80,158,42,41,203,90,161,35,33,11,250, -91,159,33,11,20,12,95,33,192,89,162,32,35,47,2,103,224,13,0,28,28, -248,80,158,34,45,195,27,248,80,158,35,41,196,28,248,22,41,248,22,210,194, -249,22,223,194,20,15,159,36,32,8,37,11,11,27,248,80,158,35,40,196,27, -248,22,170,198,27,248,80,158,37,41,198,28,28,248,80,158,37,45,195,27,248, -80,158,38,41,196,28,248,22,41,248,22,210,194,249,22,223,194,20,15,159,39, -32,8,37,11,11,27,248,80,158,38,40,196,27,248,22,170,196,27,248,80,158, -40,41,198,28,28,248,80,158,40,45,195,27,248,80,158,41,41,196,28,248,22, -41,248,22,210,194,249,22,223,194,20,15,159,42,32,8,37,11,11,250,201,248, -80,158,43,40,198,248,22,170,197,248,80,158,43,41,198,250,22,7,196,197,195, -250,22,7,196,197,195,250,22,7,198,197,199,248,80,158,45,40,248,80,158,46, -40,23,15,32,248,80,158,45,41,248,80,158,46,40,23,15,90,161,33,36,11, -248,91,159,33,11,20,12,95,33,192,89,162,32,33,52,2,103,225,11,2,0, -28,248,22,186,196,193,249,22,209,11,249,22,59,27,248,22,171,201,28,248,22, -186,193,198,249,22,209,11,249,22,59,27,248,22,171,198,28,248,22,186,193,203, -249,22,209,11,249,22,59,248,23,15,248,22,171,198,20,15,159,48,33,8,37, -20,15,159,43,33,8,37,20,15,159,38,33,8,37,194,90,161,33,37,11,28, -203,249,80,159,43,42,34,198,202,11,87,94,28,248,22,57,198,251,22,1,22, -252,39,2,66,115,121,110,116,97,120,143,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,252,11,2,205,201,248,22,59,204,249,22,59,205,201,12,27,28,204,249, -22,2,89,162,32,33,41,9,226,12,10,15,14,251,80,159,39,54,34,200,196, -198,197,200,11,27,28,205,248,91,159,33,11,20,12,95,33,192,89,162,32,33, -38,2,103,223,0,28,248,22,57,194,9,28,248,22,79,194,248,193,248,22,53, -195,249,22,51,248,22,77,196,248,195,248,22,53,197,194,11,27,28,206,248,91, -159,33,11,20,12,95,33,192,89,162,32,33,38,2,103,223,0,28,248,22,57, -194,9,28,248,22,79,194,249,22,51,248,22,77,196,248,195,248,22,53,197,248, -193,248,22,53,195,195,11,27,28,23,15,248,80,159,46,55,34,195,11,27,28, -23,16,248,80,159,47,55,34,195,11,27,28,248,22,57,196,12,28,248,22,57, -197,251,22,1,22,252,39,2,2,143,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,252,11,2,23,19,23,15,248,22,59,23,18,249,22,59,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,65,205,206,11,23,18,10,11,23,29,28,23,19,250, -22,59,2,105,21,93,61,114,144,27,27,27,249,22,2,89,162,32,33,41,9, -225,25,30,27,250,80,159,37,56,34,2,144,249,80,159,39,35,34,200,197,196, -204,28,28,249,22,181,33,248,22,64,195,28,249,22,181,32,23,17,28,248,22, -57,202,249,22,252,13,2,200,21,95,2,105,93,2,144,94,63,99,97,114,145, -2,144,11,11,11,248,22,52,193,28,28,249,22,181,34,248,22,64,195,28,249, -22,181,32,23,17,28,248,22,57,202,249,22,252,13,2,200,21,95,2,105,93, -2,144,95,2,111,94,2,145,2,144,94,64,99,97,100,114,146,2,144,11,11, -11,250,22,61,2,118,21,95,2,105,94,61,97,147,61,98,148,95,2,111,2, -147,2,148,249,80,158,8,28,50,197,9,91,159,33,11,20,12,95,33,27,250, -22,61,2,118,250,22,59,2,105,64,118,97,108,115,149,249,22,59,23,16,28, -248,22,57,23,20,2,149,21,95,66,97,112,112,101,110,100,150,68,115,104,97, -108,108,111,119,115,151,2,149,249,80,158,8,30,50,199,9,28,248,22,186,23, -18,192,27,250,22,59,65,97,112,112,108,121,152,2,150,196,27,248,22,171,23, -20,28,248,22,186,193,193,27,250,22,59,2,152,2,150,197,27,248,22,171,195, -28,248,22,186,193,193,249,199,250,22,59,2,152,2,150,198,248,22,171,195,89, -162,32,34,47,2,134,223,0,28,248,22,186,195,193,27,250,22,59,2,152,2, -150,197,27,248,22,171,197,28,248,22,186,193,193,27,250,22,59,2,152,2,150, -197,27,248,22,171,195,28,248,22,186,193,193,27,250,22,59,2,152,2,150,197, -27,248,22,171,195,28,248,22,186,193,193,249,200,250,22,59,2,152,2,150,198, -248,22,171,195,28,248,22,57,201,192,250,22,59,2,116,248,22,59,249,22,59, -2,151,249,22,61,2,111,249,80,158,8,32,50,249,22,2,89,162,32,33,41, -9,225,34,39,36,250,80,159,37,56,34,2,144,249,80,159,39,35,34,200,197, -196,23,20,9,195,27,248,80,159,55,57,34,199,28,249,22,252,11,2,194,2, -133,193,250,22,59,2,150,196,195,12,28,248,80,158,36,45,197,27,248,80,158, -37,41,198,28,28,200,28,248,22,41,248,22,210,194,249,22,223,194,20,15,159, -38,32,8,37,11,11,28,28,248,80,158,37,45,248,80,158,38,40,199,248,80, -158,37,39,248,80,158,38,40,248,80,158,39,40,200,11,27,248,80,158,38,41, -248,80,158,39,40,200,253,215,198,205,198,11,23,16,23,17,251,22,252,39,2, -2,143,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,45,40,206,206,23,15,23,16, -23,17,23,18,28,200,250,22,59,2,105,21,93,2,144,251,80,159,45,58,34, -206,248,80,159,46,57,34,201,248,80,159,46,57,34,200,206,12,28,249,80,158, -37,49,198,11,27,253,214,248,22,252,229,1,248,22,210,205,204,203,206,23,15, -23,16,28,198,250,22,59,2,105,21,93,2,144,249,22,59,72,108,105,115,116, -45,62,118,101,99,116,111,114,153,249,22,59,2,112,248,80,159,44,57,34,200, -12,28,248,80,158,36,48,197,28,249,22,5,89,162,32,33,36,9,223,6,28, -248,22,206,194,249,22,221,194,195,11,196,28,197,250,22,59,2,105,21,93,2, -144,249,22,59,2,132,201,12,28,197,27,249,22,5,89,162,32,33,36,9,223, -7,28,248,22,206,194,249,22,221,194,195,11,200,28,192,250,22,59,2,105,21, -93,2,144,250,80,159,42,56,34,2,144,249,80,159,44,34,34,205,206,23,15, -87,95,28,200,28,28,248,22,41,248,22,210,199,249,22,223,199,20,15,159,38, -32,8,37,11,251,22,252,39,2,2,143,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,38,59,34,199,200,250,22,59,2,105,21,93, -2,144,249,22,59,2,132,202,28,28,28,248,22,41,248,22,210,198,249,22,223, -198,20,15,159,37,32,8,37,11,199,11,12,248,202,197,28,248,22,57,197,28, -197,21,95,2,105,93,2,144,2,133,12,28,197,250,22,59,2,105,21,93,2, -144,249,22,59,2,132,201,12,27,28,197,11,247,22,110,27,253,216,203,204,203, -10,28,204,248,22,171,248,22,64,206,11,28,204,11,89,162,32,33,40,9,223, -7,27,250,22,116,196,248,22,210,198,9,28,28,248,22,50,193,249,22,5,89, -162,32,33,36,9,223,4,249,22,221,195,194,194,11,12,250,22,115,196,248,22, -210,198,249,22,51,199,197,28,198,250,22,59,2,105,21,94,2,144,63,115,114, -99,154,27,251,22,61,2,135,249,22,59,2,132,28,23,18,250,22,209,23,21, -2,87,11,11,248,80,159,45,57,34,201,21,93,2,154,28,248,80,159,41,8, -28,34,203,250,22,59,2,116,21,93,94,64,101,120,110,104,155,11,248,22,59, -250,22,59,2,114,2,115,251,22,61,72,100,121,110,97,109,105,99,45,119,105, -110,100,156,251,22,59,2,105,9,21,95,64,115,101,116,33,157,2,155,93,1, -25,99,117,114,114,101,110,116,45,101,120,99,101,112,116,105,111,110,45,104,97, -110,100,108,101,114,158,249,22,59,2,158,250,22,59,2,105,21,93,63,101,120, -110,159,249,22,59,2,115,250,22,59,2,105,9,251,22,59,2,109,21,94,70, -101,120,110,58,98,114,101,97,107,63,160,2,159,21,94,65,114,97,105,115,101, -161,2,159,250,22,59,1,20,101,108,108,105,112,115,105,115,45,99,111,117,110, -116,45,101,114,114,111,114,162,249,22,59,2,121,23,43,249,22,59,2,132,250, -22,209,11,2,79,23,46,250,22,59,2,105,9,250,22,61,2,116,248,22,59, -249,22,59,61,118,163,23,20,21,93,95,2,105,9,2,163,21,93,95,2,105, -9,94,2,158,2,155,192,249,22,1,22,65,249,22,118,197,89,162,32,34,34, -9,222,193,83,159,32,93,80,159,32,57,33,89,162,32,33,36,2,56,222,28, -28,248,22,50,193,28,249,22,252,11,2,248,22,52,195,2,105,249,22,252,13, -2,248,22,78,195,21,93,2,144,11,11,248,22,87,193,249,22,61,194,21,93, -2,144,83,159,32,93,80,159,32,58,33,89,162,32,36,46,2,58,223,0,28, -28,248,22,50,195,28,249,22,252,11,2,248,22,52,197,2,132,28,249,22,252, -11,2,248,22,78,197,248,80,158,35,41,199,27,249,22,252,11,2,198,2,133, -28,192,192,28,248,22,50,197,28,249,22,252,11,2,248,22,52,199,2,132,249, -22,252,11,2,248,22,78,199,248,80,158,36,40,200,11,11,11,11,11,249,22, -59,2,132,198,28,248,22,206,194,27,250,22,209,197,63,99,116,120,164,197,251, -22,59,2,135,249,22,59,2,132,198,251,80,159,41,58,34,11,203,204,205,249, -22,59,2,132,198,28,249,22,252,11,2,197,2,133,249,22,59,74,108,105,115, -116,45,105,109,109,117,116,97,98,108,101,165,196,28,28,248,22,50,196,249,22, -71,248,22,52,198,21,94,2,165,75,108,105,115,116,42,45,105,109,109,117,116, -97,98,108,101,166,11,250,22,61,248,22,52,199,197,249,80,158,37,50,248,22, -53,201,9,28,28,248,22,50,196,249,22,252,11,2,248,22,52,198,74,99,111, -110,115,45,105,109,109,117,116,97,98,108,101,167,11,250,22,61,2,166,197,249, -80,158,37,50,248,22,53,201,9,28,28,248,22,50,195,28,248,22,50,196,28, -249,22,252,11,2,248,22,52,197,2,145,28,249,22,252,11,2,248,22,52,198, -63,99,100,114,168,28,248,22,41,248,22,78,196,249,22,252,11,2,248,22,78, -197,248,22,78,198,11,11,11,11,11,248,22,78,195,250,22,59,2,167,197,198, -83,159,32,93,80,159,32,56,33,89,162,32,35,38,2,54,222,28,28,194,249, -22,181,195,196,11,28,249,22,252,11,2,195,32,192,28,249,22,252,11,2,195, -33,249,22,59,2,168,194,28,249,22,252,11,2,195,34,249,22,59,64,99,100, -100,114,169,194,28,249,22,252,11,2,195,35,249,22,59,65,99,100,100,100,114, -170,194,28,249,22,252,11,2,195,36,249,22,59,66,99,100,100,100,100,114,171, -194,250,22,59,69,108,105,115,116,45,116,97,105,108,172,195,196,28,249,22,252, -11,2,195,32,249,22,59,2,145,194,28,249,22,252,11,2,195,33,249,22,59, -2,146,194,28,249,22,252,11,2,195,34,249,22,59,65,99,97,100,100,114,173, -194,28,249,22,252,11,2,195,35,249,22,59,66,99,97,100,100,100,114,174,194, -250,22,59,68,108,105,115,116,45,114,101,102,175,195,196,83,159,32,93,80,159, -32,42,33,89,162,32,34,38,2,25,223,0,249,91,159,33,11,20,12,95,33, -192,89,162,32,34,46,63,115,117,98,176,225,3,5,0,28,28,196,28,248,80, -158,35,45,196,27,248,80,158,36,40,197,28,248,80,158,36,45,193,28,27,248, -80,158,37,41,194,28,248,22,41,248,22,210,194,249,22,223,194,20,15,159,38, -32,8,37,11,248,22,252,9,2,27,248,80,158,38,41,199,28,248,22,41,248, -22,210,194,249,22,223,194,20,15,159,39,32,8,37,11,11,11,11,11,91,159, -34,11,90,161,34,32,11,249,91,159,33,11,20,12,95,33,192,89,162,32,34, -43,2,103,224,7,0,28,28,248,80,158,34,45,195,27,248,80,158,35,41,196, -28,248,22,41,248,22,210,194,249,22,223,194,20,15,159,36,32,8,37,11,11, -27,248,80,158,35,40,196,27,89,162,32,33,36,9,223,5,248,22,59,248,194, -195,28,28,248,80,158,36,45,194,27,248,80,158,37,41,195,28,248,22,41,248, -22,210,194,249,22,223,194,20,15,159,38,32,8,37,11,11,27,248,80,158,37, -40,195,27,89,162,32,33,37,9,223,7,248,22,59,248,22,59,248,195,196,28, -28,248,80,158,38,45,194,27,248,80,158,39,41,195,28,248,22,41,248,22,210, -194,249,22,223,194,20,15,159,40,32,8,37,11,11,249,198,248,80,158,40,40, -196,89,162,32,33,38,9,223,9,248,22,59,248,22,59,248,22,59,248,196,197, -249,22,7,195,194,249,22,7,195,194,249,22,7,196,197,248,80,158,39,40,248, -80,158,40,40,201,22,59,27,249,197,248,80,158,40,41,201,10,249,22,65,249, -22,2,198,196,249,199,197,10,28,248,80,158,35,45,196,27,248,80,158,36,41, -197,28,28,197,28,248,80,158,36,48,193,28,28,248,22,41,248,22,210,194,249, -22,223,194,20,15,159,37,32,8,37,11,248,80,158,36,45,248,80,158,37,40, -198,11,11,11,249,195,248,80,158,38,41,248,80,158,39,40,200,11,249,22,66, -249,197,248,80,158,40,41,201,201,249,197,248,80,158,40,40,201,201,28,248,80, -158,35,48,196,28,249,22,5,89,162,32,33,36,9,223,5,28,248,22,206,194, -249,22,221,194,195,11,195,9,248,22,59,196,28,249,80,158,36,49,197,11,249, -194,248,22,252,229,1,248,22,210,199,198,9,195,10,83,159,32,93,80,159,32, -54,33,89,162,32,36,45,2,50,223,0,27,249,22,5,89,162,32,33,39,9, -223,4,27,28,248,22,50,195,248,22,52,195,194,250,91,159,33,11,20,12,95, -33,192,89,162,32,35,42,2,103,225,6,4,0,28,28,248,22,50,196,248,22, -50,197,11,250,195,248,22,52,199,248,22,52,200,10,28,248,22,50,197,250,195, -198,248,22,52,200,11,28,248,22,206,196,28,248,22,206,197,28,249,22,221,197, -198,249,22,51,28,199,195,196,248,22,252,9,2,200,11,11,11,195,196,248,22, -50,198,197,87,94,28,192,12,251,22,1,22,252,39,2,2,143,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,248,91,159,33,11,20,12,95,33,192,89,162,32,33, -39,2,103,223,0,28,248,22,206,194,193,27,248,22,52,195,28,248,22,206,193, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,53,50,46,49,217,252,157,40,159,33,20,98,159,33,16,1,20, +24,65,98,101,103,105,110,0,16,0,83,158,40,20,95,114,64,35,37,115,99, +1,29,2,11,11,10,10,10,49,80,158,33,33,20,98,159,41,16,37,30,3, +2,2,64,46,46,46,63,4,254,1,30,5,2,2,68,115,116,120,45,109,101, +109,113,6,254,1,30,7,2,2,72,115,116,120,45,109,101,109,113,45,112,111, +115,8,254,1,30,9,2,2,73,115,116,120,45,109,101,109,113,42,45,112,111, +115,10,254,1,30,11,2,2,76,112,105,99,107,45,115,112,101,99,105,102,105, +99,105,116,121,12,254,1,30,13,2,2,1,27,109,97,107,101,45,109,97,116, +99,104,38,101,110,118,47,101,120,116,114,97,99,116,45,118,97,114,115,14,254, +1,30,15,2,2,69,101,108,108,105,112,115,105,115,63,16,254,1,30,17,65, +35,37,115,116,120,18,69,115,116,120,45,110,117,108,108,63,19,10,30,20,2, +18,67,115,116,120,45,99,100,114,21,6,30,22,2,18,67,115,116,120,45,99, +97,114,23,5,30,24,2,2,1,21,103,101,116,45,101,108,108,105,112,115,105, +115,45,110,101,115,116,105,110,103,115,25,254,1,30,26,2,2,76,102,108,97, +116,116,101,110,45,110,101,115,116,105,110,103,115,27,254,1,30,28,2,2,65, +97,112,112,45,101,29,254,1,30,30,2,18,69,115,116,120,45,112,97,105,114, +63,31,11,30,32,2,2,63,97,112,112,33,254,1,30,34,2,2,70,97,112, +112,45,97,112,112,101,110,100,35,254,1,30,36,2,18,71,105,100,101,110,116, +105,102,105,101,114,63,37,2,30,38,2,18,71,115,116,120,45,118,101,99,116, +111,114,63,39,15,30,40,71,35,37,113,113,45,97,110,100,45,111,114,41,69, +113,113,45,97,112,112,101,110,100,42,0,30,43,2,2,74,109,97,107,101,45, +109,97,116,99,104,38,101,110,118,44,254,1,30,45,2,2,74,103,101,116,45, +109,97,116,99,104,45,118,97,114,115,46,254,1,30,47,2,2,72,109,97,107, +101,45,112,101,120,112,97,110,100,48,254,1,30,49,2,2,76,101,108,108,105, +112,115,105,115,45,115,117,98,45,101,110,118,50,254,1,30,51,2,2,72,101, +120,116,114,97,99,116,45,118,97,114,115,52,254,1,30,53,2,2,74,97,112, +112,108,121,45,108,105,115,116,45,114,101,102,54,254,1,30,55,2,2,70,97, +112,112,108,121,45,116,111,45,114,56,254,1,30,57,2,2,70,97,112,112,108, +121,45,99,111,110,115,58,254,1,30,59,2,2,77,99,104,101,99,107,45,110, +111,116,45,112,97,116,116,101,114,110,60,254,1,30,61,2,2,1,23,109,117, +108,116,105,112,108,101,45,101,108,108,105,112,115,105,115,45,118,97,114,115,63, +62,254,1,30,63,2,2,72,110,111,45,101,108,108,105,112,115,101,115,63,64, +254,1,30,65,2,2,1,21,115,116,114,117,99,116,58,115,121,110,116,97,120, +45,109,97,112,112,105,110,103,66,254,1,30,67,2,2,79,109,97,107,101,45, +115,121,110,116,97,120,45,109,97,112,112,105,110,103,68,254,1,30,69,2,2, +75,115,121,110,116,97,120,45,109,97,112,112,105,110,103,63,70,254,1,30,71, +2,2,1,20,115,121,110,116,97,120,45,109,97,112,112,105,110,103,45,100,101, +112,116,104,72,254,1,30,73,2,2,1,25,115,101,116,45,115,121,110,116,97, +120,45,109,97,112,112,105,110,103,45,100,101,112,116,104,33,74,254,1,30,75, +2,2,1,21,115,121,110,116,97,120,45,109,97,112,112,105,110,103,45,118,97, +108,118,97,114,76,254,1,30,77,2,2,1,26,115,101,116,45,115,121,110,116, +97,120,45,109,97,112,112,105,110,103,45,118,97,108,118,97,114,33,78,254,1, +16,2,18,98,63,46,46,46,79,39,98,37,10,33,11,94,159,74,35,37,115, +109,97,108,108,45,115,99,104,101,109,101,80,9,11,159,2,18,9,11,16,62, +2,29,2,2,2,78,2,2,2,4,2,2,2,72,2,2,2,68,2,2,2, +60,2,2,2,52,2,2,2,16,2,2,2,6,2,2,2,12,2,2,2,54, +2,2,2,33,2,2,2,8,2,2,2,66,2,2,2,50,2,2,2,44,2, +2,2,56,2,2,2,74,2,2,2,76,2,2,2,10,2,2,2,14,2,2, +2,58,2,2,2,48,2,2,2,64,2,2,74,115,121,110,116,97,120,45,109, +97,112,112,105,110,103,81,2,2,2,25,2,2,2,62,2,2,2,35,2,2, +2,46,2,2,2,70,2,2,2,27,2,2,96,36,34,11,16,0,96,35,8, +254,1,11,16,0,16,4,34,11,61,115,82,3,1,7,101,110,118,50,51,56, +53,83,18,103,2,79,46,37,36,35,16,10,45,11,61,112,84,67,112,114,111, +116,111,45,114,85,61,107,86,64,100,101,115,116,87,3,1,7,101,110,118,50, +52,54,52,88,2,88,2,88,2,88,16,6,44,11,68,101,120,112,97,110,100, +101,114,89,63,116,111,112,90,3,1,7,101,110,118,50,52,54,56,91,3,1, +7,101,110,118,50,52,54,54,92,16,6,43,11,2,89,2,90,2,91,2,92, +16,10,42,11,69,108,111,99,97,108,45,116,111,112,93,73,117,115,101,45,101, +108,108,105,112,115,101,115,63,94,72,117,115,101,45,116,97,105,108,45,112,111, +115,95,65,104,97,115,104,33,96,3,1,7,101,110,118,50,52,55,48,97,2, +97,2,97,2,97,16,10,41,11,66,112,45,104,101,97,100,98,68,101,108,45, +99,111,117,110,116,99,66,114,101,115,116,45,112,100,67,108,97,115,116,45,101, +108,101,3,1,7,101,110,118,50,52,55,49,102,2,102,2,102,2,102,16,4, +40,11,64,108,111,111,112,103,3,1,7,101,110,118,50,52,55,52,104,11,11, +16,21,2,4,2,33,2,35,2,29,2,58,2,54,2,56,2,60,2,50,2, +16,2,52,2,27,2,25,2,14,2,62,2,12,2,74,2,78,2,66,2,6, +2,10,54,16,9,10,10,10,10,10,10,10,10,10,16,9,2,46,2,44,2, +48,2,68,2,64,2,8,2,72,2,76,2,70,16,9,11,11,11,11,11,11, +11,11,11,16,9,2,46,2,44,2,48,2,68,2,64,2,8,2,72,2,76, +2,70,42,42,93,16,5,93,2,81,27,247,22,252,89,3,253,22,60,248,199, +20,15,159,41,33,33,248,199,20,15,159,41,34,33,248,199,20,15,159,41,35, +33,249,22,60,248,201,20,15,159,43,36,33,248,201,20,15,159,43,37,33,249, +22,60,248,201,20,15,159,43,38,33,248,201,20,15,159,43,39,33,10,43,20, +98,159,33,16,0,16,7,18,97,2,66,47,37,36,35,18,158,2,68,47,18, +158,2,70,47,18,158,2,76,47,18,158,2,72,47,18,158,2,78,47,18,158, +2,74,47,11,124,83,159,33,93,80,159,33,8,46,34,89,162,33,36,46,63, +115,117,98,105,223,0,28,28,195,28,248,80,158,34,46,195,27,248,80,158,35, +41,196,28,248,80,158,35,46,193,28,27,248,80,158,36,42,194,28,248,22,41, +248,22,210,194,249,22,223,194,20,15,159,37,33,8,37,11,248,22,252,9,2, +27,248,80,158,37,42,198,28,248,22,41,248,22,210,194,249,22,223,194,20,15, +159,38,33,8,37,11,11,11,11,11,91,159,35,11,90,161,35,33,11,27,248, +80,158,37,41,248,80,158,38,41,199,28,28,248,80,158,37,46,193,27,248,80, +158,38,42,194,28,248,22,41,248,22,210,194,249,22,223,194,20,15,159,39,33, +8,37,11,11,27,248,80,158,38,41,194,27,32,106,89,162,33,34,36,9,222, +248,22,59,248,22,59,194,28,28,248,80,158,39,46,194,27,248,80,158,40,42, +195,28,248,22,41,248,22,210,194,249,22,223,194,20,15,159,41,33,8,37,11, +11,249,80,159,40,8,47,34,248,80,158,41,41,196,32,107,89,162,33,34,37, +9,222,248,22,59,248,22,59,248,22,59,195,249,22,7,195,194,249,22,7,194, +22,59,27,250,80,159,39,8,46,34,199,248,80,158,40,42,201,10,249,22,65, +249,22,2,198,196,250,80,159,41,8,46,34,201,198,10,28,248,80,158,34,46, +195,27,248,80,158,35,42,196,28,28,196,28,248,80,158,35,49,193,28,28,248, +22,41,248,22,210,194,249,22,223,194,20,15,159,36,33,8,37,11,248,80,158, +35,46,248,80,158,36,41,197,11,11,11,250,80,159,37,8,46,34,197,248,80, +158,38,42,248,80,158,39,41,200,11,249,22,66,250,80,159,39,8,46,34,199, +248,80,158,40,42,201,201,250,80,159,39,8,46,34,199,248,80,158,40,41,201, +201,28,248,80,158,34,49,195,28,249,22,5,89,162,33,34,37,9,223,4,28, +248,22,206,194,249,22,221,194,195,11,195,9,248,22,59,195,28,249,80,158,35, +50,196,11,250,80,159,36,8,46,34,196,248,22,252,229,1,248,22,210,199,198, +9,83,159,33,93,80,159,33,8,47,34,89,162,33,35,43,2,103,223,0,28, +28,248,80,158,34,46,194,27,248,80,158,35,42,195,28,248,22,41,248,22,210, +194,249,22,223,194,20,15,159,36,33,8,37,11,11,27,248,80,158,35,41,195, +27,89,162,33,34,37,9,223,4,248,22,59,248,194,195,28,28,248,80,158,36, +46,194,27,248,80,158,37,42,195,28,248,22,41,248,22,210,194,249,22,223,194, +20,15,159,38,33,8,37,11,11,27,248,80,158,37,41,195,27,89,162,33,34, +38,9,223,6,248,22,59,248,22,59,248,195,196,28,28,248,80,158,38,46,194, +27,248,80,158,39,42,195,28,248,22,41,248,22,210,194,249,22,223,194,20,15, +159,40,33,8,37,11,11,249,80,159,39,8,47,34,248,80,158,40,41,196,89, +162,33,34,39,9,223,8,248,22,59,248,22,59,248,22,59,248,196,197,249,22, +7,195,194,249,22,7,195,194,249,22,7,195,196,83,159,33,93,80,159,33,8, +45,34,89,162,33,35,53,2,103,223,0,28,248,22,186,195,193,249,22,209,11, +249,22,59,27,248,22,171,200,28,248,22,186,193,198,249,22,209,11,249,22,59, +27,248,22,171,198,28,248,22,186,193,203,249,22,209,11,249,22,59,249,80,159, +49,8,45,34,23,17,248,22,171,199,20,15,159,47,34,8,37,20,15,159,42, +34,8,37,20,15,159,37,34,8,37,83,159,33,93,80,159,33,8,44,34,89, +162,33,36,47,2,103,223,0,28,28,248,80,158,34,46,194,27,248,80,158,35, +42,195,28,248,22,41,248,22,210,194,249,22,223,194,20,15,159,36,33,8,37, +11,11,27,248,80,158,35,41,195,27,248,22,170,197,27,248,80,158,37,42,197, +28,28,248,80,158,37,46,195,27,248,80,158,38,42,196,28,248,22,41,248,22, +210,194,249,22,223,194,20,15,159,39,33,8,37,11,11,27,248,80,158,38,41, +196,27,248,22,170,196,27,248,80,158,40,42,198,28,28,248,80,158,40,46,195, +27,248,80,158,41,42,196,28,248,22,41,248,22,210,194,249,22,223,194,20,15, +159,42,33,8,37,11,11,250,80,159,42,8,44,34,248,80,158,43,41,198,248, +22,170,197,248,80,158,43,42,198,250,22,7,196,197,195,250,22,7,196,197,195, +250,22,7,197,196,198,83,159,33,93,80,159,33,8,40,34,89,162,33,42,8, +45,63,109,38,101,108,223,0,28,28,199,28,248,80,158,34,46,198,27,248,80, +158,35,41,199,28,248,80,158,35,46,193,28,27,248,80,158,36,42,194,28,248, +22,41,248,22,210,194,249,22,223,194,20,15,159,37,33,8,37,11,248,22,252, +9,2,27,248,80,158,37,42,201,28,248,22,41,248,22,210,194,249,22,223,194, +20,15,159,38,33,8,37,11,11,11,11,11,28,248,80,158,34,40,248,80,158, +35,41,248,80,158,36,41,200,27,248,80,158,35,42,199,27,249,80,159,37,43, +35,195,199,91,159,36,11,90,161,36,33,11,26,9,80,159,47,8,40,34,23, +15,23,16,23,17,23,18,205,205,10,11,11,28,201,250,22,7,249,22,2,22, +59,200,11,11,27,249,80,159,41,44,35,198,32,109,89,162,41,34,34,9,222, +10,250,22,7,250,22,59,66,108,97,109,98,100,97,110,21,93,61,101,111,251, +22,61,62,105,102,112,21,94,69,115,116,120,45,108,105,115,116,63,113,2,111, +27,248,80,159,51,45,35,205,28,249,22,252,13,2,194,21,94,64,108,105,115, +116,114,2,111,28,23,25,21,94,69,115,116,120,45,62,108,105,115,116,115,2, +111,21,94,2,114,94,2,115,2,111,28,248,22,57,204,250,22,61,66,97,110, +100,109,97,112,116,250,22,59,2,110,21,93,2,111,198,21,93,94,2,115,2, +111,250,22,59,66,108,101,116,47,101,99,117,63,101,115,99,118,250,22,59,63, +108,101,116,119,248,22,59,249,22,59,61,108,120,250,22,61,63,109,97,112,121, +250,22,59,2,110,21,93,2,111,250,22,61,73,115,116,120,45,99,104,101,99, +107,47,101,115,99,122,23,18,21,93,2,118,21,93,94,2,115,2,111,251,22, +59,2,112,21,94,65,110,117,108,108,63,123,2,120,249,22,59,65,113,117,111, +116,101,124,27,249,22,2,32,125,89,97,41,34,34,9,222,23,26,28,23,38, +249,22,1,22,61,194,192,249,22,61,28,23,37,71,115,116,120,45,114,111,116, +97,116,101,42,126,70,115,116,120,45,114,111,116,97,116,101,127,21,93,2,120, +21,93,11,197,11,27,249,22,59,248,80,158,37,42,201,248,80,158,37,42,248, +80,158,38,41,202,27,248,80,158,36,41,248,80,158,37,41,201,91,159,35,11, +90,161,35,33,11,251,80,159,41,8,41,34,201,202,198,33,91,159,42,11,90, +161,36,33,11,28,23,17,26,9,80,159,55,8,40,34,23,23,23,24,23,25, +23,26,23,21,23,21,23,29,11,11,250,22,7,11,11,11,90,161,36,36,11, +26,9,80,159,55,8,40,34,23,23,23,24,23,25,23,26,23,20,23,28,23, +29,23,30,10,90,161,36,39,11,28,23,17,250,22,7,195,196,11,26,9,80, +159,55,8,40,34,23,23,23,24,23,25,23,26,23,21,23,21,23,29,28,23, +30,248,22,252,9,2,206,11,11,28,23,17,250,22,7,249,22,65,203,200,11, +11,250,22,7,250,22,59,2,110,21,93,2,111,250,22,59,71,108,101,116,42, +45,118,97,108,117,101,115,128,248,22,59,249,22,59,21,95,69,112,114,101,45, +105,116,101,109,115,129,70,112,111,115,116,45,105,116,101,109,115,130,63,111,107, +63,131,251,22,59,74,115,112,108,105,116,45,115,116,120,45,108,105,115,116,132, +2,111,23,25,23,26,251,22,61,2,112,2,131,27,27,249,80,159,8,30,47, +35,23,23,2,129,27,249,80,159,8,31,47,35,23,21,2,130,28,23,23,249, +80,159,8,31,48,35,195,194,251,22,61,2,112,197,196,21,93,11,28,23,19, +28,23,36,250,22,59,2,119,21,93,94,63,99,97,112,133,96,2,112,94,67, +115,121,110,116,97,120,63,134,2,111,2,111,2,133,195,250,22,59,2,119,21, +93,94,2,133,2,111,195,192,21,93,11,28,202,202,199,28,200,23,25,11,28, +248,80,158,34,46,198,27,248,80,158,35,42,199,28,28,200,28,248,22,41,248, +22,210,194,249,22,223,194,20,15,159,36,33,8,37,11,11,28,28,248,80,158, +35,46,248,80,158,36,41,200,248,80,158,35,40,248,80,158,36,41,248,80,158, +37,41,201,11,27,248,80,158,36,42,248,80,158,37,41,201,26,9,80,159,44, +8,40,34,204,205,206,23,15,201,201,11,23,19,11,251,22,252,39,2,248,22, +210,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,42,11,90,161, +36,33,11,28,206,26,9,80,159,52,8,40,34,23,20,23,21,23,22,23,23, +23,18,23,18,23,26,11,11,250,22,7,11,11,11,90,161,36,36,11,26,9, +80,159,52,8,40,34,23,20,23,21,23,22,23,23,248,80,158,53,41,23,25, +23,25,23,26,23,27,10,90,161,36,39,11,28,206,250,22,7,195,196,11,26, +9,80,159,52,8,40,34,23,20,23,21,23,22,23,23,23,18,23,18,23,26, +28,23,27,248,22,252,9,2,206,11,11,28,206,250,22,7,249,22,65,203,200, +11,11,250,22,7,250,22,59,2,110,21,93,2,111,251,22,61,2,112,21,94, +2,31,2,111,27,27,249,80,159,57,47,35,23,20,21,94,2,23,2,111,27, +249,80,159,58,47,35,23,18,21,94,2,21,2,111,28,23,20,249,80,159,58, +48,35,195,194,251,22,61,2,112,197,196,21,93,11,28,23,16,28,23,30,250, +22,59,2,119,21,93,94,2,133,96,2,112,94,2,134,2,111,2,111,2,133, +195,250,22,59,2,119,21,93,94,2,133,2,111,195,192,21,93,11,28,202,202, +199,28,200,23,22,11,28,248,80,158,34,40,198,28,196,250,22,7,9,11,11, +250,22,7,71,115,116,120,45,110,117,108,108,47,35,102,135,11,11,28,248,80, +158,34,49,198,28,249,22,5,89,162,33,34,37,9,223,7,28,248,22,206,194, +249,22,221,194,195,11,197,28,196,250,22,7,9,11,11,250,22,7,250,22,59, +2,110,21,93,2,111,251,22,61,2,112,21,94,2,37,2,111,250,22,61,2, +112,250,22,59,79,109,111,100,117,108,101,45,105,100,101,110,116,105,102,105,101, +114,61,63,136,2,111,249,22,59,72,113,117,111,116,101,45,115,121,110,116,97, +120,137,23,23,21,94,64,110,117,108,108,138,11,21,93,11,11,11,28,28,199, +28,248,22,41,248,22,210,199,249,22,223,199,20,15,159,35,33,8,37,11,11, +251,22,252,39,2,248,22,210,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,59,201,11,11,250,22,7,27,28,204,32,139,89, +162,33,34,37,64,119,114,97,112,140,222,250,22,59,2,110,21,93,2,111,195, +32,141,89,162,33,34,39,2,140,222,250,22,59,2,110,21,93,2,111,249,22, +59,2,114,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,142,2,133,2,111,2,133,248,193,2, +111,10,204,28,249,80,158,35,50,199,11,27,248,22,252,229,1,248,22,210,200, +28,28,197,11,27,248,22,252,9,2,202,28,192,192,249,22,4,80,159,37,8, +42,34,195,27,248,22,252,226,1,248,22,210,201,26,10,80,159,45,8,43,34, +202,23,17,23,19,205,206,23,15,23,16,202,248,22,252,9,2,23,21,9,91, +159,36,11,90,161,36,33,11,26,9,80,159,46,8,40,34,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,59,2,110,21,93,2,111,251,22,61,2,112,21,95,2,39,2,111,11, +249,80,159,49,47,35,204,21,94,72,118,101,99,116,111,114,45,62,108,105,115, +116,143,94,68,115,121,110,116,97,120,45,101,144,2,111,21,93,11,196,11,28, +196,250,22,7,9,11,11,250,22,7,250,22,59,2,110,21,93,2,111,250,22, +61,2,112,27,250,22,61,66,101,113,117,97,108,63,145,248,22,210,23,19,21, +93,94,2,144,2,111,28,23,19,250,22,59,63,97,110,100,146,21,94,2,134, +2,111,195,192,21,94,2,138,11,11,11,83,159,33,93,80,159,33,8,43,34, +89,162,33,43,8,31,2,103,223,0,28,248,22,186,201,250,22,7,250,22,59, +2,110,21,93,2,111,251,22,61,2,112,250,22,59,2,39,2,111,206,23,20, +21,93,11,204,11,91,159,36,11,90,161,36,33,11,27,249,22,252,227,1,248, +22,210,201,248,22,171,23,15,26,9,80,159,46,8,40,34,23,17,23,18,23, +19,23,20,201,201,23,16,248,22,252,9,2,23,23,11,26,10,80,159,46,8, +43,34,206,23,15,23,16,23,17,23,18,23,19,23,20,248,22,171,23,22,28, +23,22,23,22,203,27,249,80,159,49,47,35,205,250,22,59,74,115,116,120,45, +118,101,99,116,111,114,45,114,101,102,147,2,111,248,22,171,23,28,28,248,22, +57,23,25,192,28,204,249,80,159,49,48,35,194,23,26,251,22,61,2,112,196, +23,28,21,93,11,83,159,33,93,80,159,33,8,42,34,89,162,33,34,38,9, +223,0,248,22,252,9,2,28,248,22,41,248,22,210,196,249,22,223,196,20,15, +159,36,33,8,37,11,83,159,33,93,80,159,33,8,41,34,89,162,33,37,43, +2,103,223,0,28,248,80,158,34,40,196,249,22,7,198,10,28,248,80,158,34, +46,196,87,94,28,27,248,80,158,35,42,197,28,248,22,41,248,22,210,194,249, +22,223,194,20,15,159,36,33,8,37,11,251,22,252,39,2,248,22,210,198,6, +54,54,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,32,40,102,111,108,108,111,119,115,32,111, +116,104,101,114,32,101,108,108,105,112,115,101,115,41,198,248,80,158,38,42,200, +12,251,80,159,37,8,41,34,197,198,248,80,158,38,41,200,248,22,170,201,249, +22,7,248,22,170,199,11,83,159,33,93,80,159,33,33,34,89,162,33,34,37, +2,4,223,0,28,248,22,41,248,22,210,195,249,22,223,195,20,15,159,35,33, +8,37,11,83,159,33,93,80,159,33,34,34,32,148,89,162,33,35,37,2,6, +222,249,22,5,89,162,33,34,37,9,223,2,28,248,22,206,194,249,22,221,194, +195,11,195,83,159,33,93,80,159,33,35,34,32,149,89,162,33,35,41,2,8, +222,28,248,22,57,194,11,28,28,248,22,206,248,22,52,195,249,22,221,194,248, +22,52,196,11,33,27,248,22,53,195,28,248,22,57,193,11,28,28,248,22,206, +248,22,52,194,249,22,221,195,248,22,52,195,11,34,250,32,150,89,162,33,36, +44,2,103,222,28,248,22,57,195,11,28,28,248,22,206,248,22,52,196,249,22, +221,194,248,22,52,197,11,193,27,248,22,170,195,27,248,22,53,197,28,248,22, +57,193,11,28,28,248,22,206,248,22,52,194,249,22,221,196,248,22,52,195,11, +193,27,248,22,170,195,27,248,22,53,195,28,248,22,57,193,11,28,28,248,22, +206,248,22,52,194,249,22,221,198,248,22,52,195,11,193,250,2,150,199,248,22, +170,197,248,22,53,196,196,35,248,22,53,196,83,159,33,93,80,159,33,36,34, +32,151,89,162,33,35,39,2,10,222,250,32,152,89,162,33,36,44,2,103,222, +28,248,22,57,195,11,28,249,22,221,194,27,248,22,52,198,28,248,22,206,193, 192,27,248,22,52,194,28,248,22,206,193,192,27,248,22,52,194,28,248,22,206, -193,192,248,196,248,22,52,194,200,28,249,22,252,11,2,203,194,248,22,59,202, -249,22,59,203,194,192,83,159,32,93,80,159,32,55,33,89,162,32,33,35,2, -52,222,249,22,2,89,162,32,33,35,9,222,248,91,159,33,11,20,12,95,33, -192,89,162,32,33,39,2,103,223,0,28,248,22,206,194,193,27,248,22,52,195, -28,248,22,206,193,192,27,248,22,52,194,28,248,22,206,193,192,27,248,22,52, -194,28,248,22,206,193,192,248,196,248,22,52,194,193,194,83,159,32,93,80,159, -32,59,33,89,162,32,34,36,2,60,222,249,22,3,89,162,32,33,36,9,223, -2,28,248,22,50,194,248,91,159,33,11,20,12,95,33,192,89,162,32,33,38, -2,103,224,2,0,28,248,22,206,195,28,249,22,221,196,195,250,22,252,39,2, -2,143,6,50,50,109,105,115,115,105,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,196,12,248,193,248,22,52,196, -248,22,52,195,12,195,83,159,32,93,80,159,32,38,33,89,162,32,33,39,2, -16,223,0,28,248,80,158,33,45,194,27,248,80,158,34,40,195,28,248,80,158, -34,45,193,28,27,248,80,158,35,41,194,28,248,22,41,248,22,210,194,249,22, -223,194,20,15,159,36,32,8,37,11,248,22,252,9,2,27,248,80,158,36,41, -197,28,248,22,41,248,22,210,194,249,22,223,194,20,15,159,37,32,8,37,11, -11,11,11,83,159,32,93,80,159,32,43,33,89,162,32,34,36,2,27,222,248, -91,159,33,11,20,12,95,33,192,89,162,32,33,40,2,103,224,3,0,28,248, -22,57,195,9,28,248,194,248,22,52,196,249,22,51,248,91,159,33,11,20,12, -95,33,192,89,162,32,33,39,2,103,223,0,28,248,22,206,194,193,27,248,22, -52,195,28,248,22,206,193,192,27,248,22,52,194,28,248,22,206,193,192,27,248, -22,52,194,28,248,22,206,193,192,248,196,248,22,52,194,248,22,52,198,248,195, -248,22,53,198,248,193,248,22,53,196,193,83,159,32,93,80,159,32,8,28,33, -89,162,32,33,35,2,62,222,248,91,159,33,11,20,12,95,33,192,89,162,32, -33,36,2,103,223,0,28,248,22,57,194,11,28,248,22,50,248,22,52,195,248, -91,159,33,11,20,12,95,33,192,89,162,32,33,38,2,103,223,0,28,248,22, -57,194,11,28,248,22,50,248,22,52,195,10,27,248,22,53,195,28,248,22,57, +193,192,248,32,153,89,162,33,34,39,2,103,222,28,248,22,206,193,192,27,248, +22,52,194,28,248,22,206,193,192,27,248,22,52,194,28,248,22,206,193,192,27, +248,22,52,194,28,248,22,206,193,192,248,2,153,248,22,52,194,248,22,52,194, +193,250,2,152,195,248,22,170,197,248,22,53,198,195,33,196,83,159,33,93,80, +159,33,37,34,32,154,89,162,33,35,37,2,12,222,28,249,22,252,11,2,194, +195,248,22,59,193,249,22,59,194,195,83,159,33,93,80,159,33,38,34,89,162, +33,39,53,2,14,223,0,91,159,36,11,90,161,36,33,11,26,9,80,159,45, +8,40,34,205,206,23,16,23,17,23,15,23,15,10,10,11,28,200,27,247,22, +110,87,94,251,32,155,89,162,33,37,43,2,103,222,28,248,22,206,196,27,250, +22,116,196,248,22,210,200,9,87,94,28,249,22,5,89,162,33,34,37,9,223, +6,249,22,221,195,194,194,251,22,252,39,2,248,22,210,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,115,196,248,22,210,200,249,22,51, +201,197,28,248,22,50,196,87,94,251,2,155,196,197,198,248,22,52,200,251,2, +155,196,197,198,248,22,53,200,12,196,201,202,197,193,28,249,22,252,13,2,194, +21,95,2,110,93,2,111,2,111,28,201,21,95,2,110,94,2,111,2,136,2, +111,21,95,2,110,93,2,111,2,111,250,22,59,2,110,249,22,61,2,111,249, +80,158,43,51,28,23,16,21,93,2,136,9,9,248,80,159,40,45,35,196,83, +159,33,93,80,159,33,52,34,89,162,33,38,45,2,44,223,0,253,80,159,39, +38,35,199,200,201,202,11,203,83,159,33,93,80,159,33,53,34,89,162,33,37, +44,2,46,223,0,253,80,159,39,38,35,199,200,201,202,10,11,83,159,33,93, +80,159,33,45,34,32,156,89,162,33,34,37,2,29,222,28,28,248,22,50,193, +28,249,22,252,11,2,248,22,52,195,2,110,249,22,252,13,2,248,22,78,195, +21,93,2,111,11,11,248,22,87,193,249,22,61,194,21,93,2,111,83,159,33, +93,80,159,33,47,34,32,157,89,162,33,35,39,2,33,222,28,28,248,22,50, +193,28,249,22,252,11,2,248,22,52,195,2,110,249,22,252,13,2,248,22,78, +195,21,93,2,111,11,11,27,248,22,87,194,28,249,22,252,11,2,194,2,111, +194,28,28,248,22,50,193,28,249,22,252,11,2,248,22,52,195,2,114,28,248, +22,50,248,22,53,194,28,249,22,252,11,2,248,22,78,195,2,111,248,22,57, +248,22,80,194,11,11,11,11,249,22,59,2,114,196,249,22,59,195,196,249,22, +59,194,195,83,159,33,93,80,159,33,48,34,32,158,89,162,33,35,39,2,35, +222,28,28,248,22,50,193,28,249,22,252,11,2,248,22,52,195,2,114,28,248, +22,50,248,22,53,194,248,22,57,248,22,80,194,11,11,11,250,22,59,67,99, +111,110,115,47,35,102,159,248,22,78,196,196,250,22,59,69,97,112,112,101,110, +100,47,35,102,160,195,196,83,159,33,93,80,159,33,54,34,89,162,33,37,8, +50,2,48,223,0,91,159,35,10,90,161,34,33,10,195,90,161,34,34,10,89, +162,33,39,8,41,2,89,226,2,5,3,1,28,28,199,28,248,80,158,37,46, +197,27,248,80,158,38,41,198,28,248,80,158,38,46,193,28,27,248,80,158,39, +42,194,28,248,22,41,248,22,210,194,249,22,223,194,20,15,159,40,33,8,37, +11,248,22,252,9,2,27,248,80,158,40,42,200,28,248,22,41,248,22,210,194, +249,22,223,194,20,15,159,41,33,8,37,11,11,11,11,11,91,159,39,11,90, +161,34,33,11,248,80,158,43,42,203,90,161,36,34,11,27,248,80,158,44,41, +248,80,158,45,41,205,27,248,80,158,45,42,248,80,158,46,41,206,28,28,248, +80,158,45,46,194,27,248,80,158,46,42,195,28,248,22,41,248,22,210,194,249, +22,223,194,20,15,159,47,33,8,37,11,11,27,248,80,158,46,41,195,27,248, +80,158,47,42,196,28,28,248,80,158,47,46,194,27,248,80,158,48,42,195,28, +248,22,41,248,22,210,194,249,22,223,194,20,15,159,49,33,8,37,11,11,250, +80,159,49,8,44,34,248,80,158,50,41,197,35,248,80,158,50,42,197,250,22, +7,34,196,195,250,22,7,33,196,195,90,161,34,37,11,28,248,22,186,194,192, +249,22,209,11,249,22,59,27,248,22,171,199,28,248,22,186,193,197,249,22,209, +11,249,22,59,249,80,159,53,8,45,34,203,248,22,171,199,20,15,159,51,34, +8,37,20,15,159,46,34,8,37,90,161,34,38,11,28,203,249,80,159,44,43, +35,198,202,11,87,94,28,248,22,57,198,251,22,1,22,252,39,2,66,115,121, +110,116,97,120,161,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,252,11,2,205, +201,248,22,59,204,249,22,59,205,201,12,27,28,204,249,22,2,89,162,33,34, +42,9,226,12,10,15,14,251,80,159,40,55,35,200,196,198,197,200,11,27,28, +205,248,32,162,89,162,33,34,38,2,103,222,28,248,22,57,193,9,28,248,22, +79,193,248,2,162,248,22,53,194,249,22,51,248,22,77,195,248,2,162,248,22, +53,196,194,11,27,28,206,248,32,163,89,162,33,34,38,2,103,222,28,248,22, +57,193,9,28,248,22,79,193,249,22,51,248,22,77,195,248,2,163,248,22,53, +196,248,2,163,248,22,53,194,195,11,27,28,23,15,248,80,159,47,56,35,195, +11,27,28,23,16,248,80,159,48,56,35,195,11,27,28,248,22,57,196,12,28, +248,22,57,197,251,22,1,22,252,39,2,2,161,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,252,11,2,23,19,23,15,248,22,59,23,18,249,22,59, +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,65,205,206,11,23,18,10,11,23,29,28, +23,19,250,22,59,2,110,21,93,61,114,164,27,27,27,249,22,2,89,162,33, +34,42,9,225,25,30,27,250,80,159,38,57,35,2,164,249,80,159,40,36,35, +200,197,196,204,28,28,249,22,181,34,248,22,64,195,28,249,22,181,33,23,17, +28,248,22,57,202,249,22,252,13,2,200,21,95,2,110,93,2,164,94,63,99, +97,114,165,2,164,11,11,11,248,22,52,193,28,28,249,22,181,35,248,22,64, +195,28,249,22,181,33,23,17,28,248,22,57,202,249,22,252,13,2,200,21,95, +2,110,93,2,164,95,2,114,94,2,165,2,164,94,64,99,97,100,114,166,2, +164,11,11,11,250,22,61,2,121,21,95,2,110,94,61,97,167,61,98,168,95, +2,114,2,167,2,168,249,80,158,8,28,51,197,9,27,250,22,61,2,121,250, +22,59,2,110,64,118,97,108,115,169,249,22,59,23,15,28,248,22,57,23,19, +2,169,21,95,66,97,112,112,101,110,100,170,68,115,104,97,108,108,111,119,115, +171,2,169,249,80,158,8,29,51,198,9,28,248,22,186,23,17,192,27,250,22, +59,65,97,112,112,108,121,172,2,170,196,27,248,22,171,23,19,28,248,22,186, +193,193,27,250,22,59,2,172,2,170,197,27,248,22,171,195,28,248,22,186,193, +193,249,32,173,89,162,33,35,46,2,140,222,28,248,22,186,194,192,27,250,22, +59,2,172,2,170,196,27,248,22,171,196,28,248,22,186,193,193,27,250,22,59, +2,172,2,170,197,27,248,22,171,195,28,248,22,186,193,193,27,250,22,59,2, +172,2,170,197,27,248,22,171,195,28,248,22,186,193,193,249,2,173,250,22,59, +2,172,2,170,198,248,22,171,195,250,22,59,2,172,2,170,198,248,22,171,195, +28,248,22,57,201,192,250,22,59,2,119,248,22,59,249,22,59,2,171,249,22, +61,2,114,249,80,158,8,32,51,249,22,2,89,162,33,34,42,9,225,34,39, +36,250,80,159,38,57,35,2,164,249,80,159,40,36,35,200,197,196,23,20,9, +195,27,248,80,159,56,58,35,199,28,249,22,252,11,2,194,2,138,193,250,22, +59,2,170,196,195,12,28,248,80,158,37,46,197,27,248,80,158,38,42,198,28, +28,200,28,248,22,41,248,22,210,194,249,22,223,194,20,15,159,39,33,8,37, +11,11,28,28,248,80,158,38,46,248,80,158,39,41,199,248,80,158,38,40,248, +80,158,39,41,248,80,158,40,41,200,11,27,248,80,158,39,42,248,80,158,40, +41,200,253,215,198,205,198,11,23,16,23,17,251,22,252,39,2,2,161,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,46,41,206,206,23,15,23,16,23,17,23,18, +28,200,250,22,59,2,110,21,93,2,164,251,80,159,46,59,35,206,248,80,159, +47,58,35,201,248,80,159,47,58,35,200,206,12,28,249,80,158,38,50,198,11, +27,253,214,248,22,252,229,1,248,22,210,205,204,203,206,23,15,23,16,28,198, +250,22,59,2,110,21,93,2,164,249,22,59,72,108,105,115,116,45,62,118,101, +99,116,111,114,174,249,22,59,2,115,248,80,159,45,58,35,200,12,28,248,80, +158,37,49,197,28,249,22,5,89,162,33,34,37,9,223,6,28,248,22,206,194, +249,22,221,194,195,11,196,28,197,250,22,59,2,110,21,93,2,164,249,22,59, +2,137,201,12,28,197,27,249,22,5,89,162,33,34,37,9,223,7,28,248,22, +206,194,249,22,221,194,195,11,200,28,192,250,22,59,2,110,21,93,2,164,250, +80,159,43,57,35,2,164,249,80,159,45,35,35,205,206,23,15,87,95,28,200, +28,28,248,22,41,248,22,210,199,249,22,223,199,20,15,159,39,33,8,37,11, +251,22,252,39,2,2,161,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,39,8,27,35,199,200,250,22,59,2,110,21,93,2,164,249, +22,59,2,137,202,28,28,28,248,22,41,248,22,210,198,249,22,223,198,20,15, +159,38,33,8,37,11,199,11,12,248,202,197,28,248,22,57,197,28,197,21,95, +2,110,93,2,164,2,138,12,28,197,250,22,59,2,110,21,93,2,164,249,22, +59,2,137,201,12,27,28,197,11,247,22,110,27,253,216,203,204,203,10,28,204, +248,22,171,248,22,64,206,11,28,204,11,89,162,33,34,41,9,223,7,27,250, +22,116,196,248,22,210,198,9,28,28,248,22,50,193,249,22,5,89,162,33,34, +37,9,223,4,249,22,221,195,194,194,11,12,250,22,115,196,248,22,210,198,249, +22,51,199,197,28,198,250,22,59,2,110,21,94,2,164,63,115,114,99,175,27, +251,22,61,2,142,249,22,59,2,137,28,23,18,250,22,209,23,21,2,87,11, +11,248,80,159,46,58,35,201,21,93,2,175,28,248,80,159,42,8,28,35,203, +250,22,59,2,119,21,93,94,64,101,120,110,104,176,11,248,22,59,250,22,59, +2,117,2,118,251,22,61,72,100,121,110,97,109,105,99,45,119,105,110,100,177, +251,22,59,2,110,9,21,95,64,115,101,116,33,178,2,176,93,1,25,99,117, +114,114,101,110,116,45,101,120,99,101,112,116,105,111,110,45,104,97,110,100,108, +101,114,179,249,22,59,2,179,250,22,59,2,110,21,93,63,101,120,110,180,249, +22,59,2,118,250,22,59,2,110,9,251,22,59,2,112,21,94,70,101,120,110, +58,98,114,101,97,107,63,181,2,180,21,94,65,114,97,105,115,101,182,2,180, +250,22,59,1,20,101,108,108,105,112,115,105,115,45,99,111,117,110,116,45,101, +114,114,111,114,183,249,22,59,2,124,23,43,249,22,59,2,137,250,22,209,11, +2,79,23,46,250,22,59,2,110,9,250,22,61,2,119,248,22,59,249,22,59, +61,118,184,23,20,21,93,95,2,110,9,2,184,21,93,95,2,110,9,94,2, +179,2,176,192,249,22,1,22,65,249,22,118,197,32,185,89,162,33,35,35,9, +222,193,83,159,33,93,80,159,33,58,34,32,186,89,162,33,34,37,2,56,222, +28,28,248,22,50,193,28,249,22,252,11,2,248,22,52,195,2,110,249,22,252, +13,2,248,22,78,195,21,93,2,164,11,11,248,22,87,193,249,22,61,194,21, +93,2,164,83,159,33,93,80,159,33,59,34,89,162,33,37,47,2,58,223,0, +28,28,248,22,50,195,28,249,22,252,11,2,248,22,52,197,2,137,28,249,22, +252,11,2,248,22,78,197,248,80,158,36,42,199,27,249,22,252,11,2,198,2, +138,28,192,192,28,248,22,50,197,28,249,22,252,11,2,248,22,52,199,2,137, +249,22,252,11,2,248,22,78,199,248,80,158,37,41,200,11,11,11,11,11,249, +22,59,2,137,198,28,248,22,206,194,27,250,22,209,197,63,99,116,120,187,197, +251,22,59,2,142,249,22,59,2,137,198,251,80,159,42,59,35,11,203,204,205, +249,22,59,2,137,198,28,249,22,252,11,2,197,2,138,249,22,59,74,108,105, +115,116,45,105,109,109,117,116,97,98,108,101,188,196,28,28,248,22,50,196,249, +22,71,248,22,52,198,21,94,2,188,75,108,105,115,116,42,45,105,109,109,117, +116,97,98,108,101,189,11,250,22,61,248,22,52,199,197,249,80,158,38,51,248, +22,53,201,9,28,28,248,22,50,196,249,22,252,11,2,248,22,52,198,74,99, +111,110,115,45,105,109,109,117,116,97,98,108,101,190,11,250,22,61,2,189,197, +249,80,158,38,51,248,22,53,201,9,28,28,248,22,50,195,28,248,22,50,196, +28,249,22,252,11,2,248,22,52,197,2,165,28,249,22,252,11,2,248,22,52, +198,63,99,100,114,191,28,248,22,41,248,22,78,196,249,22,252,11,2,248,22, +78,197,248,22,78,198,11,11,11,11,11,248,22,78,195,250,22,59,2,190,197, +198,83,159,33,93,80,159,33,57,34,32,192,89,162,33,36,39,2,54,222,28, +28,194,249,22,181,195,196,11,28,249,22,252,11,2,195,33,192,28,249,22,252, +11,2,195,34,249,22,59,2,191,194,28,249,22,252,11,2,195,35,249,22,59, +64,99,100,100,114,193,194,28,249,22,252,11,2,195,36,249,22,59,65,99,100, +100,100,114,194,194,28,249,22,252,11,2,195,37,249,22,59,66,99,100,100,100, +100,114,195,194,250,22,59,69,108,105,115,116,45,116,97,105,108,196,195,196,28, +249,22,252,11,2,195,33,249,22,59,2,165,194,28,249,22,252,11,2,195,34, +249,22,59,2,166,194,28,249,22,252,11,2,195,35,249,22,59,65,99,97,100, +100,114,197,194,28,249,22,252,11,2,195,36,249,22,59,66,99,97,100,100,100, +114,198,194,250,22,59,68,108,105,115,116,45,114,101,102,199,195,196,83,159,33, +93,80,159,33,43,34,89,162,33,35,40,2,25,223,0,250,80,159,36,8,46, +34,197,196,10,83,159,33,93,80,159,33,55,34,89,162,33,37,49,2,50,223, +0,27,249,22,5,89,162,33,34,43,9,223,4,27,28,248,22,50,195,248,22, +52,195,194,252,32,200,89,162,33,38,44,2,103,222,28,28,248,22,50,195,248, +22,50,196,11,252,2,200,197,198,248,22,52,200,248,22,52,201,10,28,248,22, +50,196,252,2,200,197,198,199,248,22,52,201,11,28,248,22,206,195,28,248,22, +206,196,28,249,22,221,196,197,249,22,51,28,198,194,195,248,22,252,9,2,199, +11,11,11,197,199,197,198,248,22,50,200,197,87,94,28,192,12,251,22,1,22, +252,39,2,2,161,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,206,200, +199,27,248,22,52,201,28,248,22,206,193,192,27,248,22,52,194,28,248,22,206, +193,192,248,32,201,89,162,33,34,39,2,103,222,28,248,22,206,193,192,27,248, +22,52,194,28,248,22,206,193,192,27,248,22,52,194,28,248,22,206,193,192,27, +248,22,52,194,28,248,22,206,193,192,248,2,201,248,22,52,194,248,22,52,194, +28,249,22,252,11,2,203,194,248,22,59,202,249,22,59,203,194,192,83,159,33, +93,80,159,33,56,34,32,202,89,162,33,34,36,2,52,222,249,22,2,32,203, +89,162,33,34,39,9,222,28,248,22,206,193,192,27,248,22,52,194,28,248,22, +206,193,192,27,248,22,52,194,28,248,22,206,193,192,248,32,204,89,162,33,34, +39,2,103,222,28,248,22,206,193,192,27,248,22,52,194,28,248,22,206,193,192, +27,248,22,52,194,28,248,22,206,193,192,27,248,22,52,194,28,248,22,206,193, +192,248,2,204,248,22,52,194,248,22,52,194,194,83,159,33,93,80,159,33,8, +27,34,32,205,89,162,33,35,37,2,60,222,249,22,3,89,162,33,34,39,9, +223,2,28,248,22,50,194,249,32,206,89,162,33,35,38,2,103,222,28,248,22, +206,194,28,249,22,221,195,194,250,22,252,39,2,2,161,6,50,50,109,105,115, +115,105,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,195,12,249,2,206,194,248,22,52,196,194,248,22,52,196,12, +195,83,159,33,93,80,159,33,39,34,89,162,33,34,40,2,16,223,0,28,248, +80,158,34,46,194,27,248,80,158,35,41,195,28,248,80,158,35,46,193,28,27, +248,80,158,36,42,194,28,248,22,41,248,22,210,194,249,22,223,194,20,15,159, +37,33,8,37,11,248,22,252,9,2,27,248,80,158,37,42,197,28,248,22,41, +248,22,210,194,249,22,223,194,20,15,159,38,33,8,37,11,11,11,11,83,159, +33,93,80,159,33,44,34,32,207,89,162,33,35,38,2,27,222,249,32,208,89, +162,33,35,43,2,103,222,28,248,22,57,194,9,28,248,193,248,22,52,195,249, +22,51,27,248,22,52,197,28,248,22,206,193,192,27,248,22,52,194,28,248,22, +206,193,192,27,248,22,52,194,28,248,22,206,193,192,248,32,209,89,162,33,34, +39,2,103,222,28,248,22,206,193,192,27,248,22,52,194,28,248,22,206,193,192, +27,248,22,52,194,28,248,22,206,193,192,27,248,22,52,194,28,248,22,206,193, +192,248,2,209,248,22,52,194,248,22,52,194,249,2,208,196,248,22,53,198,249, +2,208,194,248,22,53,196,195,194,83,159,33,93,80,159,33,8,28,34,32,210, +89,162,33,34,36,2,62,222,248,32,211,89,162,33,34,39,2,103,222,28,248, +22,57,193,11,28,248,22,50,248,22,52,194,27,248,22,53,194,28,248,22,57, 193,11,28,248,22,50,248,22,52,194,10,27,248,22,53,194,28,248,22,57,193, -11,28,248,22,50,248,22,52,194,10,248,195,248,22,53,194,248,22,53,195,248, -193,248,22,53,195,193,83,159,32,93,80,159,32,8,29,33,89,162,32,33,39, -2,64,223,0,28,248,80,158,33,45,194,28,27,248,80,158,34,41,195,28,248, -80,158,34,45,193,28,27,248,80,158,35,41,194,28,248,80,158,35,45,193,28, -248,80,159,35,8,29,33,248,80,158,36,41,194,248,80,159,35,8,29,33,248, -80,158,36,40,194,11,28,248,80,158,35,48,193,248,22,252,9,2,28,248,22, -41,248,22,210,195,249,22,223,195,20,15,159,37,32,8,37,11,10,27,248,80, -158,35,40,194,28,248,80,158,35,45,193,28,248,80,159,35,8,29,33,248,80, -158,36,41,194,248,80,159,35,8,29,33,248,80,158,36,40,194,11,28,248,80, -158,35,48,193,248,22,252,9,2,28,248,22,41,248,22,210,195,249,22,223,195, -20,15,159,37,32,8,37,11,10,11,28,248,80,158,34,48,193,248,22,252,9, -2,28,248,22,41,248,22,210,195,249,22,223,195,20,15,159,36,32,8,37,11, -10,27,248,80,158,34,40,195,28,248,80,158,34,45,193,28,27,248,80,158,35, -41,194,28,248,80,158,35,45,193,28,248,80,159,35,8,29,33,248,80,158,36, -41,194,248,80,159,35,8,29,33,248,80,158,36,40,194,11,28,248,80,158,35, -48,193,248,22,252,9,2,28,248,22,41,248,22,210,195,249,22,223,195,20,15, -159,37,32,8,37,11,10,27,248,80,158,35,40,194,28,248,80,158,35,45,193, -28,248,80,159,35,8,29,33,248,80,158,36,41,194,248,80,159,35,8,29,33, -248,80,158,36,40,194,11,28,248,80,158,35,48,193,248,22,252,9,2,28,248, -22,41,248,22,210,195,249,22,223,195,20,15,159,37,32,8,37,11,10,11,28, -248,80,158,34,48,193,248,22,252,9,2,28,248,22,41,248,22,210,195,249,22, -223,195,20,15,159,36,32,8,37,11,10,11,28,248,80,158,33,48,194,248,22, -252,9,2,28,248,22,41,248,22,210,196,249,22,223,196,20,15,159,35,32,8, -37,11,10,83,159,32,99,80,159,32,8,30,33,80,159,32,8,31,33,80,159, -32,8,32,33,80,159,32,8,33,33,80,159,32,8,34,33,80,159,32,8,35, -33,80,159,32,8,36,33,27,247,22,252,113,2,87,94,28,192,28,248,22,252, -112,2,193,12,250,22,252,40,2,73,100,101,102,105,110,101,45,115,116,114,117, -99,116,177,6,15,15,105,110,115,112,101,99,116,111,114,32,111,114,32,35,102, -195,12,91,159,37,11,90,161,37,32,11,254,22,252,90,2,2,81,11,34,32, -11,9,204,254,22,7,199,200,201,250,22,252,92,2,205,32,65,100,101,112,116, -104,178,250,22,252,93,2,206,32,2,178,250,22,252,92,2,205,33,66,118,97, -108,118,97,114,179,250,22,252,93,2,206,33,2,179,95,68,35,37,107,101,114, -110,101,108,180,2,18,2,80,9,0}; - EVAL_ONE_SIZED_STR((char *)expr, 9648); +11,28,248,22,50,248,22,52,194,10,248,32,212,89,162,33,34,38,2,103,222, +28,248,22,57,193,11,28,248,22,50,248,22,52,194,10,27,248,22,53,194,28, +248,22,57,193,11,28,248,22,50,248,22,52,194,10,27,248,22,53,194,28,248, +22,57,193,11,28,248,22,50,248,22,52,194,10,248,2,212,248,22,53,194,248, +22,53,194,248,2,211,248,22,53,194,193,83,159,33,93,80,159,33,8,29,34, +89,162,33,34,40,2,64,223,0,28,248,80,158,34,46,194,28,27,248,80,158, +35,42,195,28,248,80,158,35,46,193,28,27,248,80,158,36,42,194,28,248,80, +158,36,46,193,28,248,80,159,36,8,29,34,248,80,158,37,42,194,248,80,159, +36,8,29,34,248,80,158,37,41,194,11,28,248,80,158,36,49,193,248,22,252, +9,2,28,248,22,41,248,22,210,195,249,22,223,195,20,15,159,38,33,8,37, +11,10,27,248,80,158,36,41,194,28,248,80,158,36,46,193,28,248,80,159,36, +8,29,34,248,80,158,37,42,194,248,80,159,36,8,29,34,248,80,158,37,41, +194,11,28,248,80,158,36,49,193,248,22,252,9,2,28,248,22,41,248,22,210, +195,249,22,223,195,20,15,159,38,33,8,37,11,10,11,28,248,80,158,35,49, +193,248,22,252,9,2,28,248,22,41,248,22,210,195,249,22,223,195,20,15,159, +37,33,8,37,11,10,27,248,80,158,35,41,195,28,248,80,158,35,46,193,28, +27,248,80,158,36,42,194,28,248,80,158,36,46,193,28,248,80,159,36,8,29, +34,248,80,158,37,42,194,248,80,159,36,8,29,34,248,80,158,37,41,194,11, +28,248,80,158,36,49,193,248,22,252,9,2,28,248,22,41,248,22,210,195,249, +22,223,195,20,15,159,38,33,8,37,11,10,27,248,80,158,36,41,194,28,248, +80,158,36,46,193,28,248,80,159,36,8,29,34,248,80,158,37,42,194,248,80, +159,36,8,29,34,248,80,158,37,41,194,11,28,248,80,158,36,49,193,248,22, +252,9,2,28,248,22,41,248,22,210,195,249,22,223,195,20,15,159,38,33,8, +37,11,10,11,28,248,80,158,35,49,193,248,22,252,9,2,28,248,22,41,248, +22,210,195,249,22,223,195,20,15,159,37,33,8,37,11,10,11,28,248,80,158, +34,49,194,248,22,252,9,2,28,248,22,41,248,22,210,196,249,22,223,196,20, +15,159,36,33,8,37,11,10,83,159,33,99,80,159,33,8,30,34,80,159,33, +8,31,34,80,159,33,8,32,34,80,159,33,8,33,34,80,159,33,8,34,34, +80,159,33,8,35,34,80,159,33,8,36,34,27,247,22,252,114,2,87,94,28, +192,28,248,22,252,113,2,193,12,250,22,252,40,2,73,100,101,102,105,110,101, +45,115,116,114,117,99,116,213,6,15,15,105,110,115,112,101,99,116,111,114,32, +111,114,32,35,102,195,12,91,159,38,11,90,161,38,33,11,254,22,252,91,2, +2,81,11,35,33,11,9,204,254,22,7,199,200,201,250,22,252,93,2,205,33, +65,100,101,112,116,104,214,250,22,252,94,2,206,33,2,214,250,22,252,93,2, +205,34,66,118,97,108,118,97,114,215,250,22,252,94,2,206,34,2,215,95,68, +35,37,107,101,114,110,101,108,216,2,18,2,80,9,0}; + EVAL_ONE_SIZED_STR((char *)expr, 10409); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,3,51,53,50,133,252,150,15,159,32,20,98,158,16,1,20,24,65,98, -101,103,105,110,0,16,0,83,158,39,20,95,114,69,35,37,115,116,120,99,97, -115,101,1,29,2,11,11,10,10,10,32,80,158,32,32,20,98,158,16,1,30, -3,2,2,1,20,101,108,108,105,112,115,105,115,45,99,111,117,110,116,45,101, -114,114,111,114,4,254,1,16,0,11,11,16,1,2,4,33,11,16,2,66,115, -121,110,116,97,120,5,73,115,121,110,116,97,120,45,99,97,115,101,42,42,6, -16,2,11,11,16,2,2,5,2,6,32,34,94,16,5,93,2,6,89,162,32, -33,8,32,9,223,0,91,159,33,10,90,161,33,32,10,28,248,80,158,34,32, -195,248,22,53,248,80,158,35,33,196,11,87,94,28,28,248,80,158,34,32,195, -249,22,183,248,22,64,210,35,11,12,250,22,252,39,2,11,6,8,8,98,97, -100,32,102,111,114,109,197,27,248,22,52,209,27,248,22,78,210,27,248,22,87, -211,27,248,22,90,212,27,248,22,90,248,22,53,214,27,248,22,89,248,22,53, -215,87,96,28,248,80,158,40,32,195,12,250,22,252,39,2,248,22,210,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,32,33,39,9,224,9,7,28,248,80,158,34,34,195,12,250,22,252,39,2, -248,22,210,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,42,33,197, -249,22,3,89,162,32,33,40,9,224,9,7,28,28,248,80,158,34,32,195,250, -22,184,34,248,22,64,248,80,158,38,33,199,35,11,12,250,22,252,39,2,248, -22,210,196,6,10,10,98,97,100,32,99,108,97,117,115,101,197,194,27,249,22, -2,80,158,42,35,195,27,249,22,2,89,162,32,33,37,9,223,11,28,248,80, -158,33,36,248,80,158,34,37,248,80,158,35,37,196,248,80,158,33,35,248,80, -158,34,37,195,11,196,27,249,22,2,89,162,32,33,37,9,223,12,27,248,80, -158,34,37,248,80,158,35,37,196,28,248,80,158,34,36,193,248,80,158,34,35, -193,248,80,158,34,35,248,80,158,35,37,196,197,27,20,15,159,43,32,41,27, -20,15,159,44,33,41,27,249,22,2,89,162,32,33,41,9,225,15,10,13,251, -80,158,38,38,196,199,199,248,80,158,39,33,198,248,80,158,48,33,200,27,28, -248,80,158,47,34,201,249,22,223,202,20,15,159,48,34,41,11,250,22,209,20, -15,159,49,35,41,250,22,59,20,15,159,52,36,41,248,22,59,249,22,59,204, -28,248,22,210,23,21,23,19,250,22,59,20,15,159,58,37,41,249,22,59,20, -15,159,8,28,38,41,249,22,209,23,26,64,104,101,114,101,7,23,22,251,91, -159,33,11,20,12,95,33,192,89,162,32,36,8,42,64,108,111,111,112,8,230, -25,19,20,23,11,13,14,0,28,248,22,57,201,251,22,59,20,15,159,43,39, -41,11,6,10,10,98,97,100,32,115,121,110,116,97,120,197,27,251,197,248,22, -53,206,248,22,53,23,15,248,22,53,23,16,248,22,53,23,17,27,248,22,52, -203,27,248,22,52,205,27,248,22,52,23,15,27,248,22,52,23,17,91,159,35, -10,90,161,33,32,10,249,22,2,89,162,32,33,35,9,222,248,91,159,33,11, -20,12,95,33,192,89,162,32,33,39,2,8,223,0,28,248,22,206,194,193,27, -248,22,52,195,28,248,22,206,193,192,27,248,22,52,194,28,248,22,206,193,192, -27,248,22,52,194,28,248,22,206,193,192,248,196,248,22,52,194,193,198,90,161, -33,33,10,249,22,2,89,162,32,33,36,9,222,250,22,209,195,247,22,48,11, -209,90,161,33,34,10,248,22,171,248,22,64,209,27,28,248,22,52,23,19,248, -22,59,20,15,159,49,40,41,200,27,252,80,158,54,39,23,19,205,205,248,80, -158,55,33,23,21,248,22,252,9,2,23,19,27,28,206,249,22,252,13,2,195, -21,95,66,108,97,109,98,100,97,9,93,61,101,10,2,10,249,22,252,13,2, -195,21,95,2,9,94,2,10,79,109,111,100,117,108,101,45,105,100,101,110,116, -105,102,105,101,114,61,63,11,2,10,27,250,22,59,20,15,159,54,41,41,248, -22,59,249,22,59,23,20,28,199,23,19,250,22,61,250,22,209,20,15,159,8, -31,42,41,206,23,22,23,22,28,23,24,9,248,22,59,23,28,251,22,59,20, -15,159,58,43,41,28,200,10,23,21,250,22,59,20,15,159,8,29,44,41,250, -22,2,89,162,32,34,45,9,226,32,27,19,17,249,22,59,199,27,249,80,158, -40,40,201,212,27,28,249,22,181,214,195,28,249,22,252,11,2,195,32,64,116, -97,105,108,12,28,249,22,252,11,2,195,33,20,15,159,39,45,41,28,249,22, -252,11,2,195,34,20,15,159,39,46,41,28,249,22,252,11,2,195,35,20,15, -159,39,47,41,28,249,22,252,11,2,195,36,20,15,159,39,48,41,2,12,28, -249,22,252,11,2,195,32,20,15,159,39,49,41,28,249,22,252,11,2,195,33, -20,15,159,39,50,41,28,249,22,252,11,2,195,34,20,15,159,39,51,41,28, -249,22,252,11,2,195,35,20,15,159,39,52,41,11,28,249,22,252,11,2,194, -2,12,28,248,22,186,194,198,250,22,59,20,15,159,42,53,41,201,196,28,192, -249,22,59,194,200,250,22,59,20,15,159,42,54,41,201,196,24,17,24,18,251, -22,59,20,15,159,8,33,55,41,251,22,2,89,162,32,35,44,9,223,37,249, -22,59,248,22,59,196,250,22,59,20,15,159,37,56,41,249,91,159,33,11,20, -12,95,33,192,89,162,32,34,45,2,8,223,0,28,248,22,206,194,194,27,248, -22,52,195,27,248,22,170,197,28,248,22,206,194,192,27,248,22,52,195,27,248, -22,170,195,28,248,22,206,194,192,27,248,22,52,195,27,248,22,170,195,28,248, -22,206,194,192,249,200,248,22,52,196,248,22,170,195,201,32,249,22,59,20,15, -159,39,57,41,202,24,22,23,26,24,23,9,28,23,23,251,22,59,20,15,159, -8,37,58,41,23,27,23,25,23,21,23,21,202,28,201,250,22,59,20,15,159, -54,59,41,248,22,59,249,22,59,68,116,114,121,45,110,101,120,116,13,250,22, -59,20,15,159,8,28,8,28,41,247,22,59,23,20,195,192,23,16,23,15,203, -206,23,18,32,20,98,158,16,9,30,14,65,35,37,115,116,120,15,69,115,116, -120,45,108,105,115,116,63,16,8,30,17,2,15,69,115,116,120,45,62,108,105, -115,116,18,4,30,19,2,15,71,105,100,101,110,116,105,102,105,101,114,63,20, -2,30,21,2,15,67,115,116,120,45,99,97,114,22,5,30,23,2,15,69,115, -116,120,45,112,97,105,114,63,24,11,30,25,2,15,67,115,116,120,45,99,100, -114,26,6,30,27,64,35,37,115,99,28,74,103,101,116,45,109,97,116,99,104, -45,118,97,114,115,29,0,30,30,2,28,74,109,97,107,101,45,109,97,116,99, -104,38,101,110,118,31,1,30,32,2,28,72,115,116,120,45,109,101,109,113,45, -112,111,115,33,5,16,29,18,101,63,97,114,103,34,41,98,39,10,32,11,94, -159,74,35,37,115,109,97,108,108,45,115,99,104,101,109,101,35,9,11,159,2, -15,9,11,16,6,2,5,2,2,2,6,2,2,2,4,2,2,98,38,10,33, -11,95,159,2,28,9,11,159,2,35,9,11,159,2,15,9,11,16,0,96,37, -8,254,1,11,16,0,16,4,36,11,61,120,36,3,1,7,101,110,118,50,53, -54,49,37,16,4,35,11,61,108,38,3,1,7,101,110,118,50,53,54,51,39, -16,14,34,11,63,119,104,111,40,71,97,114,103,45,105,115,45,115,116,120,63, -41,64,101,120,112,114,42,63,107,119,115,43,68,108,105,116,45,99,111,109,112, -44,67,99,108,97,117,115,101,115,45,3,1,7,101,110,118,50,53,54,54,46, -2,46,2,46,2,46,2,46,2,46,16,8,33,11,68,112,97,116,116,101,114, -110,115,47,67,102,101,110,100,101,114,115,48,67,97,110,115,119,101,114,115,49, -3,1,7,101,110,118,50,53,55,48,50,2,50,2,50,18,102,64,114,115,108, -116,51,43,39,38,37,36,35,34,33,16,4,42,11,2,34,3,1,7,101,110, -118,50,53,55,52,52,18,102,2,11,45,39,38,37,36,35,34,33,16,8,44, -11,2,34,2,51,73,112,97,116,116,101,114,110,45,118,97,114,115,115,53,2, -52,2,52,2,52,18,102,2,7,47,39,38,37,36,35,34,33,16,10,46,11, -2,34,2,51,2,53,76,108,105,116,45,99,111,109,112,45,105,115,45,109,111, -100,63,54,2,52,2,52,2,52,2,52,18,158,63,108,101,116,55,47,18,158, -1,20,100,97,116,117,109,45,62,115,121,110,116,97,120,45,111,98,106,101,99, -116,56,47,18,158,72,113,117,111,116,101,45,115,121,110,116,97,120,57,47,18, -104,78,114,97,105,115,101,45,115,121,110,116,97,120,45,101,114,114,111,114,58, -50,39,38,37,36,35,34,33,46,16,4,49,11,2,8,3,1,7,101,110,118, -50,53,55,54,59,16,4,48,11,1,20,117,110,102,108,97,116,45,112,97,116, -116,101,114,110,45,118,97,114,115,115,60,3,1,7,101,110,118,50,53,55,55, -61,18,108,2,13,55,39,38,37,36,35,34,33,46,49,48,16,4,54,11,64, -114,101,115,116,62,3,1,7,101,110,118,50,53,55,56,63,16,10,53,11,67, -112,97,116,116,101,114,110,64,66,102,101,110,100,101,114,65,79,117,110,102,108, -97,116,45,112,97,116,116,101,114,110,45,118,97,114,115,66,66,97,110,115,119, -101,114,67,3,1,7,101,110,118,50,53,55,57,68,2,68,2,68,2,68,16, -8,52,11,76,116,97,105,108,45,112,97,116,116,101,114,110,45,118,97,114,69, -69,116,101,109,112,45,118,97,114,115,70,72,112,97,116,116,101,114,110,45,118, -97,114,115,71,3,1,7,101,110,118,50,53,56,53,72,3,1,7,101,110,118, -50,53,56,51,73,3,1,7,101,110,118,50,53,56,49,74,16,8,51,11,2, -69,2,70,2,71,2,72,2,73,2,74,18,109,2,55,57,39,38,37,36,35, -34,33,46,49,48,54,53,52,51,16,8,56,11,71,100,111,45,116,114,121,45, -110,101,120,116,75,64,109,116,99,104,76,70,99,97,110,116,45,102,97,105,108, -63,77,3,1,7,101,110,118,50,53,57,49,78,2,78,2,78,18,158,2,7, -57,18,158,62,105,102,79,57,18,158,2,55,57,18,111,63,99,100,114,80,8, -28,39,38,37,36,35,34,33,46,49,48,54,53,52,51,56,16,6,59,11,71, -112,97,116,116,101,114,110,45,118,97,114,81,68,116,101,109,112,45,118,97,114, -82,3,1,7,101,110,118,50,53,57,50,83,2,83,16,4,58,11,63,112,111, -115,84,3,1,7,101,110,118,50,53,57,51,85,18,158,64,99,100,100,114,86, -8,28,18,158,65,99,100,100,100,114,87,8,28,18,158,66,99,100,100,100,100, -114,88,8,28,18,158,63,99,97,114,89,8,28,18,158,64,99,97,100,114,90, -8,28,18,158,65,99,97,100,100,114,91,8,28,18,158,66,99,97,100,100,100, -114,92,8,28,18,112,69,108,105,115,116,45,116,97,105,108,93,8,30,39,38, -37,36,35,34,33,46,49,48,54,53,52,51,56,59,58,16,4,8,29,11,68, -97,99,99,101,115,115,111,114,94,3,1,7,101,110,118,50,53,57,52,95,18, -158,68,108,105,115,116,45,114,101,102,96,8,30,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,97,57,18, -110,79,109,97,107,101,45,115,121,110,116,97,120,45,109,97,112,112,105,110,103, -98,8,32,39,38,37,36,35,34,33,46,49,48,54,53,52,51,56,16,8,8, -31,11,2,81,78,117,110,102,108,97,116,45,112,97,116,116,101,114,110,45,118, -97,114,99,2,82,3,1,7,101,110,118,50,53,57,53,100,2,100,2,100,18, -158,2,57,8,32,18,158,2,79,57,18,109,2,55,8,34,39,38,37,36,35, -34,33,46,49,48,54,53,52,51,16,10,8,33,11,2,75,2,76,2,77,61, -109,101,2,78,2,78,2,78,2,78,18,158,2,9,8,34,11,16,5,93,2, -5,89,162,32,33,53,9,223,0,91,159,33,10,90,161,33,32,10,20,15,159, -33,32,42,87,94,28,28,248,80,158,34,32,195,27,248,80,158,35,33,196,28, -248,80,158,35,32,193,248,80,158,35,34,248,80,158,36,33,194,11,11,12,250, -22,252,39,2,11,6,8,8,98,97,100,32,102,111,114,109,197,250,22,209,210, -27,248,80,158,38,35,248,80,158,39,33,200,27,251,80,158,42,36,197,11,9, -11,27,249,22,2,89,162,32,33,37,9,223,9,27,249,22,252,81,3,196,89, -162,40,32,32,9,222,11,28,248,80,158,34,37,193,192,11,195,28,28,28,248, -22,57,193,10,248,22,252,9,2,249,22,5,89,162,32,33,33,9,222,192,195, -248,80,158,40,38,195,11,249,22,59,20,15,159,41,33,42,196,27,249,91,159, -33,11,20,12,95,33,192,89,162,32,34,43,2,8,224,11,0,28,248,22,57, -196,9,27,249,195,248,22,53,198,248,22,53,199,28,248,22,52,197,249,22,51, -249,91,159,33,11,20,12,95,33,192,89,162,32,34,45,2,8,223,0,28,248, -22,186,195,193,27,248,22,59,195,27,248,22,171,197,28,248,22,186,193,193,27, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,53,50,46,49,142,252,110,16,159,33,20,98,159,33,16,1,20, +24,65,98,101,103,105,110,0,16,0,83,158,40,20,95,114,69,35,37,115,116, +120,99,97,115,101,1,29,2,11,11,10,10,10,33,80,158,33,33,20,98,159, +33,16,1,30,3,2,2,1,20,101,108,108,105,112,115,105,115,45,99,111,117, +110,116,45,101,114,114,111,114,4,254,1,16,0,11,11,16,1,2,4,34,11, +16,2,73,115,121,110,116,97,120,45,99,97,115,101,42,42,5,66,115,121,110, +116,97,120,6,16,2,11,11,16,2,2,5,2,6,33,35,94,16,5,93,2, +5,87,97,83,159,33,93,80,159,33,8,41,34,89,162,33,43,8,41,64,108, +111,111,112,7,223,0,28,248,22,57,200,251,22,59,20,15,159,37,40,42,11, +6,10,10,98,97,100,32,115,121,110,116,97,120,197,27,26,10,80,159,44,8, +41,34,204,205,206,23,15,23,16,23,17,248,22,53,23,19,248,22,53,23,20, +248,22,53,23,21,248,22,53,23,22,27,248,22,52,202,27,248,22,52,204,27, +248,22,52,206,27,248,22,52,23,16,91,159,36,10,90,161,34,33,10,249,22, +2,32,8,89,162,33,34,39,9,222,28,248,22,206,193,192,27,248,22,52,194, +28,248,22,206,193,192,27,248,22,52,194,28,248,22,206,193,192,248,32,9,89, +162,33,34,39,2,7,222,28,248,22,206,193,192,27,248,22,52,194,28,248,22, +206,193,192,27,248,22,52,194,28,248,22,206,193,192,27,248,22,52,194,28,248, +22,206,193,192,248,2,9,248,22,52,194,248,22,52,194,198,90,161,34,34,10, +249,22,2,32,10,89,162,33,34,37,9,222,250,22,209,195,247,22,48,11,209, +90,161,34,35,10,248,22,171,248,22,64,209,27,28,248,22,52,23,18,248,22, +59,20,15,159,43,41,42,200,27,252,80,158,48,40,23,19,205,205,248,80,158, +49,34,23,21,248,22,252,9,2,23,19,27,28,206,249,22,252,13,2,195,21, +95,66,108,97,109,98,100,97,11,93,61,101,12,2,12,249,22,252,13,2,195, +21,95,2,11,94,2,12,79,109,111,100,117,108,101,45,105,100,101,110,116,105, +102,105,101,114,61,63,13,2,12,27,250,22,59,20,15,159,48,42,42,248,22, +59,249,22,59,23,20,28,199,23,19,250,22,61,250,22,209,20,15,159,57,43, +42,206,23,22,23,22,28,23,24,9,248,22,59,23,28,251,22,59,20,15,159, +52,44,42,28,200,10,23,21,250,22,59,20,15,159,55,45,42,250,22,2,89, +162,33,35,46,9,226,25,27,19,17,249,22,59,199,27,249,80,158,41,41,201, +212,27,28,249,22,181,214,195,28,249,22,252,11,2,195,33,64,116,97,105,108, +14,28,249,22,252,11,2,195,34,20,15,159,40,46,42,28,249,22,252,11,2, +195,35,20,15,159,40,47,42,28,249,22,252,11,2,195,36,20,15,159,40,48, +42,28,249,22,252,11,2,195,37,20,15,159,40,49,42,2,14,28,249,22,252, +11,2,195,33,20,15,159,40,50,42,28,249,22,252,11,2,195,34,20,15,159, +40,51,42,28,249,22,252,11,2,195,35,20,15,159,40,52,42,28,249,22,252, +11,2,195,36,20,15,159,40,53,42,11,28,249,22,252,11,2,194,2,14,28, +248,22,186,194,198,250,22,59,20,15,159,43,54,42,201,196,28,192,249,22,59, +194,200,250,22,59,20,15,159,43,55,42,201,196,24,17,24,18,251,22,59,20, +15,159,59,56,42,251,22,2,80,159,8,30,8,42,34,24,22,23,26,24,23, +9,28,23,23,251,22,59,20,15,159,8,30,59,42,23,27,23,25,23,21,23, +21,202,28,201,250,22,59,20,15,159,48,8,27,42,248,22,59,249,22,59,68, +116,114,121,45,110,101,120,116,15,250,22,59,20,15,159,54,8,28,42,247,22, +59,23,20,195,192,83,159,33,93,80,159,33,8,42,34,89,162,33,36,48,9, +223,0,249,22,59,248,22,59,196,250,22,59,20,15,159,38,57,42,28,248,22, +206,200,33,27,248,22,52,201,28,248,22,206,193,34,27,248,22,52,194,28,248, +22,206,193,35,249,32,16,89,162,33,35,44,2,7,222,28,248,22,206,193,193, +27,248,22,52,194,27,248,22,170,196,28,248,22,206,194,192,27,248,22,52,195, +27,248,22,170,195,28,248,22,206,194,192,27,248,22,52,195,27,248,22,170,195, +28,248,22,206,194,192,249,2,16,248,22,52,196,248,22,170,195,248,22,52,195, +36,249,22,59,20,15,159,40,58,42,202,83,159,33,93,80,159,33,8,40,34, +89,162,33,34,38,9,223,0,27,248,80,158,35,38,248,80,158,36,38,196,28, +248,80,158,35,37,193,248,80,158,35,36,193,248,80,158,35,36,248,80,158,36, +38,196,83,159,33,93,80,159,33,8,39,34,89,162,33,34,38,9,223,0,28, +248,80,158,34,37,248,80,158,35,38,248,80,158,36,38,196,248,80,158,34,36, +248,80,158,35,38,195,11,89,162,33,34,8,33,9,223,0,91,159,34,10,90, +161,34,33,10,28,248,80,158,35,33,195,248,22,53,248,80,158,36,34,196,11, +87,94,28,28,248,80,158,35,33,195,249,22,183,248,22,64,210,36,11,12,250, +22,252,39,2,11,6,8,8,98,97,100,32,102,111,114,109,197,27,248,22,52, +209,27,248,22,78,210,27,248,22,87,211,27,248,22,90,212,27,248,22,90,248, +22,53,214,27,248,22,89,248,22,53,215,87,96,28,248,80,158,41,33,195,12, +250,22,252,39,2,248,22,210,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,33,34,40,9,224,9,7,28,248,80, +158,35,35,195,12,250,22,252,39,2,248,22,210,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,43,34,197,249,22,3,89,162,33,34,41,9,224,9, +7,28,28,248,80,158,35,33,195,250,22,184,35,248,22,64,248,80,158,39,34, +199,36,11,12,250,22,252,39,2,248,22,210,196,6,10,10,98,97,100,32,99, +108,97,117,115,101,197,194,27,249,22,2,80,158,43,36,195,27,249,22,2,80, +159,44,8,39,34,196,27,249,22,2,80,159,45,8,40,34,197,27,20,15,159, +44,33,42,27,20,15,159,45,34,42,27,249,22,2,89,162,33,34,42,9,225, +15,10,13,251,80,158,39,39,196,199,199,248,80,158,40,34,198,248,80,158,49, +34,200,27,28,248,80,158,48,35,201,249,22,223,202,20,15,159,49,35,42,11, +250,22,209,20,15,159,50,36,42,250,22,59,20,15,159,53,37,42,248,22,59, +249,22,59,204,28,248,22,210,23,21,23,19,250,22,59,20,15,159,59,38,42, +249,22,59,20,15,159,8,28,39,42,249,22,209,23,26,64,104,101,114,101,17, +23,22,26,10,80,159,8,30,8,41,34,23,19,23,18,23,16,23,28,23,25, +23,24,23,22,23,21,23,17,23,20,23,18,33,20,98,159,37,16,9,30,18, +65,35,37,115,116,120,19,69,115,116,120,45,108,105,115,116,63,20,8,30,21, +2,19,69,115,116,120,45,62,108,105,115,116,22,4,30,23,2,19,71,105,100, +101,110,116,105,102,105,101,114,63,24,2,30,25,2,19,67,115,116,120,45,99, +97,114,26,5,30,27,2,19,69,115,116,120,45,112,97,105,114,63,28,11,30, +29,2,19,67,115,116,120,45,99,100,114,30,6,30,31,64,35,37,115,99,32, +74,103,101,116,45,109,97,116,99,104,45,118,97,114,115,33,0,30,34,2,32, +74,109,97,107,101,45,109,97,116,99,104,38,101,110,118,35,1,30,36,2,32, +72,115,116,120,45,109,101,109,113,45,112,111,115,37,5,16,29,18,101,63,97, +114,103,38,42,98,40,10,33,11,94,159,74,35,37,115,109,97,108,108,45,115, +99,104,101,109,101,39,9,11,159,2,19,9,11,16,6,2,5,2,2,2,6, +2,2,2,4,2,2,98,39,10,34,11,95,159,2,32,9,11,159,2,39,9, +11,159,2,19,9,11,16,0,96,38,8,254,1,11,16,0,16,4,37,11,61, +120,40,3,1,7,101,110,118,50,53,54,49,41,16,4,36,11,61,108,42,3, +1,7,101,110,118,50,53,54,51,43,16,14,35,11,63,119,104,111,44,71,97, +114,103,45,105,115,45,115,116,120,63,45,64,101,120,112,114,46,63,107,119,115, +47,68,108,105,116,45,99,111,109,112,48,67,99,108,97,117,115,101,115,49,3, +1,7,101,110,118,50,53,54,54,50,2,50,2,50,2,50,2,50,2,50,16, +8,34,11,68,112,97,116,116,101,114,110,115,51,67,102,101,110,100,101,114,115, +52,67,97,110,115,119,101,114,115,53,3,1,7,101,110,118,50,53,55,48,54, +2,54,2,54,18,102,64,114,115,108,116,55,44,40,39,38,37,36,35,34,16, +4,43,11,2,38,3,1,7,101,110,118,50,53,55,52,56,18,102,2,13,46, +40,39,38,37,36,35,34,16,8,45,11,2,38,2,55,73,112,97,116,116,101, +114,110,45,118,97,114,115,115,57,2,56,2,56,2,56,18,102,2,17,48,40, +39,38,37,36,35,34,16,10,47,11,2,38,2,55,2,57,76,108,105,116,45, +99,111,109,112,45,105,115,45,109,111,100,63,58,2,56,2,56,2,56,2,56, +18,158,63,108,101,116,59,48,18,158,1,20,100,97,116,117,109,45,62,115,121, +110,116,97,120,45,111,98,106,101,99,116,60,48,18,158,72,113,117,111,116,101, +45,115,121,110,116,97,120,61,48,18,104,78,114,97,105,115,101,45,115,121,110, +116,97,120,45,101,114,114,111,114,62,51,40,39,38,37,36,35,34,47,16,4, +50,11,2,7,3,1,7,101,110,118,50,53,55,54,63,16,4,49,11,1,20, +117,110,102,108,97,116,45,112,97,116,116,101,114,110,45,118,97,114,115,115,64, +3,1,7,101,110,118,50,53,55,55,65,18,108,2,15,56,40,39,38,37,36, +35,34,47,50,49,16,4,55,11,64,114,101,115,116,66,3,1,7,101,110,118, +50,53,55,56,67,16,10,54,11,67,112,97,116,116,101,114,110,68,66,102,101, +110,100,101,114,69,79,117,110,102,108,97,116,45,112,97,116,116,101,114,110,45, +118,97,114,115,70,66,97,110,115,119,101,114,71,3,1,7,101,110,118,50,53, +55,57,72,2,72,2,72,2,72,16,8,53,11,76,116,97,105,108,45,112,97, +116,116,101,114,110,45,118,97,114,73,69,116,101,109,112,45,118,97,114,115,74, +72,112,97,116,116,101,114,110,45,118,97,114,115,75,3,1,7,101,110,118,50, +53,56,53,76,3,1,7,101,110,118,50,53,56,51,77,3,1,7,101,110,118, +50,53,56,49,78,16,8,52,11,2,73,2,74,2,75,2,76,2,77,2,78, +18,109,2,59,58,40,39,38,37,36,35,34,47,50,49,55,54,53,52,16,8, +57,11,71,100,111,45,116,114,121,45,110,101,120,116,79,64,109,116,99,104,80, +70,99,97,110,116,45,102,97,105,108,63,81,3,1,7,101,110,118,50,53,57, +49,82,2,82,2,82,18,158,2,17,58,18,158,62,105,102,83,58,18,158,2, +59,58,18,111,63,99,100,114,84,8,28,40,39,38,37,36,35,34,47,50,49, +55,54,53,52,57,16,6,8,27,11,71,112,97,116,116,101,114,110,45,118,97, +114,85,68,116,101,109,112,45,118,97,114,86,3,1,7,101,110,118,50,53,57, +50,87,2,87,16,4,59,11,63,112,111,115,88,3,1,7,101,110,118,50,53, +57,51,89,18,158,64,99,100,100,114,90,8,28,18,158,65,99,100,100,100,114, +91,8,28,18,158,66,99,100,100,100,100,114,92,8,28,18,158,63,99,97,114, +93,8,28,18,158,64,99,97,100,114,94,8,28,18,158,65,99,97,100,100,114, +95,8,28,18,158,66,99,97,100,100,100,114,96,8,28,18,112,69,108,105,115, +116,45,116,97,105,108,97,8,30,40,39,38,37,36,35,34,47,50,49,55,54, +53,52,57,8,27,59,16,4,8,29,11,68,97,99,99,101,115,115,111,114,98, +3,1,7,101,110,118,50,53,57,52,99,18,158,68,108,105,115,116,45,114,101, +102,100,8,30,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,101,58,18,110,79,109,97,107,101,45,115,121, +110,116,97,120,45,109,97,112,112,105,110,103,102,8,32,40,39,38,37,36,35, +34,47,50,49,55,54,53,52,57,16,8,8,31,11,2,85,78,117,110,102,108, +97,116,45,112,97,116,116,101,114,110,45,118,97,114,103,2,86,3,1,7,101, +110,118,50,53,57,53,104,2,104,2,104,18,158,2,61,8,32,18,158,2,83, +58,18,109,2,59,8,34,40,39,38,37,36,35,34,47,50,49,55,54,53,52, +16,10,8,33,11,2,79,2,80,2,81,61,109,105,2,82,2,82,2,82,2, +82,18,158,2,11,8,34,11,16,5,93,2,6,87,96,83,159,33,93,80,159, +33,51,34,89,162,33,36,45,2,7,223,0,28,248,22,57,196,9,28,248,22, +52,196,249,22,51,250,22,209,248,22,52,200,248,22,210,248,80,158,40,41,248, +22,52,203,198,250,80,159,38,51,34,198,248,22,53,200,248,22,53,201,250,80, +159,36,51,34,196,248,22,53,198,248,22,53,199,83,159,33,93,80,159,33,50, +34,89,162,33,35,49,2,7,223,0,28,248,22,57,195,9,27,249,80,159,36, +50,34,248,22,53,197,248,22,53,198,28,248,22,52,196,249,22,51,27,248,22, +52,198,27,248,80,158,39,40,248,22,52,201,28,248,22,186,193,193,27,248,22, +59,195,27,248,22,171,195,28,248,22,186,193,193,27,248,22,59,195,27,248,22, +171,195,28,248,22,186,193,193,249,32,106,89,162,33,35,44,2,7,222,28,248, +22,186,194,192,27,248,22,59,194,27,248,22,171,196,28,248,22,186,193,193,27, 248,22,59,195,27,248,22,171,195,28,248,22,186,193,193,27,248,22,59,195,27, -248,22,171,195,28,248,22,186,193,193,249,200,248,22,59,196,248,22,171,195,248, -22,52,200,248,80,158,39,39,248,22,52,202,194,192,196,195,27,249,91,159,33, -11,20,12,95,33,192,89,162,32,34,40,2,8,223,0,28,248,22,57,195,9, -27,249,195,248,22,53,197,248,22,53,198,28,248,22,52,196,192,249,22,51,248, -22,52,197,194,197,196,27,251,80,158,46,36,201,198,197,201,27,249,91,159,33, -11,20,12,95,33,192,89,162,32,34,47,2,8,225,14,15,0,28,248,22,57, -197,9,28,248,22,52,197,249,22,51,250,22,209,248,22,52,201,248,22,210,248, -80,158,41,40,248,22,52,204,198,249,196,248,22,53,200,248,22,53,201,249,194, -248,22,53,198,248,22,53,199,199,198,28,248,80,158,44,41,199,248,22,52,193, -250,22,59,250,22,209,24,16,199,204,27,248,22,64,197,28,248,22,186,193,20, -15,159,47,34,42,28,249,22,181,194,33,248,22,52,197,249,22,51,20,15,159, -49,35,42,198,249,22,59,20,15,159,48,36,42,250,22,209,11,66,115,114,99, -116,97,103,102,23,20,197,32,20,98,158,16,10,2,23,2,25,30,103,2,15, -69,115,116,120,45,110,117,108,108,63,104,10,2,21,30,105,2,28,72,109,97, -107,101,45,112,101,120,112,97,110,100,106,2,30,107,2,28,75,115,121,110,116, -97,120,45,109,97,112,112,105,110,103,63,108,8,30,109,2,28,72,110,111,45, -101,108,108,105,112,115,101,115,63,110,4,30,111,2,28,1,20,115,121,110,116, -97,120,45,109,97,112,112,105,110,103,45,100,101,112,116,104,112,6,30,113,2, -28,1,21,115,121,110,116,97,120,45,109,97,112,112,105,110,103,45,118,97,108, -118,97,114,114,7,2,19,16,5,18,100,2,7,8,38,39,38,37,16,4,8, -37,11,2,36,3,1,7,101,110,118,50,53,57,57,115,16,4,8,36,11,68, -104,101,114,101,45,115,116,120,116,3,1,7,101,110,118,50,54,48,49,117,16, -4,8,35,11,2,116,2,117,18,102,2,57,8,43,39,38,37,8,37,16,4, -8,42,11,2,116,2,117,16,4,8,41,11,2,64,3,1,7,101,110,118,50, -54,48,53,118,16,4,8,40,11,71,117,110,105,113,117,101,45,118,97,114,115, -119,3,1,7,101,110,118,50,54,48,54,120,16,4,8,39,11,72,118,97,114, -45,98,105,110,100,105,110,103,115,121,3,1,7,101,110,118,50,54,48,55,122, -18,105,9,8,47,39,38,37,8,37,8,42,8,41,8,40,8,39,16,6,8, -46,11,67,112,114,111,116,111,45,114,123,76,110,111,110,45,112,97,116,116,101, -114,110,45,118,97,114,115,124,3,1,7,101,110,118,50,54,49,51,125,2,125, -16,6,8,45,11,79,98,117,105,108,100,45,102,114,111,109,45,116,101,109,112, -108,97,116,101,126,61,114,127,3,1,7,101,110,118,50,54,50,50,128,2,128, -16,4,8,44,11,63,108,101,110,129,3,1,7,101,110,118,50,54,50,53,130, -18,158,65,108,105,115,116,42,131,8,47,18,104,2,57,8,48,39,38,37,8, -37,8,42,8,41,8,40,8,39,8,46,8,45,11,93,83,159,32,93,80,159, -32,32,33,89,162,32,34,38,2,4,222,251,22,252,39,2,2,5,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,196,197,95,68,35,37,107,101,114,110,101,108,132,2,15,2, -35,96,2,15,2,35,2,28,2,132,0}; - EVAL_ONE_SIZED_STR((char *)expr, 4000); +248,22,171,195,28,248,22,186,193,193,249,2,106,248,22,59,196,248,22,171,195, +248,22,59,196,248,22,171,195,194,192,83,159,33,93,80,159,33,49,34,89,162, +33,34,38,9,223,0,27,249,22,252,82,3,196,32,107,89,162,41,33,33,9, +222,11,28,248,80,158,35,38,193,192,11,89,162,33,34,54,9,223,0,91,159, +34,10,90,161,34,33,10,20,15,159,34,33,43,87,94,28,28,248,80,158,35, +33,195,27,248,80,158,36,34,196,28,248,80,158,36,33,193,248,80,158,36,35, +248,80,158,37,34,194,11,11,12,250,22,252,39,2,11,6,8,8,98,97,100, +32,102,111,114,109,197,250,22,209,210,27,248,80,158,39,36,248,80,158,40,34, +200,27,251,80,158,43,37,197,11,9,11,27,249,22,2,80,159,42,49,34,195, +28,28,28,248,22,57,193,10,248,22,252,9,2,249,22,5,32,108,89,162,33, +34,34,9,222,192,195,248,80,158,41,39,195,11,249,22,59,20,15,159,42,34, +43,196,27,249,80,159,43,50,34,196,195,27,249,32,109,89,162,33,35,39,2, +7,222,28,248,22,57,194,9,27,249,2,109,248,22,53,196,248,22,53,197,28, +248,22,52,195,192,249,22,51,248,22,52,196,194,197,196,27,251,80,158,47,37, +201,198,197,201,27,250,80,159,47,51,34,23,15,200,199,28,248,80,158,45,42, +199,248,22,52,193,250,22,59,250,22,209,24,16,199,204,27,248,22,64,197,28, +248,22,186,193,20,15,159,48,35,43,28,249,22,181,194,34,248,22,52,197,249, +22,51,20,15,159,50,36,43,198,249,22,59,20,15,159,49,37,43,250,22,209, +11,66,115,114,99,116,97,103,110,23,20,197,33,20,98,159,36,16,10,2,27, +2,29,30,111,2,19,69,115,116,120,45,110,117,108,108,63,112,10,2,25,30, +113,2,32,72,109,97,107,101,45,112,101,120,112,97,110,100,114,2,30,115,2, +32,75,115,121,110,116,97,120,45,109,97,112,112,105,110,103,63,116,8,30,117, +2,32,72,110,111,45,101,108,108,105,112,115,101,115,63,118,4,30,119,2,32, +1,20,115,121,110,116,97,120,45,109,97,112,112,105,110,103,45,100,101,112,116, +104,120,6,30,121,2,32,1,21,115,121,110,116,97,120,45,109,97,112,112,105, +110,103,45,118,97,108,118,97,114,122,7,2,23,16,5,18,100,2,17,8,38, +40,39,38,16,4,8,37,11,2,40,3,1,7,101,110,118,50,53,57,57,123, +16,4,8,36,11,68,104,101,114,101,45,115,116,120,124,3,1,7,101,110,118, +50,54,48,49,125,16,4,8,35,11,2,124,2,125,18,102,2,61,8,43,40, +39,38,8,37,16,4,8,42,11,2,124,2,125,16,4,8,41,11,2,68,3, +1,7,101,110,118,50,54,48,53,126,16,4,8,40,11,71,117,110,105,113,117, +101,45,118,97,114,115,127,3,1,7,101,110,118,50,54,48,54,128,16,4,8, +39,11,72,118,97,114,45,98,105,110,100,105,110,103,115,129,3,1,7,101,110, +118,50,54,48,55,130,18,105,9,8,47,40,39,38,8,37,8,42,8,41,8, +40,8,39,16,6,8,46,11,67,112,114,111,116,111,45,114,131,76,110,111,110, +45,112,97,116,116,101,114,110,45,118,97,114,115,132,3,1,7,101,110,118,50, +54,49,51,133,2,133,16,6,8,45,11,79,98,117,105,108,100,45,102,114,111, +109,45,116,101,109,112,108,97,116,101,134,61,114,135,3,1,7,101,110,118,50, +54,50,50,136,2,136,16,4,8,44,11,63,108,101,110,137,3,1,7,101,110, +118,50,54,50,53,138,18,158,65,108,105,115,116,42,139,8,47,18,104,2,61, +8,48,40,39,38,8,37,8,42,8,41,8,40,8,39,8,46,8,45,11,93, +83,159,33,93,80,159,33,33,34,32,140,89,162,33,35,39,2,4,222,251,22, +252,39,2,2,6,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,196,197,95,68,35,37,107,101, +114,110,101,108,141,2,19,2,39,96,2,19,2,39,2,32,2,141,0}; + EVAL_ONE_SIZED_STR((char *)expr, 4218); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,3,51,53,50,68,252,76,7,159,32,20,98,158,16,1,20,24,65,98, -101,103,105,110,0,16,0,83,158,39,20,95,114,68,35,37,115,116,120,108,111, -99,1,29,2,11,11,10,10,10,32,80,158,32,32,20,98,158,16,2,30,3, -2,2,68,108,111,99,45,105,110,115,112,4,254,1,30,5,2,2,68,114,101, -108,111,99,97,116,101,6,254,1,16,0,11,11,16,2,2,4,2,6,34,11, -16,3,71,115,121,110,116,97,120,45,99,97,115,101,7,70,115,121,110,116,97, -120,47,108,111,99,8,72,115,121,110,116,97,120,45,99,97,115,101,42,9,16, -3,11,11,11,16,3,2,7,2,8,2,9,32,35,95,16,5,93,2,9,89, -162,32,33,56,9,223,0,27,28,248,80,158,34,32,195,249,80,158,35,33,248, -80,158,36,34,197,27,248,80,158,37,35,198,28,248,80,158,37,32,193,249,80, -158,38,33,248,80,158,39,34,195,27,248,80,158,40,35,196,28,248,80,158,40, -32,193,249,80,158,41,33,248,80,158,42,34,195,27,248,80,158,43,35,196,28, -248,80,158,43,32,193,249,80,158,44,33,248,80,158,45,34,195,27,248,80,158, -46,35,196,28,248,80,158,46,36,193,248,80,158,46,37,193,11,11,11,11,11, -28,192,27,248,22,52,194,27,248,22,78,195,27,248,22,87,196,27,248,22,90, -197,27,248,22,89,198,27,252,22,61,198,201,200,199,202,27,20,15,159,40,32, -38,250,22,209,20,15,159,43,33,38,250,22,209,20,15,159,46,34,38,254,22, -62,20,15,159,53,35,38,248,22,89,23,15,20,15,159,53,36,38,248,22,78, -23,15,248,22,87,23,15,248,22,90,23,15,248,22,52,23,15,20,15,159,46, -37,38,195,250,22,252,39,2,11,6,10,10,98,97,100,32,115,121,110,116,97, -120,197,32,20,98,158,16,6,30,10,65,35,37,115,116,120,11,69,115,116,120, -45,112,97,105,114,63,12,11,30,13,2,11,67,99,111,110,115,47,35,102,14, -1,30,15,2,11,67,115,116,120,45,99,97,114,16,5,30,17,2,11,67,115, -116,120,45,99,100,114,18,6,30,19,2,11,69,115,116,120,45,108,105,115,116, -63,20,8,30,21,2,11,69,115,116,120,45,62,108,105,115,116,22,4,16,6, -18,16,2,95,66,115,114,99,116,97,103,23,34,93,8,252,88,7,95,9,8, -252,88,7,69,35,37,115,116,120,99,97,115,101,24,18,100,64,100,101,115,116, -25,41,98,40,10,32,11,94,159,74,35,37,100,101,102,105,110,101,45,101,116, -45,97,108,26,9,11,159,2,24,9,11,16,10,2,8,2,2,2,7,2,2, -2,9,2,2,2,6,2,2,2,4,2,2,98,39,10,33,11,94,159,64,35, -37,115,99,27,9,11,159,2,24,9,11,16,0,96,38,8,254,1,11,16,0, -16,4,37,11,63,115,116,120,28,3,1,7,101,110,118,50,54,50,57,29,16, -12,36,11,3,1,4,103,50,56,52,30,3,1,4,103,50,56,53,31,3,1, -4,103,50,56,54,32,3,1,4,103,50,56,55,33,3,1,4,103,50,56,56, -34,3,1,7,101,110,118,50,54,51,55,35,2,35,2,35,2,35,2,35,16, -12,35,11,61,95,36,64,115,116,120,101,37,62,107,108,38,64,105,100,61,63, -39,66,99,108,97,117,115,101,40,3,1,7,101,110,118,50,54,51,56,41,2, -41,2,41,2,41,2,41,18,158,63,99,116,120,42,41,18,158,73,115,121,110, -116,97,120,45,99,97,115,101,42,42,43,41,18,158,11,41,18,158,2,42,41, -11,16,5,93,2,7,89,162,32,33,55,9,223,0,27,28,248,80,158,34,32, -195,249,80,158,35,33,248,80,158,36,34,197,27,248,80,158,37,35,198,28,248, -80,158,37,32,193,249,80,158,38,33,248,80,158,39,34,195,27,248,80,158,40, -35,196,28,248,80,158,40,32,193,249,80,158,41,33,248,80,158,42,34,195,27, -248,80,158,43,35,196,28,248,80,158,43,36,193,248,80,158,43,37,193,11,11, -11,11,28,192,27,248,22,52,194,27,248,22,78,195,27,248,22,87,196,27,248, -22,88,197,27,251,22,61,197,199,198,200,27,20,15,159,39,32,38,250,22,209, -20,15,159,42,33,38,250,22,209,20,15,159,45,34,38,254,22,62,20,15,159, -52,35,38,248,22,88,23,15,20,15,159,52,36,38,248,22,78,23,15,248,22, -87,23,15,20,15,159,52,37,38,248,22,52,23,15,20,15,159,45,38,38,195, -250,22,252,39,2,11,6,10,10,98,97,100,32,115,121,110,116,97,120,197,32, -20,98,158,16,6,2,10,2,13,2,15,2,17,2,19,2,21,16,7,18,16, -2,95,2,23,42,93,8,252,96,7,95,9,8,252,96,7,2,24,18,100,2, -25,46,40,39,38,16,4,45,11,2,28,3,1,7,101,110,118,50,54,52,55, -44,16,10,44,11,3,1,4,103,50,56,57,45,3,1,4,103,50,57,48,46, -3,1,4,103,50,57,49,47,3,1,4,103,50,57,50,48,3,1,7,101,110, -118,50,54,53,52,49,2,49,2,49,2,49,16,10,43,11,2,36,2,37,2, -38,2,40,3,1,7,101,110,118,50,54,53,53,50,2,50,2,50,2,50,18, -158,2,42,46,18,158,2,43,46,18,158,11,46,18,158,79,109,111,100,117,108, -101,45,105,100,101,110,116,105,102,105,101,114,61,63,51,46,18,158,2,42,46, -11,16,5,93,2,8,89,162,32,33,55,9,223,0,27,28,248,80,158,34,32, -195,249,80,158,35,33,248,80,158,36,34,197,27,248,80,158,37,35,198,28,248, -80,158,37,32,193,249,80,158,38,33,248,80,158,39,34,195,27,248,80,158,40, -35,196,28,248,80,158,40,32,193,249,80,158,41,36,248,80,158,42,34,195,248, -80,158,42,37,248,80,158,43,35,196,11,11,11,28,192,27,248,22,52,194,27, -248,22,78,195,27,248,22,80,196,28,28,248,22,41,248,22,210,194,248,80,158, -37,38,249,22,252,81,3,195,89,162,40,32,32,9,222,11,11,27,20,15,159, -37,32,39,250,22,209,20,15,159,40,33,39,250,22,209,20,15,159,43,34,39, -249,22,60,20,15,159,45,35,39,201,20,15,159,43,36,39,195,27,249,22,61, -196,195,27,20,15,159,38,37,39,250,22,209,20,15,159,41,38,39,250,22,209, -20,15,159,44,39,39,250,22,60,20,15,159,47,40,39,248,22,52,203,250,22, -209,20,15,159,50,41,39,249,22,60,20,15,159,52,42,39,248,22,53,23,16, -20,15,159,50,43,39,20,15,159,44,44,39,195,250,22,252,39,2,11,6,10, -10,98,97,100,32,115,121,110,116,97,120,197,32,20,98,158,16,7,2,10,2, -13,2,15,2,17,30,52,2,11,69,97,112,112,101,110,100,47,35,102,53,0, -30,54,2,11,71,115,116,120,45,110,117,108,108,47,35,102,55,9,30,56,2, -27,75,115,121,110,116,97,120,45,109,97,112,112,105,110,103,63,57,8,16,13, -18,16,2,95,2,23,47,93,8,252,122,7,95,9,8,252,122,7,2,24,18, -100,2,25,51,40,39,38,16,4,50,11,2,28,3,1,7,101,110,118,50,54, -54,51,58,16,8,49,11,3,1,4,103,50,57,51,59,3,1,4,103,50,57, -52,60,3,1,4,103,50,57,53,61,3,1,7,101,110,118,50,54,54,57,62, -2,62,2,62,16,8,48,11,2,36,63,108,111,99,63,67,112,97,116,116,101, -114,110,64,3,1,7,101,110,118,50,54,55,48,65,2,65,2,65,18,158,2, -42,51,18,158,66,115,121,110,116,97,120,66,51,18,158,2,42,51,18,16,2, -95,2,23,52,93,8,252,123,7,95,9,8,252,123,7,2,24,18,158,2,25, -51,18,158,2,42,51,18,158,2,6,51,18,158,2,42,51,18,158,2,66,51, -18,158,2,42,51,18,158,2,42,51,11,94,83,159,32,93,80,159,32,32,33, -247,22,252,114,2,83,159,32,93,80,159,32,33,33,89,162,32,34,40,2,6, -223,0,28,248,22,215,194,27,250,22,209,198,248,22,210,199,197,251,22,232,196, -199,80,159,37,32,34,11,194,95,68,35,37,107,101,114,110,101,108,67,2,24, -2,26,95,2,67,2,24,2,27,0}; - EVAL_ONE_SIZED_STR((char *)expr, 1878); - } - { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,3,51,53,50,87,252,121,8,159,32,20,98,158,16,1,20,24,65,98, -101,103,105,110,0,16,0,83,158,39,20,95,114,70,35,37,119,105,116,104,45, -115,116,120,1,29,2,11,11,10,10,10,32,80,158,32,32,20,98,158,16,7, -30,3,2,2,76,119,105,116,104,45,115,121,110,116,97,120,45,102,97,105,108, -4,254,1,30,5,2,2,67,99,111,117,110,116,101,114,6,254,1,30,7,2, -2,73,97,112,112,101,110,100,45,110,117,109,98,101,114,8,254,1,30,9,2, -2,1,20,103,101,110,101,114,97,116,101,45,116,101,109,112,111,114,97,114,105, -101,115,10,254,1,30,11,65,35,37,115,116,120,12,69,115,116,120,45,108,105, -115,116,63,13,8,30,14,2,12,69,115,116,120,45,62,108,105,115,116,15,4, -30,16,2,12,71,105,100,101,110,116,105,102,105,101,114,63,17,2,16,0,11, -11,16,3,2,8,2,6,2,4,35,11,16,2,2,10,71,119,105,116,104,45, -115,121,110,116,97,120,18,16,2,11,11,16,2,2,10,2,18,33,34,93,16, -5,93,2,18,89,162,32,33,56,9,223,0,27,249,22,209,20,15,159,35,32, -44,196,27,28,248,80,158,35,32,194,249,80,158,36,33,248,80,158,37,34,196, -27,248,80,158,38,35,197,28,248,80,158,38,32,193,28,248,80,158,38,36,248, -80,158,39,34,194,27,248,80,158,39,35,194,28,248,80,158,39,32,193,249,80, -158,40,33,248,80,158,41,34,195,27,248,80,158,42,35,196,28,248,80,158,42, -37,193,248,80,158,42,38,193,11,11,11,11,11,28,192,27,248,22,52,194,27, -248,22,78,195,27,248,22,80,196,249,80,158,39,39,200,27,249,22,61,198,197, -27,20,15,159,41,33,44,250,22,209,20,15,159,44,34,44,250,22,209,20,15, -159,47,35,44,249,22,56,20,15,159,49,36,44,201,20,15,159,47,37,44,195, -27,28,248,80,158,36,32,195,249,80,158,37,33,248,80,158,38,34,197,27,248, -80,158,39,35,198,28,248,80,158,39,32,193,249,80,158,40,40,27,248,80,158, -42,34,196,28,248,80,158,42,37,193,248,22,8,89,162,32,33,39,9,224,10, -1,27,249,22,2,89,162,32,33,45,9,224,4,5,249,80,158,35,41,28,248, -80,158,36,32,197,249,80,158,37,33,248,80,158,38,34,199,27,248,80,158,39, -35,200,28,248,80,158,39,32,193,249,80,158,40,33,248,80,158,41,34,195,248, -80,158,41,36,248,80,158,42,35,196,11,11,194,248,80,158,37,38,196,28,248, -22,57,193,21,94,9,9,248,80,158,35,42,193,11,27,248,80,158,42,35,196, -28,248,80,158,42,32,193,249,80,158,43,33,248,80,158,44,34,195,27,248,80, -158,45,35,196,28,248,80,158,45,37,193,248,80,158,45,38,193,11,11,11,11, -28,192,27,248,22,52,194,27,248,22,78,195,27,248,22,87,196,27,248,22,90, -197,27,248,22,89,198,27,248,22,216,27,20,15,159,43,38,44,250,22,209,20, -15,159,46,39,44,200,195,87,94,251,80,158,45,43,201,206,27,20,15,159,46, -40,44,250,22,209,20,15,159,49,41,44,204,195,9,27,249,22,2,89,162,32, -33,34,9,222,248,22,48,65,119,115,116,109,112,19,195,27,249,22,2,89,162, -32,33,36,9,222,250,22,209,195,64,104,101,114,101,20,195,196,27,248,22,216, -27,20,15,159,46,42,44,250,22,209,20,15,159,49,43,44,204,195,250,22,209, -20,15,159,47,44,44,250,22,59,63,108,101,116,21,251,22,2,89,162,32,35, -42,9,222,249,22,59,194,250,22,59,1,20,100,97,116,117,109,45,62,115,121, -110,116,97,120,45,111,98,106,101,99,116,22,249,22,59,72,113,117,111,116,101, -45,115,121,110,116,97,120,23,200,199,204,203,205,249,91,159,33,11,20,12,95, -33,192,89,162,32,34,57,64,108,111,111,112,24,226,21,13,14,0,28,248,22, -57,197,27,249,22,61,196,197,27,20,15,159,37,45,44,250,22,209,20,15,159, -40,46,44,250,22,209,20,15,159,43,47,44,249,22,56,20,15,159,45,48,44, -201,20,15,159,43,49,44,195,26,8,22,59,73,115,121,110,116,97,120,45,99, -97,115,101,42,42,25,11,10,248,22,52,205,9,79,109,111,100,117,108,101,45, -105,100,101,110,116,105,102,105,101,114,61,63,26,249,22,59,248,22,52,23,16, -249,204,248,22,53,23,17,248,22,53,23,18,249,22,59,65,95,101,108,115,101, -27,249,22,59,2,4,249,22,59,2,23,250,22,209,11,248,22,208,248,22,52, -23,24,248,22,52,23,23,202,200,23,16,250,22,252,39,2,11,6,10,10,98, -97,100,32,115,121,110,116,97,120,197,32,20,98,158,16,12,30,28,2,12,69, -115,116,120,45,112,97,105,114,63,29,11,30,30,2,12,67,99,111,110,115,47, -35,102,31,1,30,32,2,12,67,115,116,120,45,99,97,114,33,5,30,34,2, -12,67,115,116,120,45,99,100,114,35,6,30,36,2,12,71,115,116,120,45,110, -117,108,108,47,35,102,37,9,30,38,2,12,2,13,8,30,39,2,12,2,15, -4,30,40,68,35,37,115,116,120,108,111,99,41,68,114,101,108,111,99,97,116, -101,42,1,30,43,2,12,69,97,112,112,101,110,100,47,35,102,44,0,30,45, -2,12,73,115,116,120,45,99,104,101,99,107,47,101,115,99,46,7,30,47,2, -12,70,115,116,120,45,114,111,116,97,116,101,48,12,30,49,64,35,37,115,99, -50,74,103,101,116,45,109,97,116,99,104,45,118,97,114,115,51,0,16,18,18, -98,2,20,38,98,36,10,32,11,96,159,69,35,37,115,116,120,99,97,115,101, -52,9,11,159,74,35,37,115,109,97,108,108,45,115,99,104,101,109,101,53,9, -11,159,2,41,9,11,159,2,12,9,11,16,10,2,18,2,2,2,10,2,2, -2,6,2,2,2,8,2,2,2,4,2,2,98,35,10,33,11,97,159,66,35, -37,99,111,110,100,54,9,11,159,71,35,37,113,113,45,97,110,100,45,111,114, -55,9,11,159,2,50,9,11,159,2,41,9,11,159,2,52,9,11,16,0,96, -34,8,254,1,11,16,0,16,4,33,11,61,120,56,3,1,7,101,110,118,50, -54,56,50,57,18,16,2,95,66,115,114,99,116,97,103,58,39,93,8,252,156, -7,95,9,8,252,156,7,2,52,18,100,64,100,101,115,116,59,42,36,35,34, -33,16,8,41,11,3,1,4,103,51,48,49,60,3,1,4,103,51,48,50,61, -3,1,4,103,51,48,51,62,3,1,7,101,110,118,50,54,56,57,63,2,63, -2,63,16,8,40,11,61,95,64,62,101,49,65,62,101,50,66,3,1,7,101, -110,118,50,54,57,48,67,2,67,2,67,18,158,63,99,116,120,68,42,18,158, -2,0,42,18,158,2,68,42,18,16,2,95,2,58,43,93,8,252,158,7,95, -9,8,252,158,7,2,52,18,100,2,59,46,36,35,34,33,16,12,45,11,3, -1,4,103,50,57,54,69,3,1,4,103,50,57,55,70,3,1,4,103,50,57, -56,71,3,1,4,103,50,57,57,72,3,1,4,103,51,48,48,73,3,1,7, -101,110,118,50,55,48,54,74,2,74,2,74,2,74,2,74,16,12,44,11,2, -64,63,111,117,116,75,62,105,110,76,2,65,2,66,3,1,7,101,110,118,50, -55,48,55,77,2,77,2,77,2,77,2,77,18,16,2,95,2,58,47,93,8, -252,174,7,95,9,8,252,174,7,2,52,18,101,2,59,49,36,35,34,33,45, -44,16,4,48,11,63,105,110,115,78,3,1,7,101,110,118,50,55,49,51,79, -18,16,2,95,2,58,50,93,8,252,175,7,95,9,8,252,175,7,2,52,18, -158,2,59,49,18,102,2,20,52,36,35,34,33,45,44,48,16,8,51,11,64, -116,109,112,115,80,65,104,101,114,101,115,81,64,111,117,116,115,82,3,1,7, -101,110,118,50,55,49,54,83,2,83,2,83,18,16,2,95,2,58,53,93,8, -252,180,7,95,9,8,252,180,7,2,52,18,103,2,59,55,36,35,34,33,45, -44,48,51,16,4,54,11,2,24,3,1,7,101,110,118,50,55,50,49,84,18, -158,2,68,55,18,158,2,0,55,18,158,2,68,55,11,96,83,159,32,93,80, -159,32,32,33,89,162,32,33,36,2,4,222,250,22,252,39,2,2,18,6,20, -20,98,105,110,100,105,110,103,32,109,97,116,99,104,32,102,97,105,108,101,100, -195,83,159,32,93,80,159,32,33,34,32,83,159,32,93,80,159,32,34,33,89, -162,32,33,38,2,8,223,0,87,94,83,160,34,11,80,159,32,33,34,248,22, -170,80,159,33,33,34,248,22,42,250,22,252,184,1,6,4,4,126,97,126,115, -197,80,159,36,33,34,83,159,32,93,80,159,32,35,33,89,162,32,33,37,2, -10,223,0,87,94,28,248,80,158,33,36,194,12,250,22,252,40,2,2,10,6, -11,11,115,121,110,116,97,120,32,112,97,105,114,196,27,248,80,158,34,37,195, -249,22,2,89,162,32,33,39,9,223,3,248,247,22,252,87,3,28,248,22,41, -195,249,22,209,11,248,80,159,36,34,34,197,28,248,22,252,136,1,195,249,22, -209,11,248,80,159,36,34,34,197,28,248,80,158,34,38,195,249,22,209,11,248, -80,159,36,34,34,248,22,210,198,249,22,209,11,248,80,159,36,34,34,64,116, -101,109,112,85,194,97,68,35,37,107,101,114,110,101,108,86,2,12,2,41,2, -53,2,52,98,2,86,2,52,2,41,2,50,2,55,2,54,0}; - EVAL_ONE_SIZED_STR((char *)expr, 2179); - } - { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,3,51,53,50,188,252,252,30,159,32,20,98,158,16,1,20,24,65,98, -101,103,105,110,0,16,0,83,158,39,20,95,114,76,35,37,115,116,120,99,97, -115,101,45,115,99,104,101,109,101,1,29,2,11,11,10,10,10,32,80,158,32, -32,20,98,158,16,2,30,3,2,2,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,4,254,1,30, -5,65,35,37,115,116,120,6,71,105,100,101,110,116,105,102,105,101,114,63,7, -2,16,0,11,11,16,0,32,11,16,23,2,4,1,20,103,101,110,101,114,97, -116,101,45,116,101,109,112,111,114,97,114,105,101,115,8,70,113,117,97,115,105, -113,117,111,116,101,9,72,115,121,110,116,97,120,45,114,117,108,101,115,10,73, -100,101,102,105,110,101,45,115,116,114,117,99,116,11,71,119,105,116,104,45,115, -121,110,116,97,120,12,67,45,100,101,102,105,110,101,13,75,108,101,116,114,101, -99,45,115,121,110,116,97,120,101,115,14,66,108,101,116,47,101,99,15,62,111, -114,16,75,115,121,110,116,97,120,45,105,100,45,114,117,108,101,115,17,73,108, -101,116,114,101,99,45,115,121,110,116,97,120,18,64,99,111,110,100,19,63,97, -110,100,20,72,115,121,110,116,97,120,45,99,97,115,101,42,21,70,115,121,110, -116,97,120,47,108,111,99,22,64,119,104,101,110,23,72,108,101,116,45,115,121, -110,116,97,120,101,115,24,74,45,100,101,102,105,110,101,45,115,121,110,116,97, -120,25,66,115,121,110,116,97,120,26,66,117,110,108,101,115,115,27,70,108,101, -116,45,115,121,110,116,97,120,28,71,115,121,110,116,97,120,45,99,97,115,101, -29,16,23,11,70,35,37,119,105,116,104,45,115,116,120,30,71,35,37,113,113, -45,97,110,100,45,111,114,31,11,74,35,37,100,101,102,105,110,101,45,101,116, -45,97,108,32,2,30,2,32,11,2,32,2,31,11,11,66,35,37,99,111,110, -100,33,2,31,68,35,37,115,116,120,108,111,99,34,2,34,2,32,11,2,32, -69,35,37,115,116,120,99,97,115,101,35,2,32,11,2,34,16,23,2,4,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,34,55,98,16,5,93,2,14,89,162,32,33,50,9,223,0,27,249,22,209, -20,15,159,35,32,44,196,27,28,248,80,158,35,32,194,249,80,158,36,33,248, -80,158,37,34,196,27,248,80,158,38,35,197,28,248,80,158,38,32,193,249,80, -158,39,36,27,248,80,158,41,34,196,28,248,80,158,41,37,193,248,22,8,89, -162,32,33,39,9,224,9,1,27,249,22,2,89,162,32,33,47,9,224,4,5, -249,80,158,35,38,28,248,80,158,36,32,197,249,80,158,37,36,27,248,80,158, -39,34,200,28,248,80,158,39,37,193,248,22,59,248,80,158,40,39,194,11,27, -248,80,158,39,35,200,28,248,80,158,39,32,193,249,80,158,40,33,248,80,158, -41,34,195,248,80,158,41,40,248,80,158,42,35,196,11,11,194,248,80,158,37, -39,196,28,248,22,57,193,21,94,9,9,248,80,158,35,41,193,11,27,248,80, -158,41,35,196,28,248,80,158,41,32,193,249,80,158,42,33,248,80,158,43,34, -195,27,248,80,158,44,35,196,28,248,80,158,44,37,193,248,80,158,44,39,193, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,53,50,46,49,69,252,83,7,159,33,20,98,159,33,16,1,20, +24,65,98,101,103,105,110,0,16,0,83,158,40,20,95,114,68,35,37,115,116, +120,108,111,99,1,29,2,11,11,10,10,10,33,80,158,33,33,20,98,159,33, +16,2,30,3,2,2,68,108,111,99,45,105,110,115,112,4,254,1,30,5,2, +2,68,114,101,108,111,99,97,116,101,6,254,1,16,0,11,11,16,2,2,4, +2,6,35,11,16,3,70,115,121,110,116,97,120,47,108,111,99,7,72,115,121, +110,116,97,120,45,99,97,115,101,42,8,71,115,121,110,116,97,120,45,99,97, +115,101,9,16,3,11,11,11,16,3,2,7,2,8,2,9,33,36,95,16,5, +93,2,8,89,162,33,34,57,9,223,0,27,28,248,80,158,35,33,195,249,80, +158,36,34,248,80,158,37,35,197,27,248,80,158,38,36,198,28,248,80,158,38, +33,193,249,80,158,39,34,248,80,158,40,35,195,27,248,80,158,41,36,196,28, +248,80,158,41,33,193,249,80,158,42,34,248,80,158,43,35,195,27,248,80,158, +44,36,196,28,248,80,158,44,33,193,249,80,158,45,34,248,80,158,46,35,195, +27,248,80,158,47,36,196,28,248,80,158,47,37,193,248,80,158,47,38,193,11, 11,11,11,11,28,192,27,248,22,52,194,27,248,22,78,195,27,248,22,87,196, -27,248,22,90,197,27,248,22,89,198,249,80,158,41,42,202,27,251,22,61,199, -202,200,201,27,20,15,159,43,33,44,91,159,33,11,90,161,33,32,11,83,160, -38,32,33,11,247,248,22,8,89,162,32,33,40,9,226,13,2,3,1,250,22, -31,89,162,32,32,36,9,225,6,3,7,90,161,33,33,10,247,22,252,184,2, -248,22,252,184,2,89,162,32,33,36,9,224,3,1,248,193,89,162,32,32,36, -9,224,2,3,28,248,22,252,181,2,193,248,22,252,186,2,193,249,80,158,35, -43,21,98,1,22,108,101,116,114,101,99,45,115,121,110,116,97,120,101,115,43, -118,97,108,117,101,115,36,94,94,94,62,105,100,37,63,46,46,46,38,64,101, -120,112,114,39,2,38,9,65,98,111,100,121,49,40,64,98,111,100,121,41,2, -38,20,15,159,35,34,44,89,162,32,32,51,9,225,6,5,4,27,250,22,209, -20,15,159,38,35,44,250,22,209,20,15,159,41,36,44,252,22,62,20,15,159, -46,37,44,250,22,2,89,162,33,33,41,9,223,17,250,22,209,20,15,159,35, -38,44,249,22,60,248,22,52,199,248,22,78,199,20,15,159,35,39,44,248,22, -78,23,16,248,22,88,23,16,20,15,159,46,40,44,248,22,87,205,248,22,52, -205,20,15,159,41,41,44,197,89,162,32,32,33,9,223,0,192,89,162,32,32, -34,9,223,3,248,22,252,184,2,208,250,22,252,39,2,11,6,10,10,98,97, -100,32,115,121,110,116,97,120,196,32,20,98,158,16,12,30,42,2,6,69,115, +27,248,22,90,197,27,248,22,89,198,27,252,22,61,199,200,198,201,202,27,20, +15,159,41,33,39,250,22,209,20,15,159,44,34,39,250,22,209,20,15,159,47, +35,39,254,22,62,20,15,159,54,36,39,248,22,89,23,15,20,15,159,54,37, +39,248,22,90,23,15,248,22,78,23,15,248,22,52,23,15,248,22,87,23,15, +20,15,159,47,38,39,195,250,22,252,39,2,11,6,10,10,98,97,100,32,115, +121,110,116,97,120,197,33,20,98,159,33,16,6,30,10,65,35,37,115,116,120, +11,69,115,116,120,45,112,97,105,114,63,12,11,30,13,2,11,67,99,111,110, +115,47,35,102,14,1,30,15,2,11,67,115,116,120,45,99,97,114,16,5,30, +17,2,11,67,115,116,120,45,99,100,114,18,6,30,19,2,11,69,115,116,120, +45,108,105,115,116,63,20,8,30,21,2,11,69,115,116,120,45,62,108,105,115, +116,22,4,16,6,18,16,2,95,66,115,114,99,116,97,103,23,35,93,8,252, +88,7,95,9,8,252,88,7,69,35,37,115,116,120,99,97,115,101,24,18,100, +64,100,101,115,116,25,42,98,41,10,33,11,94,159,74,35,37,100,101,102,105, +110,101,45,101,116,45,97,108,26,9,11,159,2,24,9,11,16,10,2,8,2, +2,2,6,2,2,2,4,2,2,2,7,2,2,2,9,2,2,98,40,10,34, +11,94,159,64,35,37,115,99,27,9,11,159,2,24,9,11,16,0,96,39,8, +254,1,11,16,0,16,4,38,11,63,115,116,120,28,3,1,7,101,110,118,50, +54,50,57,29,16,12,37,11,3,1,4,103,50,56,52,30,3,1,4,103,50, +56,53,31,3,1,4,103,50,56,54,32,3,1,4,103,50,56,55,33,3,1, +4,103,50,56,56,34,3,1,7,101,110,118,50,54,51,55,35,2,35,2,35, +2,35,2,35,16,12,36,11,61,95,36,64,115,116,120,101,37,62,107,108,38, +64,105,100,61,63,39,66,99,108,97,117,115,101,40,3,1,7,101,110,118,50, +54,51,56,41,2,41,2,41,2,41,2,41,18,158,63,99,116,120,42,42,18, +158,73,115,121,110,116,97,120,45,99,97,115,101,42,42,43,42,18,158,11,42, +18,158,2,42,42,11,16,5,93,2,9,89,162,33,34,56,9,223,0,27,28, +248,80,158,35,33,195,249,80,158,36,34,248,80,158,37,35,197,27,248,80,158, +38,36,198,28,248,80,158,38,33,193,249,80,158,39,34,248,80,158,40,35,195, +27,248,80,158,41,36,196,28,248,80,158,41,33,193,249,80,158,42,34,248,80, +158,43,35,195,27,248,80,158,44,36,196,28,248,80,158,44,37,193,248,80,158, +44,38,193,11,11,11,11,28,192,27,248,22,52,194,27,248,22,78,195,27,248, +22,87,196,27,248,22,88,197,27,251,22,61,198,197,199,200,27,20,15,159,40, +33,39,250,22,209,20,15,159,43,34,39,250,22,209,20,15,159,46,35,39,254, +22,62,20,15,159,53,36,39,248,22,88,23,15,20,15,159,53,37,39,248,22, +87,23,15,248,22,52,23,15,20,15,159,53,38,39,248,22,78,23,15,20,15, +159,46,39,39,195,250,22,252,39,2,11,6,10,10,98,97,100,32,115,121,110, +116,97,120,197,33,20,98,159,33,16,6,2,10,2,13,2,15,2,17,2,19, +2,21,16,7,18,16,2,95,2,23,43,93,8,252,96,7,95,9,8,252,96, +7,2,24,18,100,2,25,47,41,40,39,16,4,46,11,2,28,3,1,7,101, +110,118,50,54,52,55,44,16,10,45,11,3,1,4,103,50,56,57,45,3,1, +4,103,50,57,48,46,3,1,4,103,50,57,49,47,3,1,4,103,50,57,50, +48,3,1,7,101,110,118,50,54,53,52,49,2,49,2,49,2,49,16,10,44, +11,2,36,2,37,2,38,2,40,3,1,7,101,110,118,50,54,53,53,50,2, +50,2,50,2,50,18,158,2,42,47,18,158,2,43,47,18,158,11,47,18,158, +79,109,111,100,117,108,101,45,105,100,101,110,116,105,102,105,101,114,61,63,51, +47,18,158,2,42,47,11,16,5,93,2,7,89,162,33,34,56,9,223,0,27, +28,248,80,158,35,33,195,249,80,158,36,34,248,80,158,37,35,197,27,248,80, +158,38,36,198,28,248,80,158,38,33,193,249,80,158,39,34,248,80,158,40,35, +195,27,248,80,158,41,36,196,28,248,80,158,41,33,193,249,80,158,42,37,248, +80,158,43,35,195,248,80,158,43,38,248,80,158,44,36,196,11,11,11,28,192, +27,248,22,52,194,27,248,22,78,195,27,248,22,80,196,28,28,248,22,41,248, +22,210,194,248,80,158,38,39,249,22,252,82,3,195,32,52,89,162,41,33,33, +9,222,11,11,27,20,15,159,38,33,40,250,22,209,20,15,159,41,34,40,250, +22,209,20,15,159,44,35,40,249,22,60,20,15,159,46,36,40,201,20,15,159, +44,37,40,195,27,249,22,61,196,195,27,20,15,159,39,38,40,250,22,209,20, +15,159,42,39,40,250,22,209,20,15,159,45,40,40,250,22,60,20,15,159,48, +41,40,248,22,52,203,250,22,209,20,15,159,51,42,40,249,22,60,20,15,159, +53,43,40,248,22,53,23,16,20,15,159,51,44,40,20,15,159,45,45,40,195, +250,22,252,39,2,11,6,10,10,98,97,100,32,115,121,110,116,97,120,197,33, +20,98,159,33,16,7,2,10,2,13,2,15,2,17,30,53,2,11,69,97,112, +112,101,110,100,47,35,102,54,0,30,55,2,11,71,115,116,120,45,110,117,108, +108,47,35,102,56,9,30,57,2,27,75,115,121,110,116,97,120,45,109,97,112, +112,105,110,103,63,58,8,16,13,18,16,2,95,2,23,48,93,8,252,122,7, +95,9,8,252,122,7,2,24,18,100,2,25,52,41,40,39,16,4,51,11,2, +28,3,1,7,101,110,118,50,54,54,51,59,16,8,50,11,3,1,4,103,50, +57,51,60,3,1,4,103,50,57,52,61,3,1,4,103,50,57,53,62,3,1, +7,101,110,118,50,54,54,57,63,2,63,2,63,16,8,49,11,2,36,63,108, +111,99,64,67,112,97,116,116,101,114,110,65,3,1,7,101,110,118,50,54,55, +48,66,2,66,2,66,18,158,2,42,52,18,158,66,115,121,110,116,97,120,67, +52,18,158,2,42,52,18,16,2,95,2,23,53,93,8,252,123,7,95,9,8, +252,123,7,2,24,18,158,2,25,52,18,158,2,42,52,18,158,2,6,52,18, +158,2,42,52,18,158,2,67,52,18,158,2,42,52,18,158,2,42,52,11,94, +83,159,33,93,80,159,33,33,34,247,22,252,115,2,83,159,33,93,80,159,33, +34,34,89,162,33,35,41,2,6,223,0,28,248,22,215,194,27,250,22,209,198, +248,22,210,199,197,251,22,232,196,199,80,159,38,33,35,11,194,95,68,35,37, +107,101,114,110,101,108,68,2,24,2,26,95,2,68,2,24,2,27,0}; + EVAL_ONE_SIZED_STR((char *)expr, 1887); + } + { + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,53,50,46,49,91,252,178,8,159,33,20,98,159,33,16,1,20, +24,65,98,101,103,105,110,0,16,0,83,158,40,20,95,114,70,35,37,119,105, +116,104,45,115,116,120,1,29,2,11,11,10,10,10,33,80,158,33,33,20,98, +159,34,16,7,30,3,2,2,76,119,105,116,104,45,115,121,110,116,97,120,45, +102,97,105,108,4,254,1,30,5,2,2,67,99,111,117,110,116,101,114,6,254, +1,30,7,2,2,73,97,112,112,101,110,100,45,110,117,109,98,101,114,8,254, +1,30,9,2,2,1,20,103,101,110,101,114,97,116,101,45,116,101,109,112,111, +114,97,114,105,101,115,10,254,1,30,11,65,35,37,115,116,120,12,69,115,116, +120,45,108,105,115,116,63,13,8,30,14,2,12,69,115,116,120,45,62,108,105, +115,116,15,4,30,16,2,12,71,105,100,101,110,116,105,102,105,101,114,63,17, +2,16,0,11,11,16,3,2,8,2,6,2,4,36,11,16,2,2,10,71,119, +105,116,104,45,115,121,110,116,97,120,18,16,2,11,11,16,2,2,10,2,18, +34,35,93,16,5,93,2,18,87,94,83,159,33,93,80,159,33,8,31,34,89, +162,33,37,57,64,108,111,111,112,19,223,0,28,248,22,57,196,27,249,22,61, +197,196,27,20,15,159,35,46,45,250,22,209,20,15,159,38,47,45,250,22,209, +20,15,159,41,48,45,250,22,62,20,15,159,44,49,45,248,22,53,203,248,22, +52,203,20,15,159,41,50,45,195,26,8,22,59,73,115,121,110,116,97,120,45, +99,97,115,101,42,42,20,11,10,248,22,52,204,9,79,109,111,100,117,108,101, +45,105,100,101,110,116,105,102,105,101,114,61,63,21,249,22,59,248,22,52,23, +15,251,80,159,47,8,31,34,23,15,23,16,248,22,53,23,18,248,22,53,23, +19,249,22,59,65,95,101,108,115,101,22,249,22,59,2,4,249,22,59,72,113, +117,111,116,101,45,115,121,110,116,97,120,23,250,22,209,11,248,22,208,248,22, +52,23,23,248,22,52,23,22,89,162,33,34,58,9,223,0,27,249,22,209,20, +15,159,36,33,45,196,27,28,248,80,158,36,33,194,249,80,158,37,34,248,80, +158,38,35,196,27,248,80,158,39,36,197,28,248,80,158,39,33,193,28,248,80, +158,39,37,248,80,158,40,35,194,27,248,80,158,40,36,194,28,248,80,158,40, +33,193,249,80,158,41,34,248,80,158,42,35,195,27,248,80,158,43,36,196,28, +248,80,158,43,38,193,248,80,158,43,39,193,11,11,11,11,11,28,192,27,248, +22,52,194,27,248,22,78,195,27,248,22,80,196,249,80,158,40,40,200,27,249, +22,61,197,198,27,20,15,159,42,34,45,250,22,209,20,15,159,45,35,45,250, +22,209,20,15,159,48,36,45,250,22,62,20,15,159,51,37,45,248,22,53,203, +248,22,52,203,20,15,159,48,38,45,195,27,28,248,80,158,37,33,195,249,80, +158,38,34,248,80,158,39,35,197,27,248,80,158,40,36,198,28,248,80,158,40, +33,193,249,80,158,41,41,27,248,80,158,43,35,196,28,248,80,158,43,38,193, +248,22,8,89,162,33,34,40,9,224,10,1,27,249,22,2,89,162,33,34,45, +9,224,4,5,249,80,158,36,42,28,248,80,158,37,33,197,249,80,158,38,34, +248,80,158,39,35,199,27,248,80,158,40,36,200,28,248,80,158,40,33,193,249, +80,158,41,34,248,80,158,42,35,195,248,80,158,42,37,248,80,158,43,36,196, +11,11,194,248,80,158,38,39,196,28,248,22,57,193,21,94,9,9,248,80,158, +36,43,193,11,27,248,80,158,43,36,196,28,248,80,158,43,33,193,249,80,158, +44,34,248,80,158,45,35,195,27,248,80,158,46,36,196,28,248,80,158,46,38, +193,248,80,158,46,39,193,11,11,11,11,28,192,27,248,22,52,194,27,248,22, +78,195,27,248,22,87,196,27,248,22,90,197,27,248,22,89,198,27,248,22,216, +27,20,15,159,44,39,45,250,22,209,20,15,159,47,40,45,200,195,87,94,251, +80,158,46,44,201,206,27,20,15,159,47,41,45,250,22,209,20,15,159,50,42, +45,204,195,9,27,249,22,2,32,24,89,162,33,34,35,9,222,248,22,48,65, +119,115,116,109,112,25,195,27,249,22,2,32,26,89,162,33,34,37,9,222,250, +22,209,195,64,104,101,114,101,27,195,196,27,248,22,216,27,20,15,159,47,43, +45,250,22,209,20,15,159,50,44,45,204,195,250,22,209,20,15,159,48,45,45, +250,22,59,63,108,101,116,28,251,22,2,32,29,89,162,33,36,43,9,222,249, +22,59,194,250,22,59,1,20,100,97,116,117,109,45,62,115,121,110,116,97,120, +45,111,98,106,101,99,116,30,249,22,59,2,23,200,199,204,203,205,251,80,159, +55,8,31,34,23,15,206,204,202,23,16,250,22,252,39,2,11,6,10,10,98, +97,100,32,115,121,110,116,97,120,197,33,20,98,159,34,16,12,30,31,2,12, +69,115,116,120,45,112,97,105,114,63,32,11,30,33,2,12,67,99,111,110,115, +47,35,102,34,1,30,35,2,12,67,115,116,120,45,99,97,114,36,5,30,37, +2,12,67,115,116,120,45,99,100,114,38,6,30,39,2,12,71,115,116,120,45, +110,117,108,108,47,35,102,40,9,30,41,2,12,2,13,8,30,42,2,12,2, +15,4,30,43,68,35,37,115,116,120,108,111,99,44,68,114,101,108,111,99,97, +116,101,45,1,30,46,2,12,69,97,112,112,101,110,100,47,35,102,47,0,30, +48,2,12,73,115,116,120,45,99,104,101,99,107,47,101,115,99,49,7,30,50, +2,12,70,115,116,120,45,114,111,116,97,116,101,51,12,30,52,64,35,37,115, +99,53,74,103,101,116,45,109,97,116,99,104,45,118,97,114,115,54,0,16,18, +18,98,2,27,39,98,37,10,33,11,96,159,69,35,37,115,116,120,99,97,115, +101,55,9,11,159,74,35,37,115,109,97,108,108,45,115,99,104,101,109,101,56, +9,11,159,2,44,9,11,159,2,12,9,11,16,10,2,6,2,2,2,10,2, +2,2,8,2,2,2,18,2,2,2,4,2,2,98,36,10,34,11,97,159,66, +35,37,99,111,110,100,57,9,11,159,71,35,37,113,113,45,97,110,100,45,111, +114,58,9,11,159,2,53,9,11,159,2,44,9,11,159,2,55,9,11,16,0, +96,35,8,254,1,11,16,0,16,4,34,11,61,120,59,3,1,7,101,110,118, +50,54,56,50,60,18,16,2,95,66,115,114,99,116,97,103,61,40,93,8,252, +156,7,95,9,8,252,156,7,2,55,18,100,64,100,101,115,116,62,43,37,36, +35,34,16,8,42,11,3,1,4,103,51,48,49,63,3,1,4,103,51,48,50, +64,3,1,4,103,51,48,51,65,3,1,7,101,110,118,50,54,56,57,66,2, +66,2,66,16,8,41,11,61,95,67,62,101,49,68,62,101,50,69,3,1,7, +101,110,118,50,54,57,48,70,2,70,2,70,18,158,63,99,116,120,71,43,18, +158,2,0,43,18,158,2,71,43,18,16,2,95,2,61,44,93,8,252,158,7, +95,9,8,252,158,7,2,55,18,100,2,62,47,37,36,35,34,16,12,46,11, +3,1,4,103,50,57,54,72,3,1,4,103,50,57,55,73,3,1,4,103,50, +57,56,74,3,1,4,103,50,57,57,75,3,1,4,103,51,48,48,76,3,1, +7,101,110,118,50,55,48,54,77,2,77,2,77,2,77,2,77,16,12,45,11, +2,67,63,111,117,116,78,62,105,110,79,2,68,2,69,3,1,7,101,110,118, +50,55,48,55,80,2,80,2,80,2,80,2,80,18,16,2,95,2,61,48,93, +8,252,174,7,95,9,8,252,174,7,2,55,18,101,2,62,50,37,36,35,34, +46,45,16,4,49,11,63,105,110,115,81,3,1,7,101,110,118,50,55,49,51, +82,18,16,2,95,2,61,51,93,8,252,175,7,95,9,8,252,175,7,2,55, +18,158,2,62,50,18,102,2,27,53,37,36,35,34,46,45,49,16,8,52,11, +64,116,109,112,115,83,65,104,101,114,101,115,84,64,111,117,116,115,85,3,1, +7,101,110,118,50,55,49,54,86,2,86,2,86,18,16,2,95,2,61,54,93, +8,252,180,7,95,9,8,252,180,7,2,55,18,103,2,62,56,37,36,35,34, +46,45,49,52,16,4,55,11,2,19,3,1,7,101,110,118,50,55,50,49,87, +18,158,2,71,56,18,158,2,0,56,18,158,2,71,56,11,97,83,159,33,93, +80,159,33,40,34,89,162,33,34,40,9,223,0,248,247,22,252,88,3,28,248, +22,41,195,249,22,209,11,248,80,159,37,35,35,197,28,248,22,252,136,1,195, +249,22,209,11,248,80,159,37,35,35,197,28,248,80,158,35,39,195,249,22,209, +11,248,80,159,37,35,35,248,22,210,198,249,22,209,11,248,80,159,37,35,35, +64,116,101,109,112,88,83,159,33,93,80,159,33,33,34,32,89,89,162,33,34, +37,2,4,222,250,22,252,39,2,2,18,6,20,20,98,105,110,100,105,110,103, +32,109,97,116,99,104,32,102,97,105,108,101,100,195,83,159,33,93,80,159,33, +34,35,33,83,159,33,93,80,159,33,35,34,89,162,33,34,39,2,8,223,0, +87,94,83,160,35,11,80,159,33,34,35,248,22,170,80,159,34,34,35,248,22, +42,250,22,252,184,1,6,4,4,126,97,126,115,197,80,159,37,34,35,83,159, +33,93,80,159,33,36,34,89,162,33,34,38,2,10,223,0,87,94,28,248,80, +158,34,37,194,12,250,22,252,40,2,2,10,6,11,11,115,121,110,116,97,120, +32,112,97,105,114,196,27,248,80,158,35,38,195,249,22,2,80,159,36,40,34, +194,97,68,35,37,107,101,114,110,101,108,90,2,12,2,44,2,56,2,55,98, +2,90,2,55,2,44,2,53,2,58,2,57,0}; + EVAL_ONE_SIZED_STR((char *)expr, 2238); + } + { + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,53,50,46,49,191,252,153,31,159,33,20,98,159,33,16,1,20, +24,65,98,101,103,105,110,0,16,0,83,158,40,20,95,114,76,35,37,115,116, +120,99,97,115,101,45,115,99,104,101,109,101,1,29,2,11,11,10,10,10,33, +80,158,33,33,20,98,159,33,16,2,30,3,2,2,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, +4,254,1,30,5,65,35,37,115,116,120,6,71,105,100,101,110,116,105,102,105, +101,114,63,7,2,16,0,11,11,16,0,33,11,16,23,2,4,1,20,103,101, +110,101,114,97,116,101,45,116,101,109,112,111,114,97,114,105,101,115,8,70,113, +117,97,115,105,113,117,111,116,101,9,63,97,110,100,10,66,117,110,108,101,115, +115,11,72,108,101,116,45,115,121,110,116,97,120,101,115,12,73,100,101,102,105, +110,101,45,115,116,114,117,99,116,13,66,108,101,116,47,101,99,14,64,119,104, +101,110,15,70,115,121,110,116,97,120,47,108,111,99,16,72,115,121,110,116,97, +120,45,99,97,115,101,42,17,70,108,101,116,45,115,121,110,116,97,120,18,74, +45,100,101,102,105,110,101,45,115,121,110,116,97,120,19,71,119,105,116,104,45, +115,121,110,116,97,120,20,64,99,111,110,100,21,72,115,121,110,116,97,120,45, +114,117,108,101,115,22,67,45,100,101,102,105,110,101,23,62,111,114,24,71,115, +121,110,116,97,120,45,99,97,115,101,25,75,108,101,116,114,101,99,45,115,121, +110,116,97,120,101,115,26,66,115,121,110,116,97,120,27,75,115,121,110,116,97, +120,45,105,100,45,114,117,108,101,115,28,73,108,101,116,114,101,99,45,115,121, +110,116,97,120,29,16,23,11,70,35,37,119,105,116,104,45,115,116,120,30,71, +35,37,113,113,45,97,110,100,45,111,114,31,2,31,74,35,37,100,101,102,105, +110,101,45,101,116,45,97,108,32,11,2,32,2,32,2,32,68,35,37,115,116, +120,108,111,99,33,2,33,11,2,32,2,30,66,35,37,99,111,110,100,34,11, +2,32,2,31,2,33,11,69,35,37,115,116,120,99,97,115,101,35,11,11,16, +23,2,4,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,35,56,98,16,5,93,2,26,87,94,83,159,33,93,80,159, +33,56,34,89,162,34,34,41,9,223,0,250,22,209,20,15,159,36,39,45,249, +22,60,248,22,52,199,248,22,78,199,20,15,159,36,40,45,89,162,33,34,49, +9,223,0,27,249,22,209,20,15,159,36,33,45,196,27,28,248,80,158,36,33, +194,249,80,158,37,34,248,80,158,38,35,196,27,248,80,158,39,36,197,28,248, +80,158,39,33,193,249,80,158,40,37,27,248,80,158,42,35,196,28,248,80,158, +42,38,193,248,22,8,89,162,33,34,40,9,224,9,1,27,249,22,2,89,162, +33,34,45,9,224,4,5,249,80,158,36,39,28,248,80,158,37,33,197,249,80, +158,38,37,27,248,80,158,40,35,200,28,248,80,158,40,38,193,248,22,59,248, +80,158,41,40,194,11,27,248,80,158,40,36,200,28,248,80,158,40,33,193,249, +80,158,41,34,248,80,158,42,35,195,248,80,158,42,41,248,80,158,43,36,196, +11,11,194,248,80,158,38,40,196,28,248,22,57,193,21,94,9,9,248,80,158, +36,42,193,11,27,248,80,158,42,36,196,28,248,80,158,42,33,193,249,80,158, +43,34,248,80,158,44,35,195,27,248,80,158,45,36,196,28,248,80,158,45,38, +193,248,80,158,45,40,193,11,11,11,11,28,192,27,248,22,52,194,27,248,22, +78,195,27,248,22,87,196,27,248,22,90,197,27,248,22,89,198,249,80,158,42, +43,202,27,251,22,61,201,200,199,202,27,20,15,159,44,34,45,91,159,34,11, +90,161,34,33,11,83,160,39,33,34,11,247,248,22,8,89,162,33,34,41,9, +226,13,2,3,1,250,22,31,89,162,33,33,37,9,225,6,3,7,90,161,34, +34,10,247,22,252,185,2,248,22,252,185,2,89,162,33,34,37,9,224,3,1, +248,193,89,162,33,33,37,9,224,2,3,28,248,22,252,182,2,193,248,22,252, +187,2,193,249,80,158,36,44,21,98,1,22,108,101,116,114,101,99,45,115,121, +110,116,97,120,101,115,43,118,97,108,117,101,115,36,94,94,94,62,105,100,37, +63,46,46,46,38,64,101,120,112,114,39,2,38,9,65,98,111,100,121,49,40, +64,98,111,100,121,41,2,38,20,15,159,36,35,45,89,162,33,33,52,9,225, +6,5,4,27,250,22,209,20,15,159,39,36,45,250,22,209,20,15,159,42,37, +45,252,22,62,20,15,159,47,38,45,250,22,2,80,159,50,56,34,248,22,88, +23,16,248,22,52,23,16,20,15,159,47,41,45,248,22,78,205,248,22,87,205, +20,15,159,42,42,45,197,89,162,33,33,34,9,223,0,192,89,162,33,33,35, +9,223,3,248,22,252,185,2,208,250,22,252,39,2,11,6,10,10,98,97,100, +32,115,121,110,116,97,120,196,33,20,98,159,34,16,12,30,42,2,6,69,115, 116,120,45,112,97,105,114,63,43,11,30,44,2,6,67,99,111,110,115,47,35, 102,45,1,30,46,2,6,67,115,116,120,45,99,97,114,47,5,30,48,2,6, 67,115,116,120,45,99,100,114,49,6,30,50,2,6,69,97,112,112,101,110,100, @@ -1452,2794 +1524,2844 @@ 30,54,2,6,73,115,116,120,45,99,104,101,99,107,47,101,115,99,55,7,30, 56,2,6,69,115,116,120,45,62,108,105,115,116,57,4,30,58,2,6,71,115, 116,120,45,110,117,108,108,47,35,102,59,9,30,60,2,6,70,115,116,120,45, -114,111,116,97,116,101,61,12,30,62,2,34,68,114,101,108,111,99,97,116,101, +114,111,116,97,116,101,61,12,30,62,2,33,68,114,101,108,111,99,97,116,101, 63,1,30,64,2,35,1,20,101,108,108,105,112,115,105,115,45,99,111,117,110, -116,45,101,114,114,111,114,65,0,16,10,18,98,64,104,101,114,101,66,38,98, -36,10,32,11,97,159,2,34,9,11,159,2,30,9,11,159,2,35,9,11,159, +116,45,101,114,114,111,114,65,0,16,10,18,98,64,104,101,114,101,66,39,98, +37,10,33,11,97,159,2,33,9,11,159,2,30,9,11,159,2,35,9,11,159, 2,6,9,11,159,74,35,37,115,109,97,108,108,45,115,99,104,101,109,101,67, -9,11,16,14,2,18,2,2,2,10,2,2,2,24,2,2,2,4,2,2,2, -14,2,2,2,28,2,2,2,17,2,2,98,35,10,33,11,97,159,2,34,9, +9,11,16,14,2,22,2,2,2,12,2,2,2,4,2,2,2,26,2,2,2, +18,2,2,2,28,2,2,2,29,2,2,98,36,10,34,11,97,159,2,33,9, 11,159,2,30,9,11,159,2,35,9,11,159,2,6,9,11,159,2,67,9,11, -16,0,96,34,8,254,1,11,16,0,16,4,33,11,63,115,116,120,68,3,1, +16,0,96,35,8,254,1,11,16,0,16,4,34,11,63,115,116,120,68,3,1, 7,101,110,118,50,55,51,53,69,18,16,2,95,66,115,114,99,116,97,103,70, -39,93,8,252,215,7,95,9,8,252,215,7,2,35,18,16,2,99,2,38,44, -93,8,252,215,7,16,6,43,11,61,114,71,63,115,114,99,72,3,1,7,101, -110,118,50,55,53,54,73,2,73,16,4,42,11,64,101,120,110,104,74,3,1, -7,101,110,118,50,55,53,55,75,16,4,41,11,63,101,115,99,76,3,1,7, -101,110,118,50,55,53,56,77,16,4,40,11,63,101,120,110,78,3,1,7,101, +40,93,8,252,215,7,95,9,8,252,215,7,2,35,18,16,2,99,2,38,45, +93,8,252,215,7,16,6,44,11,61,114,71,63,115,114,99,72,3,1,7,101, +110,118,50,55,53,54,73,2,73,16,4,43,11,64,101,120,110,104,74,3,1, +7,101,110,118,50,55,53,55,75,16,4,42,11,63,101,115,99,76,3,1,7, +101,110,118,50,55,53,56,77,16,4,41,11,63,101,120,110,78,3,1,7,101, 110,118,50,55,54,48,79,95,9,8,252,215,7,2,35,18,100,64,100,101,115, -116,80,47,36,35,34,33,16,12,46,11,3,1,4,103,51,48,52,81,3,1, +116,80,48,37,36,35,34,16,12,47,11,3,1,4,103,51,48,52,81,3,1, 4,103,51,48,53,82,3,1,4,103,51,48,54,83,3,1,4,103,51,48,55, 84,3,1,4,103,51,48,56,85,3,1,7,101,110,118,50,55,52,56,86,2, -86,2,86,2,86,2,86,16,12,45,11,61,95,87,2,37,2,39,2,40,2, +86,2,86,2,86,2,86,16,12,46,11,61,95,87,2,37,2,39,2,40,2, 41,3,1,7,101,110,118,50,55,52,57,88,2,88,2,88,2,88,2,88,18, -158,63,99,116,120,89,47,18,158,2,36,47,18,158,2,89,47,18,158,2,89, -47,18,158,9,47,18,158,2,89,47,11,16,5,93,2,18,89,162,32,33,50, -9,223,0,27,249,22,209,20,15,159,35,32,44,196,27,28,248,80,158,35,32, -194,249,80,158,36,33,248,80,158,37,34,196,27,248,80,158,38,35,197,28,248, -80,158,38,32,193,249,80,158,39,36,27,248,80,158,41,34,196,28,248,80,158, -41,37,193,248,22,8,89,162,32,33,39,9,224,9,1,27,249,22,2,89,162, -32,33,45,9,224,4,5,249,80,158,35,38,28,248,80,158,36,32,197,249,80, -158,37,33,248,80,158,38,34,199,27,248,80,158,39,35,200,28,248,80,158,39, -32,193,249,80,158,40,33,248,80,158,41,34,195,248,80,158,41,39,248,80,158, -42,35,196,11,11,194,248,80,158,37,40,196,28,248,22,57,193,21,94,9,9, -248,80,158,35,41,193,11,27,248,80,158,41,35,196,28,248,80,158,41,32,193, -249,80,158,42,33,248,80,158,43,34,195,27,248,80,158,44,35,196,28,248,80, -158,44,37,193,248,80,158,44,40,193,11,11,11,11,28,192,27,248,22,52,194, +158,63,99,116,120,89,48,18,158,2,36,48,18,158,2,89,48,18,158,2,89, +48,18,158,9,48,18,158,2,89,48,11,16,5,93,2,29,87,94,83,159,33, +93,80,159,33,58,34,89,162,34,34,45,9,223,0,250,22,209,20,15,159,36, +39,45,249,22,60,250,22,209,20,15,159,41,40,45,248,22,60,248,22,52,203, +20,15,159,41,41,45,248,22,78,199,20,15,159,36,42,45,89,162,33,34,49, +9,223,0,27,249,22,209,20,15,159,36,33,45,196,27,28,248,80,158,36,33, +194,249,80,158,37,34,248,80,158,38,35,196,27,248,80,158,39,36,197,28,248, +80,158,39,33,193,249,80,158,40,37,27,248,80,158,42,35,196,28,248,80,158, +42,38,193,248,22,8,89,162,33,34,40,9,224,9,1,27,249,22,2,89,162, +33,34,45,9,224,4,5,249,80,158,36,39,28,248,80,158,37,33,197,249,80, +158,38,34,248,80,158,39,35,199,27,248,80,158,40,36,200,28,248,80,158,40, +33,193,249,80,158,41,34,248,80,158,42,35,195,248,80,158,42,40,248,80,158, +43,36,196,11,11,194,248,80,158,38,41,196,28,248,22,57,193,21,94,9,9, +248,80,158,36,42,193,11,27,248,80,158,42,36,196,28,248,80,158,42,33,193, +249,80,158,43,34,248,80,158,44,35,195,27,248,80,158,45,36,196,28,248,80, +158,45,38,193,248,80,158,45,41,193,11,11,11,11,28,192,27,248,22,52,194, 27,248,22,78,195,27,248,22,87,196,27,248,22,90,197,27,248,22,89,198,249, -80,158,41,42,202,27,251,22,61,199,202,200,201,27,20,15,159,43,33,44,91, -159,33,11,90,161,33,32,11,83,160,38,32,33,11,247,248,22,8,89,162,32, -33,40,9,226,13,2,3,1,250,22,31,89,162,32,32,36,9,225,6,3,7, -90,161,33,33,10,247,22,252,184,2,248,22,252,184,2,89,162,32,33,36,9, -224,3,1,248,193,89,162,32,32,36,9,224,2,3,28,248,22,252,181,2,193, -248,22,252,186,2,193,249,80,158,35,43,21,98,2,36,94,94,93,2,37,2, -39,2,38,9,2,40,2,41,2,38,20,15,159,35,34,44,89,162,32,32,51, -9,225,6,5,4,27,250,22,209,20,15,159,38,35,44,250,22,209,20,15,159, -41,36,44,252,22,62,20,15,159,46,37,44,250,22,2,89,162,33,33,45,9, -223,17,250,22,209,20,15,159,35,38,44,249,22,60,250,22,209,20,15,159,40, -39,44,248,22,60,248,22,52,203,20,15,159,40,40,44,248,22,78,199,20,15, -159,35,41,44,248,22,78,23,16,248,22,88,23,16,20,15,159,46,42,44,248, -22,87,205,248,22,52,205,20,15,159,41,43,44,197,89,162,32,32,33,9,223, -0,192,89,162,32,32,34,9,223,3,248,22,252,184,2,208,250,22,252,39,2, -11,6,10,10,98,97,100,32,115,121,110,116,97,120,196,32,20,98,158,16,12, -2,42,2,44,2,46,2,48,2,50,2,52,2,54,2,58,2,56,2,60,2, -62,2,64,16,12,18,98,2,66,49,36,35,34,16,4,48,11,2,68,3,1, -7,101,110,118,50,55,54,57,90,18,16,2,95,2,70,50,93,8,252,230,7, -95,9,8,252,230,7,2,35,18,16,2,99,2,38,55,93,8,252,230,7,16, -6,54,11,2,71,2,72,3,1,7,101,110,118,50,55,56,57,91,2,91,16, -4,53,11,2,74,3,1,7,101,110,118,50,55,57,48,92,16,4,52,11,2, -76,3,1,7,101,110,118,50,55,57,49,93,16,4,51,11,2,78,3,1,7, -101,110,118,50,55,57,51,94,95,9,8,252,230,7,2,35,18,100,2,80,58, -36,35,34,48,16,12,57,11,3,1,4,103,51,48,57,95,3,1,4,103,51, -49,48,96,3,1,4,103,51,49,49,97,3,1,4,103,51,49,50,98,3,1, -4,103,51,49,51,99,3,1,7,101,110,118,50,55,56,49,100,2,100,2,100, -2,100,2,100,16,12,56,11,2,87,2,37,2,39,2,40,2,41,3,1,7, -101,110,118,50,55,56,50,101,2,101,2,101,2,101,2,101,18,158,2,89,58, -18,158,2,36,58,18,158,2,89,58,18,158,2,89,58,18,158,2,89,58,18, -158,2,89,58,18,158,9,58,18,158,2,89,58,11,16,5,93,2,24,89,162, -32,33,52,9,223,0,27,249,22,209,20,15,159,35,32,47,196,27,28,248,80, -158,35,32,194,249,80,158,36,33,248,80,158,37,34,196,27,248,80,158,38,35, -197,28,248,80,158,38,32,193,249,80,158,39,36,27,248,80,158,41,34,196,28, -248,80,158,41,37,193,248,22,8,89,162,32,33,39,9,224,9,1,27,249,22, -2,89,162,32,33,47,9,224,4,5,249,80,158,35,38,28,248,80,158,36,32, -197,249,80,158,37,36,27,248,80,158,39,34,200,28,248,80,158,39,37,193,248, -22,59,248,80,158,40,39,194,11,27,248,80,158,39,35,200,28,248,80,158,39, -32,193,249,80,158,40,33,248,80,158,41,34,195,248,80,158,41,40,248,80,158, -42,35,196,11,11,194,248,80,158,37,39,196,28,248,22,57,193,21,94,9,9, -248,80,158,35,41,193,11,27,248,80,158,41,35,196,28,248,80,158,41,32,193, -249,80,158,42,33,248,80,158,43,34,195,27,248,80,158,44,35,196,28,248,80, -158,44,37,193,248,80,158,44,39,193,11,11,11,11,28,192,27,248,22,52,194, +80,158,42,43,202,27,251,22,61,201,200,199,202,27,20,15,159,44,34,45,91, +159,34,11,90,161,34,33,11,83,160,39,33,34,11,247,248,22,8,89,162,33, +34,41,9,226,13,2,3,1,250,22,31,89,162,33,33,37,9,225,6,3,7, +90,161,34,34,10,247,22,252,185,2,248,22,252,185,2,89,162,33,34,37,9, +224,3,1,248,193,89,162,33,33,37,9,224,2,3,28,248,22,252,182,2,193, +248,22,252,187,2,193,249,80,158,36,44,21,98,2,36,94,94,93,2,37,2, +39,2,38,9,2,40,2,41,2,38,20,15,159,36,35,45,89,162,33,33,52, +9,225,6,5,4,27,250,22,209,20,15,159,39,36,45,250,22,209,20,15,159, +42,37,45,252,22,62,20,15,159,47,38,45,250,22,2,80,159,50,58,34,248, +22,88,23,16,248,22,52,23,16,20,15,159,47,43,45,248,22,78,205,248,22, +87,205,20,15,159,42,44,45,197,89,162,33,33,34,9,223,0,192,89,162,33, +33,35,9,223,3,248,22,252,185,2,208,250,22,252,39,2,11,6,10,10,98, +97,100,32,115,121,110,116,97,120,196,33,20,98,159,34,16,12,2,42,2,44, +2,46,2,48,2,50,2,52,2,54,2,58,2,56,2,60,2,62,2,64,16, +12,18,98,2,66,50,37,36,35,16,4,49,11,2,68,3,1,7,101,110,118, +50,55,54,57,90,18,16,2,95,2,70,51,93,8,252,230,7,95,9,8,252, +230,7,2,35,18,16,2,99,2,38,56,93,8,252,230,7,16,6,55,11,2, +71,2,72,3,1,7,101,110,118,50,55,56,57,91,2,91,16,4,54,11,2, +74,3,1,7,101,110,118,50,55,57,48,92,16,4,53,11,2,76,3,1,7, +101,110,118,50,55,57,49,93,16,4,52,11,2,78,3,1,7,101,110,118,50, +55,57,51,94,95,9,8,252,230,7,2,35,18,100,2,80,59,37,36,35,49, +16,12,58,11,3,1,4,103,51,48,57,95,3,1,4,103,51,49,48,96,3, +1,4,103,51,49,49,97,3,1,4,103,51,49,50,98,3,1,4,103,51,49, +51,99,3,1,7,101,110,118,50,55,56,49,100,2,100,2,100,2,100,2,100, +16,12,57,11,2,87,2,37,2,39,2,40,2,41,3,1,7,101,110,118,50, +55,56,50,101,2,101,2,101,2,101,2,101,18,158,2,89,59,18,158,2,36, +59,18,158,2,89,59,18,158,2,89,59,18,158,2,89,59,18,158,2,89,59, +18,158,9,59,18,158,2,89,59,11,16,5,93,2,12,87,96,83,159,33,93, +80,159,33,8,47,34,89,162,34,34,48,9,223,0,250,22,209,20,15,159,36, +47,48,249,22,60,248,22,52,199,250,22,209,20,15,159,41,48,48,249,22,56, +20,15,159,43,49,48,249,22,2,80,159,45,8,46,34,248,22,78,206,20,15, +159,41,56,48,20,15,159,36,57,48,83,159,33,93,80,159,33,8,46,34,89, +162,34,34,46,9,223,0,250,22,209,20,15,159,36,50,48,249,22,60,20,15, +159,38,51,48,250,22,209,20,15,159,41,52,48,249,22,60,20,15,159,43,53, +48,248,22,52,204,20,15,159,41,54,48,20,15,159,36,55,48,83,159,33,93, +80,159,33,8,45,34,89,162,34,34,41,9,223,0,250,22,209,20,15,159,36, +42,48,249,22,60,248,22,52,199,248,22,78,199,20,15,159,36,43,48,89,162, +33,34,52,9,223,0,27,249,22,209,20,15,159,36,33,48,196,27,28,248,80, +158,36,33,194,249,80,158,37,34,248,80,158,38,35,196,27,248,80,158,39,36, +197,28,248,80,158,39,33,193,249,80,158,40,37,27,248,80,158,42,35,196,28, +248,80,158,42,38,193,248,22,8,89,162,33,34,40,9,224,9,1,27,249,22, +2,89,162,33,34,45,9,224,4,5,249,80,158,36,39,28,248,80,158,37,33, +197,249,80,158,38,37,27,248,80,158,40,35,200,28,248,80,158,40,38,193,248, +22,59,248,80,158,41,40,194,11,27,248,80,158,40,36,200,28,248,80,158,40, +33,193,249,80,158,41,34,248,80,158,42,35,195,248,80,158,42,41,248,80,158, +43,36,196,11,11,194,248,80,158,38,40,196,28,248,22,57,193,21,94,9,9, +248,80,158,36,42,193,11,27,248,80,158,42,36,196,28,248,80,158,42,33,193, +249,80,158,43,34,248,80,158,44,35,195,27,248,80,158,45,36,196,28,248,80, +158,45,38,193,248,80,158,45,40,193,11,11,11,11,28,192,27,248,22,52,194, 27,248,22,78,195,27,248,22,87,196,27,248,22,90,197,27,248,22,89,198,27, -249,22,209,20,15,159,42,33,47,249,22,2,80,158,44,42,248,22,216,27,20, -15,159,46,34,47,250,22,209,20,15,159,49,35,47,205,195,27,28,248,80,158, -42,37,194,248,22,8,89,162,32,33,39,9,224,10,2,27,249,22,2,89,162, -32,33,39,9,224,4,5,249,80,158,35,38,28,248,80,158,36,37,197,248,22, -59,248,80,158,37,39,198,11,194,248,80,158,37,39,196,28,248,22,57,193,9, -248,80,158,35,43,193,11,28,192,249,80,158,43,44,204,27,252,22,61,202,205, -203,204,200,27,20,15,159,45,36,47,91,159,33,11,90,161,33,32,11,83,160, -38,32,33,11,247,248,22,8,89,162,32,33,40,9,226,15,2,3,1,250,22, -31,89,162,32,32,36,9,225,6,3,7,90,161,33,33,10,247,22,252,184,2, -248,22,252,184,2,89,162,32,33,36,9,224,3,1,248,193,89,162,32,32,36, -9,224,2,3,28,248,22,252,181,2,193,248,22,252,186,2,193,249,80,158,35, -45,21,96,2,36,94,94,94,63,116,109,112,102,2,38,2,39,2,38,9,98, +249,22,209,20,15,159,43,34,48,249,22,2,80,158,45,43,248,22,216,27,20, +15,159,47,35,48,250,22,209,20,15,159,50,36,48,205,195,27,28,248,80,158, +43,38,194,248,22,8,89,162,33,34,40,9,224,10,2,27,249,22,2,89,162, +33,34,40,9,224,4,5,249,80,158,36,39,28,248,80,158,37,38,197,248,22, +59,248,80,158,38,40,198,11,194,248,80,158,38,40,196,28,248,22,57,193,9, +248,80,158,36,44,193,11,28,192,249,80,158,44,45,204,27,252,22,61,200,202, +204,203,205,27,20,15,159,46,37,48,91,159,34,11,90,161,34,33,11,83,160, +39,33,34,11,247,248,22,8,89,162,33,34,41,9,226,15,2,3,1,250,22, +31,89,162,33,33,37,9,225,6,3,7,90,161,34,34,10,247,22,252,185,2, +248,22,252,185,2,89,162,33,34,37,9,224,3,1,248,193,89,162,33,33,37, +9,224,2,3,28,248,22,252,182,2,193,248,22,252,187,2,193,249,80,158,36, +46,21,96,2,36,94,94,94,63,116,109,112,102,2,38,2,39,2,38,9,98, 2,36,94,94,94,2,37,2,38,95,66,118,97,108,117,101,115,103,94,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,104,94,72,113,117,111,116,101,45,115,121,110,116,97,120,105,2,102,2, -38,2,38,9,2,40,2,41,2,38,20,15,159,35,37,47,89,162,32,32,58, -9,225,6,5,4,27,250,22,209,20,15,159,38,38,47,250,22,209,20,15,159, -41,39,47,251,22,60,20,15,159,45,40,47,250,22,2,89,162,33,33,41,9, -223,16,250,22,209,20,15,159,35,41,47,249,22,60,248,22,52,199,248,22,78, -199,20,15,159,35,42,47,248,22,89,23,15,248,22,90,23,15,20,15,159,45, -43,47,250,22,209,20,15,159,48,44,47,252,22,62,20,15,159,53,45,47,250, -22,2,89,162,33,33,47,9,223,24,250,22,209,20,15,159,35,46,47,249,22, -60,248,22,52,199,250,22,209,20,15,159,40,47,47,249,22,56,20,15,159,42, -48,47,249,22,2,89,162,33,33,45,9,223,12,250,22,209,20,15,159,35,49, -47,249,22,60,20,15,159,37,50,47,250,22,209,20,15,159,40,51,47,249,22, -60,20,15,159,42,52,47,248,22,52,204,20,15,159,40,53,47,20,15,159,35, -54,47,248,22,78,206,20,15,159,40,55,47,20,15,159,35,56,47,248,22,78, -23,23,248,22,89,23,23,20,15,159,53,57,47,248,22,87,23,20,248,22,52, -23,20,20,15,159,48,58,47,20,15,159,41,59,47,197,89,162,32,32,33,9, -223,0,192,89,162,32,32,34,9,223,3,248,22,252,184,2,208,248,80,158,42, -46,20,15,159,42,8,28,47,250,22,252,39,2,11,6,10,10,98,97,100,32, -115,121,110,116,97,120,196,32,20,98,158,16,15,2,42,2,44,2,46,2,48, -2,50,2,52,2,54,2,56,2,58,2,60,30,106,2,30,2,8,0,30,107, -2,6,71,115,116,120,45,114,111,116,97,116,101,42,108,13,2,62,2,64,30, -109,2,30,76,119,105,116,104,45,115,121,110,116,97,120,45,102,97,105,108,110, -3,16,29,18,98,2,66,8,28,36,35,34,16,4,59,11,2,68,3,1,7, -101,110,118,50,56,48,50,111,18,100,2,66,8,31,36,35,34,59,16,12,8, -30,11,3,1,4,103,51,49,52,112,3,1,4,103,51,49,53,113,3,1,4, -103,51,49,54,114,3,1,4,103,51,49,55,115,3,1,4,103,51,49,56,116, -3,1,7,101,110,118,50,56,49,53,117,2,117,2,117,2,117,2,117,16,12, -8,29,11,2,87,2,37,2,39,2,40,2,41,3,1,7,101,110,118,50,56, -49,54,118,2,118,2,118,2,118,2,118,18,16,2,95,2,70,8,32,93,8, -252,245,7,95,9,8,252,245,7,2,35,18,158,2,80,8,31,18,16,2,95, -2,70,8,33,93,8,252,251,7,95,9,8,252,251,7,2,35,18,16,2,99, -2,38,8,38,93,8,252,251,7,16,6,8,37,11,2,71,2,72,3,1,7, -101,110,118,50,56,51,53,119,2,119,16,4,8,36,11,2,74,3,1,7,101, -110,118,50,56,51,54,120,16,4,8,35,11,2,76,3,1,7,101,110,118,50, -56,51,55,121,16,4,8,34,11,2,78,3,1,7,101,110,118,50,56,51,57, -122,95,9,8,252,251,7,2,35,18,102,2,80,8,41,36,35,34,59,8,30, -8,29,16,4,8,40,11,3,1,4,103,51,50,49,123,3,1,7,101,110,118, -50,56,51,49,124,16,4,8,39,11,2,102,3,1,7,101,110,118,50,56,51, -50,125,18,158,2,89,8,41,18,158,2,36,8,41,18,158,2,89,8,41,18, -158,2,89,8,41,18,158,9,8,41,18,158,2,89,8,41,18,158,2,36,8, -41,18,158,2,89,8,41,18,158,2,89,8,41,18,158,2,103,8,41,18,158, -2,89,8,41,18,158,2,104,8,41,18,158,2,89,8,41,18,158,2,105,8, -41,18,158,2,89,8,41,18,158,2,89,8,41,18,158,2,89,8,41,18,158, -2,89,8,41,18,158,9,8,41,18,158,2,89,8,41,18,158,2,89,8,41, -18,16,2,158,94,16,2,158,94,16,2,98,2,102,8,45,93,8,252,244,7, -16,4,8,44,11,3,1,8,119,115,116,109,112,51,49,57,126,3,1,7,101, -110,118,50,56,50,51,127,16,4,8,43,11,3,1,4,103,51,50,48,128,3, -1,7,101,110,118,50,56,53,50,129,16,4,8,42,11,65,95,101,108,115,101, -130,3,1,7,101,110,118,50,56,53,51,131,9,16,2,158,2,38,8,45,9, -8,45,9,16,2,158,2,38,8,45,9,8,45,95,9,8,252,244,7,2,30, -11,16,5,93,2,28,89,162,32,33,50,9,223,0,27,249,22,209,20,15,159, -35,32,44,196,27,28,248,80,158,35,32,194,249,80,158,36,33,248,80,158,37, -34,196,27,248,80,158,38,35,197,28,248,80,158,38,32,193,249,80,158,39,36, -27,248,80,158,41,34,196,28,248,80,158,41,37,193,248,22,8,89,162,32,33, -39,9,224,9,1,27,249,22,2,89,162,32,33,45,9,224,4,5,249,80,158, -35,38,28,248,80,158,36,32,197,249,80,158,37,33,248,80,158,38,34,199,27, -248,80,158,39,35,200,28,248,80,158,39,32,193,249,80,158,40,33,248,80,158, -41,34,195,248,80,158,41,39,248,80,158,42,35,196,11,11,194,248,80,158,37, -40,196,28,248,22,57,193,21,94,9,9,248,80,158,35,41,193,11,27,248,80, -158,41,35,196,28,248,80,158,41,32,193,249,80,158,42,33,248,80,158,43,34, -195,27,248,80,158,44,35,196,28,248,80,158,44,37,193,248,80,158,44,40,193, -11,11,11,11,28,192,27,248,22,52,194,27,248,22,78,195,27,248,22,87,196, -27,248,22,90,197,27,248,22,89,198,249,80,158,41,42,202,27,251,22,61,199, -202,200,201,27,20,15,159,43,33,44,91,159,33,11,90,161,33,32,11,83,160, -38,32,33,11,247,248,22,8,89,162,32,33,40,9,226,13,2,3,1,250,22, -31,89,162,32,32,36,9,225,6,3,7,90,161,33,33,10,247,22,252,184,2, -248,22,252,184,2,89,162,32,33,36,9,224,3,1,248,193,89,162,32,32,36, -9,224,2,3,28,248,22,252,181,2,193,248,22,252,186,2,193,249,80,158,35, -43,21,97,2,24,94,94,93,2,37,2,39,2,38,2,40,2,41,2,38,20, -15,159,35,34,44,89,162,32,32,50,9,225,6,5,4,27,250,22,209,20,15, -159,38,35,44,250,22,209,20,15,159,41,36,44,251,22,62,20,15,159,45,37, -44,250,22,2,89,162,33,33,45,9,223,16,250,22,209,20,15,159,35,38,44, -249,22,60,250,22,209,20,15,159,40,39,44,248,22,60,248,22,52,203,20,15, -159,40,40,44,248,22,78,199,20,15,159,35,41,44,248,22,78,23,15,248,22, -88,23,15,248,22,87,204,248,22,52,204,20,15,159,41,42,44,197,89,162,32, -32,33,9,223,0,192,89,162,32,32,34,9,223,3,248,22,252,184,2,208,250, -22,252,39,2,11,6,10,10,98,97,100,32,115,121,110,116,97,120,196,32,20, -98,158,16,12,2,42,2,44,2,46,2,48,2,50,2,52,2,54,2,58,2, -56,2,60,2,62,2,64,16,11,18,98,2,66,8,47,36,35,34,16,4,8, -46,11,2,68,3,1,7,101,110,118,50,56,53,54,132,18,16,2,95,2,70, -8,48,93,8,252,11,8,95,9,8,252,11,8,2,35,18,16,2,99,2,38, -8,53,93,8,252,11,8,16,6,8,52,11,2,71,2,72,3,1,7,101,110, -118,50,56,55,54,133,2,133,16,4,8,51,11,2,74,3,1,7,101,110,118, -50,56,55,55,134,16,4,8,50,11,2,76,3,1,7,101,110,118,50,56,55, -56,135,16,4,8,49,11,2,78,3,1,7,101,110,118,50,56,56,48,136,95, -9,8,252,11,8,2,35,18,100,2,80,8,56,36,35,34,8,46,16,12,8, -55,11,3,1,4,103,51,50,50,137,3,1,4,103,51,50,51,138,3,1,4, -103,51,50,52,139,3,1,4,103,51,50,53,140,3,1,4,103,51,50,54,141, -3,1,7,101,110,118,50,56,54,56,142,2,142,2,142,2,142,2,142,16,12, -8,54,11,2,87,2,37,2,39,2,40,2,41,3,1,7,101,110,118,50,56, -54,57,143,2,143,2,143,2,143,2,143,18,158,2,89,8,56,18,158,2,24, -8,56,18,158,2,89,8,56,18,158,2,89,8,56,18,158,2,89,8,56,18, -158,2,89,8,56,18,158,2,89,8,56,11,16,5,93,2,10,89,162,32,33, -52,9,223,0,27,89,162,32,32,36,68,116,114,121,45,110,101,120,116,144,223, -2,250,22,252,39,2,11,6,10,10,98,97,100,32,115,121,110,116,97,120,195, -27,28,248,80,158,35,32,196,249,80,158,36,33,248,80,158,37,34,198,27,248, -80,158,38,35,199,28,248,80,158,38,32,193,249,80,158,39,36,27,248,80,158, -41,34,196,28,248,80,158,41,37,193,248,22,59,248,80,158,42,38,194,11,27, -248,80,158,41,35,196,28,248,80,158,41,37,193,248,22,8,89,162,32,33,39, -9,224,9,1,27,249,22,2,89,162,32,33,53,9,224,4,5,249,80,158,35, -39,28,248,80,158,36,32,197,249,80,158,37,36,27,248,80,158,39,34,200,28, -248,80,158,39,32,193,249,80,158,40,33,248,80,158,41,34,195,27,248,80,158, -42,35,196,248,22,59,250,22,209,199,196,199,11,27,248,80,158,39,35,200,28, -248,80,158,39,32,193,249,80,158,40,33,248,80,158,41,34,195,248,80,158,41, -40,248,80,158,42,35,196,11,11,194,248,80,158,37,38,196,28,248,22,57,193, -21,94,9,9,248,80,158,35,41,193,11,11,11,28,192,27,248,22,52,194,27, -248,22,78,195,27,248,22,87,196,27,248,22,90,197,27,248,22,89,198,28,249, -22,4,80,158,41,42,248,22,216,27,20,15,159,43,32,46,250,22,209,20,15, -159,46,33,46,202,195,27,249,22,209,20,15,159,42,34,46,249,22,2,89,162, -32,33,36,9,222,248,22,43,248,22,44,248,22,210,195,248,22,216,27,20,15, -159,46,35,46,250,22,209,20,15,159,49,36,46,204,195,27,28,248,80,158,42, -37,194,248,80,158,42,38,194,11,28,192,249,80,158,43,43,204,27,252,22,61, -200,206,205,202,203,27,20,15,159,45,37,46,91,159,33,11,90,161,33,32,11, -83,160,38,32,33,11,247,248,22,8,89,162,32,33,40,9,226,15,2,3,1, -250,22,31,89,162,32,32,36,9,225,6,3,7,90,161,33,33,10,247,22,252, -184,2,248,22,252,184,2,89,162,32,33,36,9,224,3,1,248,193,89,162,32, -32,36,9,224,2,3,28,248,22,252,181,2,193,248,22,252,186,2,193,249,80, -158,35,44,21,95,66,108,97,109,98,100,97,145,93,61,120,146,100,73,115,121, -110,116,97,120,45,99,97,115,101,42,42,147,2,87,10,2,146,94,61,107,148, -2,38,79,109,111,100,117,108,101,45,105,100,101,110,116,105,102,105,101,114,61, -63,149,94,158,65,100,117,109,109,121,150,67,112,97,116,116,101,114,110,151,95, -2,22,2,146,68,116,101,109,112,108,97,116,101,152,2,38,20,15,159,35,38, -46,89,162,32,32,8,28,9,225,6,5,4,27,250,22,209,20,15,159,38,39, -46,250,22,209,20,15,159,41,40,46,250,22,60,20,15,159,44,41,46,20,15, -159,44,42,46,250,22,209,20,15,159,47,43,46,254,22,62,20,15,159,54,44, -46,248,22,78,23,21,20,15,159,54,45,46,20,15,159,54,46,46,248,22,87, -23,21,20,15,159,54,47,46,251,22,2,89,162,33,33,49,9,223,26,250,22, -209,20,15,159,35,48,46,249,22,60,250,22,209,20,15,159,40,49,46,249,22, -56,248,22,52,204,248,22,78,204,20,15,159,40,50,46,250,22,209,20,15,159, -40,51,46,250,22,60,20,15,159,43,52,46,20,15,159,43,53,46,248,22,87, -205,20,15,159,40,54,46,20,15,159,35,55,46,248,22,52,23,25,248,22,89, -23,25,248,22,90,23,25,20,15,159,47,56,46,20,15,159,41,57,46,197,89, -162,32,32,33,9,223,0,192,89,162,32,32,34,9,223,3,248,22,252,184,2, -208,248,80,158,42,45,20,15,159,42,58,46,247,198,247,193,32,20,98,158,16, -14,2,42,2,44,2,46,2,48,2,50,2,52,2,56,2,54,2,58,2,107, -30,153,2,6,2,7,2,2,62,2,64,2,109,16,27,18,16,2,95,2,70, -8,57,93,8,252,25,8,95,9,8,252,25,8,2,35,18,100,2,80,8,61, -36,35,34,16,4,8,60,11,2,146,3,1,7,101,110,118,50,56,56,57,154, -16,12,8,59,11,3,1,4,103,51,50,55,155,3,1,4,103,51,50,56,156, -3,1,4,103,51,50,57,157,3,1,4,103,51,51,48,158,3,1,4,103,51, -51,49,159,3,1,7,101,110,118,50,57,48,53,160,2,160,2,160,2,160,2, -160,16,12,8,58,11,2,87,2,148,67,107,101,121,119,111,114,100,161,2,151, -2,152,3,1,7,101,110,118,50,57,48,54,162,2,162,2,162,2,162,2,162, -18,158,2,66,8,61,18,16,2,95,2,70,8,62,93,8,252,27,8,95,9, -8,252,27,8,2,35,18,158,2,80,8,61,18,16,2,95,2,70,8,63,93, -8,252,30,8,95,9,8,252,30,8,2,35,18,16,2,99,2,38,8,68,93, -8,252,30,8,16,6,8,67,11,2,71,2,72,3,1,7,101,110,118,50,57, -50,51,163,2,163,16,4,8,66,11,2,74,3,1,7,101,110,118,50,57,50, -52,164,16,4,8,65,11,2,76,3,1,7,101,110,118,50,57,50,53,165,16, -4,8,64,11,2,78,3,1,7,101,110,118,50,57,50,55,166,95,9,8,252, -30,8,2,35,18,102,2,80,8,71,36,35,34,8,60,8,59,8,58,16,4, -8,70,11,3,1,4,103,51,51,52,167,3,1,7,101,110,118,50,57,49,57, -168,16,4,8,69,11,2,150,3,1,7,101,110,118,50,57,50,48,169,18,158, -2,89,8,71,18,158,2,145,8,71,18,158,93,158,2,146,8,71,8,71,18, -158,2,89,8,71,18,158,2,147,8,71,18,158,10,8,71,18,158,2,146,8, -71,18,158,2,149,8,71,18,158,2,89,8,71,18,158,2,89,8,71,18,158, -2,89,8,71,18,158,2,89,8,71,18,158,2,22,8,71,18,158,2,146,8, -71,18,158,2,89,8,71,18,158,2,89,8,71,18,158,2,89,8,71,18,158, -2,89,8,71,18,16,2,158,94,16,2,98,2,150,8,75,93,8,252,26,8, -16,4,8,74,11,3,1,8,119,115,116,109,112,51,51,50,170,3,1,7,101, -110,118,50,57,49,51,171,16,4,8,73,11,3,1,4,103,51,51,51,172,3, -1,7,101,110,118,50,57,51,54,173,16,4,8,72,11,2,130,3,1,7,101, -110,118,50,57,51,55,174,9,16,2,158,2,38,8,75,9,8,75,95,9,8, -252,26,8,2,30,11,16,5,93,2,17,89,162,32,33,48,9,223,0,27,89, -162,32,32,36,2,144,223,2,250,22,252,39,2,11,6,10,10,98,97,100,32, -115,121,110,116,97,120,195,27,28,248,80,158,35,32,196,249,80,158,36,33,248, -80,158,37,34,198,27,248,80,158,38,35,199,28,248,80,158,38,32,193,249,80, -158,39,36,27,248,80,158,41,34,196,28,248,80,158,41,37,193,248,22,59,248, -80,158,42,38,194,11,27,248,80,158,41,35,196,28,248,80,158,41,37,193,248, -22,8,89,162,32,33,39,9,224,9,1,27,249,22,2,89,162,32,33,45,9, -224,4,5,249,80,158,35,39,28,248,80,158,36,32,197,249,80,158,37,33,248, -80,158,38,34,199,27,248,80,158,39,35,200,28,248,80,158,39,32,193,249,80, -158,40,33,248,80,158,41,34,195,248,80,158,41,40,248,80,158,42,35,196,11, -11,194,248,80,158,37,38,196,28,248,22,57,193,21,93,9,248,80,158,35,41, -193,11,11,11,28,192,27,248,22,52,194,27,248,22,78,195,27,248,22,87,196, -27,248,22,88,197,28,249,22,4,80,158,40,42,248,22,216,27,20,15,159,42, -32,45,250,22,209,20,15,159,45,33,45,201,195,249,80,158,40,43,201,27,251, -22,61,202,201,199,200,27,20,15,159,42,34,45,91,159,33,11,90,161,33,32, -11,83,160,38,32,33,11,247,248,22,8,89,162,32,33,40,9,226,12,2,3, -1,250,22,31,89,162,32,32,36,9,225,6,3,7,90,161,33,33,10,247,22, -252,184,2,248,22,252,184,2,89,162,32,33,36,9,224,3,1,248,193,89,162, -32,32,36,9,224,2,3,28,248,22,252,181,2,193,248,22,252,186,2,193,249, -80,158,35,44,21,94,1,21,109,97,107,101,45,115,101,116,33,45,116,114,97, -110,115,102,111,114,109,101,114,175,95,2,145,93,2,146,100,2,147,2,87,10, -2,146,94,2,148,2,38,2,149,94,2,151,95,2,22,2,146,2,152,2,38, -20,15,159,35,35,45,89,162,32,32,8,32,9,225,6,5,4,27,250,22,209, -20,15,159,38,36,45,250,22,209,20,15,159,41,37,45,249,22,60,20,15,159, -43,38,45,250,22,209,20,15,159,46,39,45,250,22,60,20,15,159,49,40,45, -20,15,159,49,41,45,250,22,209,20,15,159,52,42,45,254,22,62,20,15,159, -59,43,45,248,22,52,23,26,20,15,159,59,44,45,20,15,159,59,45,45,248, -22,78,23,26,20,15,159,59,46,45,250,22,2,89,162,33,33,46,9,223,30, -250,22,209,20,15,159,35,47,45,249,22,60,248,22,52,199,250,22,209,20,15, -159,40,48,45,250,22,60,20,15,159,43,49,45,20,15,159,43,50,45,248,22, -78,205,20,15,159,40,51,45,20,15,159,35,52,45,248,22,88,23,29,248,22, -87,23,29,20,15,159,52,53,45,20,15,159,46,54,45,20,15,159,41,55,45, -197,89,162,32,32,33,9,223,0,192,89,162,32,32,34,9,223,3,248,22,252, -184,2,208,247,197,247,193,32,20,98,158,16,13,2,42,2,44,2,46,2,48, -2,50,2,52,2,56,2,54,2,58,2,107,2,153,2,62,2,64,16,24,18, -16,2,95,2,70,8,76,93,8,252,44,8,95,9,8,252,44,8,2,35,18, -100,2,80,8,80,36,35,34,16,4,8,79,11,2,146,3,1,7,101,110,118, -50,57,52,48,176,16,10,8,78,11,3,1,4,103,51,51,53,177,3,1,4, -103,51,51,54,178,3,1,4,103,51,51,55,179,3,1,4,103,51,51,56,180, -3,1,7,101,110,118,50,57,53,51,181,2,181,2,181,2,181,16,10,8,77, -11,2,87,2,148,2,151,2,152,3,1,7,101,110,118,50,57,53,52,182,2, -182,2,182,2,182,18,16,2,95,2,70,8,81,93,8,252,46,8,95,9,8, -252,46,8,2,35,18,16,2,99,2,38,8,86,93,8,252,46,8,16,6,8, -85,11,2,71,2,72,3,1,7,101,110,118,50,57,54,48,183,2,183,16,4, -8,84,11,2,74,3,1,7,101,110,118,50,57,54,49,184,16,4,8,83,11, -2,76,3,1,7,101,110,118,50,57,54,50,185,16,4,8,82,11,2,78,3, -1,7,101,110,118,50,57,54,52,186,95,9,8,252,46,8,2,35,18,158,2, -80,8,80,18,158,2,89,8,80,18,158,2,175,8,80,18,158,2,89,8,80, -18,158,2,145,8,80,18,158,93,16,2,158,2,146,8,80,9,8,80,18,158, -2,89,8,80,18,158,2,147,8,80,18,158,10,8,80,18,158,2,146,8,80, -18,158,2,149,8,80,18,158,2,89,8,80,18,158,2,89,8,80,18,158,2, -22,8,80,18,158,2,146,8,80,18,158,2,89,8,80,18,158,2,89,8,80, -18,158,2,89,8,80,18,158,2,89,8,80,18,158,2,89,8,80,11,93,83, -159,32,93,80,159,32,32,33,89,162,32,33,35,2,4,223,0,248,22,8,89, -162,32,33,38,9,224,1,2,27,247,22,110,87,94,249,22,3,89,162,32,33, -43,9,226,4,3,5,2,87,94,28,248,80,158,36,33,197,12,250,22,252,40, -2,2,4,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,116,196,248,22,210,201,9,87,94,28,249,22,5, -89,162,32,33,36,9,223,7,249,22,221,195,194,194,248,195,198,12,250,22,115, -196,248,22,210,201,249,22,51,202,197,195,11,98,68,35,37,107,101,114,110,101, -108,187,2,67,2,6,2,35,2,30,2,34,98,2,187,2,67,2,6,2,35, -2,30,2,34,0}; - EVAL_ONE_SIZED_STR((char *)expr, 7942); - } - { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,3,51,53,50,102,252,138,12,159,32,20,98,158,16,1,20,24,65,98, -101,103,105,110,0,16,0,83,158,39,20,95,114,67,35,37,113,113,115,116,120, -1,29,2,11,11,10,10,10,32,80,158,32,32,20,98,158,16,2,30,3,2, -2,79,99,104,101,99,107,45,115,112,108,105,99,105,110,103,45,108,105,115,116, -4,254,1,30,5,65,35,37,115,116,120,6,69,115,116,120,45,108,105,115,116, -63,7,8,16,0,11,11,16,1,2,4,33,11,16,4,75,113,117,97,115,105, -115,121,110,116,97,120,47,108,111,99,8,71,113,117,97,115,105,115,121,110,116, -97,120,9,77,117,110,115,121,110,116,97,120,45,115,112,108,105,99,105,110,103, -10,68,117,110,115,121,110,116,97,120,11,16,4,11,11,11,11,16,4,2,8, -2,9,2,10,2,11,32,36,94,16,5,94,2,11,2,10,27,89,162,32,33, -36,61,102,12,222,250,22,252,39,2,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,35,20,98,158,16,0,16,0,11,16,5,94,2, -9,2,8,27,89,162,32,35,42,62,113,113,13,223,1,27,20,15,159,33,32, -40,251,91,159,33,11,20,12,95,33,192,89,162,32,36,56,64,108,111,111,112, -14,226,6,7,5,0,27,249,22,209,20,15,159,38,33,40,199,27,28,248,80, -158,38,32,194,28,27,248,80,158,39,33,195,28,248,80,158,39,34,193,28,249, -22,223,194,20,15,159,40,34,40,9,11,11,27,248,80,158,39,35,195,28,248, -80,158,39,32,193,249,80,158,40,36,248,80,158,41,33,195,248,80,158,41,37, -248,80,158,42,35,196,11,11,11,28,192,28,248,22,186,200,27,248,22,52,248, -80,158,40,38,21,93,62,117,113,15,249,204,194,248,22,59,249,22,59,197,198, -251,198,196,248,22,171,204,204,89,162,32,34,46,9,226,9,7,13,10,249,195, -250,22,209,199,249,22,59,248,80,158,43,33,200,203,197,199,27,28,248,80,158, -39,34,195,28,249,22,223,196,20,15,159,40,35,40,9,11,11,28,192,251,22, -252,39,2,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,203,27,28,248,80,158,40,32,196, -249,80,158,41,36,27,248,80,158,43,33,199,28,248,80,158,43,32,193,28,27, -248,80,158,44,33,194,28,248,80,158,44,34,193,28,249,22,223,194,20,15,159, -45,36,40,9,11,11,27,248,80,158,44,35,194,28,248,80,158,44,32,193,249, -80,158,45,39,248,80,158,46,33,195,248,80,158,46,37,248,80,158,47,35,196, -11,11,11,27,248,80,158,43,35,199,250,22,209,201,195,201,11,28,192,27,248, -22,52,194,27,248,22,53,195,28,248,22,186,204,27,89,162,32,34,8,34,71, -114,101,115,116,45,100,111,110,101,45,107,16,226,10,14,11,2,27,249,22,209, -20,15,159,38,37,40,248,22,52,248,80,158,40,38,21,93,63,117,113,115,17, -27,249,22,209,20,15,159,39,38,40,250,22,209,199,63,99,116,120,18,199,249, -198,250,22,209,200,250,22,61,201,20,15,159,45,39,40,206,200,249,22,51,27, -250,22,61,202,201,200,27,20,15,159,43,40,40,250,22,209,20,15,159,46,41, -40,250,22,209,20,15,159,49,42,40,249,22,60,250,22,209,20,15,159,54,43, -40,249,22,60,248,22,78,23,15,20,15,159,56,44,40,20,15,159,54,45,40, -250,22,209,20,15,159,54,46,40,250,22,60,20,15,159,57,47,40,248,22,52, -23,16,250,22,209,20,15,159,8,28,48,40,249,22,60,20,15,159,8,30,49, -40,248,22,80,23,21,20,15,159,8,28,50,40,20,15,159,54,51,40,20,15, -159,49,52,40,195,203,251,203,197,23,16,89,162,32,32,36,9,224,5,4,249, -194,195,9,196,251,202,197,248,22,171,23,16,89,162,32,32,46,9,229,13,10, -17,16,15,14,4,251,201,196,198,199,27,248,80,158,44,33,199,27,9,89,162, -32,34,47,9,226,10,7,0,1,249,197,250,22,209,199,249,22,51,199,203,199, -249,22,65,197,201,89,162,32,34,49,9,228,13,10,17,15,14,4,27,27,250, -22,209,248,80,158,43,33,199,249,22,59,248,80,158,45,33,248,80,158,46,33, -202,205,248,80,158,43,33,199,89,162,32,34,47,9,226,5,3,9,0,249,197, -250,22,209,199,249,22,51,199,203,199,249,22,65,197,201,251,201,197,199,89,162, -32,32,36,9,224,5,4,249,194,195,9,196,27,28,248,80,158,41,34,197,28, -249,22,223,198,20,15,159,42,53,40,9,11,11,28,192,251,22,252,39,2,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,205,27,28,248,80,158,42,32,198,28,27,248,80, -158,43,33,199,28,248,80,158,43,34,193,28,249,22,223,194,20,15,159,44,54, -40,9,11,11,27,248,80,158,43,35,199,28,248,80,158,43,32,193,249,80,158, -44,36,248,80,158,45,33,195,248,80,158,45,37,248,80,158,46,35,196,11,11, -11,28,192,251,202,196,248,22,170,23,16,23,16,89,162,32,34,45,9,225,13, -17,14,249,195,250,22,209,197,249,22,59,248,80,158,42,33,200,202,197,198,28, -248,22,50,248,22,210,204,250,91,159,33,11,20,12,95,33,192,89,162,32,35, -46,65,112,108,111,111,112,19,226,13,10,15,0,28,248,22,50,197,28,27,248, -22,52,198,27,28,248,80,158,38,34,194,27,249,22,223,196,20,15,159,40,55, -40,28,192,192,249,22,223,196,20,15,159,40,56,40,11,28,192,192,28,248,80, -158,38,32,194,27,248,80,158,39,33,195,28,248,80,158,39,34,193,249,22,223, -194,20,15,159,40,57,40,11,11,251,198,250,22,209,11,203,11,197,201,202,250, -195,248,22,53,200,89,162,32,32,42,9,227,5,4,9,8,7,251,200,248,22, -52,197,199,197,89,162,32,34,45,9,224,6,4,249,195,249,22,51,250,22,209, -248,22,52,200,201,248,22,52,200,248,22,53,197,197,89,162,32,34,43,9,226, -5,4,9,7,251,199,248,22,52,197,198,89,162,32,32,41,9,226,5,4,9, -8,249,197,249,22,51,248,22,52,199,196,195,89,162,32,34,48,9,226,5,4, -9,8,249,197,249,22,51,250,22,209,248,22,52,202,203,248,22,52,202,196,249, -22,65,201,197,28,248,22,57,197,247,197,251,198,200,197,201,202,248,22,210,206, -23,15,89,162,32,34,41,69,99,111,110,118,101,114,116,45,107,20,224,16,13, -249,195,250,22,209,197,199,197,197,28,248,22,252,222,1,248,22,210,204,251,202, -250,22,209,23,17,248,22,252,229,1,248,22,210,23,19,23,17,23,15,23,16, -89,162,32,34,43,9,224,17,14,249,195,250,22,209,197,248,22,252,230,1,248, -22,216,201,197,197,247,204,199,32,89,162,32,32,40,66,115,97,109,101,45,107, -21,226,8,7,6,4,250,22,209,195,248,199,198,196,89,162,32,34,45,2,20, -226,5,8,6,4,250,22,209,195,250,22,59,20,15,159,41,58,40,203,248,201, -203,196,249,22,7,89,162,32,33,45,9,224,3,2,27,249,22,209,20,15,159, -36,59,40,197,27,28,248,80,158,36,32,194,249,80,158,37,39,248,80,158,38, -33,196,27,248,80,158,39,35,197,28,248,80,158,39,32,193,249,80,158,40,36, -248,80,158,41,33,195,248,80,158,41,37,248,80,158,42,35,196,11,11,28,192, -27,248,22,52,194,27,248,22,53,195,250,199,201,195,89,162,32,33,36,9,223, -8,249,22,59,20,15,159,34,8,28,40,195,250,22,252,39,2,11,6,10,10, -98,97,100,32,115,121,110,116,97,120,196,89,162,32,33,49,9,224,3,2,27, -249,22,209,20,15,159,36,8,29,40,197,27,28,248,80,158,36,32,194,249,80, -158,37,39,248,80,158,38,33,196,27,248,80,158,39,35,197,28,248,80,158,39, -32,193,249,80,158,40,39,248,80,158,41,33,195,27,248,80,158,42,35,196,28, -248,80,158,42,32,193,249,80,158,43,36,248,80,158,44,33,195,248,80,158,44, -37,248,80,158,45,35,196,11,11,11,28,192,27,248,22,52,194,27,248,22,78, -195,27,248,22,80,196,250,200,202,195,89,162,32,33,38,9,224,9,4,250,22, -59,20,15,159,36,8,30,40,195,197,250,22,252,39,2,11,6,10,10,98,97, -100,32,115,121,110,116,97,120,196,35,20,98,158,16,8,30,22,2,6,69,115, -116,120,45,112,97,105,114,63,23,11,30,24,2,6,67,115,116,120,45,99,97, -114,25,5,30,26,2,6,71,105,100,101,110,116,105,102,105,101,114,63,27,2, -30,28,2,6,67,115,116,120,45,99,100,114,29,6,30,30,2,6,69,97,112, -112,101,110,100,47,35,102,31,0,30,32,2,6,71,115,116,120,45,110,117,108, -108,47,35,102,33,9,30,34,70,35,37,119,105,116,104,45,115,116,120,35,1, -20,103,101,110,101,114,97,116,101,45,116,101,109,112,111,114,97,114,105,101,115, -36,0,30,37,2,6,67,99,111,110,115,47,35,102,38,1,16,31,18,98,64, -104,101,114,101,39,38,98,36,10,32,11,94,159,2,6,9,11,159,76,35,37, -115,116,120,99,97,115,101,45,115,99,104,101,109,101,40,9,11,16,10,2,8, -2,2,2,9,2,2,2,4,2,2,2,10,2,2,2,11,2,2,98,35,10, -33,11,94,159,2,6,9,11,159,2,40,9,11,16,0,96,34,8,254,1,11, -16,0,16,8,33,11,68,111,114,105,103,45,115,116,120,41,64,98,111,100,121, -42,68,109,107,45,102,105,110,97,108,43,3,1,7,101,110,118,50,57,56,54, -44,2,44,2,44,18,101,2,39,42,36,35,34,33,16,4,41,11,68,104,101, -114,101,45,115,116,120,45,3,1,7,101,110,118,50,57,56,55,46,16,4,40, -11,2,14,3,1,7,101,110,118,50,57,56,56,47,16,10,39,11,63,115,116, -120,48,65,100,101,112,116,104,49,2,21,2,20,3,1,7,101,110,118,50,57, -56,57,50,2,50,2,50,2,50,18,158,2,11,42,18,158,2,11,42,18,158, -2,10,42,18,104,2,39,46,36,35,34,33,41,40,39,16,6,45,11,3,1, -4,103,51,52,49,51,3,1,4,103,51,52,50,52,3,1,7,101,110,118,51, -48,49,48,53,2,53,16,6,44,11,61,120,54,64,114,101,115,116,55,3,1, -7,101,110,118,51,48,49,49,56,2,56,16,6,43,11,66,114,101,115,116,45, -118,57,68,98,105,110,100,105,110,103,115,58,3,1,7,101,110,118,51,48,49, -53,59,2,59,18,158,2,39,46,18,108,63,46,46,46,60,51,36,35,34,33, -41,40,39,45,44,43,16,4,50,11,3,1,4,103,51,52,55,61,3,1,7, -101,110,118,51,48,50,51,62,16,4,49,11,64,116,101,109,112,63,3,1,7, -101,110,118,51,48,50,52,64,16,4,48,11,3,1,4,103,51,52,57,65,3, -1,7,101,110,118,51,48,51,51,66,16,4,47,11,2,18,3,1,7,101,110, -118,51,48,51,52,67,18,16,2,95,66,115,114,99,116,97,103,68,52,93,8, -252,90,8,95,9,8,252,90,8,69,35,37,115,116,120,99,97,115,101,69,18, -158,64,100,101,115,116,70,51,18,158,2,18,51,18,158,2,18,51,18,158,2, -60,51,18,158,2,18,51,18,158,2,18,51,18,158,2,4,51,18,158,2,18, -51,18,158,72,113,117,111,116,101,45,115,121,110,116,97,120,71,51,18,158,2, -18,51,18,158,2,18,51,18,158,2,18,51,18,158,2,10,42,18,158,2,9, -42,18,106,2,11,58,36,35,34,33,41,40,39,16,4,57,11,3,1,4,103, -51,51,57,72,3,1,7,101,110,118,51,48,53,55,73,16,4,56,11,65,95, -101,108,115,101,74,3,1,7,101,110,118,51,48,53,56,75,16,4,55,11,2, -19,3,1,7,101,110,118,51,48,54,49,76,16,4,54,11,61,108,77,3,1, -7,101,110,118,51,48,54,50,78,16,4,53,11,61,97,79,3,1,7,101,110, -118,51,48,54,51,80,18,158,2,9,58,18,158,2,10,58,18,16,2,100,71, -119,105,116,104,45,115,121,110,116,97,120,81,8,28,36,35,34,33,41,16,4, -59,11,2,58,3,1,7,101,110,118,51,48,55,53,82,9,18,99,2,39,8, -31,36,35,34,16,4,8,30,11,2,13,3,1,7,101,110,118,50,57,56,53, -83,16,4,8,29,11,2,41,3,1,7,101,110,118,51,48,55,54,84,18,102, -66,115,121,110,116,97,120,85,8,35,36,35,34,8,30,8,29,16,6,8,34, -11,3,1,4,103,51,53,48,86,3,1,4,103,51,53,49,87,3,1,7,101, -110,118,51,48,56,49,88,2,88,16,6,8,33,11,61,95,89,2,48,3,1, -7,101,110,118,51,48,56,50,90,2,90,16,4,8,32,11,2,42,3,1,7, -101,110,118,51,48,56,53,91,18,99,2,39,8,37,36,35,34,8,30,16,4, -8,36,11,2,41,3,1,7,101,110,118,51,48,56,54,92,18,102,70,115,121, -110,116,97,120,47,108,111,99,93,8,41,36,35,34,8,30,8,36,16,8,8, -40,11,3,1,4,103,51,53,50,94,3,1,4,103,51,53,51,95,3,1,4, -103,51,53,52,96,3,1,7,101,110,118,51,48,57,50,97,2,97,2,97,16, -8,8,39,11,2,89,63,108,111,99,98,2,48,3,1,7,101,110,118,51,48, -57,51,99,2,99,2,99,16,4,8,38,11,2,42,3,1,7,101,110,118,51, -48,57,55,100,11,93,83,159,32,93,80,159,32,32,33,89,162,32,34,38,2, -4,223,0,87,94,28,248,80,158,33,33,194,12,250,22,252,40,2,2,10,6, -18,18,112,114,111,112,101,114,32,115,121,110,116,97,120,32,108,105,115,116,196, -250,22,209,197,196,197,95,68,35,37,107,101,114,110,101,108,101,2,40,2,6, -95,2,101,2,40,2,6,0}; - EVAL_ONE_SIZED_STR((char *)expr, 3220); - } - { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,3,51,53,50,165,252,60,26,159,32,20,98,158,16,1,20,24,65,98, -101,103,105,110,0,16,0,83,158,39,20,95,114,68,35,37,100,101,102,105,110, -101,1,29,2,11,11,10,10,10,32,80,158,32,32,20,98,158,16,0,16,0, -11,11,16,0,32,11,16,4,73,100,101,102,105,110,101,45,115,121,110,116,97, -120,3,77,100,101,102,105,110,101,45,102,111,114,45,115,121,110,116,97,120,4, -76,98,101,103,105,110,45,102,111,114,45,115,121,110,116,97,120,5,66,100,101, -102,105,110,101,6,16,4,11,11,11,11,16,4,2,3,2,4,2,5,2,6, -32,36,94,16,5,95,2,6,2,3,2,4,27,89,162,32,33,34,62,109,107, -7,223,1,89,162,32,33,8,28,9,224,0,1,87,94,28,249,22,71,247,22, -252,83,3,21,93,70,101,120,112,114,101,115,115,105,111,110,8,250,22,252,39, -2,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,209,20,15,159,36,32,45,197,27,89,162,32,32,8,28,68,116, -114,121,45,110,101,120,116,9,226,3,2,4,1,27,89,162,32,32,50,2,9, -226,4,3,2,1,27,89,162,32,32,8,31,2,9,226,4,3,2,1,27,28, -248,80,158,37,32,194,249,80,158,38,33,248,80,158,39,34,196,27,248,80,158, -40,35,197,28,248,80,158,40,32,193,27,28,248,22,206,194,193,197,249,80,158, -42,33,248,80,158,43,34,196,27,248,80,158,44,35,197,250,22,209,198,195,198, -11,11,28,192,27,248,22,52,194,27,248,22,78,195,27,248,22,80,196,91,159, -34,11,90,161,34,32,11,91,159,34,11,20,12,96,34,248,194,198,89,162,32, -33,55,72,115,105,109,112,108,101,45,112,114,111,116,111,10,224,11,9,91,159, -34,11,90,161,34,32,11,27,249,22,209,20,15,159,38,33,45,199,27,28,248, -80,158,38,32,194,249,80,158,39,33,248,80,158,40,34,196,27,248,80,158,41, -35,197,28,248,80,158,41,36,193,248,80,158,41,37,193,11,11,28,192,27,248, -22,52,194,27,248,22,53,195,249,22,7,248,22,216,27,20,15,159,43,34,45, -250,22,209,20,15,159,46,35,45,199,195,89,162,32,33,49,9,225,9,8,2, -27,249,22,209,20,15,159,37,36,45,198,249,80,158,37,38,196,27,249,22,61, -198,197,27,20,15,159,39,37,45,250,22,209,20,15,159,42,38,45,250,22,209, -20,15,159,45,39,45,249,22,56,20,15,159,47,40,45,201,20,15,159,45,41, -45,195,27,28,248,80,158,39,32,195,249,80,158,40,33,248,80,158,41,34,197, -27,248,80,158,42,35,198,91,159,35,11,90,161,35,32,11,250,80,158,47,39, -198,33,11,28,194,27,28,248,22,206,197,196,201,249,80,158,47,40,28,248,80, -158,48,36,196,248,22,59,248,80,158,49,37,197,11,250,22,209,197,199,197,11, -11,28,192,27,248,22,52,194,27,248,22,78,195,27,248,22,80,196,249,22,7, -248,22,216,27,249,22,61,198,199,27,20,15,159,46,42,45,250,22,209,20,15, -159,49,43,45,249,22,65,248,22,53,199,248,22,60,248,22,52,200,195,89,162, -32,33,55,9,226,11,10,2,3,27,249,22,209,20,15,159,38,44,45,199,249, -80,158,38,38,197,27,250,22,61,199,200,198,27,20,15,159,40,45,45,250,22, -209,20,15,159,43,46,45,250,22,209,20,15,159,46,47,45,250,22,62,20,15, -159,49,48,45,249,22,65,248,22,52,205,248,22,78,205,248,22,80,203,20,15, -159,46,49,45,195,250,22,252,39,2,11,6,10,10,98,97,100,32,115,121,110, -116,97,120,197,87,95,249,22,3,89,162,32,33,39,9,224,5,4,28,248,80, -158,34,41,195,12,251,22,252,39,2,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,37,42, -194,28,192,251,22,252,39,2,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,199, -196,12,193,89,162,32,33,47,73,103,101,110,101,114,97,108,45,112,114,111,116, -111,11,226,11,9,1,0,27,249,22,209,20,15,159,38,50,45,199,27,89,162, -32,32,57,2,9,228,5,4,3,2,6,1,27,28,248,80,158,39,32,194,249, -80,158,40,40,27,248,80,158,42,34,197,28,248,80,158,42,32,193,249,80,158, -43,33,248,80,158,44,34,195,27,248,80,158,45,35,196,248,22,59,250,22,209, -199,196,199,11,27,248,80,158,42,35,197,250,22,209,199,195,199,11,28,192,27, -248,22,52,194,27,248,22,78,195,27,248,22,80,196,91,159,34,11,90,161,34, -32,11,248,202,27,249,22,61,199,200,27,20,15,159,46,51,45,250,22,209,20, -15,159,49,52,45,250,22,209,20,15,159,52,53,45,249,22,56,248,22,53,202, -248,22,52,202,20,15,159,52,54,45,195,27,248,202,201,249,22,7,195,89,162, -32,33,38,9,224,4,2,248,194,248,22,59,248,195,197,27,28,248,80,158,40, -32,195,249,80,158,41,33,248,80,158,42,34,197,27,248,80,158,43,35,198,250, -22,209,200,195,200,11,28,192,27,248,22,52,194,27,248,22,53,195,251,22,252, -39,2,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,204,197,250,22,252,39,2,11,6,10,10,98,97,100,32,115,121, -110,116,97,120,197,27,28,248,80,158,39,32,195,249,80,158,40,33,248,80,158, -41,34,197,27,248,80,158,42,35,198,250,22,209,200,195,200,11,28,192,27,248, -22,52,194,27,248,22,53,195,28,248,80,158,41,41,194,249,22,7,195,248,200, -204,247,195,247,193,87,95,28,248,80,158,42,36,195,12,250,22,252,39,2,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,202,28,248,80,158,42,43,195,250,22, -252,39,2,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,202,12,27,249,22,209,20,15,159,44, -55,45,203,27,249,22,209,20,15,159,45,56,45,196,27,249,22,209,20,15,159, -46,57,45,248,199,200,249,80,158,46,38,204,27,250,22,61,198,199,200,27,20, -15,159,48,58,45,250,22,209,20,15,159,51,59,45,250,22,209,20,15,159,54, -8,28,45,250,22,60,248,22,80,203,250,22,209,20,15,159,8,28,8,29,45, -248,22,60,248,22,78,23,15,20,15,159,8,28,8,30,45,248,22,52,203,20, -15,159,54,8,31,45,195,250,22,252,39,2,11,6,10,10,98,97,100,32,115, -121,110,116,97,120,196,27,28,248,80,158,38,32,195,249,80,158,39,33,248,80, -158,40,34,197,27,248,80,158,41,35,198,28,248,80,158,41,32,193,27,28,248, -22,206,194,193,198,249,80,158,43,33,248,80,158,44,34,196,27,248,80,158,45, -35,197,250,22,209,198,195,198,11,11,28,192,27,248,22,52,194,27,248,22,78, -195,27,248,22,80,196,28,248,80,158,41,32,194,247,196,251,22,252,39,2,11, -6,10,10,98,97,100,32,115,121,110,116,97,120,202,197,247,193,27,28,248,80, -158,38,32,195,249,80,158,39,33,248,80,158,40,34,197,27,248,80,158,41,35, -198,28,248,80,158,41,32,193,27,28,248,22,206,194,193,198,249,80,158,43,33, -248,80,158,44,34,196,27,248,80,158,45,35,197,250,22,209,198,195,198,11,11, -28,192,27,248,22,52,194,27,248,22,78,195,27,248,22,80,196,28,248,80,158, -41,41,194,250,22,252,39,2,11,27,249,22,209,20,15,159,46,8,32,45,204, -27,28,248,80,158,46,32,194,249,80,158,47,33,248,80,158,48,34,196,27,248, -80,158,49,35,197,28,248,80,158,49,32,193,249,80,158,50,40,248,80,158,51, -34,195,248,80,158,51,44,248,80,158,52,35,196,11,11,28,192,27,248,22,52, -194,27,248,22,53,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,47,32,195, -249,80,158,48,33,248,80,158,49,34,197,27,248,80,158,50,35,198,28,248,80, -158,50,32,193,249,80,158,51,33,248,80,158,52,34,195,27,248,80,158,53,35, -196,28,248,80,158,53,36,193,248,80,158,53,37,193,11,11,11,28,192,27,248, -22,52,194,27,248,22,78,195,27,248,22,80,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,48,32,196,249,80,158,49,33,248,80,158,50,34, -198,27,248,80,158,51,35,199,28,248,80,158,51,32,193,27,28,248,22,206,194, -193,199,249,80,158,53,33,248,80,158,54,34,196,27,248,80,158,55,35,197,250, -22,209,198,195,198,11,11,28,192,27,248,22,52,194,27,248,22,78,195,27,248, -22,80,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,252,39,2, -11,6,10,10,98,97,100,32,115,121,110,116,97,120,198,201,247,196,247,193,27, -28,248,80,158,37,32,195,249,80,158,38,33,248,80,158,39,34,197,27,248,80, -158,40,35,198,28,248,80,158,40,32,193,249,80,158,41,33,248,80,158,42,34, -195,27,248,80,158,43,35,196,28,248,80,158,43,32,193,249,80,158,44,40,248, -80,158,45,34,195,248,80,158,45,44,248,80,158,46,35,196,11,11,11,28,192, -27,248,22,52,194,27,248,22,78,195,27,248,22,80,196,28,248,80,158,40,41, -194,27,249,22,209,20,15,159,42,8,33,45,201,249,80,158,42,38,203,27,250, -22,61,200,199,198,27,20,15,159,44,8,34,45,250,22,209,20,15,159,47,8, -35,45,250,22,209,20,15,159,50,8,36,45,250,22,60,248,22,80,203,250,22, -209,20,15,159,56,8,37,45,248,22,60,248,22,52,23,15,20,15,159,56,8, -38,45,248,22,78,203,20,15,159,50,8,39,45,195,247,196,247,193,250,22,7, -248,196,20,15,159,37,8,40,45,248,196,20,15,159,37,8,41,45,248,196,20, -15,159,37,8,42,45,37,20,98,158,16,13,30,12,65,35,37,115,116,120,13, -69,115,116,120,45,112,97,105,114,63,14,11,30,15,2,13,67,99,111,110,115, -47,35,102,16,1,30,17,2,13,67,115,116,120,45,99,97,114,18,5,30,19, -2,13,67,115,116,120,45,99,100,114,20,6,30,21,2,13,69,115,116,120,45, -108,105,115,116,63,22,8,30,23,2,13,69,115,116,120,45,62,108,105,115,116, -24,4,30,25,68,35,37,115,116,120,108,111,99,26,68,114,101,108,111,99,97, -116,101,27,1,30,28,2,13,74,115,112,108,105,116,45,115,116,120,45,108,105, -115,116,29,3,30,30,2,13,69,97,112,112,101,110,100,47,35,102,31,0,30, -32,2,13,71,105,100,101,110,116,105,102,105,101,114,63,33,2,30,34,76,35, -37,115,116,120,99,97,115,101,45,115,99,104,101,109,101,35,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,36,0,30,37,2,13,69,115,116,120,45,110,117,108,108,63,38,10,30, -39,2,13,71,115,116,120,45,110,117,108,108,47,35,102,40,9,16,43,18,99, -64,104,101,114,101,41,39,97,37,10,32,11,16,8,2,3,2,2,2,4,2, -2,2,5,2,2,2,6,2,2,98,36,10,33,11,95,159,67,35,37,113,113, -115,116,120,42,9,11,159,2,13,9,11,159,2,35,9,11,16,0,96,35,8, -254,1,11,16,0,16,4,34,11,77,100,101,102,105,110,101,45,118,97,108,117, -101,115,45,115,116,120,43,3,1,7,101,110,118,51,49,48,51,44,16,4,33, -11,63,115,116,120,45,3,1,7,101,110,118,51,49,48,52,46,18,102,2,41, -43,37,36,35,34,33,16,8,42,11,3,1,4,103,51,53,53,47,3,1,4, -103,51,53,54,48,3,1,4,103,51,53,55,49,3,1,7,101,110,118,51,49, -49,57,50,2,50,2,50,16,8,41,11,61,95,51,65,112,114,111,116,111,52, -64,98,111,100,121,53,3,1,7,101,110,118,51,49,50,48,54,2,54,2,54, -16,6,40,11,2,10,2,11,3,1,7,101,110,118,51,49,50,53,55,2,55, -18,16,2,95,66,115,114,99,116,97,103,56,44,93,8,252,166,8,95,9,8, -252,166,8,69,35,37,115,116,120,99,97,115,101,57,18,104,64,100,101,115,116, -58,47,37,36,35,34,33,42,41,40,16,6,46,11,3,1,4,103,51,55,48, -59,3,1,4,103,51,55,49,60,3,1,7,101,110,118,51,49,51,50,61,2, -61,16,6,45,11,62,105,100,62,63,97,114,103,63,3,1,7,101,110,118,51, -49,51,51,64,2,64,18,158,2,41,47,18,16,2,95,2,56,48,93,8,252, -172,8,95,9,8,252,172,8,2,57,18,158,2,58,47,18,158,63,99,116,120, -65,47,18,158,66,108,97,109,98,100,97,66,47,18,158,2,65,47,18,16,2, -95,2,56,49,93,8,252,173,8,95,9,8,252,173,8,2,57,18,104,2,58, -52,37,36,35,34,33,42,41,40,16,8,51,11,3,1,4,103,51,54,55,67, -3,1,4,103,51,54,56,68,3,1,4,103,51,54,57,69,3,1,7,101,110, -118,51,49,53,56,70,2,70,2,70,16,8,50,11,2,62,2,63,64,114,101, -115,116,71,3,1,7,101,110,118,51,49,53,57,72,2,72,2,72,18,158,2, -41,52,18,16,2,95,2,56,53,93,8,252,179,8,95,9,8,252,179,8,2, -57,18,158,2,58,52,18,158,2,65,52,18,158,2,66,52,18,158,2,65,52, -18,158,2,41,43,18,16,2,95,2,56,54,93,8,252,191,8,95,9,8,252, -191,8,2,57,18,104,2,58,58,37,36,35,34,33,42,41,16,6,57,11,2, -10,2,11,2,55,2,55,16,8,56,11,3,1,4,103,51,56,48,73,3,1, -4,103,51,56,49,74,3,1,4,103,51,56,50,75,3,1,7,101,110,118,51, -49,57,48,76,2,76,2,76,16,8,55,11,69,115,111,109,101,116,104,105,110, -103,77,64,109,111,114,101,78,2,71,3,1,7,101,110,118,51,49,57,49,79, -2,79,2,79,18,158,2,65,58,18,158,2,65,58,18,102,2,41,8,28,37, -36,35,34,33,42,41,16,6,59,11,2,62,66,109,107,45,114,104,115,80,3, -1,7,101,110,118,51,49,50,52,81,2,81,18,158,2,41,8,28,18,158,2, -41,8,28,18,16,2,95,2,56,8,29,93,8,252,210,8,95,9,8,252,210, -8,2,57,18,158,2,58,8,28,18,158,2,65,8,28,18,158,2,65,8,28, -18,158,2,65,8,28,18,158,2,65,8,28,18,101,2,41,8,32,37,36,35, -34,33,16,8,8,31,11,3,1,4,103,51,54,49,82,3,1,4,103,51,54, -50,83,3,1,4,103,51,54,51,84,3,1,7,101,110,118,51,50,54,53,85, -2,85,2,85,16,8,8,30,11,2,51,2,62,2,71,3,1,7,101,110,118, -51,50,54,54,86,2,86,2,86,18,101,2,41,8,35,37,36,35,34,33,16, -8,8,34,11,3,1,4,103,51,54,52,87,3,1,4,103,51,54,53,88,3, -1,4,103,51,54,54,89,3,1,7,101,110,118,51,51,48,50,90,2,90,2, -90,16,8,8,33,11,2,51,2,62,64,101,120,112,114,91,3,1,7,101,110, -118,51,51,48,51,92,2,92,2,92,18,16,2,95,2,56,8,36,93,8,252, -234,8,95,9,8,252,234,8,2,57,18,158,2,58,8,35,18,158,2,65,8, -35,18,158,2,65,8,35,18,158,2,65,8,35,18,158,2,65,8,35,18,98, -73,100,101,102,105,110,101,45,118,97,108,117,101,115,93,8,38,37,36,35,16, -4,8,37,11,2,7,3,1,7,101,110,118,51,49,48,50,94,18,158,75,100, -101,102,105,110,101,45,115,121,110,116,97,120,101,115,95,8,38,18,158,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,96,8,38,11,16,5,93,2,5,89,162,32,33,8,32,9,223,0, -27,247,22,252,83,3,87,94,28,249,22,71,194,21,95,66,109,111,100,117,108, -101,97,72,109,111,100,117,108,101,45,98,101,103,105,110,98,69,116,111,112,45, -108,101,118,101,108,99,12,250,22,252,39,2,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,209,20,15,159,36,32,42,197,27,28,248,80,158, -36,32,194,249,80,158,37,33,248,80,158,38,34,196,248,80,158,38,35,248,80, -158,39,36,197,11,28,192,20,15,159,35,33,42,27,89,162,32,32,51,2,9, -225,4,5,2,27,28,248,80,158,36,32,194,249,80,158,37,37,248,80,158,38, -34,196,27,248,80,158,39,36,197,28,248,80,158,39,38,193,248,80,158,39,39, -193,11,11,28,192,27,248,22,52,194,27,248,22,53,195,249,80,158,39,40,198, -27,20,15,159,40,34,42,250,22,209,20,15,159,43,35,42,250,22,209,20,15, -159,46,36,42,249,22,56,20,15,159,48,37,42,249,22,2,89,162,33,33,40, -9,223,18,250,22,209,20,15,159,35,38,42,249,22,60,20,15,159,37,39,42, -248,22,52,199,20,15,159,35,40,42,205,20,15,159,46,41,42,195,250,22,252, -39,2,11,6,10,10,98,97,100,32,115,121,110,116,97,120,196,27,28,248,80, -158,38,32,196,249,80,158,39,37,248,80,158,40,34,198,27,248,80,158,41,36, -199,28,248,80,158,41,32,193,249,80,158,42,33,248,80,158,43,34,195,248,80, -158,43,35,248,80,158,44,36,196,11,11,28,192,27,248,22,52,194,27,248,22, -53,195,28,249,22,252,11,2,200,2,98,247,195,27,250,22,252,25,2,196,202, -248,22,216,20,15,159,44,42,42,27,249,22,209,20,15,159,43,43,42,195,27, -28,248,80,158,43,32,194,28,27,248,80,158,44,34,195,28,248,80,158,44,41, -193,28,249,22,224,194,20,15,159,45,44,42,9,11,11,27,248,80,158,44,36, -195,28,248,80,158,44,38,193,248,80,158,44,39,193,11,11,11,28,192,27,20, -15,159,43,45,42,250,22,209,20,15,159,46,46,42,250,22,209,20,15,159,49, -47,42,249,22,56,20,15,159,51,48,42,201,20,15,159,49,49,42,195,27,28, -248,80,158,44,32,195,28,27,248,80,158,45,34,196,28,248,80,158,45,41,193, -28,249,22,224,194,20,15,159,46,50,42,9,11,11,27,248,80,158,45,36,196, -28,248,80,158,45,32,193,249,80,158,46,33,27,248,80,158,48,34,196,28,248, -80,158,48,38,193,248,22,59,248,80,158,49,39,194,11,27,248,80,158,48,36, -196,28,248,80,158,48,32,193,249,80,158,49,33,248,80,158,50,34,195,248,80, -158,50,35,248,80,158,51,36,196,11,11,11,11,28,192,27,248,22,52,194,27, -248,22,53,195,27,249,22,61,195,196,27,20,15,159,47,51,42,250,22,209,20, -15,159,50,52,42,250,22,209,20,15,159,53,53,42,250,22,60,20,15,159,56, -54,42,248,22,53,203,248,22,52,203,20,15,159,53,55,42,195,27,28,248,80, -158,45,32,196,28,27,248,80,158,46,34,197,28,248,80,158,46,41,193,28,249, -22,224,194,20,15,159,47,56,42,9,11,11,27,248,80,158,46,36,197,28,248, -80,158,46,38,193,248,80,158,46,39,193,11,11,11,28,192,27,20,15,159,45, -57,42,250,22,209,20,15,159,48,58,42,250,22,209,20,15,159,51,59,42,249, -22,56,20,15,159,53,8,28,42,201,20,15,159,51,8,29,42,195,27,28,248, -80,158,46,32,197,28,27,248,80,158,47,34,198,28,248,80,158,47,41,193,28, -249,22,224,194,20,15,159,48,8,30,42,9,11,11,27,248,80,158,47,36,198, -28,248,80,158,47,38,193,248,80,158,47,39,193,11,11,11,28,192,27,20,15, -159,46,8,31,42,250,22,209,20,15,159,49,8,32,42,250,22,209,20,15,159, -52,8,33,42,249,22,56,20,15,159,54,8,34,42,201,20,15,159,52,8,35, -42,195,27,28,248,80,158,47,32,198,28,27,248,80,158,48,34,199,28,248,80, -158,48,41,193,28,249,22,224,194,20,15,159,49,8,36,42,9,11,11,27,248, -80,158,48,36,199,28,248,80,158,48,32,193,249,80,158,49,33,27,248,80,158, -51,34,196,28,248,80,158,51,38,193,248,22,59,248,80,158,52,39,194,11,27, -248,80,158,51,36,196,28,248,80,158,51,32,193,249,80,158,52,33,248,80,158, -53,34,195,248,80,158,53,35,248,80,158,54,36,196,11,11,11,11,28,192,27, -248,22,52,194,27,248,22,53,195,250,22,252,39,2,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,27,20,15,159,47,8,37,42,250,22,209, -20,15,159,50,8,38,42,250,22,209,20,15,159,53,8,39,42,250,22,60,20, -15,159,56,8,40,42,20,15,159,56,8,41,42,250,22,209,20,15,159,59,8, -42,42,250,22,62,20,15,159,8,30,8,43,42,23,21,20,15,159,8,30,8, -44,42,20,15,159,59,8,45,42,20,15,159,53,8,46,42,195,247,193,32,20, -98,158,16,10,2,12,2,30,2,17,2,39,2,19,2,15,2,21,2,23,2, -25,2,32,16,47,18,99,2,41,8,41,37,36,35,16,4,8,40,11,2,45, -3,1,7,101,110,118,51,51,50,48,100,16,4,8,39,11,2,65,3,1,7, -101,110,118,51,51,50,49,101,18,158,93,16,2,101,2,0,8,44,37,36,35, -8,40,8,39,16,4,8,43,11,3,1,4,103,52,48,57,102,3,1,7,101, -110,118,51,51,50,54,103,16,4,8,42,11,2,51,3,1,7,101,110,118,51, -51,50,55,104,9,8,44,18,16,2,95,2,56,8,45,93,8,252,248,8,95, -9,8,252,248,8,2,57,18,101,2,58,8,48,37,36,35,8,40,8,39,16, -6,8,47,11,3,1,4,103,52,48,53,105,3,1,4,103,52,48,54,106,3, -1,7,101,110,118,51,51,51,53,107,2,107,16,6,8,46,11,2,51,64,101, -108,101,109,108,3,1,7,101,110,118,51,51,51,54,109,2,109,18,158,2,65, -8,48,18,158,2,0,8,48,18,158,2,65,8,48,18,158,2,5,8,48,18, -158,2,65,8,48,18,158,2,65,8,48,18,158,110,16,2,101,2,0,8,51, -37,36,35,8,40,8,39,16,6,8,50,11,3,1,4,103,52,48,55,110,3, -1,4,103,52,48,56,111,3,1,7,101,110,118,51,51,52,54,112,2,112,16, -6,8,49,11,2,51,2,108,3,1,7,101,110,118,51,51,52,55,113,2,113, -9,16,2,158,2,93,8,51,9,16,2,158,2,95,8,51,9,16,2,158,2, -96,8,51,9,16,2,158,64,115,101,116,33,114,8,51,9,16,2,158,70,108, -101,116,45,118,97,108,117,101,115,115,8,51,9,16,2,158,71,108,101,116,42, -45,118,97,108,117,101,115,116,8,51,9,16,2,158,73,108,101,116,114,101,99, -45,118,97,108,117,101,115,117,8,51,9,16,2,158,2,66,8,51,9,16,2, -158,71,99,97,115,101,45,108,97,109,98,100,97,118,8,51,9,16,2,158,62, -105,102,119,8,51,9,16,2,158,65,113,117,111,116,101,120,8,51,9,16,2, -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,121,8,51,9,16,2,158,76,102,108,117,105,100,45,108,101,116, -45,115,121,110,116,97,120,122,8,51,9,16,2,158,1,22,119,105,116,104,45, -99,111,110,116,105,110,117,97,116,105,111,110,45,109,97,114,107,123,8,51,9, -16,2,158,65,35,37,97,112,112,124,8,51,9,16,2,158,65,35,37,116,111, -112,125,8,51,9,16,2,158,67,35,37,100,97,116,117,109,126,8,51,9,8, -51,18,102,2,41,8,53,37,36,35,8,40,8,39,8,50,8,49,16,4,8, -52,11,61,101,127,3,1,7,101,110,118,51,51,53,48,128,18,158,2,0,8, -53,18,16,2,95,2,56,8,54,93,8,252,7,9,95,9,8,252,7,9,2, -57,18,104,2,58,8,57,37,36,35,8,40,8,39,8,50,8,49,8,52,16, -4,8,56,11,3,1,4,103,52,49,55,129,3,1,7,101,110,118,51,51,53, -54,130,16,4,8,55,11,61,118,131,3,1,7,101,110,118,51,51,53,55,132, -18,158,2,65,8,57,18,158,2,5,8,57,18,158,2,65,8,57,18,158,2, -93,8,53,18,16,2,95,2,56,8,58,93,8,252,8,9,95,9,8,252,8, -9,2,57,18,104,2,58,8,61,37,36,35,8,40,8,39,8,50,8,49,8, -52,16,6,8,60,11,3,1,4,103,52,49,53,133,3,1,4,103,52,49,54, -134,3,1,7,101,110,118,51,51,54,55,135,2,135,16,6,8,59,11,2,62, -2,91,3,1,7,101,110,118,51,51,54,56,136,2,136,18,158,2,65,8,61, -18,158,2,96,8,61,18,158,2,65,8,61,18,158,67,114,101,113,117,105,114, -101,137,8,53,18,16,2,95,2,56,8,62,93,8,252,9,9,95,9,8,252, -9,9,2,57,18,104,2,58,8,65,37,36,35,8,40,8,39,8,50,8,49, -8,52,16,4,8,64,11,3,1,4,103,52,49,52,138,3,1,7,101,110,118, -51,51,55,55,139,16,4,8,63,11,2,131,3,1,7,101,110,118,51,51,55, -56,140,18,158,2,65,8,65,18,158,78,114,101,113,117,105,114,101,45,102,111, -114,45,115,121,110,116,97,120,141,8,65,18,158,2,65,8,65,18,158,1,20, -114,101,113,117,105,114,101,45,102,111,114,45,116,101,109,112,108,97,116,101,142, -8,53,18,16,2,95,2,56,8,66,93,8,252,10,9,95,9,8,252,10,9, -2,57,18,104,2,58,8,69,37,36,35,8,40,8,39,8,50,8,49,8,52, -16,4,8,68,11,3,1,4,103,52,49,51,143,3,1,7,101,110,118,51,51, -56,54,144,16,4,8,67,11,2,131,3,1,7,101,110,118,51,51,56,55,145, -18,158,2,65,8,69,18,158,2,137,8,69,18,158,2,65,8,69,18,158,2, -95,8,53,18,16,2,95,2,56,8,70,93,8,252,12,9,95,9,8,252,12, -9,2,57,18,104,2,58,8,73,37,36,35,8,40,8,39,8,50,8,49,8, -52,16,4,8,72,11,3,1,4,103,52,49,48,146,3,1,7,101,110,118,51, -52,48,50,147,16,4,8,71,11,65,111,116,104,101,114,148,3,1,7,101,110, -118,51,52,48,51,149,18,158,2,65,8,73,18,158,2,96,8,73,18,158,9, -8,73,18,158,2,65,8,73,18,158,2,0,8,73,18,16,2,103,93,16,2, -158,93,16,2,158,66,118,97,108,117,101,115,150,8,73,9,8,73,9,8,81, -98,8,80,10,32,11,94,159,74,35,37,115,109,97,108,108,45,115,99,104,101, -109,101,151,9,11,159,2,13,9,11,16,6,66,115,121,110,116,97,120,152,29, -153,11,11,73,115,121,110,116,97,120,45,99,97,115,101,42,42,154,2,153,1, -20,101,108,108,105,112,115,105,115,45,99,111,117,110,116,45,101,114,114,111,114, -155,2,153,98,8,79,10,33,11,95,159,64,35,37,115,99,156,9,11,159,2, -151,9,11,159,2,13,9,11,16,0,96,8,78,8,254,1,11,16,0,16,4, -8,77,11,61,120,157,3,1,6,101,110,118,51,56,50,158,16,4,8,76,11, -68,104,101,114,101,45,115,116,120,159,3,1,6,101,110,118,51,56,52,160,16, -4,8,75,11,2,159,2,160,13,16,4,33,2,153,2,57,11,93,8,252,12, -9,16,6,8,74,11,61,114,161,63,115,114,99,162,3,1,7,101,110,118,51, -52,48,54,163,2,163,95,9,8,252,12,9,2,57,18,158,2,65,8,73,18, -158,2,65,8,73,11,9,93,68,35,37,107,101,114,110,101,108,164,96,2,164, -2,35,2,13,2,42,0}; - EVAL_ONE_SIZED_STR((char *)expr, 6726); - } - { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,3,51,53,50,252,169,1,252,193,86,159,32,20,98,158,16,1,20,24, -65,98,101,103,105,110,0,16,0,83,158,39,20,95,114,73,35,37,109,111,114, -101,45,115,99,104,101,109,101,1,29,2,11,11,10,10,10,46,80,158,32,32, -20,98,158,16,24,30,3,2,2,74,115,116,114,117,99,116,58,112,114,111,109, -105,115,101,4,254,1,30,5,2,2,72,109,97,107,101,45,112,114,111,109,105, -115,101,6,254,1,30,7,2,2,68,112,114,111,109,105,115,101,63,8,254,1, -30,9,2,2,69,112,114,111,109,105,115,101,45,112,10,254,1,30,11,2,2, -74,115,101,116,45,112,114,111,109,105,115,101,45,112,33,12,254,1,30,13,2, -2,65,102,111,114,99,101,14,254,1,30,15,2,2,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,16,254, -1,30,17,68,35,37,112,97,114,97,109,122,18,1,23,101,120,116,101,110,100, -45,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111,110,19,254,1,30, -20,2,18,1,20,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111,110, -45,107,101,121,21,254,1,30,22,2,2,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,23,254,1, -30,24,2,2,79,115,116,114,117,99,116,58,98,114,101,97,107,45,112,97,114, -97,109,122,25,254,1,30,26,2,2,77,109,97,107,101,45,98,114,101,97,107, -45,112,97,114,97,109,122,27,254,1,30,28,2,2,73,98,114,101,97,107,45, -112,97,114,97,109,122,63,29,254,1,30,30,2,2,76,98,114,101,97,107,45, -112,97,114,97,109,122,45,114,101,102,31,254,1,30,32,2,2,77,98,114,101, -97,107,45,112,97,114,97,109,122,45,115,101,116,33,33,254,1,30,34,2,2, -1,29,115,116,114,117,99,116,58,98,114,101,97,107,45,112,97,114,97,109,101, -116,101,114,105,122,97,116,105,111,110,35,254,1,30,36,2,2,1,27,109,97, -107,101,45,98,114,101,97,107,45,112,97,114,97,109,101,116,101,114,105,122,97, -116,105,111,110,37,254,1,30,38,2,2,1,23,98,114,101,97,107,45,112,97, -114,97,109,101,116,101,114,105,122,97,116,105,111,110,63,39,254,1,30,40,2, -2,1,27,98,114,101,97,107,45,112,97,114,97,109,101,116,101,114,105,122,97, -116,105,111,110,45,99,101,108,108,41,254,1,30,42,2,2,1,32,115,101,116, -45,98,114,101,97,107,45,112,97,114,97,109,101,116,101,114,105,122,97,116,105, -111,110,45,99,101,108,108,33,43,254,1,30,44,2,2,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,45,254,1,30,46,2,18,77,98,114,101,97,107,45,101,110, -97,98,108,101,100,45,107,101,121,47,254,1,30,48,2,2,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,49,254,1,30,50,2,18,75,99,104,101,99,107, -45,102,111,114,45,98,114,101,97,107,51,254,1,16,0,11,11,16,14,2,41, -2,39,2,31,2,33,2,29,2,37,2,27,2,6,2,10,2,43,2,12,2, -35,2,25,2,4,46,11,16,18,2,49,2,23,2,45,2,16,2,14,2,8, -62,100,111,52,72,112,97,114,97,109,101,116,101,114,105,122,101,53,70,108,101, -116,45,115,116,114,117,99,116,54,71,115,101,116,33,45,118,97,108,117,101,115, -55,64,99,97,115,101,56,66,108,101,116,47,99,99,57,65,100,101,108,97,121, -58,69,102,108,117,105,100,45,108,101,116,59,73,119,105,116,104,45,104,97,110, -100,108,101,114,115,60,64,116,105,109,101,61,74,119,105,116,104,45,104,97,110, -100,108,101,114,115,42,62,78,112,97,114,97,109,101,116,101,114,105,122,101,45, -98,114,101,97,107,63,16,18,11,11,11,11,11,11,11,11,11,11,11,11,11, -11,11,11,11,11,16,18,2,49,2,23,2,45,2,16,2,14,2,8,2,52, -2,53,2,54,2,55,2,56,2,57,2,58,2,59,2,60,2,61,2,62,2, -63,38,50,106,16,5,93,69,99,97,115,101,45,116,101,115,116,64,89,162,32, -33,57,9,223,0,27,249,22,209,20,15,159,35,32,40,196,27,28,248,80,158, -35,32,194,249,80,158,36,33,248,80,158,37,34,196,27,248,80,158,38,35,197, -28,248,80,158,38,32,193,249,80,158,39,33,248,80,158,40,34,195,27,248,80, -158,41,35,196,28,248,80,158,41,32,193,249,80,158,42,36,27,248,80,158,44, -34,196,28,248,80,158,44,32,193,249,80,158,45,36,248,80,158,46,34,195,248, -80,158,46,37,248,80,158,47,35,196,11,248,80,158,43,37,248,80,158,44,35, -196,11,11,11,28,192,27,248,22,52,194,27,248,22,78,195,27,248,22,80,196, -28,248,22,41,248,22,210,194,27,249,22,61,196,195,27,20,15,159,39,33,40, -250,22,209,20,15,159,42,34,40,250,22,209,20,15,159,45,35,40,250,22,60, -20,15,159,48,36,40,248,22,52,203,250,22,209,20,15,159,51,37,40,249,22, -60,20,15,159,53,38,40,248,22,53,23,16,20,15,159,51,39,40,20,15,159, -45,40,40,195,27,249,22,61,195,196,27,20,15,159,39,41,40,250,22,209,20, -15,159,42,42,40,250,22,209,20,15,159,45,43,40,250,22,60,20,15,159,48, -44,40,248,22,53,203,250,22,209,20,15,159,51,45,40,249,22,60,20,15,159, -53,46,40,248,22,52,23,16,20,15,159,51,47,40,20,15,159,45,48,40,195, -27,28,248,80,158,36,32,195,249,80,158,37,33,248,80,158,38,34,197,27,248, -80,158,39,35,198,28,248,80,158,39,32,193,249,80,158,40,33,248,80,158,41, -34,195,27,248,80,158,42,35,196,28,248,80,158,42,32,193,249,80,158,43,36, -27,248,80,158,45,34,196,28,248,80,158,45,38,193,248,80,158,45,39,193,11, -248,80,158,44,37,248,80,158,45,35,196,11,11,11,28,192,27,248,22,52,194, -27,248,22,78,195,27,248,22,80,196,27,249,22,61,195,196,27,20,15,159,40, -49,40,250,22,209,20,15,159,43,50,40,250,22,209,20,15,159,46,51,40,250, -22,60,20,15,159,49,52,40,248,22,53,203,250,22,209,20,15,159,52,53,40, -249,22,60,20,15,159,54,54,40,248,22,52,23,16,20,15,159,52,55,40,20, -15,159,46,56,40,195,250,22,252,39,2,11,6,10,10,98,97,100,32,115,121, -110,116,97,120,197,32,20,98,158,16,8,30,65,65,35,37,115,116,120,66,69, -115,116,120,45,112,97,105,114,63,67,11,30,68,2,66,67,99,111,110,115,47, -35,102,69,1,30,70,2,66,67,115,116,120,45,99,97,114,71,5,30,72,2, -66,67,115,116,120,45,99,100,114,73,6,30,74,2,66,69,97,112,112,101,110, -100,47,35,102,75,0,30,76,2,66,71,115,116,120,45,110,117,108,108,47,35, -102,77,9,30,78,2,66,69,115,116,120,45,108,105,115,116,63,79,8,30,80, -2,66,69,115,116,120,45,62,108,105,115,116,81,4,16,25,18,98,64,104,101, -114,101,82,38,98,36,10,32,11,95,159,2,18,9,11,159,68,35,37,100,101, -102,105,110,101,83,9,11,159,74,35,37,115,109,97,108,108,45,115,99,104,101, -109,101,84,9,11,16,70,2,16,2,2,2,52,2,2,2,53,2,2,2,54, -2,2,2,57,2,2,2,58,2,2,2,23,2,2,2,39,2,2,2,59,2, -2,2,29,2,2,1,22,98,114,101,97,107,45,112,97,114,97,109,101,116,101, -114,105,122,97,116,105,111,110,85,2,2,2,45,2,2,2,6,2,2,2,62, -2,2,2,63,2,2,2,37,2,2,2,35,2,2,2,60,2,2,2,64,2, -2,2,49,2,2,2,25,2,2,2,55,2,2,2,56,2,2,2,61,2,2, -2,27,2,2,2,31,2,2,2,8,2,2,2,4,2,2,2,41,2,2,67, -112,114,111,109,105,115,101,86,2,2,2,43,2,2,2,10,2,2,2,14,2, -2,2,33,2,2,2,12,2,2,98,35,10,33,11,95,159,67,35,37,113,113, -115,116,120,87,9,11,159,76,35,37,115,116,120,99,97,115,101,45,115,99,104, -101,109,101,88,9,11,159,2,66,9,11,16,0,96,34,8,254,1,11,16,0, -16,4,33,11,61,120,89,3,1,7,101,110,118,51,52,48,56,90,18,16,2, -95,66,115,114,99,116,97,103,91,39,93,8,252,41,9,95,9,8,252,41,9, -69,35,37,115,116,120,99,97,115,101,92,18,100,64,100,101,115,116,93,42,36, -35,34,33,16,8,41,11,3,1,4,103,52,50,49,94,3,1,4,103,52,50, -50,95,3,1,4,103,52,50,51,96,3,1,7,101,110,118,51,52,49,53,97, -2,97,2,97,16,6,40,11,61,95,98,61,107,99,3,1,7,101,110,118,51, -52,49,54,100,2,100,18,158,63,99,116,120,101,42,18,158,63,101,113,63,102, -42,18,158,2,101,42,18,158,65,113,117,111,116,101,103,42,18,158,2,101,42, -18,158,2,101,42,18,16,2,95,2,91,43,93,8,252,42,9,95,9,8,252, -42,9,2,92,18,158,2,93,42,18,158,2,101,42,18,158,64,101,113,118,63, -104,42,18,158,2,101,42,18,158,2,103,42,18,158,2,101,42,18,158,2,101, -42,18,16,2,95,2,91,44,93,8,252,43,9,95,9,8,252,43,9,2,92, -18,100,2,93,47,36,35,34,33,16,8,46,11,3,1,4,103,52,49,56,105, -3,1,4,103,52,49,57,106,3,1,4,103,52,50,48,107,3,1,7,101,110, -118,51,52,50,55,108,2,108,2,108,16,6,45,11,2,98,2,99,3,1,7, -101,110,118,51,52,50,56,109,2,109,18,158,2,101,47,18,158,64,109,101,109, -118,110,47,18,158,2,101,47,18,158,2,103,47,18,158,2,101,47,18,158,2, -101,47,11,16,5,93,2,56,89,162,32,33,8,36,9,223,0,27,249,22,209, -20,15,159,35,32,43,196,27,28,248,80,158,35,32,194,249,80,158,36,33,248, -80,158,37,34,196,27,248,80,158,38,35,197,28,248,80,158,38,32,193,249,80, -158,39,36,248,80,158,40,34,195,248,80,158,40,37,248,80,158,41,35,196,11, -11,28,192,27,248,22,52,194,27,248,22,53,195,27,20,15,159,37,33,43,250, -22,209,20,15,159,40,34,43,250,22,209,20,15,159,43,35,43,250,22,62,20, -15,159,46,36,43,202,20,15,159,46,37,43,20,15,159,43,38,43,195,27,28, -248,80,158,36,32,195,249,80,158,37,33,248,80,158,38,34,197,27,248,80,158, -39,35,198,28,248,80,158,39,32,193,249,80,158,40,33,248,80,158,41,34,195, -27,248,80,158,42,35,196,28,248,80,158,42,32,193,249,80,158,43,36,27,248, -80,158,45,34,196,28,248,80,158,45,32,193,28,27,248,80,158,46,34,194,28, -248,80,158,46,38,193,28,249,22,223,194,20,15,159,47,39,43,9,11,11,27, -248,80,158,46,35,194,28,248,80,158,46,32,193,249,80,158,47,33,248,80,158, -48,34,195,27,248,80,158,49,35,196,28,248,80,158,49,39,193,248,80,158,49, -40,193,11,11,11,11,248,80,158,44,37,248,80,158,45,35,196,11,11,11,28, -192,27,248,22,52,194,27,248,22,78,195,27,248,22,87,196,27,248,22,88,197, -249,80,158,41,41,202,27,250,22,61,199,200,198,27,20,15,159,43,40,43,250, -22,209,20,15,159,46,41,43,250,22,209,20,15,159,49,42,43,251,22,62,20, -15,159,53,43,43,248,22,78,204,248,22,52,204,248,22,80,204,20,15,159,49, -44,43,195,27,28,248,80,158,37,32,196,249,80,158,38,33,248,80,158,39,34, -198,27,248,80,158,40,35,199,28,248,80,158,40,32,193,249,80,158,41,33,248, -80,158,42,34,195,27,248,80,158,43,35,196,28,248,80,158,43,32,193,249,80, -158,44,36,27,248,80,158,46,34,196,28,248,80,158,46,32,193,249,80,158,47, -36,27,248,80,158,49,34,196,28,248,80,158,49,39,193,248,22,59,248,80,158, -50,40,194,11,27,248,80,158,49,35,196,28,248,80,158,49,32,193,249,80,158, -50,33,248,80,158,51,34,195,27,248,80,158,52,35,196,28,248,80,158,52,39, -193,248,80,158,52,40,193,11,11,11,248,80,158,45,37,248,80,158,46,35,196, -11,11,11,28,192,27,248,22,52,194,27,248,22,78,195,27,248,22,87,196,27, -248,22,90,197,27,248,22,89,198,249,80,158,43,41,204,27,251,22,61,200,202, -199,201,27,20,15,159,45,45,43,91,159,33,11,90,161,33,32,11,83,160,38, -32,33,11,247,248,22,8,89,162,32,33,40,9,226,15,2,3,1,250,22,31, -89,162,32,32,36,9,225,6,3,7,90,161,33,33,10,247,22,252,184,2,248, -22,252,184,2,89,162,32,33,36,9,224,3,1,248,193,89,162,32,32,36,9, -224,2,3,28,248,22,252,181,2,193,248,22,252,186,2,193,249,80,158,35,42, -21,95,62,105,102,111,95,2,64,61,118,112,94,2,99,63,46,46,46,113,96, -2,0,62,101,49,114,62,101,50,115,2,113,20,15,159,35,46,43,89,162,32, -32,52,9,225,6,5,4,27,250,22,209,20,15,159,38,47,43,250,22,209,20, -15,159,41,48,43,250,22,60,20,15,159,44,49,43,250,22,209,20,15,159,47, -50,43,250,22,60,20,15,159,50,51,43,248,22,78,23,17,248,22,88,23,17, -20,15,159,47,52,43,250,22,209,20,15,159,47,53,43,250,22,62,20,15,159, -50,54,43,248,22,52,23,17,248,22,87,23,17,20,15,159,47,55,43,20,15, -159,41,56,43,197,89,162,32,32,33,9,223,0,192,89,162,32,32,34,9,223, -3,248,22,252,184,2,208,27,28,248,80,158,38,32,197,249,80,158,39,33,248, -80,158,40,34,199,27,248,80,158,41,35,200,28,248,80,158,41,32,193,249,80, -158,42,33,248,80,158,43,34,195,27,248,80,158,44,35,196,28,248,80,158,44, -32,193,249,80,158,45,36,27,248,80,158,47,34,196,28,248,80,158,47,32,193, -249,80,158,48,36,27,248,80,158,50,34,196,28,248,80,158,50,39,193,248,22, -59,248,80,158,51,40,194,11,27,248,80,158,50,35,196,28,248,80,158,50,32, -193,249,80,158,51,33,248,80,158,52,34,195,27,248,80,158,53,35,196,28,248, -80,158,53,39,193,248,22,59,248,80,158,54,40,194,11,11,11,27,248,80,158, -47,35,196,28,248,80,158,47,32,193,249,80,158,48,33,248,80,158,49,34,195, -27,248,80,158,50,35,196,28,248,80,158,50,39,193,248,80,158,50,40,193,11, -11,11,11,11,28,192,27,248,22,52,194,27,248,22,78,195,27,248,22,87,196, -27,248,22,90,197,27,249,22,70,199,36,27,249,22,70,200,37,27,249,22,69, -201,38,249,80,158,46,41,23,15,27,253,22,61,201,206,204,203,202,205,27,20, -15,159,48,57,43,91,159,33,11,90,161,33,32,11,83,160,38,32,33,11,247, -248,22,8,89,162,32,33,40,9,226,18,2,3,1,250,22,31,89,162,32,32, -36,9,225,6,3,7,90,161,33,33,10,247,22,252,184,2,248,22,252,184,2, -89,162,32,33,36,9,224,3,1,248,193,89,162,32,32,36,9,224,2,3,28, -248,22,252,181,2,193,248,22,252,186,2,193,249,80,158,35,42,21,95,63,108, -101,116,116,93,94,2,89,2,112,96,2,111,95,2,64,2,89,94,2,99,2, -113,96,2,0,2,114,2,115,2,113,97,2,56,2,89,62,99,49,117,62,99, -50,118,2,113,20,15,159,35,58,43,89,162,32,32,8,29,9,225,6,5,4, -27,250,22,209,20,15,159,38,59,43,250,22,209,20,15,159,41,8,28,43,250, -22,60,20,15,159,44,8,29,43,250,22,209,20,15,159,47,8,30,43,248,22, -60,250,22,209,20,15,159,51,8,31,43,249,22,60,20,15,159,53,8,32,43, -248,22,78,23,20,20,15,159,51,8,33,43,20,15,159,47,8,34,43,250,22, -209,20,15,159,47,8,35,43,251,22,60,20,15,159,51,8,36,43,250,22,209, -20,15,159,54,8,37,43,250,22,60,20,15,159,57,8,38,43,20,15,159,57, -8,39,43,249,22,69,23,25,37,20,15,159,54,8,40,43,250,22,209,20,15, -159,54,8,41,43,250,22,62,20,15,159,57,8,42,43,248,22,87,23,24,248, -22,90,23,24,20,15,159,54,8,43,43,250,22,209,20,15,159,54,8,44,43, -251,22,62,20,15,159,58,8,45,43,20,15,159,58,8,46,43,249,22,70,23, -26,36,248,22,52,23,25,20,15,159,54,8,47,43,20,15,159,47,8,48,43, -20,15,159,41,8,49,43,197,89,162,32,32,33,9,223,0,192,89,162,32,32, -34,9,223,3,248,22,252,184,2,208,27,28,248,80,158,39,32,198,249,80,158, -40,33,248,80,158,41,34,200,27,248,80,158,42,35,201,28,248,80,158,42,32, -193,27,28,248,22,206,194,193,201,249,80,158,44,33,248,80,158,45,34,196,27, -248,80,158,46,35,197,28,248,80,158,46,32,193,27,28,248,22,206,194,193,196, -249,80,158,48,36,27,248,80,158,50,34,197,28,248,80,158,50,32,193,249,80, -158,51,33,248,80,158,52,34,195,27,248,80,158,53,35,196,28,248,80,158,53, -32,193,249,80,158,54,33,248,80,158,55,34,195,27,248,80,158,56,35,196,28, -248,80,158,56,39,193,248,22,59,248,80,158,57,40,194,11,11,11,27,248,80, -158,50,35,197,250,22,209,198,195,198,11,11,11,28,192,27,248,22,52,194,27, -248,22,78,195,27,248,22,87,196,27,248,22,90,197,27,249,22,70,199,36,27, -249,22,69,200,37,251,22,252,39,2,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,40,32,199,249,80,158,41,33, -248,80,158,42,34,201,27,248,80,158,43,35,202,28,248,80,158,43,32,193,27, -28,248,22,206,194,193,202,249,80,158,45,33,248,80,158,46,34,196,27,248,80, -158,47,35,197,28,248,80,158,47,32,193,27,28,248,22,206,194,193,196,249,80, -158,49,33,248,80,158,50,34,196,27,248,80,158,51,35,197,250,22,209,198,195, -198,11,11,11,28,192,27,248,22,52,194,27,248,22,78,195,27,248,22,87,196, -27,248,22,88,197,251,22,252,39,2,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,89,162,32,32,36,68,116,114,121,45,110,101,120,116, -119,223,7,250,22,252,39,2,11,6,10,10,98,97,100,32,115,121,110,116,97, -120,195,27,28,248,80,158,42,32,201,249,80,158,43,33,248,80,158,44,34,203, -27,248,80,158,45,35,204,250,22,209,206,195,206,11,28,192,27,248,22,52,194, -27,248,22,53,195,28,248,22,57,248,22,210,194,247,195,250,22,252,39,2,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,23,15,247,193,32,20,98,158, -16,11,2,65,2,68,2,70,2,72,2,74,2,76,30,120,2,66,71,105,100, -101,110,116,105,102,105,101,114,63,121,2,2,78,2,80,30,122,68,35,37,115, -116,120,108,111,99,123,68,114,101,108,111,99,97,116,101,124,1,30,125,2,92, -1,20,101,108,108,105,112,115,105,115,45,99,111,117,110,116,45,101,114,114,111, -114,126,0,16,50,18,98,2,82,49,36,35,34,16,4,48,11,2,89,3,1, -7,101,110,118,51,52,51,53,127,18,16,2,95,2,91,50,93,8,252,86,9, -95,9,8,252,86,9,2,92,18,100,2,93,53,36,35,34,48,16,6,52,11, -3,1,4,103,52,53,50,128,3,1,4,103,52,53,51,129,3,1,7,101,110, -118,51,52,52,48,130,2,130,16,6,51,11,2,98,2,112,3,1,7,101,110, -118,51,52,52,49,131,2,131,18,158,2,101,53,18,158,2,0,53,18,16,2, -103,93,16,2,158,93,16,2,158,64,99,111,110,100,132,53,9,53,9,8,29, -98,8,28,10,32,11,94,159,2,84,9,11,159,2,66,9,11,16,6,66,115, -121,110,116,97,120,133,29,134,11,11,73,115,121,110,116,97,120,45,99,97,115, -101,42,42,135,2,134,2,126,2,134,98,59,10,33,11,95,159,64,35,37,115, -99,136,9,11,159,2,84,9,11,159,2,66,9,11,16,0,96,58,8,254,1, -11,16,0,16,4,57,11,2,89,3,1,6,101,110,118,51,56,50,137,16,4, -56,11,68,104,101,114,101,45,115,116,120,138,3,1,6,101,110,118,51,56,52, -139,16,4,55,11,2,138,2,139,13,16,4,33,2,134,2,92,11,93,8,252, -86,9,16,6,54,11,61,114,140,63,115,114,99,141,3,1,7,101,110,118,51, -52,52,53,142,2,142,95,9,8,252,86,9,2,92,18,158,2,101,53,18,158, -64,101,108,115,101,143,49,18,16,2,95,2,91,8,30,93,8,252,88,9,95, -9,8,252,88,9,2,92,18,100,2,93,8,33,36,35,34,48,16,10,8,32, -11,3,1,4,103,52,52,56,144,3,1,4,103,52,52,57,145,3,1,4,103, -52,53,48,146,3,1,4,103,52,53,49,147,3,1,7,101,110,118,51,52,53, -52,148,2,148,2,148,2,148,16,10,8,31,11,2,98,2,112,2,114,2,115, -3,1,7,101,110,118,51,52,53,53,149,2,149,2,149,2,149,18,158,2,101, -8,33,18,158,2,0,8,33,18,158,2,101,8,33,18,16,2,95,2,91,8, -34,93,8,252,90,9,95,9,8,252,90,9,2,92,18,16,2,99,2,113,8, -39,93,8,252,90,9,16,6,8,38,11,2,140,2,141,3,1,7,101,110,118, -51,52,55,56,150,2,150,16,4,8,37,11,64,101,120,110,104,151,3,1,7, -101,110,118,51,52,55,57,152,16,4,8,36,11,63,101,115,99,153,3,1,7, -101,110,118,51,52,56,48,154,16,4,8,35,11,63,101,120,110,155,3,1,7, -101,110,118,51,52,56,50,156,95,9,8,252,90,9,2,92,18,100,2,93,8, -42,36,35,34,48,16,12,8,41,11,3,1,4,103,52,52,51,157,3,1,4, -103,52,52,52,158,3,1,4,103,52,52,53,159,3,1,4,103,52,52,54,160, -3,1,4,103,52,52,55,161,3,1,7,101,110,118,51,52,55,48,162,2,162, -2,162,2,162,2,162,16,12,8,40,11,2,98,2,112,2,99,2,114,2,115, -3,1,7,101,110,118,51,52,55,49,163,2,163,2,163,2,163,2,163,18,158, -2,101,8,42,18,158,2,111,8,42,18,158,2,101,8,42,18,158,2,64,8, -42,18,158,2,101,8,42,18,158,2,101,8,42,18,158,2,0,8,42,18,158, -2,101,8,42,18,158,2,101,8,42,18,16,2,95,2,91,8,43,93,8,252, -93,9,95,9,8,252,93,9,2,92,18,16,2,99,2,113,8,48,93,8,252, -93,9,16,6,8,47,11,2,140,2,141,3,1,7,101,110,118,51,53,48,56, -164,2,164,16,4,8,46,11,2,151,3,1,7,101,110,118,51,53,48,57,165, -16,4,8,45,11,2,153,3,1,7,101,110,118,51,53,49,48,166,16,4,8, -44,11,2,155,3,1,7,101,110,118,51,53,49,50,167,95,9,8,252,93,9, -2,92,18,100,2,93,8,51,36,35,34,48,16,16,8,50,11,3,1,4,103, -52,51,54,168,3,1,4,103,52,51,55,169,3,1,4,103,52,51,56,170,3, -1,4,103,52,51,57,171,3,1,4,103,52,52,48,172,3,1,4,103,52,52, -49,173,3,1,4,103,52,52,50,174,3,1,7,101,110,118,51,52,57,56,175, -2,175,2,175,2,175,2,175,2,175,2,175,16,16,8,49,11,2,98,2,112, -2,99,2,114,2,115,2,117,2,118,3,1,7,101,110,118,51,52,57,57,176, -2,176,2,176,2,176,2,176,2,176,2,176,18,158,2,101,8,51,18,158,2, -116,8,51,18,158,2,101,8,51,18,158,2,101,8,51,18,158,2,89,8,51, -18,158,2,101,8,51,18,158,2,101,8,51,18,158,2,101,8,51,18,158,2, -111,8,51,18,158,2,101,8,51,18,158,2,64,8,51,18,158,2,89,8,51, -18,158,2,101,8,51,18,158,2,101,8,51,18,158,2,0,8,51,18,158,2, -101,8,51,18,158,2,101,8,51,18,158,2,56,8,51,18,158,2,89,8,51, -18,158,2,101,8,51,18,158,2,101,8,51,18,158,2,101,8,51,11,16,5, -93,2,52,89,162,32,33,8,29,9,223,0,27,249,22,209,20,15,159,35,32, -45,196,27,28,248,80,158,35,32,194,249,80,158,36,33,248,80,158,37,34,196, -27,248,80,158,38,35,197,28,248,80,158,38,32,193,249,80,158,39,36,27,248, -80,158,41,34,196,28,248,80,158,41,37,193,248,22,8,89,162,32,33,39,9, -224,9,1,27,249,22,2,89,162,32,33,50,9,224,4,5,249,80,158,35,38, -28,248,80,158,36,32,197,249,80,158,37,33,248,80,158,38,34,199,27,248,80, -158,39,35,200,28,248,80,158,39,32,193,27,28,248,22,206,194,193,200,249,80, -158,41,33,248,80,158,42,34,196,27,248,80,158,43,35,197,248,22,59,250,22, -209,199,196,199,11,11,194,248,80,158,37,39,196,28,248,22,57,193,21,95,9, -9,9,248,80,158,35,40,193,11,27,248,80,158,41,35,196,28,248,80,158,41, -32,193,249,80,158,42,36,27,248,80,158,44,34,196,28,248,80,158,44,32,193, -249,80,158,45,33,248,80,158,46,34,195,27,248,80,158,47,35,196,28,248,80, -158,47,37,193,248,22,59,248,80,158,48,39,194,11,11,27,248,80,158,44,35, -196,28,248,80,158,44,37,193,248,80,158,44,39,193,11,11,11,11,28,192,27, -248,22,52,194,27,248,22,78,195,27,248,22,87,196,27,248,22,90,197,27,249, -22,70,199,36,27,249,22,70,200,37,27,249,22,69,201,38,27,249,22,209,20, -15,159,44,33,45,250,22,2,89,162,32,34,43,9,224,15,16,27,249,22,209, -20,15,159,36,34,45,198,27,248,80,158,36,41,194,28,192,196,27,28,248,80, -158,37,32,195,249,80,158,38,36,248,80,158,39,34,197,248,80,158,39,41,248, -80,158,40,35,198,11,28,192,192,250,22,252,39,2,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,216,27, -20,15,159,49,35,45,250,22,209,20,15,159,52,36,45,23,16,195,248,22,216, -27,20,15,159,49,37,45,250,22,209,20,15,159,52,38,45,206,195,27,28,248, -80,158,44,37,194,248,80,158,44,39,194,11,28,192,27,249,22,209,20,15,159, -46,39,45,27,20,15,159,47,40,45,250,22,209,20,15,159,50,41,45,202,195, -27,248,80,158,46,41,194,28,192,249,80,158,47,42,23,16,27,252,22,61,206, -202,23,17,204,23,16,27,20,15,159,49,42,45,91,159,33,11,90,161,33,32, -11,83,160,38,32,33,11,247,248,22,8,89,162,32,33,40,9,226,19,2,3, -1,250,22,31,89,162,32,32,36,9,225,6,3,7,90,161,33,33,10,247,22, -252,184,2,248,22,252,184,2,89,162,32,33,36,9,224,3,1,248,193,89,162, -32,32,36,9,224,2,3,28,248,22,252,181,2,193,248,22,252,186,2,193,249, -80,158,35,43,21,96,2,116,66,100,111,108,111,111,112,177,94,94,63,118,97, -114,178,64,105,110,105,116,179,2,113,95,2,111,94,63,110,111,116,180,62,101, -48,181,96,2,0,61,99,182,2,113,95,2,177,64,115,116,101,112,183,2,113, -20,15,159,35,43,45,89,162,32,32,8,34,9,225,6,5,4,27,250,22,209, -20,15,159,38,44,45,250,22,209,20,15,159,41,45,45,251,22,60,20,15,159, -45,46,45,20,15,159,45,47,45,250,22,2,89,162,33,33,41,9,223,16,250, -22,209,20,15,159,35,48,45,249,22,60,248,22,52,199,248,22,78,199,20,15, -159,35,49,45,248,22,87,23,15,248,22,89,23,15,250,22,209,20,15,159,48, -50,45,250,22,60,20,15,159,51,51,45,250,22,209,20,15,159,54,52,45,249, -22,60,20,15,159,56,53,45,248,22,52,23,23,20,15,159,54,54,45,250,22, -209,20,15,159,54,55,45,249,22,56,20,15,159,56,56,45,249,22,65,248,22, -90,23,25,248,22,60,250,22,209,20,15,159,8,30,57,45,249,22,56,20,15, -159,8,32,58,45,248,22,78,23,31,20,15,159,8,30,59,45,20,15,159,54, -8,28,45,20,15,159,48,8,29,45,20,15,159,41,8,30,45,197,89,162,32, -32,33,9,223,0,192,89,162,32,32,34,9,223,3,248,22,252,184,2,208,27, -28,248,80,158,47,32,195,249,80,158,48,33,248,80,158,49,34,197,27,248,80, -158,50,35,198,28,248,80,158,50,37,193,248,80,158,50,39,193,11,11,28,192, -27,248,22,52,194,27,248,22,53,195,249,80,158,50,42,23,19,27,254,22,61, -23,22,23,15,23,19,23,17,203,23,21,202,27,20,15,159,52,8,31,45,91, -159,33,11,90,161,33,32,11,83,160,38,32,33,11,247,248,22,8,89,162,32, -33,40,9,226,22,2,3,1,250,22,31,89,162,32,32,36,9,225,6,3,7, -90,161,33,33,10,247,22,252,184,2,248,22,252,184,2,89,162,32,33,36,9, -224,3,1,248,193,89,162,32,32,36,9,224,2,3,28,248,22,252,181,2,193, -248,22,252,186,2,193,249,80,158,35,43,21,96,2,116,2,177,94,94,2,178, -2,179,2,113,96,2,111,2,181,96,2,0,2,114,2,115,2,113,96,2,0, -2,182,2,113,95,2,177,2,183,2,113,20,15,159,35,8,32,45,89,162,32, -32,8,35,9,225,6,5,4,27,250,22,209,20,15,159,38,8,33,45,250,22, -209,20,15,159,41,8,34,45,251,22,60,20,15,159,45,8,35,45,20,15,159, -45,8,36,45,250,22,2,89,162,33,33,41,9,223,16,250,22,209,20,15,159, -35,8,37,45,249,22,60,248,22,52,199,248,22,78,199,20,15,159,35,8,38, -45,248,22,52,23,15,249,22,70,23,16,37,250,22,209,20,15,159,48,8,39, -45,251,22,60,20,15,159,52,8,40,45,248,22,87,23,19,250,22,209,20,15, -159,55,8,41,45,250,22,62,20,15,159,58,8,42,45,249,22,70,23,26,36, -249,22,69,23,26,38,20,15,159,55,8,43,45,250,22,209,20,15,159,55,8, -44,45,249,22,56,20,15,159,57,8,45,45,249,22,65,248,22,90,23,26,248, -22,60,250,22,209,20,15,159,8,31,8,46,45,249,22,56,20,15,159,8,33, -8,47,45,248,22,78,23,32,20,15,159,8,31,8,48,45,20,15,159,55,8, -49,45,20,15,159,48,8,50,45,20,15,159,41,8,51,45,197,89,162,32,32, -33,9,223,0,192,89,162,32,32,34,9,223,3,248,22,252,184,2,208,250,22, -252,39,2,11,6,10,10,98,97,100,32,115,121,110,116,97,120,197,248,80,158, -44,44,20,15,159,44,8,52,45,250,22,252,39,2,11,6,10,10,98,97,100, -32,115,121,110,116,97,120,196,32,20,98,158,16,13,2,65,2,68,2,70,2, -72,2,74,2,78,30,184,2,66,73,115,116,120,45,99,104,101,99,107,47,101, -115,99,185,7,2,80,30,186,2,66,70,115,116,120,45,114,111,116,97,116,101, -187,12,2,76,2,122,2,125,30,188,70,35,37,119,105,116,104,45,115,116,120, -189,76,119,105,116,104,45,115,121,110,116,97,120,45,102,97,105,108,190,3,16, -53,18,98,2,82,8,53,36,35,34,16,4,8,52,11,66,111,114,105,103,45, -120,191,3,1,7,101,110,118,51,53,54,50,192,18,100,2,82,8,56,36,35, -34,8,52,16,16,8,55,11,3,1,4,103,52,53,52,193,3,1,4,103,52, -53,53,194,3,1,4,103,52,53,54,195,3,1,4,103,52,53,55,196,3,1, -4,103,52,53,56,197,3,1,4,103,52,53,57,198,3,1,4,103,52,54,48, -199,3,1,7,101,110,118,51,53,55,57,200,2,200,2,200,2,200,2,200,2, -200,2,200,16,16,8,54,11,2,98,2,178,2,179,2,183,2,181,2,114,2, -182,3,1,7,101,110,118,51,53,56,48,201,2,201,2,201,2,201,2,201,2, -201,2,201,18,101,2,82,8,58,36,35,34,8,52,8,55,8,54,16,6,8, -57,11,2,112,61,115,202,3,1,7,101,110,118,51,53,57,48,203,2,203,18, -16,2,95,2,91,8,59,93,8,252,114,9,95,9,8,252,114,9,2,92,18, -158,2,93,8,56,18,16,2,95,2,91,8,60,93,8,252,115,9,95,9,8, -252,115,9,2,92,18,158,2,93,8,56,18,101,2,82,8,62,36,35,34,8, -52,8,55,8,54,16,4,8,61,11,3,1,4,103,52,54,53,204,3,1,7, -101,110,118,51,54,49,48,205,18,16,2,95,2,91,8,63,93,8,252,119,9, -95,9,8,252,119,9,2,92,18,158,2,93,8,62,18,16,2,95,2,91,8, -64,93,8,252,121,9,95,9,8,252,121,9,2,92,18,16,2,99,2,113,8, -69,93,8,252,121,9,16,6,8,68,11,2,140,2,141,3,1,7,101,110,118, -51,54,50,48,206,2,206,16,4,8,67,11,2,151,3,1,7,101,110,118,51, -54,50,49,207,16,4,8,66,11,2,153,3,1,7,101,110,118,51,54,50,50, -208,16,4,8,65,11,2,155,3,1,7,101,110,118,51,54,50,52,209,95,9, -8,252,121,9,2,92,18,158,2,93,8,62,18,158,2,101,8,62,18,158,2, -116,8,62,18,158,2,177,8,62,18,158,2,101,8,62,18,158,2,101,8,62, -18,158,2,101,8,62,18,158,2,111,8,62,18,158,2,101,8,62,18,158,2, -180,8,62,18,158,2,101,8,62,18,158,2,101,8,62,18,158,2,0,8,62, -18,158,2,101,8,62,18,158,2,177,8,62,18,158,2,101,8,62,18,158,2, -101,8,62,18,158,2,101,8,62,18,158,2,101,8,62,18,16,2,95,2,91, -8,70,93,8,252,124,9,95,9,8,252,124,9,2,92,18,16,2,99,2,113, -8,75,93,8,252,124,9,16,6,8,74,11,2,140,2,141,3,1,7,101,110, -118,51,54,52,48,210,2,210,16,4,8,73,11,2,151,3,1,7,101,110,118, -51,54,52,49,211,16,4,8,72,11,2,153,3,1,7,101,110,118,51,54,52, -50,212,16,4,8,71,11,2,155,3,1,7,101,110,118,51,54,52,52,213,95, -9,8,252,124,9,2,92,18,103,2,93,8,78,36,35,34,8,52,8,55,8, -54,8,61,16,6,8,77,11,3,1,4,103,52,54,54,214,3,1,4,103,52, -54,55,215,3,1,7,101,110,118,51,54,51,53,216,2,216,16,4,8,76,11, -2,115,3,1,7,101,110,118,51,54,51,54,217,18,158,2,101,8,78,18,158, -2,116,8,78,18,158,2,177,8,78,18,158,2,101,8,78,18,158,2,101,8, -78,18,158,2,101,8,78,18,158,2,111,8,78,18,158,2,101,8,78,18,158, -2,0,8,78,18,158,2,101,8,78,18,158,2,101,8,78,18,158,2,0,8, -78,18,158,2,101,8,78,18,158,2,177,8,78,18,158,2,101,8,78,18,158, -2,101,8,78,18,158,2,101,8,78,18,158,2,101,8,78,18,16,2,158,94, -16,2,98,2,183,8,82,93,8,252,110,9,16,4,8,81,11,3,1,8,119, -115,116,109,112,52,54,49,218,3,1,7,101,110,118,51,53,56,57,219,16,4, -8,80,11,3,1,4,103,52,54,52,220,3,1,7,101,110,118,51,54,53,51, -221,16,4,8,79,11,65,95,101,108,115,101,222,3,1,7,101,110,118,51,54, -53,52,223,9,16,2,158,2,113,8,82,9,8,82,95,9,8,252,110,9,2, -189,11,16,5,93,2,58,89,162,32,33,55,9,223,0,27,249,22,209,20,15, -159,35,32,39,196,27,28,248,80,158,35,32,194,249,80,158,36,33,248,80,158, -37,34,196,27,248,80,158,38,35,197,28,248,80,158,38,32,193,249,80,158,39, -36,248,80,158,40,34,195,248,80,158,40,37,248,80,158,41,35,196,11,11,28, -192,27,248,22,52,194,27,248,22,53,195,249,80,158,38,38,199,27,20,15,159, -39,33,39,250,22,209,20,15,159,42,34,39,250,22,209,20,15,159,45,35,39, -249,22,60,20,15,159,47,36,39,250,22,209,20,15,159,50,37,39,250,22,60, -20,15,159,53,38,39,20,15,159,53,39,39,23,17,20,15,159,50,40,39,20, -15,159,45,41,39,195,250,22,252,39,2,11,6,10,10,98,97,100,32,115,121, -110,116,97,120,196,32,20,98,158,16,7,2,65,2,68,2,70,2,72,2,74, -2,76,2,122,16,10,18,98,2,82,8,84,36,35,34,16,4,8,83,11,2, -89,3,1,7,101,110,118,51,54,53,55,224,18,16,2,95,2,91,8,85,93, -8,252,134,9,95,9,8,252,134,9,2,92,18,100,2,93,8,88,36,35,34, -8,83,16,6,8,87,11,3,1,4,103,52,54,56,225,3,1,4,103,52,54, -57,226,3,1,7,101,110,118,51,54,54,50,227,2,227,16,6,8,86,11,2, -58,63,101,120,112,228,3,1,7,101,110,118,51,54,54,51,229,2,229,18,158, -2,101,8,88,18,158,2,6,8,88,18,158,2,101,8,88,18,158,66,108,97, -109,98,100,97,230,8,88,18,158,9,8,88,18,158,2,101,8,88,18,158,2, -101,8,88,11,16,5,93,2,86,27,247,22,252,88,3,253,22,60,248,199,20, -15,159,40,32,32,248,199,20,15,159,40,33,32,248,199,20,15,159,40,34,32, -248,22,60,248,200,20,15,159,41,35,32,248,22,60,248,200,20,15,159,41,36, -32,10,41,20,98,158,16,0,16,5,18,97,2,4,8,89,36,35,34,18,158, -2,6,8,89,18,158,2,8,8,89,18,158,2,10,8,89,18,158,2,12,8, -89,11,16,5,93,2,53,89,162,32,33,55,9,223,0,27,249,22,209,20,15, -159,35,32,45,196,27,28,248,80,158,35,32,194,249,80,158,36,33,248,80,158, -37,34,196,27,248,80,158,38,35,197,28,248,80,158,38,32,193,28,248,80,158, -38,36,248,80,158,39,34,194,27,248,80,158,39,35,194,28,248,80,158,39,32, -193,249,80,158,40,33,248,80,158,41,34,195,27,248,80,158,42,35,196,28,248, -80,158,42,37,193,248,80,158,42,38,193,11,11,11,11,11,28,192,27,248,22, -52,194,27,248,22,78,195,27,248,22,80,196,27,249,22,61,195,196,27,20,15, -159,39,33,45,250,22,209,20,15,159,42,34,45,250,22,209,20,15,159,45,35, -45,251,22,62,20,15,159,49,36,45,20,15,159,49,37,45,248,22,53,204,248, -22,52,204,20,15,159,45,38,45,195,27,28,248,80,158,36,32,195,249,80,158, -37,33,248,80,158,38,34,197,27,248,80,158,39,35,198,28,248,80,158,39,32, -193,249,80,158,40,39,27,248,80,158,42,34,196,28,248,80,158,42,37,193,248, -22,8,89,162,32,33,39,9,224,10,1,27,249,22,2,89,162,32,33,45,9, -224,4,5,249,80,158,35,40,28,248,80,158,36,32,197,249,80,158,37,33,248, -80,158,38,34,199,27,248,80,158,39,35,200,28,248,80,158,39,32,193,249,80, -158,40,33,248,80,158,41,34,195,248,80,158,41,36,248,80,158,42,35,196,11, -11,194,248,80,158,37,38,196,28,248,22,57,193,21,94,9,9,248,80,158,35, -41,193,11,27,248,80,158,42,35,196,28,248,80,158,42,32,193,249,80,158,43, -33,248,80,158,44,34,195,27,248,80,158,45,35,196,28,248,80,158,45,37,193, -248,80,158,45,38,193,11,11,11,11,28,192,27,248,22,52,194,27,248,22,78, -195,27,248,22,87,196,27,248,22,90,197,27,248,22,89,198,27,249,22,209,20, -15,159,43,39,45,249,22,1,22,65,250,22,2,22,59,248,22,216,27,20,15, -159,50,40,45,250,22,209,20,15,159,53,41,45,23,16,195,248,22,216,27,20, -15,159,50,42,45,250,22,209,20,15,159,53,43,45,23,15,195,27,28,248,80, -158,43,37,194,248,80,158,43,38,194,11,28,192,249,80,158,44,42,205,27,250, -22,61,198,200,201,27,20,15,159,46,44,45,91,159,33,11,90,161,33,32,11, -83,160,38,32,33,11,247,248,22,8,89,162,32,33,40,9,226,16,2,3,1, -250,22,31,89,162,32,32,36,9,225,6,3,7,90,161,33,33,10,247,22,252, -184,2,248,22,252,184,2,89,162,32,33,36,9,224,3,1,248,193,89,162,32, -32,36,9,224,2,3,28,248,22,252,181,2,193,248,22,252,186,2,193,249,80, -158,35,43,21,96,1,22,119,105,116,104,45,99,111,110,116,105,110,117,97,116, -105,111,110,45,109,97,114,107,231,2,21,96,2,19,95,1,27,99,111,110,116, -105,110,117,97,116,105,111,110,45,109,97,114,107,45,115,101,116,45,102,105,114, -115,116,232,11,2,21,63,112,47,118,233,2,113,97,2,116,9,65,101,120,112, -114,49,234,64,101,120,112,114,235,2,113,20,15,159,35,45,45,89,162,32,32, -54,9,225,6,5,4,27,250,22,209,20,15,159,38,46,45,250,22,209,20,15, -159,41,47,45,251,22,60,20,15,159,45,48,45,20,15,159,45,49,45,250,22, -209,20,15,159,48,50,45,250,22,62,20,15,159,51,51,45,20,15,159,51,52, -45,248,22,52,23,18,20,15,159,48,53,45,250,22,209,20,15,159,48,54,45, -251,22,62,20,15,159,52,55,45,20,15,159,52,56,45,248,22,80,23,19,248, -22,78,23,19,20,15,159,48,57,45,20,15,159,41,58,45,197,89,162,32,32, -33,9,223,0,192,89,162,32,32,34,9,223,3,248,22,252,184,2,208,248,80, -158,43,44,20,15,159,43,59,45,250,22,252,39,2,11,6,10,10,98,97,100, -32,115,121,110,116,97,120,197,32,20,98,158,16,13,2,65,2,68,2,70,2, -72,2,76,2,78,2,80,2,74,2,184,2,186,2,122,2,125,2,188,16,28, -18,98,2,82,8,91,36,35,34,16,4,8,90,11,63,115,116,120,236,3,1, -7,101,110,118,51,54,55,49,237,18,16,2,95,2,91,8,92,93,8,252,163, -9,95,9,8,252,163,9,2,92,18,100,2,93,8,95,36,35,34,8,90,16, -8,8,94,11,3,1,4,103,52,55,54,238,3,1,4,103,52,55,55,239,3, -1,4,103,52,55,56,240,3,1,7,101,110,118,51,54,55,56,241,2,241,2, -241,16,8,8,93,11,2,98,2,234,2,235,3,1,7,101,110,118,51,54,55, -57,242,2,242,2,242,18,158,2,101,8,95,18,158,2,116,8,95,18,158,9, -8,95,18,158,2,101,8,95,18,100,2,82,8,98,36,35,34,8,90,16,12, -8,97,11,3,1,4,103,52,55,49,243,3,1,4,103,52,55,50,244,3,1, -4,103,52,55,51,245,3,1,4,103,52,55,52,246,3,1,4,103,52,55,53, -247,3,1,7,101,110,118,51,54,57,53,248,2,248,2,248,2,248,2,248,16, -12,8,96,11,2,98,65,112,97,114,97,109,249,63,118,97,108,250,2,234,2, -235,3,1,7,101,110,118,51,54,57,54,251,2,251,2,251,2,251,2,251,18, -16,2,95,2,91,8,99,93,8,252,166,9,95,9,8,252,166,9,2,92,18, -158,2,93,8,98,18,16,2,95,2,91,8,100,93,8,252,167,9,95,9,8, -252,167,9,2,92,18,158,2,93,8,98,18,16,2,95,2,91,8,101,93,8, -252,170,9,95,9,8,252,170,9,2,92,18,16,2,99,2,113,8,106,93,8, -252,170,9,16,6,8,105,11,2,140,2,141,3,1,7,101,110,118,51,55,49, -51,252,252,0,2,252,252,0,16,4,8,104,11,2,151,3,1,7,101,110,118, -51,55,49,52,252,253,0,16,4,8,103,11,2,153,3,1,7,101,110,118,51, -55,49,53,252,254,0,16,4,8,102,11,2,155,3,1,7,101,110,118,51,55, -49,55,252,255,0,95,9,8,252,170,9,2,92,18,102,2,93,8,109,36,35, -34,8,90,8,97,8,96,16,4,8,108,11,3,1,4,103,52,56,49,252,0, -1,3,1,7,101,110,118,51,55,48,57,252,1,1,16,4,8,107,11,2,233, -3,1,7,101,110,118,51,55,49,48,252,2,1,18,158,2,101,8,109,18,158, -2,231,8,109,18,158,2,21,8,109,18,158,2,101,8,109,18,158,2,19,8, -109,18,158,95,16,2,158,2,232,8,109,9,16,2,158,11,8,109,9,16,2, -158,2,21,8,109,9,8,109,18,158,2,101,8,109,18,158,2,101,8,109,18, -158,2,116,8,109,18,158,9,8,109,18,158,2,101,8,109,18,158,2,101,8, -109,18,16,2,158,94,16,2,98,2,233,8,113,93,8,252,165,9,16,4,8, -112,11,3,1,8,119,115,116,109,112,52,55,57,252,3,1,3,1,7,101,110, -118,51,55,48,51,252,4,1,16,4,8,111,11,3,1,4,103,52,56,48,252, -5,1,3,1,7,101,110,118,51,55,50,52,252,6,1,16,4,8,110,11,2, -222,3,1,7,101,110,118,51,55,50,53,252,7,1,9,16,2,158,2,113,8, -113,9,8,113,95,9,8,252,165,9,2,189,11,16,5,93,2,63,89,162,32, -33,8,36,9,223,0,27,249,22,209,20,15,159,35,32,39,196,27,28,248,80, -158,35,32,194,249,80,158,36,33,248,80,158,37,34,196,27,248,80,158,38,35, -197,28,248,80,158,38,32,193,249,80,158,39,33,248,80,158,40,34,195,27,248, -80,158,41,35,196,28,248,80,158,41,32,193,249,80,158,42,33,248,80,158,43, -34,195,27,248,80,158,44,35,196,28,248,80,158,44,36,193,248,80,158,44,37, -193,11,11,11,11,28,192,27,248,22,52,194,27,248,22,78,195,27,248,22,87, -196,27,248,22,88,197,249,80,158,40,38,201,27,250,22,61,200,198,199,27,20, -15,159,42,33,39,250,22,209,20,15,159,45,34,39,250,22,209,20,15,159,48, -35,39,251,22,60,20,15,159,52,36,39,20,15,159,52,37,39,250,22,209,20, -15,159,55,38,39,249,22,60,20,15,159,57,39,39,250,22,209,20,15,159,8, -28,40,39,250,22,62,20,15,159,8,31,41,39,248,22,52,23,23,20,15,159, -8,31,42,39,20,15,159,8,28,43,39,20,15,159,55,44,39,250,22,209,20, -15,159,55,45,39,250,22,60,20,15,159,58,46,39,20,15,159,58,47,39,250, -22,209,20,15,159,8,29,48,39,251,22,62,20,15,159,8,33,49,39,20,15, -159,8,33,50,39,248,22,80,23,25,248,22,78,23,25,20,15,159,8,29,51, -39,20,15,159,55,52,39,20,15,159,48,53,39,195,250,22,252,39,2,11,6, -10,10,98,97,100,32,115,121,110,116,97,120,196,32,20,98,158,16,7,2,65, -2,68,2,70,2,72,2,78,2,80,2,122,16,22,18,98,2,82,8,115,36, -35,34,16,4,8,114,11,2,236,3,1,7,101,110,118,51,55,50,56,252,8, -1,18,16,2,95,2,91,8,116,93,8,252,183,9,95,9,8,252,183,9,2, -92,18,100,2,93,8,119,36,35,34,8,114,16,10,8,118,11,3,1,4,103, -52,56,50,252,9,1,3,1,4,103,52,56,51,252,10,1,3,1,4,103,52, -56,52,252,11,1,3,1,4,103,52,56,53,252,12,1,3,1,7,101,110,118, -51,55,51,53,252,13,1,2,252,13,1,2,252,13,1,2,252,13,1,16,10, -8,117,11,2,98,69,98,111,111,108,45,101,120,112,114,252,14,1,2,234,2, -235,3,1,7,101,110,118,51,55,51,54,252,15,1,2,252,15,1,2,252,15, -1,2,252,15,1,18,158,2,101,8,119,18,158,2,231,8,119,18,158,2,47, -8,119,18,158,2,101,8,119,18,158,76,109,97,107,101,45,116,104,114,101,97, -100,45,99,101,108,108,252,16,1,8,119,18,158,2,101,8,119,18,158,63,97, -110,100,252,17,1,8,119,18,16,2,103,93,16,2,158,10,8,119,9,8,121, -8,28,59,58,57,56,55,13,16,4,33,2,134,2,92,11,93,8,252,183,9, -16,6,8,120,11,2,140,2,141,3,1,7,101,110,118,51,55,52,50,252,18, -1,2,252,18,1,95,9,8,252,183,9,2,92,18,158,2,101,8,119,18,158, -2,101,8,119,18,158,2,101,8,119,18,158,2,0,8,119,18,158,93,16,2, -158,2,51,8,119,9,8,119,18,158,2,101,8,119,18,158,2,116,8,119,18, -158,9,8,119,18,158,2,101,8,119,18,158,2,101,8,119,18,158,2,101,8, -119,11,16,5,93,2,85,27,247,22,252,88,3,253,22,60,248,199,20,15,159, -40,32,32,248,199,20,15,159,40,33,32,248,199,20,15,159,40,34,32,248,22, -60,248,200,20,15,159,41,35,32,248,22,60,248,200,20,15,159,41,36,32,10, -41,20,98,158,16,0,16,5,18,158,2,35,8,89,18,158,2,37,8,89,18, -158,2,39,8,89,18,158,2,41,8,89,18,158,2,43,8,89,11,16,5,94, -2,60,2,62,27,89,162,32,33,34,62,119,104,252,19,1,223,1,89,162,32, -33,55,9,224,0,1,27,249,22,209,20,15,159,36,32,44,197,27,28,248,80, -158,36,32,194,249,80,158,37,33,248,80,158,38,34,196,27,248,80,158,39,35, -197,28,248,80,158,39,32,193,28,248,80,158,39,36,248,80,158,40,34,194,27, -248,80,158,40,35,194,28,248,80,158,40,32,193,249,80,158,41,33,248,80,158, -42,34,195,27,248,80,158,43,35,196,28,248,80,158,43,37,193,248,80,158,43, -38,193,11,11,11,11,11,28,192,27,248,22,52,194,27,248,22,78,195,27,248, -22,80,196,249,80,158,40,39,201,27,249,22,61,197,198,27,20,15,159,42,33, -44,250,22,209,20,15,159,45,34,44,250,22,209,20,15,159,48,35,44,251,22, -62,20,15,159,52,36,44,20,15,159,52,37,44,248,22,53,204,248,22,52,204, -20,15,159,48,38,44,195,27,28,248,80,158,37,32,195,249,80,158,38,33,248, -80,158,39,34,197,27,248,80,158,40,35,198,28,248,80,158,40,32,193,249,80, -158,41,40,27,248,80,158,43,34,196,28,248,80,158,43,37,193,248,22,8,89, -162,32,33,39,9,224,11,1,27,249,22,2,89,162,32,33,45,9,224,4,5, -249,80,158,35,41,28,248,80,158,36,32,197,249,80,158,37,33,248,80,158,38, -34,199,27,248,80,158,39,35,200,28,248,80,158,39,32,193,249,80,158,40,33, -248,80,158,41,34,195,248,80,158,41,36,248,80,158,42,35,196,11,11,194,248, -80,158,37,38,196,28,248,22,57,193,21,94,9,9,248,80,158,35,42,193,11, -27,248,80,158,43,35,196,28,248,80,158,43,32,193,249,80,158,44,33,248,80, -158,45,34,195,27,248,80,158,46,35,196,28,248,80,158,46,37,193,248,80,158, -46,38,193,11,11,11,11,28,192,27,248,22,52,194,27,248,22,78,195,27,248, -22,87,196,27,248,22,90,197,27,248,22,89,198,27,249,22,209,20,15,159,44, -39,44,28,203,20,15,159,44,40,44,20,15,159,44,41,44,249,80,158,44,39, -205,27,252,22,61,201,200,203,204,202,27,20,15,159,46,42,44,91,159,33,11, -90,161,33,32,11,83,160,38,32,33,11,247,248,22,8,89,162,32,33,40,9, -226,16,2,3,1,250,22,31,89,162,32,32,36,9,225,6,3,7,90,161,33, -33,10,247,22,252,184,2,248,22,252,184,2,89,162,32,33,36,9,224,3,1, -248,193,89,162,32,32,36,9,224,2,3,28,248,22,252,181,2,193,248,22,252, -186,2,193,249,80,158,35,43,21,95,2,116,94,94,61,108,252,20,1,95,64, -108,105,115,116,252,21,1,95,64,99,111,110,115,252,22,1,64,112,114,101,100, -252,23,1,67,104,97,110,100,108,101,114,252,24,1,2,113,94,64,98,111,100, -121,252,25,1,97,2,230,9,2,234,2,235,2,113,95,2,116,93,94,63,98, -112,122,252,26,1,95,2,232,11,2,47,96,2,231,2,47,94,2,252,16,1, -11,93,94,67,99,97,108,108,47,101,99,252,27,1,95,2,230,93,2,99,96, -2,231,2,47,2,252,26,1,95,2,53,93,94,1,25,99,117,114,114,101,110, -116,45,101,120,99,101,112,116,105,111,110,45,104,97,110,100,108,101,114,252,28, -1,95,2,230,93,61,101,252,29,1,94,2,99,95,2,230,9,96,2,116,64, -108,111,111,112,252,30,1,93,94,2,252,20,1,2,252,20,1,96,2,132,94, -94,65,110,117,108,108,63,252,31,1,2,252,20,1,94,65,114,97,105,115,101, -252,32,1,2,252,29,1,94,94,94,64,99,97,97,114,252,33,1,2,252,20, -1,2,252,29,1,63,117,113,49,252,34,1,94,2,143,94,2,252,30,1,94, -63,99,100,114,252,35,1,2,252,20,1,95,76,99,97,108,108,45,119,105,116, -104,45,118,97,108,117,101,115,252,36,1,2,252,25,1,95,2,230,64,97,114, -103,115,252,37,1,95,2,230,9,95,65,97,112,112,108,121,252,38,1,66,118, -97,108,117,101,115,252,39,1,2,252,37,1,20,15,159,35,43,44,89,162,32, -32,8,100,9,225,6,5,4,27,250,22,209,20,15,159,38,44,44,250,22,209, -20,15,159,41,45,44,250,22,60,20,15,159,44,46,44,250,22,209,20,15,159, -47,47,44,249,22,60,250,22,209,20,15,159,52,48,44,249,22,60,20,15,159, -54,49,44,250,22,209,20,15,159,57,50,44,249,22,56,20,15,159,59,51,44, -250,22,2,89,162,33,33,41,9,223,30,250,22,209,20,15,159,35,52,44,250, -22,60,20,15,159,38,53,44,248,22,52,200,248,22,78,200,20,15,159,35,54, -44,248,22,90,23,29,248,22,87,23,29,20,15,159,57,55,44,20,15,159,52, -56,44,250,22,209,20,15,159,52,57,44,249,22,60,20,15,159,54,58,44,250, -22,209,20,15,159,57,59,44,251,22,62,20,15,159,8,29,8,28,44,20,15, -159,8,29,8,29,44,248,22,89,23,28,248,22,52,23,28,20,15,159,57,8, -30,44,20,15,159,52,8,31,44,20,15,159,47,8,32,44,250,22,209,20,15, -159,47,8,33,44,250,22,60,20,15,159,50,8,34,44,20,15,159,50,8,35, -44,250,22,209,20,15,159,53,8,36,44,251,22,60,20,15,159,57,8,37,44, -20,15,159,57,8,38,44,20,15,159,57,8,39,44,250,22,209,20,15,159,8, -28,8,40,44,248,22,60,250,22,209,20,15,159,8,32,8,41,44,249,22,60, -20,15,159,8,34,8,42,44,250,22,209,20,15,159,8,37,8,43,44,250,22, -60,20,15,159,8,40,8,44,44,20,15,159,8,40,8,45,44,250,22,209,20, -15,159,8,43,8,46,44,251,22,60,20,15,159,8,47,8,47,44,20,15,159, -8,47,8,48,44,20,15,159,8,47,8,49,44,250,22,209,20,15,159,8,50, -8,50,44,250,22,62,20,15,159,8,53,8,51,44,250,22,209,20,15,159,8, -56,8,52,44,248,22,60,250,22,209,20,15,159,8,60,8,53,44,249,22,60, -20,15,159,8,62,8,54,44,250,22,209,20,15,159,8,65,8,55,44,250,22, -60,20,15,159,8,68,8,56,44,20,15,159,8,68,8,57,44,250,22,209,20, -15,159,8,71,8,58,44,249,22,60,20,15,159,8,73,8,59,44,250,22,209, -20,15,159,8,76,8,60,44,250,22,60,20,15,159,8,79,8,61,44,20,15, -159,8,79,8,62,44,250,22,209,20,15,159,8,82,8,63,44,251,22,60,20, -15,159,8,86,8,64,44,20,15,159,8,86,8,65,44,20,15,159,8,86,8, -66,44,250,22,209,20,15,159,8,89,8,67,44,251,22,62,20,15,159,8,93, -8,68,44,20,15,159,8,93,8,69,44,250,22,209,20,15,159,8,96,8,70, -44,249,22,60,20,15,159,8,98,8,71,44,248,22,78,23,97,20,15,159,8, -96,8,72,44,20,15,159,8,93,8,73,44,20,15,159,8,89,8,74,44,20, -15,159,8,82,8,75,44,20,15,159,8,76,8,76,44,20,15,159,8,71,8, -77,44,20,15,159,8,65,8,78,44,20,15,159,8,60,8,79,44,20,15,159, -8,56,8,80,44,20,15,159,8,53,8,81,44,20,15,159,8,50,8,82,44, -20,15,159,8,43,8,83,44,20,15,159,8,37,8,84,44,20,15,159,8,32, -8,85,44,20,15,159,8,28,8,86,44,20,15,159,53,8,87,44,20,15,159, -47,8,88,44,20,15,159,41,8,89,44,197,89,162,32,32,33,9,223,0,192, -89,162,32,32,34,9,223,3,248,22,252,184,2,208,250,22,252,39,2,11,6, -10,10,98,97,100,32,115,121,110,116,97,120,197,249,22,7,248,195,10,248,195, -11,37,20,98,158,16,12,2,65,2,68,2,70,2,72,2,76,2,78,2,80, -2,122,2,74,2,184,2,186,2,125,16,90,18,99,2,82,8,124,36,35,34, -16,4,8,123,11,74,100,105,115,97,98,108,101,45,98,114,101,97,107,63,252, -40,1,3,1,7,101,110,118,51,55,52,55,252,41,1,16,4,8,122,11,2, -236,3,1,7,101,110,118,51,55,52,56,252,42,1,18,16,2,95,2,91,8, -125,93,8,252,213,9,95,9,8,252,213,9,2,92,18,101,2,93,8,128,36, -35,34,8,123,8,122,16,8,8,127,11,3,1,4,103,52,57,50,252,43,1, -3,1,4,103,52,57,51,252,44,1,3,1,4,103,52,57,52,252,45,1,3, -1,7,101,110,118,51,55,53,53,252,46,1,2,252,46,1,2,252,46,1,16, -8,8,126,11,2,98,2,234,2,235,3,1,7,101,110,118,51,55,53,54,252, -47,1,2,252,47,1,2,252,47,1,18,158,2,101,8,128,18,158,2,116,8, -128,18,158,9,8,128,18,158,2,101,8,128,18,101,2,82,8,131,36,35,34, -8,123,8,122,16,12,8,130,11,3,1,4,103,52,56,55,252,48,1,3,1, -4,103,52,56,56,252,49,1,3,1,4,103,52,56,57,252,50,1,3,1,4, -103,52,57,48,252,51,1,3,1,4,103,52,57,49,252,52,1,3,1,7,101, -110,118,51,55,55,50,252,53,1,2,252,53,1,2,252,53,1,2,252,53,1, -2,252,53,1,16,12,8,129,11,2,98,2,252,23,1,2,252,24,1,2,234, -2,235,3,1,7,101,110,118,51,55,55,51,252,54,1,2,252,54,1,2,252, -54,1,2,252,54,1,2,252,54,1,18,158,95,16,2,158,66,98,101,103,105, -110,48,252,55,1,8,131,9,16,2,158,94,16,2,158,94,16,2,158,64,99, -100,97,114,252,56,1,8,131,9,16,2,158,2,252,20,1,8,131,9,8,131, -9,16,2,158,2,252,29,1,8,131,9,8,131,9,16,2,158,96,16,2,158, -2,231,8,131,9,16,2,158,2,47,8,131,9,16,2,158,2,252,26,1,8, -131,9,16,2,158,93,16,2,158,2,51,8,131,9,8,131,9,8,131,9,8, -131,18,158,96,16,2,158,2,231,8,131,9,16,2,158,2,47,8,131,9,16, -2,158,2,252,26,1,8,131,9,16,2,158,95,16,2,158,2,0,8,131,9, -16,2,158,93,16,2,158,2,51,8,131,9,8,131,9,16,2,158,94,16,2, -158,94,16,2,158,2,252,56,1,8,131,9,16,2,158,2,252,20,1,8,131, -9,8,131,9,16,2,158,2,252,29,1,8,131,9,8,131,9,8,131,9,8, -131,18,16,2,95,2,91,8,132,93,8,252,222,9,95,9,8,252,222,9,2, -92,18,16,2,99,2,113,8,137,93,8,252,222,9,16,6,8,136,11,2,140, -2,141,3,1,7,101,110,118,51,55,57,49,252,57,1,2,252,57,1,16,4, -8,135,11,2,151,3,1,7,101,110,118,51,55,57,50,252,58,1,16,4,8, -134,11,2,153,3,1,7,101,110,118,51,55,57,51,252,59,1,16,4,8,133, -11,2,155,3,1,7,101,110,118,51,55,57,53,252,60,1,95,9,8,252,222, -9,2,92,18,158,2,93,8,131,18,158,2,101,8,131,18,158,2,116,8,131, -18,158,2,101,8,131,18,158,2,101,8,131,18,158,2,252,20,1,8,131,18, -158,2,101,8,131,18,158,2,252,21,1,8,131,18,158,2,101,8,131,18,158, -2,252,22,1,8,131,18,158,2,101,8,131,18,158,2,101,8,131,18,158,2, -101,8,131,18,158,2,101,8,131,18,158,2,252,25,1,8,131,18,158,2,101, -8,131,18,158,2,230,8,131,18,158,9,8,131,18,158,2,101,8,131,18,158, -2,101,8,131,18,158,2,101,8,131,18,158,2,101,8,131,18,158,2,116,8, -131,18,158,93,16,2,158,94,16,2,158,2,252,26,1,8,131,9,16,2,158, -95,16,2,158,2,232,8,131,9,16,2,158,11,8,131,9,16,2,158,2,47, -8,131,9,8,131,9,8,131,9,8,131,18,158,2,101,8,131,18,158,2,231, -8,131,18,158,2,47,8,131,18,158,94,16,2,158,2,252,16,1,8,131,9, -16,2,158,11,8,131,9,8,131,18,158,2,101,8,131,18,158,2,101,8,131, -18,158,2,252,27,1,8,131,18,158,2,101,8,131,18,158,2,230,8,131,18, -158,93,16,2,158,2,99,8,131,9,8,131,18,158,2,101,8,131,18,158,2, -231,8,131,18,158,2,47,8,131,18,158,2,252,26,1,8,131,18,158,2,101, -8,131,18,158,2,53,8,131,18,158,2,101,8,131,18,158,2,101,8,131,18, -158,2,252,28,1,8,131,18,158,2,101,8,131,18,158,2,230,8,131,18,158, -93,16,2,158,2,252,29,1,8,131,9,8,131,18,158,2,101,8,131,18,158, -2,99,8,131,18,158,2,101,8,131,18,158,2,230,8,131,18,158,9,8,131, -18,158,2,101,8,131,18,158,2,116,8,131,18,158,2,252,30,1,8,131,18, -158,93,16,2,158,94,16,2,158,2,252,20,1,8,131,9,16,2,158,2,252, -20,1,8,131,9,8,131,9,8,131,18,158,2,101,8,131,18,158,2,132,8, -131,18,158,94,16,2,158,94,16,2,158,2,252,31,1,8,131,9,16,2,158, -2,252,20,1,8,131,9,8,131,9,16,2,158,94,16,2,158,2,252,32,1, -8,131,9,16,2,158,2,252,29,1,8,131,9,8,131,9,8,131,18,158,2, -101,8,131,18,158,94,16,2,158,94,16,2,158,2,252,33,1,8,131,9,16, -2,158,2,252,20,1,8,131,9,8,131,9,16,2,158,2,252,29,1,8,131, -9,8,131,18,158,2,101,8,131,18,16,2,105,93,16,2,158,94,16,2,158, -2,143,8,131,9,16,2,158,94,16,2,158,2,252,30,1,8,131,9,16,2, -158,94,16,2,158,2,252,35,1,8,131,9,16,2,158,2,252,20,1,8,131, -9,8,131,9,8,131,9,8,131,9,8,141,8,28,59,58,57,56,55,13,16, -4,33,2,134,2,92,11,93,8,252,222,9,16,6,8,140,11,2,140,2,141, -2,252,57,1,2,252,57,1,16,4,8,139,11,2,151,2,252,58,1,16,4, -8,138,11,2,153,2,252,59,1,95,9,8,252,222,9,2,92,18,158,2,101, -8,131,18,158,2,101,8,131,18,158,2,101,8,131,18,158,2,101,8,131,18, -158,2,101,8,131,18,158,2,101,8,131,18,158,2,101,8,131,18,16,2,158, -93,16,2,158,95,16,2,158,2,252,36,1,8,131,9,16,2,158,2,252,25, -1,8,131,9,16,2,158,95,16,2,158,2,230,8,131,9,16,2,158,2,252, -37,1,8,131,9,16,2,158,95,16,2,158,2,230,8,131,9,16,2,158,9, -8,131,9,16,2,158,95,16,2,158,2,252,38,1,8,131,9,16,2,158,2, -252,39,1,8,131,9,16,2,158,2,252,37,1,8,131,9,8,131,9,8,131, -9,8,131,9,8,131,9,8,141,95,9,8,252,222,9,2,92,18,158,2,101, -8,131,18,158,2,101,8,131,18,158,2,101,8,131,18,158,2,101,8,131,18, -158,2,101,8,131,18,158,2,101,8,131,18,158,2,101,8,131,18,158,2,101, -8,131,11,16,5,93,2,55,89,162,32,33,57,9,223,0,27,249,22,209,20, -15,159,35,32,46,196,27,28,248,80,158,35,32,194,249,80,158,36,33,248,80, -158,37,34,196,27,248,80,158,38,35,197,28,248,80,158,38,32,193,28,248,80, -158,38,36,248,80,158,39,34,194,27,248,80,158,39,35,194,28,248,80,158,39, -32,193,249,80,158,40,37,248,80,158,41,34,195,248,80,158,41,36,248,80,158, -42,35,196,11,11,11,11,28,192,27,248,22,52,194,27,248,22,53,195,27,20, -15,159,37,33,46,250,22,209,20,15,159,40,34,46,250,22,209,20,15,159,43, -35,46,250,22,62,20,15,159,46,36,46,250,22,209,20,15,159,49,37,46,248, -22,60,250,22,209,20,15,159,53,38,46,249,22,60,20,15,159,55,39,46,23, -19,20,15,159,53,40,46,20,15,159,49,41,46,20,15,159,46,42,46,20,15, -159,43,43,46,195,27,89,162,32,32,51,2,119,225,3,4,2,27,89,162,32, -32,36,2,119,223,1,250,22,252,39,2,11,6,10,10,98,97,100,32,115,121, -110,116,97,120,195,27,28,248,80,158,37,32,195,249,80,158,38,33,248,80,158, -39,34,197,27,248,80,158,40,35,198,28,248,80,158,40,32,193,249,80,158,41, -37,27,248,80,158,43,34,196,28,248,80,158,43,38,193,248,22,59,248,80,158, -44,39,194,11,27,248,80,158,43,35,196,28,248,80,158,43,32,193,249,80,158, -44,37,248,80,158,45,34,195,248,80,158,45,36,248,80,158,46,35,196,11,11, -11,28,192,27,248,22,52,194,27,248,22,78,195,27,248,22,80,196,28,27,248, -80,158,41,39,27,20,15,159,42,44,46,250,22,209,20,15,159,45,45,46,199, -195,87,94,249,22,3,89,162,32,33,39,9,224,10,9,28,248,80,158,34,40, -195,12,251,22,252,39,2,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,42,41,194,28,192,251,22, -252,39,2,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,209,20,15,159,42,46,46,248,80, -158,43,42,27,20,15,159,44,47,46,250,22,209,20,15,159,47,48,46,201,195, -27,28,248,80,158,42,38,194,248,80,158,42,39,194,11,28,192,249,80,158,43, -43,202,27,250,22,61,201,198,200,27,20,15,159,45,49,46,91,159,33,11,90, -161,33,32,11,83,160,38,32,33,11,247,248,22,8,89,162,32,33,40,9,226, -15,2,3,1,250,22,31,89,162,32,32,36,9,225,6,3,7,90,161,33,33, -10,247,22,252,184,2,248,22,252,184,2,89,162,32,33,36,9,224,3,1,248, -193,89,162,32,32,36,9,224,2,3,28,248,22,252,181,2,193,248,22,252,186, -2,193,249,80,158,35,44,21,96,70,108,101,116,45,118,97,108,117,101,115,252, -61,1,93,94,94,64,116,101,109,112,252,62,1,2,113,2,235,95,64,115,101, -116,33,252,63,1,62,105,100,252,64,1,2,252,62,1,2,113,20,15,159,35, -50,46,89,162,32,32,56,9,225,6,5,4,27,250,22,209,20,15,159,38,51, -46,250,22,209,20,15,159,41,52,46,250,22,62,20,15,159,44,53,46,250,22, -209,20,15,159,47,54,46,248,22,60,250,22,209,20,15,159,51,55,46,249,22, -60,248,22,78,23,20,248,22,80,23,20,20,15,159,51,56,46,20,15,159,47, -57,46,250,22,2,89,162,33,33,41,9,223,15,250,22,209,20,15,159,35,58, -46,250,22,60,20,15,159,38,59,46,248,22,52,200,248,22,78,200,20,15,159, -35,8,28,46,248,22,52,206,248,22,78,206,20,15,159,41,8,29,46,197,89, -162,32,32,33,9,223,0,192,89,162,32,32,34,9,223,3,248,22,252,184,2, -208,248,80,158,42,45,20,15,159,42,8,30,46,247,196,247,193,27,28,248,80, -158,37,32,196,249,80,158,38,33,248,80,158,39,34,198,27,248,80,158,40,35, -199,28,248,80,158,40,32,193,249,80,158,41,37,27,248,80,158,43,34,196,28, -248,80,158,43,32,193,249,80,158,44,33,248,80,158,45,34,195,248,80,158,45, -36,248,80,158,46,35,196,11,27,248,80,158,43,35,196,28,248,80,158,43,32, -193,249,80,158,44,37,248,80,158,45,34,195,248,80,158,45,36,248,80,158,46, -35,196,11,11,11,28,192,27,248,22,52,194,27,248,22,78,195,27,248,22,80, -196,28,248,80,158,40,40,194,27,249,22,61,196,195,27,20,15,159,41,8,31, -46,250,22,209,20,15,159,44,8,32,46,250,22,209,20,15,159,47,8,33,46, -250,22,60,20,15,159,50,8,34,46,248,22,52,203,248,22,53,203,20,15,159, -47,8,35,46,195,247,196,247,193,32,20,98,158,16,14,2,65,2,68,2,70, -2,72,2,76,2,74,2,78,2,80,2,120,30,252,65,1,2,88,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,252,66,1,0,30,252,67,1,2,189,1,20,103,101,110,101,114, -97,116,101,45,116,101,109,112,111,114,97,114,105,101,115,252,68,1,0,2,122, -2,125,2,188,16,36,18,98,2,82,8,143,36,35,34,16,4,8,142,11,2, -236,3,1,7,101,110,118,51,56,48,52,252,69,1,18,16,2,95,2,91,8, -144,93,8,252,244,9,95,9,8,252,244,9,2,92,18,100,2,93,8,147,36, -35,34,8,142,16,6,8,146,11,3,1,4,103,53,48,52,252,70,1,3,1, -4,103,53,48,53,252,71,1,3,1,7,101,110,118,51,56,49,48,252,72,1, -2,252,72,1,16,6,8,145,11,2,98,2,235,3,1,7,101,110,118,51,56, -49,49,252,73,1,2,252,73,1,18,158,2,101,8,147,18,158,2,252,61,1, -8,147,18,158,2,101,8,147,18,158,2,101,8,147,18,158,9,8,147,18,158, -2,101,8,147,18,158,2,101,8,147,18,16,2,103,93,16,2,158,93,16,2, -158,64,118,111,105,100,252,74,1,8,147,9,8,147,9,8,149,8,28,59,58, -57,56,55,13,16,4,33,2,134,2,92,11,93,8,252,244,9,16,6,8,148, -11,2,140,2,141,3,1,7,101,110,118,51,56,49,53,252,75,1,2,252,75, -1,95,9,8,252,244,9,2,92,18,158,2,101,8,147,18,16,2,95,2,91, -8,150,93,8,252,245,9,95,9,8,252,245,9,2,92,18,100,2,93,8,153, -36,35,34,8,142,16,8,8,152,11,3,1,4,103,52,57,56,252,76,1,3, -1,4,103,52,57,57,252,77,1,3,1,4,103,53,48,48,252,78,1,3,1, -7,101,110,118,51,56,50,53,252,79,1,2,252,79,1,2,252,79,1,16,8, -8,151,11,2,98,2,252,64,1,2,235,3,1,7,101,110,118,51,56,50,54, -252,80,1,2,252,80,1,2,252,80,1,18,158,2,82,8,153,18,16,2,95, -2,91,8,154,93,8,252,249,9,95,9,8,252,249,9,2,92,18,158,2,93, -8,153,18,16,2,95,2,91,8,155,93,8,252,252,9,95,9,8,252,252,9, -2,92,18,16,2,99,2,113,8,160,93,8,252,252,9,16,6,8,159,11,2, -140,2,141,3,1,7,101,110,118,51,56,52,51,252,81,1,2,252,81,1,16, -4,8,158,11,2,151,3,1,7,101,110,118,51,56,52,52,252,82,1,16,4, -8,157,11,2,153,3,1,7,101,110,118,51,56,52,53,252,83,1,16,4,8, -156,11,2,155,3,1,7,101,110,118,51,56,52,55,252,84,1,95,9,8,252, -252,9,2,92,18,102,2,93,8,163,36,35,34,8,142,8,152,8,151,16,4, -8,162,11,3,1,4,103,53,48,56,252,85,1,3,1,7,101,110,118,51,56, -51,57,252,86,1,16,4,8,161,11,2,252,62,1,3,1,7,101,110,118,51, -56,52,48,252,87,1,18,158,2,101,8,163,18,158,2,252,61,1,8,163,18, -158,2,101,8,163,18,158,2,101,8,163,18,158,2,101,8,163,18,158,2,101, -8,163,18,158,2,101,8,163,18,158,2,252,63,1,8,163,18,158,2,101,8, -163,18,158,2,101,8,163,18,16,2,158,94,16,2,98,2,252,62,1,8,167, -93,8,252,248,9,16,4,8,166,11,3,1,8,119,115,116,109,112,53,48,54, -252,88,1,3,1,7,101,110,118,51,56,51,52,252,89,1,16,4,8,165,11, -3,1,4,103,53,48,55,252,90,1,3,1,7,101,110,118,51,56,53,54,252, -91,1,16,4,8,164,11,2,222,3,1,7,101,110,118,51,56,53,55,252,92, -1,9,16,2,158,2,113,8,167,9,8,167,95,9,8,252,248,9,2,189,18, -16,2,95,2,91,8,168,93,8,252,255,9,95,9,8,252,255,9,2,92,18, -100,2,93,8,171,36,35,34,8,142,16,8,8,170,11,3,1,4,103,53,48, -49,252,93,1,3,1,4,103,53,48,50,252,94,1,3,1,4,103,53,48,51, -252,95,1,3,1,7,101,110,118,51,56,54,52,252,96,1,2,252,96,1,2, -252,96,1,16,8,8,169,11,2,98,2,252,64,1,2,235,3,1,7,101,110, -118,51,56,54,53,252,97,1,2,252,97,1,2,252,97,1,18,158,2,101,8, -171,18,158,2,252,63,1,8,171,18,158,2,101,8,171,11,16,5,93,2,57, -89,162,32,33,8,32,9,223,0,27,249,22,209,20,15,159,35,32,39,196,27, -28,248,80,158,35,32,194,249,80,158,36,33,248,80,158,37,34,196,27,248,80, -158,38,35,197,28,248,80,158,38,32,193,249,80,158,39,33,248,80,158,40,34, -195,27,248,80,158,41,35,196,28,248,80,158,41,32,193,249,80,158,42,33,248, -80,158,43,34,195,27,248,80,158,44,35,196,28,248,80,158,44,36,193,248,80, -158,44,37,193,11,11,11,11,28,192,27,248,22,52,194,27,248,22,78,195,27, -248,22,87,196,27,248,22,88,197,249,80,158,40,38,201,27,250,22,61,199,200, -198,27,20,15,159,42,33,39,250,22,209,20,15,159,45,34,39,250,22,209,20, -15,159,48,35,39,249,22,60,20,15,159,50,36,39,250,22,209,20,15,159,53, -37,39,251,22,62,20,15,159,57,38,39,250,22,209,20,15,159,8,28,39,39, -248,22,60,248,22,78,23,21,20,15,159,8,28,40,39,248,22,52,23,17,248, -22,80,23,17,20,15,159,53,41,39,20,15,159,48,42,39,195,250,22,252,39, -2,11,6,10,10,98,97,100,32,115,121,110,116,97,120,196,32,20,98,158,16, -7,2,65,2,68,2,70,2,72,2,78,2,80,2,122,16,11,18,98,2,82, -8,173,36,35,34,16,4,8,172,11,2,236,3,1,7,101,110,118,51,56,55, -49,252,98,1,18,16,2,95,2,91,8,174,93,8,252,9,10,95,9,8,252, -9,10,2,92,18,100,2,93,8,177,36,35,34,8,172,16,10,8,176,11,3, -1,4,103,53,48,57,252,99,1,3,1,4,103,53,49,48,252,100,1,3,1, -4,103,53,49,49,252,101,1,3,1,4,103,53,49,50,252,102,1,3,1,7, -101,110,118,51,56,55,56,252,103,1,2,252,103,1,2,252,103,1,2,252,103, -1,16,10,8,175,11,2,98,2,178,65,98,111,100,121,49,252,104,1,2,252, -25,1,3,1,7,101,110,118,51,56,55,57,252,105,1,2,252,105,1,2,252, -105,1,2,252,105,1,18,158,2,101,8,177,18,158,67,99,97,108,108,47,99, -99,252,106,1,8,177,18,158,2,101,8,177,18,158,2,230,8,177,18,158,2, -101,8,177,18,158,2,101,8,177,18,158,2,101,8,177,18,158,2,101,8,177, -11,16,5,93,2,54,89,162,32,33,55,9,223,0,27,249,22,209,20,15,159, -35,32,41,196,27,28,248,80,158,35,32,194,249,80,158,36,33,248,80,158,37, -34,196,27,248,80,158,38,35,197,28,248,80,158,38,32,193,249,80,158,39,33, -248,80,158,40,34,195,27,248,80,158,41,35,196,28,248,80,158,41,32,193,249, -80,158,42,36,27,248,80,158,44,34,196,28,248,80,158,44,37,193,248,22,59, -248,80,158,45,38,194,11,27,248,80,158,44,35,196,28,248,80,158,44,32,193, -249,80,158,45,33,248,80,158,46,34,195,27,248,80,158,47,35,196,28,248,80, -158,47,37,193,248,80,158,47,38,193,11,11,11,11,11,28,192,27,248,22,52, +38,2,38,9,2,40,2,41,2,38,20,15,159,36,38,48,89,162,33,33,59, +9,225,6,5,4,27,250,22,209,20,15,159,39,39,48,250,22,209,20,15,159, +42,40,48,251,22,60,20,15,159,46,41,48,250,22,2,80,159,49,8,45,34, +248,22,52,23,15,248,22,87,23,15,20,15,159,46,44,48,250,22,209,20,15, +159,49,45,48,252,22,62,20,15,159,54,46,48,250,22,2,80,159,57,8,47, +34,248,22,89,23,23,248,22,52,23,23,20,15,159,54,58,48,248,22,90,23, +20,248,22,78,23,20,20,15,159,49,59,48,20,15,159,42,8,27,48,197,89, +162,33,33,34,9,223,0,192,89,162,33,33,35,9,223,3,248,22,252,185,2, +208,248,80,158,43,47,20,15,159,43,8,28,48,250,22,252,39,2,11,6,10, +10,98,97,100,32,115,121,110,116,97,120,196,33,20,98,159,36,16,15,2,42, +2,44,2,46,2,48,2,50,2,52,2,54,2,56,2,58,2,60,30,106,2, +30,2,8,0,30,107,2,6,71,115,116,120,45,114,111,116,97,116,101,42,108, +13,2,62,2,64,30,109,2,30,76,119,105,116,104,45,115,121,110,116,97,120, +45,102,97,105,108,110,3,16,29,18,98,2,66,8,28,37,36,35,16,4,8, +27,11,2,68,3,1,7,101,110,118,50,56,48,50,111,18,100,2,66,8,31, +37,36,35,8,27,16,12,8,30,11,3,1,4,103,51,49,52,112,3,1,4, +103,51,49,53,113,3,1,4,103,51,49,54,114,3,1,4,103,51,49,55,115, +3,1,4,103,51,49,56,116,3,1,7,101,110,118,50,56,49,53,117,2,117, +2,117,2,117,2,117,16,12,8,29,11,2,87,2,37,2,39,2,40,2,41, +3,1,7,101,110,118,50,56,49,54,118,2,118,2,118,2,118,2,118,18,16, +2,95,2,70,8,32,93,8,252,245,7,95,9,8,252,245,7,2,35,18,158, +2,80,8,31,18,16,2,95,2,70,8,33,93,8,252,251,7,95,9,8,252, +251,7,2,35,18,16,2,99,2,38,8,38,93,8,252,251,7,16,6,8,37, +11,2,71,2,72,3,1,7,101,110,118,50,56,51,53,119,2,119,16,4,8, +36,11,2,74,3,1,7,101,110,118,50,56,51,54,120,16,4,8,35,11,2, +76,3,1,7,101,110,118,50,56,51,55,121,16,4,8,34,11,2,78,3,1, +7,101,110,118,50,56,51,57,122,95,9,8,252,251,7,2,35,18,102,2,80, +8,41,37,36,35,8,27,8,30,8,29,16,4,8,40,11,3,1,4,103,51, +50,49,123,3,1,7,101,110,118,50,56,51,49,124,16,4,8,39,11,2,102, +3,1,7,101,110,118,50,56,51,50,125,18,158,2,89,8,41,18,158,2,36, +8,41,18,158,2,89,8,41,18,158,2,89,8,41,18,158,9,8,41,18,158, +2,89,8,41,18,158,2,36,8,41,18,158,2,89,8,41,18,158,2,89,8, +41,18,158,2,103,8,41,18,158,2,89,8,41,18,158,2,104,8,41,18,158, +2,89,8,41,18,158,2,105,8,41,18,158,2,89,8,41,18,158,2,89,8, +41,18,158,2,89,8,41,18,158,2,89,8,41,18,158,9,8,41,18,158,2, +89,8,41,18,158,2,89,8,41,18,16,2,158,94,16,2,158,94,16,2,98, +2,102,8,45,93,8,252,244,7,16,4,8,44,11,3,1,8,119,115,116,109, +112,51,49,57,126,3,1,7,101,110,118,50,56,50,51,127,16,4,8,43,11, +3,1,4,103,51,50,48,128,3,1,7,101,110,118,50,56,53,50,129,16,4, +8,42,11,65,95,101,108,115,101,130,3,1,7,101,110,118,50,56,53,51,131, +9,16,2,158,2,38,8,45,9,8,45,9,16,2,158,2,38,8,45,9,8, +45,95,9,8,252,244,7,2,30,11,16,5,93,2,18,87,94,83,159,33,93, +80,159,33,57,34,89,162,34,34,45,9,223,0,250,22,209,20,15,159,36,39, +45,249,22,60,250,22,209,20,15,159,41,40,45,248,22,60,248,22,52,203,20, +15,159,41,41,45,248,22,78,199,20,15,159,36,42,45,89,162,33,34,49,9, +223,0,27,249,22,209,20,15,159,36,33,45,196,27,28,248,80,158,36,33,194, +249,80,158,37,34,248,80,158,38,35,196,27,248,80,158,39,36,197,28,248,80, +158,39,33,193,249,80,158,40,37,27,248,80,158,42,35,196,28,248,80,158,42, +38,193,248,22,8,89,162,33,34,40,9,224,9,1,27,249,22,2,89,162,33, +34,45,9,224,4,5,249,80,158,36,39,28,248,80,158,37,33,197,249,80,158, +38,34,248,80,158,39,35,199,27,248,80,158,40,36,200,28,248,80,158,40,33, +193,249,80,158,41,34,248,80,158,42,35,195,248,80,158,42,40,248,80,158,43, +36,196,11,11,194,248,80,158,38,41,196,28,248,22,57,193,21,94,9,9,248, +80,158,36,42,193,11,27,248,80,158,42,36,196,28,248,80,158,42,33,193,249, +80,158,43,34,248,80,158,44,35,195,27,248,80,158,45,36,196,28,248,80,158, +45,38,193,248,80,158,45,41,193,11,11,11,11,28,192,27,248,22,52,194,27, +248,22,78,195,27,248,22,87,196,27,248,22,90,197,27,248,22,89,198,249,80, +158,42,43,202,27,251,22,61,201,200,199,202,27,20,15,159,44,34,45,91,159, +34,11,90,161,34,33,11,83,160,39,33,34,11,247,248,22,8,89,162,33,34, +41,9,226,13,2,3,1,250,22,31,89,162,33,33,37,9,225,6,3,7,90, +161,34,34,10,247,22,252,185,2,248,22,252,185,2,89,162,33,34,37,9,224, +3,1,248,193,89,162,33,33,37,9,224,2,3,28,248,22,252,182,2,193,248, +22,252,187,2,193,249,80,158,36,44,21,97,2,12,94,94,93,2,37,2,39, +2,38,2,40,2,41,2,38,20,15,159,36,35,45,89,162,33,33,51,9,225, +6,5,4,27,250,22,209,20,15,159,39,36,45,250,22,209,20,15,159,42,37, +45,251,22,62,20,15,159,46,38,45,250,22,2,80,159,49,57,34,248,22,88, +23,15,248,22,52,23,15,248,22,78,204,248,22,87,204,20,15,159,42,43,45, +197,89,162,33,33,34,9,223,0,192,89,162,33,33,35,9,223,3,248,22,252, +185,2,208,250,22,252,39,2,11,6,10,10,98,97,100,32,115,121,110,116,97, +120,196,33,20,98,159,34,16,12,2,42,2,44,2,46,2,48,2,50,2,52, +2,54,2,58,2,56,2,60,2,62,2,64,16,11,18,98,2,66,8,47,37, +36,35,16,4,8,46,11,2,68,3,1,7,101,110,118,50,56,53,54,132,18, +16,2,95,2,70,8,48,93,8,252,11,8,95,9,8,252,11,8,2,35,18, +16,2,99,2,38,8,53,93,8,252,11,8,16,6,8,52,11,2,71,2,72, +3,1,7,101,110,118,50,56,55,54,133,2,133,16,4,8,51,11,2,74,3, +1,7,101,110,118,50,56,55,55,134,16,4,8,50,11,2,76,3,1,7,101, +110,118,50,56,55,56,135,16,4,8,49,11,2,78,3,1,7,101,110,118,50, +56,56,48,136,95,9,8,252,11,8,2,35,18,100,2,80,8,56,37,36,35, +8,46,16,12,8,55,11,3,1,4,103,51,50,50,137,3,1,4,103,51,50, +51,138,3,1,4,103,51,50,52,139,3,1,4,103,51,50,53,140,3,1,4, +103,51,50,54,141,3,1,7,101,110,118,50,56,54,56,142,2,142,2,142,2, +142,2,142,16,12,8,54,11,2,87,2,37,2,39,2,40,2,41,3,1,7, +101,110,118,50,56,54,57,143,2,143,2,143,2,143,2,143,18,158,2,89,8, +56,18,158,2,12,8,56,18,158,2,89,8,56,18,158,2,89,8,56,18,158, +2,89,8,56,18,158,2,89,8,56,18,158,2,89,8,56,11,16,5,93,2, +22,87,94,83,159,33,93,80,159,33,8,42,34,89,162,34,34,47,9,223,0, +250,22,209,20,15,159,36,49,47,249,22,60,250,22,209,20,15,159,41,50,47, +249,22,56,248,22,52,204,248,22,78,204,20,15,159,41,51,47,250,22,209,20, +15,159,41,52,47,250,22,60,20,15,159,44,53,47,20,15,159,44,54,47,248, +22,87,205,20,15,159,41,55,47,20,15,159,36,56,47,89,162,33,34,51,9, +223,0,27,28,248,80,158,35,33,195,249,80,158,36,34,248,80,158,37,35,197, +27,248,80,158,38,36,198,28,248,80,158,38,33,193,249,80,158,39,37,27,248, +80,158,41,35,196,28,248,80,158,41,38,193,248,22,59,248,80,158,42,39,194, +11,27,248,80,158,41,36,196,28,248,80,158,41,38,193,248,22,8,89,162,33, +34,40,9,224,8,1,27,249,22,2,89,162,33,34,48,9,224,4,5,249,80, +158,36,40,28,248,80,158,37,33,197,249,80,158,38,37,27,248,80,158,40,35, +200,28,248,80,158,40,33,193,249,80,158,41,34,248,80,158,42,35,195,27,248, +80,158,43,36,196,248,22,59,250,22,209,199,196,199,11,27,248,80,158,40,36, +200,28,248,80,158,40,33,193,249,80,158,41,34,248,80,158,42,35,195,248,80, +158,42,41,248,80,158,43,36,196,11,11,194,248,80,158,38,39,196,28,248,22, +57,193,21,94,9,9,248,80,158,36,42,193,11,11,11,28,192,27,248,22,52, 194,27,248,22,78,195,27,248,22,87,196,27,248,22,90,197,27,248,22,89,198, -249,80,158,41,39,202,27,251,22,61,202,199,200,201,27,20,15,159,43,33,41, -91,159,33,11,90,161,33,32,11,83,160,38,32,33,11,247,248,22,8,89,162, -32,33,40,9,226,13,2,3,1,250,22,31,89,162,32,32,36,9,225,6,3, -7,90,161,33,33,10,247,22,252,184,2,248,22,252,184,2,89,162,32,33,36, -9,224,3,1,248,193,89,162,32,32,36,9,224,2,3,28,248,22,252,181,2, -193,248,22,252,186,2,193,249,80,158,35,40,21,98,2,116,9,95,73,100,101, -102,105,110,101,45,115,116,114,117,99,116,252,107,1,64,98,97,115,101,252,108, -1,94,65,102,105,101,108,100,252,109,1,2,113,2,252,104,1,2,252,25,1, -2,113,20,15,159,35,34,41,89,162,32,32,54,9,225,6,5,4,27,250,22, -209,20,15,159,38,35,41,250,22,209,20,15,159,41,36,41,252,22,62,20,15, -159,46,37,41,20,15,159,46,38,41,250,22,209,20,15,159,49,39,41,250,22, -60,20,15,159,52,40,41,248,22,52,23,19,248,22,88,23,19,20,15,159,49, -41,41,248,22,87,205,248,22,78,205,20,15,159,41,42,41,197,89,162,32,32, -33,9,223,0,192,89,162,32,32,34,9,223,3,248,22,252,184,2,208,250,22, -252,39,2,11,6,10,10,98,97,100,32,115,121,110,116,97,120,196,32,20,98, -158,16,9,2,65,2,68,2,70,2,72,2,74,2,78,2,80,2,122,2,125, -16,11,18,98,2,82,8,179,36,35,34,16,4,8,178,11,2,236,3,1,7, -101,110,118,51,56,56,55,252,110,1,18,16,2,95,2,91,8,180,93,8,252, -22,10,95,9,8,252,22,10,2,92,18,16,2,99,2,113,8,185,93,8,252, -22,10,16,6,8,184,11,2,140,2,141,3,1,7,101,110,118,51,57,48,52, -252,111,1,2,252,111,1,16,4,8,183,11,2,151,3,1,7,101,110,118,51, -57,48,53,252,112,1,16,4,8,182,11,2,153,3,1,7,101,110,118,51,57, -48,54,252,113,1,16,4,8,181,11,2,155,3,1,7,101,110,118,51,57,48, -56,252,114,1,95,9,8,252,22,10,2,92,18,100,2,93,8,188,36,35,34, -8,178,16,12,8,187,11,3,1,4,103,53,49,51,252,115,1,3,1,4,103, -53,49,52,252,116,1,3,1,4,103,53,49,53,252,117,1,3,1,4,103,53, -49,54,252,118,1,3,1,4,103,53,49,55,252,119,1,3,1,7,101,110,118, -51,56,57,54,252,120,1,2,252,120,1,2,252,120,1,2,252,120,1,2,252, -120,1,16,12,8,186,11,2,98,2,252,108,1,2,252,109,1,2,252,104,1, -2,252,25,1,3,1,7,101,110,118,51,56,57,55,252,121,1,2,252,121,1, -2,252,121,1,2,252,121,1,2,252,121,1,18,158,2,101,8,188,18,158,2, -116,8,188,18,158,9,8,188,18,158,2,101,8,188,18,158,2,252,107,1,8, -188,18,158,2,101,8,188,18,158,2,101,8,188,11,16,5,93,2,59,89,162, -32,33,53,9,223,0,27,249,22,209,20,15,159,35,32,46,196,27,28,248,80, -158,35,32,194,249,80,158,36,33,248,80,158,37,34,196,27,248,80,158,38,35, -197,28,248,80,158,38,32,193,28,248,80,158,38,36,248,80,158,39,34,194,27, -248,80,158,39,35,194,28,248,80,158,39,32,193,249,80,158,40,33,248,80,158, -41,34,195,27,248,80,158,42,35,196,28,248,80,158,42,37,193,248,80,158,42, -38,193,11,11,11,11,11,28,192,27,248,22,52,194,27,248,22,78,195,27,248, -22,80,196,249,80,158,39,39,200,27,249,22,61,198,197,27,20,15,159,41,33, -46,250,22,209,20,15,159,44,34,46,250,22,209,20,15,159,47,35,46,250,22, -62,20,15,159,50,36,46,20,15,159,50,37,46,202,20,15,159,47,38,46,195, -27,28,248,80,158,36,32,195,249,80,158,37,33,248,80,158,38,34,197,27,248, -80,158,39,35,198,28,248,80,158,39,32,193,249,80,158,40,40,27,248,80,158, -42,34,196,28,248,80,158,42,37,193,248,22,8,89,162,32,33,39,9,224,10, -1,27,249,22,2,89,162,32,33,45,9,224,4,5,249,80,158,35,41,28,248, -80,158,36,32,197,249,80,158,37,33,248,80,158,38,34,199,27,248,80,158,39, -35,200,28,248,80,158,39,32,193,249,80,158,40,33,248,80,158,41,34,195,248, -80,158,41,36,248,80,158,42,35,196,11,11,194,248,80,158,37,38,196,28,248, -22,57,193,21,94,9,9,248,80,158,35,42,193,11,27,248,80,158,42,35,196, -28,248,80,158,42,32,193,249,80,158,43,33,248,80,158,44,34,195,27,248,80, -158,45,35,196,28,248,80,158,45,37,193,248,80,158,45,38,193,11,11,11,11, -28,192,27,248,22,52,194,27,248,22,78,195,27,248,22,87,196,27,248,22,90, -197,27,248,22,89,198,27,249,22,209,20,15,159,43,39,46,248,80,158,44,43, -27,20,15,159,45,40,46,250,22,209,20,15,159,48,41,46,203,195,27,28,248, -80,158,43,37,194,248,80,158,43,38,194,11,28,192,249,80,158,44,39,205,27, -252,22,61,203,204,205,202,200,27,20,15,159,46,42,46,91,159,33,11,90,161, -33,32,11,83,160,38,32,33,11,247,248,22,8,89,162,32,33,40,9,226,16, -2,3,1,250,22,31,89,162,32,32,36,9,225,6,3,7,90,161,33,33,10, -247,22,252,184,2,248,22,252,184,2,89,162,32,33,36,9,224,3,1,248,193, -89,162,32,32,36,9,224,2,3,28,248,22,252,181,2,193,248,22,252,186,2, -193,249,80,158,35,44,21,95,2,116,94,94,63,116,109,112,252,122,1,2,250, -2,113,95,2,116,93,94,64,115,119,97,112,252,123,1,96,2,230,9,96,2, -116,93,94,2,202,2,252,122,1,95,2,252,63,1,2,252,122,1,64,110,97, -109,101,252,124,1,95,2,252,63,1,2,252,124,1,2,202,2,113,96,72,100, -121,110,97,109,105,99,45,119,105,110,100,252,125,1,2,252,123,1,97,2,230, -9,2,252,104,1,2,252,25,1,2,113,2,252,123,1,20,15,159,35,43,46, -89,162,32,32,8,40,9,225,6,5,4,27,250,22,209,20,15,159,38,44,46, -250,22,209,20,15,159,41,45,46,250,22,60,20,15,159,44,46,46,250,22,2, -89,162,33,33,41,9,223,15,250,22,209,20,15,159,35,47,46,249,22,60,248, -22,52,199,248,22,78,199,20,15,159,35,48,46,248,22,89,206,248,22,78,206, -250,22,209,20,15,159,47,49,46,250,22,60,20,15,159,50,50,46,250,22,209, -20,15,159,53,51,46,248,22,60,250,22,209,20,15,159,57,52,46,249,22,60, -20,15,159,59,53,46,250,22,209,20,15,159,8,30,54,46,250,22,62,20,15, -159,8,33,55,46,20,15,159,8,33,56,46,252,22,2,89,162,33,33,51,9, -223,38,250,22,209,20,15,159,35,57,46,251,22,60,20,15,159,39,58,46,250, -22,209,20,15,159,42,59,46,248,22,60,250,22,209,20,15,159,46,8,28,46, -249,22,60,20,15,159,48,8,29,46,248,22,52,23,18,20,15,159,46,8,30, -46,20,15,159,42,8,31,46,250,22,209,20,15,159,42,8,32,46,250,22,60, -20,15,159,45,8,33,46,248,22,52,23,15,248,22,87,23,15,20,15,159,42, -8,34,46,250,22,209,20,15,159,42,8,35,46,250,22,62,20,15,159,45,8, -36,46,248,22,87,23,15,20,15,159,45,8,37,46,20,15,159,42,8,38,46, -20,15,159,35,8,39,46,248,22,89,23,37,248,22,89,23,37,248,22,87,23, -37,248,22,87,23,37,20,15,159,8,30,8,40,46,20,15,159,57,8,41,46, -20,15,159,53,8,42,46,250,22,209,20,15,159,53,8,43,46,251,22,62,20, -15,159,57,8,44,46,20,15,159,57,8,45,46,250,22,209,20,15,159,8,28, -8,46,46,251,22,62,20,15,159,8,32,8,47,46,20,15,159,8,32,8,48, -46,248,22,52,23,31,248,22,90,23,31,20,15,159,8,28,8,49,46,20,15, -159,57,8,50,46,20,15,159,53,8,51,46,20,15,159,47,8,52,46,20,15, -159,41,8,53,46,197,89,162,32,32,33,9,223,0,192,89,162,32,32,34,9, -223,3,248,22,252,184,2,208,248,80,158,43,45,20,15,159,43,8,54,46,250, -22,252,39,2,11,6,10,10,98,97,100,32,115,121,110,116,97,120,197,32,20, -98,158,16,14,2,65,2,68,2,70,2,72,2,76,2,78,2,80,2,122,2, -74,2,184,2,186,2,252,67,1,2,125,2,188,16,55,18,98,2,82,8,190, -36,35,34,16,4,8,189,11,2,236,3,1,7,101,110,118,51,57,49,53,252, -126,1,18,16,2,95,2,91,8,191,93,8,252,41,10,95,9,8,252,41,10, -2,92,18,100,2,93,8,194,36,35,34,8,189,16,8,8,193,11,3,1,4, -103,53,50,51,252,127,1,3,1,4,103,53,50,52,252,128,1,3,1,4,103, -53,50,53,252,129,1,3,1,7,101,110,118,51,57,50,50,252,130,1,2,252, -130,1,2,252,130,1,16,8,8,192,11,2,98,2,252,104,1,2,252,25,1, -3,1,7,101,110,118,51,57,50,51,252,131,1,2,252,131,1,2,252,131,1, -18,158,2,101,8,194,18,158,2,116,8,194,18,158,9,8,194,18,158,2,101, -8,194,18,100,2,82,8,197,36,35,34,8,189,16,12,8,196,11,3,1,4, -103,53,49,56,252,132,1,3,1,4,103,53,49,57,252,133,1,3,1,4,103, -53,50,48,252,134,1,3,1,4,103,53,50,49,252,135,1,3,1,4,103,53, -50,50,252,136,1,3,1,7,101,110,118,51,57,51,57,252,137,1,2,252,137, -1,2,252,137,1,2,252,137,1,2,252,137,1,16,12,8,195,11,2,98,2, -252,124,1,2,250,2,252,104,1,2,252,25,1,3,1,7,101,110,118,51,57, -52,48,252,138,1,2,252,138,1,2,252,138,1,2,252,138,1,2,252,138,1, -18,16,2,95,2,91,8,198,93,8,252,44,10,95,9,8,252,44,10,2,92, -18,158,2,93,8,197,18,16,2,95,2,91,8,199,93,8,252,47,10,95,9, -8,252,47,10,2,92,18,16,2,99,2,113,8,204,93,8,252,47,10,16,6, -8,203,11,2,140,2,141,3,1,7,101,110,118,51,57,53,54,252,139,1,2, -252,139,1,16,4,8,202,11,2,151,3,1,7,101,110,118,51,57,53,55,252, -140,1,16,4,8,201,11,2,153,3,1,7,101,110,118,51,57,53,56,252,141, -1,16,4,8,200,11,2,155,3,1,7,101,110,118,51,57,54,48,252,142,1, -95,9,8,252,47,10,2,92,18,102,2,93,8,207,36,35,34,8,189,8,196, -8,195,16,4,8,206,11,3,1,4,103,53,50,56,252,143,1,3,1,7,101, -110,118,51,57,53,50,252,144,1,16,4,8,205,11,2,252,122,1,3,1,7, -101,110,118,51,57,53,51,252,145,1,18,158,2,101,8,207,18,158,2,116,8, -207,18,158,2,101,8,207,18,158,2,101,8,207,18,158,2,101,8,207,18,158, -2,116,8,207,18,158,2,101,8,207,18,158,2,101,8,207,18,158,2,252,123, -1,8,207,18,158,2,101,8,207,18,158,2,230,8,207,18,158,9,8,207,18, -158,2,101,8,207,18,158,2,116,8,207,18,158,2,101,8,207,18,158,2,101, -8,207,18,158,2,202,8,207,18,158,2,101,8,207,18,158,2,101,8,207,18, -158,2,101,8,207,18,158,2,252,63,1,8,207,18,158,2,101,8,207,18,158, -2,101,8,207,18,158,2,252,63,1,8,207,18,16,2,106,93,16,2,158,2, -202,8,207,9,8,212,8,28,59,58,57,56,55,13,16,4,33,2,134,2,92, -11,93,8,252,47,10,16,6,8,211,11,2,140,2,141,2,252,139,1,2,252, -139,1,16,4,8,210,11,2,151,2,252,140,1,16,4,8,209,11,2,153,2, -252,141,1,16,4,8,208,11,64,118,97,108,115,252,146,1,3,1,7,101,110, -118,51,57,54,54,252,147,1,95,9,8,252,47,10,2,92,18,158,2,101,8, -207,18,158,2,101,8,207,18,158,2,101,8,207,18,158,2,101,8,207,18,158, -2,101,8,207,18,158,2,101,8,207,18,158,2,252,125,1,8,207,18,158,2, -252,123,1,8,207,18,158,2,101,8,207,18,158,2,230,8,207,18,158,9,8, -207,18,158,2,101,8,207,18,16,2,105,93,16,2,158,2,252,123,1,8,207, -9,8,213,8,28,59,58,57,56,55,13,16,4,33,2,134,2,92,11,93,8, -252,47,10,8,211,8,210,8,209,95,9,8,252,47,10,2,92,18,158,2,101, -8,207,18,158,2,101,8,207,18,158,2,101,8,207,18,16,2,158,94,16,2, -98,2,252,122,1,8,217,93,8,252,43,10,16,4,8,216,11,3,1,8,119, -115,116,109,112,53,50,54,252,148,1,3,1,7,101,110,118,51,57,52,55,252, -149,1,16,4,8,215,11,3,1,4,103,53,50,55,252,150,1,3,1,7,101, -110,118,51,57,55,49,252,151,1,16,4,8,214,11,2,222,3,1,7,101,110, -118,51,57,55,50,252,152,1,9,16,2,158,2,113,8,217,9,8,217,95,9, -8,252,43,10,2,189,11,16,5,93,2,61,89,162,32,33,8,43,9,223,0, -27,249,22,209,20,15,159,35,32,39,196,27,28,248,80,158,35,32,194,249,80, -158,36,33,248,80,158,37,34,196,27,248,80,158,38,35,197,28,248,80,158,38, -32,193,249,80,158,39,33,248,80,158,40,34,195,27,248,80,158,41,35,196,28, -248,80,158,41,36,193,248,80,158,41,37,193,11,11,11,28,192,27,248,22,52, -194,27,248,22,78,195,27,248,22,80,196,249,80,158,39,38,200,27,249,22,61, -197,198,27,20,15,159,41,33,39,250,22,209,20,15,159,44,34,39,250,22,209, -20,15,159,47,35,39,250,22,62,20,15,159,50,36,39,250,22,209,20,15,159, -53,37,39,248,22,60,250,22,209,20,15,159,57,38,39,249,22,60,20,15,159, -59,39,39,250,22,209,20,15,159,8,30,40,39,250,22,62,20,15,159,8,33, -41,39,250,22,209,20,15,159,8,36,42,39,251,22,62,20,15,159,8,40,43, -39,20,15,159,8,40,44,39,248,22,53,23,33,248,22,52,23,33,20,15,159, -8,36,45,39,20,15,159,8,33,46,39,20,15,159,8,30,47,39,20,15,159, -57,48,39,20,15,159,53,49,39,20,15,159,50,50,39,20,15,159,47,51,39, -195,250,22,252,39,2,11,6,10,10,98,97,100,32,115,121,110,116,97,120,196, -32,20,98,158,16,7,2,65,2,68,2,70,2,72,2,78,2,80,2,122,16, -20,18,98,2,82,8,219,36,35,34,16,4,8,218,11,2,236,3,1,7,101, -110,118,51,57,55,53,252,153,1,18,16,2,95,2,91,8,220,93,8,252,58, -10,95,9,8,252,58,10,2,92,18,100,2,93,8,223,36,35,34,8,218,16, -8,8,222,11,3,1,4,103,53,50,57,252,154,1,3,1,4,103,53,51,48, -252,155,1,3,1,4,103,53,51,49,252,156,1,3,1,7,101,110,118,51,57, -56,49,252,157,1,2,252,157,1,2,252,157,1,16,8,8,221,11,2,98,2, -234,2,235,3,1,7,101,110,118,51,57,56,50,252,158,1,2,252,158,1,2, -252,158,1,18,158,2,101,8,223,18,158,2,252,61,1,8,223,18,158,2,101, -8,223,18,158,2,101,8,223,18,158,96,16,2,158,2,112,8,223,9,16,2, -158,63,99,112,117,252,159,1,8,223,9,16,2,158,64,117,115,101,114,252,160, -1,8,223,9,16,2,158,62,103,99,252,161,1,8,223,9,8,223,18,158,2, -101,8,223,18,158,70,116,105,109,101,45,97,112,112,108,121,252,162,1,8,223, -18,158,2,101,8,223,18,158,2,230,8,223,18,158,9,8,223,18,158,2,101, -8,223,18,16,2,103,93,16,2,158,64,110,117,108,108,252,163,1,8,223,9, -8,225,8,28,59,58,57,56,55,13,16,4,33,2,134,2,92,11,93,8,252, -58,10,16,6,8,224,11,2,140,2,141,3,1,7,101,110,118,51,57,56,55, -252,164,1,2,252,164,1,95,9,8,252,58,10,2,92,18,158,2,101,8,223, -18,158,2,101,8,223,18,158,2,101,8,223,18,16,2,158,94,16,2,158,97, -158,66,112,114,105,110,116,102,252,165,1,8,223,158,6,40,40,99,112,117,32, -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,8,223,158,2,252,159, -1,8,223,158,2,252,160,1,8,223,158,2,252,161,1,8,223,8,223,9,16, -2,158,95,158,2,252,38,1,8,223,158,2,252,39,1,8,223,158,2,112,8, -223,8,223,9,8,225,95,9,8,252,58,10,2,92,18,158,2,101,8,223,11, -100,83,159,32,97,80,159,32,32,33,80,159,32,33,33,80,159,32,34,33,80, -159,32,35,33,80,159,32,36,33,27,247,22,252,113,2,87,94,28,192,28,248, -22,252,112,2,193,12,250,22,252,40,2,2,252,107,1,6,15,15,105,110,115, -112,101,99,116,111,114,32,111,114,32,35,102,195,12,91,159,37,11,90,161,37, -32,11,254,22,252,90,2,2,86,11,33,32,11,9,204,252,22,7,197,198,199, -250,22,252,92,2,203,32,61,112,252,166,1,250,22,252,93,2,204,32,2,252, -166,1,83,159,32,93,80,159,32,37,33,89,162,32,33,39,2,14,223,0,87, -94,28,248,80,159,33,34,34,194,12,250,22,252,40,2,2,14,6,7,7,112, -114,111,109,105,115,101,196,27,248,80,159,34,35,34,195,28,248,22,0,193,27, -249,22,6,195,22,59,87,94,28,248,22,0,248,80,159,36,35,34,197,249,80, -159,36,36,34,197,194,12,249,22,1,22,7,248,80,159,37,35,34,198,249,22, -1,22,7,194,83,159,32,93,80,159,32,38,33,89,162,32,32,36,2,16,223, -0,248,80,158,33,39,249,22,19,11,80,158,35,40,83,159,32,93,80,159,32, -41,33,89,162,32,34,40,2,23,223,0,87,95,28,248,22,252,222,2,194,12, -252,22,252,40,2,2,23,6,16,16,112,97,114,97,109,101,116,101,114,105,122, -97,116,105,111,110,32,198,199,28,28,248,22,0,195,249,22,34,196,32,11,12, -252,22,252,40,2,2,23,6,19,19,112,114,111,99,101,100,117,114,101,32,40, -97,114,105,116,121,32,48,41,33,198,199,20,14,159,80,158,32,40,193,247,194, -83,159,32,97,80,159,32,42,33,80,159,32,43,33,80,159,32,44,33,80,159, -32,45,33,80,159,32,46,33,252,22,252,90,2,2,85,11,33,32,11,83,159, -32,97,80,159,32,47,33,80,159,32,48,33,80,159,32,49,33,80,159,32,50, -33,80,159,32,51,33,27,247,22,252,113,2,87,94,28,192,28,248,22,252,9, -2,248,22,252,112,2,194,250,22,252,40,2,2,252,107,1,6,15,15,105,110, -115,112,101,99,116,111,114,32,111,114,32,35,102,195,12,12,91,159,37,11,90, -161,37,32,11,254,22,252,90,2,2,85,11,33,32,11,9,204,252,22,7,197, -198,199,250,22,252,92,2,203,32,64,99,101,108,108,252,167,1,250,22,252,93, -2,204,32,2,252,167,1,83,159,32,93,80,159,32,52,33,89,162,32,32,36, -2,45,223,0,248,80,159,33,43,34,249,22,19,11,80,158,35,53,83,159,32, -93,80,159,32,54,33,89,162,32,34,40,2,49,223,0,87,95,28,248,80,159, -33,44,34,194,12,252,22,252,40,2,2,49,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,32,198,199,28,28, -248,22,0,195,249,22,34,196,32,11,12,252,22,252,40,2,2,23,6,19,19, -112,114,111,99,101,100,117,114,101,32,40,97,114,105,116,121,32,48,41,33,198, -199,83,158,36,20,93,94,20,14,159,80,158,32,53,249,80,159,34,45,34,195, -32,87,94,247,80,158,32,55,247,194,247,80,158,32,55,96,68,35,37,107,101, -114,110,101,108,252,168,1,2,84,2,83,2,18,96,2,252,168,1,2,66,2, -88,2,87,0}; - EVAL_ONE_SIZED_STR((char *)expr, 22221); +28,249,22,4,80,158,41,43,248,22,216,27,20,15,159,43,33,47,250,22,209, +20,15,159,46,34,47,202,195,27,249,22,209,20,15,159,42,35,47,249,22,2, +32,144,89,162,33,34,37,9,222,248,22,43,248,22,44,248,22,210,195,248,22, +216,27,20,15,159,46,36,47,250,22,209,20,15,159,49,37,47,204,195,27,28, +248,80,158,42,38,194,248,80,158,42,39,194,11,28,192,249,80,158,43,44,203, +27,252,22,61,203,206,202,200,205,27,20,15,159,45,38,47,91,159,34,11,90, +161,34,33,11,83,160,39,33,34,11,247,248,22,8,89,162,33,34,41,9,226, +14,2,3,1,250,22,31,89,162,33,33,37,9,225,6,3,7,90,161,34,34, +10,247,22,252,185,2,248,22,252,185,2,89,162,33,34,37,9,224,3,1,248, +193,89,162,33,33,37,9,224,2,3,28,248,22,252,182,2,193,248,22,252,187, +2,193,249,80,158,36,45,21,95,66,108,97,109,98,100,97,145,93,61,120,146, +100,73,115,121,110,116,97,120,45,99,97,115,101,42,42,147,2,87,10,2,146, +94,61,107,148,2,38,79,109,111,100,117,108,101,45,105,100,101,110,116,105,102, +105,101,114,61,63,149,94,158,65,100,117,109,109,121,150,67,112,97,116,116,101, +114,110,151,95,2,16,2,146,68,116,101,109,112,108,97,116,101,152,2,38,20, +15,159,36,39,47,89,162,33,33,8,28,9,225,6,5,4,27,250,22,209,20, +15,159,39,40,47,250,22,209,20,15,159,42,41,47,250,22,60,20,15,159,45, +42,47,20,15,159,45,43,47,250,22,209,20,15,159,48,44,47,254,22,62,20, +15,159,55,45,47,248,22,78,23,21,20,15,159,55,46,47,20,15,159,55,47, +47,248,22,89,23,21,20,15,159,55,48,47,251,22,2,80,159,59,8,42,34, +248,22,90,23,25,248,22,52,23,25,248,22,87,23,25,20,15,159,48,57,47, +20,15,159,42,58,47,197,89,162,33,33,34,9,223,0,192,89,162,33,33,35, +9,223,3,248,22,252,185,2,208,248,80,158,42,46,20,15,159,42,59,47,248, +32,153,89,162,33,34,37,68,116,114,121,45,110,101,120,116,154,222,250,22,252, +39,2,11,6,10,10,98,97,100,32,115,121,110,116,97,120,195,200,248,2,153, +195,33,20,98,159,34,16,14,2,42,2,44,2,46,2,48,2,50,2,52,2, +56,2,54,2,58,2,107,30,155,2,6,2,7,2,2,62,2,64,2,109,16, +27,18,16,2,95,2,70,8,57,93,8,252,25,8,95,9,8,252,25,8,2, +35,18,100,2,80,8,61,37,36,35,16,4,8,60,11,2,146,3,1,7,101, +110,118,50,56,56,57,156,16,12,8,59,11,3,1,4,103,51,50,55,157,3, +1,4,103,51,50,56,158,3,1,4,103,51,50,57,159,3,1,4,103,51,51, +48,160,3,1,4,103,51,51,49,161,3,1,7,101,110,118,50,57,48,53,162, +2,162,2,162,2,162,2,162,16,12,8,58,11,2,87,2,148,67,107,101,121, +119,111,114,100,163,2,151,2,152,3,1,7,101,110,118,50,57,48,54,164,2, +164,2,164,2,164,2,164,18,158,2,66,8,61,18,16,2,95,2,70,8,62, +93,8,252,27,8,95,9,8,252,27,8,2,35,18,158,2,80,8,61,18,16, +2,95,2,70,8,63,93,8,252,30,8,95,9,8,252,30,8,2,35,18,16, +2,99,2,38,8,68,93,8,252,30,8,16,6,8,67,11,2,71,2,72,3, +1,7,101,110,118,50,57,50,51,165,2,165,16,4,8,66,11,2,74,3,1, +7,101,110,118,50,57,50,52,166,16,4,8,65,11,2,76,3,1,7,101,110, +118,50,57,50,53,167,16,4,8,64,11,2,78,3,1,7,101,110,118,50,57, +50,55,168,95,9,8,252,30,8,2,35,18,102,2,80,8,71,37,36,35,8, +60,8,59,8,58,16,4,8,70,11,3,1,4,103,51,51,52,169,3,1,7, +101,110,118,50,57,49,57,170,16,4,8,69,11,2,150,3,1,7,101,110,118, +50,57,50,48,171,18,158,2,89,8,71,18,158,2,145,8,71,18,158,93,158, +2,146,8,71,8,71,18,158,2,89,8,71,18,158,2,147,8,71,18,158,10, +8,71,18,158,2,146,8,71,18,158,2,149,8,71,18,158,2,89,8,71,18, +158,2,89,8,71,18,158,2,89,8,71,18,158,2,89,8,71,18,158,2,16, +8,71,18,158,2,146,8,71,18,158,2,89,8,71,18,158,2,89,8,71,18, +158,2,89,8,71,18,158,2,89,8,71,18,16,2,158,94,16,2,98,2,150, +8,75,93,8,252,26,8,16,4,8,74,11,3,1,8,119,115,116,109,112,51, +51,50,172,3,1,7,101,110,118,50,57,49,51,173,16,4,8,73,11,3,1, +4,103,51,51,51,174,3,1,7,101,110,118,50,57,51,54,175,16,4,8,72, +11,2,130,3,1,7,101,110,118,50,57,51,55,176,9,16,2,158,2,38,8, +75,9,8,75,95,9,8,252,26,8,2,30,11,16,5,93,2,28,87,94,83, +159,33,93,80,159,33,8,38,34,89,162,34,34,47,9,223,0,250,22,209,20, +15,159,36,48,46,249,22,60,248,22,52,199,250,22,209,20,15,159,41,49,46, +250,22,60,20,15,159,44,50,46,20,15,159,44,51,46,248,22,78,205,20,15, +159,41,52,46,20,15,159,36,53,46,89,162,33,34,47,9,223,0,27,28,248, +80,158,35,33,195,249,80,158,36,34,248,80,158,37,35,197,27,248,80,158,38, +36,198,28,248,80,158,38,33,193,249,80,158,39,37,27,248,80,158,41,35,196, +28,248,80,158,41,38,193,248,22,59,248,80,158,42,39,194,11,27,248,80,158, +41,36,196,28,248,80,158,41,38,193,248,22,8,89,162,33,34,40,9,224,8, +1,27,249,22,2,89,162,33,34,45,9,224,4,5,249,80,158,36,40,28,248, +80,158,37,33,197,249,80,158,38,34,248,80,158,39,35,199,27,248,80,158,40, +36,200,28,248,80,158,40,33,193,249,80,158,41,34,248,80,158,42,35,195,248, +80,158,42,41,248,80,158,43,36,196,11,11,194,248,80,158,38,39,196,28,248, +22,57,193,21,93,9,248,80,158,36,42,193,11,11,11,28,192,27,248,22,52, +194,27,248,22,78,195,27,248,22,87,196,27,248,22,88,197,28,249,22,4,80, +158,40,43,248,22,216,27,20,15,159,42,33,46,250,22,209,20,15,159,45,34, +46,201,195,249,80,158,40,44,200,27,251,22,61,200,202,199,201,27,20,15,159, +42,35,46,91,159,34,11,90,161,34,33,11,83,160,39,33,34,11,247,248,22, +8,89,162,33,34,41,9,226,11,2,3,1,250,22,31,89,162,33,33,37,9, +225,6,3,7,90,161,34,34,10,247,22,252,185,2,248,22,252,185,2,89,162, +33,34,37,9,224,3,1,248,193,89,162,33,33,37,9,224,2,3,28,248,22, +252,182,2,193,248,22,252,187,2,193,249,80,158,36,45,21,94,1,21,109,97, +107,101,45,115,101,116,33,45,116,114,97,110,115,102,111,114,109,101,114,177,95, +2,145,93,2,146,100,2,147,2,87,10,2,146,94,2,148,2,38,2,149,94, +2,151,95,2,16,2,146,2,152,2,38,20,15,159,36,36,46,89,162,33,33, +8,32,9,225,6,5,4,27,250,22,209,20,15,159,39,37,46,250,22,209,20, +15,159,42,38,46,249,22,60,20,15,159,44,39,46,250,22,209,20,15,159,47, +40,46,250,22,60,20,15,159,50,41,46,20,15,159,50,42,46,250,22,209,20, +15,159,53,43,46,254,22,62,20,15,159,8,27,44,46,248,22,78,23,26,20, +15,159,8,27,45,46,20,15,159,8,27,46,46,248,22,88,23,26,20,15,159, +8,27,47,46,250,22,2,80,159,8,30,8,38,34,248,22,52,23,29,248,22, +87,23,29,20,15,159,53,54,46,20,15,159,47,55,46,20,15,159,42,56,46, +197,89,162,33,33,34,9,223,0,192,89,162,33,33,35,9,223,3,248,22,252, +185,2,208,248,32,178,89,162,33,34,37,2,154,222,250,22,252,39,2,11,6, +10,10,98,97,100,32,115,121,110,116,97,120,195,199,248,2,178,195,33,20,98, +159,34,16,13,2,42,2,44,2,46,2,48,2,50,2,52,2,56,2,54,2, +58,2,107,2,155,2,62,2,64,16,24,18,16,2,95,2,70,8,76,93,8, +252,44,8,95,9,8,252,44,8,2,35,18,100,2,80,8,80,37,36,35,16, +4,8,79,11,2,146,3,1,7,101,110,118,50,57,52,48,179,16,10,8,78, +11,3,1,4,103,51,51,53,180,3,1,4,103,51,51,54,181,3,1,4,103, +51,51,55,182,3,1,4,103,51,51,56,183,3,1,7,101,110,118,50,57,53, +51,184,2,184,2,184,2,184,16,10,8,77,11,2,87,2,148,2,151,2,152, +3,1,7,101,110,118,50,57,53,52,185,2,185,2,185,2,185,18,16,2,95, +2,70,8,81,93,8,252,46,8,95,9,8,252,46,8,2,35,18,16,2,99, +2,38,8,86,93,8,252,46,8,16,6,8,85,11,2,71,2,72,3,1,7, +101,110,118,50,57,54,48,186,2,186,16,4,8,84,11,2,74,3,1,7,101, +110,118,50,57,54,49,187,16,4,8,83,11,2,76,3,1,7,101,110,118,50, +57,54,50,188,16,4,8,82,11,2,78,3,1,7,101,110,118,50,57,54,52, +189,95,9,8,252,46,8,2,35,18,158,2,80,8,80,18,158,2,89,8,80, +18,158,2,177,8,80,18,158,2,89,8,80,18,158,2,145,8,80,18,158,93, +16,2,158,2,146,8,80,9,8,80,18,158,2,89,8,80,18,158,2,147,8, +80,18,158,10,8,80,18,158,2,146,8,80,18,158,2,149,8,80,18,158,2, +89,8,80,18,158,2,89,8,80,18,158,2,16,8,80,18,158,2,146,8,80, +18,158,2,89,8,80,18,158,2,89,8,80,18,158,2,89,8,80,18,158,2, +89,8,80,18,158,2,89,8,80,11,93,83,159,33,93,80,159,33,33,34,89, +162,33,34,36,2,4,223,0,248,22,8,89,162,33,34,39,9,224,1,2,27, +247,22,110,87,94,249,22,3,89,162,33,34,44,9,226,4,3,5,2,87,94, +28,248,80,158,37,34,197,12,250,22,252,40,2,2,4,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,116, +196,248,22,210,201,9,87,94,28,249,22,5,89,162,33,34,37,9,223,7,249, +22,221,195,194,194,248,195,198,12,250,22,115,196,248,22,210,201,249,22,51,202, +197,195,11,98,68,35,37,107,101,114,110,101,108,190,2,67,2,6,2,35,2, +30,2,33,98,2,190,2,67,2,6,2,35,2,30,2,33,0}; + EVAL_ONE_SIZED_STR((char *)expr, 8101); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,3,51,53,50,252,150,1,252,119,49,159,32,20,98,158,16,1,20,24, -65,98,101,103,105,110,0,16,0,83,158,39,20,95,114,66,35,37,109,105,115, -99,1,29,2,11,11,10,10,10,44,80,158,32,32,20,98,158,16,47,30,3, -2,2,72,112,97,116,104,45,115,116,114,105,110,103,63,4,254,1,30,5,2, -2,70,45,114,101,58,115,117,102,102,105,120,6,254,1,30,7,2,2,79,112, -97,116,104,45,114,101,112,108,97,99,101,45,115,117,102,102,105,120,8,254,1, -30,9,2,2,64,98,115,98,115,10,254,1,30,11,2,2,76,110,111,114,109, -97,108,45,99,97,115,101,45,112,97,116,104,12,254,1,30,13,2,2,71,114, -97,116,105,111,110,97,108,105,122,101,14,254,1,30,15,2,2,1,20,114,101, -97,100,45,101,118,97,108,45,112,114,105,110,116,45,108,111,111,112,16,254,1, -30,17,2,2,67,108,111,97,100,47,99,100,18,254,1,30,19,2,2,65,45, -108,111,97,100,20,254,1,30,21,2,2,73,108,111,97,100,45,114,101,108,97, -116,105,118,101,22,254,1,30,23,2,2,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,24,254,1,30,25,2, -2,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,26,254,1,30,27,2,2,1,20,102,105,110, -100,45,101,120,101,99,117,116,97,98,108,101,45,112,97,116,104,28,254,1,30, -29,2,2,74,45,99,104,101,99,107,45,114,101,108,112,97,116,104,30,254,1, -30,31,2,2,77,45,99,104,101,99,107,45,99,111,108,108,101,99,116,105,111, -110,32,254,1,30,33,2,2,69,45,102,105,110,100,45,99,111,108,34,254,1, -30,35,2,2,70,100,108,108,45,115,117,102,102,105,120,36,254,1,30,37,2, -2,70,95,108,111,97,100,101,114,46,115,111,38,254,1,30,39,2,2,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,40,254,1,30,41,68,35,37,112,97,114,97,109,122,42,1,20, -112,97,114,97,109,101,116,101,114,105,122,97,116,105,111,110,45,107,101,121,43, -254,1,30,44,2,42,1,23,101,120,116,101,110,100,45,112,97,114,97,109,101, -116,101,114,105,122,97,116,105,111,110,45,254,1,30,46,2,2,75,99,111,108, -108,101,99,116,105,111,110,45,112,97,116,104,47,254,1,30,48,2,2,77,108, -111,97,100,47,117,115,101,45,99,111,109,112,105,108,101,100,49,254,1,30,50, -2,2,67,45,114,101,58,100,105,114,51,254,1,30,52,2,2,68,45,114,101, -58,97,117,116,111,53,254,1,30,54,2,2,74,45,114,101,58,111,107,45,114, -101,108,112,97,116,104,55,254,1,30,56,2,2,1,24,45,109,111,100,117,108, -101,45,104,97,115,104,45,116,97,98,108,101,45,116,97,98,108,101,57,254,1, -30,58,2,2,71,45,112,97,116,104,45,99,97,99,104,101,59,254,1,30,60, -2,2,77,45,108,111,97,100,105,110,103,45,102,105,108,101,110,97,109,101,61, -254,1,30,62,2,2,71,45,112,114,101,118,45,114,101,108,116,111,63,254,1, -30,64,2,2,75,45,112,114,101,118,45,114,101,108,116,111,45,100,105,114,65, -254,1,30,66,2,2,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, -67,254,1,30,68,2,2,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,69,254,1,30, -70,2,2,65,112,111,114,116,63,71,254,1,30,72,2,2,72,115,116,114,117, -99,116,58,103,117,97,114,100,73,254,1,30,74,2,2,70,109,97,107,101,45, -103,117,97,114,100,75,254,1,30,76,2,2,66,103,117,97,114,100,63,77,254, -1,30,78,2,2,69,103,117,97,114,100,45,114,101,102,79,254,1,30,80,2, -2,70,103,117,97,114,100,45,115,101,116,33,81,254,1,30,82,2,2,69,103, -117,97,114,100,45,101,118,116,83,254,1,30,84,2,2,71,99,104,97,110,110, -101,108,45,103,101,116,85,254,1,30,86,2,2,75,99,104,97,110,110,101,108, -45,116,114,121,45,103,101,116,87,254,1,30,88,2,2,71,99,104,97,110,110, -101,108,45,112,117,116,89,254,1,30,90,2,2,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,91,254,1,30, -92,2,2,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,93,254,1,30,94,2,2,67,109,107,45,114, -53,114,115,95,254,1,30,96,2,2,76,110,117,108,108,45,101,110,118,105,114, -111,110,109,101,110,116,97,254,1,16,0,11,11,16,22,2,32,2,30,2,34, -2,20,2,61,2,57,2,59,2,63,2,65,2,53,2,51,2,55,2,6,2, -38,2,10,2,36,2,79,2,81,2,77,2,75,2,95,2,73,54,11,16,24, -2,85,2,89,2,87,2,47,2,40,2,28,2,69,2,83,2,91,2,22,2, -24,2,18,2,49,2,67,2,12,2,97,2,26,2,8,2,4,2,71,2,14, -2,16,2,93,79,109,101,109,111,114,121,45,116,114,97,99,101,45,108,97,109, -98,100,97,98,16,24,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, -11,11,11,11,11,11,11,11,11,16,24,2,85,2,89,2,87,2,47,2,40, -2,28,2,69,2,83,2,91,2,22,2,24,2,18,2,49,2,67,2,12,2, -97,2,26,2,8,2,4,2,71,2,14,2,16,2,93,2,98,55,56,93,16, -5,93,2,98,89,162,32,33,8,64,9,223,0,27,249,22,209,20,15,159,35, -32,38,196,27,28,248,80,158,35,32,194,249,80,158,36,33,248,80,158,37,34, -196,27,248,80,158,38,35,197,28,248,80,158,38,32,193,249,80,158,39,33,248, -80,158,40,34,195,27,248,80,158,41,35,196,28,248,80,158,41,36,193,248,80, -158,41,37,193,11,11,11,28,192,27,248,22,52,194,27,248,22,78,195,27,248, -22,80,196,27,249,22,209,20,15,159,40,33,38,249,22,209,203,247,22,48,27, -249,22,209,20,15,159,41,34,38,249,22,209,204,247,22,48,27,249,22,209,20, -15,159,42,35,38,249,22,209,205,247,22,48,27,252,22,61,201,199,198,200,202, -27,20,15,159,42,36,38,250,22,209,20,15,159,45,37,38,250,22,209,20,15, -159,48,38,38,250,22,60,20,15,159,51,39,38,250,22,209,20,15,159,54,40, -38,248,22,60,250,22,209,20,15,159,58,41,38,249,22,56,248,22,90,23,20, -20,15,159,8,28,42,38,20,15,159,58,43,38,20,15,159,54,44,38,250,22, -209,20,15,159,54,45,38,251,22,60,20,15,159,58,46,38,250,22,209,20,15, -159,8,29,47,38,248,22,60,250,22,209,20,15,159,8,33,48,38,249,22,60, -248,22,78,23,27,250,22,209,20,15,159,8,38,49,38,250,22,60,20,15,159, -8,41,50,38,248,22,89,23,33,250,22,209,20,15,159,8,44,51,38,250,22, -60,20,15,159,8,47,52,38,250,22,209,20,15,159,8,50,53,38,248,22,60, -250,22,209,20,15,159,8,54,54,38,249,22,60,248,22,87,23,48,250,22,209, -20,15,159,8,59,55,38,249,22,60,20,15,159,8,61,56,38,248,22,90,23, -53,20,15,159,8,59,57,38,20,15,159,8,54,58,38,20,15,159,8,50,59, -38,250,22,209,20,15,159,8,50,8,28,38,251,22,62,20,15,159,8,54,8, -29,38,20,15,159,8,54,8,30,38,248,22,87,23,46,248,22,52,23,46,20, -15,159,8,50,8,31,38,20,15,159,8,44,8,32,38,20,15,159,8,38,8, -33,38,20,15,159,8,33,8,34,38,20,15,159,8,29,8,35,38,250,22,209, -20,15,159,8,29,8,36,38,250,22,60,20,15,159,8,32,8,37,38,248,22, -90,23,24,250,22,209,20,15,159,8,35,8,38,38,249,22,60,20,15,159,8, -37,8,39,38,248,22,78,23,29,20,15,159,8,35,8,40,38,20,15,159,8, -29,8,41,38,248,22,78,23,18,20,15,159,54,8,42,38,20,15,159,48,8, -43,38,195,250,22,252,39,2,11,6,10,10,98,97,100,32,115,121,110,116,97, -120,196,32,20,98,158,16,6,30,99,65,35,37,115,116,120,100,69,115,116,120, -45,112,97,105,114,63,101,11,30,102,2,100,67,99,111,110,115,47,35,102,103, -1,30,104,2,100,67,115,116,120,45,99,97,114,105,5,30,106,2,100,67,115, -116,120,45,99,100,114,107,6,30,108,2,100,69,115,116,120,45,108,105,115,116, -63,109,8,30,110,2,100,69,115,116,120,45,62,108,105,115,116,111,4,16,44, -18,98,64,104,101,114,101,112,38,98,36,10,32,11,96,159,68,35,37,100,101, -102,105,110,101,113,9,11,159,70,35,37,109,101,109,116,114,97,99,101,114,9, -11,159,74,35,37,115,109,97,108,108,45,115,99,104,101,109,101,115,9,11,159, -73,35,37,109,111,114,101,45,115,99,104,101,109,101,116,9,11,16,92,2,63, -2,2,2,81,2,2,2,51,2,2,2,24,2,2,2,12,2,2,2,34,2, -2,2,26,2,2,2,65,2,2,2,73,2,2,2,49,2,2,2,4,2,2, -2,14,2,2,2,69,2,2,2,67,2,2,2,75,2,2,2,91,2,2,2, -40,2,2,2,71,2,2,2,18,2,2,2,28,2,2,2,89,2,2,2,87, -2,2,2,79,2,2,2,93,2,2,2,95,2,2,2,59,2,2,2,61,2, -2,2,20,2,2,2,77,2,2,2,55,2,2,2,30,2,2,2,36,2,2, -2,98,2,2,2,16,2,2,2,83,2,2,2,57,2,2,2,22,2,2,2, -53,2,2,2,85,2,2,2,8,2,2,2,97,2,2,2,32,2,2,2,38, -2,2,2,6,2,2,2,47,2,2,2,10,2,2,98,35,10,33,11,94,159, -76,35,37,115,116,120,99,97,115,101,45,115,99,104,101,109,101,117,9,11,159, -2,100,9,11,16,0,96,34,8,254,1,11,16,0,16,4,33,11,61,120,118, -3,1,7,101,110,118,52,48,49,50,119,18,100,2,112,41,36,35,34,33,16, -8,40,11,3,1,4,103,53,51,50,120,3,1,4,103,53,51,51,121,3,1, -4,103,53,51,52,122,3,1,7,101,110,118,52,48,49,56,123,2,123,2,123, -16,8,39,11,61,95,124,64,97,114,103,115,125,64,98,111,100,121,126,3,1, -7,101,110,118,52,48,49,57,127,2,127,2,127,18,158,2,112,41,18,158,2, -112,41,18,16,2,95,66,115,114,99,116,97,103,128,42,93,8,252,107,10,95, -9,8,252,107,10,69,35,37,115,116,120,99,97,115,101,129,18,106,64,100,101, -115,116,130,49,36,35,34,33,40,39,16,4,48,11,3,1,4,103,53,51,57, -131,3,1,7,101,110,118,52,48,51,49,132,16,4,47,11,68,99,111,110,116, -109,97,114,107,133,3,1,7,101,110,118,52,48,51,50,134,16,4,46,11,3, -1,4,103,53,52,49,135,3,1,7,101,110,118,52,48,52,49,136,16,4,45, -11,64,102,117,110,99,137,3,1,7,101,110,118,52,48,52,50,138,16,4,44, -11,3,1,4,103,53,52,51,139,3,1,7,101,110,118,52,48,53,49,140,16, -4,43,11,67,110,101,119,109,97,114,107,141,3,1,7,101,110,118,52,48,53, -50,142,18,158,63,99,116,120,143,49,18,158,63,108,101,116,144,49,18,158,2, -143,49,18,158,2,143,49,18,16,2,103,93,16,2,158,11,49,9,57,98,56, -10,32,11,94,159,2,115,9,11,159,2,100,9,11,16,6,66,115,121,110,116, -97,120,145,29,146,11,11,73,115,121,110,116,97,120,45,99,97,115,101,42,42, -147,2,146,1,20,101,108,108,105,112,115,105,115,45,99,111,117,110,116,45,101, -114,114,111,114,148,2,146,98,55,10,33,11,95,159,64,35,37,115,99,149,9, -11,159,2,115,9,11,159,2,100,9,11,16,0,96,54,8,254,1,11,16,0, -16,4,53,11,2,118,3,1,6,101,110,118,51,56,50,150,16,4,52,11,68, -104,101,114,101,45,115,116,120,151,3,1,6,101,110,118,51,56,52,152,16,4, -51,11,2,151,2,152,13,16,4,33,2,146,2,129,11,93,8,252,107,10,16, -6,50,11,61,114,153,63,115,114,99,154,3,1,7,101,110,118,52,48,53,53, -155,2,155,95,9,8,252,107,10,2,129,18,158,2,143,49,18,158,2,143,49, -18,158,2,143,49,18,158,2,144,49,18,158,2,143,49,18,158,2,143,49,18, -158,2,143,49,18,158,66,108,97,109,98,100,97,156,49,18,158,2,143,49,18, -158,2,144,49,18,158,2,143,49,18,158,2,143,49,18,158,2,143,49,18,158, -1,31,117,110,105,111,110,101,100,45,109,101,109,116,114,97,99,101,45,116,114, -97,99,107,105,110,103,45,118,97,108,117,101,157,49,18,158,2,143,49,18,158, -2,143,49,18,158,2,143,49,18,158,2,143,49,18,158,1,22,119,105,116,104, -45,99,111,110,116,105,110,117,97,116,105,111,110,45,109,97,114,107,158,49,18, -158,1,30,109,101,109,111,114,121,45,116,114,97,99,101,45,99,111,110,116,105, -110,117,97,116,105,111,110,45,109,97,114,107,159,49,18,158,2,143,49,18,158, -2,143,49,18,158,2,143,49,18,158,2,143,49,18,158,2,143,49,18,158,2, -143,49,18,158,64,115,101,116,33,160,49,18,158,2,143,49,18,158,1,30,110, -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,161,49,18,158,2,143,49,18,158,2,143,49,18, -158,2,143,49,18,158,2,143,49,11,134,83,159,32,93,80,159,32,32,33,89, -162,32,33,36,2,4,222,27,248,22,252,24,3,194,28,192,192,28,248,22,252, -136,1,194,27,248,22,252,37,3,195,28,192,192,248,22,252,38,3,195,11,83, -159,32,93,80,159,32,33,33,248,22,252,62,3,5,12,40,91,46,93,91,94, -46,93,42,124,41,36,83,159,32,93,80,159,32,34,33,89,162,32,34,45,2, -8,223,0,87,95,28,27,248,22,252,24,3,195,28,192,192,28,248,22,252,136, -1,195,27,248,22,252,37,3,196,28,192,192,248,22,252,38,3,196,11,12,252, -22,252,40,2,2,8,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,32,198,199,28,28,248,22,252, -136,1,195,10,248,22,252,188,1,195,12,252,22,252,40,2,2,8,6,21,21, -115,116,114,105,110,103,32,111,114,32,98,121,116,101,32,115,116,114,105,110,103, -33,198,199,91,159,35,11,90,161,35,32,11,248,22,252,36,3,197,87,94,28, -192,12,250,22,252,41,2,2,8,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,248,22,252,28,3,250,22,252,70,3,80,159,40, -33,34,248,22,252,26,3,199,28,248,22,252,136,1,203,249,22,252,212,1,204, -8,63,202,28,248,22,252,24,3,194,249,22,252,35,3,195,194,192,83,159,32, -93,80,159,32,35,33,249,22,252,138,1,7,92,7,92,83,159,32,93,80,159, -32,36,33,89,162,32,33,43,2,12,223,0,87,94,28,27,248,22,252,24,3, -195,28,192,192,28,248,22,252,136,1,195,27,248,22,252,37,3,196,28,192,192, -248,22,252,38,3,196,11,12,250,22,252,40,2,76,110,111,114,109,97,108,45, -112,97,116,104,45,99,97,115,101,162,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,28,249,22, -252,11,2,247,22,252,219,1,67,119,105,110,100,111,119,115,163,27,28,248,22, -252,136,1,195,194,248,22,252,25,3,195,28,249,22,252,65,3,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,252,136,1,195,248,22,252,27,3,195,194,27,248,22,252,175,1,194,248, -22,252,27,3,250,22,252,71,3,0,6,35,114,120,34,47,34,28,249,22,252, -65,3,0,22,35,114,120,34,91,47,92,92,93,91,46,32,93,43,91,47,92, -92,93,42,36,34,198,196,250,22,252,71,3,0,19,35,114,120,34,91,32,46, -93,43,40,91,47,92,92,93,42,41,36,34,199,6,2,2,92,49,80,159,38, -35,34,28,249,22,252,11,2,247,22,252,219,1,65,109,97,99,111,115,164,248, -22,252,27,3,248,22,252,175,1,28,248,22,252,136,1,196,195,248,22,252,25, -3,196,28,248,22,252,136,1,194,248,22,252,27,3,194,193,83,159,32,93,80, -159,32,37,33,91,159,34,11,90,161,33,33,11,89,162,32,33,36,65,99,104, -101,99,107,165,222,28,248,22,130,193,12,250,22,252,40,2,2,14,6,4,4, -114,101,97,108,195,20,12,95,33,89,162,32,34,44,2,14,224,0,1,87,95, -248,193,195,248,193,196,27,248,22,176,197,27,249,22,173,198,195,27,249,22,172, -199,196,28,249,22,181,199,199,28,250,22,184,196,32,195,28,248,22,133,198,32, -0,3,48,46,48,28,248,22,188,194,248,22,173,249,199,248,22,173,196,248,22, -173,197,249,198,195,194,0,6,43,110,97,110,46,48,89,162,32,34,46,72,102, -105,110,100,45,98,101,116,119,101,101,110,166,223,0,28,248,22,132,194,193,27, -248,22,144,195,27,248,22,144,197,28,249,22,182,195,194,248,22,170,194,249,22, -172,195,248,22,175,249,199,248,22,175,249,22,173,204,201,248,22,175,249,22,173, -203,201,83,159,32,93,80,159,32,38,33,89,162,32,32,39,2,16,222,91,159, -36,11,90,161,33,32,11,83,160,38,32,33,11,90,161,33,33,11,83,160,38, -32,33,11,90,161,33,34,11,83,160,38,32,33,11,90,161,33,35,11,89,162, -32,32,33,1,24,114,101,112,45,101,114,114,111,114,45,101,115,99,97,112,101, -45,104,97,110,100,108,101,114,167,223,1,247,207,250,22,31,89,162,32,32,36, -9,225,6,5,3,90,161,33,32,10,247,22,252,44,2,90,161,33,33,10,247, -22,252,31,2,87,94,248,22,252,44,2,195,248,22,252,31,2,11,89,162,32, -32,35,9,224,5,4,248,22,8,89,162,32,33,36,9,224,2,1,247,91,159, -33,11,20,12,95,33,192,89,162,32,32,37,69,114,101,112,108,45,108,111,111, -112,168,226,2,1,3,0,87,94,248,22,8,89,162,32,33,39,9,225,4,3, -2,250,22,31,89,162,32,32,36,9,225,5,4,6,87,94,248,22,252,31,2, -210,90,161,33,33,10,192,12,89,162,32,32,36,9,223,3,27,247,247,22,40, -87,94,28,248,22,252,70,1,193,248,194,12,12,249,22,6,89,162,32,32,35, -9,223,2,248,247,22,252,32,2,28,248,22,206,194,248,22,252,30,2,194,193, -89,162,33,33,35,9,222,249,22,3,247,22,39,194,89,162,32,32,35,9,224, -5,4,90,161,33,33,10,247,22,252,31,2,87,94,248,22,252,31,2,11,90, -161,33,32,10,11,12,247,192,89,162,32,32,36,9,225,5,4,3,87,95,248, -22,252,44,2,208,248,22,252,31,2,210,90,161,33,33,10,11,90,161,33,32, -10,11,12,83,159,32,93,80,159,32,39,33,89,162,32,33,43,2,18,222,87, -94,28,27,248,22,252,24,3,194,28,192,192,28,248,22,252,136,1,194,27,248, -22,252,37,3,195,28,192,192,248,22,252,38,3,195,11,12,250,22,252,40,2, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,53,50,46,49,103,252,15,13,159,33,20,98,159,33,16,1,20, +24,65,98,101,103,105,110,0,16,0,83,158,40,20,95,114,67,35,37,113,113, +115,116,120,1,29,2,11,11,10,10,10,33,80,158,33,33,20,98,159,33,16, +2,30,3,2,2,79,99,104,101,99,107,45,115,112,108,105,99,105,110,103,45, +108,105,115,116,4,254,1,30,5,65,35,37,115,116,120,6,69,115,116,120,45, +108,105,115,116,63,7,8,16,0,11,11,16,1,2,4,34,11,16,4,77,117, +110,115,121,110,116,97,120,45,115,112,108,105,99,105,110,103,8,68,117,110,115, +121,110,116,97,120,9,71,113,117,97,115,105,115,121,110,116,97,120,10,75,113, +117,97,115,105,115,121,110,116,97,120,47,108,111,99,11,16,4,11,11,11,11, +16,4,2,8,2,9,2,10,2,11,33,37,94,16,5,94,2,9,2,8,27, +32,12,89,162,33,34,37,61,102,13,222,250,22,252,39,2,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,36,20,98,159,33,16,0, +16,0,11,16,5,94,2,10,2,11,87,96,83,159,33,93,80,159,33,8,42, +34,89,162,33,34,37,9,223,0,249,22,59,20,15,159,35,8,28,41,195,83, +159,33,93,80,159,33,8,40,34,89,162,33,39,57,64,108,111,111,112,14,223, +0,27,249,22,209,20,15,159,36,34,41,198,27,28,248,80,158,36,33,194,28, +27,248,80,158,37,34,195,28,248,80,158,37,35,193,28,249,22,223,194,20,15, +159,38,35,41,9,11,11,27,248,80,158,37,36,195,28,248,80,158,37,33,193, +249,80,158,38,37,248,80,158,39,34,195,248,80,158,39,38,248,80,158,40,36, +196,11,11,11,28,192,28,248,22,186,199,27,248,22,52,248,80,158,38,39,21, +93,62,117,113,15,249,203,194,248,22,59,249,22,59,197,198,253,80,159,41,8, +40,34,201,202,198,248,22,171,205,205,89,162,33,35,47,9,226,8,9,14,11, +249,195,250,22,209,199,249,22,59,248,80,158,44,34,200,203,197,199,27,28,248, +80,158,37,35,195,28,249,22,223,196,20,15,159,38,36,41,9,11,11,28,192, +251,22,252,39,2,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,38, +33,196,249,80,158,39,37,27,248,80,158,41,34,199,28,248,80,158,41,33,193, +28,27,248,80,158,42,34,194,28,248,80,158,42,35,193,28,249,22,223,194,20, +15,159,43,37,41,9,11,11,27,248,80,158,42,36,194,28,248,80,158,42,33, +193,249,80,158,43,40,248,80,158,44,34,195,248,80,158,44,38,248,80,158,45, +36,196,11,11,11,27,248,80,158,41,36,199,250,22,209,201,195,201,11,28,192, +27,248,22,52,194,27,248,22,53,195,28,248,22,186,203,27,89,162,33,35,8, +34,71,114,101,115,116,45,100,111,110,101,45,107,16,226,7,13,10,2,27,249, +22,209,20,15,159,39,38,41,248,22,52,248,80,158,41,39,21,93,63,117,113, +115,17,27,249,22,209,20,15,159,40,39,41,250,22,209,199,63,99,116,120,18, +199,249,198,250,22,209,200,250,22,61,201,20,15,159,46,40,41,206,200,249,22, +51,27,250,22,61,202,201,200,27,20,15,159,44,41,41,250,22,209,20,15,159, +47,42,41,250,22,209,20,15,159,50,43,41,249,22,60,250,22,209,20,15,159, +55,44,41,249,22,60,248,22,78,23,15,20,15,159,57,45,41,20,15,159,55, +46,41,250,22,209,20,15,159,55,47,41,250,22,60,20,15,159,58,48,41,248, +22,52,23,16,250,22,209,20,15,159,8,28,49,41,249,22,60,20,15,159,8, +30,50,41,248,22,80,23,21,20,15,159,8,28,51,41,20,15,159,55,52,41, +20,15,159,50,53,41,195,203,253,80,159,46,8,40,34,206,23,15,199,23,17, +89,162,33,33,37,9,224,7,6,249,194,195,9,198,253,80,159,45,8,40,34, +205,206,199,248,22,171,23,17,89,162,33,33,49,9,230,12,14,13,18,17,16, +15,6,253,80,159,46,8,40,34,203,204,198,200,201,27,248,80,158,48,34,201, +27,9,89,162,33,35,46,9,226,12,9,0,1,249,197,250,22,209,199,249,22, +51,199,203,199,249,22,65,197,201,89,162,33,35,51,9,229,12,14,13,18,16, +15,6,27,27,250,22,209,248,80,158,45,34,199,249,22,59,248,80,158,47,34, +248,80,158,48,34,202,206,248,80,158,45,34,199,89,162,33,35,46,9,226,5, +3,10,0,249,197,250,22,209,199,249,22,51,199,203,199,249,22,65,197,201,253, +80,159,46,8,40,34,203,204,199,201,89,162,33,33,37,9,224,7,6,249,194, +195,9,198,27,28,248,80,158,39,35,197,28,249,22,223,198,20,15,159,40,54, +41,9,11,11,28,192,251,22,252,39,2,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,40,33,198,28,27,248,80,158,41,34,199,28,248,80,158,41, +35,193,28,249,22,223,194,20,15,159,42,55,41,9,11,11,27,248,80,158,41, +36,199,28,248,80,158,41,33,193,249,80,158,42,37,248,80,158,43,34,195,248, +80,158,43,38,248,80,158,44,36,196,11,11,11,28,192,253,80,159,45,8,40, +34,205,206,198,248,22,170,23,17,23,17,89,162,33,35,46,9,225,12,18,15, +249,195,250,22,209,197,249,22,59,248,80,158,43,34,200,202,197,198,28,248,22, +50,248,22,210,203,253,80,159,45,8,41,34,23,16,205,206,248,22,210,23,16, +23,17,89,162,33,35,42,69,99,111,110,118,101,114,116,45,107,19,224,18,15, +249,195,250,22,209,197,199,197,197,28,248,22,252,222,1,248,22,210,203,253,80, +159,45,8,40,34,205,206,250,22,209,23,18,248,22,252,229,1,248,22,210,23, +20,23,18,23,16,23,17,89,162,33,35,44,9,224,18,15,249,195,250,22,209, +197,248,22,252,230,1,248,22,216,201,197,197,247,203,83,159,33,93,80,159,33, +8,41,34,89,162,33,39,49,65,112,108,111,111,112,20,223,0,28,248,22,50, +197,28,27,248,22,52,198,27,28,248,80,158,36,35,194,27,249,22,223,196,20, +15,159,38,56,41,28,192,192,249,22,223,196,20,15,159,38,57,41,11,28,192, +192,28,248,80,158,36,33,194,27,248,80,158,37,34,195,28,248,80,158,37,35, +193,249,22,223,194,20,15,159,38,58,41,11,11,253,80,159,39,8,40,34,200, +201,250,22,209,11,205,11,199,203,204,253,80,159,39,8,41,34,199,200,201,248, +22,53,203,89,162,33,33,47,9,229,6,9,8,7,12,11,10,253,80,159,45, +8,40,34,202,203,248,22,52,199,201,199,89,162,33,35,45,9,224,8,6,249, +195,249,22,51,250,22,209,248,22,52,200,201,248,22,52,200,248,22,53,197,197, +89,162,33,35,48,9,228,6,9,8,7,12,10,253,80,159,44,8,40,34,201, +202,248,22,52,199,200,89,162,33,33,42,9,226,7,6,13,12,249,197,249,22, +51,248,22,52,199,196,195,89,162,33,35,47,9,226,7,6,13,12,249,197,249, +22,51,250,22,209,248,22,52,202,203,248,22,52,202,196,249,22,65,201,197,28, +248,22,57,197,247,197,253,80,159,39,8,40,34,200,201,202,199,203,204,27,89, +162,33,36,45,62,113,113,21,223,1,27,20,15,159,34,33,41,253,80,159,40, +8,40,34,198,200,201,33,89,162,33,33,41,66,115,97,109,101,45,107,22,226, +10,9,8,6,250,22,209,195,248,199,198,196,89,162,33,35,46,2,19,226,7, +10,8,6,250,22,209,195,250,22,59,20,15,159,42,59,41,203,248,201,203,196, +249,22,7,89,162,33,34,45,9,224,3,2,27,249,22,209,20,15,159,37,8, +27,41,197,27,28,248,80,158,37,33,194,249,80,158,38,40,248,80,158,39,34, +196,27,248,80,158,40,36,197,28,248,80,158,40,33,193,249,80,158,41,37,248, +80,158,42,34,195,248,80,158,42,38,248,80,158,43,36,196,11,11,28,192,27, +248,22,52,194,27,248,22,53,195,250,199,201,195,80,159,41,8,42,34,250,22, +252,39,2,11,6,10,10,98,97,100,32,115,121,110,116,97,120,196,89,162,33, +34,48,9,224,3,2,27,249,22,209,20,15,159,37,8,29,41,197,27,28,248, +80,158,37,33,194,249,80,158,38,40,248,80,158,39,34,196,27,248,80,158,40, +36,197,28,248,80,158,40,33,193,249,80,158,41,40,248,80,158,42,34,195,27, +248,80,158,43,36,196,28,248,80,158,43,33,193,249,80,158,44,37,248,80,158, +45,34,195,248,80,158,45,38,248,80,158,46,36,196,11,11,11,28,192,27,248, +22,52,194,27,248,22,78,195,27,248,22,80,196,250,200,202,195,89,162,33,34, +39,9,224,9,4,250,22,59,20,15,159,37,8,30,41,195,197,250,22,252,39, +2,11,6,10,10,98,97,100,32,115,121,110,116,97,120,196,36,20,98,159,36, +16,8,30,23,2,6,69,115,116,120,45,112,97,105,114,63,24,11,30,25,2, +6,67,115,116,120,45,99,97,114,26,5,30,27,2,6,71,105,100,101,110,116, +105,102,105,101,114,63,28,2,30,29,2,6,67,115,116,120,45,99,100,114,30, +6,30,31,2,6,69,97,112,112,101,110,100,47,35,102,32,0,30,33,2,6, +71,115,116,120,45,110,117,108,108,47,35,102,34,9,30,35,70,35,37,119,105, +116,104,45,115,116,120,36,1,20,103,101,110,101,114,97,116,101,45,116,101,109, +112,111,114,97,114,105,101,115,37,0,30,38,2,6,67,99,111,110,115,47,35, +102,39,1,16,31,18,98,64,104,101,114,101,40,39,98,37,10,33,11,94,159, +2,6,9,11,159,76,35,37,115,116,120,99,97,115,101,45,115,99,104,101,109, +101,41,9,11,16,10,2,11,2,2,2,8,2,2,2,10,2,2,2,4,2, +2,2,9,2,2,98,36,10,34,11,94,159,2,6,9,11,159,2,41,9,11, +16,0,96,35,8,254,1,11,16,0,16,8,34,11,68,111,114,105,103,45,115, +116,120,42,64,98,111,100,121,43,68,109,107,45,102,105,110,97,108,44,3,1, +7,101,110,118,50,57,56,54,45,2,45,2,45,18,101,2,40,43,37,36,35, +34,16,4,42,11,68,104,101,114,101,45,115,116,120,46,3,1,7,101,110,118, +50,57,56,55,47,16,4,41,11,2,14,3,1,7,101,110,118,50,57,56,56, +48,16,10,40,11,63,115,116,120,49,65,100,101,112,116,104,50,2,22,2,19, +3,1,7,101,110,118,50,57,56,57,51,2,51,2,51,2,51,18,158,2,9, +43,18,158,2,9,43,18,158,2,8,43,18,104,2,40,47,37,36,35,34,42, +41,40,16,6,46,11,3,1,4,103,51,52,49,52,3,1,4,103,51,52,50, +53,3,1,7,101,110,118,51,48,49,48,54,2,54,16,6,45,11,61,120,55, +64,114,101,115,116,56,3,1,7,101,110,118,51,48,49,49,57,2,57,16,6, +44,11,66,114,101,115,116,45,118,58,68,98,105,110,100,105,110,103,115,59,3, +1,7,101,110,118,51,48,49,53,60,2,60,18,158,2,40,47,18,108,63,46, +46,46,61,52,37,36,35,34,42,41,40,46,45,44,16,4,51,11,3,1,4, +103,51,52,55,62,3,1,7,101,110,118,51,48,50,51,63,16,4,50,11,64, +116,101,109,112,64,3,1,7,101,110,118,51,48,50,52,65,16,4,49,11,3, +1,4,103,51,52,57,66,3,1,7,101,110,118,51,48,51,51,67,16,4,48, +11,2,18,3,1,7,101,110,118,51,48,51,52,68,18,16,2,95,66,115,114, +99,116,97,103,69,53,93,8,252,90,8,95,9,8,252,90,8,69,35,37,115, +116,120,99,97,115,101,70,18,158,64,100,101,115,116,71,52,18,158,2,18,52, +18,158,2,18,52,18,158,2,61,52,18,158,2,18,52,18,158,2,18,52,18, +158,2,4,52,18,158,2,18,52,18,158,72,113,117,111,116,101,45,115,121,110, +116,97,120,72,52,18,158,2,18,52,18,158,2,18,52,18,158,2,18,52,18, +158,2,8,43,18,158,2,10,43,18,106,2,9,59,37,36,35,34,42,41,40, +16,4,58,11,3,1,4,103,51,51,57,73,3,1,7,101,110,118,51,48,53, +55,74,16,4,57,11,65,95,101,108,115,101,75,3,1,7,101,110,118,51,48, +53,56,76,16,4,56,11,2,20,3,1,7,101,110,118,51,48,54,49,77,16, +4,55,11,61,108,78,3,1,7,101,110,118,51,48,54,50,79,16,4,54,11, +61,97,80,3,1,7,101,110,118,51,48,54,51,81,18,158,2,10,59,18,158, +2,8,59,18,16,2,100,71,119,105,116,104,45,115,121,110,116,97,120,82,8, +28,37,36,35,34,42,16,4,8,27,11,2,59,3,1,7,101,110,118,51,48, +55,53,83,9,18,99,2,40,8,31,37,36,35,16,4,8,30,11,2,21,3, +1,7,101,110,118,50,57,56,53,84,16,4,8,29,11,2,42,3,1,7,101, +110,118,51,48,55,54,85,18,102,66,115,121,110,116,97,120,86,8,35,37,36, +35,8,30,8,29,16,6,8,34,11,3,1,4,103,51,53,48,87,3,1,4, +103,51,53,49,88,3,1,7,101,110,118,51,48,56,49,89,2,89,16,6,8, +33,11,61,95,90,2,49,3,1,7,101,110,118,51,48,56,50,91,2,91,16, +4,8,32,11,2,43,3,1,7,101,110,118,51,48,56,53,92,18,99,2,40, +8,37,37,36,35,8,30,16,4,8,36,11,2,42,3,1,7,101,110,118,51, +48,56,54,93,18,102,70,115,121,110,116,97,120,47,108,111,99,94,8,41,37, +36,35,8,30,8,36,16,8,8,40,11,3,1,4,103,51,53,50,95,3,1, +4,103,51,53,51,96,3,1,4,103,51,53,52,97,3,1,7,101,110,118,51, +48,57,50,98,2,98,2,98,16,8,8,39,11,2,90,63,108,111,99,99,2, +49,3,1,7,101,110,118,51,48,57,51,100,2,100,2,100,16,4,8,38,11, +2,43,3,1,7,101,110,118,51,48,57,55,101,11,93,83,159,33,93,80,159, +33,33,34,89,162,33,35,39,2,4,223,0,87,94,28,248,80,158,34,34,194, +12,250,22,252,40,2,2,8,6,18,18,112,114,111,112,101,114,32,115,121,110, +116,97,120,32,108,105,115,116,196,250,22,209,197,196,197,95,68,35,37,107,101, +114,110,101,108,102,2,41,2,6,95,2,102,2,41,2,6,0}; + EVAL_ONE_SIZED_STR((char *)expr, 3355); + } + { + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,53,50,46,49,165,252,220,26,159,33,20,98,159,33,16,1,20, +24,65,98,101,103,105,110,0,16,0,83,158,40,20,95,114,68,35,37,100,101, +102,105,110,101,1,29,2,11,11,10,10,10,33,80,158,33,33,20,98,159,33, +16,0,16,0,11,11,16,0,33,11,16,4,77,100,101,102,105,110,101,45,102, +111,114,45,115,121,110,116,97,120,3,73,100,101,102,105,110,101,45,115,121,110, +116,97,120,4,76,98,101,103,105,110,45,102,111,114,45,115,121,110,116,97,120, +5,66,100,101,102,105,110,101,6,16,4,11,11,11,11,16,4,2,3,2,4, +2,5,2,6,33,37,94,16,5,95,2,6,2,4,2,3,87,99,83,159,33, +93,80,159,33,8,62,34,89,162,33,36,58,68,116,114,121,45,110,101,120,116, +7,223,0,27,28,248,80,158,35,33,195,249,80,158,36,34,248,80,158,37,35, +197,27,248,80,158,38,36,198,28,248,80,158,38,33,193,27,28,248,22,206,194, +193,198,249,80,158,40,34,248,80,158,41,35,196,27,248,80,158,42,36,197,250, +22,209,198,195,198,11,11,28,192,27,248,22,52,194,27,248,22,78,195,27,248, +22,80,196,28,248,80,158,38,42,194,250,22,252,39,2,11,27,249,22,209,20, +15,159,43,8,32,46,204,27,28,248,80,158,43,33,194,249,80,158,44,34,248, +80,158,45,35,196,27,248,80,158,46,36,197,28,248,80,158,46,33,193,249,80, +158,47,41,248,80,158,48,35,195,248,80,158,48,45,248,80,158,49,36,196,11, +11,28,192,27,248,22,52,194,27,248,22,53,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,44,33,195,249,80,158,45,34,248,80,158,46,35,197,27,248,80, +158,47,36,198,28,248,80,158,47,33,193,249,80,158,48,34,248,80,158,49,35, +195,27,248,80,158,50,36,196,28,248,80,158,50,37,193,248,80,158,50,38,193, +11,11,11,28,192,27,248,22,52,194,27,248,22,78,195,27,248,22,80,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,45,33,196,249,80,158, +46,34,248,80,158,47,35,198,27,248,80,158,48,36,199,28,248,80,158,48,33, +193,27,28,248,22,206,194,193,199,249,80,158,50,34,248,80,158,51,35,196,27, +248,80,158,52,36,197,250,22,209,198,195,198,11,11,28,192,27,248,22,52,194, +27,248,22,78,195,27,248,22,80,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,252,39,2,11,6,10,10,98,97,100,32,115,121,110,116,97,120, +198,201,250,80,159,40,8,61,34,200,201,202,250,80,159,37,8,61,34,197,198, +199,83,159,33,93,80,159,33,8,61,34,89,162,33,36,48,2,7,223,0,27, +28,248,80,158,35,33,195,249,80,158,36,34,248,80,158,37,35,197,27,248,80, +158,38,36,198,28,248,80,158,38,33,193,27,28,248,22,206,194,193,198,249,80, +158,40,34,248,80,158,41,35,196,27,248,80,158,42,36,197,250,22,209,198,195, +198,11,11,28,192,27,248,22,52,194,27,248,22,78,195,27,248,22,80,196,28, +248,80,158,38,33,194,250,80,159,40,8,60,34,200,201,202,251,22,252,39,2, +11,6,10,10,98,97,100,32,115,121,110,116,97,120,202,197,250,80,159,37,8, +60,34,197,198,199,83,159,33,93,80,159,33,8,60,34,89,162,33,36,8,31, +2,7,223,0,27,28,248,80,158,35,33,195,249,80,158,36,34,248,80,158,37, +35,197,27,248,80,158,38,36,198,28,248,80,158,38,33,193,27,28,248,22,206, +194,193,198,249,80,158,40,34,248,80,158,41,35,196,27,248,80,158,42,36,197, +250,22,209,198,195,198,11,11,28,192,27,248,22,52,194,27,248,22,78,195,27, +248,22,80,196,91,159,35,11,90,161,35,33,11,249,80,159,41,8,58,34,202, +197,87,95,28,248,80,158,40,37,195,12,250,22,252,39,2,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,40,44,195,250,22,252,39,2,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,209,20,15,159,42,56,46,204,27, +249,22,209,20,15,159,43,57,46,196,27,249,22,209,20,15,159,44,58,46,248, +199,200,249,80,158,44,39,205,27,250,22,61,198,199,200,27,20,15,159,46,59, +46,250,22,209,20,15,159,49,8,27,46,250,22,209,20,15,159,52,8,28,46, +250,22,60,248,22,80,203,250,22,209,20,15,159,58,8,29,46,248,22,60,248, +22,78,23,15,20,15,159,58,8,30,46,248,22,52,203,20,15,159,52,8,31, +46,195,250,22,252,39,2,11,6,10,10,98,97,100,32,115,121,110,116,97,120, +197,83,159,33,93,80,159,33,8,58,34,89,162,33,35,44,73,103,101,110,101, +114,97,108,45,112,114,111,116,111,8,223,0,27,249,22,209,20,15,159,36,51, +46,197,27,28,248,80,158,36,33,194,249,80,158,37,34,248,80,158,38,35,196, +27,248,80,158,39,36,197,250,22,209,199,195,199,11,28,192,27,248,22,52,194, +27,248,22,53,195,28,248,80,158,38,42,194,249,22,7,195,249,80,159,41,8, +57,34,201,202,250,80,159,40,8,59,34,198,201,200,250,80,159,38,8,59,34, +196,199,198,83,159,33,93,80,159,33,8,59,34,89,162,33,36,53,2,7,223, +0,27,28,248,80,158,35,33,195,249,80,158,36,41,27,248,80,158,38,35,198, +28,248,80,158,38,33,193,249,80,158,39,34,248,80,158,40,35,195,27,248,80, +158,41,36,196,248,22,59,250,22,209,199,196,199,11,27,248,80,158,38,36,198, +250,22,209,200,195,200,11,28,192,27,248,22,52,194,27,248,22,78,195,27,248, +22,80,196,91,159,35,11,90,161,35,33,11,249,80,159,41,8,58,34,203,27, +249,22,61,201,200,27,20,15,159,43,52,46,250,22,209,20,15,159,46,53,46, +250,22,209,20,15,159,49,54,46,199,20,15,159,49,55,46,195,27,249,80,159, +42,8,57,34,204,203,249,22,7,195,89,162,33,34,39,9,224,4,2,248,194, +248,22,59,248,195,197,27,28,248,80,158,36,33,196,249,80,158,37,34,248,80, +158,38,35,198,27,248,80,158,39,36,199,250,22,209,201,195,201,11,28,192,27, +248,22,52,194,27,248,22,53,195,251,22,252,39,2,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,252, +39,2,11,6,10,10,98,97,100,32,115,121,110,116,97,120,198,83,159,33,93, +80,159,33,8,57,34,89,162,33,35,56,72,115,105,109,112,108,101,45,112,114, +111,116,111,9,223,0,91,159,35,11,90,161,35,33,11,27,249,22,209,20,15, +159,38,34,46,199,27,28,248,80,158,38,33,194,249,80,158,39,34,248,80,158, +40,35,196,27,248,80,158,41,36,197,28,248,80,158,41,37,193,248,80,158,41, +38,193,11,11,28,192,27,248,22,52,194,27,248,22,53,195,249,22,7,248,22, +216,27,20,15,159,43,35,46,250,22,209,20,15,159,46,36,46,199,195,89,162, +33,34,52,9,225,8,9,2,27,249,22,209,20,15,159,38,37,46,198,249,80, +158,38,39,196,27,249,22,61,197,198,27,20,15,159,40,38,46,250,22,209,20, +15,159,43,39,46,250,22,209,20,15,159,46,40,46,250,22,62,20,15,159,49, +41,46,248,22,53,203,248,22,52,203,20,15,159,46,42,46,195,27,28,248,80, +158,39,33,195,249,80,158,40,34,248,80,158,41,35,197,27,248,80,158,42,36, +198,91,159,36,11,90,161,36,33,11,250,80,158,47,40,198,34,11,28,194,27, +28,248,22,206,197,196,201,249,80,158,47,41,28,248,80,158,48,37,196,248,22, +59,248,80,158,49,38,197,11,250,22,209,197,199,197,11,11,28,192,27,248,22, +52,194,27,248,22,78,195,27,248,22,80,196,249,22,7,248,22,216,27,249,22, +61,199,198,27,20,15,159,46,43,46,250,22,209,20,15,159,49,44,46,249,22, +65,248,22,52,199,248,22,60,248,22,53,200,195,89,162,33,34,55,9,226,10, +11,2,3,27,249,22,209,20,15,159,39,45,46,199,249,80,158,39,39,197,27, +250,22,61,200,198,199,27,20,15,159,41,46,46,250,22,209,20,15,159,44,47, +46,250,22,209,20,15,159,47,48,46,250,22,62,20,15,159,50,49,46,249,22, +65,248,22,80,205,248,22,52,205,248,22,78,203,20,15,159,47,50,46,195,250, +22,252,39,2,11,6,10,10,98,97,100,32,115,121,110,116,97,120,197,87,95, +249,22,3,89,162,33,34,40,9,224,4,5,28,248,80,158,35,42,195,12,251, +22,252,39,2,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,37,43,194,28,192,251,22,252, +39,2,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,27,89,162, +33,34,35,62,109,107,10,223,1,89,162,33,34,8,27,9,224,0,1,87,94, +28,249,22,71,247,22,252,84,3,21,93,70,101,120,112,114,101,115,115,105,111, +110,11,250,22,252,39,2,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,209,20,15,159,37,33,46,197,27,28,248, +80,158,37,33,194,249,80,158,38,34,248,80,158,39,35,196,27,248,80,158,40, +36,197,28,248,80,158,40,33,193,249,80,158,41,34,248,80,158,42,35,195,27, +248,80,158,43,36,196,28,248,80,158,43,33,193,249,80,158,44,41,248,80,158, +45,35,195,248,80,158,45,45,248,80,158,46,36,196,11,11,11,28,192,27,248, +22,52,194,27,248,22,78,195,27,248,22,80,196,28,248,80,158,40,42,194,27, +249,22,209,20,15,159,42,8,33,46,200,249,80,158,42,39,202,27,250,22,61, +199,198,200,27,20,15,159,44,8,34,46,250,22,209,20,15,159,47,8,35,46, +250,22,209,20,15,159,50,8,36,46,250,22,60,248,22,78,203,250,22,209,20, +15,159,56,8,37,46,248,22,60,248,22,80,23,15,20,15,159,56,8,38,46, +248,22,52,203,20,15,159,50,8,39,46,195,250,80,159,42,8,62,34,199,202, +200,250,80,159,39,8,62,34,196,199,197,250,22,7,248,196,20,15,159,38,8, +40,46,248,196,20,15,159,38,8,41,46,248,196,20,15,159,38,8,42,46,38, +20,98,159,39,16,13,30,12,65,35,37,115,116,120,13,69,115,116,120,45,112, +97,105,114,63,14,11,30,15,2,13,67,99,111,110,115,47,35,102,16,1,30, +17,2,13,67,115,116,120,45,99,97,114,18,5,30,19,2,13,67,115,116,120, +45,99,100,114,20,6,30,21,2,13,69,115,116,120,45,108,105,115,116,63,22, +8,30,23,2,13,69,115,116,120,45,62,108,105,115,116,24,4,30,25,68,35, +37,115,116,120,108,111,99,26,68,114,101,108,111,99,97,116,101,27,1,30,28, +2,13,74,115,112,108,105,116,45,115,116,120,45,108,105,115,116,29,3,30,30, +2,13,69,97,112,112,101,110,100,47,35,102,31,0,30,32,2,13,71,105,100, +101,110,116,105,102,105,101,114,63,33,2,30,34,76,35,37,115,116,120,99,97, +115,101,45,115,99,104,101,109,101,35,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,36,0,30,37, +2,13,69,115,116,120,45,110,117,108,108,63,38,10,30,39,2,13,71,115,116, +120,45,110,117,108,108,47,35,102,40,9,16,43,18,99,64,104,101,114,101,41, +40,97,38,10,33,11,16,8,2,3,2,2,2,4,2,2,2,5,2,2,2, +6,2,2,98,37,10,34,11,95,159,67,35,37,113,113,115,116,120,42,9,11, +159,2,13,9,11,159,2,35,9,11,16,0,96,36,8,254,1,11,16,0,16, +4,35,11,77,100,101,102,105,110,101,45,118,97,108,117,101,115,45,115,116,120, +43,3,1,7,101,110,118,51,49,48,51,44,16,4,34,11,63,115,116,120,45, +3,1,7,101,110,118,51,49,48,52,46,18,102,2,41,44,38,37,36,35,34, +16,8,43,11,3,1,4,103,51,53,53,47,3,1,4,103,51,53,54,48,3, +1,4,103,51,53,55,49,3,1,7,101,110,118,51,49,49,57,50,2,50,2, +50,16,8,42,11,61,95,51,65,112,114,111,116,111,52,64,98,111,100,121,53, +3,1,7,101,110,118,51,49,50,48,54,2,54,2,54,16,6,41,11,2,9, +2,8,3,1,7,101,110,118,51,49,50,53,55,2,55,18,16,2,95,66,115, +114,99,116,97,103,56,45,93,8,252,166,8,95,9,8,252,166,8,69,35,37, +115,116,120,99,97,115,101,57,18,104,64,100,101,115,116,58,48,38,37,36,35, +34,43,42,41,16,6,47,11,3,1,4,103,51,55,48,59,3,1,4,103,51, +55,49,60,3,1,7,101,110,118,51,49,51,50,61,2,61,16,6,46,11,62, +105,100,62,63,97,114,103,63,3,1,7,101,110,118,51,49,51,51,64,2,64, +18,158,2,41,48,18,16,2,95,2,56,49,93,8,252,172,8,95,9,8,252, +172,8,2,57,18,158,2,58,48,18,158,63,99,116,120,65,48,18,158,66,108, +97,109,98,100,97,66,48,18,158,2,65,48,18,16,2,95,2,56,50,93,8, +252,173,8,95,9,8,252,173,8,2,57,18,104,2,58,53,38,37,36,35,34, +43,42,41,16,8,52,11,3,1,4,103,51,54,55,67,3,1,4,103,51,54, +56,68,3,1,4,103,51,54,57,69,3,1,7,101,110,118,51,49,53,56,70, +2,70,2,70,16,8,51,11,2,62,2,63,64,114,101,115,116,71,3,1,7, +101,110,118,51,49,53,57,72,2,72,2,72,18,158,2,41,53,18,16,2,95, +2,56,54,93,8,252,179,8,95,9,8,252,179,8,2,57,18,158,2,58,53, +18,158,2,65,53,18,158,2,66,53,18,158,2,65,53,18,158,2,41,44,18, +16,2,95,2,56,55,93,8,252,191,8,95,9,8,252,191,8,2,57,18,104, +2,58,59,38,37,36,35,34,43,42,16,6,58,11,2,9,2,8,2,55,2, +55,16,8,57,11,3,1,4,103,51,56,48,73,3,1,4,103,51,56,49,74, +3,1,4,103,51,56,50,75,3,1,7,101,110,118,51,49,57,48,76,2,76, +2,76,16,8,56,11,69,115,111,109,101,116,104,105,110,103,77,64,109,111,114, +101,78,2,71,3,1,7,101,110,118,51,49,57,49,79,2,79,2,79,18,158, +2,65,59,18,158,2,65,59,18,102,2,41,8,28,38,37,36,35,34,43,42, +16,6,8,27,11,2,62,66,109,107,45,114,104,115,80,3,1,7,101,110,118, +51,49,50,52,81,2,81,18,158,2,41,8,28,18,158,2,41,8,28,18,16, +2,95,2,56,8,29,93,8,252,210,8,95,9,8,252,210,8,2,57,18,158, +2,58,8,28,18,158,2,65,8,28,18,158,2,65,8,28,18,158,2,65,8, +28,18,158,2,65,8,28,18,101,2,41,8,32,38,37,36,35,34,16,8,8, +31,11,3,1,4,103,51,54,49,82,3,1,4,103,51,54,50,83,3,1,4, +103,51,54,51,84,3,1,7,101,110,118,51,50,54,53,85,2,85,2,85,16, +8,8,30,11,2,51,2,62,2,71,3,1,7,101,110,118,51,50,54,54,86, +2,86,2,86,18,101,2,41,8,35,38,37,36,35,34,16,8,8,34,11,3, +1,4,103,51,54,52,87,3,1,4,103,51,54,53,88,3,1,4,103,51,54, +54,89,3,1,7,101,110,118,51,51,48,50,90,2,90,2,90,16,8,8,33, +11,2,51,2,62,64,101,120,112,114,91,3,1,7,101,110,118,51,51,48,51, +92,2,92,2,92,18,16,2,95,2,56,8,36,93,8,252,234,8,95,9,8, +252,234,8,2,57,18,158,2,58,8,35,18,158,2,65,8,35,18,158,2,65, +8,35,18,158,2,65,8,35,18,158,2,65,8,35,18,98,73,100,101,102,105, +110,101,45,118,97,108,117,101,115,93,8,38,38,37,36,16,4,8,37,11,2, +10,3,1,7,101,110,118,51,49,48,50,94,18,158,75,100,101,102,105,110,101, +45,115,121,110,116,97,120,101,115,95,8,38,18,158,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,96,8, +38,11,16,5,93,2,5,87,95,83,159,33,93,80,159,33,8,59,34,89,162, +33,35,52,2,7,223,0,27,28,248,80,158,35,33,195,249,80,158,36,38,248, +80,158,37,35,197,27,248,80,158,38,37,198,28,248,80,158,38,39,193,248,80, +158,38,40,193,11,11,28,192,27,248,22,52,194,27,248,22,53,195,249,80,158, +38,41,199,27,20,15,159,39,35,43,250,22,209,20,15,159,42,36,43,250,22, +209,20,15,159,45,37,43,249,22,56,20,15,159,47,38,43,249,22,2,80,159, +49,8,58,34,205,20,15,159,45,42,43,195,250,22,252,39,2,11,6,10,10, +98,97,100,32,115,121,110,116,97,120,197,83,159,33,93,80,159,33,8,58,34, +89,162,34,34,41,9,223,0,250,22,209,20,15,159,36,39,43,249,22,60,20, +15,159,38,40,43,248,22,52,199,20,15,159,36,41,43,89,162,33,34,8,31, +9,223,0,27,247,22,252,84,3,87,94,28,249,22,71,194,21,95,66,109,111, +100,117,108,101,97,72,109,111,100,117,108,101,45,98,101,103,105,110,98,69,116, +111,112,45,108,101,118,101,108,99,12,250,22,252,39,2,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,209,20,15,159,37,33,43,197,27,28, +248,80,158,37,33,194,249,80,158,38,34,248,80,158,39,35,196,248,80,158,39, +36,248,80,158,40,37,197,11,28,192,20,15,159,36,34,43,27,28,248,80,158, +38,33,195,249,80,158,39,38,248,80,158,40,35,197,27,248,80,158,41,37,198, +28,248,80,158,41,33,193,249,80,158,42,34,248,80,158,43,35,195,248,80,158, +43,36,248,80,158,44,37,196,11,11,28,192,27,248,22,52,194,27,248,22,53, +195,28,249,22,252,11,2,199,2,98,249,80,159,41,8,59,34,198,201,27,250, +22,252,25,2,196,201,248,22,216,20,15,159,44,43,43,27,249,22,209,20,15, +159,43,44,43,195,27,28,248,80,158,43,33,194,28,27,248,80,158,44,35,195, +28,248,80,158,44,42,193,28,249,22,224,194,20,15,159,45,45,43,9,11,11, +27,248,80,158,44,37,195,28,248,80,158,44,39,193,248,80,158,44,40,193,11, +11,11,28,192,27,20,15,159,43,46,43,250,22,209,20,15,159,46,47,43,250, +22,209,20,15,159,49,48,43,249,22,56,20,15,159,51,49,43,201,20,15,159, +49,50,43,195,27,28,248,80,158,44,33,195,28,27,248,80,158,45,35,196,28, +248,80,158,45,42,193,28,249,22,224,194,20,15,159,46,51,43,9,11,11,27, +248,80,158,45,37,196,28,248,80,158,45,33,193,249,80,158,46,34,27,248,80, +158,48,35,196,28,248,80,158,48,39,193,248,22,59,248,80,158,49,40,194,11, +27,248,80,158,48,37,196,28,248,80,158,48,33,193,249,80,158,49,34,248,80, +158,50,35,195,248,80,158,50,36,248,80,158,51,37,196,11,11,11,11,28,192, +27,248,22,52,194,27,248,22,53,195,27,249,22,61,195,196,27,20,15,159,47, +52,43,250,22,209,20,15,159,50,53,43,250,22,209,20,15,159,53,54,43,250, +22,60,20,15,159,56,55,43,248,22,53,203,248,22,52,203,20,15,159,53,56, +43,195,27,28,248,80,158,45,33,196,28,27,248,80,158,46,35,197,28,248,80, +158,46,42,193,28,249,22,224,194,20,15,159,47,57,43,9,11,11,27,248,80, +158,46,37,197,28,248,80,158,46,39,193,248,80,158,46,40,193,11,11,11,28, +192,27,20,15,159,45,58,43,250,22,209,20,15,159,48,59,43,250,22,209,20, +15,159,51,8,27,43,249,22,56,20,15,159,53,8,28,43,201,20,15,159,51, +8,29,43,195,27,28,248,80,158,46,33,197,28,27,248,80,158,47,35,198,28, +248,80,158,47,42,193,28,249,22,224,194,20,15,159,48,8,30,43,9,11,11, +27,248,80,158,47,37,198,28,248,80,158,47,39,193,248,80,158,47,40,193,11, +11,11,28,192,27,20,15,159,46,8,31,43,250,22,209,20,15,159,49,8,32, +43,250,22,209,20,15,159,52,8,33,43,249,22,56,20,15,159,54,8,34,43, +201,20,15,159,52,8,35,43,195,27,28,248,80,158,47,33,198,28,27,248,80, +158,48,35,199,28,248,80,158,48,42,193,28,249,22,224,194,20,15,159,49,8, +36,43,9,11,11,27,248,80,158,48,37,199,28,248,80,158,48,33,193,249,80, +158,49,34,27,248,80,158,51,35,196,28,248,80,158,51,39,193,248,22,59,248, +80,158,52,40,194,11,27,248,80,158,51,37,196,28,248,80,158,51,33,193,249, +80,158,52,34,248,80,158,53,35,195,248,80,158,53,36,248,80,158,54,37,196, +11,11,11,11,28,192,27,248,22,52,194,27,248,22,53,195,250,22,252,39,2, +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,27,20,15,159, +47,8,37,43,250,22,209,20,15,159,50,8,38,43,250,22,209,20,15,159,53, +8,39,43,250,22,60,20,15,159,56,8,40,43,20,15,159,56,8,41,43,250, +22,209,20,15,159,59,8,42,43,250,22,62,20,15,159,8,29,8,43,43,23, +21,20,15,159,8,29,8,44,43,20,15,159,59,8,45,43,20,15,159,53,8, +46,43,195,249,80,159,39,8,59,34,196,199,33,20,98,159,35,16,10,2,12, +2,30,2,17,2,39,2,19,2,15,2,21,2,23,2,25,2,32,16,47,18, +99,2,41,8,41,38,37,36,16,4,8,40,11,2,45,3,1,7,101,110,118, +51,51,50,48,100,16,4,8,39,11,2,65,3,1,7,101,110,118,51,51,50, +49,101,18,158,93,16,2,101,2,0,8,44,38,37,36,8,40,8,39,16,4, +8,43,11,3,1,4,103,52,48,57,102,3,1,7,101,110,118,51,51,50,54, +103,16,4,8,42,11,2,51,3,1,7,101,110,118,51,51,50,55,104,9,8, +44,18,16,2,95,2,56,8,45,93,8,252,248,8,95,9,8,252,248,8,2, +57,18,101,2,58,8,48,38,37,36,8,40,8,39,16,6,8,47,11,3,1, +4,103,52,48,53,105,3,1,4,103,52,48,54,106,3,1,7,101,110,118,51, +51,51,53,107,2,107,16,6,8,46,11,2,51,64,101,108,101,109,108,3,1, +7,101,110,118,51,51,51,54,109,2,109,18,158,2,65,8,48,18,158,2,0, +8,48,18,158,2,65,8,48,18,158,2,5,8,48,18,158,2,65,8,48,18, +158,2,65,8,48,18,158,110,16,2,101,2,0,8,51,38,37,36,8,40,8, +39,16,6,8,50,11,3,1,4,103,52,48,55,110,3,1,4,103,52,48,56, +111,3,1,7,101,110,118,51,51,52,54,112,2,112,16,6,8,49,11,2,51, +2,108,3,1,7,101,110,118,51,51,52,55,113,2,113,9,16,2,158,2,93, +8,51,9,16,2,158,2,95,8,51,9,16,2,158,2,96,8,51,9,16,2, +158,64,115,101,116,33,114,8,51,9,16,2,158,70,108,101,116,45,118,97,108, +117,101,115,115,8,51,9,16,2,158,71,108,101,116,42,45,118,97,108,117,101, +115,116,8,51,9,16,2,158,73,108,101,116,114,101,99,45,118,97,108,117,101, +115,117,8,51,9,16,2,158,2,66,8,51,9,16,2,158,71,99,97,115,101, +45,108,97,109,98,100,97,118,8,51,9,16,2,158,62,105,102,119,8,51,9, +16,2,158,65,113,117,111,116,101,120,8,51,9,16,2,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,121,8, +51,9,16,2,158,76,102,108,117,105,100,45,108,101,116,45,115,121,110,116,97, +120,122,8,51,9,16,2,158,1,22,119,105,116,104,45,99,111,110,116,105,110, +117,97,116,105,111,110,45,109,97,114,107,123,8,51,9,16,2,158,65,35,37, +97,112,112,124,8,51,9,16,2,158,65,35,37,116,111,112,125,8,51,9,16, +2,158,67,35,37,100,97,116,117,109,126,8,51,9,8,51,18,102,2,41,8, +53,38,37,36,8,40,8,39,8,50,8,49,16,4,8,52,11,61,101,127,3, +1,7,101,110,118,51,51,53,48,128,18,158,2,0,8,53,18,16,2,95,2, +56,8,54,93,8,252,7,9,95,9,8,252,7,9,2,57,18,104,2,58,8, +57,38,37,36,8,40,8,39,8,50,8,49,8,52,16,4,8,56,11,3,1, +4,103,52,49,55,129,3,1,7,101,110,118,51,51,53,54,130,16,4,8,55, +11,61,118,131,3,1,7,101,110,118,51,51,53,55,132,18,158,2,65,8,57, +18,158,2,5,8,57,18,158,2,65,8,57,18,158,2,93,8,53,18,16,2, +95,2,56,8,58,93,8,252,8,9,95,9,8,252,8,9,2,57,18,104,2, +58,8,61,38,37,36,8,40,8,39,8,50,8,49,8,52,16,6,8,60,11, +3,1,4,103,52,49,53,133,3,1,4,103,52,49,54,134,3,1,7,101,110, +118,51,51,54,55,135,2,135,16,6,8,59,11,2,62,2,91,3,1,7,101, +110,118,51,51,54,56,136,2,136,18,158,2,65,8,61,18,158,2,96,8,61, +18,158,2,65,8,61,18,158,67,114,101,113,117,105,114,101,137,8,53,18,16, +2,95,2,56,8,62,93,8,252,9,9,95,9,8,252,9,9,2,57,18,104, +2,58,8,65,38,37,36,8,40,8,39,8,50,8,49,8,52,16,4,8,64, +11,3,1,4,103,52,49,52,138,3,1,7,101,110,118,51,51,55,55,139,16, +4,8,63,11,2,131,3,1,7,101,110,118,51,51,55,56,140,18,158,2,65, +8,65,18,158,78,114,101,113,117,105,114,101,45,102,111,114,45,115,121,110,116, +97,120,141,8,65,18,158,2,65,8,65,18,158,1,20,114,101,113,117,105,114, +101,45,102,111,114,45,116,101,109,112,108,97,116,101,142,8,53,18,16,2,95, +2,56,8,66,93,8,252,10,9,95,9,8,252,10,9,2,57,18,104,2,58, +8,69,38,37,36,8,40,8,39,8,50,8,49,8,52,16,4,8,68,11,3, +1,4,103,52,49,51,143,3,1,7,101,110,118,51,51,56,54,144,16,4,8, +67,11,2,131,3,1,7,101,110,118,51,51,56,55,145,18,158,2,65,8,69, +18,158,2,137,8,69,18,158,2,65,8,69,18,158,2,95,8,53,18,16,2, +95,2,56,8,70,93,8,252,12,9,95,9,8,252,12,9,2,57,18,104,2, +58,8,73,38,37,36,8,40,8,39,8,50,8,49,8,52,16,4,8,72,11, +3,1,4,103,52,49,48,146,3,1,7,101,110,118,51,52,48,50,147,16,4, +8,71,11,65,111,116,104,101,114,148,3,1,7,101,110,118,51,52,48,51,149, +18,158,2,65,8,73,18,158,2,96,8,73,18,158,9,8,73,18,158,2,65, +8,73,18,158,2,0,8,73,18,16,2,103,93,16,2,158,93,16,2,158,66, +118,97,108,117,101,115,150,8,73,9,8,73,9,8,81,98,8,80,10,33,11, +94,159,74,35,37,115,109,97,108,108,45,115,99,104,101,109,101,151,9,11,159, +2,13,9,11,16,6,73,115,121,110,116,97,120,45,99,97,115,101,42,42,152, +29,153,11,11,66,115,121,110,116,97,120,154,2,153,1,20,101,108,108,105,112, +115,105,115,45,99,111,117,110,116,45,101,114,114,111,114,155,2,153,98,8,79, +10,34,11,95,159,64,35,37,115,99,156,9,11,159,2,151,9,11,159,2,13, +9,11,16,0,96,8,78,8,254,1,11,16,0,16,4,8,77,11,61,120,157, +3,1,6,101,110,118,51,56,50,158,16,4,8,76,11,68,104,101,114,101,45, +115,116,120,159,3,1,6,101,110,118,51,56,52,160,16,4,8,75,11,2,159, +2,160,13,16,4,34,2,153,2,57,11,93,8,252,12,9,16,6,8,74,11, +61,114,161,63,115,114,99,162,3,1,7,101,110,118,51,52,48,54,163,2,163, +95,9,8,252,12,9,2,57,18,158,2,65,8,73,18,158,2,65,8,73,11, +9,93,68,35,37,107,101,114,110,101,108,164,96,2,164,2,35,2,13,2,42, +0}; + EVAL_ONE_SIZED_STR((char *)expr, 6888); + } + { + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,53,50,46,49,252,171,1,252,155,87,159,33,20,98,159,33,16, +1,20,24,65,98,101,103,105,110,0,16,0,83,158,40,20,95,114,73,35,37, +109,111,114,101,45,115,99,104,101,109,101,1,29,2,11,11,10,10,10,47,80, +158,33,33,20,98,159,33,16,24,30,3,2,2,74,115,116,114,117,99,116,58, +112,114,111,109,105,115,101,4,254,1,30,5,2,2,72,109,97,107,101,45,112, +114,111,109,105,115,101,6,254,1,30,7,2,2,68,112,114,111,109,105,115,101, +63,8,254,1,30,9,2,2,69,112,114,111,109,105,115,101,45,112,10,254,1, +30,11,2,2,74,115,101,116,45,112,114,111,109,105,115,101,45,112,33,12,254, +1,30,13,2,2,65,102,111,114,99,101,14,254,1,30,15,2,2,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,16,254,1,30,17,68,35,37,112,97,114,97,109,122,18,1,23,101,120, +116,101,110,100,45,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111,110, +19,254,1,30,20,2,18,1,20,112,97,114,97,109,101,116,101,114,105,122,97, +116,105,111,110,45,107,101,121,21,254,1,30,22,2,2,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,23,254,1,30,24,2,2,79,115,116,114,117,99,116,58,98,114,101,97,107, +45,112,97,114,97,109,122,25,254,1,30,26,2,2,77,109,97,107,101,45,98, +114,101,97,107,45,112,97,114,97,109,122,27,254,1,30,28,2,2,73,98,114, +101,97,107,45,112,97,114,97,109,122,63,29,254,1,30,30,2,2,76,98,114, +101,97,107,45,112,97,114,97,109,122,45,114,101,102,31,254,1,30,32,2,2, +77,98,114,101,97,107,45,112,97,114,97,109,122,45,115,101,116,33,33,254,1, +30,34,2,2,1,29,115,116,114,117,99,116,58,98,114,101,97,107,45,112,97, +114,97,109,101,116,101,114,105,122,97,116,105,111,110,35,254,1,30,36,2,2, +1,27,109,97,107,101,45,98,114,101,97,107,45,112,97,114,97,109,101,116,101, +114,105,122,97,116,105,111,110,37,254,1,30,38,2,2,1,23,98,114,101,97, +107,45,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111,110,63,39,254, +1,30,40,2,2,1,27,98,114,101,97,107,45,112,97,114,97,109,101,116,101, +114,105,122,97,116,105,111,110,45,99,101,108,108,41,254,1,30,42,2,2,1, +32,115,101,116,45,98,114,101,97,107,45,112,97,114,97,109,101,116,101,114,105, +122,97,116,105,111,110,45,99,101,108,108,33,43,254,1,30,44,2,2,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,45,254,1,30,46,2,18,77,98,114,101,97, +107,45,101,110,97,98,108,101,100,45,107,101,121,47,254,1,30,48,2,2,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,49,254,1,30,50,2,18,75,99, +104,101,99,107,45,102,111,114,45,98,114,101,97,107,51,254,1,16,0,11,11, +16,14,2,41,2,39,2,31,2,33,2,29,2,37,2,27,2,6,2,10,2, +43,2,12,2,35,2,25,2,4,47,11,16,18,2,49,2,23,2,45,2,16, +2,14,2,8,70,108,101,116,45,115,116,114,117,99,116,52,78,112,97,114,97, +109,101,116,101,114,105,122,101,45,98,114,101,97,107,53,72,112,97,114,97,109, +101,116,101,114,105,122,101,54,74,119,105,116,104,45,104,97,110,100,108,101,114, +115,42,55,71,115,101,116,33,45,118,97,108,117,101,115,56,73,119,105,116,104, +45,104,97,110,100,108,101,114,115,57,64,116,105,109,101,58,66,108,101,116,47, +99,99,59,62,100,111,60,65,100,101,108,97,121,61,69,102,108,117,105,100,45, +108,101,116,62,64,99,97,115,101,63,16,18,11,11,11,11,11,11,11,11,11, +11,11,11,11,11,11,11,11,11,16,18,2,49,2,23,2,45,2,16,2,14, +2,8,2,52,2,53,2,54,2,55,2,56,2,57,2,58,2,59,2,60,2, +61,2,62,2,63,39,51,106,16,5,93,69,99,97,115,101,45,116,101,115,116, +64,89,162,33,34,58,9,223,0,27,249,22,209,20,15,159,36,33,41,196,27, +28,248,80,158,36,33,194,249,80,158,37,34,248,80,158,38,35,196,27,248,80, +158,39,36,197,28,248,80,158,39,33,193,249,80,158,40,34,248,80,158,41,35, +195,27,248,80,158,42,36,196,28,248,80,158,42,33,193,249,80,158,43,37,27, +248,80,158,45,35,196,28,248,80,158,45,33,193,249,80,158,46,37,248,80,158, +47,35,195,248,80,158,47,38,248,80,158,48,36,196,11,248,80,158,44,38,248, +80,158,45,36,196,11,11,11,28,192,27,248,22,52,194,27,248,22,78,195,27, +248,22,80,196,28,248,22,41,248,22,210,194,27,249,22,61,195,196,27,20,15, +159,40,34,41,250,22,209,20,15,159,43,35,41,250,22,209,20,15,159,46,36, +41,250,22,60,20,15,159,49,37,41,248,22,53,203,250,22,209,20,15,159,52, +38,41,249,22,60,20,15,159,54,39,41,248,22,52,23,16,20,15,159,52,40, +41,20,15,159,46,41,41,195,27,249,22,61,195,196,27,20,15,159,40,42,41, +250,22,209,20,15,159,43,43,41,250,22,209,20,15,159,46,44,41,250,22,60, +20,15,159,49,45,41,248,22,53,203,250,22,209,20,15,159,52,46,41,249,22, +60,20,15,159,54,47,41,248,22,52,23,16,20,15,159,52,48,41,20,15,159, +46,49,41,195,27,28,248,80,158,37,33,195,249,80,158,38,34,248,80,158,39, +35,197,27,248,80,158,40,36,198,28,248,80,158,40,33,193,249,80,158,41,34, +248,80,158,42,35,195,27,248,80,158,43,36,196,28,248,80,158,43,33,193,249, +80,158,44,37,27,248,80,158,46,35,196,28,248,80,158,46,39,193,248,80,158, +46,40,193,11,248,80,158,45,38,248,80,158,46,36,196,11,11,11,28,192,27, +248,22,52,194,27,248,22,78,195,27,248,22,80,196,27,249,22,61,195,196,27, +20,15,159,41,50,41,250,22,209,20,15,159,44,51,41,250,22,209,20,15,159, +47,52,41,250,22,60,20,15,159,50,53,41,248,22,53,203,250,22,209,20,15, +159,53,54,41,249,22,60,20,15,159,55,55,41,248,22,52,23,16,20,15,159, +53,56,41,20,15,159,47,57,41,195,250,22,252,39,2,11,6,10,10,98,97, +100,32,115,121,110,116,97,120,197,33,20,98,159,33,16,8,30,65,65,35,37, +115,116,120,66,69,115,116,120,45,112,97,105,114,63,67,11,30,68,2,66,67, +99,111,110,115,47,35,102,69,1,30,70,2,66,67,115,116,120,45,99,97,114, +71,5,30,72,2,66,67,115,116,120,45,99,100,114,73,6,30,74,2,66,69, +97,112,112,101,110,100,47,35,102,75,0,30,76,2,66,71,115,116,120,45,110, +117,108,108,47,35,102,77,9,30,78,2,66,69,115,116,120,45,108,105,115,116, +63,79,8,30,80,2,66,69,115,116,120,45,62,108,105,115,116,81,4,16,25, +18,98,64,104,101,114,101,82,39,98,37,10,33,11,95,159,2,18,9,11,159, +68,35,37,100,101,102,105,110,101,83,9,11,159,74,35,37,115,109,97,108,108, +45,115,99,104,101,109,101,84,9,11,16,70,2,16,2,2,2,29,2,2,2, +53,2,2,2,54,2,2,2,41,2,2,2,56,2,2,2,57,2,2,2,23, +2,2,2,39,2,2,2,59,2,2,2,14,2,2,2,12,2,2,2,45,2, +2,2,61,2,2,2,62,2,2,2,64,2,2,2,55,2,2,2,63,2,2, +2,52,2,2,2,4,2,2,2,49,2,2,2,27,2,2,2,6,2,2,1, +22,98,114,101,97,107,45,112,97,114,97,109,101,116,101,114,105,122,97,116,105, +111,110,85,2,2,2,58,2,2,2,25,2,2,2,31,2,2,2,35,2,2, +2,8,2,2,2,33,2,2,2,43,2,2,2,60,2,2,2,10,2,2,67, +112,114,111,109,105,115,101,86,2,2,2,37,2,2,98,36,10,34,11,95,159, +67,35,37,113,113,115,116,120,87,9,11,159,76,35,37,115,116,120,99,97,115, +101,45,115,99,104,101,109,101,88,9,11,159,2,66,9,11,16,0,96,35,8, +254,1,11,16,0,16,4,34,11,61,120,89,3,1,7,101,110,118,51,52,48, +56,90,18,16,2,95,66,115,114,99,116,97,103,91,40,93,8,252,41,9,95, +9,8,252,41,9,69,35,37,115,116,120,99,97,115,101,92,18,100,64,100,101, +115,116,93,43,37,36,35,34,16,8,42,11,3,1,4,103,52,50,49,94,3, +1,4,103,52,50,50,95,3,1,4,103,52,50,51,96,3,1,7,101,110,118, +51,52,49,53,97,2,97,2,97,16,6,41,11,61,95,98,61,107,99,3,1, +7,101,110,118,51,52,49,54,100,2,100,18,158,63,99,116,120,101,43,18,158, +63,101,113,63,102,43,18,158,2,101,43,18,158,65,113,117,111,116,101,103,43, +18,158,2,101,43,18,158,2,101,43,18,16,2,95,2,91,44,93,8,252,42, +9,95,9,8,252,42,9,2,92,18,158,2,93,43,18,158,2,101,43,18,158, +64,101,113,118,63,104,43,18,158,2,101,43,18,158,2,103,43,18,158,2,101, +43,18,158,2,101,43,18,16,2,95,2,91,45,93,8,252,43,9,95,9,8, +252,43,9,2,92,18,100,2,93,48,37,36,35,34,16,8,47,11,3,1,4, +103,52,49,56,105,3,1,4,103,52,49,57,106,3,1,4,103,52,50,48,107, +3,1,7,101,110,118,51,52,50,55,108,2,108,2,108,16,6,46,11,2,98, +2,99,3,1,7,101,110,118,51,52,50,56,109,2,109,18,158,2,101,48,18, +158,64,109,101,109,118,110,48,18,158,2,101,48,18,158,2,103,48,18,158,2, +101,48,18,158,2,101,48,11,16,5,93,2,63,89,162,33,34,8,27,9,223, +0,27,249,22,209,20,15,159,36,33,44,196,27,28,248,80,158,36,33,194,249, +80,158,37,34,248,80,158,38,35,196,27,248,80,158,39,36,197,28,248,80,158, +39,33,193,249,80,158,40,37,248,80,158,41,35,195,248,80,158,41,38,248,80, +158,42,36,196,11,11,28,192,27,248,22,52,194,27,248,22,53,195,27,20,15, +159,38,34,44,250,22,209,20,15,159,41,35,44,250,22,209,20,15,159,44,36, +44,250,22,62,20,15,159,47,37,44,202,20,15,159,47,38,44,20,15,159,44, +39,44,195,27,28,248,80,158,37,33,195,249,80,158,38,34,248,80,158,39,35, +197,27,248,80,158,40,36,198,28,248,80,158,40,33,193,249,80,158,41,34,248, +80,158,42,35,195,27,248,80,158,43,36,196,28,248,80,158,43,33,193,249,80, +158,44,37,27,248,80,158,46,35,196,28,248,80,158,46,33,193,28,27,248,80, +158,47,35,194,28,248,80,158,47,39,193,28,249,22,223,194,20,15,159,48,40, +44,9,11,11,27,248,80,158,47,36,194,28,248,80,158,47,33,193,249,80,158, +48,34,248,80,158,49,35,195,27,248,80,158,50,36,196,28,248,80,158,50,40, +193,248,80,158,50,41,193,11,11,11,11,248,80,158,45,38,248,80,158,46,36, +196,11,11,11,28,192,27,248,22,52,194,27,248,22,78,195,27,248,22,87,196, +27,248,22,88,197,249,80,158,42,42,202,27,250,22,61,200,198,199,27,20,15, +159,44,41,44,250,22,209,20,15,159,47,42,44,250,22,209,20,15,159,50,43, +44,251,22,62,20,15,159,54,44,44,248,22,52,204,248,22,80,204,248,22,78, +204,20,15,159,50,45,44,195,27,28,248,80,158,38,33,196,249,80,158,39,34, +248,80,158,40,35,198,27,248,80,158,41,36,199,28,248,80,158,41,33,193,249, +80,158,42,34,248,80,158,43,35,195,27,248,80,158,44,36,196,28,248,80,158, +44,33,193,249,80,158,45,37,27,248,80,158,47,35,196,28,248,80,158,47,33, +193,249,80,158,48,37,27,248,80,158,50,35,196,28,248,80,158,50,40,193,248, +22,59,248,80,158,51,41,194,11,27,248,80,158,50,36,196,28,248,80,158,50, +33,193,249,80,158,51,34,248,80,158,52,35,195,27,248,80,158,53,36,196,28, +248,80,158,53,40,193,248,80,158,53,41,193,11,11,11,248,80,158,46,38,248, +80,158,47,36,196,11,11,11,28,192,27,248,22,52,194,27,248,22,78,195,27, +248,22,87,196,27,248,22,90,197,27,248,22,89,198,249,80,158,44,42,204,27, +251,22,61,202,199,201,200,27,20,15,159,46,46,44,91,159,34,11,90,161,34, +33,11,83,160,39,33,34,11,247,248,22,8,89,162,33,34,41,9,226,15,2, +3,1,250,22,31,89,162,33,33,37,9,225,6,3,7,90,161,34,34,10,247, +22,252,185,2,248,22,252,185,2,89,162,33,34,37,9,224,3,1,248,193,89, +162,33,33,37,9,224,2,3,28,248,22,252,182,2,193,248,22,252,187,2,193, +249,80,158,36,43,21,95,62,105,102,111,95,2,64,61,118,112,94,2,99,63, +46,46,46,113,96,2,0,62,101,49,114,62,101,50,115,2,113,20,15,159,36, +47,44,89,162,33,33,53,9,225,6,5,4,27,250,22,209,20,15,159,39,48, +44,250,22,209,20,15,159,42,49,44,250,22,60,20,15,159,45,50,44,250,22, +209,20,15,159,48,51,44,250,22,60,20,15,159,51,52,44,248,22,52,23,17, +248,22,87,23,17,20,15,159,48,53,44,250,22,209,20,15,159,48,54,44,250, +22,62,20,15,159,51,55,44,248,22,88,23,17,248,22,78,23,17,20,15,159, +48,56,44,20,15,159,42,57,44,197,89,162,33,33,34,9,223,0,192,89,162, +33,33,35,9,223,3,248,22,252,185,2,208,27,28,248,80,158,39,33,197,249, +80,158,40,34,248,80,158,41,35,199,27,248,80,158,42,36,200,28,248,80,158, +42,33,193,249,80,158,43,34,248,80,158,44,35,195,27,248,80,158,45,36,196, +28,248,80,158,45,33,193,249,80,158,46,37,27,248,80,158,48,35,196,28,248, +80,158,48,33,193,249,80,158,49,37,27,248,80,158,51,35,196,28,248,80,158, +51,40,193,248,22,59,248,80,158,52,41,194,11,27,248,80,158,51,36,196,28, +248,80,158,51,33,193,249,80,158,52,34,248,80,158,53,35,195,27,248,80,158, +54,36,196,28,248,80,158,54,40,193,248,22,59,248,80,158,55,41,194,11,11, +11,27,248,80,158,48,36,196,28,248,80,158,48,33,193,249,80,158,49,34,248, +80,158,50,35,195,27,248,80,158,51,36,196,28,248,80,158,51,40,193,248,80, +158,51,41,193,11,11,11,11,11,28,192,27,248,22,52,194,27,248,22,78,195, +27,248,22,87,196,27,248,22,90,197,27,249,22,70,199,37,27,249,22,70,200, +38,27,249,22,69,201,39,249,80,158,47,42,23,15,27,253,22,61,202,206,203, +201,205,204,27,20,15,159,49,58,44,91,159,34,11,90,161,34,33,11,83,160, +39,33,34,11,247,248,22,8,89,162,33,34,41,9,226,18,2,3,1,250,22, +31,89,162,33,33,37,9,225,6,3,7,90,161,34,34,10,247,22,252,185,2, +248,22,252,185,2,89,162,33,34,37,9,224,3,1,248,193,89,162,33,33,37, +9,224,2,3,28,248,22,252,182,2,193,248,22,252,187,2,193,249,80,158,36, +43,21,95,63,108,101,116,116,93,94,2,89,2,112,96,2,111,95,2,64,2, +89,94,2,99,2,113,96,2,0,2,114,2,115,2,113,97,2,63,2,89,62, +99,49,117,62,99,50,118,2,113,20,15,159,36,59,44,89,162,33,33,8,28, +9,225,6,5,4,27,250,22,209,20,15,159,39,8,27,44,250,22,209,20,15, +159,42,8,28,44,250,22,60,20,15,159,45,8,29,44,250,22,209,20,15,159, +48,8,30,44,248,22,60,250,22,209,20,15,159,52,8,31,44,249,22,60,20, +15,159,54,8,32,44,248,22,78,23,20,20,15,159,52,8,33,44,20,15,159, +48,8,34,44,250,22,209,20,15,159,48,8,35,44,251,22,60,20,15,159,52, +8,36,44,250,22,209,20,15,159,55,8,37,44,250,22,60,20,15,159,58,8, +38,44,20,15,159,58,8,39,44,249,22,70,23,25,37,20,15,159,55,8,40, +44,250,22,209,20,15,159,55,8,41,44,250,22,62,20,15,159,58,8,42,44, +249,22,69,23,25,38,248,22,87,23,24,20,15,159,55,8,43,44,250,22,209, +20,15,159,55,8,44,44,251,22,62,20,15,159,59,8,45,44,20,15,159,59, +8,46,44,248,22,52,23,25,248,22,90,23,25,20,15,159,55,8,47,44,20, +15,159,48,8,48,44,20,15,159,42,8,49,44,197,89,162,33,33,34,9,223, +0,192,89,162,33,33,35,9,223,3,248,22,252,185,2,208,27,28,248,80,158, +40,33,198,249,80,158,41,34,248,80,158,42,35,200,27,248,80,158,43,36,201, +28,248,80,158,43,33,193,27,28,248,22,206,194,193,201,249,80,158,45,34,248, +80,158,46,35,196,27,248,80,158,47,36,197,28,248,80,158,47,33,193,27,28, +248,22,206,194,193,196,249,80,158,49,37,27,248,80,158,51,35,197,28,248,80, +158,51,33,193,249,80,158,52,34,248,80,158,53,35,195,27,248,80,158,54,36, +196,28,248,80,158,54,33,193,249,80,158,55,34,248,80,158,56,35,195,27,248, +80,158,57,36,196,28,248,80,158,57,40,193,248,22,59,248,80,158,58,41,194, +11,11,11,27,248,80,158,51,36,197,250,22,209,198,195,198,11,11,11,28,192, +27,248,22,52,194,27,248,22,78,195,27,248,22,87,196,27,248,22,90,197,27, +249,22,70,199,37,27,249,22,69,200,38,251,22,252,39,2,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,41,33, +199,249,80,158,42,34,248,80,158,43,35,201,27,248,80,158,44,36,202,28,248, +80,158,44,33,193,27,28,248,22,206,194,193,202,249,80,158,46,34,248,80,158, +47,35,196,27,248,80,158,48,36,197,28,248,80,158,48,33,193,27,28,248,22, +206,194,193,196,249,80,158,50,34,248,80,158,51,35,196,27,248,80,158,52,36, +197,250,22,209,198,195,198,11,11,11,28,192,27,248,22,52,194,27,248,22,78, +195,27,248,22,87,196,27,248,22,88,197,251,22,252,39,2,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,42,33,200,249, +80,158,43,34,248,80,158,44,35,202,27,248,80,158,45,36,203,250,22,209,205, +195,205,11,28,192,27,248,22,52,194,27,248,22,53,195,28,248,22,57,248,22, +210,194,248,32,119,89,162,33,34,37,68,116,114,121,45,110,101,120,116,120,222, +250,22,252,39,2,11,6,10,10,98,97,100,32,115,121,110,116,97,120,195,202, +250,22,252,39,2,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,248, +2,119,200,33,20,98,159,33,16,11,2,65,2,68,2,70,2,72,2,74,2, +76,30,121,2,66,71,105,100,101,110,116,105,102,105,101,114,63,122,2,2,78, +2,80,30,123,68,35,37,115,116,120,108,111,99,124,68,114,101,108,111,99,97, +116,101,125,1,30,126,2,92,1,20,101,108,108,105,112,115,105,115,45,99,111, +117,110,116,45,101,114,114,111,114,127,0,16,50,18,98,2,82,50,37,36,35, +16,4,49,11,2,89,3,1,7,101,110,118,51,52,51,53,128,18,16,2,95, +2,91,51,93,8,252,86,9,95,9,8,252,86,9,2,92,18,100,2,93,54, +37,36,35,49,16,6,53,11,3,1,4,103,52,53,50,129,3,1,4,103,52, +53,51,130,3,1,7,101,110,118,51,52,52,48,131,2,131,16,6,52,11,2, +98,2,112,3,1,7,101,110,118,51,52,52,49,132,2,132,18,158,2,101,54, +18,158,2,0,54,18,16,2,103,93,16,2,158,93,16,2,158,64,99,111,110, +100,133,54,9,54,9,8,29,98,8,28,10,33,11,94,159,2,84,9,11,159, +2,66,9,11,16,6,73,115,121,110,116,97,120,45,99,97,115,101,42,42,134, +29,135,11,11,66,115,121,110,116,97,120,136,2,135,2,127,2,135,98,8,27, +10,34,11,95,159,64,35,37,115,99,137,9,11,159,2,84,9,11,159,2,66, +9,11,16,0,96,59,8,254,1,11,16,0,16,4,58,11,2,89,3,1,6, +101,110,118,51,56,50,138,16,4,57,11,68,104,101,114,101,45,115,116,120,139, +3,1,6,101,110,118,51,56,52,140,16,4,56,11,2,139,2,140,13,16,4, +34,2,135,2,92,11,93,8,252,86,9,16,6,55,11,61,114,141,63,115,114, +99,142,3,1,7,101,110,118,51,52,52,53,143,2,143,95,9,8,252,86,9, +2,92,18,158,2,101,54,18,158,64,101,108,115,101,144,50,18,16,2,95,2, +91,8,30,93,8,252,88,9,95,9,8,252,88,9,2,92,18,100,2,93,8, +33,37,36,35,49,16,10,8,32,11,3,1,4,103,52,52,56,145,3,1,4, +103,52,52,57,146,3,1,4,103,52,53,48,147,3,1,4,103,52,53,49,148, +3,1,7,101,110,118,51,52,53,52,149,2,149,2,149,2,149,16,10,8,31, +11,2,98,2,112,2,114,2,115,3,1,7,101,110,118,51,52,53,53,150,2, +150,2,150,2,150,18,158,2,101,8,33,18,158,2,0,8,33,18,158,2,101, +8,33,18,16,2,95,2,91,8,34,93,8,252,90,9,95,9,8,252,90,9, +2,92,18,16,2,99,2,113,8,39,93,8,252,90,9,16,6,8,38,11,2, +141,2,142,3,1,7,101,110,118,51,52,55,56,151,2,151,16,4,8,37,11, +64,101,120,110,104,152,3,1,7,101,110,118,51,52,55,57,153,16,4,8,36, +11,63,101,115,99,154,3,1,7,101,110,118,51,52,56,48,155,16,4,8,35, +11,63,101,120,110,156,3,1,7,101,110,118,51,52,56,50,157,95,9,8,252, +90,9,2,92,18,100,2,93,8,42,37,36,35,49,16,12,8,41,11,3,1, +4,103,52,52,51,158,3,1,4,103,52,52,52,159,3,1,4,103,52,52,53, +160,3,1,4,103,52,52,54,161,3,1,4,103,52,52,55,162,3,1,7,101, +110,118,51,52,55,48,163,2,163,2,163,2,163,2,163,16,12,8,40,11,2, +98,2,112,2,99,2,114,2,115,3,1,7,101,110,118,51,52,55,49,164,2, +164,2,164,2,164,2,164,18,158,2,101,8,42,18,158,2,111,8,42,18,158, +2,101,8,42,18,158,2,64,8,42,18,158,2,101,8,42,18,158,2,101,8, +42,18,158,2,0,8,42,18,158,2,101,8,42,18,158,2,101,8,42,18,16, +2,95,2,91,8,43,93,8,252,93,9,95,9,8,252,93,9,2,92,18,16, +2,99,2,113,8,48,93,8,252,93,9,16,6,8,47,11,2,141,2,142,3, +1,7,101,110,118,51,53,48,56,165,2,165,16,4,8,46,11,2,152,3,1, +7,101,110,118,51,53,48,57,166,16,4,8,45,11,2,154,3,1,7,101,110, +118,51,53,49,48,167,16,4,8,44,11,2,156,3,1,7,101,110,118,51,53, +49,50,168,95,9,8,252,93,9,2,92,18,100,2,93,8,51,37,36,35,49, +16,16,8,50,11,3,1,4,103,52,51,54,169,3,1,4,103,52,51,55,170, +3,1,4,103,52,51,56,171,3,1,4,103,52,51,57,172,3,1,4,103,52, +52,48,173,3,1,4,103,52,52,49,174,3,1,4,103,52,52,50,175,3,1, +7,101,110,118,51,52,57,56,176,2,176,2,176,2,176,2,176,2,176,2,176, +16,16,8,49,11,2,98,2,112,2,99,2,114,2,115,2,117,2,118,3,1, +7,101,110,118,51,52,57,57,177,2,177,2,177,2,177,2,177,2,177,2,177, +18,158,2,101,8,51,18,158,2,116,8,51,18,158,2,101,8,51,18,158,2, +101,8,51,18,158,2,89,8,51,18,158,2,101,8,51,18,158,2,101,8,51, +18,158,2,101,8,51,18,158,2,111,8,51,18,158,2,101,8,51,18,158,2, +64,8,51,18,158,2,89,8,51,18,158,2,101,8,51,18,158,2,101,8,51, +18,158,2,0,8,51,18,158,2,101,8,51,18,158,2,101,8,51,18,158,2, +63,8,51,18,158,2,89,8,51,18,158,2,101,8,51,18,158,2,101,8,51, +18,158,2,101,8,51,11,16,5,93,2,60,87,95,83,159,33,93,80,159,33, +8,68,34,89,162,34,34,41,9,223,0,250,22,209,20,15,159,36,8,37,46, +249,22,60,248,22,52,199,248,22,78,199,20,15,159,36,8,38,46,83,159,33, +93,80,159,33,8,67,34,89,162,34,34,41,9,223,0,250,22,209,20,15,159, +36,49,46,249,22,60,248,22,52,199,248,22,78,199,20,15,159,36,50,46,89, +162,33,34,8,28,9,223,0,27,249,22,209,20,15,159,36,33,46,196,27,28, +248,80,158,36,33,194,249,80,158,37,34,248,80,158,38,35,196,27,248,80,158, +39,36,197,28,248,80,158,39,33,193,249,80,158,40,37,27,248,80,158,42,35, +196,28,248,80,158,42,38,193,248,22,8,89,162,33,34,40,9,224,9,1,27, +249,22,2,89,162,33,34,49,9,224,4,5,249,80,158,36,39,28,248,80,158, +37,33,197,249,80,158,38,34,248,80,158,39,35,199,27,248,80,158,40,36,200, +28,248,80,158,40,33,193,27,28,248,22,206,194,193,200,249,80,158,42,34,248, +80,158,43,35,196,27,248,80,158,44,36,197,248,22,59,250,22,209,199,196,199, +11,11,194,248,80,158,38,40,196,28,248,22,57,193,21,95,9,9,9,248,80, +158,36,41,193,11,27,248,80,158,42,36,196,28,248,80,158,42,33,193,249,80, +158,43,37,27,248,80,158,45,35,196,28,248,80,158,45,33,193,249,80,158,46, +34,248,80,158,47,35,195,27,248,80,158,48,36,196,28,248,80,158,48,38,193, +248,22,59,248,80,158,49,40,194,11,11,27,248,80,158,45,36,196,28,248,80, +158,45,38,193,248,80,158,45,40,193,11,11,11,11,28,192,27,248,22,52,194, +27,248,22,78,195,27,248,22,87,196,27,248,22,90,197,27,249,22,70,199,37, +27,249,22,70,200,38,27,249,22,69,201,39,27,249,22,209,20,15,159,45,34, +46,250,22,2,89,162,33,35,44,9,224,15,16,27,249,22,209,20,15,159,37, +35,46,198,27,248,80,158,37,42,194,28,192,196,27,28,248,80,158,38,33,195, +249,80,158,39,37,248,80,158,40,35,197,248,80,158,40,42,248,80,158,41,36, +198,11,28,192,192,250,22,252,39,2,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,216,27,20,15,159,50, +36,46,250,22,209,20,15,159,53,37,46,23,16,195,248,22,216,27,20,15,159, +50,38,46,250,22,209,20,15,159,53,39,46,206,195,27,28,248,80,158,45,38, +194,248,80,158,45,40,194,11,28,192,27,249,22,209,20,15,159,47,40,46,27, +20,15,159,48,41,46,250,22,209,20,15,159,51,42,46,202,195,27,248,80,158, +47,42,194,28,192,249,80,158,48,43,23,16,27,252,22,61,202,204,23,17,206, +23,16,27,20,15,159,50,43,46,91,159,34,11,90,161,34,33,11,83,160,39, +33,34,11,247,248,22,8,89,162,33,34,41,9,226,19,2,3,1,250,22,31, +89,162,33,33,37,9,225,6,3,7,90,161,34,34,10,247,22,252,185,2,248, +22,252,185,2,89,162,33,34,37,9,224,3,1,248,193,89,162,33,33,37,9, +224,2,3,28,248,22,252,182,2,193,248,22,252,187,2,193,249,80,158,36,44, +21,96,2,116,66,100,111,108,111,111,112,178,94,94,63,118,97,114,179,64,105, +110,105,116,180,2,113,95,2,111,94,63,110,111,116,181,62,101,48,182,96,2, +0,61,99,183,2,113,95,2,178,64,115,116,101,112,184,2,113,20,15,159,36, +44,46,89,162,33,33,8,34,9,225,6,5,4,27,250,22,209,20,15,159,39, +45,46,250,22,209,20,15,159,42,46,46,251,22,60,20,15,159,46,47,46,20, +15,159,46,48,46,250,22,2,80,159,49,8,67,34,248,22,87,23,15,248,22, +89,23,15,250,22,209,20,15,159,49,51,46,250,22,60,20,15,159,52,52,46, +250,22,209,20,15,159,55,53,46,249,22,60,20,15,159,57,54,46,248,22,90, +23,23,20,15,159,55,55,46,250,22,209,20,15,159,55,56,46,249,22,56,20, +15,159,57,57,46,249,22,65,248,22,78,23,25,248,22,60,250,22,209,20,15, +159,8,30,58,46,249,22,56,20,15,159,8,32,59,46,248,22,52,23,31,20, +15,159,8,30,8,27,46,20,15,159,55,8,28,46,20,15,159,49,8,29,46, +20,15,159,42,8,30,46,197,89,162,33,33,34,9,223,0,192,89,162,33,33, +35,9,223,3,248,22,252,185,2,208,27,28,248,80,158,48,33,195,249,80,158, +49,34,248,80,158,50,35,197,27,248,80,158,51,36,198,28,248,80,158,51,38, +193,248,80,158,51,40,193,11,11,28,192,27,248,22,52,194,27,248,22,53,195, +249,80,158,51,43,23,19,27,254,22,61,202,23,15,23,22,23,17,23,19,203, +23,21,27,20,15,159,53,8,31,46,91,159,34,11,90,161,34,33,11,83,160, +39,33,34,11,247,248,22,8,89,162,33,34,41,9,226,22,2,3,1,250,22, +31,89,162,33,33,37,9,225,6,3,7,90,161,34,34,10,247,22,252,185,2, +248,22,252,185,2,89,162,33,34,37,9,224,3,1,248,193,89,162,33,33,37, +9,224,2,3,28,248,22,252,182,2,193,248,22,252,187,2,193,249,80,158,36, +44,21,96,2,116,2,178,94,94,2,179,2,180,2,113,96,2,111,2,182,96, +2,0,2,114,2,115,2,113,96,2,0,2,183,2,113,95,2,178,2,184,2, +113,20,15,159,36,8,32,46,89,162,33,33,8,35,9,225,6,5,4,27,250, +22,209,20,15,159,39,8,33,46,250,22,209,20,15,159,42,8,34,46,251,22, +60,20,15,159,46,8,35,46,20,15,159,46,8,36,46,250,22,2,80,159,49, +8,68,34,248,22,87,23,15,249,22,69,23,16,39,250,22,209,20,15,159,49, +8,39,46,251,22,60,20,15,159,53,8,40,46,249,22,70,23,20,37,250,22, +209,20,15,159,56,8,41,46,250,22,62,20,15,159,59,8,42,46,249,22,70, +23,26,38,248,22,52,23,25,20,15,159,56,8,43,46,250,22,209,20,15,159, +56,8,44,46,249,22,56,20,15,159,58,8,45,46,249,22,65,248,22,90,23, +26,248,22,60,250,22,209,20,15,159,8,31,8,46,46,249,22,56,20,15,159, +8,33,8,47,46,248,22,78,23,32,20,15,159,8,31,8,48,46,20,15,159, +56,8,49,46,20,15,159,49,8,50,46,20,15,159,42,8,51,46,197,89,162, +33,33,34,9,223,0,192,89,162,33,33,35,9,223,3,248,22,252,185,2,208, +250,22,252,39,2,11,6,10,10,98,97,100,32,115,121,110,116,97,120,197,248, +80,158,45,45,20,15,159,45,8,52,46,250,22,252,39,2,11,6,10,10,98, +97,100,32,115,121,110,116,97,120,196,33,20,98,159,35,16,13,2,65,2,68, +2,70,2,72,2,74,2,78,30,185,2,66,73,115,116,120,45,99,104,101,99, +107,47,101,115,99,186,7,2,80,30,187,2,66,70,115,116,120,45,114,111,116, +97,116,101,188,12,2,76,2,123,2,126,30,189,70,35,37,119,105,116,104,45, +115,116,120,190,76,119,105,116,104,45,115,121,110,116,97,120,45,102,97,105,108, +191,3,16,53,18,98,2,82,8,53,37,36,35,16,4,8,52,11,66,111,114, +105,103,45,120,192,3,1,7,101,110,118,51,53,54,50,193,18,100,2,82,8, +56,37,36,35,8,52,16,16,8,55,11,3,1,4,103,52,53,52,194,3,1, +4,103,52,53,53,195,3,1,4,103,52,53,54,196,3,1,4,103,52,53,55, +197,3,1,4,103,52,53,56,198,3,1,4,103,52,53,57,199,3,1,4,103, +52,54,48,200,3,1,7,101,110,118,51,53,55,57,201,2,201,2,201,2,201, +2,201,2,201,2,201,16,16,8,54,11,2,98,2,179,2,180,2,184,2,182, +2,114,2,183,3,1,7,101,110,118,51,53,56,48,202,2,202,2,202,2,202, +2,202,2,202,2,202,18,101,2,82,8,58,37,36,35,8,52,8,55,8,54, +16,6,8,57,11,2,112,61,115,203,3,1,7,101,110,118,51,53,57,48,204, +2,204,18,16,2,95,2,91,8,59,93,8,252,114,9,95,9,8,252,114,9, +2,92,18,158,2,93,8,56,18,16,2,95,2,91,8,60,93,8,252,115,9, +95,9,8,252,115,9,2,92,18,158,2,93,8,56,18,101,2,82,8,62,37, +36,35,8,52,8,55,8,54,16,4,8,61,11,3,1,4,103,52,54,53,205, +3,1,7,101,110,118,51,54,49,48,206,18,16,2,95,2,91,8,63,93,8, +252,119,9,95,9,8,252,119,9,2,92,18,158,2,93,8,62,18,16,2,95, +2,91,8,64,93,8,252,121,9,95,9,8,252,121,9,2,92,18,16,2,99, +2,113,8,69,93,8,252,121,9,16,6,8,68,11,2,141,2,142,3,1,7, +101,110,118,51,54,50,48,207,2,207,16,4,8,67,11,2,152,3,1,7,101, +110,118,51,54,50,49,208,16,4,8,66,11,2,154,3,1,7,101,110,118,51, +54,50,50,209,16,4,8,65,11,2,156,3,1,7,101,110,118,51,54,50,52, +210,95,9,8,252,121,9,2,92,18,158,2,93,8,62,18,158,2,101,8,62, +18,158,2,116,8,62,18,158,2,178,8,62,18,158,2,101,8,62,18,158,2, +101,8,62,18,158,2,101,8,62,18,158,2,111,8,62,18,158,2,101,8,62, +18,158,2,181,8,62,18,158,2,101,8,62,18,158,2,101,8,62,18,158,2, +0,8,62,18,158,2,101,8,62,18,158,2,178,8,62,18,158,2,101,8,62, +18,158,2,101,8,62,18,158,2,101,8,62,18,158,2,101,8,62,18,16,2, +95,2,91,8,70,93,8,252,124,9,95,9,8,252,124,9,2,92,18,16,2, +99,2,113,8,75,93,8,252,124,9,16,6,8,74,11,2,141,2,142,3,1, +7,101,110,118,51,54,52,48,211,2,211,16,4,8,73,11,2,152,3,1,7, +101,110,118,51,54,52,49,212,16,4,8,72,11,2,154,3,1,7,101,110,118, +51,54,52,50,213,16,4,8,71,11,2,156,3,1,7,101,110,118,51,54,52, +52,214,95,9,8,252,124,9,2,92,18,103,2,93,8,78,37,36,35,8,52, +8,55,8,54,8,61,16,6,8,77,11,3,1,4,103,52,54,54,215,3,1, +4,103,52,54,55,216,3,1,7,101,110,118,51,54,51,53,217,2,217,16,4, +8,76,11,2,115,3,1,7,101,110,118,51,54,51,54,218,18,158,2,101,8, +78,18,158,2,116,8,78,18,158,2,178,8,78,18,158,2,101,8,78,18,158, +2,101,8,78,18,158,2,101,8,78,18,158,2,111,8,78,18,158,2,101,8, +78,18,158,2,0,8,78,18,158,2,101,8,78,18,158,2,101,8,78,18,158, +2,0,8,78,18,158,2,101,8,78,18,158,2,178,8,78,18,158,2,101,8, +78,18,158,2,101,8,78,18,158,2,101,8,78,18,158,2,101,8,78,18,16, +2,158,94,16,2,98,2,184,8,82,93,8,252,110,9,16,4,8,81,11,3, +1,8,119,115,116,109,112,52,54,49,219,3,1,7,101,110,118,51,53,56,57, +220,16,4,8,80,11,3,1,4,103,52,54,52,221,3,1,7,101,110,118,51, +54,53,51,222,16,4,8,79,11,65,95,101,108,115,101,223,3,1,7,101,110, +118,51,54,53,52,224,9,16,2,158,2,113,8,82,9,8,82,95,9,8,252, +110,9,2,190,11,16,5,93,2,61,89,162,33,34,56,9,223,0,27,249,22, +209,20,15,159,36,33,40,196,27,28,248,80,158,36,33,194,249,80,158,37,34, +248,80,158,38,35,196,27,248,80,158,39,36,197,28,248,80,158,39,33,193,249, +80,158,40,37,248,80,158,41,35,195,248,80,158,41,38,248,80,158,42,36,196, +11,11,28,192,27,248,22,52,194,27,248,22,53,195,249,80,158,39,39,199,27, +20,15,159,40,34,40,250,22,209,20,15,159,43,35,40,250,22,209,20,15,159, +46,36,40,249,22,60,20,15,159,48,37,40,250,22,209,20,15,159,51,38,40, +250,22,60,20,15,159,54,39,40,20,15,159,54,40,40,23,17,20,15,159,51, +41,40,20,15,159,46,42,40,195,250,22,252,39,2,11,6,10,10,98,97,100, +32,115,121,110,116,97,120,196,33,20,98,159,33,16,7,2,65,2,68,2,70, +2,72,2,74,2,76,2,123,16,10,18,98,2,82,8,84,37,36,35,16,4, +8,83,11,2,89,3,1,7,101,110,118,51,54,53,55,225,18,16,2,95,2, +91,8,85,93,8,252,134,9,95,9,8,252,134,9,2,92,18,100,2,93,8, +88,37,36,35,8,83,16,6,8,87,11,3,1,4,103,52,54,56,226,3,1, +4,103,52,54,57,227,3,1,7,101,110,118,51,54,54,50,228,2,228,16,6, +8,86,11,2,61,63,101,120,112,229,3,1,7,101,110,118,51,54,54,51,230, +2,230,18,158,2,101,8,88,18,158,2,6,8,88,18,158,2,101,8,88,18, +158,66,108,97,109,98,100,97,231,8,88,18,158,9,8,88,18,158,2,101,8, +88,18,158,2,101,8,88,11,16,5,93,2,86,27,247,22,252,89,3,253,22, +60,248,199,20,15,159,41,33,33,248,199,20,15,159,41,34,33,248,199,20,15, +159,41,35,33,248,22,60,248,200,20,15,159,42,36,33,248,22,60,248,200,20, +15,159,42,37,33,10,42,20,98,159,33,16,0,16,5,18,97,2,4,8,89, +37,36,35,18,158,2,6,8,89,18,158,2,8,8,89,18,158,2,10,8,89, +18,158,2,12,8,89,11,16,5,93,2,54,89,162,33,34,56,9,223,0,27, +249,22,209,20,15,159,36,33,46,196,27,28,248,80,158,36,33,194,249,80,158, +37,34,248,80,158,38,35,196,27,248,80,158,39,36,197,28,248,80,158,39,33, +193,28,248,80,158,39,37,248,80,158,40,35,194,27,248,80,158,40,36,194,28, +248,80,158,40,33,193,249,80,158,41,34,248,80,158,42,35,195,27,248,80,158, +43,36,196,28,248,80,158,43,38,193,248,80,158,43,39,193,11,11,11,11,11, +28,192,27,248,22,52,194,27,248,22,78,195,27,248,22,80,196,27,249,22,61, +195,196,27,20,15,159,40,34,46,250,22,209,20,15,159,43,35,46,250,22,209, +20,15,159,46,36,46,251,22,62,20,15,159,50,37,46,20,15,159,50,38,46, +248,22,53,204,248,22,52,204,20,15,159,46,39,46,195,27,28,248,80,158,37, +33,195,249,80,158,38,34,248,80,158,39,35,197,27,248,80,158,40,36,198,28, +248,80,158,40,33,193,249,80,158,41,40,27,248,80,158,43,35,196,28,248,80, +158,43,38,193,248,22,8,89,162,33,34,40,9,224,10,1,27,249,22,2,89, +162,33,34,45,9,224,4,5,249,80,158,36,41,28,248,80,158,37,33,197,249, +80,158,38,34,248,80,158,39,35,199,27,248,80,158,40,36,200,28,248,80,158, +40,33,193,249,80,158,41,34,248,80,158,42,35,195,248,80,158,42,37,248,80, +158,43,36,196,11,11,194,248,80,158,38,39,196,28,248,22,57,193,21,94,9, +9,248,80,158,36,42,193,11,27,248,80,158,43,36,196,28,248,80,158,43,33, +193,249,80,158,44,34,248,80,158,45,35,195,27,248,80,158,46,36,196,28,248, +80,158,46,38,193,248,80,158,46,39,193,11,11,11,11,28,192,27,248,22,52, +194,27,248,22,78,195,27,248,22,87,196,27,248,22,90,197,27,248,22,89,198, +27,249,22,209,20,15,159,44,40,46,249,22,1,22,65,250,22,2,22,59,248, +22,216,27,20,15,159,51,41,46,250,22,209,20,15,159,54,42,46,23,16,195, +248,22,216,27,20,15,159,51,43,46,250,22,209,20,15,159,54,44,46,23,15, +195,27,28,248,80,158,44,38,194,248,80,158,44,39,194,11,28,192,249,80,158, +45,43,205,27,250,22,61,200,201,198,27,20,15,159,47,45,46,91,159,34,11, +90,161,34,33,11,83,160,39,33,34,11,247,248,22,8,89,162,33,34,41,9, +226,16,2,3,1,250,22,31,89,162,33,33,37,9,225,6,3,7,90,161,34, +34,10,247,22,252,185,2,248,22,252,185,2,89,162,33,34,37,9,224,3,1, +248,193,89,162,33,33,37,9,224,2,3,28,248,22,252,182,2,193,248,22,252, +187,2,193,249,80,158,36,44,21,96,1,22,119,105,116,104,45,99,111,110,116, +105,110,117,97,116,105,111,110,45,109,97,114,107,232,2,21,96,2,19,95,1, +27,99,111,110,116,105,110,117,97,116,105,111,110,45,109,97,114,107,45,115,101, +116,45,102,105,114,115,116,233,11,2,21,63,112,47,118,234,2,113,97,2,116, +9,65,101,120,112,114,49,235,64,101,120,112,114,236,2,113,20,15,159,36,46, +46,89,162,33,33,55,9,225,6,5,4,27,250,22,209,20,15,159,39,47,46, +250,22,209,20,15,159,42,48,46,251,22,60,20,15,159,46,49,46,20,15,159, +46,50,46,250,22,209,20,15,159,49,51,46,250,22,62,20,15,159,52,52,46, +20,15,159,52,53,46,248,22,80,23,18,20,15,159,49,54,46,250,22,209,20, +15,159,49,55,46,251,22,62,20,15,159,53,56,46,20,15,159,53,57,46,248, +22,78,23,19,248,22,52,23,19,20,15,159,49,58,46,20,15,159,42,59,46, +197,89,162,33,33,34,9,223,0,192,89,162,33,33,35,9,223,3,248,22,252, +185,2,208,248,80,158,44,45,20,15,159,44,8,27,46,250,22,252,39,2,11, +6,10,10,98,97,100,32,115,121,110,116,97,120,197,33,20,98,159,33,16,13, +2,65,2,68,2,70,2,72,2,76,2,78,2,80,2,74,2,185,2,187,2, +123,2,126,2,189,16,28,18,98,2,82,8,91,37,36,35,16,4,8,90,11, +63,115,116,120,237,3,1,7,101,110,118,51,54,55,49,238,18,16,2,95,2, +91,8,92,93,8,252,163,9,95,9,8,252,163,9,2,92,18,100,2,93,8, +95,37,36,35,8,90,16,8,8,94,11,3,1,4,103,52,55,54,239,3,1, +4,103,52,55,55,240,3,1,4,103,52,55,56,241,3,1,7,101,110,118,51, +54,55,56,242,2,242,2,242,16,8,8,93,11,2,98,2,235,2,236,3,1, +7,101,110,118,51,54,55,57,243,2,243,2,243,18,158,2,101,8,95,18,158, +2,116,8,95,18,158,9,8,95,18,158,2,101,8,95,18,100,2,82,8,98, +37,36,35,8,90,16,12,8,97,11,3,1,4,103,52,55,49,244,3,1,4, +103,52,55,50,245,3,1,4,103,52,55,51,246,3,1,4,103,52,55,52,247, +3,1,4,103,52,55,53,248,3,1,7,101,110,118,51,54,57,53,249,2,249, +2,249,2,249,2,249,16,12,8,96,11,2,98,65,112,97,114,97,109,250,63, +118,97,108,251,2,235,2,236,3,1,7,101,110,118,51,54,57,54,252,252,0, +2,252,252,0,2,252,252,0,2,252,252,0,2,252,252,0,18,16,2,95,2, +91,8,99,93,8,252,166,9,95,9,8,252,166,9,2,92,18,158,2,93,8, +98,18,16,2,95,2,91,8,100,93,8,252,167,9,95,9,8,252,167,9,2, +92,18,158,2,93,8,98,18,16,2,95,2,91,8,101,93,8,252,170,9,95, +9,8,252,170,9,2,92,18,16,2,99,2,113,8,106,93,8,252,170,9,16, +6,8,105,11,2,141,2,142,3,1,7,101,110,118,51,55,49,51,252,253,0, +2,252,253,0,16,4,8,104,11,2,152,3,1,7,101,110,118,51,55,49,52, +252,254,0,16,4,8,103,11,2,154,3,1,7,101,110,118,51,55,49,53,252, +255,0,16,4,8,102,11,2,156,3,1,7,101,110,118,51,55,49,55,252,0, +1,95,9,8,252,170,9,2,92,18,102,2,93,8,109,37,36,35,8,90,8, +97,8,96,16,4,8,108,11,3,1,4,103,52,56,49,252,1,1,3,1,7, +101,110,118,51,55,48,57,252,2,1,16,4,8,107,11,2,234,3,1,7,101, +110,118,51,55,49,48,252,3,1,18,158,2,101,8,109,18,158,2,232,8,109, +18,158,2,21,8,109,18,158,2,101,8,109,18,158,2,19,8,109,18,158,95, +16,2,158,2,233,8,109,9,16,2,158,11,8,109,9,16,2,158,2,21,8, +109,9,8,109,18,158,2,101,8,109,18,158,2,101,8,109,18,158,2,116,8, +109,18,158,9,8,109,18,158,2,101,8,109,18,158,2,101,8,109,18,16,2, +158,94,16,2,98,2,234,8,113,93,8,252,165,9,16,4,8,112,11,3,1, +8,119,115,116,109,112,52,55,57,252,4,1,3,1,7,101,110,118,51,55,48, +51,252,5,1,16,4,8,111,11,3,1,4,103,52,56,48,252,6,1,3,1, +7,101,110,118,51,55,50,52,252,7,1,16,4,8,110,11,2,223,3,1,7, +101,110,118,51,55,50,53,252,8,1,9,16,2,158,2,113,8,113,9,8,113, +95,9,8,252,165,9,2,190,11,16,5,93,2,53,89,162,33,34,8,36,9, +223,0,27,249,22,209,20,15,159,36,33,40,196,27,28,248,80,158,36,33,194, +249,80,158,37,34,248,80,158,38,35,196,27,248,80,158,39,36,197,28,248,80, +158,39,33,193,249,80,158,40,34,248,80,158,41,35,195,27,248,80,158,42,36, +196,28,248,80,158,42,33,193,249,80,158,43,34,248,80,158,44,35,195,27,248, +80,158,45,36,196,28,248,80,158,45,37,193,248,80,158,45,38,193,11,11,11, +11,28,192,27,248,22,52,194,27,248,22,78,195,27,248,22,87,196,27,248,22, +88,197,249,80,158,41,39,201,27,250,22,61,200,198,199,27,20,15,159,43,34, +40,250,22,209,20,15,159,46,35,40,250,22,209,20,15,159,49,36,40,251,22, +60,20,15,159,53,37,40,20,15,159,53,38,40,250,22,209,20,15,159,56,39, +40,249,22,60,20,15,159,58,40,40,250,22,209,20,15,159,8,28,41,40,250, +22,62,20,15,159,8,31,42,40,248,22,52,23,23,20,15,159,8,31,43,40, +20,15,159,8,28,44,40,20,15,159,56,45,40,250,22,209,20,15,159,56,46, +40,250,22,60,20,15,159,59,47,40,20,15,159,59,48,40,250,22,209,20,15, +159,8,29,49,40,251,22,62,20,15,159,8,33,50,40,20,15,159,8,33,51, +40,248,22,80,23,25,248,22,78,23,25,20,15,159,8,29,52,40,20,15,159, +56,53,40,20,15,159,49,54,40,195,250,22,252,39,2,11,6,10,10,98,97, +100,32,115,121,110,116,97,120,196,33,20,98,159,33,16,7,2,65,2,68,2, +70,2,72,2,78,2,80,2,123,16,22,18,98,2,82,8,115,37,36,35,16, +4,8,114,11,2,237,3,1,7,101,110,118,51,55,50,56,252,9,1,18,16, +2,95,2,91,8,116,93,8,252,183,9,95,9,8,252,183,9,2,92,18,100, +2,93,8,119,37,36,35,8,114,16,10,8,118,11,3,1,4,103,52,56,50, +252,10,1,3,1,4,103,52,56,51,252,11,1,3,1,4,103,52,56,52,252, +12,1,3,1,4,103,52,56,53,252,13,1,3,1,7,101,110,118,51,55,51, +53,252,14,1,2,252,14,1,2,252,14,1,2,252,14,1,16,10,8,117,11, +2,98,69,98,111,111,108,45,101,120,112,114,252,15,1,2,235,2,236,3,1, +7,101,110,118,51,55,51,54,252,16,1,2,252,16,1,2,252,16,1,2,252, +16,1,18,158,2,101,8,119,18,158,2,232,8,119,18,158,2,47,8,119,18, +158,2,101,8,119,18,158,76,109,97,107,101,45,116,104,114,101,97,100,45,99, +101,108,108,252,17,1,8,119,18,158,2,101,8,119,18,158,63,97,110,100,252, +18,1,8,119,18,16,2,103,93,16,2,158,10,8,119,9,8,121,8,28,8, +27,59,58,57,56,13,16,4,34,2,135,2,92,11,93,8,252,183,9,16,6, +8,120,11,2,141,2,142,3,1,7,101,110,118,51,55,52,50,252,19,1,2, +252,19,1,95,9,8,252,183,9,2,92,18,158,2,101,8,119,18,158,2,101, +8,119,18,158,2,101,8,119,18,158,2,0,8,119,18,158,93,16,2,158,2, +51,8,119,9,8,119,18,158,2,101,8,119,18,158,2,116,8,119,18,158,9, +8,119,18,158,2,101,8,119,18,158,2,101,8,119,18,158,2,101,8,119,11, +16,5,93,2,85,27,247,22,252,89,3,253,22,60,248,199,20,15,159,41,33, +33,248,199,20,15,159,41,34,33,248,199,20,15,159,41,35,33,248,22,60,248, +200,20,15,159,42,36,33,248,22,60,248,200,20,15,159,42,37,33,10,42,20, +98,159,33,16,0,16,5,18,158,2,35,8,89,18,158,2,37,8,89,18,158, +2,39,8,89,18,158,2,41,8,89,18,158,2,43,8,89,11,16,5,94,2, +57,2,55,87,94,83,159,33,93,80,159,33,8,103,34,89,162,34,34,42,9, +223,0,250,22,209,20,15,159,36,53,45,250,22,60,20,15,159,39,54,45,248, +22,52,200,248,22,78,200,20,15,159,36,55,45,27,89,162,33,34,35,62,119, +104,252,20,1,223,1,89,162,33,34,56,9,224,0,1,27,249,22,209,20,15, +159,37,33,45,197,27,28,248,80,158,37,33,194,249,80,158,38,34,248,80,158, +39,35,196,27,248,80,158,40,36,197,28,248,80,158,40,33,193,28,248,80,158, +40,37,248,80,158,41,35,194,27,248,80,158,41,36,194,28,248,80,158,41,33, +193,249,80,158,42,34,248,80,158,43,35,195,27,248,80,158,44,36,196,28,248, +80,158,44,38,193,248,80,158,44,39,193,11,11,11,11,11,28,192,27,248,22, +52,194,27,248,22,78,195,27,248,22,80,196,249,80,158,41,40,201,27,249,22, +61,197,198,27,20,15,159,43,34,45,250,22,209,20,15,159,46,35,45,250,22, +209,20,15,159,49,36,45,251,22,62,20,15,159,53,37,45,20,15,159,53,38, +45,248,22,53,204,248,22,52,204,20,15,159,49,39,45,195,27,28,248,80,158, +38,33,195,249,80,158,39,34,248,80,158,40,35,197,27,248,80,158,41,36,198, +28,248,80,158,41,33,193,249,80,158,42,41,27,248,80,158,44,35,196,28,248, +80,158,44,38,193,248,22,8,89,162,33,34,40,9,224,11,1,27,249,22,2, +89,162,33,34,45,9,224,4,5,249,80,158,36,42,28,248,80,158,37,33,197, +249,80,158,38,34,248,80,158,39,35,199,27,248,80,158,40,36,200,28,248,80, +158,40,33,193,249,80,158,41,34,248,80,158,42,35,195,248,80,158,42,37,248, +80,158,43,36,196,11,11,194,248,80,158,38,39,196,28,248,22,57,193,21,94, +9,9,248,80,158,36,43,193,11,27,248,80,158,44,36,196,28,248,80,158,44, +33,193,249,80,158,45,34,248,80,158,46,35,195,27,248,80,158,47,36,196,28, +248,80,158,47,38,193,248,80,158,47,39,193,11,11,11,11,28,192,27,248,22, +52,194,27,248,22,78,195,27,248,22,87,196,27,248,22,90,197,27,248,22,89, +198,27,249,22,209,20,15,159,45,40,45,28,203,20,15,159,45,41,45,20,15, +159,45,42,45,249,80,158,45,40,205,27,252,22,61,200,204,202,203,201,27,20, +15,159,47,43,45,91,159,34,11,90,161,34,33,11,83,160,39,33,34,11,247, +248,22,8,89,162,33,34,41,9,226,16,2,3,1,250,22,31,89,162,33,33, +37,9,225,6,3,7,90,161,34,34,10,247,22,252,185,2,248,22,252,185,2, +89,162,33,34,37,9,224,3,1,248,193,89,162,33,33,37,9,224,2,3,28, +248,22,252,182,2,193,248,22,252,187,2,193,249,80,158,36,44,21,95,2,116, +94,94,61,108,252,21,1,95,64,108,105,115,116,252,22,1,95,64,99,111,110, +115,252,23,1,64,112,114,101,100,252,24,1,67,104,97,110,100,108,101,114,252, +25,1,2,113,94,64,98,111,100,121,252,26,1,97,2,231,9,2,235,2,236, +2,113,95,2,116,93,94,63,98,112,122,252,27,1,95,2,233,11,2,47,96, +2,232,2,47,94,2,252,17,1,11,93,94,67,99,97,108,108,47,101,99,252, +28,1,95,2,231,93,2,99,96,2,232,2,47,2,252,27,1,95,2,54,93, +94,1,25,99,117,114,114,101,110,116,45,101,120,99,101,112,116,105,111,110,45, +104,97,110,100,108,101,114,252,29,1,95,2,231,93,61,101,252,30,1,94,2, +99,95,2,231,9,96,2,116,64,108,111,111,112,252,31,1,93,94,2,252,21, +1,2,252,21,1,96,2,133,94,94,65,110,117,108,108,63,252,32,1,2,252, +21,1,94,65,114,97,105,115,101,252,33,1,2,252,30,1,94,94,94,64,99, +97,97,114,252,34,1,2,252,21,1,2,252,30,1,63,117,113,49,252,35,1, +94,2,144,94,2,252,31,1,94,63,99,100,114,252,36,1,2,252,21,1,95, +76,99,97,108,108,45,119,105,116,104,45,118,97,108,117,101,115,252,37,1,2, +252,26,1,95,2,231,64,97,114,103,115,252,38,1,95,2,231,9,95,65,97, +112,112,108,121,252,39,1,66,118,97,108,117,101,115,252,40,1,2,252,38,1, +20,15,159,36,44,45,89,162,33,33,8,100,9,225,6,5,4,27,250,22,209, +20,15,159,39,45,45,250,22,209,20,15,159,42,46,45,250,22,60,20,15,159, +45,47,45,250,22,209,20,15,159,48,48,45,249,22,60,250,22,209,20,15,159, +53,49,45,249,22,60,20,15,159,55,50,45,250,22,209,20,15,159,58,51,45, +249,22,56,20,15,159,8,27,52,45,250,22,2,80,159,8,30,8,103,34,248, +22,78,23,29,248,22,90,23,29,20,15,159,58,56,45,20,15,159,53,57,45, +250,22,209,20,15,159,53,58,45,249,22,60,20,15,159,55,59,45,250,22,209, +20,15,159,58,8,27,45,251,22,62,20,15,159,8,29,8,28,45,20,15,159, +8,29,8,29,45,248,22,87,23,28,248,22,89,23,28,20,15,159,58,8,30, +45,20,15,159,53,8,31,45,20,15,159,48,8,32,45,250,22,209,20,15,159, +48,8,33,45,250,22,60,20,15,159,51,8,34,45,20,15,159,51,8,35,45, +250,22,209,20,15,159,54,8,36,45,251,22,60,20,15,159,58,8,37,45,20, +15,159,58,8,38,45,20,15,159,58,8,39,45,250,22,209,20,15,159,8,28, +8,40,45,248,22,60,250,22,209,20,15,159,8,32,8,41,45,249,22,60,20, +15,159,8,34,8,42,45,250,22,209,20,15,159,8,37,8,43,45,250,22,60, +20,15,159,8,40,8,44,45,20,15,159,8,40,8,45,45,250,22,209,20,15, +159,8,43,8,46,45,251,22,60,20,15,159,8,47,8,47,45,20,15,159,8, +47,8,48,45,20,15,159,8,47,8,49,45,250,22,209,20,15,159,8,50,8, +50,45,250,22,62,20,15,159,8,53,8,51,45,250,22,209,20,15,159,8,56, +8,52,45,248,22,60,250,22,209,20,15,159,8,60,8,53,45,249,22,60,20, +15,159,8,62,8,54,45,250,22,209,20,15,159,8,65,8,55,45,250,22,60, +20,15,159,8,68,8,56,45,20,15,159,8,68,8,57,45,250,22,209,20,15, +159,8,71,8,58,45,249,22,60,20,15,159,8,73,8,59,45,250,22,209,20, +15,159,8,76,8,60,45,250,22,60,20,15,159,8,79,8,61,45,20,15,159, +8,79,8,62,45,250,22,209,20,15,159,8,82,8,63,45,251,22,60,20,15, +159,8,86,8,64,45,20,15,159,8,86,8,65,45,20,15,159,8,86,8,66, +45,250,22,209,20,15,159,8,89,8,67,45,251,22,62,20,15,159,8,93,8, +68,45,20,15,159,8,93,8,69,45,250,22,209,20,15,159,8,96,8,70,45, +249,22,60,20,15,159,8,98,8,71,45,248,22,52,23,97,20,15,159,8,96, +8,72,45,20,15,159,8,93,8,73,45,20,15,159,8,89,8,74,45,20,15, +159,8,82,8,75,45,20,15,159,8,76,8,76,45,20,15,159,8,71,8,77, +45,20,15,159,8,65,8,78,45,20,15,159,8,60,8,79,45,20,15,159,8, +56,8,80,45,20,15,159,8,53,8,81,45,20,15,159,8,50,8,82,45,20, +15,159,8,43,8,83,45,20,15,159,8,37,8,84,45,20,15,159,8,32,8, +85,45,20,15,159,8,28,8,86,45,20,15,159,54,8,87,45,20,15,159,48, +8,88,45,20,15,159,42,8,89,45,197,89,162,33,33,34,9,223,0,192,89, +162,33,33,35,9,223,3,248,22,252,185,2,208,250,22,252,39,2,11,6,10, +10,98,97,100,32,115,121,110,116,97,120,197,249,22,7,248,195,10,248,195,11, +37,20,98,159,34,16,12,2,65,2,68,2,70,2,72,2,76,2,78,2,80, +2,123,2,74,2,185,2,187,2,126,16,90,18,99,2,82,8,124,37,36,35, +16,4,8,123,11,74,100,105,115,97,98,108,101,45,98,114,101,97,107,63,252, +41,1,3,1,7,101,110,118,51,55,52,55,252,42,1,16,4,8,122,11,2, +237,3,1,7,101,110,118,51,55,52,56,252,43,1,18,16,2,95,2,91,8, +125,93,8,252,213,9,95,9,8,252,213,9,2,92,18,101,2,93,8,128,37, +36,35,8,123,8,122,16,8,8,127,11,3,1,4,103,52,57,50,252,44,1, +3,1,4,103,52,57,51,252,45,1,3,1,4,103,52,57,52,252,46,1,3, +1,7,101,110,118,51,55,53,53,252,47,1,2,252,47,1,2,252,47,1,16, +8,8,126,11,2,98,2,235,2,236,3,1,7,101,110,118,51,55,53,54,252, +48,1,2,252,48,1,2,252,48,1,18,158,2,101,8,128,18,158,2,116,8, +128,18,158,9,8,128,18,158,2,101,8,128,18,101,2,82,8,131,37,36,35, +8,123,8,122,16,12,8,130,11,3,1,4,103,52,56,55,252,49,1,3,1, +4,103,52,56,56,252,50,1,3,1,4,103,52,56,57,252,51,1,3,1,4, +103,52,57,48,252,52,1,3,1,4,103,52,57,49,252,53,1,3,1,7,101, +110,118,51,55,55,50,252,54,1,2,252,54,1,2,252,54,1,2,252,54,1, +2,252,54,1,16,12,8,129,11,2,98,2,252,24,1,2,252,25,1,2,235, +2,236,3,1,7,101,110,118,51,55,55,51,252,55,1,2,252,55,1,2,252, +55,1,2,252,55,1,2,252,55,1,18,158,95,16,2,158,66,98,101,103,105, +110,48,252,56,1,8,131,9,16,2,158,94,16,2,158,94,16,2,158,64,99, +100,97,114,252,57,1,8,131,9,16,2,158,2,252,21,1,8,131,9,8,131, +9,16,2,158,2,252,30,1,8,131,9,8,131,9,16,2,158,96,16,2,158, +2,232,8,131,9,16,2,158,2,47,8,131,9,16,2,158,2,252,27,1,8, +131,9,16,2,158,93,16,2,158,2,51,8,131,9,8,131,9,8,131,9,8, +131,18,158,96,16,2,158,2,232,8,131,9,16,2,158,2,47,8,131,9,16, +2,158,2,252,27,1,8,131,9,16,2,158,95,16,2,158,2,0,8,131,9, +16,2,158,93,16,2,158,2,51,8,131,9,8,131,9,16,2,158,94,16,2, +158,94,16,2,158,2,252,57,1,8,131,9,16,2,158,2,252,21,1,8,131, +9,8,131,9,16,2,158,2,252,30,1,8,131,9,8,131,9,8,131,9,8, +131,18,16,2,95,2,91,8,132,93,8,252,222,9,95,9,8,252,222,9,2, +92,18,16,2,99,2,113,8,137,93,8,252,222,9,16,6,8,136,11,2,141, +2,142,3,1,7,101,110,118,51,55,57,49,252,58,1,2,252,58,1,16,4, +8,135,11,2,152,3,1,7,101,110,118,51,55,57,50,252,59,1,16,4,8, +134,11,2,154,3,1,7,101,110,118,51,55,57,51,252,60,1,16,4,8,133, +11,2,156,3,1,7,101,110,118,51,55,57,53,252,61,1,95,9,8,252,222, +9,2,92,18,158,2,93,8,131,18,158,2,101,8,131,18,158,2,116,8,131, +18,158,2,101,8,131,18,158,2,101,8,131,18,158,2,252,21,1,8,131,18, +158,2,101,8,131,18,158,2,252,22,1,8,131,18,158,2,101,8,131,18,158, +2,252,23,1,8,131,18,158,2,101,8,131,18,158,2,101,8,131,18,158,2, +101,8,131,18,158,2,101,8,131,18,158,2,252,26,1,8,131,18,158,2,101, +8,131,18,158,2,231,8,131,18,158,9,8,131,18,158,2,101,8,131,18,158, +2,101,8,131,18,158,2,101,8,131,18,158,2,101,8,131,18,158,2,116,8, +131,18,158,93,16,2,158,94,16,2,158,2,252,27,1,8,131,9,16,2,158, +95,16,2,158,2,233,8,131,9,16,2,158,11,8,131,9,16,2,158,2,47, +8,131,9,8,131,9,8,131,9,8,131,18,158,2,101,8,131,18,158,2,232, +8,131,18,158,2,47,8,131,18,158,94,16,2,158,2,252,17,1,8,131,9, +16,2,158,11,8,131,9,8,131,18,158,2,101,8,131,18,158,2,101,8,131, +18,158,2,252,28,1,8,131,18,158,2,101,8,131,18,158,2,231,8,131,18, +158,93,16,2,158,2,99,8,131,9,8,131,18,158,2,101,8,131,18,158,2, +232,8,131,18,158,2,47,8,131,18,158,2,252,27,1,8,131,18,158,2,101, +8,131,18,158,2,54,8,131,18,158,2,101,8,131,18,158,2,101,8,131,18, +158,2,252,29,1,8,131,18,158,2,101,8,131,18,158,2,231,8,131,18,158, +93,16,2,158,2,252,30,1,8,131,9,8,131,18,158,2,101,8,131,18,158, +2,99,8,131,18,158,2,101,8,131,18,158,2,231,8,131,18,158,9,8,131, +18,158,2,101,8,131,18,158,2,116,8,131,18,158,2,252,31,1,8,131,18, +158,93,16,2,158,94,16,2,158,2,252,21,1,8,131,9,16,2,158,2,252, +21,1,8,131,9,8,131,9,8,131,18,158,2,101,8,131,18,158,2,133,8, +131,18,158,94,16,2,158,94,16,2,158,2,252,32,1,8,131,9,16,2,158, +2,252,21,1,8,131,9,8,131,9,16,2,158,94,16,2,158,2,252,33,1, +8,131,9,16,2,158,2,252,30,1,8,131,9,8,131,9,8,131,18,158,2, +101,8,131,18,158,94,16,2,158,94,16,2,158,2,252,34,1,8,131,9,16, +2,158,2,252,21,1,8,131,9,8,131,9,16,2,158,2,252,30,1,8,131, +9,8,131,18,158,2,101,8,131,18,16,2,105,93,16,2,158,94,16,2,158, +2,144,8,131,9,16,2,158,94,16,2,158,2,252,31,1,8,131,9,16,2, +158,94,16,2,158,2,252,36,1,8,131,9,16,2,158,2,252,21,1,8,131, +9,8,131,9,8,131,9,8,131,9,8,141,8,28,8,27,59,58,57,56,13, +16,4,34,2,135,2,92,11,93,8,252,222,9,16,6,8,140,11,2,141,2, +142,2,252,58,1,2,252,58,1,16,4,8,139,11,2,152,2,252,59,1,16, +4,8,138,11,2,154,2,252,60,1,95,9,8,252,222,9,2,92,18,158,2, +101,8,131,18,158,2,101,8,131,18,158,2,101,8,131,18,158,2,101,8,131, +18,158,2,101,8,131,18,158,2,101,8,131,18,158,2,101,8,131,18,16,2, +158,93,16,2,158,95,16,2,158,2,252,37,1,8,131,9,16,2,158,2,252, +26,1,8,131,9,16,2,158,95,16,2,158,2,231,8,131,9,16,2,158,2, +252,38,1,8,131,9,16,2,158,95,16,2,158,2,231,8,131,9,16,2,158, +9,8,131,9,16,2,158,95,16,2,158,2,252,39,1,8,131,9,16,2,158, +2,252,40,1,8,131,9,16,2,158,2,252,38,1,8,131,9,8,131,9,8, +131,9,8,131,9,8,131,9,8,141,95,9,8,252,222,9,2,92,18,158,2, +101,8,131,18,158,2,101,8,131,18,158,2,101,8,131,18,158,2,101,8,131, +18,158,2,101,8,131,18,158,2,101,8,131,18,158,2,101,8,131,18,158,2, +101,8,131,11,16,5,93,2,56,87,95,83,159,33,93,80,159,33,8,52,34, +89,162,33,35,48,2,120,223,0,27,28,248,80,158,35,33,195,249,80,158,36, +34,248,80,158,37,35,197,27,248,80,158,38,36,198,28,248,80,158,38,33,193, +249,80,158,39,38,27,248,80,158,41,35,196,28,248,80,158,41,39,193,248,22, +59,248,80,158,42,40,194,11,27,248,80,158,41,36,196,28,248,80,158,41,33, +193,249,80,158,42,38,248,80,158,43,35,195,248,80,158,43,37,248,80,158,44, +36,196,11,11,11,28,192,27,248,22,52,194,27,248,22,78,195,27,248,22,80, +196,28,27,248,80,158,39,40,27,20,15,159,40,45,47,250,22,209,20,15,159, +43,46,47,199,195,87,94,249,22,3,89,162,33,34,40,9,224,7,9,28,248, +80,158,35,41,195,12,251,22,252,39,2,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,40,42,194, +28,192,251,22,252,39,2,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,209,20,15,159,40, +47,47,248,80,158,41,43,27,20,15,159,42,48,47,250,22,209,20,15,159,45, +49,47,201,195,27,28,248,80,158,40,39,194,248,80,158,40,40,194,11,28,192, +249,80,158,41,44,202,27,250,22,61,200,198,201,27,20,15,159,43,50,47,91, +159,34,11,90,161,34,33,11,83,160,39,33,34,11,247,248,22,8,89,162,33, +34,41,9,226,12,2,3,1,250,22,31,89,162,33,33,37,9,225,6,3,7, +90,161,34,34,10,247,22,252,185,2,248,22,252,185,2,89,162,33,34,37,9, +224,3,1,248,193,89,162,33,33,37,9,224,2,3,28,248,22,252,182,2,193, +248,22,252,187,2,193,249,80,158,36,45,21,96,70,108,101,116,45,118,97,108, +117,101,115,252,62,1,93,94,94,64,116,101,109,112,252,63,1,2,113,2,236, +95,64,115,101,116,33,252,64,1,62,105,100,252,65,1,2,252,63,1,2,113, +20,15,159,36,51,47,89,162,33,33,56,9,225,6,5,4,27,250,22,209,20, +15,159,39,52,47,250,22,209,20,15,159,42,53,47,250,22,62,20,15,159,45, +54,47,250,22,209,20,15,159,48,55,47,248,22,60,250,22,209,20,15,159,52, +56,47,249,22,60,248,22,78,23,20,248,22,52,23,20,20,15,159,52,57,47, +20,15,159,48,58,47,250,22,2,80,159,48,8,51,34,248,22,80,206,248,22, +78,206,20,15,159,42,8,29,47,197,89,162,33,33,34,9,223,0,192,89,162, +33,33,35,9,223,3,248,22,252,185,2,208,248,80,158,40,46,20,15,159,40, +8,30,47,248,32,252,66,1,89,162,33,34,37,2,120,222,250,22,252,39,2, +11,6,10,10,98,97,100,32,115,121,110,116,97,120,195,198,248,2,252,66,1, +195,83,159,33,93,80,159,33,8,51,34,89,162,34,34,42,9,223,0,250,22, +209,20,15,159,36,59,47,250,22,60,20,15,159,39,8,27,47,248,22,52,200, +248,22,78,200,20,15,159,36,8,28,47,89,162,33,34,58,9,223,0,27,249, +22,209,20,15,159,36,33,47,196,27,28,248,80,158,36,33,194,249,80,158,37, +34,248,80,158,38,35,196,27,248,80,158,39,36,197,28,248,80,158,39,33,193, +28,248,80,158,39,37,248,80,158,40,35,194,27,248,80,158,40,36,194,28,248, +80,158,40,33,193,249,80,158,41,38,248,80,158,42,35,195,248,80,158,42,37, +248,80,158,43,36,196,11,11,11,11,28,192,27,248,22,52,194,27,248,22,53, +195,27,20,15,159,38,34,47,250,22,209,20,15,159,41,35,47,250,22,209,20, +15,159,44,36,47,250,22,62,20,15,159,47,37,47,250,22,209,20,15,159,50, +38,47,248,22,60,250,22,209,20,15,159,54,39,47,249,22,60,20,15,159,56, +40,47,23,19,20,15,159,54,41,47,20,15,159,50,42,47,20,15,159,47,43, +47,20,15,159,44,44,47,195,27,28,248,80,158,37,33,195,249,80,158,38,34, +248,80,158,39,35,197,27,248,80,158,40,36,198,28,248,80,158,40,33,193,249, +80,158,41,38,27,248,80,158,43,35,196,28,248,80,158,43,33,193,249,80,158, +44,34,248,80,158,45,35,195,248,80,158,45,37,248,80,158,46,36,196,11,27, +248,80,158,43,36,196,28,248,80,158,43,33,193,249,80,158,44,38,248,80,158, +45,35,195,248,80,158,45,37,248,80,158,46,36,196,11,11,11,28,192,27,248, +22,52,194,27,248,22,78,195,27,248,22,80,196,28,248,80,158,40,41,194,27, +249,22,61,195,196,27,20,15,159,41,8,31,47,250,22,209,20,15,159,44,8, +32,47,250,22,209,20,15,159,47,8,33,47,250,22,60,20,15,159,50,8,34, +47,248,22,53,203,248,22,52,203,20,15,159,47,8,35,47,195,249,80,159,41, +8,52,34,199,201,249,80,159,38,8,52,34,196,198,33,20,98,159,35,16,14, +2,65,2,68,2,70,2,72,2,76,2,74,2,78,2,80,2,121,30,252,67, +1,2,88,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,252,68,1,0,30,252,69,1,2,190,1, +20,103,101,110,101,114,97,116,101,45,116,101,109,112,111,114,97,114,105,101,115, +252,70,1,0,2,123,2,126,2,189,16,36,18,98,2,82,8,143,37,36,35, +16,4,8,142,11,2,237,3,1,7,101,110,118,51,56,48,52,252,71,1,18, +16,2,95,2,91,8,144,93,8,252,244,9,95,9,8,252,244,9,2,92,18, +100,2,93,8,147,37,36,35,8,142,16,6,8,146,11,3,1,4,103,53,48, +52,252,72,1,3,1,4,103,53,48,53,252,73,1,3,1,7,101,110,118,51, +56,49,48,252,74,1,2,252,74,1,16,6,8,145,11,2,98,2,236,3,1, +7,101,110,118,51,56,49,49,252,75,1,2,252,75,1,18,158,2,101,8,147, +18,158,2,252,62,1,8,147,18,158,2,101,8,147,18,158,2,101,8,147,18, +158,9,8,147,18,158,2,101,8,147,18,158,2,101,8,147,18,16,2,103,93, +16,2,158,93,16,2,158,64,118,111,105,100,252,76,1,8,147,9,8,147,9, +8,149,8,28,8,27,59,58,57,56,13,16,4,34,2,135,2,92,11,93,8, +252,244,9,16,6,8,148,11,2,141,2,142,3,1,7,101,110,118,51,56,49, +53,252,77,1,2,252,77,1,95,9,8,252,244,9,2,92,18,158,2,101,8, +147,18,16,2,95,2,91,8,150,93,8,252,245,9,95,9,8,252,245,9,2, +92,18,100,2,93,8,153,37,36,35,8,142,16,8,8,152,11,3,1,4,103, +52,57,56,252,78,1,3,1,4,103,52,57,57,252,79,1,3,1,4,103,53, +48,48,252,80,1,3,1,7,101,110,118,51,56,50,53,252,81,1,2,252,81, +1,2,252,81,1,16,8,8,151,11,2,98,2,252,65,1,2,236,3,1,7, +101,110,118,51,56,50,54,252,82,1,2,252,82,1,2,252,82,1,18,158,2, +82,8,153,18,16,2,95,2,91,8,154,93,8,252,249,9,95,9,8,252,249, +9,2,92,18,158,2,93,8,153,18,16,2,95,2,91,8,155,93,8,252,252, +9,95,9,8,252,252,9,2,92,18,16,2,99,2,113,8,160,93,8,252,252, +9,16,6,8,159,11,2,141,2,142,3,1,7,101,110,118,51,56,52,51,252, +83,1,2,252,83,1,16,4,8,158,11,2,152,3,1,7,101,110,118,51,56, +52,52,252,84,1,16,4,8,157,11,2,154,3,1,7,101,110,118,51,56,52, +53,252,85,1,16,4,8,156,11,2,156,3,1,7,101,110,118,51,56,52,55, +252,86,1,95,9,8,252,252,9,2,92,18,102,2,93,8,165,37,36,35,8, +142,16,8,8,164,11,2,252,78,1,2,252,79,1,2,252,80,1,2,252,81, +1,2,252,81,1,2,252,81,1,16,8,8,163,11,2,98,2,252,65,1,2, +236,2,252,82,1,2,252,82,1,2,252,82,1,16,4,8,162,11,3,1,4, +103,53,48,56,252,87,1,3,1,7,101,110,118,51,56,51,57,252,88,1,16, +4,8,161,11,2,252,63,1,3,1,7,101,110,118,51,56,52,48,252,89,1, +18,158,2,101,8,165,18,158,2,252,62,1,8,165,18,158,2,101,8,165,18, +158,2,101,8,165,18,158,2,101,8,165,18,158,2,101,8,165,18,158,2,101, +8,165,18,158,2,252,64,1,8,165,18,158,2,101,8,165,18,158,2,101,8, +165,18,16,2,158,94,16,2,98,2,252,63,1,8,169,93,8,252,248,9,16, +4,8,168,11,3,1,8,119,115,116,109,112,53,48,54,252,90,1,3,1,7, +101,110,118,51,56,51,52,252,91,1,16,4,8,167,11,3,1,4,103,53,48, +55,252,92,1,3,1,7,101,110,118,51,56,53,54,252,93,1,16,4,8,166, +11,2,223,3,1,7,101,110,118,51,56,53,55,252,94,1,9,16,2,158,2, +113,8,169,9,8,169,95,9,8,252,248,9,2,190,18,16,2,95,2,91,8, +170,93,8,252,255,9,95,9,8,252,255,9,2,92,18,100,2,93,8,173,37, +36,35,8,142,16,8,8,172,11,3,1,4,103,53,48,49,252,95,1,3,1, +4,103,53,48,50,252,96,1,3,1,4,103,53,48,51,252,97,1,3,1,7, +101,110,118,51,56,54,52,252,98,1,2,252,98,1,2,252,98,1,16,8,8, +171,11,2,98,2,252,65,1,2,236,3,1,7,101,110,118,51,56,54,53,252, +99,1,2,252,99,1,2,252,99,1,18,158,2,101,8,173,18,158,2,252,64, +1,8,173,18,158,2,101,8,173,11,16,5,93,2,59,89,162,33,34,8,32, +9,223,0,27,249,22,209,20,15,159,36,33,40,196,27,28,248,80,158,36,33, +194,249,80,158,37,34,248,80,158,38,35,196,27,248,80,158,39,36,197,28,248, +80,158,39,33,193,249,80,158,40,34,248,80,158,41,35,195,27,248,80,158,42, +36,196,28,248,80,158,42,33,193,249,80,158,43,34,248,80,158,44,35,195,27, +248,80,158,45,36,196,28,248,80,158,45,37,193,248,80,158,45,38,193,11,11, +11,11,28,192,27,248,22,52,194,27,248,22,78,195,27,248,22,87,196,27,248, +22,88,197,249,80,158,41,39,201,27,250,22,61,200,199,198,27,20,15,159,43, +34,40,250,22,209,20,15,159,46,35,40,250,22,209,20,15,159,49,36,40,249, +22,60,20,15,159,51,37,40,250,22,209,20,15,159,54,38,40,251,22,62,20, +15,159,58,39,40,250,22,209,20,15,159,8,28,40,40,248,22,60,248,22,52, +23,21,20,15,159,8,28,41,40,248,22,78,23,17,248,22,80,23,17,20,15, +159,54,42,40,20,15,159,49,43,40,195,250,22,252,39,2,11,6,10,10,98, +97,100,32,115,121,110,116,97,120,196,33,20,98,159,33,16,7,2,65,2,68, +2,70,2,72,2,78,2,80,2,123,16,11,18,98,2,82,8,175,37,36,35, +16,4,8,174,11,2,237,3,1,7,101,110,118,51,56,55,49,252,100,1,18, +16,2,95,2,91,8,176,93,8,252,9,10,95,9,8,252,9,10,2,92,18, +100,2,93,8,179,37,36,35,8,174,16,10,8,178,11,3,1,4,103,53,48, +57,252,101,1,3,1,4,103,53,49,48,252,102,1,3,1,4,103,53,49,49, +252,103,1,3,1,4,103,53,49,50,252,104,1,3,1,7,101,110,118,51,56, +55,56,252,105,1,2,252,105,1,2,252,105,1,2,252,105,1,16,10,8,177, +11,2,98,2,179,65,98,111,100,121,49,252,106,1,2,252,26,1,3,1,7, +101,110,118,51,56,55,57,252,107,1,2,252,107,1,2,252,107,1,2,252,107, +1,18,158,2,101,8,179,18,158,67,99,97,108,108,47,99,99,252,108,1,8, +179,18,158,2,101,8,179,18,158,2,231,8,179,18,158,2,101,8,179,18,158, +2,101,8,179,18,158,2,101,8,179,18,158,2,101,8,179,11,16,5,93,2, +52,89,162,33,34,50,9,223,0,27,249,22,209,20,15,159,36,33,42,196,27, +28,248,80,158,36,33,194,249,80,158,37,34,248,80,158,38,35,196,27,248,80, +158,39,36,197,28,248,80,158,39,33,193,249,80,158,40,34,248,80,158,41,35, +195,27,248,80,158,42,36,196,28,248,80,158,42,33,193,249,80,158,43,37,27, +248,80,158,45,35,196,28,248,80,158,45,38,193,248,22,59,248,80,158,46,39, +194,11,27,248,80,158,45,36,196,28,248,80,158,45,33,193,249,80,158,46,34, +248,80,158,47,35,195,27,248,80,158,48,36,196,28,248,80,158,48,38,193,248, +80,158,48,39,193,11,11,11,11,11,28,192,27,248,22,52,194,27,248,22,78, +195,27,248,22,87,196,27,248,22,90,197,27,248,22,89,198,249,80,158,42,40, +202,27,251,22,61,202,200,199,201,27,20,15,159,44,34,42,91,159,34,11,90, +161,34,33,11,83,160,39,33,34,11,247,248,22,8,89,162,33,34,41,9,226, +13,2,3,1,250,22,31,89,162,33,33,37,9,225,6,3,7,90,161,34,34, +10,247,22,252,185,2,248,22,252,185,2,89,162,33,34,37,9,224,3,1,248, +193,89,162,33,33,37,9,224,2,3,28,248,22,252,182,2,193,248,22,252,187, +2,193,249,80,158,36,41,21,98,2,116,9,95,73,100,101,102,105,110,101,45, +115,116,114,117,99,116,252,109,1,64,98,97,115,101,252,110,1,94,65,102,105, +101,108,100,252,111,1,2,113,2,252,106,1,2,252,26,1,2,113,20,15,159, +36,35,42,89,162,33,33,55,9,225,6,5,4,27,250,22,209,20,15,159,39, +36,42,250,22,209,20,15,159,42,37,42,252,22,62,20,15,159,47,38,42,20, +15,159,47,39,42,250,22,209,20,15,159,50,40,42,250,22,60,20,15,159,53, +41,42,248,22,52,23,19,248,22,88,23,19,20,15,159,50,42,42,248,22,78, +205,248,22,87,205,20,15,159,42,43,42,197,89,162,33,33,34,9,223,0,192, +89,162,33,33,35,9,223,3,248,22,252,185,2,208,250,22,252,39,2,11,6, +10,10,98,97,100,32,115,121,110,116,97,120,196,33,20,98,159,33,16,9,2, +65,2,68,2,70,2,72,2,74,2,78,2,80,2,123,2,126,16,11,18,98, +2,82,8,181,37,36,35,16,4,8,180,11,2,237,3,1,7,101,110,118,51, +56,56,55,252,112,1,18,16,2,95,2,91,8,182,93,8,252,22,10,95,9, +8,252,22,10,2,92,18,16,2,99,2,113,8,187,93,8,252,22,10,16,6, +8,186,11,2,141,2,142,3,1,7,101,110,118,51,57,48,52,252,113,1,2, +252,113,1,16,4,8,185,11,2,152,3,1,7,101,110,118,51,57,48,53,252, +114,1,16,4,8,184,11,2,154,3,1,7,101,110,118,51,57,48,54,252,115, +1,16,4,8,183,11,2,156,3,1,7,101,110,118,51,57,48,56,252,116,1, +95,9,8,252,22,10,2,92,18,100,2,93,8,190,37,36,35,8,180,16,12, +8,189,11,3,1,4,103,53,49,51,252,117,1,3,1,4,103,53,49,52,252, +118,1,3,1,4,103,53,49,53,252,119,1,3,1,4,103,53,49,54,252,120, +1,3,1,4,103,53,49,55,252,121,1,3,1,7,101,110,118,51,56,57,54, +252,122,1,2,252,122,1,2,252,122,1,2,252,122,1,2,252,122,1,16,12, +8,188,11,2,98,2,252,110,1,2,252,111,1,2,252,106,1,2,252,26,1, +3,1,7,101,110,118,51,56,57,55,252,123,1,2,252,123,1,2,252,123,1, +2,252,123,1,2,252,123,1,18,158,2,101,8,190,18,158,2,116,8,190,18, +158,9,8,190,18,158,2,101,8,190,18,158,2,252,109,1,8,190,18,158,2, +101,8,190,18,158,2,101,8,190,11,16,5,93,2,62,87,95,83,159,33,93, +80,159,33,8,71,34,89,162,34,34,52,9,223,0,250,22,209,20,15,159,36, +58,47,251,22,60,20,15,159,40,59,47,250,22,209,20,15,159,43,8,27,47, +248,22,60,250,22,209,20,15,159,47,8,28,47,249,22,60,20,15,159,49,8, +29,47,248,22,52,23,18,20,15,159,47,8,30,47,20,15,159,43,8,31,47, +250,22,209,20,15,159,43,8,32,47,250,22,60,20,15,159,46,8,33,47,248, +22,52,23,15,248,22,87,23,15,20,15,159,43,8,34,47,250,22,209,20,15, +159,43,8,35,47,250,22,62,20,15,159,46,8,36,47,248,22,87,23,15,20, +15,159,46,8,37,47,20,15,159,43,8,38,47,20,15,159,36,8,39,47,83, +159,33,93,80,159,33,8,70,34,89,162,34,34,41,9,223,0,250,22,209,20, +15,159,36,48,47,249,22,60,248,22,52,199,248,22,78,199,20,15,159,36,49, +47,89,162,33,34,53,9,223,0,27,249,22,209,20,15,159,36,33,47,196,27, +28,248,80,158,36,33,194,249,80,158,37,34,248,80,158,38,35,196,27,248,80, +158,39,36,197,28,248,80,158,39,33,193,28,248,80,158,39,37,248,80,158,40, +35,194,27,248,80,158,40,36,194,28,248,80,158,40,33,193,249,80,158,41,34, +248,80,158,42,35,195,27,248,80,158,43,36,196,28,248,80,158,43,38,193,248, +80,158,43,39,193,11,11,11,11,11,28,192,27,248,22,52,194,27,248,22,78, +195,27,248,22,80,196,249,80,158,40,40,200,27,249,22,61,198,197,27,20,15, +159,42,34,47,250,22,209,20,15,159,45,35,47,250,22,209,20,15,159,48,36, +47,250,22,62,20,15,159,51,37,47,20,15,159,51,38,47,202,20,15,159,48, +39,47,195,27,28,248,80,158,37,33,195,249,80,158,38,34,248,80,158,39,35, +197,27,248,80,158,40,36,198,28,248,80,158,40,33,193,249,80,158,41,41,27, +248,80,158,43,35,196,28,248,80,158,43,38,193,248,22,8,89,162,33,34,40, +9,224,10,1,27,249,22,2,89,162,33,34,45,9,224,4,5,249,80,158,36, +42,28,248,80,158,37,33,197,249,80,158,38,34,248,80,158,39,35,199,27,248, +80,158,40,36,200,28,248,80,158,40,33,193,249,80,158,41,34,248,80,158,42, +35,195,248,80,158,42,37,248,80,158,43,36,196,11,11,194,248,80,158,38,39, +196,28,248,22,57,193,21,94,9,9,248,80,158,36,43,193,11,27,248,80,158, +43,36,196,28,248,80,158,43,33,193,249,80,158,44,34,248,80,158,45,35,195, +27,248,80,158,46,36,196,28,248,80,158,46,38,193,248,80,158,46,39,193,11, +11,11,11,28,192,27,248,22,52,194,27,248,22,78,195,27,248,22,87,196,27, +248,22,90,197,27,248,22,89,198,27,249,22,209,20,15,159,44,40,47,248,80, +158,45,44,27,20,15,159,46,41,47,250,22,209,20,15,159,49,42,47,203,195, +27,28,248,80,158,44,38,194,248,80,158,44,39,194,11,28,192,249,80,158,45, +40,205,27,252,22,61,200,205,204,202,203,27,20,15,159,47,43,47,91,159,34, +11,90,161,34,33,11,83,160,39,33,34,11,247,248,22,8,89,162,33,34,41, +9,226,16,2,3,1,250,22,31,89,162,33,33,37,9,225,6,3,7,90,161, +34,34,10,247,22,252,185,2,248,22,252,185,2,89,162,33,34,37,9,224,3, +1,248,193,89,162,33,33,37,9,224,2,3,28,248,22,252,182,2,193,248,22, +252,187,2,193,249,80,158,36,45,21,95,2,116,94,94,63,116,109,112,252,124, +1,2,251,2,113,95,2,116,93,94,64,115,119,97,112,252,125,1,96,2,231, +9,96,2,116,93,94,2,203,2,252,124,1,95,2,252,64,1,2,252,124,1, +64,110,97,109,101,252,126,1,95,2,252,64,1,2,252,126,1,2,203,2,113, +96,72,100,121,110,97,109,105,99,45,119,105,110,100,252,127,1,2,252,125,1, +97,2,231,9,2,252,106,1,2,252,26,1,2,113,2,252,125,1,20,15,159, +36,44,47,89,162,33,33,8,40,9,225,6,5,4,27,250,22,209,20,15,159, +39,45,47,250,22,209,20,15,159,42,46,47,250,22,60,20,15,159,45,47,47, +250,22,2,80,159,48,8,70,34,248,22,52,206,248,22,87,206,250,22,209,20, +15,159,48,50,47,250,22,60,20,15,159,51,51,47,250,22,209,20,15,159,54, +52,47,248,22,60,250,22,209,20,15,159,58,53,47,249,22,60,20,15,159,8, +27,54,47,250,22,209,20,15,159,8,30,55,47,250,22,62,20,15,159,8,33, +56,47,20,15,159,8,33,57,47,252,22,2,80,159,8,38,8,71,34,248,22, +52,23,37,248,22,52,23,37,248,22,78,23,37,248,22,78,23,37,20,15,159, +8,30,8,40,47,20,15,159,58,8,41,47,20,15,159,54,8,42,47,250,22, +209,20,15,159,54,8,43,47,251,22,62,20,15,159,58,8,44,47,20,15,159, +58,8,45,47,250,22,209,20,15,159,8,28,8,46,47,251,22,62,20,15,159, +8,32,8,47,47,20,15,159,8,32,8,48,47,248,22,89,23,31,248,22,90, +23,31,20,15,159,8,28,8,49,47,20,15,159,58,8,50,47,20,15,159,54, +8,51,47,20,15,159,48,8,52,47,20,15,159,42,8,53,47,197,89,162,33, +33,34,9,223,0,192,89,162,33,33,35,9,223,3,248,22,252,185,2,208,248, +80,158,44,46,20,15,159,44,8,54,47,250,22,252,39,2,11,6,10,10,98, +97,100,32,115,121,110,116,97,120,197,33,20,98,159,35,16,14,2,65,2,68, +2,70,2,72,2,76,2,78,2,80,2,123,2,74,2,185,2,187,2,252,69, +1,2,126,2,189,16,55,18,98,2,82,8,192,37,36,35,16,4,8,191,11, +2,237,3,1,7,101,110,118,51,57,49,53,252,128,1,18,16,2,95,2,91, +8,193,93,8,252,41,10,95,9,8,252,41,10,2,92,18,100,2,93,8,196, +37,36,35,8,191,16,8,8,195,11,3,1,4,103,53,50,51,252,129,1,3, +1,4,103,53,50,52,252,130,1,3,1,4,103,53,50,53,252,131,1,3,1, +7,101,110,118,51,57,50,50,252,132,1,2,252,132,1,2,252,132,1,16,8, +8,194,11,2,98,2,252,106,1,2,252,26,1,3,1,7,101,110,118,51,57, +50,51,252,133,1,2,252,133,1,2,252,133,1,18,158,2,101,8,196,18,158, +2,116,8,196,18,158,9,8,196,18,158,2,101,8,196,18,100,2,82,8,199, +37,36,35,8,191,16,12,8,198,11,3,1,4,103,53,49,56,252,134,1,3, +1,4,103,53,49,57,252,135,1,3,1,4,103,53,50,48,252,136,1,3,1, +4,103,53,50,49,252,137,1,3,1,4,103,53,50,50,252,138,1,3,1,7, +101,110,118,51,57,51,57,252,139,1,2,252,139,1,2,252,139,1,2,252,139, +1,2,252,139,1,16,12,8,197,11,2,98,2,252,126,1,2,251,2,252,106, +1,2,252,26,1,3,1,7,101,110,118,51,57,52,48,252,140,1,2,252,140, +1,2,252,140,1,2,252,140,1,2,252,140,1,18,16,2,95,2,91,8,200, +93,8,252,44,10,95,9,8,252,44,10,2,92,18,158,2,93,8,199,18,16, +2,95,2,91,8,201,93,8,252,47,10,95,9,8,252,47,10,2,92,18,16, +2,99,2,113,8,206,93,8,252,47,10,16,6,8,205,11,2,141,2,142,3, +1,7,101,110,118,51,57,53,54,252,141,1,2,252,141,1,16,4,8,204,11, +2,152,3,1,7,101,110,118,51,57,53,55,252,142,1,16,4,8,203,11,2, +154,3,1,7,101,110,118,51,57,53,56,252,143,1,16,4,8,202,11,2,156, +3,1,7,101,110,118,51,57,54,48,252,144,1,95,9,8,252,47,10,2,92, +18,102,2,93,8,209,37,36,35,8,191,8,198,8,197,16,4,8,208,11,3, +1,4,103,53,50,56,252,145,1,3,1,7,101,110,118,51,57,53,50,252,146, +1,16,4,8,207,11,2,252,124,1,3,1,7,101,110,118,51,57,53,51,252, +147,1,18,158,2,101,8,209,18,158,2,116,8,209,18,158,2,101,8,209,18, +158,2,101,8,209,18,158,2,101,8,209,18,158,2,116,8,209,18,158,2,101, +8,209,18,158,2,101,8,209,18,158,2,252,125,1,8,209,18,158,2,101,8, +209,18,158,2,231,8,209,18,158,9,8,209,18,158,2,101,8,209,18,158,2, +116,8,209,18,158,2,101,8,209,18,158,2,101,8,209,18,158,2,203,8,209, +18,158,2,101,8,209,18,158,2,101,8,209,18,158,2,101,8,209,18,158,2, +252,64,1,8,209,18,158,2,101,8,209,18,158,2,101,8,209,18,158,2,252, +64,1,8,209,18,16,2,106,93,16,2,158,2,203,8,209,9,8,214,8,28, +8,27,59,58,57,56,13,16,4,34,2,135,2,92,11,93,8,252,47,10,16, +6,8,213,11,2,141,2,142,2,252,141,1,2,252,141,1,16,4,8,212,11, +2,152,2,252,142,1,16,4,8,211,11,2,154,2,252,143,1,16,4,8,210, +11,64,118,97,108,115,252,148,1,3,1,7,101,110,118,51,57,54,54,252,149, +1,95,9,8,252,47,10,2,92,18,158,2,101,8,209,18,158,2,101,8,209, +18,158,2,101,8,209,18,158,2,101,8,209,18,158,2,101,8,209,18,158,2, +101,8,209,18,158,2,252,127,1,8,209,18,158,2,252,125,1,8,209,18,158, +2,101,8,209,18,158,2,231,8,209,18,158,9,8,209,18,158,2,101,8,209, +18,16,2,105,93,16,2,158,2,252,125,1,8,209,9,8,215,8,28,8,27, +59,58,57,56,13,16,4,34,2,135,2,92,11,93,8,252,47,10,8,213,8, +212,8,211,95,9,8,252,47,10,2,92,18,158,2,101,8,209,18,158,2,101, +8,209,18,158,2,101,8,209,18,16,2,158,94,16,2,98,2,252,124,1,8, +219,93,8,252,43,10,16,4,8,218,11,3,1,8,119,115,116,109,112,53,50, +54,252,150,1,3,1,7,101,110,118,51,57,52,55,252,151,1,16,4,8,217, +11,3,1,4,103,53,50,55,252,152,1,3,1,7,101,110,118,51,57,55,49, +252,153,1,16,4,8,216,11,2,223,3,1,7,101,110,118,51,57,55,50,252, +154,1,9,16,2,158,2,113,8,219,9,8,219,95,9,8,252,43,10,2,190, +11,16,5,93,2,58,89,162,33,34,8,41,9,223,0,27,249,22,209,20,15, +159,36,33,40,196,27,28,248,80,158,36,33,194,249,80,158,37,34,248,80,158, +38,35,196,27,248,80,158,39,36,197,28,248,80,158,39,33,193,249,80,158,40, +34,248,80,158,41,35,195,27,248,80,158,42,36,196,28,248,80,158,42,37,193, +248,80,158,42,38,193,11,11,11,28,192,27,248,22,52,194,27,248,22,78,195, +27,248,22,80,196,249,80,158,40,39,200,27,249,22,61,198,197,27,20,15,159, +42,34,40,250,22,209,20,15,159,45,35,40,250,22,209,20,15,159,48,36,40, +250,22,62,20,15,159,51,37,40,250,22,209,20,15,159,54,38,40,248,22,60, +250,22,209,20,15,159,58,39,40,249,22,60,20,15,159,8,27,40,40,250,22, +209,20,15,159,8,30,41,40,250,22,62,20,15,159,8,33,42,40,250,22,209, +20,15,159,8,36,43,40,250,22,62,20,15,159,8,39,44,40,20,15,159,8, +39,45,40,23,31,20,15,159,8,36,46,40,20,15,159,8,33,47,40,20,15, +159,8,30,48,40,20,15,159,58,49,40,20,15,159,54,50,40,20,15,159,51, +51,40,20,15,159,48,52,40,195,250,22,252,39,2,11,6,10,10,98,97,100, +32,115,121,110,116,97,120,196,33,20,98,159,33,16,7,2,65,2,68,2,70, +2,72,2,78,2,80,2,123,16,20,18,98,2,82,8,221,37,36,35,16,4, +8,220,11,2,237,3,1,7,101,110,118,51,57,55,53,252,155,1,18,16,2, +95,2,91,8,222,93,8,252,58,10,95,9,8,252,58,10,2,92,18,100,2, +93,8,225,37,36,35,8,220,16,8,8,224,11,3,1,4,103,53,50,57,252, +156,1,3,1,4,103,53,51,48,252,157,1,3,1,4,103,53,51,49,252,158, +1,3,1,7,101,110,118,51,57,56,49,252,159,1,2,252,159,1,2,252,159, +1,16,8,8,223,11,2,98,2,235,2,236,3,1,7,101,110,118,51,57,56, +50,252,160,1,2,252,160,1,2,252,160,1,18,158,2,101,8,225,18,158,2, +252,62,1,8,225,18,158,2,101,8,225,18,158,2,101,8,225,18,158,96,16, +2,158,2,112,8,225,9,16,2,158,63,99,112,117,252,161,1,8,225,9,16, +2,158,64,117,115,101,114,252,162,1,8,225,9,16,2,158,62,103,99,252,163, +1,8,225,9,8,225,18,158,2,101,8,225,18,158,70,116,105,109,101,45,97, +112,112,108,121,252,164,1,8,225,18,158,2,101,8,225,18,158,2,231,8,225, +18,158,9,8,225,18,158,2,101,8,225,18,16,2,103,93,16,2,158,64,110, +117,108,108,252,165,1,8,225,9,8,227,8,28,8,27,59,58,57,56,13,16, +4,34,2,135,2,92,11,93,8,252,58,10,16,6,8,226,11,2,141,2,142, +3,1,7,101,110,118,51,57,56,55,252,166,1,2,252,166,1,95,9,8,252, +58,10,2,92,18,158,2,101,8,225,18,158,2,101,8,225,18,158,2,101,8, +225,18,16,2,158,94,16,2,158,97,158,66,112,114,105,110,116,102,252,167,1, +8,225,158,6,40,40,99,112,117,32,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,8,225,158,2,252,161,1,8,225,158,2,252,162,1,8,225,158, +2,252,163,1,8,225,8,225,9,16,2,158,95,158,2,252,39,1,8,225,158, +2,252,40,1,8,225,158,2,112,8,225,8,225,9,8,227,95,9,8,252,58, +10,2,92,18,158,2,101,8,225,11,100,83,159,33,97,80,159,33,33,34,80, +159,33,34,34,80,159,33,35,34,80,159,33,36,34,80,159,33,37,34,27,247, +22,252,114,2,87,94,28,192,28,248,22,252,113,2,193,12,250,22,252,40,2, +2,252,109,1,6,15,15,105,110,115,112,101,99,116,111,114,32,111,114,32,35, +102,195,12,91,159,38,11,90,161,38,33,11,254,22,252,91,2,2,86,11,34, +33,11,9,204,252,22,7,197,198,199,250,22,252,93,2,203,33,61,112,252,168, +1,250,22,252,94,2,204,33,2,252,168,1,83,159,33,93,80,159,33,38,34, +89,162,33,34,40,2,14,223,0,87,94,28,248,80,159,34,35,35,194,12,250, +22,252,40,2,2,14,6,7,7,112,114,111,109,105,115,101,196,27,248,80,159, +35,36,35,195,28,248,22,0,193,27,249,22,6,195,22,59,87,94,28,248,22, +0,248,80,159,37,36,35,197,249,80,159,37,37,35,197,194,12,249,22,1,22, +7,248,80,159,38,36,35,198,249,22,1,22,7,194,83,159,33,93,80,159,33, +39,34,89,162,33,33,37,2,16,223,0,248,80,158,34,40,249,22,19,11,80, +158,36,41,83,159,33,93,80,159,33,42,34,89,162,33,35,41,2,23,223,0, +87,95,28,248,22,252,223,2,194,12,252,22,252,40,2,2,23,6,16,16,112, +97,114,97,109,101,116,101,114,105,122,97,116,105,111,110,33,198,199,28,28,248, +22,0,195,249,22,34,196,33,11,12,252,22,252,40,2,2,23,6,19,19,112, +114,111,99,101,100,117,114,101,32,40,97,114,105,116,121,32,48,41,34,198,199, +20,14,159,80,158,33,41,193,247,194,83,159,33,97,80,159,33,43,34,80,159, +33,44,34,80,159,33,45,34,80,159,33,46,34,80,159,33,47,34,252,22,252, +91,2,2,85,11,34,33,11,83,159,33,97,80,159,33,48,34,80,159,33,49, +34,80,159,33,50,34,80,159,33,51,34,80,159,33,52,34,27,247,22,252,114, +2,87,94,28,192,28,248,22,252,9,2,248,22,252,113,2,194,250,22,252,40, +2,2,252,109,1,6,15,15,105,110,115,112,101,99,116,111,114,32,111,114,32, +35,102,195,12,12,91,159,38,11,90,161,38,33,11,254,22,252,91,2,2,85, +11,34,33,11,9,204,252,22,7,197,198,199,250,22,252,93,2,203,33,64,99, +101,108,108,252,169,1,250,22,252,94,2,204,33,2,252,169,1,83,159,33,93, +80,159,33,53,34,89,162,33,33,37,2,45,223,0,248,80,159,34,44,35,249, +22,19,11,80,158,36,54,83,159,33,93,80,159,33,55,34,89,162,33,35,41, +2,49,223,0,87,95,28,248,80,159,34,45,35,194,12,252,22,252,40,2,2, +49,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,33,198,199,28,28,248,22,0,195,249,22,34,196,33,11,12, +252,22,252,40,2,2,23,6,19,19,112,114,111,99,101,100,117,114,101,32,40, +97,114,105,116,121,32,48,41,34,198,199,83,158,37,20,93,94,20,14,159,80, +158,33,54,249,80,159,35,46,35,195,33,87,94,247,80,158,33,56,247,194,247, +80,158,33,56,96,68,35,37,107,101,114,110,101,108,252,170,1,2,84,2,83, +2,18,96,2,252,170,1,2,66,2,88,2,87,0}; + EVAL_ONE_SIZED_STR((char *)expr, 22441); + } + { + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,53,50,46,49,252,177,1,252,130,50,159,33,20,98,159,33,16, +1,20,24,65,98,101,103,105,110,0,16,0,83,158,40,20,95,114,66,35,37, +109,105,115,99,1,29,2,11,11,10,10,10,45,80,158,33,33,20,98,159,39, +16,47,30,3,2,2,72,112,97,116,104,45,115,116,114,105,110,103,63,4,254, +1,30,5,2,2,70,45,114,101,58,115,117,102,102,105,120,6,254,1,30,7, +2,2,79,112,97,116,104,45,114,101,112,108,97,99,101,45,115,117,102,102,105, +120,8,254,1,30,9,2,2,64,98,115,98,115,10,254,1,30,11,2,2,76, +110,111,114,109,97,108,45,99,97,115,101,45,112,97,116,104,12,254,1,30,13, +2,2,71,114,97,116,105,111,110,97,108,105,122,101,14,254,1,30,15,2,2, +1,20,114,101,97,100,45,101,118,97,108,45,112,114,105,110,116,45,108,111,111, +112,16,254,1,30,17,2,2,67,108,111,97,100,47,99,100,18,254,1,30,19, +2,2,65,45,108,111,97,100,20,254,1,30,21,2,2,73,108,111,97,100,45, +114,101,108,97,116,105,118,101,22,254,1,30,23,2,2,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,24,254, +1,30,25,2,2,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,26,254,1,30,27,2,2,1, +20,102,105,110,100,45,101,120,101,99,117,116,97,98,108,101,45,112,97,116,104, +28,254,1,30,29,2,2,74,45,99,104,101,99,107,45,114,101,108,112,97,116, +104,30,254,1,30,31,2,2,77,45,99,104,101,99,107,45,99,111,108,108,101, +99,116,105,111,110,32,254,1,30,33,2,2,69,45,102,105,110,100,45,99,111, +108,34,254,1,30,35,2,2,70,100,108,108,45,115,117,102,102,105,120,36,254, +1,30,37,2,2,70,95,108,111,97,100,101,114,46,115,111,38,254,1,30,39, +2,2,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,40,254,1,30,41,68,35,37,112,97,114,97,109, +122,42,1,20,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111,110,45, +107,101,121,43,254,1,30,44,2,42,1,23,101,120,116,101,110,100,45,112,97, +114,97,109,101,116,101,114,105,122,97,116,105,111,110,45,254,1,30,46,2,2, +75,99,111,108,108,101,99,116,105,111,110,45,112,97,116,104,47,254,1,30,48, +2,2,77,108,111,97,100,47,117,115,101,45,99,111,109,112,105,108,101,100,49, +254,1,30,50,2,2,67,45,114,101,58,100,105,114,51,254,1,30,52,2,2, +68,45,114,101,58,97,117,116,111,53,254,1,30,54,2,2,74,45,114,101,58, +111,107,45,114,101,108,112,97,116,104,55,254,1,30,56,2,2,1,24,45,109, +111,100,117,108,101,45,104,97,115,104,45,116,97,98,108,101,45,116,97,98,108, +101,57,254,1,30,58,2,2,71,45,112,97,116,104,45,99,97,99,104,101,59, +254,1,30,60,2,2,77,45,108,111,97,100,105,110,103,45,102,105,108,101,110, +97,109,101,61,254,1,30,62,2,2,71,45,112,114,101,118,45,114,101,108,116, +111,63,254,1,30,64,2,2,75,45,112,114,101,118,45,114,101,108,116,111,45, +100,105,114,65,254,1,30,66,2,2,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,67,254,1,30,68,2,2,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, +69,254,1,30,70,2,2,65,112,111,114,116,63,71,254,1,30,72,2,2,72, +115,116,114,117,99,116,58,103,117,97,114,100,73,254,1,30,74,2,2,70,109, +97,107,101,45,103,117,97,114,100,75,254,1,30,76,2,2,66,103,117,97,114, +100,63,77,254,1,30,78,2,2,69,103,117,97,114,100,45,114,101,102,79,254, +1,30,80,2,2,70,103,117,97,114,100,45,115,101,116,33,81,254,1,30,82, +2,2,69,103,117,97,114,100,45,101,118,116,83,254,1,30,84,2,2,71,99, +104,97,110,110,101,108,45,103,101,116,85,254,1,30,86,2,2,75,99,104,97, +110,110,101,108,45,116,114,121,45,103,101,116,87,254,1,30,88,2,2,71,99, +104,97,110,110,101,108,45,112,117,116,89,254,1,30,90,2,2,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, +91,254,1,30,92,2,2,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,93,254,1,30,94,2,2,67, +109,107,45,114,53,114,115,95,254,1,30,96,2,2,76,110,117,108,108,45,101, +110,118,105,114,111,110,109,101,110,116,97,254,1,16,0,11,11,16,22,2,32, +2,30,2,34,2,20,2,61,2,57,2,59,2,63,2,65,2,53,2,51,2, +55,2,6,2,38,2,10,2,36,2,79,2,81,2,77,2,75,2,95,2,73, +55,11,16,24,2,85,2,89,2,87,2,47,2,40,2,28,2,69,2,83,2, +91,2,22,2,24,2,18,2,49,2,67,2,12,2,97,2,26,2,8,2,4, +2,71,2,14,2,16,2,93,79,109,101,109,111,114,121,45,116,114,97,99,101, +45,108,97,109,98,100,97,98,16,24,11,11,11,11,11,11,11,11,11,11,11, +11,11,11,11,11,11,11,11,11,11,11,11,11,16,24,2,85,2,89,2,87, +2,47,2,40,2,28,2,69,2,83,2,91,2,22,2,24,2,18,2,49,2, +67,2,12,2,97,2,26,2,8,2,4,2,71,2,14,2,16,2,93,2,98, +56,57,93,16,5,93,2,98,89,162,33,34,8,64,9,223,0,27,249,22,209, +20,15,159,36,33,39,196,27,28,248,80,158,36,33,194,249,80,158,37,34,248, +80,158,38,35,196,27,248,80,158,39,36,197,28,248,80,158,39,33,193,249,80, +158,40,34,248,80,158,41,35,195,27,248,80,158,42,36,196,28,248,80,158,42, +37,193,248,80,158,42,38,193,11,11,11,28,192,27,248,22,52,194,27,248,22, +78,195,27,248,22,80,196,27,249,22,209,20,15,159,41,34,39,249,22,209,203, +247,22,48,27,249,22,209,20,15,159,42,35,39,249,22,209,204,247,22,48,27, +249,22,209,20,15,159,43,36,39,249,22,209,205,247,22,48,27,252,22,61,202, +201,198,199,200,27,20,15,159,43,37,39,250,22,209,20,15,159,46,38,39,250, +22,209,20,15,159,49,39,39,250,22,60,20,15,159,52,40,39,250,22,209,20, +15,159,55,41,39,248,22,60,250,22,209,20,15,159,59,42,39,249,22,56,248, +22,89,23,20,20,15,159,8,28,43,39,20,15,159,59,44,39,20,15,159,55, +45,39,250,22,209,20,15,159,55,46,39,251,22,60,20,15,159,59,47,39,250, +22,209,20,15,159,8,29,48,39,248,22,60,250,22,209,20,15,159,8,33,49, +39,249,22,60,248,22,90,23,27,250,22,209,20,15,159,8,38,50,39,250,22, +60,20,15,159,8,41,51,39,248,22,52,23,33,250,22,209,20,15,159,8,44, +52,39,250,22,60,20,15,159,8,47,53,39,250,22,209,20,15,159,8,50,54, +39,248,22,60,250,22,209,20,15,159,8,54,55,39,249,22,60,248,22,87,23, +48,250,22,209,20,15,159,8,59,56,39,249,22,60,20,15,159,8,61,57,39, +248,22,89,23,53,20,15,159,8,59,58,39,20,15,159,8,54,59,39,20,15, +159,8,50,8,27,39,250,22,209,20,15,159,8,50,8,28,39,251,22,62,20, +15,159,8,54,8,29,39,20,15,159,8,54,8,30,39,248,22,87,23,46,248, +22,78,23,46,20,15,159,8,50,8,31,39,20,15,159,8,44,8,32,39,20, +15,159,8,38,8,33,39,20,15,159,8,33,8,34,39,20,15,159,8,29,8, +35,39,250,22,209,20,15,159,8,29,8,36,39,250,22,60,20,15,159,8,32, +8,37,39,248,22,89,23,24,250,22,209,20,15,159,8,35,8,38,39,249,22, +60,20,15,159,8,37,8,39,39,248,22,90,23,29,20,15,159,8,35,8,40, +39,20,15,159,8,29,8,41,39,248,22,90,23,18,20,15,159,55,8,42,39, +20,15,159,49,8,43,39,195,250,22,252,39,2,11,6,10,10,98,97,100,32, +115,121,110,116,97,120,196,33,20,98,159,33,16,6,30,99,65,35,37,115,116, +120,100,69,115,116,120,45,112,97,105,114,63,101,11,30,102,2,100,67,99,111, +110,115,47,35,102,103,1,30,104,2,100,67,115,116,120,45,99,97,114,105,5, +30,106,2,100,67,115,116,120,45,99,100,114,107,6,30,108,2,100,69,115,116, +120,45,108,105,115,116,63,109,8,30,110,2,100,69,115,116,120,45,62,108,105, +115,116,111,4,16,44,18,98,64,104,101,114,101,112,39,98,37,10,33,11,96, +159,68,35,37,100,101,102,105,110,101,113,9,11,159,70,35,37,109,101,109,116, +114,97,99,101,114,9,11,159,74,35,37,115,109,97,108,108,45,115,99,104,101, +109,101,115,9,11,159,73,35,37,109,111,114,101,45,115,99,104,101,109,101,116, +9,11,16,92,2,79,2,2,2,53,2,2,2,30,2,2,2,69,2,2,2, +93,2,2,2,61,2,2,2,67,2,2,2,97,2,2,2,55,2,2,2,22, +2,2,2,47,2,2,2,71,2,2,2,40,2,2,2,59,2,2,2,34,2, +2,2,91,2,2,2,24,2,2,2,85,2,2,2,98,2,2,2,81,2,2, +2,16,2,2,2,12,2,2,2,36,2,2,2,20,2,2,2,51,2,2,2, +6,2,2,2,73,2,2,2,65,2,2,2,28,2,2,2,63,2,2,2,26, +2,2,2,89,2,2,2,87,2,2,2,49,2,2,2,95,2,2,2,57,2, +2,2,32,2,2,2,10,2,2,2,83,2,2,2,14,2,2,2,8,2,2, +2,75,2,2,2,38,2,2,2,77,2,2,2,4,2,2,2,18,2,2,98, +36,10,34,11,94,159,76,35,37,115,116,120,99,97,115,101,45,115,99,104,101, +109,101,117,9,11,159,2,100,9,11,16,0,96,35,8,254,1,11,16,0,16, +4,34,11,61,120,118,3,1,7,101,110,118,52,48,49,50,119,18,100,2,112, +42,37,36,35,34,16,8,41,11,3,1,4,103,53,51,50,120,3,1,4,103, +53,51,51,121,3,1,4,103,53,51,52,122,3,1,7,101,110,118,52,48,49, +56,123,2,123,2,123,16,8,40,11,61,95,124,64,97,114,103,115,125,64,98, +111,100,121,126,3,1,7,101,110,118,52,48,49,57,127,2,127,2,127,18,158, +2,112,42,18,158,2,112,42,18,16,2,95,66,115,114,99,116,97,103,128,43, +93,8,252,107,10,95,9,8,252,107,10,69,35,37,115,116,120,99,97,115,101, +129,18,106,64,100,101,115,116,130,50,37,36,35,34,41,40,16,4,49,11,3, +1,4,103,53,51,57,131,3,1,7,101,110,118,52,48,51,49,132,16,4,48, +11,68,99,111,110,116,109,97,114,107,133,3,1,7,101,110,118,52,48,51,50, +134,16,4,47,11,3,1,4,103,53,52,49,135,3,1,7,101,110,118,52,48, +52,49,136,16,4,46,11,64,102,117,110,99,137,3,1,7,101,110,118,52,48, +52,50,138,16,4,45,11,3,1,4,103,53,52,51,139,3,1,7,101,110,118, +52,48,53,49,140,16,4,44,11,67,110,101,119,109,97,114,107,141,3,1,7, +101,110,118,52,48,53,50,142,18,158,63,99,116,120,143,50,18,158,63,108,101, +116,144,50,18,158,2,143,50,18,158,2,143,50,18,16,2,103,93,16,2,158, +11,50,9,58,98,57,10,33,11,94,159,2,115,9,11,159,2,100,9,11,16, +6,73,115,121,110,116,97,120,45,99,97,115,101,42,42,145,29,146,11,11,66, +115,121,110,116,97,120,147,2,146,1,20,101,108,108,105,112,115,105,115,45,99, +111,117,110,116,45,101,114,114,111,114,148,2,146,98,56,10,34,11,95,159,64, +35,37,115,99,149,9,11,159,2,115,9,11,159,2,100,9,11,16,0,96,55, +8,254,1,11,16,0,16,4,54,11,2,118,3,1,6,101,110,118,51,56,50, +150,16,4,53,11,68,104,101,114,101,45,115,116,120,151,3,1,6,101,110,118, +51,56,52,152,16,4,52,11,2,151,2,152,13,16,4,34,2,146,2,129,11, +93,8,252,107,10,16,6,51,11,61,114,153,63,115,114,99,154,3,1,7,101, +110,118,52,48,53,53,155,2,155,95,9,8,252,107,10,2,129,18,158,2,143, +50,18,158,2,143,50,18,158,2,143,50,18,158,2,144,50,18,158,2,143,50, +18,158,2,143,50,18,158,2,143,50,18,158,66,108,97,109,98,100,97,156,50, +18,158,2,143,50,18,158,2,144,50,18,158,2,143,50,18,158,2,143,50,18, +158,2,143,50,18,158,1,31,117,110,105,111,110,101,100,45,109,101,109,116,114, +97,99,101,45,116,114,97,99,107,105,110,103,45,118,97,108,117,101,157,50,18, +158,2,143,50,18,158,2,143,50,18,158,2,143,50,18,158,2,143,50,18,158, +1,22,119,105,116,104,45,99,111,110,116,105,110,117,97,116,105,111,110,45,109, +97,114,107,158,50,18,158,1,30,109,101,109,111,114,121,45,116,114,97,99,101, +45,99,111,110,116,105,110,117,97,116,105,111,110,45,109,97,114,107,159,50,18, +158,2,143,50,18,158,2,143,50,18,158,2,143,50,18,158,2,143,50,18,158, +2,143,50,18,158,2,143,50,18,158,64,115,101,116,33,160,50,18,158,2,143, +50,18,158,1,30,110,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,161,50,18,158,2,143,50, +18,158,2,143,50,18,158,2,143,50,18,158,2,143,50,11,140,83,159,33,93, +80,159,33,8,52,34,89,162,33,34,43,64,108,111,111,112,162,223,0,28,248, +22,57,194,9,27,248,22,52,195,27,28,248,22,252,40,3,194,193,28,248,22, +252,39,3,194,249,22,252,41,3,195,250,80,159,40,45,35,248,22,252,54,3, +69,101,120,101,99,45,102,105,108,101,163,11,10,250,80,159,38,45,35,248,22, +252,54,3,2,163,196,10,28,192,249,22,51,248,22,252,43,3,249,22,252,41, +3,197,247,22,252,55,3,248,80,159,38,8,52,34,248,22,53,199,248,80,159, +36,8,52,34,248,22,53,197,83,159,33,93,80,159,33,8,51,34,89,162,33, +35,44,2,162,223,0,27,249,22,252,65,3,80,159,36,56,35,197,28,192,249, +80,159,36,8,51,34,249,22,252,36,3,198,27,248,22,78,198,28,249,22,252, +194,1,194,5,1,46,64,115,97,109,101,164,28,249,22,252,194,1,194,5,2, +46,46,62,117,112,165,248,22,252,29,3,193,248,22,87,195,249,22,252,36,3, +196,248,22,252,29,3,198,83,159,33,93,80,159,33,8,50,34,89,162,33,34, +46,67,103,101,116,45,100,105,114,166,223,0,27,28,194,28,249,22,252,11,2, +196,80,159,36,8,29,35,80,159,34,8,30,35,27,248,22,252,213,1,248,22, +44,197,28,249,22,252,66,3,80,159,37,57,35,194,91,159,36,11,90,161,36, +33,11,248,22,252,37,3,248,22,252,29,3,250,22,252,197,1,200,34,248,22, +252,191,1,201,87,95,83,160,35,11,80,159,38,8,29,35,198,83,160,35,11, +80,159,38,8,30,35,192,192,11,11,28,192,192,27,247,22,252,90,1,28,192, +192,247,22,252,55,3,83,159,33,93,80,159,33,8,49,34,89,162,33,34,37, +9,223,0,249,80,159,35,46,35,2,47,195,83,159,33,93,80,159,33,8,48, +34,89,162,33,35,41,68,119,105,116,104,45,100,105,114,167,223,0,20,14,159, +80,158,33,52,250,80,158,36,53,249,22,19,11,80,158,38,52,22,252,90,1, +28,248,22,252,25,3,197,196,247,22,252,55,3,247,194,83,159,33,93,80,159, +33,8,47,34,89,162,33,36,37,66,103,101,116,45,115,111,168,223,0,89,162, +33,34,45,9,226,0,1,3,2,252,22,252,36,3,199,201,6,6,6,110,97, +116,105,118,101,247,22,252,220,1,28,198,249,80,159,43,35,35,199,80,159,43, +49,35,197,83,159,33,93,80,159,33,33,34,32,169,89,162,33,34,37,2,4, +222,27,248,22,252,25,3,194,28,192,192,28,248,22,252,136,1,194,27,248,22, +252,38,3,195,28,192,192,248,22,252,39,3,195,11,83,159,33,93,80,159,33, +34,34,248,22,252,63,3,5,12,40,91,46,93,91,94,46,93,42,124,41,36, +83,159,33,93,80,159,33,35,34,89,162,33,35,46,2,8,223,0,87,95,28, +27,248,22,252,25,3,195,28,192,192,28,248,22,252,136,1,195,27,248,22,252, +38,3,196,28,192,192,248,22,252,39,3,196,11,12,252,22,252,40,2,2,8, +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,33,198,199,28,28,248,22,252,136,1,195,10,248,22, +252,188,1,195,12,252,22,252,40,2,2,8,6,21,21,115,116,114,105,110,103, +32,111,114,32,98,121,116,101,32,115,116,114,105,110,103,34,198,199,91,159,36, +11,90,161,36,33,11,248,22,252,37,3,197,87,94,28,192,12,250,22,252,41, +2,2,8,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,248,22,252,29,3,250,22,252,71,3,80,159,41,34,35,248,22,252,27, +3,199,28,248,22,252,136,1,203,249,22,252,212,1,204,8,63,202,28,248,22, +252,25,3,194,249,22,252,36,3,195,194,192,83,159,33,93,80,159,33,36,34, +249,22,252,138,1,7,92,7,92,83,159,33,93,80,159,33,37,34,89,162,33, +34,44,2,12,223,0,87,94,28,27,248,22,252,25,3,195,28,192,192,28,248, +22,252,136,1,195,27,248,22,252,38,3,196,28,192,192,248,22,252,39,3,196, +11,12,250,22,252,40,2,76,110,111,114,109,97,108,45,112,97,116,104,45,99, +97,115,101,170,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,28,249,22,252,11,2,247,22,252, +219,1,67,119,105,110,100,111,119,115,171,27,28,248,22,252,136,1,195,194,248, +22,252,26,3,195,28,249,22,252,66,3,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,252,136,1,195, +248,22,252,28,3,195,194,27,248,22,252,175,1,194,248,22,252,28,3,250,22, +252,72,3,0,6,35,114,120,34,47,34,28,249,22,252,66,3,0,22,35,114, +120,34,91,47,92,92,93,91,46,32,93,43,91,47,92,92,93,42,36,34,198, +196,250,22,252,72,3,0,19,35,114,120,34,91,32,46,93,43,40,91,47,92, +92,93,42,41,36,34,199,6,2,2,92,49,80,159,39,36,35,28,249,22,252, +11,2,247,22,252,219,1,65,109,97,99,111,115,172,248,22,252,28,3,248,22, +252,175,1,28,248,22,252,136,1,196,195,248,22,252,26,3,196,28,248,22,252, +136,1,194,248,22,252,28,3,194,193,83,159,33,93,80,159,33,38,34,91,159, +35,11,90,161,34,34,11,32,173,89,162,33,34,37,65,99,104,101,99,107,174, +222,28,248,22,130,193,12,250,22,252,40,2,2,14,6,4,4,114,101,97,108, +195,20,12,95,34,89,162,33,35,44,2,14,224,0,1,87,95,248,193,195,248, +193,196,27,248,22,176,197,27,249,22,173,198,195,27,249,22,172,199,196,28,249, +22,181,199,199,28,250,22,184,196,33,195,28,248,22,133,198,33,0,3,48,46, +48,28,248,22,188,194,248,22,173,249,199,248,22,173,196,248,22,173,197,249,198, +195,194,0,6,43,110,97,110,46,48,89,162,33,35,46,72,102,105,110,100,45, +98,101,116,119,101,101,110,175,223,0,28,248,22,132,194,193,27,248,22,144,195, +27,248,22,144,197,28,249,22,182,195,194,248,22,170,194,249,22,172,195,248,22, +175,249,199,248,22,175,249,22,173,204,201,248,22,175,249,22,173,203,201,83,159, +33,93,80,159,33,39,34,32,176,89,162,33,33,40,2,16,222,91,159,37,11, +90,161,34,33,11,83,160,39,33,34,11,90,161,34,34,11,83,160,39,33,34, +11,90,161,34,35,11,83,160,39,33,34,11,90,161,34,36,11,89,162,33,33, +34,1,24,114,101,112,45,101,114,114,111,114,45,101,115,99,97,112,101,45,104, +97,110,100,108,101,114,177,223,1,247,207,250,22,31,89,162,33,33,37,9,225, +6,5,3,90,161,34,33,10,247,22,252,45,2,90,161,34,34,10,247,22,252, +31,2,87,94,248,22,252,45,2,195,248,22,252,31,2,11,89,162,33,33,36, +9,224,5,4,248,22,8,89,162,33,34,40,9,224,2,1,250,32,178,89,163, +35,36,39,69,114,101,112,108,45,108,111,111,112,179,33,223,6,87,94,248,22, +8,89,162,33,34,40,9,225,3,2,1,250,22,31,89,162,33,33,37,9,225, +5,4,6,87,94,248,22,252,31,2,210,90,161,34,34,10,192,12,89,162,33, +33,37,9,223,3,27,247,247,22,40,87,94,28,248,22,252,70,1,193,248,194, +12,12,249,22,6,89,162,33,33,36,9,223,2,248,247,22,252,32,2,28,248, +22,206,194,248,22,252,30,2,194,193,32,180,89,162,34,34,36,9,222,249,22, +3,247,22,39,194,89,162,33,33,36,9,224,5,4,90,161,34,34,10,247,22, +252,31,2,87,94,248,22,252,31,2,11,90,161,34,33,10,11,12,250,2,178, +195,196,197,197,195,196,89,162,33,33,37,9,225,5,4,3,87,95,248,22,252, +45,2,208,248,22,252,31,2,210,90,161,34,34,10,11,90,161,34,33,10,11, +12,83,159,33,93,80,159,33,40,34,32,181,89,162,33,34,44,2,18,222,87, +94,28,27,248,22,252,25,3,194,28,192,192,28,248,22,252,136,1,194,27,248, +22,252,38,3,195,28,192,192,248,22,252,39,3,195,11,12,250,22,252,40,2, 2,18,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,35,11,90,161,35,32,11,248,22, -252,36,3,196,28,194,248,22,252,186,2,249,22,252,160,2,248,22,252,165,1, +115,97,110,115,32,110,117,108,41,195,91,159,36,11,90,161,36,33,11,248,22, +252,37,3,196,28,194,248,22,252,187,2,249,22,252,161,2,248,22,252,165,1, 249,22,252,184,1,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,15,28,248,22,252,24,3,193,87,94,28,248,22,252,30,3, -193,12,248,22,252,186,2,249,22,252,160,2,248,22,252,165,1,250,22,252,184, +126,115,201,247,22,15,28,248,22,252,25,3,193,87,94,28,248,22,252,31,3, +193,12,248,22,252,187,2,249,22,252,161,2,248,22,252,165,1,250,22,252,184, 1,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,252,54,3,247,22,15,27,247,22,252,54,3, -250,22,31,89,162,32,32,34,9,223,4,248,22,252,54,3,193,89,162,32,32, -34,9,223,5,248,22,252,88,1,193,89,162,32,32,34,9,223,3,248,22,252, -54,3,193,248,22,252,88,1,196,83,159,32,93,80,159,32,40,33,89,162,32, -35,39,2,20,222,87,94,28,27,248,22,252,24,3,196,28,192,192,28,248,22, -252,136,1,196,27,248,22,252,37,3,197,28,192,192,248,22,252,38,3,197,11, -12,250,22,252,40,2,196,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,197,28,248,22,252,39,3, -195,248,193,195,27,247,22,252,90,1,248,194,28,193,249,22,252,40,3,198,195, -196,83,159,32,93,80,159,32,41,33,89,162,32,33,37,2,22,223,0,250,80, -159,35,40,34,22,252,88,1,2,22,196,83,159,32,93,80,159,32,42,33,89, -162,32,33,37,2,24,223,0,250,80,159,35,40,34,22,252,58,3,2,24,196, -83,159,32,93,80,159,32,43,33,27,248,22,252,62,3,248,22,252,211,1,27, -27,247,22,252,219,1,28,249,22,72,194,21,96,64,117,110,105,120,169,64,98, -101,111,115,170,65,111,115,107,105,116,171,66,109,97,99,111,115,120,172,6,1, -1,58,28,249,22,72,194,21,94,2,163,2,164,6,1,1,59,12,250,22,252, -184,1,6,14,14,40,91,94,126,97,93,42,41,126,97,40,46,42,41,195,195, -27,89,162,32,35,38,69,99,111,110,115,45,112,97,116,104,173,222,28,249,22, -252,194,1,195,5,0,249,22,65,194,196,249,22,51,248,22,252,28,3,196,196, -89,162,32,34,39,2,26,224,0,1,87,95,28,28,248,22,252,188,1,195,10, -248,22,252,136,1,195,12,250,22,252,40,2,2,26,6,21,21,98,121,116,101, -32,115,116,114,105,110,103,32,111,114,32,115,116,114,105,110,103,197,28,28,248, -22,58,196,249,22,4,22,252,24,3,197,11,12,250,22,252,40,2,2,26,6, -13,13,108,105,115,116,32,111,102,32,112,97,116,104,115,198,248,91,159,33,11, -20,12,95,33,192,89,162,32,33,43,64,108,111,111,112,174,226,3,2,5,0, -27,249,22,252,64,3,197,199,28,192,250,199,197,248,22,78,196,248,197,248,22, -87,197,250,199,197,200,9,28,248,22,252,136,1,196,248,22,252,211,1,196,195, -83,159,32,93,80,159,32,44,33,83,158,35,20,92,96,2,28,89,162,32,35, -43,9,223,0,87,95,28,27,248,22,252,24,3,195,28,192,192,28,248,22,252, -136,1,195,27,248,22,252,37,3,196,28,192,192,248,22,252,38,3,196,11,12, -250,22,252,40,2,2,28,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,252,24,3,196,28,192,192,28,248,22,252,136,1,196,27,248,22,252,37,3, -197,28,192,192,248,22,252,38,3,197,11,248,22,252,37,3,195,11,10,12,250, -22,252,40,2,2,28,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,91,159,33, -11,20,12,95,33,28,28,248,22,252,37,3,195,91,159,35,11,90,161,35,32, -11,248,22,252,36,3,198,249,22,252,11,2,194,68,114,101,108,97,116,105,118, -101,175,11,27,248,22,252,217,1,6,4,4,80,65,84,72,27,89,162,32,33, -36,67,119,105,110,45,97,100,100,176,222,28,249,22,252,11,2,247,22,252,219, -1,2,163,249,22,51,248,22,252,28,3,5,1,46,194,192,248,91,159,33,11, -20,12,95,33,192,89,162,32,33,43,2,174,225,6,4,0,28,248,22,57,196, -11,27,248,22,252,40,3,248,22,52,198,27,249,22,252,35,3,195,198,28,248, -22,252,29,3,193,248,196,193,27,248,22,53,199,28,248,22,57,193,11,27,248, -22,252,40,3,248,22,52,195,27,249,22,252,35,3,195,201,28,248,22,252,29, -3,193,248,199,193,248,198,248,22,53,196,28,194,248,194,249,80,159,39,43,34, -197,9,9,27,248,22,252,40,3,196,28,248,22,252,29,3,193,248,194,193,11, -89,162,32,33,45,70,102,111,117,110,100,45,101,120,101,99,177,225,4,3,0, -28,193,91,159,35,11,90,161,35,32,11,248,22,252,36,3,199,27,28,198,27, -248,22,252,41,3,201,28,249,22,252,13,2,194,202,11,28,248,22,252,37,3, -193,248,198,249,22,252,35,3,197,195,248,198,193,11,28,192,192,27,28,248,22, -252,24,3,195,27,249,22,252,35,3,197,201,28,28,248,22,252,30,3,193,10, -248,22,252,29,3,193,192,11,11,28,192,192,28,199,11,27,248,22,252,41,3, -202,28,249,22,252,13,2,194,203,11,28,248,22,252,37,3,193,248,199,249,22, -252,35,3,198,195,248,199,193,195,89,162,32,34,38,9,223,0,250,80,158,35, -44,196,197,11,89,162,32,33,37,9,223,0,250,80,158,35,44,196,11,11,83, -159,32,93,80,159,32,45,33,89,162,32,34,41,2,30,222,87,94,28,27,248, -22,252,24,3,195,28,192,192,28,248,22,252,136,1,195,27,248,22,252,37,3, -196,28,192,192,248,22,252,38,3,196,11,12,250,22,252,40,2,195,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,28,248,22,252,37,3,194,12,248,22,252,186,2,249,22,252, -130,2,248,22,252,165,1,250,22,252,184,1,6,29,29,126,97,58,32,105,110, -118,97,108,105,100,32,114,101,108,97,116,105,118,101,32,112,97,116,104,58,32, -126,115,199,200,247,22,15,83,159,32,93,80,159,32,46,33,89,162,32,35,38, -2,32,223,0,87,94,249,80,159,34,45,34,195,196,249,22,3,89,162,32,33, -37,9,224,2,3,249,80,159,35,45,34,194,196,197,83,159,32,93,80,159,32, -47,33,89,162,32,35,38,2,34,222,27,247,22,252,55,3,248,91,159,33,11, -20,12,95,33,192,89,162,32,33,49,65,99,108,111,111,112,178,227,5,4,3, -2,0,28,248,22,57,198,248,22,252,186,2,249,22,252,160,2,248,22,252,165, -1,251,22,252,184,1,6,42,42,126,97,58,32,99,111,108,108,101,99,116,105, -111,110,32,110,111,116,32,102,111,117,110,100,58,32,126,115,32,105,110,32,97, -110,121,32,111,102,58,32,126,115,202,28,248,22,57,205,203,250,22,1,22,252, -35,3,206,23,15,201,247,22,15,27,249,22,252,35,3,248,22,52,201,198,28, -248,22,252,30,3,193,27,250,22,1,22,252,35,3,196,201,28,248,22,252,30, -3,193,192,248,195,248,22,53,201,248,194,248,22,53,200,193,83,159,32,93,80, -159,32,48,33,27,247,22,252,219,1,28,249,22,252,11,2,194,2,163,5,4, -46,100,108,108,28,249,22,72,194,21,94,2,172,2,164,5,6,46,100,121,108, -105,98,5,3,46,115,111,83,159,32,93,80,159,32,49,33,249,80,159,34,34, -34,248,22,252,28,3,5,10,95,108,111,97,100,101,114,46,115,115,80,159,34, -48,34,83,159,32,93,80,159,32,50,33,249,22,252,220,2,27,27,89,162,32, -35,41,67,100,97,116,101,62,61,63,179,222,28,193,27,249,22,5,89,162,32, -33,39,9,223,4,27,248,194,195,27,250,22,252,49,3,196,11,89,162,40,32, -32,9,222,11,28,192,249,22,51,195,194,11,195,27,28,196,11,193,28,192,192, -28,193,28,196,28,249,22,185,248,22,53,196,248,22,53,199,193,11,11,11,11, -89,162,32,34,8,31,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,180,224,4,0,87,94,28,27,248, -22,252,24,3,196,28,192,192,28,248,22,252,136,1,196,27,248,22,252,37,3, -197,28,192,192,248,22,252,38,3,197,11,12,250,22,252,40,2,2,49,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,197,91,159,38,11,90,161,33,32,11,28,248,22,252,39,3, -201,200,27,247,22,252,90,1,28,192,249,22,252,40,3,203,194,201,90,161,35, -33,11,248,22,252,36,3,193,90,161,33,36,11,28,249,22,252,11,2,195,2, -175,64,115,97,109,101,181,193,90,161,33,37,11,247,22,252,56,3,27,89,162, -32,34,36,66,103,101,116,45,115,111,182,224,8,5,89,162,32,33,44,9,226, -1,0,3,2,252,22,252,35,3,199,201,6,6,6,110,97,116,105,118,101,247, -22,252,220,1,28,198,249,80,159,42,34,34,199,80,159,42,48,34,197,27,89, -162,32,33,41,62,122,111,183,225,9,6,4,250,22,252,35,3,196,198,249,80, -159,39,34,34,197,5,3,46,122,111,27,249,196,199,10,27,249,197,80,159,45, -49,34,11,27,249,22,5,89,162,32,33,39,9,223,7,27,193,27,250,22,252, -49,3,196,11,89,162,40,32,32,9,222,11,28,192,249,22,51,195,194,11,204, -27,89,162,32,33,40,68,119,105,116,104,45,100,105,114,184,224,13,10,20,14, -159,80,158,33,51,250,80,158,36,52,249,22,19,11,80,158,38,51,22,252,90, -1,28,248,22,252,24,3,196,195,247,22,252,54,3,247,194,27,27,250,23,17, -23,16,199,198,28,192,27,248,22,252,58,3,248,22,52,195,91,159,34,11,90, -161,34,32,11,248,195,248,22,42,248,22,252,210,1,248,22,252,26,3,249,80, -159,56,34,34,23,19,5,0,28,192,87,94,28,23,20,28,249,22,252,11,2, -195,23,22,12,248,22,252,186,2,249,22,252,127,2,248,22,252,165,1,251,22, -252,184,1,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,111,117,103,104,32,108,111,97,100,101,114,58, -32,126,101,23,28,28,201,249,22,252,184,1,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,52,204,247,22,15,12,192,11,11,28,192, -248,194,193,27,250,23,17,23,16,200,198,28,192,248,195,89,162,32,32,37,9, -224,18,1,249,247,22,252,59,3,248,22,52,195,195,27,250,23,18,23,17,202, -199,28,192,248,196,89,162,32,32,37,9,224,19,1,249,247,22,252,89,1,248, -22,52,195,195,248,196,89,162,32,32,36,9,224,19,10,249,247,22,252,89,1, -194,195,192,89,162,32,33,36,9,222,87,94,28,28,248,22,0,193,249,22,34, -194,34,11,12,250,22,252,40,2,2,40,6,19,19,112,114,111,99,101,100,117, -114,101,32,40,97,114,105,116,121,32,50,41,195,192,83,159,32,93,80,159,32, -53,33,89,162,33,34,38,2,47,223,0,87,94,87,94,249,80,159,34,45,34, -2,47,195,249,22,3,89,162,32,33,36,9,223,2,249,80,159,34,45,34,2, -47,195,196,250,80,159,35,47,34,2,47,196,197,83,159,32,93,80,159,32,54, -33,89,162,32,33,36,2,49,223,0,249,247,80,159,34,50,34,195,11,248,22, -252,2,3,89,162,32,33,33,1,20,100,101,102,97,117,108,116,45,114,101,97, -100,101,114,45,103,117,97,114,100,185,222,192,83,159,32,93,80,159,32,55,33, -248,22,252,62,3,5,11,40,46,43,63,41,47,43,40,46,42,41,83,159,32, -93,80,159,32,56,33,248,22,252,62,3,5,2,94,44,83,159,32,93,80,159, -32,57,33,248,22,252,62,3,5,39,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,83,159,32,93,80,159,32,58,33,248,22,110,64,119, -101,97,107,186,83,159,32,93,80,159,32,59,33,249,22,110,2,186,65,101,113, -117,97,108,187,83,159,32,93,80,159,32,8,28,33,247,22,48,83,159,32,93, -80,159,32,8,29,34,11,83,159,32,93,80,159,32,8,30,34,11,83,159,32, -93,80,159,32,8,31,33,89,162,32,33,36,2,67,223,0,91,159,34,10,90, -161,33,32,10,11,90,161,33,33,10,83,158,35,20,92,96,1,29,115,116,97, +105,115,32,126,115,41,202,247,22,252,55,3,247,22,15,27,247,22,252,55,3, +250,22,31,89,162,33,33,35,9,223,4,248,22,252,55,3,193,89,162,33,33, +35,9,223,5,248,22,252,88,1,193,89,162,33,33,35,9,223,3,248,22,252, +55,3,193,248,22,252,88,1,196,83,159,33,93,80,159,33,41,34,32,182,89, +162,33,36,40,2,20,222,87,94,28,27,248,22,252,25,3,196,28,192,192,28, +248,22,252,136,1,196,27,248,22,252,38,3,197,28,192,192,248,22,252,39,3, +197,11,12,250,22,252,40,2,196,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,197,28,248,22,252, +40,3,195,248,193,195,27,247,22,252,90,1,248,194,28,193,249,22,252,41,3, +198,195,196,83,159,33,93,80,159,33,42,34,89,162,33,34,38,2,22,223,0, +250,80,159,36,41,35,22,252,88,1,2,22,196,83,159,33,93,80,159,33,43, +34,89,162,33,34,38,2,24,223,0,250,80,159,36,41,35,22,252,59,3,2, +24,196,83,159,33,93,80,159,33,44,34,27,248,22,252,63,3,248,22,252,211, +1,27,27,247,22,252,219,1,28,249,22,72,194,21,96,64,117,110,105,120,183, +64,98,101,111,115,184,65,111,115,107,105,116,185,66,109,97,99,111,115,120,186, +6,1,1,58,28,249,22,72,194,21,94,2,171,2,172,6,1,1,59,12,250, +22,252,184,1,6,14,14,40,91,94,126,97,93,42,41,126,97,40,46,42,41, +195,195,27,32,187,89,162,33,36,39,69,99,111,110,115,45,112,97,116,104,188, +222,28,249,22,252,194,1,195,5,0,249,22,65,194,196,249,22,51,248,22,252, +29,3,196,196,89,162,33,35,43,2,26,224,0,1,87,95,28,28,248,22,252, +188,1,195,10,248,22,252,136,1,195,12,250,22,252,40,2,2,26,6,21,21, +98,121,116,101,32,115,116,114,105,110,103,32,111,114,32,115,116,114,105,110,103, +197,28,28,248,22,58,196,249,22,4,22,252,25,3,197,11,12,250,22,252,40, +2,2,26,6,13,13,108,105,115,116,32,111,102,32,112,97,116,104,115,198,251, +32,189,89,162,33,37,46,2,162,222,27,249,22,252,65,3,196,198,28,192,250, +198,196,248,22,78,196,251,2,189,200,201,202,248,22,87,200,250,198,196,199,9, +199,196,197,28,248,22,252,136,1,199,248,22,252,211,1,199,198,83,159,33,93, +80,159,33,45,34,83,158,36,20,92,96,2,28,89,162,33,36,48,9,223,0, +87,95,28,27,248,22,252,25,3,195,28,192,192,28,248,22,252,136,1,195,27, +248,22,252,38,3,196,28,192,192,248,22,252,39,3,196,11,12,250,22,252,40, +2,2,28,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,252,25,3, +196,28,192,192,28,248,22,252,136,1,196,27,248,22,252,38,3,197,28,192,192, +248,22,252,39,3,197,11,248,22,252,38,3,195,11,10,12,250,22,252,40,2, +2,28,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,252,38,3, +194,91,159,36,11,90,161,36,33,11,248,22,252,37,3,197,249,22,252,11,2, +194,68,114,101,108,97,116,105,118,101,190,11,27,248,22,252,217,1,6,4,4, +80,65,84,72,27,28,193,248,32,191,89,162,33,34,37,67,119,105,110,45,97, +100,100,192,222,28,249,22,252,11,2,247,22,252,219,1,2,171,249,22,51,248, +22,252,29,3,5,1,46,194,192,249,80,159,38,44,35,196,9,9,28,248,22, +57,193,11,27,248,22,252,41,3,248,22,52,195,27,249,22,252,36,3,195,199, +28,248,22,252,30,3,193,250,32,193,89,162,33,36,47,70,102,111,117,110,100, +45,101,120,101,99,194,222,28,192,91,159,36,11,90,161,36,33,11,248,22,252, +37,3,198,27,28,197,27,248,22,252,42,3,200,28,249,22,252,13,2,194,201, +11,28,248,22,252,38,3,193,250,2,193,200,201,249,22,252,36,3,199,197,250, +2,193,200,201,195,11,28,192,192,27,28,248,22,252,25,3,195,27,249,22,252, +36,3,197,200,28,28,248,22,252,31,3,193,10,248,22,252,30,3,193,192,11, +11,28,192,192,28,198,11,27,248,22,252,42,3,201,28,249,22,252,13,2,194, +202,11,28,248,22,252,38,3,193,250,2,193,201,202,249,22,252,36,3,200,197, +250,2,193,201,202,195,194,201,202,195,251,32,195,89,162,33,37,47,2,162,222, +28,248,22,57,196,11,27,248,22,252,41,3,248,22,52,198,27,249,22,252,36, +3,195,196,28,248,22,252,30,3,193,250,2,193,198,199,195,27,248,22,53,199, +28,248,22,57,193,11,27,248,22,252,41,3,248,22,52,195,27,249,22,252,36, +3,195,199,28,248,22,252,30,3,193,250,2,193,201,202,195,251,2,195,201,202, +203,248,22,53,199,201,202,203,248,22,53,199,27,248,22,252,41,3,195,28,248, +22,252,30,3,193,250,2,193,198,199,195,11,89,162,33,35,39,9,223,0,250, +80,158,36,45,196,197,11,89,162,33,34,38,9,223,0,250,80,158,36,45,196, +11,11,83,159,33,93,80,159,33,46,34,32,196,89,162,33,35,42,2,30,222, +87,94,28,27,248,22,252,25,3,195,28,192,192,28,248,22,252,136,1,195,27, +248,22,252,38,3,196,28,192,192,248,22,252,39,3,196,11,12,250,22,252,40, +2,195,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,28,248,22,252,38,3,194,12,248,22,252, +187,2,249,22,252,131,2,248,22,252,165,1,250,22,252,184,1,6,29,29,126, +97,58,32,105,110,118,97,108,105,100,32,114,101,108,97,116,105,118,101,32,112, +97,116,104,58,32,126,115,199,200,247,22,15,83,159,33,93,80,159,33,47,34, +89,162,33,36,39,2,32,223,0,87,94,249,80,159,35,46,35,195,196,249,22, +3,89,162,33,34,38,9,224,2,3,249,80,159,36,46,35,194,196,197,83,159, +33,93,80,159,33,48,34,32,197,89,162,33,36,43,2,34,222,27,247,22,252, +56,3,252,32,198,89,162,33,38,49,65,99,108,111,111,112,199,222,28,248,22, +57,197,248,22,252,187,2,249,22,252,161,2,248,22,252,165,1,251,22,252,184, +1,6,42,42,126,97,58,32,99,111,108,108,101,99,116,105,111,110,32,110,111, +116,32,102,111,117,110,100,58,32,126,115,32,105,110,32,97,110,121,32,111,102, +58,32,126,115,201,28,248,22,57,204,202,250,22,1,22,252,36,3,205,206,200, +247,22,15,27,249,22,252,36,3,248,22,52,200,197,28,248,22,252,31,3,193, +27,250,22,1,22,252,36,3,196,200,28,248,22,252,31,3,193,192,252,2,198, +199,200,201,202,248,22,53,204,252,2,198,198,199,200,201,248,22,53,203,197,198, +199,200,197,83,159,33,93,80,159,33,49,34,27,247,22,252,219,1,28,249,22, +252,11,2,194,2,171,5,4,46,100,108,108,28,249,22,72,194,21,94,2,186, +2,172,5,6,46,100,121,108,105,98,5,3,46,115,111,83,159,33,93,80,159, +33,50,34,249,80,159,35,35,35,248,22,252,29,3,5,10,95,108,111,97,100, +101,114,46,115,115,80,159,35,49,35,83,159,33,93,80,159,33,51,34,249,22, +252,221,2,27,27,32,200,89,162,33,36,41,67,100,97,116,101,62,61,63,201, +222,28,193,27,249,22,5,89,162,33,34,40,9,223,4,27,248,194,195,27,250, +22,252,50,3,196,11,32,202,89,162,41,33,33,9,222,11,28,192,249,22,51, +195,194,11,195,27,28,196,11,193,28,192,192,28,193,28,196,28,249,22,185,248, +22,53,196,248,22,53,199,193,11,11,11,11,89,162,33,35,8,29,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,203,224,4,0,87,94,28,27,248,22,252,25,3,196,28,192,192,28, +248,22,252,136,1,196,27,248,22,252,38,3,197,28,192,192,248,22,252,39,3, +197,11,12,250,22,252,40,2,2,49,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,197,91,159,39, +11,90,161,34,33,11,28,248,22,252,40,3,201,200,27,247,22,252,90,1,28, +192,249,22,252,41,3,203,194,201,90,161,36,34,11,248,22,252,37,3,193,90, +161,34,37,11,28,249,22,252,11,2,195,2,190,2,164,193,90,161,34,38,11, +247,22,252,57,3,27,89,162,33,34,42,62,122,111,204,225,8,5,3,250,22, +252,36,3,196,198,249,80,159,40,35,35,197,5,3,46,122,111,27,250,80,159, +45,8,47,34,201,199,10,27,250,80,159,46,8,47,34,202,80,159,46,50,35, +11,27,249,22,5,89,162,33,34,40,9,223,6,27,193,27,250,22,252,50,3, +196,11,32,205,89,162,41,33,33,9,222,11,28,192,249,22,51,195,194,11,203, +27,27,250,23,15,206,198,197,28,192,27,248,22,252,59,3,248,22,52,195,91, +159,35,11,90,161,35,33,11,248,195,248,22,42,248,22,252,210,1,248,22,252, +27,3,249,80,159,55,35,35,23,17,5,0,28,192,87,94,28,23,18,28,249, +22,252,11,2,195,23,20,12,248,22,252,187,2,249,22,252,128,2,248,22,252, +165,1,251,22,252,184,1,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,111,117,103,104,32,108,111,97, +100,101,114,58,32,126,101,23,26,28,201,249,22,252,184,1,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,52,204,247,22,15,12,192, +11,11,28,192,249,80,159,47,8,48,34,203,194,27,250,23,15,206,199,197,28, +192,249,80,159,48,8,48,34,204,89,162,33,33,38,9,224,17,2,249,247,22, +252,60,3,248,22,52,195,195,27,250,23,16,23,15,201,198,28,192,249,80,159, +49,8,48,34,205,89,162,33,33,38,9,224,18,2,249,247,22,252,89,1,248, +22,52,195,195,249,80,159,49,8,48,34,205,89,162,33,33,37,9,224,18,9, +249,247,22,252,89,1,194,195,192,32,206,89,162,33,34,37,9,222,87,94,28, +28,248,22,0,193,249,22,34,194,35,11,12,250,22,252,40,2,2,40,6,19, +19,112,114,111,99,101,100,117,114,101,32,40,97,114,105,116,121,32,50,41,195, +192,83,159,33,93,80,159,33,54,34,89,162,34,35,39,2,47,223,0,87,94, +87,94,249,80,159,35,46,35,2,47,195,249,22,3,80,159,35,8,49,34,196, +250,80,159,36,48,35,2,47,196,197,83,159,33,93,80,159,33,55,34,89,162, +33,34,37,2,49,223,0,249,247,80,159,35,51,35,195,11,248,22,252,3,3, +32,207,89,162,33,34,34,1,20,100,101,102,97,117,108,116,45,114,101,97,100, +101,114,45,103,117,97,114,100,208,222,192,83,159,33,93,80,159,33,56,34,248, +22,252,63,3,5,11,40,46,43,63,41,47,43,40,46,42,41,83,159,33,93, +80,159,33,57,34,248,22,252,63,3,5,2,94,44,83,159,33,93,80,159,33, +58,34,248,22,252,63,3,5,39,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,83,159,33,93,80,159,33,59,34,248,22,110,64,119,101, +97,107,209,83,159,33,93,80,159,33,8,27,34,249,22,110,2,209,65,101,113, +117,97,108,210,83,159,33,93,80,159,33,8,28,34,247,22,48,83,159,33,93, +80,159,33,8,29,35,11,83,159,33,93,80,159,33,8,30,35,11,83,159,33, +93,80,159,33,8,31,34,89,162,33,34,37,2,67,223,0,91,159,35,10,90, +161,34,33,10,11,90,161,34,34,10,83,158,36,20,92,96,1,29,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,188,89,162,32,33,42,9,224,2,0,87,94,28,207,248,208, -195,12,27,27,250,22,116,80,159,38,58,34,248,22,252,79,3,247,22,252,211, -2,11,28,192,192,27,247,22,110,87,94,250,22,115,80,159,39,58,34,248,22, -252,79,3,247,22,252,211,2,195,192,250,22,115,195,198,66,97,116,116,97,99, -104,189,89,162,32,35,40,9,223,1,251,211,197,198,199,10,89,162,32,36,8, -29,9,225,2,3,0,28,28,248,22,50,196,249,22,252,11,2,248,22,52,198, -66,112,108,97,110,101,116,190,11,87,94,28,207,12,20,14,159,80,158,34,51, -250,80,158,37,52,249,22,19,11,80,158,39,51,22,252,211,2,196,90,161,33, -32,10,249,22,235,21,95,63,108,105,98,191,6,11,11,114,101,115,111,108,118, +111,108,118,101,114,211,89,162,33,34,43,9,224,2,0,87,94,28,207,248,208, +195,12,27,27,250,22,116,80,159,39,59,35,248,22,252,80,3,247,22,252,212, +2,11,28,192,192,27,247,22,110,87,94,250,22,115,80,159,40,59,35,248,22, +252,80,3,247,22,252,212,2,195,192,250,22,115,195,198,66,97,116,116,97,99, +104,212,89,162,33,36,41,9,223,1,251,211,197,198,199,10,89,162,33,37,8, +28,9,225,2,3,0,28,28,248,22,50,196,249,22,252,11,2,248,22,52,198, +66,112,108,97,110,101,116,213,11,87,94,28,207,12,20,14,159,80,158,35,52, +250,80,158,38,53,249,22,19,11,80,158,40,52,22,252,212,2,196,90,161,34, +33,10,249,22,235,21,95,63,108,105,98,214,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,192,12,251,211,199,200,201,202,27,89,162,32,32,45,67,103,101,116,45,100, -105,114,193,224,3,5,27,28,193,28,249,22,252,11,2,195,80,159,36,8,29, -34,80,159,34,8,30,34,27,248,22,252,213,1,248,22,44,196,28,249,22,252, -65,3,80,159,37,56,34,194,91,159,35,11,90,161,35,32,11,248,22,252,36, -3,248,22,252,28,3,250,22,252,197,1,200,33,248,22,252,191,1,201,87,95, -83,160,34,11,80,159,38,8,29,34,197,83,160,34,11,80,159,38,8,30,34, -192,192,11,11,28,192,192,27,247,22,252,90,1,28,192,192,247,22,252,54,3, -27,28,248,22,252,136,1,198,27,247,194,27,250,22,116,80,159,41,59,34,249, -22,51,204,198,11,28,192,192,27,248,22,252,211,1,201,28,249,22,252,65,3, -80,159,41,57,34,194,249,91,159,33,11,20,12,95,33,192,89,162,32,34,45, -2,174,224,10,0,27,249,22,252,64,3,80,159,36,55,34,198,28,192,249,195, -249,22,252,35,3,199,27,248,22,78,198,28,249,22,252,194,1,194,5,1,46, -2,181,28,249,22,252,194,1,194,5,2,46,46,62,117,112,194,248,22,252,28, -3,193,248,22,87,195,249,22,252,35,3,197,248,22,252,28,3,199,196,194,248, -22,59,249,22,252,159,1,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,252, -24,3,198,28,248,22,252,38,3,198,197,248,22,59,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,50,198,248,22,252,9,2,248,22,58,199,10,11,28,249,22,252, -11,2,248,22,52,200,2,191,27,250,22,116,80,159,40,59,34,249,22,51,203, -247,22,252,55,3,11,28,192,192,27,27,248,22,64,201,28,249,22,181,194,34, -248,22,59,6,5,5,109,122,108,105,98,28,249,22,183,194,34,248,22,80,201, -11,28,192,28,249,22,4,89,162,32,33,34,9,222,28,248,22,252,136,1,193, -248,22,252,37,3,193,11,194,28,248,22,252,136,1,248,22,78,201,28,248,22, -252,37,3,248,22,78,201,27,250,80,159,42,47,34,2,188,248,22,52,197,248, -22,53,197,249,22,252,35,3,194,248,22,78,203,11,11,11,11,28,249,22,252, -11,2,248,22,52,200,64,102,105,108,101,195,28,249,22,181,248,22,64,200,34, -27,248,22,78,199,28,248,22,252,136,1,193,28,27,248,22,252,24,3,194,28, -192,192,28,248,22,252,136,1,194,27,248,22,252,37,3,195,28,192,192,248,22, -252,38,3,195,11,249,22,252,40,3,194,247,196,11,11,11,11,87,94,28,28, -248,22,252,24,3,193,10,248,22,252,222,1,193,12,28,199,250,22,252,39,2, -67,114,101,113,117,105,114,101,196,249,22,252,184,1,6,17,17,98,97,100,32, -109,111,100,117,108,101,32,112,97,116,104,126,97,28,197,248,22,52,198,6,0, -0,202,250,22,252,40,2,2,188,249,22,252,184,1,6,13,13,109,111,100,117, -108,101,32,112,97,116,104,126,97,28,197,248,22,52,198,6,0,0,200,27,28, -248,22,252,222,1,194,249,22,252,227,1,195,32,248,22,252,42,3,248,22,252, -43,3,195,27,28,248,22,252,222,1,195,249,22,252,227,1,196,33,248,80,159, -39,36,34,194,91,159,35,11,90,161,35,32,11,28,248,22,252,222,1,198,250, -22,7,67,105,103,110,111,114,101,100,197,249,22,252,227,1,202,34,2,197,248, -22,252,36,3,197,27,28,248,22,252,222,1,199,249,22,252,227,1,200,35,249, -80,159,44,34,34,196,5,0,27,28,248,22,252,222,1,200,249,22,252,227,1, -201,36,249,22,252,184,1,6,3,3,44,126,97,248,22,252,210,1,248,22,252, -26,3,248,80,159,48,36,34,199,27,28,248,22,252,222,1,201,249,22,252,227, -1,202,37,248,22,42,249,22,252,159,1,196,248,22,252,210,1,248,22,252,26, -3,199,27,28,248,22,252,222,1,202,249,22,252,227,1,203,38,27,249,22,252, -64,3,80,159,48,33,34,248,22,252,26,3,201,28,192,248,22,52,193,10,27, -27,250,22,116,80,159,50,58,34,248,22,252,79,3,247,22,252,211,2,11,28, -192,192,27,247,22,110,87,94,250,22,115,80,159,51,58,34,248,22,252,79,3, -247,22,252,211,2,195,192,87,95,28,23,18,27,250,22,116,196,198,11,87,94, -28,192,28,28,248,22,41,193,10,249,22,252,13,2,196,194,12,252,22,252,37, -2,2,188,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,252,11,2,10, -199,6,0,0,197,28,249,22,252,11,2,10,201,6,0,0,199,23,15,12,28, -192,12,87,95,27,249,22,17,247,22,15,80,159,50,8,28,34,27,247,22,252, -211,2,249,22,3,89,162,32,33,46,9,226,13,14,2,3,28,249,22,252,13, -2,248,22,53,199,197,28,249,22,252,11,2,248,22,52,199,195,251,22,252,37, -2,2,188,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,53,248,22,67,249, -22,51,205,201,12,12,195,27,248,22,42,198,20,14,159,80,159,48,8,28,34, -249,22,51,247,22,252,211,2,204,20,14,159,80,158,48,51,250,80,158,51,52, -249,22,19,11,80,158,53,51,22,234,195,249,247,80,159,50,50,34,205,248,22, -42,248,22,252,210,1,248,22,252,26,3,203,250,22,115,196,198,197,12,28,28, -248,22,252,222,1,203,11,27,248,22,252,136,1,23,17,28,192,192,28,248,22, -50,23,17,249,22,252,11,2,248,22,52,23,19,2,191,11,250,22,115,80,159, -49,59,34,28,248,22,252,136,1,23,19,249,22,51,23,20,247,23,16,249,22, -51,23,20,247,22,252,55,3,254,22,252,224,1,23,19,23,18,23,16,206,205, -204,203,12,194,208,83,159,32,93,80,159,32,8,32,33,83,158,35,20,92,95, -2,69,89,162,32,32,34,9,223,0,248,80,158,33,8,32,9,89,162,32,33, -46,9,223,0,27,247,22,252,57,3,249,80,159,35,43,34,28,194,27,248,22, -252,217,1,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,252,35,3,248,22,252,53,3,69,97,100, -100,111,110,45,100,105,114,198,247,22,252,215,1,6,8,8,99,111,108,108,101, -99,116,115,11,27,248,91,159,33,11,20,12,95,33,192,89,162,32,33,43,2, -174,224,7,0,28,248,22,57,195,9,27,248,22,52,196,27,28,248,22,252,39, -3,194,193,28,248,22,252,38,3,194,249,22,252,40,3,195,250,80,159,40,44, -34,248,22,252,53,3,69,101,120,101,99,45,102,105,108,101,199,11,10,250,80, -159,38,44,34,248,22,252,53,3,2,199,196,10,28,192,249,22,51,248,22,252, -42,3,249,22,252,40,3,197,247,22,252,54,3,248,197,248,22,53,200,248,195, -248,22,53,198,249,22,65,201,248,22,59,248,22,252,53,3,72,99,111,108,108, -101,99,116,115,45,100,105,114,200,28,193,249,22,51,195,194,192,83,159,32,93, -80,159,32,8,33,33,89,162,32,33,35,2,71,222,27,248,22,252,4,1,194, -28,192,192,248,22,252,5,1,194,83,159,32,97,80,159,32,8,34,33,80,159, -32,8,35,33,80,159,32,8,36,33,80,159,32,8,37,33,80,159,32,8,38, -33,26,9,22,252,90,2,63,101,118,116,201,11,33,32,11,248,22,59,249,22, -51,22,252,89,2,32,247,22,252,113,2,11,21,93,32,83,159,32,93,80,159, -32,8,39,33,89,162,32,33,37,2,83,223,0,87,94,28,28,248,22,0,194, -249,22,34,195,32,11,12,250,22,252,40,2,2,83,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,159,33,8, -35,34,89,162,32,33,34,9,223,2,247,192,83,159,32,93,80,159,32,8,40, -33,89,162,32,33,36,2,85,222,87,94,28,248,22,252,253,2,193,12,250,22, -252,40,2,2,85,6,7,7,99,104,97,110,110,101,108,195,248,22,252,238,2, -193,83,159,32,93,80,159,32,8,41,33,89,162,32,33,36,2,87,222,87,94, -28,248,22,252,253,2,193,12,250,22,252,40,2,2,87,6,7,7,99,104,97, -110,110,101,108,195,249,22,252,239,2,32,194,83,159,32,93,80,159,32,8,42, -33,89,162,32,34,37,2,89,222,87,94,28,248,22,252,253,2,193,12,250,22, -252,40,2,2,89,6,7,7,99,104,97,110,110,101,108,195,28,248,22,252,238, -2,249,22,252,252,2,195,196,12,11,83,159,32,93,80,159,32,8,43,33,89, -162,32,32,32,2,91,222,247,22,252,211,2,83,159,32,93,80,159,32,8,44, -33,89,162,32,33,37,2,93,223,0,87,94,28,249,22,181,195,37,12,250,22, -252,40,2,2,93,6,1,1,53,196,248,80,159,33,8,45,34,11,83,159,32, -93,80,159,32,8,46,33,89,162,32,33,37,2,97,223,0,87,94,28,249,22, -181,195,37,12,250,22,252,40,2,2,97,6,1,1,53,196,248,80,159,33,8, -45,34,10,83,159,32,93,80,159,32,8,45,33,89,162,32,33,41,2,95,223, -0,27,248,22,252,189,2,65,101,109,112,116,121,202,27,247,22,252,189,2,87, -94,20,14,159,80,158,34,51,250,80,158,37,52,249,22,19,11,80,158,39,51, -22,252,211,2,196,87,96,249,22,239,194,66,35,37,114,53,114,115,203,248,22, -237,2,203,248,22,238,21,95,64,111,110,108,121,204,68,109,122,115,99,104,101, -109,101,205,72,115,121,110,116,97,120,45,114,117,108,101,115,206,28,195,12,249, -22,3,89,162,32,33,37,9,222,249,22,252,76,3,194,249,22,235,2,205,196, -21,15,203,63,99,97,114,207,63,99,100,114,208,64,99,97,97,114,209,64,99, -97,100,114,210,64,99,100,97,114,211,64,99,100,100,114,212,65,99,97,97,97, -114,213,65,99,97,97,100,114,214,65,99,97,100,97,114,215,65,99,97,100,100, -114,216,65,99,100,97,97,114,217,65,99,100,97,100,114,218,65,99,100,100,97, -114,219,65,99,100,100,100,114,220,66,99,97,97,97,97,114,221,66,99,97,97, -97,100,114,222,66,99,97,97,100,97,114,223,66,99,97,97,100,100,114,224,66, -99,97,100,97,97,114,225,66,99,97,100,97,100,114,226,66,99,97,100,100,97, -114,227,66,99,97,100,100,100,114,228,66,99,100,97,97,97,114,229,66,99,100, -97,97,100,114,230,66,99,100,97,100,97,114,231,66,99,100,97,100,100,114,232, -66,99,100,100,97,97,114,233,66,99,100,100,97,100,114,234,66,99,100,100,100, -97,114,235,66,99,100,100,100,100,114,236,63,109,97,112,237,61,61,238,61,60, -239,61,62,240,62,60,61,241,62,62,61,242,63,109,97,120,243,63,109,105,110, -244,61,43,245,61,45,246,61,42,247,61,47,248,63,97,98,115,249,63,103,99, -100,250,63,108,99,109,251,63,101,120,112,252,252,0,63,108,111,103,252,253,0, -63,115,105,110,252,254,0,63,99,111,115,252,255,0,63,116,97,110,252,0,1, -63,110,111,116,252,1,1,63,101,113,63,252,2,1,1,30,99,97,108,108,45, -119,105,116,104,45,99,117,114,114,101,110,116,45,99,111,110,116,105,110,117,97, -116,105,111,110,252,3,1,71,109,97,107,101,45,115,116,114,105,110,103,252,4, -1,74,115,121,109,98,111,108,45,62,115,116,114,105,110,103,252,5,1,74,115, -116,114,105,110,103,45,62,115,121,109,98,111,108,252,6,1,76,109,97,107,101, -45,114,101,99,116,97,110,103,117,108,97,114,252,7,1,74,101,120,97,99,116, -45,62,105,110,101,120,97,99,116,252,8,1,74,105,110,101,120,97,99,116,45, -62,101,120,97,99,116,252,9,1,74,110,117,109,98,101,114,45,62,115,116,114, -105,110,103,252,10,1,74,115,116,114,105,110,103,45,62,110,117,109,98,101,114, -252,11,1,2,14,72,111,117,116,112,117,116,45,112,111,114,116,63,252,12,1, -78,99,117,114,114,101,110,116,45,105,110,112,117,116,45,112,111,114,116,252,13, -1,79,99,117,114,114,101,110,116,45,111,117,116,112,117,116,45,112,111,114,116, -252,14,1,78,99,117,114,114,101,110,116,45,101,114,114,111,114,45,112,111,114, -116,252,15,1,75,111,112,101,110,45,105,110,112,117,116,45,102,105,108,101,252, -16,1,76,111,112,101,110,45,111,117,116,112,117,116,45,102,105,108,101,252,17, -1,76,99,108,111,115,101,45,105,110,112,117,116,45,112,111,114,116,252,18,1, -77,99,108,111,115,101,45,111,117,116,112,117,116,45,112,111,114,116,252,19,1, -79,119,105,116,104,45,111,117,116,112,117,116,45,116,111,45,102,105,108,101,252, -20,1,73,116,114,97,110,115,99,114,105,112,116,45,111,110,252,21,1,74,116, -114,97,110,115,99,114,105,112,116,45,111,102,102,252,22,1,72,102,108,117,115, -104,45,111,117,116,112,117,116,252,23,1,73,115,116,114,105,110,103,45,108,101, -110,103,116,104,252,24,1,72,115,116,114,105,110,103,45,99,105,60,61,63,252, -25,1,72,115,116,114,105,110,103,45,99,105,62,61,63,252,26,1,73,115,116, -114,105,110,103,45,97,112,112,101,110,100,252,27,1,72,115,116,114,105,110,103, -45,62,108,105,115,116,252,28,1,72,108,105,115,116,45,62,115,116,114,105,110, -103,252,29,1,72,115,116,114,105,110,103,45,102,105,108,108,33,252,30,1,73, -118,101,99,116,111,114,45,108,101,110,103,116,104,252,31,1,72,118,101,99,116, -111,114,45,62,108,105,115,116,252,32,1,72,108,105,115,116,45,62,118,101,99, -116,111,114,252,33,1,72,118,101,99,116,111,114,45,102,105,108,108,33,252,34, -1,76,99,104,97,114,45,97,108,112,104,97,98,101,116,105,99,63,252,35,1, -73,99,104,97,114,45,110,117,109,101,114,105,99,63,252,36,1,76,99,104,97, -114,45,119,104,105,116,101,115,112,97,99,101,63,252,37,1,76,99,104,97,114, -45,117,112,112,101,114,45,99,97,115,101,63,252,38,1,76,99,104,97,114,45, -108,111,119,101,114,45,99,97,115,101,63,252,39,1,73,99,104,97,114,45,62, -105,110,116,101,103,101,114,252,40,1,73,105,110,116,101,103,101,114,45,62,99, -104,97,114,252,41,1,73,99,104,97,114,45,100,111,119,110,99,97,115,101,252, -42,1,1,21,99,97,108,108,45,119,105,116,104,45,111,117,116,112,117,116,45, -102,105,108,101,252,43,1,1,20,99,97,108,108,45,119,105,116,104,45,105,110, -112,117,116,45,102,105,108,101,252,44,1,1,20,119,105,116,104,45,105,110,112, -117,116,45,102,114,111,109,45,102,105,108,101,252,45,1,65,97,112,112,108,121, -252,46,1,68,102,111,114,45,101,97,99,104,252,47,1,67,115,121,109,98,111, -108,63,252,48,1,65,112,97,105,114,63,252,49,1,64,99,111,110,115,252,50, -1,68,115,101,116,45,99,97,114,33,252,51,1,68,115,101,116,45,99,100,114, -33,252,52,1,65,110,117,108,108,63,252,53,1,65,108,105,115,116,63,252,54, -1,64,108,105,115,116,252,55,1,66,108,101,110,103,116,104,252,56,1,66,97, -112,112,101,110,100,252,57,1,67,114,101,118,101,114,115,101,252,58,1,69,108, -105,115,116,45,116,97,105,108,252,59,1,68,108,105,115,116,45,114,101,102,252, -60,1,64,109,101,109,113,252,61,1,64,109,101,109,118,252,62,1,66,109,101, -109,98,101,114,252,63,1,64,97,115,115,113,252,64,1,64,97,115,115,118,252, -65,1,65,97,115,115,111,99,252,66,1,70,112,114,111,99,101,100,117,114,101, -63,252,67,1,67,110,117,109,98,101,114,63,252,68,1,68,99,111,109,112,108, -101,120,63,252,69,1,65,114,101,97,108,63,252,70,1,69,114,97,116,105,111, -110,97,108,63,252,71,1,68,105,110,116,101,103,101,114,63,252,72,1,66,101, -120,97,99,116,63,252,73,1,68,105,110,101,120,97,99,116,63,252,74,1,65, -122,101,114,111,63,252,75,1,69,112,111,115,105,116,105,118,101,63,252,76,1, -69,110,101,103,97,116,105,118,101,63,252,77,1,64,111,100,100,63,252,78,1, -65,101,118,101,110,63,252,79,1,68,113,117,111,116,105,101,110,116,252,80,1, -69,114,101,109,97,105,110,100,101,114,252,81,1,66,109,111,100,117,108,111,252, -82,1,65,102,108,111,111,114,252,83,1,67,99,101,105,108,105,110,103,252,84, -1,68,116,114,117,110,99,97,116,101,252,85,1,65,114,111,117,110,100,252,86, -1,69,110,117,109,101,114,97,116,111,114,252,87,1,71,100,101,110,111,109,105, -110,97,116,111,114,252,88,1,64,97,115,105,110,252,89,1,64,97,99,111,115, -252,90,1,64,97,116,97,110,252,91,1,64,115,113,114,116,252,92,1,64,101, -120,112,116,252,93,1,70,109,97,107,101,45,112,111,108,97,114,252,94,1,69, -114,101,97,108,45,112,97,114,116,252,95,1,69,105,109,97,103,45,112,97,114, -116,252,96,1,65,97,110,103,108,101,252,97,1,69,109,97,103,110,105,116,117, -100,101,252,98,1,71,105,110,112,117,116,45,112,111,114,116,63,252,99,1,64, -114,101,97,100,252,100,1,69,114,101,97,100,45,99,104,97,114,252,101,1,69, -112,101,101,107,45,99,104,97,114,252,102,1,71,101,111,102,45,111,98,106,101, -99,116,63,252,103,1,71,99,104,97,114,45,114,101,97,100,121,63,252,104,1, -65,119,114,105,116,101,252,105,1,67,100,105,115,112,108,97,121,252,106,1,67, -110,101,119,108,105,110,101,252,107,1,70,119,114,105,116,101,45,99,104,97,114, -252,108,1,64,108,111,97,100,252,109,1,67,115,116,114,105,110,103,63,252,110, -1,66,115,116,114,105,110,103,252,111,1,70,115,116,114,105,110,103,45,114,101, -102,252,112,1,71,115,116,114,105,110,103,45,115,101,116,33,252,113,1,68,115, -116,114,105,110,103,61,63,252,114,1,69,115,117,98,115,116,114,105,110,103,252, -115,1,71,115,116,114,105,110,103,45,99,111,112,121,252,116,1,71,115,116,114, -105,110,103,45,99,105,61,63,252,117,1,68,115,116,114,105,110,103,60,63,252, -118,1,68,115,116,114,105,110,103,62,63,252,119,1,69,115,116,114,105,110,103, -60,61,63,252,120,1,69,115,116,114,105,110,103,62,61,63,252,121,1,71,115, -116,114,105,110,103,45,99,105,60,63,252,122,1,71,115,116,114,105,110,103,45, -99,105,62,63,252,123,1,67,118,101,99,116,111,114,63,252,124,1,71,109,97, -107,101,45,118,101,99,116,111,114,252,125,1,66,118,101,99,116,111,114,252,126, -1,70,118,101,99,116,111,114,45,114,101,102,252,127,1,71,118,101,99,116,111, -114,45,115,101,116,33,252,128,1,65,99,104,97,114,63,252,129,1,66,99,104, -97,114,61,63,252,130,1,66,99,104,97,114,60,63,252,131,1,66,99,104,97, -114,62,63,252,132,1,67,99,104,97,114,60,61,63,252,133,1,67,99,104,97, -114,62,61,63,252,134,1,69,99,104,97,114,45,99,105,61,63,252,135,1,69, -99,104,97,114,45,99,105,60,63,252,136,1,69,99,104,97,114,45,99,105,62, -63,252,137,1,70,99,104,97,114,45,99,105,60,61,63,252,138,1,70,99,104, -97,114,45,99,105,62,61,63,252,139,1,71,99,104,97,114,45,117,112,99,97, -115,101,252,140,1,68,98,111,111,108,101,97,110,63,252,141,1,64,101,113,118, -63,252,142,1,66,101,113,117,97,108,63,252,143,1,65,102,111,114,99,101,252, -144,1,76,99,97,108,108,45,119,105,116,104,45,118,97,108,117,101,115,252,145, -1,66,118,97,108,117,101,115,252,146,1,64,101,118,97,108,252,147,1,2,71, -2,93,2,97,2,91,72,100,121,110,97,109,105,99,45,119,105,110,100,252,148, -1,9,193,97,68,35,37,107,101,114,110,101,108,252,149,1,2,116,2,115,2, -114,2,113,95,2,252,149,1,2,100,2,117,0}; - EVAL_ONE_SIZED_STR((char *)expr, 12675); +114,215,12,251,211,199,200,201,202,27,28,248,22,252,136,1,197,27,248,80,159, +38,8,50,34,199,27,250,22,116,80,159,41,8,27,35,249,22,51,203,198,11, +28,192,192,27,248,22,252,211,1,200,28,249,22,252,66,3,80,159,41,58,35, +194,249,80,159,41,8,51,34,196,194,248,22,59,249,22,252,159,1,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,252,25,3,197,28,248,22,252,39,3,197, +196,248,22,59,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,50,197,248,22,252,9, +2,248,22,58,198,10,11,28,249,22,252,11,2,248,22,52,199,2,214,27,250, +22,116,80,159,40,8,27,35,249,22,51,202,247,22,252,56,3,11,28,192,192, +27,27,248,22,64,200,28,249,22,181,194,35,248,22,59,6,5,5,109,122,108, +105,98,28,249,22,183,194,35,248,22,80,200,11,28,192,28,249,22,4,32,216, +89,162,33,34,35,9,222,28,248,22,252,136,1,193,248,22,252,38,3,193,11, +194,28,248,22,252,136,1,248,22,78,200,28,248,22,252,38,3,248,22,78,200, +27,250,80,159,42,48,35,2,211,248,22,52,197,248,22,53,197,249,22,252,36, +3,194,248,22,78,202,11,11,11,11,28,249,22,252,11,2,248,22,52,199,64, +102,105,108,101,217,28,249,22,181,248,22,64,199,35,27,248,22,78,198,28,248, +22,252,136,1,193,28,27,248,22,252,25,3,194,28,192,192,28,248,22,252,136, +1,194,27,248,22,252,38,3,195,28,192,192,248,22,252,39,3,195,11,249,22, +252,41,3,194,248,80,159,40,8,50,34,201,11,11,11,11,87,94,28,28,248, +22,252,25,3,193,10,248,22,252,222,1,193,12,28,198,250,22,252,39,2,67, +114,101,113,117,105,114,101,218,249,22,252,184,1,6,17,17,98,97,100,32,109, +111,100,117,108,101,32,112,97,116,104,126,97,28,197,248,22,52,198,6,0,0, +201,250,22,252,40,2,2,211,249,22,252,184,1,6,13,13,109,111,100,117,108, +101,32,112,97,116,104,126,97,28,197,248,22,52,198,6,0,0,199,27,28,248, +22,252,222,1,194,249,22,252,227,1,195,33,248,22,252,43,3,248,22,252,44, +3,195,27,28,248,22,252,222,1,195,249,22,252,227,1,196,34,248,80,159,39, +37,35,194,91,159,36,11,90,161,36,33,11,28,248,22,252,222,1,198,250,22, +7,67,105,103,110,111,114,101,100,219,249,22,252,227,1,202,35,2,219,248,22, +252,37,3,197,27,28,248,22,252,222,1,199,249,22,252,227,1,200,36,249,80, +159,44,35,35,196,5,0,27,28,248,22,252,222,1,200,249,22,252,227,1,201, +37,249,22,252,184,1,6,3,3,44,126,97,248,22,252,210,1,248,22,252,27, +3,248,80,159,48,37,35,199,27,28,248,22,252,222,1,201,249,22,252,227,1, +202,38,248,22,42,249,22,252,159,1,196,248,22,252,210,1,248,22,252,27,3, +199,27,28,248,22,252,222,1,202,249,22,252,227,1,203,39,27,249,22,252,65, +3,80,159,48,34,35,248,22,252,27,3,201,28,192,248,22,52,193,10,27,27, +250,22,116,80,159,50,59,35,248,22,252,80,3,247,22,252,212,2,11,28,192, +192,27,247,22,110,87,94,250,22,115,80,159,51,59,35,248,22,252,80,3,247, +22,252,212,2,195,192,87,95,28,23,17,27,250,22,116,196,198,11,87,94,28, +192,28,28,248,22,41,193,10,249,22,252,13,2,196,194,12,252,22,252,37,2, +2,211,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,252,11,2,10,199, +6,0,0,197,28,249,22,252,11,2,10,201,6,0,0,199,23,15,12,28,192, +12,87,95,27,249,22,17,247,22,15,80,159,50,8,28,35,27,247,22,252,212, +2,249,22,3,89,162,33,34,47,9,226,13,14,2,3,28,249,22,252,13,2, +248,22,53,199,197,28,249,22,252,11,2,248,22,52,199,195,251,22,252,37,2, +2,211,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,53,248,22,67,249,22, +51,205,201,12,12,195,27,248,22,42,198,20,14,159,80,159,48,8,28,35,249, +22,51,247,22,252,212,2,204,20,14,159,80,158,48,52,250,80,158,51,53,249, +22,19,11,80,158,53,52,22,234,195,249,247,80,159,50,51,35,205,248,22,42, +248,22,252,210,1,248,22,252,27,3,203,250,22,115,196,198,197,12,28,28,248, +22,252,222,1,203,11,27,248,22,252,136,1,23,16,28,192,192,28,248,22,50, +23,16,249,22,252,11,2,248,22,52,23,18,2,214,11,250,22,115,80,159,49, +8,27,35,28,248,22,252,136,1,23,18,249,22,51,23,19,248,80,159,52,8, +50,34,23,21,249,22,51,23,19,247,22,252,56,3,254,22,252,224,1,23,19, +23,18,23,16,206,205,204,203,12,194,208,83,159,33,93,80,159,33,8,32,34, +83,158,36,20,92,95,2,69,89,162,33,33,35,9,223,0,248,80,158,34,8, +32,9,89,162,33,34,46,9,223,0,27,247,22,252,58,3,249,80,159,36,44, +35,28,194,27,248,22,252,217,1,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,252,36,3,248,22, +252,54,3,69,97,100,100,111,110,45,100,105,114,220,247,22,252,215,1,6,8, +8,99,111,108,108,101,99,116,115,11,27,248,80,159,39,8,52,34,249,22,65, +201,248,22,59,248,22,252,54,3,72,99,111,108,108,101,99,116,115,45,100,105, +114,221,28,193,249,22,51,195,194,192,83,159,33,93,80,159,33,8,33,34,32, +222,89,162,33,34,36,2,71,222,27,248,22,252,4,1,194,28,192,192,248,22, +252,5,1,194,83,159,33,97,80,159,33,8,34,34,80,159,33,8,35,34,80, +159,33,8,36,34,80,159,33,8,37,34,80,159,33,8,38,34,26,9,22,252, +91,2,63,101,118,116,223,11,34,33,11,248,22,59,249,22,51,22,252,90,2, +33,247,22,252,114,2,11,21,93,33,83,159,33,93,80,159,33,8,39,34,89, +162,33,34,38,2,83,223,0,87,94,28,28,248,22,0,194,249,22,34,195,33, +11,12,250,22,252,40,2,2,83,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,159,34,8,35,35,89,162,33, +34,35,9,223,2,247,192,83,159,33,93,80,159,33,8,40,34,32,224,89,162, +33,34,37,2,85,222,87,94,28,248,22,252,254,2,193,12,250,22,252,40,2, +2,85,6,7,7,99,104,97,110,110,101,108,195,248,22,252,239,2,193,83,159, +33,93,80,159,33,8,41,34,32,225,89,162,33,34,37,2,87,222,87,94,28, +248,22,252,254,2,193,12,250,22,252,40,2,2,87,6,7,7,99,104,97,110, +110,101,108,195,249,22,252,240,2,33,194,83,159,33,93,80,159,33,8,42,34, +32,226,89,162,33,35,38,2,89,222,87,94,28,248,22,252,254,2,193,12,250, +22,252,40,2,2,89,6,7,7,99,104,97,110,110,101,108,195,28,248,22,252, +239,2,249,22,252,253,2,195,196,12,11,83,159,33,93,80,159,33,8,43,34, +32,227,89,162,33,33,33,2,91,222,247,22,252,212,2,83,159,33,93,80,159, +33,8,44,34,89,162,33,34,38,2,93,223,0,87,94,28,249,22,181,195,38, +12,250,22,252,40,2,2,93,6,1,1,53,196,248,80,159,34,8,45,35,11, +83,159,33,93,80,159,33,8,46,34,89,162,33,34,38,2,97,223,0,87,94, +28,249,22,181,195,38,12,250,22,252,40,2,2,97,6,1,1,53,196,248,80, +159,34,8,45,35,10,83,159,33,93,80,159,33,8,45,34,89,162,33,34,42, +2,95,223,0,27,248,22,252,190,2,65,101,109,112,116,121,228,27,247,22,252, +190,2,87,94,20,14,159,80,158,35,52,250,80,158,38,53,249,22,19,11,80, +158,40,52,22,252,212,2,196,87,96,249,22,239,194,66,35,37,114,53,114,115, +229,248,22,237,2,229,248,22,238,21,95,64,111,110,108,121,230,68,109,122,115, +99,104,101,109,101,231,72,115,121,110,116,97,120,45,114,117,108,101,115,232,28, +195,12,249,22,3,32,233,89,162,33,34,38,9,222,249,22,252,77,3,194,249, +22,235,2,231,196,21,15,203,63,99,97,114,234,63,99,100,114,235,64,99,97, +97,114,236,64,99,97,100,114,237,64,99,100,97,114,238,64,99,100,100,114,239, +65,99,97,97,97,114,240,65,99,97,97,100,114,241,65,99,97,100,97,114,242, +65,99,97,100,100,114,243,65,99,100,97,97,114,244,65,99,100,97,100,114,245, +65,99,100,100,97,114,246,65,99,100,100,100,114,247,66,99,97,97,97,97,114, +248,66,99,97,97,97,100,114,249,66,99,97,97,100,97,114,250,66,99,97,97, +100,100,114,251,66,99,97,100,97,97,114,252,252,0,66,99,97,100,97,100,114, +252,253,0,66,99,97,100,100,97,114,252,254,0,66,99,97,100,100,100,114,252, +255,0,66,99,100,97,97,97,114,252,0,1,66,99,100,97,97,100,114,252,1, +1,66,99,100,97,100,97,114,252,2,1,66,99,100,97,100,100,114,252,3,1, +66,99,100,100,97,97,114,252,4,1,66,99,100,100,97,100,114,252,5,1,66, +99,100,100,100,97,114,252,6,1,66,99,100,100,100,100,114,252,7,1,63,109, +97,112,252,8,1,61,61,252,9,1,61,60,252,10,1,61,62,252,11,1,62, +60,61,252,12,1,62,62,61,252,13,1,63,109,97,120,252,14,1,63,109,105, +110,252,15,1,61,43,252,16,1,61,45,252,17,1,61,42,252,18,1,61,47, +252,19,1,63,97,98,115,252,20,1,63,103,99,100,252,21,1,63,108,99,109, +252,22,1,63,101,120,112,252,23,1,63,108,111,103,252,24,1,63,115,105,110, +252,25,1,63,99,111,115,252,26,1,63,116,97,110,252,27,1,63,110,111,116, +252,28,1,63,101,113,63,252,29,1,1,30,99,97,108,108,45,119,105,116,104, +45,99,117,114,114,101,110,116,45,99,111,110,116,105,110,117,97,116,105,111,110, +252,30,1,71,109,97,107,101,45,115,116,114,105,110,103,252,31,1,74,115,121, +109,98,111,108,45,62,115,116,114,105,110,103,252,32,1,74,115,116,114,105,110, +103,45,62,115,121,109,98,111,108,252,33,1,76,109,97,107,101,45,114,101,99, +116,97,110,103,117,108,97,114,252,34,1,74,101,120,97,99,116,45,62,105,110, +101,120,97,99,116,252,35,1,74,105,110,101,120,97,99,116,45,62,101,120,97, +99,116,252,36,1,74,110,117,109,98,101,114,45,62,115,116,114,105,110,103,252, +37,1,74,115,116,114,105,110,103,45,62,110,117,109,98,101,114,252,38,1,2, +14,72,111,117,116,112,117,116,45,112,111,114,116,63,252,39,1,78,99,117,114, +114,101,110,116,45,105,110,112,117,116,45,112,111,114,116,252,40,1,79,99,117, +114,114,101,110,116,45,111,117,116,112,117,116,45,112,111,114,116,252,41,1,78, +99,117,114,114,101,110,116,45,101,114,114,111,114,45,112,111,114,116,252,42,1, +75,111,112,101,110,45,105,110,112,117,116,45,102,105,108,101,252,43,1,76,111, +112,101,110,45,111,117,116,112,117,116,45,102,105,108,101,252,44,1,76,99,108, +111,115,101,45,105,110,112,117,116,45,112,111,114,116,252,45,1,77,99,108,111, +115,101,45,111,117,116,112,117,116,45,112,111,114,116,252,46,1,79,119,105,116, +104,45,111,117,116,112,117,116,45,116,111,45,102,105,108,101,252,47,1,73,116, +114,97,110,115,99,114,105,112,116,45,111,110,252,48,1,74,116,114,97,110,115, +99,114,105,112,116,45,111,102,102,252,49,1,72,102,108,117,115,104,45,111,117, +116,112,117,116,252,50,1,73,115,116,114,105,110,103,45,108,101,110,103,116,104, +252,51,1,72,115,116,114,105,110,103,45,99,105,60,61,63,252,52,1,72,115, +116,114,105,110,103,45,99,105,62,61,63,252,53,1,73,115,116,114,105,110,103, +45,97,112,112,101,110,100,252,54,1,72,115,116,114,105,110,103,45,62,108,105, +115,116,252,55,1,72,108,105,115,116,45,62,115,116,114,105,110,103,252,56,1, +72,115,116,114,105,110,103,45,102,105,108,108,33,252,57,1,73,118,101,99,116, +111,114,45,108,101,110,103,116,104,252,58,1,72,118,101,99,116,111,114,45,62, +108,105,115,116,252,59,1,72,108,105,115,116,45,62,118,101,99,116,111,114,252, +60,1,72,118,101,99,116,111,114,45,102,105,108,108,33,252,61,1,76,99,104, +97,114,45,97,108,112,104,97,98,101,116,105,99,63,252,62,1,73,99,104,97, +114,45,110,117,109,101,114,105,99,63,252,63,1,76,99,104,97,114,45,119,104, +105,116,101,115,112,97,99,101,63,252,64,1,76,99,104,97,114,45,117,112,112, +101,114,45,99,97,115,101,63,252,65,1,76,99,104,97,114,45,108,111,119,101, +114,45,99,97,115,101,63,252,66,1,73,99,104,97,114,45,62,105,110,116,101, +103,101,114,252,67,1,73,105,110,116,101,103,101,114,45,62,99,104,97,114,252, +68,1,73,99,104,97,114,45,100,111,119,110,99,97,115,101,252,69,1,1,21, +99,97,108,108,45,119,105,116,104,45,111,117,116,112,117,116,45,102,105,108,101, +252,70,1,1,20,99,97,108,108,45,119,105,116,104,45,105,110,112,117,116,45, +102,105,108,101,252,71,1,1,20,119,105,116,104,45,105,110,112,117,116,45,102, +114,111,109,45,102,105,108,101,252,72,1,65,97,112,112,108,121,252,73,1,68, +102,111,114,45,101,97,99,104,252,74,1,67,115,121,109,98,111,108,63,252,75, +1,65,112,97,105,114,63,252,76,1,64,99,111,110,115,252,77,1,68,115,101, +116,45,99,97,114,33,252,78,1,68,115,101,116,45,99,100,114,33,252,79,1, +65,110,117,108,108,63,252,80,1,65,108,105,115,116,63,252,81,1,64,108,105, +115,116,252,82,1,66,108,101,110,103,116,104,252,83,1,66,97,112,112,101,110, +100,252,84,1,67,114,101,118,101,114,115,101,252,85,1,69,108,105,115,116,45, +116,97,105,108,252,86,1,68,108,105,115,116,45,114,101,102,252,87,1,64,109, +101,109,113,252,88,1,64,109,101,109,118,252,89,1,66,109,101,109,98,101,114, +252,90,1,64,97,115,115,113,252,91,1,64,97,115,115,118,252,92,1,65,97, +115,115,111,99,252,93,1,70,112,114,111,99,101,100,117,114,101,63,252,94,1, +67,110,117,109,98,101,114,63,252,95,1,68,99,111,109,112,108,101,120,63,252, +96,1,65,114,101,97,108,63,252,97,1,69,114,97,116,105,111,110,97,108,63, +252,98,1,68,105,110,116,101,103,101,114,63,252,99,1,66,101,120,97,99,116, +63,252,100,1,68,105,110,101,120,97,99,116,63,252,101,1,65,122,101,114,111, +63,252,102,1,69,112,111,115,105,116,105,118,101,63,252,103,1,69,110,101,103, +97,116,105,118,101,63,252,104,1,64,111,100,100,63,252,105,1,65,101,118,101, +110,63,252,106,1,68,113,117,111,116,105,101,110,116,252,107,1,69,114,101,109, +97,105,110,100,101,114,252,108,1,66,109,111,100,117,108,111,252,109,1,65,102, +108,111,111,114,252,110,1,67,99,101,105,108,105,110,103,252,111,1,68,116,114, +117,110,99,97,116,101,252,112,1,65,114,111,117,110,100,252,113,1,69,110,117, +109,101,114,97,116,111,114,252,114,1,71,100,101,110,111,109,105,110,97,116,111, +114,252,115,1,64,97,115,105,110,252,116,1,64,97,99,111,115,252,117,1,64, +97,116,97,110,252,118,1,64,115,113,114,116,252,119,1,64,101,120,112,116,252, +120,1,70,109,97,107,101,45,112,111,108,97,114,252,121,1,69,114,101,97,108, +45,112,97,114,116,252,122,1,69,105,109,97,103,45,112,97,114,116,252,123,1, +65,97,110,103,108,101,252,124,1,69,109,97,103,110,105,116,117,100,101,252,125, +1,71,105,110,112,117,116,45,112,111,114,116,63,252,126,1,64,114,101,97,100, +252,127,1,69,114,101,97,100,45,99,104,97,114,252,128,1,69,112,101,101,107, +45,99,104,97,114,252,129,1,71,101,111,102,45,111,98,106,101,99,116,63,252, +130,1,71,99,104,97,114,45,114,101,97,100,121,63,252,131,1,65,119,114,105, +116,101,252,132,1,67,100,105,115,112,108,97,121,252,133,1,67,110,101,119,108, +105,110,101,252,134,1,70,119,114,105,116,101,45,99,104,97,114,252,135,1,64, +108,111,97,100,252,136,1,67,115,116,114,105,110,103,63,252,137,1,66,115,116, +114,105,110,103,252,138,1,70,115,116,114,105,110,103,45,114,101,102,252,139,1, +71,115,116,114,105,110,103,45,115,101,116,33,252,140,1,68,115,116,114,105,110, +103,61,63,252,141,1,69,115,117,98,115,116,114,105,110,103,252,142,1,71,115, +116,114,105,110,103,45,99,111,112,121,252,143,1,71,115,116,114,105,110,103,45, +99,105,61,63,252,144,1,68,115,116,114,105,110,103,60,63,252,145,1,68,115, +116,114,105,110,103,62,63,252,146,1,69,115,116,114,105,110,103,60,61,63,252, +147,1,69,115,116,114,105,110,103,62,61,63,252,148,1,71,115,116,114,105,110, +103,45,99,105,60,63,252,149,1,71,115,116,114,105,110,103,45,99,105,62,63, +252,150,1,67,118,101,99,116,111,114,63,252,151,1,71,109,97,107,101,45,118, +101,99,116,111,114,252,152,1,66,118,101,99,116,111,114,252,153,1,70,118,101, +99,116,111,114,45,114,101,102,252,154,1,71,118,101,99,116,111,114,45,115,101, +116,33,252,155,1,65,99,104,97,114,63,252,156,1,66,99,104,97,114,61,63, +252,157,1,66,99,104,97,114,60,63,252,158,1,66,99,104,97,114,62,63,252, +159,1,67,99,104,97,114,60,61,63,252,160,1,67,99,104,97,114,62,61,63, +252,161,1,69,99,104,97,114,45,99,105,61,63,252,162,1,69,99,104,97,114, +45,99,105,60,63,252,163,1,69,99,104,97,114,45,99,105,62,63,252,164,1, +70,99,104,97,114,45,99,105,60,61,63,252,165,1,70,99,104,97,114,45,99, +105,62,61,63,252,166,1,71,99,104,97,114,45,117,112,99,97,115,101,252,167, +1,68,98,111,111,108,101,97,110,63,252,168,1,64,101,113,118,63,252,169,1, +66,101,113,117,97,108,63,252,170,1,65,102,111,114,99,101,252,171,1,76,99, +97,108,108,45,119,105,116,104,45,118,97,108,117,101,115,252,172,1,66,118,97, +108,117,101,115,252,173,1,64,101,118,97,108,252,174,1,2,71,2,93,2,97, +2,91,72,100,121,110,97,109,105,99,45,119,105,110,100,252,175,1,9,193,97, +68,35,37,107,101,114,110,101,108,252,176,1,2,116,2,115,2,114,2,113,95, +2,252,176,1,2,100,2,117,0}; + EVAL_ONE_SIZED_STR((char *)expr, 12944); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,3,51,53,50,19,252,173,1,159,32,20,98,158,16,1,20,24,65,98, -101,103,105,110,0,16,0,83,158,39,20,95,114,72,35,37,115,116,120,109,122, -45,98,111,100,121,1,29,2,11,11,18,95,11,35,98,33,10,32,11,94,159, -68,35,37,100,101,102,105,110,101,3,9,11,159,76,35,37,115,116,120,99,97, -115,101,45,115,99,104,101,109,101,4,9,11,16,4,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,5,2,2,1,20,35,37,112,108,97,105,110,45,109,111,100,117,108,101, -45,98,101,103,105,110,6,158,68,35,37,107,101,114,110,101,108,7,74,35,37, -109,111,100,117,108,101,45,98,101,103,105,110,8,10,10,32,80,158,32,32,20, -98,158,16,0,16,0,11,11,16,0,32,11,16,1,2,5,16,1,11,16,1, -2,5,32,33,93,16,5,93,2,5,89,162,32,33,44,9,223,0,28,248,80, -158,33,32,194,250,22,209,20,15,159,35,32,34,250,22,61,20,15,159,38,33, -34,249,22,209,201,249,22,59,20,15,159,42,34,34,68,109,122,115,99,104,101, -109,101,9,248,80,158,39,33,200,196,250,22,252,39,2,11,6,10,10,98,97, -100,32,115,121,110,116,97,120,196,32,20,98,158,16,2,30,10,65,35,37,115, -116,120,11,69,115,116,120,45,112,97,105,114,63,12,11,30,13,2,11,67,115, -116,120,45,99,100,114,14,6,16,3,18,98,64,104,101,114,101,15,39,33,98, -38,10,33,11,93,159,2,11,9,11,16,0,96,37,8,254,1,11,16,0,16, -4,36,11,63,115,116,120,16,3,1,7,101,110,118,52,51,49,49,17,18,158, -2,6,39,18,158,78,114,101,113,117,105,114,101,45,102,111,114,45,115,121,110, -116,97,120,18,39,11,9,95,2,7,2,4,2,3,94,2,7,2,11,0}; - EVAL_ONE_SIZED_STR((char *)expr, 439); + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,53,50,46,49,19,252,176,1,159,33,20,98,159,33,16,1,20, +24,65,98,101,103,105,110,0,16,0,83,158,40,20,95,114,72,35,37,115,116, +120,109,122,45,98,111,100,121,1,29,2,11,11,18,95,11,36,98,34,10,33, +11,94,159,68,35,37,100,101,102,105,110,101,3,9,11,159,76,35,37,115,116, +120,99,97,115,101,45,115,99,104,101,109,101,4,9,11,16,4,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,5,2,2,1,20,35,37,112,108,97,105,110,45,109,111,100, +117,108,101,45,98,101,103,105,110,6,158,68,35,37,107,101,114,110,101,108,7, +74,35,37,109,111,100,117,108,101,45,98,101,103,105,110,8,10,10,33,80,158, +33,33,20,98,159,33,16,0,16,0,11,11,16,0,33,11,16,1,2,5,16, +1,11,16,1,2,5,33,34,93,16,5,93,2,5,89,162,33,34,45,9,223, +0,28,248,80,158,34,33,194,250,22,209,20,15,159,36,33,35,250,22,61,20, +15,159,39,34,35,249,22,209,201,249,22,59,20,15,159,43,35,35,68,109,122, +115,99,104,101,109,101,9,248,80,158,40,34,200,196,250,22,252,39,2,11,6, +10,10,98,97,100,32,115,121,110,116,97,120,196,33,20,98,159,33,16,2,30, +10,65,35,37,115,116,120,11,69,115,116,120,45,112,97,105,114,63,12,11,30, +13,2,11,67,115,116,120,45,99,100,114,14,6,16,3,18,98,64,104,101,114, +101,15,40,34,98,39,10,34,11,93,159,2,11,9,11,16,0,96,38,8,254, +1,11,16,0,16,4,37,11,63,115,116,120,16,3,1,7,101,110,118,52,51, +49,49,17,18,158,2,6,40,18,158,78,114,101,113,117,105,114,101,45,102,111, +114,45,115,121,110,116,97,120,18,40,11,9,95,2,7,2,4,2,3,94,2, +7,2,11,0}; + EVAL_ONE_SIZED_STR((char *)expr, 444); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,3,51,53,50,91,252,159,6,159,32,20,98,158,16,1,20,24,65,98, -101,103,105,110,0,16,0,83,158,39,20,95,114,68,109,122,115,99,104,101,109, -101,1,29,2,11,11,10,10,10,32,80,158,32,32,20,98,158,16,0,16,0, -74,35,37,109,111,100,117,108,101,45,98,101,103,105,110,3,10,16,0,32,11, -16,73,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,4,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,5,71,99,104,97,110,110,101,108,45,103,101,116,6,71,99,104,97,110, -110,101,108,45,112,117,116,7,75,99,104,97,110,110,101,108,45,116,114,121,45, -103,101,116,8,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,9,75,99,111,108,108,101,99,116,105, -111,110,45,112,97,116,104,10,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,11,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,12,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,13,1,20,102,105,110,100,45,101,120, -101,99,117,116,97,98,108,101,45,112,97,116,104,14,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,15,65,102,111,114,99,101,16,1,20,103,101,110,101,114,97,116,101, -45,116,101,109,112,111,114,97,114,105,101,115,17,69,103,117,97,114,100,45,101, -118,116,18,71,105,100,101,110,116,105,102,105,101,114,63,19,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,20, -73,108,111,97,100,45,114,101,108,97,116,105,118,101,21,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,22,67, -108,111,97,100,47,99,100,23,77,108,111,97,100,47,117,115,101,45,99,111,109, -112,105,108,101,100,24,76,110,111,114,109,97,108,45,99,97,115,101,45,112,97, -116,104,25,76,110,117,108,108,45,101,110,118,105,114,111,110,109,101,110,116,26, -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,27,79,112,97,116,104,45,114,101,112,108,97,99, -101,45,115,117,102,102,105,120,28,72,112,97,116,104,45,115,116,114,105,110,103, -63,29,65,112,111,114,116,63,30,68,112,114,111,109,105,115,101,63,31,71,114, -97,116,105,111,110,97,108,105,122,101,32,1,20,114,101,97,100,45,101,118,97, -108,45,112,114,105,110,116,45,108,111,111,112,33,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,34,70, -113,117,97,115,105,113,117,111,116,101,35,68,117,110,115,121,110,116,97,120,36, -71,113,117,97,115,105,115,121,110,116,97,120,37,70,108,101,116,45,115,116,114, -117,99,116,38,64,119,104,101,110,39,66,100,101,102,105,110,101,40,78,112,97, -114,97,109,101,116,101,114,105,122,101,45,98,114,101,97,107,41,79,109,101,109, -111,114,121,45,116,114,97,99,101,45,108,97,109,98,100,97,42,75,113,117,97, -115,105,115,121,110,116,97,120,47,108,111,99,43,77,117,110,115,121,110,116,97, -120,45,115,112,108,105,99,105,110,103,44,64,99,97,115,101,45,62,100,111,46, -75,108,101,116,114,101,99,45,115,121,110,116,97,120,101,115,47,64,116,105,109, -101,48,73,100,101,102,105,110,101,45,115,116,114,117,99,116,49,72,112,97,114, -97,109,101,116,101,114,105,122,101,50,74,119,105,116,104,45,104,97,110,100,108, -101,114,115,42,51,71,115,101,116,33,45,118,97,108,117,101,115,52,65,100,101, -108,97,121,53,73,108,101,116,114,101,99,45,115,121,110,116,97,120,54,66,115, -121,110,116,97,120,55,70,108,101,116,45,115,121,110,116,97,120,56,72,115,121, -110,116,97,120,45,114,117,108,101,115,57,75,115,121,110,116,97,120,45,105,100, -45,114,117,108,101,115,58,2,3,66,108,101,116,47,99,99,59,63,97,110,100, -60,73,119,105,116,104,45,104,97,110,100,108,101,114,115,61,69,102,108,117,105, -100,45,108,101,116,62,72,108,101,116,45,115,121,110,116,97,120,101,115,63,73, -100,101,102,105,110,101,45,115,121,110,116,97,120,64,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,65,72,115,121,110,116,97,120,45,99,97,115,101,42,66,66,117,110,108, -101,115,115,67,66,108,101,116,47,101,99,68,64,99,111,110,100,69,71,115,121, -110,116,97,120,45,99,97,115,101,70,70,115,121,110,116,97,120,47,108,111,99, -71,62,111,114,72,77,100,101,102,105,110,101,45,102,111,114,45,115,121,110,116, -97,120,73,76,98,101,103,105,110,45,102,111,114,45,115,121,110,116,97,120,74, -71,119,105,116,104,45,115,121,110,116,97,120,75,16,73,73,35,37,109,111,114, -101,45,115,99,104,101,109,101,76,2,76,66,35,37,109,105,115,99,77,2,77, -2,77,76,35,37,115,116,120,99,97,115,101,45,115,99,104,101,109,101,78,2, -77,2,76,2,77,2,76,2,77,2,77,2,76,70,35,37,119,105,116,104,45, -115,116,120,79,2,77,65,35,37,115,116,120,80,2,77,2,77,2,77,2,77, -2,77,2,77,2,77,2,77,2,77,2,77,2,77,2,76,2,77,2,77,2, -77,71,35,37,113,113,45,97,110,100,45,111,114,81,67,35,37,113,113,115,116, -120,82,2,82,2,76,74,35,37,100,101,102,105,110,101,45,101,116,45,97,108, -83,68,35,37,100,101,102,105,110,101,84,2,76,2,77,2,82,2,82,2,76, -2,76,2,78,2,76,2,83,2,76,2,76,2,76,2,76,2,78,69,35,37, -115,116,120,99,97,115,101,85,2,78,2,78,2,78,68,35,37,107,101,114,110, -101,108,86,2,76,2,81,2,76,2,76,2,78,2,84,72,35,37,115,116,120, -109,122,45,98,111,100,121,87,68,35,37,115,116,120,108,111,99,88,2,83,2, -83,66,35,37,99,111,110,100,89,2,88,2,88,2,81,2,84,2,84,2,79, -16,73,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,49,2,50,2,51,2,52,2,53,2,54,2, -55,2,56,2,57,2,58,1,20,35,37,112,108,97,105,110,45,109,111,100,117, -108,101,45,98,101,103,105,110,90,2,59,2,60,2,61,2,62,2,63,2,64, -2,3,2,66,2,67,2,68,2,69,2,70,2,71,2,72,2,73,2,74,2, -75,8,31,8,73,9,9,100,2,86,2,76,2,77,2,78,2,80,2,87,2, -82,2,84,9,0}; - EVAL_ONE_SIZED_STR((char *)expr, 1705); + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,53,50,46,49,91,252,161,6,159,33,20,98,159,33,16,1,20, +24,65,98,101,103,105,110,0,16,0,83,158,40,20,95,114,68,109,122,115,99, +104,101,109,101,1,29,2,11,11,10,10,10,33,80,158,33,33,20,98,159,33, +16,0,16,0,74,35,37,109,111,100,117,108,101,45,98,101,103,105,110,3,10, +16,0,33,11,16,73,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,4,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,5,71,99,104,97,110,110,101,108,45,103,101,116,6,71, +99,104,97,110,110,101,108,45,112,117,116,7,75,99,104,97,110,110,101,108,45, +116,114,121,45,103,101,116,8,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,9,75,99,111,108,108, +101,99,116,105,111,110,45,112,97,116,104,10,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,11,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,12,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,13,1,20,102,105,110, +100,45,101,120,101,99,117,116,97,98,108,101,45,112,97,116,104,14,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,15,65,102,111,114,99,101,16,1,20,103,101,110,101, +114,97,116,101,45,116,101,109,112,111,114,97,114,105,101,115,17,69,103,117,97, +114,100,45,101,118,116,18,71,105,100,101,110,116,105,102,105,101,114,63,19,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,20,73,108,111,97,100,45,114,101,108,97,116,105,118,101,21,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,22,67,108,111,97,100,47,99,100,23,77,108,111,97,100,47,117,115,101, +45,99,111,109,112,105,108,101,100,24,76,110,111,114,109,97,108,45,99,97,115, +101,45,112,97,116,104,25,76,110,117,108,108,45,101,110,118,105,114,111,110,109, +101,110,116,26,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,27,79,112,97,116,104,45,114,101, +112,108,97,99,101,45,115,117,102,102,105,120,28,72,112,97,116,104,45,115,116, +114,105,110,103,63,29,65,112,111,114,116,63,30,68,112,114,111,109,105,115,101, +63,31,71,114,97,116,105,111,110,97,108,105,122,101,32,1,20,114,101,97,100, +45,101,118,97,108,45,112,114,105,110,116,45,108,111,111,112,33,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,34,73,119,105,116,104,45,104,97,110,100,108,101,114,115,35,70,113,117, +97,115,105,113,117,111,116,101,36,68,117,110,115,121,110,116,97,120,37,70,108, +101,116,45,115,116,114,117,99,116,38,69,102,108,117,105,100,45,108,101,116,39, +74,119,105,116,104,45,104,97,110,100,108,101,114,115,42,40,71,113,117,97,115, +105,115,121,110,116,97,120,41,71,119,105,116,104,45,115,121,110,116,97,120,42, +71,115,101,116,33,45,118,97,108,117,101,115,43,77,100,101,102,105,110,101,45, +102,111,114,45,115,121,110,116,97,120,44,76,98,101,103,105,110,45,102,111,114, +45,115,121,110,116,97,120,45,75,108,101,116,114,101,99,45,115,121,110,116,97, +120,101,115,46,70,108,101,116,45,115,121,110,116,97,120,47,72,115,121,110,116, +97,120,45,114,117,108,101,115,48,75,113,117,97,115,105,115,121,110,116,97,120, +47,108,111,99,49,75,115,121,110,116,97,120,45,105,100,45,114,117,108,101,115, +50,66,117,110,108,101,115,115,51,73,100,101,102,105,110,101,45,115,121,110,116, +97,120,52,63,97,110,100,53,2,3,64,99,97,115,101,54,73,108,101,116,114, +101,99,45,115,121,110,116,97,120,55,72,108,101,116,45,115,121,110,116,97,120, +101,115,56,62,100,111,57,65,100,101,108,97,121,58,78,112,97,114,97,109,101, +116,101,114,105,122,101,45,98,114,101,97,107,59,73,100,101,102,105,110,101,45, +115,116,114,117,99,116,60,72,115,121,110,116,97,120,45,99,97,115,101,42,61, +71,115,121,110,116,97,120,45,99,97,115,101,62,70,115,121,110,116,97,120,47, +108,111,99,63,72,112,97,114,97,109,101,116,101,114,105,122,101,64,64,116,105, +109,101,65,66,115,121,110,116,97,120,66,66,108,101,116,47,99,99,67,66,100, +101,102,105,110,101,68,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,69,77,117,110,115,121, +110,116,97,120,45,115,112,108,105,99,105,110,103,70,64,119,104,101,110,71,66, +108,101,116,47,101,99,72,64,99,111,110,100,73,79,109,101,109,111,114,121,45, +116,114,97,99,101,45,108,97,109,98,100,97,74,62,111,114,75,16,73,73,35, +37,109,111,114,101,45,115,99,104,101,109,101,76,2,76,66,35,37,109,105,115, +99,77,2,77,2,77,76,35,37,115,116,120,99,97,115,101,45,115,99,104,101, +109,101,78,2,77,2,76,2,77,2,76,2,77,2,77,2,76,70,35,37,119, +105,116,104,45,115,116,120,79,2,77,65,35,37,115,116,120,80,2,77,2,77, +2,77,2,77,2,77,2,77,2,77,2,77,2,77,2,77,2,77,2,76,2, +77,2,77,2,77,2,76,71,35,37,113,113,45,97,110,100,45,111,114,81,67, +35,37,113,113,115,116,120,82,2,76,2,76,2,76,2,82,2,79,2,76,68, +35,37,100,101,102,105,110,101,83,2,83,2,78,2,78,2,78,2,82,2,78, +74,35,37,100,101,102,105,110,101,45,101,116,45,97,108,84,2,83,2,81,68, +35,37,107,101,114,110,101,108,85,2,76,2,78,2,78,2,76,2,76,2,76, +2,84,68,35,37,115,116,120,108,111,99,86,2,86,2,86,2,76,2,76,69, +35,37,115,116,120,99,97,115,101,87,2,76,2,83,72,35,37,115,116,120,109, +122,45,98,111,100,121,88,2,82,2,84,2,84,66,35,37,99,111,110,100,89, +2,77,2,81,16,73,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,49,2,50,2,51,2,52,2, +53,1,20,35,37,112,108,97,105,110,45,109,111,100,117,108,101,45,98,101,103, +105,110,90,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,3,2,70,2,71,2,72,2, +73,2,74,2,75,8,31,8,73,9,9,100,2,85,2,76,2,77,2,78,2, +80,2,88,2,82,2,83,9,0}; + EVAL_ONE_SIZED_STR((char *)expr, 1709); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,3,51,53,50,121,252,117,15,159,32,20,98,158,16,1,20,24,65,98, -101,103,105,110,0,16,0,83,158,39,20,95,114,66,35,37,114,53,114,115,1, -29,2,11,11,10,10,10,33,80,158,32,32,20,98,158,16,1,30,3,2,2, -69,117,110,100,101,102,105,110,101,100,4,254,1,16,0,11,11,16,1,2,4, -33,11,16,24,70,113,117,97,115,105,113,117,111,116,101,5,65,113,117,111,116, -101,6,65,35,37,97,112,112,7,62,100,111,8,67,35,37,100,97,116,117,109, -9,63,108,101,116,10,76,117,110,113,117,111,116,101,45,115,112,108,105,99,105, -110,103,11,2,0,65,35,37,116,111,112,12,63,97,110,100,13,62,111,114,14, -73,100,101,102,105,110,101,45,115,121,110,116,97,120,15,62,105,102,16,64,115, -101,116,33,17,71,114,53,114,115,58,108,101,116,114,101,99,18,67,117,110,113, -117,111,116,101,19,64,108,101,116,42,20,64,99,97,115,101,21,73,108,101,116, -114,101,99,45,115,121,110,116,97,120,22,65,100,101,108,97,121,23,66,100,101, -102,105,110,101,24,64,99,111,110,100,25,70,108,101,116,45,115,121,110,116,97, -120,26,66,108,97,109,98,100,97,27,16,24,71,35,37,113,113,45,97,110,100, -45,111,114,28,68,35,37,107,101,114,110,101,108,29,2,29,73,35,37,109,111, -114,101,45,115,99,104,101,109,101,30,2,29,2,29,2,29,2,29,2,29,2, -28,2,28,68,35,37,100,101,102,105,110,101,31,2,29,2,29,11,2,29,2, -29,2,30,76,35,37,115,116,120,99,97,115,101,45,115,99,104,101,109,101,32, -2,30,2,31,66,35,37,99,111,110,100,33,2,32,2,29,16,24,2,5,2, -6,2,7,2,8,2,9,2,10,2,11,2,0,2,12,2,13,2,14,2,15, -2,16,2,17,66,108,101,116,114,101,99,34,2,19,2,20,2,21,2,22,2, -23,2,24,2,25,2,26,2,27,32,56,93,16,5,93,2,18,89,162,32,33, -8,32,9,223,0,27,28,248,80,158,34,32,195,249,80,158,35,33,248,80,158, -36,34,197,27,248,80,158,37,35,198,28,248,80,158,37,32,193,249,80,158,38, -36,27,248,80,158,40,34,196,28,248,80,158,40,37,193,248,22,8,89,162,32, -33,39,9,224,8,1,27,249,22,2,89,162,32,33,45,9,224,4,5,249,80, -158,35,38,28,248,80,158,36,32,197,249,80,158,37,33,248,80,158,38,34,199, -27,248,80,158,39,35,200,28,248,80,158,39,32,193,249,80,158,40,33,248,80, -158,41,34,195,248,80,158,41,39,248,80,158,42,35,196,11,11,194,248,80,158, -37,40,196,28,248,22,57,193,21,94,9,9,248,80,158,35,41,193,11,27,248, -80,158,40,35,196,28,248,80,158,40,37,193,248,80,158,40,40,193,11,11,11, -28,192,27,248,22,52,194,27,248,22,78,195,27,248,22,87,196,27,248,22,88, -197,249,80,158,39,42,200,27,250,22,61,198,200,199,27,20,15,159,41,32,44, -91,159,33,11,90,161,33,32,11,83,160,38,32,33,11,247,248,22,8,89,162, -32,33,40,9,226,11,2,3,1,250,22,31,89,162,32,32,36,9,225,6,3, -7,90,161,33,33,10,247,22,252,184,2,248,22,252,184,2,89,162,32,33,36, -9,224,3,1,248,193,89,162,32,32,36,9,224,2,3,28,248,22,252,181,2, -193,248,22,252,186,2,193,249,80,158,35,43,21,99,2,18,6,19,19,103,101, -110,101,114,97,116,101,95,116,101,109,112,95,110,97,109,101,115,94,64,118,97, -114,49,35,63,46,46,46,36,9,94,94,2,35,65,105,110,105,116,49,37,2, -36,64,98,111,100,121,38,2,36,20,15,159,35,33,44,89,162,32,32,52,9, -225,6,5,4,27,250,22,209,20,15,159,38,34,44,250,22,209,20,15,159,41, -35,44,253,22,62,20,15,159,47,36,44,20,15,159,47,37,44,248,22,78,206, -20,15,159,47,38,44,250,22,2,89,162,33,33,41,9,223,18,250,22,209,20, -15,159,35,39,44,249,22,60,248,22,52,199,248,22,78,199,20,15,159,35,40, -44,248,22,78,23,17,248,22,80,23,17,248,22,52,206,20,15,159,41,41,44, -197,89,162,32,32,33,9,223,0,192,89,162,32,32,34,9,223,3,248,22,252, -184,2,208,27,28,248,80,158,35,32,196,249,80,158,36,33,248,80,158,37,34, -198,27,248,80,158,38,35,199,28,248,80,158,38,32,193,28,27,248,80,158,39, -34,194,28,249,22,252,13,2,6,19,19,103,101,110,101,114,97,116,101,95,116, -101,109,112,95,110,97,109,101,115,248,22,210,195,9,11,27,248,80,158,39,35, -194,28,248,80,158,39,32,193,28,248,80,158,39,39,248,80,158,40,34,194,27, -248,80,158,40,35,194,28,248,80,158,40,32,193,249,80,158,41,36,27,248,80, -158,43,34,196,28,248,80,158,43,37,193,248,22,59,248,80,158,44,40,194,11, -27,248,80,158,43,35,196,28,248,80,158,43,32,193,249,80,158,44,36,27,248, -80,158,46,34,196,28,248,80,158,46,37,193,248,22,8,89,162,32,33,39,9, -224,14,1,27,249,22,2,89,162,32,33,45,9,224,4,5,249,80,158,35,38, -28,248,80,158,36,32,197,249,80,158,37,33,248,80,158,38,34,199,27,248,80, -158,39,35,200,28,248,80,158,39,32,193,249,80,158,40,33,248,80,158,41,34, -195,248,80,158,41,39,248,80,158,42,35,196,11,11,194,248,80,158,37,40,196, -28,248,22,57,193,21,94,9,9,248,80,158,35,41,193,11,27,248,80,158,46, -35,196,28,248,80,158,46,37,193,248,80,158,46,40,193,11,11,11,11,11,11, -11,11,28,192,27,248,22,52,194,27,248,22,78,195,27,248,22,87,196,27,248, -22,90,197,27,248,22,89,198,249,80,158,41,42,202,27,251,22,61,200,201,199, -202,27,20,15,159,43,42,44,91,159,33,11,90,161,33,32,11,83,160,38,32, -33,11,247,248,22,8,89,162,32,33,40,9,226,13,2,3,1,250,22,31,89, -162,32,32,36,9,225,6,3,7,90,161,33,33,10,247,22,252,184,2,248,22, -252,184,2,89,162,32,33,36,9,224,3,1,248,193,89,162,32,32,36,9,224, -2,3,28,248,22,252,181,2,193,248,22,252,186,2,193,249,80,158,35,43,21, -95,2,10,94,94,2,35,2,4,2,36,97,2,10,94,94,65,116,101,109,112, -49,39,2,37,2,36,95,2,17,2,35,2,39,2,36,96,2,10,9,2,38, -2,36,20,15,159,35,43,44,89,162,32,32,8,29,9,225,6,5,4,27,250, -22,209,20,15,159,38,44,44,250,22,209,20,15,159,41,45,44,250,22,60,20, -15,159,44,46,44,249,22,2,89,162,33,33,40,9,223,14,250,22,209,20,15, -159,35,47,44,249,22,56,248,22,52,199,20,15,159,37,48,44,20,15,159,35, -49,44,248,22,78,205,250,22,209,20,15,159,47,50,44,250,22,62,20,15,159, -50,51,44,250,22,2,89,162,33,33,41,9,223,21,250,22,209,20,15,159,35, -52,44,249,22,60,248,22,52,199,248,22,78,199,20,15,159,35,53,44,248,22, -88,23,20,248,22,52,23,20,249,22,65,250,22,2,89,162,33,33,41,9,223, -23,250,22,209,20,15,159,35,54,44,250,22,60,20,15,159,38,55,44,248,22, -52,200,248,22,78,200,20,15,159,35,56,44,248,22,78,23,22,248,22,88,23, -22,248,22,60,250,22,209,20,15,159,56,57,44,250,22,62,20,15,159,59,58, -44,20,15,159,59,59,44,248,22,87,23,26,20,15,159,56,8,28,44,20,15, -159,47,8,29,44,20,15,159,41,8,30,44,197,89,162,32,32,33,9,223,0, -192,89,162,32,32,34,9,223,3,248,22,252,184,2,208,27,28,248,80,158,36, -32,197,249,80,158,37,33,248,80,158,38,34,199,27,248,80,158,39,35,200,28, -248,80,158,39,32,193,28,27,248,80,158,40,34,194,28,249,22,252,13,2,6, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,53,50,46,49,121,252,205,15,159,33,20,98,159,33,16,1,20, +24,65,98,101,103,105,110,0,16,0,83,158,40,20,95,114,66,35,37,114,53, +114,115,1,29,2,11,11,10,10,10,34,80,158,33,33,20,98,159,33,16,1, +30,3,2,2,69,117,110,100,101,102,105,110,101,100,4,254,1,16,0,11,11, +16,1,2,4,34,11,16,24,70,113,117,97,115,105,113,117,111,116,101,5,65, +113,117,111,116,101,6,65,35,37,97,112,112,7,67,35,37,100,97,116,117,109, +8,65,100,101,108,97,121,9,70,108,101,116,45,115,121,110,116,97,120,10,76, +117,110,113,117,111,116,101,45,115,112,108,105,99,105,110,103,11,64,115,101,116, +33,12,2,0,65,35,37,116,111,112,13,73,100,101,102,105,110,101,45,115,121, +110,116,97,120,14,63,97,110,100,15,62,105,102,16,73,108,101,116,114,101,99, +45,115,121,110,116,97,120,17,62,111,114,18,71,114,53,114,115,58,108,101,116, +114,101,99,19,67,117,110,113,117,111,116,101,20,64,108,101,116,42,21,64,99, +111,110,100,22,63,108,101,116,23,66,100,101,102,105,110,101,24,62,100,111,25, +64,99,97,115,101,26,66,108,97,109,98,100,97,27,16,24,71,35,37,113,113, +45,97,110,100,45,111,114,28,68,35,37,107,101,114,110,101,108,29,2,29,2, +29,73,35,37,109,111,114,101,45,115,99,104,101,109,101,30,76,35,37,115,116, +120,99,97,115,101,45,115,99,104,101,109,101,31,2,29,2,29,2,29,2,29, +68,35,37,100,101,102,105,110,101,32,2,28,2,29,2,31,2,28,11,2,29, +2,29,66,35,37,99,111,110,100,33,2,29,2,32,2,30,2,30,2,29,16, +24,2,5,2,6,2,7,2,8,2,9,2,10,2,11,2,12,2,0,2,13, +2,14,2,15,2,16,2,17,2,18,66,108,101,116,114,101,99,34,2,20,2, +21,2,22,2,23,2,24,2,25,2,26,2,27,33,57,93,16,5,93,2,19, +87,98,83,159,33,93,80,159,33,8,60,34,89,162,34,34,41,9,223,0,250, +22,209,20,15,159,36,8,40,45,249,22,60,248,22,52,199,248,22,78,199,20, +15,159,36,8,41,45,83,159,33,93,80,159,33,8,59,34,89,162,34,34,42, +9,223,0,250,22,209,20,15,159,36,55,45,250,22,60,20,15,159,39,56,45, +248,22,52,200,248,22,78,200,20,15,159,36,57,45,83,159,33,93,80,159,33, +8,58,34,89,162,34,34,41,9,223,0,250,22,209,20,15,159,36,53,45,249, +22,60,248,22,52,199,248,22,78,199,20,15,159,36,54,45,83,159,33,93,80, +159,33,8,57,34,89,162,34,34,41,9,223,0,250,22,209,20,15,159,36,48, +45,249,22,56,248,22,52,199,20,15,159,38,49,45,20,15,159,36,50,45,83, +159,33,93,80,159,33,8,56,34,89,162,34,34,41,9,223,0,250,22,209,20, +15,159,36,40,45,249,22,60,248,22,52,199,248,22,78,199,20,15,159,36,41, +45,89,162,33,34,53,9,223,0,27,28,248,80,158,35,33,195,249,80,158,36, +34,248,80,158,37,35,197,27,248,80,158,38,36,198,28,248,80,158,38,33,193, +249,80,158,39,37,27,248,80,158,41,35,196,28,248,80,158,41,38,193,248,22, +8,89,162,33,34,40,9,224,8,1,27,249,22,2,89,162,33,34,45,9,224, +4,5,249,80,158,36,39,28,248,80,158,37,33,197,249,80,158,38,34,248,80, +158,39,35,199,27,248,80,158,40,36,200,28,248,80,158,40,33,193,249,80,158, +41,34,248,80,158,42,35,195,248,80,158,42,40,248,80,158,43,36,196,11,11, +194,248,80,158,38,41,196,28,248,22,57,193,21,94,9,9,248,80,158,36,42, +193,11,27,248,80,158,41,36,196,28,248,80,158,41,38,193,248,80,158,41,41, +193,11,11,11,28,192,27,248,22,52,194,27,248,22,78,195,27,248,22,87,196, +27,248,22,88,197,249,80,158,40,43,200,27,250,22,61,200,198,199,27,20,15, +159,42,33,45,91,159,34,11,90,161,34,33,11,83,160,39,33,34,11,247,248, +22,8,89,162,33,34,41,9,226,11,2,3,1,250,22,31,89,162,33,33,37, +9,225,6,3,7,90,161,34,34,10,247,22,252,185,2,248,22,252,185,2,89, +162,33,34,37,9,224,3,1,248,193,89,162,33,33,37,9,224,2,3,28,248, +22,252,182,2,193,248,22,252,187,2,193,249,80,158,36,44,21,99,2,19,6, 19,19,103,101,110,101,114,97,116,101,95,116,101,109,112,95,110,97,109,101,115, -248,22,210,195,9,11,27,248,80,158,40,35,194,28,248,80,158,40,32,193,249, -80,158,41,36,27,248,80,158,43,34,196,28,248,80,158,43,32,193,249,80,158, -44,33,248,80,158,45,34,195,27,248,80,158,46,35,196,28,248,80,158,46,37, -193,248,22,59,248,80,158,47,40,194,11,11,27,248,80,158,43,35,196,28,248, -80,158,43,32,193,249,80,158,44,36,27,248,80,158,46,34,196,28,248,80,158, -46,37,193,248,22,59,248,80,158,47,40,194,11,27,248,80,158,46,35,196,28, -248,80,158,46,32,193,249,80,158,47,36,27,248,80,158,49,34,196,28,248,80, -158,49,37,193,248,22,8,89,162,32,33,39,9,224,17,1,27,249,22,2,89, -162,32,33,45,9,224,4,5,249,80,158,35,38,28,248,80,158,36,32,197,249, -80,158,37,33,248,80,158,38,34,199,27,248,80,158,39,35,200,28,248,80,158, -39,32,193,249,80,158,40,33,248,80,158,41,34,195,248,80,158,41,39,248,80, -158,42,35,196,11,11,194,248,80,158,37,40,196,28,248,22,57,193,21,94,9, -9,248,80,158,35,41,193,11,27,248,80,158,49,35,196,28,248,80,158,49,37, -193,248,80,158,49,40,193,11,11,11,11,11,11,11,28,192,27,248,22,52,194, -27,248,22,78,195,27,248,22,87,196,27,248,22,90,197,27,249,22,70,199,36, -27,249,22,70,200,37,27,249,22,69,201,38,249,80,158,44,42,205,27,252,22, -61,204,200,202,203,201,27,20,15,159,46,8,31,44,91,159,33,11,90,161,33, -32,11,83,160,38,32,33,11,247,248,22,8,89,162,32,33,40,9,226,16,2, -3,1,250,22,31,89,162,32,32,36,9,225,6,3,7,90,161,33,33,10,247, -22,252,184,2,248,22,252,184,2,89,162,32,33,36,9,224,3,1,248,193,89, -162,32,32,36,9,224,2,3,28,248,22,252,181,2,193,248,22,252,186,2,193, -249,80,158,35,43,21,99,2,18,6,19,19,103,101,110,101,114,97,116,101,95, -116,101,109,112,95,110,97,109,101,115,94,61,121,40,2,36,95,67,110,101,119, -116,101,109,112,41,64,116,101,109,112,42,2,36,94,94,2,35,2,37,2,36, -2,38,2,36,20,15,159,35,8,32,44,89,162,32,32,54,9,225,6,5,4, -27,250,22,209,20,15,159,38,8,33,44,250,22,209,20,15,159,41,8,34,44, -253,22,62,20,15,159,47,8,35,44,20,15,159,47,8,36,44,248,22,52,206, -250,22,209,20,15,159,50,8,37,44,249,22,56,20,15,159,52,8,38,44,248, -22,90,23,19,20,15,159,50,8,39,44,250,22,2,89,162,33,33,41,9,223, -18,250,22,209,20,15,159,35,8,40,44,249,22,60,248,22,52,199,248,22,78, -199,20,15,159,35,8,41,44,248,22,87,23,17,248,22,89,23,17,248,22,78, -206,20,15,159,41,8,42,44,197,89,162,32,32,33,9,223,0,192,89,162,32, -32,34,9,223,3,248,22,252,184,2,208,250,22,252,39,2,11,6,10,10,98, -97,100,32,115,121,110,116,97,120,199,32,20,98,158,16,12,30,43,65,35,37, -115,116,120,44,69,115,116,120,45,112,97,105,114,63,45,11,30,46,2,44,67, -99,111,110,115,47,35,102,47,1,30,48,2,44,67,115,116,120,45,99,97,114, -49,5,30,50,2,44,67,115,116,120,45,99,100,114,51,6,30,52,2,44,69, -97,112,112,101,110,100,47,35,102,53,0,30,54,2,44,69,115,116,120,45,108, -105,115,116,63,55,8,30,56,2,44,73,115,116,120,45,99,104,101,99,107,47, -101,115,99,57,7,30,58,2,44,71,115,116,120,45,110,117,108,108,47,35,102, -59,9,30,60,2,44,69,115,116,120,45,62,108,105,115,116,61,4,30,62,2, -44,70,115,116,120,45,114,111,116,97,116,101,63,12,30,64,68,35,37,115,116, -120,108,111,99,65,68,114,101,108,111,99,97,116,101,66,1,30,67,69,35,37, -115,116,120,99,97,115,101,68,1,20,101,108,108,105,112,115,105,115,45,99,111, -117,110,116,45,101,114,114,111,114,69,0,16,43,18,16,2,95,66,115,114,99, -116,97,103,70,34,93,8,252,108,11,95,9,8,252,108,11,2,68,18,16,2, -99,2,36,39,93,8,252,108,11,16,6,38,11,61,114,71,63,115,114,99,72, -3,1,7,101,110,118,52,51,51,49,73,2,73,16,4,37,11,64,101,120,110, -104,74,3,1,7,101,110,118,52,51,51,50,75,16,4,36,11,63,101,115,99, -76,3,1,7,101,110,118,52,51,51,51,77,16,4,35,11,63,101,120,110,78, -3,1,7,101,110,118,52,51,51,53,79,95,9,8,252,108,11,2,68,18,99, -64,100,101,115,116,80,45,98,44,10,32,11,93,159,68,109,122,115,99,104,101, -109,101,81,9,11,16,4,2,4,2,2,2,18,2,2,98,43,10,33,11,93, -159,2,81,9,11,16,0,96,42,8,254,1,11,16,0,16,8,41,11,3,1, -4,103,53,54,49,82,3,1,4,103,53,54,50,83,3,1,4,103,53,54,51, -84,3,1,7,101,110,118,52,51,50,52,85,2,85,2,85,16,8,40,11,2, -35,2,37,2,38,3,1,7,101,110,118,52,51,50,53,86,2,86,2,86,18, -158,63,99,116,120,87,45,18,158,2,18,45,18,158,6,19,19,103,101,110,101, -114,97,116,101,95,116,101,109,112,95,110,97,109,101,115,45,18,158,9,45,18, -158,2,87,45,18,158,2,87,45,18,158,2,87,45,18,16,2,95,2,70,46, -93,8,252,112,11,95,9,8,252,112,11,2,68,18,16,2,99,2,36,51,93, -8,252,112,11,16,6,50,11,2,71,2,72,3,1,7,101,110,118,52,51,54, -53,88,2,88,16,4,49,11,2,74,3,1,7,101,110,118,52,51,54,54,89, -16,4,48,11,2,76,3,1,7,101,110,118,52,51,54,55,90,16,4,47,11, -2,78,3,1,7,101,110,118,52,51,54,57,91,95,9,8,252,112,11,2,68, -18,99,2,80,54,44,43,42,16,10,53,11,3,1,4,103,53,53,54,92,3, -1,4,103,53,53,55,93,3,1,4,103,53,53,56,94,3,1,4,103,53,53, -57,95,3,1,7,101,110,118,52,51,53,55,96,2,96,2,96,2,96,16,10, -52,11,2,39,2,35,2,37,2,38,3,1,7,101,110,118,52,51,53,56,97, -2,97,2,97,2,97,18,158,2,87,54,18,158,2,10,54,18,158,2,87,54, -18,16,2,106,93,16,2,158,2,4,54,9,8,33,98,8,32,10,32,11,94, -159,74,35,37,115,109,97,108,108,45,115,99,104,101,109,101,98,9,11,159,2, -44,9,11,16,6,66,115,121,110,116,97,120,99,29,100,11,11,73,115,121,110, -116,97,120,45,99,97,115,101,42,42,101,2,100,2,69,2,100,98,8,31,10, -33,11,95,159,64,35,37,115,99,102,9,11,159,2,98,9,11,159,2,44,9, -11,16,0,96,8,30,8,254,1,11,16,0,16,4,8,29,11,61,120,103,3, -1,6,101,110,118,51,56,50,104,16,4,8,28,11,68,104,101,114,101,45,115, -116,120,105,3,1,6,101,110,118,51,56,52,106,16,4,59,11,2,105,2,106, -13,16,4,33,2,100,2,68,11,93,8,252,112,11,16,6,58,11,2,71,2, -72,2,88,2,88,16,4,57,11,2,74,2,89,16,4,56,11,2,76,2,90, -16,4,55,11,64,118,97,108,115,107,3,1,7,101,110,118,52,51,55,51,108, -95,9,8,252,112,11,2,68,18,158,2,87,54,18,158,2,87,54,18,158,2, -10,54,18,158,2,87,54,18,158,2,87,54,18,158,2,87,54,18,158,2,17, -54,18,158,2,87,54,18,158,2,87,54,18,158,2,10,54,18,158,9,54,18, -158,2,87,54,18,158,2,87,54,18,158,2,87,54,18,16,2,95,2,70,8, -34,93,8,252,117,11,95,9,8,252,117,11,2,68,18,16,2,99,2,36,8, -39,93,8,252,117,11,16,6,8,38,11,2,71,2,72,3,1,7,101,110,118, -52,52,48,55,109,2,109,16,4,8,37,11,2,74,3,1,7,101,110,118,52, -52,48,56,110,16,4,8,36,11,2,76,3,1,7,101,110,118,52,52,48,57, -111,16,4,8,35,11,2,78,3,1,7,101,110,118,52,52,49,49,112,95,9, -8,252,117,11,2,68,18,99,2,80,8,42,44,43,42,16,14,8,41,11,3, -1,4,103,53,52,57,113,3,1,4,103,53,53,48,114,3,1,4,103,53,53, -49,115,3,1,4,103,53,53,50,116,3,1,4,103,53,53,51,117,3,1,4, -103,53,53,52,118,3,1,7,101,110,118,52,51,57,55,119,2,119,2,119,2, -119,2,119,2,119,16,14,8,40,11,2,103,2,40,2,42,2,35,2,37,2, -38,3,1,7,101,110,118,52,51,57,56,120,2,120,2,120,2,120,2,120,2, -120,18,158,2,87,8,42,18,158,2,18,8,42,18,158,6,19,19,103,101,110, -101,114,97,116,101,95,116,101,109,112,95,110,97,109,101,115,8,42,18,158,2, -87,8,42,18,158,2,41,8,42,18,158,2,87,8,42,18,158,2,87,8,42, -18,158,2,87,8,42,18,158,2,87,8,42,11,93,83,159,32,93,80,159,32, -32,33,91,159,33,10,90,161,33,32,10,207,207,93,2,81,93,2,81,0}; - EVAL_ONE_SIZED_STR((char *)expr, 3967); +94,64,118,97,114,49,35,63,46,46,46,36,9,94,94,2,35,65,105,110,105, +116,49,37,2,36,64,98,111,100,121,38,2,36,20,15,159,36,34,45,89,162, +33,33,53,9,225,6,5,4,27,250,22,209,20,15,159,39,35,45,250,22,209, +20,15,159,42,36,45,253,22,62,20,15,159,48,37,45,20,15,159,48,38,45, +248,22,52,206,20,15,159,48,39,45,250,22,2,80,159,51,8,56,34,248,22, +52,23,17,248,22,80,23,17,248,22,78,206,20,15,159,42,42,45,197,89,162, +33,33,34,9,223,0,192,89,162,33,33,35,9,223,3,248,22,252,185,2,208, +27,28,248,80,158,36,33,196,249,80,158,37,34,248,80,158,38,35,198,27,248, +80,158,39,36,199,28,248,80,158,39,33,193,28,27,248,80,158,40,35,194,28, +249,22,252,13,2,6,19,19,103,101,110,101,114,97,116,101,95,116,101,109,112, +95,110,97,109,101,115,248,22,210,195,9,11,27,248,80,158,40,36,194,28,248, +80,158,40,33,193,28,248,80,158,40,40,248,80,158,41,35,194,27,248,80,158, +41,36,194,28,248,80,158,41,33,193,249,80,158,42,37,27,248,80,158,44,35, +196,28,248,80,158,44,38,193,248,22,59,248,80,158,45,41,194,11,27,248,80, +158,44,36,196,28,248,80,158,44,33,193,249,80,158,45,37,27,248,80,158,47, +35,196,28,248,80,158,47,38,193,248,22,8,89,162,33,34,40,9,224,14,1, +27,249,22,2,89,162,33,34,45,9,224,4,5,249,80,158,36,39,28,248,80, +158,37,33,197,249,80,158,38,34,248,80,158,39,35,199,27,248,80,158,40,36, +200,28,248,80,158,40,33,193,249,80,158,41,34,248,80,158,42,35,195,248,80, +158,42,40,248,80,158,43,36,196,11,11,194,248,80,158,38,41,196,28,248,22, +57,193,21,94,9,9,248,80,158,36,42,193,11,27,248,80,158,47,36,196,28, +248,80,158,47,38,193,248,80,158,47,41,193,11,11,11,11,11,11,11,11,28, +192,27,248,22,52,194,27,248,22,78,195,27,248,22,87,196,27,248,22,90,197, +27,248,22,89,198,249,80,158,42,43,202,27,251,22,61,199,200,202,201,27,20, +15,159,44,43,45,91,159,34,11,90,161,34,33,11,83,160,39,33,34,11,247, +248,22,8,89,162,33,34,41,9,226,13,2,3,1,250,22,31,89,162,33,33, +37,9,225,6,3,7,90,161,34,34,10,247,22,252,185,2,248,22,252,185,2, +89,162,33,34,37,9,224,3,1,248,193,89,162,33,33,37,9,224,2,3,28, +248,22,252,182,2,193,248,22,252,187,2,193,249,80,158,36,44,21,95,2,23, +94,94,2,35,2,4,2,36,97,2,23,94,94,65,116,101,109,112,49,39,2, +37,2,36,95,2,12,2,35,2,39,2,36,96,2,23,9,2,38,2,36,20, +15,159,36,44,45,89,162,33,33,8,29,9,225,6,5,4,27,250,22,209,20, +15,159,39,45,45,250,22,209,20,15,159,42,46,45,250,22,60,20,15,159,45, +47,45,249,22,2,80,159,47,8,57,34,248,22,88,205,250,22,209,20,15,159, +48,51,45,250,22,62,20,15,159,51,52,45,250,22,2,80,159,54,8,58,34, +248,22,87,23,20,248,22,78,23,20,249,22,65,250,22,2,80,159,56,8,59, +34,248,22,88,23,22,248,22,87,23,22,248,22,60,250,22,209,20,15,159,57, +58,45,250,22,62,20,15,159,8,27,59,45,20,15,159,8,27,8,27,45,248, +22,52,23,26,20,15,159,57,8,28,45,20,15,159,48,8,29,45,20,15,159, +42,8,30,45,197,89,162,33,33,34,9,223,0,192,89,162,33,33,35,9,223, +3,248,22,252,185,2,208,27,28,248,80,158,37,33,197,249,80,158,38,34,248, +80,158,39,35,199,27,248,80,158,40,36,200,28,248,80,158,40,33,193,28,27, +248,80,158,41,35,194,28,249,22,252,13,2,6,19,19,103,101,110,101,114,97, +116,101,95,116,101,109,112,95,110,97,109,101,115,248,22,210,195,9,11,27,248, +80,158,41,36,194,28,248,80,158,41,33,193,249,80,158,42,37,27,248,80,158, +44,35,196,28,248,80,158,44,33,193,249,80,158,45,34,248,80,158,46,35,195, +27,248,80,158,47,36,196,28,248,80,158,47,38,193,248,22,59,248,80,158,48, +41,194,11,11,27,248,80,158,44,36,196,28,248,80,158,44,33,193,249,80,158, +45,37,27,248,80,158,47,35,196,28,248,80,158,47,38,193,248,22,59,248,80, +158,48,41,194,11,27,248,80,158,47,36,196,28,248,80,158,47,33,193,249,80, +158,48,37,27,248,80,158,50,35,196,28,248,80,158,50,38,193,248,22,8,89, +162,33,34,40,9,224,17,1,27,249,22,2,89,162,33,34,45,9,224,4,5, +249,80,158,36,39,28,248,80,158,37,33,197,249,80,158,38,34,248,80,158,39, +35,199,27,248,80,158,40,36,200,28,248,80,158,40,33,193,249,80,158,41,34, +248,80,158,42,35,195,248,80,158,42,40,248,80,158,43,36,196,11,11,194,248, +80,158,38,41,196,28,248,22,57,193,21,94,9,9,248,80,158,36,42,193,11, +27,248,80,158,50,36,196,28,248,80,158,50,38,193,248,80,158,50,41,193,11, +11,11,11,11,11,11,28,192,27,248,22,52,194,27,248,22,78,195,27,248,22, +87,196,27,248,22,90,197,27,249,22,70,199,37,27,249,22,70,200,38,27,249, +22,69,201,39,249,80,158,45,43,205,27,252,22,61,202,200,201,203,204,27,20, +15,159,47,8,31,45,91,159,34,11,90,161,34,33,11,83,160,39,33,34,11, +247,248,22,8,89,162,33,34,41,9,226,16,2,3,1,250,22,31,89,162,33, +33,37,9,225,6,3,7,90,161,34,34,10,247,22,252,185,2,248,22,252,185, +2,89,162,33,34,37,9,224,3,1,248,193,89,162,33,33,37,9,224,2,3, +28,248,22,252,182,2,193,248,22,252,187,2,193,249,80,158,36,44,21,99,2, +19,6,19,19,103,101,110,101,114,97,116,101,95,116,101,109,112,95,110,97,109, +101,115,94,61,121,40,2,36,95,67,110,101,119,116,101,109,112,41,64,116,101, +109,112,42,2,36,94,94,2,35,2,37,2,36,2,38,2,36,20,15,159,36, +8,32,45,89,162,33,33,55,9,225,6,5,4,27,250,22,209,20,15,159,39, +8,33,45,250,22,209,20,15,159,42,8,34,45,253,22,62,20,15,159,48,8, +35,45,20,15,159,48,8,36,45,248,22,89,206,250,22,209,20,15,159,51,8, +37,45,249,22,56,20,15,159,53,8,38,45,248,22,90,23,19,20,15,159,51, +8,39,45,250,22,2,80,159,51,8,60,34,248,22,52,23,17,248,22,87,23, +17,248,22,78,206,20,15,159,42,8,42,45,197,89,162,33,33,34,9,223,0, +192,89,162,33,33,35,9,223,3,248,22,252,185,2,208,250,22,252,39,2,11, +6,10,10,98,97,100,32,115,121,110,116,97,120,199,33,20,98,159,38,16,12, +30,43,65,35,37,115,116,120,44,69,115,116,120,45,112,97,105,114,63,45,11, +30,46,2,44,67,99,111,110,115,47,35,102,47,1,30,48,2,44,67,115,116, +120,45,99,97,114,49,5,30,50,2,44,67,115,116,120,45,99,100,114,51,6, +30,52,2,44,69,97,112,112,101,110,100,47,35,102,53,0,30,54,2,44,69, +115,116,120,45,108,105,115,116,63,55,8,30,56,2,44,73,115,116,120,45,99, +104,101,99,107,47,101,115,99,57,7,30,58,2,44,71,115,116,120,45,110,117, +108,108,47,35,102,59,9,30,60,2,44,69,115,116,120,45,62,108,105,115,116, +61,4,30,62,2,44,70,115,116,120,45,114,111,116,97,116,101,63,12,30,64, +68,35,37,115,116,120,108,111,99,65,68,114,101,108,111,99,97,116,101,66,1, +30,67,69,35,37,115,116,120,99,97,115,101,68,1,20,101,108,108,105,112,115, +105,115,45,99,111,117,110,116,45,101,114,114,111,114,69,0,16,43,18,16,2, +95,66,115,114,99,116,97,103,70,35,93,8,252,108,11,95,9,8,252,108,11, +2,68,18,16,2,99,2,36,40,93,8,252,108,11,16,6,39,11,61,114,71, +63,115,114,99,72,3,1,7,101,110,118,52,51,51,49,73,2,73,16,4,38, +11,64,101,120,110,104,74,3,1,7,101,110,118,52,51,51,50,75,16,4,37, +11,63,101,115,99,76,3,1,7,101,110,118,52,51,51,51,77,16,4,36,11, +63,101,120,110,78,3,1,7,101,110,118,52,51,51,53,79,95,9,8,252,108, +11,2,68,18,99,64,100,101,115,116,80,46,98,45,10,33,11,93,159,68,109, +122,115,99,104,101,109,101,81,9,11,16,4,2,19,2,2,2,4,2,2,98, +44,10,34,11,93,159,2,81,9,11,16,0,96,43,8,254,1,11,16,0,16, +8,42,11,3,1,4,103,53,54,49,82,3,1,4,103,53,54,50,83,3,1, +4,103,53,54,51,84,3,1,7,101,110,118,52,51,50,52,85,2,85,2,85, +16,8,41,11,2,35,2,37,2,38,3,1,7,101,110,118,52,51,50,53,86, +2,86,2,86,18,158,63,99,116,120,87,46,18,158,2,19,46,18,158,6,19, +19,103,101,110,101,114,97,116,101,95,116,101,109,112,95,110,97,109,101,115,46, +18,158,9,46,18,158,2,87,46,18,158,2,87,46,18,158,2,87,46,18,16, +2,95,2,70,47,93,8,252,112,11,95,9,8,252,112,11,2,68,18,16,2, +99,2,36,52,93,8,252,112,11,16,6,51,11,2,71,2,72,3,1,7,101, +110,118,52,51,54,53,88,2,88,16,4,50,11,2,74,3,1,7,101,110,118, +52,51,54,54,89,16,4,49,11,2,76,3,1,7,101,110,118,52,51,54,55, +90,16,4,48,11,2,78,3,1,7,101,110,118,52,51,54,57,91,95,9,8, +252,112,11,2,68,18,99,2,80,55,45,44,43,16,10,54,11,3,1,4,103, +53,53,54,92,3,1,4,103,53,53,55,93,3,1,4,103,53,53,56,94,3, +1,4,103,53,53,57,95,3,1,7,101,110,118,52,51,53,55,96,2,96,2, +96,2,96,16,10,53,11,2,39,2,35,2,37,2,38,3,1,7,101,110,118, +52,51,53,56,97,2,97,2,97,2,97,18,158,2,87,55,18,158,2,23,55, +18,158,2,87,55,18,16,2,106,93,16,2,158,2,4,55,9,8,33,98,8, +32,10,33,11,94,159,74,35,37,115,109,97,108,108,45,115,99,104,101,109,101, +98,9,11,159,2,44,9,11,16,6,73,115,121,110,116,97,120,45,99,97,115, +101,42,42,99,29,100,11,11,66,115,121,110,116,97,120,101,2,100,2,69,2, +100,98,8,31,10,34,11,95,159,64,35,37,115,99,102,9,11,159,2,98,9, +11,159,2,44,9,11,16,0,96,8,30,8,254,1,11,16,0,16,4,8,29, +11,61,120,103,3,1,6,101,110,118,51,56,50,104,16,4,8,28,11,68,104, +101,114,101,45,115,116,120,105,3,1,6,101,110,118,51,56,52,106,16,4,8, +27,11,2,105,2,106,13,16,4,34,2,100,2,68,11,93,8,252,112,11,16, +6,59,11,2,71,2,72,2,88,2,88,16,4,58,11,2,74,2,89,16,4, +57,11,2,76,2,90,16,4,56,11,64,118,97,108,115,107,3,1,7,101,110, +118,52,51,55,51,108,95,9,8,252,112,11,2,68,18,158,2,87,55,18,158, +2,87,55,18,158,2,23,55,18,158,2,87,55,18,158,2,87,55,18,158,2, +87,55,18,158,2,12,55,18,158,2,87,55,18,158,2,87,55,18,158,2,23, +55,18,158,9,55,18,158,2,87,55,18,158,2,87,55,18,158,2,87,55,18, +16,2,95,2,70,8,34,93,8,252,117,11,95,9,8,252,117,11,2,68,18, +16,2,99,2,36,8,39,93,8,252,117,11,16,6,8,38,11,2,71,2,72, +3,1,7,101,110,118,52,52,48,55,109,2,109,16,4,8,37,11,2,74,3, +1,7,101,110,118,52,52,48,56,110,16,4,8,36,11,2,76,3,1,7,101, +110,118,52,52,48,57,111,16,4,8,35,11,2,78,3,1,7,101,110,118,52, +52,49,49,112,95,9,8,252,117,11,2,68,18,99,2,80,8,42,45,44,43, +16,14,8,41,11,3,1,4,103,53,52,57,113,3,1,4,103,53,53,48,114, +3,1,4,103,53,53,49,115,3,1,4,103,53,53,50,116,3,1,4,103,53, +53,51,117,3,1,4,103,53,53,52,118,3,1,7,101,110,118,52,51,57,55, +119,2,119,2,119,2,119,2,119,2,119,16,14,8,40,11,2,103,2,40,2, +42,2,35,2,37,2,38,3,1,7,101,110,118,52,51,57,56,120,2,120,2, +120,2,120,2,120,2,120,18,158,2,87,8,42,18,158,2,19,8,42,18,158, +6,19,19,103,101,110,101,114,97,116,101,95,116,101,109,112,95,110,97,109,101, +115,8,42,18,158,2,87,8,42,18,158,2,41,8,42,18,158,2,87,8,42, +18,158,2,87,8,42,18,158,2,87,8,42,18,158,2,87,8,42,11,93,83, +159,33,93,80,159,33,33,34,91,159,34,10,90,161,34,33,10,207,207,93,2, +81,93,2,81,0}; + EVAL_ONE_SIZED_STR((char *)expr, 4057); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,3,51,53,50,5,93,159,32,20,98,158,16,1,20,24,65,98,101,103, -105,110,0,16,0,83,160,40,80,158,32,32,32,18,158,94,96,67,114,101,113, -117,105,114,101,1,34,10,11,158,95,158,64,111,110,108,121,2,34,158,68,109, -122,115,99,104,101,109,101,3,34,158,1,22,110,97,109,101,115,112,97,99,101, -45,114,101,113,117,105,114,101,47,99,111,112,121,4,34,34,34,0}; - EVAL_ONE_SIZED_STR((char *)expr, 101); + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,53,50,46,49,5,94,159,33,20,98,159,33,16,1,20,24,65, +98,101,103,105,110,0,16,0,83,160,41,80,158,33,33,33,18,158,94,96,67, +114,101,113,117,105,114,101,1,35,10,11,158,95,158,64,111,110,108,121,2,35, +158,68,109,122,115,99,104,101,109,101,3,35,158,1,22,110,97,109,101,115,112, +97,99,101,45,114,101,113,117,105,114,101,47,99,111,112,121,4,35,35,35,0}; + EVAL_ONE_SIZED_STR((char *)expr, 104); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,3,51,53,50,3,73,159,33,20,98,158,16,1,20,24,65,98,101,103, -105,110,0,16,0,87,94,248,22,241,68,109,122,115,99,104,101,109,101,1,83, -160,40,80,158,32,32,33,18,158,94,96,78,114,101,113,117,105,114,101,45,102, -111,114,45,115,121,110,116,97,120,2,34,10,11,158,2,1,34,34,0}; - EVAL_ONE_SIZED_STR((char *)expr, 81); + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,53,50,46,49,3,74,159,34,20,98,159,33,16,1,20,24,65, +98,101,103,105,110,0,16,0,87,94,248,22,241,68,109,122,115,99,104,101,109, +101,1,83,160,41,80,158,33,33,34,18,158,94,96,78,114,101,113,117,105,114, +101,45,102,111,114,45,115,121,110,116,97,120,2,35,10,11,158,2,1,35,35, +0}; + EVAL_ONE_SIZED_STR((char *)expr, 84); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,3,51,53,50,2,66,159,36,20,98,158,16,0,16,0,248,22,233,248, -249,22,235,66,35,37,109,105,115,99,0,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,1,247,22,252,211,2,0}; - EVAL_ONE_SIZED_STR((char *)expr, 74); + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,53,50,46,49,2,67,159,37,20,98,159,33,16,0,16,0,248, +22,233,248,249,22,235,66,35,37,109,105,115,99,0,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,1,247,22,252,212,2,0}; + EVAL_ONE_SIZED_STR((char *)expr, 77); } diff --git a/src/mzscheme/src/env.c b/src/mzscheme/src/env.c index e58dbf8409..d352740a71 100644 --- a/src/mzscheme/src/env.c +++ b/src/mzscheme/src/env.c @@ -120,9 +120,10 @@ static int builtin_ref_counter = 0; static int env_uid_counter; -#define ARBITRARY_USE 1 -#define CONSTRAINED_USE 2 -#define WAS_SET_BANGED 4 +#define ARBITRARY_USE 0x1 +#define CONSTRAINED_USE 0x2 +#define WAS_SET_BANGED 0x4 +#define ONE_ARBITRARY_USE 0x8 /* See also SCHEME_USE_COUNT_MASK */ typedef struct Compile_Data { @@ -1194,16 +1195,6 @@ int scheme_is_sub_env(Scheme_Comp_Env *stx_env, Scheme_Comp_Env *env) return SAME_OBJ(se, env); } -int scheme_used_app_only(Scheme_Comp_Env *env, int which) -{ - Compile_Data *data = COMPILE_DATA(env); - - if (data->use[which] & ARBITRARY_USE) - return 0; - else - return 1; -} - int scheme_used_ever(Scheme_Comp_Env *env, int which) { Compile_Data *data = COMPILE_DATA(env); @@ -1488,8 +1479,10 @@ Scheme_Object *scheme_make_local(Scheme_Type type, int pos) k = type - scheme_local_type; - if (pos < MAX_CONST_LOCAL_POS) - return scheme_local[pos][k]; + if (pos < MAX_CONST_LOCAL_POS) { + if (pos >= 0) + return scheme_local[pos][k]; + } v = scheme_hash_get(locals_ht[k], scheme_make_integer(pos)); if (v) @@ -1526,7 +1519,7 @@ static Scheme_Local *get_frame_loc(Scheme_Comp_Env *frame, u |= (((flags & (SCHEME_APP_POS | SCHEME_SETTING | SCHEME_REFERENCING)) ? CONSTRAINED_USE - : ARBITRARY_USE) + : ((u & (ARBITRARY_USE | ONE_ARBITRARY_USE)) ? ARBITRARY_USE : ONE_ARBITRARY_USE)) | ((flags & (SCHEME_SETTING | SCHEME_REFERENCING | SCHEME_LINKING_REF)) ? WAS_SET_BANGED : 0)); @@ -2509,8 +2502,15 @@ int *scheme_env_get_flags(Scheme_Comp_Env *frame, int start, int count) int old; old = v[i]; v[i] = 0; - if (old & (ARBITRARY_USE | CONSTRAINED_USE)) + if (old & (ARBITRARY_USE | ONE_ARBITRARY_USE | CONSTRAINED_USE)) { v[i] |= SCHEME_WAS_USED; + if (!(old & (ARBITRARY_USE | WAS_SET_BANGED))) { + if (old & ONE_ARBITRARY_USE) + v[i] |= SCHEME_WAS_APPLIED_EXCEPT_ONCE; + else + v[i] |= SCHEME_WAS_ONLY_APPLIED; + } + } if (old & WAS_SET_BANGED) v[i] |= SCHEME_WAS_SET_BANGED; v[i] |= (old & SCHEME_USE_COUNT_MASK); @@ -2890,7 +2890,6 @@ int scheme_optimize_info_get_shift(Optimize_Info *info, int pos) void scheme_optimize_info_done(Optimize_Info *info) { - info->next->max_let_depth += info->max_let_depth; info->next->size += info->size; } @@ -2994,6 +2993,7 @@ Resolve_Info *scheme_resolve_info_extend(Resolve_Info *info, int size, int oldsi naya->count = mapc; naya->pos = 0; naya->toplevel_pos = -1; + naya->lifts = info->lifts; if (mapc) { int i, *ia; @@ -3017,7 +3017,7 @@ Resolve_Info *scheme_resolve_info_extend(Resolve_Info *info, int size, int oldsi return naya; } -void scheme_resolve_info_add_mapping(Resolve_Info *info, int oldp, int newp, int flags) +void scheme_resolve_info_add_mapping(Resolve_Info *info, int oldp, int newp, int flags, Scheme_Object *lifted) { if (info->pos == info->count) { scheme_signal_error("internal error: add_mapping: " @@ -3027,29 +3027,121 @@ void scheme_resolve_info_add_mapping(Resolve_Info *info, int oldp, int newp, int info->old_pos[info->pos] = oldp; info->new_pos[info->pos] = newp; info->flags[info->pos] = flags; + if (lifted) { + if (!info->lifted) { + Scheme_Object **lifteds; + lifteds = MALLOC_N(Scheme_Object*, info->count); + info->lifted = lifteds; + } + info->lifted[info->pos] = lifted; + } info->pos++; } +void scheme_resolve_info_adjust_mapping(Resolve_Info *info, int oldp, int newp, int flags, Scheme_Object *lifted) +{ + int i; + + for (i = info->pos; i--; ) { + if (info->old_pos[i] == oldp) { + info->new_pos[i] = newp; + info->flags[i] = flags; + if (lifted) { + info->lifted[i] = lifted; + } + return; + } + } + + scheme_signal_error("internal error: adjust_mapping: " + "couldn't find: %d", oldp); +} + void scheme_resolve_info_set_toplevel_pos(Resolve_Info *info, int pos) { info->toplevel_pos = pos; } -static int resolve_info_lookup(Resolve_Info *info, int pos, int *flags) +static int resolve_info_lookup(Resolve_Info *info, int pos, int *flags, Scheme_Object **_lifted, int convert_shift) { + Resolve_Info *orig_info = info; int i, offset = 0, orig = pos; + if (_lifted) + *_lifted = NULL; + while (info) { for (i = info->pos; i--; ) { int oldp = info->old_pos[i]; if (pos == oldp) { if (flags) *flags = info->flags[i]; - return info->new_pos[i] + offset; + if (info->lifted && (info->lifted[i])) { + int skip, shifted; + Scheme_Object *lifted, *tl, **ca; + + if (!_lifted) + scheme_signal_error("unexpected lifted binding"); + + lifted = info->lifted[i]; + + if (SCHEME_RPAIRP(lifted)) { + tl = SCHEME_CAR(lifted); + ca = (Scheme_Object **)SCHEME_CDR(lifted); + if (convert_shift) + shifted = SCHEME_INT_VAL(ca[0]) + convert_shift - 1; + else + shifted = 0; + } else { + tl = lifted; + shifted = 0; + ca = NULL; + } + + if (SAME_TYPE(SCHEME_TYPE(tl), scheme_toplevel_type)) { + skip = scheme_resolve_toplevel_pos(orig_info); + tl = make_toplevel(skip + shifted, + SCHEME_TOPLEVEL_POS(tl), + 1, + SCHEME_TOPLEVEL_CONST); + } + + if (SCHEME_RPAIRP(lifted)) { + int sz, i; + mzshort *posmap, *boxmap; + Scheme_Object *vec, *loc; + sz = SCHEME_INT_VAL(ca[0]); + posmap = (mzshort *)ca[1]; + boxmap = (mzshort *)ca[3]; + vec = scheme_make_vector(sz + 1, NULL); + for (i = 0; i < sz; i++) { + loc = scheme_make_local(scheme_local_type, + posmap[i] + offset + shifted); + if (boxmap) { + if (boxmap[i / BITS_PER_MZSHORT] & ((mzshort)1 << (i & (BITS_PER_MZSHORT - 1)))) + loc = scheme_box(loc); + } + SCHEME_VEC_ELS(vec)[i+1] = loc; + } + SCHEME_VEC_ELS(vec)[0] = ca[2]; + lifted = scheme_make_raw_pair(tl, vec); + } else + lifted = tl; + + *_lifted = lifted; + + return 0; + } else + return info->new_pos[i] + offset; } } + if (info->in_proc) { + scheme_signal_error("internal error: scheme_resolve_info_lookup: " + "searching past procedure"); + } + pos -= info->oldsize; offset += info->size; info = info->next; @@ -3061,18 +3153,23 @@ static int resolve_info_lookup(Resolve_Info *info, int pos, int *flags) return 0; } -int scheme_resolve_info_flags(Resolve_Info *info, int pos) +Scheme_Object *scheme_resolve_generate_stub_lift() +{ + return make_toplevel(0, 0, 1, SCHEME_TOPLEVEL_CONST); +} + +int scheme_resolve_info_flags(Resolve_Info *info, int pos, Scheme_Object **lifted) { int flags; - resolve_info_lookup(info, pos, &flags); + resolve_info_lookup(info, pos, &flags, lifted, 0); return flags; } -int scheme_resolve_info_lookup(Resolve_Info *info, int pos, int *flags) +int scheme_resolve_info_lookup(Resolve_Info *info, int pos, int *flags, Scheme_Object **lifted, int convert_shift) { - return resolve_info_lookup(info, pos, flags); + return resolve_info_lookup(info, pos, flags, lifted, convert_shift); } int scheme_resolve_toplevel_pos(Resolve_Info *info) @@ -3080,6 +3177,10 @@ int scheme_resolve_toplevel_pos(Resolve_Info *info) int pos = 0; while (info && (info->toplevel_pos < 0)) { + if (info->in_proc) { + scheme_signal_error("internal error: scheme_resolve_toplevel_pos: " + "searching past procedure"); + } pos += info->size; info = info->next; } @@ -3090,6 +3191,19 @@ int scheme_resolve_toplevel_pos(Resolve_Info *info) return info->toplevel_pos + pos; } +int scheme_resolve_is_toplevel_available(Resolve_Info *info) +{ + while (info) { + if (info->toplevel_pos >= 0) + return 1; + if (info->in_proc) + return 0; + info = info->next; + } + + return 0; +} + int scheme_resolve_quote_syntax_pos(Resolve_Info *info) { return info->prefix->num_toplevels; @@ -3107,6 +3221,55 @@ Scheme_Object *scheme_resolve_toplevel(Resolve_Info *info, Scheme_Object *expr) SCHEME_TOPLEVEL_FLAGS(expr) & SCHEME_TOPLEVEL_FLAGS_MASK); } +Scheme_Object *scheme_shift_toplevel(Scheme_Object *expr, int delta) +{ + return make_toplevel(SCHEME_TOPLEVEL_DEPTH(expr) + delta, + SCHEME_TOPLEVEL_POS(expr), + 1, + SCHEME_TOPLEVEL_FLAGS(expr) & SCHEME_TOPLEVEL_FLAGS_MASK); +} + +Scheme_Object *scheme_resolve_invent_toplevel(Resolve_Info *info) +{ + int skip, pos; + Scheme_Object *count; + + skip = scheme_resolve_toplevel_pos(info); + + count = SCHEME_VEC_ELS(info->lifts)[1]; + pos = (SCHEME_INT_VAL(count) + + info->prefix->num_toplevels + + info->prefix->num_stxes + + (info->prefix->num_stxes ? 1 : 0)); + count = scheme_make_integer(SCHEME_INT_VAL(count) + 1); + SCHEME_VEC_ELS(info->lifts)[1] = count; + + return make_toplevel(skip, + pos, + 1, + SCHEME_TOPLEVEL_CONST); +} + +Scheme_Object *scheme_resolve_invented_toplevel_to_defn(Resolve_Info *info, Scheme_Object *tl) +{ + return make_toplevel(0, + SCHEME_TOPLEVEL_POS(tl), + 1, + SCHEME_TOPLEVEL_CONST); +} + +int scheme_resolving_in_procedure(Resolve_Info *info) +{ + while (info) { + if (info->in_proc) + return 1; + info = info->next; + } + return 0; +} + + + /*========================================================================*/ /* run-time "stack" */ /*========================================================================*/ @@ -4048,7 +4211,7 @@ static Scheme_Object *write_resolve_prefix(Scheme_Object *obj) SCHEME_VEC_ELS(sv)[i] = rp->stxes[i]; } - return scheme_make_pair(tv, sv); + return scheme_make_pair(scheme_make_integer(rp->num_lifts), scheme_make_pair(tv, sv)); } static Scheme_Object *read_resolve_prefix(Scheme_Object *obj) @@ -4059,6 +4222,12 @@ static Scheme_Object *read_resolve_prefix(Scheme_Object *obj) if (!SCHEME_PAIRP(obj)) return NULL; + i = SCHEME_INT_VAL(SCHEME_CAR(obj)); + if (i < 0) return NULL; + + obj = SCHEME_CDR(obj); + if (!SCHEME_PAIRP(obj)) return NULL; + tv = SCHEME_CAR(obj); sv = SCHEME_CDR(obj); @@ -4066,6 +4235,7 @@ static Scheme_Object *read_resolve_prefix(Scheme_Object *obj) rp->so.type = scheme_resolve_prefix_type; rp->num_toplevels = SCHEME_VEC_SIZE(tv); rp->num_stxes = SCHEME_VEC_SIZE(sv); + rp->num_lifts = i; i = rp->num_toplevels; a = MALLOC_N(Scheme_Object *, i); diff --git a/src/mzscheme/src/error.c b/src/mzscheme/src/error.c index 35f971240c..169490523d 100644 --- a/src/mzscheme/src/error.c +++ b/src/mzscheme/src/error.c @@ -49,6 +49,7 @@ static Scheme_Object *raise_user_error(int argc, Scheme_Object *argv[]); static Scheme_Object *raise_syntax_error(int argc, Scheme_Object *argv[]); static Scheme_Object *raise_type_error(int argc, Scheme_Object *argv[]); static Scheme_Object *raise_mismatch_error(int argc, Scheme_Object *argv[]); +static Scheme_Object *raise_arity_error(int argc, Scheme_Object *argv[]); static Scheme_Object *error_escape_handler(int, Scheme_Object *[]); static Scheme_Object *error_display_handler(int, Scheme_Object *[]); static Scheme_Object *error_value_string_handler(int, Scheme_Object *[]); @@ -71,6 +72,8 @@ static Scheme_Object *def_error_esc_proc; static Scheme_Object *default_display_handler, *emergency_display_handler; Scheme_Object *scheme_def_exit_proc; +Scheme_Object *scheme_raise_arity_error_proc; + static char *init_buf(long *len, long *blen); static char *prepared_buf; static long prepared_buf_len; @@ -473,6 +476,8 @@ void scheme_init_error(Scheme_Env *env) if (!scheme_console_output) scheme_console_output = default_output; + REGISTER_SO(scheme_raise_arity_error_proc); + scheme_add_global_constant("error", scheme_make_prim_w_arity(error, "error", @@ -498,6 +503,12 @@ void scheme_init_error(Scheme_Env *env) "raise-mismatch-error", 3, 3), env); + scheme_raise_arity_error_proc = scheme_make_prim_w_arity(raise_arity_error, + "raise-arity-error", + 2, -1); + scheme_add_global_constant("raise-arity-error", + scheme_raise_arity_error_proc, + env); scheme_add_global_constant("error-display-handler", scheme_register_parameter(error_display_handler, "error-display-handler", @@ -839,6 +850,8 @@ static char *make_arity_expect_string(const char *name, int namelen, int minc, int maxc, int argc, Scheme_Object **argv, long *_len, int is_method) +/* minc == -1 => name is really a case-lambda, native closure, or proc-struct. + minc == -2 => use generic "no matching clause" message */ { long len, pos, slen; int xargc, xminc, xmaxc; @@ -928,7 +941,8 @@ static char *make_arity_expect_string(const char *name, int namelen, void scheme_wrong_count_m(const char *name, int minc, int maxc, int argc, Scheme_Object **argv, int is_method) - /* minc == -1 => name is really a case-lambda, native closure, or proc-struct */ +/* minc == -1 => name is really a case-lambda, native closure, or proc-struct. + minc == -2 => use generic "no matching clause" message */ { char *s; long len; @@ -1940,6 +1954,76 @@ static Scheme_Object *raise_mismatch_error(int argc, Scheme_Object *argv[]) return NULL; } +static int is_arity_at_least(Scheme_Object *v) +{ + return (SCHEME_STRUCTP(v) + && scheme_is_struct_instance(scheme_arity_at_least, v) + && scheme_nonneg_exact_p(((Scheme_Structure *)v)->slots[0])); +} + +static int is_arity_list(Scheme_Object *l) +{ + int c; + Scheme_Object *a; + + c = scheme_proper_list_length(l); + if (c < 0) return 0; + while (!SCHEME_NULLP(l)) { + a = SCHEME_CAR(l); + if (!scheme_nonneg_exact_p(a) + && !scheme_nonneg_exact_p(a)) + return 0; + l = SCHEME_CDR(l); + } + + return 1; +} + +static Scheme_Object *raise_arity_error(int argc, Scheme_Object *argv[]) +{ + Scheme_Object **args; + const char *name; + int minc, maxc; + + if (!SCHEME_SYMBOLP(argv[0]) && !SCHEME_PROCP(argv[0])) + scheme_wrong_type("raise-arity-error", "symbol or procedure", 0, argc, argv); + if (!scheme_nonneg_exact_p(argv[1]) + && !is_arity_at_least(argv[1]) + && !is_arity_list(argv[1])) + scheme_wrong_type("raise-mismatch-error", "arity (integer, arity-at-least, or list)", 1, argc, argv); + + args = MALLOC_N(Scheme_Object*, argc - 2); + memcpy(args, argv + 2, sizeof(Scheme_Object*) * (argc - 2)); + + if (SCHEME_SYMBOLP(argv[0])) + name = scheme_symbol_val(argv[0]); + else { + int len; + name = scheme_get_proc_name(argv[0], &len, 1); + } + + if (SCHEME_INTP(argv[1])) { + minc = maxc = SCHEME_INT_VAL(argv[1]); + } else if (is_arity_at_least(argv[1])) { + Scheme_Object *v; + v = ((Scheme_Structure *)argv[1])->slots[0]; + if (SCHEME_INTP(v)) { + minc = SCHEME_INT_VAL(v); + maxc = -1; + } else { + minc = -2; + maxc = 0; + } + } else { + minc = -2; + maxc = 0; + } + + scheme_wrong_count_m(name, minc, maxc, argc - 2, args, 0); + + return NULL; +} + static Scheme_Object *good_print_width(int c, Scheme_Object **argv) { int ok; diff --git a/src/mzscheme/src/eval.c b/src/mzscheme/src/eval.c index ec42eb9335..2b95357ba6 100644 --- a/src/mzscheme/src/eval.c +++ b/src/mzscheme/src/eval.c @@ -81,15 +81,25 @@ Compilation: - Compilation works in three passes. The first pass, called - "compile", performs most of the work and tracks variable usage - (including whether a variable is mutated or not). The second pass, - called "optimize", performs constant propagation, constant folding, - and function inlining; this pass mutates records produced by the - first pass. The third pass, called "resolve", finishes compilation - by computing variable offsets and indirections (often mutating the - records produced by the first pass). - + Compilation works in three passes. + + The first pass, called "compile", performs most of the work and + tracks variable usage (including whether a variable is mutated or + not). + + The second pass, called "optimize", performs constant propagation, + constant folding, and function inlining; this pass mutates records + produced by the first pass. + + The third pass, called "resolve", finishes compilation by computing + variable offsets and indirections (often mutating the records + produced by the first pass). It is also responsible for closure + conversion (i.e., converting closure content to arguments) and + lifting (of procedures that close over nothing or only globals). + Beware that the resulting bytecode object is a graph, not a tree, + due to sharing (potentially cyclic) of closures that are "empty" + but actually refer to other "empty" closures. + Top-level variables (global or module) are referenced through the Scheme stack, so that the variables can be "re-linked" each time a module is instantiated. Syntax constants are similarly accessed @@ -799,16 +809,20 @@ int scheme_omittable_expr(Scheme_Object *o, int vals) return 0; } -int scheme_is_compiled_procedure(Scheme_Object *o, int can_be_closed) +int scheme_is_compiled_procedure(Scheme_Object *o, int can_be_closed, int can_be_liftable) { if (SAME_TYPE(SCHEME_TYPE(o), scheme_compiled_unclosed_procedure_type)) { - if (!can_be_closed) { + if (!can_be_closed || !can_be_liftable) { Scheme_Closure_Data *data; data = (Scheme_Closure_Data *)o; /* Because == 0 is like a constant */ - return (data->closure_size > 0); - } else - return 1; + if (!can_be_closed && !data->closure_size) + return 0; + /* Because procs that reference only globals are lifted: */ + if (!can_be_liftable && (data->closure_size == 1) && scheme_closure_has_top_level(data)) + return 0; + } + return 1; } else return 0; } @@ -961,25 +975,129 @@ void scheme_finish_application(Scheme_App_Rec *app) } } -static Scheme_Object *resolve_application(Scheme_Object *o, Resolve_Info *info) +static Scheme_Object *check_converted_rator(Scheme_Object *rator, Resolve_Info *info, Scheme_Object **new_rator, + int orig_arg_cnt, int *_rdelta) { + Scheme_Object *lifted; + int flags; + + if (!SAME_TYPE(SCHEME_TYPE(rator), scheme_local_type)) + return NULL; + + (void)scheme_resolve_info_lookup(info, SCHEME_LOCAL_POS(rator), &flags, &lifted, orig_arg_cnt + 1); + + if (lifted && SCHEME_RPAIRP(lifted)) { + Scheme_Object *vec, *arity; + + *new_rator = SCHEME_CAR(lifted); + vec = SCHEME_CDR(lifted); + *_rdelta = 0; + + if (SCHEME_VEC_SIZE(vec) > 1) { + /* Check that actual argument count matches expected. If + it doesn't, we need to generate explicit code to report + the error, so that the conversion's arity change isn't + visible. */ + arity = SCHEME_VEC_ELS(vec)[0]; + if (SCHEME_INTP(arity)) { + if (orig_arg_cnt == SCHEME_INT_VAL(arity)) + arity = NULL; + } else { + arity = SCHEME_BOX_VAL(arity); + if (orig_arg_cnt >= SCHEME_INT_VAL(arity)) + arity = NULL; + else { + Scheme_App2_Rec *app; + app = MALLOC_ONE_TAGGED(Scheme_App2_Rec); + app->iso.so.type = scheme_application2_type; + app->rator = scheme_make_arity_at_least; + app->rand = arity; + arity = (Scheme_Object *)app; + *_rdelta = 1; /* so app gets resolved */ + } + } + /* If arity is non-NULL, there's a mismatch. */ + if (arity) { + /* Generate a call to `raise-arity-error' instead of + the current *new_rator: */ + Scheme_Object *old_rator = *new_rator; + if (SAME_TYPE(SCHEME_TYPE(old_rator), scheme_toplevel_type)) { + /* More coordinate trouble. old_rator was computed for an + application with a potentially different number of arguments. */ + int delta; + delta = 3 - SCHEME_VEC_SIZE(vec); + if (delta) + old_rator = scheme_shift_toplevel(old_rator, delta); + } + vec = scheme_make_vector(3, NULL); + SCHEME_VEC_ELS(vec)[0] = scheme_make_integer(0); + SCHEME_VEC_ELS(vec)[1] = old_rator; + SCHEME_VEC_ELS(vec)[2] = arity; + *new_rator = scheme_raise_arity_error_proc; + } + } + + return vec; + } else + return NULL; +} + +static Scheme_Object *resolve_application(Scheme_Object *o, Resolve_Info *orig_info, int already_resolved_arg_count) +{ + Resolve_Info *info; Scheme_App_Rec *app; int i, n, devals; app = (Scheme_App_Rec *)o; - devals = sizeof(Scheme_App_Rec) + (app->num_args * sizeof(Scheme_Object *)); - n = app->num_args + 1; - info = scheme_resolve_info_extend(info, n - 1, 0, 0); + if (!already_resolved_arg_count) { + /* Check whether this is an application of a converted closure: */ + Scheme_Object *additions = NULL, *rator; + int rdelta; + additions = check_converted_rator(app->args[0], orig_info, &rator, n - 1, &rdelta); + if (additions) { + /* Expand application with m arguments */ + Scheme_App_Rec *app2; + Scheme_Object *loc; + int m; + m = SCHEME_VEC_SIZE(additions) - 1; + app2 = scheme_malloc_application(n + m); + for (i = 0; i < m; i++) { + loc = SCHEME_VEC_ELS(additions)[i+1]; + if (SCHEME_BOXP(loc)) + loc = SCHEME_BOX_VAL(loc); + app2->args[i + 1] = loc; + } + for (i = 1; i < n; i++) { + app2->args[i + m] = app->args[i]; + } + app2->args[0] = rator; + n += m; + app = app2; + already_resolved_arg_count = m + 1 + rdelta; + } + } + devals = sizeof(Scheme_App_Rec) + ((n - 1) * sizeof(Scheme_Object *)); + + info = scheme_resolve_info_extend(orig_info, n - 1, 0, 0); + for (i = 0; i < n; i++) { Scheme_Object *le; - le = scheme_resolve_expr(app->args[i], info); - app->args[i] = le; + if (already_resolved_arg_count) { + already_resolved_arg_count--; + } else { + le = scheme_resolve_expr(app->args[i], info); + app->args[i] = le; + } } + info->max_let_depth += (n - 1); + if (orig_info->max_let_depth < info->max_let_depth) + orig_info->max_let_depth = info->max_let_depth; + for (i = 0; i < n; i++) { char et; et = scheme_get_eval_type(app->args[i]); @@ -989,27 +1107,82 @@ static Scheme_Object *resolve_application(Scheme_Object *o, Resolve_Info *info) return (Scheme_Object *)app; } -static Scheme_Object *resolve_application2(Scheme_Object *o, Resolve_Info *info) +static Scheme_Object *resolve_application3(Scheme_Object *o, Resolve_Info *orig_info, int already_resolved_arg_count); + +static Scheme_Object *resolve_application2(Scheme_Object *o, Resolve_Info *orig_info, int already_resolved_arg_count) { + Resolve_Info *info; Scheme_App2_Rec *app; Scheme_Object *le; short et; app = (Scheme_App2_Rec *)o; - info = scheme_resolve_info_extend(info, 1, 0, 0); + if (!already_resolved_arg_count) { + /* Check whether this is an application of a converted closure: */ + Scheme_Object *additions = NULL, *rator; + int rdelta; + additions = check_converted_rator(app->rator, orig_info, &rator, 1, &rdelta); + if (additions) { + int m; + m = SCHEME_VEC_SIZE(additions) - 1; + if (!m) { + app->rator = rator; + already_resolved_arg_count = 1 + rdelta; + } else if (m > 1) { + /* Expand application with m arguments */ + Scheme_App_Rec *app2; + Scheme_Object *loc; + int i; + app2 = scheme_malloc_application(2 + m); + for (i = 0; i < m; i++) { + loc = SCHEME_VEC_ELS(additions)[i+1]; + if (SCHEME_BOXP(loc)) + loc = SCHEME_BOX_VAL(loc); + app2->args[i + 1] = loc; + } + app2->args[0] = rator; + app2->args[m+1] = app->rand; + return resolve_application((Scheme_Object *)app2, orig_info, m + 1 + rdelta); + } else { + Scheme_App3_Rec *app2; + Scheme_Object *loc; + app2 = MALLOC_ONE_TAGGED(Scheme_App3_Rec); + app2->iso.so.type = scheme_application3_type; + app2->rator = rator; + loc = SCHEME_VEC_ELS(additions)[1]; + if (SCHEME_BOXP(loc)) + loc = SCHEME_BOX_VAL(loc); + app2->rand1 = loc; + app2->rand2 = app->rand; + return resolve_application3((Scheme_Object *)app2, orig_info, 2 + rdelta); + } + } + } - le = scheme_resolve_expr(app->rator, info); - app->rator = le; + info = scheme_resolve_info_extend(orig_info, 1, 0, 0); - le = scheme_resolve_expr(app->rand, info); - app->rand = le; + if (!already_resolved_arg_count) { + le = scheme_resolve_expr(app->rator, info); + app->rator = le; + } else + already_resolved_arg_count--; + + if (!already_resolved_arg_count) { + le = scheme_resolve_expr(app->rand, info); + app->rand = le; + } else + already_resolved_arg_count--; et = scheme_get_eval_type(app->rand); et = et << 3; et += scheme_get_eval_type(app->rator); SCHEME_APPN_FLAGS(app) = et; + + info->max_let_depth += 1; + if (orig_info->max_let_depth < info->max_let_depth) + orig_info->max_let_depth = info->max_let_depth; return (Scheme_Object *)app; } @@ -1028,24 +1201,67 @@ static int eq_testable_constant(Scheme_Object *v) return 0; } -static Scheme_Object *resolve_application3(Scheme_Object *o, Resolve_Info *info) +static Scheme_Object *resolve_application3(Scheme_Object *o, Resolve_Info *orig_info, int already_resolved_arg_count) { + Resolve_Info *info; Scheme_App3_Rec *app; Scheme_Object *le; short et; app = (Scheme_App3_Rec *)o; - info = scheme_resolve_info_extend(info, 2, 0, 0); + if (!already_resolved_arg_count) { + /* Check whether this is an application of a converted closure: */ + Scheme_Object *additions = NULL, *rator; + int rdelta; + additions = check_converted_rator(app->rator, orig_info, &rator, 2, &rdelta); + if (additions) { + int m, i; + m = SCHEME_VEC_SIZE(additions) - 1; + if (m) { + /* Expand application with m arguments */ + Scheme_App_Rec *app2; + Scheme_Object *loc; + app2 = scheme_malloc_application(3 + m); + for (i = 0; i < m; i++) { + loc = SCHEME_VEC_ELS(additions)[i+1]; + if (SCHEME_BOXP(loc)) + loc = SCHEME_BOX_VAL(loc); + app2->args[i + 1] = loc; + } + app2->args[0] = rator; + app2->args[m+1] = app->rand1; + app2->args[m+2] = app->rand2; + return resolve_application((Scheme_Object *)app2, orig_info, m + 1 + rdelta); + } else { + app->rator = rator; + already_resolved_arg_count = 1 + rdelta; + } + } + } - le = scheme_resolve_expr(app->rator, info); - app->rator = le; + info = scheme_resolve_info_extend(orig_info, 2, 0, 0); - le = scheme_resolve_expr(app->rand1, info); - app->rand1 = le; + if (already_resolved_arg_count) { + already_resolved_arg_count--; + } else { + le = scheme_resolve_expr(app->rator, info); + app->rator = le; + } - le = scheme_resolve_expr(app->rand2, info); - app->rand2 = le; + if (already_resolved_arg_count) { + already_resolved_arg_count--; + } else { + le = scheme_resolve_expr(app->rand1, info); + app->rand1 = le; + } + + if (already_resolved_arg_count) { + already_resolved_arg_count--; + } else { + le = scheme_resolve_expr(app->rand2, info); + app->rand2 = le; + } /* Optimize `equal?' or `eqv?' test on certain types to `eq?'. This is especially helpful for the JIT. */ @@ -1064,6 +1280,10 @@ static Scheme_Object *resolve_application3(Scheme_Object *o, Resolve_Info *info) SCHEME_APPN_FLAGS(app) = et; + info->max_let_depth += 2; + if (orig_info->max_let_depth < info->max_let_depth) + orig_info->max_let_depth = info->max_let_depth; + return (Scheme_Object *)app; } @@ -1423,12 +1643,18 @@ Scheme_Object *scheme_resolve_expr(Scheme_Object *expr, Resolve_Info *info) case scheme_local_type: { int pos, flags; + Scheme_Object *lifted; - pos = scheme_resolve_info_lookup(info, SCHEME_LOCAL_POS(expr), &flags); - return scheme_make_local((flags & SCHEME_INFO_BOXED) - ? scheme_local_unbox_type - : scheme_local_type, - pos); + pos = scheme_resolve_info_lookup(info, SCHEME_LOCAL_POS(expr), &flags, &lifted, 0); + if (lifted) { + /* Lexical reference replaced with top-level reference for a lifted value: */ + return lifted; + } else { + return scheme_make_local((flags & SCHEME_INFO_BOXED) + ? scheme_local_unbox_type + : scheme_local_type, + pos); + } } case scheme_compiled_syntax_type: { @@ -1438,11 +1664,11 @@ Scheme_Object *scheme_resolve_expr(Scheme_Object *expr, Resolve_Info *info) return f((Scheme_Object *)SCHEME_IPTR_VAL(expr), info); } case scheme_application_type: - return resolve_application(expr, info); + return resolve_application(expr, info, 0); case scheme_application2_type: - return resolve_application2(expr, info); + return resolve_application2(expr, info, 0); case scheme_application3_type: - return resolve_application3(expr, info); + return resolve_application3(expr, info, 0); case scheme_sequence_type: return resolve_sequence(expr, info); case scheme_branch_type: @@ -1450,7 +1676,7 @@ Scheme_Object *scheme_resolve_expr(Scheme_Object *expr, Resolve_Info *info) case scheme_with_cont_mark_type: return resolve_wcm(expr, info); case scheme_compiled_unclosed_procedure_type: - return scheme_resolve_closure_compilation(expr, info); + return scheme_resolve_closure_compilation(expr, info, 1, 0, 0, NULL); case scheme_compiled_let_void_type: return scheme_resolve_lets(expr, info); case scheme_compiled_toplevel_type: @@ -1790,9 +2016,9 @@ Scheme_Object *optimize_for_inline(Optimize_Info *info, Scheme_Object *le, int a Scheme_App_Rec *app, Scheme_App2_Rec *app2, Scheme_App3_Rec *app3) { int offset; - + if (SAME_TYPE(SCHEME_TYPE(le), scheme_local_type)) { - /* Check for inling: */ + /* Check for inlining: */ le = scheme_optimize_info_lookup(info, SCHEME_LOCAL_POS(le), &offset); } else if (SAME_TYPE(SCHEME_TYPE(le), scheme_compiled_toplevel_type)) { if (info->top_level_consts) { @@ -1828,17 +2054,67 @@ Scheme_Object *optimize_for_inline(Optimize_Info *info, Scheme_Object *le, int a return NULL; } +static void reset_rator(Scheme_Object *app, Scheme_Object *a) +{ + switch (SCHEME_TYPE(app)) { + case scheme_application_type: + ((Scheme_App_Rec *)app)->args[0] = a; + break; + case scheme_application2_type: + ((Scheme_App2_Rec *)app)->rator = a; + break; + case scheme_application3_type: + ((Scheme_App3_Rec *)app)->rator = a; + break; + } +} + +static Scheme_Object *check_app_let_rator(Scheme_Object *app, Scheme_Object *rator, Optimize_Info *info, int argc) +{ + if (SAME_TYPE(SCHEME_TYPE(rator), scheme_compiled_let_void_type)) { + Scheme_Let_Header *head = (Scheme_Let_Header *)rator; + + if ((head->count == 1) && (head->num_clauses == 1)) { + Scheme_Object *body; + Scheme_Compiled_Let_Value *clv; + + clv = (Scheme_Compiled_Let_Value *)head->body; + body = clv->body; + if (SAME_TYPE(SCHEME_TYPE(body), scheme_local_type) + && (SCHEME_LOCAL_POS(body) == 0) + && scheme_is_compiled_procedure(clv->value, 1, 1)) { + + reset_rator(app, scheme_false); + app = scheme_optimize_shift(app, 1, 0); + reset_rator(app, scheme_make_local(scheme_local_type, 0)); + + clv->body = app; + + if (clv->flags[0] & SCHEME_WAS_APPLIED_EXCEPT_ONCE) { + clv->flags[0] -= SCHEME_WAS_APPLIED_EXCEPT_ONCE; + clv->flags[0] |= SCHEME_WAS_ONLY_APPLIED; + } + + return scheme_optimize_expr(rator, info); + } + } + } + + return NULL; +} + static Scheme_Object *optimize_application(Scheme_Object *o, Optimize_Info *info) { Scheme_Object *le; Scheme_App_Rec *app; - int i, n, max_let_depth = 0, all_vals = 1; + int i, n, all_vals = 1; app = (Scheme_App_Rec *)o; - n = app->num_args + 1; + le = check_app_let_rator(o, app->args[0], info, app->num_args); + if (le) return le; - max_let_depth = 0; + n = app->num_args + 1; for (i = 0; i < n; i++) { if (!i) { @@ -1852,10 +2128,6 @@ static Scheme_Object *optimize_application(Scheme_Object *o, Optimize_Info *info if (i && (SCHEME_TYPE(le) < _scheme_compiled_values_types_)) all_vals = 0; - - if (info->max_let_depth > max_let_depth) - max_let_depth = info->max_let_depth; - info->max_let_depth = 0; } if (all_vals) { @@ -1865,7 +2137,6 @@ static Scheme_Object *optimize_application(Scheme_Object *o, Optimize_Info *info } info->size += 1; - info->max_let_depth = max_let_depth + (n - 1); return (Scheme_Object *)app; } @@ -1874,10 +2145,12 @@ static Scheme_Object *optimize_application2(Scheme_Object *o, Optimize_Info *inf { Scheme_App2_Rec *app; Scheme_Object *le; - int max_let_depth; app = (Scheme_App2_Rec *)o; + le = check_app_let_rator(o, app->rator, info, 1); + if (le) return le; + le = optimize_for_inline(info, app->rator, 1, NULL, app, NULL); if (le) return le; @@ -1885,9 +2158,6 @@ static Scheme_Object *optimize_application2(Scheme_Object *o, Optimize_Info *inf le = scheme_optimize_expr(app->rator, info); app->rator = le; - max_let_depth = info->max_let_depth; - info->max_let_depth = 0; - le = scheme_optimize_expr(app->rand, info); app->rand = le; if (SCHEME_TYPE(le) > _scheme_compiled_values_types_) { @@ -1896,11 +2166,7 @@ static Scheme_Object *optimize_application2(Scheme_Object *o, Optimize_Info *inf return le; } - if (info->max_let_depth > max_let_depth) - max_let_depth = info->max_let_depth; - info->size += 1; - info->max_let_depth = max_let_depth + 1; return (Scheme_Object *)app; } @@ -1909,10 +2175,13 @@ static Scheme_Object *optimize_application3(Scheme_Object *o, Optimize_Info *inf { Scheme_App3_Rec *app; Scheme_Object *le; - int max_let_depth, all_vals = 1; + int all_vals = 1; app = (Scheme_App3_Rec *)o; + le = check_app_let_rator(o, app->rator, info, 2); + if (le) return le; + le = optimize_for_inline(info, app->rator, 2, NULL, NULL, app); if (le) return le; @@ -1920,9 +2189,6 @@ static Scheme_Object *optimize_application3(Scheme_Object *o, Optimize_Info *inf le = scheme_optimize_expr(app->rator, info); app->rator = le; - max_let_depth = info->max_let_depth; - info->max_let_depth = 0; - /* 1st arg */ le = scheme_optimize_expr(app->rand1, info); @@ -1931,9 +2197,6 @@ static Scheme_Object *optimize_application3(Scheme_Object *o, Optimize_Info *inf if (SCHEME_TYPE(le) < _scheme_compiled_values_types_) all_vals = 0; - if (info->max_let_depth > max_let_depth) - max_let_depth = info->max_let_depth; - /* 2nd arg */ le = scheme_optimize_expr(app->rand2, info); @@ -1942,9 +2205,6 @@ static Scheme_Object *optimize_application3(Scheme_Object *o, Optimize_Info *inf if (SCHEME_TYPE(le) < _scheme_compiled_values_types_) all_vals = 0; - if (info->max_let_depth > max_let_depth) - max_let_depth = info->max_let_depth; - /* Fold or continue */ if (all_vals) { @@ -1954,7 +2214,6 @@ static Scheme_Object *optimize_application3(Scheme_Object *o, Optimize_Info *inf } info->size += 1; - info->max_let_depth = max_let_depth + 2; return (Scheme_Object *)app; } @@ -1964,7 +2223,7 @@ static Scheme_Object *optimize_sequence(Scheme_Object *o, Optimize_Info *info) Scheme_Sequence *s = (Scheme_Sequence *)o; Scheme_Object *le; int i; - int max_let_depth = 0, drop = 0; + int drop = 0; for (i = s->count; i--; ) { le = scheme_optimize_expr(s->array[i], info); @@ -1977,15 +2236,9 @@ static Scheme_Object *optimize_sequence(Scheme_Object *o, Optimize_Info *info) s->array[i] = NULL; } else { s->array[i] = le; - - if (info->max_let_depth > max_let_depth) - max_let_depth = info->max_let_depth; } - info->max_let_depth = 0; } - info->max_let_depth = max_let_depth; - if (drop + 1 == s->count) { return s->array[drop]; } else if (drop) { @@ -2025,7 +2278,6 @@ static Scheme_Object *optimize_branch(Scheme_Object *o, Optimize_Info *info) { Scheme_Branch_Rec *b; Scheme_Object *t, *tb, *fb; - int max_let_depth; b = (Scheme_Branch_Rec *)o; @@ -2063,21 +2315,10 @@ static Scheme_Object *optimize_branch(Scheme_Object *o, Optimize_Info *info) return scheme_optimize_expr(tb, info); } - max_let_depth = info->max_let_depth; - info->max_let_depth = 0; - tb = scheme_optimize_expr(tb, info); - if (info->max_let_depth > max_let_depth) - max_let_depth = info->max_let_depth; - info->max_let_depth = 0; - fb = scheme_optimize_expr(fb, info); - if (info->max_let_depth > max_let_depth) - max_let_depth = info->max_let_depth; - info->max_let_depth = 0; - /* Try optimize: (if x x #f) => x */ if (SAME_TYPE(SCHEME_TYPE(t), scheme_local_type) && SAME_TYPE(SCHEME_TYPE(tb), scheme_local_type) @@ -2109,7 +2350,6 @@ static Scheme_Object *optimize_branch(Scheme_Object *o, Optimize_Info *info) b->fbranch = fb; info->size += 1; - info->max_let_depth = max_let_depth; return o; } @@ -2118,31 +2358,18 @@ static Scheme_Object *optimize_wcm(Scheme_Object *o, Optimize_Info *info) { Scheme_With_Continuation_Mark *wcm = (Scheme_With_Continuation_Mark *)o; Scheme_Object *k, *v, *b; - int max_let_depth; k = scheme_optimize_expr(wcm->key, info); - max_let_depth = info->max_let_depth; - info->max_let_depth = 0; - v = scheme_optimize_expr(wcm->val, info); - if (info->max_let_depth > max_let_depth) - max_let_depth = info->max_let_depth; - info->max_let_depth = 0; - b = scheme_optimize_expr(wcm->body, info); - if (info->max_let_depth > max_let_depth) - max_let_depth = info->max_let_depth; - info->max_let_depth = 0; - wcm->key = k; wcm->val = v; wcm->body = b; info->size += 1; - info->max_let_depth = max_let_depth; return (Scheme_Object *)wcm; } @@ -2183,11 +2410,12 @@ Scheme_Object *scheme_optimize_expr(Scheme_Object *expr, Optimize_Info *info) info->size += 1; - val = scheme_optimize_info_lookup(info, SCHEME_LOCAL_POS(expr), NULL); + pos = SCHEME_LOCAL_POS(expr); + + val = scheme_optimize_info_lookup(info, pos, NULL); if (val) return val; - pos = SCHEME_LOCAL_POS(expr); delta = scheme_optimize_info_get_shift(info, pos); if (delta) expr = scheme_make_local(scheme_local_type, pos + delta); @@ -2262,7 +2490,6 @@ Scheme_Object *scheme_optimize_expr(Scheme_Object *expr, Optimize_Info *info) Scheme_Object *scheme_optimize_list(Scheme_Object *expr, Optimize_Info *info) { Scheme_Object *first = scheme_null, *last = NULL; - int max_let_depth = 0; while (SCHEME_PAIRP(expr)) { Scheme_Object *pr; @@ -2270,10 +2497,6 @@ Scheme_Object *scheme_optimize_list(Scheme_Object *expr, Optimize_Info *info) pr = scheme_make_pair(scheme_optimize_expr(SCHEME_CAR(expr), info), scheme_null); - if (info->max_let_depth > max_let_depth) - max_let_depth = info->max_let_depth; - info->max_let_depth = 0; - if (last) SCHEME_CDR(last) = pr; else @@ -2283,8 +2506,6 @@ Scheme_Object *scheme_optimize_list(Scheme_Object *expr, Optimize_Info *info) expr = SCHEME_CDR(expr); } - info->max_let_depth = max_let_depth; - return first; } @@ -2477,6 +2698,158 @@ Scheme_Object *scheme_optimize_clone(Scheme_Object *expr, Optimize_Info *info, i return NULL; } +Scheme_Object *scheme_optimize_shift(Scheme_Object *expr, int delta, int after_depth) +/* Shift lexical addresses deeper by delta if already deeper than after_depth; + can mutate. */ +{ + int t; + + /* FIXME: need stack check */ + + t = SCHEME_TYPE(expr); + + switch(t) { + case scheme_local_type: + case scheme_local_unbox_type: + { + int pos = SCHEME_LOCAL_POS(expr); + if (pos >= after_depth) { + expr = scheme_make_local(t, SCHEME_LOCAL_POS(expr) + delta); + } + return expr; + } + case scheme_compiled_syntax_type: + { + Scheme_Syntax_Shifter f; + + f = scheme_syntax_shifters[SCHEME_PINT_VAL(expr)]; + + if (!f) { + scheme_signal_error("scheme_optimize_shift: no shift available for %d", SCHEME_PINT_VAL(expr)); + return NULL; + } + return f((Scheme_Object *)SCHEME_IPTR_VAL(expr), delta, after_depth); + } + case scheme_application_type: + { + Scheme_App_Rec *app = (Scheme_App_Rec *)expr; + int i; + + for (i = app->num_args + 1; i--; ) { + expr = scheme_optimize_shift(app->args[i], delta, after_depth); + app->args[i] = expr; + } + + return (Scheme_Object *)app; + } + case scheme_application2_type: + { + Scheme_App2_Rec *app = (Scheme_App2_Rec *)expr; + + expr = scheme_optimize_shift(app->rator, delta, after_depth); + app->rator = expr; + + expr = scheme_optimize_shift(app->rand, delta, after_depth); + app->rand = expr; + + return (Scheme_Object *)app; + } + case scheme_application3_type: + { + Scheme_App3_Rec *app = (Scheme_App3_Rec *)expr; + + expr = scheme_optimize_shift(app->rator, delta, after_depth); + app->rator = expr; + + expr = scheme_optimize_shift(app->rand1, delta, after_depth); + app->rand1 = expr; + + expr = scheme_optimize_shift(app->rand2, delta, after_depth); + app->rand2 = expr; + + return (Scheme_Object *)app; + } + case scheme_compiled_let_void_type: + { + Scheme_Let_Header *head = (Scheme_Let_Header *)expr; + Scheme_Object *body; + Scheme_Compiled_Let_Value *lv = NULL; + int i; + + /* Build let-value change: */ + body = head->body; + for (i = head->num_clauses; i--; ) { + lv = (Scheme_Compiled_Let_Value *)body; + + expr = scheme_optimize_shift(lv->value, delta, after_depth + head->count); + lv->value = expr; + + body = lv->body; + } + expr = scheme_optimize_shift(body, delta, after_depth + head->count); + + if (head->num_clauses) + lv->body = expr; + else + head->body = expr; + + return (Scheme_Object *)head; + } + case scheme_sequence_type: + case scheme_begin0_sequence_type: + { + Scheme_Sequence *seq = (Scheme_Sequence *)expr; + int i; + + for (i = seq->count; i--; ) { + expr = scheme_optimize_shift(seq->array[i], delta, after_depth); + seq->array[i] = expr; + } + + return (Scheme_Object *)seq; + } + case scheme_branch_type: + { + Scheme_Branch_Rec *b = (Scheme_Branch_Rec *)expr; + + expr = scheme_optimize_shift(b->test, delta, after_depth); + b->test = expr; + + expr = scheme_optimize_shift(b->tbranch, delta, after_depth); + b->tbranch = expr; + + expr = scheme_optimize_shift(b->fbranch, delta, after_depth); + b->fbranch = expr; + + return (Scheme_Object *)b; + } + case scheme_with_cont_mark_type: + { + Scheme_With_Continuation_Mark *wcm = (Scheme_With_Continuation_Mark *)expr; + + expr = scheme_optimize_shift(wcm->key, delta, after_depth); + wcm->key = expr; + + expr = scheme_optimize_shift(wcm->val, delta, after_depth); + wcm->val = expr; + + expr = scheme_optimize_shift(wcm->body, delta, after_depth); + wcm->body = expr; + + return (Scheme_Object *)wcm; + } + case scheme_compiled_unclosed_procedure_type: + return scheme_shift_closure_compilation(expr, delta, after_depth); + case scheme_compiled_toplevel_type: + case scheme_compiled_quote_syntax_type: + return expr; + default: + return expr; + } + + return NULL; +} + /*========================================================================*/ /* JIT */ /*========================================================================*/ @@ -2841,7 +3214,7 @@ void scheme_init_expand_recs(Scheme_Expand_Info *src, int drec, void scheme_merge_compile_recs(Scheme_Compile_Info *src, int drec, Scheme_Compile_Info *dest, int n) { - /* Nothing to do anymore, since we moved max_let_depth to optimize phase */ + /* Nothing to do anymore, since we moved max_let_depth to resolve phase */ } void scheme_init_lambda_rec(Scheme_Compile_Info *src, int drec, @@ -3005,6 +3378,41 @@ static Scheme_Object *add_renames_unless_module(Scheme_Object *form, Scheme_Env return form; } +void scheme_enable_expression_resolve_lifts(Resolve_Info *ri) +{ + Scheme_Object *lift_vec; + + lift_vec = scheme_make_vector(2, NULL); + SCHEME_VEC_ELS(lift_vec)[0] = scheme_null; + SCHEME_VEC_ELS(lift_vec)[1] = scheme_make_integer(0); + ri->lifts = lift_vec; +} + +Scheme_Object *scheme_merge_expression_resolve_lifts(Scheme_Object *expr, Resolve_Prefix *rp, Resolve_Info *ri) +{ + Scheme_Object *lift_vec, *lifts; + Scheme_Sequence *s; + int n, i; + + lift_vec = ri->lifts; + n = SCHEME_INT_VAL(SCHEME_VEC_ELS(lift_vec)[1]); + if (n) { + rp->num_lifts = n; + lifts = SCHEME_VEC_ELS(lift_vec)[0]; + + s = malloc_sequence(n + 1); + s->so.type = scheme_sequence_type; + s->count = n + 1; + for (i = 0; i < n; i++, lifts = SCHEME_CDR(lifts)) { + s->array[i] = SCHEME_CAR(lifts); + } + s->array[i] = expr; + + return (Scheme_Object *)s; + } else + return expr; +} + static void *compile_k(void) { Scheme_Thread *p = scheme_current_thread; @@ -3135,20 +3543,33 @@ static void *compile_k(void) break; } - oi = scheme_optimize_info_create(cenv); + oi = scheme_optimize_info_create(); oi->enforce_const = enforce_consts; o = scheme_optimize_expr(o, oi); rp = scheme_resolve_prefix(0, cenv->prefix, 1); ri = scheme_resolve_info_create(rp); ri->enforce_const = enforce_consts; + scheme_enable_expression_resolve_lifts(ri); + o = scheme_resolve_expr(o, ri); - + + o = scheme_merge_expression_resolve_lifts(o, rp, ri); + top = MALLOC_ONE_TAGGED(Scheme_Compilation_Top); top->so.type = scheme_compilation_top_type; - top->max_let_depth = oi->max_let_depth; + top->max_let_depth = ri->max_let_depth; top->code = o; top->prefix = rp; + + if (0) { /* <- change to 1 to check compilation result */ + scheme_validate_code(NULL, top->code, + scheme_make_hash_table(SCHEME_hash_ptr), + top->max_let_depth, + top->prefix->num_toplevels, + top->prefix->num_stxes, + top->prefix->num_lifts); + } } if (SCHEME_PAIRP(tl_queue)) { @@ -5919,8 +6340,6 @@ static void *eval_k(void) } if (isexpr) { - if (use_jit) - v = scheme_jit_expr(v); if (multi) v = _scheme_eval_linked_expr_multi_wp(v, p); else @@ -6745,7 +7164,7 @@ local_eval(int argc, Scheme_Object **argv) int scheme_prefix_depth(Resolve_Prefix *rp) { - if (rp->num_toplevels || rp->num_stxes) + if (rp->num_toplevels || rp->num_stxes || rp->num_lifts) return 1; else return 0; @@ -6760,11 +7179,12 @@ Scheme_Object **scheme_push_prefix(Scheme_Env *genv, Resolve_Prefix *rp, rs_save = rs = MZ_RUNSTACK; - if (rp->num_toplevels || rp->num_stxes) { + if (rp->num_toplevels || rp->num_stxes || rp->num_lifts) { i = rp->num_toplevels; if (rp->num_stxes) { i += rp->num_stxes + 1; } + i += rp->num_lifts; a = MALLOC_N(Scheme_Object *, i); --rs; @@ -6794,6 +7214,22 @@ Scheme_Object **scheme_push_prefix(Scheme_Env *genv, Resolve_Prefix *rp, a[i + j] = rp->stxes[j]; } } + j = rp->num_stxes + 1; + } else + j = 0; + + if (rp->num_lifts) { + Scheme_Object *sym; + sym = scheme_make_symbol(""); /* uninterned! */ + j += rp->num_toplevels; + for (i = 0; i < rp->num_lifts; i++, j++) { + v = (Scheme_Object *)MALLOC_ONE_TAGGED(Scheme_Bucket_With_Home); + v->type = scheme_variable_type; + ((Scheme_Bucket_With_Flags *)v)->flags = GLOB_HAS_HOME_PTR; + ((Scheme_Bucket_With_Home *)v)->home = genv; + ((Scheme_Bucket *)v)->key = (char *)sym; + a[j] = v; + } } } @@ -6818,30 +7254,186 @@ void scheme_pop_prefix(Scheme_Object **rs) #define VALID_BOX 2 #define VALID_TOPLEVELS 3 -void scheme_validate_code(Mz_CPort *port, Scheme_Object *code, int depth, int num_toplevels, int num_stxes) +void scheme_validate_code(Mz_CPort *port, Scheme_Object *code, Scheme_Hash_Table *ht, + int depth, + int num_toplevels, int num_stxes, int num_lifts) { char *stack; int delta; + Scheme_Object **tls; - depth += ((num_toplevels || num_stxes) ? 1 : 0); + depth += ((num_toplevels || num_stxes || num_lifts) ? 1 : 0); stack = scheme_malloc_atomic(depth); - if (num_toplevels || num_stxes) { + if (num_toplevels || num_stxes || num_lifts) { stack[depth - 1] = VALID_TOPLEVELS; } - delta = depth - ((num_toplevels || num_stxes) ? 1 : 0); - scheme_validate_expr(port, code, stack, depth, delta, delta, num_toplevels, num_stxes); + delta = depth - ((num_toplevels || num_stxes || num_lifts) ? 1 : 0); + + tls = MALLOC_N(Scheme_Object*, num_toplevels + num_lifts); + + scheme_validate_expr(port, code, + stack, ht, tls, + depth, delta, delta, + num_toplevels, num_stxes, num_lifts, + NULL, 0); } -void scheme_validate_expr(Mz_CPort *port, Scheme_Object *expr, char *stack, +static Scheme_Object *validate_k(void) +{ + Scheme_Thread *p = scheme_current_thread; + Mz_CPort *port = (Mz_CPort *)p->ku.k.p1; + Scheme_Object *expr = (Scheme_Object *)p->ku.k.p2; + char *stack = (char *)p->ku.k.p3; + Scheme_Hash_Table *ht = (Scheme_Hash_Table *)p->ku.k.p4; + int *args = (int *)(((void **)p->ku.k.p5)[0]); + Scheme_Object *app_rator = (Scheme_Object *)(((void **)p->ku.k.p5)[1]); + Scheme_Object **tls = (Scheme_Object **)(((void **)p->ku.k.p5)[2]); + + p->ku.k.p1 = NULL; + p->ku.k.p2 = NULL; + p->ku.k.p3 = NULL; + p->ku.k.p4 = NULL; + p->ku.k.p5 = NULL; + + scheme_validate_expr(port, expr, stack, ht, tls, + args[0], args[1], args[2], + args[3], args[4], args[5], + app_rator, args[6]); + + return scheme_true; +} + +int scheme_validate_rator_wants_box(Scheme_Object *app_rator, int pos, + int hope, + Scheme_Object **tls, + int num_toplevels, int num_stxes, int num_lifts) +{ + Scheme_Closure_Data *data = NULL; + + while (1) { + if (SAME_TYPE(SCHEME_TYPE(app_rator), scheme_closure_type)) { + data = SCHEME_COMPILED_CLOS_CODE(app_rator); + break; + } else if (SAME_TYPE(SCHEME_TYPE(app_rator), scheme_unclosed_procedure_type)) { + data = (Scheme_Closure_Data *)app_rator; + break; + } else if (SAME_TYPE(SCHEME_TYPE(app_rator), scheme_toplevel_type)) { + int p; + p = SCHEME_TOPLEVEL_POS(app_rator); + if (p >= (num_toplevels + num_stxes + (num_stxes ? 1 : 0))) { + /* It's a lift. Check that the lift is defined, and that it + doesn't want reference arguments. */ + int tp; + tp = (p - (num_stxes + (num_stxes ? 1 : 0))); + app_rator = tls[tp]; + if (!app_rator || SCHEME_VECTORP(app_rator)) { + /* The lift isn't ready. Record what we expect to find when it + is ready. */ + Scheme_Object *vec = app_rator; + + if (!vec || (SCHEME_VEC_SIZE(vec) < (pos + 1))) { + int sz; + Scheme_Object *naya; + if (vec) + sz = SCHEME_VEC_SIZE(vec); + else + sz = 3; + sz *= 2; + if (sz <= pos) + sz = pos + 1; + naya = scheme_make_vector(sz, scheme_null); + if (vec) + memcpy(SCHEME_VEC_ELS(naya), SCHEME_VEC_ELS(vec), sizeof(Scheme_Object*) * SCHEME_VEC_SIZE(vec)); + vec = naya; + tls[tp] = vec; + } + + if (SCHEME_NULLP(SCHEME_VEC_ELS(vec)[pos])) { + SCHEME_VEC_ELS(vec)[pos] = hope ? scheme_true : scheme_false; + return hope; + } else if (SCHEME_TRUEP(SCHEME_VEC_ELS(vec)[pos])) + return 1; + else + return 0; + } else if (SCHEME_FALSEP(app_rator)) { + return 0; + } /* else iterate */ + } else + return 0; + } else + return 0; + } + + if (SCHEME_CLOSURE_DATA_FLAGS(data) & CLOS_HAS_REF_ARGS) { + if (pos < data->num_params) { + int bit = ((mzshort)1 << (pos & (BITS_PER_MZSHORT - 1))); + if (data->closure_map[data->closure_size + (pos / BITS_PER_MZSHORT)] & bit) + return 1; + } + } + + return 0; +} + +void scheme_validate_expr(Mz_CPort *port, Scheme_Object *expr, + char *stack, Scheme_Hash_Table *ht, Scheme_Object **tls, int depth, int letlimit, int delta, - int num_toplevels, int num_stxes) + int num_toplevels, int num_stxes, int num_lifts, + Scheme_Object *app_rator, int proc_with_refs_ok) { Scheme_Type type; + int did_one = 0; + +#ifdef DO_STACK_CHECK +# include "mzstkchk.h" + { + Scheme_Thread *p = scheme_current_thread; + void **pr; + int *args; + + args = MALLOC_N_ATOMIC(int, 7); + + p->ku.k.p1 = (void *)port; + p->ku.k.p2 = (void *)expr; + p->ku.k.p3 = (void *)stack; + p->ku.k.p4 = (void *)ht; + + args[0] = depth; + args[1] = letlimit; + args[2] = delta; + args[3] = num_toplevels; + args[4] = num_stxes; + args[5] = num_lifts; + args[6] = proc_with_refs_ok; + + pr = MALLOC_N(void*, 3); + pr[0] = (void *)args; + pr[1] = (void *)app_rator; + pr[2] = (void *)tls; + + p->ku.k.p5 = (void *)pr; + + (void)scheme_handle_stack_overflow(validate_k); + + return; + } +#endif top: + if (did_one) { + if (app_rator) { + if (scheme_validate_rator_wants_box(app_rator, proc_with_refs_ok - 2, 0, + tls, num_toplevels, num_stxes, num_lifts)) + scheme_ill_formed_code(port); + app_rator = NULL; + } + proc_with_refs_ok = 0; + } else + did_one = 1; + type = SCHEME_TYPE(expr); switch (type) { @@ -6853,8 +7445,41 @@ void scheme_validate_expr(Mz_CPort *port, Scheme_Object *expr, char *stack, if ((c < 0) || (p < 0) || (d >= depth) || (stack[d] != VALID_TOPLEVELS) - || (p >= num_toplevels)) + || (p >= (num_toplevels + num_lifts + num_stxes + (num_stxes ? 1 : 0))) + || (num_stxes && (p == num_toplevels))) scheme_ill_formed_code(port); + + if (proc_with_refs_ok != 1) { + if (p >= (num_toplevels + num_stxes + (num_stxes ? 1 : 0))) { + /* It's a lift. Check that the lift is defined, and that it + doesn't want reference arguments. */ + int tp; + Scheme_Object *lift; + tp = p - (num_stxes + (num_stxes ? 1 : 0)); + lift = tls[tp]; + if (lift) { + if (SCHEME_VECTORP(lift)) { + int i; + for (i = SCHEME_VEC_SIZE(lift); i--; ) { + if (!SCHEME_NULLP(SCHEME_VEC_ELS(lift)[i])) + if (SCHEME_TRUEP(SCHEME_VEC_ELS(lift)[i])) + scheme_ill_formed_code(port); + } + tls[tp] = scheme_false; /* means "no ref args anywhere" */ + } else { + if (SAME_TYPE(SCHEME_TYPE(lift), scheme_closure_type)) + lift = (Scheme_Object *)SCHEME_COMPILED_CLOS_CODE(lift); + if (SAME_TYPE(SCHEME_TYPE(lift), scheme_unclosed_procedure_type)) { + Scheme_Closure_Data *data = (Scheme_Closure_Data *)lift; + if (SCHEME_CLOSURE_DATA_FLAGS(data) & CLOS_HAS_REF_ARGS) + scheme_ill_formed_code(port); + } + } + } else { + tls[tp] = scheme_false; /* means "no ref args anywhere" */ + } + } + } } break; case scheme_local_type: @@ -6862,8 +7487,19 @@ void scheme_validate_expr(Mz_CPort *port, Scheme_Object *expr, char *stack, int q = SCHEME_LOCAL_POS(expr); int p = q + delta; - if ((q < 0) || (p >= depth) || (stack[p] != VALID_VAL)) + if ((q < 0) || (p >= depth)) scheme_ill_formed_code(port); + + if (stack[p] != VALID_VAL) { + if ((proc_with_refs_ok >= 2) && (stack[p] == VALID_BOX) + && scheme_validate_rator_wants_box(app_rator, proc_with_refs_ok - 2, 1, + tls, num_toplevels, num_stxes, num_lifts)) { + /* It's ok - the function wants us to pass it a box, and + we did. */ + app_rator = NULL; + } else + scheme_ill_formed_code(port); + } } break; case scheme_local_unbox_type: @@ -6884,7 +7520,7 @@ void scheme_validate_expr(Mz_CPort *port, Scheme_Object *expr, char *stack, scheme_ill_formed_code(port); f = scheme_syntax_validaters[p]; - f((Scheme_Object *)SCHEME_IPTR_VAL(expr), port, stack, depth, letlimit, delta, num_toplevels, num_stxes); + f((Scheme_Object *)SCHEME_IPTR_VAL(expr), port, stack, ht, tls, depth, letlimit, delta, num_toplevels, num_stxes, num_lifts); } break; case scheme_application_type: @@ -6900,7 +7536,8 @@ void scheme_validate_expr(Mz_CPort *port, Scheme_Object *expr, char *stack, memset(stack + delta, VALID_NOT, n - 1); for (i = 0; i < n; i++) { - scheme_validate_expr(port, app->args[i], stack, depth, letlimit, delta, num_toplevels, num_stxes); + scheme_validate_expr(port, app->args[i], stack, ht, tls, depth, letlimit, delta, num_toplevels, num_stxes, num_lifts, + i ? app->args[0] : NULL, i + 1); } } break; @@ -6913,8 +7550,10 @@ void scheme_validate_expr(Mz_CPort *port, Scheme_Object *expr, char *stack, scheme_ill_formed_code(port); stack[delta] = VALID_NOT; - scheme_validate_expr(port, app->rator, stack, depth, letlimit, delta, num_toplevels, num_stxes); - scheme_validate_expr(port, app->rand, stack, depth, letlimit, delta, num_toplevels, num_stxes); + scheme_validate_expr(port, app->rator, stack, ht, tls, depth, letlimit, delta, num_toplevels, num_stxes, num_lifts, + NULL, 1); + scheme_validate_expr(port, app->rand, stack, ht, tls, depth, letlimit, delta, num_toplevels, num_stxes, num_lifts, + app->rator, 2); } break; case scheme_application3_type: @@ -6927,9 +7566,12 @@ void scheme_validate_expr(Mz_CPort *port, Scheme_Object *expr, char *stack, stack[delta] = VALID_NOT; stack[delta+1] = VALID_NOT; - scheme_validate_expr(port, app->rator, stack, depth, letlimit, delta, num_toplevels, num_stxes); - scheme_validate_expr(port, app->rand1, stack, depth, letlimit, delta, num_toplevels, num_stxes); - scheme_validate_expr(port, app->rand2, stack, depth, letlimit, delta, num_toplevels, num_stxes); + scheme_validate_expr(port, app->rator, stack, ht, tls, depth, letlimit, delta, num_toplevels, num_stxes, num_lifts, + NULL, 1); + scheme_validate_expr(port, app->rand1, stack, ht, tls, depth, letlimit, delta, num_toplevels, num_stxes, num_lifts, + app->rator, 2); + scheme_validate_expr(port, app->rand2, stack, ht, tls, depth, letlimit, delta, num_toplevels, num_stxes, num_lifts, + app->rator, 3); } break; case scheme_sequence_type: @@ -6941,7 +7583,8 @@ void scheme_validate_expr(Mz_CPort *port, Scheme_Object *expr, char *stack, cnt = seq->count; for (i = 0; i < cnt - 1; i++) { - scheme_validate_expr(port, seq->array[i], stack, depth, letlimit, delta, num_toplevels, num_stxes); + scheme_validate_expr(port, seq->array[i], stack, ht, tls, depth, letlimit, delta, num_toplevels, num_stxes, num_lifts, + NULL, 0); } expr = seq->array[cnt - 1]; @@ -6952,12 +7595,14 @@ void scheme_validate_expr(Mz_CPort *port, Scheme_Object *expr, char *stack, { Scheme_Branch_Rec *b; b = (Scheme_Branch_Rec *)expr; - scheme_validate_expr(port, b->test, stack, depth, letlimit, delta, num_toplevels, num_stxes); + scheme_validate_expr(port, b->test, stack, ht, tls, depth, letlimit, delta, num_toplevels, num_stxes, num_lifts, + NULL, 0); /* This is where letlimit is useful. It prevents let-assignment in the "then" branch that could permit bad code in the "else" branch (or the same thing with either branch affecting later code in a sequence). */ letlimit = delta; - scheme_validate_expr(port, b->tbranch, stack, depth, letlimit, delta, num_toplevels, num_stxes); + scheme_validate_expr(port, b->tbranch, stack, ht, tls, depth, letlimit, delta, num_toplevels, num_stxes, num_lifts, + NULL, 0); expr = b->fbranch; goto top; } @@ -6966,8 +7611,10 @@ void scheme_validate_expr(Mz_CPort *port, Scheme_Object *expr, char *stack, { Scheme_With_Continuation_Mark *wcm = (Scheme_With_Continuation_Mark *)expr; - scheme_validate_expr(port, wcm->key, stack, depth, letlimit, delta, num_toplevels, num_stxes); - scheme_validate_expr(port, wcm->val, stack, depth, letlimit, delta, num_toplevels, num_stxes); + scheme_validate_expr(port, wcm->key, stack, ht, tls, depth, letlimit, delta, num_toplevels, num_stxes, num_lifts, + NULL, 0); + scheme_validate_expr(port, wcm->val, stack, ht, tls, depth, letlimit, delta, num_toplevels, num_stxes, num_lifts, + NULL, 0); expr = wcm->body; goto top; } @@ -6990,9 +7637,14 @@ void scheme_validate_expr(Mz_CPort *port, Scheme_Object *expr, char *stack, case scheme_unclosed_procedure_type: { Scheme_Closure_Data *data = (Scheme_Closure_Data *)expr; - int i, cnt, q, p, sz, base; + int i, cnt, q, p, sz, base, vld; mzshort *map; char *new_stack; + + if (SCHEME_CLOSURE_DATA_FLAGS(data) & CLOS_HAS_REF_ARGS) { + if (proc_with_refs_ok != 1) + scheme_ill_formed_code(port); + } sz = data->max_let_depth; map = data->closure_map; @@ -7002,7 +7654,13 @@ void scheme_validate_expr(Mz_CPort *port, Scheme_Object *expr, char *stack, cnt = data->num_params; base = sz - cnt; for (i = 0; i < cnt; i++) { - new_stack[i + base] = VALID_VAL; + vld = VALID_VAL; + if (SCHEME_CLOSURE_DATA_FLAGS(data) & CLOS_HAS_REF_ARGS) { + int bit = ((mzshort)1 << (i & (BITS_PER_MZSHORT - 1))); + if (map[data->closure_size + (i / BITS_PER_MZSHORT)] & bit) + vld = VALID_BOX; + } + new_stack[i + base] = vld; } cnt = data->closure_size; @@ -7016,7 +7674,8 @@ void scheme_validate_expr(Mz_CPort *port, Scheme_Object *expr, char *stack, new_stack[i + base] = stack[p]; } - scheme_validate_expr(port, data->code, new_stack, sz, sz, base, num_toplevels, num_stxes); + scheme_validate_expr(port, data->code, new_stack, ht, tls, sz, sz, base, num_toplevels, num_stxes, num_lifts, + NULL, 0); } break; case scheme_let_value_type: @@ -7025,7 +7684,8 @@ void scheme_validate_expr(Mz_CPort *port, Scheme_Object *expr, char *stack, Scheme_Object *rhs; int q, p, c, i; - scheme_validate_expr(port, lv->value, stack, depth, letlimit, delta, num_toplevels, num_stxes); + scheme_validate_expr(port, lv->value, stack, ht, tls, depth, letlimit, delta, num_toplevels, num_stxes, num_lifts, + NULL, 0); memset(stack, VALID_NOT, delta); c = lv->count; @@ -7105,7 +7765,8 @@ void scheme_validate_expr(Mz_CPort *port, Scheme_Object *expr, char *stack, } for (i = 0; i < c; i++) { - scheme_validate_expr(port, l->procs[i], stack, depth, letlimit, delta, num_toplevels, num_stxes); + scheme_validate_expr(port, l->procs[i], stack, ht, tls, depth, letlimit, delta, num_toplevels, num_stxes, num_lifts, + NULL, 0); } expr = l->body; @@ -7121,7 +7782,8 @@ void scheme_validate_expr(Mz_CPort *port, Scheme_Object *expr, char *stack, scheme_ill_formed_code(port); stack[delta] = VALID_NOT; - scheme_validate_expr(port, lo->value, stack, depth, letlimit, delta, num_toplevels, num_stxes); + scheme_validate_expr(port, lo->value, stack, ht, tls, depth, letlimit, delta, num_toplevels, num_stxes, num_lifts, + NULL, 0); stack[delta] = VALID_VAL; expr = lo->body; @@ -7131,21 +7793,36 @@ void scheme_validate_expr(Mz_CPort *port, Scheme_Object *expr, char *stack, default: /* All values are definitely ok, except pre-closed closures: */ if (SAME_TYPE(type, scheme_closure_type)) { - expr = (Scheme_Object *)SCHEME_COMPILED_CLOS_CODE(expr); - goto top; + if (scheme_hash_get(ht, expr)) { + /* Done with this one. */ + } else { + scheme_hash_set(ht, expr, scheme_true); + expr = (Scheme_Object *)SCHEME_COMPILED_CLOS_CODE(expr); + did_one = 0; + goto top; + } } break; } + + if (app_rator) + if (scheme_validate_rator_wants_box(app_rator, proc_with_refs_ok - 2, 0, + tls, num_toplevels, num_stxes, num_lifts)) + scheme_ill_formed_code(port); } void scheme_validate_toplevel(Scheme_Object *expr, Mz_CPort *port, - char *stack, int depth, int delta, - int num_toplevels, int num_stxes) + char *stack, Scheme_Hash_Table *ht, Scheme_Object **tls, + int depth, int delta, + int num_toplevels, int num_stxes, int num_lifts) { if (!SAME_TYPE(scheme_toplevel_type, SCHEME_TYPE(expr))) scheme_ill_formed_code(port); - scheme_validate_expr(port, expr, stack, depth, delta, delta, num_toplevels, num_stxes); + scheme_validate_expr(port, expr, stack, ht, tls, + depth, delta, delta, + num_toplevels, num_stxes, num_lifts, + NULL, 0); } void scheme_validate_boxenv(int p, Mz_CPort *port, char *stack, int depth, int delta) diff --git a/src/mzscheme/src/fun.c b/src/mzscheme/src/fun.c index e5d401fb0b..55a8c5b257 100644 --- a/src/mzscheme/src/fun.c +++ b/src/mzscheme/src/fun.c @@ -677,10 +677,10 @@ scheme_make_closure(Scheme_Thread *p, Scheme_Object *code, int close) data = (Scheme_Closure_Data *)code; #ifdef MZ_USE_JIT - if (data->native_code) { + if (data->u.native_code) { Scheme_Object *nc; - nc = scheme_make_native_closure(data->native_code); + nc = scheme_make_native_closure(data->u.native_code); if (close) { runstack = MZ_RUNSTACK; @@ -722,31 +722,53 @@ scheme_make_closure(Scheme_Thread *p, Scheme_Object *code, int close) return (Scheme_Object *)closure; } +Scheme_Closure *scheme_malloc_empty_closure() +{ + Scheme_Closure *cl; + + cl = (Scheme_Closure *)scheme_malloc_tagged(sizeof(Scheme_Closure) - sizeof(Scheme_Object *)); + cl->so.type = scheme_closure_type; + + return cl; +} + Scheme_Object *scheme_jit_closure(Scheme_Object *code, Scheme_Object *context) /* If lr is supplied as a letrec binding this closure, it may be used for JIT compilation. */ { #ifdef MZ_USE_JIT - Scheme_Closure_Data *data = (Scheme_Closure_Data *)code; - - if (!data->native_code) { + Scheme_Closure_Data *data = (Scheme_Closure_Data *)code, *data2; + + /* We need to cache clones to support multiple references + to a zero-sized closure in bytecode. We need either a clone + or native code, and context determines which field is releveant, + so we put the two possibilities in a union `u'. */ + + if (!context) + data2 = data->u.jit_clone; + else + data2 = NULL; + + if (!data2) { Scheme_Native_Closure_Data *ndata; - data = MALLOC_ONE_TAGGED(Scheme_Closure_Data); - memcpy(data, code, sizeof(Scheme_Closure_Data)); + data2 = MALLOC_ONE_TAGGED(Scheme_Closure_Data); + memcpy(data2, code, sizeof(Scheme_Closure_Data)); - data->context = context; + data2->context = context; - ndata = scheme_generate_lambda(data, 1, NULL); - data->native_code = ndata; + ndata = scheme_generate_lambda(data2, 1, NULL); + data2->u.native_code = ndata; + + if (!context) + data->u.jit_clone = data2; + } - /* If it's zero-sized, then create closure now */ - if (!data->closure_size) { - return scheme_make_native_closure(ndata); - } + /* If it's zero-sized, then create closure now */ + if (!data2->closure_size) + return scheme_make_native_closure(data2->u.native_code); - return (Scheme_Object *)data; - } + return (Scheme_Object *)data2; #endif return code; @@ -800,11 +822,6 @@ scheme_optimize_closure_compilation(Scheme_Object *_data, Optimize_Info *info) data->closure_size = (cl->base_closure_size + (cl->has_tl ? 1 : 0)); - info->max_let_depth += data->num_params + data->closure_size; - data->max_let_depth = info->max_let_depth; - - info->max_let_depth = 0; /* So it doesn't propagate outward */ - scheme_optimize_info_done(info); return (Scheme_Object *)data; @@ -839,6 +856,17 @@ Scheme_Object *scheme_clone_closure_compilation(Scheme_Object *_data, Optimize_I return (Scheme_Object *)data2; } +Scheme_Object *scheme_shift_closure_compilation(Scheme_Object *_data, int delta, int after_depth) +{ + Scheme_Object *expr; + Scheme_Closure_Data *data = (Scheme_Closure_Data *)_data; + + expr = scheme_optimize_shift(data->code, delta, after_depth + data->num_params); + data->code = expr; + + return _data; +} + int scheme_closure_body_size(Scheme_Closure_Data *data, int check_assign) { int i; @@ -861,47 +889,225 @@ int scheme_closure_body_size(Scheme_Closure_Data *data, int check_assign) return cl->body_size; } +int scheme_closure_has_top_level(Scheme_Closure_Data *data) +{ + Closure_Info *cl; + + cl = (Closure_Info *)data->closure_map; + + return cl->has_tl; +} + int scheme_closure_argument_flags(Scheme_Closure_Data *data, int i) { return ((Closure_Info *)data->closure_map)->local_flags[i]; } +XFORM_NONGCING static int boxmap_size(int n) +{ + return (n + (BITS_PER_MZSHORT - 1)) / BITS_PER_MZSHORT; +} + +static mzshort *allocate_boxmap(int n) +{ + mzshort *boxmap; + int size; + + size = boxmap_size(n); + boxmap = MALLOC_N_ATOMIC(mzshort, size); + memset(boxmap, 0, size * sizeof(mzshort)); + + return boxmap; +} + +XFORM_NONGCING static void boxmap_set(mzshort *boxmap, int j) +{ + boxmap[j / BITS_PER_MZSHORT] |= ((mzshort)1 << (j & (BITS_PER_MZSHORT - 1))); +} + +XFORM_NONGCING static int boxmap_get(mzshort *boxmap, int j) +{ + if (boxmap[j / BITS_PER_MZSHORT] & ((mzshort)1 << (j & (BITS_PER_MZSHORT - 1)))) + return 1; + else + return 0; +} + Scheme_Object * -scheme_resolve_closure_compilation(Scheme_Object *_data, Resolve_Info *info) +scheme_resolve_closure_compilation(Scheme_Object *_data, Resolve_Info *info, + int can_lift, int convert, int just_compute_lift, + Scheme_Object *precomputed_lift) { Scheme_Closure_Data *data; - int i, closure_size, offset, np, orig_first_flag; + int i, closure_size, offset, np, num_params; + int has_tl, convert_size, need_lift; mzshort *oldpos, *closure_map; Closure_Info *cl; Resolve_Info *new_info; + Scheme_Object *lifted, *result, *lifteds = NULL; + Scheme_Hash_Table *captured = NULL; + mzshort *convert_map, *convert_boxes = NULL; data = (Scheme_Closure_Data *)_data; cl = (Closure_Info *)data->closure_map; - data->iso.so.type = scheme_unclosed_procedure_type; + if (!just_compute_lift) + data->iso.so.type = scheme_unclosed_procedure_type; - /* Set local_flags: */ - orig_first_flag = (data->num_params ? cl->local_flags[0] : 0); - for (i = 0; i < data->num_params; i++) { - if (cl->local_flags[i] & SCHEME_WAS_SET_BANGED) - cl->local_flags[i] = SCHEME_INFO_BOXED; - else - cl->local_flags[i] = 0; + if (convert || can_lift) { + if (!scheme_resolving_in_procedure(info)) { + convert = 0; + can_lift = 0; + } } + /* We have to perform a small bit of constant propagation here. + Procedures closed only over top-level bindings are lifted during + this pass. Some of the captured bindings from this phase may + refer to a lifted procedure. In that case, we can replace the + lexical reference with a direct reference to the top-level + binding, which means that we can drop the binding from the + closure. */ + closure_size = data->closure_size; closure_map = (mzshort *)scheme_malloc_atomic(sizeof(mzshort) * closure_size); + has_tl = cl->has_tl; + /* Locals in closure are first: */ oldpos = cl->base_closure_map; - for (i = cl->base_closure_size; i--; ) { - int li; - li = scheme_resolve_info_lookup(info, oldpos[i], NULL); - closure_map[i] = li; + offset = 0; + for (i = 0; i < cl->base_closure_size; i++) { + int li, flags; + li = scheme_resolve_info_lookup(info, oldpos[i], &flags, &lifted, 0); + if (lifted) { + /* Drop lifted binding from closure. */ + if (SAME_TYPE(SCHEME_TYPE(lifted), scheme_toplevel_type) + || SAME_TYPE(SCHEME_TYPE(SCHEME_CAR(lifted)), scheme_toplevel_type)) + has_tl = 1; + /* If the lifted binding is for a converted closure, + we may need to add more bindings to this closure. */ + if (SCHEME_RPAIRP(lifted)) { + lifteds = scheme_make_raw_pair(lifted, lifteds); + } + } else { + closure_map[offset] = li; + if (convert && (flags & SCHEME_INFO_BOXED)) { + /* The only problem with a boxed variable is that + it's more difficult to validate. We have to track + which arguments are boxes. And the resulting procedure + must be used only in application positions. */ + if (!convert_boxes) + convert_boxes = allocate_boxmap(cl->base_closure_size); + boxmap_set(convert_boxes, offset); + } + offset++; + } + } + + /* Add bindings introduced by closure conversion. The `captured' + table maps old positions to new positions. */ + while (lifteds) { + int j, cnt, boxed; + Scheme_Object *vec, *loc; + + if (!captured) { + captured = scheme_make_hash_table(SCHEME_hash_ptr); + for (i = 0; i < offset; i++) { + int cp; + cp = i; + if (convert_boxes && boxmap_get(convert_boxes, i)) + cp = -(cp + 1); + scheme_hash_set(captured, scheme_make_integer(closure_map[i]), scheme_make_integer(cp)); + } + } + + lifted = SCHEME_CAR(lifteds); + vec = SCHEME_CDR(lifted); + cnt = SCHEME_VEC_SIZE(vec); + --cnt; + for (j = 0; j < cnt; j++) { + loc = SCHEME_VEC_ELS(vec)[j+1]; + if (SCHEME_BOXP(loc)) { + loc = SCHEME_BOX_VAL(loc); + boxed = 1; + } else + boxed = 0; + i = SCHEME_LOCAL_POS(loc); + if (!scheme_hash_get(captured, scheme_make_integer(i))) { + /* Need to capture an extra binding: */ + int cp; + cp = captured->count; + if (boxed) + cp = -(cp + 1); + scheme_hash_set(captured, scheme_make_integer(i), scheme_make_integer(cp)); + } + } + + lifteds = SCHEME_CDR(lifteds); + } + + if (captured && (captured->count > offset)) { + /* We need to extend the closure map. All the info + is in captured, so just build it from scratch. */ + int old_pos, j; + closure_map = (mzshort *)scheme_malloc_atomic(sizeof(mzshort) * (captured->count + (has_tl ? 1 : 0))); + offset = captured->count; + convert_boxes = NULL; + for (j = captured->size; j--; ) { + if (captured->vals[j]) { + int cp; + cp = SCHEME_INT_VAL(captured->vals[j]); + old_pos = SCHEME_INT_VAL(captured->keys[j]); + if (cp < 0) { + /* Boxed */ + cp = -(cp + 1); + if (!convert_boxes) + convert_boxes = allocate_boxmap(offset); + boxmap_set(convert_boxes, cp); + } + closure_map[cp] = old_pos; + } + } + } + + if (convert + && (offset || !has_tl) /* either need args, or treat as convert becasue it's fully closed */ + ) { + /* Take over closure_map to be the convert map, instead. */ + int new_boxes_size; + + convert_map = closure_map; + convert_size = offset; + + if (convert_boxes) + new_boxes_size = boxmap_size(convert_size + data->num_params); + else + new_boxes_size = 0; + + if (has_tl || convert_boxes) { + int sz; + sz = ((has_tl ? sizeof(mzshort) : 0) + new_boxes_size * sizeof(mzshort)); + closure_map = (mzshort *)scheme_malloc_atomic(sz); + memset(closure_map, 0, sz); + if (convert_boxes) { + int bsz; + bsz = boxmap_size(convert_size); + memcpy(closure_map XFORM_OK_PLUS (has_tl ? 1 : 0), + convert_boxes, + bsz * sizeof(mzshort)); + } + } else + closure_map = NULL; + offset = 0; + } else { + convert = 0; + convert_map = NULL; + convert_size = 0; + convert_boxes = NULL; } /* Then the pointer to globals, if any: */ - offset = cl->base_closure_size; - if (cl->has_tl) { + if (has_tl) { /* GLOBAL ASSUMPTION: jit.c assumes that the array of globals is the last item in the closure; grep for "GLOBAL ASSUMPTION" in jit.c */ @@ -911,68 +1117,211 @@ scheme_resolve_closure_compilation(Scheme_Object *_data, Resolve_Info *info) offset++; } - /* Set up mappng from old locations on the stack (as if bodies were - evaluated immediately) to new locations (where closures - effectively shift and compact values on the stack): */ + /* Reset closure_size, in case a lifted variable was removed: */ + closure_size = offset; + if (!just_compute_lift) { + data->closure_size = closure_size; + if (convert && convert_boxes) + SCHEME_CLOSURE_DATA_FLAGS(data) |= CLOS_HAS_REF_ARGS; + } - np = data->num_params; + /* Set up environment mapping, initialized for arguments: */ + + np = num_params = data->num_params; if ((data->num_params == 1) && (SCHEME_CLOSURE_DATA_FLAGS(data) & CLOS_HAS_REST) - && !(orig_first_flag & SCHEME_WAS_USED)) { + && !(cl->local_flags[0] & SCHEME_WAS_USED)) { /* (lambda args E) where args is not in E => drop the argument */ new_info = scheme_resolve_info_extend(info, 0, 1, cl->base_closure_size); - data->num_params = 0; + num_params = 0; + if (!just_compute_lift) + data->num_params = 0; } else { new_info = scheme_resolve_info_extend(info, data->num_params, data->num_params, cl->base_closure_size + data->num_params); for (i = 0; i < data->num_params; i++) { - scheme_resolve_info_add_mapping(new_info, i, i + closure_size, - cl->local_flags[i]); + scheme_resolve_info_add_mapping(new_info, i, i + closure_size + convert_size, + ((cl->local_flags[i] & SCHEME_WAS_SET_BANGED) + ? SCHEME_INFO_BOXED + : 0), + NULL); } } + + /* Extend mapping to go from old locations on the stack (as if bodies were + evaluated immediately) to new locations (where closures + effectively shift and compact values on the stack). + + We don't have to include bindings added because an oiriginal + binding was lifted (i.e., the extra bindings in `captured'), + because they don't appear in the body. Instead, they are + introduced directly in resolved form through the `lifted' info. + That means, though, that we need to transform the `lifted' + mapping. */ + if (has_tl && convert) { + /* Skip handle for globals */ + offset = 1; + } else { + offset = 0; + } for (i = 0; i < cl->base_closure_size; i++) { - int p = oldpos[i]; + int p = oldpos[i], flags; if (p < 0) p -= np; else p += np; - scheme_resolve_info_add_mapping(new_info, p, i, - scheme_resolve_info_flags(info, oldpos[i])); + flags = scheme_resolve_info_flags(info, oldpos[i], &lifted); + + if (lifted && SCHEME_RPAIRP(lifted)) { + /* Convert from a vector of local references to an array of + positions. */ + Scheme_Object *vec, *loc, **ca; + mzshort *cmap, *boxmap = NULL; + int sz, j, cp; + + vec = SCHEME_CDR(lifted); + sz = SCHEME_VEC_SIZE(vec); + --sz; + cmap = MALLOC_N_ATOMIC(mzshort, sz); + for (j = 0; j < sz; j++) { + loc = SCHEME_VEC_ELS(vec)[j+1]; + if (SCHEME_BOXP(loc)) { + if (!boxmap) + boxmap = allocate_boxmap(sz); + boxmap_set(boxmap, j); + loc = SCHEME_BOX_VAL(loc); + } + loc = scheme_hash_get(captured, scheme_make_integer(SCHEME_LOCAL_POS(loc))); + cp = SCHEME_INT_VAL(loc); + if (cp < 0) + cp = -(cp + 1); + cmap[j] = cp + (has_tl && convert ? 1 : 0); + } + + ca = MALLOC_N(Scheme_Object *, 4); + ca[0] = scheme_make_integer(sz); + ca[1] = (Scheme_Object *)cmap; + ca[2] = SCHEME_VEC_ELS(vec)[0]; + ca[3] = (Scheme_Object *)boxmap; + + lifted = scheme_make_raw_pair(SCHEME_CAR(lifted), (Scheme_Object *)ca); + } + + scheme_resolve_info_add_mapping(new_info, p, lifted ? 0 : offset++, flags, lifted); + } + if (has_tl) { + if (convert) + offset = 0; /* other closure elements converted to arguments */ + else + offset = closure_size - 1; + scheme_resolve_info_set_toplevel_pos(new_info, offset); } - if (cl->has_tl) - scheme_resolve_info_set_toplevel_pos(new_info, cl->base_closure_size); - data->closure_map = closure_map; + if (!just_compute_lift) + data->closure_map = closure_map; - { + new_info->in_proc = 1; + + if (!just_compute_lift) { Scheme_Object *code; code = scheme_resolve_expr(data->code, new_info); data->code = code; - } - /* Add code to box set!ed argument variables: */ - for (i = 0; i < data->num_params; i++) { - if (cl->local_flags[i] & SCHEME_INFO_BOXED) { - int j = i + closure_size; - Scheme_Object *code; + data->max_let_depth = (new_info->max_let_depth + + num_params + + closure_size + + convert_size); - code = scheme_make_syntax_resolved(BOXENV_EXPD, - scheme_make_pair(scheme_make_integer(j), - data->code)); - data->code = code; + /* Add code to box set!ed argument variables: */ + for (i = 0; i < num_params; i++) { + if (cl->local_flags[i] & SCHEME_WAS_SET_BANGED) { + int j = i + closure_size + convert_size; + Scheme_Object *bcode; + + bcode = scheme_make_syntax_resolved(BOXENV_EXPD, + scheme_make_pair(scheme_make_integer(j), + data->code)); + data->code = bcode; + } } + + if (SCHEME_TYPE(data->code) > _scheme_compiled_values_types_) + SCHEME_CLOSURE_DATA_FLAGS(data) |= CLOS_FOLDABLE; } - if (SCHEME_TYPE(data->code) > _scheme_compiled_values_types_) - SCHEME_CLOSURE_DATA_FLAGS(data) |= CLOS_FOLDABLE; + if ((closure_size == 1) + && can_lift + && has_tl + && info->lifts) { + need_lift = 1; + } else + need_lift = 0; + + if (convert) { + num_params += convert_size; + if (!just_compute_lift) + data->num_params = num_params; + } /* If the closure is empty, create the closure now */ - if (!data->closure_size) - return scheme_make_closure(NULL, (Scheme_Object *)data, 1); - else - return (Scheme_Object *)data; + if (!closure_size) { + if (precomputed_lift) { + result = SCHEME_CAR(precomputed_lift); + ((Scheme_Closure *)result)->code = data; + } else + result = scheme_make_closure(NULL, (Scheme_Object *)data, 0); + } else + result = (Scheme_Object *)data; + + if (need_lift) { + if (just_compute_lift) { + if (just_compute_lift > 1) + result = scheme_resolve_invent_toplevel(info); + else + result = scheme_resolve_generate_stub_lift(); + } else { + Scheme_Object *tl, *defn_tl; + if (precomputed_lift) { + tl = precomputed_lift; + if (SCHEME_RPAIRP(tl)) + tl = SCHEME_CAR(tl); + } else { + tl = scheme_resolve_invent_toplevel(info); + } + defn_tl = scheme_resolve_invented_toplevel_to_defn(info, tl); + scheme_resolve_lift_definition(info, defn_tl, result); + if (has_tl) + closure_map[0] = 0; /* globals for closure creation will be at 0 after lifting */ + result = tl; + } + } + + if (convert) { + Scheme_Object **ca, *arity; + + if ((SCHEME_CLOSURE_DATA_FLAGS(data) & CLOS_HAS_REST)) { + arity = scheme_box(scheme_make_integer(num_params - convert_size - 1)); + } else { + arity = scheme_make_integer(num_params - convert_size); + } + + ca = MALLOC_N(Scheme_Object *, 4); + ca[0] = scheme_make_integer(convert_size); + ca[1] = (Scheme_Object *)convert_map; + ca[2] = arity; + ca[3] = (Scheme_Object *)convert_boxes; + + if (precomputed_lift) { + SCHEME_CAR(precomputed_lift) = result; + SCHEME_CDR(precomputed_lift) = (Scheme_Object *)ca; + result = precomputed_lift; + } else + result = scheme_make_raw_pair(result, (Scheme_Object *)ca); + } + + return result; } Scheme_Object *scheme_source_to_name(Scheme_Object *code) @@ -4950,7 +5299,8 @@ scheme_default_prompt_read_handler(int argc, Scheme_Object *argv[]) static Scheme_Object *write_compiled_closure(Scheme_Object *obj) { Scheme_Closure_Data *data; - Scheme_Object *name; + Scheme_Object *name, *l; + int svec_size; data = (Scheme_Closure_Data *)obj; @@ -4972,13 +5322,24 @@ static Scheme_Object *write_compiled_closure(Scheme_Object *obj) name = scheme_null; } + svec_size = data->closure_size; + if (SCHEME_CLOSURE_DATA_FLAGS(data) & CLOS_HAS_REF_ARGS) { + svec_size += (data->num_params + BITS_PER_MZSHORT - 1) / BITS_PER_MZSHORT; + } + + l = CONS(scheme_make_svector(svec_size, + data->closure_map), + scheme_protect_quote(data->code)); + + if (SCHEME_CLOSURE_DATA_FLAGS(data) & CLOS_HAS_REF_ARGS) + l = CONS(scheme_make_integer(data->closure_size), + l); + return CONS(scheme_make_integer(SCHEME_CLOSURE_DATA_FLAGS(data)), CONS(scheme_make_integer(data->num_params), CONS(scheme_make_integer(data->max_let_depth), CONS(name, - CONS(scheme_make_svector(data->closure_size, - data->closure_map), - scheme_protect_quote(data->code)))))); + l)))); } static Scheme_Object *read_compiled_closure(Scheme_Object *obj) @@ -5016,13 +5377,23 @@ static Scheme_Object *read_compiled_closure(Scheme_Object *obj) if (!SCHEME_PAIRP(obj)) return NULL; v = SCHEME_CAR(obj); obj = SCHEME_CDR(obj); - /* v is an svector */ + + /* v is an svector or an integer... */ + if (SCHEME_CLOSURE_DATA_FLAGS(data) & CLOS_HAS_REF_ARGS) { + if (!SCHEME_INTP(v)) return NULL; + data->closure_size = SCHEME_INT_VAL(v); + + if (!SCHEME_PAIRP(obj)) return NULL; + v = SCHEME_CAR(obj); + obj = SCHEME_CDR(obj); + } data->code = obj; if (!SAME_TYPE(scheme_svector_type, SCHEME_TYPE(v))) return NULL; - data->closure_size = SCHEME_SVEC_LEN(v); + if (!(SCHEME_CLOSURE_DATA_FLAGS(data) & CLOS_HAS_REF_ARGS)) + data->closure_size = SCHEME_SVEC_LEN(v); data->closure_map = SCHEME_SVEC_VEC(v); if (SCHEME_CLOSURE_DATA_FLAGS(data) & CLOS_FOLDABLE) @@ -5031,7 +5402,7 @@ static Scheme_Object *read_compiled_closure(Scheme_Object *obj) if (SCHEME_TYPE(data->code) > _scheme_values_types_) SCHEME_CLOSURE_DATA_FLAGS(data) |= CLOS_FOLDABLE; - /* If the closure is empty, create the closure now */ + /* If the closure is empty, create the closure now */ if (!data->closure_size) return scheme_make_closure(NULL, (Scheme_Object *)data, 0); else diff --git a/src/mzscheme/src/jit.c b/src/mzscheme/src/jit.c index 979175abf5..bbbdff011a 100644 --- a/src/mzscheme/src/jit.c +++ b/src/mzscheme/src/jit.c @@ -25,19 +25,15 @@ 2) Use jit_patchable_movi_p() when a constant needs to be visible to the GC. - 3) Immediate operands (not counting moves into registers) - must be 32-bit values on a 64-bit machine. + 3) Immediate operands must be 32-bit values on x86_64, except with + jit_movi, jit_sti, jit_ld, jit_bXi, jit_calli, and jit_finishi. 4) Function calls are limited to 3 arguments (i.e., jit_prepare() must never be called with a number greater than 3). This limit is related to the way the x86_64 port shuffles arguments into temporary registers. - 5) jit_ldi_X() and jit_sti_X() addresses must fit into 32 bits. - Currently, the code below assumes that global variables are in - the 32-bit address range. - - 6) On x86_64, arguments are delivered in JIT_V2, JIT_V3, and JIT_R2, + 5) On x86_64, arguments are delivered in JIT_V2, JIT_V3, and JIT_R2, in that order. So don't set JIT_R2 before getting the third argument, etc. */ @@ -91,7 +87,7 @@ Fix me! See use. #endif #define MAX_SHARED_CALL_RANDS 25 -static void *shared_tail_code[3][MAX_SHARED_CALL_RANDS]; +static void *shared_tail_code[4][MAX_SHARED_CALL_RANDS]; static void *shared_non_tail_code[3][MAX_SHARED_CALL_RANDS][2]; #define MAX_SHARED_ARITY_CHECK 25 @@ -124,7 +120,8 @@ typedef struct { GC_CAN_IGNORE jit_state js; char *limit; int extra_pushed, max_extra_pushed; - int depth, max_depth; + int depth; /* the position of the closure's first arg on the stack */ + int max_depth; int *mappings; /* For each element, case 0x1 bit: . 0 -> case 0x2 bit: @@ -141,6 +138,7 @@ typedef struct { int self_pos, self_closure_size, self_toplevel_pos; void *self_restart_code; Scheme_Native_Closure *nc; + Scheme_Closure_Data *self_data; } mz_jit_state; typedef int (*Native_Check_Arity_Proc)(Scheme_Object *o, int argc, int dummy); @@ -198,12 +196,32 @@ typedef struct { #define STACK_CACHE_SIZE 32 static Stack_Cache_Elem stack_cache_stack[STACK_CACHE_SIZE]; -int stack_cache_stack_pos = 0; +long stack_cache_stack_pos = 0; #define IS_NAMED_PRIM(p, nm) (!strcmp(((Scheme_Primitive_Proc *)p)->name, nm)) #include "codetab.inc" +static Scheme_Object **fixup_runstack_base; +static int fixup_already_in_place; + +static Scheme_Object *_scheme_tail_apply_from_native_fixup_args(Scheme_Object *rator, + int argc, + Scheme_Object **argv) +{ + int already = fixup_already_in_place, i; + Scheme_Object **base; + + base = fixup_runstack_base XFORM_OK_MINUS argc XFORM_OK_MINUS already; + + /* Need to shift argc to end of base: */ + for (i = 0; i < argc; i++) { + base[already + i] = argv[i]; + } + + return _scheme_tail_apply_from_native(rator, argc + already, base); +} + /*========================================================================*/ /* JIT buffer */ /*========================================================================*/ @@ -1179,14 +1197,23 @@ static int generate_tail_call(mz_jit_state *jitter, int num_rands, int direct_na #endif /* Copy args to runstack base: */ - jit_subi_p(JIT_R2, JIT_RUNSTACK_BASE, WORDS_TO_BYTES(num_rands)); - for (i = num_rands; i--; ) { - jit_ldxi_p(JIT_R1, JIT_RUNSTACK, WORDS_TO_BYTES(i)); - jit_stxi_p(WORDS_TO_BYTES(i), JIT_R2, JIT_R1); - CHECK_LIMIT(); + if (num_rands) { + jit_subi_p(JIT_R2, JIT_RUNSTACK_BASE, WORDS_TO_BYTES(num_rands)); + for (i = num_rands; i--; ) { + jit_ldxi_p(JIT_R1, JIT_RUNSTACK, WORDS_TO_BYTES(i)); + jit_stxi_p(WORDS_TO_BYTES(i), JIT_R2, JIT_R1); + CHECK_LIMIT(); + } + jit_movr_p(JIT_RUNSTACK, JIT_R2); + } else { + jit_movr_p(JIT_RUNSTACK, JIT_RUNSTACK_BASE); } - jit_movr_p(JIT_RUNSTACK, JIT_R2); - + if (direct_native > 1) { /* => some_args_already_in_place */ + mz_get_local_p(JIT_R1, JIT_LOCAL2); + jit_lshi_l(JIT_R1, JIT_R1, JIT_LOG_WORD_SIZE); + jit_subr_p(JIT_RUNSTACK, JIT_RUNSTACK, JIT_R1); + } + /* Extract function and data: */ jit_movr_p(JIT_R2, JIT_V1); if (direct_native) { @@ -1197,6 +1224,10 @@ static int generate_tail_call(mz_jit_state *jitter, int num_rands, int direct_na /* Set up arguments; JIT_RUNSTACK and JIT_RUNSTACK_BASE must also be ready */ jit_movr_p(JIT_R0, JIT_R2); jit_movi_i(JIT_R1, num_rands); + if (direct_native > 1) { /* => some_args_already_in_place */ + mz_get_local_p(JIT_R2, JIT_LOCAL2); + jit_addr_i(JIT_R1, JIT_R1, JIT_R2); + } jit_movr_p(JIT_R2, JIT_RUNSTACK); /* Now jump: */ jit_jmpr(JIT_V1); @@ -1214,13 +1245,24 @@ static int generate_tail_call(mz_jit_state *jitter, int num_rands, int direct_na if (need_set_rs) { JIT_UPDATE_THREAD_RSPTR(); } + if (direct_native > 1) { /* => some_args_already_in_place */ + /* Need to shuffle argument lists. Since we can pass only + three arguments, use static variables for the others. */ + jit_sti_p(&fixup_runstack_base, JIT_RUNSTACK_BASE); + mz_get_local_p(JIT_R1, JIT_LOCAL2); + jit_sti_l(&fixup_already_in_place, JIT_R1); + } jit_movi_i(JIT_R0, num_rands); mz_prepare(3); CHECK_LIMIT(); jit_pusharg_p(JIT_RUNSTACK); jit_pusharg_i(JIT_R0); jit_pusharg_p(JIT_V1); - (void)mz_finish(_scheme_tail_apply_from_native); + if (direct_native > 1) { /* => some_args_already_in_place */ + (void)mz_finish(_scheme_tail_apply_from_native_fixup_args); + } else { + (void)mz_finish(_scheme_tail_apply_from_native); + } /* Pop saved runstack val and return: */ mz_get_local_p(JIT_NOT_RET, JIT_LOCAL1); jit_sti_p(&scheme_current_runstack, JIT_NOT_RET); @@ -1443,7 +1485,8 @@ static int generate_non_tail_call(mz_jit_state *jitter, int num_rands, int direc return 1; } -static int generate_self_tail_call(Scheme_Object *rator, mz_jit_state *jitter, int num_rands, jit_insn *slow_code) +static int generate_self_tail_call(Scheme_Object *rator, mz_jit_state *jitter, int num_rands, jit_insn *slow_code, + int args_already_in_place) { jit_insn *refslow; int i; @@ -1469,12 +1512,12 @@ static int generate_self_tail_call(Scheme_Object *rator, mz_jit_state *jitter, i __END_SHORT_JUMPS__(1); /* Copy args to runstack after closure data: */ - jit_subi_p(JIT_R2, JIT_RUNSTACK_BASE, WORDS_TO_BYTES(num_rands + closure_size)); + jit_subi_p(JIT_R2, JIT_RUNSTACK_BASE, WORDS_TO_BYTES(num_rands + closure_size + args_already_in_place)); if (num_rands) { - jit_stxi_p(WORDS_TO_BYTES(num_rands - 1 + closure_size), JIT_R2, JIT_R0); + jit_stxi_p(WORDS_TO_BYTES(num_rands - 1 + closure_size + args_already_in_place), JIT_R2, JIT_R0); for (i = num_rands - 1; i--; ) { jit_ldxi_p(JIT_R1, JIT_RUNSTACK, WORDS_TO_BYTES(i)); - jit_stxi_p(WORDS_TO_BYTES(i + closure_size), JIT_R2, JIT_R1); + jit_stxi_p(WORDS_TO_BYTES(i + closure_size + args_already_in_place), JIT_R2, JIT_R1); CHECK_LIMIT(); } } @@ -1489,6 +1532,11 @@ static int generate_self_tail_call(Scheme_Object *rator, mz_jit_state *jitter, i mz_patch_branch(refslow); __END_SHORT_JUMPS__(1); + if (args_already_in_place) { + jit_movi_l(JIT_R2, args_already_in_place); + mz_set_local_p(JIT_R2, JIT_LOCAL2); + } + jit_stxi_p(WORDS_TO_BYTES(num_rands - 1), JIT_RUNSTACK, JIT_R0); generate(rator, jitter, 0, 0); CHECK_LIMIT(); @@ -1562,6 +1610,7 @@ static int generate_app(Scheme_App_Rec *app, Scheme_Object **alt_rands, int num_ int proc_already_in_place = 0; Scheme_Object *rator, *v; int reorder_ok = 0; + int args_already_in_place = 0; START_JIT_DATA(); rator = (alt_rands ? alt_rands[0] : app->args[0]); @@ -1617,6 +1666,19 @@ static int generate_app(Scheme_App_Rec *app, Scheme_Object **alt_rands, int num_ } } } + } else if (SAME_TYPE(t, scheme_closure_type)) { + Scheme_Closure_Data *data; + data = ((Scheme_Closure *)rator)->code; + if ((data->num_params == num_rands) + && !(SCHEME_CLOSURE_DATA_FLAGS(data) & CLOS_HAS_REST)) { + direct_native = 1; + + if (is_tail + && SAME_OBJ(data->u.jit_clone, jitter->self_data) + && (num_rands < MAX_SHARED_CALL_RANDS)) + direct_self = 1; + } + reorder_ok = 1; } else if (t > _scheme_values_types_) { /* We can re-order evaluation of the rator. */ reorder_ok = 1; @@ -1626,6 +1688,35 @@ static int generate_app(Scheme_App_Rec *app, Scheme_Object **alt_rands, int num_ reorder_ok = 0; /* superceded by direct_self */ } + /* Direct native tail with same number of args as just received? */ + if (direct_native && is_tail && num_rands + && (num_rands == jitter->self_data->num_params) + && !(SCHEME_CLOSURE_DATA_FLAGS(jitter->self_data) & CLOS_HAS_REST)) { + /* Check whether the actual arguments refer to Scheme-stack + locations that will be filled with argument values; that + is, check how many arguments are already in place for + the call. */ + mz_runstack_skipped(jitter, num_rands); + for (i = 0; i < num_rands; i++) { + v = (alt_rands ? alt_rands[i+1] : app->args[i+1]); + if (SAME_TYPE(SCHEME_TYPE(v), scheme_local_type)) { + int pos; + pos = mz_remap(SCHEME_LOCAL_POS(v)); + if (pos == (jitter->depth + args_already_in_place)) + args_already_in_place++; + else + break; + } else + break; + } + mz_runstack_unskipped(jitter, num_rands); + if (args_already_in_place) { + direct_native = 2; + mz_runstack_skipped(jitter, args_already_in_place); + num_rands -= args_already_in_place; + } + } + if (num_rands) { if (!direct_prim || (num_rands > 1)) { jit_subi_p(JIT_RUNSTACK, JIT_RUNSTACK, WORDS_TO_BYTES(num_rands)); @@ -1635,7 +1726,7 @@ static int generate_app(Scheme_App_Rec *app, Scheme_Object **alt_rands, int num_ } } - for (i = 0; i <= num_rands; i++) { + for (i = num_rands + args_already_in_place + 1; i--; ) { v = (alt_rands ? alt_rands[i] : app->args[i]); if (!is_simple(v, INIT_SIMPLE_DEPTH, 1, jitter)) { need_non_tail = 1; @@ -1656,7 +1747,9 @@ static int generate_app(Scheme_App_Rec *app, Scheme_Object **alt_rands, int num_ if (num_rands) { /* Save rator where GC can see it */ Scheme_Type t; - t = SCHEME_TYPE(alt_rands ? alt_rands[1] : app->args[1]); + t = SCHEME_TYPE((alt_rands + ? alt_rands[1+args_already_in_place] + : app->args[1+args_already_in_place])); if ((num_rands == 1) && (SAME_TYPE(scheme_local_type, t) || (t >= _scheme_values_types_))) { /* App of something complex to a local variable. We @@ -1672,7 +1765,10 @@ static int generate_app(Scheme_App_Rec *app, Scheme_Object **alt_rands, int num_ for (i = 0; i < num_rands; i++) { PAUSE_JIT_DATA(); - generate_non_tail(alt_rands ? alt_rands[i+1] : app->args[i+1], jitter, 0, !need_non_tail); + generate_non_tail((alt_rands + ? alt_rands[i+1+args_already_in_place] + : app->args[i+1+args_already_in_place]), + jitter, 0, !need_non_tail); RESUME_JIT_DATA(); CHECK_LIMIT(); if ((i == num_rands - 1) && !direct_prim && !reorder_ok && !direct_self && !proc_already_in_place) { @@ -1711,10 +1807,15 @@ static int generate_app(Scheme_App_Rec *app, Scheme_Object **alt_rands, int num_ if (num_rands >= MAX_SHARED_CALL_RANDS) { if (is_tail) { - if (direct_prim) - generate_direct_prim_tail_call(jitter, num_rands); - else + if (direct_prim) { + generate_direct_prim_tail_call(jitter, num_rands); + } else { + if (args_already_in_place) { + jit_movi_l(JIT_R2, args_already_in_place); + mz_set_local_p(JIT_R2, JIT_LOCAL2); + } generate_tail_call(jitter, num_rands, direct_native, jitter->need_set_rs); + } } else { if (direct_prim) generate_direct_prim_non_tail_call(jitter, num_rands, multi_ok, 0); @@ -1724,7 +1825,7 @@ static int generate_app(Scheme_App_Rec *app, Scheme_Object **alt_rands, int num_ } else { /* Jump to code to implement a tail call for num_rands arguments */ void *code; - int dp = (direct_prim ? 1 : (direct_native ? 2 : 0)); + int dp = (direct_prim ? 1 : (direct_native ? (1 + direct_native) : 0)); if (is_tail) { if (!shared_tail_code[dp][num_rands]) { code = generate_shared_call(num_rands, jitter, multi_ok, is_tail, direct_prim, direct_native); @@ -1732,9 +1833,13 @@ static int generate_app(Scheme_App_Rec *app, Scheme_Object **alt_rands, int num_ } code = shared_tail_code[dp][num_rands]; if (direct_self) { - generate_self_tail_call(rator, jitter, num_rands, code); + generate_self_tail_call(rator, jitter, num_rands, code, args_already_in_place); CHECK_LIMIT(); } else { + if (args_already_in_place) { + jit_movi_l(JIT_R2, args_already_in_place); + mz_set_local_p(JIT_R2, JIT_LOCAL2); + } (void)jit_jmpi(code); } } else { @@ -2800,10 +2905,10 @@ int generate_inlined_test(mz_jit_state *jitter, Scheme_Object *obj, int branch_s static void ensure_closure_native(Scheme_Closure_Data *data, Scheme_Native_Closure_Data *case_lam) { - if (!data->native_code || SCHEME_FALSEP((Scheme_Object *)data->native_code)) { + if (!data->u.native_code || SCHEME_FALSEP((Scheme_Object *)data->u.native_code)) { Scheme_Native_Closure_Data *code; code = scheme_generate_lambda(data, 0, case_lam); - data->native_code = code; + data->u.native_code = code; } } @@ -2814,7 +2919,7 @@ static int generate_closure(Scheme_Closure_Data *data, int retptr; ensure_closure_native(data, NULL); - code = data->native_code; + code = data->u.native_code; JIT_UPDATE_THREAD_RSPTR_IF_NEEDED(); mz_prepare(1); @@ -2873,8 +2978,8 @@ Scheme_Native_Closure_Data *scheme_generate_case_lambda(Scheme_Case_Lambda *c) o = (Scheme_Object *)((Scheme_Closure *)o)->code; data = (Scheme_Closure_Data *)o; ensure_closure_native(data, ndata); - if (data->native_code->max_let_depth > max_let_depth) - max_let_depth = data->native_code->max_let_depth; + if (data->u.native_code->max_let_depth > max_let_depth) + max_let_depth = data->u.native_code->max_let_depth; } ndata->max_let_depth = max_let_depth; ndata->closure_size = -(count + 1); /* Indicates case-lambda */ @@ -4206,9 +4311,9 @@ static int do_generate_common(mz_jit_state *jitter, void *_data) jit_movr_p(JIT_R(3), JIT_AUX); #endif /* Decrement stack_cache_stack_pos */ - jit_ldi_i(JIT_R1, &stack_cache_stack_pos); + jit_ldi_l(JIT_R1, &stack_cache_stack_pos); jit_subi_i(JIT_R2, JIT_R1, 1); - jit_sti_p(&stack_cache_stack_pos, JIT_R2); + jit_sti_l(&stack_cache_stack_pos, JIT_R2); CHECK_LIMIT(); /* Extract old return address and jump to it */ jit_lshi_l(JIT_R1, JIT_R1, (JIT_LOG_WORD_SIZE + 2)); @@ -4816,6 +4921,8 @@ static int do_generate_closure(mz_jit_state *jitter, void *_data) LOG_IT(("PROC: %s\n", (data->name ? scheme_format_utf8("~s", 2, 1, &data->name, NULL) : "???"))); FOR_LOG(jitter->log_depth++); + jitter->self_data = data; + jitter->self_restart_code = jit_get_ip().ptr; /* Generate code for the body: */ @@ -4856,14 +4963,14 @@ static void on_demand_generate_lambda(Scheme_Native_Closure *nc) int has_rest, is_method, num_params, max_depth; data = ndata->u2.orig_code; - + gdata.data = data; gdata.nc = nc; generate_one(NULL, do_generate_closure, &gdata, 1, data->name, ndata); if (gdata.max_depth > data->max_let_depth) { - scheme_console_printf("Bad max depth!\n"); + scheme_console_printf("Bad max depth! Given %d, counted %d.\n", data->max_let_depth, gdata.max_depth); abort(); } @@ -4904,7 +5011,7 @@ static void on_demand_generate_lambda(Scheme_Native_Closure *nc) if (case_lam->max_let_depth < max_depth) case_lam->max_let_depth = max_depth; } - + ndata->code = code; ndata->u.tail_code = tail_code; ndata->arity_code = arity_code; diff --git a/src/mzscheme/src/module.c b/src/mzscheme/src/module.c index c6692975e3..fca3b0faa8 100644 --- a/src/mzscheme/src/module.c +++ b/src/mzscheme/src/module.c @@ -78,10 +78,12 @@ static Scheme_Object *module_resolve(Scheme_Object *data, Resolve_Info *info); static Scheme_Object *top_level_require_optimize(Scheme_Object *data, Optimize_Info *info); static Scheme_Object *top_level_require_resolve(Scheme_Object *data, Resolve_Info *info); -static void module_validate(Scheme_Object *data, Mz_CPort *port, char *stack, int depth, int letlimit, int delta, - int num_toplevels, int num_stxes); -static void top_level_require_validate(Scheme_Object *data, Mz_CPort *port, char *stack, int depth, int letlimit, int delta, - int num_toplevels, int num_stxes); +static void module_validate(Scheme_Object *data, Mz_CPort *port, char *stack, Scheme_Hash_Table *ht, + int depth, int letlimit, int delta, + int num_toplevels, int num_stxes, int num_lifts); +static void top_level_require_validate(Scheme_Object *data, Mz_CPort *port, char *stack, Scheme_Hash_Table *ht, + int depth, int letlimit, int delta, + int num_toplevels, int num_stxes, int num_lifts); static Scheme_Object *write_module(Scheme_Object *obj); static Scheme_Object *read_module(Scheme_Object *obj); @@ -202,12 +204,12 @@ void scheme_init_module(Scheme_Env *env) module_optimize, module_resolve, module_validate, module_execute, module_jit, - NULL, -1); + NULL, NULL, -1); scheme_register_syntax(REQUIRE_EXPD, top_level_require_optimize, top_level_require_resolve, top_level_require_validate, top_level_require_execute, top_level_require_jit, - NULL, 2); + NULL, NULL, 2); scheme_add_global_keyword("module", scheme_make_compiled_syntax(module_syntax, @@ -3145,9 +3147,9 @@ static Scheme_Object *module_jit(Scheme_Object *data) return (Scheme_Object *)m; } -static void module_validate(Scheme_Object *data, Mz_CPort *port, char *stack, +static void module_validate(Scheme_Object *data, Mz_CPort *port, char *stack, Scheme_Hash_Table *ht, int depth, int letlimit, int delta, - int num_toplevels, int num_stxes) + int num_toplevels, int num_stxes, int num_lifts) { Scheme_Module *m; Scheme_Object *l; @@ -3161,8 +3163,8 @@ static void module_validate(Scheme_Object *data, Mz_CPort *port, char *stack, scheme_ill_formed_code(port); for (l = m->body; SCHEME_PAIRP(l); l = SCHEME_CDR(l)) { - scheme_validate_code(port, SCHEME_CAR(l), m->max_let_depth, - m->prefix->num_toplevels, m->prefix->num_stxes); + scheme_validate_code(port, SCHEME_CAR(l), ht, m->max_let_depth, + m->prefix->num_toplevels, m->prefix->num_stxes, m->prefix->num_lifts); } if (!SCHEME_NULLP(l)) scheme_ill_formed_code(port); @@ -3176,7 +3178,7 @@ module_optimize(Scheme_Object *data, Optimize_Info *info) Scheme_Module *m = (Scheme_Module *)data; Scheme_Object *e, *b, *vars, *start_simltaneous_b; Scheme_Hash_Table *consts = NULL, *ready_table = NULL; - int max_let_depth = 0, cont; + int cont; start_simltaneous_b = m->body; for (b = m->body; !SCHEME_NULLP(b); b = SCHEME_CDR(b)) { @@ -3184,10 +3186,6 @@ module_optimize(Scheme_Object *data, Optimize_Info *info) e = scheme_optimize_expr(SCHEME_CAR(b), info); SCHEME_CAR(b) = e; - if (info->max_let_depth > max_let_depth) - max_let_depth = info->max_let_depth; - info->max_let_depth = 0; - if (info->enforce_const) { /* If this expression/definition can't have any side effect (including raising an exception), then continue the group of @@ -3287,10 +3285,6 @@ module_optimize(Scheme_Object *data, Optimize_Info *info) /* Re-optimize this expression: */ e = scheme_optimize_expr(SCHEME_CAR(start_simltaneous_b), info); SCHEME_CAR(start_simltaneous_b) = e; - - if (info->max_let_depth > max_let_depth) - max_let_depth = info->max_let_depth; - info->max_let_depth = 0; if (SAME_OBJ(start_simltaneous_b, b)) break; @@ -3303,8 +3297,6 @@ module_optimize(Scheme_Object *data, Optimize_Info *info) } } - m->max_let_depth = max_let_depth; - /* Exp-time body was optimized during compilation */ return scheme_make_syntax_compiled(MODULE_EXPD, data); @@ -3314,7 +3306,7 @@ static Scheme_Object * module_resolve(Scheme_Object *data, Resolve_Info *old_rslv) { Scheme_Module *m = (Scheme_Module *)data; - Scheme_Object *b; + Scheme_Object *b, *lift_vec; Resolve_Prefix *rp; Resolve_Info *rslv; @@ -3328,6 +3320,7 @@ module_resolve(Scheme_Object *data, Resolve_Info *old_rslv) rslv = scheme_resolve_info_create(rp); rslv->enforce_const = old_rslv->enforce_const; rslv->in_module = 1; + scheme_enable_expression_resolve_lifts(rslv); for (b = m->body; !SCHEME_NULLP(b); b = SCHEME_CDR(b)) { Scheme_Object *e; @@ -3335,6 +3328,13 @@ module_resolve(Scheme_Object *data, Resolve_Info *old_rslv) SCHEME_CAR(b) = e; } + m->max_let_depth = rslv->max_let_depth; + + lift_vec = rslv->lifts; + b = scheme_append(SCHEME_VEC_ELS(lift_vec)[0], m->body); + m->body = b; + rp->num_lifts = SCHEME_INT_VAL(SCHEME_VEC_ELS(lift_vec)[1]); + /* Exp-time body was resolved during compilation */ return scheme_make_syntax_resolved(MODULE_EXPD, data); @@ -4128,19 +4128,21 @@ static Scheme_Object *do_module_begin(Scheme_Object *form, Scheme_Comp_Env *env, } m = scheme_compile_expr_lift_to_let(code, eenv, &mrec, 0); - oi = scheme_optimize_info_create(eenv); + oi = scheme_optimize_info_create(); m = scheme_optimize_expr(m, oi); /* Simplify only in compile mode; it is too slow in expand mode. */ rp = scheme_resolve_prefix(1, eenv->prefix, rec[drec].comp); ri = scheme_resolve_info_create(rp); + scheme_enable_expression_resolve_lifts(ri); m = scheme_resolve_expr(m, ri); + m = scheme_merge_expression_resolve_lifts(m, rp, ri); /* Add code with names and lexical depth to exp-time body: */ vec = scheme_make_vector(5, NULL); SCHEME_VEC_ELS(vec)[0] = names; SCHEME_VEC_ELS(vec)[1] = m; - SCHEME_VEC_ELS(vec)[2] = scheme_make_integer(oi->max_let_depth); + SCHEME_VEC_ELS(vec)[2] = scheme_make_integer(ri->max_let_depth); SCHEME_VEC_ELS(vec)[3] = (Scheme_Object *)rp; SCHEME_VEC_ELS(vec)[4] = (for_stx ? scheme_true : scheme_false); exp_body = scheme_make_pair(vec, exp_body); @@ -4148,7 +4150,7 @@ static Scheme_Object *do_module_begin(Scheme_Object *form, Scheme_Comp_Env *env, if (ri->use_jit) m = scheme_jit_expr(m); - eval_defmacro(names, count, m, eenv->genv, rhs_env, rp, oi->max_let_depth, 0, + eval_defmacro(names, count, m, eenv->genv, rhs_env, rp, ri->max_let_depth, 0, (for_stx ? env->genv->exp_env->toplevel : env->genv->syntax), for_stx, rec[drec].certs); @@ -5798,9 +5800,9 @@ top_level_require_jit(Scheme_Object *data) return data; } -static void top_level_require_validate(Scheme_Object *data, Mz_CPort *port, char *stack, +static void top_level_require_validate(Scheme_Object *data, Mz_CPort *port, char *stack, Scheme_Hash_Table *ht, int depth, int letlimit, int delta, - int num_toplevels, int num_stxes) + int num_toplevels, int num_stxes, int num_lifts) { } diff --git a/src/mzscheme/src/mzmark.c b/src/mzscheme/src/mzmark.c index 1fe13e564b..98d2f850af 100644 --- a/src/mzscheme/src/mzmark.c +++ b/src/mzscheme/src/mzmark.c @@ -435,7 +435,7 @@ static int unclosed_proc_MARK(void *p) { gcMARK(d->code); gcMARK(d->closure_map); #ifdef MZ_USE_JIT - gcMARK(d->native_code); + gcMARK(d->u.native_code); gcMARK(d->context); #endif @@ -450,7 +450,7 @@ static int unclosed_proc_FIXUP(void *p) { gcFIXUP(d->code); gcFIXUP(d->closure_map); #ifdef MZ_USE_JIT - gcFIXUP(d->native_code); + gcFIXUP(d->u.native_code); gcFIXUP(d->context); #endif @@ -780,7 +780,9 @@ static int closed_prim_proc_FIXUP(void *p) { static int scm_closure_SIZE(void *p) { Scheme_Closure *c = (Scheme_Closure *)p; - int closure_size = ((Scheme_Closure_Data *)GC_resolve(c->code))->closure_size; + int closure_size = (c->code + ? ((Scheme_Closure_Data *)GC_resolve(c->code))->closure_size + : 0); return gcBYTES_TO_WORDS((sizeof(Scheme_Closure) @@ -789,7 +791,9 @@ static int scm_closure_SIZE(void *p) { static int scm_closure_MARK(void *p) { Scheme_Closure *c = (Scheme_Closure *)p; - int closure_size = ((Scheme_Closure_Data *)GC_resolve(c->code))->closure_size; + int closure_size = (c->code + ? ((Scheme_Closure_Data *)GC_resolve(c->code))->closure_size + : 0); int i = closure_size; @@ -804,7 +808,9 @@ static int scm_closure_MARK(void *p) { static int scm_closure_FIXUP(void *p) { Scheme_Closure *c = (Scheme_Closure *)p; - int closure_size = ((Scheme_Closure_Data *)GC_resolve(c->code))->closure_size; + int closure_size = (c->code + ? ((Scheme_Closure_Data *)GC_resolve(c->code))->closure_size + : 0); int i = closure_size; @@ -2431,6 +2437,8 @@ static int mark_resolve_info_MARK(void *p) { gcMARK(i->new_pos); gcMARK(i->old_stx_pos); gcMARK(i->flags); + gcMARK(i->lifts); + gcMARK(i->lifted); gcMARK(i->next); return @@ -2445,6 +2453,8 @@ static int mark_resolve_info_FIXUP(void *p) { gcFIXUP(i->new_pos); gcFIXUP(i->old_stx_pos); gcFIXUP(i->flags); + gcFIXUP(i->lifts); + gcFIXUP(i->lifted); gcFIXUP(i->next); return @@ -4517,6 +4527,7 @@ static int mark_jit_state_SIZE(void *p) { static int mark_jit_state_MARK(void *p) { mz_jit_state *j = (mz_jit_state *)p; gcMARK(j->mappings); + gcMARK(j->self_data); return gcBYTES_TO_WORDS(sizeof(mz_jit_state)); } @@ -4524,6 +4535,7 @@ static int mark_jit_state_MARK(void *p) { static int mark_jit_state_FIXUP(void *p) { mz_jit_state *j = (mz_jit_state *)p; gcFIXUP(j->mappings); + gcFIXUP(j->self_data); return gcBYTES_TO_WORDS(sizeof(mz_jit_state)); } diff --git a/src/mzscheme/src/mzmarksrc.c b/src/mzscheme/src/mzmarksrc.c index 30d194eb94..c621d982d6 100644 --- a/src/mzscheme/src/mzmarksrc.c +++ b/src/mzscheme/src/mzmarksrc.c @@ -160,7 +160,7 @@ unclosed_proc { gcMARK(d->code); gcMARK(d->closure_map); #ifdef MZ_USE_JIT - gcMARK(d->native_code); + gcMARK(d->u.native_code); gcMARK(d->context); #endif @@ -290,7 +290,9 @@ closed_prim_proc { scm_closure { Scheme_Closure *c = (Scheme_Closure *)p; - int closure_size = ((Scheme_Closure_Data *)GC_resolve(c->code))->closure_size; + int closure_size = (c->code + ? ((Scheme_Closure_Data *)GC_resolve(c->code))->closure_size + : 0); mark: @@ -960,6 +962,8 @@ mark_resolve_info { gcMARK(i->new_pos); gcMARK(i->old_stx_pos); gcMARK(i->flags); + gcMARK(i->lifts); + gcMARK(i->lifted); gcMARK(i->next); size: @@ -1825,6 +1829,7 @@ mark_jit_state { mark: mz_jit_state *j = (mz_jit_state *)p; gcMARK(j->mappings); + gcMARK(j->self_data); size: gcBYTES_TO_WORDS(sizeof(mz_jit_state)); } diff --git a/src/mzscheme/src/port.c b/src/mzscheme/src/port.c index adea899e5e..343246db9c 100644 --- a/src/mzscheme/src/port.c +++ b/src/mzscheme/src/port.c @@ -7110,7 +7110,7 @@ static Scheme_Object *subprocess(int c, Scheme_Object *args[]) } } - /* Set real CWD - and hope no other thread changes it! */ + /* Set real CWD before spawn: */ tcd = scheme_get_param(scheme_current_config(), MZCONFIG_CURRENT_DIRECTORY); scheme_os_setcwd(SCHEME_BYTE_STR_VAL(tcd), 0); diff --git a/src/mzscheme/src/print.c b/src/mzscheme/src/print.c index 2a162abb9a..21dfcc688e 100644 --- a/src/mzscheme/src/print.c +++ b/src/mzscheme/src/print.c @@ -1670,9 +1670,23 @@ print(Scheme_Object *obj, int notdisplay, int compact, Scheme_Hash_Table *ht, if (SCHEME_TYPE(obj) == scheme_closure_type) { Scheme_Closure *closure = (Scheme_Closure *)obj; if (ZERO_SIZED_CLOSUREP(closure)) { - /* Print original `lambda' code: */ - compact = print((Scheme_Object *)SCHEME_COMPILED_CLOS_CODE(closure), notdisplay, compact, ht, symtab, rnht, pp); - done = 1; + /* Print original `lambda' code. Closure conversion can cause + an empty closure to be duplicated in the code tree, so hash it. */ + Scheme_Object *idx; + idx = scheme_hash_get(symtab, obj); + if (idx) { + print_compact(pp, CPT_SYMREF); + print_compact_number(pp, SCHEME_INT_VAL(idx)); + } else { + idx = scheme_make_integer(symtab->count); + scheme_hash_set(symtab, obj, idx); + print_compact(pp, CPT_CLOSURE); + print_compact_number(pp, SCHEME_INT_VAL(idx)); + + print((Scheme_Object *)SCHEME_COMPILED_CLOS_CODE(closure), notdisplay, compact, ht, symtab, rnht, pp); + } + compact = 1; + done = 1; } } else if (SCHEME_TYPE(obj) == scheme_case_closure_type) { obj = scheme_unclose_case_lambda(obj, 0); diff --git a/src/mzscheme/src/read.c b/src/mzscheme/src/read.c index 5ae569c727..679f611c29 100644 --- a/src/mzscheme/src/read.c +++ b/src/mzscheme/src/read.c @@ -4232,6 +4232,22 @@ static Scheme_Object *read_compact(CPort *port, int use_stack) port->symtab[l] = v; } break; + case CPT_CLOSURE: + { + Scheme_Closure *cl; + l = read_compact_number(port); + cl = scheme_malloc_empty_closure(); + port->symtab[l] = (Scheme_Object *)cl; + v = read_compact(port, 0); + if (!SAME_TYPE(SCHEME_TYPE(v), scheme_closure_type) + || ((Scheme_Closure *)v)->code->closure_size) { + scheme_ill_formed_code(port); + return NULL; + } + cl->code = ((Scheme_Closure *)v)->code; + v = (Scheme_Object *)cl; + break; + } case CPT_SMALL_LOCAL_START: case CPT_SMALL_LOCAL_UNBOX_START: { @@ -4670,9 +4686,11 @@ static Scheme_Object *read_compiled(Scheme_Object *port, Scheme_Compilation_Top *top = (Scheme_Compilation_Top *)result; scheme_validate_code(rp, top->code, + scheme_make_hash_table(SCHEME_hash_ptr), top->max_let_depth, top->prefix->num_toplevels, - top->prefix->num_stxes); + top->prefix->num_stxes, + top->prefix->num_lifts); /* If no exception, the the resulting code is ok. */ } else scheme_ill_formed_code(rp); @@ -5283,6 +5301,9 @@ static Scheme_Object *copy_to_protect(Scheme_Object *v, Scheme_Object *src, Sche static Scheme_Object *copy_to_protect_placeholders(Scheme_Object *v, Scheme_Object *src, Scheme_Hash_Table **oht) { + /* This function turns any cycles in the data into placeholder-based + cycles, and it generally copies the data to avoid mutation (which can + introduce cycles before placeholders are later resolved). */ Scheme_Hash_Table *ht; ht = scheme_make_hash_table(SCHEME_hash_ptr); return copy_to_protect(v, src, ht, oht); diff --git a/src/mzscheme/src/schcpt.h b/src/mzscheme/src/schcpt.h index fb9514f2b7..f1606c8c14 100644 --- a/src/mzscheme/src/schcpt.h +++ b/src/mzscheme/src/schcpt.h @@ -32,10 +32,11 @@ enum { CPT_MODULE_INDEX, CPT_MODULE_VAR, /* 30 */ CPT_PATH, + CPT_CLOSURE, _CPT_COUNT_ }; -#define CPT_SMALL_NUMBER_START 32 +#define CPT_SMALL_NUMBER_START 33 #define CPT_SMALL_NUMBER_END 60 #define CPT_SMALL_SYMBOL_START 60 diff --git a/src/mzscheme/src/schminc.h b/src/mzscheme/src/schminc.h index 0bfe089d5c..f0f3b97f96 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 865 +#define EXPECTED_PRIM_COUNT 866 #ifdef MZSCHEME_SOMETHING_OMITTED # undef USE_COMPILED_STARTUP diff --git a/src/mzscheme/src/schpriv.h b/src/mzscheme/src/schpriv.h index 14e5ec27c5..0aecc9ab1a 100644 --- a/src/mzscheme/src/schpriv.h +++ b/src/mzscheme/src/schpriv.h @@ -103,10 +103,10 @@ int scheme_num_types(void); void scheme_reset_finalizations(void); -extern unsigned long scheme_get_stack_base(); +extern unsigned long scheme_get_stack_base(void); -int scheme_propagate_ephemeron_marks(); -void scheme_clear_ephemerons(); +int scheme_propagate_ephemeron_marks(void); +void scheme_clear_ephemerons(void); #ifndef MZ_XFORM # define HIDE_FROM_XFORM(x) x @@ -114,6 +114,8 @@ void scheme_clear_ephemerons(); #define mzALIAS (void *) +#define BITS_PER_MZSHORT (8 * sizeof(mzshort)) + /*========================================================================*/ /* initialization */ /*========================================================================*/ @@ -231,10 +233,12 @@ extern Scheme_Object *scheme_orig_stdout_port; extern Scheme_Object *scheme_orig_stdin_port; extern Scheme_Object *scheme_orig_stderr_port; -extern Scheme_Object *scheme_arity_at_least; +extern Scheme_Object *scheme_arity_at_least, *scheme_make_arity_at_least; extern Scheme_Object *scheme_write_proc, *scheme_display_proc, *scheme_print_proc; +extern Scheme_Object *scheme_raise_arity_error_proc; + #ifdef TIME_SYNTAX extern Scheme_Object *scheme_date; #endif @@ -551,7 +555,7 @@ Scheme_Object *scheme_make_graph_stx(Scheme_Object *stx, Scheme_Object *scheme_make_renamed_stx(Scheme_Object *sym, Scheme_Object *rn); -Scheme_Object *scheme_new_stx_simplify_cache(); +Scheme_Object *scheme_new_stx_simplify_cache(void); void scheme_simplify_stx(Scheme_Object *stx, Scheme_Object *simplify_cache); Scheme_Object *scheme_datum_to_syntax(Scheme_Object *o, Scheme_Object *stx_src, @@ -566,14 +570,14 @@ Scheme_Object *scheme_stx_track(Scheme_Object *naya, Scheme_Object *old, Scheme_Object *origin); -Scheme_Object *scheme_new_mark(); +Scheme_Object *scheme_new_mark(void); Scheme_Object *scheme_add_remove_mark(Scheme_Object *o, Scheme_Object *m); Scheme_Object *scheme_make_rename(Scheme_Object *newname, int c); void scheme_set_rename(Scheme_Object *rnm, int pos, Scheme_Object *oldname); #define SCHEME_RIBP(v) SAME_TYPE(scheme_lexical_rib_type, SCHEME_TYPE(v)) -Scheme_Object *scheme_make_rename_rib(); +Scheme_Object *scheme_make_rename_rib(void); void scheme_add_rib_rename(Scheme_Object *ro, Scheme_Object *rename); void scheme_drop_first_rib_rename(Scheme_Object *ro); @@ -1438,7 +1442,7 @@ extern Scheme_Object *scheme_default_global_print_handler; void scheme_install_type_reader(Scheme_Type type, Scheme_Type_Reader f); void scheme_install_type_writer(Scheme_Type type, Scheme_Type_Writer f); -Scheme_Object *scheme_make_default_readtable(); +Scheme_Object *scheme_make_default_readtable(void); Scheme_Object *_scheme_apply_from_native(Scheme_Object *rator, int argc, @@ -1453,7 +1457,7 @@ Scheme_Object *_scheme_tail_apply_from_native(Scheme_Object *rator, Scheme_Object *scheme_force_value_same_mark(Scheme_Object *); Scheme_Object *scheme_force_one_value_same_mark(Scheme_Object *); -void scheme_flush_stack_cache(); +void scheme_flush_stack_cache(void); /*========================================================================*/ /* compile and link */ @@ -1499,7 +1503,7 @@ typedef struct Scheme_Comp_Env } Scheme_Comp_Env; #define CLOS_HAS_REST 1 -#define CLOS_MUST_ALLOC 2 +#define CLOS_HAS_REF_ARGS 2 #define CLOS_ONLY_LOCALS 4 #define CLOS_FOLDABLE 8 #define CLOS_IS_METHOD 16 @@ -1521,7 +1525,7 @@ typedef Scheme_Compile_Expand_Info Scheme_Expand_Info; typedef struct Resolve_Prefix { Scheme_Object so; - int num_toplevels, num_stxes; + int num_toplevels, num_stxes, num_lifts; Scheme_Object **toplevels; Scheme_Object **stxes; /* simplified */ } Resolve_Prefix; @@ -1529,8 +1533,9 @@ typedef struct Resolve_Prefix typedef struct Resolve_Info { MZTAG_IF_REQUIRED - char use_jit, in_module, enforce_const; + char use_jit, in_module, in_proc, enforce_const; int size, oldsize, count, pos; + int max_let_depth; /* filled in by sub-expressions */ Resolve_Prefix *prefix; mzshort toplevel_pos; /* -1 mean consult next */ mzshort *old_pos; @@ -1538,6 +1543,8 @@ typedef struct Resolve_Info int stx_count; mzshort *old_stx_pos; /* NULL => consult next; new pos is index in array */ int *flags; + Scheme_Object **lifted; /* maps bindings to lifts */ + Scheme_Object *lifts; /* accumulates lift info */ struct Resolve_Info *next; } Resolve_Info; @@ -1560,7 +1567,7 @@ typedef struct Optimize_Info Scheme_Object *consts; /* Propagated up and down the chain: */ - int size, max_let_depth; + int size; short inline_fuel; char letrec_not_twice, enforce_const; Scheme_Hash_Table *top_level_consts; @@ -1573,12 +1580,14 @@ typedef struct Optimize_Info typedef struct Scheme_Object *(*Scheme_Syntax_Optimizer)(Scheme_Object *data, Optimize_Info *info); typedef struct Scheme_Object *(*Scheme_Syntax_Cloner)(Scheme_Object *data, Optimize_Info *info, int delta, int closure_depth); +typedef struct Scheme_Object *(*Scheme_Syntax_Shifter)(Scheme_Object *data, int delta, int after_depth); typedef struct CPort Mz_CPort; -typedef void (*Scheme_Syntax_Validater)(Scheme_Object *data, Mz_CPort *port, - char *stack, int depth, int letlimit, int delta, - int num_toplevels, int num_stxes); +typedef void (*Scheme_Syntax_Validater)(Scheme_Object *data, Mz_CPort *port, + char *stack, Scheme_Hash_Table *ht, Scheme_Object **tls, + int depth, int letlimit, int delta, + int num_toplevels, int num_stxes, int num_lifts); typedef struct Scheme_Object *(*Scheme_Syntax_Executer)(struct Scheme_Object *data); @@ -1590,11 +1599,14 @@ typedef struct Scheme_Closure_Data mzshort num_params; /* includes collecting arg if has_rest */ mzshort max_let_depth; mzshort closure_size; - mzshort *closure_map; /* actually a Closure_Info* until resolved */ + mzshort *closure_map; /* actually a Closure_Info* until resolved; if CLOS_HASH_REF_ARGS, followed by bit array */ Scheme_Object *code; Scheme_Object *name; #ifdef MZ_USE_JIT - struct Scheme_Native_Closure_Data *native_code; /* generated by lightning */ + union { + struct Scheme_Closure_Data *jit_clone; + struct Scheme_Native_Closure_Data *native_code; /* generated by lightning */ + } u; Scheme_Object *context; /* e.g., a letrec that binds the closure */ #endif } Scheme_Closure_Data; @@ -1707,6 +1719,7 @@ void scheme_set_local_syntax(int pos, Scheme_Object *name, Scheme_Object *val, Scheme_Object *scheme_make_closure(Scheme_Thread *p, Scheme_Object *compiled_code, int close); +Scheme_Closure *scheme_malloc_empty_closure(void); Scheme_Object *scheme_make_native_closure(Scheme_Native_Closure_Data *code); Scheme_Object *scheme_make_native_case_closure(Scheme_Native_Closure_Data *code); @@ -1715,7 +1728,7 @@ Scheme_Native_Closure_Data *scheme_generate_case_lambda(Scheme_Case_Lambda *cl); #define scheme_add_good_binding(i,v,f) (f->values[i] = v) -Scheme_Object *scheme_compiled_void(); +Scheme_Object *scheme_compiled_void(void); Scheme_Object *scheme_register_toplevel_in_prefix(Scheme_Object *var, Scheme_Comp_Env *env, Scheme_Compile_Info *rec, int drec); @@ -1742,13 +1755,14 @@ int scheme_is_sub_env(Scheme_Comp_Env *stx_env, Scheme_Comp_Env *env); #define REF_EXPD 10 #define _COUNT_EXPD_ 11 -#define scheme_register_syntax(i, fo, fr, fv, fe, fj, cl, pa) \ +#define scheme_register_syntax(i, fo, fr, fv, fe, fj, cl, sh, pa) \ (scheme_syntax_optimizers[i] = fo, \ scheme_syntax_resolvers[i] = fr, \ scheme_syntax_executers[i] = fe, \ scheme_syntax_validaters[i] = fv, \ scheme_syntax_jitters[i] = fj, \ - scheme_syntax_cloners[i] = cl, \ + scheme_syntax_cloners[i] = cl, \ + scheme_syntax_shifters[i] = sh, \ scheme_syntax_protect_afters[i] = pa) extern Scheme_Syntax_Optimizer scheme_syntax_optimizers[_COUNT_EXPD_]; extern Scheme_Syntax_Resolver scheme_syntax_resolvers[_COUNT_EXPD_]; @@ -1756,6 +1770,7 @@ extern Scheme_Syntax_Validater scheme_syntax_validaters[_COUNT_EXPD_]; extern Scheme_Syntax_Executer scheme_syntax_executers[_COUNT_EXPD_]; extern Scheme_Syntax_Jitter scheme_syntax_jitters[_COUNT_EXPD_]; extern Scheme_Syntax_Cloner scheme_syntax_cloners[_COUNT_EXPD_]; +extern Scheme_Syntax_Shifter scheme_syntax_shifters[_COUNT_EXPD_]; extern int scheme_syntax_protect_afters[_COUNT_EXPD_]; Scheme_Object *scheme_protect_quote(Scheme_Object *expr); @@ -1774,7 +1789,7 @@ int scheme_compiled_propagate_ok(Scheme_Object *o); Scheme_Object *scheme_resolve_expr(Scheme_Object *, Resolve_Info *); Scheme_Object *scheme_resolve_list(Scheme_Object *, Resolve_Info *); -int scheme_is_compiled_procedure(Scheme_Object *o, int can_be_closed); +int scheme_is_compiled_procedure(Scheme_Object *o, int can_be_closed, int can_be_liftable); Scheme_Object *scheme_resolve_lets(Scheme_Object *form, Resolve_Info *info); @@ -1782,12 +1797,16 @@ Resolve_Prefix *scheme_resolve_prefix(int phase, Comp_Prefix *cp, int simplify); Resolve_Info *scheme_resolve_info_create(Resolve_Prefix *rp); Resolve_Info *scheme_resolve_info_extend(Resolve_Info *info, int size, int oldsize, int mapcount); -void scheme_resolve_info_add_mapping(Resolve_Info *info, int oldp, int newp, int flags); -int scheme_resolve_info_flags(Resolve_Info *info, int pos); -int scheme_resolve_info_lookup(Resolve_Info *resolve, int pos, int *flags); +void scheme_resolve_info_add_mapping(Resolve_Info *info, int oldp, int newp, int flags, Scheme_Object *lifted); +void scheme_resolve_info_adjust_mapping(Resolve_Info *info, int oldp, int newp, int flags, Scheme_Object *lifted); +int scheme_resolve_info_flags(Resolve_Info *info, int pos, Scheme_Object **lifted); +int scheme_resolve_info_lookup(Resolve_Info *resolve, int pos, int *flags, Scheme_Object **lifted, int convert_shift); void scheme_resolve_info_set_toplevel_pos(Resolve_Info *info, int pos); -Optimize_Info *scheme_optimize_info_create(); +void scheme_enable_expression_resolve_lifts(Resolve_Info *ri); +Scheme_Object *scheme_merge_expression_resolve_lifts(Scheme_Object *expr, Resolve_Prefix *rp, Resolve_Info *ri); + +Optimize_Info *scheme_optimize_info_create(void); void scheme_optimize_propagate(Optimize_Info *info, int pos, Scheme_Object *value); Scheme_Object *scheme_optimize_info_lookup(Optimize_Info *info, int pos, int *closure_offset); @@ -1798,10 +1817,13 @@ Scheme_Object *scheme_optimize_reverse(Optimize_Info *info, int pos, int unless_ int scheme_optimize_is_used(Optimize_Info *info, int pos); Scheme_Object *scheme_optimize_clone(Scheme_Object *obj, Optimize_Info *info, int delta, int closure_depth); +Scheme_Object *scheme_optimize_shift(Scheme_Object *obj, int delta, int after_depth); Scheme_Object *scheme_clone_closure_compilation(Scheme_Object *obj, Optimize_Info *info, int delta, int closure_depth); +Scheme_Object *scheme_shift_closure_compilation(Scheme_Object *obj, int delta, int after_depth); int scheme_closure_body_size(Scheme_Closure_Data *closure_data, int check_assign); int scheme_closure_argument_flags(Scheme_Closure_Data *closure_data, int i); +int scheme_closure_has_top_level(Scheme_Closure_Data *data); Optimize_Info *scheme_optimize_info_add_frame(Optimize_Info *info, int orig, int current, int flags); int scheme_optimize_info_get_shift(Optimize_Info *info, int pos); @@ -1813,9 +1835,17 @@ void scheme_env_make_closure_map(Optimize_Info *frame, mzshort *size, mzshort ** int scheme_env_uses_toplevel(Optimize_Info *frame); int scheme_resolve_toplevel_pos(Resolve_Info *info); +int scheme_resolve_is_toplevel_available(Resolve_Info *info); int scheme_resolve_quote_syntax_pos(Resolve_Info *info); Scheme_Object *scheme_resolve_toplevel(Resolve_Info *info, Scheme_Object *expr); +Scheme_Object *scheme_resolve_invent_toplevel(Resolve_Info *info); +Scheme_Object *scheme_resolve_invented_toplevel_to_defn(Resolve_Info *info, Scheme_Object *tl); +Scheme_Object *scheme_shift_toplevel(Scheme_Object *expr, int delta); +Scheme_Object *scheme_resolve_generate_stub_lift(void); int scheme_resolve_quote_syntax(Resolve_Info *info, int oldpos); +int scheme_resolving_in_procedure(Resolve_Info *info); + +void scheme_resolve_lift_definition(Resolve_Info *info, Scheme_Object *var, Scheme_Object *rhs); Scheme_Object *scheme_make_compiled_syntax(Scheme_Syntax *syntax, Scheme_Syntax_Expander *exp); @@ -1856,7 +1886,9 @@ Scheme_Object *scheme_make_sequence_compilation(Scheme_Object *compiled_list, int strip_values); Scheme_Object *scheme_optimize_closure_compilation(Scheme_Object *_data, Optimize_Info *info); -Scheme_Object *scheme_resolve_closure_compilation(Scheme_Object *_data, Resolve_Info *info); +Scheme_Object *scheme_resolve_closure_compilation(Scheme_Object *_data, Resolve_Info *info, + int can_lift, int convert, int just_compute_lift, + Scheme_Object *precomputed_lift); Scheme_App_Rec *scheme_malloc_application(int n); void scheme_finish_application(Scheme_App_Rec *app); @@ -1871,13 +1903,15 @@ Scheme_Object *scheme_build_closure_name(Scheme_Object *code, Scheme_Compile_Inf int *scheme_env_get_flags(Scheme_Comp_Env *frame, int start, int count); -/* flags reported by scheme_env_get_fags */ -#define SCHEME_WAS_USED 1 -#define SCHEME_WAS_SET_BANGED 2 +/* flags reported by scheme_env_get_flags */ +#define SCHEME_WAS_USED 0x1 +#define SCHEME_WAS_SET_BANGED 0x2 +#define SCHEME_WAS_ONLY_APPLIED 0x4 +#define SCHEME_WAS_APPLIED_EXCEPT_ONCE 0x8 -#define SCHEME_USE_COUNT_MASK 0x70 -#define SCHEME_USE_COUNT_SHIFT 4 -#define SCHEME_USE_COUNT_INF (SCHEME_USE_COUNT_MASK >> SCHEME_USE_COUNT_SHIFT) +#define SCHEME_USE_COUNT_MASK 0x70 +#define SCHEME_USE_COUNT_SHIFT 4 +#define SCHEME_USE_COUNT_INF (SCHEME_USE_COUNT_MASK >> SCHEME_USE_COUNT_SHIFT) /* flags reported by scheme_resolve_info_flags */ #define SCHEME_INFO_BOXED 1 @@ -1969,17 +2003,26 @@ void scheme_pop_prefix(Scheme_Object **rs); Scheme_Object *scheme_make_environment_dummy(Scheme_Comp_Env *env); Scheme_Env *scheme_environment_from_dummy(Scheme_Object *dummy); -void scheme_validate_code(Mz_CPort *port, Scheme_Object *code, int depth, - int num_toplevels, int num_stxes); -void scheme_validate_expr(Mz_CPort *port, Scheme_Object *expr, - char *stack, int depth, int letlimit, int delta, - int num_toplevels, int num_stxes); +void scheme_validate_code(Mz_CPort *port, Scheme_Object *code, Scheme_Hash_Table *ht, + int depth, + int num_toplevels, int num_stxes, int num_lifts); +void scheme_validate_expr(Mz_CPort *port, Scheme_Object *expr, + char *stack, Scheme_Hash_Table *ht, Scheme_Object **tls, + int depth, int letlimit, int delta, + int num_toplevels, int num_stxes, int num_lifts, + Scheme_Object *app_rator, int proc_with_refs_ok); void scheme_validate_toplevel(Scheme_Object *expr, Mz_CPort *port, - char *stack, int depth, int delta, - int num_toplevels, int num_stxes); + char *stack, Scheme_Hash_Table *ht, Scheme_Object **tls, + int depth, int delta, + int num_toplevels, int num_stxes, int num_lifts); void scheme_validate_boxenv(int pos, Mz_CPort *port, char *stack, int depth, int delta); +int scheme_validate_rator_wants_box(Scheme_Object *app_rator, int pos, + int hope, + Scheme_Object **tls, + int num_toplevels, int num_stxes, int num_lifts); + #define TRACK_ILL_FORMED_CATCH_LINES 1 #if TRACK_ILL_FORMED_CATCH_LINES void scheme_ill_formed(Mz_CPort *port, const char *file, int line); diff --git a/src/mzscheme/src/schvers.h b/src/mzscheme/src/schvers.h index 46fef5464b..08b0d9814e 100644 --- a/src/mzscheme/src/schvers.h +++ b/src/mzscheme/src/schvers.h @@ -9,6 +9,6 @@ #define MZSCHEME_VERSION_MAJOR 352 -#define MZSCHEME_VERSION_MINOR 0 +#define MZSCHEME_VERSION_MINOR 1 -#define MZSCHEME_VERSION "352" _MZ_SPECIAL_TAG +#define MZSCHEME_VERSION "352.1" _MZ_SPECIAL_TAG diff --git a/src/mzscheme/src/struct.c b/src/mzscheme/src/struct.c index b40bcff07a..4a6b87337a 100644 --- a/src/mzscheme/src/struct.c +++ b/src/mzscheme/src/struct.c @@ -24,6 +24,7 @@ /* globals */ Scheme_Object *scheme_arity_at_least, *scheme_date; +Scheme_Object *scheme_make_arity_at_least; Scheme_Object *scheme_source_property; /* locals */ @@ -169,6 +170,7 @@ scheme_init_struct (Scheme_Env *env) /* Add arity structure */ REGISTER_SO(scheme_arity_at_least); + REGISTER_SO(scheme_make_arity_at_least); scheme_arity_at_least = scheme_make_struct_type_from_string("arity-at-least", NULL, 1, NULL, NULL, 0); as_names = scheme_make_struct_names_from_array("arity-at-least", 1, arity_fields, @@ -176,6 +178,7 @@ scheme_init_struct (Scheme_Env *env) &as_count); as_values = scheme_make_struct_values(scheme_arity_at_least, as_names, as_count, BUILTIN_STRUCT_FLAGS); + scheme_make_arity_at_least = as_values[1]; for (i = 0; i < as_count - 1; i++) { scheme_add_global_constant(scheme_symbol_val(as_names[i]), as_values[i], env); diff --git a/src/mzscheme/src/syntax.c b/src/mzscheme/src/syntax.c index ddac58e74a..aafe18a796 100644 --- a/src/mzscheme/src/syntax.c +++ b/src/mzscheme/src/syntax.c @@ -45,6 +45,7 @@ Scheme_Syntax_Validater scheme_syntax_validaters[_COUNT_EXPD_]; Scheme_Syntax_Executer scheme_syntax_executers[_COUNT_EXPD_]; Scheme_Syntax_Jitter scheme_syntax_jitters[_COUNT_EXPD_]; Scheme_Syntax_Cloner scheme_syntax_cloners[_COUNT_EXPD_]; +Scheme_Syntax_Shifter scheme_syntax_shifters[_COUNT_EXPD_]; int scheme_syntax_protect_afters[_COUNT_EXPD_]; /* locals */ @@ -116,6 +117,11 @@ static Scheme_Object *begin0_optimize(Scheme_Object *data, Optimize_Info *info); static Scheme_Object *begin0_clone(Scheme_Object *data, Optimize_Info *info, int delta, int closure_depth); static Scheme_Object *set_clone(Scheme_Object *data, Optimize_Info *info, int delta, int closure_depth); +static Scheme_Object *begin0_shift(Scheme_Object *data, int delta, int after_depth); +static Scheme_Object *set_shift(Scheme_Object *data, int delta, int after_depth); +static Scheme_Object *ref_shift(Scheme_Object *data, int delta, int after_depth); +static Scheme_Object *case_lambda_shift(Scheme_Object *data, int delta, int after_depth); + static Scheme_Object *define_values_resolve(Scheme_Object *data, Resolve_Info *info); static Scheme_Object *ref_resolve(Scheme_Object *data, Resolve_Info *info); static Scheme_Object *set_resolve(Scheme_Object *data, Resolve_Info *info); @@ -124,24 +130,42 @@ static Scheme_Object *define_for_syntaxes_resolve(Scheme_Object *expr, Resolve_I static Scheme_Object *case_lambda_resolve(Scheme_Object *expr, Resolve_Info *info); static Scheme_Object *begin0_resolve(Scheme_Object *data, Resolve_Info *info); -static void define_values_validate(Scheme_Object *data, Mz_CPort *port, char *stack, int depth, int letlimit, int delta, - int num_toplevels, int num_stxes); -static void ref_validate(Scheme_Object *data, Mz_CPort *port, char *stack, int depth, int letlimit, int delta, - int num_toplevels, int num_stxes); -static void set_validate(Scheme_Object *data, Mz_CPort *port, char *stack, int depth, int letlimit, int delta, - int num_toplevels, int num_stxes); -static void define_syntaxes_validate(Scheme_Object *data, Mz_CPort *port, char *stack, int depth, int letlimit, int delta, - int num_toplevels, int num_stxes); -static void define_for_syntaxes_validate(Scheme_Object *data, Mz_CPort *port, char *stack, int depth, int letlimit, int delta, - int num_toplevels, int num_stxes); -static void case_lambda_validate(Scheme_Object *data, Mz_CPort *port, char *stack, int depth, int letlimit, int delta, - int num_toplevels, int num_stxes); -static void begin0_validate(Scheme_Object *data, Mz_CPort *port, char *stack, int depth, int letlimit, int delta, - int num_toplevels, int num_stxes); -static void bangboxenv_validate(Scheme_Object *data, Mz_CPort *port, char *stack, int depth, int letlimit, int delta, - int num_toplevels, int num_stxes); -static void bangboxvalue_validate(Scheme_Object *data, Mz_CPort *port, char *stack, int depth, int letlimit, int delta, - int num_toplevels, int num_stxes); +static void define_values_validate(Scheme_Object *data, Mz_CPort *port, + char *stack, Scheme_Hash_Table *ht, Scheme_Object **tls, + int depth, int letlimit, int delta, + int num_toplevels, int num_stxes, int num_lifts); +static void ref_validate(Scheme_Object *data, Mz_CPort *port, + char *stack, Scheme_Hash_Table *ht, Scheme_Object **tls, + int depth, int letlimit, int delta, + int num_toplevels, int num_stxes, int num_lifts); +static void set_validate(Scheme_Object *data, Mz_CPort *port, + char *stack, Scheme_Hash_Table *ht, Scheme_Object **tls, + int depth, int letlimit, int delta, + int num_toplevels, int num_stxes, int num_lifts); +static void define_syntaxes_validate(Scheme_Object *data, Mz_CPort *port, + char *stack, Scheme_Hash_Table *ht, Scheme_Object **tls, + int depth, int letlimit, int delta, + int num_toplevels, int num_stxes, int num_lifts); +static void define_for_syntaxes_validate(Scheme_Object *data, Mz_CPort *port, + char *stack, Scheme_Hash_Table *ht, Scheme_Object **tls, + int depth, int letlimit, int delta, + int num_toplevels, int num_stxes, int num_lifts); +static void case_lambda_validate(Scheme_Object *data, Mz_CPort *port, + char *stack, Scheme_Hash_Table *ht, Scheme_Object **tls, + int depth, int letlimit, int delta, + int num_toplevels, int num_stxes, int num_lifts); +static void begin0_validate(Scheme_Object *data, Mz_CPort *port, + char *stack, Scheme_Hash_Table *ht, Scheme_Object **tls, + int depth, int letlimit, int delta, + int num_toplevels, int num_stxes, int num_lifts); +static void bangboxenv_validate(Scheme_Object *data, Mz_CPort *port, + char *stack, Scheme_Hash_Table *ht, Scheme_Object **tls, + int depth, int letlimit, int delta, + int num_toplevels, int num_stxes, int num_lifts); +static void bangboxvalue_validate(Scheme_Object *data, Mz_CPort *port, + char *stack, Scheme_Hash_Table *ht, Scheme_Object **tls, + int depth, int letlimit, int delta, + int num_toplevels, int num_stxes, int num_lifts); static Scheme_Object *define_values_jit(Scheme_Object *data); static Scheme_Object *ref_jit(Scheme_Object *data); @@ -239,46 +263,46 @@ scheme_init_syntax (Scheme_Env *env) define_values_optimize, define_values_resolve, define_values_validate, define_values_execute, define_values_jit, - NULL, 1); + NULL, NULL, 1); scheme_register_syntax(SET_EXPD, set_optimize, set_resolve, set_validate, set_execute, set_jit, - set_clone, 2); + set_clone, set_shift, 2); scheme_register_syntax(REF_EXPD, ref_optimize, ref_resolve, ref_validate, ref_execute, ref_jit, - NULL, 0); + NULL, ref_shift, 0); scheme_register_syntax(DEFINE_SYNTAX_EXPD, define_syntaxes_optimize, define_syntaxes_resolve, define_syntaxes_validate, define_syntaxes_execute, define_syntaxes_jit, - NULL, 4); + NULL, NULL, 4); scheme_register_syntax(DEFINE_FOR_SYNTAX_EXPD, define_for_syntaxes_optimize, define_for_syntaxes_resolve, define_for_syntaxes_validate, define_for_syntaxes_execute, define_for_syntaxes_jit, - NULL, 4); + NULL, NULL, 4); scheme_register_syntax(CASE_LAMBDA_EXPD, case_lambda_optimize, case_lambda_resolve, case_lambda_validate, case_lambda_execute, case_lambda_jit, - NULL, -1); + NULL, case_lambda_shift, -1); scheme_register_syntax(BEGIN0_EXPD, begin0_optimize, begin0_resolve, begin0_validate, begin0_execute, begin0_jit, - begin0_clone, -1); + begin0_clone, begin0_shift, -1); scheme_register_syntax(BOXENV_EXPD, NULL, NULL, bangboxenv_validate, bangboxenv_execute, NULL, - NULL, 1); + NULL, NULL, 1); scheme_register_syntax(BOXVAL_EXPD, NULL, NULL, bangboxvalue_validate, bangboxvalue_execute, bangboxvalue_jit, - NULL, 2); + NULL, NULL, 2); scheme_install_type_writer(scheme_let_value_type, write_let_value); scheme_install_type_reader(scheme_let_value_type, read_let_value); @@ -791,24 +815,67 @@ static Scheme_Object *define_values_jit(Scheme_Object *data) } static void define_values_validate(Scheme_Object *data, Mz_CPort *port, - char *stack, int depth, int letlimit, int delta, int num_toplevels, int num_stxes) + char *stack, Scheme_Hash_Table *ht, Scheme_Object **tls, + int depth, int letlimit, int delta, + int num_toplevels, int num_stxes, int num_lifts) { - Scheme_Object *vars, *val; + Scheme_Object *vars, *val, *only_var; if (!SCHEME_PAIRP(data)) scheme_ill_formed_code(port); vars = SCHEME_CAR(data); val = SCHEME_CDR(data); + + if (SCHEME_PAIRP(vars) && SCHEME_NULLP(SCHEME_CDR(vars))) + only_var = SCHEME_CAR(vars); + else + only_var = NULL; for (; SCHEME_PAIRP(vars); vars = SCHEME_CDR(vars)) { - scheme_validate_toplevel(SCHEME_CAR(vars), port, stack, depth, delta, num_toplevels, num_stxes); + scheme_validate_toplevel(SCHEME_CAR(vars), port, stack, ht, tls, depth, delta, + num_toplevels, num_stxes, num_lifts); } if (!SCHEME_NULLP(vars)) scheme_ill_formed_code(port); - scheme_validate_expr(port, val, stack, depth, letlimit, delta, num_toplevels, num_stxes); + if (only_var) { + int pos; + pos = SCHEME_TOPLEVEL_POS(only_var); + if (pos >= (num_toplevels + num_stxes + (num_stxes ? 1 : 0))) { + /* It's a lift. Check whether it needs to take reference arguments + and/or install reference info. */ + int tp = pos - (num_stxes + (num_stxes ? 1 : 0)); + Scheme_Object *vec; + + vec = tls[tp]; + if (vec && !SCHEME_VECTORP(vec) && !SCHEME_FALSEP(vec)) + scheme_ill_formed_code(port); + + if (SCHEME_VECTORP(val) || SCHEME_FALSEP(val)) + tls[tp] = scheme_true; /* avoid confusion between expression and hopes */ + else + tls[tp] = val; + + if (vec && SCHEME_VECTORP(vec)) { + int i; + for (i = SCHEME_VEC_SIZE(vec); i--; ) { + if (!SCHEME_NULLP(SCHEME_VEC_ELS(vec)[i])) { + scheme_validate_rator_wants_box(val, i, + SCHEME_TRUEP(SCHEME_VEC_ELS(vec)[i]), + tls, num_toplevels, num_stxes, num_lifts); + } + } + } + } else + only_var = NULL; + } + + scheme_validate_expr(port, val, stack, ht, tls, + depth, letlimit, delta, + num_toplevels, num_stxes, num_lifts, + NULL, !!only_var); } static Scheme_Object * @@ -849,6 +916,16 @@ define_values_resolve(Scheme_Object *data, Resolve_Info *rslv) return scheme_make_syntax_resolved(DEFINE_VALUES_EXPD, cons(vars, val)); } +void scheme_resolve_lift_definition(Resolve_Info *info, Scheme_Object *var, Scheme_Object *rhs) +{ + Scheme_Object *decl, *vec, *pr; + + decl = scheme_make_syntax_resolved(DEFINE_VALUES_EXPD, cons(cons(var, scheme_null), rhs)); + vec = info->lifts; + pr = cons(decl, SCHEME_VEC_ELS(vec)[0]); + SCHEME_VEC_ELS(vec)[0] = pr; +} + void scheme_define_parse(Scheme_Object *form, Scheme_Object **var, Scheme_Object **_stk_val, int defmacro, @@ -1275,7 +1352,9 @@ static Scheme_Object *set_jit(Scheme_Object *data) } static void set_validate(Scheme_Object *data, Mz_CPort *port, - char *stack, int depth, int letlimit, int delta, int num_toplevels, int num_stxes) + char *stack, Scheme_Hash_Table *ht, Scheme_Object **tls, + int depth, int letlimit, int delta, + int num_toplevels, int num_stxes, int num_lifts) { Scheme_Object *val, *tl; @@ -1287,8 +1366,11 @@ static void set_validate(Scheme_Object *data, Mz_CPort *port, tl = SCHEME_CAR(data); val = SCHEME_CDR(data); - scheme_validate_expr(port, val, stack, depth, letlimit, delta, num_toplevels, num_stxes); - scheme_validate_toplevel(tl, port, stack, depth, delta, num_toplevels, num_stxes); + scheme_validate_expr(port, val, stack, ht, tls, depth, letlimit, delta, + num_toplevels, num_stxes, num_lifts, + NULL, 0); + scheme_validate_toplevel(tl, port, stack, ht, tls, depth, delta, + num_toplevels, num_stxes, num_lifts); } static Scheme_Object * @@ -1342,6 +1424,21 @@ set_clone(Scheme_Object *data, Optimize_Info *info, int delta, int closure_depth return scheme_make_syntax_compiled(SET_EXPD, cons(set_undef, cons(var, val))); } +static Scheme_Object *set_shift(Scheme_Object *data, int delta, int after_depth) +{ + Scheme_Object *l, *e; + + l = SCHEME_CDR(data); + + e = scheme_optimize_shift(SCHEME_CAR(l), delta, after_depth); + SCHEME_CAR(l) = e; + + e = scheme_optimize_shift(SCHEME_CDR(l), delta, after_depth); + SCHEME_CDR(l) = e; + + return scheme_make_syntax_compiled(SET_EXPD, data); +} + static Scheme_Object * set_resolve(Scheme_Object *data, Resolve_Info *rslv) { @@ -1365,7 +1462,7 @@ set_resolve(Scheme_Object *data, Resolve_Info *rslv) lv->iso.so.type = scheme_let_value_type; lv->body = cv; lv->count = 1; - li = scheme_resolve_info_lookup(rslv, SCHEME_LOCAL_POS(var), &flags); + li = scheme_resolve_info_lookup(rslv, SCHEME_LOCAL_POS(var), &flags, NULL, 0); lv->position = li; SCHEME_LET_AUTOBOX(lv) = (flags & SCHEME_INFO_BOXED); lv->value = val; @@ -1572,9 +1669,12 @@ static Scheme_Object *ref_jit(Scheme_Object *data) } static void ref_validate(Scheme_Object *tl, Mz_CPort *port, - char *stack, int depth, int letlimit, int delta, int num_toplevels, int num_stxes) + char *stack, Scheme_Hash_Table *ht, Scheme_Object **tls, + int depth, int letlimit, int delta, + int num_toplevels, int num_stxes, int num_lifts) { - scheme_validate_toplevel(tl, port, stack, depth, delta, num_toplevels, num_stxes); + scheme_validate_toplevel(tl, port, stack, ht, tls, depth, delta, + num_toplevels, num_stxes, num_lifts); } static Scheme_Object * @@ -1583,6 +1683,12 @@ ref_optimize(Scheme_Object *tl, Optimize_Info *rslv) return scheme_make_syntax_compiled(REF_EXPD, tl); } +static Scheme_Object * +ref_shift(Scheme_Object *data, int delta, int after_depth) +{ + return scheme_make_syntax_compiled(REF_EXPD, data); +} + static Scheme_Object * ref_resolve(Scheme_Object *tl, Resolve_Info *rslv) { @@ -1700,7 +1806,7 @@ case_lambda_execute(Scheme_Object *expr) val = seqin->array[i]; if (!SCHEME_PROCP(val)) { data = (Scheme_Closure_Data *)val; - na = (Scheme_Native_Closure *)scheme_make_native_closure(data->native_code); + na = (Scheme_Native_Closure *)scheme_make_native_closure(data->u.native_code); runstack = MZ_RUNSTACK; jcnt = data->closure_size; map = data->closure_map; @@ -1784,7 +1890,7 @@ static Scheme_Object *case_lambda_jit(Scheme_Object *expr) for (i = 0; i < cnt; i++) { val = seqout->array[i]; if (!SCHEME_PROCP(val)) { - val = scheme_make_native_closure(((Scheme_Closure_Data *)val)->native_code); + val = scheme_make_native_closure(((Scheme_Closure_Data *)val)->u.native_code); } nc->vals[i] = val; } @@ -1813,14 +1919,17 @@ static Scheme_Object *case_lambda_jit(Scheme_Object *expr) return expr; } -static void case_lambda_validate(Scheme_Object *data, Mz_CPort *port, char *stack, - int depth, int letlimit, int delta, int num_toplevels, int num_stxes) +static void case_lambda_validate(Scheme_Object *data, Mz_CPort *port, char *stack, Scheme_Hash_Table *ht, Scheme_Object **tls, + int depth, int letlimit, int delta, + int num_toplevels, int num_stxes, int num_lifts) { Scheme_Case_Lambda *seq = (Scheme_Case_Lambda *)data; int i; for (i = 0; i < seq->count; i++) { - scheme_validate_expr(port, seq->array[i], stack, depth, letlimit, delta, num_toplevels, num_stxes); + scheme_validate_expr(port, seq->array[i], stack, ht, tls, depth, letlimit, delta, + num_toplevels, num_stxes, num_lifts, + NULL, 0); } } @@ -1833,7 +1942,7 @@ case_lambda_resolve(Scheme_Object *expr, Resolve_Info *rslv) for (i = 0; i < seq->count; i++) { Scheme_Object *le; le = seq->array[i]; - le = scheme_resolve_expr(le, rslv); + le = scheme_resolve_closure_compilation(le, rslv, 0, 0, 0, NULL); seq->array[i] = le; if (!SCHEME_PROCP(le)) all_closed = 0; @@ -1863,6 +1972,22 @@ case_lambda_optimize(Scheme_Object *expr, Optimize_Info *info) return scheme_make_syntax_compiled(CASE_LAMBDA_EXPD, expr); } +static Scheme_Object * +case_lambda_shift(Scheme_Object *data, int delta, int after_depth) +{ + Scheme_Object *le; + int i; + Scheme_Case_Lambda *seq = (Scheme_Case_Lambda *)data; + + for (i = 0; i < seq->count; i++) { + le = seq->array[i]; + le = scheme_optimize_shift(le, delta, after_depth); + seq->array[i] = le; + } + + return data; +} + Scheme_Object *scheme_unclose_case_lambda(Scheme_Object *expr, int jit) { Scheme_Case_Lambda *cl = (Scheme_Case_Lambda *)expr; @@ -2109,14 +2234,18 @@ Scheme_Object *bangboxenv_execute(Scheme_Object *data) } static void bangboxenv_validate(Scheme_Object *data, Mz_CPort *port, - char *stack, int depth, int letlimit, int delta, int num_toplevels, int num_stxes) + char *stack, Scheme_Hash_Table *ht, Scheme_Object **tls, + int depth, int letlimit, int delta, + int num_toplevels, int num_stxes, int num_lifts) { if (!SCHEME_PAIRP(data)) scheme_ill_formed_code(port); scheme_validate_boxenv(SCHEME_INT_VAL(SCHEME_CAR(data)), port, stack, depth, delta); - scheme_validate_expr(port, SCHEME_CDR(data), stack, depth, letlimit, delta, num_toplevels, num_stxes); + scheme_validate_expr(port, SCHEME_CDR(data), stack, ht, tls, depth, letlimit, delta, + num_toplevels, num_stxes, num_lifts, + NULL, 0); } @@ -2179,7 +2308,9 @@ static Scheme_Object *bangboxvalue_jit(Scheme_Object *data) } static void bangboxvalue_validate(Scheme_Object *data, Mz_CPort *port, - char *stack, int depth, int letlimit, int delta, int num_toplevels, int num_stxes) + char *stack, Scheme_Hash_Table *ht, Scheme_Object **tls, + int depth, int letlimit, int delta, + int num_toplevels, int num_stxes, int num_lifts) { if (!SCHEME_PAIRP(data) || !SCHEME_PAIRP(SCHEME_CDR(data)) @@ -2187,7 +2318,9 @@ static void bangboxvalue_validate(Scheme_Object *data, Mz_CPort *port, || (SCHEME_INT_VAL(SCHEME_CADR(data)) <= SCHEME_INT_VAL(SCHEME_CAR(data)))) scheme_ill_formed_code(port); - scheme_validate_expr(port, SCHEME_CDR(SCHEME_CDR(data)), stack, depth, letlimit, delta, num_toplevels, num_stxes); + scheme_validate_expr(port, SCHEME_CDR(SCHEME_CDR(data)), stack, ht, tls, depth, letlimit, delta, + num_toplevels, num_stxes, num_lifts, + NULL, 0); } /**********************************************************************/ @@ -2269,7 +2402,7 @@ scheme_optimize_lets(Scheme_Object *form, Optimize_Info *info, int for_inline) Scheme_Let_Header *head = (Scheme_Let_Header *)form; Scheme_Compiled_Let_Value *clv, *pre_body, *retry_start; Scheme_Object *body, *value; - int i, j, pos, is_rec, max_let_depth = 0, all_simple = 1, skipped = 0; + int i, j, pos, is_rec, all_simple = 1, skipped = 0; int size_before_opt, did_set_value; /* Special case: (let ([x E]) x) where E is lambda, case-lambda, or @@ -2367,7 +2500,7 @@ scheme_optimize_lets(Scheme_Object *form, Optimize_Info *info, int for_inline) if (is_rec && !body_info->letrec_not_twice && ((i < 1) - || (!scheme_is_compiled_procedure(((Scheme_Compiled_Let_Value *)pre_body->body)->value, 1) + || (!scheme_is_compiled_procedure(((Scheme_Compiled_Let_Value *)pre_body->body)->value, 1, 1) && !is_liftable(((Scheme_Compiled_Let_Value *)pre_body->body)->value, head->count, 5)))) { if (did_set_value) { /* Next RHS ends a reorderable sequence. @@ -2406,10 +2539,6 @@ scheme_optimize_lets(Scheme_Object *form, Optimize_Info *info, int for_inline) retry_start = NULL; did_set_value = 0; } - - if (rhs_info->max_let_depth > max_let_depth) - max_let_depth = rhs_info->max_let_depth; - rhs_info->max_let_depth = 0; pos += pre_body->count; body = pre_body->body; @@ -2444,11 +2573,6 @@ scheme_optimize_lets(Scheme_Object *form, Optimize_Info *info, int for_inline) } } - if (body_info->max_let_depth > max_let_depth) - max_let_depth = body_info->max_let_depth; - - body_info->max_let_depth = (max_let_depth + head->count - skipped); - scheme_optimize_info_done(body_info); return form; @@ -2497,6 +2621,74 @@ scheme_optimize_lets_for_test(Scheme_Object *form, Optimize_Info *info) return scheme_optimize_lets(form, info, 0); } +static int is_lifted_reference(Scheme_Object *v) +{ + if (SCHEME_RPAIRP(v)) + return 1; + + return (SAME_TYPE(SCHEME_TYPE(v), scheme_toplevel_type) + && (SCHEME_TOPLEVEL_FLAGS(v) & SCHEME_TOPLEVEL_CONST)); +} + +static int is_closed_reference(Scheme_Object *v) +{ + /* Look for a converted function (possibly with no new arguments) + that is accessed directly as a closure, instead of through a + top-level reference. */ + if (SCHEME_RPAIRP(v)) { + v = SCHEME_CAR(v); + return SCHEME_PROCP(v); + } + + return 0; +} + +static Scheme_Object *scheme_resolve_generate_stub_closure() +{ + Scheme_Closure *cl; + Scheme_Object **ca; + + cl = scheme_malloc_empty_closure(); + + ca = MALLOC_N(Scheme_Object*, 4); + ca[0] = scheme_make_integer(0); + ca[1] = NULL; + ca[2] = scheme_make_integer(0); + ca[3] = NULL; + + return scheme_make_raw_pair((Scheme_Object *)cl, (Scheme_Object *)ca); +} + +static void shift_lift(Scheme_Object *lifted, int frame_size, int lifted_frame_size) +{ + int i, cnt; + Scheme_Object **ca; + mzshort *map; + + if (!lifted) return; + if (!SCHEME_RPAIRP(lifted)) return; + + ca = (Scheme_Object **)SCHEME_CDR(lifted); + cnt = SCHEME_INT_VAL(ca[0]); + map = (mzshort *)ca[1]; + + for (i = 0; i < cnt; i++) { + map[i] += (frame_size - lifted_frame_size); + } +} + +static int get_convert_arg_count(Scheme_Object *lift) +{ + if (!lift) + return 0; + else if (SCHEME_RPAIRP(lift)) { + Scheme_Object **ca; + ca = (Scheme_Object **)SCHEME_CDR(lift); + return SCHEME_INT_VAL(ca[0]); + } else + return 0; +} + Scheme_Object * scheme_resolve_lets(Scheme_Object *form, Resolve_Info *info) { @@ -2507,7 +2699,12 @@ scheme_resolve_lets(Scheme_Object *form, Resolve_Info *info) Scheme_Object *first = NULL, *body; Scheme_Letrec *letrec; mzshort *skips, skips_fast[5]; + Scheme_Object **lifted, *lifted_fast[5]; int i, pos, opos, rpos, recbox, num_rec_procs = 0, extra_alloc; + int rec_proc_nonapply = 0; + int max_let_depth = 0; + int resolve_phase; + Scheme_Object **lifted_recs; /* Find body: */ body = head->body; @@ -2524,7 +2721,7 @@ scheme_resolve_lets(Scheme_Object *form, Resolve_Info *info) for (i = head->num_clauses; i--; clv = (Scheme_Compiled_Let_Value *)clv->body) { int is_proc, is_lift; - is_proc = scheme_is_compiled_procedure(clv->value, 1); + is_proc = scheme_is_compiled_procedure(clv->value, 1, 1); if (is_proc) is_lift = 0; else @@ -2547,8 +2744,11 @@ scheme_resolve_lets(Scheme_Object *form, Resolve_Info *info) if (recbox) break; - if (scheme_is_compiled_procedure(clv->value, 0)) + if (scheme_is_compiled_procedure(clv->value, 0, 0)) { num_rec_procs++; + if (!(clv->flags[0] & SCHEME_WAS_ONLY_APPLIED)) + rec_proc_nonapply = 1; + } } } } @@ -2566,14 +2766,17 @@ scheme_resolve_lets(Scheme_Object *form, Resolve_Info *info) } if (i < 0) { /* Yes - build chain of Scheme_Let_Ones and we're done: */ - int skip_count = 0, frame_size; + int skip_count = 0, frame_size, lifts_frame_size = 0; int j, k; j = head->num_clauses; - if (j <= 5) + if (j <= 5) { skips = skips_fast; - else + lifted = lifted_fast; + } else { skips = MALLOC_N_ATOMIC(mzshort, j); + lifted = MALLOC_N(Scheme_Object*, j); + } clv = (Scheme_Compiled_Let_Value *)head->body; for (i = 0; i < j; i++, clv = (Scheme_Compiled_Let_Value *)clv->body) { @@ -2581,6 +2784,7 @@ scheme_resolve_lets(Scheme_Object *form, Resolve_Info *info) skips[i] = 1; else skips[i] = 0; + lifted[i] = NULL; } clv = (Scheme_Compiled_Let_Value *)head->body; @@ -2597,15 +2801,40 @@ scheme_resolve_lets(Scheme_Object *form, Resolve_Info *info) frame_size = i + 1 - skip_count; linfo = scheme_resolve_info_extend(info, frame_size, head->count, i + 1); for (j = i, k = 0; j >= 0; j--) { + if (lifts_frame_size != frame_size) { + /* We need to shift coordinates for any lifted[j] that is a + converted procedure. */ + shift_lift(lifted[j], frame_size, lifts_frame_size); + } if (skips[j]) - scheme_resolve_info_add_mapping(linfo, j, 0, 0); + scheme_resolve_info_add_mapping(linfo, j, 0, 0, lifted[j]); else - scheme_resolve_info_add_mapping(linfo, j, k++, 0); + scheme_resolve_info_add_mapping(linfo, j, k++, 0, lifted[j]); } + lifts_frame_size = frame_size; - le = scheme_resolve_expr(clv->value, linfo); + if ((clv->flags[0] & SCHEME_WAS_ONLY_APPLIED) + && SAME_TYPE(SCHEME_TYPE(clv->value), scheme_compiled_unclosed_procedure_type)) + le = scheme_resolve_closure_compilation(clv->value, linfo, 1, 1, 0, NULL); + else + le = scheme_resolve_expr(clv->value, linfo); - if (!(clv->flags[0] & SCHEME_WAS_USED)) { + if (max_let_depth < linfo->max_let_depth + frame_size) + max_let_depth = linfo->max_let_depth + frame_size; + + if (is_lifted_reference(le)) { + lifted[i] = le; + + /* At this point, it's ok to change our mind + about skipping, because compilation for previous + RHSs did not look at this one. */ + if (!skips[i]) { + skips[i] = 1; + skip_count++; + } + } + + if (skips[i]) { /* Unused binding, so drop it. */ } else { Scheme_Let_One *lo; @@ -2628,66 +2857,205 @@ scheme_resolve_lets(Scheme_Object *form, Resolve_Info *info) frame_size = head->count - skip_count; linfo = scheme_resolve_info_extend(info, frame_size, head->count, head->count); + + if (lifts_frame_size != frame_size) { + for (i = head->count; i--; ) { + /* We need to shift coordinates for any lifted[j] that is a + converted procedure. */ + shift_lift(lifted[i], frame_size, lifts_frame_size); + } + } + for (k = 0, i = head->count; i--; ) { if (skips[i]) scheme_resolve_info_add_mapping(linfo, i, ((skips[i] < 0) ? (k - skips[i] - 1) - : (skips[i] - 1 + frame_size)), 0); + : (skips[i] - 1 + frame_size)), + 0, lifted[i]); else - scheme_resolve_info_add_mapping(linfo, i, k++, 0); + scheme_resolve_info_add_mapping(linfo, i, k++, 0, lifted[i]); } body = scheme_resolve_expr(body, linfo); if (last) ((Scheme_Let_One *)last)->body = body; - else + else { first = body; - + } + + if (max_let_depth < linfo->max_let_depth + frame_size) + max_let_depth = linfo->max_let_depth + frame_size; + + if (info->max_let_depth < max_let_depth) + info->max_let_depth = max_let_depth; + return first; } } - linfo = scheme_resolve_info_extend(info, head->count, head->count, head->count); + /* First assume that all letrec-bound procedures can be lifted to empty closures. + Then try assuming that all letrec-bound procedures can be at least lifted. + Then fall back to assuming no lifts. */ + + linfo = 0; + for (resolve_phase = ((num_rec_procs && !rec_proc_nonapply) ? 0 : 2); resolve_phase < 3; resolve_phase++) { - /* Build mapping of compile-time indices to run-time indices, shuffling - letrecs to fall together: */ - clv = (Scheme_Compiled_Let_Value *)head->body; - pos = num_rec_procs; - rpos = 0; opos = 0; - for (i = head->num_clauses; i--; clv = (Scheme_Compiled_Let_Value *)clv->body) { - int j; + /* Don't try plain lifting if top level is not available: */ + if ((resolve_phase == 1) && !scheme_resolve_is_toplevel_available(info)) + resolve_phase = 2; - for (j = 0; j < clv->count; j++) { - int p; + if (resolve_phase < 2) { + linfo = scheme_resolve_info_extend(info, head->count - num_rec_procs, head->count, head->count); + lifted_recs = MALLOC_N(Scheme_Object *, num_rec_procs); + } else { + linfo = scheme_resolve_info_extend(info, head->count, head->count, head->count); + lifted_recs = NULL; + } - if (num_rec_procs && scheme_is_compiled_procedure(clv->value, 0)) - p = rpos++; - else - p = pos++; + /* Build mapping of compile-time indices to run-time indices, shuffling + letrecs to fall together in the shallowest part. Also determine + and initialize lifts for recursive procedures. Generating lift information + requires an iteration. */ + clv = (Scheme_Compiled_Let_Value *)head->body; + pos = ((resolve_phase < 2) ? 0 : num_rec_procs); + rpos = 0; opos = 0; + for (i = head->num_clauses; i--; clv = (Scheme_Compiled_Let_Value *)clv->body) { + int j; + + for (j = 0; j < clv->count; j++) { + int p, skip; + Scheme_Object *lift; + + skip = 0; + if (num_rec_procs && scheme_is_compiled_procedure(clv->value, 0, 0)) { + if (resolve_phase == 0) { + lift = scheme_resolve_generate_stub_closure(); + lifted_recs[rpos] = lift; + p = 0; + } else if (resolve_phase == 1) { + lift = scheme_resolve_generate_stub_lift(); + lifted_recs[rpos] = lift; + p = 0; + } else { + lift = NULL; + p = rpos; + } + rpos++; + } else { + p = pos++; + lift = NULL; + } - scheme_resolve_info_add_mapping(linfo, opos, p, - ((recbox - || (clv->flags[j] & SCHEME_WAS_SET_BANGED)) - ? SCHEME_INFO_BOXED - : 0)); + scheme_resolve_info_add_mapping(linfo, opos, p, + ((recbox + || (clv->flags[j] & SCHEME_WAS_SET_BANGED)) + ? SCHEME_INFO_BOXED + : 0), + lift); - opos++; + opos++; + } + } + + if (resolve_phase < 2) { + /* Given the assumption that all are closed/lifted, compute + actual lift info. We have to iterate if there are + conversions, because a conversion can trigger another + conversion. If the conversion changes for an item, it's + always by adding more conversion arguments. */ + int converted; + do { + clv = (Scheme_Compiled_Let_Value *)head->body; + rpos = 0; opos = 0; + converted = 0; + for (i = head->num_clauses; i--; clv = (Scheme_Compiled_Let_Value *)clv->body) { + if (scheme_is_compiled_procedure(clv->value, 0, 0)) { + Scheme_Object *lift, *old_lift; + int old_convert_count; + + old_lift = lifted_recs[rpos]; + old_convert_count = get_convert_arg_count(old_lift); + + lift = scheme_resolve_closure_compilation(clv->value, linfo, 1, 1, 1, + (resolve_phase ? NULL : old_lift)); + + if (is_closed_reference(lift) + || (is_lifted_reference(lift) && resolve_phase)) { + if (!SAME_OBJ(old_lift, lift)) + scheme_resolve_info_adjust_mapping(linfo, opos, rpos, 0, lift); + lifted_recs[rpos] = lift; + if (get_convert_arg_count(lift) != old_convert_count) + converted = 1; + } else { + lifted_recs = NULL; + converted = 0; + break; + } + rpos++; + } + opos += clv->count; + } + } while (converted); + + if (lifted_recs) { + /* All can be closed or lifted --- and some may be converted. + For the converted ones, the argument conversion is right. For + lifted ones, we need to generate the actual offset. For fully + closed ones, we need the actual closure. + + If we succeeded with resolve_phase == 0, then all can be + fully closed. We need to resolve again with the stub + closures in place, and the mutate the stub closures with + the actual closure info. + + If we succeeded with resolve_phase == 1, then we need + actual lift offsets before resolving procedure bodies. + Also, we need to fix up the stub closures. */ + clv = (Scheme_Compiled_Let_Value *)head->body; + rpos = 0; opos = 0; + for (i = head->num_clauses; i--; clv = (Scheme_Compiled_Let_Value *)clv->body) { + if (scheme_is_compiled_procedure(clv->value, 0, 0)) { + Scheme_Object *lift; + lift = lifted_recs[rpos]; + if (is_closed_reference(lift)) { + (void)scheme_resolve_closure_compilation(clv->value, linfo, 1, 1, 0, lift); + /* lift is the final result; this result might be + referenced in the body of closures already, or in + not-yet-closed functions. If no one uses the result + via linfo, then the code was dead and it will get + GCed. */ + clv->value = NULL; /* inidicates that there's nothing more to do with the expr */ + } else { + lift = scheme_resolve_closure_compilation(clv->value, linfo, 1, 1, 2, NULL); + /* need to resolve one more time for the body of the lifted function */ + } + scheme_resolve_info_adjust_mapping(linfo, opos, rpos, 0, lift); + lifted_recs[rpos] = lift; + rpos++; + } + opos += clv->count; + } + + break; /* don't need to iterate */ + } } } - /* Resolve body: */ - body = scheme_resolve_expr(body, linfo); - extra_alloc = 0; val_linfo = linfo; if (num_rec_procs) { - Scheme_Object **sa; - letrec = MALLOC_ONE_TAGGED(Scheme_Letrec); - letrec->so.type = scheme_letrec_type; - letrec->count = num_rec_procs; - sa = MALLOC_N(Scheme_Object *, num_rec_procs); - letrec->procs = sa; + if (!lifted_recs) { + Scheme_Object **sa; + letrec = MALLOC_ONE_TAGGED(Scheme_Letrec); + letrec->so.type = scheme_letrec_type; + letrec->count = num_rec_procs; + sa = MALLOC_N(Scheme_Object *, num_rec_procs); + letrec->procs = sa; + } else { + extra_alloc = -num_rec_procs; + letrec = NULL; + } } else letrec = NULL; @@ -2697,12 +3065,26 @@ scheme_resolve_lets(Scheme_Object *form, Resolve_Info *info) for (i = head->num_clauses; i--; clv = (Scheme_Compiled_Let_Value *)clv->body) { int isproc; Scheme_Object *expr; - isproc = scheme_is_compiled_procedure(clv->value, 0); - expr = scheme_resolve_expr(clv->value, val_linfo); + if (!clv->value) + isproc = 1; + else + isproc = scheme_is_compiled_procedure(clv->value, 0, 0); if (num_rec_procs && isproc) { - letrec->procs[rpos++] = expr; + if (!lifted_recs) { + expr = scheme_resolve_closure_compilation(clv->value, val_linfo, 0, 0, 0, NULL); + letrec->procs[rpos++] = expr; + } else { + if (!is_closed_reference(lifted_recs[rpos])) { + /* Side-effect is to install lifted function: */ + (void)scheme_resolve_closure_compilation(clv->value, val_linfo, 1, 1, 0, lifted_recs[rpos]); + } + rpos++; + } } else { int j; + Scheme_Object *one_lifted; + + expr = scheme_resolve_expr(clv->value, val_linfo); lv = MALLOC_ONE_TAGGED(Scheme_Let_Value); if (last) @@ -2715,8 +3097,8 @@ scheme_resolve_lets(Scheme_Object *form, Resolve_Info *info) lv->value = expr; if (clv->count) { int li; - li = scheme_resolve_info_lookup(linfo, clv->position, NULL); - lv->position = li + extra_alloc; + li = scheme_resolve_info_lookup(linfo, clv->position, NULL, NULL, 0); + lv->position = li; } else lv->position = 0; lv->count = clv->count; @@ -2724,7 +3106,7 @@ scheme_resolve_lets(Scheme_Object *form, Resolve_Info *info) for (j = lv->count; j--; ) { if (!recbox - && (scheme_resolve_info_flags(linfo, opos + j) & SCHEME_INFO_BOXED)) { + && (scheme_resolve_info_flags(linfo, opos + j, &one_lifted) & SCHEME_INFO_BOXED)) { Scheme_Object *sl; /* See bangboxval... */ sl = scheme_make_syntax_resolved(BOXVAL_EXPD, @@ -2737,17 +3119,22 @@ scheme_resolve_lets(Scheme_Object *form, Resolve_Info *info) } opos += clv->count; } - + + /* Resolve body: */ + body = scheme_resolve_expr(body, linfo); + if (letrec) { letrec->body = body; if (last) last->body = (Scheme_Object *)letrec; else first = (Scheme_Object *)letrec; - } else + } else if (last) last->body = body; + else + first = body; - { + if (head->count + extra_alloc) { Scheme_Let_Void *lvd; lvd = MALLOC_ONE_TAGGED(Scheme_Let_Void); @@ -2759,6 +3146,9 @@ scheme_resolve_lets(Scheme_Object *form, Resolve_Info *info) first = (Scheme_Object *)lvd; } + if (info->max_let_depth < linfo->max_let_depth + head->count) + info->max_let_depth = linfo->max_let_depth + head->count; + return first; } @@ -3540,14 +3930,19 @@ static Scheme_Object *begin0_jit(Scheme_Object *data) return (Scheme_Object *)seq2; } -static void begin0_validate(Scheme_Object *data, Mz_CPort *port, char *stack, - int depth, int letlimit, int delta, int num_toplevels, int num_stxes) +static void begin0_validate(Scheme_Object *data, Mz_CPort *port, + char *stack, Scheme_Hash_Table *ht, Scheme_Object **tls, + int depth, int letlimit, int delta, + int num_toplevels, int num_stxes, int num_lifts) { Scheme_Sequence *seq = (Scheme_Sequence *)data; int i; for (i = 0; i < seq->count; i++) { - scheme_validate_expr(port, seq->array[i], stack, depth, letlimit, delta, num_toplevels, num_stxes); + scheme_validate_expr(port, seq->array[i], stack, ht, tls, + depth, letlimit, delta, + num_toplevels, num_stxes, num_lifts, + NULL, 0); } } @@ -3575,6 +3970,21 @@ begin0_clone(Scheme_Object *obj, Optimize_Info *info, int delta, int closure_dep return scheme_make_syntax_compiled(BEGIN0_EXPD, obj); } +static Scheme_Object *begin0_shift(Scheme_Object *obj, int delta, int after_depth) +{ + int i; + + i = ((Scheme_Sequence *)obj)->count; + + while (i--) { + Scheme_Object *le; + le = scheme_optimize_shift(((Scheme_Sequence *)obj)->array[i], delta, after_depth); + ((Scheme_Sequence *)obj)->array[i] = le; + } + + return scheme_make_syntax_compiled(BEGIN0_EXPD, obj); +} + static Scheme_Object * begin0_resolve(Scheme_Object *obj, Resolve_Info *info) { @@ -3933,8 +4343,9 @@ static Scheme_Object *define_for_syntaxes_jit(Scheme_Object *expr) } static void do_define_syntaxes_validate(Scheme_Object *data, Mz_CPort *port, - char *stack, int depth, int letlimit, int delta, - int num_toplevels, int num_stxes, + char *stack, Scheme_Hash_Table *ht, Scheme_Object **tls, + int depth, int letlimit, int delta, + int num_toplevels, int num_stxes, int num_lifts, int for_stx) { Resolve_Prefix *rp; @@ -3970,34 +4381,38 @@ static void do_define_syntaxes_validate(Scheme_Object *data, Mz_CPort *port, scheme_ill_formed_code(port); } - scheme_validate_toplevel(dummy, port, stack, depth, delta, num_toplevels, num_stxes); + scheme_validate_toplevel(dummy, port, stack, ht, tls, depth, delta, num_toplevels, num_stxes, num_lifts); if (!for_stx) { - scheme_validate_code(port, val, sdepth, rp->num_toplevels, rp->num_stxes); + scheme_validate_code(port, val, ht, sdepth, rp->num_toplevels, rp->num_stxes, rp->num_lifts); } else { /* Make a fake `define-values' to check with respect to the exp-time stack */ val = scheme_make_syntax_resolved(DEFINE_VALUES_EXPD, cons(names, val)); - scheme_validate_code(port, val, sdepth, rp->num_toplevels, rp->num_stxes); + scheme_validate_code(port, val, ht, sdepth, rp->num_toplevels, rp->num_stxes, rp->num_lifts); } } static void define_syntaxes_validate(Scheme_Object *data, Mz_CPort *port, - char *stack, int depth, int letlimit, int delta, - int num_toplevels, int num_stxes) + char *stack, Scheme_Hash_Table *ht, Scheme_Object **tls, + int depth, int letlimit, int delta, + int num_toplevels, int num_stxes, int num_lifts) { - do_define_syntaxes_validate(data, port, stack, depth, letlimit, delta, num_toplevels, num_stxes, 0); + do_define_syntaxes_validate(data, port, stack, ht, tls, depth, letlimit, delta, + num_toplevels, num_stxes, num_lifts, 0); } static void define_for_syntaxes_validate(Scheme_Object *data, Mz_CPort *port, - char *stack, int depth, int letlimit, int delta, - int num_toplevels, int num_stxes) + char *stack, Scheme_Hash_Table *ht, Scheme_Object **tls, + int depth, int letlimit, int delta, + int num_toplevels, int num_stxes, int num_lifts) { - do_define_syntaxes_validate(data, port, stack, depth, letlimit, delta, num_toplevels, num_stxes, 1); + do_define_syntaxes_validate(data, port, stack, ht, tls, depth, letlimit, delta, + num_toplevels, num_stxes, num_lifts, 1); } static Scheme_Object *do_define_syntaxes_optimize(Scheme_Object *data, Optimize_Info *info, int for_stx) { - Scheme_Object *cp, *names, *val, *base_stack_depth, *dummy; + Scheme_Object *cp, *names, *val, *dummy; Optimize_Info *einfo; cp = SCHEME_CAR(data); @@ -4012,13 +4427,10 @@ static Scheme_Object *do_define_syntaxes_optimize(Scheme_Object *data, Optimize_ val = scheme_optimize_expr(val, einfo); - base_stack_depth = scheme_make_integer(einfo->max_let_depth); - return scheme_make_syntax_compiled((for_stx ? DEFINE_FOR_SYNTAX_EXPD : DEFINE_SYNTAX_EXPD), cons(cp, - cons(base_stack_depth, - cons(dummy, - cons(names, val))))); + cons(dummy, + cons(names, val)))); } static Scheme_Object *define_syntaxes_optimize(Scheme_Object *data, Optimize_Info *info) @@ -4039,8 +4451,7 @@ static Scheme_Object *do_define_syntaxes_resolve(Scheme_Object *data, Resolve_In Resolve_Info *einfo; cp = (Comp_Prefix *)SCHEME_CAR(data); - base_stack_depth = SCHEME_CADR(data); - data = SCHEME_CDDR(data); + data = SCHEME_CDR(data); dummy = SCHEME_CAR(data); data = SCHEME_CDR(data); @@ -4057,6 +4468,8 @@ static Scheme_Object *do_define_syntaxes_resolve(Scheme_Object *data, Resolve_In names = scheme_resolve_list(names, einfo); val = scheme_resolve_expr(val, einfo); + base_stack_depth = scheme_make_integer(einfo->max_let_depth); + return scheme_make_syntax_resolved((for_stx ? DEFINE_FOR_SYNTAX_EXPD : DEFINE_SYNTAX_EXPD), cons((Scheme_Object *)rp, cons(base_stack_depth, @@ -4295,7 +4708,7 @@ Scheme_Object *scheme_bind_syntaxes(const char *where, Scheme_Object *names, Sch but it's not likely that a let-syntax-bound macro is going to run lots of times, so JITting is probably not worth it. */ - a = eval_letmacro_rhs(a, rhs_env, oi->max_let_depth, rp, eenv->genv->phase, certs); + a = eval_letmacro_rhs(a, rhs_env, ri->max_let_depth, rp, eenv->genv->phase, certs); if (SAME_OBJ(a, SCHEME_MULTIPLE_VALUES)) vc = scheme_current_thread->ku.multiple.count;