diff options
Diffstat (limited to 'x2p')
-rw-r--r-- | x2p/EXTERN.h | 2 | ||||
-rw-r--r-- | x2p/INTERN.h | 2 | ||||
-rwxr-xr-x | x2p/Makefile.SH | 23 | ||||
-rw-r--r-- | x2p/a2p.c | 2999 | ||||
-rw-r--r-- | x2p/a2p.h | 43 | ||||
-rw-r--r-- | x2p/a2p.man | 183 | ||||
-rw-r--r-- | x2p/a2p.pod | 162 | ||||
-rw-r--r-- | x2p/a2p.y | 9 | ||||
-rw-r--r-- | x2p/a2py.c | 16 | ||||
-rwxr-xr-x | x2p/cflags.SH | 12 | ||||
-rw-r--r-- | x2p/find2perl.PL | 17 | ||||
-rw-r--r-- | x2p/handy.h | 172 | ||||
-rw-r--r-- | x2p/hash.c | 2 | ||||
-rw-r--r-- | x2p/hash.h | 2 | ||||
-rw-r--r-- | x2p/proto.h | 8 | ||||
-rw-r--r-- | x2p/s2p.PL | 95 | ||||
-rw-r--r-- | x2p/s2p.man | 92 | ||||
-rw-r--r-- | x2p/str.c | 18 | ||||
-rw-r--r-- | x2p/str.h | 2 | ||||
-rw-r--r-- | x2p/util.c | 84 | ||||
-rw-r--r-- | x2p/util.h | 18 | ||||
-rw-r--r-- | x2p/walk.c | 4 |
22 files changed, 1967 insertions, 1998 deletions
diff --git a/x2p/EXTERN.h b/x2p/EXTERN.h index e4abe5f87b..cd1a4112ae 100644 --- a/x2p/EXTERN.h +++ b/x2p/EXTERN.h @@ -1,6 +1,6 @@ /* $RCSfile: EXTERN.h,v $$Revision: 4.1 $$Date: 92/08/07 18:29:05 $ * - * Copyright (c) 1991, Larry Wall + * Copyright (c) 1991-1997, Larry Wall * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. diff --git a/x2p/INTERN.h b/x2p/INTERN.h index aa3af58c8d..ac1d57ab05 100644 --- a/x2p/INTERN.h +++ b/x2p/INTERN.h @@ -1,6 +1,6 @@ /* $RCSfile: INTERN.h,v $$Revision: 4.1 $$Date: 92/08/07 18:29:06 $ * - * Copyright (c) 1991, Larry Wall + * Copyright (c) 1991-1997, Larry Wall * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. diff --git a/x2p/Makefile.SH b/x2p/Makefile.SH index 16e282d497..0ca3ff35db 100755 --- a/x2p/Makefile.SH +++ b/x2p/Makefile.SH @@ -14,7 +14,14 @@ esac : This forces SH files to create target in same directory as SH file. : This is so that make depend always knows where to find SH derivatives. case "$0" in -*/*) cd `expr X$0 : 'X\(.*\)/'` ;; +*/Makefile.SH) cd `expr X$0 : 'X\(.*\)/'` ;; +Makefile.SH) ;; +*) case `pwd` in + */x2p) ;; + *) if test -d x2p; then cd x2p + else echo "Can't figure out where to write output."; exit 1 + fi;; + esac;; esac echo "Extracting x2p/Makefile (with variable substitutions)" @@ -35,6 +42,10 @@ shellflags = $shellflags libs = $libs +$make_set_make +# grrr +SHELL = $sh + # These variables will be used in a future version to make # the make file more portable to non-unix systems. AR = $ar @@ -69,7 +80,7 @@ plextract = find2perl s2p addedbyconf = $(shextract) $(plextract) -h = EXTERN.h INTERN.h ../config.h handy.h hash.h a2p.h str.h util.h +h = EXTERN.h INTERN.h ../config.h ../handy.h hash.h a2p.h str.h util.h c = hash.c $(mallocsrc) str.c util.c walk.c @@ -77,11 +88,9 @@ obj = hash$(OBJ_EXT) $(mallocobj) str$(OBJ_EXT) util$(OBJ_EXT) walk$(OBJ_EXT) lintflags = -phbvxac -# grrr -SHELL = /bin/sh .c$(OBJ_EXT): - $(CCCMD) $*.c + $(CCCMD) -DPERL_FOR_X2P $*.c all: $(public) $(private) $(util) touch all @@ -103,7 +112,8 @@ run_byacc: FORCE a2p.c: a2p.y -@touch a2p.c -a2p$(OBJ_EXT): a2p.c a2py.c a2p.h EXTERN.h util.h INTERN.h handy.h ../config.h str.h hash.h +a2p$(OBJ_EXT): a2p.c a2py.c a2p.h EXTERN.h util.h INTERN.h \ + ../handy.h ../config.h str.h hash.h $(CCCMD) $(LARGE) a2p.c clean: @@ -141,6 +151,7 @@ $(plextract): malloc.c: ../malloc.c rm -f malloc.c sed <../malloc.c >malloc.c \ + -e 's/"EXTERN.h"/"..\/EXTERN.h"/' \ -e 's/"perl.h"/"..\/perl.h"/' \ -e 's/my_exit/exit/' @@ -5,7 +5,7 @@ static char yysccsid[] = "@(#)yaccpar 1.8 (Berkeley) 01/20/91"; #line 2 "a2p.y" /* $RCSfile: a2p.y,v $$Revision: 4.1 $$Date: 92/08/07 18:29:12 $ * - * Copyright (c) 1991, Larry Wall + * Copyright (c) 1991-1997, Larry Wall * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. @@ -74,7 +74,7 @@ short yylhs[] = { -1, 0, 3, 6, 6, 2, 2, 7, 7, 7, 7, 7, 7, 9, 8, 8, 11, 11, 11, 11, 11, 15, 15, 15, 15, 14, 14, 14, 14, 13, 13, - 13, 13, 12, 12, 12, 16, 16, 16, 16, 16, + 13, 13, 12, 12, 12, 12, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, @@ -90,8 +90,8 @@ short yylen[] = { 2, 2, 6, 5, 2, 3, 0, 1, 5, 10, 4, 1, 1, 1, 1, 3, 1, 1, 1, 1, 5, 3, 4, 4, 2, 3, 3, 3, 3, 3, 3, - 1, 3, 1, 2, 3, 1, 1, 1, 3, 3, - 3, 3, 3, 3, 3, 5, 2, 2, 2, 2, + 1, 3, 1, 2, 5, 3, 1, 1, 1, 3, + 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 3, 1, 2, 3, 4, 3, 4, 1, 3, 4, 4, 4, 2, 8, 6, 8, 8, 6, 6, 6, 6, 6, 6, 6, 6, 8, 8, 8, @@ -105,951 +105,981 @@ short yylen[] = { 2, short yydefred[] = { 93, 0, 0, 95, 96, 97, 94, 0, 92, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 37, 0, 0, 0, 38, 0, 0, 0, 0, + 0, 38, 0, 0, 0, 39, 0, 0, 0, 0, 0, 84, 0, 99, 0, 11, 0, 93, 0, 0, 0, 17, 18, 19, 0, 0, 99, 99, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 24, 49, - 50, 0, 0, 0, 0, 0, 0, 4, 0, 99, - 0, 99, 99, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 47, 48, - 0, 0, 61, 0, 0, 0, 0, 99, 99, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 100, 101, 0, 98, 53, 32, 28, 21, - 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, - 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 62, 63, 91, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 13, 64, 83, 0, 0, 99, - 0, 0, 0, 0, 0, 0, 120, 119, 123, 0, - 99, 0, 99, 10, 99, 0, 106, 0, 111, 0, - 0, 0, 22, 59, 93, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 99, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 99, 99, 99, 99, 99, 8, 0, 0, 70, 0, - 75, 0, 74, 0, 77, 0, 76, 0, 72, 73, - 0, 67, 0, 71, 128, 127, 129, 0, 0, 0, - 0, 0, 112, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 99, 0, - 0, 0, 99, 99, 99, 0, 0, 0, 99, 69, - 68, 79, 78, 81, 80, 0, 66, 0, 0, 0, - 0, 0, 0, 126, 0, 0, 0, 132, 136, 0, - 0, 0, 9, 99, 99, 0, 133, 0, 0, 99, - 131, 135, 0, 134, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, + 49, 50, 0, 0, 0, 0, 0, 0, 4, 0, + 99, 0, 99, 99, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 47, 48, 0, 0, 61, 0, 0, 0, 0, 0, + 99, 99, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 100, 101, 0, 98, 53, + 32, 28, 21, 0, 0, 0, 0, 0, 0, 30, + 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 62, 63, 91, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 13, 64, + 83, 0, 0, 99, 0, 0, 0, 0, 0, 0, + 120, 119, 123, 0, 99, 0, 99, 10, 99, 0, + 106, 0, 111, 0, 0, 0, 22, 0, 59, 93, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 99, 99, 99, 99, 99, + 8, 0, 0, 0, 70, 0, 75, 0, 74, 0, + 77, 0, 76, 0, 72, 73, 0, 67, 0, 71, + 128, 127, 129, 0, 0, 0, 0, 0, 112, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 99, 0, 0, 0, 99, 99, + 99, 0, 0, 0, 99, 69, 68, 79, 78, 81, + 80, 0, 66, 0, 0, 0, 0, 0, 0, 126, + 0, 0, 0, 132, 136, 0, 0, 0, 9, 99, + 99, 0, 133, 0, 0, 99, 131, 135, 0, 134, }; short yydgoto[] = { 1, - 2, 7, 36, 73, 125, 37, 38, 39, 164, 52, - 53, 41, 42, 43, 44, 45, 46, 55, 8, 126, - 225, 187, 188, 189, 254, 248, + 2, 7, 36, 74, 128, 37, 38, 39, 168, 52, + 75, 190, 42, 43, 44, 45, 46, 54, 8, 129, + 230, 191, 192, 193, 260, 254, }; short yysindex[] = { 0, - 0, -48, 0, 0, 0, 0, 6619, 0, -121, -110, - 0, -4, 32, 4183, 38, 30, 51, 64, 68, -260, - 70, 0, -61, 82, 83, 0, 4448, 4448, 4448, -183, - -183, 0, 4448, 0, 4448, 0, -188, 0, 3, 22, - 6884, 0, 0, 0, 34, -213, 0, 0, 2061, 4183, - 4183, 0, -49, 5612, 85, 4448, 4448, 14, 4713, 6753, - 4448, 87, 4183, 4183, 4448, 4448, -77, -77, 0, 0, - 0, 18, -192, -36, 91, 92, 95, 0, -48, 0, - 4448, 0, 0, 4448, 6980, 4448, 4448, 4448, 34, -154, - 4448, 4448, 4448, 4448, 4448, 4448, -135, 4448, 0, 0, - -192, -192, 0, 5658, 106, 5612, 11, 0, 0, 5704, - 186, 4448, 113, 5751, 115, 5805, 5885, 4183, 114, 67, - 5931, 5978, 0, 0, 4572, 0, 0, 0, 0, 0, - -192, 6032, 1964, 1964, -49, 0, 3230, 186, 186, 186, - 0, 97, 97, -77, -77, -77, -77, -183, -49, 4665, - 4765, 0, 0, 0, 1964, 1964, -131, 186, 4448, 4448, - 4448, 4448, 7026, 121, 0, 0, 0, 4448, 4448, 0, - 4183, 4183, 124, 125, 132, 4448, 0, 0, 0, 4448, - 0, -117, 0, 0, 0, 6884, 0, -44, 0, 4837, - 4448, -114, 0, 0, 0, 0, 6884, 6884, 13, 3635, - 5295, 5367, 5506, 137, 6078, 0, 5560, 6243, -192, -59, - -59, 4448, 4448, 5241, 6884, 6884, 3701, 93, -192, -192, - 0, 0, 0, 0, 0, 0, 6884, -48, 0, 7084, - 0, 4448, 0, 4448, 0, 4448, 0, 4448, 0, 0, - -119, 0, 4448, 0, 0, 0, 0, 4448, 4448, -34, - -16, 6343, 0, 123, -89, 4183, 4930, -192, -192, -192, - -192, -192, 144, 6389, 6435, 6508, 6554, 6700, 0, 6819, - 6884, 6884, 0, 0, 0, 6930, 146, 94, 0, 0, - 0, 0, 0, 0, 0, -192, 0, 3701, 3701, 3701, - 5241, -53, 4448, 0, -192, 5030, -83, 0, 0, 148, - 5241, -13, 0, 0, 0, 149, 0, 3701, 3701, 0, - 0, 0, 3701, 0, + 0, -50, 0, 0, 0, 0, 4775, 0, -91, -38, + 0, 34, 41, 7201, 42, 6, 46, 48, 50, -184, + 70, 0, 16, 77, 80, 0, 7255, 7255, 5051, -220, + -220, 0, 7255, 0, 5051, 0, -140, 0, 5, -13, + 5693, 0, 0, 0, -32, -233, 0, 0, 4619, 7201, + 5962, 0, 6006, 79, 7255, 7255, 71, 6890, 6936, 7255, + 87, 7201, 7201, 7255, 7255, 5051, -42, -244, -42, 0, + 0, 0, 20, -183, -41, 89, 92, 93, 0, -50, + 0, 7255, 0, 0, 5051, 7255, 6990, 7255, 7255, 7255, + -32, -157, 7255, 7255, 7255, 7255, 7255, 7255, -144, 5051, + 0, 0, -183, -183, 0, 3590, 96, 5962, 5577, 10, + 0, 0, 6049, 1522, 7255, 94, 6107, 95, 6153, 6195, + 7201, 99, 51, 6238, 6281, 0, 0, 4886, 0, 0, + 0, 0, 0, -183, 6323, 1605, 1605, -60, 6380, 0, + 1522, 1522, 1522, 1522, 0, -7, -7, -42, -42, -42, + -42, -220, -60, 4931, 4977, 0, 0, 0, 6425, 6425, + -151, 1522, 7255, 7255, 7255, 7255, 7052, 102, 0, 0, + 0, 7255, 7255, 0, 7201, 7201, 115, 119, 121, 7255, + 0, 0, 0, 7255, 0, -130, 0, 0, 0, 7112, + 0, 18, 0, 5242, 7255, -126, 0, 7255, 0, 0, + 0, 7112, 7112, 32, 2427, 2474, 5735, 5779, 126, 6470, + 0, 5842, 6513, -183, -33, -33, 5051, 5051, 5428, 7112, + 7112, 4046, 81, -183, -183, 0, 0, 0, 0, 0, + 0, 7112, 7112, -50, 0, 7158, 0, 7255, 0, 7255, + 0, 7255, 0, 7255, 0, 0, -96, 0, 7255, 0, + 0, 0, 0, 7255, 7255, -39, -37, 6555, 0, 116, + -95, 7201, 5287, -183, -183, -183, -183, -183, 135, 6612, + 6657, 6702, 6745, 6787, 0, 6844, 7112, 7112, 0, 0, + 0, 5908, 144, 97, 0, 0, 0, 0, 0, 0, + 0, -183, 0, 4046, 4046, 4046, 5428, -51, 5051, 0, + -183, 5332, -85, 0, 0, 146, 5428, -35, 0, 0, + 0, 147, 0, 4046, 4046, 0, 0, 0, 4046, 0, }; short yyrindex[] = { 0, - 0, 2015, 0, 0, 0, 0, 192, 0, 0, 0, - 0, 56, 0, 3424, 0, 2619, 0, 0, 0, 0, + 0, 2000, 0, 0, 0, 0, 189, 0, 0, 0, + 0, 56, 0, 3312, 0, 2591, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 2147, 0, 2195, 1676, - 3509, 0, 0, 0, 1782, 1340, 0, 0, 0, 152, - 0, 0, 0, 3829, 111, 0, 0, 381, 0, 0, - 0, 0, 152, 101, 0, 0, 564, 834, 0, 0, - 0, 436, 5102, 0, -47, 39, 42, 0, 2245, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1830, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 5102, 5102, 0, 72, 0, 17, 0, 0, 0, 72, - 2718, 0, 74, 72, 74, 72, 72, 152, 0, 0, - 72, 72, 0, 0, 0, 0, 0, 0, 0, 0, - 5102, 72, 0, 0, 1882, 0, 3464, 3057, 3097, 3145, - 0, 1468, 1734, 888, 942, 1016, 1286, 2564, 1395, 0, - 0, 0, 0, 0, 0, 0, 0, 3185, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 538, 538, 0, 0, 0, 122, 0, 0, 0, 241, - 0, 0, 0, 0, 0, -41, 0, 0, 0, 0, - 0, 491, 0, 0, 0, 0, 3549, 3594, 0, 72, - 72, 72, 72, 74, 72, 0, 72, 72, 3866, 296, - 357, 0, 0, 136, -10, 169, 0, 0, 5102, 3970, - 0, 0, 0, 0, 0, 0, 3784, 2294, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -51, 0, 0, 0, 101, 0, 4038, 4135, 4235, - 4307, 4400, 74, 72, 72, 72, 72, 72, 0, 72, - 507, 553, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 5102, 0, 0, 0, 0, - 155, 0, 0, 0, 4500, 0, 5195, 0, 0, 0, - 155, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2138, 0, 1930, 1209, + 3755, 0, 0, 0, 1818, 1394, 0, 0, 0, 151, + 0, 0, 3707, 111, 0, 0, 381, 0, 0, 0, + 0, 151, 100, 0, 0, 0, 564, 834, 889, 0, + 0, 0, 436, 5378, 0, -49, -46, -43, 0, 2195, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2084, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 5378, 5378, 0, 0, 0, 0, -22, 0, + 0, 0, 0, 2639, 0, 0, 0, 0, 0, 0, + 151, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 5378, 0, 0, 0, 1872, 0, 0, + 2878, 2923, 2968, 3037, 0, 1719, 1770, 943, 1016, 1286, + 1340, 2536, 1664, 0, 0, 0, 0, 0, 0, 0, + 0, 3245, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 67, 67, 0, 0, 0, -34, + 0, 0, 0, 12, 0, 0, 0, 0, 0, 101, + 0, 0, 0, 0, 0, 491, 0, 0, 0, 0, + 0, 3360, 3432, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 4091, 104, 172, 0, 0, 136, 241, + 247, 0, 0, 5378, 4146, 0, 0, 0, 0, 0, + 0, 3520, 3640, 2266, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 137, 0, 0, + 0, 100, 0, 4220, 4411, 4485, 4530, 4576, 0, 0, + 0, 0, 0, 0, 0, 0, 296, 357, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 5378, 0, 0, 0, 0, 153, 0, 0, 0, + 4841, 0, 5643, 0, 0, 0, 153, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; short yygindex[] = { 0, - -18, 0, 0, 7251, -19, 0, 0, 0, 0, -31, - 33, 2875, -14, -12, 16, 7373, 76, 147, 0, 0, - 0, 231, -205, 0, -267, -9, + -15, 0, 0, 3236, -67, 0, 0, 0, 0, -29, + 171, 4012, -19, 4, 14, 7669, 7480, -4, 0, 0, + 0, -113, -201, 0, -232, -18, }; -#define YYTABLESIZE 7645 -short yytable[] = { 114, - 82, 47, 246, 269, 127, 301, 273, 114, 253, 81, - 6, 16, 48, 81, 224, 17, 96, 114, 105, 79, - 75, 16, 76, 300, 274, 62, 81, 307, 81, 64, - 122, 119, 120, 306, 97, 49, 75, 82, 76, 40, - 82, 82, 82, 82, 82, 82, 81, 82, 122, 81, - 77, 154, 16, 229, 109, 60, 230, 16, 82, 82, - 82, 69, 82, 82, 247, 84, 77, 74, 123, 124, - 95, 50, 78, 112, 98, 93, 91, 56, 92, 16, - 94, 150, 151, 74, 81, 253, 165, 99, 100, 57, - 59, 58, 60, 82, 82, 253, 60, 60, 60, 60, - 60, 18, 60, 60, 19, 70, 71, 61, 23, 63, - 87, 190, 82, 60, 60, 60, 135, 60, 60, 32, - 33, 65, 66, 82, 82, 80, 118, 96, 109, 97, - 149, 128, 129, 95, 16, 130, 31, 141, 93, 210, - 211, 123, 124, 94, 148, 97, 153, 87, 60, 60, - 87, 87, 87, 87, 166, 87, 159, 87, 161, 167, - 199, 206, 121, 212, 213, 192, 193, 60, 87, 87, - 87, 214, 87, 87, 218, 83, 228, 239, 60, 60, - 121, 276, 277, 256, 280, 293, 294, 304, 305, 310, - 96, 1, 88, 88, 113, 113, 0, 107, 0, 257, - 0, 249, 0, 87, 87, 245, 0, 0, 97, 125, - 0, 3, 4, 5, 0, 221, 222, 223, 114, 114, - 114, 0, 87, 194, 278, 35, 0, 125, 27, 0, - 28, 16, 0, 87, 87, 82, 83, 16, 16, 82, - 83, 17, 17, 0, 250, 251, 0, 16, 16, 122, - 122, 122, 82, 83, 82, 83, 0, 82, 82, 82, - 82, 82, 82, 82, 82, 82, 296, 0, 82, 82, - 0, 0, 82, 83, 82, 82, 83, 0, 16, 16, - 82, 124, 82, 82, 82, 82, 82, 0, 82, 82, - 82, 82, 82, 82, 82, 82, 82, 0, 82, 124, - 82, 82, 82, 82, 82, 16, 16, 90, 292, 0, - 82, 83, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 23, 0, 60, 60, 302, 0, 18, 18, 60, - 19, 19, 32, 33, 0, 60, 116, 60, 60, 60, +#define YYTABLESIZE 7947 +short yytable[] = { 130, + 82, 279, 82, 280, 97, 313, 121, 307, 6, 95, + 93, 82, 94, 17, 96, 76, 18, 259, 16, 19, + 107, 82, 80, 82, 121, 82, 275, 82, 252, 97, + 85, 47, 122, 123, 95, 154, 155, 82, 77, 96, + 82, 82, 82, 82, 82, 82, 110, 82, 78, 82, + 158, 98, 124, 112, 100, 60, 101, 102, 82, 82, + 82, 98, 82, 82, 306, 56, 194, 101, 102, 99, + 124, 23, 235, 49, 312, 236, 229, 126, 127, 99, + 50, 55, 32, 33, 48, 58, 98, 59, 76, 60, + 253, 169, 60, 82, 82, 259, 60, 60, 60, 60, + 60, 61, 60, 110, 99, 259, 63, 88, 261, 62, + 87, 77, 82, 60, 60, 60, 64, 60, 60, 65, + 79, 78, 112, 82, 82, 88, 121, 81, 88, 131, + 115, 99, 132, 133, 145, 152, 157, 163, 165, 170, + 204, 114, 211, 171, 116, 215, 216, 87, 60, 60, + 87, 87, 87, 87, 217, 87, 263, 87, 218, 114, + 219, 223, 116, 84, 126, 127, 245, 60, 87, 87, + 87, 262, 87, 87, 282, 286, 283, 40, 60, 60, + 303, 304, 305, 299, 234, 310, 311, 316, 1, 300, + 88, 88, 88, 113, 113, 114, 0, 255, 0, 70, + 317, 318, 0, 87, 87, 320, 0, 0, 0, 3, + 4, 5, 118, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 87, 0, 302, 121, 121, 121, 83, 84, + 118, 251, 284, 87, 87, 0, 0, 83, 84, 17, + 17, 92, 18, 18, 0, 19, 19, 83, 84, 83, + 84, 83, 84, 83, 84, 138, 0, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 16, 16, 82, 82, + 153, 124, 124, 124, 82, 83, 84, 226, 227, 228, + 82, 122, 82, 82, 82, 82, 82, 125, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 23, 82, 122, + 82, 82, 82, 82, 82, 125, 196, 197, 32, 33, + 0, 0, 60, 60, 60, 60, 60, 60, 60, 60, + 60, 0, 0, 60, 60, 0, 88, 88, 88, 60, + 0, 88, 0, 0, 0, 60, 115, 60, 60, 60, 60, 60, 0, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 0, 60, 116, 60, 60, 60, 60, 60, - 16, 16, 31, 31, 0, 0, 0, 87, 87, 87, + 60, 60, 0, 60, 115, 60, 60, 60, 60, 60, + 114, 114, 114, 116, 116, 116, 0, 87, 87, 87, 87, 87, 87, 87, 87, 87, 0, 0, 87, 87, - 55, 121, 121, 121, 87, 0, 0, 0, 0, 0, - 87, 0, 87, 87, 87, 87, 87, 118, 87, 87, + 55, 0, 0, 0, 87, 0, 0, 256, 257, 0, + 87, 0, 87, 87, 87, 87, 87, 117, 87, 87, 87, 87, 87, 87, 87, 87, 87, 0, 87, 0, - 87, 87, 87, 87, 87, 118, 0, 55, 0, 0, - 55, 55, 55, 55, 55, 55, 0, 55, 125, 125, - 125, 0, 0, 0, 0, 85, 0, 0, 55, 55, - 0, 0, 55, 55, 11, 0, 0, 255, 12, 13, - 0, 0, 0, 14, 15, 0, 0, 16, 16, 0, - 0, 0, 0, 0, 0, 16, 0, 17, 18, 19, - 0, 21, 85, 55, 55, 33, 85, 85, 85, 85, - 85, 0, 85, 26, 0, 29, 30, 31, 32, 33, - 23, 0, 55, 85, 85, 33, 0, 33, 33, 0, - 124, 124, 124, 55, 55, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 297, 298, - 299, 0, 0, 0, 0, 0, 0, 23, 85, 85, - 23, 23, 23, 23, 23, 23, 0, 23, 311, 312, - 0, 0, 0, 314, 0, 0, 0, 115, 23, 23, - 23, 0, 23, 23, 0, 116, 116, 116, 85, 85, - 0, 0, 0, 52, 0, 115, 0, 0, 0, 16, - 0, 0, 0, 0, 0, 0, 0, 0, 88, 0, + 87, 87, 87, 87, 87, 117, 0, 55, 0, 0, + 55, 55, 55, 55, 55, 55, 0, 55, 0, 0, + 0, 118, 118, 118, 0, 85, 0, 0, 55, 55, + 0, 0, 55, 55, 0, 0, 0, 0, 0, 0, + 0, 0, 298, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 308, + 0, 0, 85, 55, 55, 85, 85, 85, 85, 85, + 85, 0, 85, 0, 0, 0, 0, 0, 0, 0, + 23, 0, 55, 85, 85, 85, 0, 85, 85, 0, + 122, 122, 122, 55, 55, 0, 125, 125, 125, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 23, 85, 85, + 23, 23, 23, 23, 23, 23, 0, 23, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 23, 23, + 23, 0, 23, 23, 0, 115, 115, 115, 85, 85, + 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 23, 0, 0, 0, 0, 0, - 0, 0, 0, 117, 0, 0, 88, 0, 0, 88, - 52, 0, 23, 33, 52, 52, 52, 52, 52, 0, - 52, 117, 0, 23, 23, 16, 118, 118, 118, 0, - 0, 52, 52, 33, 0, 33, 33, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 52, 0, 23, 52, 52, 52, 52, 52, 52, 0, + 52, 0, 0, 23, 23, 0, 117, 117, 117, 0, + 0, 52, 52, 52, 0, 52, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 55, 55, 55, 55, 55, 55, 55, 55, 0, 0, 55, 55, 0, 0, 0, 0, 55, 0, 52, 0, 0, 0, - 55, 88, 55, 55, 55, 55, 55, 0, 55, 55, + 55, 0, 55, 55, 55, 55, 55, 0, 55, 55, 55, 55, 55, 55, 55, 55, 55, 0, 55, 0, 55, 55, 55, 55, 55, 0, 52, 52, 0, 0, - 0, 0, 85, 85, 33, 85, 85, 85, 33, 33, - 85, 0, 0, 33, 33, 0, 0, 0, 0, 85, - 0, 0, 0, 0, 0, 33, 0, 33, 33, 33, - 85, 33, 0, 85, 33, 33, 33, 33, 33, 33, - 33, 33, 0, 33, 0, 33, 33, 33, 33, 33, + 0, 0, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 0, 0, 85, 85, 0, 0, 0, 0, 85, + 0, 0, 0, 0, 0, 85, 0, 85, 85, 85, + 85, 85, 0, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 0, 85, 0, 85, 85, 85, 85, 85, 0, 0, 0, 0, 0, 0, 0, 23, 23, 23, 23, 23, 23, 23, 23, 23, 0, 0, 23, 23, - 0, 0, 0, 0, 23, 0, 115, 115, 115, 0, + 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 23, 0, 23, 23, 23, 23, 23, 0, 23, 23, 0, 23, 23, 23, 23, 23, 23, 0, 23, 0, - 23, 23, 23, 23, 23, 16, 16, 88, 88, 88, - 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 117, 117, 117, 0, 0, 0, 0, 0, - 52, 52, 33, 52, 52, 52, 33, 33, 52, 0, - 0, 33, 33, 51, 0, 0, 0, 52, 0, 0, - 0, 16, 16, 33, 0, 33, 33, 33, 52, 33, - 0, 52, 33, 33, 33, 33, 33, 33, 33, 33, - 0, 33, 0, 33, 33, 33, 33, 33, 0, 0, - 51, 0, 0, 33, 51, 51, 51, 51, 51, 0, - 51, 0, 0, 0, 0, 0, 0, 41, 0, 0, - 0, 51, 51, 33, 0, 33, 33, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 41, 0, 51, 33, 41, 41, - 41, 41, 41, 0, 41, 0, 0, 0, 0, 0, - 0, 42, 0, 0, 0, 41, 41, 33, 0, 33, - 33, 0, 0, 0, 0, 0, 51, 51, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, - 41, 33, 42, 42, 42, 42, 42, 0, 42, 0, + 23, 23, 23, 23, 23, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 52, 52, 52, 52, 52, 52, 52, 52, 52, 0, + 0, 52, 52, 37, 0, 0, 0, 52, 0, 0, + 0, 0, 0, 52, 0, 52, 52, 52, 52, 52, + 0, 52, 52, 52, 52, 52, 52, 52, 52, 52, + 0, 52, 0, 52, 52, 52, 52, 52, 0, 0, + 37, 0, 0, 37, 37, 37, 37, 37, 37, 0, + 37, 0, 0, 0, 0, 0, 0, 0, 51, 0, + 0, 37, 37, 37, 0, 37, 37, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 51, 37, 37, 51, 51, + 51, 51, 51, 51, 0, 51, 0, 0, 0, 0, + 0, 0, 42, 0, 0, 37, 51, 51, 51, 0, + 51, 51, 0, 0, 0, 0, 37, 37, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, - 42, 33, 0, 33, 33, 0, 0, 0, 0, 0, - 41, 41, 0, 0, 0, 43, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 43, 0, 0, 33, 43, 43, 43, 43, - 43, 0, 43, 0, 42, 42, 0, 0, 0, 0, - 0, 0, 0, 43, 43, 33, 0, 33, 33, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 51, 51, 33, 51, 51, 51, 33, 33, 51, 0, - 0, 33, 33, 0, 0, 0, 0, 51, 43, 0, - 0, 0, 0, 33, 0, 33, 33, 33, 51, 33, - 0, 51, 33, 33, 33, 33, 33, 33, 33, 33, - 0, 33, 0, 33, 33, 33, 33, 33, 43, 43, - 0, 0, 0, 0, 41, 41, 33, 41, 41, 41, - 33, 33, 41, 0, 0, 33, 33, 0, 0, 0, - 0, 41, 0, 0, 0, 0, 0, 33, 0, 33, - 33, 33, 41, 33, 0, 41, 33, 33, 33, 33, - 33, 33, 33, 33, 0, 33, 0, 33, 33, 33, - 33, 33, 0, 0, 0, 0, 0, 0, 42, 42, - 33, 42, 42, 42, 33, 33, 42, 0, 0, 33, - 33, 0, 0, 0, 0, 42, 0, 0, 0, 0, - 0, 33, 0, 33, 33, 33, 42, 33, 0, 42, - 33, 33, 33, 33, 33, 33, 33, 33, 0, 33, - 0, 33, 33, 33, 33, 33, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 43, 43, 33, 43, 43, 43, 33, 33, - 43, 0, 0, 33, 33, 44, 0, 0, 0, 43, - 0, 0, 0, 0, 0, 33, 0, 33, 33, 33, - 43, 33, 0, 43, 33, 33, 33, 33, 33, 33, - 33, 33, 0, 33, 0, 33, 33, 33, 33, 33, - 0, 0, 44, 0, 0, 33, 44, 44, 44, 44, - 44, 0, 44, 0, 0, 0, 0, 0, 0, 36, - 0, 0, 0, 44, 44, 33, 0, 33, 33, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 36, 0, 44, 36, - 36, 36, 36, 36, 36, 0, 36, 0, 0, 0, - 0, 0, 0, 0, 35, 0, 0, 36, 36, 36, - 0, 36, 36, 0, 0, 0, 0, 0, 44, 44, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 35, 36, 36, 35, 35, 35, 35, 35, 35, - 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 36, 35, 35, 35, 0, 35, 0, 0, 0, - 0, 0, 36, 36, 0, 0, 0, 39, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 35, 35, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 35, 33, 39, 0, - 39, 39, 39, 0, 0, 0, 0, 35, 35, 0, - 0, 0, 0, 0, 0, 39, 39, 33, 0, 33, - 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 44, 44, 33, 44, 44, 44, 33, 33, - 44, 0, 0, 33, 33, 0, 0, 0, 0, 44, - 39, 0, 0, 0, 0, 33, 0, 33, 33, 33, - 44, 33, 0, 44, 33, 33, 33, 33, 33, 33, - 33, 33, 0, 33, 0, 33, 33, 33, 33, 33, - 39, 39, 0, 0, 0, 0, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 0, 0, 36, 36, 0, - 0, 0, 0, 36, 0, 0, 0, 0, 0, 36, - 0, 36, 36, 36, 36, 36, 0, 0, 36, 36, - 36, 36, 36, 36, 36, 36, 0, 36, 0, 36, - 0, 0, 36, 36, 0, 0, 0, 0, 0, 0, - 0, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 0, 0, 35, 35, 0, 0, 0, 0, 35, 0, - 0, 0, 0, 0, 35, 14, 35, 35, 35, 35, - 35, 0, 35, 0, 0, 35, 35, 35, 35, 35, - 35, 0, 35, 0, 35, 35, 35, 35, 35, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 14, 0, 0, 14, 0, - 14, 0, 0, 0, 39, 39, 33, 39, 39, 39, - 33, 33, 39, 40, 14, 33, 33, 0, 0, 0, - 0, 39, 0, 0, 0, 0, 0, 33, 0, 33, - 33, 33, 39, 33, 0, 39, 33, 33, 33, 33, - 33, 33, 33, 33, 0, 33, 0, 33, 33, 33, - 33, 33, 0, 33, 40, 0, 40, 40, 40, 0, - 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 40, 40, 33, 0, 33, 33, 0, 14, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 33, 33, 0, 0, 33, 40, 0, 0, 34, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, - 33, 33, 0, 33, 33, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 40, 40, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, - 34, 0, 0, 34, 33, 0, 0, 0, 0, 0, - 0, 15, 0, 0, 0, 0, 0, 34, 34, 33, - 0, 33, 33, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 33, 33, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 15, 34, 0, 15, 0, 15, 0, 0, 0, - 0, 0, 14, 14, 14, 14, 14, 14, 14, 14, - 15, 0, 0, 14, 14, 0, 0, 0, 0, 0, - 0, 0, 34, 34, 0, 14, 0, 14, 14, 14, - 14, 14, 0, 0, 0, 0, 14, 14, 14, 14, - 0, 0, 0, 14, 0, 14, 14, 14, 14, 14, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 40, 40, 33, 40, 40, 40, 33, 33, 40, 0, - 0, 33, 33, 35, 15, 0, 27, 40, 28, 0, - 0, 0, 0, 33, 6, 33, 33, 33, 40, 33, - 0, 40, 33, 33, 33, 33, 33, 33, 33, 33, - 0, 33, 0, 33, 33, 33, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 0, 0, 33, - 33, 0, 0, 0, 6, 0, 0, 6, 0, 6, - 0, 33, 0, 33, 33, 33, 33, 33, 0, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 0, 33, - 0, 33, 33, 33, 33, 33, 34, 34, 33, 34, - 34, 34, 33, 33, 34, 0, 0, 33, 33, 0, - 35, 103, 0, 27, 0, 28, 0, 0, 0, 33, - 0, 33, 33, 33, 34, 33, 0, 34, 33, 33, - 33, 33, 33, 33, 33, 33, 0, 33, 0, 33, - 33, 33, 33, 33, 0, 0, 0, 6, 15, 15, - 15, 15, 15, 15, 15, 15, 12, 0, 0, 15, + 0, 51, 42, 42, 42, 42, 42, 42, 0, 42, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 42, 42, 42, 0, 42, 42, 0, 0, 0, 0, + 0, 51, 51, 0, 0, 43, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 43, 0, 0, 43, 43, 43, 43, 43, + 43, 0, 43, 0, 0, 42, 42, 0, 0, 0, + 0, 0, 0, 43, 43, 43, 0, 43, 43, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 37, 37, 37, 37, 37, 37, 37, 37, 37, 0, + 0, 37, 37, 0, 0, 0, 0, 37, 43, 0, + 0, 0, 0, 37, 0, 37, 37, 37, 37, 37, + 0, 37, 37, 37, 37, 37, 37, 37, 37, 37, + 0, 37, 0, 37, 0, 0, 37, 37, 43, 43, + 0, 0, 0, 0, 0, 51, 51, 51, 51, 51, + 51, 51, 51, 51, 0, 0, 51, 51, 0, 0, + 0, 0, 51, 0, 0, 0, 0, 0, 51, 0, + 51, 51, 51, 51, 51, 0, 51, 51, 51, 51, + 51, 51, 51, 51, 51, 0, 51, 0, 51, 51, + 51, 51, 51, 0, 0, 0, 0, 0, 0, 42, + 42, 42, 42, 42, 42, 42, 42, 42, 14, 0, + 42, 42, 0, 0, 0, 0, 42, 0, 0, 0, + 0, 0, 42, 0, 42, 42, 42, 42, 42, 0, + 42, 42, 42, 42, 42, 42, 42, 42, 42, 0, + 42, 0, 42, 42, 42, 42, 42, 0, 14, 0, + 0, 14, 0, 14, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, + 0, 0, 43, 43, 43, 43, 43, 43, 43, 43, + 43, 0, 0, 43, 43, 44, 0, 0, 0, 43, + 0, 0, 0, 0, 0, 43, 0, 43, 43, 43, + 43, 43, 0, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 0, 43, 0, 43, 43, 43, 43, 43, + 0, 0, 44, 0, 0, 44, 44, 44, 44, 44, + 44, 14, 44, 0, 0, 0, 0, 0, 0, 45, + 0, 0, 0, 44, 44, 44, 0, 44, 44, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 45, 0, 44, 45, + 45, 45, 45, 45, 45, 0, 45, 0, 0, 0, + 0, 0, 0, 37, 0, 0, 0, 45, 45, 45, + 0, 45, 45, 0, 0, 0, 0, 0, 44, 44, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 37, 0, 45, 37, 37, 37, 37, 37, 37, 0, + 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 37, 37, 37, 0, 37, 37, 0, 0, 0, + 0, 0, 45, 45, 0, 14, 14, 14, 14, 14, + 14, 14, 14, 0, 0, 0, 14, 14, 0, 0, + 0, 0, 0, 0, 0, 0, 37, 37, 14, 0, + 14, 14, 14, 14, 14, 0, 0, 0, 0, 14, + 14, 14, 14, 0, 0, 37, 14, 0, 14, 14, + 14, 14, 14, 0, 0, 0, 37, 37, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 44, 44, 44, 44, 44, 44, 44, 44, + 44, 0, 0, 44, 44, 0, 0, 0, 0, 44, + 0, 66, 0, 0, 27, 44, 28, 44, 44, 44, + 44, 44, 0, 44, 44, 44, 44, 44, 44, 44, + 44, 44, 0, 44, 0, 44, 44, 44, 44, 44, + 0, 0, 0, 0, 0, 0, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 0, 0, 45, 45, 0, + 0, 0, 0, 45, 0, 0, 0, 0, 0, 45, + 0, 45, 45, 45, 45, 45, 0, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 0, 45, 0, 45, + 45, 45, 45, 45, 35, 0, 0, 27, 0, 28, + 37, 37, 37, 37, 37, 37, 37, 37, 37, 0, + 0, 37, 37, 36, 0, 0, 0, 37, 0, 0, + 0, 0, 0, 37, 0, 37, 37, 37, 37, 37, + 0, 0, 37, 37, 37, 37, 37, 37, 37, 37, + 0, 37, 0, 37, 0, 0, 37, 37, 0, 0, + 36, 0, 0, 36, 36, 36, 36, 36, 36, 0, + 36, 0, 0, 0, 0, 0, 0, 0, 40, 0, + 0, 36, 36, 36, 0, 36, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 36, 36, 40, 40, + 0, 40, 40, 40, 0, 0, 0, 0, 0, 41, + 0, 0, 0, 0, 0, 36, 40, 40, 40, 0, + 40, 40, 0, 0, 12, 13, 36, 36, 0, 14, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 16, 0, 17, 18, 19, 0, 21, 0, 41, + 41, 40, 41, 41, 41, 0, 0, 33, 0, 26, + 0, 0, 30, 31, 32, 33, 0, 41, 41, 41, + 0, 41, 41, 0, 0, 0, 0, 0, 0, 0, + 0, 40, 40, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 33, 33, 0, + 0, 33, 41, 11, 0, 126, 127, 12, 13, 0, + 0, 15, 14, 15, 0, 33, 33, 33, 0, 33, + 33, 0, 0, 0, 16, 0, 17, 18, 19, 0, + 21, 0, 41, 41, 0, 22, 23, 24, 25, 0, + 0, 0, 26, 0, 29, 30, 31, 32, 33, 0, + 33, 15, 0, 0, 15, 0, 15, 0, 0, 0, + 36, 36, 36, 36, 36, 36, 36, 36, 36, 7, + 15, 36, 36, 0, 0, 0, 0, 36, 0, 0, + 33, 33, 0, 36, 0, 36, 36, 36, 36, 36, + 0, 36, 0, 0, 36, 36, 36, 36, 36, 36, + 0, 36, 0, 36, 36, 36, 36, 36, 0, 7, + 0, 0, 7, 0, 7, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 0, 0, 40, 40, 7, 0, + 0, 0, 40, 0, 15, 0, 0, 0, 40, 6, + 40, 40, 40, 40, 40, 0, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 0, 40, 0, 40, 40, + 40, 40, 40, 0, 0, 0, 41, 41, 41, 41, + 41, 41, 41, 41, 41, 0, 0, 41, 41, 6, + 0, 0, 6, 41, 6, 0, 0, 0, 0, 41, + 0, 41, 41, 41, 41, 41, 0, 41, 41, 41, + 41, 41, 41, 41, 41, 41, 0, 41, 0, 41, + 41, 41, 41, 41, 33, 33, 33, 33, 33, 33, + 33, 33, 33, 34, 0, 33, 33, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 33, 0, 33, + 33, 33, 33, 33, 0, 33, 33, 33, 33, 33, + 33, 33, 33, 33, 0, 33, 0, 33, 33, 33, + 33, 33, 6, 34, 34, 0, 0, 34, 15, 15, + 15, 15, 15, 15, 15, 15, 0, 12, 0, 15, + 15, 34, 34, 34, 0, 34, 34, 0, 0, 0, 0, 15, 0, 15, 15, 15, 15, 15, 0, 0, 0, 0, 15, 15, 15, 15, 0, 0, 0, 15, - 0, 15, 15, 15, 15, 15, 12, 0, 0, 12, - 0, 12, 0, 0, 7, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 11, 0, 123, 124, 12, 13, 0, 0, - 0, 14, 15, 0, 7, 0, 0, 7, 0, 7, - 0, 0, 0, 16, 5, 17, 18, 19, 0, 21, - 0, 0, 0, 7, 22, 23, 24, 25, 0, 0, - 0, 26, 0, 29, 30, 31, 32, 33, 0, 12, - 0, 6, 6, 6, 0, 0, 0, 6, 6, 0, - 0, 0, 6, 6, 5, 0, 0, 5, 0, 5, - 0, 0, 0, 2, 6, 0, 6, 6, 6, 6, - 6, 0, 0, 0, 0, 6, 6, 6, 6, 0, - 0, 0, 6, 0, 6, 6, 6, 6, 6, 11, - 0, 0, 0, 12, 13, 0, 0, 0, 14, 15, - 0, 0, 0, 2, 0, 0, 2, 0, 2, 0, - 16, 0, 17, 18, 19, 0, 21, 0, 0, 0, - 0, 22, 23, 24, 25, 0, 0, 0, 26, 0, - 29, 30, 31, 32, 33, 0, 0, 5, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 12, 12, 12, 12, 0, 12, 12, - 12, 0, 0, 0, 12, 12, 2, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 12, 0, 12, 12, - 12, 12, 12, 0, 0, 0, 0, 12, 12, 12, - 12, 0, 0, 0, 12, 0, 12, 12, 12, 12, - 12, 7, 7, 7, 7, 7, 7, 7, 7, 0, - 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 7, 0, 7, 7, 7, 7, - 7, 0, 0, 0, 0, 7, 7, 7, 7, 0, - 0, 0, 7, 0, 7, 7, 7, 7, 7, 0, + 0, 15, 15, 15, 15, 15, 34, 12, 0, 0, + 12, 0, 12, 0, 0, 0, 7, 7, 7, 7, + 7, 7, 7, 7, 5, 0, 12, 7, 7, 0, + 0, 0, 0, 0, 0, 0, 34, 34, 0, 7, + 0, 7, 7, 7, 7, 7, 0, 0, 0, 0, + 7, 7, 7, 7, 0, 0, 0, 7, 0, 7, + 7, 7, 7, 7, 5, 0, 0, 5, 0, 5, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 6, 6, 6, 0, + 12, 0, 6, 6, 0, 2, 0, 6, 6, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, + 0, 6, 6, 6, 6, 6, 0, 0, 0, 0, + 6, 6, 6, 6, 0, 0, 0, 6, 0, 6, + 6, 6, 6, 6, 0, 2, 0, 0, 2, 0, + 2, 0, 0, 0, 0, 0, 0, 5, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 34, 34, 34, 34, 34, 34, 34, 34, 34, 0, + 0, 34, 34, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 34, 0, 34, 34, 34, 34, 34, + 0, 34, 34, 34, 34, 34, 34, 34, 34, 34, + 0, 34, 0, 34, 34, 34, 34, 34, 2, 0, + 0, 0, 0, 0, 12, 12, 12, 12, 0, 12, + 12, 12, 0, 0, 0, 12, 12, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 12, 0, 12, + 12, 12, 12, 12, 0, 0, 0, 0, 12, 12, + 12, 12, 0, 0, 0, 12, 0, 12, 12, 12, + 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 0, 0, 0, 5, 5, 0, - 0, 0, 5, 5, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 5, 0, 5, 5, 5, 5, - 5, 0, 0, 0, 0, 5, 5, 5, 5, 0, + 0, 0, 5, 5, 0, 0, 66, 237, 0, 27, + 238, 28, 0, 0, 5, 0, 5, 5, 5, 5, + 5, 0, 0, 0, 0, 5, 5, 5, 5, 86, 0, 0, 5, 0, 5, 5, 5, 5, 5, 0, - 2, 2, 2, 0, 0, 0, 2, 2, 0, 0, - 0, 2, 2, 58, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 66, 239, 0, 27, 240, 28, 0, + 0, 0, 2, 2, 2, 0, 0, 0, 2, 2, + 0, 0, 0, 2, 2, 58, 86, 0, 0, 0, + 0, 0, 0, 0, 0, 2, 0, 2, 2, 2, + 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 2, 0, 2, 2, 2, 2, 2, - 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, - 0, 2, 0, 2, 2, 2, 2, 2, 0, 0, - 58, 0, 0, 58, 58, 58, 58, 58, 58, 0, - 58, 0, 0, 0, 0, 0, 0, 0, 54, 0, - 0, 58, 58, 58, 0, 58, 58, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 54, 58, 58, 54, 54, - 54, 54, 54, 54, 0, 54, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 58, 54, 54, 0, 0, - 54, 54, 0, 0, 0, 0, 58, 58, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 54, 54, 0, 0, 0, 0, 56, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 54, 54, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 56, 0, 0, 0, 56, 56, - 0, 56, 0, 0, 56, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 56, 56, 56, 0, 56, - 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 56, 56, 0, 0, 0, 0, 0, 0, 0, 0, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 56, - 0, 58, 58, 0, 0, 0, 0, 58, 0, 0, - 56, 56, 0, 58, 0, 58, 58, 58, 58, 58, - 0, 58, 58, 58, 58, 0, 58, 58, 58, 58, - 0, 58, 0, 58, 58, 58, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 54, 54, 54, 54, 54, - 54, 54, 54, 54, 0, 0, 54, 54, 54, 0, - 0, 0, 54, 0, 0, 0, 0, 0, 54, 0, - 54, 54, 54, 54, 54, 0, 54, 54, 54, 54, - 0, 54, 54, 54, 54, 0, 54, 0, 54, 54, - 54, 0, 0, 104, 54, 106, 0, 0, 0, 0, - 110, 111, 0, 114, 116, 117, 0, 54, 54, 121, - 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 132, 0, 0, 0, 137, - 138, 139, 140, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 56, 56, 0, 56, 56, 56, - 0, 0, 56, 0, 0, 0, 158, 0, 0, 0, - 0, 56, 54, 0, 0, 0, 0, 0, 0, 186, - 0, 0, 56, 0, 0, 56, 16, 16, 56, 56, - 56, 56, 56, 56, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 186, 186, 0, 0, 0, 197, - 198, 0, 0, 200, 201, 202, 203, 205, 0, 0, - 0, 0, 207, 208, 0, 54, 54, 0, 0, 0, - 215, 0, 0, 0, 216, 0, 25, 0, 0, 0, - 0, 0, 0, 0, 186, 227, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 252, 0, - 0, 186, 0, 25, 0, 0, 27, 25, 25, 0, - 25, 0, 0, 25, 264, 0, 265, 0, 266, 0, - 267, 0, 268, 0, 25, 25, 25, 270, 25, 16, - 0, 0, 271, 272, 0, 0, 0, 0, 0, 0, - 54, 186, 0, 27, 0, 0, 0, 27, 27, 0, - 27, 0, 0, 27, 26, 0, 0, 0, 0, 25, - 25, 0, 0, 0, 27, 27, 27, 0, 27, 16, - 0, 0, 186, 186, 186, 186, 0, 0, 25, 0, - 186, 0, 0, 0, 0, 186, 0, 0, 0, 25, - 25, 26, 186, 186, 57, 26, 26, 186, 26, 27, - 27, 26, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 26, 26, 26, 0, 26, 16, 27, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, - 27, 57, 0, 0, 0, 57, 57, 0, 57, 0, - 0, 57, 0, 0, 0, 0, 0, 26, 26, 0, - 0, 0, 57, 57, 57, 0, 57, 16, 0, 0, - 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 26, 26, 35, - 0, 0, 27, 0, 28, 0, 0, 57, 57, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, - 0, 88, 0, 0, 0, 0, 57, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 57, 57, 0, - 0, 0, 0, 25, 25, 0, 25, 25, 25, 0, - 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, - 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 25, 0, 0, 25, 16, 16, 25, 25, 25, - 25, 25, 25, 27, 27, 0, 27, 27, 27, 0, - 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, - 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 27, 0, 0, 27, 16, 16, 27, 27, 27, - 27, 27, 27, 0, 0, 0, 0, 0, 0, 0, - 0, 26, 26, 0, 26, 26, 26, 0, 0, 26, - 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, - 0, 0, 0, 88, 0, 0, 0, 0, 0, 26, - 0, 0, 26, 16, 16, 26, 26, 26, 26, 26, - 26, 57, 57, 0, 57, 57, 57, 0, 0, 57, - 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, - 88, 0, 0, 29, 88, 88, 0, 88, 0, 57, - 88, 0, 57, 16, 16, 57, 57, 57, 57, 57, - 57, 88, 88, 88, 0, 88, 88, 0, 11, 0, + 0, 0, 58, 0, 0, 58, 58, 58, 58, 58, + 58, 0, 58, 0, 0, 0, 0, 0, 0, 0, + 54, 0, 0, 58, 58, 58, 0, 58, 58, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 54, 58, 58, + 54, 54, 54, 54, 54, 54, 0, 54, 56, 0, + 0, 0, 0, 0, 0, 0, 0, 58, 54, 54, + 0, 0, 54, 54, 0, 0, 0, 0, 58, 58, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 56, 0, 0, 0, 56, + 56, 0, 56, 54, 54, 56, 0, 0, 0, 12, + 13, 0, 0, 0, 14, 15, 56, 56, 56, 0, + 56, 56, 54, 0, 0, 0, 16, 0, 17, 18, + 19, 0, 21, 54, 54, 0, 0, 22, 23, 24, + 25, 0, 0, 0, 26, 0, 0, 30, 31, 32, + 33, 56, 56, 0, 0, 0, 12, 13, 0, 0, + 0, 14, 15, 0, 0, 0, 0, 0, 0, 0, + 56, 0, 0, 16, 0, 17, 18, 19, 0, 21, + 0, 56, 56, 0, 22, 23, 24, 25, 0, 0, + 0, 26, 0, 0, 30, 31, 32, 33, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 58, 58, 58, 58, 58, 58, 58, 58, + 58, 0, 0, 58, 58, 0, 0, 0, 0, 58, + 0, 0, 0, 0, 0, 58, 0, 58, 58, 58, + 58, 58, 0, 58, 58, 58, 58, 0, 58, 58, + 58, 58, 0, 58, 0, 58, 58, 58, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 54, 54, 54, + 54, 54, 54, 54, 54, 54, 0, 0, 54, 54, + 0, 0, 0, 0, 54, 0, 0, 0, 0, 0, + 54, 0, 54, 54, 54, 54, 54, 29, 54, 54, + 54, 54, 0, 54, 54, 54, 54, 0, 54, 0, + 54, 54, 54, 0, 0, 56, 56, 56, 56, 56, + 56, 0, 0, 56, 0, 0, 0, 0, 0, 0, + 0, 0, 56, 0, 29, 0, 0, 0, 29, 29, + 0, 29, 25, 56, 29, 0, 56, 56, 56, 56, + 56, 56, 56, 56, 56, 29, 29, 29, 56, 29, + 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, + 0, 0, 0, 25, 25, 0, 25, 27, 0, 25, + 29, 29, 0, 0, 0, 0, 0, 0, 0, 0, + 25, 25, 25, 0, 25, 25, 0, 0, 0, 29, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 29, 29, 0, 0, 27, 0, 0, 0, 27, 27, + 0, 27, 0, 0, 27, 25, 25, 0, 0, 0, + 0, 0, 0, 0, 0, 27, 27, 27, 0, 27, + 27, 0, 0, 0, 25, 0, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 25, 25, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 27, 27, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 26, 0, 0, 0, 26, 26, 27, + 26, 0, 0, 26, 0, 0, 0, 0, 0, 0, + 27, 27, 0, 0, 26, 26, 26, 0, 26, 26, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, + 26, 0, 0, 0, 29, 29, 29, 29, 29, 29, + 0, 0, 29, 0, 0, 0, 0, 0, 26, 0, + 0, 29, 0, 0, 0, 0, 0, 0, 0, 26, + 26, 0, 29, 0, 0, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 0, 0, 0, 29, 0, 25, + 25, 25, 25, 25, 25, 0, 0, 25, 0, 0, + 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, + 25, 25, 25, 25, 25, 25, 25, 25, 25, 0, + 0, 0, 25, 0, 27, 27, 27, 27, 27, 27, + 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, + 0, 27, 0, 0, 57, 0, 0, 0, 0, 0, + 0, 0, 27, 0, 0, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 0, 0, 0, 27, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 57, 103, 104, 0, 57, 57, 0, 57, 0, + 0, 57, 0, 26, 26, 26, 26, 26, 26, 0, + 0, 26, 57, 57, 57, 0, 57, 57, 0, 0, + 26, 88, 0, 0, 0, 0, 134, 0, 136, 137, + 0, 26, 0, 0, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 0, 0, 0, 26, 57, 57, 0, + 0, 0, 0, 0, 0, 0, 159, 160, 88, 0, + 0, 0, 88, 88, 0, 88, 57, 0, 88, 89, + 0, 0, 0, 0, 0, 0, 0, 57, 57, 88, + 88, 88, 0, 88, 88, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 89, 0, 0, 0, + 89, 89, 0, 89, 88, 88, 89, 0, 0, 214, + 0, 0, 0, 0, 0, 0, 0, 89, 89, 89, + 222, 89, 224, 88, 225, 0, 0, 0, 0, 0, + 0, 90, 0, 0, 88, 88, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 247, 0, 0, 0, + 0, 0, 89, 89, 0, 0, 0, 0, 0, 0, + 0, 264, 265, 266, 267, 268, 0, 0, 90, 0, + 0, 89, 90, 90, 0, 90, 0, 0, 90, 0, + 0, 0, 89, 89, 0, 0, 0, 0, 0, 90, + 90, 90, 0, 90, 0, 0, 0, 0, 0, 0, + 0, 57, 57, 57, 57, 57, 57, 0, 0, 57, + 292, 0, 0, 0, 294, 295, 296, 0, 57, 20, + 301, 0, 0, 0, 90, 90, 0, 0, 0, 57, + 0, 0, 57, 57, 57, 57, 57, 57, 57, 57, + 57, 0, 0, 90, 57, 314, 315, 0, 0, 0, + 0, 319, 0, 0, 90, 90, 20, 0, 0, 0, + 20, 20, 0, 20, 0, 0, 20, 0, 88, 88, + 88, 88, 88, 88, 0, 0, 88, 20, 20, 20, + 0, 20, 0, 0, 0, 88, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 88, 0, 0, 88, + 88, 88, 0, 0, 0, 0, 88, 88, 0, 0, + 0, 88, 20, 20, 0, 0, 89, 89, 89, 89, + 89, 89, 0, 0, 89, 0, 0, 0, 0, 66, + 156, 20, 27, 89, 28, 0, 0, 0, 0, 35, + 0, 0, 20, 20, 89, 0, 0, 89, 89, 89, + 0, 0, 86, 0, 89, 89, 0, 0, 0, 89, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, + 35, 35, 0, 35, 0, 0, 35, 0, 90, 90, + 90, 90, 90, 90, 0, 0, 90, 35, 35, 35, + 0, 35, 0, 0, 0, 90, 86, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 90, 0, 0, 90, + 90, 90, 0, 0, 0, 0, 90, 90, 0, 0, + 0, 90, 35, 35, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 86, 0, 0, 0, 86, 86, 0, + 0, 35, 0, 86, 16, 0, 0, 0, 0, 0, + 0, 0, 35, 35, 86, 86, 86, 0, 86, 0, + 0, 0, 0, 0, 0, 0, 20, 20, 20, 20, + 20, 20, 0, 0, 20, 0, 0, 0, 0, 0, + 0, 16, 0, 20, 0, 16, 16, 0, 16, 86, + 86, 16, 0, 0, 20, 0, 0, 20, 20, 20, + 0, 0, 16, 16, 20, 20, 0, 0, 86, 20, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, + 86, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 16, 16, 0, 0, 0, 12, 13, 0, 0, 0, 14, 15, 0, - 29, 0, 0, 0, 29, 29, 0, 29, 16, 16, - 29, 17, 18, 19, 0, 21, 88, 88, 0, 0, - 0, 29, 29, 0, 0, 86, 16, 26, 0, 29, - 30, 31, 32, 33, 0, 88, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 16, 88, 88, 89, 16, - 16, 0, 16, 0, 0, 16, 29, 29, 0, 0, - 0, 0, 0, 0, 0, 0, 16, 16, 0, 0, - 0, 16, 0, 0, 0, 29, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 89, 29, 29, 0, 89, - 89, 0, 89, 90, 0, 89, 0, 0, 0, 0, - 0, 16, 16, 0, 0, 0, 89, 89, 0, 0, - 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, - 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 90, 16, 16, 0, 90, 90, 0, 90, 0, 0, - 90, 89, 89, 0, 0, 0, 0, 0, 0, 0, - 0, 90, 90, 0, 0, 0, 16, 0, 0, 0, - 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 89, 89, 0, 35, 231, 0, 27, 232, 28, - 88, 88, 0, 88, 88, 88, 90, 90, 88, 0, - 0, 0, 0, 0, 87, 0, 88, 88, 0, 0, - 0, 0, 0, 0, 0, 90, 0, 0, 88, 0, - 0, 88, 88, 88, 0, 0, 90, 90, 88, 88, - 29, 29, 0, 29, 29, 29, 0, 0, 29, 0, - 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, - 35, 0, 0, 27, 0, 28, 0, 0, 29, 0, - 0, 29, 16, 16, 29, 29, 29, 29, 29, 185, - 0, 0, 0, 0, 0, 16, 16, 0, 16, 16, - 16, 0, 0, 16, 0, 0, 0, 0, 0, 0, - 0, 0, 16, 20, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 16, 0, 0, 16, 16, 16, 0, - 0, 0, 0, 0, 0, 89, 89, 0, 89, 89, - 89, 0, 0, 89, 0, 0, 0, 0, 0, 0, - 20, 0, 89, 183, 20, 20, 0, 20, 86, 0, - 20, 0, 0, 89, 0, 0, 89, 16, 16, 0, - 0, 20, 20, 0, 0, 0, 16, 0, 0, 0, - 90, 90, 0, 90, 90, 90, 0, 0, 90, 0, - 0, 0, 0, 0, 0, 86, 0, 90, 0, 86, - 86, 0, 0, 0, 0, 86, 20, 20, 90, 0, - 0, 90, 16, 16, 0, 0, 86, 86, 0, 0, - 0, 16, 0, 11, 0, 20, 0, 12, 13, 0, - 0, 0, 14, 15, 0, 110, 20, 20, 110, 0, - 110, 0, 0, 0, 16, 0, 17, 18, 19, 0, - 21, 86, 86, 0, 110, 22, 23, 24, 25, 85, - 86, 0, 26, 0, 29, 30, 31, 32, 33, 0, + 0, 0, 0, 0, 0, 0, 16, 0, 0, 16, + 0, 17, 18, 19, 0, 21, 0, 16, 16, 0, + 22, 23, 24, 25, 0, 0, 0, 26, 0, 0, + 30, 31, 32, 33, 0, 0, 35, 35, 35, 35, + 35, 35, 0, 0, 35, 0, 0, 0, 0, 0, + 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 35, 0, 0, 35, 35, 35, + 0, 0, 0, 0, 35, 35, 0, 0, 0, 35, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 86, 86, 86, 86, 86, 86, 0, + 0, 86, 0, 0, 0, 0, 0, 0, 0, 0, 86, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 86, 86, 0, 0, 0, 0, 0, 0, 11, - 170, 123, 124, 12, 13, 0, 171, 172, 14, 15, - 173, 0, 174, 175, 0, 176, 177, 178, 179, 180, - 16, 181, 17, 18, 19, 0, 21, 182, 110, 0, - 110, 22, 23, 24, 25, 0, 0, 0, 26, 0, - 29, 30, 31, 32, 33, 0, 0, 0, 0, 109, - 0, 0, 109, 0, 109, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 109, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 20, 20, 0, 20, 20, 20, 0, 0, 20, 0, - 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, - 0, 20, 16, 16, 0, 0, 0, 103, 0, 0, - 103, 0, 103, 0, 0, 86, 86, 0, 86, 86, - 86, 0, 109, 86, 109, 0, 103, 0, 0, 0, - 0, 0, 86, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 86, 0, 0, 86, 16, 16, 0, - 0, 0, 0, 0, 110, 110, 0, 0, 110, 110, - 0, 110, 110, 110, 110, 110, 110, 110, 110, 0, - 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, - 0, 110, 110, 0, 0, 0, 110, 110, 110, 110, - 103, 0, 103, 110, 0, 110, 110, 110, 110, 110, - 0, 0, 0, 0, 104, 0, 0, 104, 0, 104, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 51, 0, 0, 27, 0, 28, 109, 109, - 0, 0, 109, 109, 0, 109, 109, 109, 109, 109, - 109, 109, 109, 0, 109, 109, 109, 109, 109, 109, - 109, 109, 109, 109, 0, 109, 109, 104, 0, 104, - 109, 109, 109, 109, 0, 0, 0, 109, 0, 109, - 109, 109, 109, 109, 105, 0, 0, 105, 0, 105, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 105, 0, 0, 103, 103, 0, 0, - 103, 103, 0, 103, 103, 103, 103, 103, 103, 103, - 103, 0, 103, 103, 103, 103, 103, 103, 103, 103, - 103, 103, 0, 103, 103, 0, 0, 0, 103, 103, - 103, 103, 0, 0, 0, 103, 0, 103, 103, 103, - 103, 103, 0, 0, 0, 0, 102, 0, 0, 102, - 0, 102, 0, 0, 0, 0, 0, 105, 0, 105, - 0, 0, 0, 0, 0, 102, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 104, 104, 0, 0, 104, 104, 0, - 104, 104, 104, 104, 104, 104, 104, 104, 0, 104, - 104, 104, 104, 104, 104, 104, 104, 104, 104, 0, - 104, 104, 0, 0, 0, 104, 104, 104, 104, 102, - 0, 102, 104, 0, 104, 104, 104, 104, 104, 108, - 0, 11, 108, 0, 108, 12, 13, 0, 0, 0, - 14, 15, 0, 0, 0, 0, 0, 0, 108, 0, - 0, 0, 16, 0, 17, 18, 19, 0, 21, 0, - 0, 0, 0, 22, 23, 24, 25, 0, 0, 0, - 26, 0, 29, 30, 31, 32, 33, 35, 0, 0, - 27, 0, 28, 105, 105, 0, 0, 105, 105, 0, + 0, 86, 0, 0, 86, 86, 86, 0, 0, 0, + 0, 86, 86, 0, 0, 0, 86, 0, 0, 0, + 0, 16, 16, 16, 16, 16, 16, 0, 41, 16, + 0, 0, 0, 0, 0, 53, 0, 0, 16, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, + 41, 0, 16, 16, 16, 0, 41, 0, 0, 0, + 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, + 106, 53, 109, 0, 0, 0, 113, 114, 0, 117, + 119, 120, 0, 53, 53, 124, 125, 41, 0, 0, + 0, 0, 0, 0, 0, 66, 0, 0, 27, 0, + 28, 0, 0, 135, 0, 0, 41, 139, 141, 142, + 143, 144, 0, 0, 189, 0, 0, 0, 0, 0, + 0, 41, 0, 0, 0, 0, 0, 0, 0, 109, + 0, 0, 0, 0, 0, 0, 162, 0, 0, 0, + 110, 0, 53, 110, 0, 110, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 41, 41, 110, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 187, 0, + 202, 203, 0, 0, 205, 206, 207, 208, 210, 0, + 0, 0, 0, 212, 213, 109, 53, 53, 109, 0, + 109, 220, 0, 0, 0, 221, 0, 0, 0, 0, + 0, 0, 0, 0, 109, 0, 232, 0, 0, 233, + 0, 0, 0, 110, 0, 110, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 41, 41, + 258, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 270, 0, 271, + 0, 272, 0, 273, 0, 274, 0, 0, 0, 103, + 276, 0, 103, 0, 103, 277, 278, 0, 109, 0, + 109, 0, 0, 53, 0, 0, 0, 0, 103, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 174, 126, 127, 12, 13, + 41, 175, 176, 14, 15, 177, 0, 178, 179, 0, + 180, 181, 182, 183, 184, 16, 185, 17, 18, 19, + 0, 21, 186, 0, 0, 0, 22, 23, 24, 25, + 0, 0, 103, 26, 103, 0, 30, 31, 32, 33, + 110, 0, 0, 110, 110, 0, 110, 110, 110, 110, + 110, 110, 110, 110, 0, 110, 110, 110, 110, 110, + 110, 110, 110, 110, 110, 0, 110, 110, 0, 0, + 0, 110, 110, 110, 110, 0, 0, 0, 110, 0, + 0, 110, 110, 110, 110, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 109, 0, 0, 109, 109, + 0, 109, 109, 109, 109, 109, 109, 109, 109, 0, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 0, 109, 109, 0, 0, 0, 109, 109, 109, 109, + 0, 0, 0, 109, 0, 0, 109, 109, 109, 109, + 104, 0, 0, 104, 0, 104, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 103, + 0, 0, 103, 103, 0, 103, 103, 103, 103, 103, + 103, 103, 103, 0, 103, 103, 103, 103, 103, 103, + 103, 103, 103, 103, 0, 103, 103, 0, 0, 0, + 103, 103, 103, 103, 0, 0, 0, 103, 0, 0, + 103, 103, 103, 103, 105, 0, 0, 105, 0, 105, + 0, 0, 0, 104, 0, 104, 0, 0, 0, 0, + 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, + 0, 0, 102, 0, 102, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 102, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 105, 0, 105, + 0, 0, 0, 0, 0, 108, 0, 0, 108, 0, + 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 108, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 102, 0, 102, 0, 0, 0, 66, 105, + 0, 27, 0, 28, 0, 0, 0, 0, 0, 0, + 104, 0, 0, 104, 104, 0, 104, 104, 104, 104, + 104, 104, 104, 104, 0, 104, 104, 104, 104, 104, + 104, 104, 104, 104, 104, 0, 104, 104, 108, 0, + 108, 104, 104, 104, 104, 0, 0, 0, 104, 0, + 0, 104, 104, 104, 104, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 105, 0, 0, 105, 105, 0, 105, 105, 105, 105, 105, 105, 105, 105, 0, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 0, - 105, 105, 108, 0, 108, 105, 105, 105, 105, 0, - 0, 0, 105, 0, 105, 105, 105, 105, 105, 137, - 0, 0, 137, 0, 137, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 137, 0, - 0, 0, 0, 0, 0, 102, 102, 0, 0, 102, - 102, 0, 102, 102, 102, 102, 102, 102, 102, 102, - 0, 102, 102, 102, 102, 102, 102, 102, 102, 102, - 102, 0, 102, 102, 0, 0, 0, 102, 102, 102, - 102, 0, 0, 0, 102, 0, 102, 102, 102, 102, - 102, 35, 0, 0, 27, 0, 28, 0, 0, 0, - 0, 0, 137, 0, 137, 0, 0, 0, 0, 0, - 185, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 108, 108, - 0, 0, 108, 108, 0, 108, 108, 108, 108, 108, - 108, 108, 108, 0, 108, 108, 108, 108, 108, 108, - 108, 108, 108, 108, 0, 108, 108, 0, 0, 0, - 108, 108, 108, 108, 183, 0, 184, 108, 0, 108, - 108, 108, 108, 108, 35, 0, 11, 27, 0, 28, - 12, 13, 0, 0, 0, 14, 15, 0, 0, 0, - 0, 0, 0, 185, 0, 0, 0, 16, 0, 17, - 18, 19, 0, 21, 0, 0, 0, 0, 22, 23, - 24, 25, 0, 0, 0, 26, 0, 29, 30, 31, - 32, 33, 35, 0, 0, 27, 0, 28, 137, 137, - 0, 0, 137, 137, 0, 137, 137, 137, 137, 137, - 137, 137, 137, 0, 137, 137, 137, 137, 137, 137, - 137, 137, 137, 137, 0, 137, 137, 183, 0, 195, - 137, 137, 137, 137, 0, 0, 0, 137, 0, 137, - 137, 137, 137, 137, 35, 0, 0, 27, 0, 28, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 185, 0, 0, 0, 0, 0, 0, - 11, 170, 0, 0, 12, 13, 0, 171, 172, 14, - 15, 173, 0, 174, 175, 0, 176, 177, 178, 179, - 180, 16, 181, 17, 18, 19, 0, 21, 182, 0, - 0, 0, 22, 23, 24, 25, 0, 0, 0, 26, - 0, 29, 30, 31, 32, 33, 35, 0, 0, 27, - 0, 28, 0, 0, 0, 0, 0, 183, 0, 196, - 0, 0, 0, 0, 0, 185, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 11, 170, 0, 0, 12, 13, 0, - 171, 172, 14, 15, 173, 0, 174, 175, 0, 176, - 177, 178, 179, 180, 16, 181, 17, 18, 19, 0, - 21, 182, 0, 0, 0, 22, 23, 24, 25, 183, - 0, 226, 26, 0, 29, 30, 31, 32, 33, 35, - 0, 113, 27, 0, 28, 12, 13, 0, 0, 0, - 14, 15, 0, 0, 0, 0, 0, 0, 185, 0, - 0, 0, 16, 0, 17, 18, 19, 0, 21, 0, - 0, 0, 0, 22, 23, 24, 25, 0, 0, 0, - 26, 0, 29, 30, 31, 32, 33, 0, 0, 0, - 0, 0, 0, 11, 170, 0, 0, 12, 13, 0, - 171, 172, 14, 15, 173, 0, 174, 175, 0, 176, - 177, 178, 179, 180, 16, 181, 17, 18, 19, 0, - 21, 182, 183, 0, 279, 22, 23, 24, 25, 0, - 0, 0, 26, 0, 29, 30, 31, 32, 33, 35, - 0, 0, 27, 0, 28, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 185, 0, - 0, 0, 0, 0, 0, 11, 170, 0, 0, 12, - 13, 0, 171, 172, 14, 15, 173, 0, 174, 175, - 0, 176, 177, 178, 179, 180, 16, 181, 17, 18, - 19, 0, 21, 182, 0, 0, 0, 22, 23, 24, - 25, 0, 0, 0, 26, 0, 29, 30, 31, 32, - 33, 107, 0, 0, 107, 0, 107, 0, 0, 0, - 0, 0, 183, 0, 303, 0, 0, 0, 0, 0, - 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 11, 170, - 0, 0, 12, 13, 0, 171, 172, 14, 15, 173, - 0, 174, 175, 0, 176, 177, 178, 179, 180, 16, - 181, 17, 18, 19, 0, 21, 182, 0, 0, 0, - 22, 23, 24, 25, 107, 0, 107, 26, 0, 29, - 30, 31, 32, 33, 130, 0, 0, 130, 0, 130, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 130, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 35, 0, 0, 27, 0, 28, 0, 0, 11, 170, - 0, 0, 12, 13, 0, 171, 172, 14, 15, 173, - 0, 174, 175, 0, 176, 177, 178, 179, 180, 16, - 181, 17, 18, 19, 0, 21, 182, 130, 0, 130, - 22, 23, 24, 25, 0, 0, 0, 26, 0, 29, - 30, 31, 32, 33, 35, 233, 0, 27, 234, 28, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 87, 0, 88, 0, 0, 0, - 107, 107, 0, 0, 107, 107, 0, 107, 107, 107, - 107, 107, 0, 107, 107, 0, 107, 107, 107, 107, - 107, 107, 107, 107, 107, 107, 0, 107, 107, 0, - 0, 0, 107, 107, 107, 107, 0, 0, 0, 107, - 0, 107, 107, 107, 107, 107, 35, 235, 0, 27, - 236, 28, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 87, 0, 88, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 130, 130, 0, 0, 130, 130, 0, - 130, 130, 130, 130, 130, 0, 130, 130, 0, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 0, - 130, 130, 0, 0, 0, 130, 130, 130, 130, 0, - 0, 0, 130, 0, 130, 130, 130, 130, 130, 11, - 0, 0, 0, 12, 13, 0, 171, 172, 14, 15, - 0, 0, 0, 0, 0, 176, 177, 178, 179, 180, - 16, 0, 17, 18, 19, 0, 21, 182, 0, 0, + 105, 105, 0, 0, 0, 105, 105, 105, 105, 0, + 0, 0, 105, 0, 0, 105, 105, 105, 105, 102, + 0, 0, 102, 102, 0, 102, 102, 102, 102, 102, + 102, 102, 102, 0, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 35, 102, 102, 27, 0, 28, + 102, 102, 102, 102, 0, 0, 0, 102, 0, 0, + 102, 102, 102, 102, 0, 108, 0, 0, 108, 108, + 0, 108, 108, 108, 108, 108, 108, 108, 108, 0, + 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, + 0, 108, 108, 0, 0, 0, 108, 108, 108, 108, + 0, 0, 0, 108, 0, 0, 108, 108, 108, 108, + 137, 12, 13, 137, 0, 137, 14, 15, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 34, 16, 137, + 17, 18, 19, 0, 21, 0, 0, 0, 0, 22, + 23, 24, 25, 0, 0, 0, 26, 0, 0, 30, + 31, 32, 33, 0, 0, 66, 0, 0, 27, 0, + 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 189, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 137, 0, 137, 0, 0, 0, 0, + 66, 0, 0, 27, 0, 28, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 189, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 187, 0, + 188, 0, 0, 0, 0, 0, 66, 0, 0, 27, + 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 9, 10, 11, 0, 189, 0, 12, 13, 0, + 0, 0, 14, 15, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 187, 16, 200, 17, 18, 19, 20, + 21, 0, 0, 0, 0, 22, 23, 24, 25, 0, + 0, 0, 26, 0, 29, 30, 31, 32, 33, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 35, 0, 0, 27, 0, 28, 0, 0, 0, 187, + 137, 201, 0, 137, 137, 0, 137, 137, 137, 137, + 137, 137, 137, 137, 0, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 0, 137, 137, 0, 0, + 0, 137, 137, 137, 137, 0, 0, 0, 137, 0, + 0, 137, 137, 137, 137, 174, 0, 0, 12, 13, + 0, 175, 176, 14, 15, 177, 0, 178, 179, 0, + 180, 181, 182, 183, 184, 16, 185, 17, 18, 19, + 0, 21, 186, 0, 0, 0, 22, 23, 24, 25, + 0, 0, 0, 26, 0, 0, 30, 31, 32, 33, + 174, 0, 0, 12, 13, 0, 175, 176, 14, 15, + 177, 0, 178, 179, 0, 180, 181, 182, 183, 184, + 16, 185, 17, 18, 19, 0, 21, 186, 0, 0, 0, 22, 23, 24, 25, 0, 0, 0, 26, 0, - 29, 30, 31, 32, 33, 35, 237, 0, 27, 238, - 28, 0, 0, 11, 0, 0, 0, 12, 13, 0, - 0, 0, 14, 15, 0, 87, 0, 88, 0, 0, - 0, 0, 0, 0, 16, 0, 17, 18, 19, 0, - 21, 0, 0, 0, 0, 22, 23, 24, 25, 85, - 86, 0, 26, 0, 29, 30, 31, 32, 33, 35, - 242, 0, 27, 243, 28, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, - 0, 88, 0, 0, 0, 11, 0, 0, 0, 12, - 13, 0, 0, 0, 14, 15, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 16, 0, 17, 18, - 19, 35, 21, 0, 27, 108, 28, 22, 23, 24, - 25, 85, 86, 0, 26, 0, 29, 30, 31, 32, - 33, 87, 0, 88, 0, 0, 0, 0, 0, 0, + 0, 30, 31, 32, 33, 0, 174, 0, 0, 12, + 13, 0, 175, 176, 14, 15, 177, 0, 178, 179, + 0, 180, 181, 182, 183, 184, 16, 185, 17, 18, + 19, 0, 21, 186, 0, 0, 0, 22, 23, 24, + 25, 0, 0, 0, 26, 0, 0, 30, 31, 32, + 33, 66, 0, 0, 27, 0, 28, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 189, 0, 0, 0, 0, 0, 0, 0, 0, 11, + 0, 0, 0, 12, 13, 0, 0, 0, 14, 15, + 0, 0, 0, 0, 0, 0, 66, 0, 0, 27, + 16, 28, 17, 18, 19, 0, 21, 0, 0, 0, + 0, 22, 23, 24, 25, 189, 0, 0, 26, 0, + 29, 30, 31, 32, 33, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 187, 0, 231, 0, 0, 0, + 0, 66, 0, 0, 27, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 35, 152, 0, - 27, 0, 28, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 87, 0, 88, + 189, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 187, + 0, 285, 0, 0, 0, 0, 0, 107, 0, 0, + 107, 0, 107, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 187, 0, 309, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 66, 0, 0, + 27, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 35, 0, 0, 27, 157, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 87, 11, 88, 0, 0, 12, 13, - 0, 0, 0, 14, 15, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 16, 0, 17, 18, 19, - 35, 21, 0, 27, 160, 28, 22, 23, 24, 25, - 85, 86, 0, 26, 0, 29, 30, 31, 32, 33, - 87, 0, 88, 0, 0, 0, 0, 0, 11, 0, - 0, 0, 12, 13, 0, 0, 0, 14, 15, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, - 0, 17, 18, 19, 35, 21, 0, 27, 162, 28, - 22, 23, 24, 25, 85, 86, 0, 26, 0, 29, - 30, 31, 32, 33, 87, 0, 88, 0, 0, 0, - 11, 0, 0, 0, 12, 13, 0, 0, 0, 14, - 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 16, 0, 17, 18, 19, 0, 21, 0, 0, - 0, 0, 22, 23, 24, 25, 85, 86, 0, 26, - 0, 29, 30, 31, 32, 33, 11, 0, 0, 0, - 12, 13, 0, 0, 35, 14, 15, 27, 163, 28, - 0, 0, 0, 0, 0, 0, 0, 16, 0, 17, - 18, 19, 0, 21, 87, 0, 88, 0, 22, 23, - 24, 25, 85, 86, 0, 26, 0, 29, 30, 31, - 32, 33, 11, 0, 0, 0, 12, 13, 0, 0, - 35, 14, 15, 27, 168, 28, 0, 0, 0, 0, - 0, 0, 0, 16, 0, 17, 18, 19, 0, 21, - 87, 0, 88, 0, 22, 23, 24, 25, 85, 86, - 0, 26, 0, 29, 30, 31, 32, 33, 0, 11, - 0, 0, 0, 12, 13, 0, 0, 35, 14, 15, - 27, 169, 28, 0, 0, 0, 0, 0, 0, 0, - 16, 0, 17, 18, 19, 0, 21, 87, 0, 88, - 0, 22, 23, 24, 25, 85, 86, 0, 26, 0, - 29, 30, 31, 32, 33, 0, 0, 0, 0, 0, - 0, 0, 0, 11, 0, 0, 0, 12, 13, 0, - 0, 35, 14, 15, 27, 0, 28, 0, 0, 0, - 0, 0, 0, 0, 16, 0, 17, 18, 19, 191, - 21, 87, 0, 88, 0, 22, 23, 24, 25, 85, - 86, 0, 26, 0, 29, 30, 31, 32, 33, 0, - 0, 0, 0, 0, 0, 0, 0, 35, 240, 0, - 27, 0, 28, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 87, 0, 88, - 0, 0, 0, 11, 0, 0, 0, 12, 13, 0, - 0, 0, 14, 15, 0, 0, 0, 0, 0, 0, + 107, 174, 107, 0, 12, 13, 0, 175, 176, 14, + 15, 177, 0, 178, 179, 0, 180, 181, 182, 183, + 184, 16, 185, 17, 18, 19, 0, 21, 186, 0, + 0, 0, 22, 23, 24, 25, 0, 0, 0, 26, + 0, 0, 30, 31, 32, 33, 174, 0, 0, 12, + 13, 0, 175, 176, 14, 15, 177, 0, 178, 179, + 0, 180, 181, 182, 183, 184, 16, 185, 17, 18, + 19, 0, 21, 186, 0, 0, 0, 22, 23, 24, + 25, 0, 0, 0, 26, 0, 0, 30, 31, 32, + 33, 174, 0, 0, 12, 13, 0, 175, 176, 14, + 15, 177, 0, 178, 179, 0, 180, 181, 182, 183, + 184, 16, 185, 17, 18, 19, 66, 21, 186, 27, + 111, 28, 22, 23, 24, 25, 0, 0, 0, 26, + 0, 0, 30, 31, 32, 33, 89, 107, 90, 86, + 107, 107, 0, 107, 107, 107, 107, 107, 0, 107, + 107, 0, 107, 107, 107, 107, 107, 107, 107, 107, + 107, 107, 0, 107, 107, 0, 0, 0, 107, 107, + 107, 107, 0, 0, 0, 107, 0, 0, 107, 107, + 107, 107, 130, 0, 0, 130, 0, 130, 0, 0, + 12, 13, 0, 175, 176, 14, 15, 0, 0, 0, + 0, 130, 180, 181, 182, 183, 184, 16, 0, 17, + 18, 19, 0, 21, 186, 0, 0, 0, 22, 23, + 24, 25, 0, 0, 0, 26, 0, 0, 30, 31, + 32, 33, 66, 0, 0, 27, 0, 28, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 89, 0, 90, 86, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 130, 0, 130, 0, 0, + 0, 0, 0, 0, 66, 241, 0, 27, 242, 28, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 86, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 243, + 0, 27, 244, 28, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, + 13, 86, 0, 0, 14, 15, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 16, 0, 17, 18, + 19, 0, 21, 0, 0, 0, 0, 22, 23, 24, + 25, 87, 88, 0, 26, 0, 0, 30, 31, 32, + 33, 66, 248, 0, 27, 249, 28, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 130, 0, 86, 130, 130, 0, 130, 130, + 130, 130, 130, 0, 130, 130, 0, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 0, 130, 130, + 0, 0, 0, 130, 130, 130, 130, 0, 0, 0, + 130, 0, 0, 130, 130, 130, 130, 35, 0, 0, + 27, 0, 28, 0, 0, 12, 13, 0, 0, 0, + 14, 15, 0, 0, 0, 0, 297, 0, 0, 0, + 0, 0, 16, 0, 17, 18, 19, 0, 21, 0, + 0, 0, 0, 22, 23, 24, 25, 87, 88, 0, + 26, 0, 0, 30, 31, 32, 33, 12, 13, 0, + 0, 108, 14, 15, 27, 0, 28, 0, 0, 0, 0, 0, 0, 0, 16, 0, 17, 18, 19, 0, - 21, 0, 0, 0, 0, 22, 23, 24, 25, 85, - 86, 0, 26, 0, 29, 30, 31, 32, 33, 11, - 0, 0, 0, 12, 13, 0, 0, 0, 14, 15, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 16, 0, 17, 18, 19, 0, 21, 0, 0, 0, - 0, 22, 23, 24, 25, 85, 86, 0, 26, 0, - 29, 30, 31, 32, 33, 0, 11, 0, 0, 0, + 21, 0, 0, 0, 0, 22, 23, 24, 25, 0, + 0, 0, 26, 0, 0, 30, 31, 32, 33, 0, + 0, 12, 13, 0, 0, 66, 14, 15, 27, 111, + 28, 0, 0, 0, 0, 0, 0, 0, 16, 0, + 17, 18, 19, 0, 21, 0, 0, 0, 86, 22, + 23, 24, 25, 0, 0, 0, 26, 0, 0, 30, + 31, 32, 33, 0, 0, 0, 0, 0, 66, 0, + 0, 27, 161, 28, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 12, 13, 0, 0, 0, 14, + 15, 86, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 16, 0, 17, 18, 19, 0, 21, 0, 0, + 0, 0, 22, 23, 24, 25, 0, 0, 0, 26, + 0, 0, 30, 31, 32, 33, 66, 0, 0, 27, + 164, 28, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 11, 0, 0, 86, 12, 13, 0, 0, 0, 14, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 17, - 18, 19, 0, 21, 0, 0, 0, 0, 22, 23, - 24, 25, 85, 86, 0, 26, 0, 29, 30, 31, - 32, 33, 35, 244, 0, 27, 0, 28, 0, 0, + 18, 19, 66, 21, 0, 27, 166, 28, 22, 23, + 24, 25, 0, 0, 0, 26, 0, 29, 30, 31, + 32, 33, 0, 0, 0, 86, 0, 0, 0, 0, 11, 0, 0, 0, 12, 13, 0, 0, 0, 14, - 15, 0, 87, 0, 88, 0, 0, 0, 0, 0, + 15, 0, 0, 0, 66, 0, 0, 27, 167, 28, 0, 16, 0, 17, 18, 19, 0, 21, 0, 0, - 0, 0, 22, 23, 24, 25, 85, 86, 0, 26, - 0, 29, 30, 31, 32, 33, 11, 0, 0, 0, - 12, 13, 0, 0, 0, 14, 15, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 16, 0, 17, + 0, 0, 22, 23, 24, 25, 0, 86, 0, 26, + 0, 29, 30, 31, 32, 33, 0, 0, 12, 13, + 0, 0, 0, 14, 15, 0, 0, 66, 0, 0, + 27, 172, 28, 0, 0, 16, 0, 17, 18, 19, + 0, 21, 0, 0, 0, 0, 22, 23, 24, 25, + 86, 0, 0, 26, 0, 0, 30, 31, 32, 33, + 0, 12, 13, 0, 0, 0, 14, 15, 0, 0, + 66, 0, 0, 27, 173, 28, 0, 0, 16, 0, + 17, 18, 19, 0, 21, 0, 0, 0, 0, 22, + 23, 24, 25, 86, 0, 0, 26, 0, 0, 30, + 31, 32, 33, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 66, 0, 0, 27, 0, 28, 0, 12, + 13, 0, 0, 0, 14, 15, 0, 0, 0, 0, + 195, 0, 0, 0, 0, 86, 16, 0, 17, 18, + 19, 0, 21, 0, 0, 0, 0, 22, 23, 24, + 25, 0, 0, 0, 26, 0, 0, 30, 31, 32, + 33, 0, 0, 0, 0, 12, 13, 0, 0, 66, + 14, 15, 27, 0, 28, 0, 0, 0, 0, 0, + 0, 0, 16, 0, 17, 18, 19, 198, 21, 0, + 0, 0, 86, 22, 23, 24, 25, 0, 0, 0, + 26, 0, 0, 30, 31, 32, 33, 12, 13, 0, + 0, 0, 14, 15, 66, 0, 0, 27, 0, 28, + 0, 0, 0, 0, 16, 0, 17, 18, 19, 0, + 21, 0, 0, 0, 0, 22, 23, 24, 25, 0, + 0, 0, 26, 0, 0, 30, 31, 32, 33, 0, + 12, 13, 0, 0, 0, 14, 15, 0, 0, 66, + 246, 0, 27, 0, 28, 0, 0, 16, 0, 17, 18, 19, 0, 21, 0, 0, 0, 0, 22, 23, - 24, 25, 85, 86, 0, 26, 0, 29, 30, 31, - 32, 33, 35, 275, 0, 27, 0, 28, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 87, 0, 88, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 35, 281, - 0, 27, 0, 28, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 87, 0, - 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 35, 282, 0, 27, 0, 28, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 87, 0, 88, 0, 0, 0, - 0, 11, 0, 0, 0, 12, 13, 0, 0, 0, - 14, 15, 0, 0, 0, 0, 0, 0, 0, 0, + 24, 25, 86, 0, 0, 26, 0, 0, 30, 31, + 32, 33, 0, 12, 13, 0, 0, 0, 14, 15, + 0, 0, 66, 250, 0, 27, 0, 28, 0, 0, + 16, 0, 17, 18, 19, 0, 21, 0, 0, 0, + 0, 22, 23, 24, 25, 86, 0, 0, 26, 0, + 0, 30, 31, 32, 33, 12, 13, 0, 0, 0, + 14, 15, 0, 0, 66, 281, 0, 27, 0, 28, 0, 0, 16, 0, 17, 18, 19, 0, 21, 0, - 0, 0, 0, 22, 23, 24, 25, 85, 86, 0, - 26, 0, 29, 30, 31, 32, 33, 35, 283, 0, - 27, 0, 28, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 87, 0, 88, + 0, 0, 0, 22, 23, 24, 25, 86, 0, 0, + 26, 0, 0, 30, 31, 32, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 35, 284, 0, 27, 0, 28, 0, - 0, 11, 0, 0, 0, 12, 13, 0, 0, 0, - 14, 15, 0, 87, 0, 88, 0, 0, 0, 0, + 0, 0, 12, 13, 0, 0, 0, 14, 15, 0, + 0, 66, 287, 0, 27, 0, 28, 0, 0, 16, + 0, 17, 18, 19, 0, 21, 0, 0, 0, 0, + 22, 23, 24, 25, 86, 0, 0, 26, 0, 0, + 30, 31, 32, 33, 0, 126, 127, 12, 13, 0, + 0, 0, 14, 15, 0, 0, 66, 288, 0, 27, + 0, 28, 0, 0, 16, 0, 17, 18, 19, 0, + 21, 0, 0, 0, 0, 22, 23, 24, 25, 86, + 0, 0, 26, 0, 0, 30, 31, 32, 33, 0, + 0, 0, 12, 13, 0, 0, 0, 14, 15, 0, + 0, 66, 289, 0, 27, 0, 28, 0, 0, 16, + 0, 17, 18, 19, 0, 21, 0, 0, 0, 0, + 22, 23, 24, 25, 86, 0, 0, 26, 0, 0, + 30, 31, 32, 33, 0, 12, 13, 0, 0, 0, + 14, 15, 0, 0, 66, 290, 0, 27, 0, 28, 0, 0, 16, 0, 17, 18, 19, 0, 21, 0, - 0, 0, 0, 22, 23, 24, 25, 85, 86, 0, - 26, 0, 29, 30, 31, 32, 33, 11, 0, 0, - 0, 12, 13, 0, 0, 0, 14, 15, 35, 0, - 0, 27, 0, 28, 0, 0, 0, 0, 16, 0, - 17, 18, 19, 0, 21, 0, 0, 0, 0, 22, - 23, 24, 25, 85, 86, 0, 26, 0, 29, 30, - 31, 32, 33, 11, 0, 0, 0, 12, 13, 0, + 0, 0, 0, 22, 23, 24, 25, 86, 0, 0, + 26, 0, 0, 30, 31, 32, 33, 12, 13, 0, + 0, 0, 14, 15, 0, 0, 66, 291, 0, 27, + 0, 28, 0, 0, 16, 0, 17, 18, 19, 0, + 21, 0, 0, 0, 0, 22, 23, 24, 25, 86, + 0, 0, 26, 0, 0, 30, 31, 32, 33, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 12, 13, 0, 0, 0, 14, + 15, 0, 0, 66, 293, 0, 27, 0, 28, 0, + 0, 16, 0, 17, 18, 19, 0, 21, 0, 0, + 0, 0, 22, 23, 24, 25, 86, 0, 0, 26, + 0, 0, 30, 31, 32, 33, 0, 0, 0, 12, + 13, 0, 0, 0, 14, 15, 0, 0, 0, 66, + 0, 0, 27, 0, 28, 0, 16, 0, 17, 18, + 19, 0, 21, 0, 0, 0, 0, 22, 23, 24, + 25, 0, 0, 0, 26, 0, 0, 30, 31, 32, + 33, 0, 0, 0, 12, 13, 0, 0, 0, 14, + 15, 0, 0, 0, 0, 66, 0, 0, 27, 0, + 28, 16, 0, 17, 18, 19, 0, 21, 0, 0, + 0, 0, 22, 23, 24, 25, 0, 0, 0, 26, + 0, 0, 30, 31, 32, 33, 0, 12, 13, 0, 0, 0, 14, 15, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 16, 0, 17, 18, 19, 0, - 21, 0, 0, 0, 0, 22, 23, 24, 25, 85, - 86, 0, 26, 0, 29, 30, 31, 32, 33, 35, - 285, 34, 27, 0, 28, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, - 0, 88, 0, 0, 0, 0, 11, 0, 0, 0, - 12, 13, 0, 0, 0, 14, 15, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 16, 0, 17, - 18, 19, 35, 21, 0, 27, 0, 28, 22, 23, - 24, 25, 85, 86, 0, 26, 0, 29, 30, 31, - 32, 33, 11, 0, 0, 0, 12, 13, 0, 0, - 0, 14, 15, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 16, 0, 17, 18, 19, 0, 21, - 0, 0, 0, 0, 22, 23, 24, 25, 85, 86, - 0, 26, 0, 29, 30, 31, 32, 33, 35, 287, - 0, 27, 0, 28, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 9, 10, 11, 87, 0, - 88, 12, 13, 0, 0, 0, 14, 15, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, - 17, 18, 19, 20, 21, 0, 0, 0, 0, 22, - 23, 24, 25, 0, 0, 0, 26, 0, 29, 30, - 31, 32, 33, 35, 0, 0, 27, 0, 28, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 87, 0, 88, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, - 0, 0, 12, 13, 0, 0, 0, 14, 15, 35, - 0, 0, 27, 0, 28, 0, 0, 0, 0, 16, - 0, 17, 18, 19, 0, 21, 0, 0, 291, 0, - 22, 23, 24, 25, 85, 86, 0, 26, 0, 29, - 30, 31, 32, 33, 0, 0, 0, 0, 0, 0, - 0, 115, 0, 0, 0, 12, 13, 0, 0, 35, - 14, 15, 27, 0, 28, 0, 0, 0, 0, 0, - 0, 0, 16, 0, 17, 18, 19, 0, 21, 0, - 0, 0, 0, 22, 23, 24, 25, 0, 0, 0, - 26, 0, 29, 30, 31, 32, 33, 0, 0, 0, - 0, 0, 0, 0, 0, 35, 0, 0, 27, 0, - 28, 0, 0, 0, 0, 0, 0, 11, 0, 0, - 0, 12, 13, 0, 0, 0, 14, 15, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, - 17, 18, 19, 0, 21, 0, 0, 0, 0, 22, - 23, 24, 25, 85, 86, 0, 26, 0, 29, 30, - 31, 32, 33, 35, 0, 0, 27, 0, 28, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 11, 0, 0, 0, 12, 13, 0, 0, + 0, 0, 0, 0, 16, 0, 17, 18, 19, 66, + 21, 0, 27, 0, 28, 22, 23, 24, 25, 0, + 0, 0, 26, 0, 0, 30, 31, 32, 33, 12, + 13, 0, 0, 0, 14, 15, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 16, 0, 17, 18, + 19, 0, 21, 0, 0, 0, 0, 22, 23, 24, + 25, 0, 0, 0, 26, 0, 0, 30, 31, 32, + 33, 66, 0, 0, 27, 0, 28, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, 0, 14, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 17, 18, 19, 0, 21, - 0, 0, 0, 0, 22, 23, 24, 25, 85, 86, - 0, 26, 0, 29, 30, 31, 32, 33, 11, 0, - 0, 0, 12, 13, 0, 0, 0, 14, 15, 0, + 0, 0, 0, 0, 22, 23, 24, 25, 0, 0, + 0, 26, 0, 0, 30, 31, 32, 33, 116, 0, + 0, 66, 12, 13, 27, 0, 28, 14, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, - 0, 17, 18, 19, 0, 21, 0, 0, 0, 0, - 22, 23, 24, 25, 0, 0, 0, 26, 0, 29, - 30, 31, 32, 33, 0, 0, 0, 0, 136, 0, + 0, 17, 18, 19, 86, 21, 0, 0, 0, 0, + 22, 23, 24, 25, 0, 0, 0, 26, 0, 0, + 30, 31, 32, 33, 118, 0, 0, 66, 12, 13, + 27, 0, 28, 14, 15, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 16, 0, 17, 18, 19, + 0, 21, 0, 0, 0, 0, 22, 23, 24, 25, + 0, 0, 0, 26, 0, 0, 30, 31, 32, 33, + 51, 0, 0, 27, 0, 28, 0, 0, 140, 0, 0, 0, 12, 13, 0, 0, 0, 14, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 17, 18, 19, 0, 21, 0, 0, 0, 0, - 22, 23, 24, 25, 0, 0, 0, 26, 0, 29, - 30, 31, 32, 33, 204, 0, 0, 0, 12, 13, - 0, 0, 0, 14, 15, 0, 0, 101, 102, 0, - 0, 0, 0, 0, 0, 16, 0, 17, 18, 19, - 0, 21, 0, 0, 0, 0, 22, 23, 24, 25, - 0, 0, 0, 26, 0, 29, 30, 31, 32, 33, - 131, 0, 133, 134, 0, 0, 0, 0, 0, 0, - 0, 0, 263, 0, 0, 0, 12, 13, 0, 0, - 0, 14, 15, 0, 0, 0, 0, 0, 155, 156, - 0, 0, 0, 16, 0, 17, 18, 19, 0, 21, - 0, 0, 0, 0, 22, 23, 24, 25, 0, 0, - 0, 26, 0, 29, 30, 31, 32, 33, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, - 68, 0, 0, 0, 0, 72, 0, 0, 0, 0, - 0, 0, 0, 89, 0, 0, 0, 0, 0, 0, - 209, 0, 0, 0, 0, 0, 89, 0, 0, 0, - 0, 217, 0, 219, 0, 220, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 241, 0, 0, 0, - 0, 0, 0, 142, 143, 144, 145, 146, 147, 0, - 0, 258, 259, 260, 261, 262, 89, 0, 89, 0, - 0, 0, 89, 89, 0, 0, 89, 0, 89, 89, - 0, 0, 0, 89, 89, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 89, 0, 0, 0, 0, 89, - 89, 89, 89, 0, 0, 0, 0, 0, 0, 286, - 0, 0, 0, 288, 289, 290, 0, 0, 0, 295, - 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 308, 309, 0, 0, 89, 0, - 313, 0, 0, 0, 0, 0, 0, 0, 0, 89, - 89, 0, 89, 89, 89, 89, 0, 89, 0, 89, - 89, 0, 0, 0, 0, 0, 0, 89, 89, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 89, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 89, 89, 89, 89, - 89, 0, 89, 89, 89, + 22, 23, 24, 25, 0, 0, 0, 26, 0, 0, + 30, 31, 32, 33, 66, 0, 0, 27, 0, 28, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 209, 0, 0, 0, 12, 13, 0, 0, 0, 14, + 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 16, 0, 17, 18, 19, 0, 21, 0, 0, + 0, 0, 22, 23, 24, 25, 0, 0, 0, 26, + 0, 0, 30, 31, 32, 33, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 12, 13, 0, 0, 0, 14, + 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 16, 0, 17, 18, 19, 0, 21, 0, 0, + 0, 0, 22, 23, 24, 25, 0, 0, 0, 26, + 0, 0, 30, 31, 32, 33, 269, 0, 0, 0, + 12, 13, 0, 0, 0, 14, 15, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 16, 0, 17, + 18, 19, 0, 21, 0, 0, 0, 0, 22, 23, + 24, 25, 0, 0, 0, 26, 0, 0, 30, 31, + 32, 33, 0, 12, 13, 0, 0, 0, 14, 15, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 16, 0, 17, 18, 19, 0, 21, 0, 0, 0, + 0, 22, 23, 24, 25, 57, 0, 0, 26, 0, + 0, 30, 31, 32, 33, 0, 68, 68, 0, 71, + 72, 0, 68, 0, 0, 0, 0, 12, 13, 0, + 68, 0, 14, 15, 0, 0, 0, 0, 0, 0, + 0, 0, 68, 0, 16, 0, 17, 18, 19, 0, + 21, 0, 0, 0, 0, 22, 23, 24, 25, 0, + 0, 0, 26, 0, 0, 30, 31, 32, 33, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 68, 68, 68, 68, 68, 68, 0, 0, + 0, 0, 0, 0, 0, 68, 0, 0, 68, 0, + 0, 0, 68, 68, 0, 0, 68, 0, 68, 68, + 0, 0, 0, 68, 68, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 0, 0, 0, 68, 0, + 68, 68, 68, 68, 0, 0, 0, 0, 0, 0, + 0, 199, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 68, 68, 0, 68, 68, 68, 68, 0, 68, + 0, 68, 68, 0, 0, 67, 69, 0, 0, 68, + 68, 73, 0, 0, 0, 0, 0, 0, 0, 91, + 0, 68, 68, 0, 0, 0, 0, 0, 0, 0, + 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, + 68, 68, 68, 68, 0, 68, 68, 68, 0, 0, + 0, 146, 147, 148, 149, 150, 151, 0, 0, 0, + 0, 0, 0, 0, 91, 0, 0, 91, 0, 0, + 0, 91, 91, 0, 0, 91, 0, 91, 91, 0, + 0, 0, 91, 91, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 91, 0, 0, 0, 91, 0, 91, + 91, 91, 91, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 91, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 91, 91, 0, 91, 91, 91, 91, 0, 91, 0, + 91, 91, 0, 0, 0, 0, 0, 0, 91, 91, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 91, 91, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 91, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 91, 91, + 91, 91, 91, 0, 91, 91, 91, }; short yycheck[] = { 41, - 0, 123, 62, 123, 41, 59, 41, 59, 214, 63, - 59, 63, 123, 63, 59, 63, 94, 59, 50, 38, - 35, 63, 35, 291, 41, 286, 63, 41, 63, 91, - 41, 63, 64, 301, 112, 40, 51, 37, 51, 7, - 40, 41, 42, 43, 44, 45, 63, 47, 59, 63, - 35, 41, 63, 41, 44, 0, 44, 41, 58, 59, - 60, 29, 62, 63, 124, 44, 51, 35, 261, 262, - 37, 40, 261, 60, 288, 42, 43, 40, 45, 63, - 47, 101, 102, 51, 63, 291, 118, 301, 302, 60, - 40, 16, 37, 93, 94, 301, 41, 42, 43, 44, - 45, 63, 47, 40, 63, 30, 31, 40, 292, 40, - 0, 131, 112, 58, 59, 60, 84, 62, 63, 303, - 304, 40, 40, 123, 124, 123, 40, 94, 44, 112, - 98, 41, 41, 37, 63, 41, 63, 292, 42, 171, - 172, 261, 262, 47, 280, 112, 41, 37, 93, 94, - 40, 41, 42, 43, 41, 45, 44, 47, 44, 93, - 292, 41, 41, 40, 40, 133, 134, 112, 58, 59, - 60, 40, 62, 63, 292, 290, 195, 41, 123, 124, - 59, 59, 272, 91, 41, 40, 93, 271, 41, 41, - 94, 0, 41, 93, 59, 41, -1, 51, -1, 219, - -1, 211, -1, 93, 94, 265, -1, -1, 112, 41, - -1, 260, 261, 262, -1, 260, 261, 262, 260, 261, - 262, -1, 112, 148, 256, 40, -1, 59, 43, -1, - 45, 63, -1, 123, 124, 289, 290, 289, 290, 289, - 290, 289, 290, -1, 212, 213, -1, 289, 290, 260, - 261, 262, 289, 290, 289, 290, -1, 257, 258, 259, - 260, 261, 262, 263, 264, 265, 286, -1, 268, 269, - -1, -1, 289, 290, 274, 289, 290, -1, 289, 290, - 280, 41, 282, 283, 284, 285, 286, -1, 288, 289, - 290, 291, 292, 293, 294, 295, 296, -1, 298, 59, - 300, 301, 302, 303, 304, 289, 290, 274, 276, -1, - 289, 290, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 292, -1, 268, 269, 293, -1, 289, 290, 274, - 289, 290, 303, 304, -1, 280, 41, 282, 283, 284, + 0, 41, 63, 41, 37, 41, 41, 59, 59, 42, + 43, 63, 45, 63, 47, 35, 63, 219, 41, 63, + 50, 63, 38, 63, 59, 63, 123, 63, 62, 37, + 44, 123, 62, 63, 42, 103, 104, 37, 35, 47, + 40, 41, 42, 43, 44, 45, 51, 47, 35, 63, + 41, 94, 41, 44, 288, 0, 301, 302, 58, 59, + 60, 94, 62, 63, 297, 60, 134, 301, 302, 112, + 59, 292, 41, 40, 307, 44, 59, 261, 262, 112, + 40, 40, 303, 304, 123, 40, 94, 40, 108, 40, + 124, 121, 37, 93, 94, 297, 41, 42, 43, 44, + 45, 286, 47, 108, 112, 307, 91, 41, 222, 40, + 0, 108, 112, 58, 59, 60, 40, 62, 63, 40, + 261, 108, 44, 123, 124, 59, 40, 123, 62, 41, + 60, 112, 41, 41, 292, 280, 41, 44, 44, 41, + 292, 41, 41, 93, 41, 175, 176, 37, 93, 94, + 40, 41, 42, 43, 40, 45, 224, 47, 40, 59, + 40, 292, 59, 290, 261, 262, 41, 112, 58, 59, + 60, 91, 62, 63, 59, 41, 272, 7, 123, 124, + 294, 295, 296, 40, 200, 271, 41, 41, 0, 93, + 124, 41, 93, 41, 59, 59, -1, 216, -1, 29, + 314, 315, -1, 93, 94, 319, -1, -1, -1, 260, + 261, 262, 41, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 112, -1, 292, 260, 261, 262, 289, 290, + 59, 265, 262, 123, 124, -1, -1, 289, 290, 289, + 290, 274, 289, 290, -1, 289, 290, 289, 290, 289, + 290, 289, 290, 289, 290, 85, -1, 257, 258, 259, + 260, 261, 262, 263, 264, 265, 289, 290, 268, 269, + 100, 260, 261, 262, 274, 289, 290, 260, 261, 262, + 280, 41, 282, 283, 284, 285, 286, 41, 288, 289, + 290, 291, 292, 293, 294, 295, 296, 292, 298, 59, + 300, 301, 302, 303, 304, 59, 136, 137, 303, 304, + -1, -1, 257, 258, 259, 260, 261, 262, 263, 264, + 265, -1, -1, 268, 269, -1, 260, 261, 262, 274, + -1, 265, -1, -1, -1, 280, 41, 282, 283, 284, 285, 286, -1, 288, 289, 290, 291, 292, 293, 294, 295, 296, -1, 298, 59, 300, 301, 302, 303, 304, - 289, 290, 289, 290, -1, -1, -1, 257, 258, 259, + 260, 261, 262, 260, 261, 262, -1, 257, 258, 259, 260, 261, 262, 263, 264, 265, -1, -1, 268, 269, - 0, 260, 261, 262, 274, -1, -1, -1, -1, -1, + 0, -1, -1, -1, 274, -1, -1, 217, 218, -1, 280, -1, 282, 283, 284, 285, 286, 41, 288, 289, 290, 291, 292, 293, 294, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, 59, -1, 37, -1, -1, - 40, 41, 42, 43, 44, 45, -1, 47, 260, 261, - 262, -1, -1, -1, -1, 0, -1, -1, 58, 59, - -1, -1, 62, 63, 259, -1, -1, 217, 263, 264, - -1, -1, -1, 268, 269, -1, -1, 289, 290, -1, - -1, -1, -1, -1, -1, 280, -1, 282, 283, 284, - -1, 286, 37, 93, 94, 40, 41, 42, 43, 44, - 45, -1, 47, 298, -1, 300, 301, 302, 303, 304, + 40, 41, 42, 43, 44, 45, -1, 47, -1, -1, + -1, 260, 261, 262, -1, 0, -1, -1, 58, 59, + -1, -1, 62, 63, -1, -1, -1, -1, -1, -1, + -1, -1, 282, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 299, + -1, -1, 37, 93, 94, 40, 41, 42, 43, 44, + 45, -1, 47, -1, -1, -1, -1, -1, -1, -1, 0, -1, 112, 58, 59, 60, -1, 62, 63, -1, - 260, 261, 262, 123, 124, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 288, 289, - 290, -1, -1, -1, -1, -1, -1, 37, 93, 94, - 40, 41, 42, 43, 44, 45, -1, 47, 308, 309, - -1, -1, -1, 313, -1, -1, -1, 41, 58, 59, + 260, 261, 262, 123, 124, -1, 260, 261, 262, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 37, 93, 94, + 40, 41, 42, 43, 44, 45, -1, 47, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 58, 59, 60, -1, 62, 63, -1, 260, 261, 262, 123, 124, - -1, -1, -1, 0, -1, 59, -1, -1, -1, 63, - -1, -1, -1, -1, -1, -1, -1, -1, 41, -1, + -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 93, 94, -1, -1, -1, -1, -1, - -1, -1, -1, 41, -1, -1, 59, -1, -1, 62, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 37, -1, 112, 40, 41, 42, 43, 44, 45, -1, - 47, 59, -1, 123, 124, 63, 260, 261, 262, -1, + 47, -1, -1, 123, 124, -1, 260, 261, 262, -1, -1, 58, 59, 60, -1, 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 257, 258, 259, 260, 261, 262, 263, 264, 265, -1, -1, 268, 269, -1, -1, -1, -1, 274, -1, 93, -1, -1, -1, - 280, 124, 282, 283, 284, 285, 286, -1, 288, 289, + 280, -1, 282, 283, 284, 285, 286, -1, 288, 289, 290, 291, 292, 293, 294, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, -1, 123, 124, -1, -1, -1, -1, 257, 258, 259, 260, 261, 262, 263, 264, @@ -1059,695 +1089,725 @@ short yycheck[] = { 41, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, -1, -1, -1, -1, -1, -1, -1, 257, 258, 259, 260, 261, 262, 263, 264, 265, -1, -1, 268, 269, - -1, -1, -1, -1, 274, -1, 260, 261, 262, -1, + -1, -1, -1, -1, 274, -1, -1, -1, -1, -1, 280, -1, 282, 283, 284, 285, 286, -1, 288, 289, -1, 291, 292, 293, 294, 295, 296, -1, 298, -1, - 300, 301, 302, 303, 304, 289, 290, 260, 261, 262, - -1, -1, 265, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 260, 261, 262, -1, -1, -1, -1, -1, + 300, 301, 302, 303, 304, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 257, 258, 259, 260, 261, 262, 263, 264, 265, -1, -1, 268, 269, 0, -1, -1, -1, 274, -1, -1, - -1, 289, 290, 280, -1, 282, 283, 284, 285, 286, + -1, -1, -1, 280, -1, 282, 283, 284, 285, 286, -1, 288, 289, 290, 291, 292, 293, 294, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, -1, -1, 37, -1, -1, 40, 41, 42, 43, 44, 45, -1, - 47, -1, -1, -1, -1, -1, -1, 0, -1, -1, + 47, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, 58, 59, 60, -1, 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 37, -1, 93, 40, 41, 42, - 43, 44, 45, -1, 47, -1, -1, -1, -1, -1, - -1, 0, -1, -1, -1, 58, 59, 60, -1, 62, - 63, -1, -1, -1, -1, -1, 123, 124, -1, -1, + -1, -1, -1, -1, -1, 37, 93, 94, 40, 41, + 42, 43, 44, 45, -1, 47, -1, -1, -1, -1, + -1, -1, 0, -1, -1, 112, 58, 59, 60, -1, + 62, 63, -1, -1, -1, -1, 123, 124, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 37, + -1, 93, 40, 41, 42, 43, 44, 45, -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 37, -1, - 93, 40, 41, 42, 43, 44, 45, -1, 47, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, - 59, 60, -1, 62, 63, -1, -1, -1, -1, -1, - 123, 124, -1, -1, -1, 0, -1, -1, -1, -1, + 58, 59, 60, -1, 62, 63, -1, -1, -1, -1, + -1, 123, 124, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 93, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 93, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 37, -1, -1, 40, 41, 42, 43, 44, - 45, -1, 47, -1, 123, 124, -1, -1, -1, -1, + 45, -1, 47, -1, -1, 123, 124, -1, -1, -1, -1, -1, -1, 58, 59, 60, -1, 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 257, 258, 259, 260, 261, 262, 263, 264, 265, -1, -1, 268, 269, -1, -1, -1, -1, 274, 93, -1, -1, -1, -1, 280, -1, 282, 283, 284, 285, 286, -1, 288, 289, 290, 291, 292, 293, 294, 295, 296, - -1, 298, -1, 300, 301, 302, 303, 304, 123, 124, - -1, -1, -1, -1, 257, 258, 259, 260, 261, 262, - 263, 264, 265, -1, -1, 268, 269, -1, -1, -1, - -1, 274, -1, -1, -1, -1, -1, 280, -1, 282, - 283, 284, 285, 286, -1, 288, 289, 290, 291, 292, - 293, 294, 295, 296, -1, 298, -1, 300, 301, 302, - 303, 304, -1, -1, -1, -1, -1, -1, 257, 258, - 259, 260, 261, 262, 263, 264, 265, -1, -1, 268, - 269, -1, -1, -1, -1, 274, -1, -1, -1, -1, - -1, 280, -1, 282, 283, 284, 285, 286, -1, 288, - 289, 290, 291, 292, 293, 294, 295, 296, -1, 298, - -1, 300, 301, 302, 303, 304, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 298, -1, 300, -1, -1, 303, 304, 123, 124, + -1, -1, -1, -1, -1, 257, 258, 259, 260, 261, + 262, 263, 264, 265, -1, -1, 268, 269, -1, -1, + -1, -1, 274, -1, -1, -1, -1, -1, 280, -1, + 282, 283, 284, 285, 286, -1, 288, 289, 290, 291, + 292, 293, 294, 295, 296, -1, 298, -1, 300, 301, + 302, 303, 304, -1, -1, -1, -1, -1, -1, 257, + 258, 259, 260, 261, 262, 263, 264, 265, 0, -1, + 268, 269, -1, -1, -1, -1, 274, -1, -1, -1, + -1, -1, 280, -1, 282, 283, 284, 285, 286, -1, + 288, 289, 290, 291, 292, 293, 294, 295, 296, -1, + 298, -1, 300, 301, 302, 303, 304, -1, 40, -1, + -1, 43, -1, 45, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 59, -1, -1, -1, -1, 257, 258, 259, 260, 261, 262, 263, 264, 265, -1, -1, 268, 269, 0, -1, -1, -1, 274, -1, -1, -1, -1, -1, 280, -1, 282, 283, 284, 285, 286, -1, 288, 289, 290, 291, 292, 293, 294, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, -1, -1, 37, -1, -1, 40, 41, 42, 43, 44, - 45, -1, 47, -1, -1, -1, -1, -1, -1, 0, + 45, 123, 47, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, 58, 59, 60, -1, 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 37, -1, 93, 40, 41, 42, 43, 44, 45, -1, 47, -1, -1, -1, - -1, -1, -1, -1, 0, -1, -1, 58, 59, 60, + -1, -1, -1, 0, -1, -1, -1, 58, 59, 60, -1, 62, 63, -1, -1, -1, -1, -1, 123, 124, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 37, 93, 94, 40, 41, 42, 43, 44, 45, - -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 112, 58, 59, 60, -1, 62, -1, -1, -1, - -1, -1, 123, 124, -1, -1, -1, 0, -1, -1, + 37, -1, 93, 40, 41, 42, 43, 44, 45, -1, + 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 58, 59, 60, -1, 62, 63, -1, -1, -1, + -1, -1, 123, 124, -1, 257, 258, 259, 260, 261, + 262, 263, 264, -1, -1, -1, 268, 269, -1, -1, + -1, -1, -1, -1, -1, -1, 93, 94, 280, -1, + 282, 283, 284, 285, 286, -1, -1, -1, -1, 291, + 292, 293, 294, -1, -1, 112, 298, -1, 300, 301, + 302, 303, 304, -1, -1, -1, 123, 124, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 93, 94, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 112, 40, 41, -1, - 43, 44, 45, -1, -1, -1, -1, 123, 124, -1, - -1, -1, -1, -1, -1, 58, 59, 60, -1, 62, - 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 257, 258, 259, 260, 261, 262, 263, 264, 265, -1, -1, 268, 269, -1, -1, -1, -1, 274, - 93, -1, -1, -1, -1, 280, -1, 282, 283, 284, + -1, 40, -1, -1, 43, 280, 45, 282, 283, 284, 285, 286, -1, 288, 289, 290, 291, 292, 293, 294, 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, - 123, 124, -1, -1, -1, -1, 257, 258, 259, 260, + -1, -1, -1, -1, -1, -1, 257, 258, 259, 260, 261, 262, 263, 264, 265, -1, -1, 268, 269, -1, -1, -1, -1, 274, -1, -1, -1, -1, -1, 280, - -1, 282, 283, 284, 285, 286, -1, -1, 289, 290, + -1, 282, 283, 284, 285, 286, -1, 288, 289, 290, 291, 292, 293, 294, 295, 296, -1, 298, -1, 300, - -1, -1, 303, 304, -1, -1, -1, -1, -1, -1, - -1, 257, 258, 259, 260, 261, 262, 263, 264, 265, - -1, -1, 268, 269, -1, -1, -1, -1, 274, -1, - -1, -1, -1, -1, 280, 0, 282, 283, 284, 285, - 286, -1, 288, -1, -1, 291, 292, 293, 294, 295, - 296, -1, 298, -1, 300, 301, 302, 303, 304, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 40, -1, -1, 43, -1, - 45, -1, -1, -1, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 0, 59, 268, 269, -1, -1, -1, - -1, 274, -1, -1, -1, -1, -1, 280, -1, 282, - 283, 284, 285, 286, -1, 288, 289, 290, 291, 292, - 293, 294, 295, 296, -1, 298, -1, 300, 301, 302, - 303, 304, -1, 40, 41, -1, 43, 44, 45, -1, - -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 58, 59, 60, -1, 62, 63, -1, 123, -1, + 301, 302, 303, 304, 40, -1, -1, 43, -1, 45, + 257, 258, 259, 260, 261, 262, 263, 264, 265, -1, + -1, 268, 269, 0, -1, -1, -1, 274, -1, -1, + -1, -1, -1, 280, -1, 282, 283, 284, 285, 286, + -1, -1, 289, 290, 291, 292, 293, 294, 295, 296, + -1, 298, -1, 300, -1, -1, 303, 304, -1, -1, + 37, -1, -1, 40, 41, 42, 43, 44, 45, -1, + 47, -1, -1, -1, -1, -1, -1, -1, 0, -1, + -1, 58, 59, 60, -1, 62, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 40, 41, -1, -1, 44, 93, -1, -1, 0, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, - 59, 60, -1, 62, 63, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 123, 124, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 40, - 41, -1, -1, 44, 93, -1, -1, -1, -1, -1, - -1, 0, -1, -1, -1, -1, -1, 58, 59, 60, + -1, -1, -1, -1, -1, -1, 93, 94, 40, 41, + -1, 43, 44, 45, -1, -1, -1, -1, -1, 0, + -1, -1, -1, -1, -1, 112, 58, 59, 60, -1, + 62, 63, -1, -1, 263, 264, 123, 124, -1, 268, + 269, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 280, -1, 282, 283, 284, -1, 286, -1, 40, + 41, 93, 43, 44, 45, -1, -1, 0, -1, 298, + -1, -1, 301, 302, 303, 304, -1, 58, 59, 60, -1, 62, 63, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 123, 124, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 40, 93, -1, 43, -1, 45, -1, -1, -1, - -1, -1, 257, 258, 259, 260, 261, 262, 263, 264, - 59, -1, -1, 268, 269, -1, -1, -1, -1, -1, - -1, -1, 123, 124, -1, 280, -1, 282, 283, 284, - 285, 286, -1, -1, -1, -1, 291, 292, 293, 294, - -1, -1, -1, 298, -1, 300, 301, 302, 303, 304, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 257, 258, 259, 260, 261, 262, 263, 264, 265, -1, - -1, 268, 269, 40, 123, -1, 43, 274, 45, -1, - -1, -1, -1, 280, 0, 282, 283, 284, 285, 286, - -1, 288, 289, 290, 291, 292, 293, 294, 295, 296, - -1, 298, -1, 300, 301, 302, 303, 304, 257, 258, - 259, 260, 261, 262, 263, 264, 265, -1, -1, 268, - 269, -1, -1, -1, 40, -1, -1, 43, -1, 45, - -1, 280, -1, 282, 283, 284, 285, 286, -1, 288, - 289, 290, 291, 292, 293, 294, 295, 296, -1, 298, - -1, 300, 301, 302, 303, 304, 257, 258, 259, 260, - 261, 262, 263, 264, 265, -1, -1, 268, 269, -1, - 40, 41, -1, 43, -1, 45, -1, -1, -1, 280, + -1, 123, 124, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 40, 41, -1, + -1, 44, 93, 259, -1, 261, 262, 263, 264, -1, + -1, 0, 268, 269, -1, 58, 59, 60, -1, 62, + 63, -1, -1, -1, 280, -1, 282, 283, 284, -1, + 286, -1, 123, 124, -1, 291, 292, 293, 294, -1, + -1, -1, 298, -1, 300, 301, 302, 303, 304, -1, + 93, 40, -1, -1, 43, -1, 45, -1, -1, -1, + 257, 258, 259, 260, 261, 262, 263, 264, 265, 0, + 59, 268, 269, -1, -1, -1, -1, 274, -1, -1, + 123, 124, -1, 280, -1, 282, 283, 284, 285, 286, + -1, 288, -1, -1, 291, 292, 293, 294, 295, 296, + -1, 298, -1, 300, 301, 302, 303, 304, -1, 40, + -1, -1, 43, -1, 45, 257, 258, 259, 260, 261, + 262, 263, 264, 265, -1, -1, 268, 269, 59, -1, + -1, -1, 274, -1, 123, -1, -1, -1, 280, 0, + 282, 283, 284, 285, 286, -1, 288, 289, 290, 291, + 292, 293, 294, 295, 296, -1, 298, -1, 300, 301, + 302, 303, 304, -1, -1, -1, 257, 258, 259, 260, + 261, 262, 263, 264, 265, -1, -1, 268, 269, 40, + -1, -1, 43, 274, 45, -1, -1, -1, -1, 280, -1, 282, 283, 284, 285, 286, -1, 288, 289, 290, 291, 292, 293, 294, 295, 296, -1, 298, -1, 300, - 301, 302, 303, 304, -1, -1, -1, 123, 257, 258, - 259, 260, 261, 262, 263, 264, 0, -1, -1, 268, - 269, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 301, 302, 303, 304, 257, 258, 259, 260, 261, 262, + 263, 264, 265, 0, -1, 268, 269, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 280, -1, 282, + 283, 284, 285, 286, -1, 288, 289, 290, 291, 292, + 293, 294, 295, 296, -1, 298, -1, 300, 301, 302, + 303, 304, 123, 40, 41, -1, -1, 44, 257, 258, + 259, 260, 261, 262, 263, 264, -1, 0, -1, 268, + 269, 58, 59, 60, -1, 62, 63, -1, -1, -1, -1, 280, -1, 282, 283, 284, 285, 286, -1, -1, -1, -1, 291, 292, 293, 294, -1, -1, -1, 298, - -1, 300, 301, 302, 303, 304, 40, -1, -1, 43, - -1, 45, -1, -1, 0, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 59, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 259, -1, 261, 262, 263, 264, -1, -1, - -1, 268, 269, -1, 40, -1, -1, 43, -1, 45, - -1, -1, -1, 280, 0, 282, 283, 284, -1, 286, - -1, -1, -1, 59, 291, 292, 293, 294, -1, -1, - -1, 298, -1, 300, 301, 302, 303, 304, -1, 123, - -1, 257, 258, 259, -1, -1, -1, 263, 264, -1, - -1, -1, 268, 269, 40, -1, -1, 43, -1, 45, - -1, -1, -1, 0, 280, -1, 282, 283, 284, 285, - 286, -1, -1, -1, -1, 291, 292, 293, 294, -1, - -1, -1, 298, -1, 300, 301, 302, 303, 304, 259, - -1, -1, -1, 263, 264, -1, -1, -1, 268, 269, - -1, -1, -1, 40, -1, -1, 43, -1, 45, -1, - 280, -1, 282, 283, 284, -1, 286, -1, -1, -1, - -1, 291, 292, 293, 294, -1, -1, -1, 298, -1, - 300, 301, 302, 303, 304, -1, -1, 123, -1, -1, + -1, 300, 301, 302, 303, 304, 93, 40, -1, -1, + 43, -1, 45, -1, -1, -1, 257, 258, 259, 260, + 261, 262, 263, 264, 0, -1, 59, 268, 269, -1, + -1, -1, -1, -1, -1, -1, 123, 124, -1, 280, + -1, 282, 283, 284, 285, 286, -1, -1, -1, -1, + 291, 292, 293, 294, -1, -1, -1, 298, -1, 300, + 301, 302, 303, 304, 40, -1, -1, 43, -1, 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 257, 258, 259, -1, + 123, -1, 263, 264, -1, 0, -1, 268, 269, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 280, + -1, 282, 283, 284, 285, 286, -1, -1, -1, -1, + 291, 292, 293, 294, -1, -1, -1, 298, -1, 300, + 301, 302, 303, 304, -1, 40, -1, -1, 43, -1, + 45, -1, -1, -1, -1, -1, -1, 123, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 257, 258, 259, 260, -1, 262, 263, - 264, -1, -1, -1, 268, 269, 123, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 280, -1, 282, 283, - 284, 285, 286, -1, -1, -1, -1, 291, 292, 293, - 294, -1, -1, -1, 298, -1, 300, 301, 302, 303, - 304, 257, 258, 259, 260, 261, 262, 263, 264, -1, - -1, -1, 268, 269, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 280, -1, 282, 283, 284, 285, - 286, -1, -1, -1, -1, 291, 292, 293, 294, -1, - -1, -1, 298, -1, 300, 301, 302, 303, 304, -1, + 257, 258, 259, 260, 261, 262, 263, 264, 265, -1, + -1, 268, 269, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 280, -1, 282, 283, 284, 285, 286, + -1, 288, 289, 290, 291, 292, 293, 294, 295, 296, + -1, 298, -1, 300, 301, 302, 303, 304, 123, -1, + -1, -1, -1, -1, 257, 258, 259, 260, -1, 262, + 263, 264, -1, -1, -1, 268, 269, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 280, -1, 282, + 283, 284, 285, 286, -1, -1, -1, -1, 291, 292, + 293, 294, -1, -1, -1, 298, -1, 300, 301, 302, + 303, 304, -1, -1, -1, -1, -1, -1, -1, -1, -1, 257, 258, 259, -1, -1, -1, 263, 264, -1, - -1, -1, 268, 269, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 280, -1, 282, 283, 284, 285, - 286, -1, -1, -1, -1, 291, 292, 293, 294, -1, + -1, -1, 268, 269, -1, -1, 40, 41, -1, 43, + 44, 45, -1, -1, 280, -1, 282, 283, 284, 285, + 286, -1, -1, -1, -1, 291, 292, 293, 294, 63, -1, -1, 298, -1, 300, 301, 302, 303, 304, -1, - 257, 258, 259, -1, -1, -1, 263, 264, -1, -1, - -1, 268, 269, 0, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 280, -1, 282, 283, 284, 285, 286, - -1, -1, -1, -1, 291, 292, 293, 294, -1, -1, - -1, 298, -1, 300, 301, 302, 303, 304, -1, -1, - 37, -1, -1, 40, 41, 42, 43, 44, 45, -1, - 47, -1, -1, -1, -1, -1, -1, -1, 0, -1, - -1, 58, 59, 60, -1, 62, 63, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 37, 93, 94, 40, 41, - 42, 43, 44, 45, -1, 47, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 112, 58, 59, -1, -1, - 62, 63, -1, -1, -1, -1, 123, 124, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 93, 94, -1, -1, -1, -1, 0, -1, -1, + -1, -1, -1, 40, 41, -1, 43, 44, 45, -1, + -1, -1, 257, 258, 259, -1, -1, -1, 263, 264, + -1, -1, -1, 268, 269, 0, 63, -1, -1, -1, + -1, -1, -1, -1, -1, 280, -1, 282, 283, 284, + 285, 286, -1, -1, -1, -1, 291, 292, 293, 294, + -1, -1, -1, 298, -1, 300, 301, 302, 303, 304, + -1, -1, 37, -1, -1, 40, 41, 42, 43, 44, + 45, -1, 47, -1, -1, -1, -1, -1, -1, -1, + 0, -1, -1, 58, 59, 60, -1, 62, 63, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 37, 93, 94, + 40, 41, 42, 43, 44, 45, -1, 47, 0, -1, + -1, -1, -1, -1, -1, -1, -1, 112, 58, 59, + -1, -1, 62, 63, -1, -1, -1, -1, 123, 124, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 37, -1, -1, -1, 41, + 42, -1, 44, 93, 94, 47, -1, -1, -1, 263, + 264, -1, -1, -1, 268, 269, 58, 59, 60, -1, + 62, 63, 112, -1, -1, -1, 280, -1, 282, 283, + 284, -1, 286, 123, 124, -1, -1, 291, 292, 293, + 294, -1, -1, -1, 298, -1, -1, 301, 302, 303, + 304, 93, 94, -1, -1, -1, 263, 264, -1, -1, + -1, 268, 269, -1, -1, -1, -1, -1, -1, -1, + 112, -1, -1, 280, -1, 282, 283, 284, -1, 286, + -1, 123, 124, -1, 291, 292, 293, 294, -1, -1, + -1, 298, -1, -1, 301, 302, 303, 304, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 112, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 123, 124, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 37, -1, -1, -1, 41, 42, - -1, 44, -1, -1, 47, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 58, 59, 60, -1, 62, + -1, -1, 257, 258, 259, 260, 261, 262, 263, 264, + 265, -1, -1, 268, 269, -1, -1, -1, -1, 274, + -1, -1, -1, -1, -1, 280, -1, 282, 283, 284, + 285, 286, -1, 288, 289, 290, 291, -1, 293, 294, + 295, 296, -1, 298, -1, 300, 301, 302, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 257, 258, 259, + 260, 261, 262, 263, 264, 265, -1, -1, 268, 269, + -1, -1, -1, -1, 274, -1, -1, -1, -1, -1, + 280, -1, 282, 283, 284, 285, 286, 0, 288, 289, + 290, 291, -1, 293, 294, 295, 296, -1, 298, -1, + 300, 301, 302, -1, -1, 257, 258, 259, 260, 261, + 262, -1, -1, 265, -1, -1, -1, -1, -1, -1, + -1, -1, 274, -1, 37, -1, -1, -1, 41, 42, + -1, 44, 0, 285, 47, -1, 288, 289, 290, 291, + 292, 293, 294, 295, 296, 58, 59, 60, 300, 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 37, + -1, -1, -1, 41, 42, -1, 44, 0, -1, 47, + 93, 94, -1, -1, -1, -1, -1, -1, -1, -1, + 58, 59, 60, -1, 62, 63, -1, -1, -1, 112, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 123, 124, -1, -1, 37, -1, -1, -1, 41, 42, + -1, 44, -1, -1, 47, 93, 94, -1, -1, -1, + -1, -1, -1, -1, -1, 58, 59, 60, -1, 62, + 63, -1, -1, -1, 112, -1, 0, -1, -1, -1, + -1, -1, -1, -1, -1, 123, 124, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 93, 94, -1, -1, -1, -1, -1, -1, -1, -1, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 112, - -1, 268, 269, -1, -1, -1, -1, 274, -1, -1, - 123, 124, -1, 280, -1, 282, 283, 284, 285, 286, - -1, 288, 289, 290, 291, -1, 293, 294, 295, 296, - -1, 298, -1, 300, 301, 302, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 257, 258, 259, 260, 261, - 262, 263, 264, 265, -1, -1, 268, 269, 14, -1, - -1, -1, 274, -1, -1, -1, -1, -1, 280, -1, - 282, 283, 284, 285, 286, -1, 288, 289, 290, 291, - -1, 293, 294, 295, 296, -1, 298, -1, 300, 301, - 302, -1, -1, 49, 50, 51, -1, -1, -1, -1, - 56, 57, -1, 59, 60, 61, -1, 63, 64, 65, - 66, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 81, -1, -1, -1, 85, - 86, 87, 88, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 257, 258, -1, 260, 261, 262, - -1, -1, 265, -1, -1, -1, 112, -1, -1, -1, - -1, 274, 118, -1, -1, -1, -1, -1, -1, 125, + -1, -1, -1, 37, -1, -1, -1, 41, 42, 112, + 44, -1, -1, 47, -1, -1, -1, -1, -1, -1, + 123, 124, -1, -1, 58, 59, 60, -1, 62, 63, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 93, + 94, -1, -1, -1, 257, 258, 259, 260, 261, 262, + -1, -1, 265, -1, -1, -1, -1, -1, 112, -1, + -1, 274, -1, -1, -1, -1, -1, -1, -1, 123, + 124, -1, 285, -1, -1, 288, 289, 290, 291, 292, + 293, 294, 295, 296, -1, -1, -1, 300, -1, 257, + 258, 259, 260, 261, 262, -1, -1, 265, -1, -1, + -1, -1, -1, -1, -1, -1, 274, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 285, -1, -1, + 288, 289, 290, 291, 292, 293, 294, 295, 296, -1, + -1, -1, 300, -1, 257, 258, 259, 260, 261, 262, + -1, -1, 265, -1, -1, -1, -1, -1, -1, -1, + -1, 274, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, 285, -1, -1, 288, 289, 290, 291, 292, - 293, 294, 295, 296, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 150, 151, -1, -1, -1, 155, - 156, -1, -1, 159, 160, 161, 162, 163, -1, -1, - -1, -1, 168, 169, -1, 171, 172, -1, -1, -1, - 176, -1, -1, -1, 180, -1, 0, -1, -1, -1, - -1, -1, -1, -1, 190, 191, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 214, -1, - -1, 217, -1, 37, -1, -1, 0, 41, 42, -1, - 44, -1, -1, 47, 230, -1, 232, -1, 234, -1, - 236, -1, 238, -1, 58, 59, 60, 243, 62, 63, - -1, -1, 248, 249, -1, -1, -1, -1, -1, -1, - 256, 257, -1, 37, -1, -1, -1, 41, 42, -1, - 44, -1, -1, 47, 0, -1, -1, -1, -1, 93, - 94, -1, -1, -1, 58, 59, 60, -1, 62, 63, - -1, -1, 288, 289, 290, 291, -1, -1, 112, -1, - 296, -1, -1, -1, -1, 301, -1, -1, -1, 123, - 124, 37, 308, 309, 0, 41, 42, 313, 44, 93, - 94, 47, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 58, 59, 60, -1, 62, 63, 112, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 123, - 124, 37, -1, -1, -1, 41, 42, -1, 44, -1, - -1, 47, -1, -1, -1, -1, -1, 93, 94, -1, - -1, -1, 58, 59, 60, -1, 62, 63, -1, -1, - -1, -1, -1, -1, -1, -1, 112, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 123, 124, 40, - -1, -1, 43, -1, 45, -1, -1, 93, 94, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 60, - -1, 62, -1, -1, -1, -1, 112, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 123, 124, -1, - -1, -1, -1, 257, 258, -1, 260, 261, 262, -1, - -1, 265, -1, -1, -1, -1, -1, -1, -1, -1, - 274, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 285, -1, -1, 288, 289, 290, 291, 292, 293, - 294, 295, 296, 257, 258, -1, 260, 261, 262, -1, - -1, 265, -1, -1, -1, -1, -1, -1, -1, -1, - 274, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 293, 294, 295, 296, -1, -1, -1, 300, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 37, 47, 48, -1, 41, 42, -1, 44, -1, + -1, 47, -1, 257, 258, 259, 260, 261, 262, -1, + -1, 265, 58, 59, 60, -1, 62, 63, -1, -1, + 274, 0, -1, -1, -1, -1, 81, -1, 83, 84, -1, 285, -1, -1, 288, 289, 290, 291, 292, 293, - 294, 295, 296, -1, -1, -1, -1, -1, -1, -1, - -1, 257, 258, -1, 260, 261, 262, -1, -1, 265, - -1, -1, -1, -1, -1, -1, -1, -1, 274, -1, - -1, -1, -1, 0, -1, -1, -1, -1, -1, 285, + 294, 295, 296, -1, -1, -1, 300, 93, 94, -1, + -1, -1, -1, -1, -1, -1, 111, 112, 37, -1, + -1, -1, 41, 42, -1, 44, 112, -1, 47, 0, + -1, -1, -1, -1, -1, -1, -1, 123, 124, 58, + 59, 60, -1, 62, 63, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 37, -1, -1, -1, + 41, 42, -1, 44, 93, 94, 47, -1, -1, 174, + -1, -1, -1, -1, -1, -1, -1, 58, 59, 60, + 185, 62, 187, 112, 189, -1, -1, -1, -1, -1, + -1, 0, -1, -1, 123, 124, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 211, -1, -1, -1, + -1, -1, 93, 94, -1, -1, -1, -1, -1, -1, + -1, 226, 227, 228, 229, 230, -1, -1, 37, -1, + -1, 112, 41, 42, -1, 44, -1, -1, 47, -1, + -1, -1, 123, 124, -1, -1, -1, -1, -1, 58, + 59, 60, -1, 62, -1, -1, -1, -1, -1, -1, + -1, 257, 258, 259, 260, 261, 262, -1, -1, 265, + 275, -1, -1, -1, 279, 280, 281, -1, 274, 0, + 285, -1, -1, -1, 93, 94, -1, -1, -1, 285, -1, -1, 288, 289, 290, 291, 292, 293, 294, 295, - 296, 257, 258, -1, 260, 261, 262, -1, -1, 265, - -1, -1, -1, -1, -1, -1, -1, -1, 274, -1, - 37, -1, -1, 0, 41, 42, -1, 44, -1, 285, - 47, -1, 288, 289, 290, 291, 292, 293, 294, 295, - 296, 58, 59, 60, -1, 62, 63, -1, 259, -1, + 296, -1, -1, 112, 300, 310, 311, -1, -1, -1, + -1, 316, -1, -1, 123, 124, 37, -1, -1, -1, + 41, 42, -1, 44, -1, -1, 47, -1, 257, 258, + 259, 260, 261, 262, -1, -1, 265, 58, 59, 60, + -1, 62, -1, -1, -1, 274, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 285, -1, -1, 288, + 289, 290, -1, -1, -1, -1, 295, 296, -1, -1, + -1, 300, 93, 94, -1, -1, 257, 258, 259, 260, + 261, 262, -1, -1, 265, -1, -1, -1, -1, 40, + 41, 112, 43, 274, 45, -1, -1, -1, -1, 0, + -1, -1, 123, 124, 285, -1, -1, 288, 289, 290, + -1, -1, 63, -1, 295, 296, -1, -1, -1, 300, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 37, -1, -1, -1, + 41, 42, -1, 44, -1, -1, 47, -1, 257, 258, + 259, 260, 261, 262, -1, -1, 265, 58, 59, 60, + -1, 62, -1, -1, -1, 274, 0, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 285, -1, -1, 288, + 289, 290, -1, -1, -1, -1, 295, 296, -1, -1, + -1, 300, 93, 94, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 37, -1, -1, -1, 41, 42, -1, + -1, 112, -1, 47, 0, -1, -1, -1, -1, -1, + -1, -1, 123, 124, 58, 59, 60, -1, 62, -1, + -1, -1, -1, -1, -1, -1, 257, 258, 259, 260, + 261, 262, -1, -1, 265, -1, -1, -1, -1, -1, + -1, 37, -1, 274, -1, 41, 42, -1, 44, 93, + 94, 47, -1, -1, 285, -1, -1, 288, 289, 290, + -1, -1, 58, 59, 295, 296, -1, -1, 112, 300, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 123, + 124, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 93, 94, -1, -1, -1, 263, 264, -1, -1, -1, 268, 269, -1, - 37, -1, -1, -1, 41, 42, -1, 44, 0, 280, - 47, 282, 283, 284, -1, 286, 93, 94, -1, -1, - -1, 58, 59, -1, -1, 296, 63, 298, -1, 300, - 301, 302, 303, 304, -1, 112, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 37, 123, 124, 0, 41, - 42, -1, 44, -1, -1, 47, 93, 94, -1, -1, - -1, -1, -1, -1, -1, -1, 58, 59, -1, -1, - -1, 63, -1, -1, -1, 112, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 37, 123, 124, -1, 41, - 42, -1, 44, 0, -1, 47, -1, -1, -1, -1, - -1, 93, 94, -1, -1, -1, 58, 59, -1, -1, - -1, 63, -1, -1, -1, -1, -1, -1, -1, -1, - 112, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 37, 123, 124, -1, 41, 42, -1, 44, -1, -1, - 47, 93, 94, -1, -1, -1, -1, -1, -1, -1, - -1, 58, 59, -1, -1, -1, 63, -1, -1, -1, - 112, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 123, 124, -1, 40, 41, -1, 43, 44, 45, - 257, 258, -1, 260, 261, 262, 93, 94, 265, -1, - -1, -1, -1, -1, 60, -1, 62, 274, -1, -1, - -1, -1, -1, -1, -1, 112, -1, -1, 285, -1, - -1, 288, 289, 290, -1, -1, 123, 124, 295, 296, - 257, 258, -1, 260, 261, 262, -1, -1, 265, -1, - -1, -1, -1, -1, -1, -1, -1, 274, -1, -1, - 40, -1, -1, 43, -1, 45, -1, -1, 285, -1, - -1, 288, 289, 290, 291, 292, 293, 294, 295, 59, - -1, -1, -1, -1, -1, 257, 258, -1, 260, 261, - 262, -1, -1, 265, -1, -1, -1, -1, -1, -1, - -1, -1, 274, 0, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 285, -1, -1, 288, 289, 290, -1, - -1, -1, -1, -1, -1, 257, 258, -1, 260, 261, - 262, -1, -1, 265, -1, -1, -1, -1, -1, -1, - 37, -1, 274, 123, 41, 42, -1, 44, 0, -1, - 47, -1, -1, 285, -1, -1, 288, 289, 290, -1, - -1, 58, 59, -1, -1, -1, 63, -1, -1, -1, - 257, 258, -1, 260, 261, 262, -1, -1, 265, -1, - -1, -1, -1, -1, -1, 37, -1, 274, -1, 41, - 42, -1, -1, -1, -1, 47, 93, 94, 285, -1, - -1, 288, 289, 290, -1, -1, 58, 59, -1, -1, - -1, 63, -1, 259, -1, 112, -1, 263, 264, -1, - -1, -1, 268, 269, -1, 40, 123, 124, 43, -1, - 45, -1, -1, -1, 280, -1, 282, 283, 284, -1, - 286, 93, 94, -1, 59, 291, 292, 293, 294, 295, - 296, -1, 298, -1, 300, 301, 302, 303, 304, -1, - 112, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 123, 124, -1, -1, -1, -1, -1, -1, 259, - 260, 261, 262, 263, 264, -1, 266, 267, 268, 269, - 270, -1, 272, 273, -1, 275, 276, 277, 278, 279, - 280, 281, 282, 283, 284, -1, 286, 287, 123, -1, - 125, 291, 292, 293, 294, -1, -1, -1, 298, -1, - 300, 301, 302, 303, 304, -1, -1, -1, -1, 40, - -1, -1, 43, -1, 45, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 59, -1, + -1, -1, -1, -1, -1, -1, 112, -1, -1, 280, + -1, 282, 283, 284, -1, 286, -1, 123, 124, -1, + 291, 292, 293, 294, -1, -1, -1, 298, -1, -1, + 301, 302, 303, 304, -1, -1, 257, 258, 259, 260, + 261, 262, -1, -1, 265, -1, -1, -1, -1, -1, + -1, -1, -1, 274, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 285, -1, -1, 288, 289, 290, + -1, -1, -1, -1, 295, 296, -1, -1, -1, 300, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 257, 258, -1, 260, 261, 262, -1, -1, 265, -1, - -1, -1, -1, -1, -1, -1, -1, 274, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 285, -1, - -1, 288, 289, 290, -1, -1, -1, 40, -1, -1, - 43, -1, 45, -1, -1, 257, 258, -1, 260, 261, - 262, -1, 123, 265, 125, -1, 59, -1, -1, -1, - -1, -1, 274, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 285, -1, -1, 288, 289, 290, -1, - -1, -1, -1, -1, 259, 260, -1, -1, 263, 264, + -1, -1, -1, 257, 258, 259, 260, 261, 262, -1, + -1, 265, -1, -1, -1, -1, -1, -1, -1, -1, + 274, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 285, -1, -1, 288, 289, 290, -1, -1, -1, + -1, 295, 296, -1, -1, -1, 300, -1, -1, -1, + -1, 257, 258, 259, 260, 261, 262, -1, 7, 265, + -1, -1, -1, -1, -1, 14, -1, -1, 274, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 285, + 29, -1, 288, 289, 290, -1, 35, -1, -1, -1, + -1, -1, -1, -1, 300, -1, -1, -1, -1, -1, + 49, 50, 51, -1, -1, -1, 55, 56, -1, 58, + 59, 60, -1, 62, 63, 64, 65, 66, -1, -1, + -1, -1, -1, -1, -1, 40, -1, -1, 43, -1, + 45, -1, -1, 82, -1, -1, 85, 86, 87, 88, + 89, 90, -1, -1, 59, -1, -1, -1, -1, -1, + -1, 100, -1, -1, -1, -1, -1, -1, -1, 108, + -1, -1, -1, -1, -1, -1, 115, -1, -1, -1, + 40, -1, 121, 43, -1, 45, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 136, 137, 59, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 123, -1, + 159, 160, -1, -1, 163, 164, 165, 166, 167, -1, + -1, -1, -1, 172, 173, 40, 175, 176, 43, -1, + 45, 180, -1, -1, -1, 184, -1, -1, -1, -1, + -1, -1, -1, -1, 59, -1, 195, -1, -1, 198, + -1, -1, -1, 123, -1, 125, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 217, 218, + 219, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 236, -1, 238, + -1, 240, -1, 242, -1, 244, -1, -1, -1, 40, + 249, -1, 43, -1, 45, 254, 255, -1, 123, -1, + 125, -1, -1, 262, -1, -1, -1, -1, 59, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 282, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 260, 261, 262, 263, 264, + 299, 266, 267, 268, 269, 270, -1, 272, 273, -1, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + -1, 286, 287, -1, -1, -1, 291, 292, 293, 294, + -1, -1, 123, 298, 125, -1, 301, 302, 303, 304, + 260, -1, -1, 263, 264, -1, 266, 267, 268, 269, + 270, 271, 272, 273, -1, 275, 276, 277, 278, 279, + 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, + -1, 291, 292, 293, 294, -1, -1, -1, 298, -1, + -1, 301, 302, 303, 304, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 260, -1, -1, 263, 264, -1, 266, 267, 268, 269, 270, 271, 272, 273, -1, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, -1, 291, 292, 293, 294, - 123, -1, 125, 298, -1, 300, 301, 302, 303, 304, - -1, -1, -1, -1, 40, -1, -1, 43, -1, 45, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 59, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 40, -1, -1, 43, -1, 45, 259, 260, + -1, -1, -1, 298, -1, -1, 301, 302, 303, 304, + 40, -1, -1, 43, -1, 45, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 59, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 260, -1, -1, 263, 264, -1, 266, 267, 268, 269, 270, 271, 272, 273, -1, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, -1, 286, 287, 123, -1, 125, - 291, 292, 293, 294, -1, -1, -1, 298, -1, 300, + 281, 282, 283, 284, -1, 286, 287, -1, -1, -1, + 291, 292, 293, 294, -1, -1, -1, 298, -1, -1, 301, 302, 303, 304, 40, -1, -1, 43, -1, 45, + -1, -1, -1, 123, -1, 125, -1, -1, -1, -1, + -1, -1, -1, 59, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 59, -1, -1, 259, 260, -1, -1, - 263, 264, -1, 266, 267, 268, 269, 270, 271, 272, - 273, -1, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, -1, 286, 287, -1, -1, -1, 291, 292, - 293, 294, -1, -1, -1, 298, -1, 300, 301, 302, - 303, 304, -1, -1, -1, -1, 40, -1, -1, 43, - -1, 45, -1, -1, -1, -1, -1, 123, -1, 125, - -1, -1, -1, -1, -1, 59, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 259, 260, -1, -1, 263, 264, -1, - 266, 267, 268, 269, 270, 271, 272, 273, -1, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, -1, - 286, 287, -1, -1, -1, 291, 292, 293, 294, 123, - -1, 125, 298, -1, 300, 301, 302, 303, 304, 40, - -1, 259, 43, -1, 45, 263, 264, -1, -1, -1, - 268, 269, -1, -1, -1, -1, -1, -1, 59, -1, - -1, -1, 280, -1, 282, 283, 284, -1, 286, -1, - -1, -1, -1, 291, 292, 293, 294, -1, -1, -1, - 298, -1, 300, 301, 302, 303, 304, 40, -1, -1, - 43, -1, 45, 259, 260, -1, -1, 263, 264, -1, - 266, 267, 268, 269, 270, 271, 272, 273, -1, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, -1, - 286, 287, 123, -1, 125, 291, 292, 293, 294, -1, - -1, -1, 298, -1, 300, 301, 302, 303, 304, 40, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 40, -1, -1, 43, -1, 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 59, -1, - -1, -1, -1, -1, -1, 259, 260, -1, -1, 263, - 264, -1, 266, 267, 268, 269, 270, 271, 272, 273, - -1, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, -1, 286, 287, -1, -1, -1, 291, 292, 293, - 294, -1, -1, -1, 298, -1, 300, 301, 302, 303, - 304, 40, -1, -1, 43, -1, 45, -1, -1, -1, - -1, -1, 123, -1, 125, -1, -1, -1, -1, -1, - 59, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 259, 260, - -1, -1, 263, 264, -1, 266, 267, 268, 269, 270, - 271, 272, 273, -1, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, -1, 286, 287, -1, -1, -1, - 291, 292, 293, 294, 123, -1, 125, 298, -1, 300, - 301, 302, 303, 304, 40, -1, 259, 43, -1, 45, - 263, 264, -1, -1, -1, 268, 269, -1, -1, -1, - -1, -1, -1, 59, -1, -1, -1, 280, -1, 282, - 283, 284, -1, 286, -1, -1, -1, -1, 291, 292, - 293, 294, -1, -1, -1, 298, -1, 300, 301, 302, - 303, 304, 40, -1, -1, 43, -1, 45, 259, 260, - -1, -1, 263, 264, -1, 266, 267, 268, 269, 270, - 271, 272, 273, -1, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, -1, 286, 287, 123, -1, 125, - 291, 292, 293, 294, -1, -1, -1, 298, -1, 300, - 301, 302, 303, 304, 40, -1, -1, 43, -1, 45, + -1, -1, -1, -1, -1, -1, -1, 123, -1, 125, + -1, -1, -1, -1, -1, 40, -1, -1, 43, -1, + 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 59, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 59, -1, -1, -1, -1, -1, -1, - 259, 260, -1, -1, 263, 264, -1, 266, 267, 268, - 269, 270, -1, 272, 273, -1, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, - -1, -1, 291, 292, 293, 294, -1, -1, -1, 298, - -1, 300, 301, 302, 303, 304, 40, -1, -1, 43, - -1, 45, -1, -1, -1, -1, -1, 123, -1, 125, - -1, -1, -1, -1, -1, 59, -1, -1, -1, -1, + -1, -1, 123, -1, 125, -1, -1, -1, 40, 41, + -1, 43, -1, 45, -1, -1, -1, -1, -1, -1, + 260, -1, -1, 263, 264, -1, 266, 267, 268, 269, + 270, 271, 272, 273, -1, 275, 276, 277, 278, 279, + 280, 281, 282, 283, 284, -1, 286, 287, 123, -1, + 125, 291, 292, 293, 294, -1, -1, -1, 298, -1, + -1, 301, 302, 303, 304, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 259, 260, -1, -1, 263, 264, -1, - 266, 267, 268, 269, 270, -1, 272, 273, -1, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, -1, - 286, 287, -1, -1, -1, 291, 292, 293, 294, 123, - -1, 125, 298, -1, 300, 301, 302, 303, 304, 40, - -1, 259, 43, -1, 45, 263, 264, -1, -1, -1, - 268, 269, -1, -1, -1, -1, -1, -1, 59, -1, - -1, -1, 280, -1, 282, 283, 284, -1, 286, -1, - -1, -1, -1, 291, 292, 293, 294, -1, -1, -1, - 298, -1, 300, 301, 302, 303, 304, -1, -1, -1, - -1, -1, -1, 259, 260, -1, -1, 263, 264, -1, - 266, 267, 268, 269, 270, -1, 272, 273, -1, 275, + -1, -1, -1, -1, 260, -1, -1, 263, 264, -1, + 266, 267, 268, 269, 270, 271, 272, 273, -1, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, -1, - 286, 287, 123, -1, 125, 291, 292, 293, 294, -1, - -1, -1, 298, -1, 300, 301, 302, 303, 304, 40, - -1, -1, 43, -1, 45, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 59, -1, - -1, -1, -1, -1, -1, 259, 260, -1, -1, 263, + 286, 287, -1, -1, -1, 291, 292, 293, 294, -1, + -1, -1, 298, -1, -1, 301, 302, 303, 304, 260, + -1, -1, 263, 264, -1, 266, 267, 268, 269, 270, + 271, 272, 273, -1, 275, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 40, 286, 287, 43, -1, 45, + 291, 292, 293, 294, -1, -1, -1, 298, -1, -1, + 301, 302, 303, 304, -1, 260, -1, -1, 263, 264, + -1, 266, 267, 268, 269, 270, 271, 272, 273, -1, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + -1, 286, 287, -1, -1, -1, 291, 292, 293, 294, + -1, -1, -1, 298, -1, -1, 301, 302, 303, 304, + 40, 263, 264, 43, -1, 45, 268, 269, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 123, 280, 59, + 282, 283, 284, -1, 286, -1, -1, -1, -1, 291, + 292, 293, 294, -1, -1, -1, 298, -1, -1, 301, + 302, 303, 304, -1, -1, 40, -1, -1, 43, -1, + 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 59, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 123, -1, 125, -1, -1, -1, -1, + 40, -1, -1, 43, -1, 45, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 59, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 123, -1, + 125, -1, -1, -1, -1, -1, 40, -1, -1, 43, + -1, 45, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 257, 258, 259, -1, 59, -1, 263, 264, -1, + -1, -1, 268, 269, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 123, 280, 125, 282, 283, 284, 285, + 286, -1, -1, -1, -1, 291, 292, 293, 294, -1, + -1, -1, 298, -1, 300, 301, 302, 303, 304, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 40, -1, -1, 43, -1, 45, -1, -1, -1, 123, + 260, 125, -1, 263, 264, -1, 266, 267, 268, 269, + 270, 271, 272, 273, -1, 275, 276, 277, 278, 279, + 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, + -1, 291, 292, 293, 294, -1, -1, -1, 298, -1, + -1, 301, 302, 303, 304, 260, -1, -1, 263, 264, + -1, 266, 267, 268, 269, 270, -1, 272, 273, -1, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + -1, 286, 287, -1, -1, -1, 291, 292, 293, 294, + -1, -1, -1, 298, -1, -1, 301, 302, 303, 304, + 260, -1, -1, 263, 264, -1, 266, 267, 268, 269, + 270, -1, 272, 273, -1, 275, 276, 277, 278, 279, + 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, + -1, 291, 292, 293, 294, -1, -1, -1, 298, -1, + -1, 301, 302, 303, 304, -1, 260, -1, -1, 263, 264, -1, 266, 267, 268, 269, 270, -1, 272, 273, -1, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, -1, 291, 292, 293, - 294, -1, -1, -1, 298, -1, 300, 301, 302, 303, + 294, -1, -1, -1, 298, -1, -1, 301, 302, 303, 304, 40, -1, -1, 43, -1, 45, -1, -1, -1, - -1, -1, 123, -1, 125, -1, -1, -1, -1, -1, - 59, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 259, 260, - -1, -1, 263, 264, -1, 266, 267, 268, 269, 270, - -1, 272, 273, -1, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, -1, 286, 287, -1, -1, -1, - 291, 292, 293, 294, 123, -1, 125, 298, -1, 300, - 301, 302, 303, 304, 40, -1, -1, 43, -1, 45, + 59, -1, -1, -1, -1, -1, -1, -1, -1, 259, + -1, -1, -1, 263, 264, -1, -1, -1, 268, 269, + -1, -1, -1, -1, -1, -1, 40, -1, -1, 43, + 280, 45, 282, 283, 284, -1, 286, -1, -1, -1, + -1, 291, 292, 293, 294, 59, -1, -1, 298, -1, + 300, 301, 302, 303, 304, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 123, -1, 125, -1, -1, -1, + -1, 40, -1, -1, 43, -1, 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 59, -1, -1, -1, -1, -1, -1, + 59, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 123, + -1, 125, -1, -1, -1, -1, -1, 40, -1, -1, + 43, -1, 45, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 59, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 123, -1, 125, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 40, -1, -1, + 43, -1, 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 40, -1, -1, 43, -1, 45, -1, -1, 259, 260, - -1, -1, 263, 264, -1, 266, 267, 268, 269, 270, - -1, 272, 273, -1, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, -1, 286, 287, 123, -1, 125, - 291, 292, 293, 294, -1, -1, -1, 298, -1, 300, - 301, 302, 303, 304, 40, 41, -1, 43, 44, 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 60, -1, 62, -1, -1, -1, - 259, 260, -1, -1, 263, 264, -1, 266, 267, 268, + 123, 260, 125, -1, 263, 264, -1, 266, 267, 268, 269, 270, -1, 272, 273, -1, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, -1, 286, 287, -1, -1, -1, 291, 292, 293, 294, -1, -1, -1, 298, - -1, 300, 301, 302, 303, 304, 40, 41, -1, 43, - 44, 45, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 60, -1, 62, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 259, 260, -1, -1, 263, 264, -1, - 266, 267, 268, 269, 270, -1, 272, 273, -1, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, -1, - 286, 287, -1, -1, -1, 291, 292, 293, 294, -1, - -1, -1, 298, -1, 300, 301, 302, 303, 304, 259, - -1, -1, -1, 263, 264, -1, 266, 267, 268, 269, - -1, -1, -1, -1, -1, 275, 276, 277, 278, 279, - 280, -1, 282, 283, 284, -1, 286, 287, -1, -1, - -1, 291, 292, 293, 294, -1, -1, -1, 298, -1, - 300, 301, 302, 303, 304, 40, 41, -1, 43, 44, - 45, -1, -1, 259, -1, -1, -1, 263, 264, -1, - -1, -1, 268, 269, -1, 60, -1, 62, -1, -1, - -1, -1, -1, -1, 280, -1, 282, 283, 284, -1, - 286, -1, -1, -1, -1, 291, 292, 293, 294, 295, - 296, -1, 298, -1, 300, 301, 302, 303, 304, 40, - 41, -1, 43, 44, 45, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 60, - -1, 62, -1, -1, -1, 259, -1, -1, -1, 263, - 264, -1, -1, -1, 268, 269, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 280, -1, 282, 283, - 284, 40, 286, -1, 43, 44, 45, 291, 292, 293, - 294, 295, 296, -1, 298, -1, 300, 301, 302, 303, - 304, 60, -1, 62, -1, -1, -1, -1, -1, -1, + -1, -1, 301, 302, 303, 304, 260, -1, -1, 263, + 264, -1, 266, 267, 268, 269, 270, -1, 272, 273, + -1, 275, 276, 277, 278, 279, 280, 281, 282, 283, + 284, -1, 286, 287, -1, -1, -1, 291, 292, 293, + 294, -1, -1, -1, 298, -1, -1, 301, 302, 303, + 304, 260, -1, -1, 263, 264, -1, 266, 267, 268, + 269, 270, -1, 272, 273, -1, 275, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 40, 286, 287, 43, + 44, 45, 291, 292, 293, 294, -1, -1, -1, 298, + -1, -1, 301, 302, 303, 304, 60, 260, 62, 63, + 263, 264, -1, 266, 267, 268, 269, 270, -1, 272, + 273, -1, 275, 276, 277, 278, 279, 280, 281, 282, + 283, 284, -1, 286, 287, -1, -1, -1, 291, 292, + 293, 294, -1, -1, -1, 298, -1, -1, 301, 302, + 303, 304, 40, -1, -1, 43, -1, 45, -1, -1, + 263, 264, -1, 266, 267, 268, 269, -1, -1, -1, + -1, 59, 275, 276, 277, 278, 279, 280, -1, 282, + 283, 284, -1, 286, 287, -1, -1, -1, 291, 292, + 293, 294, -1, -1, -1, 298, -1, -1, 301, 302, + 303, 304, 40, -1, -1, 43, -1, 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 40, 41, -1, - 43, -1, 45, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 60, -1, 62, + -1, -1, 60, -1, 62, 63, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 123, -1, 125, -1, -1, + -1, -1, -1, -1, 40, 41, -1, 43, 44, 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 40, -1, -1, 43, 44, 45, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 40, 41, + -1, 43, 44, 45, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 263, + 264, 63, -1, -1, 268, 269, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 280, -1, 282, 283, + 284, -1, 286, -1, -1, -1, -1, 291, 292, 293, + 294, 295, 296, -1, 298, -1, -1, 301, 302, 303, + 304, 40, 41, -1, 43, 44, 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 60, 259, 62, -1, -1, 263, 264, - -1, -1, -1, 268, 269, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 280, -1, 282, 283, 284, - 40, 286, -1, 43, 44, 45, 291, 292, 293, 294, - 295, 296, -1, 298, -1, 300, 301, 302, 303, 304, - 60, -1, 62, -1, -1, -1, -1, -1, 259, -1, - -1, -1, 263, 264, -1, -1, -1, 268, 269, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 280, - -1, 282, 283, 284, 40, 286, -1, 43, 44, 45, - 291, 292, 293, 294, 295, 296, -1, 298, -1, 300, - 301, 302, 303, 304, 60, -1, 62, -1, -1, -1, - 259, -1, -1, -1, 263, 264, -1, -1, -1, 268, - 269, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 280, -1, 282, 283, 284, -1, 286, -1, -1, - -1, -1, 291, 292, 293, 294, 295, 296, -1, 298, - -1, 300, 301, 302, 303, 304, 259, -1, -1, -1, - 263, 264, -1, -1, 40, 268, 269, 43, 44, 45, - -1, -1, -1, -1, -1, -1, -1, 280, -1, 282, - 283, 284, -1, 286, 60, -1, 62, -1, 291, 292, - 293, 294, 295, 296, -1, 298, -1, 300, 301, 302, - 303, 304, 259, -1, -1, -1, 263, 264, -1, -1, - 40, 268, 269, 43, 44, 45, -1, -1, -1, -1, - -1, -1, -1, 280, -1, 282, 283, 284, -1, 286, - 60, -1, 62, -1, 291, 292, 293, 294, 295, 296, - -1, 298, -1, 300, 301, 302, 303, 304, -1, 259, - -1, -1, -1, 263, 264, -1, -1, 40, 268, 269, - 43, 44, 45, -1, -1, -1, -1, -1, -1, -1, - 280, -1, 282, 283, 284, -1, 286, 60, -1, 62, - -1, 291, 292, 293, 294, 295, 296, -1, 298, -1, - 300, 301, 302, 303, 304, -1, -1, -1, -1, -1, - -1, -1, -1, 259, -1, -1, -1, 263, 264, -1, + -1, -1, 260, -1, 63, 263, 264, -1, 266, 267, + 268, 269, 270, -1, 272, 273, -1, 275, 276, 277, + 278, 279, 280, 281, 282, 283, 284, -1, 286, 287, + -1, -1, -1, 291, 292, 293, 294, -1, -1, -1, + 298, -1, -1, 301, 302, 303, 304, 40, -1, -1, + 43, -1, 45, -1, -1, 263, 264, -1, -1, -1, + 268, 269, -1, -1, -1, -1, 59, -1, -1, -1, + -1, -1, 280, -1, 282, 283, 284, -1, 286, -1, + -1, -1, -1, 291, 292, 293, 294, 295, 296, -1, + 298, -1, -1, 301, 302, 303, 304, 263, 264, -1, -1, 40, 268, 269, 43, -1, 45, -1, -1, -1, - -1, -1, -1, -1, 280, -1, 282, 283, 284, 58, - 286, 60, -1, 62, -1, 291, 292, 293, 294, 295, - 296, -1, 298, -1, 300, 301, 302, 303, 304, -1, - -1, -1, -1, -1, -1, -1, -1, 40, 41, -1, - 43, -1, 45, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 60, -1, 62, - -1, -1, -1, 259, -1, -1, -1, 263, 264, -1, - -1, -1, 268, 269, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 280, -1, 282, 283, 284, -1, - 286, -1, -1, -1, -1, 291, 292, 293, 294, 295, - 296, -1, 298, -1, 300, 301, 302, 303, 304, 259, - -1, -1, -1, 263, 264, -1, -1, -1, 268, 269, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 280, -1, 282, 283, 284, -1, 286, -1, -1, -1, - -1, 291, 292, 293, 294, 295, 296, -1, 298, -1, - 300, 301, 302, 303, 304, -1, 259, -1, -1, -1, + 286, -1, -1, -1, -1, 291, 292, 293, 294, -1, + -1, -1, 298, -1, -1, 301, 302, 303, 304, -1, + -1, 263, 264, -1, -1, 40, 268, 269, 43, 44, + 45, -1, -1, -1, -1, -1, -1, -1, 280, -1, + 282, 283, 284, -1, 286, -1, -1, -1, 63, 291, + 292, 293, 294, -1, -1, -1, 298, -1, -1, 301, + 302, 303, 304, -1, -1, -1, -1, -1, 40, -1, + -1, 43, 44, 45, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 263, 264, -1, -1, -1, 268, + 269, 63, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 280, -1, 282, 283, 284, -1, 286, -1, -1, + -1, -1, 291, 292, 293, 294, -1, -1, -1, 298, + -1, -1, 301, 302, 303, 304, 40, -1, -1, 43, + 44, 45, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 259, -1, -1, 63, 263, 264, -1, -1, -1, 268, 269, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 280, -1, 282, - 283, 284, -1, 286, -1, -1, -1, -1, 291, 292, - 293, 294, 295, 296, -1, 298, -1, 300, 301, 302, - 303, 304, 40, 41, -1, 43, -1, 45, -1, -1, + 283, 284, 40, 286, -1, 43, 44, 45, 291, 292, + 293, 294, -1, -1, -1, 298, -1, 300, 301, 302, + 303, 304, -1, -1, -1, 63, -1, -1, -1, -1, 259, -1, -1, -1, 263, 264, -1, -1, -1, 268, - 269, -1, 60, -1, 62, -1, -1, -1, -1, -1, + 269, -1, -1, -1, 40, -1, -1, 43, 44, 45, -1, 280, -1, 282, 283, 284, -1, 286, -1, -1, - -1, -1, 291, 292, 293, 294, 295, 296, -1, 298, - -1, 300, 301, 302, 303, 304, 259, -1, -1, -1, - 263, 264, -1, -1, -1, 268, 269, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 280, -1, 282, + -1, -1, 291, 292, 293, 294, -1, 63, -1, 298, + -1, 300, 301, 302, 303, 304, -1, -1, 263, 264, + -1, -1, -1, 268, 269, -1, -1, 40, -1, -1, + 43, 44, 45, -1, -1, 280, -1, 282, 283, 284, + -1, 286, -1, -1, -1, -1, 291, 292, 293, 294, + 63, -1, -1, 298, -1, -1, 301, 302, 303, 304, + -1, 263, 264, -1, -1, -1, 268, 269, -1, -1, + 40, -1, -1, 43, 44, 45, -1, -1, 280, -1, + 282, 283, 284, -1, 286, -1, -1, -1, -1, 291, + 292, 293, 294, 63, -1, -1, 298, -1, -1, 301, + 302, 303, 304, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 40, -1, -1, 43, -1, 45, -1, 263, + 264, -1, -1, -1, 268, 269, -1, -1, -1, -1, + 58, -1, -1, -1, -1, 63, 280, -1, 282, 283, + 284, -1, 286, -1, -1, -1, -1, 291, 292, 293, + 294, -1, -1, -1, 298, -1, -1, 301, 302, 303, + 304, -1, -1, -1, -1, 263, 264, -1, -1, 40, + 268, 269, 43, -1, 45, -1, -1, -1, -1, -1, + -1, -1, 280, -1, 282, 283, 284, 58, 286, -1, + -1, -1, 63, 291, 292, 293, 294, -1, -1, -1, + 298, -1, -1, 301, 302, 303, 304, 263, 264, -1, + -1, -1, 268, 269, 40, -1, -1, 43, -1, 45, + -1, -1, -1, -1, 280, -1, 282, 283, 284, -1, + 286, -1, -1, -1, -1, 291, 292, 293, 294, -1, + -1, -1, 298, -1, -1, 301, 302, 303, 304, -1, + 263, 264, -1, -1, -1, 268, 269, -1, -1, 40, + 41, -1, 43, -1, 45, -1, -1, 280, -1, 282, 283, 284, -1, 286, -1, -1, -1, -1, 291, 292, - 293, 294, 295, 296, -1, 298, -1, 300, 301, 302, - 303, 304, 40, 41, -1, 43, -1, 45, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 60, -1, 62, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 40, 41, - -1, 43, -1, 45, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 60, -1, - 62, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 40, 41, -1, 43, -1, 45, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 60, -1, 62, -1, -1, -1, - -1, 259, -1, -1, -1, 263, 264, -1, -1, -1, - 268, 269, -1, -1, -1, -1, -1, -1, -1, -1, + 293, 294, 63, -1, -1, 298, -1, -1, 301, 302, + 303, 304, -1, 263, 264, -1, -1, -1, 268, 269, + -1, -1, 40, 41, -1, 43, -1, 45, -1, -1, + 280, -1, 282, 283, 284, -1, 286, -1, -1, -1, + -1, 291, 292, 293, 294, 63, -1, -1, 298, -1, + -1, 301, 302, 303, 304, 263, 264, -1, -1, -1, + 268, 269, -1, -1, 40, 41, -1, 43, -1, 45, -1, -1, 280, -1, 282, 283, 284, -1, 286, -1, - -1, -1, -1, 291, 292, 293, 294, 295, 296, -1, - 298, -1, 300, 301, 302, 303, 304, 40, 41, -1, - 43, -1, 45, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 60, -1, 62, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 291, 292, 293, 294, 63, -1, -1, + 298, -1, -1, 301, 302, 303, 304, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 40, 41, -1, 43, -1, 45, -1, - -1, 259, -1, -1, -1, 263, 264, -1, -1, -1, - 268, 269, -1, 60, -1, 62, -1, -1, -1, -1, + -1, -1, 263, 264, -1, -1, -1, 268, 269, -1, + -1, 40, 41, -1, 43, -1, 45, -1, -1, 280, + -1, 282, 283, 284, -1, 286, -1, -1, -1, -1, + 291, 292, 293, 294, 63, -1, -1, 298, -1, -1, + 301, 302, 303, 304, -1, 261, 262, 263, 264, -1, + -1, -1, 268, 269, -1, -1, 40, 41, -1, 43, + -1, 45, -1, -1, 280, -1, 282, 283, 284, -1, + 286, -1, -1, -1, -1, 291, 292, 293, 294, 63, + -1, -1, 298, -1, -1, 301, 302, 303, 304, -1, + -1, -1, 263, 264, -1, -1, -1, 268, 269, -1, + -1, 40, 41, -1, 43, -1, 45, -1, -1, 280, + -1, 282, 283, 284, -1, 286, -1, -1, -1, -1, + 291, 292, 293, 294, 63, -1, -1, 298, -1, -1, + 301, 302, 303, 304, -1, 263, 264, -1, -1, -1, + 268, 269, -1, -1, 40, 41, -1, 43, -1, 45, -1, -1, 280, -1, 282, 283, 284, -1, 286, -1, - -1, -1, -1, 291, 292, 293, 294, 295, 296, -1, - 298, -1, 300, 301, 302, 303, 304, 259, -1, -1, - -1, 263, 264, -1, -1, -1, 268, 269, 40, -1, - -1, 43, -1, 45, -1, -1, -1, -1, 280, -1, - 282, 283, 284, -1, 286, -1, -1, -1, -1, 291, - 292, 293, 294, 295, 296, -1, 298, -1, 300, 301, - 302, 303, 304, 259, -1, -1, -1, 263, 264, -1, + -1, -1, -1, 291, 292, 293, 294, 63, -1, -1, + 298, -1, -1, 301, 302, 303, 304, 263, 264, -1, + -1, -1, 268, 269, -1, -1, 40, 41, -1, 43, + -1, 45, -1, -1, 280, -1, 282, 283, 284, -1, + 286, -1, -1, -1, -1, 291, 292, 293, 294, 63, + -1, -1, 298, -1, -1, 301, 302, 303, 304, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 263, 264, -1, -1, -1, 268, + 269, -1, -1, 40, 41, -1, 43, -1, 45, -1, + -1, 280, -1, 282, 283, 284, -1, 286, -1, -1, + -1, -1, 291, 292, 293, 294, 63, -1, -1, 298, + -1, -1, 301, 302, 303, 304, -1, -1, -1, 263, + 264, -1, -1, -1, 268, 269, -1, -1, -1, 40, + -1, -1, 43, -1, 45, -1, 280, -1, 282, 283, + 284, -1, 286, -1, -1, -1, -1, 291, 292, 293, + 294, -1, -1, -1, 298, -1, -1, 301, 302, 303, + 304, -1, -1, -1, 263, 264, -1, -1, -1, 268, + 269, -1, -1, -1, -1, 40, -1, -1, 43, -1, + 45, 280, -1, 282, 283, 284, -1, 286, -1, -1, + -1, -1, 291, 292, 293, 294, -1, -1, -1, 298, + -1, -1, 301, 302, 303, 304, -1, 263, 264, -1, -1, -1, 268, 269, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 280, -1, 282, 283, 284, -1, - 286, -1, -1, -1, -1, 291, 292, 293, 294, 295, - 296, -1, 298, -1, 300, 301, 302, 303, 304, 40, - 41, 123, 43, -1, 45, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 60, - -1, 62, -1, -1, -1, -1, 259, -1, -1, -1, - 263, 264, -1, -1, -1, 268, 269, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 280, -1, 282, - 283, 284, 40, 286, -1, 43, -1, 45, 291, 292, - 293, 294, 295, 296, -1, 298, -1, 300, 301, 302, - 303, 304, 259, -1, -1, -1, 263, 264, -1, -1, - -1, 268, 269, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 280, -1, 282, 283, 284, -1, 286, - -1, -1, -1, -1, 291, 292, 293, 294, 295, 296, - -1, 298, -1, 300, 301, 302, 303, 304, 40, 41, - -1, 43, -1, 45, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 257, 258, 259, 60, -1, - 62, 263, 264, -1, -1, -1, 268, 269, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 280, -1, - 282, 283, 284, 285, 286, -1, -1, -1, -1, 291, - 292, 293, 294, -1, -1, -1, 298, -1, 300, 301, - 302, 303, 304, 40, -1, -1, 43, -1, 45, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 60, -1, 62, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 259, -1, - -1, -1, 263, 264, -1, -1, -1, 268, 269, 40, - -1, -1, 43, -1, 45, -1, -1, -1, -1, 280, - -1, 282, 283, 284, -1, 286, -1, -1, 59, -1, - 291, 292, 293, 294, 295, 296, -1, 298, -1, 300, - 301, 302, 303, 304, -1, -1, -1, -1, -1, -1, - -1, 259, -1, -1, -1, 263, 264, -1, -1, 40, - 268, 269, 43, -1, 45, -1, -1, -1, -1, -1, - -1, -1, 280, -1, 282, 283, 284, -1, 286, -1, - -1, -1, -1, 291, 292, 293, 294, -1, -1, -1, - 298, -1, 300, 301, 302, 303, 304, -1, -1, -1, - -1, -1, -1, -1, -1, 40, -1, -1, 43, -1, - 45, -1, -1, -1, -1, -1, -1, 259, -1, -1, - -1, 263, 264, -1, -1, -1, 268, 269, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 280, -1, - 282, 283, 284, -1, 286, -1, -1, -1, -1, 291, - 292, 293, 294, 295, 296, -1, 298, -1, 300, 301, - 302, 303, 304, 40, -1, -1, 43, -1, 45, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 259, -1, -1, -1, 263, 264, -1, -1, + -1, -1, -1, -1, 280, -1, 282, 283, 284, 40, + 286, -1, 43, -1, 45, 291, 292, 293, 294, -1, + -1, -1, 298, -1, -1, 301, 302, 303, 304, 263, + 264, -1, -1, -1, 268, 269, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 280, -1, 282, 283, + 284, -1, 286, -1, -1, -1, -1, 291, 292, 293, + 294, -1, -1, -1, 298, -1, -1, 301, 302, 303, + 304, 40, -1, -1, 43, -1, 45, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 263, 264, -1, -1, -1, 268, 269, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 280, -1, 282, 283, 284, -1, 286, - -1, -1, -1, -1, 291, 292, 293, 294, 295, 296, - -1, 298, -1, 300, 301, 302, 303, 304, 259, -1, - -1, -1, 263, 264, -1, -1, -1, 268, 269, -1, + -1, -1, -1, -1, 291, 292, 293, 294, -1, -1, + -1, 298, -1, -1, 301, 302, 303, 304, 259, -1, + -1, 40, 263, 264, 43, -1, 45, 268, 269, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 280, - -1, 282, 283, 284, -1, 286, -1, -1, -1, -1, - 291, 292, 293, 294, -1, -1, -1, 298, -1, 300, - 301, 302, 303, 304, -1, -1, -1, -1, 259, -1, + -1, 282, 283, 284, 63, 286, -1, -1, -1, -1, + 291, 292, 293, 294, -1, -1, -1, 298, -1, -1, + 301, 302, 303, 304, 259, -1, -1, 40, 263, 264, + 43, -1, 45, 268, 269, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 280, -1, 282, 283, 284, + -1, 286, -1, -1, -1, -1, 291, 292, 293, 294, + -1, -1, -1, 298, -1, -1, 301, 302, 303, 304, + 40, -1, -1, 43, -1, 45, -1, -1, 259, -1, -1, -1, 263, 264, -1, -1, -1, 268, 269, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 280, -1, 282, 283, 284, -1, 286, -1, -1, -1, -1, - 291, 292, 293, 294, -1, -1, -1, 298, -1, 300, - 301, 302, 303, 304, 259, -1, -1, -1, 263, 264, - -1, -1, -1, 268, 269, -1, -1, 47, 48, -1, - -1, -1, -1, -1, -1, 280, -1, 282, 283, 284, - -1, 286, -1, -1, -1, -1, 291, 292, 293, 294, - -1, -1, -1, 298, -1, 300, 301, 302, 303, 304, - 80, -1, 82, 83, -1, -1, -1, -1, -1, -1, - -1, -1, 259, -1, -1, -1, 263, 264, -1, -1, - -1, 268, 269, -1, -1, -1, -1, -1, 108, 109, - -1, -1, -1, 280, -1, 282, 283, 284, -1, 286, - -1, -1, -1, -1, 291, 292, 293, 294, -1, -1, - -1, 298, -1, 300, 301, 302, 303, 304, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 27, - 28, -1, -1, -1, -1, 33, -1, -1, -1, -1, - -1, -1, -1, 41, -1, -1, -1, -1, -1, -1, - 170, -1, -1, -1, -1, -1, 54, -1, -1, -1, - -1, 181, -1, 183, -1, 185, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 206, -1, -1, -1, - -1, -1, -1, 91, 92, 93, 94, 95, 96, -1, - -1, 221, 222, 223, 224, 225, 104, -1, 106, -1, - -1, -1, 110, 111, -1, -1, 114, -1, 116, 117, - -1, -1, -1, 121, 122, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 132, -1, -1, -1, -1, 137, - 138, 139, 140, -1, -1, -1, -1, -1, -1, 269, - -1, -1, -1, 273, 274, 275, -1, -1, -1, 279, - 158, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 304, 305, -1, -1, 186, -1, - 310, -1, -1, -1, -1, -1, -1, -1, -1, 197, - 198, -1, 200, 201, 202, 203, -1, 205, -1, 207, - 208, -1, -1, -1, -1, -1, -1, 215, 216, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 227, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 252, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 264, 265, 266, 267, - 268, -1, 270, 271, 272, + 291, 292, 293, 294, -1, -1, -1, 298, -1, -1, + 301, 302, 303, 304, 40, -1, -1, 43, -1, 45, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 259, -1, -1, -1, 263, 264, -1, -1, -1, 268, + 269, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 280, -1, 282, 283, 284, -1, 286, -1, -1, + -1, -1, 291, 292, 293, 294, -1, -1, -1, 298, + -1, -1, 301, 302, 303, 304, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 263, 264, -1, -1, -1, 268, + 269, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 280, -1, 282, 283, 284, -1, 286, -1, -1, + -1, -1, 291, 292, 293, 294, -1, -1, -1, 298, + -1, -1, 301, 302, 303, 304, 259, -1, -1, -1, + 263, 264, -1, -1, -1, 268, 269, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 280, -1, 282, + 283, 284, -1, 286, -1, -1, -1, -1, 291, 292, + 293, 294, -1, -1, -1, 298, -1, -1, 301, 302, + 303, 304, -1, 263, 264, -1, -1, -1, 268, 269, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 280, -1, 282, 283, 284, -1, 286, -1, -1, -1, + -1, 291, 292, 293, 294, 16, -1, -1, 298, -1, + -1, 301, 302, 303, 304, -1, 27, 28, -1, 30, + 31, -1, 33, -1, -1, -1, -1, 263, 264, -1, + 41, -1, 268, 269, -1, -1, -1, -1, -1, -1, + -1, -1, 53, -1, 280, -1, 282, 283, 284, -1, + 286, -1, -1, -1, -1, 291, 292, 293, 294, -1, + -1, -1, 298, -1, -1, 301, 302, 303, 304, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 93, 94, 95, 96, 97, 98, -1, -1, + -1, -1, -1, -1, -1, 106, -1, -1, 109, -1, + -1, -1, 113, 114, -1, -1, 117, -1, 119, 120, + -1, -1, -1, 124, 125, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 135, -1, -1, -1, 139, -1, + 141, 142, 143, 144, -1, -1, -1, -1, -1, -1, + -1, 152, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 162, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 190, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 202, 203, -1, 205, 206, 207, 208, -1, 210, + -1, 212, 213, -1, -1, 27, 28, -1, -1, 220, + 221, 33, -1, -1, -1, -1, -1, -1, -1, 41, + -1, 232, 233, -1, -1, -1, -1, -1, -1, -1, + -1, 53, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 258, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 270, + 271, 272, 273, 274, -1, 276, 277, 278, -1, -1, + -1, 93, 94, 95, 96, 97, 98, -1, -1, -1, + -1, -1, -1, -1, 106, -1, -1, 109, -1, -1, + -1, 113, 114, -1, -1, 117, -1, 119, 120, -1, + -1, -1, 124, 125, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 135, -1, -1, -1, 139, -1, 141, + 142, 143, 144, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 162, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 190, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 202, 203, -1, 205, 206, 207, 208, -1, 210, -1, + 212, 213, -1, -1, -1, -1, -1, -1, 220, 221, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 232, 233, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 258, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 270, 271, + 272, 273, 274, -1, 276, 277, 278, }; #define YYFINAL 1 #ifndef YYDEBUG @@ -1806,6 +1866,7 @@ char *yyrule[] = { "match : '(' match ')'", "expr : term", "expr : expr term", +"expr : expr '?' expr ':' expr", "expr : variable ASGNOP cond", "term : variable", "term : NUMBER", @@ -1817,7 +1878,6 @@ char *yyrule[] = { "term : term '%' term", "term : term '^' term", "term : term IN VAR", -"term : cond '?' expr ':' expr", "term : variable INCR", "term : variable DECR", "term : INCR variable", @@ -1940,8 +2000,11 @@ short yyss[YYSTACKSIZE]; YYSTYPE yyvs[YYSTACKSIZE]; #define yystacksize YYSTACKSIZE #line 396 "a2p.y" + +int yyparse _((void)); + #include "a2py.c" -#line 1945 "y.tab.c" +#line 2008 "y.tab.c" #define YYABORT goto yyabort #define YYACCEPT goto yyaccept #define YYERROR goto yyerrlab @@ -2196,6 +2259,10 @@ case 34: break; case 35: #line 137 "a2p.y" +{ yyval = oper3(OCOND,yyvsp[-4],yyvsp[-2],yyvsp[0]); } +break; +case 36: +#line 139 "a2p.y" { yyval = oper3(OASSIGN,yyvsp[-1],yyvsp[-2],yyvsp[0]); if ((ops[yyvsp[-2]].ival & 255) == OFLD) lval_field = TRUE; @@ -2203,49 +2270,45 @@ case 35: lval_field = TRUE; } break; -case 36: -#line 146 "a2p.y" -{ yyval = yyvsp[0]; } -break; case 37: #line 148 "a2p.y" -{ yyval = oper1(ONUM,yyvsp[0]); } +{ yyval = yyvsp[0]; } break; case 38: #line 150 "a2p.y" -{ yyval = oper1(OSTR,yyvsp[0]); } +{ yyval = oper1(ONUM,yyvsp[0]); } break; case 39: #line 152 "a2p.y" -{ yyval = oper2(OADD,yyvsp[-2],yyvsp[0]); } +{ yyval = oper1(OSTR,yyvsp[0]); } break; case 40: #line 154 "a2p.y" -{ yyval = oper2(OSUBTRACT,yyvsp[-2],yyvsp[0]); } +{ yyval = oper2(OADD,yyvsp[-2],yyvsp[0]); } break; case 41: #line 156 "a2p.y" -{ yyval = oper2(OMULT,yyvsp[-2],yyvsp[0]); } +{ yyval = oper2(OSUBTRACT,yyvsp[-2],yyvsp[0]); } break; case 42: #line 158 "a2p.y" -{ yyval = oper2(ODIV,yyvsp[-2],yyvsp[0]); } +{ yyval = oper2(OMULT,yyvsp[-2],yyvsp[0]); } break; case 43: #line 160 "a2p.y" -{ yyval = oper2(OMOD,yyvsp[-2],yyvsp[0]); } +{ yyval = oper2(ODIV,yyvsp[-2],yyvsp[0]); } break; case 44: #line 162 "a2p.y" -{ yyval = oper2(OPOW,yyvsp[-2],yyvsp[0]); } +{ yyval = oper2(OMOD,yyvsp[-2],yyvsp[0]); } break; case 45: #line 164 "a2p.y" -{ yyval = oper2(ODEFINED,aryrefarg(yyvsp[0]),yyvsp[-2]); } +{ yyval = oper2(OPOW,yyvsp[-2],yyvsp[0]); } break; case 46: #line 166 "a2p.y" -{ yyval = oper3(OCOND,yyvsp[-4],yyvsp[-2],yyvsp[0]); } +{ yyval = oper2(ODEFINED,aryrefarg(yyvsp[0]),yyvsp[-2]); } break; case 47: #line 168 "a2p.y" @@ -2607,7 +2670,7 @@ case 137: #line 392 "a2p.y" { yyval = oper3(OBLOCK,oper2(OJUNK,yyvsp[-3],yyvsp[-2]),Nullop,yyvsp[0]); } break; -#line 2611 "y.tab.c" +#line 2674 "y.tab.c" } yyssp -= yym; yystate = *yyssp; @@ -1,6 +1,6 @@ /* $RCSfile: a2p.h,v $$Revision: 4.1 $$Date: 92/08/07 18:29:09 $ * - * Copyright (c) 1991, Larry Wall + * Copyright (c) 1991-1997, Larry Wall * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. @@ -8,9 +8,12 @@ * $Log: a2p.h,v $ */ -#include "../embed.h" #define VOIDUSED 1 -#include "../config.h" +#ifdef VMS +# include "config.h" +#else +# include "../config.h" +#endif #if defined(__STDC__) || defined(vax11c) || defined(_AIX) || defined(__stdc__) || defined(__cplusplus) # define STANDARD_C 1 @@ -31,15 +34,29 @@ # include <sys/types.h> #endif +#ifdef USE_NEXT_CTYPE -#ifdef USE_NEXT_CTYPE +#if NX_CURRENT_COMPILER_RELEASE >= 400 +#include <objc/NXCType.h> +#else /* NX_CURRENT_COMPILER_RELEASE < 400 */ #include <appkit/NXCType.h> -#else +#endif /* NX_CURRENT_COMPILER_RELEASE >= 400 */ + +#else /* !USE_NEXT_CTYPE */ #include <ctype.h> -#endif +#endif /* USE_NEXT_CTYPE */ #define MEM_SIZE Size_t +#ifdef STANDARD_C +# include <stdlib.h> +#else + Malloc_t malloc _((MEM_SIZE nbytes)); + Malloc_t calloc _((MEM_SIZE elements, MEM_SIZE size)); + Malloc_t realloc _((Malloc_t where, MEM_SIZE nbytes)); + Free_t free _((Malloc_t where)); +#endif + #if defined(I_STRING) || defined(__cplusplus) # include <string.h> #else @@ -87,7 +104,8 @@ # endif #else # if defined(VMS) -# include "../vmsish.h" +# define NO_PERL_TYPEDEFS +# include "vmsish.h" # endif #endif @@ -99,7 +117,15 @@ char *strchr(), *strrchr(); char *strcpy(), *strcat(); #endif /* ! STANDARD_C */ -#include "handy.h" +#ifdef VMS +# include "handy.h" +#else +# include "../handy.h" +#endif + +#undef Nullfp +#define Nullfp Null(FILE*) + #define Nullop 0 #define OPROG 1 @@ -389,6 +415,7 @@ EXT bool nomemok INIT(FALSE); EXT char const_FS INIT(0); EXT char *namelist INIT(Nullch); EXT char fswitch INIT(0); +EXT bool old_awk INIT(0); EXT int saw_FS INIT(0); EXT int maxfld INIT(0); diff --git a/x2p/a2p.man b/x2p/a2p.man deleted file mode 100644 index f74e596ed2..0000000000 --- a/x2p/a2p.man +++ /dev/null @@ -1,183 +0,0 @@ -.rn '' }` -''' $RCSfile: a2p.man,v $$Revision: 4.1 $$Date: 92/08/07 18:29:10 $ -''' -''' $Log: a2p.man,v $ -.de Sh -.br -.ne 5 -.PP -\fB\\$1\fR -.PP -.. -.de Sp -.if t .sp .5v -.if n .sp -.. -.de Ip -.br -.ie \\n.$>=3 .ne \\$3 -.el .ne 3 -.IP "\\$1" \\$2 -.. -''' -''' Set up \*(-- to give an unbreakable dash; -''' string Tr holds user defined translation string. -''' Bell System Logo is used as a dummy character. -''' -.tr \(*W-|\(bv\*(Tr -.ie n \{\ -.ds -- \(*W- -.if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch -.if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch -.ds L" "" -.ds R" "" -.ds L' ' -.ds R' ' -'br\} -.el\{\ -.ds -- \(em\| -.tr \*(Tr -.ds L" `` -.ds R" '' -.ds L' ` -.ds R' ' -'br\} -.TH A2P 1 LOCAL -.SH NAME -a2p - Awk to Perl translator -.SH SYNOPSIS -.B a2p [options] filename -.SH DESCRIPTION -.I A2p -takes an awk script specified on the command line (or from standard input) -and produces a comparable -.I perl -script on the standard output. -.Sh "Options" -Options include: -.TP 5 -.B \-D<number> -sets debugging flags. -.TP 5 -.B \-F<character> -tells a2p that this awk script is always invoked with this -F switch. -.TP 5 -.B \-n<fieldlist> -specifies the names of the input fields if input does not have to be split into -an array. -If you were translating an awk script that processes the password file, you -might say: -.sp - a2p -7 -nlogin.password.uid.gid.gcos.shell.home -.sp -Any delimiter can be used to separate the field names. -.TP 5 -.B \-<number> -causes a2p to assume that input will always have that many fields. -.Sh "Considerations" -A2p cannot do as good a job translating as a human would, but it usually -does pretty well. -There are some areas where you may want to examine the perl script produced -and tweak it some. -Here are some of them, in no particular order. -.PP -There is an awk idiom of putting int() around a string expression to force -numeric interpretation, even though the argument is always integer anyway. -This is generally unneeded in perl, but a2p can't tell if the argument -is always going to be integer, so it leaves it in. -You may wish to remove it. -.PP -Perl differentiates numeric comparison from string comparison. -Awk has one operator for both that decides at run time which comparison -to do. -A2p does not try to do a complete job of awk emulation at this point. -Instead it guesses which one you want. -It's almost always right, but it can be spoofed. -All such guesses are marked with the comment \*(L"#???\*(R". -You should go through and check them. -You might want to run at least once with the \-w switch to perl, which -will warn you if you use == where you should have used eq. -.PP -Perl does not attempt to emulate the behavior of awk in which nonexistent -array elements spring into existence simply by being referenced. -If somehow you are relying on this mechanism to create null entries for -a subsequent for...in, they won't be there in perl. -.PP -If a2p makes a split line that assigns to a list of variables that looks -like (Fld1, Fld2, Fld3...) you may want -to rerun a2p using the \-n option mentioned above. -This will let you name the fields throughout the script. -If it splits to an array instead, the script is probably referring to the number -of fields somewhere. -.PP -The exit statement in awk doesn't necessarily exit; it goes to the END -block if there is one. -Awk scripts that do contortions within the END block to bypass the block under -such circumstances can be simplified by removing the conditional -in the END block and just exiting directly from the perl script. -.PP -Perl has two kinds of array, numerically-indexed and associative. -Awk arrays are usually translated to associative arrays, but if you happen -to know that the index is always going to be numeric you could change -the {...} to [...]. -Iteration over an associative array is done using the keys() function, but -iteration over a numeric array is NOT. -You might need to modify any loop that is iterating over the array in question. -.PP -Awk starts by assuming OFMT has the value %.6g. -Perl starts by assuming its equivalent, $#, to have the value %.20g. -You'll want to set $# explicitly if you use the default value of OFMT. -.PP -Near the top of the line loop will be the split operation that is implicit in -the awk script. -There are times when you can move this down past some conditionals that -test the entire record so that the split is not done as often. -.PP -For aesthetic reasons you may wish to change the array base $[ from 1 back -to perl's default of 0, but remember to change all array subscripts AND -all substr() and index() operations to match. -.PP -Cute comments that say "# Here is a workaround because awk is dumb" are passed -through unmodified. -.PP -Awk scripts are often embedded in a shell script that pipes stuff into and -out of awk. -Often the shell script wrapper can be incorporated into the perl script, since -perl can start up pipes into and out of itself, and can do other things that -awk can't do by itself. -.PP -Scripts that refer to the special variables RSTART and RLENGTH can often -be simplified by referring to the variables $`, $& and $', as long as they -are within the scope of the pattern match that sets them. -.PP -The produced perl script may have subroutines defined to deal with awk's -semantics regarding getline and print. -Since a2p usually picks correctness over efficiency. -it is almost always possible to rewrite such code to be more efficient by -discarding the semantic sugar. -.PP -For efficiency, you may wish to remove the keyword from any return statement -that is the last statement executed in a subroutine. -A2p catches the most common case, but doesn't analyze embedded blocks for -subtler cases. -.PP -ARGV[0] translates to $ARGV0, but ARGV[n] translates to $ARGV[$n]. -A loop that tries to iterate over ARGV[0] won't find it. -.SH ENVIRONMENT -A2p uses no environment variables. -.SH AUTHOR -Larry Wall <lwall@jpl-devvax.Jpl.Nasa.Gov> -.SH FILES -.SH SEE ALSO -perl The perl compiler/interpreter -.br -s2p sed to perl translator -.SH DIAGNOSTICS -.SH BUGS -It would be possible to emulate awk's behavior in selecting string versus -numeric operations at run time by inspection of the operands, but it would -be gross and inefficient. -Besides, a2p almost always guesses right. -.PP -Storage for the awk syntax tree is currently static, and can run out. -.rn }` '' diff --git a/x2p/a2p.pod b/x2p/a2p.pod new file mode 100644 index 0000000000..fa726fb101 --- /dev/null +++ b/x2p/a2p.pod @@ -0,0 +1,162 @@ +=head1 NAME + +a2p - Awk to Perl translator + +=head1 SYNOPSIS + +B<a2p [options] filename> + +=head1 DESCRIPTION + +I<A2p> takes an awk script specified on the command line (or from +standard input) and produces a comparable I<perl> script on the +standard output. + +=head2 Options + +Options include: + +=over 5 + +=item B<-DE<lt>numberE<gt>> + +sets debugging flags. + +=item B<-FE<lt>characterE<gt>> + +tells a2p that this awk script is always invoked with this B<-F> +switch. + +=item B<-nE<lt>fieldlistE<gt>> + +specifies the names of the input fields if input does not have to be +split into an array. If you were translating an awk script that +processes the password file, you might say: + + a2p -7 -nlogin.password.uid.gid.gcos.shell.home + +Any delimiter can be used to separate the field names. + +=item B<-E<lt>numberE<gt>> + +causes a2p to assume that input will always have that many fields. + +=item B<-o> + +tells a2p to use old awk behavior. For now, the only difference is +that old awk always has a line loop, even if there are no line +actions, whereas new awk does not. + +=back + +=head2 "Considerations" + +A2p cannot do as good a job translating as a human would, but it +usually does pretty well. There are some areas where you may want to +examine the perl script produced and tweak it some. Here are some of +them, in no particular order. + +There is an awk idiom of putting int() around a string expression to +force numeric interpretation, even though the argument is always +integer anyway. This is generally unneeded in perl, but a2p can't +tell if the argument is always going to be integer, so it leaves it +in. You may wish to remove it. + +Perl differentiates numeric comparison from string comparison. Awk +has one operator for both that decides at run time which comparison to +do. A2p does not try to do a complete job of awk emulation at this +point. Instead it guesses which one you want. It's almost always +right, but it can be spoofed. All such guesses are marked with the +comment "C<#???>". You should go through and check them. You might +want to run at least once with the B<-w> switch to perl, which will +warn you if you use == where you should have used eq. + +Perl does not attempt to emulate the behavior of awk in which +nonexistent array elements spring into existence simply by being +referenced. If somehow you are relying on this mechanism to create +null entries for a subsequent for...in, they won't be there in perl. + +If a2p makes a split line that assigns to a list of variables that +looks like (Fld1, Fld2, Fld3...) you may want to rerun a2p using the +B<-n> option mentioned above. This will let you name the fields +throughout the script. If it splits to an array instead, the script +is probably referring to the number of fields somewhere. + +The exit statement in awk doesn't necessarily exit; it goes to the END +block if there is one. Awk scripts that do contortions within the END +block to bypass the block under such circumstances can be simplified +by removing the conditional in the END block and just exiting directly +from the perl script. + +Perl has two kinds of array, numerically-indexed and associative. +Perl associative arrays are called "hashes". Awk arrays are usually +translated to hashes, but if you happen to know that the index is +always going to be numeric you could change the {...} to [...]. +Iteration over a hash is done using the keys() function, but iteration +over an array is NOT. You might need to modify any loop that iterates +over such an array. + +Awk starts by assuming OFMT has the value %.6g. Perl starts by +assuming its equivalent, $#, to have the value %.20g. You'll want to +set $# explicitly if you use the default value of OFMT. + +Near the top of the line loop will be the split operation that is +implicit in the awk script. There are times when you can move this +down past some conditionals that test the entire record so that the +split is not done as often. + +For aesthetic reasons you may wish to change the array base $[ from 1 +back to perl's default of 0, but remember to change all array +subscripts AND all substr() and index() operations to match. + +Cute comments that say "# Here is a workaround because awk is dumb" +are passed through unmodified. + +Awk scripts are often embedded in a shell script that pipes stuff into +and out of awk. Often the shell script wrapper can be incorporated +into the perl script, since perl can start up pipes into and out of +itself, and can do other things that awk can't do by itself. + +Scripts that refer to the special variables RSTART and RLENGTH can +often be simplified by referring to the variables $`, $& and $', as +long as they are within the scope of the pattern match that sets them. + +The produced perl script may have subroutines defined to deal with +awk's semantics regarding getline and print. Since a2p usually picks +correctness over efficiency. it is almost always possible to rewrite +such code to be more efficient by discarding the semantic sugar. + +For efficiency, you may wish to remove the keyword from any return +statement that is the last statement executed in a subroutine. A2p +catches the most common case, but doesn't analyze embedded blocks for +subtler cases. + +ARGV[0] translates to $ARGV0, but ARGV[n] translates to $ARGV[$n]. A +loop that tries to iterate over ARGV[0] won't find it. + +=head1 ENVIRONMENT + +A2p uses no environment variables. + +=head1 AUTHOR + +Larry Wall E<lt>F<larry@wall.org>E<gt> + +=head1 FILES + +=head1 SEE ALSO + + perl The perl compiler/interpreter + + s2p sed to perl translator + +=head1 DIAGNOSTICS + +=head1 BUGS + +It would be possible to emulate awk's behavior in selecting string +versus numeric operations at run time by inspection of the operands, +but it would be gross and inefficient. Besides, a2p almost always +guesses right. + +Storage for the awk syntax tree is currently static, and can run out. @@ -1,7 +1,7 @@ %{ /* $RCSfile: a2p.y,v $$Revision: 4.1 $$Date: 92/08/07 18:29:12 $ * - * Copyright (c) 1991, Larry Wall + * Copyright (c) 1991-1997, Larry Wall * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. @@ -133,6 +133,8 @@ expr : term { $$ = $1; } | expr term { $$ = oper2(OCONCAT,$1,$2); } + | expr '?' expr ':' expr + { $$ = oper3(OCOND,$1,$3,$5); } | variable ASGNOP cond { $$ = oper3(OASSIGN,$2,$1,$3); if ((ops[$1].ival & 255) == OFLD) @@ -162,8 +164,6 @@ term : variable { $$ = oper2(OPOW,$1,$3); } | term IN VAR { $$ = oper2(ODEFINED,aryrefarg($3),$1); } - | cond '?' expr ':' expr - { $$ = oper3(OCOND,$1,$3,$5); } | variable INCR { $$ = oper1(OPOSTINCR,$1); } | variable DECR @@ -393,4 +393,7 @@ compound ; %% + +int yyparse _((void)); + #include "a2py.c" diff --git a/x2p/a2py.c b/x2p/a2py.c index 454e2dc860..3a3cb5275d 100644 --- a/x2p/a2py.c +++ b/x2p/a2py.c @@ -1,6 +1,6 @@ /* $RCSfile: a2py.c,v $$Revision: 4.1 $$Date: 92/08/07 18:29:14 $ * - * Copyright (c) 1991, Larry Wall + * Copyright (c) 1991-1997, Larry Wall * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. @@ -27,6 +27,7 @@ int oper5(); STR *walk(); #ifdef OS2 +static void usage() { printf("\nThis is the AWK to PERL translator, version 5.0, patchlevel %d\n", PATCHLEVEL); @@ -41,6 +42,8 @@ usage() exit(1); } #endif + +int main(argc,argv,env) register int argc; register char **argv; @@ -77,6 +80,9 @@ register char **env; case 'n': namelist = savestr(argv[0]+2); break; + case 'o': + old_awk = TRUE; + break; case '-': argc--,argv++; goto switch_end; @@ -154,7 +160,9 @@ register char **env; tmpstr = walk(0,0,root,&i,P_MIN); str = str_make(STARTPERL); - str_cat(str, "\neval 'exec perl -S $0 \"$@\"'\n\ + str_cat(str, "\neval 'exec "); + str_cat(str, BIN); + str_cat(str, "/perl -S $0 ${1+\"$@\"}'\n\ if $running_under_some_shell;\n\ # this emulates #! processing on NIH machines.\n\ # (remove #! line above if indigestible)\n\n"); @@ -1289,10 +1297,10 @@ int prevargs; numargs = fixrargs(name,ops[arg+3].ival,numargs); } else { - char tmpbuf[128]; - + char *tmpbuf = safemalloc(strlen(name) + (sizeof(prevargs) * 3) + 5); sprintf(tmpbuf,"%s:%d",name,prevargs); str = hfetch(curarghash,tmpbuf); + safefree(tmpbuf); if (str && strEQ(str->str_ptr,"*")) { if (type == OVAR || type == OSTAR) { ops[arg].ival &= ~255; diff --git a/x2p/cflags.SH b/x2p/cflags.SH index 531ef65805..62bd11c9d9 100755 --- a/x2p/cflags.SH +++ b/x2p/cflags.SH @@ -14,13 +14,21 @@ esac : This forces SH files to create target in same directory as SH file. : This is so that make depend always knows where to find SH derivatives. case "$0" in -*/*) cd `expr X$0 : 'X\(.*\)/'` ;; +*/cflags.SH) cd `expr X$0 : 'X\(.*\)/'` ;; +cflags.SH) ;; +*) case `pwd` in + */x2p) ;; + *) if test -d x2p; then cd x2p + else echo "Can't figure out where to write output."; exit 1 + fi;; + esac;; esac echo "Extracting x2p/cflags (with variable substitutions)" : This section of the file will have variable substitutions done on it. : Move anything that needs config subs from !NO!SUBS! section to !GROK!THIS!. : Protect any dollar signs and backticks that you do not want interpreted : by putting a backslash in front. You may delete these comments. +rm -f cflags $spitshell >cflags <<!GROK!THIS! !GROK!THIS! @@ -74,7 +82,7 @@ for file do *) ;; esac - ccflags="`echo $ccflags | sed -e 's/-DEMBED//'`" + ccflags="`echo $ccflags | sed -e 's/-DMULTIPLICITY//'`" echo "$cc -c $ccflags $optimize $large $split" eval "$also "'"$cc -c $ccflags $optimize $large $split"' diff --git a/x2p/find2perl.PL b/x2p/find2perl.PL index 32f78fe23f..c23fc923a8 100644 --- a/x2p/find2perl.PL +++ b/x2p/find2perl.PL @@ -12,10 +12,9 @@ use File::Basename qw(&basename &dirname); # This forces PL files to create target in same directory as PL file. # This is so that make depend always knows where to find PL derivatives. -chdir(dirname($0)); -($file = basename($0)) =~ s/\.PL$//; -$file =~ s/\.pl$// - if ($^O eq 'VMS' or $^O eq 'os2'); # "case-forgiving" +chdir dirname($0); +$file = basename($0, '.PL'); +$file .= '.com' if $^O eq 'VMS'; open OUT,">$file" or die "Can't create $file: $!"; @@ -25,10 +24,11 @@ print "Extracting $file (with variable substitutions)\n"; # You can use $Config{...} to use Configure variables. print OUT <<"!GROK!THIS!"; -$Config{'startperl'} - eval 'exec perl -S \$0 "\$@"' - if 0; +$Config{startperl} + eval 'exec $Config{perlpath} -S \$0 \${1+"\$@"}' + if \$running_under_some_shell; \$startperl = "$Config{startperl}"; +\$perlpath = "$Config{perlpath}"; !GROK!THIS! # In the following, perl variables are not expanded during extraction. @@ -241,8 +241,7 @@ while (@ARGV) { print <<"END"; $startperl - -eval 'exec perl -S \$0 \${1+"\$@"}' + eval 'exec $perlpath -S \$0 \${1+"\$@"}' if \$running_under_some_shell; END diff --git a/x2p/handy.h b/x2p/handy.h deleted file mode 100644 index 0049a1108b..0000000000 --- a/x2p/handy.h +++ /dev/null @@ -1,172 +0,0 @@ -/* handy.h - * - * Copyright (c) 1991-1994, Larry Wall - * - * You may distribute under the terms of either the GNU General Public - * License or the Artistic License, as specified in the README file. - * - */ - -#if !defined(__STDC__) -#ifdef NULL -#undef NULL -#endif -#ifndef I286 -# define NULL 0 -#else -# define NULL 0L -#endif -#endif - -#define Null(type) ((type)NULL) -#define Nullch Null(char*) -#define Nullfp Null(FILE*) -#define Nullsv Null(SV*) - -#ifdef UTS -#define bool int -#else -#define bool char -#endif - -#ifdef TRUE -#undef TRUE -#endif -#ifdef FALSE -#undef FALSE -#endif -#define TRUE (1) -#define FALSE (0) - -typedef char I8; -typedef unsigned char U8; - -typedef short I16; -typedef unsigned short U16; - -#if BYTEORDER > 0x4321 - typedef int I32; - typedef unsigned int U32; -#else - typedef long I32; - typedef unsigned long U32; -#endif - -#define Ctl(ch) (ch & 037) - -#define strNE(s1,s2) (strcmp(s1,s2)) -#define strEQ(s1,s2) (!strcmp(s1,s2)) -#define strLT(s1,s2) (strcmp(s1,s2) < 0) -#define strLE(s1,s2) (strcmp(s1,s2) <= 0) -#define strGT(s1,s2) (strcmp(s1,s2) > 0) -#define strGE(s1,s2) (strcmp(s1,s2) >= 0) -#define strnNE(s1,s2,l) (strncmp(s1,s2,l)) -#define strnEQ(s1,s2,l) (!strncmp(s1,s2,l)) - -#ifdef HAS_SETLOCALE /* XXX Is there a better test for this? */ -# ifndef CTYPE256 -# define CTYPE256 -# endif -#endif - -#ifdef USE_NEXT_CTYPE -#define isALNUM(c) (NXIsAlpha((unsigned int)c) || NXIsDigit((unsigned int)c) || c == '_') -#define isIDFIRST(c) (NXIsAlpha((unsigned int)c) || c == '_') -#define isALPHA(c) NXIsAlpha((unsigned int)c) -#define isSPACE(c) NXIsSpace((unsigned int)c) -#define isDIGIT(c) NXIsDigit((unsigned int)c) -#define isUPPER(c) NXIsUpper((unsigned int)c) -#define isLOWER(c) NXIsLower((unsigned int)c) -#define toUPPER(c) NXToUpper((unsigned int)c) -#define toLOWER(c) NXToLower((unsigned int)c) -#else /* USE_NEXT_CTYPE */ -#if defined(CTYPE256) || (!defined(isascii) && !defined(HAS_ISASCII)) -#define isALNUM(c) (isalpha((unsigned char)(c)) || isdigit((unsigned char)(c)) || c == '_') -#define isIDFIRST(c) (isalpha((unsigned char)(c)) || (c) == '_') -#define isALPHA(c) isalpha((unsigned char)(c)) -#define isSPACE(c) isspace((unsigned char)(c)) -#define isDIGIT(c) isdigit((unsigned char)(c)) -#define isUPPER(c) isupper((unsigned char)(c)) -#define isLOWER(c) islower((unsigned char)(c)) -#define toUPPER(c) toupper((unsigned char)(c)) -#define toLOWER(c) tolower((unsigned char)(c)) -#else -#define isALNUM(c) (isascii(c) && (isalpha(c) || isdigit(c) || c == '_')) -#define isIDFIRST(c) (isascii(c) && (isalpha(c) || (c) == '_')) -#define isALPHA(c) (isascii(c) && isalpha(c)) -#define isSPACE(c) (isascii(c) && isspace(c)) -#define isDIGIT(c) (isascii(c) && isdigit(c)) -#define isUPPER(c) (isascii(c) && isupper(c)) -#define isLOWER(c) (isascii(c) && islower(c)) -#define toUPPER(c) toupper(c) -#define toLOWER(c) tolower(c) -#endif -#endif /* USE_NEXT_CTYPE */ - -/* Line numbers are unsigned, 16 bits. */ -typedef U16 line_t; -#ifdef lint -#define NOLINE ((line_t)0) -#else -#define NOLINE ((line_t) 65535) -#endif - -#ifndef lint -#ifndef LEAKTEST -#ifndef safemalloc -Malloc_t safemalloc _((MEM_SIZE)); -Malloc_t saferealloc _((char *, MEM_SIZE)); -void safefree _((char *)); -#endif -#ifndef MSDOS -#define New(x,v,n,t) (v = (t*)safemalloc((MEM_SIZE)((n) * sizeof(t)))) -#define Newc(x,v,n,t,c) (v = (c*)safemalloc((MEM_SIZE)((n) * sizeof(t)))) -#define Newz(x,v,n,t) (v = (t*)safemalloc((MEM_SIZE)((n) * sizeof(t)))), \ - memzero((char*)(v), (n) * sizeof(t)) -#define Renew(v,n,t) (v = (t*)saferealloc((char*)(v),(MEM_SIZE)((n)*sizeof(t)))) -#define Renewc(v,n,t,c) (v = (c*)saferealloc((char*)(v),(MEM_SIZE)((n)*sizeof(t)))) -#else -#define New(x,v,n,t) (v = (t*)safemalloc(((unsigned long)(n) * sizeof(t)))) -#define Newc(x,v,n,t,c) (v = (c*)safemalloc(((unsigned long)(n) * sizeof(t)))) -#define Newz(x,v,n,t) (v = (t*)safemalloc(((unsigned long)(n) * sizeof(t)))), \ - memzero((char*)(v), (n) * sizeof(t)) -#define Renew(v,n,t) (v = (t*)saferealloc((char*)(v),((unsigned long)(n)*sizeof(t)))) -#define Renewc(v,n,t,c) (v = (c*)saferealloc((char*)(v),((unsigned long)(n)*sizeof(t)))) -#endif /* MSDOS */ -#define Safefree(d) safefree((char*)d) -#define NEWSV(x,len) newSV(len) -#else /* LEAKTEST */ -char *safexmalloc(); -char *safexrealloc(); -void safexfree(); -#define New(x,v,n,t) (v = (t*)safexmalloc(x,(MEM_SIZE)((n) * sizeof(t)))) -#define Newc(x,v,n,t,c) (v = (c*)safexmalloc(x,(MEM_SIZE)((n) * sizeof(t)))) -#define Newz(x,v,n,t) (v = (t*)safexmalloc(x,(MEM_SIZE)((n) * sizeof(t)))), \ - memzero((char*)(v), (n) * sizeof(t)) -#define Renew(v,n,t) (v = (t*)safexrealloc((char*)(v),(MEM_SIZE)((n)*sizeof(t)))) -#define Renewc(v,n,t,c) (v = (c*)safexrealloc((char*)(v),(MEM_SIZE)((n)*sizeof(t)))) -#define Safefree(d) safexfree((char*)d) -#define NEWSV(x,len) newSV(x,len) -#define MAXXCOUNT 1200 -long xcount[MAXXCOUNT]; -long lastxcount[MAXXCOUNT]; -#endif /* LEAKTEST */ -#define Move(s,d,n,t) (void)memmove((char*)(d),(char*)(s), (n) * sizeof(t)) -#define Copy(s,d,n,t) (void)memcpy((char*)(d),(char*)(s), (n) * sizeof(t)) -#define Zero(d,n,t) (void)memzero((char*)(d), (n) * sizeof(t)) -#else /* lint */ -#define New(x,v,n,s) (v = Null(s *)) -#define Newc(x,v,n,s,c) (v = Null(s *)) -#define Newz(x,v,n,s) (v = Null(s *)) -#define Renew(v,n,s) (v = Null(s *)) -#define Move(s,d,n,t) -#define Copy(s,d,n,t) -#define Zero(d,n,t) -#define Safefree(d) d = d -#endif /* lint */ - -#ifdef USE_STRUCT_COPY -#define StructCopy(s,d,t) *((t*)(d)) = *((t*)(s)) -#else -#define StructCopy(s,d,t) Copy(s,d,1,t) -#endif diff --git a/x2p/hash.c b/x2p/hash.c index 58236f49e4..5859eab470 100644 --- a/x2p/hash.c +++ b/x2p/hash.c @@ -1,6 +1,6 @@ /* $RCSfile: hash.c,v $$Revision: 4.1 $$Date: 92/08/07 18:29:20 $ * - * Copyright (c) 1991, Larry Wall + * Copyright (c) 1991-1997, Larry Wall * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. diff --git a/x2p/hash.h b/x2p/hash.h index f61a29f4e6..9dc64a1dcd 100644 --- a/x2p/hash.h +++ b/x2p/hash.h @@ -1,6 +1,6 @@ /* $RCSfile: hash.h,v $$Revision: 4.1 $$Date: 92/08/07 18:29:21 $ * - * Copyright (c) 1991, Larry Wall + * Copyright (c) 1991-1997, Larry Wall * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. diff --git a/x2p/proto.h b/x2p/proto.h new file mode 100644 index 0000000000..85d749616a --- /dev/null +++ b/x2p/proto.h @@ -0,0 +1,8 @@ +/* proto.h + * + * Copyright (c) 1991-1997, Larry Wall + * + * You may distribute under the terms of either the GNU General Public + * License or the Artistic License, as specified in the README file. + * + */ diff --git a/x2p/s2p.PL b/x2p/s2p.PL index 0d8ea3722c..73f67872de 100644 --- a/x2p/s2p.PL +++ b/x2p/s2p.PL @@ -12,10 +12,9 @@ use File::Basename qw(&basename &dirname); # This forces PL files to create target in same directory as PL file. # This is so that make depend always knows where to find PL derivatives. -chdir(dirname($0)); -($file = basename($0)) =~ s/\.PL$//; -$file =~ s/\.pl$// - if ($^O eq 'VMS' or $^O eq 'os2'); # "case-forgiving" +chdir dirname($0); +$file = basename($0, '.PL'); +$file .= '.com' if $^O eq 'VMS'; open OUT,">$file" or die "Can't create $file: $!"; @@ -25,22 +24,92 @@ print "Extracting $file (with variable substitutions)\n"; # You can use $Config{...} to use Configure variables. print OUT <<"!GROK!THIS!"; -$Config{'startperl'} - eval 'exec perl -S \$0 "\$@"' - if 0; +$Config{startperl} + eval 'exec $Config{perlpath} -S \$0 \${1+"\$@"}' + if \$running_under_some_shell; \$startperl = "$Config{startperl}"; +\$perlpath = "$Config{perlpath}"; !GROK!THIS! # In the following, perl variables are not expanded during extraction. print OUT <<'!NO!SUBS!'; -# $RCSfile: s2p.PL,v $$Revision: 1.1.1.1 $$Date: 1997/01/11 12:49:38 $ -# -# $Log: s2p.PL,v $ -# Revision 1.1.1.1 1997/01/11 12:49:38 mbeattie -# 5.003 +# $RCSfile: s2p.SH,v $$Revision: 4.1 $$Date: 92/08/07 18:29:23 $ # +# $Log: s2p.SH,v $ + +=head1 NAME + +s2p - Sed to Perl translator + +=head1 SYNOPSIS + +B<s2p [options] filename> + +=head1 DESCRIPTION + +I<S2p> takes a sed script specified on the command line (or from +standard input) and produces a comparable I<perl> script on the +standard output. + +=head2 Options + +Options include: + +=over 5 + +=item B<-DE<lt>numberE<gt>> + +sets debugging flags. + +=item B<-n> + +specifies that this sed script was always invoked with a B<sed -n>. +Otherwise a switch parser is prepended to the front of the script. + +=item B<-p> + +specifies that this sed script was never invoked with a B<sed -n>. +Otherwise a switch parser is prepended to the front of the script. + +=back + +=head2 Considerations + +The perl script produced looks very sed-ish, and there may very well +be better ways to express what you want to do in perl. For instance, +s2p does not make any use of the split operator, but you might want +to. + +The perl script you end up with may be either faster or slower than +the original sed script. If you're only interested in speed you'll +just have to try it both ways. Of course, if you want to do something +sed doesn't do, you have no choice. It's often possible to speed up +the perl script by various methods, such as deleting all references to +$\ and chop. + +=head1 ENVIRONMENT + +S2p uses no environment variables. + +=head1 AUTHOR + +Larry Wall E<lt>F<larry@wall.org>E<gt> + +=head1 FILES + +=head1 SEE ALSO + + perl The perl compiler/interpreter + + a2p awk to perl translator + +=head1 DIAGNOSTICS + +=head1 BUGS + +=cut $indent = 4; $shiftwidth = 4; @@ -297,7 +366,7 @@ unless ($debug) { print &q(<<"EOT"); : $startperl -: eval 'exec perl -S \$0 \${1+"\$@"}' +: eval 'exec $perlpath -S \$0 \${1+"\$@"}' : if \$running_under_some_shell; : EOT diff --git a/x2p/s2p.man b/x2p/s2p.man deleted file mode 100644 index ae4611613f..0000000000 --- a/x2p/s2p.man +++ /dev/null @@ -1,92 +0,0 @@ -.rn '' }` -''' $RCSfile: s2p.man,v $$Revision: 4.1 $$Date: 92/08/07 18:29:24 $ -''' -''' $Log: s2p.man,v $ -.de Sh -.br -.ne 5 -.PP -\fB\\$1\fR -.PP -.. -.de Sp -.if t .sp .5v -.if n .sp -.. -.de Ip -.br -.ie \\n.$>=3 .ne \\$3 -.el .ne 3 -.IP "\\$1" \\$2 -.. -''' -''' Set up \*(-- to give an unbreakable dash; -''' string Tr holds user defined translation string. -''' Bell System Logo is used as a dummy character. -''' -.tr \(*W-|\(bv\*(Tr -.ie n \{\ -.ds -- \(*W- -.if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch -.if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch -.ds L" "" -.ds R" "" -.ds L' ' -.ds R' ' -'br\} -.el\{\ -.ds -- \(em\| -.tr \*(Tr -.ds L" `` -.ds R" '' -.ds L' ` -.ds R' ' -'br\} -.TH S2P 1 NEW -.SH NAME -s2p - Sed to Perl translator -.SH SYNOPSIS -.B s2p [options] filename -.SH DESCRIPTION -.I S2p -takes a sed script specified on the command line (or from standard input) -and produces a comparable -.I perl -script on the standard output. -.Sh "Options" -Options include: -.TP 5 -.B \-D<number> -sets debugging flags. -.TP 5 -.B \-n -specifies that this sed script was always invoked with a sed -n. -Otherwise a switch parser is prepended to the front of the script. -.TP 5 -.B \-p -specifies that this sed script was never invoked with a sed -n. -Otherwise a switch parser is prepended to the front of the script. -.Sh "Considerations" -The perl script produced looks very sed-ish, and there may very well be -better ways to express what you want to do in perl. -For instance, s2p does not make any use of the split operator, but you might -want to. -.PP -The perl script you end up with may be either faster or slower than the original -sed script. -If you're only interested in speed you'll just have to try it both ways. -Of course, if you want to do something sed doesn't do, you have no choice. -It's often possible to speed up the perl script by various methods, such -as deleting all references to $\e and chop. -.SH ENVIRONMENT -S2p uses no environment variables. -.SH AUTHOR -Larry Wall <lwall@jpl-devvax.Jpl.Nasa.Gov> -.SH FILES -.SH SEE ALSO -perl The perl compiler/interpreter -.br -a2p awk to perl translator -.SH DIAGNOSTICS -.SH BUGS -.rn }` '' @@ -1,6 +1,6 @@ /* $RCSfile: str.c,v $$Revision: 4.1 $$Date: 92/08/07 18:29:26 $ * - * Copyright (c) 1991, Larry Wall + * Copyright (c) 1991-1997, Larry Wall * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. @@ -41,7 +41,7 @@ register STR *str; str->str_pok = 1; #ifdef DEBUGGING if (debug & 32) - fprintf(stderr,"0x%lx ptr(%s)\n",str,str->str_ptr); + fprintf(stderr,"0x%lx ptr(%s)\n",(unsigned long)str,str->str_ptr); #endif return str->str_ptr; } @@ -59,7 +59,7 @@ register STR *str; str->str_nok = 1; #ifdef DEBUGGING if (debug & 32) - fprintf(stderr,"0x%lx num(%g)\n",str,str->str_nval); + fprintf(stderr,"0x%lx num(%g)\n",(unsigned long)str,str->str_nval); #endif return str->str_nval; } @@ -297,6 +297,16 @@ register FILE *fp; int i; int bpx; +#if defined(VMS) + /* An ungetc()d char is handled separately from the regular + * buffer, so we getc() it back out and stuff it in the buffer. + */ + i = getc(fp); + if (i == EOF) return Nullch; + *(--((*fp)->_ptr)) = (unsigned char) i; + (*fp)->_cnt++; +#endif + cnt = FILE_cnt(fp); /* get count into register */ str->str_nok = 0; /* invalidate number */ str->str_pok = 1; /* validate pointer */ @@ -317,7 +327,7 @@ register FILE *fp; FILE_cnt(fp) = cnt; /* deregisterize cnt and ptr */ FILE_ptr(fp) = ptr; - i = _filbuf(fp); /* get more characters */ + i = getc(fp); /* get more characters */ cnt = FILE_cnt(fp); ptr = FILE_ptr(fp); /* reregisterize cnt and ptr */ @@ -1,6 +1,6 @@ /* $RCSfile: str.h,v $$Revision: 4.1 $$Date: 92/08/07 18:29:27 $ * - * Copyright (c) 1991, Larry Wall + * Copyright (c) 1991-1997, Larry Wall * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. diff --git a/x2p/util.c b/x2p/util.c index 5c3554b7e3..e8b666f393 100644 --- a/x2p/util.c +++ b/x2p/util.c @@ -1,6 +1,6 @@ /* $RCSfile: util.c,v $$Revision: 4.1 $$Date: 92/08/07 18:29:29 $ * - * Copyright (c) 1991, Larry Wall + * Copyright (c) 1991-1997, Larry Wall * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. @@ -13,6 +13,9 @@ #include "INTERN.h" #include "util.h" +#ifdef I_STDARG +# include <stdarg.h> +#endif #define FLUSH static char nomem[] = "Out of memory!\n"; @@ -24,13 +27,14 @@ Malloc_t safemalloc(size) MEM_SIZE size; { - char *ptr; - Malloc_t malloc(); + Malloc_t ptr; - ptr = (char *) malloc(size?size:1); /* malloc(0) is NASTY on our system */ + /* malloc(0) is NASTY on some systems */ + ptr = malloc(size ? size : 1); #ifdef DEBUGGING if (debug & 128) - fprintf(stderr,"0x%x: (%05d) malloc %d bytes\n",ptr,an++,size); + fprintf(stderr,"0x%lx: (%05d) malloc %d bytes\n",(unsigned long)ptr, + an++,size); #endif if (ptr != Nullch) return ptr; @@ -45,18 +49,17 @@ MEM_SIZE size; Malloc_t saferealloc(where,size) -char *where; +Malloc_t where; MEM_SIZE size; { - char *ptr; - Malloc_t realloc(); + Malloc_t ptr; - ptr = (char *) - realloc(where,size?size:1); /* realloc(0) is NASTY on our system */ + /* realloc(0) is NASTY on some systems */ + ptr = realloc(where, size ? size : 1); #ifdef DEBUGGING if (debug & 128) { - fprintf(stderr,"0x%x: (%05d) rfree\n",where,an++); - fprintf(stderr,"0x%x: (%05d) realloc %d bytes\n",ptr,an++,size); + fprintf(stderr,"0x%lx: (%05d) rfree\n",(unsigned long)where,an++); + fprintf(stderr,"0x%lx: (%05d) realloc %d bytes\n",(unsigned long)ptr,an++,size); } #endif if (ptr != Nullch) @@ -70,13 +73,13 @@ MEM_SIZE size; /* safe version of free */ -void +Free_t safefree(where) -char *where; +Malloc_t where; { #ifdef DEBUGGING if (debug & 128) - fprintf(stderr,"0x%x: (%05d) free\n",where,an++); + fprintf(stderr,"0x%lx: (%05d) free\n",(unsigned long)where,an++); #endif free(where); } @@ -189,32 +192,65 @@ int newlen; } } -/*VARARGS1*/ void +#if defined(I_STDARG) && defined(HAS_VPRINTF) +croak(char *pat,...) +#else /* I_STDARG */ +/*VARARGS1*/ croak(pat,a1,a2,a3,a4) -char *pat; -int a1,a2,a3,a4; + char *pat; + int a1,a2,a3,a4; +#endif /* I_STDARG */ { +#if defined(I_STDARG) && defined(HAS_VPRINTF) + va_list args; + + va_start(args, pat); + vfprintf(stderr,pat,args); +#else fprintf(stderr,pat,a1,a2,a3,a4); +#endif exit(1); } -/*VARARGS1*/ void +#if defined(I_STDARG) && defined(HAS_VPRINTF) +fatal(char *pat,...) +#else /* I_STDARG */ +/*VARARGS1*/ fatal(pat,a1,a2,a3,a4) -char *pat; -int a1,a2,a3,a4; + char *pat; + int a1,a2,a3,a4; +#endif /* I_STDARG */ { +#if defined(I_STDARG) && defined(HAS_VPRINTF) + va_list args; + + va_start(args, pat); + vfprintf(stderr,pat,args); +#else fprintf(stderr,pat,a1,a2,a3,a4); +#endif exit(1); } -/*VARARGS1*/ void +#if defined(I_STDARG) && defined(HAS_VPRINTF) +warn(char *pat,...) +#else /* I_STDARG */ +/*VARARGS1*/ warn(pat,a1,a2,a3,a4) -char *pat; -int a1,a2,a3,a4; + char *pat; + int a1,a2,a3,a4; +#endif /* I_STDARG */ { +#if defined(I_STDARG) && defined(HAS_VPRINTF) + va_list args; + + va_start(args, pat); + vfprintf(stderr,pat,args); +#else fprintf(stderr,pat,a1,a2,a3,a4); +#endif } diff --git a/x2p/util.h b/x2p/util.h index 35f796121c..ff93e8ac7a 100644 --- a/x2p/util.h +++ b/x2p/util.h @@ -1,6 +1,6 @@ /* $RCSfile: util.h,v $$Revision: 4.1 $$Date: 92/08/07 18:29:30 $ * - * Copyright (c) 1991, Larry Wall + * Copyright (c) 1991-1997, Larry Wall * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. @@ -24,10 +24,22 @@ int makedir(); char * cpy2 _(( char *to, char *from, int delim )); char * cpytill _(( char *to, char *from, int delim )); -void croak _(( char *pat, int a1, int a2, int a3, int a4 )); void growstr _(( char **strptr, int *curlen, int newlen )); char * instr _(( char *big, char *little )); -void Myfatal (); char * safecpy _(( char *to, char *from, int len )); char * savestr _(( char *str )); +#if defined(I_STDARG) && defined(HAS_VPRINTF) +void croak _(( char *pat, ... )); +void fatal _(( char *pat, ... )); +void warn _(( char *pat, ... )); +#else /* defined(I_STDARG) && defined(HAS_VPRINTF) */ +void croak _(( char *pat, int a1, int a2, int a3, int a4 )); +void Myfatal (); void warn (); +#endif /* defined(I_STDARG) && defined(HAS_VPRINTF) */ +int prewalk _(( int numit, int level, int node, int *numericptr )); + +Malloc_t safemalloc _((MEM_SIZE nbytes)); +Malloc_t safecalloc _((MEM_SIZE elements, MEM_SIZE size)); +Malloc_t saferealloc _((Malloc_t where, MEM_SIZE nbytes)); +Free_t safefree _((Malloc_t where)); diff --git a/x2p/walk.c b/x2p/walk.c index 403d686e39..cb40073b22 100644 --- a/x2p/walk.c +++ b/x2p/walk.c @@ -1,6 +1,6 @@ /* $RCSfile: walk.c,v $$Revision: 4.1 $$Date: 92/08/07 18:29:31 $ * - * Copyright (c) 1991, Larry Wall + * Copyright (c) 1991-1997, Larry Wall * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. @@ -145,7 +145,7 @@ int minprec; /* minimum precedence without parens */ if (saw_FNR) str_cat(str,"continue {\n $FNRbase = $. if eof;\n}\n"); } - else + else if (old_awk) str_cat(str,"while (<>) { } # (no line actions)\n"); if (ops[node+4].ival) { realexit = TRUE; |