1#ifndef lint 2static char yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93 (groff)"; 3#endif 4#define YYBYACC 1 5#define YYMAJOR 1 6#define YYMINOR 9 7#define yyclearin (yychar=(-1)) 8#define yyerrok (yyerrflag=0) 9#define YYRECOVERING (yyerrflag!=0) 10#define YYPREFIX "yy" 11#line 21 "pic.y" 12#include "pic.h" 13#include "ptable.h" 14#include "object.h" 15 16extern int delim_flag; 17extern void copy_rest_thru(const char *, const char *); 18extern void copy_file_thru(const char *, const char *, const char *); 19extern void push_body(const char *); 20extern void do_for(char *var, double from, double to, 21 int by_is_multiplicative, double by, char *body); 22extern void do_lookahead(); 23 24/* Maximum number of characters produced by printf("%g") */ 25#define GDIGITS 14 26 27int yylex(); 28void yyerror(const char *); 29 30void reset(const char *nm); 31void reset_all(); 32 33place *lookup_label(const char *); 34void define_label(const char *label, const place *pl); 35 36direction current_direction; 37position current_position; 38 39implement_ptable(place) 40 41PTABLE(place) top_table; 42 43PTABLE(place) *current_table = &top_table; 44saved_state *current_saved_state = 0; 45 46object_list olist; 47 48const char *ordinal_postfix(int n); 49const char *object_type_name(object_type type); 50char *format_number(const char *form, double n); 51char *do_sprintf(const char *form, const double *v, int nv); 52 53#line 65 "pic.y" 54typedef union { 55 char *str; 56 int n; 57 double x; 58 struct { double x, y; } pair; 59 struct { double x; char *body; } if_data; 60 struct { char *str; const char *filename; int lineno; } lstr; 61 struct { double *v; int nv; int maxv; } dv; 62 struct { double val; int is_multiplicative; } by; 63 place pl; 64 object *obj; 65 corner crn; 66 path *pth; 67 object_spec *spec; 68 saved_state *pstate; 69 graphics_state state; 70 object_type obtype; 71} YYSTYPE; 72#line 73 "y.tab.c" 73#define LABEL 257 74#define VARIABLE 258 75#define NUMBER 259 76#define TEXT 260 77#define COMMAND_LINE 261 78#define DELIMITED 262 79#define ORDINAL 263 80#define TH 264 81#define LEFT_ARROW_HEAD 265 82#define RIGHT_ARROW_HEAD 266 83#define DOUBLE_ARROW_HEAD 267 84#define LAST 268 85#define UP 269 86#define DOWN 270 87#define LEFT 271 88#define RIGHT 272 89#define BOX 273 90#define CIRCLE 274 91#define ELLIPSE 275 92#define ARC 276 93#define LINE 277 94#define ARROW 278 95#define MOVE 279 96#define SPLINE 280 97#define HEIGHT 281 98#define RADIUS 282 99#define FIGNAME 283 100#define WIDTH 284 101#define DIAMETER 285 102#define FROM 286 103#define TO 287 104#define AT 288 105#define WITH 289 106#define BY 290 107#define THEN 291 108#define SOLID 292 109#define DOTTED 293 110#define DASHED 294 111#define CHOP 295 112#define SAME 296 113#define INVISIBLE 297 114#define LJUST 298 115#define RJUST 299 116#define ABOVE 300 117#define BELOW 301 118#define OF 302 119#define THE 303 120#define WAY 304 121#define BETWEEN 305 122#define AND 306 123#define HERE 307 124#define DOT_N 308 125#define DOT_E 309 126#define DOT_W 310 127#define DOT_S 311 128#define DOT_NE 312 129#define DOT_SE 313 130#define DOT_NW 314 131#define DOT_SW 315 132#define DOT_C 316 133#define DOT_START 317 134#define DOT_END 318 135#define DOT_X 319 136#define DOT_Y 320 137#define DOT_HT 321 138#define DOT_WID 322 139#define DOT_RAD 323 140#define SIN 324 141#define COS 325 142#define ATAN2 326 143#define LOG 327 144#define EXP 328 145#define SQRT 329 146#define K_MAX 330 147#define K_MIN 331 148#define INT 332 149#define RAND 333 150#define SRAND 334 151#define COPY 335 152#define THRU 336 153#define TOP 337 154#define BOTTOM 338 155#define UPPER 339 156#define LOWER 340 157#define SH 341 158#define PRINT 342 159#define CW 343 160#define CCW 344 161#define FOR 345 162#define DO 346 163#define IF 347 164#define ELSE 348 165#define ANDAND 349 166#define OROR 350 167#define NOTEQUAL 351 168#define EQUALEQUAL 352 169#define LESSEQUAL 353 170#define GREATEREQUAL 354 171#define LEFT_CORNER 355 172#define RIGHT_CORNER 356 173#define NORTH 357 174#define SOUTH 358 175#define EAST 359 176#define WEST 360 177#define CENTER 361 178#define END 362 179#define START 363 180#define RESET 364 181#define UNTIL 365 182#define PLOT 366 183#define THICKNESS 367 184#define FILL 368 185#define COLORED 369 186#define OUTLINED 370 187#define SHADED 371 188#define ALIGNED 372 189#define SPRINTF 373 190#define COMMAND 374 191#define DEFINE 375 192#define UNDEF 376 193#define YYERRCODE 256 194short yylhs[] = { -1, 195 0, 0, 16, 17, 17, 29, 29, 30, 30, 31, 196 31, 31, 31, 31, 31, 31, 31, 31, 31, 32, 197 31, 31, 33, 34, 31, 35, 36, 31, 37, 31, 198 31, 38, 31, 31, 31, 23, 23, 39, 39, 39, 199 27, 27, 28, 28, 28, 40, 7, 24, 24, 2, 200 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 201 4, 4, 4, 15, 15, 15, 15, 41, 43, 15, 202 15, 42, 42, 18, 18, 18, 18, 18, 18, 18, 203 18, 18, 18, 18, 44, 18, 18, 18, 18, 18, 204 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 205 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 206 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 207 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 208 18, 18, 26, 26, 25, 25, 19, 19, 19, 6, 209 6, 6, 6, 6, 6, 6, 6, 6, 6, 45, 210 45, 5, 5, 13, 13, 13, 13, 13, 14, 14, 211 14, 22, 22, 21, 21, 8, 8, 20, 20, 20, 212 20, 20, 20, 20, 20, 20, 11, 11, 12, 12, 213 12, 10, 10, 10, 10, 10, 10, 9, 9, 9, 214 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 215 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 216 9, 9, 9, 9, 9, 9, 9, 9, 9, 1, 217 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 218 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 219 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 220 1, 1, 1, 1, 1, 221}; 222short yylen[] = { 2, 223 1, 1, 3, 1, 3, 0, 1, 1, 2, 3, 224 3, 4, 1, 1, 1, 1, 1, 2, 2, 0, 225 3, 2, 0, 0, 7, 0, 0, 6, 0, 10, 226 1, 0, 4, 1, 1, 1, 1, 2, 2, 3, 227 1, 2, 1, 1, 1, 0, 5, 0, 2, 1, 228 1, 3, 3, 3, 3, 3, 3, 3, 3, 2, 229 0, 2, 3, 1, 4, 4, 4, 0, 0, 6, 230 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 231 1, 1, 2, 3, 0, 4, 3, 3, 3, 3, 232 2, 2, 3, 2, 3, 2, 3, 2, 3, 3, 233 3, 3, 3, 3, 3, 2, 2, 2, 3, 2, 234 3, 2, 3, 3, 3, 3, 2, 3, 2, 2, 235 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 236 3, 2, 1, 5, 0, 3, 1, 1, 3, 1, 237 3, 5, 3, 5, 5, 5, 7, 6, 8, 1, 238 4, 3, 3, 1, 2, 2, 3, 1, 1, 1, 239 3, 1, 3, 1, 2, 2, 2, 1, 1, 1, 240 1, 1, 1, 1, 2, 1, 2, 3, 1, 1, 241 2, 1, 5, 4, 3, 3, 2, 1, 1, 1, 242 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 243 1, 1, 2, 2, 2, 2, 1, 1, 2, 2, 244 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 245 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 246 3, 3, 2, 3, 4, 4, 6, 4, 4, 4, 247 6, 6, 4, 4, 3, 4, 3, 3, 3, 3, 248 3, 3, 3, 3, 2, 249}; 250short yydefred[] = { 0, 251 8, 0, 2, 0, 0, 0, 0, 133, 17, 13, 252 14, 15, 16, 74, 75, 76, 77, 78, 79, 80, 253 81, 0, 0, 20, 0, 0, 0, 0, 0, 0, 254 0, 85, 68, 0, 4, 0, 0, 82, 71, 0, 255 9, 0, 0, 0, 0, 0, 26, 0, 159, 220, 256 221, 162, 164, 201, 202, 158, 188, 189, 190, 191, 257 192, 193, 194, 195, 196, 197, 198, 0, 0, 0, 258 0, 0, 0, 0, 0, 0, 0, 0, 199, 200, 259 0, 0, 207, 208, 213, 214, 215, 216, 217, 219, 260 218, 0, 0, 0, 0, 0, 140, 137, 160, 0, 261 0, 0, 0, 0, 0, 44, 0, 41, 0, 0, 262 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 263 0, 0, 32, 3, 0, 121, 122, 123, 0, 0, 264 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 265 0, 106, 107, 0, 0, 0, 119, 120, 127, 128, 266 129, 130, 124, 125, 0, 0, 0, 0, 0, 132, 267 0, 126, 39, 0, 0, 11, 0, 37, 36, 10, 268 23, 0, 21, 0, 0, 0, 0, 0, 0, 0, 269 0, 0, 0, 0, 203, 205, 209, 211, 204, 206, 270 210, 212, 0, 0, 0, 0, 0, 0, 0, 0, 271 0, 150, 0, 0, 0, 0, 0, 0, 0, 0, 272 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 273 222, 223, 224, 225, 226, 0, 155, 0, 0, 176, 274 168, 169, 170, 171, 172, 173, 174, 0, 167, 165, 275 166, 42, 0, 0, 60, 0, 0, 0, 46, 0, 276 0, 0, 0, 84, 135, 0, 0, 0, 0, 5, 277 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 278 0, 0, 0, 0, 0, 0, 0, 0, 103, 0, 279 182, 0, 0, 0, 105, 0, 0, 0, 0, 0, 280 115, 116, 114, 40, 0, 0, 0, 0, 0, 0, 281 65, 0, 12, 0, 27, 0, 0, 0, 0, 0, 282 0, 0, 0, 0, 245, 0, 0, 0, 0, 234, 283 153, 139, 0, 0, 0, 163, 0, 0, 0, 0, 284 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 285 0, 0, 0, 0, 0, 161, 141, 143, 175, 0, 286 0, 56, 0, 0, 0, 0, 0, 54, 0, 0, 287 53, 52, 0, 86, 69, 33, 179, 187, 0, 0, 288 0, 177, 0, 0, 181, 0, 0, 24, 0, 235, 289 236, 0, 238, 239, 240, 0, 0, 243, 244, 246, 290 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 291 0, 134, 0, 0, 186, 185, 0, 178, 0, 0, 292 28, 0, 0, 0, 0, 0, 145, 142, 144, 151, 293 0, 0, 0, 0, 73, 70, 184, 0, 25, 49, 294 237, 241, 242, 0, 0, 148, 0, 0, 183, 0, 295 147, 0, 0, 29, 149, 0, 0, 30, 296}; 297short yydgoto[] = { 2, 298 112, 194, 114, 438, 97, 98, 34, 99, 100, 279, 299 280, 281, 115, 102, 35, 3, 36, 37, 103, 239, 300 104, 105, 170, 411, 363, 116, 107, 108, 257, 5, 301 39, 48, 304, 409, 172, 379, 447, 259, 40, 356, 302 122, 426, 403, 121, 218, 303}; 304short yysindex[] = { -58, 305 0, 0, 0, 5077, -43, -21, -2, 0, 0, 0, 306 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 307 0, 19, -242, 0,12299, -173,12422, -155,13019, 85, 30812299, 0, 0, -214, 0, -58,11880, 0, 0, -42, 309 0, -58,12422, 76, -160, -195, 0, -118, 0, 0, 310 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 311 0, 0, 0, 0, 0, 0, 0, 108, 120, 127, 312 133, 137, 154, 161, 162, 173, 174, 179, 0, 0, 313 -193, -119, 0, 0, 0, 0, 0, 0, 0, 0, 314 0,12539,12422,13019,13019, -34, 0, 0, 0, -51, 315 170, 585, 46, 495, 329, 0,12299, 0, 110,12422, 31612422, 1768, -71, -227, 170, -197, 0, -22, -50,12299, 317 -58, -58, 0, 0,13489, 0, 0, 0,13382,13382, 31813382,13382,13019,13019,13019,13019,13142,13142,13142,12779, 31913259, 0, 0,13382,13382,13382, 0, 0, 0, 0, 320 0, 0, 0, 0,13019,13382, -228, -228, -228, 0, 321 1792, 0, 0, -30,11548, 0,12422, 0, 0, 0, 322 0, -28, 0,12422,12422,12422,12422,12422,12422,12422, 32312422,12422,11997,12422, 0, 0, 0, 0, 0, 0, 324 0, 0, 1315, 194, 198, -11, 299, -10, 159, 159, 325 -47, 0,13019,13019,13019,13019,13019,13019,13019,13142, 32613019,13019,13019,13019,13019,13019,13019,13142, -8, 211, 327 0, 0, 0, 0, 0, 2, 0,13259,13259, 0, 328 0, 0, 0, 0, 0, 0, 0, 177, 0, 0, 329 0, 0,13019, 159, 0,12422,12422,13019, 0,12422, 33012422, -228, -228, 0, 0, 180, 5077, 147, 25, 0, 331 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, -34, 46, 332 46, 46, 1842, 318, 318, 29,12182, -51, 0, 525, 333 0, 46,12662, 1336, 0, 1792, 1792, 1792, 1792, 1792, 334 0, 0, 0, 0, -21, -2, 0, 0, 0, 170, 335 0, 46, 0, 27, 0, 251, 264, 262, 292, 293, 336 295, 301, 304, 308, 0, 312, 313,13142,13142, 0, 337 0, 0,13142,13259,13259, 0, 57, 1194, 6, 1166, 338 1166, 506, 506, 1792, -1, 343, 506, 388, 388, 159, 339 159, 159, 159, -16, 211, 0, 0, 0, 0, 3170, 340 1194, 0, 394, 14, 506, 103, 1194, 0, 394, 14, 341 0, 0, 21, 0, 0, 0, 0, 0, 495, 986, 342 986, 0, 324, 118, 0, 1756, 198, 0, 12, 0, 343 0,12422, 0, 0, 0,12422,12422, 0, 0, 0, 344 389, 7, 131, 351, 353, 79,13142,13142,13019, 0, 34513019, 0, 5077, 986, 0, 0, 986, 0, 12, 135, 346 0, 361, 363, 365,13142,13142, 0, 0, 0, 0, 347 56, 46, 2233, 1792, 0, 0, 0, 367, 0, 0, 348 0, 0, 0, 205, 296, 0,12902, 64, 0, 370, 349 0,13019, 1792, 0, 0, 1792, 151, 0, 350}; 351short yyrindex[] = { 5, 352 0, 0, 0, 424, 200, 0, 0, 0, 0, 0, 353 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 354 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 355 0, 0, 0, 31, 0, 34, 102, 0, 0, 139, 356 0,11744, 0, 0, 0, 639, 0, 0, 0, 0, 357 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 358 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 359 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 360 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 361 0, 0, 0, 0, 0,10124, 0, 0, 0, 0, 362 4478, 9516,10459, 0, 0, 0, 691, 0, 0, 0, 363 0, 1713, 0, 2171, 0, 0, 0,11366, 0, 692, 364 5532, 5532, 0, 0, 136, 0, 0, 0,10701,10765, 36510277,10580, 0, 0, 0, 0, 0, 0, 0, 0, 366 0, 0, 0,10829,10955,11019, 0, 0, 0, 0, 367 0, 0, 0, 0, 0,11083, 0, 0, 0, 0, 368 5277, 0, 0, 0, 0, 0, 0, 0, 0, 0, 369 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 370 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 371 0, 0, 385, 0, 421, 441, 0, 0, 356, 697, 372 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 373 0, 0, 0, 0, 0, 0, 0, 0, 0, 3104, 374 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 375 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 376 0, 0, 0,10627, 0, 0, 0, 0, 0, 0, 377 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 378 5394, 5735, 5852, 6193, 6310, 6651, 6768, 7109, 0, 7226, 379 7567, 7684, 9818, -213, 169, 0, 0, 9399, 0, 9912, 380 0, 8025, 0, 0, 0, 8142, 8483, 8600, 8941, 9058, 381 0, 0, 0, 0,11436, 1656, 2507, 2965, 321, 362, 382 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 383 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 384 0, 0, 0, 0, 0, 0, 0, 4020, 4361, 3445, 385 3562, 2188, 2529, 4936,10001, 0, 2646, 1730, 2071, 814, 386 1155, 1272, 1613, 0, 3903, 0, 0, 0, 0, 0, 387 33, 0, 4451, 3118, 2987, 0, 326, 0, 3990, 4906, 388 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 389 0, 0, 0, 0, 0, 385, 0, 0, 701, 0, 390 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 391 0, 0, 0, 452, 455, 0, 0, 0, 0, 0, 392 0, 0, 720, 0, 0, 0, 0, 0, 701, 0, 393 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 394 0, 4819, 92, 32, 0, 0, 0, 0, 0, 0, 395 0, 0, 0, 0, 396, 0, 0, 0, 0, 460, 396 0, 0, 96, 0, 0, 97, 0, 0, 397}; 398short yygindex[] = { 0, 399 -25, 401, -104, 0, -78, 280, 0, 0, 1852, 0, 400 0, -238, 104, -81, -108, 43, 0, 0, 2253, -44, 401 0, 0, 0, 38, 0, 50, 417, -36, 22, 414, 402 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 403 0, 0, 0, 0, 269, 404}; 405#define YYTABLESIZE 13863 406short yytable[] = { 96, 407 1, 164, 216, 118, 6, 96, 245, 214, 212, 209, 408 213, 161, 215, 195, 216, 41, 260, 46, 220, 214, 409 212, 4, 213, 35, 215, 210, 228, 211, 229, 322, 410 31, 8, 253, 6, 368, 216, 42, 248, 373, 211, 411 214, 212, 216, 213, 93, 215, 162, 214, 212, 228, 412 213, 229, 215, 38, 162, 44, 301, 124, 43, 217, 413 241, 402, 285, 165, 401, 248, 193, 211, 199, 200, 414 242, 217, 136, 253, 106, 136, 253, 185, 186, 45, 415 106, 96, 35, 242, 109, 244, 162, 93, 228, 31, 416 229, 253, 217, 47, 96, 6, 168, 169, 228, 217, 417 229, 64, 117, 261, 262, 263, 264, 265, 266, 267, 418 268, 269, 269, 269, 269, 284, 35, 436, 286, 287, 419 288, 250, 251, 31, 119, 253, 6, 6, 101, 289, 420 290, 405, 406, 123, 101, 7, 167, 345, 34, 269, 421 171, 352, 354, 173, 30, 358, 360, 174, 35, 347, 422 348, 189, 190, 252, 253, 31, 106, 253, 6, 175, 423 64, 187, 188, 256, 258, 427, 176, 254, 428, 106, 424 243, 417, 177, 228, 38, 229, 178, 328, 329, 330, 425 331, 332, 333, 334, 335, 337, 338, 339, 340, 341, 426 342, 343, 269, 179, 64, 196, 220, 34, 195, 7, 427 180, 181, 284, 284, 377, 49, 291, 292, 293, 255, 428 101, 52, 182, 183, 38, 163, 53, 350, 184, 249, 429 351, 353, 355, 101, 357, 359, 64, 294, 7, 370, 430 371, 34, 7, 305, 320, 191, 192, 8, 321, 7, 431 101, 101, 101, 101, 7, 394, 395, 228, 49, 229, 432 219, 193, 217, 326, 52, 327, 226, 376, 346, 53, 433 7, 6, 6, 34, 6, 6, 440, 201, 300, 349, 434 202, 365, 364, 6, 6, 6, 6, 6, 6, 6, 435 6, 6, 6, 6, 6, 372, 366, 6, 378, 398, 436 7, 380, 335, 269, 425, 7, 253, 269, 284, 284, 437 201, 361, 362, 202, 381, 382, 38, 221, 222, 223, 438 224, 225, 416, 101, 203, 204, 205, 206, 207, 208, 439 66, 101, 7, 253, 404, 55, 203, 204, 205, 206, 440 207, 208, 383, 384, 253, 385, 441, 253, 228, 6, 441 229, 324, 323, 325, 386, 6, 6, 387, 388, 6, 442 30, 6, 389, 390, 203, 233, 205, 206, 207, 208, 443 396, 67, 250, 137, 400, 137, 55, 407, 6, 55, 444 6, 269, 269, 423, 408, 424, 410, 6, 6, 66, 445 196, 253, 253, 420, 55, 228, 397, 229, 233, 269, 446 269, 418, 233, 419, 430, 233, 233, 233, 233, 233, 447 233, 431, 233, 432, 138, 433, 138, 439, 238, 444, 448 445, 443, 448, 66, 233, 233, 446, 233, 55, 238, 449 67, 101, 101, 1, 216, 50, 101, 113, 164, 214, 450 216, 228, 415, 229, 215, 214, 212, 61, 213, 146, 451 215, 62, 63, 166, 299, 66, 429, 120, 233, 125, 452 55, 233, 38, 248, 67, 211, 7, 7, 7, 7, 453 7, 319, 7, 140, 140, 140, 0, 7, 7, 7, 454 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 455 233, 217, 7, 138, 138, 138, 67, 217, 221, 222, 456 223, 224, 225, 198, 141, 141, 141, 143, 143, 143, 457 101, 101, 148, 148, 148, 0, 7, 7, 7, 7, 458 7, 7, 7, 7, 7, 7, 7, 7, 101, 101, 459 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 460 7, 7, 7, 7, 7, 0, 7, 7, 7, 7, 461 7, 7, 216, 0, 7, 0, 7, 214, 212, 0, 462 213, 0, 215, 0, 7, 7, 7, 7, 7, 7, 463 7, 7, 7, 7, 0, 7, 0, 303, 0, 0, 464 374, 0, 7, 7, 306, 307, 308, 309, 310, 311, 465 312, 313, 314, 316, 317, 238, 0, 0, 230, 55, 466 231, 232, 233, 234, 235, 236, 240, 237, 0, 217, 467 0, 231, 232, 233, 234, 235, 236, 0, 237, 0, 468 0, 0, 233, 233, 233, 233, 55, 0, 233, 233, 469 233, 233, 233, 233, 233, 233, 233, 233, 0, 0, 470 226, 0, 0, 0, 0, 0, 233, 233, 22, 233, 471 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 472 233, 233, 233, 233, 233, 233, 233, 233, 0, 0, 473 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 474 233, 233, 233, 233, 55, 55, 0, 0, 0, 233, 475 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 476 19, 18, 233, 233, 233, 233, 255, 22, 233, 233, 477 48, 233, 0, 0, 233, 233, 233, 233, 233, 233, 478 233, 233, 233, 233, 233, 233, 233, 233, 233, 72, 479 0, 0, 233, 233, 233, 233, 233, 233, 233, 255, 480 0, 22, 0, 255, 0, 0, 255, 255, 255, 255, 481 255, 255, 246, 255, 205, 206, 207, 208, 0, 19, 482 18, 0, 0, 0, 230, 255, 255, 0, 255, 48, 483 0, 0, 0, 22, 0, 0, 0, 231, 232, 233, 484 234, 235, 236, 0, 237, 0, 0, 0, 72, 0, 485 0, 0, 412, 19, 18, 0, 413, 414, 0, 255, 486 0, 0, 255, 48, 0, 54, 55, 0, 0, 0, 487 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 488 0, 0, 72, 229, 0, 19, 18, 0, 0, 0, 489 0, 255, 0, 0, 0, 48, 0, 0, 0, 0, 490 0, 0, 57, 58, 59, 60, 61, 62, 63, 64, 491 65, 66, 67, 0, 72, 0, 229, 0, 0, 0, 492 229, 0, 0, 229, 229, 229, 229, 229, 229, 0, 493 229, 79, 80, 81, 82, 0, 0, 0, 0, 0, 494 0, 0, 229, 229, 0, 229, 0, 0, 0, 83, 495 84, 85, 86, 87, 88, 89, 90, 91, 0, 0, 496 0, 0, 57, 58, 59, 60, 61, 62, 63, 64, 497 65, 66, 67, 0, 0, 0, 229, 0, 0, 229, 498 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 499 0, 79, 80, 81, 82, 0, 0, 0, 0, 0, 500 0, 0, 0, 0, 0, 0, 0, 0, 229, 83, 501 84, 85, 86, 87, 88, 89, 90, 91, 0, 0, 502 0, 0, 0, 255, 255, 255, 255, 0, 0, 255, 503 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 504 0, 0, 0, 0, 0, 0, 0, 255, 255, 0, 505 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 506 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 507 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 508 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 509 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 510 255, 276, 0, 255, 255, 255, 255, 0, 0, 255, 511 255, 0, 255, 0, 0, 255, 255, 255, 255, 255, 512 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 513 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 514 229, 229, 229, 229, 0, 0, 229, 229, 229, 229, 515 229, 229, 229, 229, 229, 229, 0, 0, 0, 0, 516 0, 0, 0, 0, 229, 229, 0, 229, 229, 229, 517 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 518 229, 229, 229, 229, 229, 229, 0, 0, 229, 229, 519 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 520 229, 229, 0, 0, 0, 0, 0, 229, 229, 229, 521 229, 229, 229, 229, 229, 229, 229, 229, 0, 0, 522 229, 229, 229, 229, 230, 0, 229, 229, 0, 229, 523 0, 0, 229, 229, 229, 229, 229, 229, 229, 229, 524 229, 229, 229, 229, 229, 229, 229, 0, 0, 0, 525 229, 229, 229, 229, 229, 229, 229, 230, 0, 0, 526 0, 230, 0, 0, 230, 230, 230, 230, 230, 230, 527 0, 230, 216, 0, 0, 0, 0, 214, 212, 0, 528 213, 0, 215, 230, 230, 0, 230, 0, 0, 0, 529 0, 0, 0, 0, 0, 248, 0, 211, 0, 0, 530 216, 0, 0, 0, 0, 214, 212, 0, 213, 0, 531 215, 0, 0, 0, 0, 0, 0, 230, 0, 0, 532 230, 0, 0, 248, 0, 211, 54, 55, 0, 217, 533 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 534 0, 231, 0, 0, 0, 0, 0, 0, 0, 230, 535 0, 0, 0, 0, 0, 0, 0, 217, 0, 0, 536 0, 0, 0, 57, 58, 59, 60, 61, 62, 63, 537 64, 65, 66, 67, 231, 0, 0, 0, 231, 0, 538 0, 231, 231, 231, 231, 231, 231, 0, 231, 0, 539 0, 0, 79, 80, 81, 82, 0, 0, 0, 0, 540 231, 231, 0, 231, 0, 0, 0, 0, 0, 0, 541 83, 84, 85, 86, 87, 88, 89, 90, 91, 0, 542 0, 216, 0, 0, 0, 0, 214, 212, 209, 213, 543 0, 215, 0, 0, 231, 0, 0, 231, 0, 0, 544 0, 0, 216, 0, 318, 0, 211, 214, 212, 209, 545 213, 0, 215, 0, 0, 0, 0, 0, 0, 0, 546 0, 0, 0, 0, 0, 248, 231, 211, 0, 0, 547 0, 0, 0, 0, 0, 0, 0, 0, 217, 0, 548 0, 230, 230, 230, 230, 0, 0, 230, 230, 230, 549 230, 230, 230, 230, 230, 230, 230, 0, 0, 217, 550 0, 0, 0, 0, 0, 230, 230, 0, 230, 230, 551 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 552 230, 230, 230, 230, 230, 230, 230, 0, 0, 230, 553 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 554 230, 230, 230, 0, 0, 0, 0, 0, 230, 230, 555 230, 230, 230, 230, 230, 230, 230, 230, 230, 0, 556 0, 230, 230, 230, 230, 0, 0, 230, 230, 0, 557 230, 0, 0, 230, 230, 230, 230, 230, 230, 230, 558 230, 230, 230, 230, 230, 230, 230, 230, 207, 208, 559 0, 230, 230, 230, 230, 230, 230, 230, 231, 231, 560 231, 231, 0, 0, 231, 231, 231, 231, 231, 231, 561 231, 231, 231, 231, 205, 206, 207, 208, 0, 0, 562 0, 0, 231, 231, 0, 231, 231, 231, 231, 231, 563 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 564 231, 231, 231, 231, 0, 0, 231, 231, 231, 231, 565 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 566 0, 0, 0, 0, 0, 231, 231, 231, 231, 231, 567 231, 231, 231, 231, 231, 231, 0, 0, 231, 231, 568 231, 231, 232, 0, 231, 231, 201, 231, 0, 202, 569 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 570 231, 231, 231, 231, 231, 0, 0, 0, 231, 231, 571 231, 231, 231, 231, 231, 232, 0, 0, 0, 232, 572 0, 0, 232, 232, 232, 232, 232, 232, 0, 232, 573 0, 0, 0, 246, 247, 205, 206, 207, 208, 0, 574 0, 232, 232, 0, 232, 0, 0, 0, 0, 0, 575 0, 0, 0, 0, 203, 204, 205, 206, 207, 208, 576 0, 0, 220, 0, 0, 0, 0, 220, 220, 220, 577 220, 0, 220, 0, 0, 232, 0, 0, 232, 0, 578 0, 0, 50, 0, 0, 220, 0, 220, 0, 0, 579 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 580 0, 0, 0, 0, 0, 0, 0, 232, 0, 0, 581 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 582 0, 0, 0, 50, 0, 0, 50, 0, 0, 0, 583 0, 0, 227, 0, 0, 0, 0, 0, 0, 227, 584 227, 50, 227, 227, 227, 0, 0, 0, 0, 0, 585 0, 0, 0, 0, 0, 0, 0, 0, 227, 227, 586 0, 227, 216, 0, 0, 0, 0, 214, 212, 209, 587 213, 0, 215, 0, 216, 50, 0, 0, 0, 214, 588 212, 0, 213, 0, 215, 248, 0, 211, 0, 0, 589 0, 0, 227, 0, 0, 227, 0, 248, 216, 211, 590 0, 0, 0, 214, 212, 0, 213, 50, 215, 0, 591 0, 0, 0, 0, 0, 0, 0, 0, 0, 217, 592 0, 248, 0, 211, 227, 0, 0, 0, 0, 0, 593 0, 217, 0, 0, 0, 0, 0, 0, 0, 232, 594 232, 232, 232, 0, 0, 232, 232, 232, 232, 232, 595 232, 232, 232, 232, 232, 217, 0, 0, 0, 0, 596 0, 0, 0, 232, 232, 0, 232, 232, 232, 232, 597 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 598 232, 232, 232, 232, 232, 0, 0, 232, 232, 232, 599 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 600 232, 0, 0, 0, 0, 0, 232, 232, 232, 232, 601 232, 232, 232, 232, 232, 232, 232, 0, 0, 232, 602 232, 232, 232, 227, 0, 232, 232, 220, 232, 0, 603 220, 232, 232, 232, 232, 232, 232, 232, 232, 232, 604 232, 232, 232, 232, 232, 232, 50, 0, 0, 232, 605 232, 232, 232, 232, 232, 232, 227, 227, 227, 227, 606 0, 278, 227, 227, 227, 227, 227, 227, 227, 227, 607 227, 227, 0, 50, 220, 220, 220, 220, 220, 220, 608 227, 227, 0, 227, 227, 227, 227, 227, 227, 227, 609 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 610 227, 227, 0, 0, 227, 227, 227, 227, 227, 227, 611 227, 227, 227, 227, 227, 227, 227, 227, 0, 0, 612 0, 0, 0, 227, 227, 227, 227, 227, 227, 227, 613 227, 227, 227, 227, 0, 0, 227, 227, 227, 227, 614 228, 0, 227, 227, 0, 227, 0, 0, 227, 227, 615 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 616 227, 227, 227, 0, 0, 0, 227, 227, 227, 227, 617 227, 227, 227, 228, 246, 247, 205, 206, 207, 208, 618 228, 228, 0, 228, 228, 228, 246, 247, 205, 206, 619 207, 208, 0, 0, 367, 0, 0, 0, 278, 228, 620 228, 375, 228, 0, 0, 0, 0, 0, 0, 0, 621 203, 204, 205, 206, 207, 208, 0, 0, 0, 57, 622 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 623 0, 0, 0, 228, 0, 0, 228, 0, 0, 0, 624 51, 0, 0, 0, 0, 0, 0, 0, 79, 80, 625 81, 82, 0, 0, 0, 0, 0, 248, 0, 0, 626 0, 0, 0, 0, 0, 228, 83, 84, 85, 86, 627 87, 88, 89, 90, 91, 0, 0, 0, 0, 0, 628 0, 51, 0, 0, 51, 0, 0, 0, 0, 0, 629 248, 367, 367, 0, 0, 0, 0, 248, 248, 51, 630 0, 248, 0, 0, 0, 0, 0, 0, 0, 0, 631 0, 0, 0, 0, 0, 0, 248, 248, 0, 248, 632 0, 0, 0, 0, 0, 367, 0, 0, 367, 0, 633 0, 0, 0, 51, 0, 0, 0, 0, 0, 216, 634 0, 0, 0, 0, 214, 212, 0, 213, 0, 215, 635 248, 0, 0, 248, 0, 0, 0, 0, 0, 0, 636 0, 0, 248, 0, 211, 51, 0, 0, 0, 0, 637 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 638 0, 0, 248, 0, 0, 0, 0, 0, 0, 0, 639 0, 0, 0, 0, 0, 0, 217, 228, 228, 228, 640 228, 0, 0, 228, 228, 228, 228, 228, 228, 228, 641 228, 228, 228, 0, 197, 0, 0, 0, 0, 0, 642 0, 228, 228, 0, 228, 228, 228, 228, 228, 228, 643 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 644 228, 228, 228, 0, 0, 228, 228, 228, 228, 228, 645 228, 228, 228, 228, 228, 228, 228, 228, 228, 270, 646 271, 272, 282, 0, 228, 228, 228, 228, 228, 228, 647 228, 228, 228, 228, 228, 0, 0, 228, 228, 228, 648 228, 0, 0, 228, 228, 0, 228, 302, 0, 228, 649 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 650 228, 228, 228, 228, 51, 0, 0, 228, 228, 228, 651 228, 228, 228, 228, 248, 248, 248, 248, 0, 0, 652 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 653 0, 51, 336, 0, 0, 0, 0, 0, 248, 248, 654 344, 248, 248, 248, 248, 248, 248, 248, 248, 248, 655 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 656 0, 0, 248, 248, 248, 248, 248, 248, 248, 248, 657 248, 248, 248, 248, 248, 248, 15, 0, 0, 0, 658 0, 248, 248, 248, 248, 248, 248, 248, 248, 248, 659 248, 248, 437, 0, 248, 248, 248, 248, 250, 197, 660 248, 248, 0, 248, 0, 0, 248, 248, 248, 248, 661 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 662 248, 0, 0, 0, 248, 248, 248, 248, 248, 248, 663 248, 250, 0, 0, 0, 15, 0, 0, 250, 250, 664 391, 392, 250, 0, 0, 393, 0, 0, 0, 0, 665 0, 203, 204, 205, 206, 207, 208, 250, 250, 0, 666 250, 0, 0, 0, 0, 0, 0, 0, 0, 15, 667 0, 0, 201, 0, 0, 0, 0, 0, 0, 0, 668 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 669 0, 250, 0, 0, 250, 0, 0, 0, 0, 0, 670 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 671 0, 0, 0, 0, 0, 249, 0, 0, 0, 421, 672 422, 0, 0, 250, 0, 0, 0, 0, 0, 0, 673 0, 0, 0, 0, 0, 0, 0, 434, 435, 0, 674 0, 0, 0, 0, 0, 0, 0, 0, 249, 0, 675 0, 0, 0, 0, 0, 249, 249, 0, 0, 249, 676 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 677 0, 0, 0, 0, 249, 249, 0, 249, 0, 0, 678 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 679 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 680 0, 0, 0, 0, 0, 0, 0, 0, 249, 0, 681 0, 249, 0, 0, 0, 0, 0, 0, 0, 0, 682 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 683 0, 0, 0, 201, 0, 0, 0, 0, 0, 201, 684 249, 0, 0, 0, 201, 0, 0, 0, 0, 0, 685 0, 0, 0, 0, 0, 250, 250, 250, 250, 0, 686 0, 250, 250, 250, 250, 250, 250, 250, 250, 250, 687 250, 0, 0, 0, 0, 0, 0, 0, 201, 250, 688 250, 0, 250, 250, 250, 250, 250, 250, 250, 250, 689 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 690 250, 0, 0, 250, 250, 250, 250, 250, 250, 250, 691 250, 250, 250, 250, 250, 250, 250, 0, 0, 0, 692 0, 0, 250, 250, 250, 250, 250, 250, 250, 250, 693 250, 250, 250, 0, 0, 250, 250, 250, 250, 0, 694 0, 250, 250, 0, 250, 0, 0, 250, 250, 250, 695 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 696 250, 250, 0, 0, 0, 250, 250, 250, 250, 250, 697 250, 250, 249, 249, 249, 249, 0, 0, 249, 249, 698 249, 249, 249, 249, 249, 249, 249, 249, 0, 0, 699 0, 0, 0, 0, 0, 0, 249, 249, 0, 249, 700 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 701 249, 249, 249, 249, 249, 249, 249, 249, 0, 0, 702 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 703 249, 249, 249, 249, 16, 0, 0, 0, 0, 249, 704 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 705 0, 0, 249, 249, 249, 249, 247, 0, 249, 249, 706 0, 249, 0, 0, 249, 249, 249, 249, 249, 249, 707 249, 249, 249, 249, 249, 249, 249, 249, 249, 0, 708 0, 0, 249, 249, 249, 249, 249, 249, 249, 247, 709 0, 0, 0, 16, 0, 0, 247, 247, 0, 0, 710 247, 0, 0, 0, 0, 0, 0, 0, 0, 0, 711 0, 0, 0, 0, 0, 247, 247, 0, 247, 0, 712 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 713 202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 714 0, 0, 0, 0, 0, 0, 0, 0, 0, 247, 715 0, 0, 247, 0, 0, 0, 0, 0, 0, 16, 716 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 717 0, 0, 0, 156, 0, 0, 0, 0, 0, 0, 718 0, 247, 0, 0, 0, 0, 0, 59, 0, 0, 719 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 720 0, 0, 0, 0, 0, 0, 156, 0, 0, 0, 721 0, 0, 0, 156, 156, 0, 156, 156, 156, 0, 722 0, 0, 0, 0, 0, 0, 0, 0, 59, 0, 723 0, 59, 156, 0, 0, 156, 0, 0, 0, 0, 724 0, 0, 0, 0, 0, 0, 59, 0, 0, 0, 725 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 726 0, 0, 0, 0, 0, 0, 156, 0, 0, 156, 727 0, 0, 0, 0, 0, 0, 216, 0, 0, 0, 728 59, 214, 212, 0, 213, 0, 215, 0, 0, 0, 729 0, 202, 0, 0, 0, 0, 0, 202, 156, 248, 730 0, 211, 202, 0, 0, 0, 0, 0, 0, 0, 731 0, 0, 59, 247, 247, 247, 247, 0, 0, 247, 732 247, 247, 247, 247, 247, 247, 247, 247, 247, 0, 733 0, 0, 0, 217, 0, 0, 202, 247, 247, 0, 734 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 735 247, 247, 247, 247, 247, 247, 247, 247, 247, 0, 736 0, 247, 247, 247, 247, 247, 247, 247, 247, 247, 737 247, 247, 247, 247, 247, 0, 0, 0, 0, 0, 738 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 739 247, 0, 0, 247, 247, 247, 247, 0, 0, 247, 740 247, 0, 247, 0, 0, 247, 247, 247, 247, 247, 741 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 742 0, 0, 0, 247, 247, 247, 247, 247, 247, 247, 743 156, 156, 156, 156, 0, 0, 156, 0, 156, 156, 744 156, 156, 156, 156, 156, 156, 0, 0, 0, 0, 745 0, 59, 0, 0, 156, 156, 0, 156, 156, 156, 746 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 747 156, 156, 156, 156, 156, 0, 0, 0, 59, 156, 748 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 749 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 750 156, 156, 156, 156, 156, 156, 156, 156, 0, 0, 751 156, 156, 156, 156, 252, 0, 156, 156, 0, 0, 752 0, 0, 0, 0, 0, 0, 399, 0, 156, 156, 753 156, 156, 156, 156, 156, 156, 156, 59, 0, 0, 754 156, 156, 156, 156, 156, 156, 156, 252, 0, 0, 755 0, 0, 0, 0, 252, 252, 0, 0, 252, 0, 756 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 757 0, 0, 0, 252, 0, 0, 0, 0, 0, 0, 758 0, 0, 0, 0, 0, 0, 0, 0, 203, 204, 759 205, 206, 207, 208, 0, 0, 0, 0, 0, 0, 760 0, 0, 0, 0, 0, 0, 0, 252, 0, 0, 761 252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 762 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 763 0, 251, 0, 0, 0, 0, 0, 0, 0, 252, 764 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 765 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 766 0, 0, 0, 0, 251, 0, 0, 0, 0, 0, 767 0, 251, 251, 0, 0, 251, 0, 0, 0, 0, 768 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 769 251, 0, 0, 0, 0, 0, 0, 0, 0, 0, 770 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 771 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 772 0, 0, 0, 0, 251, 0, 0, 251, 0, 0, 773 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 774 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 775 0, 0, 0, 0, 0, 0, 251, 0, 0, 0, 776 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 777 0, 252, 252, 252, 252, 0, 0, 252, 252, 252, 778 252, 252, 252, 252, 252, 252, 252, 0, 0, 0, 779 0, 0, 0, 0, 0, 252, 252, 0, 252, 252, 780 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 781 252, 252, 252, 252, 252, 252, 252, 0, 0, 252, 782 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 783 252, 252, 252, 0, 0, 0, 0, 0, 252, 252, 784 252, 252, 252, 252, 252, 252, 252, 252, 252, 0, 785 0, 252, 252, 252, 252, 0, 0, 252, 252, 0, 786 252, 0, 0, 252, 252, 252, 252, 0, 0, 252, 787 252, 252, 252, 252, 252, 252, 252, 252, 0, 0, 788 0, 252, 252, 252, 252, 252, 252, 252, 251, 251, 789 251, 251, 0, 0, 251, 251, 251, 251, 251, 251, 790 251, 251, 251, 251, 0, 0, 0, 0, 0, 0, 791 0, 0, 251, 251, 0, 251, 251, 251, 251, 251, 792 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 793 251, 251, 251, 251, 0, 0, 251, 251, 251, 251, 794 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 795 0, 0, 0, 0, 0, 251, 251, 251, 251, 251, 796 251, 251, 251, 251, 251, 251, 0, 0, 251, 251, 797 251, 251, 157, 0, 251, 251, 0, 251, 0, 0, 798 251, 251, 251, 251, 0, 0, 251, 251, 251, 251, 799 251, 251, 251, 251, 251, 0, 0, 0, 251, 251, 800 251, 251, 251, 251, 251, 157, 0, 0, 0, 0, 801 0, 0, 157, 157, 0, 157, 157, 157, 0, 0, 802 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 803 0, 157, 0, 0, 157, 0, 0, 0, 0, 0, 804 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 805 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 806 0, 0, 0, 0, 0, 157, 0, 0, 157, 0, 807 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 808 0, 0, 0, 0, 0, 0, 0, 0, 0, 253, 809 0, 0, 0, 0, 0, 0, 0, 157, 0, 0, 810 58, 0, 0, 58, 0, 0, 0, 0, 0, 0, 811 0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 812 0, 0, 253, 0, 0, 0, 0, 0, 0, 253, 813 253, 0, 0, 253, 0, 0, 0, 0, 0, 0, 814 0, 0, 0, 0, 0, 0, 0, 0, 253, 0, 815 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 816 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 817 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 818 0, 0, 253, 0, 58, 253, 0, 0, 0, 0, 819 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 820 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 821 0, 0, 0, 0, 253, 0, 0, 0, 0, 0, 822 0, 0, 0, 0, 0, 0, 0, 0, 0, 157, 823 157, 157, 157, 0, 0, 157, 0, 157, 157, 157, 824 157, 157, 157, 157, 157, 0, 0, 0, 0, 0, 825 0, 0, 0, 157, 157, 0, 157, 157, 157, 157, 826 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 827 157, 157, 157, 157, 0, 0, 0, 0, 157, 157, 828 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 829 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 830 157, 157, 157, 157, 157, 157, 157, 0, 0, 157, 831 157, 157, 157, 0, 0, 157, 157, 0, 0, 0, 832 0, 0, 0, 58, 0, 0, 0, 157, 157, 157, 833 157, 157, 157, 157, 157, 157, 0, 0, 0, 157, 834 157, 157, 157, 157, 157, 157, 253, 253, 253, 253, 835 58, 0, 253, 253, 253, 253, 253, 253, 253, 253, 836 253, 253, 0, 0, 0, 0, 0, 0, 0, 0, 837 253, 253, 0, 253, 253, 253, 253, 253, 253, 253, 838 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 839 253, 253, 0, 0, 253, 253, 253, 253, 253, 253, 840 253, 253, 253, 253, 253, 253, 253, 253, 0, 58, 841 0, 0, 0, 253, 253, 253, 253, 253, 253, 253, 842 253, 253, 253, 253, 0, 0, 253, 253, 253, 253, 843 254, 0, 253, 253, 0, 253, 0, 0, 253, 253, 844 0, 0, 0, 0, 253, 253, 253, 253, 253, 253, 845 253, 253, 253, 0, 0, 0, 253, 253, 253, 253, 846 253, 253, 253, 254, 0, 0, 0, 0, 0, 0, 847 254, 254, 0, 0, 254, 0, 0, 0, 0, 0, 848 0, 0, 0, 0, 0, 0, 0, 0, 0, 254, 849 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 850 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 851 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 852 254, 0, 0, 254, 0, 0, 254, 0, 0, 0, 853 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 854 0, 0, 0, 0, 0, 0, 0, 138, 0, 0, 855 0, 0, 0, 0, 0, 254, 0, 0, 0, 0, 856 0, 254, 0, 0, 254, 0, 0, 0, 0, 0, 857 0, 0, 0, 0, 0, 0, 0, 0, 0, 254, 858 138, 0, 0, 0, 0, 0, 0, 138, 138, 0, 859 138, 138, 138, 0, 0, 0, 0, 0, 0, 0, 860 0, 0, 0, 0, 0, 0, 138, 0, 0, 138, 861 0, 0, 0, 254, 0, 0, 0, 0, 0, 0, 862 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 863 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 864 138, 0, 0, 138, 0, 254, 0, 0, 0, 0, 865 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 866 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 867 0, 0, 138, 0, 0, 0, 0, 0, 0, 0, 868 0, 0, 0, 0, 0, 0, 0, 254, 254, 254, 869 254, 0, 0, 254, 254, 254, 254, 254, 254, 254, 870 254, 254, 254, 0, 0, 0, 0, 0, 0, 0, 871 0, 254, 254, 0, 254, 254, 254, 254, 254, 254, 872 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 873 254, 254, 254, 0, 0, 254, 254, 254, 254, 254, 874 254, 254, 254, 254, 254, 254, 254, 254, 254, 0, 875 0, 0, 0, 0, 254, 254, 254, 254, 254, 254, 876 254, 254, 254, 254, 254, 0, 0, 254, 254, 254, 877 254, 0, 0, 254, 254, 0, 254, 0, 0, 0, 878 254, 0, 0, 0, 254, 254, 254, 254, 254, 254, 879 254, 254, 254, 254, 0, 0, 0, 254, 254, 254, 880 254, 254, 254, 254, 138, 138, 138, 138, 0, 0, 881 138, 254, 138, 138, 138, 138, 138, 138, 138, 138, 882 0, 0, 254, 0, 0, 254, 0, 0, 138, 138, 883 0, 138, 138, 138, 138, 138, 138, 138, 138, 138, 884 138, 138, 138, 138, 138, 138, 138, 138, 138, 0, 885 0, 0, 0, 138, 138, 138, 138, 138, 138, 138, 886 138, 138, 138, 138, 138, 138, 0, 0, 0, 0, 887 254, 138, 138, 138, 138, 138, 138, 138, 138, 138, 888 138, 138, 0, 0, 138, 138, 138, 138, 146, 0, 889 138, 138, 0, 0, 0, 0, 0, 0, 0, 0, 890 0, 0, 138, 138, 138, 138, 138, 138, 138, 138, 891 138, 0, 0, 0, 138, 138, 138, 138, 138, 138, 892 138, 146, 0, 0, 0, 0, 0, 0, 146, 146, 893 0, 0, 146, 0, 0, 0, 0, 0, 0, 0, 894 0, 0, 0, 0, 0, 0, 0, 146, 0, 0, 895 146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 896 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 897 0, 0, 0, 0, 0, 57, 0, 0, 0, 0, 898 0, 146, 0, 0, 146, 0, 0, 0, 0, 0, 899 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 900 0, 0, 0, 0, 0, 152, 0, 0, 0, 0, 901 0, 0, 0, 146, 0, 0, 57, 0, 0, 57, 902 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 903 0, 0, 0, 0, 57, 0, 0, 0, 152, 0, 904 0, 0, 0, 0, 0, 152, 152, 0, 0, 152, 905 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 906 0, 0, 0, 0, 152, 0, 0, 0, 57, 0, 907 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 908 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 909 0, 0, 0, 0, 0, 0, 0, 0, 152, 0, 910 57, 152, 0, 0, 0, 0, 0, 0, 0, 0, 911 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 912 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 913 152, 0, 0, 0, 0, 0, 0, 0, 0, 0, 914 0, 0, 0, 0, 0, 146, 146, 146, 146, 0, 915 0, 146, 0, 146, 146, 146, 146, 146, 146, 146, 916 146, 0, 0, 0, 0, 0, 0, 0, 0, 146, 917 146, 0, 146, 146, 146, 146, 146, 146, 146, 146, 918 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 919 0, 0, 0, 0, 146, 146, 146, 146, 146, 146, 920 146, 146, 146, 146, 146, 146, 146, 0, 0, 0, 921 0, 0, 146, 146, 146, 146, 146, 146, 146, 146, 922 146, 146, 146, 0, 0, 146, 146, 146, 146, 0, 923 0, 146, 146, 0, 0, 0, 0, 32, 0, 57, 924 0, 0, 0, 146, 146, 146, 146, 146, 146, 146, 925 146, 146, 0, 0, 0, 146, 146, 146, 146, 146, 926 146, 146, 152, 152, 152, 152, 57, 0, 152, 33, 927 152, 152, 152, 152, 152, 152, 152, 152, 0, 0, 928 0, 0, 0, 0, 0, 0, 152, 152, 0, 152, 929 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 930 152, 152, 152, 152, 152, 152, 152, 0, 0, 0, 931 0, 152, 152, 152, 152, 152, 152, 152, 152, 152, 932 152, 152, 152, 152, 0, 57, 0, 0, 0, 152, 933 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 934 0, 0, 152, 152, 152, 152, 91, 0, 152, 152, 935 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 936 152, 152, 152, 152, 152, 152, 152, 152, 152, 0, 937 0, 0, 152, 152, 152, 152, 152, 152, 152, 91, 938 0, 0, 0, 0, 0, 0, 91, 0, 0, 0, 939 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 940 0, 0, 0, 6, 7, 91, 8, 9, 0, 0, 941 0, 0, 0, 0, 0, 10, 11, 12, 13, 14, 942 15, 16, 17, 18, 19, 20, 21, 0, 0, 22, 943 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 944 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 945 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 946 0, 0, 0, 93, 0, 0, 0, 0, 0, 0, 947 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 948 0, 23, 0, 0, 0, 0, 0, 24, 25, 0, 949 0, 26, 0, 27, 0, 0, 93, 0, 0, 0, 950 0, 0, 0, 93, 0, 0, 0, 0, 0, 0, 951 28, 0, 29, 0, 0, 0, 0, 0, 0, 30, 952 31, 0, 93, 0, 0, 0, 0, 0, 0, 0, 953 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 954 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 955 0, 0, 0, 0, 0, 0, 93, 0, 0, 93, 956 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 957 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 958 0, 0, 0, 0, 0, 0, 0, 0, 93, 0, 959 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 960 0, 0, 0, 91, 91, 91, 91, 0, 0, 91, 961 0, 91, 91, 91, 91, 91, 91, 91, 91, 0, 962 0, 0, 0, 0, 0, 0, 0, 91, 91, 0, 963 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 964 91, 91, 91, 91, 91, 91, 91, 91, 0, 0, 965 0, 0, 0, 91, 91, 91, 91, 91, 91, 91, 966 91, 91, 91, 91, 91, 0, 0, 0, 0, 0, 967 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 968 91, 0, 0, 91, 91, 91, 91, 0, 0, 91, 969 91, 0, 6, 0, 0, 0, 0, 0, 0, 0, 970 0, 91, 91, 91, 91, 91, 91, 91, 91, 91, 971 0, 0, 0, 91, 91, 91, 91, 91, 91, 91, 972 93, 93, 93, 93, 6, 0, 93, 0, 93, 93, 973 93, 93, 93, 93, 93, 93, 0, 0, 0, 0, 974 0, 0, 0, 0, 93, 93, 0, 93, 93, 93, 975 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 976 93, 93, 93, 93, 93, 0, 0, 0, 0, 0, 977 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 978 93, 93, 0, 0, 0, 0, 0, 93, 93, 93, 979 93, 93, 93, 93, 93, 93, 93, 93, 0, 0, 980 93, 93, 93, 93, 95, 0, 93, 93, 0, 0, 981 0, 0, 0, 0, 0, 0, 0, 0, 93, 93, 982 93, 93, 93, 93, 93, 93, 93, 0, 0, 0, 983 93, 93, 93, 93, 93, 93, 93, 95, 0, 0, 984 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, 985 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 986 0, 6, 6, 95, 0, 0, 0, 0, 0, 0, 987 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 988 6, 6, 0, 0, 6, 0, 0, 0, 0, 0, 989 0, 0, 0, 0, 0, 0, 0, 95, 0, 0, 990 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 991 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 992 0, 99, 0, 0, 0, 0, 0, 0, 0, 95, 993 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 994 0, 0, 6, 6, 0, 0, 6, 0, 6, 0, 995 0, 0, 0, 0, 99, 0, 0, 0, 0, 0, 996 0, 99, 0, 0, 0, 6, 0, 6, 0, 0, 997 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 998 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 999 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1000 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1001 0, 0, 0, 0, 99, 0, 0, 99, 0, 0, 1002 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1003 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1004 0, 0, 0, 0, 0, 0, 99, 0, 0, 0, 1005 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1006 0, 95, 95, 95, 95, 0, 0, 95, 0, 95, 1007 95, 95, 95, 95, 95, 95, 95, 0, 0, 0, 1008 0, 0, 0, 0, 0, 95, 95, 0, 95, 95, 1009 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 1010 95, 95, 95, 95, 95, 95, 0, 0, 0, 0, 1011 0, 95, 95, 95, 95, 95, 95, 95, 95, 95, 1012 95, 95, 95, 0, 0, 0, 0, 0, 95, 95, 1013 95, 95, 95, 95, 95, 95, 95, 95, 95, 0, 1014 0, 95, 95, 95, 95, 0, 0, 95, 95, 0, 1015 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 1016 95, 95, 95, 95, 95, 95, 95, 95, 0, 0, 1017 0, 95, 95, 95, 95, 95, 95, 95, 99, 99, 1018 99, 99, 0, 0, 99, 0, 99, 99, 99, 99, 1019 99, 99, 99, 99, 0, 0, 0, 0, 0, 0, 1020 0, 0, 99, 99, 0, 99, 99, 99, 99, 99, 1021 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 1022 99, 99, 99, 0, 0, 0, 0, 0, 99, 99, 1023 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 1024 0, 0, 0, 0, 0, 99, 99, 99, 99, 99, 1025 99, 99, 99, 99, 99, 99, 0, 0, 99, 99, 1026 99, 99, 97, 0, 99, 99, 0, 0, 0, 0, 1027 0, 0, 0, 0, 0, 0, 99, 99, 99, 99, 1028 99, 99, 99, 99, 99, 0, 0, 0, 99, 99, 1029 99, 99, 99, 99, 99, 97, 0, 0, 0, 0, 1030 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 1031 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1032 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 1033 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1034 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1035 0, 0, 0, 0, 0, 97, 0, 0, 97, 0, 1036 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1037 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 1038 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 1039 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1040 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1041 0, 0, 87, 0, 0, 0, 0, 0, 0, 87, 1042 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1043 0, 0, 0, 0, 0, 0, 0, 0, 87, 0, 1044 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1045 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1046 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1047 0, 0, 87, 0, 0, 87, 0, 0, 0, 0, 1048 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1049 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1050 0, 0, 0, 0, 87, 0, 0, 0, 0, 0, 1051 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 1052 97, 97, 97, 0, 0, 97, 0, 97, 97, 97, 1053 97, 97, 97, 97, 97, 0, 0, 0, 0, 0, 1054 0, 0, 0, 97, 97, 0, 97, 97, 97, 97, 1055 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1056 97, 97, 97, 97, 0, 0, 0, 0, 0, 97, 1057 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 1058 97, 0, 0, 0, 0, 0, 97, 97, 97, 97, 1059 97, 97, 97, 97, 97, 97, 97, 0, 0, 97, 1060 97, 97, 97, 0, 0, 97, 97, 0, 0, 0, 1061 0, 0, 0, 0, 0, 0, 0, 97, 97, 97, 1062 97, 97, 97, 97, 97, 97, 0, 0, 0, 97, 1063 97, 97, 97, 97, 97, 97, 87, 87, 87, 87, 1064 0, 0, 87, 0, 87, 87, 87, 87, 87, 87, 1065 87, 87, 0, 0, 0, 0, 0, 0, 0, 0, 1066 87, 87, 0, 87, 87, 87, 87, 87, 87, 87, 1067 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 1068 87, 0, 0, 0, 0, 0, 87, 87, 87, 87, 1069 87, 87, 87, 87, 87, 87, 87, 87, 0, 0, 1070 0, 0, 0, 87, 87, 87, 87, 87, 87, 87, 1071 87, 87, 87, 87, 0, 0, 87, 87, 87, 87, 1072 88, 0, 87, 87, 0, 0, 0, 0, 0, 0, 1073 0, 0, 0, 0, 87, 87, 87, 87, 87, 87, 1074 87, 87, 87, 0, 0, 0, 87, 87, 87, 87, 1075 87, 87, 87, 88, 0, 0, 0, 0, 0, 0, 1076 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1077 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 1078 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1079 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1080 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1081 0, 0, 0, 88, 0, 0, 88, 0, 0, 0, 1082 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1083 0, 0, 0, 0, 0, 0, 0, 89, 0, 0, 1084 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 1085 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1086 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1087 89, 0, 0, 0, 0, 0, 0, 89, 0, 0, 1088 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1089 0, 0, 0, 0, 0, 0, 89, 0, 0, 0, 1090 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1091 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1092 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1093 89, 0, 0, 89, 0, 0, 0, 0, 0, 0, 1094 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1095 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1096 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 1097 0, 0, 0, 0, 0, 0, 0, 88, 88, 88, 1098 88, 0, 0, 88, 0, 88, 88, 88, 88, 88, 1099 88, 88, 88, 0, 0, 0, 0, 0, 0, 0, 1100 0, 88, 88, 0, 88, 88, 88, 88, 88, 88, 1101 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 1102 88, 88, 0, 0, 0, 0, 0, 88, 88, 88, 1103 88, 88, 88, 88, 88, 88, 88, 88, 88, 0, 1104 0, 0, 0, 0, 88, 88, 88, 88, 88, 88, 1105 88, 88, 88, 88, 88, 0, 0, 88, 88, 88, 1106 88, 0, 0, 88, 88, 0, 0, 0, 0, 0, 1107 0, 0, 0, 0, 0, 88, 88, 88, 88, 88, 1108 88, 88, 88, 88, 0, 0, 0, 88, 88, 88, 1109 88, 88, 88, 88, 89, 89, 89, 89, 0, 0, 1110 89, 0, 89, 89, 89, 89, 89, 89, 89, 89, 1111 0, 0, 0, 0, 0, 0, 0, 0, 89, 89, 1112 0, 89, 89, 89, 89, 89, 89, 89, 89, 89, 1113 89, 89, 89, 89, 89, 89, 89, 89, 89, 0, 1114 0, 0, 0, 0, 89, 89, 89, 89, 89, 89, 1115 89, 89, 89, 89, 89, 89, 0, 0, 0, 0, 1116 0, 89, 89, 89, 89, 89, 89, 89, 89, 89, 1117 89, 89, 0, 0, 89, 89, 89, 89, 90, 0, 1118 89, 89, 0, 0, 0, 0, 0, 0, 0, 0, 1119 0, 0, 89, 89, 89, 89, 89, 89, 89, 89, 1120 89, 0, 0, 0, 89, 89, 89, 89, 89, 89, 1121 89, 90, 0, 0, 0, 0, 0, 0, 90, 0, 1122 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1123 0, 0, 0, 0, 0, 0, 0, 90, 0, 0, 1124 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1125 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1126 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1127 0, 90, 0, 0, 90, 0, 0, 0, 0, 0, 1128 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1129 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 1130 0, 0, 0, 90, 0, 0, 0, 0, 0, 0, 1131 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1132 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 1133 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 1134 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1135 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 1136 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1137 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1138 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 1139 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 1140 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1141 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1142 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1143 0, 0, 0, 0, 0, 90, 90, 90, 90, 0, 1144 0, 90, 0, 90, 90, 90, 90, 90, 90, 90, 1145 90, 0, 0, 0, 0, 0, 0, 0, 0, 90, 1146 90, 0, 90, 90, 90, 90, 90, 90, 90, 90, 1147 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 1148 0, 0, 0, 0, 0, 90, 90, 90, 90, 90, 1149 90, 90, 90, 90, 90, 90, 90, 0, 0, 0, 1150 0, 0, 90, 90, 90, 90, 90, 90, 90, 90, 1151 90, 90, 90, 0, 0, 90, 90, 90, 90, 0, 1152 0, 90, 90, 0, 0, 0, 0, 0, 0, 0, 1153 0, 0, 0, 90, 90, 90, 90, 90, 90, 90, 1154 90, 90, 0, 0, 0, 90, 90, 90, 90, 90, 1155 90, 90, 100, 100, 100, 100, 0, 0, 100, 0, 1156 100, 100, 100, 100, 100, 100, 100, 100, 0, 0, 1157 0, 0, 0, 0, 0, 0, 100, 100, 0, 100, 1158 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 1159 100, 100, 100, 100, 100, 100, 100, 0, 0, 0, 1160 0, 0, 100, 100, 100, 100, 100, 100, 100, 100, 1161 100, 100, 100, 100, 0, 0, 0, 0, 0, 100, 1162 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 1163 0, 0, 100, 100, 100, 100, 101, 0, 100, 100, 1164 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1165 100, 100, 100, 100, 100, 100, 100, 100, 100, 0, 1166 0, 0, 100, 100, 100, 100, 100, 100, 100, 101, 1167 0, 0, 0, 0, 0, 0, 101, 0, 0, 0, 1168 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1169 0, 0, 0, 0, 0, 101, 0, 0, 0, 0, 1170 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1171 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1172 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 1173 0, 0, 101, 0, 0, 0, 0, 0, 0, 0, 1174 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1175 0, 0, 0, 102, 0, 0, 0, 0, 0, 0, 1176 0, 101, 0, 0, 0, 0, 0, 0, 0, 0, 1177 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1178 0, 0, 0, 0, 0, 0, 102, 0, 0, 0, 1179 0, 0, 0, 102, 0, 0, 0, 0, 0, 0, 1180 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1181 0, 0, 102, 0, 0, 0, 0, 0, 0, 0, 1182 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1183 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1184 0, 0, 0, 0, 0, 0, 102, 0, 0, 102, 1185 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1186 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1187 0, 0, 0, 0, 0, 0, 0, 0, 102, 0, 1188 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1189 0, 0, 0, 101, 101, 101, 101, 0, 0, 101, 1190 0, 101, 101, 101, 101, 101, 101, 101, 101, 0, 1191 0, 0, 0, 0, 0, 0, 0, 101, 101, 0, 1192 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 1193 101, 101, 101, 101, 101, 101, 101, 101, 0, 0, 1194 0, 0, 0, 101, 101, 101, 101, 101, 101, 101, 1195 101, 101, 101, 101, 101, 0, 0, 0, 0, 0, 1196 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 1197 101, 0, 0, 101, 101, 101, 101, 0, 0, 101, 1198 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1199 0, 101, 101, 101, 101, 101, 101, 101, 101, 101, 1200 0, 0, 0, 101, 101, 101, 101, 101, 101, 101, 1201 102, 102, 102, 102, 0, 0, 102, 0, 102, 102, 1202 102, 102, 102, 102, 102, 102, 0, 0, 0, 0, 1203 0, 0, 0, 0, 102, 102, 0, 102, 102, 102, 1204 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 1205 102, 102, 102, 102, 102, 0, 0, 0, 0, 0, 1206 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 1207 102, 102, 0, 0, 0, 0, 0, 102, 102, 102, 1208 102, 102, 102, 102, 102, 102, 102, 102, 0, 0, 1209 102, 102, 102, 102, 104, 0, 102, 102, 0, 0, 1210 0, 0, 0, 0, 0, 0, 0, 0, 102, 102, 1211 102, 102, 102, 102, 102, 102, 102, 0, 0, 0, 1212 102, 102, 102, 102, 102, 102, 102, 104, 0, 0, 1213 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 1214 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1215 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 1216 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1217 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1218 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 1219 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1220 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1221 0, 109, 0, 0, 0, 0, 0, 0, 0, 104, 1222 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1223 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1224 0, 0, 0, 0, 109, 0, 0, 0, 0, 0, 1225 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, 1226 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1227 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1228 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1229 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1230 0, 0, 0, 0, 109, 0, 0, 109, 0, 0, 1231 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1232 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1233 0, 0, 0, 0, 0, 0, 109, 0, 0, 0, 1234 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1235 0, 104, 104, 104, 104, 0, 0, 104, 0, 104, 1236 104, 104, 104, 104, 104, 104, 104, 0, 0, 0, 1237 0, 0, 0, 0, 0, 104, 104, 0, 104, 104, 1238 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 1239 104, 104, 104, 104, 104, 104, 0, 0, 0, 0, 1240 0, 104, 104, 104, 104, 104, 104, 104, 104, 104, 1241 104, 104, 104, 0, 0, 0, 0, 0, 104, 104, 1242 104, 104, 104, 104, 104, 104, 104, 104, 104, 0, 1243 0, 104, 104, 104, 104, 0, 0, 104, 104, 0, 1244 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 1245 104, 104, 104, 104, 104, 104, 104, 104, 0, 0, 1246 0, 104, 104, 104, 104, 104, 104, 104, 109, 109, 1247 109, 109, 0, 0, 109, 0, 109, 109, 109, 109, 1248 109, 109, 109, 109, 0, 0, 0, 0, 0, 0, 1249 0, 0, 109, 109, 0, 109, 109, 109, 109, 109, 1250 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 1251 109, 109, 109, 0, 0, 0, 0, 0, 109, 109, 1252 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 1253 0, 0, 0, 0, 0, 109, 109, 109, 109, 109, 1254 109, 109, 109, 109, 109, 109, 0, 0, 109, 109, 1255 109, 109, 111, 0, 109, 109, 0, 0, 0, 0, 1256 0, 0, 0, 0, 0, 0, 109, 109, 109, 109, 1257 109, 109, 109, 109, 109, 0, 0, 0, 109, 109, 1258 109, 109, 109, 109, 109, 111, 0, 0, 0, 0, 1259 0, 0, 111, 0, 0, 0, 0, 0, 0, 0, 1260 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1261 0, 111, 0, 0, 0, 0, 0, 0, 0, 0, 1262 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1263 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1264 0, 0, 0, 0, 0, 111, 0, 0, 111, 0, 1265 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1266 0, 0, 0, 0, 0, 0, 0, 0, 0, 118, 1267 0, 0, 0, 0, 0, 0, 0, 111, 0, 0, 1268 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1269 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1270 0, 0, 118, 0, 0, 0, 0, 0, 0, 118, 1271 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1272 0, 0, 0, 0, 0, 0, 0, 0, 118, 0, 1273 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1274 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1275 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1276 0, 0, 118, 0, 0, 118, 0, 0, 0, 0, 1277 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1278 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1279 0, 0, 0, 0, 118, 0, 0, 0, 0, 0, 1280 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, 1281 111, 111, 111, 0, 0, 111, 0, 111, 111, 111, 1282 111, 111, 111, 111, 111, 0, 0, 0, 0, 0, 1283 0, 0, 0, 111, 111, 0, 111, 111, 111, 111, 1284 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 1285 111, 111, 111, 111, 0, 0, 0, 0, 0, 111, 1286 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 1287 111, 0, 0, 0, 0, 0, 111, 111, 111, 111, 1288 111, 111, 111, 111, 111, 111, 111, 0, 0, 111, 1289 111, 111, 111, 0, 0, 111, 111, 0, 0, 0, 1290 0, 0, 0, 0, 0, 0, 0, 111, 111, 111, 1291 111, 111, 111, 111, 111, 111, 0, 0, 0, 111, 1292 111, 111, 111, 111, 111, 111, 118, 118, 118, 118, 1293 0, 0, 118, 0, 118, 118, 118, 118, 118, 118, 1294 118, 118, 0, 0, 0, 0, 0, 0, 0, 0, 1295 118, 118, 0, 118, 118, 118, 118, 118, 118, 118, 1296 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 1297 118, 0, 0, 0, 0, 0, 118, 118, 118, 118, 1298 118, 118, 118, 118, 118, 118, 118, 118, 0, 0, 1299 0, 0, 0, 118, 118, 118, 118, 118, 118, 118, 1300 118, 118, 118, 118, 0, 0, 118, 118, 118, 118, 1301 131, 0, 118, 118, 0, 0, 0, 0, 0, 0, 1302 0, 0, 0, 0, 118, 118, 118, 118, 118, 118, 1303 118, 118, 118, 0, 0, 0, 118, 118, 118, 118, 1304 118, 118, 118, 131, 0, 0, 0, 0, 0, 0, 1305 131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1306 0, 0, 0, 0, 0, 0, 0, 0, 0, 131, 1307 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1308 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1309 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1310 0, 0, 0, 131, 0, 0, 131, 0, 0, 0, 1311 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1312 0, 0, 0, 0, 0, 0, 0, 113, 0, 0, 1313 0, 0, 0, 0, 0, 131, 0, 0, 0, 0, 1314 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1315 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1316 113, 0, 0, 0, 0, 0, 0, 113, 0, 0, 1317 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1318 0, 0, 0, 0, 0, 0, 113, 0, 0, 0, 1319 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1320 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1321 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1322 113, 0, 0, 113, 0, 0, 0, 0, 0, 0, 1323 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1324 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1325 0, 0, 113, 0, 0, 0, 0, 0, 0, 0, 1326 0, 0, 0, 0, 0, 0, 0, 131, 131, 131, 1327 131, 0, 0, 131, 0, 131, 131, 131, 131, 131, 1328 131, 131, 131, 0, 0, 0, 0, 0, 0, 0, 1329 0, 131, 131, 0, 131, 131, 131, 131, 131, 131, 1330 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 1331 131, 131, 0, 0, 0, 0, 0, 131, 131, 131, 1332 131, 131, 131, 131, 131, 131, 131, 131, 131, 0, 1333 0, 0, 0, 0, 131, 131, 131, 131, 131, 131, 1334 131, 131, 131, 131, 131, 0, 0, 131, 131, 131, 1335 131, 0, 0, 131, 131, 0, 0, 0, 0, 0, 1336 0, 0, 0, 0, 0, 131, 131, 131, 131, 131, 1337 131, 131, 131, 131, 0, 0, 0, 131, 131, 131, 1338 131, 131, 131, 131, 113, 113, 113, 113, 0, 0, 1339 113, 0, 113, 113, 113, 113, 113, 113, 113, 113, 1340 0, 0, 0, 0, 0, 0, 0, 0, 113, 113, 1341 0, 113, 113, 113, 113, 113, 113, 113, 113, 113, 1342 113, 113, 113, 113, 113, 113, 113, 113, 113, 0, 1343 0, 0, 0, 0, 113, 113, 113, 113, 113, 113, 1344 113, 113, 113, 113, 113, 113, 0, 0, 0, 0, 1345 0, 113, 113, 113, 113, 113, 113, 113, 113, 113, 1346 113, 113, 0, 0, 113, 113, 113, 113, 179, 0, 1347 113, 113, 0, 0, 0, 0, 0, 0, 0, 0, 1348 0, 0, 113, 113, 113, 113, 113, 113, 113, 113, 1349 113, 0, 0, 0, 113, 113, 113, 113, 113, 113, 1350 113, 179, 0, 0, 0, 0, 0, 0, 179, 0, 1351 0, 0, 179, 179, 0, 0, 0, 0, 0, 0, 1352 0, 0, 0, 0, 0, 0, 0, 179, 0, 0, 1353 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1354 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1355 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1356 0, 179, 0, 0, 0, 0, 0, 0, 0, 0, 1357 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1358 0, 0, 0, 0, 0, 154, 0, 0, 0, 0, 1359 0, 0, 0, 179, 0, 0, 0, 0, 0, 0, 1360 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1361 0, 0, 0, 0, 0, 0, 0, 0, 154, 0, 1362 0, 0, 0, 0, 0, 154, 154, 0, 154, 154, 1363 154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1364 0, 0, 0, 0, 154, 0, 0, 154, 0, 0, 1365 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1366 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1367 0, 0, 0, 0, 0, 0, 0, 0, 154, 0, 1368 0, 154, 0, 0, 0, 0, 0, 0, 0, 0, 1369 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1370 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1371 154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1372 0, 0, 0, 0, 0, 0, 179, 179, 179, 0, 1373 0, 0, 0, 179, 179, 179, 0, 179, 179, 179, 1374 179, 0, 0, 0, 0, 0, 0, 0, 0, 179, 1375 179, 0, 179, 179, 179, 179, 179, 179, 179, 179, 1376 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 1377 0, 0, 0, 0, 0, 179, 179, 179, 179, 179, 1378 179, 179, 179, 179, 179, 179, 179, 0, 0, 0, 1379 0, 0, 179, 179, 179, 179, 179, 179, 179, 179, 1380 179, 179, 179, 0, 0, 179, 179, 179, 179, 0, 1381 0, 179, 179, 0, 0, 0, 0, 0, 0, 0, 1382 0, 0, 0, 179, 179, 179, 179, 179, 179, 179, 1383 179, 179, 0, 0, 0, 179, 179, 179, 179, 179, 1384 179, 179, 154, 154, 154, 154, 0, 0, 154, 0, 1385 154, 154, 154, 154, 154, 154, 154, 154, 0, 0, 1386 0, 0, 0, 0, 0, 0, 154, 154, 0, 154, 1387 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 1388 154, 154, 154, 154, 154, 154, 154, 159, 0, 0, 1389 0, 154, 154, 0, 0, 0, 0, 0, 0, 0, 1390 0, 0, 0, 0, 154, 154, 154, 154, 154, 154, 1391 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 1392 159, 0, 0, 0, 0, 0, 0, 159, 154, 154, 1393 159, 0, 159, 159, 0, 0, 0, 0, 0, 0, 1394 0, 0, 0, 0, 0, 0, 159, 0, 0, 0, 1395 0, 0, 154, 154, 154, 154, 154, 154, 154, 0, 1396 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1397 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1398 159, 180, 0, 159, 0, 0, 0, 0, 0, 0, 1399 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1400 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1401 0, 0, 159, 0, 180, 0, 0, 0, 0, 0, 1402 0, 180, 180, 0, 0, 180, 180, 0, 0, 0, 1403 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1404 180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1405 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1406 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1407 247, 0, 0, 0, 180, 0, 0, 180, 0, 0, 1408 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1409 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1410 0, 0, 0, 247, 0, 0, 180, 0, 0, 0, 1411 247, 247, 0, 0, 247, 0, 0, 0, 0, 0, 1412 0, 0, 0, 0, 0, 0, 0, 0, 0, 247, 1413 247, 0, 247, 0, 0, 0, 0, 0, 0, 0, 1414 0, 0, 0, 0, 159, 159, 159, 159, 0, 0, 1415 159, 0, 159, 159, 159, 159, 159, 159, 159, 159, 1416 0, 0, 0, 247, 0, 0, 247, 0, 159, 159, 1417 0, 159, 159, 159, 159, 159, 159, 159, 159, 159, 1418 159, 159, 159, 159, 159, 159, 159, 159, 159, 0, 1419 0, 0, 0, 43, 159, 247, 0, 0, 0, 0, 1420 0, 0, 0, 0, 0, 0, 159, 159, 159, 159, 1421 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 1422 159, 159, 0, 0, 0, 0, 43, 0, 0, 0, 1423 159, 159, 0, 43, 0, 0, 0, 0, 180, 180, 1424 180, 180, 0, 0, 180, 0, 180, 180, 180, 180, 1425 180, 180, 43, 0, 159, 159, 159, 159, 159, 159, 1426 159, 0, 180, 180, 0, 180, 180, 180, 180, 180, 1427 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 1428 180, 180, 180, 0, 0, 0, 43, 0, 180, 43, 1429 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1430 0, 0, 0, 0, 0, 180, 180, 180, 180, 180, 1431 180, 180, 180, 180, 180, 180, 0, 0, 43, 0, 1432 0, 0, 0, 0, 180, 180, 0, 247, 247, 247, 1433 247, 0, 0, 247, 0, 0, 0, 0, 247, 0, 1434 0, 247, 247, 0, 0, 0, 98, 0, 180, 180, 1435 180, 180, 180, 180, 180, 0, 0, 0, 0, 0, 1436 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1437 0, 0, 0, 0, 0, 0, 0, 247, 247, 247, 1438 247, 247, 247, 247, 247, 247, 247, 247, 247, 0, 1439 0, 0, 0, 0, 247, 247, 247, 247, 247, 247, 1440 247, 247, 247, 247, 247, 98, 0, 247, 247, 247, 1441 247, 0, 0, 0, 0, 0, 0, 0, 0, 247, 1442 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 1443 247, 247, 247, 247, 0, 0, 0, 0, 0, 98, 1444 0, 0, 0, 247, 0, 0, 0, 0, 0, 0, 1445 43, 43, 43, 43, 0, 0, 43, 0, 0, 0, 1446 0, 43, 0, 0, 43, 43, 0, 0, 0, 0, 1447 0, 98, 0, 0, 0, 0, 0, 0, 0, 0, 1448 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1449 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1450 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 1451 43, 43, 0, 0, 0, 0, 0, 43, 43, 43, 1452 43, 43, 43, 43, 43, 43, 43, 43, 45, 0, 1453 43, 43, 43, 43, 0, 0, 0, 0, 0, 0, 1454 0, 0, 0, 0, 0, 0, 0, 0, 43, 43, 1455 43, 43, 43, 43, 43, 43, 43, 0, 0, 0, 1456 0, 45, 0, 0, 0, 0, 43, 0, 45, 0, 1457 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1458 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 1459 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1460 0, 0, 0, 0, 0, 0, 98, 0, 0, 0, 1461 0, 98, 98, 98, 0, 98, 98, 98, 98, 0, 1462 0, 45, 0, 0, 45, 0, 0, 98, 98, 0, 1463 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 1464 98, 98, 98, 98, 98, 98, 98, 98, 201, 96, 1465 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 1466 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1467 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1468 0, 0, 0, 0, 0, 0, 0, 0, 0, 98, 1469 98, 0, 0, 0, 0, 0, 255, 0, 0, 0, 1470 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 1471 0, 0, 0, 98, 98, 98, 98, 98, 98, 98, 1472 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1473 0, 0, 0, 255, 0, 0, 0, 255, 255, 255, 1474 255, 255, 96, 255, 0, 0, 0, 0, 0, 0, 1475 0, 0, 0, 0, 0, 255, 255, 0, 255, 0, 1476 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1477 92, 0, 0, 0, 96, 0, 0, 0, 0, 0, 1478 0, 0, 0, 0, 0, 45, 45, 45, 45, 255, 1479 0, 45, 0, 0, 0, 0, 45, 0, 0, 45, 1480 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1481 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1482 0, 255, 0, 0, 0, 0, 0, 0, 0, 92, 1483 0, 0, 0, 0, 94, 45, 45, 45, 45, 45, 1484 45, 45, 45, 45, 45, 45, 45, 0, 0, 0, 1485 0, 0, 45, 45, 45, 45, 45, 45, 45, 45, 1486 45, 45, 45, 92, 0, 45, 45, 45, 45, 0, 1487 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1488 0, 0, 0, 45, 45, 45, 45, 45, 45, 45, 1489 45, 45, 0, 94, 0, 92, 0, 0, 108, 0, 1490 0, 45, 0, 0, 0, 0, 0, 0, 0, 96, 1491 0, 0, 0, 0, 96, 96, 96, 0, 96, 96, 1492 96, 96, 0, 0, 0, 0, 0, 94, 0, 0, 1493 96, 96, 0, 96, 96, 96, 96, 96, 96, 96, 1494 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 1495 96, 202, 0, 0, 0, 0, 0, 108, 0, 94, 1496 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1497 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1498 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 1499 0, 108, 96, 96, 0, 0, 0, 0, 255, 0, 1500 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 1501 0, 0, 0, 0, 0, 0, 96, 96, 96, 96, 1502 96, 96, 96, 108, 110, 0, 0, 0, 0, 0, 1503 92, 0, 0, 0, 0, 92, 92, 92, 0, 92, 1504 92, 92, 92, 0, 0, 255, 255, 255, 255, 255, 1505 255, 92, 92, 0, 92, 92, 92, 92, 92, 92, 1506 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 1507 92, 92, 0, 0, 0, 0, 0, 0, 0, 0, 1508 0, 0, 0, 110, 0, 0, 0, 0, 117, 0, 1509 0, 0, 0, 0, 94, 0, 0, 0, 0, 94, 1510 94, 94, 0, 94, 94, 94, 94, 0, 0, 0, 1511 0, 0, 0, 92, 92, 94, 94, 110, 94, 94, 1512 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 1513 94, 94, 94, 94, 94, 94, 0, 92, 92, 92, 1514 92, 92, 92, 92, 0, 0, 0, 117, 0, 110, 1515 0, 0, 112, 0, 0, 0, 0, 0, 108, 0, 1516 0, 0, 0, 108, 108, 108, 0, 108, 108, 108, 1517 108, 0, 0, 0, 0, 0, 0, 94, 94, 108, 1518 108, 117, 108, 108, 108, 108, 108, 108, 108, 108, 1519 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 1520 0, 94, 94, 94, 94, 94, 94, 94, 0, 0, 1521 0, 112, 0, 117, 0, 0, 0, 0, 0, 0, 1522 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1523 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1524 0, 108, 108, 0, 0, 112, 0, 0, 0, 0, 1525 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1526 0, 0, 0, 0, 0, 108, 108, 108, 108, 108, 1527 108, 108, 0, 0, 0, 0, 0, 112, 0, 0, 1528 0, 0, 0, 0, 110, 0, 0, 0, 0, 110, 1529 110, 110, 0, 110, 110, 110, 110, 0, 0, 0, 1530 0, 0, 0, 0, 0, 110, 110, 0, 110, 110, 1531 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 1532 110, 110, 110, 110, 110, 110, 0, 0, 0, 0, 1533 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1534 0, 0, 0, 0, 0, 0, 0, 0, 117, 0, 1535 0, 0, 0, 117, 117, 117, 0, 117, 117, 117, 1536 117, 0, 0, 0, 0, 0, 0, 110, 110, 117, 1537 117, 0, 117, 117, 117, 117, 117, 117, 117, 117, 1538 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 1539 0, 110, 110, 110, 110, 110, 110, 110, 0, 0, 1540 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1541 0, 0, 112, 0, 0, 0, 0, 112, 112, 112, 1542 0, 112, 112, 112, 112, 0, 0, 0, 0, 0, 1543 0, 117, 117, 112, 112, 83, 112, 112, 112, 112, 1544 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 1545 112, 112, 112, 112, 0, 117, 117, 117, 117, 117, 1546 117, 117, 0, 0, 0, 0, 0, 0, 83, 0, 1547 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 1548 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1549 0, 0, 0, 0, 83, 112, 112, 0, 0, 0, 1550 0, 0, 0, 0, 0, 159, 0, 0, 0, 0, 1551 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 1552 112, 112, 112, 112, 112, 112, 0, 0, 83, 0, 1553 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 1554 0, 0, 0, 0, 0, 0, 0, 0, 159, 0, 1555 159, 159, 0, 0, 0, 0, 0, 0, 0, 0, 1556 83, 0, 0, 0, 159, 0, 0, 0, 0, 0, 1557 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1558 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1559 0, 0, 0, 0, 0, 0, 0, 0, 159, 0, 1560 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1561 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1562 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1563 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1564 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1565 95, 0, 0, 0, 0, 0, 0, 92, 0, 0, 1566 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 1567 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1568 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1569 0, 0, 83, 83, 83, 0, 0, 0, 83, 0, 1570 83, 83, 83, 83, 83, 83, 83, 83, 32, 0, 1571 0, 0, 0, 93, 0, 0, 83, 83, 0, 83, 1572 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 1573 83, 83, 83, 83, 83, 83, 83, 0, 0, 0, 1574 33, 0, 83, 83, 83, 83, 83, 83, 83, 83, 1575 83, 83, 83, 83, 0, 0, 0, 0, 0, 83, 1576 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 1577 0, 0, 83, 83, 83, 83, 159, 159, 83, 83, 1578 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1579 83, 83, 83, 83, 83, 83, 83, 83, 83, 0, 1580 0, 0, 83, 83, 83, 83, 83, 83, 0, 0, 1581 0, 0, 0, 159, 159, 159, 159, 159, 159, 159, 1582 159, 159, 159, 159, 159, 159, 159, 159, 159, 0, 1583 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1584 0, 0, 159, 159, 159, 159, 6, 0, 0, 0, 1585 0, 0, 0, 6, 0, 0, 0, 0, 6, 0, 1586 159, 159, 159, 159, 159, 159, 159, 159, 159, 0, 1587 0, 0, 0, 0, 295, 296, 51, 8, 9, 0, 1588 52, 0, 0, 0, 0, 53, 10, 11, 297, 298, 1589 14, 15, 16, 17, 18, 19, 20, 21, 0, 0, 1590 22, 0, 0, 0, 6, 0, 0, 0, 0, 6, 1591 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1592 0, 0, 0, 0, 56, 57, 58, 59, 60, 61, 1593 62, 63, 64, 65, 66, 67, 6, 0, 0, 0, 1594 0, 68, 69, 70, 71, 72, 73, 74, 75, 76, 1595 77, 78, 23, 0, 79, 80, 81, 82, 24, 25, 1596 0, 0, 26, 0, 27, 0, 0, 0, 0, 0, 1597 0, 0, 83, 84, 85, 86, 87, 88, 89, 90, 1598 91, 28, 95, 29, 0, 0, 0, 0, 0, 110, 1599 30, 31, 0, 0, 94, 0, 0, 0, 0, 0, 1600 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1601 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1602 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1603 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1604 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, 1605 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1606 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1607 6, 6, 6, 6, 6, 0, 6, 0, 0, 0, 1608 0, 6, 6, 6, 6, 6, 6, 6, 6, 6, 1609 6, 6, 6, 6, 0, 0, 6, 0, 0, 111, 1610 0, 0, 0, 0, 0, 0, 110, 315, 0, 0, 1611 0, 94, 0, 0, 0, 0, 0, 0, 0, 0, 1612 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 1613 6, 6, 0, 0, 0, 0, 0, 6, 6, 6, 1614 6, 6, 6, 6, 6, 6, 6, 6, 6, 0, 1615 6, 6, 6, 6, 6, 6, 0, 0, 6, 0, 1616 6, 0, 93, 0, 0, 0, 0, 0, 6, 6, 1617 6, 6, 6, 6, 6, 6, 6, 6, 0, 6, 1618 0, 0, 0, 0, 0, 0, 6, 6, 0, 0, 1619 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1620 0, 0, 0, 0, 0, 0, 49, 50, 51, 8, 1621 0, 0, 52, 0, 126, 127, 128, 53, 129, 130, 1622 131, 132, 0, 0, 0, 0, 0, 0, 0, 0, 1623 133, 134, 0, 135, 136, 137, 138, 139, 140, 141, 1624 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 1625 152, 0, 0, 0, 0, 0, 56, 57, 58, 59, 1626 60, 61, 62, 63, 64, 65, 66, 67, 0, 0, 1627 0, 0, 0, 68, 69, 70, 71, 72, 73, 74, 1628 75, 76, 77, 78, 111, 0, 79, 80, 81, 82, 1629 0, 92, 153, 154, 0, 0, 94, 276, 0, 0, 1630 0, 0, 0, 0, 83, 84, 85, 86, 87, 88, 1631 89, 90, 91, 0, 0, 0, 155, 156, 157, 158, 1632 159, 160, 30, 49, 50, 51, 8, 0, 0, 52, 1633 0, 0, 0, 0, 53, 0, 0, 54, 55, 0, 1634 0, 0, 0, 0, 0, 0, 0, 93, 0, 0, 1635 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1636 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1637 0, 0, 0, 56, 57, 58, 59, 60, 61, 62, 1638 63, 64, 65, 66, 67, 0, 0, 0, 0, 0, 1639 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 1640 78, 95, 0, 79, 80, 81, 82, 0, 92, 0, 1641 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 1642 0, 83, 84, 85, 86, 87, 88, 89, 90, 91, 1643 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 1644 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1645 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1646 0, 0, 0, 0, 93, 0, 0, 0, 0, 0, 1647 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1648 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1649 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1650 0, 0, 0, 0, 0, 0, 0, 0, 49, 50, 1651 51, 8, 0, 0, 52, 0, 0, 0, 0, 53, 1652 0, 0, 54, 55, 111, 0, 0, 0, 0, 0, 1653 0, 110, 0, 0, 0, 0, 94, 0, 0, 0, 1654 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1655 0, 0, 0, 0, 0, 0, 0, 0, 56, 57, 1656 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 1657 0, 0, 0, 0, 0, 68, 69, 70, 71, 72, 1658 73, 74, 75, 76, 77, 78, 0, 93, 79, 80, 1659 81, 82, 0, 0, 0, 0, 0, 0, 0, 0, 1660 0, 0, 0, 0, 0, 0, 83, 84, 85, 86, 1661 87, 88, 89, 90, 91, 0, 0, 0, 0, 0, 1662 0, 0, 0, 0, 30, 49, 50, 51, 8, 0, 1663 0, 52, 0, 0, 0, 0, 53, 0, 0, 54, 1664 55, 111, 0, 0, 0, 0, 0, 0, 92, 0, 1665 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 1666 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1667 0, 0, 0, 0, 0, 56, 57, 58, 59, 60, 1668 61, 62, 63, 64, 65, 66, 67, 0, 0, 0, 1669 0, 0, 68, 69, 70, 71, 72, 73, 74, 75, 1670 76, 77, 78, 0, 93, 79, 80, 81, 82, 0, 1671 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1672 0, 0, 0, 83, 84, 85, 86, 87, 88, 89, 1673 90, 91, 0, 0, 0, 0, 0, 0, 0, 0, 1674 0, 30, 0, 0, 0, 0, 0, 0, 49, 50, 1675 51, 8, 0, 0, 52, 0, 0, 0, 0, 53, 1676 0, 0, 54, 55, 111, 0, 0, 0, 0, 0, 1677 0, 283, 0, 0, 0, 0, 94, 0, 0, 0, 1678 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1679 0, 0, 0, 0, 0, 0, 0, 0, 56, 57, 1680 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 1681 0, 0, 0, 0, 0, 68, 69, 70, 71, 72, 1682 73, 74, 75, 76, 77, 78, 0, 93, 79, 80, 1683 81, 82, 0, 0, 0, 0, 0, 0, 0, 0, 1684 0, 0, 0, 0, 0, 0, 83, 84, 85, 86, 1685 87, 88, 89, 90, 91, 0, 0, 0, 0, 0, 1686 0, 0, 0, 0, 30, 49, 50, 51, 8, 0, 1687 0, 52, 0, 0, 0, 0, 53, 0, 0, 54, 1688 55, 95, 0, 0, 0, 0, 0, 0, 277, 0, 1689 0, 0, 0, 94, 276, 0, 0, 0, 0, 0, 1690 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1691 0, 0, 0, 0, 0, 56, 57, 58, 59, 60, 1692 61, 62, 63, 64, 65, 66, 67, 0, 0, 0, 1693 0, 0, 68, 69, 70, 71, 72, 73, 74, 75, 1694 76, 77, 78, 0, 93, 79, 80, 81, 82, 0, 1695 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1696 0, 0, 0, 83, 84, 85, 86, 87, 88, 89, 1697 90, 91, 0, 0, 0, 0, 0, 0, 0, 0, 1698 0, 30, 0, 0, 0, 0, 0, 0, 49, 50, 1699 51, 8, 0, 0, 52, 0, 0, 0, 0, 53, 1700 0, 0, 54, 55, 95, 0, 0, 0, 0, 0, 1701 0, 110, 0, 442, 0, 0, 94, 0, 0, 0, 1702 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1703 0, 0, 0, 0, 0, 0, 0, 0, 56, 57, 1704 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 1705 0, 0, 0, 0, 0, 68, 69, 70, 71, 72, 1706 73, 74, 75, 76, 77, 78, 0, 93, 79, 80, 1707 81, 82, 0, 0, 0, 0, 0, 0, 0, 0, 1708 0, 0, 0, 0, 0, 0, 83, 84, 85, 86, 1709 87, 88, 89, 90, 91, 0, 0, 0, 0, 0, 1710 0, 0, 0, 0, 30, 273, 50, 51, 0, 0, 1711 0, 274, 0, 0, 0, 0, 275, 0, 0, 54, 1712 55, 95, 0, 0, 0, 0, 0, 0, 110, 0, 1713 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 1714 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1715 0, 0, 0, 0, 0, 56, 57, 58, 59, 60, 1716 61, 62, 63, 64, 65, 66, 67, 0, 0, 0, 1717 0, 0, 68, 69, 70, 71, 72, 73, 74, 75, 1718 76, 77, 78, 0, 93, 79, 80, 81, 82, 0, 1719 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1720 0, 0, 0, 83, 84, 85, 86, 87, 88, 89, 1721 90, 91, 0, 0, 0, 0, 0, 0, 0, 0, 1722 0, 0, 0, 0, 0, 0, 0, 0, 49, 50, 1723 51, 0, 0, 0, 52, 0, 0, 0, 0, 53, 1724 0, 0, 54, 55, 95, 0, 0, 0, 0, 0, 1725 0, 92, 0, 0, 0, 0, 94, 0, 0, 0, 1726 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1727 0, 0, 0, 0, 0, 0, 0, 0, 56, 57, 1728 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 1729 0, 0, 0, 0, 0, 68, 69, 70, 71, 72, 1730 73, 74, 75, 76, 77, 78, 0, 93, 79, 80, 1731 81, 82, 0, 0, 0, 0, 0, 0, 0, 0, 1732 0, 0, 0, 0, 0, 0, 83, 84, 85, 86, 1733 87, 88, 89, 90, 91, 0, 0, 0, 0, 0, 1734 0, 0, 0, 0, 0, 49, 50, 51, 0, 0, 1735 0, 52, 0, 0, 0, 0, 53, 0, 0, 54, 1736 55, 95, 0, 0, 0, 0, 0, 0, 283, 0, 1737 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 1738 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1739 0, 0, 0, 0, 0, 56, 57, 58, 59, 60, 1740 61, 62, 63, 64, 65, 66, 67, 0, 0, 0, 1741 0, 0, 68, 69, 70, 71, 72, 73, 74, 75, 1742 76, 77, 78, 0, 93, 79, 80, 81, 82, 0, 1743 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1744 0, 0, 0, 83, 84, 85, 86, 87, 88, 89, 1745 90, 91, 0, 0, 0, 0, 0, 0, 0, 0, 1746 0, 0, 0, 0, 0, 0, 0, 0, 49, 50, 1747 51, 0, 0, 0, 52, 0, 0, 0, 0, 53, 1748 0, 0, 54, 55, 95, 0, 0, 0, 0, 0, 1749 0, 110, 0, 0, 0, 0, 94, 0, 0, 0, 1750 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1751 0, 0, 0, 0, 0, 0, 0, 0, 56, 57, 1752 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 1753 0, 0, 0, 0, 0, 68, 69, 70, 71, 72, 1754 73, 74, 75, 76, 77, 78, 0, 93, 79, 80, 1755 81, 82, 0, 0, 0, 0, 0, 0, 0, 0, 1756 0, 0, 0, 0, 0, 0, 83, 84, 85, 86, 1757 87, 88, 89, 90, 91, 0, 0, 0, 0, 0, 1758 0, 0, 0, 0, 0, 49, 50, 51, 0, 0, 1759 0, 52, 0, 0, 0, 0, 53, 0, 0, 54, 1760 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1761 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 1762 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1763 0, 0, 0, 0, 0, 56, 57, 58, 59, 60, 1764 61, 62, 63, 64, 65, 66, 67, 0, 0, 32, 1765 0, 0, 68, 69, 70, 71, 72, 73, 74, 75, 1766 76, 77, 78, 0, 0, 79, 80, 81, 82, 0, 1767 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1768 0, 33, 0, 83, 84, 85, 86, 87, 88, 89, 1769 90, 91, 0, 0, 0, 0, 0, 0, 0, 0, 1770 0, 0, 0, 0, 0, 0, 0, 0, 49, 50, 1771 51, 0, 0, 0, 52, 0, 0, 0, 0, 53, 1772 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1773 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1774 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1775 0, 0, 0, 0, 0, 0, 0, 0, 56, 57, 1776 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 1777 0, 0, 0, 0, 0, 68, 69, 70, 71, 72, 1778 73, 74, 75, 76, 77, 78, 0, 0, 79, 80, 1779 81, 82, 0, 0, 0, 0, 0, 0, 0, 0, 1780 0, 0, 0, 0, 0, 0, 83, 84, 85, 86, 1781 87, 88, 89, 90, 91, 6, 7, 0, 8, 9, 1782 0, 0, 0, 0, 0, 0, 0, 10, 11, 12, 1783 13, 14, 15, 16, 17, 18, 19, 20, 21, 0, 1784 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 1785 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1786 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1787 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1788 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1789 0, 0, 0, 23, 0, 0, 0, 0, 0, 24, 1790 25, 0, 0, 26, 0, 27, 0, 0, 0, 0, 1791 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1792 0, 0, 28, 0, 29, 0, 0, 0, 0, 0, 1793 0, 30, 31, 1794}; 1795short yycheck[] = { 25, 1796 59, 44, 37, 29, 0, 31, 111, 42, 43, 44, 1797 45, 37, 47, 92, 37, 59, 125, 260, 100, 42, 1798 43, 0, 45, 0, 47, 60, 43, 62, 45, 41, 1799 0, 260, 0, 0, 273, 37, 58, 60, 277, 62, 1800 42, 43, 37, 45, 96, 47, 260, 42, 43, 43, 1801 45, 45, 47, 4, 268, 58, 165, 36, 61, 94, 1802 105, 41, 141, 42, 44, 60, 92, 62, 94, 95, 1803 107, 94, 41, 41, 25, 44, 44, 271, 272, 61, 1804 31, 107, 59, 120, 258, 111, 37, 96, 43, 59, 1805 45, 59, 94, 336, 120, 91, 257, 258, 43, 94, 1806 45, 0, 258, 129, 130, 131, 132, 133, 134, 135, 1807 136, 137, 138, 139, 140, 141, 93, 62, 144, 145, 1808 146, 349, 350, 93, 40, 93, 93, 123, 25, 155, 1809 156, 370, 371, 348, 31, 0, 61, 219, 0, 165, 1810 336, 246, 247, 262, 373, 250, 251, 40, 125, 228, 1811 229, 271, 272, 351, 352, 125, 107, 125, 125, 40, 1812 59, 355, 356, 121, 122, 404, 40, 118, 407, 120, 1813 61, 41, 40, 43, 125, 45, 40, 203, 204, 205, 1814 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 1815 216, 217, 218, 40, 93, 92, 278, 59, 277, 0, 1816 40, 40, 228, 229, 283, 257, 157, 158, 159, 260, 1817 107, 263, 40, 40, 165, 258, 268, 243, 40, 291, 1818 246, 247, 248, 120, 250, 251, 125, 258, 93, 274, 1819 275, 93, 33, 262, 41, 355, 356, 260, 41, 40, 1820 137, 138, 139, 140, 45, 324, 325, 43, 257, 45, 1821 302, 277, 94, 264, 263, 303, 46, 283, 257, 268, 1822 125, 257, 258, 125, 260, 261, 62, 302, 165, 93, 1823 305, 125, 93, 269, 270, 271, 272, 273, 274, 275, 1824 276, 277, 278, 279, 280, 257, 262, 283, 262, 306, 1825 91, 41, 318, 319, 403, 96, 264, 323, 324, 325, 1826 302, 252, 253, 305, 41, 44, 257, 319, 320, 321, 1827 322, 323, 306, 210, 349, 350, 351, 352, 353, 354, 1828 0, 218, 123, 291, 369, 0, 349, 350, 351, 352, 1829 353, 354, 41, 41, 302, 41, 41, 305, 43, 335, 1830 45, 43, 44, 45, 44, 341, 342, 44, 41, 345, 1831 373, 347, 41, 41, 349, 0, 351, 352, 353, 354, 1832 304, 0, 349, 43, 262, 45, 41, 44, 364, 44, 1833 366, 397, 398, 399, 257, 401, 365, 373, 374, 59, 1834 277, 349, 350, 305, 59, 43, 44, 45, 33, 415, 1835 416, 41, 37, 41, 260, 40, 41, 42, 43, 44, 1836 45, 41, 47, 41, 43, 41, 45, 41, 91, 346, 1837 41, 437, 262, 93, 59, 60, 442, 62, 93, 91, 1838 59, 318, 319, 0, 37, 41, 323, 27, 260, 42, 1839 37, 43, 44, 45, 47, 42, 43, 346, 45, 44, 1840 47, 346, 346, 43, 165, 125, 409, 31, 93, 36, 1841 125, 96, 403, 60, 93, 62, 257, 258, 259, 260, 1842 261, 193, 263, 43, 44, 45, -1, 268, 269, 270, 1843 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 1844 125, 94, 283, 43, 44, 45, 125, 94, 319, 320, 1845 321, 322, 323, 93, 43, 44, 45, 43, 44, 45, 1846 397, 398, 43, 44, 45, -1, 307, 308, 309, 310, 1847 311, 312, 313, 314, 315, 316, 317, 318, 415, 416, 1848 -1, -1, -1, 324, 325, 326, 327, 328, 329, 330, 1849 331, 332, 333, 334, 335, -1, 337, 338, 339, 340, 1850 341, 342, 37, -1, 345, -1, 347, 42, 43, -1, 1851 45, -1, 47, -1, 355, 356, 357, 358, 359, 360, 1852 361, 362, 363, 364, -1, 366, -1, 167, -1, -1, 1853 46, -1, 373, 374, 174, 175, 176, 177, 178, 179, 1854 180, 181, 182, 183, 184, 91, -1, -1, 260, 264, 1855 273, 274, 275, 276, 277, 278, 268, 280, -1, 94, 1856 -1, 273, 274, 275, 276, 277, 278, -1, 280, -1, 1857 -1, -1, 257, 258, 259, 260, 291, -1, 263, 264, 1858 265, 266, 267, 268, 269, 270, 271, 272, -1, -1, 1859 46, -1, -1, -1, -1, -1, 281, 282, 0, 284, 1860 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 1861 295, 296, 297, 298, 299, 300, 301, 302, -1, -1, 1862 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 1863 315, 316, 317, 318, 349, 350, -1, -1, -1, 324, 1864 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 1865 0, 0, 337, 338, 339, 340, 0, 59, 343, 344, 1866 0, 346, -1, -1, 349, 350, 351, 352, 353, 354, 1867 355, 356, 357, 358, 359, 360, 361, 362, 363, 0, 1868 -1, -1, 367, 368, 369, 370, 371, 372, 373, 33, 1869 -1, 93, -1, 37, -1, -1, 40, 41, 42, 43, 1870 44, 45, 349, 47, 351, 352, 353, 354, -1, 59, 1871 59, -1, -1, -1, 260, 59, 60, -1, 62, 59, 1872 -1, -1, -1, 125, -1, -1, -1, 273, 274, 275, 1873 276, 277, 278, -1, 280, -1, -1, -1, 59, -1, 1874 -1, -1, 382, 93, 93, -1, 386, 387, -1, 93, 1875 -1, -1, 96, 93, -1, 271, 272, -1, -1, -1, 1876 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1877 -1, -1, 93, 0, -1, 125, 125, -1, -1, -1, 1878 -1, 125, -1, -1, -1, 125, -1, -1, -1, -1, 1879 -1, -1, 308, 309, 310, 311, 312, 313, 314, 315, 1880 316, 317, 318, -1, 125, -1, 33, -1, -1, -1, 1881 37, -1, -1, 40, 41, 42, 43, 44, 45, -1, 1882 47, 337, 338, 339, 340, -1, -1, -1, -1, -1, 1883 -1, -1, 59, 60, -1, 62, -1, -1, -1, 355, 1884 356, 357, 358, 359, 360, 361, 362, 363, -1, -1, 1885 -1, -1, 308, 309, 310, 311, 312, 313, 314, 315, 1886 316, 317, 318, -1, -1, -1, 93, -1, -1, 96, 1887 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1888 -1, 337, 338, 339, 340, -1, -1, -1, -1, -1, 1889 -1, -1, -1, -1, -1, -1, -1, -1, 125, 355, 1890 356, 357, 358, 359, 360, 361, 362, 363, -1, -1, 1891 -1, -1, -1, 257, 258, 259, 260, -1, -1, 263, 1892 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 1893 -1, -1, -1, -1, -1, -1, -1, 281, 282, -1, 1894 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 1895 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 1896 -1, 305, 306, 307, 308, 309, 310, 311, 312, 313, 1897 314, 315, 316, 317, 318, -1, -1, -1, -1, -1, 1898 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 1899 334, 46, -1, 337, 338, 339, 340, -1, -1, 343, 1900 344, -1, 346, -1, -1, 349, 350, 351, 352, 353, 1901 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 1902 -1, -1, -1, 367, 368, 369, 370, 371, 372, 373, 1903 257, 258, 259, 260, -1, -1, 263, 264, 265, 266, 1904 267, 268, 269, 270, 271, 272, -1, -1, -1, -1, 1905 -1, -1, -1, -1, 281, 282, -1, 284, 285, 286, 1906 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 1907 297, 298, 299, 300, 301, 302, -1, -1, 305, 306, 1908 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 1909 317, 318, -1, -1, -1, -1, -1, 324, 325, 326, 1910 327, 328, 329, 330, 331, 332, 333, 334, -1, -1, 1911 337, 338, 339, 340, 0, -1, 343, 344, -1, 346, 1912 -1, -1, 349, 350, 351, 352, 353, 354, 355, 356, 1913 357, 358, 359, 360, 361, 362, 363, -1, -1, -1, 1914 367, 368, 369, 370, 371, 372, 373, 33, -1, -1, 1915 -1, 37, -1, -1, 40, 41, 42, 43, 44, 45, 1916 -1, 47, 37, -1, -1, -1, -1, 42, 43, -1, 1917 45, -1, 47, 59, 60, -1, 62, -1, -1, -1, 1918 -1, -1, -1, -1, -1, 60, -1, 62, -1, -1, 1919 37, -1, -1, -1, -1, 42, 43, -1, 45, -1, 1920 47, -1, -1, -1, -1, -1, -1, 93, -1, -1, 1921 96, -1, -1, 60, -1, 62, 271, 272, -1, 94, 1922 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1923 -1, 0, -1, -1, -1, -1, -1, -1, -1, 125, 1924 -1, -1, -1, -1, -1, -1, -1, 94, -1, -1, 1925 -1, -1, -1, 308, 309, 310, 311, 312, 313, 314, 1926 315, 316, 317, 318, 33, -1, -1, -1, 37, -1, 1927 -1, 40, 41, 42, 43, 44, 45, -1, 47, -1, 1928 -1, -1, 337, 338, 339, 340, -1, -1, -1, -1, 1929 59, 60, -1, 62, -1, -1, -1, -1, -1, -1, 1930 355, 356, 357, 358, 359, 360, 361, 362, 363, -1, 1931 -1, 37, -1, -1, -1, -1, 42, 43, 44, 45, 1932 -1, 47, -1, -1, 93, -1, -1, 96, -1, -1, 1933 -1, -1, 37, -1, 60, -1, 62, 42, 43, 44, 1934 45, -1, 47, -1, -1, -1, -1, -1, -1, -1, 1935 -1, -1, -1, -1, -1, 60, 125, 62, -1, -1, 1936 -1, -1, -1, -1, -1, -1, -1, -1, 94, -1, 1937 -1, 257, 258, 259, 260, -1, -1, 263, 264, 265, 1938 266, 267, 268, 269, 270, 271, 272, -1, -1, 94, 1939 -1, -1, -1, -1, -1, 281, 282, -1, 284, 285, 1940 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 1941 296, 297, 298, 299, 300, 301, 302, -1, -1, 305, 1942 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 1943 316, 317, 318, -1, -1, -1, -1, -1, 324, 325, 1944 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 1945 -1, 337, 338, 339, 340, -1, -1, 343, 344, -1, 1946 346, -1, -1, 349, 350, 351, 352, 353, 354, 355, 1947 356, 357, 358, 359, 360, 361, 362, 363, 353, 354, 1948 -1, 367, 368, 369, 370, 371, 372, 373, 257, 258, 1949 259, 260, -1, -1, 263, 264, 265, 266, 267, 268, 1950 269, 270, 271, 272, 351, 352, 353, 354, -1, -1, 1951 -1, -1, 281, 282, -1, 284, 285, 286, 287, 288, 1952 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 1953 299, 300, 301, 302, -1, -1, 305, 306, 307, 308, 1954 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 1955 -1, -1, -1, -1, -1, 324, 325, 326, 327, 328, 1956 329, 330, 331, 332, 333, 334, -1, -1, 337, 338, 1957 339, 340, 0, -1, 343, 344, 302, 346, -1, 305, 1958 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 1959 359, 360, 361, 362, 363, -1, -1, -1, 367, 368, 1960 369, 370, 371, 372, 373, 33, -1, -1, -1, 37, 1961 -1, -1, 40, 41, 42, 43, 44, 45, -1, 47, 1962 -1, -1, -1, 349, 350, 351, 352, 353, 354, -1, 1963 -1, 59, 60, -1, 62, -1, -1, -1, -1, -1, 1964 -1, -1, -1, -1, 349, 350, 351, 352, 353, 354, 1965 -1, -1, 37, -1, -1, -1, -1, 42, 43, 44, 1966 45, -1, 47, -1, -1, 93, -1, -1, 96, -1, 1967 -1, -1, 0, -1, -1, 60, -1, 62, -1, -1, 1968 -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 1969 -1, -1, -1, -1, -1, -1, -1, 125, -1, -1, 1970 -1, -1, -1, -1, -1, -1, -1, -1, -1, 94, 1971 -1, -1, -1, 41, -1, -1, 44, -1, -1, -1, 1972 -1, -1, 33, -1, -1, -1, -1, -1, -1, 40, 1973 41, 59, 43, 44, 45, -1, -1, -1, -1, -1, 1974 -1, -1, -1, -1, -1, -1, -1, -1, 59, 60, 1975 -1, 62, 37, -1, -1, -1, -1, 42, 43, 44, 1976 45, -1, 47, -1, 37, 93, -1, -1, -1, 42, 1977 43, -1, 45, -1, 47, 60, -1, 62, -1, -1, 1978 -1, -1, 93, -1, -1, 96, -1, 60, 37, 62, 1979 -1, -1, -1, 42, 43, -1, 45, 125, 47, -1, 1980 -1, -1, -1, -1, -1, -1, -1, -1, -1, 94, 1981 -1, 60, -1, 62, 125, -1, -1, -1, -1, -1, 1982 -1, 94, -1, -1, -1, -1, -1, -1, -1, 257, 1983 258, 259, 260, -1, -1, 263, 264, 265, 266, 267, 1984 268, 269, 270, 271, 272, 94, -1, -1, -1, -1, 1985 -1, -1, -1, 281, 282, -1, 284, 285, 286, 287, 1986 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 1987 298, 299, 300, 301, 302, -1, -1, 305, 306, 307, 1988 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 1989 318, -1, -1, -1, -1, -1, 324, 325, 326, 327, 1990 328, 329, 330, 331, 332, 333, 334, -1, -1, 337, 1991 338, 339, 340, 102, -1, 343, 344, 302, 346, -1, 1992 305, 349, 350, 351, 352, 353, 354, 355, 356, 357, 1993 358, 359, 360, 361, 362, 363, 264, -1, -1, 367, 1994 368, 369, 370, 371, 372, 373, 257, 258, 259, 260, 1995 -1, 140, 263, 264, 265, 266, 267, 268, 269, 270, 1996 271, 272, -1, 291, 349, 350, 351, 352, 353, 354, 1997 281, 282, -1, 284, 285, 286, 287, 288, 289, 290, 1998 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 1999 301, 302, -1, -1, 305, 306, 307, 308, 309, 310, 2000 311, 312, 313, 314, 315, 316, 317, 318, -1, -1, 2001 -1, -1, -1, 324, 325, 326, 327, 328, 329, 330, 2002 331, 332, 333, 334, -1, -1, 337, 338, 339, 340, 2003 0, -1, 343, 344, -1, 346, -1, -1, 349, 350, 2004 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 2005 361, 362, 363, -1, -1, -1, 367, 368, 369, 370, 2006 371, 372, 373, 33, 349, 350, 351, 352, 353, 354, 2007 40, 41, -1, 43, 44, 45, 349, 350, 351, 352, 2008 353, 354, -1, -1, 273, -1, -1, -1, 277, 59, 2009 60, 280, 62, -1, -1, -1, -1, -1, -1, -1, 2010 349, 350, 351, 352, 353, 354, -1, -1, -1, 308, 2011 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 2012 -1, -1, -1, 93, -1, -1, 96, -1, -1, -1, 2013 0, -1, -1, -1, -1, -1, -1, -1, 337, 338, 2014 339, 340, -1, -1, -1, -1, -1, 0, -1, -1, 2015 -1, -1, -1, -1, -1, 125, 355, 356, 357, 358, 2016 359, 360, 361, 362, 363, -1, -1, -1, -1, -1, 2017 -1, 41, -1, -1, 44, -1, -1, -1, -1, -1, 2018 33, 370, 371, -1, -1, -1, -1, 40, 41, 59, 2019 -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, 2020 -1, -1, -1, -1, -1, -1, 59, 60, -1, 62, 2021 -1, -1, -1, -1, -1, 404, -1, -1, 407, -1, 2022 -1, -1, -1, 93, -1, -1, -1, -1, -1, 37, 2023 -1, -1, -1, -1, 42, 43, -1, 45, -1, 47, 2024 93, -1, -1, 96, -1, -1, -1, -1, -1, -1, 2025 -1, -1, 60, -1, 62, 125, -1, -1, -1, -1, 2026 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2027 -1, -1, 125, -1, -1, -1, -1, -1, -1, -1, 2028 -1, -1, -1, -1, -1, -1, 94, 257, 258, 259, 2029 260, -1, -1, 263, 264, 265, 266, 267, 268, 269, 2030 270, 271, 272, -1, 92, -1, -1, -1, -1, -1, 2031 -1, 281, 282, -1, 284, 285, 286, 287, 288, 289, 2032 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 2033 300, 301, 302, -1, -1, 305, 306, 307, 308, 309, 2034 310, 311, 312, 313, 314, 315, 316, 317, 318, 137, 2035 138, 139, 140, -1, 324, 325, 326, 327, 328, 329, 2036 330, 331, 332, 333, 334, -1, -1, 337, 338, 339, 2037 340, -1, -1, 343, 344, -1, 346, 165, -1, 349, 2038 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 2039 360, 361, 362, 363, 264, -1, -1, 367, 368, 369, 2040 370, 371, 372, 373, 257, 258, 259, 260, -1, -1, 2041 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 2042 -1, 291, 210, -1, -1, -1, -1, -1, 281, 282, 2043 218, 284, 285, 286, 287, 288, 289, 290, 291, 292, 2044 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 2045 -1, -1, 305, 306, 307, 308, 309, 310, 311, 312, 2046 313, 314, 315, 316, 317, 318, 0, -1, -1, -1, 2047 -1, 324, 325, 326, 327, 328, 329, 330, 331, 332, 2048 333, 334, 290, -1, 337, 338, 339, 340, 0, 277, 2049 343, 344, -1, 346, -1, -1, 349, 350, 351, 352, 2050 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 2051 363, -1, -1, -1, 367, 368, 369, 370, 371, 372, 2052 373, 33, -1, -1, -1, 59, -1, -1, 40, 41, 2053 318, 319, 44, -1, -1, 323, -1, -1, -1, -1, 2054 -1, 349, 350, 351, 352, 353, 354, 59, 60, -1, 2055 62, -1, -1, -1, -1, -1, -1, -1, -1, 93, 2056 -1, -1, 96, -1, -1, -1, -1, -1, -1, -1, 2057 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2058 -1, 93, -1, -1, 96, -1, -1, -1, -1, -1, 2059 -1, 125, -1, -1, -1, -1, -1, -1, -1, -1, 2060 -1, -1, -1, -1, -1, 0, -1, -1, -1, 397, 2061 398, -1, -1, 125, -1, -1, -1, -1, -1, -1, 2062 -1, -1, -1, -1, -1, -1, -1, 415, 416, -1, 2063 -1, -1, -1, -1, -1, -1, -1, -1, 33, -1, 2064 -1, -1, -1, -1, -1, 40, 41, -1, -1, 44, 2065 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2066 -1, -1, -1, -1, 59, 60, -1, 62, -1, -1, 2067 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2068 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2069 -1, -1, -1, -1, -1, -1, -1, -1, 93, -1, 2070 -1, 96, -1, -1, -1, -1, -1, -1, -1, -1, 2071 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2072 -1, -1, -1, 257, -1, -1, -1, -1, -1, 263, 2073 125, -1, -1, -1, 268, -1, -1, -1, -1, -1, 2074 -1, -1, -1, -1, -1, 257, 258, 259, 260, -1, 2075 -1, 263, 264, 265, 266, 267, 268, 269, 270, 271, 2076 272, -1, -1, -1, -1, -1, -1, -1, 302, 281, 2077 282, -1, 284, 285, 286, 287, 288, 289, 290, 291, 2078 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 2079 302, -1, -1, 305, 306, 307, 308, 309, 310, 311, 2080 312, 313, 314, 315, 316, 317, 318, -1, -1, -1, 2081 -1, -1, 324, 325, 326, 327, 328, 329, 330, 331, 2082 332, 333, 334, -1, -1, 337, 338, 339, 340, -1, 2083 -1, 343, 344, -1, 346, -1, -1, 349, 350, 351, 2084 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 2085 362, 363, -1, -1, -1, 367, 368, 369, 370, 371, 2086 372, 373, 257, 258, 259, 260, -1, -1, 263, 264, 2087 265, 266, 267, 268, 269, 270, 271, 272, -1, -1, 2088 -1, -1, -1, -1, -1, -1, 281, 282, -1, 284, 2089 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 2090 295, 296, 297, 298, 299, 300, 301, 302, -1, -1, 2091 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 2092 315, 316, 317, 318, 0, -1, -1, -1, -1, 324, 2093 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 2094 -1, -1, 337, 338, 339, 340, 0, -1, 343, 344, 2095 -1, 346, -1, -1, 349, 350, 351, 352, 353, 354, 2096 355, 356, 357, 358, 359, 360, 361, 362, 363, -1, 2097 -1, -1, 367, 368, 369, 370, 371, 372, 373, 33, 2098 -1, -1, -1, 59, -1, -1, 40, 41, -1, -1, 2099 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2100 -1, -1, -1, -1, -1, 59, 60, -1, 62, -1, 2101 -1, -1, -1, -1, -1, -1, -1, 93, -1, -1, 2102 96, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2103 -1, -1, -1, -1, -1, -1, -1, -1, -1, 93, 2104 -1, -1, 96, -1, -1, -1, -1, -1, -1, 125, 2105 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2106 -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, 2107 -1, 125, -1, -1, -1, -1, -1, 0, -1, -1, 2108 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2109 -1, -1, -1, -1, -1, -1, 33, -1, -1, -1, 2110 -1, -1, -1, 40, 41, -1, 43, 44, 45, -1, 2111 -1, -1, -1, -1, -1, -1, -1, -1, 41, -1, 2112 -1, 44, 59, -1, -1, 62, -1, -1, -1, -1, 2113 -1, -1, -1, -1, -1, -1, 59, -1, -1, -1, 2114 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2115 -1, -1, -1, -1, -1, -1, 93, -1, -1, 96, 2116 -1, -1, -1, -1, -1, -1, 37, -1, -1, -1, 2117 93, 42, 43, -1, 45, -1, 47, -1, -1, -1, 2118 -1, 257, -1, -1, -1, -1, -1, 263, 125, 60, 2119 -1, 62, 268, -1, -1, -1, -1, -1, -1, -1, 2120 -1, -1, 125, 257, 258, 259, 260, -1, -1, 263, 2121 264, 265, 266, 267, 268, 269, 270, 271, 272, -1, 2122 -1, -1, -1, 94, -1, -1, 302, 281, 282, -1, 2123 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 2124 294, 295, 296, 297, 298, 299, 300, 301, 302, -1, 2125 -1, 305, 306, 307, 308, 309, 310, 311, 312, 313, 2126 314, 315, 316, 317, 318, -1, -1, -1, -1, -1, 2127 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 2128 334, -1, -1, 337, 338, 339, 340, -1, -1, 343, 2129 344, -1, 346, -1, -1, 349, 350, 351, 352, 353, 2130 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 2131 -1, -1, -1, 367, 368, 369, 370, 371, 372, 373, 2132 257, 258, 259, 260, -1, -1, 263, -1, 265, 266, 2133 267, 268, 269, 270, 271, 272, -1, -1, -1, -1, 2134 -1, 264, -1, -1, 281, 282, -1, 284, 285, 286, 2135 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 2136 297, 298, 299, 300, 301, -1, -1, -1, 291, 306, 2137 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 2138 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 2139 327, 328, 329, 330, 331, 332, 333, 334, -1, -1, 2140 337, 338, 339, 340, 0, -1, 343, 344, -1, -1, 2141 -1, -1, -1, -1, -1, -1, 287, -1, 355, 356, 2142 357, 358, 359, 360, 361, 362, 363, 350, -1, -1, 2143 367, 368, 369, 370, 371, 372, 373, 33, -1, -1, 2144 -1, -1, -1, -1, 40, 41, -1, -1, 44, -1, 2145 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2146 -1, -1, -1, 59, -1, -1, -1, -1, -1, -1, 2147 -1, -1, -1, -1, -1, -1, -1, -1, 349, 350, 2148 351, 352, 353, 354, -1, -1, -1, -1, -1, -1, 2149 -1, -1, -1, -1, -1, -1, -1, 93, -1, -1, 2150 96, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2151 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2152 -1, 0, -1, -1, -1, -1, -1, -1, -1, 125, 2153 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2154 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2155 -1, -1, -1, -1, 33, -1, -1, -1, -1, -1, 2156 -1, 40, 41, -1, -1, 44, -1, -1, -1, -1, 2157 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2158 59, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2159 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2160 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2161 -1, -1, -1, -1, 93, -1, -1, 96, -1, -1, 2162 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2163 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2164 -1, -1, -1, -1, -1, -1, 125, -1, -1, -1, 2165 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2166 -1, 257, 258, 259, 260, -1, -1, 263, 264, 265, 2167 266, 267, 268, 269, 270, 271, 272, -1, -1, -1, 2168 -1, -1, -1, -1, -1, 281, 282, -1, 284, 285, 2169 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 2170 296, 297, 298, 299, 300, 301, 302, -1, -1, 305, 2171 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 2172 316, 317, 318, -1, -1, -1, -1, -1, 324, 325, 2173 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 2174 -1, 337, 338, 339, 340, -1, -1, 343, 344, -1, 2175 346, -1, -1, 349, 350, 351, 352, -1, -1, 355, 2176 356, 357, 358, 359, 360, 361, 362, 363, -1, -1, 2177 -1, 367, 368, 369, 370, 371, 372, 373, 257, 258, 2178 259, 260, -1, -1, 263, 264, 265, 266, 267, 268, 2179 269, 270, 271, 272, -1, -1, -1, -1, -1, -1, 2180 -1, -1, 281, 282, -1, 284, 285, 286, 287, 288, 2181 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 2182 299, 300, 301, 302, -1, -1, 305, 306, 307, 308, 2183 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 2184 -1, -1, -1, -1, -1, 324, 325, 326, 327, 328, 2185 329, 330, 331, 332, 333, 334, -1, -1, 337, 338, 2186 339, 340, 0, -1, 343, 344, -1, 346, -1, -1, 2187 349, 350, 351, 352, -1, -1, 355, 356, 357, 358, 2188 359, 360, 361, 362, 363, -1, -1, -1, 367, 368, 2189 369, 370, 371, 372, 373, 33, -1, -1, -1, -1, 2190 -1, -1, 40, 41, -1, 43, 44, 45, -1, -1, 2191 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2192 -1, 59, -1, -1, 62, -1, -1, -1, -1, -1, 2193 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2194 -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 2195 -1, -1, -1, -1, -1, 93, -1, -1, 96, -1, 2196 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2197 -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 2198 -1, -1, -1, -1, -1, -1, -1, 125, -1, -1, 2199 41, -1, -1, 44, -1, -1, -1, -1, -1, -1, 2200 -1, -1, -1, -1, -1, -1, -1, -1, 59, -1, 2201 -1, -1, 33, -1, -1, -1, -1, -1, -1, 40, 2202 41, -1, -1, 44, -1, -1, -1, -1, -1, -1, 2203 -1, -1, -1, -1, -1, -1, -1, -1, 59, -1, 2204 -1, -1, 93, -1, -1, -1, -1, -1, -1, -1, 2205 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2206 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2207 -1, -1, 93, -1, 125, 96, -1, -1, -1, -1, 2208 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2209 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2210 -1, -1, -1, -1, 125, -1, -1, -1, -1, -1, 2211 -1, -1, -1, -1, -1, -1, -1, -1, -1, 257, 2212 258, 259, 260, -1, -1, 263, -1, 265, 266, 267, 2213 268, 269, 270, 271, 272, -1, -1, -1, -1, -1, 2214 -1, -1, -1, 281, 282, -1, 284, 285, 286, 287, 2215 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 2216 298, 299, 300, 301, -1, -1, -1, -1, 306, 307, 2217 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 2218 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 2219 328, 329, 330, 331, 332, 333, 334, -1, -1, 337, 2220 338, 339, 340, -1, -1, 343, 344, -1, -1, -1, 2221 -1, -1, -1, 264, -1, -1, -1, 355, 356, 357, 2222 358, 359, 360, 361, 362, 363, -1, -1, -1, 367, 2223 368, 369, 370, 371, 372, 373, 257, 258, 259, 260, 2224 291, -1, 263, 264, 265, 266, 267, 268, 269, 270, 2225 271, 272, -1, -1, -1, -1, -1, -1, -1, -1, 2226 281, 282, -1, 284, 285, 286, 287, 288, 289, 290, 2227 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 2228 301, 302, -1, -1, 305, 306, 307, 308, 309, 310, 2229 311, 312, 313, 314, 315, 316, 317, 318, -1, 350, 2230 -1, -1, -1, 324, 325, 326, 327, 328, 329, 330, 2231 331, 332, 333, 334, -1, -1, 337, 338, 339, 340, 2232 0, -1, 343, 344, -1, 346, -1, -1, 349, 350, 2233 -1, -1, -1, -1, 355, 356, 357, 358, 359, 360, 2234 361, 362, 363, -1, -1, -1, 367, 368, 369, 370, 2235 371, 372, 373, 33, -1, -1, -1, -1, -1, -1, 2236 40, 41, -1, -1, 44, -1, -1, -1, -1, -1, 2237 -1, -1, -1, -1, -1, -1, -1, -1, -1, 59, 2238 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2239 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2240 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2241 0, -1, -1, 93, -1, -1, 96, -1, -1, -1, 2242 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2243 -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, 2244 -1, -1, -1, -1, -1, 125, -1, -1, -1, -1, 2245 -1, 41, -1, -1, 44, -1, -1, -1, -1, -1, 2246 -1, -1, -1, -1, -1, -1, -1, -1, -1, 59, 2247 33, -1, -1, -1, -1, -1, -1, 40, 41, -1, 2248 43, 44, 45, -1, -1, -1, -1, -1, -1, -1, 2249 -1, -1, -1, -1, -1, -1, 59, -1, -1, 62, 2250 -1, -1, -1, 93, -1, -1, -1, -1, -1, -1, 2251 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2252 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2253 93, -1, -1, 96, -1, 125, -1, -1, -1, -1, 2254 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2255 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2256 -1, -1, 125, -1, -1, -1, -1, -1, -1, -1, 2257 -1, -1, -1, -1, -1, -1, -1, 257, 258, 259, 2258 260, -1, -1, 263, 264, 265, 266, 267, 268, 269, 2259 270, 271, 272, -1, -1, -1, -1, -1, -1, -1, 2260 -1, 281, 282, -1, 284, 285, 286, 287, 288, 289, 2261 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 2262 300, 301, 302, -1, -1, 305, 306, 307, 308, 309, 2263 310, 311, 312, 313, 314, 315, 316, 317, 318, -1, 2264 -1, -1, -1, -1, 324, 325, 326, 327, 328, 329, 2265 330, 331, 332, 333, 334, -1, -1, 337, 338, 339, 2266 340, -1, -1, 343, 344, -1, 346, -1, -1, -1, 2267 350, -1, -1, -1, 264, 355, 356, 357, 358, 359, 2268 360, 361, 362, 363, -1, -1, -1, 367, 368, 369, 2269 370, 371, 372, 373, 257, 258, 259, 260, -1, -1, 2270 263, 291, 265, 266, 267, 268, 269, 270, 271, 272, 2271 -1, -1, 302, -1, -1, 305, -1, -1, 281, 282, 2272 -1, 284, 285, 286, 287, 288, 289, 290, 291, 292, 2273 293, 294, 295, 296, 297, 298, 299, 300, 301, -1, 2274 -1, -1, -1, 306, 307, 308, 309, 310, 311, 312, 2275 313, 314, 315, 316, 317, 318, -1, -1, -1, -1, 2276 350, 324, 325, 326, 327, 328, 329, 330, 331, 332, 2277 333, 334, -1, -1, 337, 338, 339, 340, 0, -1, 2278 343, 344, -1, -1, -1, -1, -1, -1, -1, -1, 2279 -1, -1, 355, 356, 357, 358, 359, 360, 361, 362, 2280 363, -1, -1, -1, 367, 368, 369, 370, 371, 372, 2281 373, 33, -1, -1, -1, -1, -1, -1, 40, 41, 2282 -1, -1, 44, -1, -1, -1, -1, -1, -1, -1, 2283 -1, -1, -1, -1, -1, -1, -1, 59, -1, -1, 2284 62, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2285 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2286 -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 2287 -1, 93, -1, -1, 96, -1, -1, -1, -1, -1, 2288 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2289 -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 2290 -1, -1, -1, 125, -1, -1, 41, -1, -1, 44, 2291 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2292 -1, -1, -1, -1, 59, -1, -1, -1, 33, -1, 2293 -1, -1, -1, -1, -1, 40, 41, -1, -1, 44, 2294 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2295 -1, -1, -1, -1, 59, -1, -1, -1, 93, -1, 2296 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2297 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2298 -1, -1, -1, -1, -1, -1, -1, -1, 93, -1, 2299 125, 96, -1, -1, -1, -1, -1, -1, -1, -1, 2300 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2301 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2302 125, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2303 -1, -1, -1, -1, -1, 257, 258, 259, 260, -1, 2304 -1, 263, -1, 265, 266, 267, 268, 269, 270, 271, 2305 272, -1, -1, -1, -1, -1, -1, -1, -1, 281, 2306 282, -1, 284, 285, 286, 287, 288, 289, 290, 291, 2307 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 2308 -1, -1, -1, -1, 306, 307, 308, 309, 310, 311, 2309 312, 313, 314, 315, 316, 317, 318, -1, -1, -1, 2310 -1, -1, 324, 325, 326, 327, 328, 329, 330, 331, 2311 332, 333, 334, -1, -1, 337, 338, 339, 340, -1, 2312 -1, 343, 344, -1, -1, -1, -1, 91, -1, 264, 2313 -1, -1, -1, 355, 356, 357, 358, 359, 360, 361, 2314 362, 363, -1, -1, -1, 367, 368, 369, 370, 371, 2315 372, 373, 257, 258, 259, 260, 291, -1, 263, 123, 2316 265, 266, 267, 268, 269, 270, 271, 272, -1, -1, 2317 -1, -1, -1, -1, -1, -1, 281, 282, -1, 284, 2318 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 2319 295, 296, 297, 298, 299, 300, 301, -1, -1, -1, 2320 -1, 306, 307, 308, 309, 310, 311, 312, 313, 314, 2321 315, 316, 317, 318, -1, 350, -1, -1, -1, 324, 2322 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 2323 -1, -1, 337, 338, 339, 340, 0, -1, 343, 344, 2324 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2325 355, 356, 357, 358, 359, 360, 361, 362, 363, -1, 2326 -1, -1, 367, 368, 369, 370, 371, 372, 373, 33, 2327 -1, -1, -1, -1, -1, -1, 40, -1, -1, -1, 2328 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2329 -1, -1, -1, 257, 258, 59, 260, 261, -1, -1, 2330 -1, -1, -1, -1, -1, 269, 270, 271, 272, 273, 2331 274, 275, 276, 277, 278, 279, 280, -1, -1, 283, 2332 -1, -1, -1, -1, -1, -1, -1, -1, -1, 93, 2333 -1, -1, 96, -1, -1, -1, -1, -1, -1, -1, 2334 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2335 -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, 2336 -1, 125, -1, -1, -1, -1, -1, -1, -1, -1, 2337 -1, 335, -1, -1, -1, -1, -1, 341, 342, -1, 2338 -1, 345, -1, 347, -1, -1, 33, -1, -1, -1, 2339 -1, -1, -1, 40, -1, -1, -1, -1, -1, -1, 2340 364, -1, 366, -1, -1, -1, -1, -1, -1, 373, 2341 374, -1, 59, -1, -1, -1, -1, -1, -1, -1, 2342 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2343 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2344 -1, -1, -1, -1, -1, -1, 93, -1, -1, 96, 2345 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2346 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2347 -1, -1, -1, -1, -1, -1, -1, -1, 125, -1, 2348 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2349 -1, -1, -1, 257, 258, 259, 260, -1, -1, 263, 2350 -1, 265, 266, 267, 268, 269, 270, 271, 272, -1, 2351 -1, -1, -1, -1, -1, -1, -1, 281, 282, -1, 2352 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 2353 294, 295, 296, 297, 298, 299, 300, 301, -1, -1, 2354 -1, -1, -1, 307, 308, 309, 310, 311, 312, 313, 2355 314, 315, 316, 317, 318, -1, -1, -1, -1, -1, 2356 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 2357 334, -1, -1, 337, 338, 339, 340, -1, -1, 343, 2358 344, -1, 91, -1, -1, -1, -1, -1, -1, -1, 2359 -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 2360 -1, -1, -1, 367, 368, 369, 370, 371, 372, 373, 2361 257, 258, 259, 260, 123, -1, 263, -1, 265, 266, 2362 267, 268, 269, 270, 271, 272, -1, -1, -1, -1, 2363 -1, -1, -1, -1, 281, 282, -1, 284, 285, 286, 2364 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 2365 297, 298, 299, 300, 301, -1, -1, -1, -1, -1, 2366 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 2367 317, 318, -1, -1, -1, -1, -1, 324, 325, 326, 2368 327, 328, 329, 330, 331, 332, 333, 334, -1, -1, 2369 337, 338, 339, 340, 0, -1, 343, 344, -1, -1, 2370 -1, -1, -1, -1, -1, -1, -1, -1, 355, 356, 2371 357, 358, 359, 360, 361, 362, 363, -1, -1, -1, 2372 367, 368, 369, 370, 371, 372, 373, 33, -1, -1, 2373 -1, -1, -1, -1, 40, -1, -1, -1, -1, -1, 2374 -1, -1, -1, -1, -1, -1, -1, -1, 257, 258, 2375 -1, 260, 261, 59, -1, -1, -1, -1, -1, -1, 2376 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 2377 279, 280, -1, -1, 283, -1, -1, -1, -1, -1, 2378 -1, -1, -1, -1, -1, -1, -1, 93, -1, -1, 2379 96, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2380 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2381 -1, 0, -1, -1, -1, -1, -1, -1, -1, 125, 2382 -1, -1, -1, -1, -1, -1, 335, -1, -1, -1, 2383 -1, -1, 341, 342, -1, -1, 345, -1, 347, -1, 2384 -1, -1, -1, -1, 33, -1, -1, -1, -1, -1, 2385 -1, 40, -1, -1, -1, 364, -1, 366, -1, -1, 2386 -1, -1, -1, -1, 373, 374, -1, -1, -1, -1, 2387 59, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2388 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2389 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2390 -1, -1, -1, -1, 93, -1, -1, 96, -1, -1, 2391 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2392 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2393 -1, -1, -1, -1, -1, -1, 125, -1, -1, -1, 2394 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2395 -1, 257, 258, 259, 260, -1, -1, 263, -1, 265, 2396 266, 267, 268, 269, 270, 271, 272, -1, -1, -1, 2397 -1, -1, -1, -1, -1, 281, 282, -1, 284, 285, 2398 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 2399 296, 297, 298, 299, 300, 301, -1, -1, -1, -1, 2400 -1, 307, 308, 309, 310, 311, 312, 313, 314, 315, 2401 316, 317, 318, -1, -1, -1, -1, -1, 324, 325, 2402 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 2403 -1, 337, 338, 339, 340, -1, -1, 343, 344, -1, 2404 -1, -1, -1, -1, -1, -1, -1, -1, -1, 355, 2405 356, 357, 358, 359, 360, 361, 362, 363, -1, -1, 2406 -1, 367, 368, 369, 370, 371, 372, 373, 257, 258, 2407 259, 260, -1, -1, 263, -1, 265, 266, 267, 268, 2408 269, 270, 271, 272, -1, -1, -1, -1, -1, -1, 2409 -1, -1, 281, 282, -1, 284, 285, 286, 287, 288, 2410 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 2411 299, 300, 301, -1, -1, -1, -1, -1, 307, 308, 2412 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 2413 -1, -1, -1, -1, -1, 324, 325, 326, 327, 328, 2414 329, 330, 331, 332, 333, 334, -1, -1, 337, 338, 2415 339, 340, 0, -1, 343, 344, -1, -1, -1, -1, 2416 -1, -1, -1, -1, -1, -1, 355, 356, 357, 358, 2417 359, 360, 361, 362, 363, -1, -1, -1, 367, 368, 2418 369, 370, 371, 372, 373, 33, -1, -1, -1, -1, 2419 -1, -1, 40, -1, -1, -1, -1, -1, -1, -1, 2420 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2421 -1, 59, -1, -1, -1, -1, -1, -1, -1, -1, 2422 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2423 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2424 -1, -1, -1, -1, -1, 93, -1, -1, 96, -1, 2425 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2426 -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 2427 -1, -1, -1, -1, -1, -1, -1, 125, -1, -1, 2428 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2429 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2430 -1, -1, 33, -1, -1, -1, -1, -1, -1, 40, 2431 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2432 -1, -1, -1, -1, -1, -1, -1, -1, 59, -1, 2433 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2434 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2435 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2436 -1, -1, 93, -1, -1, 96, -1, -1, -1, -1, 2437 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2438 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2439 -1, -1, -1, -1, 125, -1, -1, -1, -1, -1, 2440 -1, -1, -1, -1, -1, -1, -1, -1, -1, 257, 2441 258, 259, 260, -1, -1, 263, -1, 265, 266, 267, 2442 268, 269, 270, 271, 272, -1, -1, -1, -1, -1, 2443 -1, -1, -1, 281, 282, -1, 284, 285, 286, 287, 2444 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 2445 298, 299, 300, 301, -1, -1, -1, -1, -1, 307, 2446 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 2447 318, -1, -1, -1, -1, -1, 324, 325, 326, 327, 2448 328, 329, 330, 331, 332, 333, 334, -1, -1, 337, 2449 338, 339, 340, -1, -1, 343, 344, -1, -1, -1, 2450 -1, -1, -1, -1, -1, -1, -1, 355, 356, 357, 2451 358, 359, 360, 361, 362, 363, -1, -1, -1, 367, 2452 368, 369, 370, 371, 372, 373, 257, 258, 259, 260, 2453 -1, -1, 263, -1, 265, 266, 267, 268, 269, 270, 2454 271, 272, -1, -1, -1, -1, -1, -1, -1, -1, 2455 281, 282, -1, 284, 285, 286, 287, 288, 289, 290, 2456 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 2457 301, -1, -1, -1, -1, -1, 307, 308, 309, 310, 2458 311, 312, 313, 314, 315, 316, 317, 318, -1, -1, 2459 -1, -1, -1, 324, 325, 326, 327, 328, 329, 330, 2460 331, 332, 333, 334, -1, -1, 337, 338, 339, 340, 2461 0, -1, 343, 344, -1, -1, -1, -1, -1, -1, 2462 -1, -1, -1, -1, 355, 356, 357, 358, 359, 360, 2463 361, 362, 363, -1, -1, -1, 367, 368, 369, 370, 2464 371, 372, 373, 33, -1, -1, -1, -1, -1, -1, 2465 40, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2466 -1, -1, -1, -1, -1, -1, -1, -1, -1, 59, 2467 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2468 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2469 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2470 -1, -1, -1, 93, -1, -1, 96, -1, -1, -1, 2471 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2472 -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, 2473 -1, -1, -1, -1, -1, 125, -1, -1, -1, -1, 2474 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2475 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2476 33, -1, -1, -1, -1, -1, -1, 40, -1, -1, 2477 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2478 -1, -1, -1, -1, -1, -1, 59, -1, -1, -1, 2479 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2480 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2481 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2482 93, -1, -1, 96, -1, -1, -1, -1, -1, -1, 2483 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2484 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2485 -1, -1, 125, -1, -1, -1, -1, -1, -1, -1, 2486 -1, -1, -1, -1, -1, -1, -1, 257, 258, 259, 2487 260, -1, -1, 263, -1, 265, 266, 267, 268, 269, 2488 270, 271, 272, -1, -1, -1, -1, -1, -1, -1, 2489 -1, 281, 282, -1, 284, 285, 286, 287, 288, 289, 2490 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 2491 300, 301, -1, -1, -1, -1, -1, 307, 308, 309, 2492 310, 311, 312, 313, 314, 315, 316, 317, 318, -1, 2493 -1, -1, -1, -1, 324, 325, 326, 327, 328, 329, 2494 330, 331, 332, 333, 334, -1, -1, 337, 338, 339, 2495 340, -1, -1, 343, 344, -1, -1, -1, -1, -1, 2496 -1, -1, -1, -1, -1, 355, 356, 357, 358, 359, 2497 360, 361, 362, 363, -1, -1, -1, 367, 368, 369, 2498 370, 371, 372, 373, 257, 258, 259, 260, -1, -1, 2499 263, -1, 265, 266, 267, 268, 269, 270, 271, 272, 2500 -1, -1, -1, -1, -1, -1, -1, -1, 281, 282, 2501 -1, 284, 285, 286, 287, 288, 289, 290, 291, 292, 2502 293, 294, 295, 296, 297, 298, 299, 300, 301, -1, 2503 -1, -1, -1, -1, 307, 308, 309, 310, 311, 312, 2504 313, 314, 315, 316, 317, 318, -1, -1, -1, -1, 2505 -1, 324, 325, 326, 327, 328, 329, 330, 331, 332, 2506 333, 334, -1, -1, 337, 338, 339, 340, 0, -1, 2507 343, 344, -1, -1, -1, -1, -1, -1, -1, -1, 2508 -1, -1, 355, 356, 357, 358, 359, 360, 361, 362, 2509 363, -1, -1, -1, 367, 368, 369, 370, 371, 372, 2510 373, 33, -1, -1, -1, -1, -1, -1, 40, -1, 2511 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2512 -1, -1, -1, -1, -1, -1, -1, 59, -1, -1, 2513 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2514 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2515 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2516 -1, 93, -1, -1, 96, -1, -1, -1, -1, -1, 2517 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2518 -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 2519 -1, -1, -1, 125, -1, -1, -1, -1, -1, -1, 2520 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2521 -1, -1, -1, -1, -1, -1, -1, -1, 33, -1, 2522 -1, -1, -1, -1, -1, 40, -1, -1, -1, -1, 2523 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2524 -1, -1, -1, -1, 59, -1, -1, -1, -1, -1, 2525 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2526 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2527 -1, -1, -1, -1, -1, -1, -1, -1, 93, -1, 2528 -1, 96, -1, -1, -1, -1, -1, -1, -1, -1, 2529 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2530 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2531 125, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2532 -1, -1, -1, -1, -1, 257, 258, 259, 260, -1, 2533 -1, 263, -1, 265, 266, 267, 268, 269, 270, 271, 2534 272, -1, -1, -1, -1, -1, -1, -1, -1, 281, 2535 282, -1, 284, 285, 286, 287, 288, 289, 290, 291, 2536 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 2537 -1, -1, -1, -1, -1, 307, 308, 309, 310, 311, 2538 312, 313, 314, 315, 316, 317, 318, -1, -1, -1, 2539 -1, -1, 324, 325, 326, 327, 328, 329, 330, 331, 2540 332, 333, 334, -1, -1, 337, 338, 339, 340, -1, 2541 -1, 343, 344, -1, -1, -1, -1, -1, -1, -1, 2542 -1, -1, -1, 355, 356, 357, 358, 359, 360, 361, 2543 362, 363, -1, -1, -1, 367, 368, 369, 370, 371, 2544 372, 373, 257, 258, 259, 260, -1, -1, 263, -1, 2545 265, 266, 267, 268, 269, 270, 271, 272, -1, -1, 2546 -1, -1, -1, -1, -1, -1, 281, 282, -1, 284, 2547 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 2548 295, 296, 297, 298, 299, 300, 301, -1, -1, -1, 2549 -1, -1, 307, 308, 309, 310, 311, 312, 313, 314, 2550 315, 316, 317, 318, -1, -1, -1, -1, -1, 324, 2551 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 2552 -1, -1, 337, 338, 339, 340, 0, -1, 343, 344, 2553 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2554 355, 356, 357, 358, 359, 360, 361, 362, 363, -1, 2555 -1, -1, 367, 368, 369, 370, 371, 372, 373, 33, 2556 -1, -1, -1, -1, -1, -1, 40, -1, -1, -1, 2557 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2558 -1, -1, -1, -1, -1, 59, -1, -1, -1, -1, 2559 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2560 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2561 -1, -1, -1, -1, -1, -1, -1, -1, -1, 93, 2562 -1, -1, 96, -1, -1, -1, -1, -1, -1, -1, 2563 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2564 -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, 2565 -1, 125, -1, -1, -1, -1, -1, -1, -1, -1, 2566 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2567 -1, -1, -1, -1, -1, -1, 33, -1, -1, -1, 2568 -1, -1, -1, 40, -1, -1, -1, -1, -1, -1, 2569 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2570 -1, -1, 59, -1, -1, -1, -1, -1, -1, -1, 2571 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2572 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2573 -1, -1, -1, -1, -1, -1, 93, -1, -1, 96, 2574 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2575 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2576 -1, -1, -1, -1, -1, -1, -1, -1, 125, -1, 2577 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2578 -1, -1, -1, 257, 258, 259, 260, -1, -1, 263, 2579 -1, 265, 266, 267, 268, 269, 270, 271, 272, -1, 2580 -1, -1, -1, -1, -1, -1, -1, 281, 282, -1, 2581 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 2582 294, 295, 296, 297, 298, 299, 300, 301, -1, -1, 2583 -1, -1, -1, 307, 308, 309, 310, 311, 312, 313, 2584 314, 315, 316, 317, 318, -1, -1, -1, -1, -1, 2585 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 2586 334, -1, -1, 337, 338, 339, 340, -1, -1, 343, 2587 344, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2588 -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 2589 -1, -1, -1, 367, 368, 369, 370, 371, 372, 373, 2590 257, 258, 259, 260, -1, -1, 263, -1, 265, 266, 2591 267, 268, 269, 270, 271, 272, -1, -1, -1, -1, 2592 -1, -1, -1, -1, 281, 282, -1, 284, 285, 286, 2593 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 2594 297, 298, 299, 300, 301, -1, -1, -1, -1, -1, 2595 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 2596 317, 318, -1, -1, -1, -1, -1, 324, 325, 326, 2597 327, 328, 329, 330, 331, 332, 333, 334, -1, -1, 2598 337, 338, 339, 340, 0, -1, 343, 344, -1, -1, 2599 -1, -1, -1, -1, -1, -1, -1, -1, 355, 356, 2600 357, 358, 359, 360, 361, 362, 363, -1, -1, -1, 2601 367, 368, 369, 370, 371, 372, 373, 33, -1, -1, 2602 -1, -1, -1, -1, 40, -1, -1, -1, -1, -1, 2603 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2604 -1, -1, -1, 59, -1, -1, -1, -1, -1, -1, 2605 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2606 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2607 -1, -1, -1, -1, -1, -1, -1, 93, -1, -1, 2608 96, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2609 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2610 -1, 0, -1, -1, -1, -1, -1, -1, -1, 125, 2611 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2612 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2613 -1, -1, -1, -1, 33, -1, -1, -1, -1, -1, 2614 -1, 40, -1, -1, -1, -1, -1, -1, -1, -1, 2615 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2616 59, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2617 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2618 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2619 -1, -1, -1, -1, 93, -1, -1, 96, -1, -1, 2620 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2621 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2622 -1, -1, -1, -1, -1, -1, 125, -1, -1, -1, 2623 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2624 -1, 257, 258, 259, 260, -1, -1, 263, -1, 265, 2625 266, 267, 268, 269, 270, 271, 272, -1, -1, -1, 2626 -1, -1, -1, -1, -1, 281, 282, -1, 284, 285, 2627 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 2628 296, 297, 298, 299, 300, 301, -1, -1, -1, -1, 2629 -1, 307, 308, 309, 310, 311, 312, 313, 314, 315, 2630 316, 317, 318, -1, -1, -1, -1, -1, 324, 325, 2631 326, 327, 328, 329, 330, 331, 332, 333, 334, -1, 2632 -1, 337, 338, 339, 340, -1, -1, 343, 344, -1, 2633 -1, -1, -1, -1, -1, -1, -1, -1, -1, 355, 2634 356, 357, 358, 359, 360, 361, 362, 363, -1, -1, 2635 -1, 367, 368, 369, 370, 371, 372, 373, 257, 258, 2636 259, 260, -1, -1, 263, -1, 265, 266, 267, 268, 2637 269, 270, 271, 272, -1, -1, -1, -1, -1, -1, 2638 -1, -1, 281, 282, -1, 284, 285, 286, 287, 288, 2639 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 2640 299, 300, 301, -1, -1, -1, -1, -1, 307, 308, 2641 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 2642 -1, -1, -1, -1, -1, 324, 325, 326, 327, 328, 2643 329, 330, 331, 332, 333, 334, -1, -1, 337, 338, 2644 339, 340, 0, -1, 343, 344, -1, -1, -1, -1, 2645 -1, -1, -1, -1, -1, -1, 355, 356, 357, 358, 2646 359, 360, 361, 362, 363, -1, -1, -1, 367, 368, 2647 369, 370, 371, 372, 373, 33, -1, -1, -1, -1, 2648 -1, -1, 40, -1, -1, -1, -1, -1, -1, -1, 2649 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2650 -1, 59, -1, -1, -1, -1, -1, -1, -1, -1, 2651 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2652 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2653 -1, -1, -1, -1, -1, 93, -1, -1, 96, -1, 2654 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2655 -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 2656 -1, -1, -1, -1, -1, -1, -1, 125, -1, -1, 2657 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2658 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2659 -1, -1, 33, -1, -1, -1, -1, -1, -1, 40, 2660 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2661 -1, -1, -1, -1, -1, -1, -1, -1, 59, -1, 2662 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2663 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2664 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2665 -1, -1, 93, -1, -1, 96, -1, -1, -1, -1, 2666 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2667 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2668 -1, -1, -1, -1, 125, -1, -1, -1, -1, -1, 2669 -1, -1, -1, -1, -1, -1, -1, -1, -1, 257, 2670 258, 259, 260, -1, -1, 263, -1, 265, 266, 267, 2671 268, 269, 270, 271, 272, -1, -1, -1, -1, -1, 2672 -1, -1, -1, 281, 282, -1, 284, 285, 286, 287, 2673 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 2674 298, 299, 300, 301, -1, -1, -1, -1, -1, 307, 2675 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 2676 318, -1, -1, -1, -1, -1, 324, 325, 326, 327, 2677 328, 329, 330, 331, 332, 333, 334, -1, -1, 337, 2678 338, 339, 340, -1, -1, 343, 344, -1, -1, -1, 2679 -1, -1, -1, -1, -1, -1, -1, 355, 356, 357, 2680 358, 359, 360, 361, 362, 363, -1, -1, -1, 367, 2681 368, 369, 370, 371, 372, 373, 257, 258, 259, 260, 2682 -1, -1, 263, -1, 265, 266, 267, 268, 269, 270, 2683 271, 272, -1, -1, -1, -1, -1, -1, -1, -1, 2684 281, 282, -1, 284, 285, 286, 287, 288, 289, 290, 2685 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 2686 301, -1, -1, -1, -1, -1, 307, 308, 309, 310, 2687 311, 312, 313, 314, 315, 316, 317, 318, -1, -1, 2688 -1, -1, -1, 324, 325, 326, 327, 328, 329, 330, 2689 331, 332, 333, 334, -1, -1, 337, 338, 339, 340, 2690 0, -1, 343, 344, -1, -1, -1, -1, -1, -1, 2691 -1, -1, -1, -1, 355, 356, 357, 358, 359, 360, 2692 361, 362, 363, -1, -1, -1, 367, 368, 369, 370, 2693 371, 372, 373, 33, -1, -1, -1, -1, -1, -1, 2694 40, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2695 -1, -1, -1, -1, -1, -1, -1, -1, -1, 59, 2696 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2697 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2698 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2699 -1, -1, -1, 93, -1, -1, 96, -1, -1, -1, 2700 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2701 -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, 2702 -1, -1, -1, -1, -1, 125, -1, -1, -1, -1, 2703 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2704 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2705 33, -1, -1, -1, -1, -1, -1, 40, -1, -1, 2706 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2707 -1, -1, -1, -1, -1, -1, 59, -1, -1, -1, 2708 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2709 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2710 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2711 93, -1, -1, 96, -1, -1, -1, -1, -1, -1, 2712 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2713 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2714 -1, -1, 125, -1, -1, -1, -1, -1, -1, -1, 2715 -1, -1, -1, -1, -1, -1, -1, 257, 258, 259, 2716 260, -1, -1, 263, -1, 265, 266, 267, 268, 269, 2717 270, 271, 272, -1, -1, -1, -1, -1, -1, -1, 2718 -1, 281, 282, -1, 284, 285, 286, 287, 288, 289, 2719 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 2720 300, 301, -1, -1, -1, -1, -1, 307, 308, 309, 2721 310, 311, 312, 313, 314, 315, 316, 317, 318, -1, 2722 -1, -1, -1, -1, 324, 325, 326, 327, 328, 329, 2723 330, 331, 332, 333, 334, -1, -1, 337, 338, 339, 2724 340, -1, -1, 343, 344, -1, -1, -1, -1, -1, 2725 -1, -1, -1, -1, -1, 355, 356, 357, 358, 359, 2726 360, 361, 362, 363, -1, -1, -1, 367, 368, 369, 2727 370, 371, 372, 373, 257, 258, 259, 260, -1, -1, 2728 263, -1, 265, 266, 267, 268, 269, 270, 271, 272, 2729 -1, -1, -1, -1, -1, -1, -1, -1, 281, 282, 2730 -1, 284, 285, 286, 287, 288, 289, 290, 291, 292, 2731 293, 294, 295, 296, 297, 298, 299, 300, 301, -1, 2732 -1, -1, -1, -1, 307, 308, 309, 310, 311, 312, 2733 313, 314, 315, 316, 317, 318, -1, -1, -1, -1, 2734 -1, 324, 325, 326, 327, 328, 329, 330, 331, 332, 2735 333, 334, -1, -1, 337, 338, 339, 340, 0, -1, 2736 343, 344, -1, -1, -1, -1, -1, -1, -1, -1, 2737 -1, -1, 355, 356, 357, 358, 359, 360, 361, 362, 2738 363, -1, -1, -1, 367, 368, 369, 370, 371, 372, 2739 373, 33, -1, -1, -1, -1, -1, -1, 40, -1, 2740 -1, -1, 44, 45, -1, -1, -1, -1, -1, -1, 2741 -1, -1, -1, -1, -1, -1, -1, 59, -1, -1, 2742 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2743 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2744 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2745 -1, 93, -1, -1, -1, -1, -1, -1, -1, -1, 2746 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2747 -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 2748 -1, -1, -1, 125, -1, -1, -1, -1, -1, -1, 2749 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2750 -1, -1, -1, -1, -1, -1, -1, -1, 33, -1, 2751 -1, -1, -1, -1, -1, 40, 41, -1, 43, 44, 2752 45, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2753 -1, -1, -1, -1, 59, -1, -1, 62, -1, -1, 2754 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2755 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2756 -1, -1, -1, -1, -1, -1, -1, -1, 93, -1, 2757 -1, 96, -1, -1, -1, -1, -1, -1, -1, -1, 2758 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2759 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2760 125, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2761 -1, -1, -1, -1, -1, -1, 258, 259, 260, -1, 2762 -1, -1, -1, 265, 266, 267, -1, 269, 270, 271, 2763 272, -1, -1, -1, -1, -1, -1, -1, -1, 281, 2764 282, -1, 284, 285, 286, 287, 288, 289, 290, 291, 2765 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 2766 -1, -1, -1, -1, -1, 307, 308, 309, 310, 311, 2767 312, 313, 314, 315, 316, 317, 318, -1, -1, -1, 2768 -1, -1, 324, 325, 326, 327, 328, 329, 330, 331, 2769 332, 333, 334, -1, -1, 337, 338, 339, 340, -1, 2770 -1, 343, 344, -1, -1, -1, -1, -1, -1, -1, 2771 -1, -1, -1, 355, 356, 357, 358, 359, 360, 361, 2772 362, 363, -1, -1, -1, 367, 368, 369, 370, 371, 2773 372, 373, 257, 258, 259, 260, -1, -1, 263, -1, 2774 265, 266, 267, 268, 269, 270, 271, 272, -1, -1, 2775 -1, -1, -1, -1, -1, -1, 281, 282, -1, 284, 2776 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 2777 295, 296, 297, 298, 299, 300, 301, 0, -1, -1, 2778 -1, 306, 307, -1, -1, -1, -1, -1, -1, -1, 2779 -1, -1, -1, -1, 319, 320, 321, 322, 323, 324, 2780 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 2781 33, -1, -1, -1, -1, -1, -1, 40, 343, 344, 2782 43, -1, 45, 46, -1, -1, -1, -1, -1, -1, 2783 -1, -1, -1, -1, -1, -1, 59, -1, -1, -1, 2784 -1, -1, 367, 368, 369, 370, 371, 372, 373, -1, 2785 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2786 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2787 93, 0, -1, 96, -1, -1, -1, -1, -1, -1, 2788 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2789 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2790 -1, -1, 125, -1, 33, -1, -1, -1, -1, -1, 2791 -1, 40, 41, -1, -1, 44, 45, -1, -1, -1, 2792 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2793 59, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2794 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2795 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2796 0, -1, -1, -1, 93, -1, -1, 96, -1, -1, 2797 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2798 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2799 -1, -1, -1, 33, -1, -1, 125, -1, -1, -1, 2800 40, 41, -1, -1, 44, -1, -1, -1, -1, -1, 2801 -1, -1, -1, -1, -1, -1, -1, -1, -1, 59, 2802 60, -1, 62, -1, -1, -1, -1, -1, -1, -1, 2803 -1, -1, -1, -1, 257, 258, 259, 260, -1, -1, 2804 263, -1, 265, 266, 267, 268, 269, 270, 271, 272, 2805 -1, -1, -1, 93, -1, -1, 96, -1, 281, 282, 2806 -1, 284, 285, 286, 287, 288, 289, 290, 291, 292, 2807 293, 294, 295, 296, 297, 298, 299, 300, 301, -1, 2808 -1, -1, -1, 0, 307, 125, -1, -1, -1, -1, 2809 -1, -1, -1, -1, -1, -1, 319, 320, 321, 322, 2810 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 2811 333, 334, -1, -1, -1, -1, 33, -1, -1, -1, 2812 343, 344, -1, 40, -1, -1, -1, -1, 257, 258, 2813 259, 260, -1, -1, 263, -1, 265, 266, 267, 268, 2814 269, 270, 59, -1, 367, 368, 369, 370, 371, 372, 2815 373, -1, 281, 282, -1, 284, 285, 286, 287, 288, 2816 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 2817 299, 300, 301, -1, -1, -1, 93, -1, 307, 96, 2818 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2819 -1, -1, -1, -1, -1, 324, 325, 326, 327, 328, 2820 329, 330, 331, 332, 333, 334, -1, -1, 125, -1, 2821 -1, -1, -1, -1, 343, 344, -1, 257, 258, 259, 2822 260, -1, -1, 263, -1, -1, -1, -1, 268, -1, 2823 -1, 271, 272, -1, -1, -1, 0, -1, 367, 368, 2824 369, 370, 371, 372, 373, -1, -1, -1, -1, -1, 2825 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2826 -1, -1, -1, -1, -1, -1, -1, 307, 308, 309, 2827 310, 311, 312, 313, 314, 315, 316, 317, 318, -1, 2828 -1, -1, -1, -1, 324, 325, 326, 327, 328, 329, 2829 330, 331, 332, 333, 334, 59, -1, 337, 338, 339, 2830 340, -1, -1, -1, -1, -1, -1, -1, -1, 349, 2831 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 2832 360, 361, 362, 363, -1, -1, -1, -1, -1, 93, 2833 -1, -1, -1, 373, -1, -1, -1, -1, -1, -1, 2834 257, 258, 259, 260, -1, -1, 263, -1, -1, -1, 2835 -1, 268, -1, -1, 271, 272, -1, -1, -1, -1, 2836 -1, 125, -1, -1, -1, -1, -1, -1, -1, -1, 2837 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2838 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2839 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 2840 317, 318, -1, -1, -1, -1, -1, 324, 325, 326, 2841 327, 328, 329, 330, 331, 332, 333, 334, 0, -1, 2842 337, 338, 339, 340, -1, -1, -1, -1, -1, -1, 2843 -1, -1, -1, -1, -1, -1, -1, -1, 355, 356, 2844 357, 358, 359, 360, 361, 362, 363, -1, -1, -1, 2845 -1, 33, -1, -1, -1, -1, 373, -1, 40, -1, 2846 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2847 -1, -1, -1, -1, -1, -1, -1, 59, -1, -1, 2848 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2849 -1, -1, -1, -1, -1, -1, 260, -1, -1, -1, 2850 -1, 265, 266, 267, -1, 269, 270, 271, 272, -1, 2851 -1, 93, -1, -1, 96, -1, -1, 281, 282, -1, 2852 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 2853 294, 295, 296, 297, 298, 299, 300, 301, 302, 0, 2854 -1, -1, -1, 125, -1, -1, -1, -1, -1, -1, 2855 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2856 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2857 -1, -1, -1, -1, -1, -1, -1, -1, -1, 343, 2858 344, -1, -1, -1, -1, -1, 0, -1, -1, -1, 2859 -1, -1, -1, -1, -1, -1, -1, -1, 59, -1, 2860 -1, -1, -1, 367, 368, 369, 370, 371, 372, 373, 2861 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2862 -1, -1, -1, 37, -1, -1, -1, 41, 42, 43, 2863 44, 45, 93, 47, -1, -1, -1, -1, -1, -1, 2864 -1, -1, -1, -1, -1, 59, 60, -1, 62, -1, 2865 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2866 0, -1, -1, -1, 125, -1, -1, -1, -1, -1, 2867 -1, -1, -1, -1, -1, 257, 258, 259, 260, 93, 2868 -1, 263, -1, -1, -1, -1, 268, -1, -1, 271, 2869 272, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2870 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2871 -1, 125, -1, -1, -1, -1, -1, -1, -1, 59, 2872 -1, -1, -1, -1, 0, 307, 308, 309, 310, 311, 2873 312, 313, 314, 315, 316, 317, 318, -1, -1, -1, 2874 -1, -1, 324, 325, 326, 327, 328, 329, 330, 331, 2875 332, 333, 334, 93, -1, 337, 338, 339, 340, -1, 2876 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2877 -1, -1, -1, 355, 356, 357, 358, 359, 360, 361, 2878 362, 363, -1, 59, -1, 125, -1, -1, 0, -1, 2879 -1, 373, -1, -1, -1, -1, -1, -1, -1, 260, 2880 -1, -1, -1, -1, 265, 266, 267, -1, 269, 270, 2881 271, 272, -1, -1, -1, -1, -1, 93, -1, -1, 2882 281, 282, -1, 284, 285, 286, 287, 288, 289, 290, 2883 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 2884 301, 302, -1, -1, -1, -1, -1, 59, -1, 125, 2885 264, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2886 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2887 -1, -1, -1, -1, -1, -1, -1, 291, -1, -1, 2888 -1, 93, 343, 344, -1, -1, -1, -1, 302, -1, 2889 -1, 305, -1, -1, -1, -1, -1, -1, -1, -1, 2890 -1, -1, -1, -1, -1, -1, 367, 368, 369, 370, 2891 371, 372, 373, 125, 0, -1, -1, -1, -1, -1, 2892 260, -1, -1, -1, -1, 265, 266, 267, -1, 269, 2893 270, 271, 272, -1, -1, 349, 350, 351, 352, 353, 2894 354, 281, 282, -1, 284, 285, 286, 287, 288, 289, 2895 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 2896 300, 301, -1, -1, -1, -1, -1, -1, -1, -1, 2897 -1, -1, -1, 59, -1, -1, -1, -1, 0, -1, 2898 -1, -1, -1, -1, 260, -1, -1, -1, -1, 265, 2899 266, 267, -1, 269, 270, 271, 272, -1, -1, -1, 2900 -1, -1, -1, 343, 344, 281, 282, 93, 284, 285, 2901 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 2902 296, 297, 298, 299, 300, 301, -1, 367, 368, 369, 2903 370, 371, 372, 373, -1, -1, -1, 59, -1, 125, 2904 -1, -1, 0, -1, -1, -1, -1, -1, 260, -1, 2905 -1, -1, -1, 265, 266, 267, -1, 269, 270, 271, 2906 272, -1, -1, -1, -1, -1, -1, 343, 344, 281, 2907 282, 93, 284, 285, 286, 287, 288, 289, 290, 291, 2908 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 2909 -1, 367, 368, 369, 370, 371, 372, 373, -1, -1, 2910 -1, 59, -1, 125, -1, -1, -1, -1, -1, -1, 2911 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2912 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2913 -1, 343, 344, -1, -1, 93, -1, -1, -1, -1, 2914 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2915 -1, -1, -1, -1, -1, 367, 368, 369, 370, 371, 2916 372, 373, -1, -1, -1, -1, -1, 125, -1, -1, 2917 -1, -1, -1, -1, 260, -1, -1, -1, -1, 265, 2918 266, 267, -1, 269, 270, 271, 272, -1, -1, -1, 2919 -1, -1, -1, -1, -1, 281, 282, -1, 284, 285, 2920 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 2921 296, 297, 298, 299, 300, 301, -1, -1, -1, -1, 2922 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2923 -1, -1, -1, -1, -1, -1, -1, -1, 260, -1, 2924 -1, -1, -1, 265, 266, 267, -1, 269, 270, 271, 2925 272, -1, -1, -1, -1, -1, -1, 343, 344, 281, 2926 282, -1, 284, 285, 286, 287, 288, 289, 290, 291, 2927 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 2928 -1, 367, 368, 369, 370, 371, 372, 373, -1, -1, 2929 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2930 -1, -1, 260, -1, -1, -1, -1, 265, 266, 267, 2931 -1, 269, 270, 271, 272, -1, -1, -1, -1, -1, 2932 -1, 343, 344, 281, 282, 0, 284, 285, 286, 287, 2933 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 2934 298, 299, 300, 301, -1, 367, 368, 369, 370, 371, 2935 372, 373, -1, -1, -1, -1, -1, -1, 33, -1, 2936 -1, -1, -1, -1, -1, 40, -1, -1, -1, -1, 2937 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2938 -1, -1, -1, -1, 59, 343, 344, -1, -1, -1, 2939 -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 2940 -1, -1, -1, -1, -1, -1, -1, -1, -1, 367, 2941 368, 369, 370, 371, 372, 373, -1, -1, 93, -1, 2942 -1, 96, -1, -1, -1, -1, -1, -1, -1, -1, 2943 -1, -1, -1, -1, -1, -1, -1, -1, 43, -1, 2944 45, 46, -1, -1, -1, -1, -1, -1, -1, -1, 2945 125, -1, -1, -1, 59, -1, -1, -1, -1, -1, 2946 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2947 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2948 -1, -1, -1, -1, -1, -1, -1, -1, 93, -1, 2949 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2950 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2951 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2952 125, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2953 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2954 33, -1, -1, -1, -1, -1, -1, 40, -1, -1, 2955 -1, -1, 45, -1, -1, -1, -1, -1, -1, -1, 2956 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2957 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2958 -1, -1, 257, 258, 259, -1, -1, -1, 263, -1, 2959 265, 266, 267, 268, 269, 270, 271, 272, 91, -1, 2960 -1, -1, -1, 96, -1, -1, 281, 282, -1, 284, 2961 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 2962 295, 296, 297, 298, 299, 300, 301, -1, -1, -1, 2963 123, -1, 307, 308, 309, 310, 311, 312, 313, 314, 2964 315, 316, 317, 318, -1, -1, -1, -1, -1, 324, 2965 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 2966 -1, -1, 337, 338, 339, 340, 271, 272, 343, 344, 2967 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2968 355, 356, 357, 358, 359, 360, 361, 362, 363, -1, 2969 -1, -1, 367, 368, 369, 370, 371, 372, -1, -1, 2970 -1, -1, -1, 308, 309, 310, 311, 312, 313, 314, 2971 315, 316, 317, 318, 319, 320, 321, 322, 323, -1, 2972 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2973 -1, -1, 337, 338, 339, 340, 33, -1, -1, -1, 2974 -1, -1, -1, 40, -1, -1, -1, -1, 45, -1, 2975 355, 356, 357, 358, 359, 360, 361, 362, 363, -1, 2976 -1, -1, -1, -1, 257, 258, 259, 260, 261, -1, 2977 263, -1, -1, -1, -1, 268, 269, 270, 271, 272, 2978 273, 274, 275, 276, 277, 278, 279, 280, -1, -1, 2979 283, -1, -1, -1, 91, -1, -1, -1, -1, 96, 2980 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2981 -1, -1, -1, -1, 307, 308, 309, 310, 311, 312, 2982 313, 314, 315, 316, 317, 318, 123, -1, -1, -1, 2983 -1, 324, 325, 326, 327, 328, 329, 330, 331, 332, 2984 333, 334, 335, -1, 337, 338, 339, 340, 341, 342, 2985 -1, -1, 345, -1, 347, -1, -1, -1, -1, -1, 2986 -1, -1, 355, 356, 357, 358, 359, 360, 361, 362, 2987 363, 364, 33, 366, -1, -1, -1, -1, -1, 40, 2988 373, 374, -1, -1, 45, -1, -1, -1, -1, -1, 2989 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2990 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2991 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2992 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2993 -1, -1, -1, -1, -1, 96, -1, -1, -1, -1, 2994 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2995 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2996 257, 258, 259, 260, 261, -1, 263, -1, -1, -1, 2997 -1, 268, 269, 270, 271, 272, 273, 274, 275, 276, 2998 277, 278, 279, 280, -1, -1, 283, -1, -1, 33, 2999 -1, -1, -1, -1, -1, -1, 40, 41, -1, -1, 3000 -1, 45, -1, -1, -1, -1, -1, -1, -1, -1, 3001 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 3002 317, 318, -1, -1, -1, -1, -1, 324, 325, 326, 3003 327, 328, 329, 330, 331, 332, 333, 334, 335, -1, 3004 337, 338, 339, 340, 341, 342, -1, -1, 345, -1, 3005 347, -1, 96, -1, -1, -1, -1, -1, 355, 356, 3006 357, 358, 359, 360, 361, 362, 363, 364, -1, 366, 3007 -1, -1, -1, -1, -1, -1, 373, 374, -1, -1, 3008 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3009 -1, -1, -1, -1, -1, -1, 257, 258, 259, 260, 3010 -1, -1, 263, -1, 265, 266, 267, 268, 269, 270, 3011 271, 272, -1, -1, -1, -1, -1, -1, -1, -1, 3012 281, 282, -1, 284, 285, 286, 287, 288, 289, 290, 3013 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 3014 301, -1, -1, -1, -1, -1, 307, 308, 309, 310, 3015 311, 312, 313, 314, 315, 316, 317, 318, -1, -1, 3016 -1, -1, -1, 324, 325, 326, 327, 328, 329, 330, 3017 331, 332, 333, 334, 33, -1, 337, 338, 339, 340, 3018 -1, 40, 343, 344, -1, -1, 45, 46, -1, -1, 3019 -1, -1, -1, -1, 355, 356, 357, 358, 359, 360, 3020 361, 362, 363, -1, -1, -1, 367, 368, 369, 370, 3021 371, 372, 373, 257, 258, 259, 260, -1, -1, 263, 3022 -1, -1, -1, -1, 268, -1, -1, 271, 272, -1, 3023 -1, -1, -1, -1, -1, -1, -1, 96, -1, -1, 3024 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3025 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3026 -1, -1, -1, 307, 308, 309, 310, 311, 312, 313, 3027 314, 315, 316, 317, 318, -1, -1, -1, -1, -1, 3028 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 3029 334, 33, -1, 337, 338, 339, 340, -1, 40, -1, 3030 -1, -1, -1, 45, -1, -1, -1, -1, -1, -1, 3031 -1, 355, 356, 357, 358, 359, 360, 361, 362, 363, 3032 -1, -1, -1, -1, -1, -1, -1, -1, -1, 373, 3033 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3034 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3035 -1, -1, -1, -1, 96, -1, -1, -1, -1, -1, 3036 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3037 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3038 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3039 -1, -1, -1, -1, -1, -1, -1, -1, 257, 258, 3040 259, 260, -1, -1, 263, -1, -1, -1, -1, 268, 3041 -1, -1, 271, 272, 33, -1, -1, -1, -1, -1, 3042 -1, 40, -1, -1, -1, -1, 45, -1, -1, -1, 3043 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3044 -1, -1, -1, -1, -1, -1, -1, -1, 307, 308, 3045 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 3046 -1, -1, -1, -1, -1, 324, 325, 326, 327, 328, 3047 329, 330, 331, 332, 333, 334, -1, 96, 337, 338, 3048 339, 340, -1, -1, -1, -1, -1, -1, -1, -1, 3049 -1, -1, -1, -1, -1, -1, 355, 356, 357, 358, 3050 359, 360, 361, 362, 363, -1, -1, -1, -1, -1, 3051 -1, -1, -1, -1, 373, 257, 258, 259, 260, -1, 3052 -1, 263, -1, -1, -1, -1, 268, -1, -1, 271, 3053 272, 33, -1, -1, -1, -1, -1, -1, 40, -1, 3054 -1, -1, -1, 45, -1, -1, -1, -1, -1, -1, 3055 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3056 -1, -1, -1, -1, -1, 307, 308, 309, 310, 311, 3057 312, 313, 314, 315, 316, 317, 318, -1, -1, -1, 3058 -1, -1, 324, 325, 326, 327, 328, 329, 330, 331, 3059 332, 333, 334, -1, 96, 337, 338, 339, 340, -1, 3060 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3061 -1, -1, -1, 355, 356, 357, 358, 359, 360, 361, 3062 362, 363, -1, -1, -1, -1, -1, -1, -1, -1, 3063 -1, 373, -1, -1, -1, -1, -1, -1, 257, 258, 3064 259, 260, -1, -1, 263, -1, -1, -1, -1, 268, 3065 -1, -1, 271, 272, 33, -1, -1, -1, -1, -1, 3066 -1, 40, -1, -1, -1, -1, 45, -1, -1, -1, 3067 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3068 -1, -1, -1, -1, -1, -1, -1, -1, 307, 308, 3069 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 3070 -1, -1, -1, -1, -1, 324, 325, 326, 327, 328, 3071 329, 330, 331, 332, 333, 334, -1, 96, 337, 338, 3072 339, 340, -1, -1, -1, -1, -1, -1, -1, -1, 3073 -1, -1, -1, -1, -1, -1, 355, 356, 357, 358, 3074 359, 360, 361, 362, 363, -1, -1, -1, -1, -1, 3075 -1, -1, -1, -1, 373, 257, 258, 259, 260, -1, 3076 -1, 263, -1, -1, -1, -1, 268, -1, -1, 271, 3077 272, 33, -1, -1, -1, -1, -1, -1, 40, -1, 3078 -1, -1, -1, 45, 46, -1, -1, -1, -1, -1, 3079 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3080 -1, -1, -1, -1, -1, 307, 308, 309, 310, 311, 3081 312, 313, 314, 315, 316, 317, 318, -1, -1, -1, 3082 -1, -1, 324, 325, 326, 327, 328, 329, 330, 331, 3083 332, 333, 334, -1, 96, 337, 338, 339, 340, -1, 3084 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3085 -1, -1, -1, 355, 356, 357, 358, 359, 360, 361, 3086 362, 363, -1, -1, -1, -1, -1, -1, -1, -1, 3087 -1, 373, -1, -1, -1, -1, -1, -1, 257, 258, 3088 259, 260, -1, -1, 263, -1, -1, -1, -1, 268, 3089 -1, -1, 271, 272, 33, -1, -1, -1, -1, -1, 3090 -1, 40, -1, 42, -1, -1, 45, -1, -1, -1, 3091 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3092 -1, -1, -1, -1, -1, -1, -1, -1, 307, 308, 3093 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 3094 -1, -1, -1, -1, -1, 324, 325, 326, 327, 328, 3095 329, 330, 331, 332, 333, 334, -1, 96, 337, 338, 3096 339, 340, -1, -1, -1, -1, -1, -1, -1, -1, 3097 -1, -1, -1, -1, -1, -1, 355, 356, 357, 358, 3098 359, 360, 361, 362, 363, -1, -1, -1, -1, -1, 3099 -1, -1, -1, -1, 373, 257, 258, 259, -1, -1, 3100 -1, 263, -1, -1, -1, -1, 268, -1, -1, 271, 3101 272, 33, -1, -1, -1, -1, -1, -1, 40, -1, 3102 -1, -1, -1, 45, -1, -1, -1, -1, -1, -1, 3103 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3104 -1, -1, -1, -1, -1, 307, 308, 309, 310, 311, 3105 312, 313, 314, 315, 316, 317, 318, -1, -1, -1, 3106 -1, -1, 324, 325, 326, 327, 328, 329, 330, 331, 3107 332, 333, 334, -1, 96, 337, 338, 339, 340, -1, 3108 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3109 -1, -1, -1, 355, 356, 357, 358, 359, 360, 361, 3110 362, 363, -1, -1, -1, -1, -1, -1, -1, -1, 3111 -1, -1, -1, -1, -1, -1, -1, -1, 257, 258, 3112 259, -1, -1, -1, 263, -1, -1, -1, -1, 268, 3113 -1, -1, 271, 272, 33, -1, -1, -1, -1, -1, 3114 -1, 40, -1, -1, -1, -1, 45, -1, -1, -1, 3115 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3116 -1, -1, -1, -1, -1, -1, -1, -1, 307, 308, 3117 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 3118 -1, -1, -1, -1, -1, 324, 325, 326, 327, 328, 3119 329, 330, 331, 332, 333, 334, -1, 96, 337, 338, 3120 339, 340, -1, -1, -1, -1, -1, -1, -1, -1, 3121 -1, -1, -1, -1, -1, -1, 355, 356, 357, 358, 3122 359, 360, 361, 362, 363, -1, -1, -1, -1, -1, 3123 -1, -1, -1, -1, -1, 257, 258, 259, -1, -1, 3124 -1, 263, -1, -1, -1, -1, 268, -1, -1, 271, 3125 272, 33, -1, -1, -1, -1, -1, -1, 40, -1, 3126 -1, -1, -1, 45, -1, -1, -1, -1, -1, -1, 3127 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3128 -1, -1, -1, -1, -1, 307, 308, 309, 310, 311, 3129 312, 313, 314, 315, 316, 317, 318, -1, -1, -1, 3130 -1, -1, 324, 325, 326, 327, 328, 329, 330, 331, 3131 332, 333, 334, -1, 96, 337, 338, 339, 340, -1, 3132 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3133 -1, -1, -1, 355, 356, 357, 358, 359, 360, 361, 3134 362, 363, -1, -1, -1, -1, -1, -1, -1, -1, 3135 -1, -1, -1, -1, -1, -1, -1, -1, 257, 258, 3136 259, -1, -1, -1, 263, -1, -1, -1, -1, 268, 3137 -1, -1, 271, 272, 33, -1, -1, -1, -1, -1, 3138 -1, 40, -1, -1, -1, -1, 45, -1, -1, -1, 3139 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3140 -1, -1, -1, -1, -1, -1, -1, -1, 307, 308, 3141 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 3142 -1, -1, -1, -1, -1, 324, 325, 326, 327, 328, 3143 329, 330, 331, 332, 333, 334, -1, 96, 337, 338, 3144 339, 340, -1, -1, -1, -1, -1, -1, -1, -1, 3145 -1, -1, -1, -1, -1, -1, 355, 356, 357, 358, 3146 359, 360, 361, 362, 363, -1, -1, -1, -1, -1, 3147 -1, -1, -1, -1, -1, 257, 258, 259, -1, -1, 3148 -1, 263, -1, -1, -1, -1, 268, -1, -1, 271, 3149 272, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3150 -1, -1, -1, -1, -1, -1, -1, 59, -1, -1, 3151 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3152 -1, -1, -1, -1, -1, 307, 308, 309, 310, 311, 3153 312, 313, 314, 315, 316, 317, 318, -1, -1, 91, 3154 -1, -1, 324, 325, 326, 327, 328, 329, 330, 331, 3155 332, 333, 334, -1, -1, 337, 338, 339, 340, -1, 3156 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3157 -1, 123, -1, 355, 356, 357, 358, 359, 360, 361, 3158 362, 363, -1, -1, -1, -1, -1, -1, -1, -1, 3159 -1, -1, -1, -1, -1, -1, -1, -1, 257, 258, 3160 259, -1, -1, -1, 263, -1, -1, -1, -1, 268, 3161 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3162 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3163 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3164 -1, -1, -1, -1, -1, -1, -1, -1, 307, 308, 3165 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 3166 -1, -1, -1, -1, -1, 324, 325, 326, 327, 328, 3167 329, 330, 331, 332, 333, 334, -1, -1, 337, 338, 3168 339, 340, -1, -1, -1, -1, -1, -1, -1, -1, 3169 -1, -1, -1, -1, -1, -1, 355, 356, 357, 358, 3170 359, 360, 361, 362, 363, 257, 258, -1, 260, 261, 3171 -1, -1, -1, -1, -1, -1, -1, 269, 270, 271, 3172 272, 273, 274, 275, 276, 277, 278, 279, 280, -1, 3173 -1, 283, -1, -1, -1, -1, -1, -1, -1, -1, 3174 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3175 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3176 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3177 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3178 -1, -1, -1, 335, -1, -1, -1, -1, -1, 341, 3179 342, -1, -1, 345, -1, 347, -1, -1, -1, -1, 3180 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3181 -1, -1, 364, -1, 366, -1, -1, -1, -1, -1, 3182 -1, 373, 374, 3183}; 3184#define YYFINAL 2 3185#ifndef YYDEBUG 3186#define YYDEBUG 0 3187#endif 3188#define YYMAXTOKEN 376 3189#if YYDEBUG 3190char *yyname[] = { 3191"end-of-file",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, 3192"'!'",0,0,0,"'%'",0,0,"'('","')'","'*'","'+'","','","'-'","'.'","'/'",0,0,0,0,0, 31930,0,0,0,0,"':'","';'","'<'","'='","'>'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 31940,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, 31950,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, 31960,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,0,0,0,0, 31970,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,0,0,0,0, 31980,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,"LABEL","VARIABLE","NUMBER", 3199"TEXT","COMMAND_LINE","DELIMITED","ORDINAL","TH","LEFT_ARROW_HEAD", 3200"RIGHT_ARROW_HEAD","DOUBLE_ARROW_HEAD","LAST","UP","DOWN","LEFT","RIGHT","BOX", 3201"CIRCLE","ELLIPSE","ARC","LINE","ARROW","MOVE","SPLINE","HEIGHT","RADIUS", 3202"FIGNAME","WIDTH","DIAMETER","FROM","TO","AT","WITH","BY","THEN","SOLID", 3203"DOTTED","DASHED","CHOP","SAME","INVISIBLE","LJUST","RJUST","ABOVE","BELOW", 3204"OF","THE","WAY","BETWEEN","AND","HERE","DOT_N","DOT_E","DOT_W","DOT_S", 3205"DOT_NE","DOT_SE","DOT_NW","DOT_SW","DOT_C","DOT_START","DOT_END","DOT_X", 3206"DOT_Y","DOT_HT","DOT_WID","DOT_RAD","SIN","COS","ATAN2","LOG","EXP","SQRT", 3207"K_MAX","K_MIN","INT","RAND","SRAND","COPY","THRU","TOP","BOTTOM","UPPER", 3208"LOWER","SH","PRINT","CW","CCW","FOR","DO","IF","ELSE","ANDAND","OROR", 3209"NOTEQUAL","EQUALEQUAL","LESSEQUAL","GREATEREQUAL","LEFT_CORNER","RIGHT_CORNER", 3210"NORTH","SOUTH","EAST","WEST","CENTER","END","START","RESET","UNTIL","PLOT", 3211"THICKNESS","FILL","COLORED","OUTLINED","SHADED","ALIGNED","SPRINTF","COMMAND", 3212"DEFINE","UNDEF", 3213}; 3214char *yyrule[] = { 3215"$accept : top", 3216"top : optional_separator", 3217"top : element_list", 3218"element_list : optional_separator middle_element_list optional_separator", 3219"middle_element_list : element", 3220"middle_element_list : middle_element_list separator element", 3221"optional_separator :", 3222"optional_separator : separator", 3223"separator : ';'", 3224"separator : separator ';'", 3225"placeless_element : FIGNAME '=' macro_name", 3226"placeless_element : VARIABLE '=' any_expr", 3227"placeless_element : VARIABLE ':' '=' any_expr", 3228"placeless_element : UP", 3229"placeless_element : DOWN", 3230"placeless_element : LEFT", 3231"placeless_element : RIGHT", 3232"placeless_element : COMMAND_LINE", 3233"placeless_element : COMMAND print_args", 3234"placeless_element : PRINT print_args", 3235"$$1 :", 3236"placeless_element : SH $$1 DELIMITED", 3237"placeless_element : COPY TEXT", 3238"$$2 :", 3239"$$3 :", 3240"placeless_element : COPY TEXT THRU $$2 DELIMITED $$3 until", 3241"$$4 :", 3242"$$5 :", 3243"placeless_element : COPY THRU $$4 DELIMITED $$5 until", 3244"$$6 :", 3245"placeless_element : FOR VARIABLE '=' expr TO expr optional_by DO $$6 DELIMITED", 3246"placeless_element : simple_if", 3247"$$7 :", 3248"placeless_element : simple_if ELSE $$7 DELIMITED", 3249"placeless_element : reset_variables", 3250"placeless_element : RESET", 3251"macro_name : VARIABLE", 3252"macro_name : LABEL", 3253"reset_variables : RESET VARIABLE", 3254"reset_variables : reset_variables VARIABLE", 3255"reset_variables : reset_variables ',' VARIABLE", 3256"print_args : print_arg", 3257"print_args : print_args print_arg", 3258"print_arg : expr", 3259"print_arg : text", 3260"print_arg : position", 3261"$$8 :", 3262"simple_if : IF any_expr THEN $$8 DELIMITED", 3263"until :", 3264"until : UNTIL TEXT", 3265"any_expr : expr", 3266"any_expr : text_expr", 3267"text_expr : text EQUALEQUAL text", 3268"text_expr : text NOTEQUAL text", 3269"text_expr : text_expr ANDAND text_expr", 3270"text_expr : text_expr ANDAND expr", 3271"text_expr : expr ANDAND text_expr", 3272"text_expr : text_expr OROR text_expr", 3273"text_expr : text_expr OROR expr", 3274"text_expr : expr OROR text_expr", 3275"text_expr : '!' text_expr", 3276"optional_by :", 3277"optional_by : BY expr", 3278"optional_by : BY '*' expr", 3279"element : object_spec", 3280"element : LABEL ':' optional_separator element", 3281"element : LABEL ':' optional_separator position_not_place", 3282"element : LABEL ':' optional_separator place", 3283"$$9 :", 3284"$$10 :", 3285"element : '{' $$9 element_list '}' $$10 optional_element", 3286"element : placeless_element", 3287"optional_element :", 3288"optional_element : element", 3289"object_spec : BOX", 3290"object_spec : CIRCLE", 3291"object_spec : ELLIPSE", 3292"object_spec : ARC", 3293"object_spec : LINE", 3294"object_spec : ARROW", 3295"object_spec : MOVE", 3296"object_spec : SPLINE", 3297"object_spec : text", 3298"object_spec : PLOT expr", 3299"object_spec : PLOT expr text", 3300"$$11 :", 3301"object_spec : '[' $$11 element_list ']'", 3302"object_spec : object_spec HEIGHT expr", 3303"object_spec : object_spec RADIUS expr", 3304"object_spec : object_spec WIDTH expr", 3305"object_spec : object_spec DIAMETER expr", 3306"object_spec : object_spec expr", 3307"object_spec : object_spec UP", 3308"object_spec : object_spec UP expr", 3309"object_spec : object_spec DOWN", 3310"object_spec : object_spec DOWN expr", 3311"object_spec : object_spec RIGHT", 3312"object_spec : object_spec RIGHT expr", 3313"object_spec : object_spec LEFT", 3314"object_spec : object_spec LEFT expr", 3315"object_spec : object_spec FROM position", 3316"object_spec : object_spec TO position", 3317"object_spec : object_spec AT position", 3318"object_spec : object_spec WITH path", 3319"object_spec : object_spec WITH position", 3320"object_spec : object_spec BY expr_pair", 3321"object_spec : object_spec THEN", 3322"object_spec : object_spec SOLID", 3323"object_spec : object_spec DOTTED", 3324"object_spec : object_spec DOTTED expr", 3325"object_spec : object_spec DASHED", 3326"object_spec : object_spec DASHED expr", 3327"object_spec : object_spec FILL", 3328"object_spec : object_spec FILL expr", 3329"object_spec : object_spec SHADED text", 3330"object_spec : object_spec COLORED text", 3331"object_spec : object_spec OUTLINED text", 3332"object_spec : object_spec CHOP", 3333"object_spec : object_spec CHOP expr", 3334"object_spec : object_spec SAME", 3335"object_spec : object_spec INVISIBLE", 3336"object_spec : object_spec LEFT_ARROW_HEAD", 3337"object_spec : object_spec RIGHT_ARROW_HEAD", 3338"object_spec : object_spec DOUBLE_ARROW_HEAD", 3339"object_spec : object_spec CW", 3340"object_spec : object_spec CCW", 3341"object_spec : object_spec text", 3342"object_spec : object_spec LJUST", 3343"object_spec : object_spec RJUST", 3344"object_spec : object_spec ABOVE", 3345"object_spec : object_spec BELOW", 3346"object_spec : object_spec THICKNESS expr", 3347"object_spec : object_spec ALIGNED", 3348"text : TEXT", 3349"text : SPRINTF '(' TEXT sprintf_args ')'", 3350"sprintf_args :", 3351"sprintf_args : sprintf_args ',' expr", 3352"position : position_not_place", 3353"position : place", 3354"position : '(' place ')'", 3355"position_not_place : expr_pair", 3356"position_not_place : position '+' expr_pair", 3357"position_not_place : '(' position '+' expr_pair ')'", 3358"position_not_place : position '-' expr_pair", 3359"position_not_place : '(' position '-' expr_pair ')'", 3360"position_not_place : '(' position ',' position ')'", 3361"position_not_place : expr between position AND position", 3362"position_not_place : '(' expr between position AND position ')'", 3363"position_not_place : expr '<' position ',' position '>'", 3364"position_not_place : '(' expr '<' position ',' position '>' ')'", 3365"between : BETWEEN", 3366"between : OF THE WAY BETWEEN", 3367"expr_pair : expr ',' expr", 3368"expr_pair : '(' expr_pair ')'", 3369"place : label", 3370"place : label corner", 3371"place : corner label", 3372"place : corner OF label", 3373"place : HERE", 3374"label : LABEL", 3375"label : nth_primitive", 3376"label : label '.' LABEL", 3377"ordinal : ORDINAL", 3378"ordinal : '`' any_expr TH", 3379"optional_ordinal_last : LAST", 3380"optional_ordinal_last : ordinal LAST", 3381"nth_primitive : ordinal object_type", 3382"nth_primitive : optional_ordinal_last object_type", 3383"object_type : BOX", 3384"object_type : CIRCLE", 3385"object_type : ELLIPSE", 3386"object_type : ARC", 3387"object_type : LINE", 3388"object_type : ARROW", 3389"object_type : SPLINE", 3390"object_type : '[' ']'", 3391"object_type : TEXT", 3392"label_path : '.' LABEL", 3393"label_path : label_path '.' LABEL", 3394"relative_path : corner", 3395"relative_path : label_path", 3396"relative_path : label_path corner", 3397"path : relative_path", 3398"path : '(' relative_path ',' relative_path ')'", 3399"path : ORDINAL LAST object_type relative_path", 3400"path : LAST object_type relative_path", 3401"path : ORDINAL object_type relative_path", 3402"path : LABEL relative_path", 3403"corner : DOT_N", 3404"corner : DOT_E", 3405"corner : DOT_W", 3406"corner : DOT_S", 3407"corner : DOT_NE", 3408"corner : DOT_SE", 3409"corner : DOT_NW", 3410"corner : DOT_SW", 3411"corner : DOT_C", 3412"corner : DOT_START", 3413"corner : DOT_END", 3414"corner : TOP", 3415"corner : BOTTOM", 3416"corner : LEFT", 3417"corner : RIGHT", 3418"corner : UPPER LEFT", 3419"corner : LOWER LEFT", 3420"corner : UPPER RIGHT", 3421"corner : LOWER RIGHT", 3422"corner : LEFT_CORNER", 3423"corner : RIGHT_CORNER", 3424"corner : UPPER LEFT_CORNER", 3425"corner : LOWER LEFT_CORNER", 3426"corner : UPPER RIGHT_CORNER", 3427"corner : LOWER RIGHT_CORNER", 3428"corner : NORTH", 3429"corner : SOUTH", 3430"corner : EAST", 3431"corner : WEST", 3432"corner : CENTER", 3433"corner : START", 3434"corner : END", 3435"expr : VARIABLE", 3436"expr : NUMBER", 3437"expr : place DOT_X", 3438"expr : place DOT_Y", 3439"expr : place DOT_HT", 3440"expr : place DOT_WID", 3441"expr : place DOT_RAD", 3442"expr : expr '+' expr", 3443"expr : expr '-' expr", 3444"expr : expr '*' expr", 3445"expr : expr '/' expr", 3446"expr : expr '%' expr", 3447"expr : expr '^' expr", 3448"expr : '-' expr", 3449"expr : '(' any_expr ')'", 3450"expr : SIN '(' any_expr ')'", 3451"expr : COS '(' any_expr ')'", 3452"expr : ATAN2 '(' any_expr ',' any_expr ')'", 3453"expr : LOG '(' any_expr ')'", 3454"expr : EXP '(' any_expr ')'", 3455"expr : SQRT '(' any_expr ')'", 3456"expr : K_MAX '(' any_expr ',' any_expr ')'", 3457"expr : K_MIN '(' any_expr ',' any_expr ')'", 3458"expr : INT '(' any_expr ')'", 3459"expr : RAND '(' any_expr ')'", 3460"expr : RAND '(' ')'", 3461"expr : SRAND '(' any_expr ')'", 3462"expr : expr '<' expr", 3463"expr : expr LESSEQUAL expr", 3464"expr : expr '>' expr", 3465"expr : expr GREATEREQUAL expr", 3466"expr : expr EQUALEQUAL expr", 3467"expr : expr NOTEQUAL expr", 3468"expr : expr ANDAND expr", 3469"expr : expr OROR expr", 3470"expr : '!' expr", 3471}; 3472#endif 3473#ifdef YYSTACKSIZE 3474#undef YYMAXDEPTH 3475#define YYMAXDEPTH YYSTACKSIZE 3476#else 3477#ifdef YYMAXDEPTH 3478#define YYSTACKSIZE YYMAXDEPTH 3479#else 3480#define YYSTACKSIZE 500 3481#define YYMAXDEPTH 500 3482#endif 3483#endif 3484int yydebug; 3485int yynerrs; 3486int yyerrflag; 3487int yychar; 3488short *yyssp; 3489YYSTYPE *yyvsp; 3490YYSTYPE yyval; 3491YYSTYPE yylval; 3492short yyss[YYSTACKSIZE]; 3493YYSTYPE yyvs[YYSTACKSIZE]; 3494#define yystacksize YYSTACKSIZE 3495#line 1643 "pic.y" 3496 3497/* bison defines const to be empty unless __STDC__ is defined, which it 3498isn't under cfront */ 3499 3500#ifdef const 3501#undef const 3502#endif 3503 3504static struct { 3505 const char *name; 3506 double val; 3507 int scaled; // non-zero if val should be multiplied by scale 3508} defaults_table[] = { 3509 { "arcrad", .25, 1 }, 3510 { "arrowht", .1, 1 }, 3511 { "arrowwid", .05, 1 }, 3512 { "circlerad", .25, 1 }, 3513 { "boxht", .5, 1 }, 3514 { "boxwid", .75, 1 }, 3515 { "boxrad", 0.0, 1 }, 3516 { "dashwid", .05, 1 }, 3517 { "ellipseht", .5, 1 }, 3518 { "ellipsewid", .75, 1 }, 3519 { "moveht", .5, 1 }, 3520 { "movewid", .5, 1 }, 3521 { "lineht", .5, 1 }, 3522 { "linewid", .5, 1 }, 3523 { "textht", 0.0, 1 }, 3524 { "textwid", 0.0, 1 }, 3525 { "scale", 1.0, 0 }, 3526 { "linethick", -1.0, 0 }, // in points 3527 { "fillval", .5, 0 }, 3528 { "arrowhead", 1.0, 0 }, 3529 { "maxpswid", 8.5, 0 }, 3530 { "maxpsht", 11.0, 0 }, 3531}; 3532 3533place *lookup_label(const char *label) 3534{ 3535 saved_state *state = current_saved_state; 3536 PTABLE(place) *tbl = current_table; 3537 for (;;) { 3538 place *pl = tbl->lookup(label); 3539 if (pl) 3540 return pl; 3541 if (!state) 3542 return 0; 3543 tbl = state->tbl; 3544 state = state->prev; 3545 } 3546} 3547 3548void define_label(const char *label, const place *pl) 3549{ 3550 place *p = new place[1]; 3551 *p = *pl; 3552 current_table->define(label, p); 3553} 3554 3555int lookup_variable(const char *name, double *val) 3556{ 3557 place *pl = lookup_label(name); 3558 if (pl) { 3559 *val = pl->x; 3560 return 1; 3561 } 3562 return 0; 3563} 3564 3565void define_variable(const char *name, double val) 3566{ 3567 place *p = new place[1]; 3568 p->obj = 0; 3569 p->x = val; 3570 p->y = 0.0; 3571 current_table->define(name, p); 3572 if (strcmp(name, "scale") == 0) { 3573 // When the scale changes, reset all scaled pre-defined variables to 3574 // their default values. 3575 for (unsigned int i = 0; 3576 i < sizeof(defaults_table)/sizeof(defaults_table[0]); i++) 3577 if (defaults_table[i].scaled) 3578 define_variable(defaults_table[i].name, val*defaults_table[i].val); 3579 } 3580} 3581 3582// called once only (not once per parse) 3583 3584void parse_init() 3585{ 3586 current_direction = RIGHT_DIRECTION; 3587 current_position.x = 0.0; 3588 current_position.y = 0.0; 3589 // This resets everything to its default value. 3590 reset_all(); 3591} 3592 3593void reset(const char *nm) 3594{ 3595 for (unsigned int i = 0; 3596 i < sizeof(defaults_table)/sizeof(defaults_table[0]); i++) 3597 if (strcmp(nm, defaults_table[i].name) == 0) { 3598 double val = defaults_table[i].val; 3599 if (defaults_table[i].scaled) { 3600 double scale; 3601 lookup_variable("scale", &scale); 3602 val *= scale; 3603 } 3604 define_variable(defaults_table[i].name, val); 3605 return; 3606 } 3607 lex_error("`%1' is not a predefined variable", nm); 3608} 3609 3610void reset_all() 3611{ 3612 // We only have to explicitly reset the pre-defined variables that 3613 // aren't scaled because `scale' is not scaled, and changing the 3614 // value of `scale' will reset all the pre-defined variables that 3615 // are scaled. 3616 for (unsigned int i = 0; 3617 i < sizeof(defaults_table)/sizeof(defaults_table[0]); i++) 3618 if (!defaults_table[i].scaled) 3619 define_variable(defaults_table[i].name, defaults_table[i].val); 3620} 3621 3622// called after each parse 3623 3624void parse_cleanup() 3625{ 3626 while (current_saved_state != 0) { 3627 delete current_table; 3628 current_table = current_saved_state->tbl; 3629 saved_state *tem = current_saved_state; 3630 current_saved_state = current_saved_state->prev; 3631 delete tem; 3632 } 3633 assert(current_table == &top_table); 3634 PTABLE_ITERATOR(place) iter(current_table); 3635 const char *key; 3636 place *pl; 3637 while (iter.next(&key, &pl)) 3638 if (pl->obj != 0) { 3639 position pos = pl->obj->origin(); 3640 pl->obj = 0; 3641 pl->x = pos.x; 3642 pl->y = pos.y; 3643 } 3644 while (olist.head != 0) { 3645 object *tem = olist.head; 3646 olist.head = olist.head->next; 3647 delete tem; 3648 } 3649 olist.tail = 0; 3650 current_direction = RIGHT_DIRECTION; 3651 current_position.x = 0.0; 3652 current_position.y = 0.0; 3653} 3654 3655const char *ordinal_postfix(int n) 3656{ 3657 if (n < 10 || n > 20) 3658 switch (n % 10) { 3659 case 1: 3660 return "st"; 3661 case 2: 3662 return "nd"; 3663 case 3: 3664 return "rd"; 3665 } 3666 return "th"; 3667} 3668 3669const char *object_type_name(object_type type) 3670{ 3671 switch (type) { 3672 case BOX_OBJECT: 3673 return "box"; 3674 case CIRCLE_OBJECT: 3675 return "circle"; 3676 case ELLIPSE_OBJECT: 3677 return "ellipse"; 3678 case ARC_OBJECT: 3679 return "arc"; 3680 case SPLINE_OBJECT: 3681 return "spline"; 3682 case LINE_OBJECT: 3683 return "line"; 3684 case ARROW_OBJECT: 3685 return "arrow"; 3686 case MOVE_OBJECT: 3687 return "move"; 3688 case TEXT_OBJECT: 3689 return "\"\""; 3690 case BLOCK_OBJECT: 3691 return "[]"; 3692 case OTHER_OBJECT: 3693 case MARK_OBJECT: 3694 default: 3695 break; 3696 } 3697 return "object"; 3698} 3699 3700static char sprintf_buf[1024]; 3701 3702char *format_number(const char *form, double n) 3703{ 3704 if (form == 0) 3705 form = "%g"; 3706 return do_sprintf(form, &n, 1); 3707} 3708 3709char *do_sprintf(const char *form, const double *v, int nv) 3710{ 3711 string result; 3712 int i = 0; 3713 string one_format; 3714 while (*form) { 3715 if (*form == '%') { 3716 one_format += *form++; 3717 for (; *form != '\0' && strchr("#-+ 0123456789.", *form) != 0; form++) 3718 one_format += *form; 3719 if (*form == '\0' || strchr("eEfgG%", *form) == 0) { 3720 lex_error("bad sprintf format"); 3721 result += one_format; 3722 result += form; 3723 break; 3724 } 3725 if (*form == '%') { 3726 one_format += *form++; 3727 one_format += '\0'; 3728 snprintf(sprintf_buf, sizeof(sprintf_buf), 3729 "%s", one_format.contents()); 3730 } 3731 else { 3732 if (i >= nv) { 3733 lex_error("too few arguments to snprintf"); 3734 result += one_format; 3735 result += form; 3736 break; 3737 } 3738 one_format += *form++; 3739 one_format += '\0'; 3740 snprintf(sprintf_buf, sizeof(sprintf_buf), 3741 one_format.contents(), v[i++]); 3742 } 3743 one_format.clear(); 3744 result += sprintf_buf; 3745 } 3746 else 3747 result += *form++; 3748 } 3749 result += '\0'; 3750 return strsave(result.contents()); 3751} 3752#line 3753 "y.tab.c" 3753#define YYABORT goto yyabort 3754#define YYREJECT goto yyabort 3755#define YYACCEPT goto yyaccept 3756#define YYERROR goto yyerrlab 3757int 3758#if defined(__STDC__) 3759yyparse(void) 3760#else 3761yyparse() 3762#endif 3763{ 3764 register int yym, yyn, yystate; 3765#if YYDEBUG 3766 register char *yys; 3767 extern char *getenv(); 3768 3769 if (yys = getenv("YYDEBUG")) 3770 { 3771 yyn = *yys; 3772 if (yyn >= '0' && yyn <= '9') 3773 yydebug = yyn - '0'; 3774 } 3775#endif 3776 3777 yynerrs = 0; 3778 yyerrflag = 0; 3779 yychar = (-1); 3780 3781 yyssp = yyss; 3782 yyvsp = yyvs; 3783 *yyssp = yystate = 0; 3784 3785yyloop: 3786 if ((yyn = yydefred[yystate]) != 0) goto yyreduce; 3787 if (yychar < 0) 3788 { 3789 if ((yychar = yylex()) < 0) yychar = 0; 3790#if YYDEBUG 3791 if (yydebug) 3792 { 3793 yys = 0; 3794 if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; 3795 if (!yys) yys = "illegal-symbol"; 3796 printf("%sdebug: state %d, reading %d (%s)\n", 3797 YYPREFIX, yystate, yychar, yys); 3798 } 3799#endif 3800 } 3801 if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 && 3802 yyn <= YYTABLESIZE && yycheck[yyn] == yychar) 3803 { 3804#if YYDEBUG 3805 if (yydebug) 3806 printf("%sdebug: state %d, shifting to state %d\n", 3807 YYPREFIX, yystate, yytable[yyn]); 3808#endif 3809 if (yyssp >= yyss + yystacksize - 1) 3810 { 3811 goto yyoverflow; 3812 } 3813 *++yyssp = yystate = yytable[yyn]; 3814 *++yyvsp = yylval; 3815 yychar = (-1); 3816 if (yyerrflag > 0) --yyerrflag; 3817 goto yyloop; 3818 } 3819 if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 && 3820 yyn <= YYTABLESIZE && yycheck[yyn] == yychar) 3821 { 3822 yyn = yytable[yyn]; 3823 goto yyreduce; 3824 } 3825 if (yyerrflag) goto yyinrecovery; 3826#ifdef lint 3827 goto yynewerror; 3828#endif 3829yynewerror: 3830 yyerror("syntax error"); 3831#ifdef lint 3832 goto yyerrlab; 3833#endif 3834yyerrlab: 3835 ++yynerrs; 3836yyinrecovery: 3837 if (yyerrflag < 3) 3838 { 3839 yyerrflag = 3; 3840 for (;;) 3841 { 3842 if ((yyn = yysindex[*yyssp]) && (yyn += YYERRCODE) >= 0 && 3843 yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE) 3844 { 3845#if YYDEBUG 3846 if (yydebug) 3847 printf("%sdebug: state %d, error recovery shifting\ 3848 to state %d\n", YYPREFIX, *yyssp, yytable[yyn]); 3849#endif 3850 if (yyssp >= yyss + yystacksize - 1) 3851 { 3852 goto yyoverflow; 3853 } 3854 *++yyssp = yystate = yytable[yyn]; 3855 *++yyvsp = yylval; 3856 goto yyloop; 3857 } 3858 else 3859 { 3860#if YYDEBUG 3861 if (yydebug) 3862 printf("%sdebug: error recovery discarding state %d\n", 3863 YYPREFIX, *yyssp); 3864#endif 3865 if (yyssp <= yyss) goto yyabort; 3866 --yyssp; 3867 --yyvsp; 3868 } 3869 } 3870 } 3871 else 3872 { 3873 if (yychar == 0) goto yyabort; 3874#if YYDEBUG 3875 if (yydebug) 3876 { 3877 yys = 0; 3878 if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; 3879 if (!yys) yys = "illegal-symbol"; 3880 printf("%sdebug: state %d, error recovery discards token %d (%s)\n", 3881 YYPREFIX, yystate, yychar, yys); 3882 } 3883#endif 3884 yychar = (-1); 3885 goto yyloop; 3886 } 3887yyreduce: 3888#if YYDEBUG 3889 if (yydebug) 3890 printf("%sdebug: state %d, reducing by rule %d (%s)\n", 3891 YYPREFIX, yystate, yyn, yyrule[yyn]); 3892#endif 3893 yym = yylen[yyn]; 3894 yyval = yyvsp[1-yym]; 3895 switch (yyn) 3896 { 3897case 2: 3898#line 278 "pic.y" 3899{ 3900 if (olist.head) 3901 print_picture(olist.head); 3902 } 3903break; 3904case 3: 3905#line 287 "pic.y" 3906{ yyval.pl = yyvsp[-1].pl; } 3907break; 3908case 4: 3909#line 292 "pic.y" 3910{ yyval.pl = yyvsp[0].pl; } 3911break; 3912case 5: 3913#line 294 "pic.y" 3914{ yyval.pl = yyvsp[-2].pl; } 3915break; 3916case 10: 3917#line 309 "pic.y" 3918{ 3919 a_delete graphname; 3920 graphname = new char[strlen(yyvsp[0].str) + 1]; 3921 strcpy(graphname, yyvsp[0].str); 3922 a_delete yyvsp[0].str; 3923 } 3924break; 3925case 11: 3926#line 317 "pic.y" 3927{ 3928 define_variable(yyvsp[-2].str, yyvsp[0].x); 3929 a_delete yyvsp[-2].str; 3930 } 3931break; 3932case 12: 3933#line 322 "pic.y" 3934{ 3935 place *p = lookup_label(yyvsp[-3].str); 3936 if (!p) { 3937 lex_error("variable `%1' not defined", yyvsp[-3].str); 3938 YYABORT; 3939 } 3940 p->obj = 0; 3941 p->x = yyvsp[0].x; 3942 p->y = 0.0; 3943 a_delete yyvsp[-3].str; 3944 } 3945break; 3946case 13: 3947#line 334 "pic.y" 3948{ current_direction = UP_DIRECTION; } 3949break; 3950case 14: 3951#line 336 "pic.y" 3952{ current_direction = DOWN_DIRECTION; } 3953break; 3954case 15: 3955#line 338 "pic.y" 3956{ current_direction = LEFT_DIRECTION; } 3957break; 3958case 16: 3959#line 340 "pic.y" 3960{ current_direction = RIGHT_DIRECTION; } 3961break; 3962case 17: 3963#line 342 "pic.y" 3964{ 3965 olist.append(make_command_object(yyvsp[0].lstr.str, yyvsp[0].lstr.filename, 3966 yyvsp[0].lstr.lineno)); 3967 } 3968break; 3969case 18: 3970#line 347 "pic.y" 3971{ 3972 olist.append(make_command_object(yyvsp[0].lstr.str, yyvsp[0].lstr.filename, 3973 yyvsp[0].lstr.lineno)); 3974 } 3975break; 3976case 19: 3977#line 352 "pic.y" 3978{ 3979 fprintf(stderr, "%s\n", yyvsp[0].lstr.str); 3980 a_delete yyvsp[0].lstr.str; 3981 fflush(stderr); 3982 } 3983break; 3984case 20: 3985#line 358 "pic.y" 3986{ delim_flag = 1; } 3987break; 3988case 21: 3989#line 360 "pic.y" 3990{ 3991 delim_flag = 0; 3992 if (safer_flag) 3993 lex_error("unsafe to run command `%1'", yyvsp[0].str); 3994 else 3995 system(yyvsp[0].str); 3996 a_delete yyvsp[0].str; 3997 } 3998break; 3999case 22: 4000#line 369 "pic.y" 4001{ 4002 if (yychar < 0) 4003 do_lookahead(); 4004 do_copy(yyvsp[0].lstr.str); 4005 /* do not delete the filename*/ 4006 } 4007break; 4008case 23: 4009#line 376 "pic.y" 4010{ delim_flag = 2; } 4011break; 4012case 24: 4013#line 378 "pic.y" 4014{ delim_flag = 0; } 4015break; 4016case 25: 4017#line 380 "pic.y" 4018{ 4019 if (yychar < 0) 4020 do_lookahead(); 4021 copy_file_thru(yyvsp[-5].lstr.str, yyvsp[-2].str, yyvsp[0].str); 4022 /* do not delete the filename*/ 4023 a_delete yyvsp[-2].str; 4024 a_delete yyvsp[0].str; 4025 } 4026break; 4027case 26: 4028#line 389 "pic.y" 4029{ delim_flag = 2; } 4030break; 4031case 27: 4032#line 391 "pic.y" 4033{ delim_flag = 0; } 4034break; 4035case 28: 4036#line 393 "pic.y" 4037{ 4038 if (yychar < 0) 4039 do_lookahead(); 4040 copy_rest_thru(yyvsp[-2].str, yyvsp[0].str); 4041 a_delete yyvsp[-2].str; 4042 a_delete yyvsp[0].str; 4043 } 4044break; 4045case 29: 4046#line 401 "pic.y" 4047{ delim_flag = 1; } 4048break; 4049case 30: 4050#line 403 "pic.y" 4051{ 4052 delim_flag = 0; 4053 if (yychar < 0) 4054 do_lookahead(); 4055 do_for(yyvsp[-8].str, yyvsp[-6].x, yyvsp[-4].x, yyvsp[-3].by.is_multiplicative, yyvsp[-3].by.val, yyvsp[0].str); 4056 } 4057break; 4058case 31: 4059#line 410 "pic.y" 4060{ 4061 if (yychar < 0) 4062 do_lookahead(); 4063 if (yyvsp[0].if_data.x != 0.0) 4064 push_body(yyvsp[0].if_data.body); 4065 a_delete yyvsp[0].if_data.body; 4066 } 4067break; 4068case 32: 4069#line 418 "pic.y" 4070{ delim_flag = 1; } 4071break; 4072case 33: 4073#line 420 "pic.y" 4074{ 4075 delim_flag = 0; 4076 if (yychar < 0) 4077 do_lookahead(); 4078 if (yyvsp[-3].if_data.x != 0.0) 4079 push_body(yyvsp[-3].if_data.body); 4080 else 4081 push_body(yyvsp[0].str); 4082 a_delete yyvsp[-3].if_data.body; 4083 a_delete yyvsp[0].str; 4084 } 4085break; 4086case 35: 4087#line 433 "pic.y" 4088{ define_variable("scale", 1.0); } 4089break; 4090case 38: 4091#line 443 "pic.y" 4092{ 4093 reset(yyvsp[0].str); 4094 a_delete yyvsp[0].str; 4095 } 4096break; 4097case 39: 4098#line 448 "pic.y" 4099{ 4100 reset(yyvsp[0].str); 4101 a_delete yyvsp[0].str; 4102 } 4103break; 4104case 40: 4105#line 453 "pic.y" 4106{ 4107 reset(yyvsp[0].str); 4108 a_delete yyvsp[0].str; 4109 } 4110break; 4111case 41: 4112#line 461 "pic.y" 4113{ yyval.lstr = yyvsp[0].lstr; } 4114break; 4115case 42: 4116#line 463 "pic.y" 4117{ 4118 yyval.lstr.str = new char[strlen(yyvsp[-1].lstr.str) + strlen(yyvsp[0].lstr.str) + 1]; 4119 strcpy(yyval.lstr.str, yyvsp[-1].lstr.str); 4120 strcat(yyval.lstr.str, yyvsp[0].lstr.str); 4121 a_delete yyvsp[-1].lstr.str; 4122 a_delete yyvsp[0].lstr.str; 4123 if (yyvsp[-1].lstr.filename) { 4124 yyval.lstr.filename = yyvsp[-1].lstr.filename; 4125 yyval.lstr.lineno = yyvsp[-1].lstr.lineno; 4126 } 4127 else if (yyvsp[0].lstr.filename) { 4128 yyval.lstr.filename = yyvsp[0].lstr.filename; 4129 yyval.lstr.lineno = yyvsp[0].lstr.lineno; 4130 } 4131 } 4132break; 4133case 43: 4134#line 482 "pic.y" 4135{ 4136 yyval.lstr.str = new char[GDIGITS + 1]; 4137 sprintf(yyval.lstr.str, "%g", yyvsp[0].x); 4138 yyval.lstr.filename = 0; 4139 yyval.lstr.lineno = 0; 4140 } 4141break; 4142case 44: 4143#line 489 "pic.y" 4144{ yyval.lstr = yyvsp[0].lstr; } 4145break; 4146case 45: 4147#line 491 "pic.y" 4148{ 4149 yyval.lstr.str = new char[GDIGITS + 2 + GDIGITS + 1]; 4150 sprintf(yyval.lstr.str, "%g, %g", yyvsp[0].pair.x, yyvsp[0].pair.y); 4151 yyval.lstr.filename = 0; 4152 yyval.lstr.lineno = 0; 4153 } 4154break; 4155case 46: 4156#line 501 "pic.y" 4157{ delim_flag = 1; } 4158break; 4159case 47: 4160#line 503 "pic.y" 4161{ 4162 delim_flag = 0; 4163 yyval.if_data.x = yyvsp[-3].x; 4164 yyval.if_data.body = yyvsp[0].str; 4165 } 4166break; 4167case 48: 4168#line 512 "pic.y" 4169{ yyval.str = 0; } 4170break; 4171case 49: 4172#line 514 "pic.y" 4173{ yyval.str = yyvsp[0].lstr.str; } 4174break; 4175case 50: 4176#line 519 "pic.y" 4177{ yyval.x = yyvsp[0].x; } 4178break; 4179case 51: 4180#line 521 "pic.y" 4181{ yyval.x = yyvsp[0].x; } 4182break; 4183case 52: 4184#line 526 "pic.y" 4185{ 4186 yyval.x = strcmp(yyvsp[-2].lstr.str, yyvsp[0].lstr.str) == 0; 4187 a_delete yyvsp[-2].lstr.str; 4188 a_delete yyvsp[0].lstr.str; 4189 } 4190break; 4191case 53: 4192#line 532 "pic.y" 4193{ 4194 yyval.x = strcmp(yyvsp[-2].lstr.str, yyvsp[0].lstr.str) != 0; 4195 a_delete yyvsp[-2].lstr.str; 4196 a_delete yyvsp[0].lstr.str; 4197 } 4198break; 4199case 54: 4200#line 538 "pic.y" 4201{ yyval.x = (yyvsp[-2].x != 0.0 && yyvsp[0].x != 0.0); } 4202break; 4203case 55: 4204#line 540 "pic.y" 4205{ yyval.x = (yyvsp[-2].x != 0.0 && yyvsp[0].x != 0.0); } 4206break; 4207case 56: 4208#line 542 "pic.y" 4209{ yyval.x = (yyvsp[-2].x != 0.0 && yyvsp[0].x != 0.0); } 4210break; 4211case 57: 4212#line 544 "pic.y" 4213{ yyval.x = (yyvsp[-2].x != 0.0 || yyvsp[0].x != 0.0); } 4214break; 4215case 58: 4216#line 546 "pic.y" 4217{ yyval.x = (yyvsp[-2].x != 0.0 || yyvsp[0].x != 0.0); } 4218break; 4219case 59: 4220#line 548 "pic.y" 4221{ yyval.x = (yyvsp[-2].x != 0.0 || yyvsp[0].x != 0.0); } 4222break; 4223case 60: 4224#line 550 "pic.y" 4225{ yyval.x = (yyvsp[0].x == 0.0); } 4226break; 4227case 61: 4228#line 556 "pic.y" 4229{ 4230 yyval.by.val = 1.0; 4231 yyval.by.is_multiplicative = 0; 4232 } 4233break; 4234case 62: 4235#line 561 "pic.y" 4236{ 4237 yyval.by.val = yyvsp[0].x; 4238 yyval.by.is_multiplicative = 0; 4239 } 4240break; 4241case 63: 4242#line 566 "pic.y" 4243{ 4244 yyval.by.val = yyvsp[0].x; 4245 yyval.by.is_multiplicative = 1; 4246 } 4247break; 4248case 64: 4249#line 574 "pic.y" 4250{ 4251 yyval.pl.obj = yyvsp[0].spec->make_object(¤t_position, 4252 ¤t_direction); 4253 if (yyval.pl.obj == 0) 4254 YYABORT; 4255 delete yyvsp[0].spec; 4256 if (yyval.pl.obj) 4257 olist.append(yyval.pl.obj); 4258 else { 4259 yyval.pl.x = current_position.x; 4260 yyval.pl.y = current_position.y; 4261 } 4262 } 4263break; 4264case 65: 4265#line 588 "pic.y" 4266{ 4267 yyval.pl = yyvsp[0].pl; 4268 define_label(yyvsp[-3].str, & yyval.pl); 4269 a_delete yyvsp[-3].str; 4270 } 4271break; 4272case 66: 4273#line 594 "pic.y" 4274{ 4275 yyval.pl.obj = 0; 4276 yyval.pl.x = yyvsp[0].pair.x; 4277 yyval.pl.y = yyvsp[0].pair.y; 4278 define_label(yyvsp[-3].str, & yyval.pl); 4279 a_delete yyvsp[-3].str; 4280 } 4281break; 4282case 67: 4283#line 602 "pic.y" 4284{ 4285 yyval.pl = yyvsp[0].pl; 4286 define_label(yyvsp[-3].str, & yyval.pl); 4287 a_delete yyvsp[-3].str; 4288 } 4289break; 4290case 68: 4291#line 608 "pic.y" 4292{ 4293 yyval.state.x = current_position.x; 4294 yyval.state.y = current_position.y; 4295 yyval.state.dir = current_direction; 4296 } 4297break; 4298case 69: 4299#line 614 "pic.y" 4300{ 4301 current_position.x = yyvsp[-2].state.x; 4302 current_position.y = yyvsp[-2].state.y; 4303 current_direction = yyvsp[-2].state.dir; 4304 } 4305break; 4306case 70: 4307#line 620 "pic.y" 4308{ 4309 yyval.pl = yyvsp[-3].pl; 4310 } 4311break; 4312case 71: 4313#line 624 "pic.y" 4314{ 4315 yyval.pl.obj = 0; 4316 yyval.pl.x = current_position.x; 4317 yyval.pl.y = current_position.y; 4318 } 4319break; 4320case 72: 4321#line 633 "pic.y" 4322{} 4323break; 4324case 73: 4325#line 635 "pic.y" 4326{} 4327break; 4328case 74: 4329#line 640 "pic.y" 4330{ yyval.spec = new object_spec(BOX_OBJECT); } 4331break; 4332case 75: 4333#line 642 "pic.y" 4334{ yyval.spec = new object_spec(CIRCLE_OBJECT); } 4335break; 4336case 76: 4337#line 644 "pic.y" 4338{ yyval.spec = new object_spec(ELLIPSE_OBJECT); } 4339break; 4340case 77: 4341#line 646 "pic.y" 4342{ 4343 yyval.spec = new object_spec(ARC_OBJECT); 4344 yyval.spec->dir = current_direction; 4345 } 4346break; 4347case 78: 4348#line 651 "pic.y" 4349{ 4350 yyval.spec = new object_spec(LINE_OBJECT); 4351 lookup_variable("lineht", & yyval.spec->segment_height); 4352 lookup_variable("linewid", & yyval.spec->segment_width); 4353 yyval.spec->dir = current_direction; 4354 } 4355break; 4356case 79: 4357#line 658 "pic.y" 4358{ 4359 yyval.spec = new object_spec(ARROW_OBJECT); 4360 lookup_variable("lineht", & yyval.spec->segment_height); 4361 lookup_variable("linewid", & yyval.spec->segment_width); 4362 yyval.spec->dir = current_direction; 4363 } 4364break; 4365case 80: 4366#line 665 "pic.y" 4367{ 4368 yyval.spec = new object_spec(MOVE_OBJECT); 4369 lookup_variable("moveht", & yyval.spec->segment_height); 4370 lookup_variable("movewid", & yyval.spec->segment_width); 4371 yyval.spec->dir = current_direction; 4372 } 4373break; 4374case 81: 4375#line 672 "pic.y" 4376{ 4377 yyval.spec = new object_spec(SPLINE_OBJECT); 4378 lookup_variable("lineht", & yyval.spec->segment_height); 4379 lookup_variable("linewid", & yyval.spec->segment_width); 4380 yyval.spec->dir = current_direction; 4381 } 4382break; 4383case 82: 4384#line 679 "pic.y" 4385{ 4386 yyval.spec = new object_spec(TEXT_OBJECT); 4387 yyval.spec->text = new text_item(yyvsp[0].lstr.str, yyvsp[0].lstr.filename, yyvsp[0].lstr.lineno); 4388 } 4389break; 4390case 83: 4391#line 684 "pic.y" 4392{ 4393 yyval.spec = new object_spec(TEXT_OBJECT); 4394 yyval.spec->text = new text_item(format_number(0, yyvsp[0].x), 0, -1); 4395 } 4396break; 4397case 84: 4398#line 689 "pic.y" 4399{ 4400 yyval.spec = new object_spec(TEXT_OBJECT); 4401 yyval.spec->text = new text_item(format_number(yyvsp[0].lstr.str, yyvsp[-1].x), 4402 yyvsp[0].lstr.filename, yyvsp[0].lstr.lineno); 4403 a_delete yyvsp[0].lstr.str; 4404 } 4405break; 4406case 85: 4407#line 696 "pic.y" 4408{ 4409 saved_state *p = new saved_state; 4410 yyval.pstate = p; 4411 p->x = current_position.x; 4412 p->y = current_position.y; 4413 p->dir = current_direction; 4414 p->tbl = current_table; 4415 p->prev = current_saved_state; 4416 current_position.x = 0.0; 4417 current_position.y = 0.0; 4418 current_table = new PTABLE(place); 4419 current_saved_state = p; 4420 olist.append(make_mark_object()); 4421 } 4422break; 4423case 86: 4424#line 711 "pic.y" 4425{ 4426 current_position.x = yyvsp[-2].pstate->x; 4427 current_position.y = yyvsp[-2].pstate->y; 4428 current_direction = yyvsp[-2].pstate->dir; 4429 yyval.spec = new object_spec(BLOCK_OBJECT); 4430 olist.wrap_up_block(& yyval.spec->oblist); 4431 yyval.spec->tbl = current_table; 4432 current_table = yyvsp[-2].pstate->tbl; 4433 current_saved_state = yyvsp[-2].pstate->prev; 4434 delete yyvsp[-2].pstate; 4435 } 4436break; 4437case 87: 4438#line 723 "pic.y" 4439{ 4440 yyval.spec = yyvsp[-2].spec; 4441 yyval.spec->height = yyvsp[0].x; 4442 yyval.spec->flags |= HAS_HEIGHT; 4443 } 4444break; 4445case 88: 4446#line 729 "pic.y" 4447{ 4448 yyval.spec = yyvsp[-2].spec; 4449 yyval.spec->radius = yyvsp[0].x; 4450 yyval.spec->flags |= HAS_RADIUS; 4451 } 4452break; 4453case 89: 4454#line 735 "pic.y" 4455{ 4456 yyval.spec = yyvsp[-2].spec; 4457 yyval.spec->width = yyvsp[0].x; 4458 yyval.spec->flags |= HAS_WIDTH; 4459 } 4460break; 4461case 90: 4462#line 741 "pic.y" 4463{ 4464 yyval.spec = yyvsp[-2].spec; 4465 yyval.spec->radius = yyvsp[0].x/2.0; 4466 yyval.spec->flags |= HAS_RADIUS; 4467 } 4468break; 4469case 91: 4470#line 747 "pic.y" 4471{ 4472 yyval.spec = yyvsp[-1].spec; 4473 yyval.spec->flags |= HAS_SEGMENT; 4474 switch (yyval.spec->dir) { 4475 case UP_DIRECTION: 4476 yyval.spec->segment_pos.y += yyvsp[0].x; 4477 break; 4478 case DOWN_DIRECTION: 4479 yyval.spec->segment_pos.y -= yyvsp[0].x; 4480 break; 4481 case RIGHT_DIRECTION: 4482 yyval.spec->segment_pos.x += yyvsp[0].x; 4483 break; 4484 case LEFT_DIRECTION: 4485 yyval.spec->segment_pos.x -= yyvsp[0].x; 4486 break; 4487 } 4488 } 4489break; 4490case 92: 4491#line 766 "pic.y" 4492{ 4493 yyval.spec = yyvsp[-1].spec; 4494 yyval.spec->dir = UP_DIRECTION; 4495 yyval.spec->flags |= HAS_SEGMENT; 4496 yyval.spec->segment_pos.y += yyval.spec->segment_height; 4497 } 4498break; 4499case 93: 4500#line 773 "pic.y" 4501{ 4502 yyval.spec = yyvsp[-2].spec; 4503 yyval.spec->dir = UP_DIRECTION; 4504 yyval.spec->flags |= HAS_SEGMENT; 4505 yyval.spec->segment_pos.y += yyvsp[0].x; 4506 } 4507break; 4508case 94: 4509#line 780 "pic.y" 4510{ 4511 yyval.spec = yyvsp[-1].spec; 4512 yyval.spec->dir = DOWN_DIRECTION; 4513 yyval.spec->flags |= HAS_SEGMENT; 4514 yyval.spec->segment_pos.y -= yyval.spec->segment_height; 4515 } 4516break; 4517case 95: 4518#line 787 "pic.y" 4519{ 4520 yyval.spec = yyvsp[-2].spec; 4521 yyval.spec->dir = DOWN_DIRECTION; 4522 yyval.spec->flags |= HAS_SEGMENT; 4523 yyval.spec->segment_pos.y -= yyvsp[0].x; 4524 } 4525break; 4526case 96: 4527#line 794 "pic.y" 4528{ 4529 yyval.spec = yyvsp[-1].spec; 4530 yyval.spec->dir = RIGHT_DIRECTION; 4531 yyval.spec->flags |= HAS_SEGMENT; 4532 yyval.spec->segment_pos.x += yyval.spec->segment_width; 4533 } 4534break; 4535case 97: 4536#line 801 "pic.y" 4537{ 4538 yyval.spec = yyvsp[-2].spec; 4539 yyval.spec->dir = RIGHT_DIRECTION; 4540 yyval.spec->flags |= HAS_SEGMENT; 4541 yyval.spec->segment_pos.x += yyvsp[0].x; 4542 } 4543break; 4544case 98: 4545#line 808 "pic.y" 4546{ 4547 yyval.spec = yyvsp[-1].spec; 4548 yyval.spec->dir = LEFT_DIRECTION; 4549 yyval.spec->flags |= HAS_SEGMENT; 4550 yyval.spec->segment_pos.x -= yyval.spec->segment_width; 4551 } 4552break; 4553case 99: 4554#line 815 "pic.y" 4555{ 4556 yyval.spec = yyvsp[-2].spec; 4557 yyval.spec->dir = LEFT_DIRECTION; 4558 yyval.spec->flags |= HAS_SEGMENT; 4559 yyval.spec->segment_pos.x -= yyvsp[0].x; 4560 } 4561break; 4562case 100: 4563#line 822 "pic.y" 4564{ 4565 yyval.spec = yyvsp[-2].spec; 4566 yyval.spec->flags |= HAS_FROM; 4567 yyval.spec->from.x = yyvsp[0].pair.x; 4568 yyval.spec->from.y = yyvsp[0].pair.y; 4569 } 4570break; 4571case 101: 4572#line 829 "pic.y" 4573{ 4574 yyval.spec = yyvsp[-2].spec; 4575 if (yyval.spec->flags & HAS_SEGMENT) 4576 yyval.spec->segment_list = new segment(yyval.spec->segment_pos, 4577 yyval.spec->segment_is_absolute, 4578 yyval.spec->segment_list); 4579 yyval.spec->flags |= HAS_SEGMENT; 4580 yyval.spec->segment_pos.x = yyvsp[0].pair.x; 4581 yyval.spec->segment_pos.y = yyvsp[0].pair.y; 4582 yyval.spec->segment_is_absolute = 1; 4583 yyval.spec->flags |= HAS_TO; 4584 yyval.spec->to.x = yyvsp[0].pair.x; 4585 yyval.spec->to.y = yyvsp[0].pair.y; 4586 } 4587break; 4588case 102: 4589#line 844 "pic.y" 4590{ 4591 yyval.spec = yyvsp[-2].spec; 4592 yyval.spec->flags |= HAS_AT; 4593 yyval.spec->at.x = yyvsp[0].pair.x; 4594 yyval.spec->at.y = yyvsp[0].pair.y; 4595 if (yyval.spec->type != ARC_OBJECT) { 4596 yyval.spec->flags |= HAS_FROM; 4597 yyval.spec->from.x = yyvsp[0].pair.x; 4598 yyval.spec->from.y = yyvsp[0].pair.y; 4599 } 4600 } 4601break; 4602case 103: 4603#line 856 "pic.y" 4604{ 4605 yyval.spec = yyvsp[-2].spec; 4606 yyval.spec->flags |= HAS_WITH; 4607 yyval.spec->with = yyvsp[0].pth; 4608 } 4609break; 4610case 104: 4611#line 862 "pic.y" 4612{ 4613 yyval.spec = yyvsp[-2].spec; 4614 yyval.spec->flags |= HAS_WITH; 4615 position pos; 4616 pos.x = yyvsp[0].pair.x; 4617 pos.y = yyvsp[0].pair.y; 4618 yyval.spec->with = new path(pos); 4619 } 4620break; 4621case 105: 4622#line 871 "pic.y" 4623{ 4624 yyval.spec = yyvsp[-2].spec; 4625 yyval.spec->flags |= HAS_SEGMENT; 4626 yyval.spec->segment_pos.x += yyvsp[0].pair.x; 4627 yyval.spec->segment_pos.y += yyvsp[0].pair.y; 4628 } 4629break; 4630case 106: 4631#line 878 "pic.y" 4632{ 4633 yyval.spec = yyvsp[-1].spec; 4634 if (yyval.spec->flags & HAS_SEGMENT) { 4635 yyval.spec->segment_list = new segment(yyval.spec->segment_pos, 4636 yyval.spec->segment_is_absolute, 4637 yyval.spec->segment_list); 4638 yyval.spec->flags &= ~HAS_SEGMENT; 4639 yyval.spec->segment_pos.x = yyval.spec->segment_pos.y = 0.0; 4640 yyval.spec->segment_is_absolute = 0; 4641 } 4642 } 4643break; 4644case 107: 4645#line 890 "pic.y" 4646{ 4647 yyval.spec = yyvsp[-1].spec; /* nothing*/ 4648 } 4649break; 4650case 108: 4651#line 894 "pic.y" 4652{ 4653 yyval.spec = yyvsp[-1].spec; 4654 yyval.spec->flags |= IS_DOTTED; 4655 lookup_variable("dashwid", & yyval.spec->dash_width); 4656 } 4657break; 4658case 109: 4659#line 900 "pic.y" 4660{ 4661 yyval.spec = yyvsp[-2].spec; 4662 yyval.spec->flags |= IS_DOTTED; 4663 yyval.spec->dash_width = yyvsp[0].x; 4664 } 4665break; 4666case 110: 4667#line 906 "pic.y" 4668{ 4669 yyval.spec = yyvsp[-1].spec; 4670 yyval.spec->flags |= IS_DASHED; 4671 lookup_variable("dashwid", & yyval.spec->dash_width); 4672 } 4673break; 4674case 111: 4675#line 912 "pic.y" 4676{ 4677 yyval.spec = yyvsp[-2].spec; 4678 yyval.spec->flags |= IS_DASHED; 4679 yyval.spec->dash_width = yyvsp[0].x; 4680 } 4681break; 4682case 112: 4683#line 918 "pic.y" 4684{ 4685 yyval.spec = yyvsp[-1].spec; 4686 yyval.spec->flags |= IS_DEFAULT_FILLED; 4687 } 4688break; 4689case 113: 4690#line 923 "pic.y" 4691{ 4692 yyval.spec = yyvsp[-2].spec; 4693 yyval.spec->flags |= IS_FILLED; 4694 yyval.spec->fill = yyvsp[0].x; 4695 } 4696break; 4697case 114: 4698#line 929 "pic.y" 4699{ 4700 yyval.spec = yyvsp[-2].spec; 4701 yyval.spec->flags |= (IS_SHADED | IS_FILLED); 4702 yyval.spec->shaded = new char[strlen(yyvsp[0].lstr.str)+1]; 4703 strcpy(yyval.spec->shaded, yyvsp[0].lstr.str); 4704 } 4705break; 4706case 115: 4707#line 936 "pic.y" 4708{ 4709 yyval.spec = yyvsp[-2].spec; 4710 yyval.spec->flags |= (IS_SHADED | IS_OUTLINED | IS_FILLED); 4711 yyval.spec->shaded = new char[strlen(yyvsp[0].lstr.str)+1]; 4712 strcpy(yyval.spec->shaded, yyvsp[0].lstr.str); 4713 yyval.spec->outlined = new char[strlen(yyvsp[0].lstr.str)+1]; 4714 strcpy(yyval.spec->outlined, yyvsp[0].lstr.str); 4715 } 4716break; 4717case 116: 4718#line 945 "pic.y" 4719{ 4720 yyval.spec = yyvsp[-2].spec; 4721 yyval.spec->flags |= IS_OUTLINED; 4722 yyval.spec->outlined = new char[strlen(yyvsp[0].lstr.str)+1]; 4723 strcpy(yyval.spec->outlined, yyvsp[0].lstr.str); 4724 } 4725break; 4726case 117: 4727#line 952 "pic.y" 4728{ 4729 yyval.spec = yyvsp[-1].spec; 4730 /* line chop chop means line chop 0 chop 0*/ 4731 if (yyval.spec->flags & IS_DEFAULT_CHOPPED) { 4732 yyval.spec->flags |= IS_CHOPPED; 4733 yyval.spec->flags &= ~IS_DEFAULT_CHOPPED; 4734 yyval.spec->start_chop = yyval.spec->end_chop = 0.0; 4735 } 4736 else if (yyval.spec->flags & IS_CHOPPED) { 4737 yyval.spec->end_chop = 0.0; 4738 } 4739 else { 4740 yyval.spec->flags |= IS_DEFAULT_CHOPPED; 4741 } 4742 } 4743break; 4744case 118: 4745#line 968 "pic.y" 4746{ 4747 yyval.spec = yyvsp[-2].spec; 4748 if (yyval.spec->flags & IS_DEFAULT_CHOPPED) { 4749 yyval.spec->flags |= IS_CHOPPED; 4750 yyval.spec->flags &= ~IS_DEFAULT_CHOPPED; 4751 yyval.spec->start_chop = 0.0; 4752 yyval.spec->end_chop = yyvsp[0].x; 4753 } 4754 else if (yyval.spec->flags & IS_CHOPPED) { 4755 yyval.spec->end_chop = yyvsp[0].x; 4756 } 4757 else { 4758 yyval.spec->start_chop = yyval.spec->end_chop = yyvsp[0].x; 4759 yyval.spec->flags |= IS_CHOPPED; 4760 } 4761 } 4762break; 4763case 119: 4764#line 985 "pic.y" 4765{ 4766 yyval.spec = yyvsp[-1].spec; 4767 yyval.spec->flags |= IS_SAME; 4768 } 4769break; 4770case 120: 4771#line 990 "pic.y" 4772{ 4773 yyval.spec = yyvsp[-1].spec; 4774 yyval.spec->flags |= IS_INVISIBLE; 4775 } 4776break; 4777case 121: 4778#line 995 "pic.y" 4779{ 4780 yyval.spec = yyvsp[-1].spec; 4781 yyval.spec->flags |= HAS_LEFT_ARROW_HEAD; 4782 } 4783break; 4784case 122: 4785#line 1000 "pic.y" 4786{ 4787 yyval.spec = yyvsp[-1].spec; 4788 yyval.spec->flags |= HAS_RIGHT_ARROW_HEAD; 4789 } 4790break; 4791case 123: 4792#line 1005 "pic.y" 4793{ 4794 yyval.spec = yyvsp[-1].spec; 4795 yyval.spec->flags |= (HAS_LEFT_ARROW_HEAD|HAS_RIGHT_ARROW_HEAD); 4796 } 4797break; 4798case 124: 4799#line 1010 "pic.y" 4800{ 4801 yyval.spec = yyvsp[-1].spec; 4802 yyval.spec->flags |= IS_CLOCKWISE; 4803 } 4804break; 4805case 125: 4806#line 1015 "pic.y" 4807{ 4808 yyval.spec = yyvsp[-1].spec; 4809 yyval.spec->flags &= ~IS_CLOCKWISE; 4810 } 4811break; 4812case 126: 4813#line 1020 "pic.y" 4814{ 4815 yyval.spec = yyvsp[-1].spec; 4816 text_item **p; 4817 for (p = & yyval.spec->text; *p; p = &(*p)->next) 4818 ; 4819 *p = new text_item(yyvsp[0].lstr.str, yyvsp[0].lstr.filename, yyvsp[0].lstr.lineno); 4820 } 4821break; 4822case 127: 4823#line 1028 "pic.y" 4824{ 4825 yyval.spec = yyvsp[-1].spec; 4826 if (yyval.spec->text) { 4827 text_item *p; 4828 for (p = yyval.spec->text; p->next; p = p->next) 4829 ; 4830 p->adj.h = LEFT_ADJUST; 4831 } 4832 } 4833break; 4834case 128: 4835#line 1038 "pic.y" 4836{ 4837 yyval.spec = yyvsp[-1].spec; 4838 if (yyval.spec->text) { 4839 text_item *p; 4840 for (p = yyval.spec->text; p->next; p = p->next) 4841 ; 4842 p->adj.h = RIGHT_ADJUST; 4843 } 4844 } 4845break; 4846case 129: 4847#line 1048 "pic.y" 4848{ 4849 yyval.spec = yyvsp[-1].spec; 4850 if (yyval.spec->text) { 4851 text_item *p; 4852 for (p = yyval.spec->text; p->next; p = p->next) 4853 ; 4854 p->adj.v = ABOVE_ADJUST; 4855 } 4856 } 4857break; 4858case 130: 4859#line 1058 "pic.y" 4860{ 4861 yyval.spec = yyvsp[-1].spec; 4862 if (yyval.spec->text) { 4863 text_item *p; 4864 for (p = yyval.spec->text; p->next; p = p->next) 4865 ; 4866 p->adj.v = BELOW_ADJUST; 4867 } 4868 } 4869break; 4870case 131: 4871#line 1068 "pic.y" 4872{ 4873 yyval.spec = yyvsp[-2].spec; 4874 yyval.spec->flags |= HAS_THICKNESS; 4875 yyval.spec->thickness = yyvsp[0].x; 4876 } 4877break; 4878case 132: 4879#line 1074 "pic.y" 4880{ 4881 yyval.spec = yyvsp[-1].spec; 4882 yyval.spec->flags |= IS_ALIGNED; 4883 } 4884break; 4885case 133: 4886#line 1082 "pic.y" 4887{ yyval.lstr = yyvsp[0].lstr; } 4888break; 4889case 134: 4890#line 1084 "pic.y" 4891{ 4892 yyval.lstr.filename = yyvsp[-2].lstr.filename; 4893 yyval.lstr.lineno = yyvsp[-2].lstr.lineno; 4894 yyval.lstr.str = do_sprintf(yyvsp[-2].lstr.str, yyvsp[-1].dv.v, yyvsp[-1].dv.nv); 4895 a_delete yyvsp[-1].dv.v; 4896 a_delete yyvsp[-2].lstr.str; 4897 } 4898break; 4899case 135: 4900#line 1095 "pic.y" 4901{ 4902 yyval.dv.v = 0; 4903 yyval.dv.nv = 0; 4904 yyval.dv.maxv = 0; 4905 } 4906break; 4907case 136: 4908#line 1101 "pic.y" 4909{ 4910 yyval.dv = yyvsp[-2].dv; 4911 if (yyval.dv.nv >= yyval.dv.maxv) { 4912 if (yyval.dv.nv == 0) { 4913 yyval.dv.v = new double[4]; 4914 yyval.dv.maxv = 4; 4915 } 4916 else { 4917 double *oldv = yyval.dv.v; 4918 yyval.dv.maxv *= 2; 4919#if 0 4920 yyval.dv.v = new double[yyval.dv.maxv]; 4921 memcpy(yyval.dv.v, oldv, yyval.dv.nv*sizeof(double)); 4922#else 4923 /* workaround for bug in Compaq C++ V6.5-033*/ 4924 /* for Compaq Tru64 UNIX V5.1A (Rev. 1885)*/ 4925 double *foo = new double[yyval.dv.maxv]; 4926 memcpy(foo, oldv, yyval.dv.nv*sizeof(double)); 4927 yyval.dv.v = foo; 4928#endif 4929 a_delete oldv; 4930 } 4931 } 4932 yyval.dv.v[yyval.dv.nv] = yyvsp[0].x; 4933 yyval.dv.nv += 1; 4934 } 4935break; 4936case 137: 4937#line 1131 "pic.y" 4938{ yyval.pair = yyvsp[0].pair; } 4939break; 4940case 138: 4941#line 1133 "pic.y" 4942{ 4943 position pos = yyvsp[0].pl; 4944 yyval.pair.x = pos.x; 4945 yyval.pair.y = pos.y; 4946 } 4947break; 4948case 139: 4949#line 1139 "pic.y" 4950{ 4951 position pos = yyvsp[-1].pl; 4952 yyval.pair.x = pos.x; 4953 yyval.pair.y = pos.y; 4954 } 4955break; 4956case 140: 4957#line 1148 "pic.y" 4958{ yyval.pair = yyvsp[0].pair; } 4959break; 4960case 141: 4961#line 1150 "pic.y" 4962{ 4963 yyval.pair.x = yyvsp[-2].pair.x + yyvsp[0].pair.x; 4964 yyval.pair.y = yyvsp[-2].pair.y + yyvsp[0].pair.y; 4965 } 4966break; 4967case 142: 4968#line 1155 "pic.y" 4969{ 4970 yyval.pair.x = yyvsp[-3].pair.x + yyvsp[-1].pair.x; 4971 yyval.pair.y = yyvsp[-3].pair.y + yyvsp[-1].pair.y; 4972 } 4973break; 4974case 143: 4975#line 1160 "pic.y" 4976{ 4977 yyval.pair.x = yyvsp[-2].pair.x - yyvsp[0].pair.x; 4978 yyval.pair.y = yyvsp[-2].pair.y - yyvsp[0].pair.y; 4979 } 4980break; 4981case 144: 4982#line 1165 "pic.y" 4983{ 4984 yyval.pair.x = yyvsp[-3].pair.x - yyvsp[-1].pair.x; 4985 yyval.pair.y = yyvsp[-3].pair.y - yyvsp[-1].pair.y; 4986 } 4987break; 4988case 145: 4989#line 1170 "pic.y" 4990{ 4991 yyval.pair.x = yyvsp[-3].pair.x; 4992 yyval.pair.y = yyvsp[-1].pair.y; 4993 } 4994break; 4995case 146: 4996#line 1175 "pic.y" 4997{ 4998 yyval.pair.x = (1.0 - yyvsp[-4].x)*yyvsp[-2].pair.x + yyvsp[-4].x*yyvsp[0].pair.x; 4999 yyval.pair.y = (1.0 - yyvsp[-4].x)*yyvsp[-2].pair.y + yyvsp[-4].x*yyvsp[0].pair.y; 5000 } 5001break; 5002case 147: 5003#line 1180 "pic.y" 5004{ 5005 yyval.pair.x = (1.0 - yyvsp[-5].x)*yyvsp[-3].pair.x + yyvsp[-5].x*yyvsp[-1].pair.x; 5006 yyval.pair.y = (1.0 - yyvsp[-5].x)*yyvsp[-3].pair.y + yyvsp[-5].x*yyvsp[-1].pair.y; 5007 } 5008break; 5009case 148: 5010#line 1185 "pic.y" 5011{ 5012 yyval.pair.x = (1.0 - yyvsp[-5].x)*yyvsp[-3].pair.x + yyvsp[-5].x*yyvsp[-1].pair.x; 5013 yyval.pair.y = (1.0 - yyvsp[-5].x)*yyvsp[-3].pair.y + yyvsp[-5].x*yyvsp[-1].pair.y; 5014 } 5015break; 5016case 149: 5017#line 1190 "pic.y" 5018{ 5019 yyval.pair.x = (1.0 - yyvsp[-6].x)*yyvsp[-4].pair.x + yyvsp[-6].x*yyvsp[-2].pair.x; 5020 yyval.pair.y = (1.0 - yyvsp[-6].x)*yyvsp[-4].pair.y + yyvsp[-6].x*yyvsp[-2].pair.y; 5021 } 5022break; 5023case 152: 5024#line 1203 "pic.y" 5025{ 5026 yyval.pair.x = yyvsp[-2].x; 5027 yyval.pair.y = yyvsp[0].x; 5028 } 5029break; 5030case 153: 5031#line 1208 "pic.y" 5032{ yyval.pair = yyvsp[-1].pair; } 5033break; 5034case 154: 5035#line 1214 "pic.y" 5036{ yyval.pl = yyvsp[0].pl; } 5037break; 5038case 155: 5039#line 1216 "pic.y" 5040{ 5041 path pth(yyvsp[0].crn); 5042 if (!pth.follow(yyvsp[-1].pl, & yyval.pl)) 5043 YYABORT; 5044 } 5045break; 5046case 156: 5047#line 1222 "pic.y" 5048{ 5049 path pth(yyvsp[-1].crn); 5050 if (!pth.follow(yyvsp[0].pl, & yyval.pl)) 5051 YYABORT; 5052 } 5053break; 5054case 157: 5055#line 1228 "pic.y" 5056{ 5057 path pth(yyvsp[-2].crn); 5058 if (!pth.follow(yyvsp[0].pl, & yyval.pl)) 5059 YYABORT; 5060 } 5061break; 5062case 158: 5063#line 1234 "pic.y" 5064{ 5065 yyval.pl.x = current_position.x; 5066 yyval.pl.y = current_position.y; 5067 yyval.pl.obj = 0; 5068 } 5069break; 5070case 159: 5071#line 1243 "pic.y" 5072{ 5073 place *p = lookup_label(yyvsp[0].str); 5074 if (!p) { 5075 lex_error("there is no place `%1'", yyvsp[0].str); 5076 YYABORT; 5077 } 5078 yyval.pl = *p; 5079 a_delete yyvsp[0].str; 5080 } 5081break; 5082case 160: 5083#line 1253 "pic.y" 5084{ yyval.pl.obj = yyvsp[0].obj; } 5085break; 5086case 161: 5087#line 1255 "pic.y" 5088{ 5089 path pth(yyvsp[0].str); 5090 if (!pth.follow(yyvsp[-2].pl, & yyval.pl)) 5091 YYABORT; 5092 } 5093break; 5094case 162: 5095#line 1264 "pic.y" 5096{ yyval.n = yyvsp[0].n; } 5097break; 5098case 163: 5099#line 1266 "pic.y" 5100{ 5101 /* XXX Check for overflow (and non-integers?).*/ 5102 yyval.n = (int)yyvsp[-1].x; 5103 } 5104break; 5105case 164: 5106#line 1274 "pic.y" 5107{ yyval.n = 1; } 5108break; 5109case 165: 5110#line 1276 "pic.y" 5111{ yyval.n = yyvsp[-1].n; } 5112break; 5113case 166: 5114#line 1281 "pic.y" 5115{ 5116 int count = 0; 5117 object *p; 5118 for (p = olist.head; p != 0; p = p->next) 5119 if (p->type() == yyvsp[0].obtype && ++count == yyvsp[-1].n) { 5120 yyval.obj = p; 5121 break; 5122 } 5123 if (p == 0) { 5124 lex_error("there is no %1%2 %3", yyvsp[-1].n, ordinal_postfix(yyvsp[-1].n), 5125 object_type_name(yyvsp[0].obtype)); 5126 YYABORT; 5127 } 5128 } 5129break; 5130case 167: 5131#line 1296 "pic.y" 5132{ 5133 int count = 0; 5134 object *p; 5135 for (p = olist.tail; p != 0; p = p->prev) 5136 if (p->type() == yyvsp[0].obtype && ++count == yyvsp[-1].n) { 5137 yyval.obj = p; 5138 break; 5139 } 5140 if (p == 0) { 5141 lex_error("there is no %1%2 last %3", yyvsp[-1].n, 5142 ordinal_postfix(yyvsp[-1].n), object_type_name(yyvsp[0].obtype)); 5143 YYABORT; 5144 } 5145 } 5146break; 5147case 168: 5148#line 1314 "pic.y" 5149{ yyval.obtype = BOX_OBJECT; } 5150break; 5151case 169: 5152#line 1316 "pic.y" 5153{ yyval.obtype = CIRCLE_OBJECT; } 5154break; 5155case 170: 5156#line 1318 "pic.y" 5157{ yyval.obtype = ELLIPSE_OBJECT; } 5158break; 5159case 171: 5160#line 1320 "pic.y" 5161{ yyval.obtype = ARC_OBJECT; } 5162break; 5163case 172: 5164#line 1322 "pic.y" 5165{ yyval.obtype = LINE_OBJECT; } 5166break; 5167case 173: 5168#line 1324 "pic.y" 5169{ yyval.obtype = ARROW_OBJECT; } 5170break; 5171case 174: 5172#line 1326 "pic.y" 5173{ yyval.obtype = SPLINE_OBJECT; } 5174break; 5175case 175: 5176#line 1328 "pic.y" 5177{ yyval.obtype = BLOCK_OBJECT; } 5178break; 5179case 176: 5180#line 1330 "pic.y" 5181{ yyval.obtype = TEXT_OBJECT; } 5182break; 5183case 177: 5184#line 1335 "pic.y" 5185{ yyval.pth = new path(yyvsp[0].str); } 5186break; 5187case 178: 5188#line 1337 "pic.y" 5189{ 5190 yyval.pth = yyvsp[-2].pth; 5191 yyval.pth->append(yyvsp[0].str); 5192 } 5193break; 5194case 179: 5195#line 1345 "pic.y" 5196{ yyval.pth = new path(yyvsp[0].crn); } 5197break; 5198case 180: 5199#line 1349 "pic.y" 5200{ yyval.pth = yyvsp[0].pth; } 5201break; 5202case 181: 5203#line 1351 "pic.y" 5204{ 5205 yyval.pth = yyvsp[-1].pth; 5206 yyval.pth->append(yyvsp[0].crn); 5207 } 5208break; 5209case 182: 5210#line 1359 "pic.y" 5211{ yyval.pth = yyvsp[0].pth; } 5212break; 5213case 183: 5214#line 1361 "pic.y" 5215{ 5216 yyval.pth = yyvsp[-3].pth; 5217 yyval.pth->set_ypath(yyvsp[-1].pth); 5218 } 5219break; 5220case 184: 5221#line 1367 "pic.y" 5222{ 5223 lex_warning("`%1%2 last %3' in `with' argument ignored", 5224 yyvsp[-3].n, ordinal_postfix(yyvsp[-3].n), object_type_name(yyvsp[-1].obtype)); 5225 yyval.pth = yyvsp[0].pth; 5226 } 5227break; 5228case 185: 5229#line 1373 "pic.y" 5230{ 5231 lex_warning("`last %1' in `with' argument ignored", 5232 object_type_name(yyvsp[-1].obtype)); 5233 yyval.pth = yyvsp[0].pth; 5234 } 5235break; 5236case 186: 5237#line 1379 "pic.y" 5238{ 5239 lex_warning("`%1%2 %3' in `with' argument ignored", 5240 yyvsp[-2].n, ordinal_postfix(yyvsp[-2].n), object_type_name(yyvsp[-1].obtype)); 5241 yyval.pth = yyvsp[0].pth; 5242 } 5243break; 5244case 187: 5245#line 1385 "pic.y" 5246{ 5247 lex_warning("initial `%1' in `with' argument ignored", yyvsp[-1].str); 5248 a_delete yyvsp[-1].str; 5249 yyval.pth = yyvsp[0].pth; 5250 } 5251break; 5252case 188: 5253#line 1394 "pic.y" 5254{ yyval.crn = &object::north; } 5255break; 5256case 189: 5257#line 1396 "pic.y" 5258{ yyval.crn = &object::east; } 5259break; 5260case 190: 5261#line 1398 "pic.y" 5262{ yyval.crn = &object::west; } 5263break; 5264case 191: 5265#line 1400 "pic.y" 5266{ yyval.crn = &object::south; } 5267break; 5268case 192: 5269#line 1402 "pic.y" 5270{ yyval.crn = &object::north_east; } 5271break; 5272case 193: 5273#line 1404 "pic.y" 5274{ yyval.crn = &object:: south_east; } 5275break; 5276case 194: 5277#line 1406 "pic.y" 5278{ yyval.crn = &object::north_west; } 5279break; 5280case 195: 5281#line 1408 "pic.y" 5282{ yyval.crn = &object::south_west; } 5283break; 5284case 196: 5285#line 1410 "pic.y" 5286{ yyval.crn = &object::center; } 5287break; 5288case 197: 5289#line 1412 "pic.y" 5290{ yyval.crn = &object::start; } 5291break; 5292case 198: 5293#line 1414 "pic.y" 5294{ yyval.crn = &object::end; } 5295break; 5296case 199: 5297#line 1416 "pic.y" 5298{ yyval.crn = &object::north; } 5299break; 5300case 200: 5301#line 1418 "pic.y" 5302{ yyval.crn = &object::south; } 5303break; 5304case 201: 5305#line 1420 "pic.y" 5306{ yyval.crn = &object::west; } 5307break; 5308case 202: 5309#line 1422 "pic.y" 5310{ yyval.crn = &object::east; } 5311break; 5312case 203: 5313#line 1424 "pic.y" 5314{ yyval.crn = &object::north_west; } 5315break; 5316case 204: 5317#line 1426 "pic.y" 5318{ yyval.crn = &object::south_west; } 5319break; 5320case 205: 5321#line 1428 "pic.y" 5322{ yyval.crn = &object::north_east; } 5323break; 5324case 206: 5325#line 1430 "pic.y" 5326{ yyval.crn = &object::south_east; } 5327break; 5328case 207: 5329#line 1432 "pic.y" 5330{ yyval.crn = &object::west; } 5331break; 5332case 208: 5333#line 1434 "pic.y" 5334{ yyval.crn = &object::east; } 5335break; 5336case 209: 5337#line 1436 "pic.y" 5338{ yyval.crn = &object::north_west; } 5339break; 5340case 210: 5341#line 1438 "pic.y" 5342{ yyval.crn = &object::south_west; } 5343break; 5344case 211: 5345#line 1440 "pic.y" 5346{ yyval.crn = &object::north_east; } 5347break; 5348case 212: 5349#line 1442 "pic.y" 5350{ yyval.crn = &object::south_east; } 5351break; 5352case 213: 5353#line 1444 "pic.y" 5354{ yyval.crn = &object::north; } 5355break; 5356case 214: 5357#line 1446 "pic.y" 5358{ yyval.crn = &object::south; } 5359break; 5360case 215: 5361#line 1448 "pic.y" 5362{ yyval.crn = &object::east; } 5363break; 5364case 216: 5365#line 1450 "pic.y" 5366{ yyval.crn = &object::west; } 5367break; 5368case 217: 5369#line 1452 "pic.y" 5370{ yyval.crn = &object::center; } 5371break; 5372case 218: 5373#line 1454 "pic.y" 5374{ yyval.crn = &object::start; } 5375break; 5376case 219: 5377#line 1456 "pic.y" 5378{ yyval.crn = &object::end; } 5379break; 5380case 220: 5381#line 1461 "pic.y" 5382{ 5383 if (!lookup_variable(yyvsp[0].str, & yyval.x)) { 5384 lex_error("there is no variable `%1'", yyvsp[0].str); 5385 YYABORT; 5386 } 5387 a_delete yyvsp[0].str; 5388 } 5389break; 5390case 221: 5391#line 1469 "pic.y" 5392{ yyval.x = yyvsp[0].x; } 5393break; 5394case 222: 5395#line 1471 "pic.y" 5396{ 5397 if (yyvsp[-1].pl.obj != 0) 5398 yyval.x = yyvsp[-1].pl.obj->origin().x; 5399 else 5400 yyval.x = yyvsp[-1].pl.x; 5401 } 5402break; 5403case 223: 5404#line 1478 "pic.y" 5405{ 5406 if (yyvsp[-1].pl.obj != 0) 5407 yyval.x = yyvsp[-1].pl.obj->origin().y; 5408 else 5409 yyval.x = yyvsp[-1].pl.y; 5410 } 5411break; 5412case 224: 5413#line 1485 "pic.y" 5414{ 5415 if (yyvsp[-1].pl.obj != 0) 5416 yyval.x = yyvsp[-1].pl.obj->height(); 5417 else 5418 yyval.x = 0.0; 5419 } 5420break; 5421case 225: 5422#line 1492 "pic.y" 5423{ 5424 if (yyvsp[-1].pl.obj != 0) 5425 yyval.x = yyvsp[-1].pl.obj->width(); 5426 else 5427 yyval.x = 0.0; 5428 } 5429break; 5430case 226: 5431#line 1499 "pic.y" 5432{ 5433 if (yyvsp[-1].pl.obj != 0) 5434 yyval.x = yyvsp[-1].pl.obj->radius(); 5435 else 5436 yyval.x = 0.0; 5437 } 5438break; 5439case 227: 5440#line 1506 "pic.y" 5441{ yyval.x = yyvsp[-2].x + yyvsp[0].x; } 5442break; 5443case 228: 5444#line 1508 "pic.y" 5445{ yyval.x = yyvsp[-2].x - yyvsp[0].x; } 5446break; 5447case 229: 5448#line 1510 "pic.y" 5449{ yyval.x = yyvsp[-2].x * yyvsp[0].x; } 5450break; 5451case 230: 5452#line 1512 "pic.y" 5453{ 5454 if (yyvsp[0].x == 0.0) { 5455 lex_error("division by zero"); 5456 YYABORT; 5457 } 5458 yyval.x = yyvsp[-2].x/yyvsp[0].x; 5459 } 5460break; 5461case 231: 5462#line 1520 "pic.y" 5463{ 5464 if (yyvsp[0].x == 0.0) { 5465 lex_error("modulus by zero"); 5466 YYABORT; 5467 } 5468 yyval.x = fmod(yyvsp[-2].x, yyvsp[0].x); 5469 } 5470break; 5471case 232: 5472#line 1528 "pic.y" 5473{ 5474 errno = 0; 5475 yyval.x = pow(yyvsp[-2].x, yyvsp[0].x); 5476 if (errno == EDOM) { 5477 lex_error("arguments to `^' operator out of domain"); 5478 YYABORT; 5479 } 5480 if (errno == ERANGE) { 5481 lex_error("result of `^' operator out of range"); 5482 YYABORT; 5483 } 5484 } 5485break; 5486case 233: 5487#line 1541 "pic.y" 5488{ yyval.x = -yyvsp[0].x; } 5489break; 5490case 234: 5491#line 1543 "pic.y" 5492{ yyval.x = yyvsp[-1].x; } 5493break; 5494case 235: 5495#line 1545 "pic.y" 5496{ 5497 errno = 0; 5498 yyval.x = sin(yyvsp[-1].x); 5499 if (errno == ERANGE) { 5500 lex_error("sin result out of range"); 5501 YYABORT; 5502 } 5503 } 5504break; 5505case 236: 5506#line 1554 "pic.y" 5507{ 5508 errno = 0; 5509 yyval.x = cos(yyvsp[-1].x); 5510 if (errno == ERANGE) { 5511 lex_error("cos result out of range"); 5512 YYABORT; 5513 } 5514 } 5515break; 5516case 237: 5517#line 1563 "pic.y" 5518{ 5519 errno = 0; 5520 yyval.x = atan2(yyvsp[-3].x, yyvsp[-1].x); 5521 if (errno == EDOM) { 5522 lex_error("atan2 argument out of domain"); 5523 YYABORT; 5524 } 5525 if (errno == ERANGE) { 5526 lex_error("atan2 result out of range"); 5527 YYABORT; 5528 } 5529 } 5530break; 5531case 238: 5532#line 1576 "pic.y" 5533{ 5534 errno = 0; 5535 yyval.x = log10(yyvsp[-1].x); 5536 if (errno == ERANGE) { 5537 lex_error("log result out of range"); 5538 YYABORT; 5539 } 5540 } 5541break; 5542case 239: 5543#line 1585 "pic.y" 5544{ 5545 errno = 0; 5546 yyval.x = pow(10.0, yyvsp[-1].x); 5547 if (errno == ERANGE) { 5548 lex_error("exp result out of range"); 5549 YYABORT; 5550 } 5551 } 5552break; 5553case 240: 5554#line 1594 "pic.y" 5555{ 5556 errno = 0; 5557 yyval.x = sqrt(yyvsp[-1].x); 5558 if (errno == EDOM) { 5559 lex_error("sqrt argument out of domain"); 5560 YYABORT; 5561 } 5562 } 5563break; 5564case 241: 5565#line 1603 "pic.y" 5566{ yyval.x = yyvsp[-3].x > yyvsp[-1].x ? yyvsp[-3].x : yyvsp[-1].x; } 5567break; 5568case 242: 5569#line 1605 "pic.y" 5570{ yyval.x = yyvsp[-3].x < yyvsp[-1].x ? yyvsp[-3].x : yyvsp[-1].x; } 5571break; 5572case 243: 5573#line 1607 "pic.y" 5574{ yyval.x = floor(yyvsp[-1].x); } 5575break; 5576case 244: 5577#line 1609 "pic.y" 5578{ yyval.x = 1.0 + floor(((rand()&0x7fff)/double(0x7fff))*yyvsp[-1].x); } 5579break; 5580case 245: 5581#line 1611 "pic.y" 5582{ 5583 /* return a random number in the range [0,1) */ 5584 /* portable, but not very random */ 5585 yyval.x = (rand() & 0x7fff) / double(0x8000); 5586 } 5587break; 5588case 246: 5589#line 1617 "pic.y" 5590{ 5591 yyval.x = 0; 5592 srand((unsigned int)yyvsp[-1].x); 5593 } 5594break; 5595case 247: 5596#line 1622 "pic.y" 5597{ yyval.x = (yyvsp[-2].x < yyvsp[0].x); } 5598break; 5599case 248: 5600#line 1624 "pic.y" 5601{ yyval.x = (yyvsp[-2].x <= yyvsp[0].x); } 5602break; 5603case 249: 5604#line 1626 "pic.y" 5605{ yyval.x = (yyvsp[-2].x > yyvsp[0].x); } 5606break; 5607case 250: 5608#line 1628 "pic.y" 5609{ yyval.x = (yyvsp[-2].x >= yyvsp[0].x); } 5610break; 5611case 251: 5612#line 1630 "pic.y" 5613{ yyval.x = (yyvsp[-2].x == yyvsp[0].x); } 5614break; 5615case 252: 5616#line 1632 "pic.y" 5617{ yyval.x = (yyvsp[-2].x != yyvsp[0].x); } 5618break; 5619case 253: 5620#line 1634 "pic.y" 5621{ yyval.x = (yyvsp[-2].x != 0.0 && yyvsp[0].x != 0.0); } 5622break; 5623case 254: 5624#line 1636 "pic.y" 5625{ yyval.x = (yyvsp[-2].x != 0.0 || yyvsp[0].x != 0.0); } 5626break; 5627case 255: 5628#line 1638 "pic.y" 5629{ yyval.x = (yyvsp[0].x == 0.0); } 5630break; 5631#line 5632 "y.tab.c" 5632 } 5633 yyssp -= yym; 5634 yystate = *yyssp; 5635 yyvsp -= yym; 5636 yym = yylhs[yyn]; 5637 if (yystate == 0 && yym == 0) 5638 { 5639#if YYDEBUG 5640 if (yydebug) 5641 printf("%sdebug: after reduction, shifting from state 0 to\ 5642 state %d\n", YYPREFIX, YYFINAL); 5643#endif 5644 yystate = YYFINAL; 5645 *++yyssp = YYFINAL; 5646 *++yyvsp = yyval; 5647 if (yychar < 0) 5648 { 5649 if ((yychar = yylex()) < 0) yychar = 0; 5650#if YYDEBUG 5651 if (yydebug) 5652 { 5653 yys = 0; 5654 if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; 5655 if (!yys) yys = "illegal-symbol"; 5656 printf("%sdebug: state %d, reading %d (%s)\n", 5657 YYPREFIX, YYFINAL, yychar, yys); 5658 } 5659#endif 5660 } 5661 if (yychar == 0) goto yyaccept; 5662 goto yyloop; 5663 } 5664 if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 && 5665 yyn <= YYTABLESIZE && yycheck[yyn] == yystate) 5666 yystate = yytable[yyn]; 5667 else 5668 yystate = yydgoto[yym]; 5669#if YYDEBUG 5670 if (yydebug) 5671 printf("%sdebug: after reduction, shifting from state %d \ 5672to state %d\n", YYPREFIX, *yyssp, yystate); 5673#endif 5674 if (yyssp >= yyss + yystacksize - 1) 5675 { 5676 goto yyoverflow; 5677 } 5678 *++yyssp = yystate; 5679 *++yyvsp = yyval; 5680 goto yyloop; 5681yyoverflow: 5682 yyerror("yacc stack overflow"); 5683yyabort: 5684 return (1); 5685yyaccept: 5686 return (0); 5687} 5688