From a020290c653598b34e023b961ca7f73c9824c4c8 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Mon, 31 Jul 2006 13:06:39 +0000 Subject: [PATCH] 352.2, including clean up of MSVC 8.0 build warnings svn: r3903 --- src/mzscheme/include/scheme.h | 3 + src/mzscheme/src/cstartup.inc | 4018 ++++++++++++----------- src/mzscheme/src/env.c | 10 + src/mzscheme/src/eval.c | 224 +- src/mzscheme/src/file.c | 2 +- src/mzscheme/src/fun.c | 12 +- src/mzscheme/src/lightning/i386/funcs.h | 4 +- src/mzscheme/src/module.c | 83 +- src/mzscheme/src/mzmarksrc.c | 1 + src/mzscheme/src/network.c | 2 +- src/mzscheme/src/read.c | 4 +- src/mzscheme/src/schexpobs.h | 136 + src/mzscheme/src/schpriv.h | 13 +- src/mzscheme/src/schvers.h | 4 +- src/mzscheme/src/startup.inc | 191 +- src/mzscheme/src/startup.ss | 262 +- src/mzscheme/src/syntax.c | 555 ++-- src/worksp/gc2/make.ss | 8 +- src/worksp/jpeg/jpeg.vcproj | 5 +- src/worksp/libmred/libmred.vcproj | 5 +- src/worksp/libmzgc/libmzgc.vcproj | 5 +- src/worksp/libmzsch/libmzsch.vcproj | 5 +- src/worksp/mred/mred.vcproj | 5 +- src/worksp/mzscheme/mzscheme.vcproj | 29 +- src/worksp/png/png.vcproj | 4 +- src/worksp/wxme/wxme.vcproj | 5 +- src/worksp/wxs/wxs.vcproj | 5 +- src/worksp/wxutils/wxutils.vcproj | 5 +- src/worksp/wxwin/wxwin.vcproj | 5 +- src/worksp/zlib/zlib.vcproj | 4 +- src/wxcommon/wxGC.h | 28 + src/wxmac/src/mac/wx_buttn.cc | 4 +- src/wxmac/src/mac/wx_check.cc | 2 +- src/wxmac/src/mac/wx_rbut.cc | 4 +- src/wxmac/src/mac/wx_slidr.cc | 3 +- src/wxwindow/src/msw/wx_pdf.cxx | 1 - 36 files changed, 3187 insertions(+), 2469 deletions(-) create mode 100644 src/mzscheme/src/schexpobs.h diff --git a/src/mzscheme/include/scheme.h b/src/mzscheme/include/scheme.h index 75244242ef..a7da81bd40 100644 --- a/src/mzscheme/include/scheme.h +++ b/src/mzscheme/include/scheme.h @@ -1041,6 +1041,7 @@ typedef void (*Scheme_Kill_Action_Func)(void *); savebuf = scheme_current_thread->error_buf; \ scheme_current_thread->error_buf = &newbuf; \ if (scheme_setjmp(newbuf)) { \ + scheme_pop_kill_action(); \ func(data); \ scheme_longjmp(*savebuf, 1); \ } else { @@ -1146,6 +1147,8 @@ enum { MZCONFIG_THREAD_SET, MZCONFIG_THREAD_INIT_STACK_SIZE, + MZCONFIG_EXPAND_OBSERVE, + __MZCONFIG_BUILTIN_COUNT__ }; diff --git a/src/mzscheme/src/cstartup.inc b/src/mzscheme/src/cstartup.inc index 4947e091d9..3aa21e62cd 100644 --- a/src/mzscheme/src/cstartup.inc +++ b/src/mzscheme/src/cstartup.inc @@ -1,5 +1,5 @@ { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,53,50,46,49,53,252,12,6,159,33,20,98,159,33,16,1,20, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,53,50,46,50,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, @@ -77,144 +77,227 @@ EVAL_ONE_SIZED_STR((char *)expr, 1560); } { - 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, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,53,50,46,50,118,252,183,17,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); +1,16,0,11,11,16,1,2,4,34,11,16,6,66,108,101,116,114,101,99,5, +70,113,117,97,115,105,113,117,111,116,101,6,62,111,114,7,63,108,101,116,8, +63,97,110,100,9,64,108,101,116,42,10,16,6,11,11,11,11,11,11,16,6, +2,5,2,6,2,7,2,8,2,9,2,10,33,39,96,16,5,95,2,8,2, +10,2,5,87,98,83,159,33,93,80,159,33,51,34,89,162,33,37,45,65,99, +104,101,99,107,11,223,0,28,248,22,57,196,12,27,28,194,248,22,77,197,248, +80,158,35,33,248,80,158,36,33,248,22,52,199,28,28,248,22,57,198,11,28, +249,22,221,194,248,22,52,200,10,27,248,22,53,199,28,248,22,57,193,11,28, +249,22,221,195,248,22,52,195,10,249,32,12,89,162,33,35,40,71,105,100,45, +105,110,45,108,105,115,116,63,13,222,28,248,22,57,194,11,28,249,22,221,194, +248,22,52,196,10,27,248,22,53,195,28,248,22,57,193,11,28,249,22,221,195, +248,22,52,195,10,27,248,22,53,194,28,248,22,57,193,11,28,249,22,221,196, +248,22,52,195,10,249,2,12,196,248,22,53,195,195,248,22,53,195,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,199,196,251,80,159,38,51,34,198,199,248,22,53,201,249,22, +51,198,203,83,159,33,93,80,159,33,50,34,89,162,33,37,45,2,11,223,0, +28,248,22,57,197,12,27,28,195,248,22,77,198,248,80,158,35,33,248,80,158, +36,33,248,22,52,200,27,250,22,116,198,248,22,210,197,9,28,28,248,22,57, +193,11,28,249,22,221,195,248,22,52,195,10,27,248,22,53,194,28,248,22,57, +193,11,28,249,22,221,196,248,22,52,195,10,249,2,12,196,248,22,53,195,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,201,197,87,94,250,22,115,198,248,22,210,197,249,22, +51,198,197,251,80,159,39,50,34,199,200,201,248,22,53,203,83,159,33,93,80, +159,33,49,34,89,162,33,37,49,64,108,111,111,112,14,223,0,28,248,22,57, +197,9,27,248,22,52,198,249,22,56,28,28,248,80,158,37,35,195,28,248,80, +158,37,35,248,80,158,38,34,196,248,80,158,37,36,248,80,158,38,34,248,80, +158,39,34,197,11,11,28,248,22,41,248,22,210,248,80,158,39,33,197,28,196, +249,22,51,248,80,158,39,33,197,248,80,158,39,33,248,80,158,40,34,198,250, +22,209,201,249,22,56,249,22,56,248,80,158,44,33,202,9,248,80,158,42,34, +200,197,251,22,252,39,2,11,6,30,30,98,97,100,32,115,121,110,116,97,120, +32,40,110,111,116,32,97,110,32,105,100,101,110,116,105,102,105,101,114,41,201, +248,80,158,41,33,199,251,22,252,39,2,11,6,59,59,98,97,100,32,115,121, +110,116,97,120,32,40,110,111,116,32,97,110,32,105,100,101,110,116,105,102,105, +101,114,32,97,110,100,32,101,120,112,114,101,115,115,105,111,110,32,102,111,114, +32,97,32,98,105,110,100,105,110,103,41,201,198,251,80,159,40,49,34,200,201, +202,248,22,53,204,83,159,33,93,80,159,33,48,34,89,162,33,34,38,70,115, +116,120,45,50,108,105,115,116,63,15,223,0,28,248,80,158,34,35,194,28,248, +80,158,34,35,248,80,158,35,34,195,248,80,158,34,36,248,80,158,35,34,248, +80,158,36,34,196,11,11,83,159,33,93,80,159,33,47,34,89,162,33,34,37, +68,115,116,120,45,99,97,100,114,16,223,0,248,80,158,34,33,248,80,158,35, +34,195,27,20,15,159,34,33,39,27,89,162,33,37,8,32,62,103,111,17,224, +2,1,91,159,35,11,90,161,34,33,11,80,159,36,47,34,90,161,34,34,11, +80,159,36,48,34,87,94,28,28,248,80,158,37,37,197,27,248,80,158,38,34, +198,28,248,80,158,38,36,193,10,28,248,80,158,38,36,248,80,158,39,34,194, +10,28,198,28,248,22,41,248,22,210,248,80,158,40,33,195,248,80,158,38,36, +248,80,158,39,34,248,80,158,40,34,195,11,11,10,250,22,252,39,2,11,6, +10,10,98,97,100,32,115,121,110,116,97,120,199,12,27,28,198,27,248,80,158, +39,33,248,80,158,40,34,200,28,248,22,41,248,22,210,194,192,11,11,27,248, +80,158,39,38,27,28,195,248,80,158,41,34,201,200,248,80,158,41,33,248,80, +158,42,34,194,27,248,80,158,40,34,248,80,158,41,34,28,196,248,80,158,42, +34,202,201,28,193,27,251,80,159,44,49,34,199,204,202,198,87,94,28,202,12, +28,249,22,183,248,22,64,195,38,27,247,22,110,251,80,159,45,50,34,196,200, +205,197,251,80,159,44,51,34,199,204,196,9,250,22,209,201,28,198,250,22,1, +22,60,250,22,60,20,15,159,49,35,39,248,22,60,249,22,60,248,22,60,23, +16,250,22,62,20,15,159,55,36,39,249,22,1,22,60,249,22,2,22,52,23, +19,23,16,204,249,22,2,22,53,200,250,22,62,23,17,198,199,203,251,22,252, +39,2,11,6,62,62,98,97,100,32,115,121,110,116,97,120,32,40,110,111,116, +32,97,32,115,101,113,117,101,110,99,101,32,111,102,32,105,100,101,110,116,105, +102,105,101,114,45,45,101,120,112,114,101,115,115,105,111,110,32,98,105,110,100, +105,110,103,115,41,203,248,80,158,44,33,248,80,158,45,34,205,250,22,7,89, +162,33,34,40,9,224,5,3,251,196,198,10,11,20,15,159,38,37,39,89,162, +33,34,40,9,224,5,3,251,196,198,11,10,20,15,159,38,38,39,89,162,33, +34,40,9,224,5,3,251,196,198,11,11,20,15,159,38,39,39,38,20,98,159, +38,16,6,30,18,65,35,37,115,116,120,19,67,115,116,120,45,99,97,114,20, +5,30,21,2,19,67,115,116,120,45,99,100,114,22,6,30,23,2,19,69,115, +116,120,45,112,97,105,114,63,24,11,30,25,2,19,69,115,116,120,45,110,117, +108,108,63,26,10,30,27,2,19,69,115,116,120,45,108,105,115,116,63,28,8, +30,29,2,19,69,115,116,120,45,62,108,105,115,116,30,4,16,7,18,16,2, +97,70,108,97,109,98,100,97,45,115,116,120,31,38,97,36,10,33,11,16,14, +2,6,2,2,2,7,2,2,2,8,2,2,2,10,2,2,2,4,2,2,2, +5,2,2,2,9,2,2,98,35,10,34,11,93,159,2,19,9,11,16,0,96, +34,8,254,1,11,16,0,9,18,16,2,158,73,108,101,116,114,101,99,45,118, +97,108,117,101,115,32,38,9,18,16,2,103,2,32,45,36,35,34,16,6,44, +11,2,31,77,108,101,116,114,101,99,45,118,97,108,117,101,115,45,115,116,120, +33,3,1,7,101,110,118,50,53,53,48,34,2,34,16,10,43,11,63,115,116, +120,35,66,110,97,109,101,100,63,36,65,115,116,97,114,63,37,66,116,97,114, +103,101,116,38,3,1,7,101,110,118,50,53,53,50,39,2,39,2,39,2,39, +16,8,42,11,2,15,2,13,2,16,3,1,7,101,110,118,50,53,53,53,40, +3,1,7,101,110,118,50,53,53,52,41,3,1,7,101,110,118,50,53,53,51, +42,16,4,41,11,64,110,97,109,101,43,3,1,7,101,110,118,50,53,54,49, +44,16,6,40,11,68,98,105,110,100,105,110,103,115,45,64,98,111,100,121,46, +3,1,7,101,110,118,50,53,54,51,47,2,47,16,4,39,11,72,110,101,119, +45,98,105,110,100,105,110,103,115,48,3,1,7,101,110,118,50,53,54,52,49, +9,18,16,2,158,66,108,97,109,98,100,97,50,45,9,18,16,2,100,70,108, +101,116,45,118,97,108,117,101,115,51,48,36,35,34,44,16,4,47,11,2,17, +3,1,7,101,110,118,50,53,53,49,52,16,4,46,11,2,35,3,1,7,101, +110,118,50,53,55,53,53,9,18,16,2,100,71,108,101,116,42,45,118,97,108, +117,101,115,54,50,36,35,34,44,47,16,4,49,11,2,35,3,1,7,101,110, +118,50,53,55,54,55,9,18,16,2,100,2,32,52,36,35,34,44,47,16,4, +51,11,2,35,3,1,7,101,110,118,50,53,55,55,56,9,11,16,5,93,2, +6,87,97,83,159,33,93,80,159,33,56,34,89,162,33,38,51,62,113,113,57, +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,58,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,59,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,58,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,60,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,61,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,62,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, +63,2,19,71,105,100,101,110,116,105,102,105,101,114,63,64,2,2,23,2,21, +2,25,2,18,2,27,16,14,18,16,2,97,64,104,101,114,101,65,53,36,35, +34,9,18,16,2,158,2,58,53,9,18,16,2,158,2,59,53,9,18,16,2, +100,9,57,36,35,34,16,8,56,11,2,65,71,117,110,113,117,111,116,101,45, +115,116,120,66,1,20,117,110,113,117,111,116,101,45,115,112,108,105,99,105,110, +103,45,115,116,120,67,3,1,7,101,110,118,50,53,55,57,68,2,68,2,68, +16,4,55,11,67,105,110,45,102,111,114,109,69,3,1,7,101,110,118,50,53, +56,48,70,16,6,54,11,61,120,71,63,111,108,100,72,3,1,7,101,110,118, +50,53,56,50,73,2,73,9,18,16,2,158,65,113,117,111,116,101,74,57,9, +18,16,2,100,64,108,105,115,116,75,59,36,35,34,56,55,16,6,58,11,61, +97,76,61,100,77,3,1,7,101,110,118,50,53,56,51,78,2,78,9,18,16, +2,158,2,75,59,9,18,16,2,158,65,108,105,115,116,42,79,59,9,18,16, +2,158,2,79,59,9,18,16,2,104,2,6,8,32,36,35,34,56,55,16,8, +8,31,11,64,102,111,114,109,80,2,62,2,61,3,1,7,101,110,118,50,53, +56,49,81,2,81,2,81,16,4,8,30,11,2,57,3,1,7,101,110,118,50, +53,56,52,82,16,6,8,29,11,2,71,65,108,101,118,101,108,83,3,1,7, +101,110,118,50,53,56,53,84,2,84,16,4,8,28,11,2,60,3,1,7,101, +110,118,50,53,56,54,85,16,4,8,27,11,65,102,105,114,115,116,86,3,1, +7,101,110,118,50,53,57,50,87,9,18,16,2,106,2,4,8,35,36,35,34, +56,55,8,31,8,30,8,29,8,28,8,27,16,4,8,34,11,64,114,101,115, +116,88,3,1,7,101,110,118,50,53,57,53,89,16,8,8,33,11,64,117,113, +115,100,90,65,111,108,100,45,108,91,61,108,92,3,1,7,101,110,118,50,53, +57,55,93,2,93,2,93,9,18,16,2,158,94,107,2,74,8,37,36,35,34, +56,55,8,31,8,30,8,29,8,28,8,27,8,34,8,33,16,4,8,36,11, +65,114,101,115,116,120,94,3,1,7,101,110,118,50,53,57,57,95,158,2,59, +8,37,8,37,9,18,16,2,105,72,108,105,115,116,45,62,118,101,99,116,111, +114,96,8,40,36,35,34,56,55,8,31,8,30,8,29,8,28,16,4,8,39, +11,2,92,3,1,7,101,110,118,50,54,48,48,97,16,4,8,38,11,62,108, +50,98,3,1,7,101,110,118,50,54,48,49,99,9,18,16,2,105,63,98,111, +120,100,8,43,36,35,34,56,55,8,31,8,30,8,29,8,28,16,4,8,42, +11,61,118,101,3,1,7,101,110,118,50,54,48,50,102,16,4,8,41,11,62, +113,118,103,3,1,7,101,110,118,50,54,48,51,104,9,11,16,5,93,2,9, +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,27,2,21,2,25,2, +23,2,18,16,5,18,16,2,158,2,65,53,9,18,16,2,100,10,8,47,36, +35,34,16,4,8,46,11,2,65,3,1,7,101,110,118,50,54,48,53,105,16, +4,8,45,11,2,71,3,1,7,101,110,118,50,54,48,54,106,16,4,8,44, +11,61,101,107,3,1,7,101,110,118,50,54,48,55,108,9,18,16,2,158,62, +105,102,109,8,47,9,18,16,2,158,2,9,8,47,9,18,16,2,158,11,8, +47,9,11,16,5,93,2,7,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,110,248,80,158,45,37,202,251,22,59,20,15,159, +45,36,39,2,110,2,110,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,63,2,21,2,25,2,23,2,18,2,27,16, +5,18,16,2,158,2,65,53,9,18,16,2,100,11,8,51,36,35,34,16,4, +8,50,11,2,65,3,1,7,101,110,118,50,54,48,57,111,16,4,8,49,11, +2,71,3,1,7,101,110,118,50,54,49,48,112,16,4,8,48,11,2,107,3, +1,7,101,110,118,50,54,49,49,113,9,18,16,2,101,2,8,8,53,36,35, +34,8,50,8,49,8,48,16,4,8,52,11,63,116,109,112,114,3,1,7,101, +110,118,50,54,49,50,115,9,18,16,2,158,2,109,8,53,9,18,16,2,158, +2,7,8,53,9,11,93,83,159,33,93,80,159,33,33,34,32,116,89,162,33, +35,38,2,4,222,28,248,22,58,193,249,22,65,194,195,250,22,252,40,2,2, +59,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,117,94,2,19,2,117,0}; + EVAL_ONE_SIZED_STR((char *)expr, 4547); } { - 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, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,53,50,46,50,44,252,232,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, @@ -230,55 +313,55 @@ 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, +20,15,159,43,37,38,248,22,59,249,22,59,248,22,59,199,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,248,22,59,199,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,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,18,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,54,49,54,19,16,4,42,11,67,105,110,45, +102,111,114,109,20,3,1,7,101,110,118,50,54,49,55,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,54, +49,56,24,2,24,16,4,40,11,2,4,3,1,7,101,110,118,50,54,50,48, +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,54,50,49,28,2,28,44,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, +101,115,116,31,3,1,7,101,110,118,50,54,50,50,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,54, +50,51,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); +18,105,70,108,101,116,45,118,97,108,117,101,115,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,54, +50,52,40,18,158,62,105,102,41,51,18,158,2,41,49,18,158,2,0,49,18, +158,2,0,49,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,54,50,53,42,18,158,2,41,53,18, +158,2,41,49,18,158,2,0,49,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, 1268); } { - 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, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,53,50,46,50,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, @@ -333,7 +416,7 @@ EVAL_ONE_SIZED_STR((char *)expr, 1082); } { - 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, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,53,50,46,50,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, @@ -390,15 +473,15 @@ EVAL_ONE_SIZED_STR((char *)expr, 1127); } { - 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, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,53,50,46,50,104,252,160,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, +33,33,20,98,159,33,16,0,16,0,11,11,16,0,33,11,16,6,66,108,101, +116,47,101,99,3,66,117,110,108,101,115,115,4,67,45,100,101,102,105,110,101, +5,64,119,104,101,110,6,73,100,101,102,105,110,101,45,115,116,114,117,99,116, +7,74,45,100,101,102,105,110,101,45,115,121,110,116,97,120,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, +16,5,94,2,5,2,8,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, @@ -411,150 +494,150 @@ 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, -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,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); +4,16,4,18,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,18,103,2,23,45,36,35,34,16,4,44,11, +2,23,3,1,7,101,110,118,50,54,53,54,27,16,4,43,11,64,98,97,115, +101,28,3,1,7,101,110,118,50,54,53,56,29,16,4,42,11,64,99,111,100, +101,30,3,1,7,101,110,118,50,54,53,57,31,16,4,41,11,64,98,111,100, +121,32,3,1,7,101,110,118,50,54,54,48,33,16,4,40,11,65,102,105,114, +115,116,34,3,1,7,101,110,118,50,54,54,49,35,16,4,39,11,65,112,98, +111,100,121,36,3,1,7,101,110,118,50,54,54,50,37,18,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,54,53,55,39,18,158,75,100,101,102,105,110,101, +45,115,121,110,116,97,120,101,115,40,47,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,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, +54,54,52,42,16,4,48,11,61,108,43,3,1,7,101,110,118,50,54,54,53, +44,18,158,62,105,102,45,50,18,158,2,0,50,11,16,5,93,2,4,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,54,54,55,46,16,4,51,11,2,43,3, +1,7,101,110,118,50,54,54,56,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,3,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,54,55,48,50,16,4,55,11,2,43,3,1,7,101,110,118,50,54, +55,49,51,16,6,54,11,63,118,97,114,52,65,101,120,112,114,115,53,3,1, +7,101,110,118,50,54,55,50,54,2,54,11,16,5,93,2,7,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,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,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,2,56,248,22,59,249,22,59, +21,93,2,75,23,22,21,95,2,45,96,2,45,2,75,94,63,110,111,116,76, +94,70,105,110,115,112,101,99,116,111,114,63,77,2,75,11,96,76,114,97,105, +115,101,45,116,121,112,101,45,101,114,114,111,114,78,94,2,63,2,7,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,79,248,22,252,87,3,200,192,34, +20,98,159,33,16,9,2,18,2,16,2,21,2,11,30,80,2,12,69,115,116, +120,45,108,105,115,116,63,81,8,30,82,2,12,69,115,116,120,45,112,97,105, +114,63,83,11,2,14,30,84,2,12,69,115,116,120,45,110,117,108,108,63,85, +10,30,86,2,24,72,103,101,116,45,115,116,120,45,105,110,102,111,87,0,16, +2,18,158,93,101,77,99,117,114,114,101,110,116,45,105,110,115,112,101,99,116, +111,114,88,8,29,36,35,34,16,4,8,28,11,2,55,3,1,7,101,110,118, +50,54,55,52,89,16,4,8,27,11,63,115,116,120,90,3,1,7,101,110,118, +50,54,55,56,91,16,4,59,11,2,32,3,1,7,101,110,118,50,54,55,57, +92,16,6,58,11,2,71,2,74,3,1,7,101,110,118,50,54,56,48,93,2, +93,8,29,18,104,2,23,8,33,36,35,34,8,28,8,27,59,58,16,10,8, +32,11,64,110,97,109,101,94,71,102,105,101,108,100,45,110,97,109,101,115,95, +2,75,68,115,117,112,101,114,45,105,100,96,3,1,7,101,110,118,50,54,57, +52,97,2,97,2,97,2,97,16,4,8,31,11,73,100,101,102,105,110,101,100, +45,110,97,109,101,115,98,3,1,7,101,110,118,50,54,57,53,99,16,6,8, +30,11,76,115,117,112,101,114,45,105,100,47,115,116,114,117,99,116,58,100,68, +115,116,120,45,105,110,102,111,101,3,1,7,101,110,118,50,54,57,55,102,2, +102,11,9,93,68,35,37,107,101,114,110,101,108,103,98,2,103,2,12,2,19, +2,26,2,25,2,24,0}; + EVAL_ONE_SIZED_STR((char *)expr, 2988); } { - 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, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,53,50,46,50,21,252,37,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); +33,33,20,98,159,33,16,0,16,0,11,11,16,0,33,11,16,13,70,113,117, +97,115,105,113,117,111,116,101,3,66,117,110,108,101,115,115,4,67,45,100,101, +102,105,110,101,5,64,108,101,116,42,6,73,100,101,102,105,110,101,45,115,116, +114,117,99,116,7,66,108,101,116,114,101,99,8,64,99,111,110,100,9,63,97, +110,100,10,64,119,104,101,110,11,63,108,101,116,12,74,45,100,101,102,105,110, +101,45,115,121,110,116,97,120,13,62,111,114,14,66,108,101,116,47,101,99,15, +16,13,71,35,37,113,113,45,97,110,100,45,111,114,16,74,35,37,100,101,102, +105,110,101,45,101,116,45,97,108,17,2,17,2,16,2,17,2,16,66,35,37, +99,111,110,100,18,2,16,2,17,2,16,2,17,2,16,2,17,16,13,2,3, +2,4,2,5,2,6,2,7,2,8,2,9,2,10,2,11,2,12,2,13,2, +14,2,15,33,46,9,9,97,68,35,37,107,101,114,110,101,108,19,65,35,37, +115,116,120,20,2,16,2,18,2,17,9,0}; + EVAL_ONE_SIZED_STR((char *)expr, 305); } { - 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, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,53,50,46,50,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, @@ -598,26 +681,26 @@ 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, +2,44,2,2,2,68,2,2,2,52,2,2,2,78,2,2,2,62,2,2,2, +46,2,2,2,25,2,2,2,54,2,2,2,66,2,2,2,72,2,2,2,58, +2,2,2,56,2,2,2,14,2,2,2,33,2,2,2,60,2,2,2,48,2, +2,2,74,2,2,2,76,2,2,2,4,2,2,2,29,2,2,2,16,2,2, +2,12,2,2,2,10,2,2,2,50,2,2,2,35,2,2,74,115,121,110,116, +97,120,45,109,97,112,112,105,110,103,81,2,2,2,64,2,2,2,27,2,2, +2,6,2,2,2,70,2,2,2,8,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,55,48, +51,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, +55,56,51,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,55,56,55,91,3,1, +7,101,110,118,50,55,56,53,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, +115,95,65,104,97,115,104,33,96,3,1,7,101,110,118,50,55,57,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, +108,101,3,1,7,101,110,118,50,55,57,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,55,57,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, @@ -1053,7 +1136,7 @@ EVAL_ONE_SIZED_STR((char *)expr, 10409); } { - 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, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,53,50,46,50,142,252,143,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, @@ -1144,15 +1227,15 @@ 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, +120,40,3,1,7,101,110,118,50,56,56,49,41,16,4,36,11,61,108,42,3, +1,7,101,110,118,50,56,56,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, +1,7,101,110,118,50,56,56,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, +52,67,97,110,115,119,101,114,115,53,3,1,7,101,110,118,50,56,57,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, +4,43,11,2,38,3,1,7,101,110,118,50,56,57,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, @@ -1161,103 +1244,105 @@ 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, +50,11,2,7,3,1,7,101,110,118,50,56,57,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, +3,1,7,101,110,118,50,56,57,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, +50,56,57,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, +118,97,114,115,70,66,97,110,115,119,101,114,71,3,1,7,101,110,118,50,56, +57,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,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); +57,48,53,76,3,1,7,101,110,118,50,57,48,51,77,3,1,7,101,110,118, +50,57,48,49,78,16,8,52,11,2,73,2,74,2,75,2,76,2,77,2,78, +18,109,2,59,59,40,39,38,37,36,35,34,47,50,49,55,54,53,16,8,58, +11,2,73,2,74,2,75,2,76,2,77,2,78,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,57,49,50,82,2,82,2,82, +18,158,2,17,59,18,158,62,105,102,83,59,18,158,2,59,59,18,111,63,99, +100,114,84,8,29,40,39,38,37,36,35,34,47,50,49,55,54,53,58,57,16, +6,8,28,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,57,49,51,87,2,87,16,4, +8,27,11,63,112,111,115,88,3,1,7,101,110,118,50,57,49,52,89,18,158, +64,99,100,100,114,90,8,29,18,158,65,99,100,100,100,114,91,8,29,18,158, +66,99,100,100,100,100,114,92,8,29,18,158,63,99,97,114,93,8,29,18,158, +64,99,97,100,114,94,8,29,18,158,65,99,97,100,100,114,95,8,29,18,158, +66,99,97,100,100,100,114,96,8,29,18,112,69,108,105,115,116,45,116,97,105, +108,97,8,31,40,39,38,37,36,35,34,47,50,49,55,54,53,58,57,8,28, +8,27,16,4,8,30,11,68,97,99,99,101,115,115,111,114,98,3,1,7,101, +110,118,50,57,49,53,99,18,158,68,108,105,115,116,45,114,101,102,100,8,31, +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,59,18,110,79,109,97,107,101,45,115,121,110,116,97,120, +45,109,97,112,112,105,110,103,102,8,33,40,39,38,37,36,35,34,47,50,49, +55,54,53,58,57,16,8,8,32,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,57, +49,54,104,2,104,2,104,18,158,2,61,8,33,18,158,2,83,59,18,109,2, +59,8,36,40,39,38,37,36,35,34,47,50,49,55,54,53,16,8,8,35,11, +2,73,2,74,2,75,2,76,2,77,2,78,16,10,8,34,11,2,79,2,80, +2,81,61,109,105,2,82,2,82,2,82,2,82,18,158,2,11,8,36,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,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,40,40,39,38,16,4,8,39,11,2, +40,3,1,7,101,110,118,50,57,50,48,123,16,4,8,38,11,68,104,101,114, +101,45,115,116,120,124,3,1,7,101,110,118,50,57,50,50,125,16,4,8,37, +11,2,124,2,125,18,102,2,61,8,45,40,39,38,8,39,16,4,8,44,11, +2,124,2,125,16,4,8,43,11,2,68,3,1,7,101,110,118,50,57,50,54, +126,16,4,8,42,11,71,117,110,105,113,117,101,45,118,97,114,115,127,3,1, +7,101,110,118,50,57,50,55,128,16,4,8,41,11,72,118,97,114,45,98,105, +110,100,105,110,103,115,129,3,1,7,101,110,118,50,57,50,56,130,18,105,9, +8,49,40,39,38,8,39,8,44,8,43,8,42,8,41,16,6,8,48,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,57,51,52,133,2,133,16,6,8, +47,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,57,52,51,136,2,136,16,4,8, +46,11,63,108,101,110,137,3,1,7,101,110,118,50,57,52,54,138,18,158,65, +108,105,115,116,42,139,8,49,18,104,2,61,8,50,40,39,38,8,39,8,44, +8,43,8,42,8,41,8,48,8,47,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, 4251); } { - 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, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,53,50,46,50,70,252,101,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, @@ -1272,10 +1357,10 @@ 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,27,252,22,61,199,200,198,201,202,27,20, +27,248,22,90,197,27,248,22,89,198,27,252,22,61,198,199,200,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, +39,248,22,90,23,15,248,22,87,23,15,248,22,78,23,15,248,22,52,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, @@ -1283,74 +1368,75 @@ 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, +83,10,95,9,8,252,83,10,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,95,159,74,35,37,100,101,102,105, +110,101,45,101,116,45,97,108,26,9,11,159,2,24,9,11,159,71,35,37,113, +113,45,97,110,100,45,111,114,27,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,28,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,29,3,1,7,101,110,118,50,57,53,48,30,16, +12,37,11,3,1,4,103,50,56,52,31,3,1,4,103,50,56,53,32,3,1, +4,103,50,56,54,33,3,1,4,103,50,56,55,34,3,1,4,103,50,56,56, +35,3,1,7,101,110,118,50,57,53,56,36,2,36,2,36,2,36,2,36,16, +12,36,11,61,95,37,64,115,116,120,101,38,62,107,108,39,64,105,100,61,63, +40,66,99,108,97,117,115,101,41,3,1,7,101,110,118,50,57,53,57,42,2, +42,2,42,2,42,2,42,18,158,63,99,116,120,43,42,18,158,73,115,121,110, +116,97,120,45,99,97,115,101,42,42,44,42,18,158,11,42,18,158,2,43,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,197,198,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, +78,23,15,20,15,159,53,38,39,248,22,52,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,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); +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,94,10,95,9,8,252,94,10,2,24,18,100, +2,25,47,41,40,39,16,4,46,11,2,29,3,1,7,101,110,118,50,57,55, +51,45,16,10,45,11,3,1,4,103,50,56,57,46,3,1,4,103,50,57,48, +47,3,1,4,103,50,57,49,48,3,1,4,103,50,57,50,49,3,1,7,101, +110,118,50,57,56,48,50,2,50,2,50,2,50,16,10,44,11,2,37,2,38, +2,39,2,41,3,1,7,101,110,118,50,57,56,49,51,2,51,2,51,2,51, +18,158,2,43,47,18,158,2,44,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,52,47,18,158,2,43, +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,53,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,54,2,11,69,97,112,112,101,110,100,47, +35,102,55,0,30,56,2,11,71,115,116,120,45,110,117,108,108,47,35,102,57, +9,30,58,2,28,75,115,121,110,116,97,120,45,109,97,112,112,105,110,103,63, +59,8,16,13,18,16,2,95,2,23,48,93,8,252,123,10,95,9,8,252,123, +10,2,24,18,100,2,25,52,41,40,39,16,4,51,11,2,29,3,1,7,101, +110,118,50,57,57,51,60,16,8,50,11,3,1,4,103,50,57,51,61,3,1, +4,103,50,57,52,62,3,1,4,103,50,57,53,63,3,1,7,101,110,118,50, +57,57,57,64,2,64,2,64,16,8,49,11,2,37,63,108,111,99,65,67,112, +97,116,116,101,114,110,66,3,1,7,101,110,118,51,48,48,48,67,2,67,2, +67,18,158,2,43,52,18,158,66,115,121,110,116,97,120,68,52,18,158,2,43, +52,18,16,2,95,2,23,53,93,8,252,124,10,95,9,8,252,124,10,2,24, +18,158,2,25,52,18,158,2,43,52,18,158,2,6,52,18,158,2,43,52,18, +158,2,68,52,18,158,2,43,52,18,158,2,43,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,96,68,35,37,107,101,114,110,101, +108,69,2,27,2,24,2,26,95,2,69,2,24,2,28,0}; + EVAL_ONE_SIZED_STR((char *)expr, 1905); } { - 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, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,53,50,46,50,91,252,171,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, @@ -1364,505 +1450,509 @@ 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); +196,197,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,249,22,56,20,15,159,43,49,45,201,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,198,197,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,249,22,56,20,15,159,50,37,45,201,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,9,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,8,2,2,2,10,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,51,48,49,53,60,18,16,2,95,66,115,114,99,116, +97,103,61,40,93,8,252,160,10,95,9,8,252,160,10,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,51,48,50,50,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,51,48,50,51,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,166,10,95,9,8,252,166,10,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,51,48,52,50,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,51,48,52,51,80,2,80,2,80,2,80,2,80,18, +16,2,95,2,61,48,93,8,252,182,10,95,9,8,252,182,10,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,51,48,53,53,82,18,16,2,95,2,61,51,93,8,252,184,10,95, +9,8,252,184,10,2,55,18,158,2,62,50,18,102,2,27,54,37,36,35,34, +46,45,16,4,53,11,2,81,2,82,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,51,48,53, +56,86,2,86,2,86,18,16,2,95,2,61,55,93,8,252,190,10,95,9,8, +252,190,10,2,55,18,103,2,62,57,37,36,35,34,46,45,53,52,16,4,56, +11,2,19,3,1,7,101,110,118,51,48,54,51,87,18,158,2,71,57,18,158, +2,0,57,18,158,2,71,57,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, 2231); } { - 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, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,53,50,46,50,194,252,230,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, +101,114,63,7,2,16,0,11,11,16,0,33,11,16,26,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, -47,35,102,51,0,30,52,2,6,69,115,116,120,45,108,105,115,116,63,53,8, -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,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,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,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,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, -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,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,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,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,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, +117,97,115,105,113,117,111,116,101,9,67,45,100,101,102,105,110,101,10,70,108, +101,116,45,115,121,110,116,97,120,11,70,115,121,110,116,97,120,47,108,111,99, +12,72,115,121,110,116,97,120,45,114,117,108,101,115,13,74,45,100,101,102,105, +110,101,45,115,121,110,116,97,120,14,71,119,105,116,104,45,115,121,110,116,97, +120,15,75,115,121,110,116,97,120,45,105,100,45,114,117,108,101,115,16,73,100, +101,102,105,110,101,45,115,116,114,117,99,116,17,64,119,104,101,110,18,66,117, +110,108,101,115,115,19,63,108,101,116,20,63,97,110,100,21,64,108,101,116,42, +22,66,108,101,116,47,101,99,23,66,108,101,116,114,101,99,24,75,108,101,116, +114,101,99,45,115,121,110,116,97,120,101,115,25,66,115,121,110,116,97,120,26, +72,115,121,110,116,97,120,45,99,97,115,101,42,27,62,111,114,28,64,99,111, +110,100,29,71,115,121,110,116,97,120,45,99,97,115,101,30,73,108,101,116,114, +101,99,45,115,121,110,116,97,120,31,72,108,101,116,45,115,121,110,116,97,120, +101,115,32,16,26,11,70,35,37,119,105,116,104,45,115,116,120,33,71,35,37, +113,113,45,97,110,100,45,111,114,34,74,35,37,100,101,102,105,110,101,45,101, +116,45,97,108,35,11,68,35,37,115,116,120,108,111,99,36,11,2,35,2,33, +11,2,35,2,35,2,35,2,34,2,34,2,34,2,35,2,34,11,69,35,37, +115,116,120,99,97,115,101,37,2,36,2,34,66,35,37,99,111,110,100,38,2, +36,11,11,16,26,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,2,30,2,31,2,32,35,59,98,16,5,93, +2,25,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,9,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,200,202,201,199,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,9,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,39,94,94,94,62,105,100,40,63,46,46,46,41,64,101,120,112,114,42, +2,41,9,65,98,111,100,121,49,43,64,98,111,100,121,44,2,41,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,78,23,16,248,22,87,23,16,20,15,159,47, +41,45,248,22,52,205,248,22,88,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,45,2,6,69,115,116,120,45,112,97,105,114,63,46,11,30, +47,2,6,67,99,111,110,115,47,35,102,48,1,30,49,2,6,67,115,116,120, +45,99,97,114,50,5,30,51,2,6,67,115,116,120,45,99,100,114,52,6,30, +53,2,6,69,97,112,112,101,110,100,47,35,102,54,0,30,55,2,6,69,115, +116,120,45,108,105,115,116,63,56,8,30,57,2,6,73,115,116,120,45,99,104, +101,99,107,47,101,115,99,58,7,30,59,2,6,69,115,116,120,45,62,108,105, +115,116,60,4,30,61,2,6,71,115,116,120,45,110,117,108,108,47,35,102,62, +9,30,63,2,6,70,115,116,120,45,114,111,116,97,116,101,64,12,30,65,2, +36,68,114,101,108,111,99,97,116,101,66,1,30,67,2,37,1,20,101,108,108, +105,112,115,105,115,45,99,111,117,110,116,45,101,114,114,111,114,68,0,16,10, +18,98,64,104,101,114,101,69,39,98,37,10,33,11,97,159,2,36,9,11,159, +2,33,9,11,159,2,37,9,11,159,2,6,9,11,159,74,35,37,115,109,97, +108,108,45,115,99,104,101,109,101,70,9,11,16,14,2,25,2,2,2,11,2, +2,2,16,2,2,2,31,2,2,2,13,2,2,2,4,2,2,2,32,2,2, +98,36,10,34,11,97,159,2,36,9,11,159,2,33,9,11,159,2,37,9,11, +159,2,6,9,11,159,2,70,9,11,16,0,96,35,8,254,1,11,16,0,16, +4,34,11,63,115,116,120,71,3,1,7,101,110,118,51,48,55,55,72,18,16, +2,95,66,115,114,99,116,97,103,73,40,93,8,252,230,10,95,9,8,252,230, +10,2,37,18,16,2,99,2,41,45,93,8,252,230,10,16,6,44,11,61,114, +74,63,115,114,99,75,3,1,7,101,110,118,51,49,48,51,76,2,76,16,4, +43,11,64,101,120,110,104,77,3,1,7,101,110,118,51,49,48,52,78,16,4, +42,11,63,101,115,99,79,3,1,7,101,110,118,51,49,48,53,80,16,4,41, +11,63,101,120,110,81,3,1,7,101,110,118,51,49,48,55,82,95,9,8,252, +230,10,2,37,18,100,64,100,101,115,116,83,48,37,36,35,34,16,12,47,11, +3,1,4,103,51,48,52,84,3,1,4,103,51,48,53,85,3,1,4,103,51, +48,54,86,3,1,4,103,51,48,55,87,3,1,4,103,51,48,56,88,3,1, +7,101,110,118,51,48,57,48,89,2,89,2,89,2,89,2,89,16,12,46,11, +61,95,90,2,40,2,42,2,43,2,44,3,1,7,101,110,118,51,48,57,49, +91,2,91,2,91,2,91,2,91,18,158,63,99,116,120,92,48,18,158,2,39, +48,18,158,2,92,48,18,158,2,92,48,18,158,9,48,18,158,2,92,48,11, +16,5,93,2,31,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,9,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,200,202, +201,199,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,9,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,39,94,94,93,2,40,2,42,2,41,9,2,43,2,44,2,41,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,78,23,16,248,22,87,23,16,20,15, +159,47,43,45,248,22,52,205,248,22,88,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,45,2,47,2,49,2,51,2,53,2,55,2,57,2, +61,2,59,2,63,2,65,2,67,16,12,18,98,2,69,50,37,36,35,16,4, +49,11,2,71,3,1,7,101,110,118,51,49,49,54,93,18,16,2,95,2,73, +51,93,8,252,251,10,95,9,8,252,251,10,2,37,18,16,2,99,2,41,56, +93,8,252,251,10,16,6,55,11,2,74,2,75,3,1,7,101,110,118,51,49, +52,49,94,2,94,16,4,54,11,2,77,3,1,7,101,110,118,51,49,52,50, +95,16,4,53,11,2,79,3,1,7,101,110,118,51,49,52,51,96,16,4,52, +11,2,81,3,1,7,101,110,118,51,49,52,53,97,95,9,8,252,251,10,2, +37,18,100,2,83,59,37,36,35,49,16,12,58,11,3,1,4,103,51,48,57, +98,3,1,4,103,51,49,48,99,3,1,4,103,51,49,49,100,3,1,4,103, +51,49,50,101,3,1,4,103,51,49,51,102,3,1,7,101,110,118,51,49,50, +56,103,2,103,2,103,2,103,2,103,16,12,57,11,2,90,2,40,2,42,2, +43,2,44,3,1,7,101,110,118,51,49,50,57,104,2,104,2,104,2,104,2, +104,18,158,2,92,59,18,158,2,39,59,18,158,2,92,59,18,158,2,92,59, +18,158,2,92,59,18,158,2,92,59,18,158,9,59,18,158,2,92,59,11,16, +5,93,2,32,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,9,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,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,9,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,203,205,202,200,204,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,9,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,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, +248,22,252,187,2,193,249,80,158,36,46,21,96,2,39,94,94,94,63,116,109, +112,105,2,41,2,42,2,41,9,98,2,39,94,94,94,2,40,2,41,95,66, +118,97,108,117,101,115,106,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,107,94,72,113,117,111,116,101,45, +115,121,110,116,97,120,108,2,105,2,41,2,41,9,2,43,2,44,2,41,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,90,23,15,248,22,89,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,78,23,23,248,22,90,23,23, +20,15,159,54,58,48,248,22,52,23,20,248,22,87,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,45,2,47,2,49,2,51,2,53,2,55,2, +57,2,59,2,61,2,63,30,109,2,33,2,8,0,30,110,2,6,71,115,116, +120,45,114,111,116,97,116,101,42,111,13,2,65,2,67,30,112,2,33,76,119, +105,116,104,45,115,121,110,116,97,120,45,102,97,105,108,113,3,16,29,18,98, +2,69,8,28,37,36,35,16,4,8,27,11,2,71,3,1,7,101,110,118,51, +49,53,52,114,18,100,2,69,8,31,37,36,35,8,27,16,12,8,30,11,3, +1,4,103,51,49,52,115,3,1,4,103,51,49,53,116,3,1,4,103,51,49, +54,117,3,1,4,103,51,49,55,118,3,1,4,103,51,49,56,119,3,1,7, +101,110,118,51,49,54,55,120,2,120,2,120,2,120,2,120,16,12,8,29,11, +2,90,2,40,2,42,2,43,2,44,3,1,7,101,110,118,51,49,54,56,121, +2,121,2,121,2,121,2,121,18,16,2,95,2,73,8,32,93,8,252,17,11, +95,9,8,252,17,11,2,37,18,158,2,83,8,31,18,16,2,95,2,73,8, +33,93,8,252,27,11,95,9,8,252,27,11,2,37,18,16,2,99,2,41,8, +38,93,8,252,27,11,16,6,8,37,11,2,74,2,75,3,1,7,101,110,118, +51,49,57,51,122,2,122,16,4,8,36,11,2,77,3,1,7,101,110,118,51, +49,57,52,123,16,4,8,35,11,2,79,3,1,7,101,110,118,51,49,57,53, +124,16,4,8,34,11,2,81,3,1,7,101,110,118,51,49,57,55,125,95,9, +8,252,27,11,2,37,18,102,2,83,8,41,37,36,35,8,27,8,30,8,29, +16,4,8,40,11,3,1,4,103,51,50,49,126,3,1,7,101,110,118,51,49, +56,56,127,16,4,8,39,11,2,105,3,1,7,101,110,118,51,49,56,57,128, +18,158,2,92,8,41,18,158,2,39,8,41,18,158,2,92,8,41,18,158,2, +92,8,41,18,158,9,8,41,18,158,2,92,8,41,18,158,2,39,8,41,18, +158,2,92,8,41,18,158,2,92,8,41,18,158,2,106,8,41,18,158,2,92, +8,41,18,158,2,107,8,41,18,158,2,92,8,41,18,158,2,108,8,41,18, +158,2,92,8,41,18,158,2,92,8,41,18,158,2,92,8,41,18,158,2,92, +8,41,18,158,9,8,41,18,158,2,92,8,41,18,158,2,92,8,41,18,16, +2,158,94,16,2,158,94,16,2,98,2,105,8,45,93,8,252,15,11,16,4, +8,44,11,3,1,8,119,115,116,109,112,51,49,57,129,3,1,7,101,110,118, +51,49,56,48,130,16,4,8,43,11,3,1,4,103,51,50,48,131,3,1,7, +101,110,118,51,50,49,48,132,16,4,8,42,11,65,95,101,108,115,101,133,3, +1,7,101,110,118,51,50,49,49,134,9,16,2,158,2,41,8,45,9,8,45, +9,16,2,158,2,41,8,45,9,8,45,95,9,8,252,15,11,2,33,11,16, +5,93,2,11,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,9,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,200,202,201, +199,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,9,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,32,94,94,93,2,40,2,42,2,41,2,43,2,44,2,41,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,78,23,15,248,22,87,23,15,248,22,52,204, +248,22,88,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,45, +2,47,2,49,2,51,2,53,2,55,2,57,2,61,2,59,2,63,2,65,2, +67,16,11,18,98,2,69,8,47,37,36,35,16,4,8,46,11,2,71,3,1, +7,101,110,118,51,50,49,53,135,18,16,2,95,2,73,8,48,93,8,252,51, +11,95,9,8,252,51,11,2,37,18,16,2,99,2,41,8,53,93,8,252,51, +11,16,6,8,52,11,2,74,2,75,3,1,7,101,110,118,51,50,52,48,136, +2,136,16,4,8,51,11,2,77,3,1,7,101,110,118,51,50,52,49,137,16, +4,8,50,11,2,79,3,1,7,101,110,118,51,50,52,50,138,16,4,8,49, +11,2,81,3,1,7,101,110,118,51,50,52,52,139,95,9,8,252,51,11,2, +37,18,100,2,83,8,56,37,36,35,8,46,16,12,8,55,11,3,1,4,103, +51,50,50,140,3,1,4,103,51,50,51,141,3,1,4,103,51,50,52,142,3, +1,4,103,51,50,53,143,3,1,4,103,51,50,54,144,3,1,7,101,110,118, +51,50,50,55,145,2,145,2,145,2,145,2,145,16,12,8,54,11,2,90,2, +40,2,42,2,43,2,44,3,1,7,101,110,118,51,50,50,56,146,2,146,2, +146,2,146,2,146,18,158,2,92,8,56,18,158,2,32,8,56,18,158,2,92, +8,56,18,158,2,92,8,56,18,158,2,92,8,56,18,158,2,92,8,56,18, +158,2,92,8,56,11,16,5,93,2,13,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,9,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,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,147,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,202,205,203,200,206,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,9,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,148,93,61,120,149,100,73,115,121,110,116,97,120,45,99,97, +115,101,42,42,150,2,90,10,2,149,94,61,107,151,2,41,79,109,111,100,117, +108,101,45,105,100,101,110,116,105,102,105,101,114,61,63,152,94,158,65,100,117, +109,109,121,153,67,112,97,116,116,101,114,110,154,95,2,12,2,149,68,116,101, +109,112,108,97,116,101,155,2,41,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,89,23,21,20, +15,159,55,46,47,20,15,159,55,47,47,248,22,78,23,21,20,15,159,55,48, +47,251,22,2,80,159,59,8,42,34,248,22,90,23,25,248,22,87,23,25,248, +22,52,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,156,89,162,33,34,37,68,116,114,121, +45,110,101,120,116,157,222,250,22,252,39,2,11,6,10,10,98,97,100,32,115, +121,110,116,97,120,195,200,248,2,156,195,33,20,98,159,34,16,14,2,45,2, +47,2,49,2,51,2,53,2,55,2,59,2,57,2,61,2,110,30,158,2,6, +2,7,2,2,65,2,67,2,112,16,27,18,16,2,95,2,73,8,57,93,8, +252,73,11,95,9,8,252,73,11,2,37,18,100,2,83,8,61,37,36,35,16, +4,8,60,11,2,149,3,1,7,101,110,118,51,50,53,51,159,16,12,8,59, +11,3,1,4,103,51,50,55,160,3,1,4,103,51,50,56,161,3,1,4,103, +51,50,57,162,3,1,4,103,51,51,48,163,3,1,4,103,51,51,49,164,3, +1,7,101,110,118,51,50,54,57,165,2,165,2,165,2,165,2,165,16,12,8, +58,11,2,90,2,151,67,107,101,121,119,111,114,100,166,2,154,2,155,3,1, +7,101,110,118,51,50,55,48,167,2,167,2,167,2,167,2,167,18,158,2,69, +8,61,18,16,2,95,2,73,8,62,93,8,252,76,11,95,9,8,252,76,11, +2,37,18,158,2,83,8,61,18,16,2,95,2,73,8,63,93,8,252,82,11, +95,9,8,252,82,11,2,37,18,16,2,99,2,41,8,68,93,8,252,82,11, +16,6,8,67,11,2,74,2,75,3,1,7,101,110,118,51,50,57,51,168,2, +168,16,4,8,66,11,2,77,3,1,7,101,110,118,51,50,57,52,169,16,4, +8,65,11,2,79,3,1,7,101,110,118,51,50,57,53,170,16,4,8,64,11, +2,81,3,1,7,101,110,118,51,50,57,55,171,95,9,8,252,82,11,2,37, +18,102,2,83,8,73,37,36,35,8,60,16,12,8,72,11,2,160,2,161,2, +162,2,163,2,164,2,165,2,165,2,165,2,165,2,165,16,12,8,71,11,2, +90,2,151,2,166,2,154,2,155,2,167,2,167,2,167,2,167,2,167,16,4, +8,70,11,3,1,4,103,51,51,52,172,3,1,7,101,110,118,51,50,56,56, +173,16,4,8,69,11,2,153,3,1,7,101,110,118,51,50,56,57,174,18,158, +2,92,8,73,18,158,2,148,8,73,18,158,93,158,2,149,8,73,8,73,18, +158,2,92,8,73,18,158,2,150,8,73,18,158,10,8,73,18,158,2,149,8, +73,18,158,2,152,8,73,18,158,2,92,8,73,18,158,2,92,8,73,18,158, +2,92,8,73,18,158,2,92,8,73,18,158,2,12,8,73,18,158,2,149,8, +73,18,158,2,92,8,73,18,158,2,92,8,73,18,158,2,92,8,73,18,158, +2,92,8,73,18,16,2,158,94,16,2,98,2,153,8,77,93,8,252,74,11, +16,4,8,76,11,3,1,8,119,115,116,109,112,51,51,50,175,3,1,7,101, +110,118,51,50,56,50,176,16,4,8,75,11,3,1,4,103,51,51,51,177,3, +1,7,101,110,118,51,51,48,54,178,16,4,8,74,11,2,133,3,1,7,101, +110,118,51,51,48,55,179,9,16,2,158,2,41,8,77,9,8,77,95,9,8, +252,74,11,2,33,11,16,5,93,2,16,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,9,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,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,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,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, -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); +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,199,201,200,202,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,9,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,180,95,2,148,93,2,149,100,2, +150,2,90,10,2,149,94,2,151,2,41,2,152,94,2,154,95,2,12,2,149, +2,155,2,41,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,88,23,26,20,15,159,8,27,45,46,20, +15,159,8,27,46,46,248,22,78,23,26,20,15,159,8,27,47,46,250,22,2, +80,159,8,30,8,38,34,248,22,87,23,29,248,22,52,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,181,89, +162,33,34,37,2,157,222,250,22,252,39,2,11,6,10,10,98,97,100,32,115, +121,110,116,97,120,195,199,248,2,181,195,33,20,98,159,34,16,13,2,45,2, +47,2,49,2,51,2,53,2,55,2,59,2,57,2,61,2,110,2,158,2,65, +2,67,16,24,18,16,2,95,2,73,8,78,93,8,252,105,11,95,9,8,252, +105,11,2,37,18,100,2,83,8,82,37,36,35,16,4,8,81,11,2,149,3, +1,7,101,110,118,51,51,49,49,182,16,10,8,80,11,3,1,4,103,51,51, +53,183,3,1,4,103,51,51,54,184,3,1,4,103,51,51,55,185,3,1,4, +103,51,51,56,186,3,1,7,101,110,118,51,51,50,52,187,2,187,2,187,2, +187,16,10,8,79,11,2,90,2,151,2,154,2,155,3,1,7,101,110,118,51, +51,50,53,188,2,188,2,188,2,188,18,16,2,95,2,73,8,83,93,8,252, +107,11,95,9,8,252,107,11,2,37,18,16,2,99,2,41,8,88,93,8,252, +107,11,16,6,8,87,11,2,74,2,75,3,1,7,101,110,118,51,51,51,53, +189,2,189,16,4,8,86,11,2,77,3,1,7,101,110,118,51,51,51,54,190, +16,4,8,85,11,2,79,3,1,7,101,110,118,51,51,51,55,191,16,4,8, +84,11,2,81,3,1,7,101,110,118,51,51,51,57,192,95,9,8,252,107,11, +2,37,18,158,2,83,8,82,18,158,2,92,8,82,18,158,2,180,8,82,18, +158,2,92,8,82,18,158,2,148,8,82,18,158,93,16,2,158,2,149,8,82, +9,8,82,18,158,2,92,8,82,18,158,2,150,8,82,18,158,10,8,82,18, +158,2,149,8,82,18,158,2,152,8,82,18,158,2,92,8,82,18,158,2,92, +8,82,18,158,2,12,8,82,18,158,2,149,8,82,18,158,2,92,8,82,18, +158,2,92,8,82,18,158,2,92,8,82,18,158,2,92,8,82,18,158,2,92, +8,82,11,93,83,159,33,93,80,159,33,33,34,89,162,33,34,36,2,4,223, +0,248,22,9,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,193,2,70,2,6,2,37,2,33,2,36,98,2,193,2, +70,2,6,2,37,2,33,2,36,0}; + EVAL_ONE_SIZED_STR((char *)expr, 8178); } { - 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, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,53,50,46,50,103,252,9,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, +108,105,115,116,63,7,8,16,0,11,11,16,1,2,4,34,11,16,4,75,113, +117,97,115,105,115,121,110,116,97,120,47,108,111,99,8,77,117,110,115,121,110, +116,97,120,45,115,112,108,105,99,105,110,103,9,71,113,117,97,115,105,115,121, +110,116,97,120,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,33,37,94,16,5,94,2,11,2,9,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, +16,0,11,16,5,94,2,10,2,8,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, @@ -1886,12 +1976,12 @@ 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, +51,27,250,22,61,200,201,202,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, +22,80,23,16,250,22,209,20,15,159,8,28,49,41,249,22,60,20,15,159,8, +30,50,41,248,22,52,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, @@ -1912,114 +2002,114 @@ 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); +23,17,89,162,33,35,42,9,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,19,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,20,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,9,226,10,9,8,6,250,22,209,195,248,199,198,196,89,162,33,35,46, +9,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,21,2,6,69,115,116,120,45,112,97,105,114,63,22,11, +30,23,2,6,67,115,116,120,45,99,97,114,24,5,30,25,2,6,71,105,100, +101,110,116,105,102,105,101,114,63,26,2,30,27,2,6,67,115,116,120,45,99, +100,114,28,6,30,29,2,6,69,97,112,112,101,110,100,47,35,102,30,0,30, +31,2,6,71,115,116,120,45,110,117,108,108,47,35,102,32,9,30,33,70,35, +37,119,105,116,104,45,115,116,120,34,1,20,103,101,110,101,114,97,116,101,45, +116,101,109,112,111,114,97,114,105,101,115,35,0,30,36,2,6,67,99,111,110, +115,47,35,102,37,1,16,31,18,98,64,104,101,114,101,38,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,39,9,11,16,10,2,8,2,2,2,9,2,2,2,10,2,2, +2,4,2,2,2,11,2,2,98,36,10,34,11,94,159,2,6,9,11,159,2, +39,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,40,64,98,111,100,121,41,68,109,107,45,102,105,110,97,108, +42,3,1,7,101,110,118,51,51,54,49,43,2,43,2,43,18,101,2,38,43, +37,36,35,34,16,4,42,11,68,104,101,114,101,45,115,116,120,44,3,1,7, +101,110,118,51,51,54,50,45,16,4,41,11,2,14,3,1,7,101,110,118,51, +51,54,51,46,16,10,40,11,63,115,116,120,47,65,100,101,112,116,104,48,66, +115,97,109,101,45,107,49,69,99,111,110,118,101,114,116,45,107,50,3,1,7, +101,110,118,51,51,54,52,51,2,51,2,51,2,51,18,158,2,11,43,18,158, +2,11,43,18,158,2,9,43,18,104,2,38,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,51,56,54,54,2,54,16,6,45,11,61,120,55,64,114,101, +115,116,56,3,1,7,101,110,118,51,51,56,55,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,51,57,51,60,2,60,18,158,2,38,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,52,48,50,63,16,4,50,11,64,116,101,109, +112,64,3,1,7,101,110,118,51,52,48,51,65,16,4,49,11,3,1,4,103, +51,52,57,66,3,1,7,101,110,118,51,52,49,52,67,16,4,48,11,2,18, +3,1,7,101,110,118,51,52,49,53,68,18,16,2,95,66,115,114,99,116,97, +103,69,53,93,8,252,180,11,95,9,8,252,180,11,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,9, +43,18,158,2,10,43,18,106,2,11,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,52,52,48,74,16, +4,57,11,65,95,101,108,115,101,75,3,1,7,101,110,118,51,52,52,49,76, +16,4,56,11,2,19,3,1,7,101,110,118,51,52,52,53,77,16,4,55,11, +61,108,78,3,1,7,101,110,118,51,52,52,54,79,16,4,54,11,61,97,80, +3,1,7,101,110,118,51,52,52,55,81,18,158,2,10,59,18,158,2,9,59, +18,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,52,53,57,83,18,99, +2,38,8,31,37,36,35,16,4,8,30,11,2,20,3,1,7,101,110,118,51, +51,54,48,84,16,4,8,29,11,2,40,3,1,7,101,110,118,51,52,54,48, +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,52,54,53,89,2,89,16,6,8,33,11,61,95,90,2, +47,3,1,7,101,110,118,51,52,54,54,91,2,91,16,4,8,32,11,2,41, +3,1,7,101,110,118,51,52,55,49,92,18,99,2,38,8,37,37,36,35,8, +30,16,4,8,36,11,2,40,3,1,7,101,110,118,51,52,55,50,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,52,55,56,98,2,98, +2,98,16,8,8,39,11,2,90,63,108,111,99,99,2,47,3,1,7,101,110, +118,51,52,55,57,100,2,100,2,100,16,4,8,38,11,2,41,3,1,7,101, +110,118,51,52,56,54,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,9,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, +39,2,6,95,2,102,2,39,2,6,0}; + EVAL_ONE_SIZED_STR((char *)expr, 3349); } { - 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, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,53,50,46,50,165,252,213,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, +16,0,16,0,11,11,16,0,33,11,16,4,66,100,101,102,105,110,101,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,77,100,101,102,105,110,101,45,102,111, +114,45,115,121,110,116,97,120,6,16,4,11,11,11,11,16,4,2,3,2,4, +2,5,2,6,33,37,94,16,5,95,2,3,2,4,2,6,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, @@ -2101,250 +2191,249 @@ 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); +33,34,50,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,198,197,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,249,22,56,20,15,159,48, +41,46,201,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,199,198,200,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,52,205,248,22, +80,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,198,200,199,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,52,203,250,22,209,20,15,159,56,8,37,46,248, +22,60,248,22,78,23,15,20,15,159,56,8,38,46,248,22,80,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,52,57,50,44,16,4,34,11,63,115,116,120,45,3,1,7,101,110,118,51, +52,57,51,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,53,48,56,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, +53,48,57,54,2,54,2,54,16,6,41,11,2,9,2,8,3,1,7,101,110, +118,51,53,49,55,55,2,55,18,16,2,95,66,115,114,99,116,97,103,56,45, +93,8,252,32,12,95,9,8,252,32,12,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,53,50,52,61,2,61,16,6,46,11,62,105,100,62,63,97,114,103, +63,3,1,7,101,110,118,51,53,50,53,64,2,64,18,158,2,41,48,18,16, +2,95,2,56,49,93,8,252,44,12,95,9,8,252,44,12,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,49,12,95,9,8,252, +49,12,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,53,53,52,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,53,53,53, +72,2,72,2,72,18,158,2,41,53,18,16,2,95,2,56,54,93,8,252,61, +12,95,9,8,252,61,12,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,80,12,95,9,8,252,80,12,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,53,57,49,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,53,57,50,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,53,49,54,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,122,12,95,9,8,252,122,12,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,54,56,50,85,2,85,2,85,16,8,8,30,11,2,51,2, +62,2,71,3,1,7,101,110,118,51,54,56,51,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,55,51,48,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,55,51,49,92,2,92,2,92,18,16, +2,95,2,56,8,36,93,8,252,171,12,95,9,8,252,171,12,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,52,57,49,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,196,195,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,52,203,248,22,53,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,55,53,51,100,16,4, +8,39,11,2,65,3,1,7,101,110,118,51,55,53,52,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,55,53,57,103,16,4,8,42,11,2, +51,3,1,7,101,110,118,51,55,54,48,104,9,8,44,18,16,2,95,2,56, +8,45,93,8,252,192,12,95,9,8,252,192,12,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,55,54,57,107,2,107,16, +6,8,46,11,2,51,64,101,108,101,109,108,3,1,7,101,110,118,51,55,55, +48,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,55,56,50,112,2,112,16,6,8,49,11,2,51,2,108,3,1,7,101,110, +118,51,55,56,51,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,55, +56,56,128,18,158,2,0,8,53,18,16,2,95,2,56,8,54,93,8,252,213, +12,95,9,8,252,213,12,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,55,57,52,130,16,4,8,55,11,61,118,131,3,1,7, +101,110,118,51,55,57,53,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,216,12,95,9,8,252,216,12,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,56,48,54,135,2, +135,16,6,8,59,11,2,62,2,91,3,1,7,101,110,118,51,56,48,55,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,219,12,95,9,8,252,219,12,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,56,49,56,139,16,4,8,63,11,2,131,3, +1,7,101,110,118,51,56,49,57,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, +222,12,95,9,8,252,222,12,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,56,50,56,144,16,4,8,67,11,2,131,3,1,7, +101,110,118,51,56,50,57,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,228,12,95,9,8,252,228,12,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,56,52,55,147,16,4,8,71,11,65,111,116,104, +101,114,148,3,1,7,101,110,118,51,56,52,56,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,52, +49,52,158,16,4,8,76,11,68,104,101,114,101,45,115,116,120,159,3,1,6, +101,110,118,52,49,54,160,16,4,8,75,11,2,159,2,160,13,16,4,34,2, +153,2,57,11,93,8,252,228,12,16,6,8,74,11,61,114,161,63,115,114,99, +162,3,1,7,101,110,118,51,56,53,50,163,2,163,95,9,8,252,228,12,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, 6881); } { - 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, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,53,50,46,50,252,171,1,252,113,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, @@ -2382,13 +2471,13 @@ 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, +2,14,2,8,66,108,101,116,47,99,99,52,62,100,111,53,70,108,101,116,45, +115,116,114,117,99,116,54,64,99,97,115,101,55,69,102,108,117,105,100,45,108, +101,116,56,64,116,105,109,101,57,71,115,101,116,33,45,118,97,108,117,101,115, +58,73,119,105,116,104,45,104,97,110,100,108,101,114,115,59,78,112,97,114,97, +109,101,116,101,114,105,122,101,45,98,114,101,97,107,60,65,100,101,108,97,121, +61,74,119,105,116,104,45,104,97,110,100,108,101,114,115,42,62,72,112,97,114, +97,109,101,116,101,114,105,122,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, @@ -2399,23 +2488,23 @@ 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, +248,22,80,196,28,248,22,41,248,22,210,194,27,249,22,61,196,195,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, +41,250,22,60,20,15,159,49,37,41,248,22,52,203,250,22,209,20,15,159,52, +38,41,249,22,60,20,15,159,54,39,41,248,22,53,23,16,20,15,159,52,40, +41,20,15,159,46,41,41,195,27,249,22,61,196,195,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, +20,15,159,49,45,41,248,22,52,203,250,22,209,20,15,159,52,46,41,249,22, +60,20,15,159,54,47,41,248,22,53,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, +248,22,52,194,27,248,22,78,195,27,248,22,80,196,27,249,22,61,196,195,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, +47,52,41,250,22,60,20,15,159,50,53,41,248,22,52,203,250,22,209,20,15, +159,53,54,41,249,22,60,20,15,159,55,55,41,248,22,53,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, @@ -2426,35 +2515,35 @@ 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, +45,115,99,104,101,109,101,84,9,11,16,70,2,52,2,2,2,53,2,2,2, +6,2,2,2,59,2,2,2,55,2,2,2,8,2,2,2,43,2,2,2,41, +2,2,2,10,2,2,2,62,2,2,2,57,2,2,2,39,2,2,2,16,2, +2,2,4,2,2,2,27,2,2,2,56,2,2,2,23,2,2,2,54,2,2, +2,31,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,58,2, +2,2,33,2,2,2,60,2,2,2,61,2,2,2,35,2,2,67,112,114,111, +109,105,115,101,86,2,2,2,49,2,2,2,12,2,2,2,14,2,2,2,37, +2,2,2,64,2,2,2,25,2,2,2,63,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, +254,1,11,16,0,16,4,34,11,61,120,89,3,1,7,101,110,118,51,56,53, +52,90,18,16,2,95,66,115,114,99,116,97,103,91,40,93,8,252,4,13,95, +9,8,252,4,13,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, +51,56,54,49,97,2,97,2,97,16,6,41,11,61,95,98,61,107,99,3,1, +7,101,110,118,51,56,54,50,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, +18,158,2,101,43,18,158,2,101,43,18,16,2,95,2,91,44,93,8,252,5, +13,95,9,8,252,5,13,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, +43,18,158,2,101,43,18,16,2,95,2,91,45,93,8,252,8,13,95,9,8, +252,8,13,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, +3,1,7,101,110,118,51,56,55,54,108,2,108,2,108,16,6,46,11,2,98, +2,99,3,1,7,101,110,118,51,56,55,55,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, +101,48,18,158,2,101,48,11,16,5,93,2,55,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, @@ -2470,9 +2559,9 @@ 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, +27,248,22,88,197,249,80,158,42,42,202,27,250,22,61,198,199,200,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, +44,251,22,62,20,15,159,54,44,44,248,22,80,204,248,22,78,204,248,22,52, 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, @@ -2483,8 +2572,8 @@ 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, +251,22,61,200,201,202,199,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,9,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, @@ -2492,9 +2581,9 @@ 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, +209,20,15,159,48,51,44,250,22,60,20,15,159,51,52,44,248,22,87,23,17, +248,22,78,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,52,23,17,248,22,88,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, @@ -2508,26 +2597,26 @@ 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, +38,27,249,22,69,201,39,249,80,158,47,42,23,15,27,253,22,61,201,205,206, +204,203,202,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,9,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, +89,94,2,99,2,113,96,2,0,2,114,2,115,2,113,97,2,55,2,89,62, +99,49,117,62,99,50,118,2,113,20,15,159,36,59,44,89,162,33,33,8,29, 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, +15,159,54,8,32,44,248,22,87,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, +38,44,20,15,159,58,8,39,44,248,22,78,23,24,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,248, +22,90,23,24,249,22,70,23,25,37,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,249,22,69,23,26,38,248,22,52,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, @@ -2562,61 +2651,61 @@ 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, +16,4,49,11,2,89,3,1,7,101,110,118,51,56,56,55,128,18,16,2,95, +2,91,51,93,8,252,54,13,95,9,8,252,54,13,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, +53,51,130,3,1,7,101,110,118,51,56,57,50,131,2,131,16,6,52,11,2, +98,2,112,3,1,7,101,110,118,51,56,57,51,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, +101,110,118,52,49,52,138,16,4,57,11,68,104,101,114,101,45,115,116,120,139, +3,1,6,101,110,118,52,49,54,140,16,4,56,11,2,139,2,140,13,16,4, +34,2,135,2,92,11,93,8,252,54,13,16,6,55,11,61,114,141,63,115,114, +99,142,3,1,7,101,110,118,51,56,57,57,143,2,143,95,9,8,252,54,13, 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, +91,8,30,93,8,252,58,13,95,9,8,252,58,13,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, +3,1,7,101,110,118,51,57,48,56,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,57,48,57,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, +8,33,18,16,2,95,2,91,8,34,93,8,252,62,13,95,9,8,252,62,13, +2,92,18,16,2,99,2,113,8,39,93,8,252,62,13,16,6,8,38,11,2, +141,2,142,3,1,7,101,110,118,51,57,52,49,151,2,151,16,4,8,37,11, +64,101,120,110,104,152,3,1,7,101,110,118,51,57,52,50,153,16,4,8,36, +11,63,101,115,99,154,3,1,7,101,110,118,51,57,52,51,155,16,4,8,35, +11,63,101,120,110,156,3,1,7,101,110,118,51,57,52,53,157,95,9,8,252, +62,13,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, +110,118,51,57,50,56,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,57,50,57,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, +2,95,2,91,8,43,93,8,252,69,13,95,9,8,252,69,13,2,92,18,16, +2,99,2,113,8,48,93,8,252,69,13,16,6,8,47,11,2,141,2,142,3, +1,7,101,110,118,51,57,55,56,165,2,165,16,4,8,46,11,2,152,3,1, +7,101,110,118,51,57,55,57,166,16,4,8,45,11,2,154,3,1,7,101,110, +118,51,57,56,48,167,16,4,8,44,11,2,156,3,1,7,101,110,118,51,57, +56,50,168,95,9,8,252,69,13,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, +7,101,110,118,51,57,54,49,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, +7,101,110,118,51,57,54,50,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, +55,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,53,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, @@ -2624,7 +2713,7 @@ 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, +196,28,248,80,158,42,38,193,248,22,9,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, @@ -2646,9 +2735,9 @@ 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, +47,42,194,28,192,249,80,158,48,43,23,16,27,252,22,61,206,202,204,23,16, +23,17,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,9,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, @@ -2657,20 +2746,20 @@ 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, +15,159,46,48,46,250,22,2,80,159,49,8,67,34,248,22,89,23,15,248,22, +90,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,52, 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,57,57,46,249,22,65,248,22,87,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,78,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, +249,80,158,51,43,23,19,27,254,22,61,203,23,19,23,15,202,23,17,23,21, +23,22,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,9,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, @@ -2679,13 +2768,13 @@ 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, +8,68,34,249,22,69,23,16,39,249,22,70,23,16,38,250,22,209,20,15,159, +49,8,39,46,251,22,60,20,15,159,53,8,40,46,248,22,78,23,19,250,22, +209,20,15,159,56,8,41,46,250,22,62,20,15,159,59,8,42,46,248,22,52, +23,25,248,22,90,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,249,22,70,23,27, +37,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,87,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, @@ -2696,52 +2785,52 @@ 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, +105,103,45,120,192,3,1,7,101,110,118,52,48,52,52,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, +52,54,48,200,3,1,7,101,110,118,52,48,54,49,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,114,2,183,3,1,7,101,110,118,52,48,54,50,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, +16,6,8,57,11,2,112,61,115,203,3,1,7,101,110,118,52,48,55,57,204, +2,204,18,16,2,95,2,91,8,59,93,8,252,120,13,95,9,8,252,120,13, +2,92,18,158,2,93,8,56,18,16,2,95,2,91,8,60,93,8,252,121,13, +95,9,8,252,121,13,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, +3,1,7,101,110,118,52,49,48,49,206,18,16,2,95,2,91,8,63,93,8, +252,129,13,95,9,8,252,129,13,2,92,18,158,2,93,8,62,18,16,2,95, +2,91,8,64,93,8,252,133,13,95,9,8,252,133,13,2,92,18,16,2,99, +2,113,8,69,93,8,252,133,13,16,6,8,68,11,2,141,2,142,3,1,7, +101,110,118,52,49,49,50,207,2,207,16,4,8,67,11,2,152,3,1,7,101, +110,118,52,49,49,51,208,16,4,8,66,11,2,154,3,1,7,101,110,118,52, +49,49,52,209,16,4,8,65,11,2,156,3,1,7,101,110,118,52,49,49,54, +210,95,9,8,252,133,13,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, +95,2,91,8,70,93,8,252,140,13,95,9,8,252,140,13,2,92,18,16,2, +99,2,113,8,75,93,8,252,140,13,16,6,8,74,11,2,141,2,142,3,1, +7,101,110,118,52,49,51,52,211,2,211,16,4,8,73,11,2,152,3,1,7, +101,110,118,52,49,51,53,212,16,4,8,72,11,2,154,3,1,7,101,110,118, +52,49,51,54,213,16,4,8,71,11,2,156,3,1,7,101,110,118,52,49,51, +56,214,95,9,8,252,140,13,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, +4,103,52,54,55,216,3,1,7,101,110,118,52,49,50,55,217,2,217,16,4, +8,76,11,2,115,3,1,7,101,110,118,52,49,50,56,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, +2,158,94,16,2,98,2,184,8,82,93,8,252,108,13,16,4,8,81,11,3, +1,8,119,115,116,109,112,52,54,49,219,3,1,7,101,110,118,52,48,55,56, +220,16,4,8,80,11,3,1,4,103,52,54,52,221,3,1,7,101,110,118,52, +49,52,55,222,16,4,8,79,11,65,95,101,108,115,101,223,3,1,7,101,110, +118,52,49,52,56,224,9,16,2,158,2,113,8,82,9,8,82,95,9,8,252, +108,13,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, @@ -2752,11 +2841,11 @@ 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, +8,83,11,2,89,3,1,7,101,110,118,52,49,53,50,225,18,16,2,95,2, +91,8,85,93,8,252,157,13,95,9,8,252,157,13,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, +4,103,52,54,57,227,3,1,7,101,110,118,52,49,53,55,228,2,228,16,6, +8,86,11,2,61,63,101,120,112,229,3,1,7,101,110,118,52,49,53,56,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, @@ -2764,7 +2853,7 @@ 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, +18,158,2,12,8,89,11,16,5,93,2,63,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, @@ -2776,7 +2865,7 @@ 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, +158,43,38,193,248,22,9,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, @@ -2789,8 +2878,8 @@ 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, +45,43,205,27,250,22,61,198,200,201,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,9,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, @@ -2802,82 +2891,82 @@ 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, +20,15,159,52,53,46,248,22,52,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, +22,80,23,19,248,22,78,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, +63,115,116,120,237,3,1,7,101,110,118,52,49,54,56,238,18,16,2,95,2, +91,8,92,93,8,252,190,13,95,9,8,252,190,13,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, +4,103,52,55,55,240,3,1,4,103,52,55,56,241,3,1,7,101,110,118,52, +49,55,53,242,2,242,2,242,16,8,8,93,11,2,98,2,235,2,236,3,1, +7,101,110,118,52,49,55,54,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, +3,1,4,103,52,55,53,248,3,1,7,101,110,118,52,49,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, +118,97,108,251,2,235,2,236,3,1,7,101,110,118,52,49,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, +91,8,99,93,8,252,197,13,95,9,8,252,197,13,2,92,18,158,2,93,8, +98,18,16,2,95,2,91,8,100,93,8,252,198,13,95,9,8,252,198,13,2, +92,18,158,2,93,8,98,18,16,2,95,2,91,8,101,93,8,252,204,13,95, +9,8,252,204,13,2,92,18,16,2,99,2,113,8,106,93,8,252,204,13,16, +6,8,105,11,2,141,2,142,3,1,7,101,110,118,52,50,49,57,252,253,0, +2,252,253,0,16,4,8,104,11,2,152,3,1,7,101,110,118,52,50,50,48, +252,254,0,16,4,8,103,11,2,154,3,1,7,101,110,118,52,50,50,49,252, +255,0,16,4,8,102,11,2,156,3,1,7,101,110,118,52,50,50,51,252,0, +1,95,9,8,252,204,13,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, +101,110,118,52,50,49,52,252,2,1,16,4,8,107,11,2,234,3,1,7,101, +110,118,52,50,49,53,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, +158,94,16,2,98,2,234,8,113,93,8,252,195,13,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,52,50,48, +56,252,5,1,16,4,8,111,11,3,1,4,103,52,56,48,252,6,1,3,1, +7,101,110,118,52,50,51,48,252,7,1,16,4,8,110,11,2,223,3,1,7, +101,110,118,52,50,51,49,252,8,1,9,16,2,158,2,113,8,113,9,8,113, +95,9,8,252,195,13,2,190,11,16,5,93,2,60,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, +88,197,249,80,158,41,39,201,27,250,22,61,198,199,200,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, +22,62,20,15,159,8,31,42,40,248,22,80,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, +40,248,22,78,23,25,248,22,52,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, +4,8,114,11,2,237,3,1,7,101,110,118,52,50,51,53,252,9,1,18,16, +2,95,2,91,8,116,93,8,252,224,13,95,9,8,252,224,13,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, +12,1,3,1,4,103,52,56,53,252,13,1,3,1,7,101,110,118,52,50,52, +50,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, +7,101,110,118,52,50,52,51,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, +27,59,58,57,56,13,16,4,34,2,135,2,92,11,93,8,252,224,13,16,6, +8,120,11,2,141,2,142,3,1,7,101,110,118,52,50,53,51,252,19,1,2, +252,19,1,95,9,8,252,224,13,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, @@ -2886,7 +2975,7 @@ 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, +59,2,62,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, @@ -2901,7 +2990,7 @@ 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, +80,158,44,38,193,248,22,9,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, @@ -2911,9 +3000,9 @@ 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, +159,45,42,45,249,80,158,45,40,205,27,252,22,61,201,200,203,204,202,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, +248,22,9,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, @@ -2922,7 +3011,7 @@ 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, +28,1,95,2,231,93,2,99,96,2,232,2,47,2,252,27,1,95,2,63,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, @@ -2938,10 +3027,10 @@ 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, +22,90,23,29,248,22,87,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, +8,29,8,29,45,248,22,89,23,28,248,22,52,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, @@ -2961,7 +3050,7 @@ 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, +249,22,60,20,15,159,8,98,8,71,45,248,22,78,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, @@ -2974,21 +3063,21 @@ 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, +41,1,3,1,7,101,110,118,52,50,53,56,252,42,1,16,4,8,122,11,2, +237,3,1,7,101,110,118,52,50,53,57,252,43,1,18,16,2,95,2,91,8, +125,93,8,252,3,14,95,9,8,252,3,14,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, +1,7,101,110,118,52,50,54,54,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,52,50,54,55,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, +110,118,52,50,56,54,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, +2,236,3,1,7,101,110,118,52,50,56,55,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, @@ -3000,13 +3089,13 @@ 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, +131,18,16,2,95,2,91,8,132,93,8,252,21,14,95,9,8,252,21,14,2, +92,18,16,2,99,2,113,8,137,93,8,252,21,14,16,6,8,136,11,2,141, +2,142,3,1,7,101,110,118,52,51,49,50,252,58,1,2,252,58,1,16,4, +8,135,11,2,152,3,1,7,101,110,118,52,51,49,51,252,59,1,16,4,8, +134,11,2,154,3,1,7,101,110,118,52,51,49,52,252,60,1,16,4,8,133, +11,2,156,3,1,7,101,110,118,52,51,49,54,252,61,1,95,9,8,252,21, +14,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, @@ -3021,7 +3110,7 @@ 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, +8,131,18,158,2,63,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, @@ -3037,9 +3126,9 @@ 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, +16,4,34,2,135,2,92,11,93,8,252,21,14,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, +4,8,138,11,2,154,2,252,60,1,95,9,8,252,21,14,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, @@ -3047,10 +3136,10 @@ 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, +131,9,8,131,9,8,131,9,8,141,95,9,8,252,21,14,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, +101,8,131,11,16,5,93,2,58,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, @@ -3065,8 +3154,8 @@ 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, +249,80,158,41,44,202,27,250,22,61,198,200,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,9,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, @@ -3076,9 +3165,9 @@ 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, +56,47,249,22,60,248,22,52,23,20,248,22,78,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, +52,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, @@ -3101,282 +3190,280 @@ 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, +249,22,61,196,195,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, +47,248,22,52,203,248,22,53,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, +16,4,8,142,11,2,237,3,1,7,101,110,118,52,51,50,53,252,71,1,18, +16,2,95,2,91,8,144,93,8,252,48,14,95,9,8,252,48,14,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, +52,252,72,1,3,1,4,103,53,48,53,252,73,1,3,1,7,101,110,118,52, +51,51,49,252,74,1,2,252,74,1,16,6,8,145,11,2,98,2,236,3,1, +7,101,110,118,52,51,51,50,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, +252,48,14,16,6,8,148,11,2,141,2,142,3,1,7,101,110,118,52,51,51, +56,252,77,1,2,252,77,1,95,9,8,252,48,14,2,92,18,158,2,101,8, +147,18,16,2,95,2,91,8,150,93,8,252,54,14,95,9,8,252,54,14,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, +48,48,252,80,1,3,1,7,101,110,118,52,51,52,56,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, +101,110,118,52,51,52,57,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,60,14,95,9,8,252,60, +14,2,92,18,158,2,93,8,153,18,16,2,95,2,91,8,155,93,8,252,66, +14,95,9,8,252,66,14,2,92,18,16,2,99,2,113,8,160,93,8,252,66, +14,16,6,8,159,11,2,141,2,142,3,1,7,101,110,118,52,51,55,48,252, +83,1,2,252,83,1,16,4,8,158,11,2,152,3,1,7,101,110,118,52,51, +55,49,252,84,1,16,4,8,157,11,2,154,3,1,7,101,110,118,52,51,55, +50,252,85,1,16,4,8,156,11,2,156,3,1,7,101,110,118,52,51,55,52, +252,86,1,95,9,8,252,66,14,2,92,18,102,2,93,8,163,37,36,35,8, +142,8,152,8,151,16,4,8,162,11,3,1,4,103,53,48,56,252,87,1,3, +1,7,101,110,118,52,51,54,53,252,88,1,16,4,8,161,11,2,252,63,1, +3,1,7,101,110,118,52,51,54,54,252,89,1,18,158,2,101,8,163,18,158, +2,252,62,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,64,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,63,1,8,167,93,8,252,58,14,16,4,8,166,11,3,1,8,119, +115,116,109,112,53,48,54,252,90,1,3,1,7,101,110,118,52,51,54,48,252, +91,1,16,4,8,165,11,3,1,4,103,53,48,55,252,92,1,3,1,7,101, +110,118,52,51,56,51,252,93,1,16,4,8,164,11,2,223,3,1,7,101,110, +118,52,51,56,52,252,94,1,9,16,2,158,2,113,8,167,9,8,167,95,9, +8,252,58,14,2,190,18,16,2,95,2,91,8,168,93,8,252,75,14,95,9, +8,252,75,14,2,92,18,100,2,93,8,171,37,36,35,8,142,16,8,8,170, +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,52,51,57,50,252, +98,1,2,252,98,1,2,252,98,1,16,8,8,169,11,2,98,2,252,65,1, +2,236,3,1,7,101,110,118,52,51,57,51,252,99,1,2,252,99,1,2,252, +99,1,18,158,2,101,8,171,18,158,2,252,64,1,8,171,18,158,2,101,8, +171,11,16,5,93,2,52,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,199,198,200,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,80,23,21,20,15,159,8,28,41, +40,248,22,52,23,17,248,22,78,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,173,37,36,35,16,4,8,172,11,2,237,3, +1,7,101,110,118,52,52,48,50,252,100,1,18,16,2,95,2,91,8,174,93, +8,252,88,14,95,9,8,252,88,14,2,92,18,100,2,93,8,177,37,36,35, +8,172,16,10,8,176,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,52,52,48,57,252,105,1,2,252,105, +1,2,252,105,1,2,252,105,1,16,10,8,175,11,2,98,2,179,65,98,111, +100,121,49,252,106,1,2,252,26,1,3,1,7,101,110,118,52,52,49,48,252, +107,1,2,252,107,1,2,252,107,1,2,252,107,1,18,158,2,101,8,177,18, +158,67,99,97,108,108,47,99,99,252,108,1,8,177,18,158,2,101,8,177,18, +158,2,231,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,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,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, +22,90,197,27,248,22,89,198,249,80,158,42,40,202,27,251,22,61,199,200,201, +202,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,9,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,88,23,19,248, +22,87,23,19,20,15,159,50,42,42,248,22,78,205,248,22,52,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,179,37,36,35,16, +4,8,178,11,2,237,3,1,7,101,110,118,52,52,50,50,252,112,1,18,16, +2,95,2,91,8,180,93,8,252,104,14,95,9,8,252,104,14,2,92,18,16, +2,99,2,113,8,185,93,8,252,104,14,16,6,8,184,11,2,141,2,142,3, +1,7,101,110,118,52,52,52,52,252,113,1,2,252,113,1,16,4,8,183,11, +2,152,3,1,7,101,110,118,52,52,52,53,252,114,1,16,4,8,182,11,2, +154,3,1,7,101,110,118,52,52,52,54,252,115,1,16,4,8,181,11,2,156, +3,1,7,101,110,118,52,52,52,56,252,116,1,95,9,8,252,104,14,2,92, +18,100,2,93,8,188,37,36,35,8,178,16,12,8,187,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,52,52,51,49,252,122,1,2,252,122,1,2, +252,122,1,2,252,122,1,2,252,122,1,16,12,8,186,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,52,52, +51,50,252,123,1,2,252,123,1,2,252,123,1,2,252,123,1,2,252,123,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,109,1,8,188,18,158,2,101,8,188,18,158,2,101,8, +188,11,16,5,93,2,56,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,9,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,203,202, +205,204,200,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,9,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,89,206,248,22,90,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,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,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,52,23,31,248,22,78,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,190,37,36,35,16,4,8,189,11,2,237,3,1,7,101,110,118, +52,52,53,53,252,128,1,18,16,2,95,2,91,8,191,93,8,252,128,14,95, +9,8,252,128,14,2,92,18,100,2,93,8,194,37,36,35,8,189,16,8,8, +193,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,52,52,54,50, +252,132,1,2,252,132,1,2,252,132,1,16,8,8,192,11,2,98,2,252,106, +1,2,252,26,1,3,1,7,101,110,118,52,52,54,51,252,133,1,2,252,133, +1,2,252,133,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,37,36,35,8,189,16,12,8, +196,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,52,52,56,50,252, +139,1,2,252,139,1,2,252,139,1,2,252,139,1,2,252,139,1,16,12,8, +195,11,2,98,2,252,126,1,2,251,2,252,106,1,2,252,26,1,3,1,7, +101,110,118,52,52,56,51,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,198,93,8,252,135,14,95,9,8, +252,135,14,2,92,18,158,2,93,8,197,18,16,2,95,2,91,8,199,93,8, +252,141,14,95,9,8,252,141,14,2,92,18,16,2,99,2,113,8,204,93,8, +252,141,14,16,6,8,203,11,2,141,2,142,3,1,7,101,110,118,52,53,48, +53,252,141,1,2,252,141,1,16,4,8,202,11,2,152,3,1,7,101,110,118, +52,53,48,54,252,142,1,16,4,8,201,11,2,154,3,1,7,101,110,118,52, +53,48,55,252,143,1,16,4,8,200,11,2,156,3,1,7,101,110,118,52,53, +48,57,252,144,1,95,9,8,252,141,14,2,92,18,102,2,93,8,207,37,36, +35,8,189,8,196,8,195,16,4,8,206,11,3,1,4,103,53,50,56,252,145, +1,3,1,7,101,110,118,52,53,48,48,252,146,1,16,4,8,205,11,2,252, +124,1,3,1,7,101,110,118,52,53,48,49,252,147,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,125,1,8,207,18,158,2,101,8,207,18,158,2,231,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,203,8,207,18,158,2,101,8,207,18,158, +2,101,8,207,18,158,2,101,8,207,18,158,2,252,64,1,8,207,18,158,2, +101,8,207,18,158,2,101,8,207,18,158,2,252,64,1,8,207,18,16,2,106, +93,16,2,158,2,203,8,207,9,8,212,8,28,8,27,59,58,57,56,13,16, +4,34,2,135,2,92,11,93,8,252,141,14,16,6,8,211,11,2,141,2,142, +2,252,141,1,2,252,141,1,16,4,8,210,11,2,152,2,252,142,1,16,4, +8,209,11,2,154,2,252,143,1,16,4,8,208,11,64,118,97,108,115,252,148, +1,3,1,7,101,110,118,52,53,49,53,252,149,1,95,9,8,252,141,14,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,127, +1,8,207,18,158,2,252,125,1,8,207,18,158,2,101,8,207,18,158,2,231, +8,207,18,158,9,8,207,18,158,2,101,8,207,18,16,2,105,93,16,2,158, +2,252,125,1,8,207,9,8,213,8,28,8,27,59,58,57,56,13,16,4,34, +2,135,2,92,11,93,8,252,141,14,8,211,8,210,8,209,95,9,8,252,141, +14,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,124,1,8,217,93,8,252,133,14,16,4, +8,216,11,3,1,8,119,115,116,109,112,53,50,54,252,150,1,3,1,7,101, +110,118,52,52,57,53,252,151,1,16,4,8,215,11,3,1,4,103,53,50,55, +252,152,1,3,1,7,101,110,118,52,53,50,48,252,153,1,16,4,8,214,11, +2,223,3,1,7,101,110,118,52,53,50,49,252,154,1,9,16,2,158,2,113, +8,217,9,8,217,95,9,8,252,133,14,2,190,11,16,5,93,2,57,89,162, +33,34,8,43,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,197,198,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,251, +22,62,20,15,159,8,40,44,40,20,15,159,8,40,45,40,248,22,53,23,33, +248,22,52,23,33,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, +2,72,2,78,2,80,2,123,16,20,18,98,2,82,8,219,37,36,35,16,4, +8,218,11,2,237,3,1,7,101,110,118,52,53,50,53,252,155,1,18,16,2, +95,2,91,8,220,93,8,252,159,14,95,9,8,252,159,14,2,92,18,100,2, +93,8,223,37,36,35,8,218,16,8,8,222,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, +1,3,1,7,101,110,118,52,53,51,49,252,159,1,2,252,159,1,2,252,159, +1,16,8,8,221,11,2,98,2,235,2,236,3,1,7,101,110,118,52,53,51, +50,252,160,1,2,252,160,1,2,252,160,1,18,158,2,101,8,223,18,158,2, +252,62,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,161,1,8,223,9,16, +2,158,64,117,115,101,114,252,162,1,8,223,9,16,2,158,62,103,99,252,163, +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,164,1,8,223,18,158,2,101,8,223,18,158,2,231,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,165,1,8,223,9,8,225,8,28,8,27,59,58,57,56,13,16, +4,34,2,135,2,92,11,93,8,252,159,14,16,6,8,224,11,2,141,2,142, +3,1,7,101,110,118,52,53,52,48,252,166,1,2,252,166,1,95,9,8,252, +159,14,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,167,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,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, +126,115,126,110,8,223,158,2,252,161,1,8,223,158,2,252,162,1,8,223,158, +2,252,163,1,8,223,8,223,9,16,2,158,95,158,2,252,39,1,8,223,158, +2,252,40,1,8,223,158,2,112,8,223,8,223,9,8,225,95,9,8,252,159, +14,2,92,18,158,2,101,8,223,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, @@ -3413,10 +3500,10 @@ 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); + EVAL_ONE_SIZED_STR((char *)expr, 22399); } { - 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, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,53,50,46,50,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, @@ -3487,27 +3574,27 @@ 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, +249,22,209,20,15,159,43,36,39,249,22,209,205,247,22,48,27,252,22,61,198, +201,202,200,199,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, +22,90,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, +39,249,22,60,248,22,89,23,27,250,22,209,20,15,159,8,38,50,39,250,22, +60,20,15,159,8,41,51,39,248,22,87,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, +39,248,22,60,250,22,209,20,15,159,8,54,55,39,249,22,60,248,22,52,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, +248,22,90,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, +15,159,8,54,8,29,39,20,15,159,8,54,8,30,39,248,22,52,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, +8,37,39,248,22,90,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,89,23,29,20,15,159,8,35,8,40, +39,20,15,159,8,29,8,41,39,248,22,89,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, @@ -3518,43 +3605,43 @@ 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, +9,11,16,92,2,67,2,2,2,4,2,2,2,75,2,2,2,81,2,2,2, +57,2,2,2,49,2,2,2,6,2,2,2,71,2,2,2,83,2,2,2,10, +2,2,2,91,2,2,2,24,2,2,2,51,2,2,2,53,2,2,2,32,2, +2,2,28,2,2,2,59,2,2,2,12,2,2,2,73,2,2,2,14,2,2, +2,26,2,2,2,87,2,2,2,61,2,2,2,30,2,2,2,69,2,2,2, +77,2,2,2,55,2,2,2,40,2,2,2,89,2,2,2,16,2,2,2,22, +2,2,2,47,2,2,2,63,2,2,2,97,2,2,2,95,2,2,2,93,2, +2,2,38,2,2,2,34,2,2,2,20,2,2,2,8,2,2,2,65,2,2, +2,85,2,2,2,79,2,2,2,18,2,2,2,36,2,2,2,98,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, +4,34,11,61,120,118,3,1,7,101,110,118,52,53,54,53,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, +53,51,51,121,3,1,4,103,53,51,52,122,3,1,7,101,110,118,52,53,55, +49,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,53,55,50,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, +93,8,252,229,14,95,9,8,252,229,14,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, +1,4,103,53,51,57,131,3,1,7,101,110,118,52,53,56,56,132,16,4,48, +11,68,99,111,110,116,109,97,114,107,133,3,1,7,101,110,118,52,53,56,57, +134,16,4,47,11,3,1,4,103,53,52,49,135,3,1,7,101,110,118,52,54, +48,48,136,16,4,46,11,64,102,117,110,99,137,3,1,7,101,110,118,52,54, +48,49,138,16,4,45,11,3,1,4,103,53,52,51,139,3,1,7,101,110,118, +52,54,49,50,140,16,4,44,11,67,110,101,119,109,97,114,107,141,3,1,7, +101,110,118,52,54,49,51,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, +8,254,1,11,16,0,16,4,54,11,2,118,3,1,6,101,110,118,52,49,52, 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, +52,49,54,152,16,4,52,11,2,151,2,152,13,16,4,34,2,146,2,129,11, +93,8,252,229,14,16,6,51,11,61,114,153,63,115,114,99,154,3,1,7,101, +110,118,52,54,49,55,155,2,155,95,9,8,252,229,14,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, @@ -3646,9 +3733,9 @@ 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, +9,224,5,4,248,22,9,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, +9,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, @@ -4036,7 +4123,7 @@ EVAL_ONE_SIZED_STR((char *)expr, 12944); } { - 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, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,53,50,46,50,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, @@ -4054,18 +4141,18 @@ 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, +1,11,16,0,16,4,37,11,63,115,116,120,16,3,1,7,101,110,118,52,56, +55,51,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,5,51,53,50,46,49,91,252,161,6,159,33,20,98,159,33,16,1,20, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,53,50,46,50,94,252,192,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, +16,0,33,11,16,76,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, @@ -4095,79 +4182,80 @@ 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); +110,116,34,71,115,101,116,33,45,118,97,108,117,101,115,35,70,108,101,116,45, +115,116,114,117,99,116,36,66,115,121,110,116,97,120,37,70,113,117,97,115,105, +113,117,111,116,101,38,68,117,110,115,121,110,116,97,120,39,71,113,117,97,115, +105,115,121,110,116,97,120,40,79,109,101,109,111,114,121,45,116,114,97,99,101, +45,108,97,109,98,100,97,41,71,119,105,116,104,45,115,121,110,116,97,120,42, +78,112,97,114,97,109,101,116,101,114,105,122,101,45,98,114,101,97,107,43,64, +99,97,115,101,44,62,100,111,45,72,115,121,110,116,97,120,45,99,97,115,101, +42,46,63,97,110,100,47,65,100,101,108,97,121,48,66,108,101,116,47,99,99, +49,73,108,101,116,114,101,99,45,115,121,110,116,97,120,50,64,116,105,109,101, +51,77,100,101,102,105,110,101,45,102,111,114,45,115,121,110,116,97,120,52,72, +115,121,110,116,97,120,45,114,117,108,101,115,53,75,115,121,110,116,97,120,45, +105,100,45,114,117,108,101,115,54,69,102,108,117,105,100,45,108,101,116,55,62, +111,114,56,63,108,101,116,57,64,108,101,116,42,58,66,108,101,116,114,101,99, +59,73,100,101,102,105,110,101,45,115,116,114,117,99,116,60,2,3,64,99,111, +110,100,61,66,100,101,102,105,110,101,62,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,63, +64,119,104,101,110,64,66,117,110,108,101,115,115,65,66,108,101,116,47,101,99, +66,76,98,101,103,105,110,45,102,111,114,45,115,121,110,116,97,120,67,77,117, +110,115,121,110,116,97,120,45,115,112,108,105,99,105,110,103,68,75,108,101,116, +114,101,99,45,115,121,110,116,97,120,101,115,69,72,108,101,116,45,115,121,110, +116,97,120,101,115,70,70,108,101,116,45,115,121,110,116,97,120,71,71,115,121, +110,116,97,120,45,99,97,115,101,72,70,115,121,110,116,97,120,47,108,111,99, +73,73,100,101,102,105,110,101,45,115,121,110,116,97,120,74,72,112,97,114,97, +109,101,116,101,114,105,122,101,75,73,119,105,116,104,45,104,97,110,100,108,101, +114,115,76,74,119,105,116,104,45,104,97,110,100,108,101,114,115,42,77,75,113, +117,97,115,105,115,121,110,116,97,120,47,108,111,99,78,16,76,73,35,37,109, +111,114,101,45,115,99,104,101,109,101,79,2,79,66,35,37,109,105,115,99,80, +2,80,2,80,76,35,37,115,116,120,99,97,115,101,45,115,99,104,101,109,101, +81,2,80,2,79,2,80,2,79,2,80,2,80,2,79,70,35,37,119,105,116, +104,45,115,116,120,82,2,80,65,35,37,115,116,120,83,2,80,2,80,2,80, +2,80,2,80,2,80,2,80,2,80,2,80,2,80,2,80,2,79,2,80,2, +80,2,80,2,79,2,79,69,35,37,115,116,120,99,97,115,101,84,71,35,37, +113,113,45,97,110,100,45,111,114,85,67,35,37,113,113,115,116,120,86,2,86, +2,80,2,82,2,79,2,79,2,79,68,35,37,115,116,120,108,111,99,87,2, +85,2,79,2,79,2,81,2,79,68,35,37,100,101,102,105,110,101,88,2,81, +2,81,2,79,2,85,2,85,2,85,2,85,74,35,37,100,101,102,105,110,101, +45,101,116,45,97,108,89,68,35,37,107,101,114,110,101,108,90,66,35,37,99, +111,110,100,91,2,88,72,35,37,115,116,120,109,122,45,98,111,100,121,92,2, +89,2,89,2,89,2,88,2,86,2,81,2,81,2,81,2,87,2,87,2,88, +2,79,2,79,2,79,2,86,16,76,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,2,59,2,60,1,20, +35,37,112,108,97,105,110,45,109,111,100,117,108,101,45,98,101,103,105,110,93, +2,61,2,62,2,3,2,64,2,65,2,66,2,67,2,68,2,69,2,70,2, +71,2,72,2,73,2,74,2,75,2,76,2,77,2,78,8,31,8,76,9,9, +100,2,90,2,79,2,80,2,81,2,83,2,92,2,86,2,88,9,0}; + EVAL_ONE_SIZED_STR((char *)expr, 1740); } { - 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, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,53,50,46,50,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, +16,1,2,4,34,11,16,24,70,113,117,97,115,105,113,117,111,116,101,5,2, +0,70,108,101,116,45,115,121,110,116,97,120,6,76,117,110,113,117,111,116,101, +45,115,112,108,105,99,105,110,103,7,65,113,117,111,116,101,8,62,105,102,9, +66,100,101,102,105,110,101,10,62,100,111,11,67,117,110,113,117,111,116,101,12, +63,108,101,116,13,64,108,101,116,42,14,64,99,97,115,101,15,71,114,53,114, +115,58,108,101,116,114,101,99,16,64,99,111,110,100,17,73,100,101,102,105,110, +101,45,115,121,110,116,97,120,18,63,97,110,100,19,62,111,114,20,65,100,101, +108,97,121,21,65,35,37,97,112,112,22,73,108,101,116,114,101,99,45,115,121, +110,116,97,120,23,67,35,37,100,97,116,117,109,24,64,115,101,116,33,25,65, +35,37,116,111,112,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,76,35,37, +115,116,120,99,97,115,101,45,115,99,104,101,109,101,30,2,29,2,29,2,29, +68,35,37,100,101,102,105,110,101,31,73,35,37,109,111,114,101,45,115,99,104, +101,109,101,32,2,29,2,28,2,28,2,32,11,66,35,37,99,111,110,100,33, +2,31,2,28,2,28,2,32,2,29,2,30,2,29,2,29,2,29,2,29,16, +24,2,5,2,0,2,6,2,7,2,8,2,9,2,10,2,11,2,12,2,13, +2,14,2,15,66,108,101,116,114,101,99,34,2,17,2,18,2,19,2,20,2, +21,2,22,2,23,2,24,2,25,2,26,2,27,33,57,93,16,5,93,2,16, 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, @@ -4182,26 +4270,26 @@ 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, +9,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, +27,248,22,88,197,249,80,158,40,43,200,27,250,22,61,199,198,200,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, +22,9,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, +22,252,182,2,193,248,22,252,187,2,193,249,80,158,36,44,21,99,2,16,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,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, +248,22,80,206,20,15,159,48,39,45,250,22,2,80,159,51,8,56,34,248,22, +80,23,17,248,22,52,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, @@ -4211,7 +4299,7 @@ 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, +35,196,28,248,80,158,47,38,193,248,22,9,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, @@ -4219,20 +4307,20 @@ 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, +27,248,22,89,198,249,80,158,42,43,202,27,251,22,61,199,202,200,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, +248,22,9,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, +248,22,252,182,2,193,248,22,252,187,2,193,249,80,158,36,44,21,95,2,13, +94,94,2,35,2,4,2,36,97,2,13,94,94,65,116,101,109,112,49,39,2, +37,2,36,95,2,25,2,35,2,39,2,36,96,2,13,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, +248,22,78,23,20,248,22,87,23,20,249,22,65,250,22,2,80,159,56,8,59, +34,248,22,88,23,22,248,22,78,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, @@ -4246,7 +4334,7 @@ 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, +158,48,37,27,248,80,158,50,35,196,28,248,80,158,50,38,193,248,22,9,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, @@ -4255,20 +4343,20 @@ 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, +22,69,201,39,249,80,158,45,43,205,27,252,22,61,203,200,202,204,201,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, +247,248,22,9,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, +16,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, +35,45,20,15,159,48,8,36,45,248,22,90,206,250,22,209,20,15,159,51,8, +37,45,249,22,56,20,15,159,53,8,38,45,248,22,52,23,19,20,15,159,51, +8,39,45,250,22,2,80,159,51,8,60,34,248,22,87,23,17,248,22,89,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, @@ -4283,58 +4371,58 @@ 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, +95,66,115,114,99,116,97,103,70,35,93,8,252,69,16,95,9,8,252,69,16, +2,68,18,16,2,99,2,36,40,93,8,252,69,16,16,6,39,11,61,114,71, +63,115,114,99,72,3,1,7,101,110,118,52,56,57,55,73,2,73,16,4,38, +11,64,101,120,110,104,74,3,1,7,101,110,118,52,56,57,56,75,16,4,37, +11,63,101,115,99,76,3,1,7,101,110,118,52,56,57,57,77,16,4,36,11, +63,101,120,110,78,3,1,7,101,110,118,52,57,48,49,79,95,9,8,252,69, +16,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,16,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, +4,103,53,54,51,84,3,1,7,101,110,118,52,56,56,54,85,2,85,2,85, +16,8,41,11,2,35,2,37,2,38,3,1,7,101,110,118,52,56,56,55,86, +2,86,2,86,18,158,63,99,116,120,87,46,18,158,2,16,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, +2,95,2,70,47,93,8,252,78,16,95,9,8,252,78,16,2,68,18,16,2, +99,2,36,52,93,8,252,78,16,16,6,51,11,2,71,2,72,3,1,7,101, +110,118,52,57,51,54,88,2,88,16,4,50,11,2,74,3,1,7,101,110,118, +52,57,51,55,89,16,4,49,11,2,76,3,1,7,101,110,118,52,57,51,56, +90,16,4,48,11,2,78,3,1,7,101,110,118,52,57,52,48,91,95,9,8, +252,78,16,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, +1,4,103,53,53,57,95,3,1,7,101,110,118,52,57,50,51,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, +52,57,50,52,97,2,97,2,97,2,97,18,158,2,87,55,18,158,2,13,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, +11,61,120,103,3,1,6,101,110,118,52,49,52,104,16,4,8,28,11,68,104, +101,114,101,45,115,116,120,105,3,1,6,101,110,118,52,49,54,106,16,4,8, +27,11,2,105,2,106,13,16,4,34,2,100,2,68,11,93,8,252,78,16,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, +118,52,57,52,52,108,95,9,8,252,78,16,2,68,18,158,2,87,55,18,158, +2,87,55,18,158,2,13,55,18,158,2,87,55,18,158,2,87,55,18,158,2, +87,55,18,158,2,25,55,18,158,2,87,55,18,158,2,87,55,18,158,2,13, 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,2,95,2,70,8,34,93,8,252,88,16,95,9,8,252,88,16,2,68,18, +16,2,99,2,36,8,39,93,8,252,88,16,16,6,8,38,11,2,71,2,72, +3,1,7,101,110,118,52,57,56,53,109,2,109,16,4,8,37,11,2,74,3, +1,7,101,110,118,52,57,56,54,110,16,4,8,36,11,2,76,3,1,7,101, +110,118,52,57,56,55,111,16,4,8,35,11,2,78,3,1,7,101,110,118,52, +57,56,57,112,95,9,8,252,88,16,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, +53,51,117,3,1,4,103,53,53,52,118,3,1,7,101,110,118,52,57,54,56, 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, +42,2,35,2,37,2,38,3,1,7,101,110,118,52,57,54,57,120,2,120,2, +120,2,120,2,120,2,120,18,158,2,87,8,42,18,158,2,16,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, @@ -4343,7 +4431,7 @@ EVAL_ONE_SIZED_STR((char *)expr, 4057); } { - 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, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,53,50,46,50,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, @@ -4351,7 +4439,7 @@ EVAL_ONE_SIZED_STR((char *)expr, 104); } { - 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, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,53,50,46,50,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, @@ -4359,7 +4447,7 @@ EVAL_ONE_SIZED_STR((char *)expr, 84); } { - 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, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,53,50,46,50,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}; diff --git a/src/mzscheme/src/env.c b/src/mzscheme/src/env.c index d352740a71..2751837087 100644 --- a/src/mzscheme/src/env.c +++ b/src/mzscheme/src/env.c @@ -28,6 +28,7 @@ #include "schpriv.h" #include "schminc.h" +#include "schexpobs.h" #if defined(UNIX_LIMIT_STACK) || defined(UNIX_LIMIT_FDSET_SIZE) # include @@ -341,6 +342,7 @@ Scheme_Env *scheme_basic_env() (Scheme_Object *)env); scheme_init_memtrace(env); scheme_init_parameterization(env); + scheme_init_expand_observe(env); #ifndef DONT_USE_FOREIGN scheme_init_foreign(env); @@ -3898,6 +3900,7 @@ local_lift_expr(int argc, Scheme_Object *argv[]) Scheme_Comp_Env *env, *orig_env; Scheme_Object *id, *local_mark, *expr, *data, *vec, *id_sym; Scheme_Lift_Capture_Proc cp; + Scheme_Object *orig_expr; expr = argv[0]; if (!SCHEME_STXP(expr)) @@ -3936,6 +3939,7 @@ local_lift_expr(int argc, Scheme_Object *argv[]) NULL, 1); expr = scheme_stx_activate_certs(expr); + orig_expr = expr; expr = cp(data, &id, expr, orig_env); @@ -3944,6 +3948,8 @@ local_lift_expr(int argc, Scheme_Object *argv[]) id = scheme_add_remove_mark(id, local_mark); + SCHEME_EXPAND_OBSERVE_LOCAL_LIFT(scheme_get_expand_observe(), id, orig_expr); + return id; } @@ -3952,6 +3958,7 @@ local_lift_end_statement(int argc, Scheme_Object *argv[]) { Scheme_Comp_Env *env; Scheme_Object *local_mark, *expr, *pr; + Scheme_Object *orig_expr; expr = argv[0]; if (!SCHEME_STXP(expr)) @@ -3977,9 +3984,12 @@ local_lift_end_statement(int argc, Scheme_Object *argv[]) " a run-time expression in a module declaration"); expr = scheme_add_remove_mark(expr, local_mark); + orig_expr = expr; pr = scheme_make_pair(expr, SCHEME_VEC_ELS(COMPILE_DATA(env)->lifts)[3]); SCHEME_VEC_ELS(COMPILE_DATA(env)->lifts)[3] = pr; + + SCHEME_EXPAND_OBSERVE_LIFT_STATEMENT(scheme_get_expand_observe(), orig_expr); return scheme_void; } diff --git a/src/mzscheme/src/eval.c b/src/mzscheme/src/eval.c index 2b95357ba6..c6cc2681c1 100644 --- a/src/mzscheme/src/eval.c +++ b/src/mzscheme/src/eval.c @@ -117,6 +117,7 @@ #include "schpriv.h" #include "schrunst.h" +#include "schexpobs.h" #ifdef USE_STACKAVAIL #include @@ -215,7 +216,7 @@ static Scheme_Object *read_quote_syntax(Scheme_Object *obj); static Scheme_Object *define_values_symbol, *letrec_values_symbol, *lambda_symbol; static Scheme_Object *unknown_symbol, *void_link_symbol, *quote_symbol; static Scheme_Object *letrec_syntaxes_symbol, *begin_symbol; -static Scheme_Object *let_symbol; +static Scheme_Object *let_values_symbol; static Scheme_Object *internal_define_symbol; static Scheme_Object *module_symbol; @@ -295,11 +296,11 @@ scheme_init_eval (Scheme_Env *env) REGISTER_SO(quote_symbol); REGISTER_SO(letrec_syntaxes_symbol); REGISTER_SO(begin_symbol); - REGISTER_SO(let_symbol); + REGISTER_SO(let_values_symbol); define_values_symbol = scheme_intern_symbol("define-values"); letrec_values_symbol = scheme_intern_symbol("letrec-values"); - let_symbol = scheme_intern_symbol("let"); + let_values_symbol = scheme_intern_symbol("let-values"); lambda_symbol = scheme_intern_symbol("lambda"); unknown_symbol = scheme_intern_symbol("unknown"); void_link_symbol = scheme_intern_symbol("-v"); @@ -1611,7 +1612,7 @@ static Scheme_Object *link_toplevel(Scheme_Object *expr, Scheme_Env *env, } } -static Scheme_Object *resolve_k() +static Scheme_Object *resolve_k(void) { Scheme_Thread *p = scheme_current_thread; Scheme_Object *expr = (Scheme_Object *)p->ku.k.p1; @@ -2374,7 +2375,7 @@ static Scheme_Object *optimize_wcm(Scheme_Object *o, Optimize_Info *info) return (Scheme_Object *)wcm; } -static Scheme_Object *optimize_k() +static Scheme_Object *optimize_k(void) { Scheme_Thread *p = scheme_current_thread; Scheme_Object *expr = (Scheme_Object *)p->ku.k.p1; @@ -3192,6 +3193,8 @@ void scheme_init_compile_recs(Scheme_Compile_Info *src, int drec, dest[i].resolve_module_ids = src[drec].resolve_module_ids; dest[i].value_name = scheme_false; dest[i].certs = src[drec].certs; + /* should be always NULL */ + dest[i].observer = src[drec].observer; } } @@ -3208,6 +3211,7 @@ void scheme_init_expand_recs(Scheme_Expand_Info *src, int drec, dest[i].depth = src[drec].depth; dest[i].value_name = scheme_false; dest[i].certs = src[drec].certs; + dest[i].observer = src[drec].observer; } } @@ -3225,6 +3229,7 @@ void scheme_init_lambda_rec(Scheme_Compile_Info *src, int drec, lam[dlrec].resolve_module_ids = src[drec].resolve_module_ids; lam[dlrec].value_name = scheme_false; lam[dlrec].certs = src[drec].certs; + lam[dlrec].observer = src[drec].observer; } void scheme_merge_lambda_rec(Scheme_Compile_Info *src, int drec, @@ -3468,6 +3473,7 @@ static void *compile_k(void) rec.resolve_module_ids = !writeable && !genv->module; rec.value_name = scheme_false; rec.certs = NULL; + rec.observer = NULL; cenv = scheme_new_comp_env(genv, insp, SCHEME_TOPLEVEL_FRAME); @@ -3631,6 +3637,8 @@ Scheme_Object *scheme_check_immediate_macro(Scheme_Object *first, Scheme_Env *menv = NULL; int need_cert; + SCHEME_EXPAND_OBSERVE_ENTER_CHECK(rec[drec].observer, first); + check_top: *current_val = NULL; @@ -3642,8 +3650,10 @@ Scheme_Object *scheme_check_immediate_macro(Scheme_Object *first, need_cert = 0; } - if (!SCHEME_STX_SYMBOLP(name)) + if (!SCHEME_STX_SYMBOLP(name)) { + SCHEME_EXPAND_OBSERVE_EXIT_CHECK(rec[drec].observer, first); return first; + } while (1) { @@ -3671,6 +3681,7 @@ Scheme_Object *scheme_check_immediate_macro(Scheme_Object *first, *current_val = val; if (!val) { + SCHEME_EXPAND_OBSERVE_EXIT_CHECK(rec[drec].observer, first); return first; } else if (SAME_TYPE(SCHEME_TYPE(val), scheme_macro_type)) { if (SAME_TYPE(SCHEME_TYPE(SCHEME_PTR_VAL(val)), scheme_id_macro_type)) { @@ -3700,6 +3711,7 @@ Scheme_Object *scheme_check_immediate_macro(Scheme_Object *first, break; /* break to outer loop */ } } else { + SCHEME_EXPAND_OBSERVE_EXIT_CHECK(rec[drec].observer, first); return first; } } @@ -3729,7 +3741,7 @@ compile_expand_macro_app(Scheme_Object *name, Scheme_Env *menv, Scheme_Object *m if (!boundname) boundname = scheme_false; - return scheme_apply_macro(name, menv, xformer, form, env, boundname, rec[drec].certs, 0); + return scheme_apply_macro(name, menv, xformer, form, env, boundname, rec, drec, 0); /* caller expects rec[drec] to be used to compile the result... */ } @@ -3798,8 +3810,11 @@ scheme_compile_expand_expr(Scheme_Object *form, Scheme_Comp_Env *env, scheme_signal_error("not syntax"); #endif - if (rec[drec].comp) + if (rec[drec].comp) { scheme_default_compile_rec(rec, drec); + } else { + SCHEME_EXPAND_OBSERVE_VISIT(rec[drec].observer,form); + } looking_for_top = 0; @@ -3831,6 +3846,8 @@ scheme_compile_expand_expr(Scheme_Object *form, Scheme_Comp_Env *env, rec[drec].certs, env->in_modidx, &menv, &protected); + SCHEME_EXPAND_OBSERVE_RESOLVE(rec[drec].observer,find_name); + if (var && SAME_TYPE(SCHEME_TYPE(var), scheme_macro_type) && SAME_TYPE(SCHEME_TYPE(SCHEME_PTR_VAL(var)), scheme_id_macro_type)) { /* It's a rename. Look up the target name and try again. */ @@ -3857,9 +3874,13 @@ scheme_compile_expand_expr(Scheme_Object *form, Scheme_Comp_Env *env, looking_for_top = 1; } else { if (SAME_TYPE(SCHEME_TYPE(var), scheme_syntax_compiler_type)) { - if (var == stop_expander) + if (var == stop_expander) { + SCHEME_EXPAND_OBSERVE_ENTER_PRIM(rec[drec].observer,form); + SCHEME_EXPAND_OBSERVE_PRIM_STOP(rec[drec].observer); + SCHEME_EXPAND_OBSERVE_EXIT_PRIM(rec[drec].observer,form); + SCHEME_EXPAND_OBSERVE_RETURN(rec[drec].observer,form); return form; - else { + } else { scheme_wrong_syntax(NULL, NULL, form, "bad syntax"); return NULL; } @@ -3880,6 +3901,8 @@ scheme_compile_expand_expr(Scheme_Object *form, Scheme_Comp_Env *env, /* Add a property to indicate that the name is protected */ find_name = scheme_stx_property(find_name, protected_symbol, scheme_true); } + SCHEME_EXPAND_OBSERVE_VARIABLE(rec[drec].observer, form, find_name); + SCHEME_EXPAND_OBSERVE_RETURN(rec[drec].observer, find_name); return find_name; /* which is usually == form */ } } @@ -3922,6 +3945,7 @@ scheme_compile_expand_expr(Scheme_Object *form, Scheme_Comp_Env *env, erec1.certs, env->in_modidx, &menv, NULL); + SCHEME_EXPAND_OBSERVE_RESOLVE(rec[drec].observer, find_name); if (var && SAME_TYPE(SCHEME_TYPE(var), scheme_macro_type) && SAME_TYPE(SCHEME_TYPE(SCHEME_PTR_VAL(var)), scheme_id_macro_type)) { /* It's a rename. Look up the target name and try again. */ @@ -3954,7 +3978,11 @@ scheme_compile_expand_expr(Scheme_Object *form, Scheme_Comp_Env *env, } else { Scheme_Syntax_Expander *f; f = (Scheme_Syntax_Expander *)SCHEME_SYNTAX_EXP(var); - return f(form, env, rec, drec); + SCHEME_EXPAND_OBSERVE_ENTER_PRIM(rec[drec].observer, form); + form = f(form, env, rec, drec); + SCHEME_EXPAND_OBSERVE_EXIT_PRIM(rec[drec].observer, form); + SCHEME_EXPAND_OBSERVE_RETURN(rec[drec].observer, form); + return form; } } @@ -3995,6 +4023,8 @@ scheme_compile_expand_expr(Scheme_Object *form, Scheme_Comp_Env *env, rec[drec].certs, env->in_modidx, &menv, NULL); + SCHEME_EXPAND_OBSERVE_RESOLVE(rec[drec].observer, find_name); + if (var && SAME_TYPE(SCHEME_TYPE(var), scheme_macro_type) && SAME_TYPE(SCHEME_TYPE(SCHEME_PTR_VAL(var)), scheme_id_macro_type)) { /* It's a rename. Look up the target name and try again. */ @@ -4042,6 +4072,10 @@ scheme_compile_expand_expr(Scheme_Object *form, Scheme_Comp_Env *env, || SAME_TYPE(SCHEME_TYPE(var), scheme_syntax_compiler_type))) { if (SAME_OBJ(var, stop_expander)) { /* Return original: */ + SCHEME_EXPAND_OBSERVE_ENTER_PRIM(rec[drec].observer, form); + SCHEME_EXPAND_OBSERVE_PRIM_STOP(rec[drec].observer); + SCHEME_EXPAND_OBSERVE_EXIT_PRIM(rec[drec].observer, form); + SCHEME_EXPAND_OBSERVE_RETURN(rec[drec].observer, form); return form; } else if (rec[drec].comp && SAME_OBJ(var, normal)) { /* Skip creation of intermediate form */ @@ -4060,7 +4094,11 @@ scheme_compile_expand_expr(Scheme_Object *form, Scheme_Comp_Env *env, } else { Scheme_Syntax_Expander *f; f = (Scheme_Syntax_Expander *)SCHEME_SYNTAX_EXP(var); - return f(form, env, rec, drec); + SCHEME_EXPAND_OBSERVE_ENTER_PRIM(rec[drec].observer, form); + form = f(form, env, rec, drec); + SCHEME_EXPAND_OBSERVE_EXIT_PRIM(rec[drec].observer, form); + SCHEME_EXPAND_OBSERVE_RETURN(rec[drec].observer, form); + return form; } } else { name = stx; @@ -4078,10 +4116,15 @@ scheme_compile_expand_expr(Scheme_Object *form, Scheme_Comp_Env *env, } macro: - if (!rec[drec].comp && !rec[drec].depth) + if (!rec[drec].comp && !rec[drec].depth) { + SCHEME_EXPAND_OBSERVE_RETURN(rec[drec].observer, form); return form; /* We've gone as deep as requested */ + } + SCHEME_EXPAND_OBSERVE_ENTER_MACRO(rec[drec].observer, form); form = compile_expand_macro_app(name, menv, var, form, env, rec, drec); + SCHEME_EXPAND_OBSERVE_EXIT_MACRO(rec[drec].observer, form); + if (rec[drec].comp) goto top; else { @@ -4089,8 +4132,10 @@ scheme_compile_expand_expr(Scheme_Object *form, Scheme_Comp_Env *env, --rec[drec].depth; if (rec[drec].depth) goto top; - else + else { + SCHEME_EXPAND_OBSERVE_RETURN(rec[drec].observer, form); return form; + } } } @@ -4159,7 +4204,7 @@ compile_expand_app(Scheme_Object *forms, Scheme_Comp_Env *env, rest = SCHEME_STX_CDR(form); al = scheme_stx_proper_list_length(rest); - + if (al == pl) { DupCheckRecord r; @@ -4175,7 +4220,7 @@ compile_expand_app(Scheme_Object *forms, Scheme_Comp_Env *env, scheme_dup_symbol_check(&r, NULL, n, "argument", name); v = SCHEME_STX_CAR(rest); - v = cons(cons(n, cons(v, scheme_null)), scheme_null); + v = cons(cons(cons(n, scheme_null), cons(v, scheme_null)), scheme_null); if (last) SCHEME_CDR(last) = v; else @@ -4186,7 +4231,7 @@ compile_expand_app(Scheme_Object *forms, Scheme_Comp_Env *env, rest = SCHEME_STX_CDR(rest); } - body = scheme_datum_to_syntax(cons(let_symbol, + body = scheme_datum_to_syntax(cons(let_values_symbol, cons(bindings, body)), form, @@ -4201,7 +4246,7 @@ compile_expand_app(Scheme_Object *forms, Scheme_Comp_Env *env, #if 0 scheme_wrong_syntax(scheme_application_stx_string, NULL, form, "procedure application: bad ((lambda (...) ...) ...) syntax"); - return NULL + return NULL; #endif } } @@ -4246,6 +4291,7 @@ app_syntax(Scheme_Object *form, Scheme_Comp_Env *env, Scheme_Compile_Info *rec, static Scheme_Object * app_expand(Scheme_Object *form, Scheme_Comp_Env *env, Scheme_Expand_Info *erec, int drec) { + SCHEME_EXPAND_OBSERVE_PRIM_APP(erec[drec].observer); return compile_expand_app(form, env, erec, drec); } @@ -4269,6 +4315,7 @@ datum_syntax(Scheme_Object *form, Scheme_Comp_Env *env, Scheme_Compile_Info *rec static Scheme_Object * datum_expand(Scheme_Object *form, Scheme_Comp_Env *env, Scheme_Expand_Info *erec, int drec) { + SCHEME_EXPAND_OBSERVE_PRIM_DATUM(erec[drec].observer); return form; } @@ -4343,8 +4390,8 @@ top_syntax(Scheme_Object *form, Scheme_Comp_Env *env, Scheme_Compile_Info *rec, static Scheme_Object * top_expand(Scheme_Object *form, Scheme_Comp_Env *env, Scheme_Expand_Info *erec, int drec) { + SCHEME_EXPAND_OBSERVE_PRIM_TOP(erec[drec].observer); check_top(scheme_expand_stx_string, form, env); - return form; } @@ -4370,7 +4417,7 @@ static Scheme_Object *pair_lifted(Scheme_Object *_ip, Scheme_Object **_id, Schem scheme_add_compilation_binding(0, *_id, naya); - return icons(*_id, icons(expr, scheme_null)); + return icons(icons(*_id, scheme_null), icons(expr, scheme_null)); } static Scheme_Object *compile_expand_expr_lift_to_let_k(void); @@ -4464,7 +4511,7 @@ compile_expand_expr_lift_to_let(Scheme_Object *form, Scheme_Comp_Env *env, revl = icons(SCHEME_CAR(l), revl); } for (; SCHEME_PAIRP(revl); revl = SCHEME_CDR(revl)) { - o = icons(scheme_datum_to_syntax(let_symbol, scheme_false, scheme_sys_wraps(env), 0, 0), + o = icons(scheme_datum_to_syntax(let_values_symbol, scheme_false, scheme_sys_wraps(env), 0, 0), icons(icons(SCHEME_CAR(revl), scheme_null), icons(o, scheme_null))); } @@ -4517,15 +4564,22 @@ scheme_compile_expand_block(Scheme_Object *forms, Scheme_Comp_Env *env, Scheme_Compile_Info recs[2]; DupCheckRecord r; - if (rec[drec].comp) + if (rec[drec].comp) { scheme_default_compile_rec(rec, drec); + } else { + SCHEME_EXPAND_OBSERVE_ENTER_BLOCK(rec[drec].observer, forms); + } if (SCHEME_STX_NULLP(forms)) { if (rec[drec].comp) { scheme_compile_rec_done_local(rec, drec); return scheme_null; - } else + } else { + SCHEME_EXPAND_OBSERVE_BLOCK_TO_LIST(rec[drec].observer, forms); + SCHEME_EXPAND_OBSERVE_ENTER_LIST(rec[drec].observer, forms); + SCHEME_EXPAND_OBSERVE_EXIT_LIST(rec[drec].observer, forms); return forms; + } } rib = scheme_make_rename_rib(); @@ -4538,13 +4592,24 @@ scheme_compile_expand_block(Scheme_Object *forms, Scheme_Comp_Env *env, try_again: + SCHEME_EXPAND_OBSERVE_NEXT(rec[drec].observer); + if (!SCHEME_STX_PAIRP(forms)) { scheme_wrong_syntax(scheme_begin_stx_string, NULL, forms, "bad syntax"); return NULL; } first = SCHEME_STX_CAR(forms); - first = scheme_add_rename_rib(first, rib); + + { + /* Need to send both parts (before & after) of block rename */ + Scheme_Object *old_first; + + old_first = first; + first = scheme_add_rename_rib(first, rib); + + SCHEME_EXPAND_OBSERVE_BLOCK_RENAMES(rec[drec].observer,old_first,first); + } { Scheme_Object *gval, *result; @@ -4560,6 +4625,9 @@ scheme_compile_expand_block(Scheme_Object *forms, Scheme_Comp_Env *env, /* Inline content */ Scheme_Object *orig_forms = forms; + SCHEME_EXPAND_OBSERVE_PRIM_BEGIN(rec[drec].observer); + + /* FIXME: Redundant with check done by scheme_flatten_begin below? */ if (scheme_stx_proper_list_length(first) < 0) scheme_wrong_syntax(scheme_begin_stx_string, NULL, first, "bad syntax (" IMPROPER_LIST_FORM ")"); @@ -4576,7 +4644,9 @@ scheme_compile_expand_block(Scheme_Object *forms, Scheme_Comp_Env *env, } forms = scheme_flatten_begin(first, forms); - + + SCHEME_EXPAND_OBSERVE_SPLICE(rec[drec].observer, forms); + if (SCHEME_STX_NULLP(forms)) { scheme_wrong_syntax(scheme_begin_stx_string, NULL, first, "bad syntax (empty form)"); @@ -4599,6 +4669,12 @@ scheme_compile_expand_block(Scheme_Object *forms, Scheme_Comp_Env *env, is_val = SAME_OBJ(gval, scheme_define_values_syntax); v = SCHEME_STX_CDR(first); + + if (is_val) { + SCHEME_EXPAND_OBSERVE_PRIM_DEFINE_VALUES(rec[drec].observer); + } else { + SCHEME_EXPAND_OBSERVE_PRIM_DEFINE_SYNTAXES(rec[drec].observer); + } if (!SCHEME_STX_PAIRP(v)) scheme_wrong_syntax(NULL, NULL, first, @@ -4687,9 +4763,9 @@ scheme_compile_expand_block(Scheme_Object *forms, Scheme_Comp_Env *env, expr = scheme_add_rename_rib(expr, rib); scheme_bind_syntaxes("local syntax definition", names, expr, - new_env->genv->exp_env, new_env->insp, rec[drec].certs, + new_env->genv->exp_env, new_env->insp, rec, drec, new_env, new_env, - &pos, NULL); + &pos); } /* Extend shared rib with renamings */ @@ -4705,7 +4781,13 @@ scheme_compile_expand_block(Scheme_Object *forms, Scheme_Comp_Env *env, if (!SCHEME_STX_NULLP(result)) { first = SCHEME_STX_CAR(result); first = scheme_datum_to_syntax(first, forms, forms, 0, 0); - first = scheme_add_rename_rib(first, rib); + { + Scheme_Object *old_first; + old_first = first; + first = scheme_add_rename_rib(first, rib); + SCHEME_EXPAND_OBSERVE_NEXT(rec[drec].observer); + SCHEME_EXPAND_OBSERVE_BLOCK_RENAMES(rec[drec].observer,old_first,first); + } first = scheme_check_immediate_macro(first, env, rec, drec, 1, &gval, &xenv, ectx); more = 1; if (NOT_SAME_OBJ(gval, scheme_define_values_syntax) @@ -4713,8 +4795,10 @@ scheme_compile_expand_block(Scheme_Object *forms, Scheme_Comp_Env *env, if (SAME_OBJ(gval, scheme_begin_syntax)) { /* Inline content */ result = SCHEME_STX_CDR(result); + SCHEME_EXPAND_OBSERVE_PRIM_BEGIN(rec[drec].observer); result = scheme_flatten_begin(first, result); - goto define_try_again; + SCHEME_EXPAND_OBSERVE_SPLICE(rec[drec].observer,result); + goto define_try_again; } else { /* Keep partially expanded `first': */ result = SCHEME_STX_CDR(result); @@ -4750,16 +4834,18 @@ scheme_compile_expand_block(Scheme_Object *forms, Scheme_Comp_Env *env, } if (!more) { - if (rec[drec].comp) + if (rec[drec].comp) { result = scheme_compile_expr(result, env, rec, drec); - else { + return scheme_make_immutable_pair(result, scheme_null); + } else { if (rec[drec].depth > 0) --rec[drec].depth; - if (rec[drec].depth) - result = scheme_expand_expr(result, env, rec, drec); + if (rec[drec].depth) { + result = scheme_make_immutable_pair(result, scheme_null); + SCHEME_EXPAND_OBSERVE_BLOCK_TO_LETREC(rec[drec].observer, result); + return scheme_expand_list(result, env, rec, drec); + } } - - return scheme_make_immutable_pair(result, scheme_null); } } @@ -4786,7 +4872,11 @@ scheme_compile_expand_block(Scheme_Object *forms, Scheme_Comp_Env *env, #endif scheme_merge_compile_recs(rec, drec, recs, 2); + return scheme_make_immutable_pair(first, forms); } else { +#if EMBEDDED_DEFINES_START_ANYWHERE + /* Expand-observe not implemented for this case, + so fix that if it's ever enabled. */ Scheme_Object *rest, *vname; vname = rec[drec].value_name; @@ -4803,16 +4893,29 @@ scheme_compile_expand_block(Scheme_Object *forms, Scheme_Comp_Env *env, first = scheme_expand_expr(first, env, recs, 0); rest = scheme_datum_to_syntax(rest, forms, forms, 0, -1); -#if EMBEDDED_DEFINES_START_ANYWHERE forms = scheme_compile_expand_block(rest, env, recs, 1); + return scheme_make_immutable_pair(first, forms); #else - if (scheme_stx_proper_list_length(rest) < 0) - scheme_wrong_syntax(scheme_begin_stx_string, NULL, rest, "bad syntax"); - forms = scheme_expand_list(rest, env, recs, 1); + Scheme_Object *newforms, *vname; + + vname = rec[drec].value_name; + rec[drec].value_name = scheme_false; + scheme_init_expand_recs(rec, drec, recs, 2); + + recs[0].value_name = vname; + + newforms = SCHEME_STX_CDR(forms); + newforms = scheme_make_immutable_pair(first, newforms); + forms = scheme_datum_to_syntax(newforms, forms, forms, 0, -1); + + if (scheme_stx_proper_list_length(forms) < 0) + scheme_wrong_syntax(scheme_begin_stx_string, NULL, forms, "bad syntax"); + + SCHEME_EXPAND_OBSERVE_BLOCK_TO_LIST(rec[drec].observer, forms); + forms = scheme_expand_list(forms, env, recs, 0); + return forms; #endif } - - return scheme_make_immutable_pair(first, forms); } Scheme_Object * @@ -4833,8 +4936,12 @@ scheme_expand_list(Scheme_Object *form, Scheme_Comp_Env *env, Scheme_Expand_Info { Scheme_Object *first = NULL, *last = NULL, *fm; - if (SCHEME_STX_NULLP(form)) + SCHEME_EXPAND_OBSERVE_ENTER_LIST(erec[drec].observer, form); + + if (SCHEME_STX_NULLP(form)) { + SCHEME_EXPAND_OBSERVE_EXIT_LIST(erec[drec].observer, form); return scheme_null; + } if (scheme_stx_proper_list_length(form) < 0) { /* This is already checked for anything but application */ @@ -4847,6 +4954,8 @@ scheme_expand_list(Scheme_Object *form, Scheme_Comp_Env *env, Scheme_Expand_Info Scheme_Object *r, *p; Scheme_Expand_Info erec1; + SCHEME_EXPAND_OBSERVE_NEXT(erec[drec].observer); + p = SCHEME_STX_CDR(fm); scheme_init_expand_recs(erec, drec, &erec1, 1); @@ -4864,7 +4973,9 @@ scheme_expand_list(Scheme_Object *form, Scheme_Comp_Env *env, Scheme_Expand_Info fm = SCHEME_STX_CDR(fm); } - return scheme_datum_to_syntax(first, form, form, 0, 0); + form = scheme_datum_to_syntax(first, form, form, 0, 0); + SCHEME_EXPAND_OBSERVE_EXIT_LIST(erec[drec].observer, form); + return form; } @@ -5519,7 +5630,7 @@ scheme_do_eval(Scheme_Object *obj, int num_rands, Scheme_Object **rands, data = ((Scheme_Native_Closure *)obj)->code; /* Enlarge the runstack? This max_let_depth is in bytes instead of words. */ - if (data->max_let_depth > ((unsigned long)RUNSTACK - (unsigned long)RUNSTACK_START)) { + if ((unsigned long)data->max_let_depth > ((unsigned long)RUNSTACK - (unsigned long)RUNSTACK_START)) { p->ku.k.p1 = (void *)obj; p->ku.k.i1 = num_rands; p->ku.k.p2 = (void *)rands; @@ -6502,6 +6613,7 @@ static void *expand_k(void) erec1.depth = depth; erec1.value_name = scheme_false; erec1.certs = certs; + erec1.observer = scheme_get_expand_observe(); if (catch_lifts) scheme_frame_captures_lifts(env, scheme_make_lifted_defn, scheme_sys_wraps(env), scheme_false); @@ -6522,6 +6634,7 @@ static void *expand_k(void) obj = icons(scheme_datum_to_syntax(begin_symbol, scheme_false, scheme_sys_wraps(env), 0, 0), obj); obj = scheme_datum_to_syntax(obj, scheme_false, scheme_false, 0, 0); + SCHEME_EXPAND_OBSERVE_LIFT_LOOP(erec1.observer,obj); if (depth >= 0) break; } else @@ -6766,6 +6879,7 @@ static Scheme_Object *stop_syntax(Scheme_Object *form, Scheme_Comp_Env *env, static Scheme_Object *stop_expand(Scheme_Object *form, Scheme_Comp_Env *env, Scheme_Expand_Info *erec, int drec) { + SCHEME_EXPAND_OBSERVE_PRIM_STOP(erec[drec].observer); return form; } @@ -6803,6 +6917,7 @@ do_local_expand(const char *name, int for_stx, int catch_lifts, int argc, Scheme Scheme_Object *l, *local_mark, *renaming = NULL, *orig_l; int cnt, pos, kind; int bad_sub_env = 0; + Scheme_Object *observer; env = scheme_current_thread->current_local_env; @@ -6907,6 +7022,9 @@ do_local_expand(const char *name, int for_stx, int catch_lifts, int argc, Scheme orig_l = l; + observer = scheme_get_expand_observe(); + SCHEME_EXPAND_OBSERVE_ENTER_LOCAL(observer, l); + if (local_mark) { /* Since we have an expression from local context, we need to remove the temporary mark... */ @@ -6918,6 +7036,8 @@ do_local_expand(const char *name, int for_stx, int catch_lifts, int argc, Scheme if (renaming) l = scheme_add_rename(l, renaming); + SCHEME_EXPAND_OBSERVE_LOCAL_PRE(observer, l); + if (SCHEME_FALSEP(argv[2])) { Scheme_Object *xl, *gval; Scheme_Compile_Expand_Info drec[1]; @@ -6935,6 +7055,8 @@ do_local_expand(const char *name, int for_stx, int catch_lifts, int argc, Scheme l = _expand(l, env, -2, 0, 0, catch_lifts, 0, scheme_current_thread->current_local_certs); } + SCHEME_EXPAND_OBSERVE_LOCAL_POST(observer, l); + if (renaming) l = scheme_add_rename(l, renaming); @@ -6943,6 +7065,8 @@ do_local_expand(const char *name, int for_stx, int catch_lifts, int argc, Scheme l = scheme_add_remove_mark(l, local_mark); } + SCHEME_EXPAND_OBSERVE_EXIT_LOCAL(observer, l); + return l; } @@ -7137,6 +7261,14 @@ local_eval(int argc, Scheme_Object **argv) stx_env->in_modidx = scheme_current_thread->current_local_modidx; if (!SCHEME_FALSEP(expr)) { + + Scheme_Compile_Expand_Info rec; + rec.comp = 0; + rec.depth = -1; + rec.value_name = scheme_false; + rec.certs = certs; + rec.observer = scheme_get_expand_observe(); + /* Evaluate and bind syntaxes */ expr = scheme_add_remove_mark(expr, scheme_current_thread->current_local_mark); @@ -7144,9 +7276,9 @@ local_eval(int argc, Scheme_Object **argv) pos = 0; expr = scheme_add_rename_rib(expr, rib); scheme_bind_syntaxes("local syntax definition", names, expr, - stx_env->genv->exp_env, stx_env->insp, certs, + stx_env->genv->exp_env, stx_env->insp, &rec, 0, stx_env, stx_env, - &pos, NULL); + &pos); } /* Extend shared rib with renamings */ diff --git a/src/mzscheme/src/file.c b/src/mzscheme/src/file.c index 8953b4eefb..549d05ac8f 100644 --- a/src/mzscheme/src/file.c +++ b/src/mzscheme/src/file.c @@ -128,7 +128,7 @@ static int check_dos_slashslash_qm(const char *next, int len, int *drive_end, int *clean_start, int *add_sep); #endif -#define is_drive_letter(c) ((c > 0) && (c < 128) && scheme_isalpha(c)) +#define is_drive_letter(c) ((c > 0) && (c < 128) && isalpha(c)) /* local */ static Scheme_Object *path_p(int argc, Scheme_Object **argv); diff --git a/src/mzscheme/src/fun.c b/src/mzscheme/src/fun.c index f23b226a35..a7fcdce0f6 100644 --- a/src/mzscheme/src/fun.c +++ b/src/mzscheme/src/fun.c @@ -29,6 +29,7 @@ overflow and continuation-jump limits. */ #include "schpriv.h" +#include "schexpobs.h" /* The implementations of the time primitives, such as `current-seconds', vary a lot from platform to platform. */ @@ -2138,13 +2139,16 @@ Scheme_Object * scheme_apply_macro(Scheme_Object *name, Scheme_Env *menv, Scheme_Object *rator, Scheme_Object *code, Scheme_Comp_Env *env, Scheme_Object *boundname, - Scheme_Object *certs, int for_set) + Scheme_Compile_Expand_Info *rec, int drec, + int for_set) { Scheme_Object *orig_code = code; + Scheme_Object *certs; + certs = rec[drec].certs; if (SAME_TYPE(SCHEME_TYPE(rator), scheme_id_macro_type)) { Scheme_Object *mark; - + rator = SCHEME_PTR1_VAL(rator); /* rator is now an identifier */ @@ -2184,12 +2188,16 @@ scheme_apply_macro(Scheme_Object *name, Scheme_Env *menv, mark = scheme_new_mark(); code = scheme_add_remove_mark(code, mark); + SCHEME_EXPAND_OBSERVE_MACRO_PRE_X(rec[drec].observer, code); + scheme_on_next_top(env, mark, boundname, certs, menv, menv ? menv->link_midx : env->genv->link_midx); rands_vec[0] = code; code = scheme_apply(rator, 1, rands_vec); + SCHEME_EXPAND_OBSERVE_MACRO_POST_X(rec[drec].observer, code); + if (!SCHEME_STXP(code)) { scheme_raise_exn(MZEXN_FAIL_CONTRACT, "%S: return value from syntax expander was not syntax: %V", diff --git a/src/mzscheme/src/lightning/i386/funcs.h b/src/mzscheme/src/lightning/i386/funcs.h index b8a526cda1..aff42efddf 100644 --- a/src/mzscheme/src/lightning/i386/funcs.h +++ b/src/mzscheme/src/lightning/i386/funcs.h @@ -56,11 +56,11 @@ jit_flush_code(void *dest, void *end) jit_flush_code as an mprotect. */ #if defined(MZ_JIT_USE_MPROTECT) || defined(MZ_JIT_USE_WINDOWS_VIRTUAL_ALLOC) static unsigned long prev_page = 0, prev_length = 0; - long page, length; + unsigned long page, length; # ifdef PAGESIZE const long page_size = PAGESIZE; # else - static long page_size = -1; + static unsigned long page_size = -1; if (page_size == -1) { # ifdef MZ_JIT_USE_WINDOWS_VIRTUAL_ALLOC SYSTEM_INFO info; diff --git a/src/mzscheme/src/module.c b/src/mzscheme/src/module.c index fca3b0faa8..b5d0512139 100644 --- a/src/mzscheme/src/module.c +++ b/src/mzscheme/src/module.c @@ -25,6 +25,7 @@ #include "schpriv.h" #include "schmach.h" +#include "schexpobs.h" /* globals */ Scheme_Object *scheme_sys_wraps0; @@ -78,10 +79,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, Scheme_Hash_Table *ht, +static void module_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 top_level_require_validate(Scheme_Object *data, Mz_CPort *port, char *stack, Scheme_Hash_Table *ht, +static void top_level_require_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); @@ -3147,7 +3150,8 @@ static Scheme_Object *module_jit(Scheme_Object *data) return (Scheme_Object *)m; } -static void module_validate(Scheme_Object *data, Mz_CPort *port, char *stack, Scheme_Hash_Table *ht, +static void module_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) { @@ -3471,7 +3475,7 @@ static Scheme_Object *do_module(Scheme_Object *form, Scheme_Comp_Env *env, empty_self_modidx = scheme_make_modidx(scheme_false, scheme_false, scheme_false); empty_self_symbol = scheme_make_symbol("expanded module"); /* uninterned */ } - + /* phase shift to replace self_modidx of previous expansion (if any): */ fm = scheme_stx_phase_shift(fm, 0, empty_self_modidx, self_modidx, NULL); @@ -3480,8 +3484,13 @@ static Scheme_Object *do_module(Scheme_Object *form, Scheme_Comp_Env *env, fm = scheme_add_rename(fm, tt_rn); if (!check_mb) { + + SCHEME_EXPAND_OBSERVE_NEXT(rec[drec].observer); + fm = scheme_check_immediate_macro(fm, benv, rec, drec, 0, &mbval, NULL, NULL); + SCHEME_EXPAND_OBSERVE_NEXT(rec[drec].observer); + /* If expansion is not the primitive `#%module-begin', add local one: */ if (!SAME_OBJ(mbval, modbeg_syntax)) { Scheme_Object *mb; @@ -3592,6 +3601,7 @@ module_syntax(Scheme_Object *form, Scheme_Comp_Env *env, Scheme_Compile_Info *re static Scheme_Object * module_expand(Scheme_Object *form, Scheme_Comp_Env *env, Scheme_Expand_Info *erec, int drec) { + SCHEME_EXPAND_OBSERVE_PRIM_MODULE(erec[drec].observer); if (erec[drec].depth > 0) erec[drec].depth++; @@ -3750,6 +3760,7 @@ static Scheme_Object *do_module_begin(Scheme_Object *form, Scheme_Comp_Env *env, int all_simple_renames = 1, et_all_simple_renames = 1, tt_all_simple_renames = 1; int maybe_has_lifts = 0; Scheme_Object *redef_modname; + Scheme_Object *observer; if (!(env->flags & SCHEME_MODULE_FRAME)) scheme_wrong_syntax(NULL, NULL, form, "illegal use (not a module body)"); @@ -3906,6 +3917,10 @@ static Scheme_Object *do_module_begin(Scheme_Object *form, Scheme_Comp_Env *env, maybe_has_lifts = 0; + /* Pass 1 */ + + observer = rec[drec].observer; + /* Partially expand all expressions, and process definitions, requires, and provides. Also, flatten top-level `begin' expressions: */ for (fm = SCHEME_STX_CDR(form); !SCHEME_STX_NULLP(fm); ) { @@ -3915,6 +3930,8 @@ static Scheme_Object *do_module_begin(Scheme_Object *form, Scheme_Comp_Env *env, while (1) { Scheme_Object *fst; + SCHEME_EXPAND_OBSERVE_NEXT(observer); + e = SCHEME_STX_CAR(fm); p = (maybe_has_lifts @@ -3929,6 +3946,7 @@ static Scheme_Object *do_module_begin(Scheme_Object *form, Scheme_Comp_Env *env, erec1.depth = -1; erec1.value_name = scheme_false; erec1.certs = rec[drec].certs; + erec1.observer = rec[drec].observer; e = scheme_expand_expr(e, xenv, &erec1, 0); } @@ -3944,6 +3962,7 @@ static Scheme_Object *do_module_begin(Scheme_Object *form, Scheme_Comp_Env *env, fm = scheme_named_map_1(NULL, add_a_rename, fm, post_ex_et_rn); fm = scheme_named_map_1(NULL, add_a_rename, fm, post_ex_tt_rn); fm = scheme_append(fst, scheme_make_pair(e, fm)); + SCHEME_EXPAND_OBSERVE_LIFT_LOOP(observer, fst); } else { /* No lifts added... */ if (SCHEME_STX_PAIRP(e)) @@ -3957,9 +3976,11 @@ static Scheme_Object *do_module_begin(Scheme_Object *form, Scheme_Comp_Env *env, e = scheme_add_rename(e, post_ex_et_rn); e = scheme_add_rename(e, post_ex_tt_rn); fm = scheme_flatten_begin(e, fm); + SCHEME_EXPAND_OBSERVE_SPLICE(observer, fm); if (SCHEME_STX_NULLP(fm)) { fm = scheme_frame_get_end_statement_lifts(xenv); fm = scheme_reverse(fm); + SCHEME_EXPAND_OBSERVE_LIFT_END_LOOP(observer, fm); maybe_has_lifts = 0; if (SCHEME_NULLP(fm)) { e = NULL; @@ -3989,6 +4010,9 @@ static Scheme_Object *do_module_begin(Scheme_Object *form, Scheme_Comp_Env *env, /************ define-values *************/ Scheme_Object *vars, *val; + SCHEME_EXPAND_OBSERVE_ENTER_PRIM(observer, e); + SCHEME_EXPAND_OBSERVE_PRIM_DEFINE_VALUES(observer); + /* Create top-level vars */ scheme_define_parse(e, &vars, &val, 0, env); @@ -4033,7 +4057,8 @@ static Scheme_Object *do_module_begin(Scheme_Object *form, Scheme_Comp_Env *env, vars = SCHEME_STX_CDR(vars); } - + + SCHEME_EXPAND_OBSERVE_EXIT_PRIM(observer, e); normal = 1; } else if (scheme_stx_module_eq(scheme_define_syntaxes_stx, fst, 0) || scheme_stx_module_eq(define_for_syntaxes_stx, fst, 0)) { @@ -4050,6 +4075,9 @@ static Scheme_Object *do_module_begin(Scheme_Object *form, Scheme_Comp_Env *env, for_stx = scheme_stx_module_eq(define_for_syntaxes_stx, fst, 0); + SCHEME_EXPAND_OBSERVE_ENTER_PRIM(observer, e); + SCHEME_EXPAND_OBSERVE_PRIM_DEFINE_SYNTAXES(observer); + scheme_define_parse(e, &names, &code, 1, env); if (SCHEME_STX_PAIRP(names) && SCHEME_STX_NULLP(SCHEME_STX_CDR(names))) @@ -4117,6 +4145,7 @@ static Scheme_Object *do_module_begin(Scheme_Object *form, Scheme_Comp_Env *env, mrec.resolve_module_ids = 0; mrec.value_name = NULL; mrec.certs = rec[drec].certs; + mrec.observer = NULL; if (!rec[drec].comp) { Scheme_Expand_Info erec1; @@ -4124,6 +4153,8 @@ static Scheme_Object *do_module_begin(Scheme_Object *form, Scheme_Comp_Env *env, erec1.depth = -1; erec1.value_name = boundname; erec1.certs = rec[drec].certs; + erec1.observer = rec[drec].observer; + SCHEME_EXPAND_OBSERVE_PHASE_UP(observer); code = scheme_expand_expr_lift_to_let(code, eenv, &erec1, 0); } m = scheme_compile_expr_lift_to_let(code, eenv, &mrec, 0); @@ -4163,10 +4194,15 @@ static Scheme_Object *do_module_begin(Scheme_Object *form, Scheme_Comp_Env *env, scheme_make_pair(m, scheme_make_pair(code, scheme_null))); e = scheme_datum_to_syntax(m, e, e, 0, 2); } + + SCHEME_EXPAND_OBSERVE_EXIT_PRIM(observer, e); normal = 0; } else if (scheme_stx_module_eq(require_stx, fst, 0)) { /************ require *************/ Scheme_Object *imods; + + SCHEME_EXPAND_OBSERVE_ENTER_PRIM(observer, e); + SCHEME_EXPAND_OBSERVE_PRIM_REQUIRE(observer); /* Add requires to renaming: */ imods = parse_requires(e, self_modidx, env->genv, @@ -4179,11 +4215,16 @@ static Scheme_Object *do_module_begin(Scheme_Object *form, Scheme_Comp_Env *env, if (rec[drec].comp) e = NULL; + + SCHEME_EXPAND_OBSERVE_EXIT_PRIM(observer, e); normal = 0; } else if (scheme_stx_module_eq(require_for_syntax_stx, fst, 0)) { /************ require-for-syntax *************/ Scheme_Object *imods; + SCHEME_EXPAND_OBSERVE_ENTER_PRIM(observer, e); + SCHEME_EXPAND_OBSERVE_PRIM_REQUIRE_FOR_SYNTAX(observer); + scheme_prepare_exp_env(env->genv); /* Add requires to renaming: */ @@ -4201,11 +4242,16 @@ static Scheme_Object *do_module_begin(Scheme_Object *form, Scheme_Comp_Env *env, if (rec[drec].comp) e = NULL; + + SCHEME_EXPAND_OBSERVE_EXIT_PRIM(observer, e); normal = 0; } else if (scheme_stx_module_eq(require_for_template_stx, fst, 0)) { /************ require-for-template *************/ Scheme_Object *imods; + SCHEME_EXPAND_OBSERVE_ENTER_PRIM(observer, e); + SCHEME_EXPAND_OBSERVE_PRIM_REQUIRE_FOR_TEMPLATE(observer); + scheme_prepare_template_env(env->genv); /* Add requires to renaming: */ @@ -4223,6 +4269,8 @@ static Scheme_Object *do_module_begin(Scheme_Object *form, Scheme_Comp_Env *env, if (rec[drec].comp) e = NULL; + + SCHEME_EXPAND_OBSERVE_EXIT_PRIM(observer, e); normal = 0; } else if (scheme_stx_module_eq(provide_stx, fst, 0)) { /************ provide *************/ @@ -4230,6 +4278,9 @@ static Scheme_Object *do_module_begin(Scheme_Object *form, Scheme_Comp_Env *env, Scheme_Object *l; int protect_cnt = 0; + SCHEME_EXPAND_OBSERVE_ENTER_PRIM(observer, e); + SCHEME_EXPAND_OBSERVE_PRIM_PROVIDE(observer); + if (scheme_stx_proper_list_length(e) < 0) scheme_wrong_syntax(NULL, e, form, "bad syntax (" IMPROPER_LIST_FORM ")"); @@ -4478,9 +4529,12 @@ static Scheme_Object *do_module_begin(Scheme_Object *form, Scheme_Comp_Env *env, if (rec[drec].comp) e = NULL; + + SCHEME_EXPAND_OBSERVE_EXIT_PRIM(observer, e); normal = 0; - } else + } else { normal = 1; + } } else normal = 1; } else @@ -4501,11 +4555,15 @@ static Scheme_Object *do_module_begin(Scheme_Object *form, Scheme_Comp_Env *env, if (SCHEME_STX_NULLP(fm) && maybe_has_lifts) { fm = scheme_frame_get_end_statement_lifts(xenv); fm = scheme_reverse(fm); + SCHEME_EXPAND_OBSERVE_LIFT_END_LOOP(observer, fm); maybe_has_lifts = 0; } } /* first = a list of (cons semi-expanded-expression normal?) */ + /* Phase 2 */ + SCHEME_EXPAND_OBSERVE_NEXT_GROUP(observer); + if (rec[drec].comp) { /* Module manages its own prefix. That's how we get multiple instantiation of a module with "dynamic linking". */ @@ -4528,6 +4586,9 @@ static Scheme_Object *do_module_begin(Scheme_Object *form, Scheme_Comp_Env *env, e = SCHEME_CAR(p); normal = SCHEME_TRUEP(SCHEME_CDR(e)); e = SCHEME_CAR(e); + + SCHEME_EXPAND_OBSERVE_NEXT(observer); + if (normal) { l = (maybe_has_lifts ? scheme_frame_get_end_statement_lifts(cenv) @@ -4567,6 +4628,7 @@ static Scheme_Object *do_module_begin(Scheme_Object *form, Scheme_Comp_Env *env, } else { first = p; } + SCHEME_EXPAND_OBSERVE_LIFT_LOOP(observer, first); } } else { SCHEME_CAR(p) = e; @@ -4577,6 +4639,7 @@ static Scheme_Object *do_module_begin(Scheme_Object *form, Scheme_Comp_Env *env, /* If we're out of declarations, check for lifted-to-end: */ if (SCHEME_NULLP(p) && maybe_has_lifts) { p = scheme_frame_get_end_statement_lifts(cenv); + SCHEME_EXPAND_OBSERVE_LIFT_END_LOOP(observer, scheme_reverse(p)); p = scheme_reverse(p); for (ll = p; SCHEME_PAIRP(ll); ll = SCHEME_CDR(ll)) { e = scheme_make_pair(SCHEME_CAR(ll), scheme_true); @@ -5117,6 +5180,7 @@ module_begin_syntax(Scheme_Object *form, Scheme_Comp_Env *env, Scheme_Compile_In static Scheme_Object * module_begin_expand(Scheme_Object *form, Scheme_Comp_Env *env, Scheme_Expand_Info *erec, int drec) { + SCHEME_EXPAND_OBSERVE_PRIM_MODULE_BEGIN(erec[drec].observer); return do_module_begin(form, env, erec, drec); } @@ -5800,7 +5864,8 @@ top_level_require_jit(Scheme_Object *data) return data; } -static void top_level_require_validate(Scheme_Object *data, Mz_CPort *port, char *stack, Scheme_Hash_Table *ht, +static void top_level_require_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) { @@ -5882,6 +5947,7 @@ require_syntax(Scheme_Object *form, Scheme_Comp_Env *env, Scheme_Compile_Info *r static Scheme_Object * require_expand(Scheme_Object *form, Scheme_Comp_Env *env, Scheme_Expand_Info *erec, int drec) { + SCHEME_EXPAND_OBSERVE_PRIM_REQUIRE(erec[drec].observer); return do_require(form, env, erec, drec, 0); } @@ -5894,6 +5960,7 @@ require_for_syntax_syntax(Scheme_Object *form, Scheme_Comp_Env *env, Scheme_Comp static Scheme_Object * require_for_syntax_expand(Scheme_Object *form, Scheme_Comp_Env *env, Scheme_Expand_Info *erec, int drec) { + SCHEME_EXPAND_OBSERVE_PRIM_REQUIRE_FOR_SYNTAX(erec[drec].observer); return do_require(form, env, erec, drec, 1); } @@ -5906,6 +5973,7 @@ require_for_template_syntax(Scheme_Object *form, Scheme_Comp_Env *env, Scheme_Co static Scheme_Object * require_for_template_expand(Scheme_Object *form, Scheme_Comp_Env *env, Scheme_Expand_Info *erec, int drec) { + SCHEME_EXPAND_OBSERVE_PRIM_REQUIRE_FOR_TEMPLATE(erec[drec].observer); return do_require(form, env, erec, drec, -1); } @@ -5923,6 +5991,7 @@ provide_syntax(Scheme_Object *form, Scheme_Comp_Env *env, Scheme_Compile_Info *r static Scheme_Object * provide_expand(Scheme_Object *form, Scheme_Comp_Env *env, Scheme_Expand_Info *erec, int drec) { + SCHEME_EXPAND_OBSERVE_PRIM_PROVIDE(erec[drec].observer); scheme_wrong_syntax(NULL, NULL, form, "not in module body"); return NULL; } diff --git a/src/mzscheme/src/mzmarksrc.c b/src/mzscheme/src/mzmarksrc.c index c621d982d6..b54e5ef8e6 100644 --- a/src/mzscheme/src/mzmarksrc.c +++ b/src/mzscheme/src/mzmarksrc.c @@ -998,6 +998,7 @@ mark_comp_info { gcMARK(i->value_name); gcMARK(i->certs); + gcMARK(i->observer); size: gcBYTES_TO_WORDS(sizeof(Scheme_Compile_Info)); diff --git a/src/mzscheme/src/network.c b/src/mzscheme/src/network.c index 428d4e84a8..39c77de883 100644 --- a/src/mzscheme/src/network.c +++ b/src/mzscheme/src/network.c @@ -1473,7 +1473,7 @@ static long tcp_write_string(Scheme_Output_Port *port, if (data->b.out_bufmode < 2) { if (data->b.out_bufmax + len < TCP_BUFFER_SIZE) { memcpy(data->b.out_buffer + data->b.out_bufmax, s + offset, len); - data->b.out_bufmax += len; + data->b.out_bufmax += (short)len; if (data->b.out_bufmode == 1) { /* Check for newline */ int i; diff --git a/src/mzscheme/src/read.c b/src/mzscheme/src/read.c index 679f611c29..81cc0f33ef 100644 --- a/src/mzscheme/src/read.c +++ b/src/mzscheme/src/read.c @@ -3244,7 +3244,7 @@ static int u_strcmp(mzchar *s, const char *_t) int i; unsigned char *t = (unsigned char *)_t; - for (i = 0; s[i] && (scheme_tolower(s[i]) == scheme_tolower(((unsigned char *)t)[i])); i++) { + for (i = 0; s[i] && (scheme_tolower(s[i]) == scheme_tolower((mzchar)((unsigned char *)t)[i])); i++) { } if (s[i] || t[i]) return 1; @@ -5014,7 +5014,7 @@ static Scheme_Object *make_readtable(int argc, Scheme_Object **argv) } else { scheme_hash_set(t->mapping, scheme_make_integer(ch), val); if (ch < 128) - t->fast_mapping[ch] = SCHEME_INT_VAL(SCHEME_CAR(val)); + t->fast_mapping[ch] = (char)SCHEME_INT_VAL(SCHEME_CAR(val)); } } } diff --git a/src/mzscheme/src/schexpobs.h b/src/mzscheme/src/schexpobs.h new file mode 100644 index 0000000000..53f78fff14 --- /dev/null +++ b/src/mzscheme/src/schexpobs.h @@ -0,0 +1,136 @@ + +#ifndef __mzscheme_expobs__ +#define __mzscheme_expobs__ + +#define SCHEME_EXPAND_OBSERVE_ENABLE + +extern void scheme_call_expand_observe(Scheme_Object *obs, int signal, Scheme_Object *argument); +extern Scheme_Object *scheme_expand_observe_renames(Scheme_Object *env_pair); +extern void scheme_init_expand_observe(Scheme_Env *); +extern Scheme_Object *scheme_get_expand_observe(); + + +#ifdef SCHEME_EXPAND_OBSERVE_ENABLE +# define _SCHEME_EXPOBS(observer, signal, argument) \ + if (observer) { scheme_call_expand_observe(observer, signal, argument); } else {} +#endif + +#ifndef SCHEME_EXPAND_OBSERVE_ENABLE +#define _SCHEME_EXPOBS(observer, signal, argument) \ + ((void)0) +#endif + +/* Individual signals */ + +#define SCHEME_EXPAND_OBSERVE_VISIT(observer,stx) _SCHEME_EXPOBS(observer,0,stx) +#define SCHEME_EXPAND_OBSERVE_RESOLVE(observer,stx) _SCHEME_EXPOBS(observer,1,stx) +#define SCHEME_EXPAND_OBSERVE_RETURN(observer,stx) _SCHEME_EXPOBS(observer,2,stx) +#define SCHEME_EXPAND_OBSERVE_NEXT(observer) _SCHEME_EXPOBS(observer,3,NULL) +#define SCHEME_EXPAND_OBSERVE_ENTER_LIST(observer,stx) _SCHEME_EXPOBS(observer,4,stx) +#define SCHEME_EXPAND_OBSERVE_EXIT_LIST(observer,stx) _SCHEME_EXPOBS(observer,5,stx) +#define SCHEME_EXPAND_OBSERVE_ENTER_PRIM(observer,stx) _SCHEME_EXPOBS(observer,6,stx) +#define SCHEME_EXPAND_OBSERVE_EXIT_PRIM(observer,stx) _SCHEME_EXPOBS(observer,7,stx) +#define SCHEME_EXPAND_OBSERVE_ENTER_MACRO(observer,stx) _SCHEME_EXPOBS(observer,8,stx) +#define SCHEME_EXPAND_OBSERVE_EXIT_MACRO(observer,stx) _SCHEME_EXPOBS(observer,9,stx) +#define SCHEME_EXPAND_OBSERVE_ENTER_BLOCK(observer,stx) _SCHEME_EXPOBS(observer,10,stx) +#define SCHEME_EXPAND_OBSERVE_SPLICE(observer,stx) _SCHEME_EXPOBS(observer,11,stx) +#define SCHEME_EXPAND_OBSERVE_BLOCK_TO_LIST(observer,stx) _SCHEME_EXPOBS(observer,12,stx) +#define SCHEME_EXPAND_OBSERVE_NEXT_GROUP(observer) _SCHEME_EXPOBS(observer,13,NULL) +#define SCHEME_EXPAND_OBSERVE_BLOCK_TO_LETREC(observer,stx) _SCHEME_EXPOBS(observer,14,stx) +#define SCHEME_EXPAND_OBSERVE_LET_RENAMES(observer,vars,body) \ + _SCHEME_EXPOBS(observer,16, scheme_make_immutable_pair(vars, body)) +#define SCHEME_EXPAND_OBSERVE_LAMBDA_RENAMES(observer,vars,body) \ + _SCHEME_EXPOBS(observer,17, scheme_make_immutable_pair(vars, body)) +#define SCHEME_EXPAND_OBSERVE_CASE_LAMBDA_RENAMES(observer,vars,body) \ + _SCHEME_EXPOBS(observer,18, scheme_make_immutable_pair(vars, body)) +#define SCHEME_EXPAND_OBSERVE_LETREC_SYNTAXES_RENAMES(observer,sbinds,vbinds,body) \ + _SCHEME_EXPOBS(observer,19, scheme_make_immutable_pair(sbinds, scheme_make_immutable_pair(vbinds, body))) +#define SCHEME_EXPAND_OBSERVE_PHASE_UP(observer) _SCHEME_EXPOBS(observer,20,NULL) + +#define SCHEME_EXPAND_OBSERVE_MACRO_PRE_X(observer,stx) _SCHEME_EXPOBS(observer,21,stx) +#define SCHEME_EXPAND_OBSERVE_MACRO_POST_X(observer,stx) _SCHEME_EXPOBS(observer,22,stx) + +#define SCHEME_EXPAND_OBSERVE_MODULE_BODY(observer,list) _SCHEME_EXPOBS(observer,23,list) +#define SCHEME_EXPAND_OBSERVE_BLOCK_RENAMES(observer,old,new) \ + _SCHEME_EXPOBS(observer,24, scheme_make_immutable_pair(old, new)) + +/* Prim signals */ +#define SCHEME_EXPAND_OBSERVE_PRIM_STOP(observer) \ + _SCHEME_EXPOBS(observer,100,NULL) +#define SCHEME_EXPAND_OBSERVE_PRIM_MODULE(observer) \ + _SCHEME_EXPOBS(observer,101,NULL) +#define SCHEME_EXPAND_OBSERVE_PRIM_MODULE_BEGIN(observer) \ + _SCHEME_EXPOBS(observer,102,NULL) +#define SCHEME_EXPAND_OBSERVE_PRIM_DEFINE_SYNTAXES(observer) \ + _SCHEME_EXPOBS(observer,103,NULL) +#define SCHEME_EXPAND_OBSERVE_PRIM_DEFINE_VALUES(observer) \ + _SCHEME_EXPOBS(observer,104,NULL) +#define SCHEME_EXPAND_OBSERVE_PRIM_IF(observer) \ + _SCHEME_EXPOBS(observer,105,NULL) +#define SCHEME_EXPAND_OBSERVE_PRIM_WCM(observer) \ + _SCHEME_EXPOBS(observer,106,NULL) +#define SCHEME_EXPAND_OBSERVE_PRIM_BEGIN(observer) \ + _SCHEME_EXPOBS(observer,107,NULL) +#define SCHEME_EXPAND_OBSERVE_PRIM_BEGIN0(observer) \ + _SCHEME_EXPOBS(observer,108,NULL) +#define SCHEME_EXPAND_OBSERVE_PRIM_APP(observer) \ + _SCHEME_EXPOBS(observer,109,NULL) +#define SCHEME_EXPAND_OBSERVE_PRIM_LAMBDA(observer) \ + _SCHEME_EXPOBS(observer,110,NULL) +#define SCHEME_EXPAND_OBSERVE_PRIM_CASE_LAMBDA(observer) \ + _SCHEME_EXPOBS(observer,111,NULL) +#define SCHEME_EXPAND_OBSERVE_PRIM_LET_VALUES(observer) \ + _SCHEME_EXPOBS(observer,112,NULL) +#define SCHEME_EXPAND_OBSERVE_PRIM_LETREC_VALUES(observer) \ + _SCHEME_EXPOBS(observer,113,NULL) +#define SCHEME_EXPAND_OBSERVE_PRIM_LETREC_SYNTAXES_VALUES(observer) \ + _SCHEME_EXPOBS(observer,114,NULL) +#define SCHEME_EXPAND_OBSERVE_PRIM_DATUM(observer) \ + _SCHEME_EXPOBS(observer,115,NULL) +#define SCHEME_EXPAND_OBSERVE_PRIM_TOP(observer) \ + _SCHEME_EXPOBS(observer,116,NULL) +#define SCHEME_EXPAND_OBSERVE_PRIM_QUOTE(observer) \ + _SCHEME_EXPOBS(observer,117,NULL) +#define SCHEME_EXPAND_OBSERVE_PRIM_QUOTE_SYNTAX(observer) \ + _SCHEME_EXPOBS(observer,118,NULL) +#define SCHEME_EXPAND_OBSERVE_PRIM_REQUIRE(observer) \ + _SCHEME_EXPOBS(observer,119,NULL) +#define SCHEME_EXPAND_OBSERVE_PRIM_REQUIRE_FOR_SYNTAX(observer) \ + _SCHEME_EXPOBS(observer,120,NULL) +#define SCHEME_EXPAND_OBSERVE_PRIM_REQUIRE_FOR_TEMPLATE(observer) \ + _SCHEME_EXPOBS(observer,121,NULL) +#define SCHEME_EXPAND_OBSERVE_PRIM_PROVIDE(observer) \ + _SCHEME_EXPOBS(observer,122,NULL) + +#define SCHEME_EXPAND_OBSERVE_PRIM_SET(observer) \ + _SCHEME_EXPOBS(observer,123,NULL) +#define SCHEME_EXPAND_OBSERVE_PRIM_LETSTAR_VALUES(observer) \ + _SCHEME_EXPOBS(observer,124,NULL) + +#define SCHEME_EXPAND_OBSERVE_VARIABLE(observer,e1,e2) \ + _SCHEME_EXPOBS(observer,125,scheme_make_pair(e1, e2)) + +#define SCHEME_EXPAND_OBSERVE_ENTER_CHECK(observer,stx) \ + _SCHEME_EXPOBS(observer,126,stx) +#define SCHEME_EXPAND_OBSERVE_EXIT_CHECK(observer,stx) \ + _SCHEME_EXPOBS(observer,127,stx) + +#define SCHEME_EXPAND_OBSERVE_LIFT_LOOP(observer,stx) \ + _SCHEME_EXPOBS(observer,128,stx) +#define SCHEME_EXPAND_OBSERVE_LIFT_END_LOOP(observer,stx) \ + _SCHEME_EXPOBS(observer,135,stx) + +#define SCHEME_EXPAND_OBSERVE_LOCAL_LIFT(obs,id,stx) \ + _SCHEME_EXPOBS(obs,129,scheme_make_pair(id,stx)) +#define SCHEME_EXPAND_OBSERVE_LIFT_STATEMENT(obs,stx) \ + _SCHEME_EXPOBS(obs,134,stx) +#define SCHEME_EXPAND_OBSERVE_ENTER_LOCAL(obs,stx) \ + _SCHEME_EXPOBS(obs,130,stx) +#define SCHEME_EXPAND_OBSERVE_EXIT_LOCAL(obs,stx) \ + _SCHEME_EXPOBS(obs,131,stx) +#define SCHEME_EXPAND_OBSERVE_LOCAL_PRE(obs,stx) \ + _SCHEME_EXPOBS(obs,132,stx) +#define SCHEME_EXPAND_OBSERVE_LOCAL_POST(obs,stx) \ + _SCHEME_EXPOBS(obs,133,stx) + +#endif diff --git a/src/mzscheme/src/schpriv.h b/src/mzscheme/src/schpriv.h index 0aecc9ab1a..4e25a1d8d2 100644 --- a/src/mzscheme/src/schpriv.h +++ b/src/mzscheme/src/schpriv.h @@ -1514,6 +1514,7 @@ typedef struct Scheme_Compile_Expand_Info int comp; Scheme_Object *value_name; Scheme_Object *certs; + Scheme_Object *observer; char dont_mark_local_use; char resolve_module_ids; int depth; @@ -1687,7 +1688,8 @@ Scheme_Object *scheme_check_immediate_macro(Scheme_Object *first, Scheme_Object *scheme_apply_macro(Scheme_Object *name, Scheme_Env *menv, Scheme_Object *f, Scheme_Object *code, Scheme_Comp_Env *env, Scheme_Object *boundname, - Scheme_Object *certs, int for_set); + Scheme_Compile_Expand_Info *rec, int drec, + int for_set); Scheme_Comp_Env *scheme_new_compilation_frame(int num_bindings, int flags, Scheme_Comp_Env *env, Scheme_Object *certs); @@ -1735,10 +1737,11 @@ Scheme_Object *scheme_register_toplevel_in_prefix(Scheme_Object *var, Scheme_Com Scheme_Object *scheme_register_stx_in_prefix(Scheme_Object *var, Scheme_Comp_Env *env, Scheme_Compile_Info *rec, int drec); -Scheme_Object *scheme_bind_syntaxes(const char *where, Scheme_Object *names, Scheme_Object *a, - Scheme_Env *exp_env, Scheme_Object *insp, Scheme_Object *certs, - Scheme_Comp_Env *stx_env, Scheme_Comp_Env *rhs_env, - int *_pos, Scheme_Object *names_to_disappear); +void scheme_bind_syntaxes(const char *where, Scheme_Object *names, Scheme_Object *a, + Scheme_Env *exp_env, Scheme_Object *insp, + Scheme_Compile_Expand_Info *rec, int drec, + Scheme_Comp_Env *stx_env, Scheme_Comp_Env *rhs_env, + int *_pos); int scheme_is_sub_env(Scheme_Comp_Env *stx_env, Scheme_Comp_Env *env); /* Resolving & linking */ diff --git a/src/mzscheme/src/schvers.h b/src/mzscheme/src/schvers.h index 08b0d9814e..d6326051cd 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 1 +#define MZSCHEME_VERSION_MINOR 2 -#define MZSCHEME_VERSION "352.1" _MZ_SPECIAL_TAG +#define MZSCHEME_VERSION "352.2" _MZ_SPECIAL_TAG diff --git a/src/mzscheme/src/startup.inc b/src/mzscheme/src/startup.inc index 8b7e8654e1..d13d213525 100644 --- a/src/mzscheme/src/startup.inc +++ b/src/mzscheme/src/startup.inc @@ -35,10 +35,12 @@ "(if(syntax? p) " "(if(list?(syntax-e p))" " #t" -"(let loop((l(syntax-e p)))" +"(letrec-values(((loop)" +"(lambda(l)" "(if(pair? l)" "(loop(cdr l))" -"(stx-list? l))))" +"(stx-list? l)))))" +"(loop(syntax-e p))))" "(if(pair? p)" "(stx-list?(cdr p))" " #f)))))" @@ -56,8 +58,9 @@ "(lambda(e)" "(if(syntax? e)" "(syntax->list e)" -"(let((flat-end" -"(let loop((l e))" +"(let-values(((flat-end)" +"(letrec-values(((loop)" +"(lambda(l)" "(if(null? l) " " #f" "(if(pair? l)" @@ -65,14 +68,17 @@ "(if(syntax? l) " "(syntax->list l)" " #f))))))" +"(loop e))))" "(if flat-end" -"(let loop((l e))" +"(letrec-values(((loop)" +"(lambda(l)" "(if(null? l) " " null" "(if(pair? l) " "(cons(car l)(loop(cdr l)))" "(if(syntax? l) " -" flat-end))))" +" flat-end))))))" +"(loop e))" " e)))))" "(define-values(stx-vector?)" "(lambda(p len)" @@ -114,7 +120,8 @@ "(define-values(split-stx-list)" "(lambda(s n prop?)" "(let-values(((pre post m)" -"(let loop((s s))" +"(letrec-values(((loop)" +"(lambda(s)" "(if(stx-pair? s)" "(let-values(((pre post m)(loop(stx-cdr s))))" "(if(< m n)" @@ -127,6 +134,7 @@ "(if(stx-null? s)" " -inf.0" " 1)))))))" +"(loop s))))" "(values pre post(= m n)))))" "(provide identifier? stx-null? stx-null/#f stx-pair? stx-list?" " stx-car stx-cdr stx->list" @@ -138,15 +146,153 @@ EVAL_ONE_STR( "(module #%qq-and-or #%kernel" "(require-for-syntax #%stx #%kernel)" +"(define-syntaxes(let let* letrec)" +"(let-values(((lambda-stx)(quote-syntax lambda-stx))" +"((letrec-values-stx)(quote-syntax letrec-values)))" +"(let-values(((go)" +"(lambda(stx named? star? target)" +"(define-values(stx-cadr)(lambda(x)(stx-car(stx-cdr x))))" +"(define-values(id-in-list?)" +"(lambda(id l)" +"(if(null? l)" +" #f" +"(if(bound-identifier=? id(car l)) " +" #t" +"(id-in-list? id(cdr l))))))" +"(define-values(stx-2list?)" +"(lambda(x)" +"(if(stx-pair? x)" +"(if(stx-pair?(stx-cdr x))" +"(stx-null?(stx-cdr(stx-cdr x)))" +" #f)" +" #f)))" +"(if(if(not(stx-list? stx))" +" #t" +"(let-values(((tail1)(stx-cdr stx)))" +"(if(stx-null? tail1)" +" #t" +"(if(stx-null?(stx-cdr tail1))" +" #t" +"(if named?" +"(if(symbol?(syntax-e(stx-car tail1)))" +"(stx-null?(stx-cdr(stx-cdr tail1)))" +" #f)" +" #f)))))" +" (raise-syntax-error #f \"bad syntax\" stx))" +"(let-values(((name)(if named?" +"(let-values(((n)(stx-cadr stx)))" +"(if(symbol?(syntax-e n))" +" n" +" #f))" +" #f)))" +"(let-values(((bindings)(stx->list(stx-cadr(if name" +"(stx-cdr stx)" +" stx))))" +"((body)(stx-cdr(stx-cdr(if name" +"(stx-cdr stx)" +" stx)))))" +"(if(not bindings)" +"(raise-syntax-error " +" #f " +" \"bad syntax (not a sequence of identifier--expression bindings)\" " +" stx" +"(stx-cadr stx))" +"(let-values(((new-bindings)" +"(letrec-values(((loop)" +"(lambda(l)" +"(if(null? l)" +" null" +"(let-values(((binding)(car l)))" +"(cons-immutable" +"(if(stx-2list? binding)" +"(if(symbol?(syntax-e(stx-car binding)))" +"(if name" +"(cons(stx-car binding)" +"(stx-cadr binding))" +"(datum->syntax-object" +" lambda-stx" +"(cons-immutable(cons-immutable(stx-car binding)" +" null)" +"(stx-cdr binding))" +" binding))" +"(raise-syntax-error " +" #f " +" \"bad syntax (not an identifier)\" " +" stx" +"(stx-car binding)))" +"(raise-syntax-error " +" #f " +" \"bad syntax (not an identifier and expression for a binding)\" " +" stx" +" binding))" +"(loop(cdr l))))))))" +"(loop bindings))))" +"(if star?" +"(void)" +"(if((length new-bindings) . > . 5)" +"(let-values(((ht)(make-hash-table)))" +"(letrec-values(((check)(lambda(l)" +"(if(null? l)" +"(void)" +"(let*-values(((id)(if name" +"(caar l)" +"(stx-car(stx-car(car l)))))" +"((idl)(hash-table-get ht(syntax-e id) null)))" +"(if(id-in-list? id idl)" +"(raise-syntax-error" +" #f" +" \"duplicate identifier\"" +" stx" +" id)" +"(begin" +"(hash-table-put! ht(syntax-e id)(cons id idl))" +"(check(cdr l)))))))))" +"(check new-bindings)))" +"(letrec-values(((check)(lambda(l accum)" +"(if(null? l)" +"(void)" +"(let-values(((id)(if name" +"(caar l)" +"(stx-car(stx-car(car l))))))" +"(if(id-in-list? id accum)" +"(raise-syntax-error" +" #f" +" \"duplicate identifier\"" +" stx" +" id)" +"(check(cdr l)(cons id accum))))))))" +"(check new-bindings null))))" +"(datum->syntax-object" +" lambda-stx" +"(if name" +"(apply list-immutable" +"(list-immutable " +"(quote-syntax letrec-values)" +"(list-immutable" +"(list-immutable" +"(list-immutable name)" +"(list*-immutable(quote-syntax lambda)" +"(apply list-immutable(map car new-bindings))" +" body)))" +" name)" +"(map cdr new-bindings))" +"(list*-immutable target" +" new-bindings" +" body))" +" stx))))))))" +"(values" +"(lambda(stx)(go stx #t #f(quote-syntax let-values)))" +"(lambda(stx)(go stx #f #t(quote-syntax let*-values)))" +"(lambda(stx)(go stx #f #f(quote-syntax letrec-values)))))))" "(define-values(qq-append)" "(lambda(a b)" "(if(list? a)" "(append a b)" " (raise-type-error 'unquote-splicing \"proper list\" a))))" "(define-syntaxes(quasiquote)" -"(let((here(quote-syntax here)) " -"(unquote-stx(quote-syntax unquote))" -"(unquote-splicing-stx(quote-syntax unquote-splicing)))" +"(let-values(((here)(quote-syntax here)) " +"((unquote-stx)(quote-syntax unquote))" +"((unquote-splicing-stx)(quote-syntax unquote-splicing)))" "(lambda(in-form)" "(if(identifier? in-form)" " (raise-syntax-error #f \"bad syntax\" in-form))" @@ -308,11 +454,11 @@ " form)" " in-form)))))" "(define-syntaxes(and)" -"(let((here(quote-syntax here)))" +"(let-values(((here)(quote-syntax here)))" "(lambda(x)" "(if(not(stx-list? x))" " (raise-syntax-error #f \"bad syntax\" x))" -"(let((e(stx-cdr x)))" +"(let-values(((e)(stx-cdr x)))" "(if(stx-null? e)" "(quote-syntax #t)" "(if(if(stx-pair? e)" @@ -328,11 +474,11 @@ "(quote-syntax #f))" " x)))))))" "(define-syntaxes(or)" -"(let((here(quote-syntax here)))" +"(let-values(((here)(quote-syntax here)))" "(lambda(x)" "(if(identifier? x)" " (raise-syntax-error #f \"bad syntax\" x))" -"(let((e(stx-cdr x)))" +"(let-values(((e)(stx-cdr x)))" "(if(stx-null? e) " "(quote-syntax #f)" "(if(if(stx-pair? e)" @@ -340,7 +486,7 @@ " #f)" "(stx-car e)" "(if(stx-list? e)" -"(let((tmp 'or-part))" +"(let-values(((tmp) 'or-part))" "(datum->syntax-object" " here" "(list(quote-syntax let)(list" @@ -357,7 +503,8 @@ " #f" " \"bad syntax\"" " x))))))))" -"(provide quasiquote and or))" +"(provide let let* letrec" +" quasiquote and or))" ); EVAL_ONE_STR( "(module #%cond #%kernel" @@ -401,7 +548,7 @@ " #t " " test))" "(gen(gensym)))" -" `(,(quote-syntax let)((,gen ,test))" +" `(,(quote-syntax let-values)(((,gen) ,test))" "(,(quote-syntax if) ,gen" "(,(stx-car(stx-cdr value)) ,gen)" " ,(loop rest #f))))" @@ -414,7 +561,7 @@ "(cons(quote-syntax begin) value))" "(if(stx-null? value)" "(let((gen(gensym)))" -" `(,(quote-syntax let)((,gen ,test))" +" `(,(quote-syntax let-values)(((,gen) ,test))" "(,(quote-syntax if) ,gen ,gen ,(loop rest #f))))" "(list" "(quote-syntax if) test" @@ -696,7 +843,7 @@ " ,defined-names" " ,(let((core(make-core name(and inspector 'inspector) super-id/struct: field-names)))" "(if inspector" -" `(let((inspector ,inspector))" +" `(let-values(((inspector) ,inspector))" "(if(if inspector(not(inspector? inspector)) #f)" " (raise-type-error 'define-struct \"inspector or #f\" inspector))" " ,core)" @@ -715,7 +862,7 @@ "(require #%stx #%qq-and-or #%cond #%define-et-al)" "(provide(all-from #%qq-and-or)" "(all-from #%cond)" -"(all-from-except #%define-et-al)))" +"(all-from #%define-et-al)))" ); EVAL_ONE_STR( "(module #%sc #%kernel" @@ -1680,7 +1827,7 @@ ); EVAL_ONE_STR( "(module #%stxloc #%kernel" -"(require #%stxcase #%define-et-al)" +"(require #%qq-and-or #%stxcase #%define-et-al)" "(require-for-syntax #%kernel #%stxcase #%sc)" "(-define-syntax syntax-case*" "(lambda(stx)" @@ -1695,7 +1842,7 @@ "(-define loc-insp(current-code-inspector))" "(-define(relocate loc stx)" "(if(syntax-source loc)" -"(let((new-stx(datum->syntax-object" +"(let-values(((new-stx)(datum->syntax-object" " stx" "(syntax-e stx)" " loc)))" diff --git a/src/mzscheme/src/startup.ss b/src/mzscheme/src/startup.ss index 3edf28947e..2ac25ad5aa 100644 --- a/src/mzscheme/src/startup.ss +++ b/src/mzscheme/src/startup.ss @@ -82,10 +82,12 @@ (if (syntax? p) (if (list? (syntax-e p)) #t - (let loop ([l (syntax-e p)]) - (if (pair? l) - (loop (cdr l)) - (stx-list? l)))) + (letrec-values ([(loop) + (lambda (l) + (if (pair? l) + (loop (cdr l)) + (stx-list? l)))]) + (loop (syntax-e p)))) (if (pair? p) (stx-list? (cdr p)) #f))))) @@ -109,24 +111,28 @@ (lambda (e) (if (syntax? e) (syntax->list e) - (let ([flat-end - (let loop ([l e]) - (if (null? l) - #f - (if (pair? l) - (loop (cdr l)) - (if (syntax? l) - (syntax->list l) - #f))))]) + (let-values ([(flat-end) + (letrec-values ([(loop) + (lambda (l) + (if (null? l) + #f + (if (pair? l) + (loop (cdr l)) + (if (syntax? l) + (syntax->list l) + #f))))]) + (loop e))]) (if flat-end ;; flatten - (let loop ([l e]) - (if (null? l) - null - (if (pair? l) - (cons (car l) (loop (cdr l))) - (if (syntax? l) - flat-end)))) + (letrec-values ([(loop) + (lambda (l) + (if (null? l) + null + (if (pair? l) + (cons (car l) (loop (cdr l))) + (if (syntax? l) + flat-end))))]) + (loop e)) e))))) ;; a syntax vector? @@ -190,19 +196,21 @@ (define-values (split-stx-list) (lambda (s n prop?) (let-values ([(pre post m) - (let loop ([s s]) - (if (stx-pair? s) - (let-values ([(pre post m) (loop (stx-cdr s))]) - (if (< m n) - (values '() s (add1 m)) - (values (cons (stx-car s) pre) post m))) - (values '() s (if prop? - (if (stx-null? s) - 0 - -inf.0) - (if (stx-null? s) - -inf.0 - 1)))))]) + (letrec-values ([(loop) + (lambda (s) + (if (stx-pair? s) + (let-values ([(pre post m) (loop (stx-cdr s))]) + (if (< m n) + (values '() s (add1 m)) + (values (cons (stx-car s) pre) post m))) + (values '() s (if prop? + (if (stx-null? s) + 0 + -inf.0) + (if (stx-null? s) + -inf.0 + 1)))))]) + (loop s))]) (values pre post (= m n))))) (provide identifier? stx-null? stx-null/#f stx-pair? stx-list? @@ -217,6 +225,145 @@ (module #%qq-and-or #%kernel (require-for-syntax #%stx #%kernel) + + (define-syntaxes (let let* letrec) + (let-values ([(lambda-stx) (quote-syntax lambda-stx)] + [(letrec-values-stx) (quote-syntax letrec-values)]) + (let-values ([(go) + (lambda (stx named? star? target) + (define-values (stx-cadr) (lambda (x) (stx-car (stx-cdr x)))) + (define-values (id-in-list?) + (lambda (id l) + (if (null? l) + #f + (if (bound-identifier=? id (car l)) + #t + (id-in-list? id (cdr l)))))) + (define-values (stx-2list?) + (lambda (x) + (if (stx-pair? x) + (if (stx-pair? (stx-cdr x)) + (stx-null? (stx-cdr (stx-cdr x))) + #f) + #f))) + (if (if (not (stx-list? stx)) + #t + (let-values ([(tail1) (stx-cdr stx)]) + (if (stx-null? tail1) + #t + (if (stx-null? (stx-cdr tail1)) + #t + (if named? + (if (symbol? (syntax-e (stx-car tail1))) + (stx-null? (stx-cdr (stx-cdr tail1))) + #f) + #f))))) + (raise-syntax-error #f "bad syntax" stx)) + (let-values ([(name) (if named? + (let-values ([(n) (stx-cadr stx)]) + (if (symbol? (syntax-e n)) + n + #f)) + #f)]) + (let-values ([(bindings) (stx->list (stx-cadr (if name + (stx-cdr stx) + stx)))] + [(body) (stx-cdr (stx-cdr (if name + (stx-cdr stx) + stx)))]) + (if (not bindings) + (raise-syntax-error + #f + "bad syntax (not a sequence of identifier--expression bindings)" + stx + (stx-cadr stx)) + (let-values ([(new-bindings) + (letrec-values ([(loop) + (lambda (l) + (if (null? l) + null + (let-values ([(binding) (car l)]) + (cons-immutable + (if (stx-2list? binding) + (if (symbol? (syntax-e (stx-car binding))) + (if name + (cons (stx-car binding) + (stx-cadr binding)) + (datum->syntax-object + lambda-stx + (cons-immutable (cons-immutable (stx-car binding) + null) + (stx-cdr binding)) + binding)) + (raise-syntax-error + #f + "bad syntax (not an identifier)" + stx + (stx-car binding))) + (raise-syntax-error + #f + "bad syntax (not an identifier and expression for a binding)" + stx + binding)) + (loop (cdr l))))))]) + (loop bindings))]) + (if star? + (void) + (if ((length new-bindings) . > . 5) + (let-values ([(ht) (make-hash-table)]) + (letrec-values ([(check) (lambda (l) + (if (null? l) + (void) + (let*-values ([(id) (if name + (caar l) + (stx-car (stx-car (car l))))] + [(idl) (hash-table-get ht (syntax-e id) null)]) + (if (id-in-list? id idl) + (raise-syntax-error + #f + "duplicate identifier" + stx + id) + (begin + (hash-table-put! ht (syntax-e id) (cons id idl)) + (check (cdr l)))))))]) + (check new-bindings))) + (letrec-values ([(check) (lambda (l accum) + (if (null? l) + (void) + (let-values ([(id) (if name + (caar l) + (stx-car (stx-car (car l))))]) + (if (id-in-list? id accum) + (raise-syntax-error + #f + "duplicate identifier" + stx + id) + (check (cdr l) (cons id accum))))))]) + (check new-bindings null)))) + (datum->syntax-object + lambda-stx + (if name + (apply list-immutable + (list-immutable + (quote-syntax letrec-values) + (list-immutable + (list-immutable + (list-immutable name) + (list*-immutable (quote-syntax lambda) + (apply list-immutable (map car new-bindings)) + body))) + name) + (map cdr new-bindings)) + (list*-immutable target + new-bindings + body)) + stx))))))]) + (values + (lambda (stx) (go stx #t #f (quote-syntax let-values))) + (lambda (stx) (go stx #f #t (quote-syntax let*-values))) + (lambda (stx) (go stx #f #f (quote-syntax letrec-values))))))) (define-values (qq-append) (lambda (a b) @@ -225,9 +372,9 @@ (raise-type-error 'unquote-splicing "proper list" a)))) (define-syntaxes (quasiquote) - (let ([here (quote-syntax here)] ; id with module bindings, but not lexical - [unquote-stx (quote-syntax unquote)] - [unquote-splicing-stx (quote-syntax unquote-splicing)]) + (let-values ([(here) (quote-syntax here)] ; id with module bindings, but not lexical + [(unquote-stx) (quote-syntax unquote)] + [(unquote-splicing-stx) (quote-syntax unquote-splicing)]) (lambda (in-form) (if (identifier? in-form) (raise-syntax-error #f "bad syntax" in-form)) @@ -390,11 +537,11 @@ in-form))))) (define-syntaxes (and) - (let ([here (quote-syntax here)]) + (let-values ([(here) (quote-syntax here)]) (lambda (x) (if (not (stx-list? x)) (raise-syntax-error #f "bad syntax" x)) - (let ([e (stx-cdr x)]) + (let-values ([(e) (stx-cdr x)]) (if (stx-null? e) (quote-syntax #t) (if (if (stx-pair? e) @@ -411,11 +558,11 @@ x))))))) (define-syntaxes (or) - (let ([here (quote-syntax here)]) + (let-values ([(here) (quote-syntax here)]) (lambda (x) (if (identifier? x) (raise-syntax-error #f "bad syntax" x)) - (let ([e (stx-cdr x)]) + (let-values ([(e) (stx-cdr x)]) (if (stx-null? e) (quote-syntax #f) (if (if (stx-pair? e) @@ -423,7 +570,7 @@ #f) (stx-car e) (if (stx-list? e) - (let ([tmp 'or-part]) + (let-values ([(tmp) 'or-part]) (datum->syntax-object here (list (quote-syntax let) (list @@ -441,7 +588,8 @@ "bad syntax" x)))))))) - (provide quasiquote and or)) + (provide let let* letrec + quasiquote and or)) ;;---------------------------------------------------------------------- ;; cond @@ -474,9 +622,9 @@ "bad syntax (clause is not a test-value pair)" line) (let* ([test (stx-car line)] - [value (stx-cdr line)] - [else? (and (identifier? test) - (module-identifier=? test (quote-syntax else)))]) + [value (stx-cdr line)] + [else? (and (identifier? test) + (module-identifier=? test (quote-syntax else)))]) (if (and else? (stx-pair? rest)) (serror "bad syntax (`else' clause must be last)" line)) (if (and (stx-pair? value) @@ -485,10 +633,10 @@ (if (and (stx-pair? (stx-cdr value)) (stx-null? (stx-cdr (stx-cdr value)))) (let ([test (if else? - #t - test)] - [gen (gensym)]) - `(,(quote-syntax let) ([,gen ,test]) + #t + test)] + [gen (gensym)]) + `(,(quote-syntax let-values) ([(,gen) ,test]) (,(quote-syntax if) ,gen (,(stx-car (stx-cdr value)) ,gen) ,(loop rest #f)))) @@ -503,7 +651,7 @@ (cons (quote-syntax begin) value)) (if (stx-null? value) (let ([gen (gensym)]) - `(,(quote-syntax let) ([,gen ,test]) + `(,(quote-syntax let-values) ([(,gen) ,test]) (,(quote-syntax if) ,gen ,gen ,(loop rest #f)))) (list (quote-syntax if) test @@ -816,7 +964,7 @@ ,defined-names ,(let ([core (make-core name (and inspector 'inspector) super-id/struct: field-names)]) (if inspector - `(let ([inspector ,inspector]) + `(let-values ([(inspector) ,inspector]) (if (if inspector (not (inspector? inspector)) #f) (raise-type-error 'define-struct "inspector or #f" inspector)) ,core) @@ -839,7 +987,7 @@ (provide (all-from #%qq-and-or) (all-from #%cond) - (all-from-except #%define-et-al))) + (all-from #%define-et-al))) ;;---------------------------------------------------------------------- ;; pattern-matching utilities @@ -1979,7 +2127,7 @@ ;; syntax/loc (module #%stxloc #%kernel - (require #%stxcase #%define-et-al) + (require #%qq-and-or #%stxcase #%define-et-al) (require-for-syntax #%kernel #%stxcase #%sc) ;; Regular syntax-case @@ -1999,10 +2147,10 @@ (-define loc-insp (current-code-inspector)) (-define (relocate loc stx) (if (syntax-source loc) - (let ([new-stx (datum->syntax-object - stx - (syntax-e stx) - loc)]) + (let-values ([(new-stx) (datum->syntax-object + stx + (syntax-e stx) + loc)]) (syntax-recertify new-stx stx loc-insp #f)) stx)) diff --git a/src/mzscheme/src/syntax.c b/src/mzscheme/src/syntax.c index aafe18a796..22314cfc32 100644 --- a/src/mzscheme/src/syntax.c +++ b/src/mzscheme/src/syntax.c @@ -30,6 +30,7 @@ #include "schpriv.h" #include "schmach.h" +#include "schexpobs.h" /* globals */ Scheme_Object *scheme_define_values_syntax, *scheme_define_syntaxes_syntax; @@ -63,12 +64,6 @@ static Scheme_Object *set_expand(Scheme_Object *form, Scheme_Comp_Env *env, Sche static Scheme_Object *set_syntax(Scheme_Object *form, Scheme_Comp_Env *env, Scheme_Compile_Info *rec, int drec); static Scheme_Object *case_lambda_syntax(Scheme_Object *form, Scheme_Comp_Env *env, Scheme_Compile_Info *rec, int drec); static Scheme_Object *case_lambda_expand(Scheme_Object *form, Scheme_Comp_Env *env, Scheme_Expand_Info *erec, int drec); -static Scheme_Object *let_expand(Scheme_Object *form, Scheme_Comp_Env *env, Scheme_Expand_Info *erec, int drec); -static Scheme_Object *let_syntax(Scheme_Object *form, Scheme_Comp_Env *env, Scheme_Compile_Info *rec, int drec); -static Scheme_Object *let_star_expand(Scheme_Object *form, Scheme_Comp_Env *env, Scheme_Expand_Info *erec, int drec); -static Scheme_Object *let_star_syntax (Scheme_Object *form, Scheme_Comp_Env *env, Scheme_Compile_Info *rec, int drec); -static Scheme_Object *letrec_expand(Scheme_Object *form, Scheme_Comp_Env *env, Scheme_Expand_Info *erec, int drec); -static Scheme_Object *letrec_syntax (Scheme_Object *form, Scheme_Comp_Env *env, Scheme_Compile_Info *rec, int drec); static Scheme_Object *let_values_expand(Scheme_Object *form, Scheme_Comp_Env *env, Scheme_Expand_Info *erec, int drec); static Scheme_Object *let_values_syntax(Scheme_Object *form, Scheme_Comp_Env *env, Scheme_Compile_Info *rec, int drec); static Scheme_Object *let_star_values_expand(Scheme_Object *form, Scheme_Comp_Env *env, Scheme_Expand_Info *erec, int drec); @@ -176,9 +171,6 @@ static Scheme_Object *case_lambda_jit(Scheme_Object *expr); static Scheme_Object *begin0_jit(Scheme_Object *data); static Scheme_Object *bangboxvalue_jit(Scheme_Object *data); -static Scheme_Object *named_let_syntax (Scheme_Object *form, Scheme_Comp_Env *env, - Scheme_Compile_Expand_Info *rec, int drec); - static Scheme_Object *expand_lam(int argc, Scheme_Object **argv); static Scheme_Object *write_let_value(Scheme_Object *obj); @@ -196,9 +188,6 @@ static Scheme_Object *read_case_lambda(Scheme_Object *obj); /* symbols */ static Scheme_Object *lambda_symbol; -static Scheme_Object *letrec_symbol; -static Scheme_Object *let_star_symbol; -static Scheme_Object *let_symbol; static Scheme_Object *letrec_values_symbol; static Scheme_Object *let_star_values_symbol; static Scheme_Object *let_values_symbol; @@ -234,9 +223,6 @@ scheme_init_syntax (Scheme_Env *env) REGISTER_SO(scheme_compiled_void_code); REGISTER_SO(lambda_symbol); - REGISTER_SO(letrec_symbol); - REGISTER_SO(let_star_symbol); - REGISTER_SO(let_symbol); REGISTER_SO(letrec_values_symbol); REGISTER_SO(let_star_values_symbol); REGISTER_SO(let_values_symbol); @@ -247,10 +233,6 @@ scheme_init_syntax (Scheme_Env *env) lambda_symbol = scheme_intern_symbol("lambda"); - letrec_symbol = scheme_intern_symbol("letrec"); - let_star_symbol = scheme_intern_symbol("let*"); - let_symbol = scheme_intern_symbol("let"); - letrec_values_symbol = scheme_intern_symbol("letrec-values"); let_star_values_symbol = scheme_intern_symbol("let*-values"); let_values_symbol = scheme_intern_symbol("let-values"); @@ -364,19 +346,6 @@ scheme_init_syntax (Scheme_Env *env) case_lambda_expand), env); - scheme_add_global_keyword("let", - scheme_make_compiled_syntax(let_syntax, - let_expand), - env); - scheme_add_global_keyword("let*", - scheme_make_compiled_syntax(let_star_syntax, - let_star_expand), - env); - scheme_add_global_keyword("letrec", - scheme_make_compiled_syntax(letrec_syntax, - letrec_expand), - env); - scheme_add_global_keyword("let-values", scheme_make_compiled_syntax(let_values_syntax, let_values_expand), @@ -549,6 +518,8 @@ lambda_expand(Scheme_Object *form, Scheme_Comp_Env *env, Scheme_Expand_Info *ere Scheme_Object *args, *body, *fn; Scheme_Comp_Env *newenv; + SCHEME_EXPAND_OBSERVE_PRIM_LAMBDA(erec[drec].observer); + lambda_check(form); args = SCHEME_STX_CDR(form); @@ -567,6 +538,7 @@ lambda_expand(Scheme_Object *form, Scheme_Comp_Env *env, Scheme_Expand_Info *ere body = scheme_add_env_renames(body, newenv, env); args = scheme_add_env_renames(args, newenv, env); /* for re-expansion */ + SCHEME_EXPAND_OBSERVE_LAMBDA_RENAMES(erec[drec].observer, args, body); fn = SCHEME_STX_CAR(form); @@ -1033,6 +1005,8 @@ define_values_expand(Scheme_Object *form, Scheme_Comp_Env *env, Scheme_Expand_In { Scheme_Object *var, *val, *fn, *boundname; + SCHEME_EXPAND_OBSERVE_PRIM_DEFINE_VALUES(erec[drec].observer); + scheme_define_parse(form, &var, &val, 0, env); env = scheme_no_defines(env); @@ -1084,6 +1058,8 @@ quote_expand(Scheme_Object *form, Scheme_Comp_Env *env, Scheme_Expand_Info *erec { Scheme_Object *rest; + SCHEME_EXPAND_OBSERVE_PRIM_QUOTE(erec[drec].observer); + rest = SCHEME_STX_CDR(form); if (!(SCHEME_STX_PAIRP(rest) && SCHEME_STX_NULLP(SCHEME_STX_CDR(rest)))) @@ -1175,11 +1151,17 @@ if_expand(Scheme_Object *form, Scheme_Comp_Env *env, Scheme_Expand_Info *erec, i int len; Scheme_Expand_Info recs[3]; + SCHEME_EXPAND_OBSERVE_PRIM_IF(erec[drec].observer); + len = check_form(form, form); if (!(((len == 3) || (len == 4)))) bad_form(form, len); + if (len == 3) { + SCHEME_EXPAND_OBSERVE_NEXT_GROUP(erec[drec].observer); + } + env = scheme_no_defines(env); boundname = scheme_check_name_property(form, erec[drec].value_name); @@ -1195,12 +1177,14 @@ if_expand(Scheme_Object *form, Scheme_Comp_Env *env, Scheme_Expand_Info *erec, i test = SCHEME_STX_CAR(rest); test = scheme_expand_expr(test, env, recs, 0); + SCHEME_EXPAND_OBSERVE_NEXT(erec[drec].observer); rest = SCHEME_STX_CDR(rest); thenp = SCHEME_STX_CAR(rest); thenp = scheme_expand_expr(thenp, env, recs, 1); rest = SCHEME_STX_CDR(rest); if (!SCHEME_STX_NULLP(rest)) { + SCHEME_EXPAND_OBSERVE_NEXT(erec[drec].observer); elsep = SCHEME_STX_CAR(rest); elsep = scheme_expand_expr(elsep, env, recs, 2); rest = icons(elsep, scheme_null); @@ -1273,6 +1257,8 @@ with_cont_mark_expand(Scheme_Object *form, Scheme_Comp_Env *env, Scheme_Expand_I int len; Scheme_Expand_Info recs[3]; + SCHEME_EXPAND_OBSERVE_PRIM_WCM(erec[drec].observer); + len = check_form(form, form); if (len != 4) bad_form(form, len); @@ -1296,7 +1282,9 @@ with_cont_mark_expand(Scheme_Object *form, Scheme_Comp_Env *env, Scheme_Expand_I expr = SCHEME_STX_CAR(form); key = scheme_expand_expr(key, env, recs, 0); + SCHEME_EXPAND_OBSERVE_NEXT(erec[drec].observer); val = scheme_expand_expr(val, env, recs, 1); + SCHEME_EXPAND_OBSERVE_NEXT(erec[drec].observer); expr = scheme_expand_expr(expr, env, recs, 2); fn = SCHEME_STX_CAR(orig_form); @@ -1516,7 +1504,7 @@ set_syntax (Scheme_Object *form, Scheme_Comp_Env *env, Scheme_Compile_Info *rec, if (SAME_TYPE(SCHEME_TYPE(var), scheme_macro_type)) { /* Redirect to a macro? */ if (SAME_TYPE(SCHEME_TYPE(SCHEME_PTR_VAL(var)), scheme_set_macro_type)) { - form = scheme_apply_macro(name, menv, SCHEME_PTR_VAL(var), form, env, scheme_false, rec[drec].certs, 1); + form = scheme_apply_macro(name, menv, SCHEME_PTR_VAL(var), form, env, scheme_false, rec, drec, 1); return scheme_compile_expr(form, env, rec, drec); } else if (SAME_TYPE(SCHEME_TYPE(SCHEME_PTR_VAL(var)), scheme_id_macro_type)) { @@ -1576,6 +1564,9 @@ set_expand(Scheme_Object *form, Scheme_Comp_Env *env, Scheme_Expand_Info *erec, Scheme_Env *menv = NULL; Scheme_Object *name, *var, *fn, *rhs, *find_name; int l; + + SCHEME_EXPAND_OBSERVE_PRIM_SET(erec[drec].observer); + l = check_form(form, form); if (l != 3) bad_form(form, l); @@ -1596,12 +1587,19 @@ set_expand(Scheme_Object *form, Scheme_Comp_Env *env, Scheme_Expand_Info *erec, var = scheme_lookup_binding(find_name, env, SCHEME_SETTING, erec[drec].certs, env->in_modidx, &menv, NULL); - + + SCHEME_EXPAND_OBSERVE_RESOLVE(erec[drec].observer, find_name); + if ((erec[drec].depth != 0) && SAME_TYPE(SCHEME_TYPE(var), scheme_macro_type)) { /* Redirect to a macro? */ if (SAME_TYPE(SCHEME_TYPE(SCHEME_PTR_VAL(var)), scheme_set_macro_type)) { - form = scheme_apply_macro(name, menv, SCHEME_PTR_VAL(var), form, env, scheme_false, erec[drec].certs, 1); - + + SCHEME_EXPAND_OBSERVE_ENTER_MACRO(erec[drec].observer, form); + + form = scheme_apply_macro(name, menv, SCHEME_PTR_VAL(var), form, env, scheme_false, erec, drec, 1); + + SCHEME_EXPAND_OBSERVE_EXIT_MACRO(erec[drec].observer, form); + if (erec[drec].depth > 0) erec[drec].depth--; @@ -1626,6 +1624,8 @@ set_expand(Scheme_Object *form, Scheme_Comp_Env *env, Scheme_Expand_Info *erec, scheme_wrong_syntax(NULL, name, form, "cannot mutate syntax identifier"); } + SCHEME_EXPAND_OBSERVE_NEXT(erec[drec].observer); + fn = SCHEME_STX_CAR(form); rhs = SCHEME_STX_CDR(form); @@ -1634,10 +1634,11 @@ set_expand(Scheme_Object *form, Scheme_Comp_Env *env, Scheme_Expand_Info *erec, erec[drec].value_name = name; + rhs = scheme_expand_expr(rhs, env, erec, drec); + return scheme_datum_to_syntax(icons(fn, icons(find_name, - icons(scheme_expand_expr(rhs, env, erec, drec), - scheme_null))), + icons(rhs, scheme_null))), form, form, 0, 2); @@ -2166,6 +2167,8 @@ case_lambda_expand(Scheme_Object *form, Scheme_Comp_Env *env, Scheme_Expand_Info { Scheme_Object *first, *last, *args, *body, *c, *new_line, *orig_form = form; + SCHEME_EXPAND_OBSERVE_PRIM_CASE_LAMBDA(erec[drec].observer); + first = SCHEME_STX_CAR(form); first = icons(first, scheme_null); last = first; @@ -2176,6 +2179,8 @@ case_lambda_expand(Scheme_Object *form, Scheme_Comp_Env *env, Scheme_Expand_Info while (SCHEME_STX_PAIRP(form)) { Scheme_Object *line_form; Scheme_Comp_Env *newenv; + + SCHEME_EXPAND_OBSERVE_NEXT(erec[drec].observer); line_form = SCHEME_STX_CAR(form); @@ -2190,6 +2195,7 @@ case_lambda_expand(Scheme_Object *form, Scheme_Comp_Env *env, Scheme_Expand_Info body = scheme_add_env_renames(body, newenv, env); args = scheme_add_env_renames(args, newenv, env); + SCHEME_EXPAND_OBSERVE_CASE_LAMBDA_RENAMES(erec[drec].observer, args, body); { Scheme_Expand_Info erec1; @@ -3386,7 +3392,6 @@ do_let_expand(Scheme_Object *form, Scheme_Comp_Env *origenv, Scheme_Expand_Info const char *formname, int letrec, int multi, int letstar, Scheme_Comp_Env *env_already) { - int named, partial; Scheme_Object *vars, *body, *first, *last, *name, *v, *vs, *vlist, *boundname; Scheme_Comp_Env *use_env, *env; Scheme_Expand_Info erec1; @@ -3394,15 +3399,6 @@ do_let_expand(Scheme_Object *form, Scheme_Comp_Env *origenv, Scheme_Expand_Info vars = SCHEME_STX_CDR(form); - named = (!multi - && !letrec - && !letstar - && SCHEME_STX_PAIRP(vars) - && SCHEME_STX_SYMBOLP(SCHEME_STX_CAR(vars))); - - if (named) - return named_let_syntax(form, origenv, erec, drec); - if (!SCHEME_STX_PAIRP(vars)) scheme_wrong_syntax(NULL, NULL, form, NULL); @@ -3429,13 +3425,13 @@ do_let_expand(Scheme_Object *form, Scheme_Comp_Env *origenv, Scheme_Expand_Info a = SCHEME_STX_CAR(vars); vr = SCHEME_STX_CDR(vars); - first = multi ? let_values_symbol : let_symbol; + first = let_values_symbol; first = scheme_datum_to_syntax(first, form, scheme_sys_wraps(origenv), 0, 0); - + if (SCHEME_STX_NULLP(vr)) { /* Don't create redundant empty let form */ } else { - last = multi ? let_star_values_symbol : let_star_symbol; + last = let_star_values_symbol; last = scheme_datum_to_syntax(last, form, scheme_sys_wraps(origenv), 0, 0); body = icons(icons(last, icons(vr, body)), scheme_null); @@ -3448,15 +3444,15 @@ do_let_expand(Scheme_Object *form, Scheme_Comp_Env *origenv, Scheme_Expand_Info first = scheme_datum_to_syntax(let_values_symbol, form, scheme_sys_wraps(origenv), 0, 0); body = icons(first, icons(scheme_null, body)); } - - body = scheme_datum_to_syntax(body, form, form, 0, 2); + + body = scheme_datum_to_syntax(body, form, form, 0, -1); first = SCHEME_STX_CAR(form); body = scheme_stx_track(body, form, first); - + if (erec[drec].depth > 0) --erec[drec].depth; - + if (!erec[drec].depth) return body; else { @@ -3464,29 +3460,9 @@ do_let_expand(Scheme_Object *form, Scheme_Comp_Env *origenv, Scheme_Expand_Info return scheme_expand_expr(body, env, erec, drec); } } - + /* Note: no more letstar handling needed after this point */ - /* Check whether this is a partial expansion terminating in the - `-values' form. If so, don't recursively expand here and don't - introduce syntactic renamings (i.e., act like a non-primitive - macro). */ - if (!multi) { - v = (letrec - ? letrec_values_symbol - : let_values_symbol) ; - v = scheme_datum_to_syntax(v, scheme_false, scheme_sys_wraps(origenv), 0, 0); - v = scheme_lookup_binding(v, origenv, - SCHEME_NULL_FOR_UNBOUND - + SCHEME_APP_POS + SCHEME_ENV_CONSTANTS_OK - + SCHEME_DONT_MARK_USE, - erec[drec].certs, origenv->in_modidx, - NULL, NULL); - first = scheme_get_stop_expander(); - partial = SAME_OBJ(first, v); - } else - partial = 0; - scheme_begin_dup_symbol_check(&r, origenv); vlist = scheme_null; @@ -3503,7 +3479,7 @@ do_let_expand(Scheme_Object *form, Scheme_Comp_Env *origenv, Scheme_Expand_Info name = SCHEME_STX_CAR(v); - if (multi) { + { DupCheckRecord r2; Scheme_Object *names = name; scheme_begin_dup_symbol_check(&r2, origenv); @@ -3520,10 +3496,6 @@ do_let_expand(Scheme_Object *form, Scheme_Comp_Env *origenv, Scheme_Expand_Info } if (!SCHEME_STX_NULLP(names)) scheme_wrong_syntax(NULL, names, form, NULL); - } else { - scheme_check_identifier(NULL, name, NULL, origenv, form); - vlist = cons(name, vlist); - scheme_dup_symbol_check(&r, NULL, name, "binding", form); } vs = SCHEME_STX_CDR(vs); @@ -3535,36 +3507,62 @@ do_let_expand(Scheme_Object *form, Scheme_Comp_Env *origenv, Scheme_Expand_Info use_env = origenv; if (env_already) env = env_already; - else if (partial) - env = origenv; else - env = scheme_add_compilation_frame(vlist, origenv,0,erec[drec].certs); + env = scheme_add_compilation_frame(vlist, origenv, 0, erec[drec].certs); if (letrec) use_env = env; + /* Pass 1: Rename */ + first = last = NULL; vs = vars; while (SCHEME_STX_PAIRP(vars)) { - Scheme_Object *rhs, *rhs_name; + Scheme_Object *rhs; v = SCHEME_STX_CAR(vars); /* Make sure names gets their own renames: */ name = SCHEME_STX_CAR(v); - if (!multi) { - if (!partial) - name = scheme_add_env_renames(name, env, origenv); - name = icons(name, scheme_null); - } else { - if (!partial) - name = scheme_add_env_renames(name, env, origenv); - } + name = scheme_add_env_renames(name, env, origenv); rhs = SCHEME_STX_CDR(v); rhs = SCHEME_STX_CAR(rhs); - if (!partial) - rhs = scheme_add_env_renames(rhs, use_env, origenv); + rhs = scheme_add_env_renames(rhs, use_env, origenv); + + v = scheme_datum_to_syntax(icons(name, icons(rhs, scheme_null)), v, v, 0, 1); + v = icons(v, scheme_null); + + if (!first) + first = v; + else + SCHEME_CDR(last) = v; + + last = v; + vars = SCHEME_STX_CDR(vars); + } + if (!first) { + first = scheme_null; + } + vars = first; + + body = scheme_datum_to_syntax(body, form, form, 0, 0); + body = scheme_add_env_renames(body, env, origenv); + SCHEME_EXPAND_OBSERVE_LET_RENAMES(erec[drec].observer, vars, body); + + /* Pass 2: Expand */ + + first = last = NULL; + while (SCHEME_STX_PAIRP(vars)) { + Scheme_Object *rhs, *rhs_name; + + SCHEME_EXPAND_OBSERVE_NEXT(erec[drec].observer); + + v = SCHEME_STX_CAR(vars); + + name = SCHEME_STX_CAR(v); + rhs = SCHEME_STX_CDR(v); + rhs = SCHEME_STX_CAR(rhs); if (SCHEME_STX_PAIRP(name) && SCHEME_STX_NULLP(SCHEME_STX_CDR(name))) { rhs_name = SCHEME_STX_CAR(name); @@ -3572,11 +3570,9 @@ do_let_expand(Scheme_Object *form, Scheme_Comp_Env *origenv, Scheme_Expand_Info rhs_name = scheme_false; } - if (!partial) { - scheme_init_expand_recs(erec, drec, &erec1, 1); - erec1.value_name = rhs_name; - rhs = scheme_expand_expr(rhs, use_env, &erec1, 0); - } + scheme_init_expand_recs(erec, drec, &erec1, 1); + erec1.value_name = rhs_name; + rhs = scheme_expand_expr(rhs, use_env, &erec1, 0); v = scheme_datum_to_syntax(icons(name, icons(rhs, scheme_null)), v, v, 0, 1); v = icons(v, scheme_null); @@ -3591,6 +3587,8 @@ do_let_expand(Scheme_Object *form, Scheme_Comp_Env *origenv, Scheme_Expand_Info vars = SCHEME_STX_CDR(vars); } + /* End Pass 2 */ + if (!SCHEME_STX_NULLP(vars)) scheme_wrong_syntax(NULL, vars, form, NULL); @@ -3598,100 +3596,40 @@ do_let_expand(Scheme_Object *form, Scheme_Comp_Env *origenv, Scheme_Expand_Info first = scheme_null; first = scheme_datum_to_syntax(first, vs, vs, 0, 1); - - body = scheme_datum_to_syntax(body, form, form, 0, 0); - if (!partial) { - body = scheme_add_env_renames(body, env, origenv); - scheme_init_expand_recs(erec, drec, &erec1, 1); - erec1.value_name = erec[drec].value_name; - body = scheme_expand_block(body, env, &erec1, 0); - } - - if (multi) - v = SCHEME_STX_CAR(form); - else - v = scheme_datum_to_syntax((letrec - ? letrec_values_symbol - : let_values_symbol), - form, scheme_sys_wraps(origenv), - 0, 0); - + + SCHEME_EXPAND_OBSERVE_NEXT_GROUP(erec[drec].observer); + scheme_init_expand_recs(erec, drec, &erec1, 1); + erec1.value_name = erec[drec].value_name; + body = scheme_expand_block(body, env, &erec1, 0); + + v = SCHEME_STX_CAR(form); v = icons(v, icons(first, body)); - - v = scheme_datum_to_syntax(v, form, form, 0, multi ? 2 : -1); - if (!multi) { - name = SCHEME_STX_CAR(form); - v = scheme_stx_track(v, form, name); - } + v = scheme_datum_to_syntax(v, form, form, 0, 2); return v; } -static Scheme_Object * -let_expand(Scheme_Object *form, Scheme_Comp_Env *env, Scheme_Expand_Info *erec, int drec) -{ - return do_let_expand(form, env, erec, drec, "let", 0, 0, 0, NULL); -} - -static Scheme_Object * -let_star_expand(Scheme_Object *form, Scheme_Comp_Env *env, Scheme_Expand_Info *erec, int drec) -{ - return do_let_expand(form, env, erec, drec, "let*", 0, 0, 1, NULL); -} - -static Scheme_Object * -letrec_expand(Scheme_Object *form, Scheme_Comp_Env *env, Scheme_Expand_Info *erec, int drec) -{ - return do_let_expand(form, env, erec, drec, "letrec", 1, 0, 0, NULL); -} - static Scheme_Object * let_values_expand(Scheme_Object *form, Scheme_Comp_Env *env, Scheme_Expand_Info *erec, int drec) { - return do_let_expand(form, env, erec, drec, "let", 0, 1, 0, NULL); + SCHEME_EXPAND_OBSERVE_PRIM_LET_VALUES(erec[drec].observer); + return do_let_expand(form, env, erec, drec, "let-values", 0, 1, 0, NULL); } static Scheme_Object * let_star_values_expand(Scheme_Object *form, Scheme_Comp_Env *env, Scheme_Expand_Info *erec, int drec) { - return do_let_expand(form, env, erec, drec, "let*", 0, 1, 1, NULL); + SCHEME_EXPAND_OBSERVE_PRIM_LETSTAR_VALUES(erec[drec].observer); + return do_let_expand(form, env, erec, drec, "let*-values", 0, 1, 1, NULL); } static Scheme_Object * letrec_values_expand(Scheme_Object *form, Scheme_Comp_Env *env, Scheme_Expand_Info *erec, int drec) { - return do_let_expand(form, env, erec, drec, "letrec", 1, 1, 0, NULL); + SCHEME_EXPAND_OBSERVE_PRIM_LETREC_VALUES(erec[drec].observer); + return do_let_expand(form, env, erec, drec, "letrec-values", 1, 1, 0, NULL); } -static Scheme_Object * -let_syntax (Scheme_Object *form, Scheme_Comp_Env *env, Scheme_Compile_Info *rec, int drec) -{ - Scheme_Object *rest; - - rest = SCHEME_STX_CDR(form); - if (!SCHEME_STX_PAIRP(rest)) - scheme_wrong_syntax(NULL, NULL, form, (SCHEME_STX_NULLP(rest) - ? NULL - : "bad syntax (" IMPROPER_LIST_FORM ")")); - - if (SCHEME_STX_SYMBOLP(SCHEME_STX_CAR(rest))) - return named_let_syntax (form, env, rec, drec); - - return gen_let_syntax(form, env, "let", 0, 0, 0, rec, drec, NULL); -} - -static Scheme_Object * -let_star_syntax (Scheme_Object *form, Scheme_Comp_Env *env, - Scheme_Compile_Info *rec, int drec) -{ - return gen_let_syntax(form, env, "let*", 1, 0, 0, rec, drec, NULL); -} - -static Scheme_Object * -letrec_syntax (Scheme_Object *form, Scheme_Comp_Env *env, Scheme_Compile_Info *rec, int drec) -{ - return gen_let_syntax(form, env, "letrec", 0, 1, 0, rec, drec, NULL); -} static Scheme_Object * let_values_syntax (Scheme_Object *form, Scheme_Comp_Env *env, @@ -3713,109 +3651,6 @@ letrec_values_syntax (Scheme_Object *form, Scheme_Comp_Env *env, Scheme_Compile_ return gen_let_syntax(form, env, "letrec-values", 0, 1, 1, rec, drec, NULL); } -static Scheme_Object *nl_car(Scheme_Object *l, Scheme_Object *form) -{ - Scheme_Object *s; - - if (!SCHEME_STX_PAIRP(l)) - scheme_wrong_syntax("named let", l, form, - "bad syntax (not an identifier-value pair)"); - s = SCHEME_STX_CAR(l); - if (!SCHEME_STX_SYMBOLP(s)) - scheme_wrong_syntax("named let", s, form, - "bad syntax (name not an identifier)"); - - return s; -} - -static Scheme_Object *nl_cadr(Scheme_Object *l, Scheme_Object *form) -{ - Scheme_Object *rest; - - if (!SCHEME_STX_PAIRP(l) || !SCHEME_STX_PAIRP(SCHEME_STX_CDR(l))) - scheme_wrong_syntax("named let", l, form, - "bad syntax (not an identifier-value pair)"); - - rest = SCHEME_STX_CDR(l); - if (!SCHEME_STX_NULLP(SCHEME_STX_CDR(rest))) - scheme_wrong_syntax("named let", l, form, - "bad syntax (extra form in indentifier-value pair)"); - - return SCHEME_STX_CAR(rest); -} - -static Scheme_Object * -named_let_syntax (Scheme_Object *form, Scheme_Comp_Env *env, - Scheme_Compile_Info *rec, int drec) -{ - Scheme_Object *name, *bindings, *vars, *vals, *forms, *rest, *_vars, *_vals, *v; - Scheme_Object *proc, *app, *letrec; - - rest = SCHEME_STX_CDR(form); - if (!SCHEME_STX_PAIRP(rest)) - rest = NULL; - else { - rest = SCHEME_STX_CDR(rest); - if (!SCHEME_STX_PAIRP(rest)) - rest = NULL; - else { - rest = SCHEME_STX_CDR(rest); - if (!SCHEME_STX_PAIRP(rest)) - rest = NULL; - } - } - - if (!rest) - scheme_wrong_syntax("named let", NULL, form, NULL); - - rest = SCHEME_STX_CDR(form); - name = SCHEME_STX_CAR(rest); - rest = SCHEME_STX_CDR(rest); - bindings = SCHEME_STX_CAR(rest); - if (!SCHEME_STX_PAIRP(bindings) && !SCHEME_STX_NULLP(bindings)) - scheme_wrong_syntax("named let", bindings, form, NULL); - - vars = scheme_named_map_1("named let", nl_car, bindings, form); - vals = scheme_named_map_1("named let", nl_cadr, bindings, form); - - /* Add inferred-name attribute to arguments: */ - for (_vars = vars, _vals = vals; SCHEME_PAIRP(_vars); _vars = SCHEME_CDR(_vars), _vals = SCHEME_CDR(_vals)) { - v = scheme_stx_property(SCHEME_CAR(_vals), scheme_inferred_name_symbol, NULL); - if (SCHEME_FALSEP(v)) { - v = scheme_stx_property(SCHEME_CAR(_vals), scheme_inferred_name_symbol, SCHEME_STX_VAL(SCHEME_CAR(_vars))); - SCHEME_CAR(_vals) = v; - } - } - - forms = SCHEME_STX_CDR(form); - forms = SCHEME_STX_CDR(forms); - forms = SCHEME_STX_CDR(forms); - - proc = icons(lambda_symbol, icons(vars, forms)); - - letrec = icons(letrec_symbol, - icons(icons(icons(name, icons(proc, scheme_null)), scheme_null), - icons(name, - scheme_null))); - app = icons(letrec, vals); - - app = scheme_datum_to_syntax(app, form, scheme_sys_wraps(env), 0, 2); - - if (rec[drec].comp) - return scheme_compile_expr(app, env, rec, drec); - else { - name = SCHEME_STX_CAR(form); - app = scheme_stx_track(app, form, name); - - if (rec[drec].depth > 0) - --rec[drec].depth; - if (!rec[drec].depth) - return app; - else - return scheme_expand_expr(app, env, rec, drec); - } -} - /**********************************************************************/ /* begin, begin0, implicit begins */ /**********************************************************************/ @@ -4103,8 +3938,11 @@ do_begin_expand(char *name, rest = SCHEME_STX_CDR(form); if (SCHEME_STX_NULLP(rest)) { - if (!zero && scheme_is_toplevel(env)) + if (!zero && scheme_is_toplevel(env)) { + SCHEME_EXPAND_OBSERVE_ENTER_LIST(erec[drec].observer, form); + SCHEME_EXPAND_OBSERVE_EXIT_LIST(erec[drec].observer, form); return form; + } scheme_wrong_syntax(NULL, NULL, form, "bad syntax (empty form)"); return NULL; } @@ -4124,11 +3962,14 @@ do_begin_expand(char *name, erec[drec].value_name = scheme_false; fst = SCHEME_STX_CAR(rest); rest = SCHEME_STX_CDR(rest); - form = icons(scheme_expand_expr(fst, env, &erec1, 0), - scheme_expand_list(scheme_datum_to_syntax(rest, - form, - form, 0, 0), - env, erec, drec)); + + SCHEME_EXPAND_OBSERVE_NEXT(erec[drec].observer); + fst = scheme_expand_expr(fst, env, &erec1, 0); + rest = scheme_datum_to_syntax(rest, form, form, 0, 0); + SCHEME_EXPAND_OBSERVE_NEXT(erec[drec].observer); + rest = scheme_expand_list(rest, env, erec, drec); + + form = icons(fst, rest); } else { Scheme_Object *boundname; boundname = scheme_check_name_property(form, erec[drec].value_name); @@ -4157,12 +3998,14 @@ do_begin_expand(char *name, static Scheme_Object * begin_expand(Scheme_Object *form, Scheme_Comp_Env *env, Scheme_Expand_Info *erec, int drec) { + SCHEME_EXPAND_OBSERVE_PRIM_BEGIN(erec[drec].observer); return do_begin_expand("begin", form, env, erec, drec, 0); } static Scheme_Object * begin0_expand(Scheme_Object *form, Scheme_Comp_Env *env, Scheme_Expand_Info *erec, int drec) { + SCHEME_EXPAND_OBSERVE_PRIM_BEGIN0(erec[drec].observer); return do_begin_expand("begin0", form, env, erec, drec, 1); } @@ -4232,6 +4075,7 @@ quote_syntax_syntax(Scheme_Object *form, Scheme_Comp_Env *env, Scheme_Compile_In static Scheme_Object * quote_syntax_expand(Scheme_Object *form, Scheme_Comp_Env *env, Scheme_Expand_Info *erec, int drec) { + SCHEME_EXPAND_OBSERVE_PRIM_QUOTE_SYNTAX(erec[drec].observer); return quote_syntax_syntax(form, env, erec, drec); } @@ -4523,6 +4367,7 @@ do_define_syntaxes_syntax(Scheme_Object *form, Scheme_Comp_Env *env, rec1.resolve_module_ids = 0; rec1.value_name = NULL; rec1.certs = rec[drec].certs; + rec1.observer = NULL; if (for_stx) { names = defn_targets_syntax(names, exp_env, &rec1, 0); @@ -4557,6 +4402,8 @@ define_syntaxes_expand(Scheme_Object *form, Scheme_Comp_Env *env, Scheme_Expand_ { Scheme_Object *names, *code, *fpart, *fn; + SCHEME_EXPAND_OBSERVE_PRIM_DEFINE_SYNTAXES(erec[drec].observer); + scheme_prepare_exp_env(env->genv); scheme_define_parse(form, &names, &code, 1, env); @@ -4668,27 +4515,41 @@ static void *eval_letmacro_rhs_k(void) } -Scheme_Object *scheme_bind_syntaxes(const char *where, Scheme_Object *names, Scheme_Object *a, - Scheme_Env *exp_env, Scheme_Object *insp, Scheme_Object *certs, - Scheme_Comp_Env *stx_env, Scheme_Comp_Env *rhs_env, - int *_pos, Scheme_Object *names_to_disappear) +void scheme_bind_syntaxes(const char *where, Scheme_Object *names, Scheme_Object *a, + Scheme_Env *exp_env, Scheme_Object *insp, + Scheme_Compile_Expand_Info *rec, int drec, + Scheme_Comp_Env *stx_env, Scheme_Comp_Env *rhs_env, + int *_pos) { Scheme_Object **results, *l; Scheme_Comp_Env *eenv; + Scheme_Object *certs; Resolve_Prefix *rp; Resolve_Info *ri; Optimize_Info *oi; int vc, nc, j, i; Scheme_Compile_Info mrec; + + certs = rec[drec].certs; mrec.comp = 1; mrec.dont_mark_local_use = 0; mrec.resolve_module_ids = 1; mrec.value_name = NULL; mrec.certs = certs; + mrec.observer = NULL; eenv = scheme_new_comp_env(exp_env, insp, 0); + { + mrec.comp = 0; + mrec.observer = rec[drec].observer; + SCHEME_EXPAND_OBSERVE_PHASE_UP(mrec.observer); + a = scheme_expand_expr_lift_to_let(a, eenv, &mrec, 0); + mrec.comp = 1; + mrec.observer = NULL; + } + a = scheme_compile_expr_lift_to_let(a, eenv, &mrec, 0); /* For internal defn, don't simplify as resolving, because the @@ -4757,12 +4618,8 @@ Scheme_Object *scheme_bind_syntaxes(const char *where, Scheme_Object *names, Sch SCHEME_PTR_VAL(macro) = results[j]; scheme_set_local_syntax(i++, name, macro, stx_env); - if (names_to_disappear) - names_to_disappear = icons(name, names_to_disappear); } *_pos = i; - - return names_to_disappear; } static Scheme_Object * @@ -4817,6 +4674,8 @@ do_letrec_syntaxes(const char *where, scheme_begin_dup_symbol_check(&r, stx_env); + /* Pass 1: Check and Rename */ + for (i = 0; i < 2 ; i++) { for (v = (i ? var_bindings : bindings); SCHEME_STX_PAIRP(v); v = SCHEME_STX_CDR(v)) { Scheme_Object *a, *l; @@ -4889,6 +4748,30 @@ do_letrec_syntaxes(const char *where, } } + if (names_to_disappear) { + for (v = bindings; SCHEME_STX_PAIRP(v); v = SCHEME_STX_CDR(v)) { + Scheme_Object *a, *names; + + a = SCHEME_STX_CAR(v); + names = SCHEME_STX_CAR(a); + while (!SCHEME_STX_NULLP(names)) { + a = SCHEME_STX_CAR(names); + if (names_to_disappear) + names_to_disappear = icons(a, names_to_disappear); + names = SCHEME_STX_CDR(names); + } + } + } + + bindings = scheme_add_env_renames(bindings, stx_env, origenv); + if (var_env) + bindings = scheme_add_env_renames(bindings, var_env, origenv); + if (var_env) + var_bindings = scheme_add_env_renames(var_bindings, stx_env, origenv); + + body = scheme_add_env_renames(body, stx_env, origenv); + SCHEME_EXPAND_OBSERVE_LETREC_SYNTAXES_RENAMES(rec[drec].observer, bindings, var_bindings, body); + scheme_prepare_exp_env(stx_env->genv); i = 0; @@ -4896,22 +4779,23 @@ do_letrec_syntaxes(const char *where, for (v = bindings; SCHEME_STX_PAIRP(v); v = SCHEME_STX_CDR(v)) { Scheme_Object *a, *names; + SCHEME_EXPAND_OBSERVE_NEXT(rec[drec].observer); + a = SCHEME_STX_CAR(v); names = SCHEME_STX_CAR(a); a = SCHEME_STX_CDR(a); a = SCHEME_STX_CAR(a); - a = scheme_add_env_renames(a, stx_env, origenv); - if (var_env) - a = scheme_add_env_renames(a, var_env, stx_env); - - names_to_disappear = scheme_bind_syntaxes(where, names, a, - stx_env->genv->exp_env, stx_env->insp, rec[drec].certs, - stx_env, rhs_env, - &i, names_to_disappear); + scheme_bind_syntaxes(where, names, a, + stx_env->genv->exp_env, + stx_env->insp, + rec, drec, + stx_env, rhs_env, + &i); } - body = scheme_add_env_renames(body, stx_env, origenv); + SCHEME_EXPAND_OBSERVE_NEXT_GROUP(rec[drec].observer); + if (names_to_disappear) { /* Need to add renaming for disappeared bindings --- unless they originated for internal definitions, in which case @@ -4927,8 +4811,6 @@ do_letrec_syntaxes(const char *where, } } } - if (var_env) - var_bindings = scheme_add_env_renames(var_bindings, stx_env, origenv); if (!var_env) { var_env = scheme_require_renames(stx_env); @@ -4960,6 +4842,7 @@ do_letrec_syntaxes(const char *where, if (rec[drec].comp) { v = gen_let_syntax(v, stx_env, "letrec-values", 0, 1, 1, rec, drec, var_env); } else { + SCHEME_EXPAND_OBSERVE_PRIM_LETREC_VALUES(rec[drec].observer); v = do_let_expand(v, stx_env, rec, drec, "letrec-values", 1, 1, 0, var_env); if ((depth >= 0) || (depth == -2)) { @@ -4990,6 +4873,8 @@ letrec_syntaxes_syntax(Scheme_Object *form, Scheme_Comp_Env *env, static Scheme_Object * letrec_syntaxes_expand(Scheme_Object *form, Scheme_Comp_Env *env, Scheme_Expand_Info *erec, int drec) { + SCHEME_EXPAND_OBSERVE_PRIM_LETREC_SYNTAXES_VALUES(erec[drec].observer); + return do_letrec_syntaxes("letrec-syntaxes+values", form, env, erec, drec); } @@ -5198,6 +5083,72 @@ static Scheme_Object *read_case_lambda(Scheme_Object *obj) return (Scheme_Object *)cl; } +/**********************************************************************/ +/* expansion observer */ +/**********************************************************************/ + +/* RMC + * - Defines #%expobs module + * - current-expand-observe + * - ??? (other syntax observations) + */ + +void scheme_call_expand_observe(Scheme_Object *obs, int tag, Scheme_Object *obj) +{ + if (!SCHEME_PROCP(obs)) { + scheme_signal_error("internal error: expand-observer should never be non-procedure"); + } else { + Scheme_Object *buf[2]; + buf[0] = scheme_make_integer(tag); + if (obj) { + buf[1] = obj; + } else { + buf[1] = scheme_false; + } + scheme_apply(obs, 2, buf); + } +} + +static Scheme_Object * +current_expand_observe(int argc, Scheme_Object **argv) +{ + return scheme_param_config("current-expand-observe", + scheme_make_integer(MZCONFIG_EXPAND_OBSERVE), + argc, argv, + 2, NULL, NULL, 0); +} + +/* always returns either procedure or NULL */ +Scheme_Object *scheme_get_expand_observe() +{ + Scheme_Object *obs; + obs = scheme_get_param(scheme_current_config(), + MZCONFIG_EXPAND_OBSERVE); + if (SCHEME_PROCP(obs)) { + return obs; + } else { + return NULL; + } +} + +void scheme_init_expand_observe(Scheme_Env *env) +{ + Scheme_Env *newenv; + Scheme_Object *modname; + + modname = scheme_intern_symbol("#%expobs"); + newenv = scheme_primitive_module(modname, env); + + scheme_add_global_constant + ("current-expand-observe", + scheme_register_parameter(current_expand_observe, + "current-expand-observe", + MZCONFIG_EXPAND_OBSERVE), + newenv); + scheme_finish_primitive_module(newenv); + +} + /**********************************************************************/ /* precise GC */ /**********************************************************************/ diff --git a/src/worksp/gc2/make.ss b/src/worksp/gc2/make.ss index 7c0789e61c..d178d265f0 100644 --- a/src/worksp/gc2/make.ss +++ b/src/worksp/gc2/make.ss @@ -55,6 +55,8 @@ "type" "vector")) +(define common-cpp-defs " /D _CRT_SECURE_NO_DEPRECATE ") + (define (try src deps dest objdest includes use-precomp extra-compile-flags expand-extra-flags msvc-pch indirect?) (when (or (not re:only) (regexp-match re:only dest)) (unless (and (file-exists? dest) @@ -90,7 +92,10 @@ (list "--depends" "--cpp" - (format "cl.exe /MT /E ~a ~a" expand-extra-flags includes) + (format "cl.exe /MT /E ~a ~a ~a" + common-cpp-defs + expand-extra-flags + includes) "-o" dest src))) @@ -101,6 +106,7 @@ (when objdest (compile dest objdest null (string-append extra-compile-flags + common-cpp-defs (if msvc-pch (format " /Fp~a" msvc-pch) "")))))) diff --git a/src/worksp/jpeg/jpeg.vcproj b/src/worksp/jpeg/jpeg.vcproj index defd1fa6b6..b43d2594fc 100644 --- a/src/worksp/jpeg/jpeg.vcproj +++ b/src/worksp/jpeg/jpeg.vcproj @@ -3,6 +3,7 @@ ProjectType="Visual C++" Version="8.00" Name="jpeg" + ProjectGUID="{1549C7C5-AF41-43BE-B905-BA6374FE6BEC}" > diff --git a/src/worksp/png/png.vcproj b/src/worksp/png/png.vcproj index a7c1203711..292a3ad846 100644 --- a/src/worksp/png/png.vcproj +++ b/src/worksp/png/png.vcproj @@ -43,7 +43,7 @@ InlineFunctionExpansion="2" EnableIntrinsicFunctions="true" AdditionalIncludeDirectories="..\..\wxcommon\zlib,$(NOINHERIT)" - PreprocessorDefinitions="WIN32,NDEBUG,_LIB,GC_DLL" + PreprocessorDefinitions="WIN32,NDEBUG,_LIB,GC_DLL,_CRT_SECURE_NO_DEPRECATE" StringPooling="true" RuntimeLibrary="0" EnableFunctionLevelLinking="true" @@ -113,7 +113,7 @@ Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="..\..\wxcommon\zlib,$(NOINHERIT)" - PreprocessorDefinitions="WIN32,_DEBUG,_LIB,GC_DLL" + PreprocessorDefinitions="WIN32,_DEBUG,_LIB,GC_DLL,_CRT_SECURE_NO_DEPRECATE" RuntimeLibrary="1" UsePrecompiledHeader="0" WarningLevel="3" diff --git a/src/worksp/wxme/wxme.vcproj b/src/worksp/wxme/wxme.vcproj index 734b815e35..9e53b58935 100644 --- a/src/worksp/wxme/wxme.vcproj +++ b/src/worksp/wxme/wxme.vcproj @@ -3,6 +3,7 @@ ProjectType="Visual C++" Version="8.00" Name="wxme" + ProjectGUID="{1C9F9C4D-FA97-4A56-8E7F-CA1EC99C35E3}" > DrawMac(IB_MARGIN_X, IB_MARGIN_Y, patOr); - DrawThemeButton(r, kThemeRoundedBevelButton, &state, NULL, NULL /* erase */, NULL, NULL); + DrawThemeButton(r, kThemeRoundedBevelButton, &state, NULL, NULL /* erase */, NULL, 0); } else { - DrawThemeButton(r, kThemeRoundedBevelButton, &state, NULL, NULL /* erase */, NULL, NULL); + DrawThemeButton(r, kThemeRoundedBevelButton, &state, NULL, NULL /* erase */, NULL, 0); buttonBitmap->DrawMac(IB_MARGIN_X, IB_MARGIN_Y, patOr); } } diff --git a/src/wxmac/src/mac/wx_check.cc b/src/wxmac/src/mac/wx_check.cc index 8be2be55cb..2969e2fc6c 100644 --- a/src/wxmac/src/mac/wx_check.cc +++ b/src/wxmac/src/mac/wx_check.cc @@ -322,7 +322,7 @@ void wxCheckBox::Paint(void) state.value = bitmapState ? kThemeButtonOn : kThemeButtonOff; state.adornment = ((trackState & 0x2) ? kThemeAdornmentFocus : kThemeAdornmentNone); - DrawThemeButton(&r, kThemeCheckBox, &state, NULL, NULL /* erase */, NULL, NULL); + DrawThemeButton(&r, kThemeCheckBox, &state, NULL, NULL /* erase */, NULL, 0); } } } diff --git a/src/wxmac/src/mac/wx_rbut.cc b/src/wxmac/src/mac/wx_rbut.cc index a6425bb635..9aa63fecb6 100644 --- a/src/wxmac/src/mac/wx_rbut.cc +++ b/src/wxmac/src/mac/wx_rbut.cc @@ -258,7 +258,7 @@ void wxRadioButton::Paint(void) str = wxCFString(labelString); DrawThemeTextBox(str, kThemeSystemFont, kThemeStateActive, - 0, &r, teJustLeft, NULL); + 0, &r, teJustLeft, 0); CFRelease(str); } @@ -276,7 +276,7 @@ void wxRadioButton::Paint(void) state.value = bitmapState ? kThemeButtonOn : kThemeButtonOff; state.adornment = ((trackState & 0x2) ? kThemeAdornmentFocus : kThemeAdornmentNone); - DrawThemeButton(&r, kThemeRadioButton, &state, NULL, NULL /* erase */, NULL, NULL); + DrawThemeButton(&r, kThemeRadioButton, &state, NULL, NULL /* erase */, NULL, 0); } } } diff --git a/src/wxmac/src/mac/wx_slidr.cc b/src/wxmac/src/mac/wx_slidr.cc index c7504de1ff..efaa9b9b10 100644 --- a/src/wxmac/src/mac/wx_slidr.cc +++ b/src/wxmac/src/mac/wx_slidr.cc @@ -253,8 +253,7 @@ void wxSlider::Paint(void) wxDrawUnicodeText(t, 0, -1, 0); } else { str = wxCFString(t); - DrawThemeTextBox(str, kThemeSystemFont, kThemeStateActive, - 0, &r, teJustCenter, NULL); + DrawThemeTextBox(str, kThemeSystemFont, kThemeStateActive, 0, &r, teJustCenter, 0); CFRelease(str); } } diff --git a/src/wxwindow/src/msw/wx_pdf.cxx b/src/wxwindow/src/msw/wx_pdf.cxx index 5affaa5353..8623d46881 100644 --- a/src/wxwindow/src/msw/wx_pdf.cxx +++ b/src/wxwindow/src/msw/wx_pdf.cxx @@ -205,7 +205,6 @@ LRESULT APIENTRY wxEndSessionWatcherWndProc(HWND hWnd, UINT message, WPARAM wPar static long DoEndSessionWin(void *data) { - HWND win; MSG msg; qes_win = CreateWindowW(L"wxEndSessionWatcher", L"EndSession Watcher", WS_POPUP,