/* A Bison parser, made from parser.y
   by GNU bison 1.35.  */

#define YYBISON 1  /* Identify Bison output.  */

# define	NUMBER	257
# define	TOKPI	258
# define	STRING	259
# define	VARIABLE	260
# define	NUMBER_VARIABLE	261
# define	POINT_VARIABLE	262
# define	VECTOR_VARIABLE	263
# define	LINE_VARIABLE	264
# define	SEGMENT_VARIABLE	265
# define	CIRCLE_VARIABLE	266
# define	CONIC_VARIABLE	267
# define	NOARROW	268
# define	ARROW	269
# define	BACKARROW	270
# define	DOUBLEARROW	271
# define	ENTIRE	272
# define	HALFLINE	273
# define	BACKHALFLINE	274
# define	DOT	275
# define	DISC	276
# define	BOX	277
# define	CROSS	278
# define	PLUS	279
# define	FULL	280
# define	DOTTED	281
# define	DASHED	282
# define	SIMPLE	283
# define	DOUBLE	284
# define	TRIPLE	285
# define	EXP	286
# define	LN	287
# define	SIN	288
# define	COS	289
# define	TAN	290
# define	ASIN	291
# define	ACOS	292
# define	ATAN	293
# define	TOKDEG	294
# define	TOKRAD	295
# define	TOKABS	296
# define	SQRT	297
# define	SIGN	298
# define	CEIL	299
# define	FLOOR	300
# define	ROUND	301
# define	TOKMIN	302
# define	TOKMAX	303
# define	TOKCLAMP	304
# define	ARGUMENT	305
# define	ABSCISSA	306
# define	ORDINATE	307
# define	LENGTH	308
# define	DISTANCE	309
# define	ANGLE	310
# define	RADIUS	311
# define	MAJOR	312
# define	MINOR	313
# define	ECCENTRICITY	314
# define	HEIGHT	315
# define	POINT	316
# define	VECTOR	317
# define	LINE	318
# define	SEGMENT	319
# define	CIRCLE	320
# define	CONIC	321
# define	PARABOLA	322
# define	ELLIPSE	323
# define	HYPERBOLA	324
# define	TRANSLATION	325
# define	REFLECTION	326
# define	ROTATION	327
# define	PROJECTION	328
# define	HOMOTHECY	329
# define	MIDPOINT	330
# define	CENTER	331
# define	VERTICES	332
# define	FOCI	333
# define	ORTHOCENTER	334
# define	BARYCENTER	335
# define	INTERSECTION	336
# define	TOKBEGIN	337
# define	END	338
# define	PARALLEL	339
# define	PERPENDICULAR	340
# define	MEDIAN	341
# define	ALTITUDE	342
# define	BISECTOR	343
# define	INCIRCLE	344
# define	TRIANGLE	345
# define	EQUILATERAL	346
# define	ISOSCELES	347
# define	RIGHT	348
# define	PARALLELOGRAM	349
# define	RECTANGLE	350
# define	SQUARE	351
# define	PENTAGON	352
# define	HEXAGON	353
# define	FRAME	354
# define	COLOR	355
# define	BLACK	356
# define	DARKGRAY	357
# define	GRAY	358
# define	LIGHTGRAY	359
# define	WHITE	360
# define	RED	361
# define	GREEN	362
# define	BLUE	363
# define	CYAN	364
# define	MAGENTA	365
# define	YELLOW	366
# define	STYLE	367
# define	THICKNESS	368
# define	FONT	369
# define	TRICKS	370
# define	EXPORT	371
# define	DRAW	372
# define	LABEL	373
# define	MARK	374
# define	UP	375
# define	STROKES	376
# define	TRACE	377
# define	INTERACTIVE	378
# define	OR	379
# define	AND	380
# define	NOT	381
# define	EQ	382
# define	NEQ	383
# define	GEQ	384
# define	LEQ	385
# define	NEG	386

#line 20 "parser.y"


#include <math.h>
#include <stdio.h>
#include "types.h"
#include "geometry.h"
#include "drawing.h"

int yylex(void);
int warning(char *);
int yyerror(char *);

int drawing_style = FULL;
symrec* tracevar;
double tracestep, tracebegin;
int tracestyle, traceind = -1;
extern int strokes;


#line 40 "parser.y"
#ifndef YYSTYPE
typedef union {
   double number;
   char *string;
   _point *point;
   _vector *vector;
   _line *line;
   _segment *segment;
   _circle *circle;
   _conic *conic;
   symrec  *ptr;
   int flag;
} yystype;
# define YYSTYPE yystype
# define YYSTYPE_IS_TRIVIAL 1
#endif
#ifndef YYDEBUG
# define YYDEBUG 0
#endif



#define	YYFINAL		1362
#define	YYFLAG		-32768
#define	YYNTBASE	152

/* YYTRANSLATE(YYLEX) -- Bison token number corresponding to YYLEX. */
#define YYTRANSLATE(x) ((unsigned)(x) <= 386 ? yytranslate[x] : 190)

/* YYTRANSLATE[YYLEX] -- Bison token number corresponding to YYLEX. */
static const short yytranslate[] =
{
       0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     142,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     144,   145,   138,   137,   146,   136,     2,   139,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,   147,     2,
     135,   143,   134,   125,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,   149,   148,   150,   141,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,   126,   151,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       2,     2,     2,     2,     2,     2,     1,     3,     4,     5,
       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
      26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
      36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
      46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
      56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
      66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
      76,    77,    78,    79,    80,    81,    82,    83,    84,    85,
      86,    87,    88,    89,    90,    91,    92,    93,    94,    95,
      96,    97,    98,    99,   100,   101,   102,   103,   104,   105,
     106,   107,   108,   109,   110,   111,   112,   113,   114,   115,
     116,   117,   118,   119,   120,   121,   122,   123,   124,   127,
     128,   129,   130,   131,   132,   133,   140
};

#if YYDEBUG
static const short yyprhs[] =
{
       0,     0,     2,     6,     7,     9,    11,    13,    15,    17,
      19,    21,    23,    27,    31,    35,    39,    43,    47,    51,
      53,    55,    57,    59,    61,    63,    65,    67,    69,    71,
      75,    79,    83,    87,    90,    94,    98,   102,   106,   110,
     114,   118,   121,   125,   129,   135,   140,   145,   150,   152,
     157,   162,   167,   172,   177,   182,   187,   192,   197,   202,
     207,   212,   217,   224,   231,   240,   245,   250,   255,   260,
     267,   274,   279,   284,   289,   294,   299,   304,   313,   318,
     323,   328,   333,   340,   349,   356,   363,   367,   371,   374,
     377,   379,   386,   393,   400,   407,   414,   421,   428,   435,
     442,   451,   458,   467,   476,   483,   492,   503,   514,   529,
     548,   555,   562,   569,   574,   579,   584,   589,   594,   603,
     607,   609,   616,   623,   630,   635,   640,   647,   651,   655,
     659,   663,   666,   670,   672,   679,   686,   693,   698,   705,
     712,   719,   726,   733,   742,   751,   758,   765,   772,   779,
     784,   793,   800,   809,   818,   821,   825,   827,   834,   841,
     850,   857,   864,   871,   878,   887,   896,   899,   903,   905,
     912,   921,   928,   935,   942,   949,   958,   967,   976,   980,
     982,   991,   998,  1007,  1016,  1027,  1038,  1045,  1052,  1059,
    1068,  1077,  1081,  1090,  1099,  1108,  1115,  1122,  1127,  1135,
    1145,  1157,  1167,  1181,  1193,  1207,  1217,  1222,  1230,  1240,
    1248,  1258,  1270,  1282,  1287,  1295,  1305,  1317,  1325,  1335,
    1347,  1352,  1360,  1370,  1376,  1387,  1400,  1415,  1426,  1432,
    1441,  1452,  1465,  1471,  1480,  1491,  1505,  1520,  1522,  1524,
    1536,  1549,  1565,  1582,  1595,  1612,  1614,  1616,  1618,  1620,
    1622,  1624,  1626,  1628,  1630,  1632,  1634,  1636,  1638,  1640,
    1642,  1644,  1646,  1648,  1650,  1652,  1654,  1656,  1658,  1660,
    1662,  1664,  1666,  1668,  1670,  1672,  1674,  1676,  1678,  1680,
    1682,  1684,  1686,  1688,  1690,  1701,  1714,  1725,  1738,  1741,
    1746,  1751,  1756,  1759,  1762,  1767,  1772,  1779,  1788,  1793,
    1800,  1809,  1816,  1825,  1830,  1837,  1846,  1851,  1858,  1867,
    1872,  1881,  1888,  1899,  1912,  1917,  1924,  1933,  1944,  1951,
    1960,  1971,  1980,  1991,  2002,  2015,  2028,  2043,  2058,  2075,
    2084,  2093,  2104,  2115,  2124,  2133,  2144,  2155,  2168,  2181,
    2192,  2203,  2216,  2229,  2244,  2259,  2268,  2275,  2280,  2287,
    2296,  2305,  2316,  2329,  2330,  2336,  2337,  2338,  2343,  2344,
    2348,  2350,  2354,  2356,  2358,  2360,  2362,  2363,  2368,  2370,
    2374,  2378,  2380,  2382,  2384,  2386,  2388,  2389,  2392,  2401,
    2412
};
static const short yyrhs[] =
{
     153,     0,   152,   142,   153,     0,     0,   154,     0,   155,
       0,   165,     0,   166,     0,   167,     0,   169,     0,   177,
       0,   189,     0,   156,   143,   157,     0,   156,   143,   159,
       0,   156,   143,   160,     0,   156,   143,   161,     0,   156,
     143,   162,     0,   156,   143,   163,     0,   156,   143,   164,
       0,     6,     0,     7,     0,     8,     0,     9,     0,    10,
       0,    11,     0,    12,     0,    13,     0,     3,     0,     7,
       0,   157,   137,   157,     0,   157,   136,   157,     0,   157,
     138,   157,     0,   157,   139,   157,     0,   136,   157,     0,
     157,   141,   157,     0,   157,   130,   157,     0,   157,   131,
     157,     0,   157,   135,   157,     0,   157,   134,   157,     0,
     157,   133,   157,     0,   157,   132,   157,     0,   129,   157,
       0,   157,   128,   157,     0,   157,   127,   157,     0,   157,
     125,   157,   126,   157,     0,    43,   144,   157,   145,     0,
      32,   144,   157,   145,     0,    33,   144,   157,   145,     0,
       4,     0,    34,   144,   157,   145,     0,    35,   144,   157,
     145,     0,    36,   144,   157,   145,     0,    37,   144,   157,
     145,     0,    38,   144,   157,   145,     0,    39,   144,   157,
     145,     0,    40,   144,   157,   145,     0,    41,   144,   157,
     145,     0,    42,   144,   157,   145,     0,    44,   144,   157,
     145,     0,    45,   144,   157,   145,     0,    46,   144,   157,
     145,     0,    47,   144,   157,   145,     0,    48,   144,   157,
     146,   157,   145,     0,    49,   144,   157,   146,   157,   145,
       0,    50,   144,   157,   146,   157,   146,   157,   145,     0,
      52,   144,   159,   145,     0,    52,   144,   160,   145,     0,
      53,   144,   159,   145,     0,    53,   144,   160,   145,     0,
      55,   144,   159,   146,   159,   145,     0,    55,   144,   159,
     146,   161,   145,     0,    54,   144,   160,   145,     0,    54,
     144,   162,   145,     0,    57,   144,   163,   145,     0,    58,
     144,   164,   145,     0,    59,   144,   164,   145,     0,    60,
     144,   164,   145,     0,    55,   144,   159,   146,   159,   146,
     159,   145,     0,    56,   144,   160,   145,     0,    56,   144,
     161,   145,     0,    56,   144,   162,   145,     0,    56,   144,
     164,   145,     0,    56,   144,   160,   146,   160,   145,     0,
      56,   144,   159,   146,   159,   146,   159,   145,     0,    51,
     144,   163,   146,   159,   145,     0,    51,   144,   164,   146,
     159,   145,     0,   160,   138,   160,     0,   144,   157,   145,
       0,   157,   147,     0,   157,   135,     0,     8,     0,    62,
     144,   157,   146,   157,   145,     0,    62,   144,   157,   146,
     158,   145,     0,    62,   144,   161,   146,   157,   145,     0,
      62,   144,   162,   146,   157,   145,     0,    62,   144,   163,
     146,   158,   145,     0,    62,   144,   164,   146,   157,   145,
       0,    71,   144,   159,   146,   160,   145,     0,    72,   144,
     159,   146,   161,   145,     0,    73,   144,   159,   146,   159,
     145,     0,    73,   144,   159,   146,   159,   146,   158,   145,
       0,    74,   144,   159,   146,   161,   145,     0,    74,   144,
     159,   146,   161,   146,   161,   145,     0,    75,   144,   159,
     146,   159,   146,   157,   145,     0,    81,   144,   159,   146,
     159,   145,     0,    81,   144,   159,   146,   159,   146,   159,
     145,     0,    81,   144,   159,   146,   159,   146,   159,   146,
     159,   145,     0,    81,   144,   159,   146,   157,   146,   159,
     146,   157,   145,     0,    81,   144,   159,   146,   157,   146,
     159,   146,   157,   146,   159,   146,   157,   145,     0,    81,
     144,   159,   146,   157,   146,   159,   146,   157,   146,   159,
     146,   157,   146,   159,   146,   157,   145,     0,    82,   144,
     161,   146,   161,   145,     0,    52,   144,   161,   146,   157,
     145,     0,    53,   144,   161,   146,   157,   145,     0,    76,
     144,   162,   145,     0,    83,   144,   162,   145,     0,    84,
     144,   162,   145,     0,    77,   144,   163,   145,     0,    77,
     144,   164,   145,     0,    80,   144,   159,   146,   159,   146,
     159,   145,     0,   144,   159,   145,     0,     9,     0,    63,
     144,   157,   146,   157,   145,     0,    63,   144,   157,   146,
     158,   145,     0,    63,   144,   159,   146,   159,   145,     0,
      63,   144,   161,   145,     0,    63,   144,   162,   145,     0,
      73,   144,   160,   146,   158,   145,     0,   160,   137,   160,
       0,   160,   136,   160,     0,   157,   138,   160,     0,   160,
     139,   157,     0,   136,   160,     0,   144,   160,   145,     0,
      10,     0,    64,   144,   159,   146,   159,   145,     0,    64,
     144,   159,   146,   158,   145,     0,    64,   144,   159,   146,
     160,   145,     0,    64,   144,   162,   145,     0,    64,   144,
     163,   146,   158,   145,     0,    64,   144,   164,   146,   157,
     145,     0,    71,   144,   161,   146,   160,   145,     0,    72,
     144,   161,   146,   161,   145,     0,    73,   144,   161,   146,
     159,   145,     0,    73,   144,   161,   146,   159,   146,   158,
     145,     0,    75,   144,   161,   146,   159,   146,   157,   145,
       0,    85,   144,   161,   146,   159,   145,     0,    85,   144,
     162,   146,   159,   145,     0,    86,   144,   161,   146,   159,
     145,     0,    86,   144,   162,   146,   159,   145,     0,    89,
     144,   162,   145,     0,    89,   144,   159,   146,   159,   146,
     159,   145,     0,    89,   144,   161,   146,   161,   145,     0,
      88,   144,   159,   146,   159,   146,   159,   145,     0,    87,
     144,   159,   146,   159,   146,   159,   145,     0,   136,   161,
       0,   144,   161,   145,     0,    11,     0,    65,   144,   159,
     146,   159,   145,     0,    65,   144,   159,   146,   160,   145,
       0,    65,   144,   159,   146,   157,   146,   158,   145,     0,
      65,   144,   163,   146,   158,   145,     0,    71,   144,   162,
     146,   160,   145,     0,    72,   144,   162,   146,   161,   145,
       0,    73,   144,   162,   146,   159,   145,     0,    73,   144,
     162,   146,   159,   146,   158,   145,     0,    75,   144,   162,
     146,   159,   146,   157,   145,     0,   136,   162,     0,   144,
     162,   145,     0,    12,     0,    66,   144,   159,   146,   159,
     145,     0,    66,   144,   159,   146,   159,   146,   159,   145,
       0,    66,   144,   159,   146,   157,   145,     0,    71,   144,
     163,   146,   160,   145,     0,    72,   144,   163,   146,   161,
     145,     0,    73,   144,   163,   146,   159,   145,     0,    73,
     144,   163,   146,   159,   146,   158,   145,     0,    75,   144,
     163,   146,   159,   146,   157,   145,     0,    90,   144,   159,
     146,   159,   146,   159,   145,     0,   144,   163,   145,     0,
      13,     0,    67,   144,   159,   146,   161,   146,   157,   145,
       0,    68,   144,   159,   146,   161,   145,     0,    68,   144,
     159,   146,   157,   146,   158,   145,     0,    67,   144,   159,
     146,   159,   146,   157,   145,     0,    69,   144,   159,   146,
     157,   146,   157,   146,   158,   145,     0,    70,   144,   159,
     146,   157,   146,   157,   146,   158,   145,     0,    71,   144,
     164,   146,   160,   145,     0,    72,   144,   164,   146,   161,
     145,     0,    73,   144,   164,   146,   159,   145,     0,    73,
     144,   164,   146,   159,   146,   158,   145,     0,    75,   144,
     164,   146,   159,   146,   157,   145,     0,   144,   164,   145,
       0,   156,   156,    82,   144,   161,   146,   163,   145,     0,
     156,   156,    82,   144,   163,   146,   163,   145,     0,   156,
     156,    82,   144,   161,   146,   164,   145,     0,   156,   156,
      78,   144,   164,   145,     0,   156,   156,    79,   144,   164,
     145,     0,   156,   156,   156,    91,     0,   156,   156,   156,
      91,   144,   157,   145,     0,   156,   156,   156,    91,   144,
     157,   146,   158,   145,     0,   156,   156,   156,    91,   144,
     157,   146,   157,   146,   157,   145,     0,   156,   156,   156,
      91,   144,   157,   146,   157,   145,     0,   156,   156,   156,
      91,   144,   157,   146,   157,   146,   157,   146,   158,   145,
       0,   156,   156,   156,    91,   144,   157,   146,   158,   146,
     158,   145,     0,   156,   156,   156,    91,   144,   157,   146,
     158,   146,   158,   146,   158,   145,     0,   156,   156,   156,
      91,   144,   158,   146,   158,   145,     0,   156,   156,   156,
      94,     0,   156,   156,   156,    94,   144,   157,   145,     0,
     156,   156,   156,    94,   144,   157,   146,   157,   145,     0,
     156,   156,   156,    94,   144,   158,   145,     0,   156,   156,
     156,    94,   144,   157,   146,   158,   145,     0,   156,   156,
     156,    94,   144,   157,   146,   157,   146,   158,   145,     0,
     156,   156,   156,    94,   144,   157,   146,   158,   146,   158,
     145,     0,   156,   156,   156,    93,     0,   156,   156,   156,
      93,   144,   158,   145,     0,   156,   156,   156,    93,   144,
     157,   146,   158,   145,     0,   156,   156,   156,    93,   144,
     157,   146,   158,   146,   158,   145,     0,   156,   156,   156,
      93,   144,   157,   145,     0,   156,   156,   156,    93,   144,
     157,   146,   157,   145,     0,   156,   156,   156,    93,   144,
     157,   146,   157,   146,   158,   145,     0,   156,   156,   156,
      92,     0,   156,   156,   156,    92,   144,   157,   145,     0,
     156,   156,   156,    92,   144,   157,   146,   158,   145,     0,
     156,   156,   156,   156,    95,     0,   156,   156,   156,   156,
      95,   144,   157,   146,   158,   145,     0,   156,   156,   156,
     156,    95,   144,   157,   146,   157,   146,   158,   145,     0,
     156,   156,   156,   156,    95,   144,   157,   146,   157,   146,
     158,   146,   158,   145,     0,   156,   156,   156,   156,    95,
     144,   160,   146,   160,   145,     0,   156,   156,   156,   156,
      96,     0,   156,   156,   156,   156,    96,   144,   157,   145,
       0,   156,   156,   156,   156,    96,   144,   157,   146,   157,
     145,     0,   156,   156,   156,   156,    96,   144,   157,   146,
     157,   146,   158,   145,     0,   156,   156,   156,   156,    97,
       0,   156,   156,   156,   156,    97,   144,   157,   145,     0,
     156,   156,   156,   156,    97,   144,   157,   146,   158,   145,
       0,   156,   156,   156,   156,   156,    98,   144,   159,   146,
     157,   146,   158,   145,     0,   156,   156,   156,   156,   156,
     156,    99,   144,   159,   146,   157,   146,   158,   145,     0,
     121,     0,    94,     0,   156,   124,   144,     3,   146,   157,
     146,     5,   146,   168,   145,     0,   156,   124,   144,   136,
       3,   146,   157,   146,     5,   146,   168,   145,     0,   156,
     124,   144,     3,   146,   157,   146,   157,   146,   157,   146,
       5,   146,   168,   145,     0,   156,   124,   144,   136,     3,
     146,   157,   146,   157,   146,   157,   146,     5,   146,   168,
     145,     0,   156,   143,   124,   144,   157,   146,   157,   146,
       5,   146,   168,   145,     0,   156,   143,   124,   144,   157,
     146,   157,   146,   157,   146,   157,   146,     5,   146,   168,
     145,     0,    21,     0,    22,     0,    23,     0,    24,     0,
      25,     0,    18,     0,    19,     0,    20,     0,    14,     0,
      15,     0,    16,     0,    17,     0,    26,     0,    27,     0,
      28,     0,    29,     0,    30,     0,    31,     0,    24,     0,
      29,     0,    30,     0,    31,     0,    28,     0,    15,     0,
      16,     0,    94,     0,    21,     0,    27,     0,   102,     0,
     103,     0,   104,     0,   105,     0,   106,     0,   107,     0,
     108,     0,   109,     0,   110,     0,   111,     0,   112,     0,
     100,   144,   157,   146,   157,   146,   157,   146,   157,   145,
       0,   100,   144,   157,   146,   157,   146,   157,   146,   157,
     146,   157,   145,     0,    23,   144,   157,   146,   157,   146,
     157,   146,   157,   145,     0,    23,   144,   157,   146,   157,
     146,   157,   146,   157,   146,   157,   145,     0,   101,     5,
       0,   101,   144,   176,   145,     0,   114,   144,   157,   145,
       0,   113,   144,   173,   145,     0,   115,     5,     0,   116,
       5,     0,   122,   144,   157,   145,     0,   117,   144,   157,
     145,     0,   117,   144,   157,   146,   157,   145,     0,   117,
     144,   157,   146,   157,   146,   157,   145,     0,   118,   144,
     159,   145,     0,   118,   144,   159,   146,   170,   145,     0,
     118,   144,   159,   146,   170,   146,   157,   145,     0,   118,
     144,   160,   146,   159,   145,     0,   118,   144,   160,   146,
     159,   146,   173,   145,     0,   118,   144,   161,   145,     0,
     118,   144,   161,   146,   173,   145,     0,   118,   144,   161,
     146,   173,   146,   171,   145,     0,   118,   144,   162,   145,
       0,   118,   144,   162,   146,   173,   145,     0,   118,   144,
     162,   146,   173,   146,   172,   145,     0,   118,   144,   163,
     145,     0,   118,   144,   163,   146,   158,   146,   158,   145,
       0,   118,   144,   163,   146,   173,   145,     0,   118,   144,
     163,   146,   158,   146,   158,   146,   173,   145,     0,   118,
     144,   163,   146,   158,   146,   158,   146,   173,   146,   172,
     145,     0,   118,   144,   164,   145,     0,   118,   144,   164,
     146,   173,   145,     0,   118,   144,   164,   146,   157,   146,
     157,   145,     0,   118,   144,   164,   146,   157,   146,   157,
     146,   173,   145,     0,   118,   144,   159,   146,   159,   145,
       0,   118,   144,   159,   146,   159,   146,   173,   145,     0,
     118,   144,   159,   146,   159,   146,   173,   146,   172,   145,
       0,   118,   144,   159,   146,   159,   146,   159,   145,     0,
     118,   144,   159,   146,   159,   146,   159,   146,   173,   145,
       0,   118,   144,   159,   146,   159,   146,   159,   146,   159,
     145,     0,   118,   144,   159,   146,   159,   146,   159,   146,
     159,   146,   173,   145,     0,   118,   144,   159,   146,   159,
     146,   159,   146,   159,   146,   159,   145,     0,   118,   144,
     159,   146,   159,   146,   159,   146,   159,   146,   159,   146,
     173,   145,     0,   118,   144,   159,   146,   159,   146,   159,
     146,   159,   146,   159,   146,   159,   145,     0,   118,   144,
     159,   146,   159,   146,   159,   146,   159,   146,   159,   146,
     159,   146,   173,   145,     0,   118,   144,     5,   146,   159,
     146,   158,   145,     0,   118,   144,     5,   146,   162,   146,
     158,   145,     0,   118,   144,     5,   146,   159,   146,   157,
     146,   158,   145,     0,   118,   144,     5,   146,   162,   146,
     157,   146,   158,   145,     0,   118,   144,   157,   146,   159,
     146,   158,   145,     0,   118,   144,   157,   146,   162,   146,
     158,   145,     0,   118,   144,   157,   146,     5,   146,   159,
     146,   158,   145,     0,   118,   144,   157,   146,     5,   146,
     162,   146,   158,   145,     0,   118,   144,   157,   146,   157,
     146,     5,   146,   159,   146,   158,   145,     0,   118,   144,
     157,   146,   157,   146,     5,   146,   162,   146,   158,   145,
       0,   118,   144,   157,   146,   159,   146,   157,   146,   158,
     145,     0,   118,   144,   157,   146,   162,   146,   157,   146,
     158,   145,     0,   118,   144,   157,   146,     5,   146,   159,
     146,   157,   146,   158,   145,     0,   118,   144,   157,   146,
       5,   146,   162,   146,   157,   146,   158,   145,     0,   118,
     144,   157,   146,   157,   146,     5,   146,   159,   146,   157,
     146,   158,   145,     0,   118,   144,   157,   146,   157,   146,
       5,   146,   162,   146,   157,   146,   158,   145,     0,   119,
     144,     8,   146,   157,   146,   158,   145,     0,   119,   144,
       8,   146,   158,   145,     0,   120,   144,   162,   145,     0,
     120,   144,   162,   146,   174,   145,     0,   120,   144,   162,
     146,   174,   146,   157,   145,     0,   120,   144,   159,   146,
     159,   146,   159,   145,     0,   120,   144,   159,   146,   159,
     146,   159,   146,   175,   145,     0,   120,   144,   159,   146,
     159,   146,   159,   146,   175,   146,   157,   145,     0,     0,
     148,   187,   178,   179,   181,     0,     0,     0,   149,   180,
     184,   150,     0,     0,   144,   182,   145,     0,   183,     0,
     183,   146,   182,     0,   159,     0,   157,     0,     5,     0,
     186,     0,     0,   186,   146,   185,   184,     0,     5,     0,
     187,   143,     5,     0,   187,   143,   157,     0,     5,     0,
       6,     0,    56,     0,    57,     0,   113,     0,     0,   142,
     188,     0,   123,   144,   156,   146,   157,   146,   157,   145,
       0,   123,   144,   156,   146,   157,   146,   157,   146,   173,
     145,     0,   159,   188,   151,     0
};

#endif

#if YYDEBUG
/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
static const short yyrline[] =
{
       0,    98,   100,   104,   105,   109,   110,   111,   112,   113,
     114,   115,   119,   124,   127,   130,   133,   136,   139,   144,
     145,   146,   147,   148,   149,   150,   151,   155,   160,   163,
     166,   169,   172,   178,   181,   184,   187,   190,   193,   196,
     199,   202,   205,   208,   211,   214,   220,   225,   231,   234,
     237,   240,   246,   252,   258,   261,   264,   267,   270,   273,
     276,   279,   282,   285,   288,   291,   294,   297,   300,   303,
     306,   309,   312,   315,   318,   321,   324,   327,   330,   333,
     336,   339,   342,   345,   348,   351,   354,   357,   362,   366,
     371,   376,   379,   382,   385,   388,   391,   394,   397,   400,
     403,   406,   409,   412,   415,   418,   421,   424,   427,   431,
     435,   438,   441,   444,   447,   450,   453,   456,   459,   462,
     467,   472,   475,   478,   481,   484,   487,   490,   493,   496,
     499,   505,   508,   513,   518,   521,   524,   527,   530,   533,
     536,   539,   542,   545,   548,   551,   554,   557,   560,   563,
     566,   569,   572,   575,   578,   581,   586,   591,   594,   597,
     600,   603,   606,   609,   612,   615,   618,   621,   626,   631,
     634,   637,   640,   643,   646,   649,   652,   655,   658,   662,
     667,   670,   673,   676,   679,   682,   685,   688,   691,   694,
     697,   700,   705,   710,   713,   716,   719,   724,   729,   732,
     735,   738,   741,   745,   748,   752,   755,   758,   761,   764,
     767,   770,   773,   776,   779,   782,   785,   788,   791,   794,
     797,   800,   803,   808,   813,   817,   821,   825,   829,   832,
     835,   838,   842,   845,   848,   851,   855,   861,   865,   869,
     874,   878,   883,   888,   892,   899,   903,   905,   907,   909,
     913,   917,   919,   923,   927,   929,   931,   935,   939,   941,
     945,   949,   951,   953,   957,   961,   963,   965,   967,   969,
     971,   973,   975,   979,   983,   985,   987,   989,   991,   993,
     995,   997,   999,  1001,  1005,  1010,  1013,  1016,  1019,  1022,
    1025,  1028,  1031,  1034,  1037,  1040,  1043,  1046,  1049,  1052,
    1055,  1058,  1061,  1064,  1067,  1070,  1073,  1076,  1079,  1082,
    1085,  1088,  1091,  1094,  1098,  1101,  1104,  1107,  1110,  1113,
    1116,  1119,  1122,  1125,  1128,  1132,  1135,  1140,  1145,  1150,
    1153,  1156,  1159,  1162,  1165,  1168,  1171,  1174,  1177,  1180,
    1183,  1186,  1189,  1192,  1196,  1200,  1203,  1206,  1209,  1212,
    1215,  1218,  1221,  1225,  1225,  1229,  1230,  1230,  1233,  1234,
    1237,  1238,  1241,  1242,  1243,  1246,  1247,  1247,  1250,  1251,
    1252,  1255,  1256,  1257,  1258,  1259,  1262,  1263,  1266,  1279,
    1291
};
#endif


#if (YYDEBUG) || defined YYERROR_VERBOSE

/* YYTNAME[TOKEN_NUM] -- String name of the token TOKEN_NUM. */
static const char *const yytname[] =
{
  "$", "error", "$undefined.", "NUMBER", "TOKPI", "STRING", "VARIABLE", 
  "NUMBER_VARIABLE", "POINT_VARIABLE", "VECTOR_VARIABLE", "LINE_VARIABLE", 
  "SEGMENT_VARIABLE", "CIRCLE_VARIABLE", "CONIC_VARIABLE", "NOARROW", 
  "ARROW", "BACKARROW", "DOUBLEARROW", "ENTIRE", "HALFLINE", 
  "BACKHALFLINE", "DOT", "DISC", "BOX", "CROSS", "PLUS", "FULL", "DOTTED", 
  "DASHED", "SIMPLE", "DOUBLE", "TRIPLE", "EXP", "LN", "SIN", "COS", 
  "TAN", "ASIN", "ACOS", "ATAN", "TOKDEG", "TOKRAD", "TOKABS", "SQRT", 
  "SIGN", "CEIL", "FLOOR", "ROUND", "TOKMIN", "TOKMAX", "TOKCLAMP", 
  "ARGUMENT", "ABSCISSA", "ORDINATE", "LENGTH", "DISTANCE", "ANGLE", 
  "RADIUS", "MAJOR", "MINOR", "ECCENTRICITY", "HEIGHT", "POINT", "VECTOR", 
  "LINE", "SEGMENT", "CIRCLE", "CONIC", "PARABOLA", "ELLIPSE", 
  "HYPERBOLA", "TRANSLATION", "REFLECTION", "ROTATION", "PROJECTION", 
  "HOMOTHECY", "MIDPOINT", "CENTER", "VERTICES", "FOCI", "ORTHOCENTER", 
  "BARYCENTER", "INTERSECTION", "TOKBEGIN", "END", "PARALLEL", 
  "PERPENDICULAR", "MEDIAN", "ALTITUDE", "BISECTOR", "INCIRCLE", 
  "TRIANGLE", "EQUILATERAL", "ISOSCELES", "RIGHT", "PARALLELOGRAM", 
  "RECTANGLE", "SQUARE", "PENTAGON", "HEXAGON", "FRAME", "COLOR", "BLACK", 
  "DARKGRAY", "GRAY", "LIGHTGRAY", "WHITE", "RED", "GREEN", "BLUE", 
  "CYAN", "MAGENTA", "YELLOW", "STYLE", "THICKNESS", "FONT", "TRICKS", 
  "EXPORT", "DRAW", "LABEL", "MARK", "UP", "STROKES", "TRACE", 
  "INTERACTIVE", "'?'", "'|'", "OR", "AND", "NOT", "EQ", "NEQ", "GEQ", 
  "LEQ", "'>'", "'<'", "'-'", "'+'", "'*'", "'/'", "NEG", "'^'", "'\\n'", 
  "'='", "'('", "')'", "','", "':'", "'\\\\'", "'['", "']'", "'}'", 
  "input", "line", "command", "variable_assignment", "variable", 
  "num_exp", "ang_exp", "point_exp", "vector_exp", "line_exp", 
  "segment_exp", "circle_exp", "conic_exp", "multiple_assignment", 
  "triangle_assignment", "polygon_assignment", "interactive_flag", 
  "interactive_assignment", "point_aspect", "line_aspect", 
  "segment_aspect", "drawing_flag", "segment_marking_flag", 
  "angle_marking_flag", "color_flag", "drawing_command", "@1", "pst_opts", 
  "@2", "pst_args", "pst_arg_list", "pst_arg", "pst_opt_list", "@3", 
  "pst_opt", "ident", "newlines", "trace_command", 0
};
#endif

/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
static const short yyr1[] =
{
       0,   152,   152,   153,   153,   154,   154,   154,   154,   154,
     154,   154,   155,   155,   155,   155,   155,   155,   155,   156,
     156,   156,   156,   156,   156,   156,   156,   157,   157,   157,
     157,   157,   157,   157,   157,   157,   157,   157,   157,   157,
     157,   157,   157,   157,   157,   157,   157,   157,   157,   157,
     157,   157,   157,   157,   157,   157,   157,   157,   157,   157,
     157,   157,   157,   157,   157,   157,   157,   157,   157,   157,
     157,   157,   157,   157,   157,   157,   157,   157,   157,   157,
     157,   157,   157,   157,   157,   157,   157,   157,   158,   158,
     159,   159,   159,   159,   159,   159,   159,   159,   159,   159,
     159,   159,   159,   159,   159,   159,   159,   159,   159,   159,
     159,   159,   159,   159,   159,   159,   159,   159,   159,   159,
     160,   160,   160,   160,   160,   160,   160,   160,   160,   160,
     160,   160,   160,   161,   161,   161,   161,   161,   161,   161,
     161,   161,   161,   161,   161,   161,   161,   161,   161,   161,
     161,   161,   161,   161,   161,   161,   162,   162,   162,   162,
     162,   162,   162,   162,   162,   162,   162,   162,   163,   163,
     163,   163,   163,   163,   163,   163,   163,   163,   163,   164,
     164,   164,   164,   164,   164,   164,   164,   164,   164,   164,
     164,   164,   165,   165,   165,   165,   165,   166,   166,   166,
     166,   166,   166,   166,   166,   166,   166,   166,   166,   166,
     166,   166,   166,   166,   166,   166,   166,   166,   166,   166,
     166,   166,   166,   167,   167,   167,   167,   167,   167,   167,
     167,   167,   167,   167,   167,   167,   167,   168,   168,   169,
     169,   169,   169,   169,   169,   170,   170,   170,   170,   170,
     171,   171,   171,   172,   172,   172,   172,   173,   173,   173,
     174,   174,   174,   174,   175,   175,   175,   175,   175,   175,
     175,   175,   175,   176,   176,   176,   176,   176,   176,   176,
     176,   176,   176,   176,   177,   177,   177,   177,   177,   177,
     177,   177,   177,   177,   177,   177,   177,   177,   177,   177,
     177,   177,   177,   177,   177,   177,   177,   177,   177,   177,
     177,   177,   177,   177,   177,   177,   177,   177,   177,   177,
     177,   177,   177,   177,   177,   177,   177,   177,   177,   177,
     177,   177,   177,   177,   177,   177,   177,   177,   177,   177,
     177,   177,   177,   177,   177,   177,   177,   177,   177,   177,
     177,   177,   177,   178,   177,   179,   180,   179,   181,   181,
     182,   182,   183,   183,   183,   184,   185,   184,   186,   186,
     186,   187,   187,   187,   187,   187,   188,   188,   189,   189,
     189
};

/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
static const short yyr2[] =
{
       0,     1,     3,     0,     1,     1,     1,     1,     1,     1,
       1,     1,     3,     3,     3,     3,     3,     3,     3,     1,
       1,     1,     1,     1,     1,     1,     1,     1,     1,     3,
       3,     3,     3,     2,     3,     3,     3,     3,     3,     3,
       3,     2,     3,     3,     5,     4,     4,     4,     1,     4,
       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
       4,     4,     6,     6,     8,     4,     4,     4,     4,     6,
       6,     4,     4,     4,     4,     4,     4,     8,     4,     4,
       4,     4,     6,     8,     6,     6,     3,     3,     2,     2,
       1,     6,     6,     6,     6,     6,     6,     6,     6,     6,
       8,     6,     8,     8,     6,     8,    10,    10,    14,    18,
       6,     6,     6,     4,     4,     4,     4,     4,     8,     3,
       1,     6,     6,     6,     4,     4,     6,     3,     3,     3,
       3,     2,     3,     1,     6,     6,     6,     4,     6,     6,
       6,     6,     6,     8,     8,     6,     6,     6,     6,     4,
       8,     6,     8,     8,     2,     3,     1,     6,     6,     8,
       6,     6,     6,     6,     8,     8,     2,     3,     1,     6,
       8,     6,     6,     6,     6,     8,     8,     8,     3,     1,
       8,     6,     8,     8,    10,    10,     6,     6,     6,     8,
       8,     3,     8,     8,     8,     6,     6,     4,     7,     9,
      11,     9,    13,    11,    13,     9,     4,     7,     9,     7,
       9,    11,    11,     4,     7,     9,    11,     7,     9,    11,
       4,     7,     9,     5,    10,    12,    14,    10,     5,     8,
      10,    12,     5,     8,    10,    13,    14,     1,     1,    11,
      12,    15,    16,    12,    16,     1,     1,     1,     1,     1,
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
       1,     1,     1,     1,    10,    12,    10,    12,     2,     4,
       4,     4,     2,     2,     4,     4,     6,     8,     4,     6,
       8,     6,     8,     4,     6,     8,     4,     6,     8,     4,
       8,     6,    10,    12,     4,     6,     8,    10,     6,     8,
      10,     8,    10,    10,    12,    12,    14,    14,    16,     8,
       8,    10,    10,     8,     8,    10,    10,    12,    12,    10,
      10,    12,    12,    14,    14,     8,     6,     4,     6,     8,
       8,    10,    12,     0,     5,     0,     0,     4,     0,     3,
       1,     3,     1,     1,     1,     1,     0,     4,     1,     3,
       3,     1,     1,     1,     1,     1,     0,     2,     8,    10,
       3
};

/* YYDEFACT[S] -- default rule to reduce with in state S when YYTABLE
   doesn't specify something else to do.  Zero means the default is an
   error. */
static const short yydefact[] =
{
       3,    19,    20,    21,    22,    23,    24,    25,    26,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       1,     4,     5,     0,   376,     6,     7,     8,     9,    10,
      11,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,   288,     0,
       0,     0,   292,   293,     0,     0,     0,     0,     0,     0,
      90,     0,   371,   372,   373,   374,   375,   353,     3,    21,
       0,     0,     0,   376,     0,    27,    48,    28,   120,     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,   133,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     156,   168,   179,     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,     0,     0,     0,     0,   273,   274,   275,   276,
     277,   278,   279,   280,   281,   282,   283,     0,   257,   258,
     259,     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,   119,
     355,     2,     0,     0,    12,    13,    14,    15,    16,    17,
      18,     0,     0,     0,     0,   377,   380,     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,    41,    33,
     131,     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,   154,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,   166,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     113,     0,     0,     0,     0,   116,   117,     0,     0,     0,
     114,   115,     0,   289,   291,   290,   295,     0,     0,     0,
       0,     0,     0,     0,     0,     0,   298,     0,     0,   303,
       0,   306,     0,   309,     0,   314,     0,     0,     0,     0,
       0,     0,     0,   347,     0,   294,     0,   356,   358,     0,
       0,     0,     0,     0,     0,   197,   220,   213,   206,     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,     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,    87,   132,
       0,    43,    42,    35,    36,    40,    39,    38,    37,    30,
      29,    31,   129,    32,    34,     0,   128,   127,    86,   130,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,   155,     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,   167,   178,   191,     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,   245,   246,
     247,   248,   249,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,   263,   260,   261,   262,     0,
       0,     0,     0,   354,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     223,   228,   232,     0,    46,    47,    49,    50,    51,    52,
      53,    54,    55,    56,    57,    45,    58,    59,    60,    61,
       0,     0,     0,     0,     0,     0,    65,    66,    67,    68,
       0,    71,    72,     0,     0,     0,     0,     0,     0,    78,
       0,    79,    80,    81,     0,     0,     0,     0,    73,     0,
       0,     0,     0,    74,    75,    76,     0,     0,     0,     0,
       0,     0,   124,   125,     0,     0,     0,     0,     0,     0,
       0,     0,   137,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,   149,
     111,   112,     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,    89,    91,    88,
      92,    93,    94,    95,    96,    97,    98,    99,     0,   101,
       0,     0,     0,     0,   104,     0,   110,     0,   296,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,   318,     0,   299,     0,   301,     0,
     304,     0,   307,     0,     0,   311,     0,   315,     0,   346,
       0,   348,     0,     0,   368,     0,   365,     0,   364,   363,
     362,     0,   360,     0,     0,     0,   195,   196,     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,    44,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     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,
       0,   250,   251,   252,     0,   253,   254,   255,   256,     0,
       0,     0,     0,     0,     0,     0,   357,   366,     0,   359,
       0,     0,     0,     0,     0,     0,     0,   198,     0,     0,
     221,     0,   217,     0,   214,   207,     0,   209,     0,     0,
       0,     0,     0,     0,    62,    63,     0,    84,    85,     0,
      69,     0,    70,     0,     0,    82,   121,   122,   123,   126,
       0,   135,   134,   136,   138,   139,   140,   141,   142,     0,
       0,   145,   146,   147,   148,     0,     0,     0,   151,     0,
     157,   158,   160,   171,   169,     0,     0,     0,     0,   181,
       0,     0,   161,   172,   186,   162,   173,   187,   163,     0,
     174,     0,   188,     0,     0,     0,     0,     0,   100,   102,
     103,   118,     0,   105,     0,     0,   297,     0,   329,     0,
     330,     0,     0,     0,     0,   333,     0,   334,   321,     0,
     319,     0,   300,   302,   305,   308,   310,     0,   316,     0,
     345,   350,     0,   349,   378,     0,     0,   369,   370,   361,
       0,     0,     0,     0,   192,   194,   193,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,   229,     0,   233,
       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,     0,
       0,     0,     0,     0,   268,   269,   271,   272,   267,   264,
     265,   266,   270,     0,     0,   367,     0,     0,     0,     0,
       0,     0,   201,     0,   199,     0,   205,   222,   218,     0,
     215,     0,   208,     0,   210,     0,     0,     0,     0,     0,
       0,     0,     0,    64,    77,    83,   286,     0,   143,   144,
     153,   152,   150,   159,   170,   183,   180,   182,     0,     0,
     164,   175,   189,   165,   176,   190,   177,   107,     0,   106,
     284,     0,   331,   332,     0,   335,     0,   336,     0,     0,
     339,   340,   323,     0,   322,   320,   312,     0,   317,   351,
       0,   379,   238,   237,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,   224,   227,   230,
       0,   234,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,   239,
       0,     0,     0,     0,     0,   200,     0,   203,     0,   219,
     216,   211,   212,     0,     0,     0,     0,   287,   184,   185,
       0,   285,   341,   342,     0,   337,     0,   338,   325,     0,
     324,   313,   352,     0,   240,     0,   243,     0,     0,     0,
     225,     0,   231,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,   202,   204,     0,   235,     0,   108,     0,
     343,   344,   327,     0,   326,     0,     0,     0,   226,   236,
       0,     0,   241,     0,     0,     0,   328,   242,   244,     0,
     109,     0,     0
};

static const short yydefgoto[] =
{
      39,    40,    41,    42,    43,   578,   575,    81,   134,   323,
     343,   344,   345,    45,    46,    47,  1244,    48,   614,   944,
     949,   211,   629,  1163,   207,    49,   240,   408,   631,   633,
     831,   832,   825,  1086,   826,   827,    94,    50
};

static const short yypact[] =
{
      58,-32768,-32768,  -125,-32768,-32768,-32768,-32768,-32768,  -133,
    -128,  -103,   -97,   -72,   -68,   -35,   -27,   -25,    -7,    10,
      20,    98,   135,   140,   143,   149,     2,   167,   174,    33,
     317,   180,   216,   222,   229,   232,   242,  1103,    94,     5,
  -32768,-32768,-32768,    12,   117,-32768,-32768,-32768,-32768,-32768,
  -32768,  4382,   461,   461,  3171,  1103,  1103,  1103,  1103,  1103,
      43,   279,  1103,  1103,   461,    43,    43,  4382,-32768,  1257,
     173,  4382,-32768,-32768,  4382,   181,   332,   896,  4382,   115,
  -32768,   219,-32768,-32768,-32768,-32768,-32768,-32768,    58,-32768,
     249,  2680,   744,   117,   252,-32768,-32768,-32768,-32768,   253,
     263,   276,   318,   321,   342,   346,   352,   356,   364,   373,
     382,   387,   391,   408,   411,   412,   413,   414,   415,   416,
     424,   425,   426,   427,   435,   436,   442,   443,   444,   447,
    4382,  4382,  4382,  4543,  -124,-32768,   448,   451,   452,   454,
     459,   460,   465,   466,   468,   469,   461,   461,   265,   471,
  -32768,-32768,-32768,   470,   489,   502,   503,   505,   506,   507,
     512,   514,   521,   522,  3736,  3171,  4560,   523,   530,   531,
     532,   533,   534,   536,   553,   555,   527,   556,   559,   560,
      43,    43,   365,   561,   566,   568,   579,   279,   580,   584,
     578,   612,   613,   622,   623,  4577,-32768,-32768,-32768,-32768,
  -32768,-32768,-32768,-32768,-32768,-32768,-32768,   628,-32768,-32768,
  -32768,   630,  2001,  3249,   634,   637,   640,   642,   647,   653,
     657,  2832,  4594,  -118,    24,  -111,   -93,   -67,   -56,   660,
     659,   663,   666,   667,   896,   669,   -39,  5155,   670,-32768,
     518,-32768,     7,   668,  1847,-32768,  -124,-32768,-32768,-32768,
  -32768,   673,   677,   680,  1228,-32768,-32768,  4382,  4382,  4382,
    4382,  4382,  4382,  4382,  4382,  4382,  4382,  4382,  4382,  4382,
    4382,  4382,  4382,  4382,  4382,  4382,   279,  3623,  3623,  3962,
    1103,  2945,   582,   357,   357,   357,  3058,  4382,  1211,   474,
  -32768,  5174,   220,  4382,  4382,  4382,  4382,  4382,  4382,  4382,
    4382,  4382,  4382,  4382,  4382,  4382,  4382,  4382,  4382,  4382,
    4382,  4382,  4484,   461,   461,   461,   461,  1239,  1239,  1103,
    1103,   766,-32768,   682,  4382,  4382,  1441,  1103,  1103,  1103,
    1103,  1103,  1957,  1957,  3171,  1957,  1103,   681,   685,   688,
     689,  3736,-32768,   690,   691,   699,  4382,  4382,  4382,  4382,
    4382,  4382,   461,  1103,   461,  1103,    43,    43,    43,    43,
  -32768,   279,   279,   279,   279,-32768,-32768,  1103,  3623,   461,
  -32768,-32768,  4382,-32768,-32768,-32768,-32768,  4382,   896,  3284,
    3284,   554,   554,  2832,   554,   401,-32768,    21,  1103,-32768,
     173,-32768,   173,-32768,  4075,-32768,  4075,  4382,   896,   896,
     896,   896,  1103,-32768,    56,-32768,  4382,-32768,   713,   720,
     810,  4382,   357,   357,   792,   725,   726,   728,   729,   933,
    5193,  5212,  5231,  5250,  5269,  5288,  5307,  5326,  5345,  5364,
    5383,  5402,  5421,  5440,  5459,  5478,  4611,  4628,  4645,   730,
     737,   731,  3623,  1847,   739,   277,   741,   366,   745,  3962,
    3962,   463,   743,   746,   749,   753,   755,   757,  2945,   759,
    -106,   758,   761,   763,   765,   768,   773,   775,   582,   782,
     776,   785,   786,   789,   357,   793,   802,   808,   790,   813,
     815,   818,  3058,  4662,   791,   809,   829,    59,-32768,-32768,
    1346,  2127,  1211,   864,   864,   885,   885,   196,   196,   -90,
     -90,   474,-32768,   474,   474,  4679,   -78,   -78,-32768,   474,
     819,   831,   837,   839,  4484,   840,   842,   844,   846,   849,
     860,   862,   863,   867,  1239,  1239,   866,   868,   872,   888,
     889,   890,   869,   766,   891,   897,   843,-32768,  5497,  5516,
     887,   898,   900,   901,  1441,   903,   905,   906,   907,   909,
     910,   911,   902,  1957,   912,   913,   914,   916,   919,   920,
     921,   922,   924,   925,   926,   927,   928,  1239,  1239,  3736,
    1239,-32768,-32768,-32768,  1422,   930,  5535,  5554,  1701,   931,
    5573,   525,   951,   -33,    -1,   954,   956,  4696,     3,   958,
    4713,  3357,   959,   962,   960,   965,   966,   988,  3849,  3284,
     989,   554,   990,   991,  3397,  4730,   992,   994,-32768,-32768,
  -32768,-32768,-32768,    11,    22,   130,   144,   154,   995,   997,
    4747,   998,  1606,  1001,  1002,-32768,-32768,-32768,-32768,   193,
    4764,   147,  3510,-32768,  4382,  1003,  4781,  1005,  1006,  1008,
    1013,  1014,  1015,   792,  1016,  1017,  4382,  4382,  4382,  4382,
    1020,  1025,  1028,   296,-32768,-32768,-32768,-32768,-32768,-32768,
  -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
    4382,  4382,  4382,  1103,  1103,  3623,-32768,-32768,-32768,-32768,
    3962,-32768,-32768,  1326,  4399,  4399,  2945,  4399,  1103,-32768,
    4382,-32768,-32768,-32768,   582,   582,   582,   582,-32768,   357,
     357,   357,   357,-32768,-32768,-32768,   766,   766,  3058,   766,
    4382,  1103,-32768,-32768,  4382,  4382,  4382,  4484,  4484,  4484,
    4484,  3623,-32768,  4382,  4382,  4382,   461,  1103,  1103,  1239,
    1103,  1103,  1103,  1103,  1103,  1103,   766,  1103,   461,-32768,
  -32768,-32768,  1441,  1441,  1441,  1441,  3623,  4382,  3623,  1326,
    3849,  4382,  4382,  1957,  4382,  4382,  4382,   461,   461,   461,
    1103,  1103,  1103,  1103,  1103,  1103,  1103,  4382,-32768,-32768,
  -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,  4382,-32768,
     461,  4382,  1103,  1103,-32768,  1103,-32768,  4382,-32768,  4382,
    4382,  4382,  1326,  1326,  3284,  1326,  1029,  3849,   554,   896,
    3397,  1129,  4382,  4382,-32768,   501,-32768,  4382,-32768,   173,
  -32768,   254,-32768,   194,  4382,-32768,  4382,-32768,  4382,-32768,
    1103,-32768,  4382,  4382,  1004,   684,  1035,  1039,-32768,  1847,
  -32768,  1044,  1045,  4798,  4382,  4382,-32768,-32768,   792,   792,
     792,   792,   279,   582,  1298,  1047,  3470,  1583,  1049,  1629,
    1050,  4382,  4382,  4382,  1046,  1061,  5592,  5611,  4815,  1051,
    1053,  1057,  1326,   198,  1059,  1058,  4399,  1060,   557,  1461,
    1062,  1063,  1064,  1847,  4832,  1065,  1066,   577,  1067,  5630,
     602,  1068,   217,  1069,  1074,  1075,  1076,  1077,  1078,  1079,
    1081,  1083,  4849,  1084,   633,  1085,  5649,   226,  1086,  1096,
    4866,  1098,  4883,  4900,   651,   723,   777,  1099,  1100,  1101,
     244,   246,   250,  1105,  1107,  1109,  1110,  1112,  1113,  5668,
    1115,  1117,   273,  4917,  5687,  2245,  1116,  2339,  1119,  3849,
    1120,  1121,  1122,  2456,  1126,  2505,  1127,   322,   324,  5706,
    1128,-32768,-32768,-32768,  1130,-32768,-32768,-32768,-32768,  1131,
     334,  3583,  1132,   347,  5725,  3701,-32768,-32768,  4136,-32768,
    3510,  4198,  4934,  4951,  1134,  1135,  1136,-32768,  4382,  4382,
  -32768,  4382,-32768,  4382,-32768,-32768,  4382,-32768,  4968,   177,
    3814,  3911,  1103,  1070,-32768,-32768,  4382,-32768,-32768,  1326,
  -32768,  1103,-32768,  4399,  1103,-32768,-32768,-32768,-32768,-32768,
    4382,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,  4382,
    4382,-32768,-32768,-32768,-32768,  1103,  1103,  1103,-32768,  4382,
  -32768,-32768,-32768,-32768,-32768,  1103,  4382,  4382,  4382,-32768,
    4382,  4382,-32768,-32768,-32768,-32768,-32768,-32768,-32768,  4382,
  -32768,  4382,-32768,  4382,  4382,  4382,  4382,  1103,-32768,-32768,
  -32768,-32768,  4382,-32768,  1103,  4382,-32768,  4382,-32768,  4382,
  -32768,  4382,  4382,   896,  4382,-32768,  4382,-32768,-32768,   501,
  -32768,   194,-32768,-32768,-32768,-32768,-32768,   173,-32768,   173,
  -32768,-32768,   267,-32768,-32768,   173,   147,-32768,  1847,-32768,
    1137,  4985,  4259,  4321,-32768,-32768,-32768,  1867,   349,  1139,
    1141,  2207,   353,  2316,   361,  4382,  4382,-32768,  4382,-32768,
    4382,  1142,  1103,  5744,  1144,  1147,  3935,  1148,  5763,  1150,
    1151,  1152,  1153,  1154,  5782,  5801,  1155,  5002,  5019,  1156,
    1168,  1170,  5820,  5839,  5858,  1172,  4019,  1173,  4445,  1178,
    1188,  2646,  1190,  2798,  1192,  1194,  1207,  1193,  1225,   367,
    1231,  1232,   370,  1235,-32768,-32768,-32768,-32768,-32768,-32768,
  -32768,-32768,-32768,   376,  1236,-32768,   -85,  4382,  1238,  5036,
    1240,  5053,-32768,  4382,-32768,  4382,-32768,-32768,-32768,  4382,
  -32768,  4382,-32768,  4382,-32768,  4382,  2910,  1237,   787,  4467,
    1242,  4382,  1245,-32768,-32768,-32768,-32768,  4382,-32768,-32768,
  -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,  4382,  4382,
  -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,  1103,-32768,
  -32768,  4382,-32768,-32768,  4382,-32768,  4382,-32768,  4382,  4382,
  -32768,-32768,-32768,   501,-32768,-32768,-32768,   194,-32768,-32768,
    4382,-32768,-32768,-32768,  1247,  5070,   -85,  4382,   -85,  4382,
    4499,   378,  1248,  1249,  1250,  1251,  4382,-32768,-32768,-32768,
    4382,-32768,  5087,  4382,  5877,  1259,  1260,  1270,  5896,  1272,
    1275,  3023,  1276,  3137,  1282,   393,  1293,  1295,  5915,-32768,
    1218,  1296,  5104,  1297,  5121,-32768,  4382,-32768,  4382,-32768,
  -32768,-32768,-32768,   395,  1301,  4382,  5138,-32768,-32768,-32768,
    4382,-32768,-32768,-32768,  4382,-32768,  4382,-32768,-32768,   501,
  -32768,-32768,-32768,  1302,-32768,  1243,-32768,  1269,  1305,  1310,
  -32768,  4382,-32768,  1311,  4382,  4521,  1312,  1313,   397,  1314,
     -85,  1315,  1317,-32768,-32768,  1319,-32768,  1320,-32768,  1103,
  -32768,-32768,-32768,   173,-32768,  1330,   -85,   -85,-32768,-32768,
    1340,  1343,-32768,  1344,  1353,  4382,-32768,-32768,-32768,  5934,
  -32768,  1265,-32768
};

static const short yypgoto[] =
{
  -32768,  1199,-32768,-32768,   -42,   820,  1102,     0,   210,  1870,
     973,  1576,  1815,-32768,-32768,-32768, -1164,-32768,-32768,-32768,
   -1068,  -388,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
     487,-32768,   299,-32768,-32768,  1244,  1367,-32768
};


#define	YYLAST		6079


static const short yytable[] =
{
      44,    92,   616,  1151,   617,  1361,   619,    68,   621,  1242,
     409,    51,   308,   309,   310,   311,    52,   -90,     1,     2,
      89,     4,     5,     6,     7,     8,   -90,   386,   387,    80,
     308,   309,   310,   311,   389,   390,  1243,   238,    72,   689,
     690,    53,   608,   609,   610,   611,   612,    54,   304,   305,
     254,   306,   391,   392,   150,   171,   172,   173,   174,   175,
     310,   311,   190,   191,     1,     2,     3,     4,     5,     6,
       7,     8,    55,    10,    11,   223,    56,   235,   393,   394,
     625,     9,  1281,    12,  1283,   626,   627,   628,    44,   395,
     396,   245,    13,    14,    15,    16,    17,    18,    19,    82,
      83,    20,    21,    22,    23,    24,   403,   404,   153,    57,
      10,    11,   777,   778,   176,   177,   178,    58,   179,    59,
      12,     1,     2,    89,     4,     5,     6,     7,     8,    13,
      14,    15,    16,    17,    18,    19,    90,    60,    20,    21,
      22,    23,    24,   410,   779,   780,    69,    88,   784,   785,
      84,    85,   824,    83,    61,    91,   804,   805,    25,    26,
     308,   309,   310,   311,    62,    37,  1345,   806,   807,  1277,
     388,    27,    28,    29,    30,    31,    32,    33,    34,   180,
      35,    36,  1353,  1354,    95,    96,   214,   181,    97,    80,
      98,   135,   150,   151,   152,   308,   309,   310,   311,   208,
     209,   210,    37,    84,    85,   714,    38,    86,   945,   946,
     947,   948,   419,    99,   100,   101,   102,   103,   104,   105,
     106,   107,   108,   109,   110,   111,   112,   113,   114,   115,
     116,   117,   118,   215,   216,   121,   122,   123,   124,   125,
     126,   127,    63,    12,   128,   136,   153,   154,   155,   156,
     157,   158,   217,   218,   219,    16,   220,    18,    19,    93,
      86,    20,    21,    22,    23,    24,   141,   142,   143,   144,
     145,   163,   941,   942,   943,   808,   809,   444,   446,    64,
     453,   459,  1154,  1155,    65,   224,   484,    66,  1156,   810,
     811,   151,   152,    67,  1157,  1158,  1159,  1160,  1161,   812,
     813,   246,     1,     2,    89,     4,     5,     6,     7,     8,
     130,    70,   515,   308,   309,   310,   311,   164,    71,   530,
     531,   534,    73,  1106,    74,   221,   545,   547,   548,   549,
     550,   551,   302,   303,   304,   305,   566,   306,   821,   822,
     229,   290,   292,   990,   991,   154,   155,   156,   157,   158,
     183,   184,   185,   583,   186,   585,   308,   309,   310,   311,
      75,  1162,  1008,  1009,   239,   489,    76,   586,   588,   163,
     152,  1024,  1025,    77,   290,   292,    78,   653,   592,   444,
     446,   171,   172,   173,   175,   606,    79,   613,   615,  1038,
    1039,  1040,  1041,   242,   854,  1042,  1043,   257,   171,   172,
     173,   175,   624,   256,    95,    96,   602,   258,    97,    80,
      98,   324,   150,   308,   309,   310,   311,   938,  1053,  1054,
     259,   940,   677,   187,   155,   156,   157,   158,   470,   471,
     472,   292,   473,    99,   100,   101,   102,   103,   104,   105,
     106,   107,   108,   109,   110,   111,   112,   113,   114,   115,
     116,   117,   118,   215,   216,   121,   122,   123,   124,   125,
     126,   127,   260,    12,   128,   261,   153,  1068,  1069,  1070,
    1071,   135,   230,   231,   603,    16,   233,    18,    19,  1076,
    1077,    20,    21,    22,    23,    24,   262,   445,   447,   451,
     263,   460,  1081,  1082,  1174,  1175,   264,   487,  1180,  1181,
     265,   474,   308,   309,   310,   311,  1184,  1185,   266,    80,
     360,   679,  1232,  1233,   502,  1236,  1237,   267,   506,   507,
     508,  1239,  1240,  1287,  1288,   136,   268,   208,   209,   210,
     130,   269,   137,   138,   139,   270,   140,   449,  1308,  1309,
    1320,  1321,  1342,  1343,   487,   604,   141,   142,   143,   144,
     145,   292,   271,    10,    11,   272,   273,   274,   275,   276,
     277,   581,    80,    12,   135,   150,   151,   152,   278,   279,
     280,   281,    13,    14,    15,    16,    17,    18,    19,   282,
     283,    20,    21,    22,    23,    24,   284,   285,   286,   445,
     447,   287,   312,   487,   151,   313,   314,   146,   315,   308,
     309,   310,   311,   316,   317,   147,    10,    11,   681,   318,
     319,   855,   320,   321,   326,   306,    12,   325,   136,   153,
     154,   155,   156,   157,   158,   217,   218,   600,    16,   220,
      18,    19,   830,   327,    20,    21,    22,    23,    24,   141,
     142,   143,   144,   145,   163,    37,   328,   329,   154,   330,
     331,   332,   292,   464,   465,   466,   333,   467,   334,   290,
     292,   308,   309,   310,   311,   335,   336,   407,   292,   347,
     775,   356,   163,   859,   860,   173,   348,   349,   350,   351,
     352,  1150,   353,   863,   171,   172,   173,   175,   867,  1152,
     524,  1153,   292,   308,   309,   310,   311,  1164,   601,   354,
     357,   355,   995,   358,   359,   361,   171,   172,   173,   175,
     362,   871,   363,   308,   309,   310,   311,   171,   172,   173,
     175,   876,  1003,   364,   367,   365,   468,   882,   883,   366,
     884,   885,   886,   887,   888,   889,   173,   890,   308,   309,
     310,   311,   171,   172,   173,   175,   893,  1006,   897,   898,
       1,     2,    89,     4,     5,     6,     7,     8,   368,   369,
     910,   911,   912,   913,   914,   915,   916,   370,   371,   308,
     309,   310,   311,   373,    80,   374,   135,   150,  1021,   487,
     378,   379,   920,   921,   380,   922,   381,   308,   309,   310,
     311,   382,   171,   172,   173,   175,  1032,   383,   173,   930,
     173,   384,   135,   398,   151,   937,   397,   399,   290,   292,
     400,   401,   411,   635,   292,   402,   406,   412,    10,    11,
     953,   413,   251,   252,   414,   567,   253,   537,    12,   568,
     136,   153,   569,   570,   956,   571,   572,   478,   479,   532,
      16,   481,    18,    19,   573,  1276,    20,    21,    22,    23,
      24,   141,   142,   143,   144,   145,   136,   632,   154,   308,
     309,   310,   311,   639,   640,   641,   634,   642,  1033,   646,
     647,   133,   648,   649,   166,   675,   673,   141,   142,   143,
     144,   145,   163,   674,   676,   487,   678,   195,   682,   680,
     487,   212,   683,   684,   213,   222,   487,   685,   237,   686,
     868,   687,   524,   691,    80,   688,   692,   150,   693,   694,
     533,   244,   695,   308,   309,   310,   311,   696,   487,   697,
     699,  1329,  1034,   308,   309,   310,   311,   698,   146,   700,
     701,   877,  1258,   702,   706,   880,   643,   711,   703,     1,
       2,    89,     4,     5,     6,     7,     8,   704,    10,    11,
     288,   289,   291,   705,   712,  1351,   894,   707,    12,   708,
     830,   153,   709,   717,   904,   905,   906,   230,   231,   232,
      16,   233,    18,    19,   713,   718,    20,    21,    22,    23,
      24,   719,  1111,   720,   289,   291,   721,   722,   739,   173,
     723,  1114,   724,   173,  1115,   725,   298,   299,   300,   301,
     302,   303,   304,   305,   487,   306,   726,   292,   727,   728,
     487,   729,   730,   736,   731,  1119,  1120,  1121,   732,   300,
     301,   302,   303,   304,   305,  1123,   306,   168,   650,   651,
     652,   742,   180,   182,   733,   734,   735,   737,   193,   194,
     234,   291,   743,   738,   744,   745,   753,  1135,   226,   746,
     236,   747,   748,   749,  1137,   750,   751,   752,   754,   755,
     756,   979,   757,  1145,   248,   758,   759,   760,   761,  1149,
     762,   763,   764,   765,   766,   770,   773,   420,   421,   422,
     423,   424,   425,   426,   427,   428,   429,   430,   431,   432,
     433,   434,   435,   436,   437,   438,   776,   443,   443,   443,
     781,   443,   782,   786,   792,   790,   483,   443,   791,   793,
     794,    80,  1192,   490,   491,   492,   493,   494,   495,   496,
     497,   498,   499,   500,   501,   503,   504,   505,   443,   443,
     443,   509,   795,   798,   932,   800,   799,   342,   802,   487,
     803,   814,   815,   817,   538,   539,   819,  -371,   820,   834,
     836,   837,   838,   342,   443,    10,    11,   839,   840,   841,
     983,   291,   842,   843,   851,    12,   574,   576,   577,   852,
     580,   443,   853,   929,    13,    14,    15,    16,    17,    18,
      19,   957,   958,    20,    21,    22,    23,    24,   587,   959,
     982,   960,   590,   969,   974,   977,   987,   591,   988,   443,
     443,   989,   993,   443,   992,   605,   994,   997,   998,   999,
    1001,  1002,  1004,  1007,  1112,  1010,   620,   622,  1267,  1011,
    1012,  1013,  1014,  1313,  1015,  1016,   630,  1017,  1018,  1020,
    1022,   636,  1026,  1275,     1,     2,    89,     4,     5,     6,
       7,     8,  1027,  1029,  1035,  1036,  1037,    37,  1331,   135,
     150,  1044,   452,  1045,   462,  1046,  1047,  1048,  1049,   486,
    1051,  1058,   291,  1052,  1060,  1362,  1061,  1062,  1063,   289,
     291,  1065,  1067,  1073,  1332,  1074,  1075,  1080,   291,  1094,
    1095,  1096,    87,  1166,  1176,   516,  1177,   241,  1191,  1194,
     527,   529,  1195,  1198,   536,  1200,  1201,  1202,  1203,  1204,
    1207,  1210,   291,   136,   153,   554,   557,   560,   563,  1328,
     337,   338,   523,  1211,   340,  1212,  1188,  1216,  1219,   415,
     416,   417,   418,  1222,   141,   142,   143,   144,   145,   554,
     557,   560,   563,  1223,    80,  1225,   135,  1227,  1230,  1350,
    1228,   296,   297,   298,   299,   300,   301,   302,   303,   304,
     305,   593,   306,  1229,   554,   557,   560,   563,   607,   196,
     197,   198,   199,   200,   201,   202,   203,   204,   205,   206,
    1231,   554,   557,   560,   563,   524,  1234,  1235,    10,    11,
    1238,  1241,  1257,   525,  1246,  1165,  1248,  1261,    12,   443,
     136,  1263,  1279,  1289,  1290,  1291,  1292,   594,   595,   861,
      16,   597,    18,    19,  1298,  1299,    20,    21,    22,    23,
      24,   141,   142,   143,   144,   145,  1300,  1302,   289,   291,
    1303,  1305,   342,   293,   291,   294,   295,  1307,   296,   297,
     298,   299,   300,   767,   302,   303,   304,   305,  1310,   306,
    1311,  1314,  1316,   967,   968,   769,  1322,  1089,  1330,    80,
    1333,   579,   829,   151,   833,  1334,  1336,  1340,  1341,  1344,
     255,  1346,   146,  1347,  1348,  1349,   844,   846,   847,   849,
     862,   293,   715,   294,   295,  1352,   296,   297,   298,   299,
     300,   301,   302,   303,   304,   305,  1355,   306,  1356,  1357,
     856,   857,   858,    10,    11,   443,   618,   342,  1358,   623,
     443,     0,     0,    12,     0,     0,   443,   154,     0,     0,
     443,     0,   540,   541,   542,    16,   543,    18,    19,     0,
       0,    20,    21,    22,    23,    24,     0,     0,   443,     0,
     869,   163,     0,     0,     0,   873,   874,     0,     0,     0,
     554,   557,   560,   563,   879,   443,     0,   293,     0,   294,
     295,     0,   296,   297,   298,   299,   300,   767,   302,   303,
     304,   305,     0,   306,     0,     0,   892,   768,   896,   769,
     900,   902,   903,     0,   443,   443,   443,     0,     0,     0,
       0,     0,     0,     0,     0,   544,   293,   498,   294,   295,
       0,   296,   297,   298,   299,   300,   767,   302,   303,   304,
     305,   919,   306,     0,     0,     0,   996,   923,   769,   924,
     925,   927,     0,     0,   443,     0,     0,   291,     0,     0,
     443,     0,   933,   935,     0,     0,     0,   939,     0,     0,
     169,     0,     0,     0,     0,     0,   951,   188,     0,     0,
       0,     0,   954,   955,     0,     0,     0,     0,     0,     0,
       0,   227,     0,   560,   962,   963,     0,   554,   557,   560,
     563,     0,     0,     0,     0,     0,     0,   249,     0,     0,
       0,   978,   980,   981,     0,     0,     0,     0,     0,   554,
     557,   560,   563,     0,     0,     0,     0,     0,     0,     0,
     554,   557,   560,   563,     0,     0,     0,     0,     0,     0,
       0,     0,   560,     0,     0,     0,     0,     0,   293,   560,
     294,   295,     0,   296,   297,   298,   299,   300,   767,   302,
     303,   304,   305,     0,   306,     0,   560,     0,   972,   973,
     769,   293,     0,   294,   295,     0,   296,   297,   298,   299,
     300,   767,   302,   303,   304,   305,     0,   306,   845,   443,
     848,   850,   818,   769,   293,     0,   294,   295,     0,   296,
     297,   298,   299,   300,   767,   302,   303,   304,   305,     0,
     306,   560,   931,   560,   975,   976,   769,     0,  1088,     0,
     829,  1091,     0,     0,     0,     0,     0,     0,  1097,     0,
       0,     0,     0,  1101,     0,     0,  1103,     0,     0,     0,
       0,     0,     0,     0,     0,     0,  1113,     0,     0,     0,
       0,     0,   870,     0,     0,     0,   872,     0,     0,     0,
    1116,     0,     0,   875,     0,   878,   293,     0,   294,   295,
    1118,   296,   297,   298,   299,   300,   767,   302,   303,   304,
     305,     0,   306,     0,     0,     0,  1124,  1125,   769,   895,
    1127,  1128,   439,     0,     0,     0,     0,     0,   469,     0,
       0,     0,     0,     0,  1132,  1133,  1134,     0,     0,   170,
       0,     0,  1136,     0,     0,  1138,   189,     0,     0,     0,
     917,  1141,  1143,     0,     0,     0,     0,     0,   517,     0,
     228,     0,   926,   928,     0,     0,     0,     0,     0,     0,
       0,     0,   546,     0,   934,   936,   250,     0,   555,   558,
     561,   564,  1169,  1171,     0,     0,   950,     0,     0,     0,
     952,     0,   148,   149,   167,  1186,   443,     0,  1189,     0,
       0,     0,     0,     0,   192,     0,     0,   555,   558,   561,
     564,     0,     0,     0,     0,   225,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,   555,   558,   561,
     564,   247,     0,     0,     0,     0,   560,   135,   150,   151,
     152,     0,   293,     0,   294,   295,     0,   296,   297,   298,
     299,   300,   301,   302,   303,   304,   305,  1245,   306,     0,
     645,     0,   293,  1250,   294,   295,     0,   296,   297,   298,
     299,   300,   767,   302,   303,   304,   305,     0,   306,     0,
       0,  1262,  1172,  1173,   769,     0,   322,  1264,     0,     0,
       0,   136,   153,   154,   155,   156,   157,   158,   159,   160,
     552,     0,   162,     0,   322,     0,  1146,     0,     0,     0,
       0,  1268,   141,   142,   143,   144,   145,   163,  1271,  1273,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    1278,     0,     0,     0,     0,     0,     0,  1282,     0,  1284,
    1098,  1099,     0,  1100,     0,  1102,     0,     0,  1104,     0,
       0,     0,     0,  1296,     0,     0,     0,     0,     0,     0,
       0,   440,     0,   524,     0,     0,   463,     0,   475,   476,
     477,   553,     0,     0,     0,     0,     0,     0,     0,     0,
       0,  1117,     0,     0,     0,     0,     0,     0,     0,     0,
    1325,  1122,     0,     0,     0,     0,   293,   518,   294,   295,
    1126,   296,   297,   298,   299,   300,   301,   302,   303,   304,
     305,  1129,   306,  1130,     0,  1131,   375,   556,   559,   562,
     565,   461,     0,     0,     0,     0,   485,     0,     0,  1139,
       0,  1140,     0,  1142,  1144,     0,  1147,     0,  1148,     0,
       0,     0,     0,     0,     0,  1359,   556,   559,   562,   565,
       0,     0,     0,   519,   520,   521,   522,   526,   528,     0,
       0,   535,     0,     0,     0,     0,   556,   559,   562,   565,
       0,     0,   519,   520,   521,   522,     0,  1187,     0,     0,
       0,     0,  1190,     0,     0,     0,     0,     0,     0,     0,
       0,     0,   582,     0,   584,     0,     0,   637,   638,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,   589,
       0,     0,     0,     0,     0,     0,     0,     0,     0,   148,
     149,   519,   520,   521,   522,   295,     0,   296,   297,   298,
     299,   300,   301,   302,   303,   304,   305,     0,   306,     0,
     555,   558,   561,   564,     0,     0,     0,  1251,     0,     0,
       0,  1252,     0,  1253,   644,  1254,     0,  1255,     0,     0,
       0,     0,     0,   555,   558,   561,   564,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    1265,  1266,     0,     0,     0,     0,     0,     0,   555,   558,
     561,   564,     0,     0,     0,     0,  1269,     0,  1270,   561,
    1272,  1274,   293,     0,   294,   295,     0,   296,   297,   298,
     299,   300,   767,   302,   303,   304,   305,     0,   306,     0,
       0,     0,  1178,  1179,   769,     0,     0,     0,  1293,     0,
       0,     0,  1294,     0,     0,     0,     0,     0,     0,     0,
     293,     0,   294,   295,   561,   296,   297,   298,   299,   300,
     767,   302,   303,   304,   305,     0,   306,     0,  1318,     0,
    1319,  1057,   769,     0,   322,     0,     0,  1323,     0,     0,
       0,     0,     0,     0,     0,     0,  1326,     0,  1327,     0,
       0,     0,     0,     0,   555,   558,   561,   564,   964,   966,
       0,     0,     0,  1335,     0,     0,  1337,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,   519,   520,   521,
     522,   293,     0,   294,   295,     0,   296,   297,   298,   299,
     300,   767,   302,   303,   304,   305,     0,   306,     0,     0,
       0,  1182,  1183,   769,   293,     0,   294,   295,   322,   296,
     297,   298,   299,   300,   767,   302,   303,   304,   305,     0,
     306,     0,     0,     0,     0,  1059,   769,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,   556,
     559,   562,   565,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,   556,   559,   562,   565,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,   556,   559,   562,   565,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,   864,   519,   520,   521,   522,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,   562,     0,
       0,     0,     0,     0,     0,     0,   519,   520,   521,   522,
       0,   293,     0,   294,   295,     0,   296,   297,   298,   299,
     300,   767,   302,   303,   304,   305,   881,   306,     0,   521,
       0,     0,  1064,   769,     0,     0,   521,     0,   891,     0,
       0,     0,     0,   562,     0,     0,     0,     0,     0,   899,
     901,     0,     0,   521,     0,     0,     0,   907,   908,   909,
     293,     0,   294,   295,     0,   296,   297,   298,   299,   300,
     767,   302,   303,   304,   305,     0,   306,     0,     0,     0,
     918,  1066,   769,     0,     0,     0,     0,   965,     0,     0,
       0,     0,   519,   520,   521,   522,     0,     0,   521,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,    95,    96,     0,     0,    97,    80,    98,
     135,   150,   151,   152,     0,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,   519,   520,
     521,   522,    99,   100,   101,   102,   103,   104,   105,   106,
     107,   108,   109,   110,   111,   112,   113,   114,   115,   116,
     117,   118,   215,   216,   121,   122,   123,   124,   125,   126,
     127,     0,    12,   128,   136,   153,   154,   155,   156,   157,
     158,   217,   218,   219,    16,   220,    18,    19,     0,     0,
      20,    21,    22,    23,    24,   141,   142,   143,   144,   145,
     163,   293,     0,   294,   295,     0,   296,   297,   298,   299,
     300,   767,   302,   303,   304,   305,     0,   306,     0,     0,
       0,     0,  1224,   769,     0,     0,     0,     0,     0,   521,
       0,     0,     0,     0,   243,     0,     0,     0,   562,   130,
       0,     0,     0,     0,     0,     0,   164,     0,     0,     0,
       0,     0,     0,     0,   221,     0,     0,     0,     0,     0,
       0,     0,     0,     0,     0,    95,    96,     0,     0,    97,
      80,    98,   135,   150,   151,   152,     0,     0,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,   521,
       0,     0,     0,   521,    99,   100,   101,   102,   103,   104,
     105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
     115,   116,   117,   118,   215,   216,   121,   122,   123,   124,
     125,   126,   127,     0,    12,   128,   136,   153,   154,   155,
     156,   157,   158,   217,   218,   219,    16,   220,    18,    19,
       0,     0,    20,    21,    22,    23,    24,   141,   142,   143,
     144,   145,   163,   293,     0,   294,   295,     0,   296,   297,
     298,   299,   300,   767,   302,   303,   304,   305,     0,   306,
       0,     0,     0,     0,  1226,   769,     0,     0,    95,    96,
       0,     0,    97,    80,    98,   135,   150,     0,   152,     0,
       0,   130,     0,     0,     0,     0,     0,     0,   164,     0,
       0,     0,     0,     0,     0,     0,   221,    99,   100,   101,
     102,   103,   104,   105,   106,   107,   108,   109,   110,   111,
     112,   113,   114,   115,   116,   117,   118,   215,   216,   121,
     122,   123,   124,   125,   126,   127,     0,    12,   128,   136,
     153,     0,   155,   156,   157,   158,   454,   455,   456,    16,
     457,    18,    19,     0,     0,    20,    21,    22,    23,    24,
     141,   142,   143,   144,   145,   293,     0,   294,   295,     0,
     296,   297,   298,   299,   300,   767,   302,   303,   304,   305,
       0,   306,     0,     0,     0,     0,  1256,   769,     0,     0,
       0,    95,    96,     0,     0,    97,    80,    98,   135,   150,
       0,     0,     0,     0,   130,     0,     0,     0,     0,     0,
       0,   164,     0,     0,     0,     0,     0,     0,     0,   458,
      99,   100,   101,   102,   103,   104,   105,   106,   107,   108,
     109,   110,   111,   112,   113,   114,   115,   116,   117,   118,
     215,   216,   121,   122,   123,   124,   125,   126,   127,     0,
      12,   128,   136,   153,     0,     0,     0,     0,     0,   478,
     479,   480,    16,   481,    18,    19,     0,     0,    20,    21,
      22,    23,    24,   141,   142,   143,   144,   145,   293,     0,
     294,   295,     0,   296,   297,   298,   299,   300,   767,   302,
     303,   304,   305,     0,   306,     0,     0,     0,     0,  1304,
     769,     0,     0,     0,    95,    96,     0,     0,    97,     0,
      98,   135,   150,   151,   152,     0,     0,   130,     0,     0,
       0,     0,     0,     0,   164,     0,     0,     0,     0,     0,
       0,     0,   482,    99,   100,   101,   102,   103,   104,   105,
     106,   107,   108,   109,   110,   111,   112,   113,   114,   115,
     116,   117,   118,   119,   120,   121,   122,   123,   124,   125,
     126,   127,     0,     0,   128,   136,   153,   154,   155,   156,
     157,   158,   159,   160,   161,     0,   162,     0,     0,     0,
       0,     0,     0,     0,     0,     0,   141,   142,   143,   144,
     145,   163,   293,     0,   294,   295,     0,   296,   297,   298,
     299,   300,   767,   302,   303,   304,   305,     0,   306,     0,
       0,     0,     0,  1306,   769,     0,     0,    95,    96,     0,
       0,    97,    80,    98,   135,     0,     0,     0,     0,     0,
     130,     0,     0,     0,     0,     0,     0,   164,     0,     0,
       0,     0,     0,     0,     0,   165,    99,   100,   101,   102,
     103,   104,   105,   106,   107,   108,   109,   110,   111,   112,
     113,   114,   115,   116,   117,   118,   215,   216,   121,   122,
     123,   124,   125,   126,   127,     0,    12,   128,   136,     0,
       0,     0,     0,     0,     0,   594,   595,   596,    16,   597,
      18,    19,     0,     0,    20,    21,    22,    23,    24,   141,
     142,   143,   144,   145,   293,     0,   294,   295,     0,   296,
     297,   298,   299,   300,   301,   302,   303,   304,   305,     0,
     306,     0,     0,     0,   376,   377,     0,     0,     0,     0,
      95,    96,     0,     0,    97,    80,    98,     0,   150,     0,
       0,     0,     0,   130,     0,     0,     0,     0,     0,     0,
     598,     0,     0,     0,     0,     0,     0,     0,   599,    99,
     100,   101,   102,   103,   104,   105,   106,   107,   108,   109,
     110,   111,   112,   113,   114,   115,   116,   117,   118,   215,
     216,   121,   122,   123,   124,   125,   126,   127,     0,    12,
     128,     0,   153,     0,     0,     0,     0,     0,   230,   231,
     603,    16,   233,    18,    19,     0,     0,    20,    21,    22,
      23,    24,   293,     0,   294,   295,     0,   296,   297,   298,
     299,   300,   301,   302,   303,   304,   305,     0,   306,     0,
       0,     0,   788,   789,     0,     0,     0,     0,     0,     0,
       0,     0,     0,    95,    96,   828,     0,    97,    80,    98,
       0,     0,     0,     0,     0,     0,   130,     0,     0,     0,
       0,     0,     0,   449,     0,     0,     0,     0,     0,     0,
       0,   604,    99,   100,   101,   102,   103,   104,   105,   106,
     107,   108,   109,   110,   111,   112,   113,   114,   115,   116,
     117,   118,   215,   216,   121,   122,   123,   124,   125,   126,
     127,     0,    12,   128,     0,     0,     0,     0,     0,     0,
       0,    13,    14,   441,    16,    17,    18,    19,     0,     0,
      20,    21,    22,    23,    24,   293,     0,   294,   295,     0,
     296,   297,   298,   299,   300,   301,   302,   303,   304,   305,
       0,   306,     0,     0,     0,   970,   971,     0,     0,     0,
       0,     0,     0,     0,     0,     0,    95,    96,     0,     0,
      97,    80,    98,     0,     0,     0,     0,     0,     0,   130,
       0,     0,     0,     0,     0,     0,   131,     0,     0,     0,
       0,     0,     0,     0,   442,    99,   100,   101,   102,   103,
     104,   105,   106,   107,   108,   109,   110,   111,   112,   113,
     114,   115,   116,   117,   118,   215,   216,   121,   122,   123,
     124,   125,   126,   127,     0,    12,   128,     0,     0,     0,
       0,     0,     0,     0,    13,    14,   441,    16,    17,    18,
      19,     0,     0,    20,    21,    22,    23,    24,   293,     0,
     294,   295,     0,   296,   297,   298,   299,   300,   301,   302,
     303,   304,   305,     0,   306,     0,     0,     0,  1078,  1079,
       0,     0,     0,     0,     0,     0,     0,     0,     0,    95,
      96,     0,     0,    97,     0,    98,   135,   150,     0,     0,
       0,     0,   130,     0,     0,     0,     0,     0,     0,   131,
       0,     0,     0,     0,     0,     0,     0,   442,    99,   100,
     101,   102,   103,   104,   105,   106,   107,   108,   109,   110,
     111,   112,   113,   114,   115,   116,   117,   118,   119,   120,
     121,   122,   123,   124,   125,   126,   127,     0,     0,   128,
     136,   153,     0,     0,     0,     0,     0,   337,   338,   339,
       0,   340,     0,     0,     0,     0,     0,     0,     0,     0,
       0,   141,   142,   143,   144,   145,   293,     0,   294,   295,
       0,   296,   297,   298,   299,   300,   301,   302,   303,   304,
     305,     0,   306,     0,     0,     0,  1084,  1085,     0,     0,
       0,     0,    95,    96,     0,     0,    97,     0,    98,   135,
       0,     0,     0,     0,     0,   130,     0,     0,     0,     0,
       0,     0,   164,     0,     0,     0,     0,     0,     0,     0,
     341,    99,   100,   101,   102,   103,   104,   105,   106,   107,
     108,   109,   110,   111,   112,   113,   114,   115,   116,   117,
     118,   119,   120,   121,   122,   123,   124,   125,   126,   127,
       0,     0,   128,   136,     0,     0,     0,     0,     0,     0,
     137,   138,   796,     0,   140,     0,     0,     0,     0,     0,
       0,     0,     0,     0,   141,   142,   143,   144,   145,   293,
       0,   294,   295,     0,   296,   297,   298,   299,   300,   301,
     302,   303,   304,   305,     0,   306,     0,     0,     0,  1107,
    1108,     0,     0,     0,     0,    95,    96,     0,     0,    97,
       0,    98,     0,   150,     0,     0,     0,     0,   130,     0,
       0,     0,     0,     0,     0,   598,     0,     0,     0,     0,
       0,     0,     0,   797,    99,   100,   101,   102,   103,   104,
     105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
     115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
     125,   126,   127,     0,     0,   128,     0,   153,     0,     0,
       0,     0,     0,   176,   177,   448,   293,   179,   294,   295,
       0,   296,   297,   298,   299,   300,   301,   302,   303,   304,
     305,     0,   306,     0,     0,     0,  1109,  1110,     0,     0,
     293,     0,   294,   295,     0,   296,   297,   298,   299,   300,
     301,   302,   303,   304,   305,     0,   306,     0,    95,    96,
    1196,  1197,    97,     0,    98,     0,     0,     0,     0,     0,
       0,   130,     0,     0,     0,     0,     0,     0,   449,     0,
       0,   208,   209,   210,     0,     0,   450,    99,   100,   101,
     102,   103,   104,   105,   106,   107,   108,   109,   110,   111,
     112,   113,   114,   115,   116,   117,   118,   119,   120,   121,
     122,   123,   124,   125,   126,   127,     0,     0,   128,    95,
      96,  1087,     0,    97,   293,    98,   294,   295,   129,   296,
     297,   298,   299,   300,   301,   302,   303,   304,   305,     0,
     306,     0,     0,     0,  1217,  1218,     0,     0,    99,   100,
     101,   102,   103,   104,   105,   106,   107,   108,   109,   110,
     111,   112,   113,   114,   115,   116,   117,   118,   119,   120,
     121,   122,   123,   124,   125,   126,   127,     0,     0,   128,
       0,    95,    96,  1090,   130,    97,     0,    98,     0,   129,
       0,   131,     0,     0,     0,     0,     0,     0,     0,   132,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      99,   100,   101,   102,   103,   104,   105,   106,   107,   108,
     109,   110,   111,   112,   113,   114,   115,   116,   117,   118,
     119,   120,   121,   122,   123,   124,   125,   126,   127,     0,
       0,   128,    95,    96,  1168,   130,    97,     0,    98,     0,
       0,   129,   131,     0,     0,     0,     0,     0,     0,     0,
     132,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,    99,   100,   101,   102,   103,   104,   105,   106,   107,
     108,   109,   110,   111,   112,   113,   114,   115,   116,   117,
     118,   119,   120,   121,   122,   123,   124,   125,   126,   127,
       0,     0,   128,     0,    95,    96,  1170,   130,    97,     0,
      98,     0,   129,     0,   131,     0,     0,     0,     0,     0,
       0,     0,   132,     0,     0,     0,     0,     0,     0,     0,
       0,     0,     0,    99,   100,   101,   102,   103,   104,   105,
     106,   107,   108,   109,   110,   111,   112,   113,   114,   115,
     116,   117,   118,   119,   120,   121,   122,   123,   124,   125,
     126,   127,     0,     0,   128,    95,    96,     0,   130,    97,
       0,    98,     0,     0,   129,   131,     0,     0,     0,     0,
       0,     0,     0,   132,     0,     0,     0,    80,     0,   135,
     150,     0,   152,     0,    99,   100,   101,   102,   103,   104,
     105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
     115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
     125,   126,   127,     0,     0,   128,     0,     0,     0,     0,
     130,    10,    11,     0,     0,   129,     0,   131,     0,     0,
       0,    12,     0,   136,   153,   132,   155,   156,   157,   158,
     454,   455,   865,    16,   457,    18,    19,     0,     0,    20,
      21,    22,    23,    24,   141,   142,   143,   144,   145,     0,
       0,     0,    80,     0,     0,   150,   151,   152,     0,     0,
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       0,   130,     0,     0,     0,     0,     0,     0,   131,     0,
       0,     0,     0,     0,     0,     0,   132,     0,     0,     0,
       0,     0,     0,     0,     0,   524,    10,    11,     0,     0,
       0,     0,     0,   866,     0,     0,    12,     0,     0,   153,
     154,   155,   156,   157,   158,   510,   511,   512,    16,   513,
      18,    19,     0,     0,    20,    21,    22,    23,    24,     0,
     293,     0,   294,   295,   163,   296,   297,   298,   299,   300,
     301,   302,   303,   304,   305,     0,   306,     0,     0,     0,
    1220,  1221,   293,     0,   294,   295,     0,   296,   297,   298,
     299,   300,   301,   302,   303,   304,   305,     0,   306,     0,
       0,     0,  1259,  1260,     0,     0,     0,     0,     0,     0,
     180,     0,     0,     0,   293,     0,   294,   295,   514,   296,
     297,   298,   299,   300,   301,   302,   303,   304,   305,     0,
     306,     0,     0,     0,  1285,  1286,   293,     0,   294,   295,
       0,   296,   297,   298,   299,   300,   301,   302,   303,   304,
     305,     0,   306,     0,     0,     0,  1338,  1339,   293,     0,
     294,   295,     0,   296,   297,   298,   299,   300,   301,   302,
     303,   304,   305,     0,   306,   293,     0,   294,   295,   307,
     296,   297,   298,   299,   300,   301,   302,   303,   304,   305,
       0,   306,   293,     0,   294,   295,   346,   296,   297,   298,
     299,   300,   301,   302,   303,   304,   305,     0,   306,   293,
       0,   294,   295,   372,   296,   297,   298,   299,   300,   301,
     302,   303,   304,   305,     0,   306,   293,     0,   294,   295,
     385,   296,   297,   298,   299,   300,   301,   302,   303,   304,
     305,     0,   306,   293,     0,   294,   295,   670,   296,   297,
     298,   299,   300,   301,   302,   303,   304,   305,     0,   306,
     293,     0,   294,   295,   671,   296,   297,   298,   299,   300,
     301,   302,   303,   304,   305,     0,   306,   293,     0,   294,
     295,   672,   296,   297,   298,   299,   300,   301,   302,   303,
     304,   305,     0,   306,   293,     0,   294,   295,   710,   296,
     297,   298,   299,   300,   301,   302,   303,   304,   305,     0,
     306,   293,     0,   294,   295,   716,   296,   297,   298,   299,
     300,   301,   302,   303,   304,   305,     0,   306,   293,     0,
     294,   295,   783,   296,   297,   298,   299,   300,   301,   302,
     303,   304,   305,     0,   306,   293,     0,   294,   295,   787,
     296,   297,   298,   299,   300,   301,   302,   303,   304,   305,
       0,   306,   293,     0,   294,   295,   801,   296,   297,   298,
     299,   300,   301,   302,   303,   304,   305,     0,   306,   293,
       0,   294,   295,   816,   296,   297,   298,   299,   300,   301,
     302,   303,   304,   305,     0,   306,   293,     0,   294,   295,
     823,   296,   297,   298,   299,   300,   301,   302,   303,   304,
     305,     0,   306,   293,     0,   294,   295,   835,   296,   297,
     298,   299,   300,   301,   302,   303,   304,   305,     0,   306,
     293,     0,   294,   295,   961,   296,   297,   298,   299,   300,
     301,   302,   303,   304,   305,     0,   306,   293,     0,   294,
     295,   986,   296,   297,   298,   299,   300,   301,   302,   303,
     304,   305,     0,   306,   293,     0,   294,   295,  1000,   296,
     297,   298,   299,   300,   301,   302,   303,   304,   305,     0,
     306,   293,     0,   294,   295,  1019,   296,   297,   298,   299,
     300,   301,   302,   303,   304,   305,     0,   306,   293,     0,
     294,   295,  1028,   296,   297,   298,   299,   300,   301,   302,
     303,   304,   305,     0,   306,   293,     0,   294,   295,  1030,
     296,   297,   298,   299,   300,   301,   302,   303,   304,   305,
       0,   306,   293,     0,   294,   295,  1031,   296,   297,   298,
     299,   300,   301,   302,   303,   304,   305,     0,   306,   293,
       0,   294,   295,  1055,   296,   297,   298,   299,   300,   301,
     302,   303,   304,   305,     0,   306,   293,     0,   294,   295,
    1092,   296,   297,   298,   299,   300,   301,   302,   303,   304,
     305,     0,   306,   293,     0,   294,   295,  1093,   296,   297,
     298,   299,   300,   301,   302,   303,   304,   305,     0,   306,
     293,     0,   294,   295,  1105,   296,   297,   298,   299,   300,
     301,   302,   303,   304,   305,     0,   306,   293,     0,   294,
     295,  1167,   296,   297,   298,   299,   300,   301,   302,   303,
     304,   305,     0,   306,   293,     0,   294,   295,  1208,   296,
     297,   298,   299,   300,   301,   302,   303,   304,   305,     0,
     306,   293,     0,   294,   295,  1209,   296,   297,   298,   299,
     300,   301,   302,   303,   304,   305,     0,   306,   293,     0,
     294,   295,  1247,   296,   297,   298,   299,   300,   301,   302,
     303,   304,   305,     0,   306,   293,     0,   294,   295,  1249,
     296,   297,   298,   299,   300,   301,   302,   303,   304,   305,
       0,   306,   293,     0,   294,   295,  1280,   296,   297,   298,
     299,   300,   301,   302,   303,   304,   305,     0,   306,   293,
       0,   294,   295,  1295,   296,   297,   298,   299,   300,   301,
     302,   303,   304,   305,     0,   306,   293,     0,   294,   295,
    1315,   296,   297,   298,   299,   300,   301,   302,   303,   304,
     305,     0,   306,   293,     0,   294,   295,  1317,   296,   297,
     298,   299,   300,   301,   302,   303,   304,   305,     0,   306,
     293,     0,   294,   295,  1324,   296,   297,   298,   299,   300,
     301,   302,   303,   304,   305,     0,   306,     0,     0,   293,
     405,   294,   295,     0,   296,   297,   298,   299,   300,   301,
     302,   303,   304,   305,     0,   306,     0,     0,   293,   488,
     294,   295,     0,   296,   297,   298,   299,   300,   301,   302,
     303,   304,   305,     0,   306,     0,     0,   293,   654,   294,
     295,     0,   296,   297,   298,   299,   300,   301,   302,   303,
     304,   305,     0,   306,     0,     0,   293,   655,   294,   295,
       0,   296,   297,   298,   299,   300,   301,   302,   303,   304,
     305,     0,   306,     0,     0,   293,   656,   294,   295,     0,
     296,   297,   298,   299,   300,   301,   302,   303,   304,   305,
       0,   306,     0,     0,   293,   657,   294,   295,     0,   296,
     297,   298,   299,   300,   301,   302,   303,   304,   305,     0,
     306,     0,     0,   293,   658,   294,   295,     0,   296,   297,
     298,   299,   300,   301,   302,   303,   304,   305,     0,   306,
       0,     0,   293,   659,   294,   295,     0,   296,   297,   298,
     299,   300,   301,   302,   303,   304,   305,     0,   306,     0,
       0,   293,   660,   294,   295,     0,   296,   297,   298,   299,
     300,   301,   302,   303,   304,   305,     0,   306,     0,     0,
     293,   661,   294,   295,     0,   296,   297,   298,   299,   300,
     301,   302,   303,   304,   305,     0,   306,     0,     0,   293,
     662,   294,   295,     0,   296,   297,   298,   299,   300,   301,
     302,   303,   304,   305,     0,   306,     0,     0,   293,   663,
     294,   295,     0,   296,   297,   298,   299,   300,   301,   302,
     303,   304,   305,     0,   306,     0,     0,   293,   664,   294,
     295,     0,   296,   297,   298,   299,   300,   301,   302,   303,
     304,   305,     0,   306,     0,     0,   293,   665,   294,   295,
       0,   296,   297,   298,   299,   300,   301,   302,   303,   304,
     305,     0,   306,     0,     0,   293,   666,   294,   295,     0,
     296,   297,   298,   299,   300,   301,   302,   303,   304,   305,
       0,   306,     0,     0,   293,   667,   294,   295,     0,   296,
     297,   298,   299,   300,   301,   302,   303,   304,   305,     0,
     306,     0,     0,   293,   668,   294,   295,     0,   296,   297,
     298,   299,   300,   301,   302,   303,   304,   305,     0,   306,
       0,     0,   293,   669,   294,   295,     0,   296,   297,   298,
     299,   300,   301,   302,   303,   304,   305,     0,   306,     0,
       0,   293,   740,   294,   295,     0,   296,   297,   298,   299,
     300,   301,   302,   303,   304,   305,     0,   306,     0,     0,
     293,   741,   294,   295,     0,   296,   297,   298,   299,   300,
     301,   302,   303,   304,   305,     0,   306,     0,     0,   293,
     771,   294,   295,     0,   296,   297,   298,   299,   300,   301,
     302,   303,   304,   305,     0,   306,     0,     0,   293,   772,
     294,   295,     0,   296,   297,   298,   299,   300,   301,   302,
     303,   304,   305,     0,   306,     0,     0,   293,   774,   294,
     295,     0,   296,   297,   298,   299,   300,   301,   302,   303,
     304,   305,     0,   306,     0,     0,   293,   984,   294,   295,
       0,   296,   297,   298,   299,   300,   301,   302,   303,   304,
     305,     0,   306,     0,     0,   293,   985,   294,   295,     0,
     296,   297,   298,   299,   300,   301,   302,   303,   304,   305,
       0,   306,     0,     0,   293,  1005,   294,   295,     0,   296,
     297,   298,   299,   300,   301,   302,   303,   304,   305,     0,
     306,     0,     0,   293,  1023,   294,   295,     0,   296,   297,
     298,   299,   300,   301,   302,   303,   304,   305,     0,   306,
       0,     0,   293,  1050,   294,   295,     0,   296,   297,   298,
     299,   300,   301,   302,   303,   304,   305,     0,   306,     0,
       0,   293,  1056,   294,   295,     0,   296,   297,   298,   299,
     300,   301,   302,   303,   304,   305,     0,   306,     0,     0,
     293,  1072,   294,   295,     0,   296,   297,   298,   299,   300,
     301,   302,   303,   304,   305,     0,   306,     0,     0,   293,
    1083,   294,   295,     0,   296,   297,   298,   299,   300,   301,
     302,   303,   304,   305,     0,   306,     0,     0,   293,  1193,
     294,   295,     0,   296,   297,   298,   299,   300,   301,   302,
     303,   304,   305,     0,   306,     0,     0,   293,  1199,   294,
     295,     0,   296,   297,   298,   299,   300,   301,   302,   303,
     304,   305,     0,   306,     0,     0,   293,  1205,   294,   295,
       0,   296,   297,   298,   299,   300,   301,   302,   303,   304,
     305,     0,   306,     0,     0,   293,  1206,   294,   295,     0,
     296,   297,   298,   299,   300,   301,   302,   303,   304,   305,
       0,   306,     0,     0,   293,  1213,   294,   295,     0,   296,
     297,   298,   299,   300,   301,   302,   303,   304,   305,     0,
     306,     0,     0,   293,  1214,   294,   295,     0,   296,   297,
     298,   299,   300,   301,   302,   303,   304,   305,     0,   306,
       0,     0,   293,  1215,   294,   295,     0,   296,   297,   298,
     299,   300,   301,   302,   303,   304,   305,     0,   306,     0,
       0,   293,  1297,   294,   295,     0,   296,   297,   298,   299,
     300,   301,   302,   303,   304,   305,     0,   306,     0,     0,
     293,  1301,   294,   295,     0,   296,   297,   298,   299,   300,
     301,   302,   303,   304,   305,     0,   306,     0,     0,   293,
    1312,   294,   295,     0,   296,   297,   298,   299,   300,   301,
     302,   303,   304,   305,     0,   306,     0,     0,     0,  1360
};

static const short yycheck[] =
{
       0,    43,   390,  1071,   392,     0,   394,     5,   396,    94,
       3,   144,   136,   137,   138,   139,   144,   142,     6,     7,
       8,     9,    10,    11,    12,    13,   151,   145,   146,     8,
     136,   137,   138,   139,   145,   146,   121,    79,     5,   145,
     146,   144,    21,    22,    23,    24,    25,   144,   138,   139,
      92,   141,   145,   146,    11,    55,    56,    57,    58,    59,
     138,   139,    62,    63,     6,     7,     8,     9,    10,    11,
      12,    13,   144,    52,    53,    75,   144,    77,   145,   146,
      24,    23,  1246,    62,  1248,    29,    30,    31,    88,   145,
     146,    91,    71,    72,    73,    74,    75,    76,    77,     5,
       6,    80,    81,    82,    83,    84,   145,   146,    65,   144,
      52,    53,   145,   146,    71,    72,    73,   144,    75,   144,
      62,     6,     7,     8,     9,    10,    11,    12,    13,    71,
      72,    73,    74,    75,    76,    77,   124,   144,    80,    81,
      82,    83,    84,   136,   145,   146,   144,   142,   145,   146,
      56,    57,     5,     6,   144,   143,   145,   146,   100,   101,
     136,   137,   138,   139,   144,   144,  1330,   145,   146,  1237,
     146,   113,   114,   115,   116,   117,   118,   119,   120,   136,
     122,   123,  1346,  1347,     3,     4,     5,   144,     7,     8,
       9,    10,    11,    12,    13,   136,   137,   138,   139,    26,
      27,    28,   144,    56,    57,   146,   148,   113,    14,    15,
      16,    17,   254,    32,    33,    34,    35,    36,    37,    38,
      39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
      49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
      59,    60,   144,    62,    63,    64,    65,    66,    67,    68,
      69,    70,    71,    72,    73,    74,    75,    76,    77,   142,
     113,    80,    81,    82,    83,    84,    85,    86,    87,    88,
      89,    90,    18,    19,    20,   145,   146,   277,   278,   144,
     280,   281,    15,    16,   144,    75,   286,   144,    21,   145,
     146,    12,    13,   144,    27,    28,    29,    30,    31,   145,
     146,    91,     6,     7,     8,     9,    10,    11,    12,    13,
     129,   144,   312,   136,   137,   138,   139,   136,   144,   319,
     320,   321,     5,   146,   144,   144,   326,   327,   328,   329,
     330,   331,   136,   137,   138,   139,   336,   141,   145,   146,
       8,   131,   132,   145,   146,    66,    67,    68,    69,    70,
      71,    72,    73,   353,    75,   355,   136,   137,   138,   139,
     144,    94,   145,   146,   145,   145,   144,   367,   368,    90,
      13,   145,   146,   144,   164,   165,   144,   419,   378,   379,
     380,   381,   382,   383,   384,   385,   144,   387,   388,   145,
     146,   145,   146,   144,    98,   145,   146,   144,   398,   399,
     400,   401,   402,   151,     3,     4,     5,   144,     7,     8,
       9,   146,    11,   136,   137,   138,   139,   805,   145,   146,
     144,   809,   145,   144,    67,    68,    69,    70,    71,    72,
      73,   221,    75,    32,    33,    34,    35,    36,    37,    38,
      39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
      49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
      59,    60,   144,    62,    63,   144,    65,   145,   146,   145,
     146,    10,    71,    72,    73,    74,    75,    76,    77,   145,
     146,    80,    81,    82,    83,    84,   144,   277,   278,   279,
     144,   281,   145,   146,   145,   146,   144,   287,   145,   146,
     144,   144,   136,   137,   138,   139,   145,   146,   144,     8,
     145,   145,   145,   146,   304,   145,   146,   144,   308,   309,
     310,   145,   146,   145,   146,    64,   144,    26,    27,    28,
     129,   144,    71,    72,    73,   144,    75,   136,   145,   146,
     145,   146,   145,   146,   334,   144,    85,    86,    87,    88,
      89,   341,   144,    52,    53,   144,   144,   144,   144,   144,
     144,   351,     8,    62,    10,    11,    12,    13,   144,   144,
     144,   144,    71,    72,    73,    74,    75,    76,    77,   144,
     144,    80,    81,    82,    83,    84,   144,   144,   144,   379,
     380,   144,   144,   383,    12,   144,   144,   136,   144,   136,
     137,   138,   139,   144,   144,   144,    52,    53,   145,   144,
     144,   653,   144,   144,   144,   141,    62,   146,    64,    65,
      66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
      76,    77,   632,   144,    80,    81,    82,    83,    84,    85,
      86,    87,    88,    89,    90,   144,   144,   144,    66,   144,
     144,   144,   442,    71,    72,    73,   144,    75,   144,   449,
     450,   136,   137,   138,   139,   144,   144,   149,   458,   146,
     145,   144,    90,   673,   674,   675,   146,   146,   146,   146,
     146,  1069,   146,   683,   684,   685,   686,   687,   688,  1077,
     136,  1079,   482,   136,   137,   138,   139,  1085,   144,   146,
     144,   146,   145,   144,   144,   144,   706,   707,   708,   709,
     144,   711,   144,   136,   137,   138,   139,   717,   718,   719,
     720,   721,   145,   144,   146,   145,   144,   727,   728,   145,
     730,   731,   732,   733,   734,   735,   736,   737,   136,   137,
     138,   139,   742,   743,   744,   745,   746,   145,   748,   749,
       6,     7,     8,     9,    10,    11,    12,    13,   146,   146,
     760,   761,   762,   763,   764,   765,   766,   145,   145,   136,
     137,   138,   139,   145,     8,   145,    10,    11,   145,   569,
     146,   144,   782,   783,   144,   785,   144,   136,   137,   138,
     139,   144,   792,   793,   794,   795,   145,   144,   798,   799,
     800,   144,    10,   144,    12,   805,   146,   144,   598,   599,
     144,   144,   144,     3,   604,   146,   146,   144,    52,    53,
     820,   144,    78,    79,   144,   144,    82,   145,    62,   144,
      64,    65,   144,   144,   150,   145,   145,    71,    72,    73,
      74,    75,    76,    77,   145,  1233,    80,    81,    82,    83,
      84,    85,    86,    87,    88,    89,    64,   144,    66,   136,
     137,   138,   139,    71,    72,    73,   146,    75,   145,   144,
     144,    51,   144,   144,    54,   144,   146,    85,    86,    87,
      88,    89,    90,   146,   145,   675,   145,    67,   145,   144,
     680,    71,   146,   144,    74,    75,   686,   144,    78,   144,
     690,   144,   136,   145,     8,   146,   145,    11,   145,   144,
     144,    91,   144,   136,   137,   138,   139,   144,   708,   144,
     144,  1309,   145,   136,   137,   138,   139,   145,   136,   144,
     144,   721,   145,   144,   144,   725,   144,   146,   145,     6,
       7,     8,     9,    10,    11,    12,    13,   145,    52,    53,
     130,   131,   132,   145,   145,  1343,   746,   144,    62,   144,
     960,    65,   144,   144,   754,   755,   756,    71,    72,    73,
      74,    75,    76,    77,   145,   144,    80,    81,    82,    83,
      84,   144,   982,   144,   164,   165,   146,   145,   145,   989,
     146,   991,   146,   993,   994,   146,   132,   133,   134,   135,
     136,   137,   138,   139,   794,   141,   146,   797,   146,   146,
     800,   144,   146,   144,   146,  1015,  1016,  1017,   146,   134,
     135,   136,   137,   138,   139,  1025,   141,    54,    95,    96,
      97,   144,   136,    60,   146,   146,   146,   146,    65,    66,
     144,   221,   144,   146,   144,   144,   144,  1047,    75,   146,
      77,   146,   146,   146,  1054,   146,   146,   146,   146,   146,
     146,   851,   146,  1063,    91,   146,   146,   146,   146,  1069,
     146,   146,   146,   146,   146,   145,   145,   257,   258,   259,
     260,   261,   262,   263,   264,   265,   266,   267,   268,   269,
     270,   271,   272,   273,   274,   275,   145,   277,   278,   279,
     146,   281,   146,   145,   144,   146,   286,   287,   146,   144,
     144,     8,  1112,   293,   294,   295,   296,   297,   298,   299,
     300,   301,   302,   303,   304,   305,   306,   307,   308,   309,
     310,   311,   144,   144,     5,   144,   146,   164,   146,   929,
     146,   146,   145,   145,   324,   325,   145,   143,   146,   146,
     145,   145,   144,   180,   334,    52,    53,   144,   144,   144,
      99,   341,   146,   146,   144,    62,   346,   347,   348,   144,
     350,   351,   144,   144,    71,    72,    73,    74,    75,    76,
      77,   146,   143,    80,    81,    82,    83,    84,   368,   145,
     144,   146,   372,   146,   145,   145,   145,   377,   145,   379,
     380,   144,   144,   383,   145,   385,   146,   145,   145,   145,
     145,   145,   145,   145,   144,   146,   396,   397,  1218,   145,
     145,   145,   145,     5,   146,   146,   406,   146,   145,   145,
     145,   411,   146,  1233,     6,     7,     8,     9,    10,    11,
      12,    13,   146,   145,   145,   145,   145,   144,     5,    10,
      11,   146,   279,   146,   281,   146,   146,   145,   145,   286,
     145,   145,   442,   146,   145,     0,   146,   146,   146,   449,
     450,   145,   145,   145,     5,   145,   145,   145,   458,   145,
     145,   145,    38,   146,   145,   312,   145,    88,   146,   145,
     317,   318,   145,   145,   321,   145,   145,   145,   145,   145,
     145,   145,   482,    64,    65,   332,   333,   334,   335,  1309,
      71,    72,    73,   145,    75,   145,  1106,   145,   145,    91,
      92,    93,    94,   145,    85,    86,    87,    88,    89,   356,
     357,   358,   359,   145,     8,   145,    10,   145,   145,  1339,
     146,   130,   131,   132,   133,   134,   135,   136,   137,   138,
     139,   378,   141,   146,   381,   382,   383,   384,   385,   102,
     103,   104,   105,   106,   107,   108,   109,   110,   111,   112,
     145,   398,   399,   400,   401,   136,   145,   145,    52,    53,
     145,   145,   145,   144,   146,  1086,   146,   145,    62,   569,
      64,   146,   145,   145,   145,   145,   145,    71,    72,    73,
      74,    75,    76,    77,   145,   145,    80,    81,    82,    83,
      84,    85,    86,    87,    88,    89,   146,   145,   598,   599,
     145,   145,   449,   125,   604,   127,   128,   145,   130,   131,
     132,   133,   134,   135,   136,   137,   138,   139,   145,   141,
     145,   145,   145,   145,   146,   147,   145,   960,   146,     8,
     145,   349,   632,    12,   634,   145,   145,   145,   145,   145,
      93,   146,   136,   146,   145,   145,   646,   647,   648,   649,
     144,   125,   126,   127,   128,   145,   130,   131,   132,   133,
     134,   135,   136,   137,   138,   139,   146,   141,   145,   145,
     670,   671,   672,    52,    53,   675,   394,   524,   145,   397,
     680,    -1,    -1,    62,    -1,    -1,   686,    66,    -1,    -1,
     690,    -1,    71,    72,    73,    74,    75,    76,    77,    -1,
      -1,    80,    81,    82,    83,    84,    -1,    -1,   708,    -1,
     710,    90,    -1,    -1,    -1,   715,   716,    -1,    -1,    -1,
     567,   568,   569,   570,   724,   725,    -1,   125,    -1,   127,
     128,    -1,   130,   131,   132,   133,   134,   135,   136,   137,
     138,   139,    -1,   141,    -1,    -1,   746,   145,   748,   147,
     750,   751,   752,    -1,   754,   755,   756,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,   144,   125,   767,   127,   128,
      -1,   130,   131,   132,   133,   134,   135,   136,   137,   138,
     139,   781,   141,    -1,    -1,    -1,   145,   787,   147,   789,
     790,   791,    -1,    -1,   794,    -1,    -1,   797,    -1,    -1,
     800,    -1,   802,   803,    -1,    -1,    -1,   807,    -1,    -1,
      54,    -1,    -1,    -1,    -1,    -1,   816,    61,    -1,    -1,
      -1,    -1,   822,   823,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    75,    -1,   680,   834,   835,    -1,   684,   685,   686,
     687,    -1,    -1,    -1,    -1,    -1,    -1,    91,    -1,    -1,
      -1,   851,   852,   853,    -1,    -1,    -1,    -1,    -1,   706,
     707,   708,   709,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     717,   718,   719,   720,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,   729,    -1,    -1,    -1,    -1,    -1,   125,   736,
     127,   128,    -1,   130,   131,   132,   133,   134,   135,   136,
     137,   138,   139,    -1,   141,    -1,   753,    -1,   145,   146,
     147,   125,    -1,   127,   128,    -1,   130,   131,   132,   133,
     134,   135,   136,   137,   138,   139,    -1,   141,   646,   929,
     648,   649,   146,   147,   125,    -1,   127,   128,    -1,   130,
     131,   132,   133,   134,   135,   136,   137,   138,   139,    -1,
     141,   798,   799,   800,   145,   146,   147,    -1,   958,    -1,
     960,   961,    -1,    -1,    -1,    -1,    -1,    -1,   968,    -1,
      -1,    -1,    -1,   973,    -1,    -1,   976,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,   986,    -1,    -1,    -1,
      -1,    -1,   710,    -1,    -1,    -1,   714,    -1,    -1,    -1,
    1000,    -1,    -1,   721,    -1,   723,   125,    -1,   127,   128,
    1010,   130,   131,   132,   133,   134,   135,   136,   137,   138,
     139,    -1,   141,    -1,    -1,    -1,  1026,  1027,   147,   747,
    1030,  1031,   276,    -1,    -1,    -1,    -1,    -1,   282,    -1,
      -1,    -1,    -1,    -1,  1044,  1045,  1046,    -1,    -1,    54,
      -1,    -1,  1052,    -1,    -1,  1055,    61,    -1,    -1,    -1,
     778,  1061,  1062,    -1,    -1,    -1,    -1,    -1,   312,    -1,
      75,    -1,   790,   791,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,   326,    -1,   802,   803,    91,    -1,   332,   333,
     334,   335,  1092,  1093,    -1,    -1,   814,    -1,    -1,    -1,
     818,    -1,    52,    53,    54,  1105,  1106,    -1,  1108,    -1,
      -1,    -1,    -1,    -1,    64,    -1,    -1,   361,   362,   363,
     364,    -1,    -1,    -1,    -1,    75,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,   381,   382,   383,
     384,    91,    -1,    -1,    -1,    -1,   993,    10,    11,    12,
      13,    -1,   125,    -1,   127,   128,    -1,   130,   131,   132,
     133,   134,   135,   136,   137,   138,   139,  1167,   141,    -1,
     414,    -1,   125,  1173,   127,   128,    -1,   130,   131,   132,
     133,   134,   135,   136,   137,   138,   139,    -1,   141,    -1,
      -1,  1191,   145,   146,   147,    -1,   146,  1197,    -1,    -1,
      -1,    64,    65,    66,    67,    68,    69,    70,    71,    72,
      73,    -1,    75,    -1,   164,    -1,  1063,    -1,    -1,    -1,
      -1,  1221,    85,    86,    87,    88,    89,    90,  1228,  1229,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    1240,    -1,    -1,    -1,    -1,    -1,    -1,  1247,    -1,  1249,
     968,   969,    -1,   971,    -1,   973,    -1,    -1,   976,    -1,
      -1,    -1,    -1,  1263,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,   276,    -1,   136,    -1,    -1,   281,    -1,   283,   284,
     285,   144,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,  1009,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    1300,  1019,    -1,    -1,    -1,    -1,   125,   312,   127,   128,
    1028,   130,   131,   132,   133,   134,   135,   136,   137,   138,
     139,  1039,   141,  1041,    -1,  1043,   145,   332,   333,   334,
     335,   281,    -1,    -1,    -1,    -1,   286,    -1,    -1,  1057,
      -1,  1059,    -1,  1061,  1062,    -1,  1064,    -1,  1066,    -1,
      -1,    -1,    -1,    -1,    -1,  1355,   361,   362,   363,   364,
      -1,    -1,    -1,   313,   314,   315,   316,   317,   318,    -1,
      -1,   321,    -1,    -1,    -1,    -1,   381,   382,   383,   384,
      -1,    -1,   332,   333,   334,   335,    -1,  1105,    -1,    -1,
      -1,    -1,  1110,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,   352,    -1,   354,    -1,    -1,   412,   413,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   369,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   379,
     380,   381,   382,   383,   384,   128,    -1,   130,   131,   132,
     133,   134,   135,   136,   137,   138,   139,    -1,   141,    -1,
     694,   695,   696,   697,    -1,    -1,    -1,  1175,    -1,    -1,
      -1,  1179,    -1,  1181,   414,  1183,    -1,  1185,    -1,    -1,
      -1,    -1,    -1,   717,   718,   719,   720,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    1208,  1209,    -1,    -1,    -1,    -1,    -1,    -1,   742,   743,
     744,   745,    -1,    -1,    -1,    -1,  1224,    -1,  1226,   753,
    1228,  1229,   125,    -1,   127,   128,    -1,   130,   131,   132,
     133,   134,   135,   136,   137,   138,   139,    -1,   141,    -1,
      -1,    -1,   145,   146,   147,    -1,    -1,    -1,  1256,    -1,
      -1,    -1,  1260,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     125,    -1,   127,   128,   798,   130,   131,   132,   133,   134,
     135,   136,   137,   138,   139,    -1,   141,    -1,  1286,    -1,
    1288,   146,   147,    -1,   524,    -1,    -1,  1295,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,  1304,    -1,  1306,    -1,
      -1,    -1,    -1,    -1,   838,   839,   840,   841,   842,   843,
      -1,    -1,    -1,  1321,    -1,    -1,  1324,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,   567,   568,   569,
     570,   125,    -1,   127,   128,    -1,   130,   131,   132,   133,
     134,   135,   136,   137,   138,   139,    -1,   141,    -1,    -1,
      -1,   145,   146,   147,   125,    -1,   127,   128,   598,   130,
     131,   132,   133,   134,   135,   136,   137,   138,   139,    -1,
     141,    -1,    -1,    -1,    -1,   146,   147,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   684,
     685,   686,   687,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,   699,   700,   701,   702,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,   717,   718,   719,   720,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,   683,   684,   685,   686,   687,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   753,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,   706,   707,   708,   709,
      -1,   125,    -1,   127,   128,    -1,   130,   131,   132,   133,
     134,   135,   136,   137,   138,   139,   726,   141,    -1,   729,
      -1,    -1,   146,   147,    -1,    -1,   736,    -1,   738,    -1,
      -1,    -1,    -1,   798,    -1,    -1,    -1,    -1,    -1,   749,
     750,    -1,    -1,   753,    -1,    -1,    -1,   757,   758,   759,
     125,    -1,   127,   128,    -1,   130,   131,   132,   133,   134,
     135,   136,   137,   138,   139,    -1,   141,    -1,    -1,    -1,
     780,   146,   147,    -1,    -1,    -1,    -1,   842,    -1,    -1,
      -1,    -1,   792,   793,   794,   795,    -1,    -1,   798,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,     3,     4,    -1,    -1,     7,     8,     9,
      10,    11,    12,    13,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   838,   839,
     840,   841,    32,    33,    34,    35,    36,    37,    38,    39,
      40,    41,    42,    43,    44,    45,    46,    47,    48,    49,
      50,    51,    52,    53,    54,    55,    56,    57,    58,    59,
      60,    -1,    62,    63,    64,    65,    66,    67,    68,    69,
      70,    71,    72,    73,    74,    75,    76,    77,    -1,    -1,
      80,    81,    82,    83,    84,    85,    86,    87,    88,    89,
      90,   125,    -1,   127,   128,    -1,   130,   131,   132,   133,
     134,   135,   136,   137,   138,   139,    -1,   141,    -1,    -1,
      -1,    -1,   146,   147,    -1,    -1,    -1,    -1,    -1,   929,
      -1,    -1,    -1,    -1,   124,    -1,    -1,    -1,   993,   129,
      -1,    -1,    -1,    -1,    -1,    -1,   136,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,   144,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,     3,     4,    -1,    -1,     7,
       8,     9,    10,    11,    12,    13,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   989,
      -1,    -1,    -1,   993,    32,    33,    34,    35,    36,    37,
      38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
      48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
      58,    59,    60,    -1,    62,    63,    64,    65,    66,    67,
      68,    69,    70,    71,    72,    73,    74,    75,    76,    77,
      -1,    -1,    80,    81,    82,    83,    84,    85,    86,    87,
      88,    89,    90,   125,    -1,   127,   128,    -1,   130,   131,
     132,   133,   134,   135,   136,   137,   138,   139,    -1,   141,
      -1,    -1,    -1,    -1,   146,   147,    -1,    -1,     3,     4,
      -1,    -1,     7,     8,     9,    10,    11,    -1,    13,    -1,
      -1,   129,    -1,    -1,    -1,    -1,    -1,    -1,   136,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,   144,    32,    33,    34,
      35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
      55,    56,    57,    58,    59,    60,    -1,    62,    63,    64,
      65,    -1,    67,    68,    69,    70,    71,    72,    73,    74,
      75,    76,    77,    -1,    -1,    80,    81,    82,    83,    84,
      85,    86,    87,    88,    89,   125,    -1,   127,   128,    -1,
     130,   131,   132,   133,   134,   135,   136,   137,   138,   139,
      -1,   141,    -1,    -1,    -1,    -1,   146,   147,    -1,    -1,
      -1,     3,     4,    -1,    -1,     7,     8,     9,    10,    11,
      -1,    -1,    -1,    -1,   129,    -1,    -1,    -1,    -1,    -1,
      -1,   136,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   144,
      32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
      42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
      52,    53,    54,    55,    56,    57,    58,    59,    60,    -1,
      62,    63,    64,    65,    -1,    -1,    -1,    -1,    -1,    71,
      72,    73,    74,    75,    76,    77,    -1,    -1,    80,    81,
      82,    83,    84,    85,    86,    87,    88,    89,   125,    -1,
     127,   128,    -1,   130,   131,   132,   133,   134,   135,   136,
     137,   138,   139,    -1,   141,    -1,    -1,    -1,    -1,   146,
     147,    -1,    -1,    -1,     3,     4,    -1,    -1,     7,    -1,
       9,    10,    11,    12,    13,    -1,    -1,   129,    -1,    -1,
      -1,    -1,    -1,    -1,   136,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,   144,    32,    33,    34,    35,    36,    37,    38,
      39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
      49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
      59,    60,    -1,    -1,    63,    64,    65,    66,    67,    68,
      69,    70,    71,    72,    73,    -1,    75,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    85,    86,    87,    88,
      89,    90,   125,    -1,   127,   128,    -1,   130,   131,   132,
     133,   134,   135,   136,   137,   138,   139,    -1,   141,    -1,
      -1,    -1,    -1,   146,   147,    -1,    -1,     3,     4,    -1,
      -1,     7,     8,     9,    10,    -1,    -1,    -1,    -1,    -1,
     129,    -1,    -1,    -1,    -1,    -1,    -1,   136,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,   144,    32,    33,    34,    35,
      36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
      46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
      56,    57,    58,    59,    60,    -1,    62,    63,    64,    -1,
      -1,    -1,    -1,    -1,    -1,    71,    72,    73,    74,    75,
      76,    77,    -1,    -1,    80,    81,    82,    83,    84,    85,
      86,    87,    88,    89,   125,    -1,   127,   128,    -1,   130,
     131,   132,   133,   134,   135,   136,   137,   138,   139,    -1,
     141,    -1,    -1,    -1,   145,   146,    -1,    -1,    -1,    -1,
       3,     4,    -1,    -1,     7,     8,     9,    -1,    11,    -1,
      -1,    -1,    -1,   129,    -1,    -1,    -1,    -1,    -1,    -1,
     136,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   144,    32,
      33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
      43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
      53,    54,    55,    56,    57,    58,    59,    60,    -1,    62,
      63,    -1,    65,    -1,    -1,    -1,    -1,    -1,    71,    72,
      73,    74,    75,    76,    77,    -1,    -1,    80,    81,    82,
      83,    84,   125,    -1,   127,   128,    -1,   130,   131,   132,
     133,   134,   135,   136,   137,   138,   139,    -1,   141,    -1,
      -1,    -1,   145,   146,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,     3,     4,     5,    -1,     7,     8,     9,
      -1,    -1,    -1,    -1,    -1,    -1,   129,    -1,    -1,    -1,
      -1,    -1,    -1,   136,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,   144,    32,    33,    34,    35,    36,    37,    38,    39,
      40,    41,    42,    43,    44,    45,    46,    47,    48,    49,
      50,    51,    52,    53,    54,    55,    56,    57,    58,    59,
      60,    -1,    62,    63,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    71,    72,    73,    74,    75,    76,    77,    -1,    -1,
      80,    81,    82,    83,    84,   125,    -1,   127,   128,    -1,
     130,   131,   132,   133,   134,   135,   136,   137,   138,   139,
      -1,   141,    -1,    -1,    -1,   145,   146,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,     3,     4,    -1,    -1,
       7,     8,     9,    -1,    -1,    -1,    -1,    -1,    -1,   129,
      -1,    -1,    -1,    -1,    -1,    -1,   136,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,   144,    32,    33,    34,    35,    36,
      37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
      47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
      57,    58,    59,    60,    -1,    62,    63,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    71,    72,    73,    74,    75,    76,
      77,    -1,    -1,    80,    81,    82,    83,    84,   125,    -1,
     127,   128,    -1,   130,   131,   132,   133,   134,   135,   136,
     137,   138,   139,    -1,   141,    -1,    -1,    -1,   145,   146,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     3,
       4,    -1,    -1,     7,    -1,     9,    10,    11,    -1,    -1,
      -1,    -1,   129,    -1,    -1,    -1,    -1,    -1,    -1,   136,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,   144,    32,    33,
      34,    35,    36,    37,    38,    39,    40,    41,    42,    43,
      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
      54,    55,    56,    57,    58,    59,    60,    -1,    -1,    63,
      64,    65,    -1,    -1,    -1,    -1,    -1,    71,    72,    73,
      -1,    75,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    85,    86,    87,    88,    89,   125,    -1,   127,   128,
      -1,   130,   131,   132,   133,   134,   135,   136,   137,   138,
     139,    -1,   141,    -1,    -1,    -1,   145,   146,    -1,    -1,
      -1,    -1,     3,     4,    -1,    -1,     7,    -1,     9,    10,
      -1,    -1,    -1,    -1,    -1,   129,    -1,    -1,    -1,    -1,
      -1,    -1,   136,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     144,    32,    33,    34,    35,    36,    37,    38,    39,    40,
      41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
      51,    52,    53,    54,    55,    56,    57,    58,    59,    60,
      -1,    -1,    63,    64,    -1,    -1,    -1,    -1,    -1,    -1,
      71,    72,    73,    -1,    75,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    85,    86,    87,    88,    89,   125,
      -1,   127,   128,    -1,   130,   131,   132,   133,   134,   135,
     136,   137,   138,   139,    -1,   141,    -1,    -1,    -1,   145,
     146,    -1,    -1,    -1,    -1,     3,     4,    -1,    -1,     7,
      -1,     9,    -1,    11,    -1,    -1,    -1,    -1,   129,    -1,
      -1,    -1,    -1,    -1,    -1,   136,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,   144,    32,    33,    34,    35,    36,    37,
      38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
      48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
      58,    59,    60,    -1,    -1,    63,    -1,    65,    -1,    -1,
      -1,    -1,    -1,    71,    72,    73,   125,    75,   127,   128,
      -1,   130,   131,   132,   133,   134,   135,   136,   137,   138,
     139,    -1,   141,    -1,    -1,    -1,   145,   146,    -1,    -1,
     125,    -1,   127,   128,    -1,   130,   131,   132,   133,   134,
     135,   136,   137,   138,   139,    -1,   141,    -1,     3,     4,
     145,   146,     7,    -1,     9,    -1,    -1,    -1,    -1,    -1,
      -1,   129,    -1,    -1,    -1,    -1,    -1,    -1,   136,    -1,
      -1,    26,    27,    28,    -1,    -1,   144,    32,    33,    34,
      35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
      55,    56,    57,    58,    59,    60,    -1,    -1,    63,     3,
       4,     5,    -1,     7,   125,     9,   127,   128,    73,   130,
     131,   132,   133,   134,   135,   136,   137,   138,   139,    -1,
     141,    -1,    -1,    -1,   145,   146,    -1,    -1,    32,    33,
      34,    35,    36,    37,    38,    39,    40,    41,    42,    43,
      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
      54,    55,    56,    57,    58,    59,    60,    -1,    -1,    63,
      -1,     3,     4,     5,   129,     7,    -1,     9,    -1,    73,
      -1,   136,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   144,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
      42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
      52,    53,    54,    55,    56,    57,    58,    59,    60,    -1,
      -1,    63,     3,     4,     5,   129,     7,    -1,     9,    -1,
      -1,    73,   136,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     144,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    32,    33,    34,    35,    36,    37,    38,    39,    40,
      41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
      51,    52,    53,    54,    55,    56,    57,    58,    59,    60,
      -1,    -1,    63,    -1,     3,     4,     5,   129,     7,    -1,
       9,    -1,    73,    -1,   136,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,   144,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,    32,    33,    34,    35,    36,    37,    38,
      39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
      49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
      59,    60,    -1,    -1,    63,     3,     4,    -1,   129,     7,
      -1,     9,    -1,    -1,    73,   136,    -1,    -1,    -1,    -1,
      -1,    -1,    -1,   144,    -1,    -1,    -1,     8,    -1,    10,
      11,    -1,    13,    -1,    32,    33,    34,    35,    36,    37,
      38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
      48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
      58,    59,    60,    -1,    -1,    63,    -1,    -1,    -1,    -1,
     129,    52,    53,    -1,    -1,    73,    -1,   136,    -1,    -1,
      -1,    62,    -1,    64,    65,   144,    67,    68,    69,    70,
      71,    72,    73,    74,    75,    76,    77,    -1,    -1,    80,
      81,    82,    83,    84,    85,    86,    87,    88,    89,    -1,
      -1,    -1,     8,    -1,    -1,    11,    12,    13,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      -1,   129,    -1,    -1,    -1,    -1,    -1,    -1,   136,    -1,
      -1,    -1,    -1,    -1,    -1,    -1,   144,    -1,    -1,    -1,
      -1,    -1,    -1,    -1,    -1,   136,    52,    53,    -1,    -1,
      -1,    -1,    -1,   144,    -1,    -1,    62,    -1,    -1,    65,
      66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
      76,    77,    -1,    -1,    80,    81,    82,    83,    84,    -1,
     125,    -1,   127,   128,    90,   130,   131,   132,   133,   134,
     135,   136,   137,   138,   139,    -1,   141,    -1,    -1,    -1,
     145,   146,   125,    -1,   127,   128,    -1,   130,   131,   132,
     133,   134,   135,   136,   137,   138,   139,    -1,   141,    -1,
      -1,    -1,   145,   146,    -1,    -1,    -1,    -1,    -1,    -1,
     136,    -1,    -1,    -1,   125,    -1,   127,   128,   144,   130,
     131,   132,   133,   134,   135,   136,   137,   138,   139,    -1,
     141,    -1,    -1,    -1,   145,   146,   125,    -1,   127,   128,
      -1,   130,   131,   132,   133,   134,   135,   136,   137,   138,
     139,    -1,   141,    -1,    -1,    -1,   145,   146,   125,    -1,
     127,   128,    -1,   130,   131,   132,   133,   134,   135,   136,
     137,   138,   139,    -1,   141,   125,    -1,   127,   128,   146,
     130,   131,   132,   133,   134,   135,   136,   137,   138,   139,
      -1,   141,   125,    -1,   127,   128,   146,   130,   131,   132,
     133,   134,   135,   136,   137,   138,   139,    -1,   141,   125,
      -1,   127,   128,   146,   130,   131,   132,   133,   134,   135,
     136,   137,   138,   139,    -1,   141,   125,    -1,   127,   128,
     146,   130,   131,   132,   133,   134,   135,   136,   137,   138,
     139,    -1,   141,   125,    -1,   127,   128,   146,   130,   131,
     132,   133,   134,   135,   136,   137,   138,   139,    -1,   141,
     125,    -1,   127,   128,   146,   130,   131,   132,   133,   134,
     135,   136,   137,   138,   139,    -1,   141,   125,    -1,   127,
     128,   146,   130,   131,   132,   133,   134,   135,   136,   137,
     138,   139,    -1,   141,   125,    -1,   127,   128,   146,   130,
     131,   132,   133,   134,   135,   136,   137,   138,   139,    -1,
     141,   125,    -1,   127,   128,   146,   130,   131,   132,   133,
     134,   135,   136,   137,   138,   139,    -1,   141,   125,    -1,
     127,   128,   146,   130,   131,   132,   133,   134,   135,   136,
     137,   138,   139,    -1,   141,   125,    -1,   127,   128,   146,
     130,   131,   132,   133,   134,   135,   136,   137,   138,   139,
      -1,   141,   125,    -1,   127,   128,   146,   130,   131,   132,
     133,   134,   135,   136,   137,   138,   139,    -1,   141,   125,
      -1,   127,   128,   146,   130,   131,   132,   133,   134,   135,
     136,   137,   138,   139,    -1,   141,   125,    -1,   127,   128,
     146,   130,   131,   132,   133,   134,   135,   136,   137,   138,
     139,    -1,   141,   125,    -1,   127,   128,   146,   130,   131,
     132,   133,   134,   135,   136,   137,   138,   139,    -1,   141,
     125,    -1,   127,   128,   146,   130,   131,   132,   133,   134,
     135,   136,   137,   138,   139,    -1,   141,   125,    -1,   127,
     128,   146,   130,   131,   132,   133,   134,   135,   136,   137,
     138,   139,    -1,   141,   125,    -1,   127,   128,   146,   130,
     131,   132,   133,   134,   135,   136,   137,   138,   139,    -1,
     141,   125,    -1,   127,   128,   146,   130,   131,   132,   133,
     134,   135,   136,   137,   138,   139,    -1,   141,   125,    -1,
     127,   128,   146,   130,   131,   132,   133,   134,   135,   136,
     137,   138,   139,    -1,   141,   125,    -1,   127,   128,   146,
     130,   131,   132,   133,   134,   135,   136,   137,   138,   139,
      -1,   141,   125,    -1,   127,   128,   146,   130,   131,   132,
     133,   134,   135,   136,   137,   138,   139,    -1,   141,   125,
      -1,   127,   128,   146,   130,   131,   132,   133,   134,   135,
     136,   137,   138,   139,    -1,   141,   125,    -1,   127,   128,
     146,   130,   131,   132,   133,   134,   135,   136,   137,   138,
     139,    -1,   141,   125,    -1,   127,   128,   146,   130,   131,
     132,   133,   134,   135,   136,   137,   138,   139,    -1,   141,
     125,    -1,   127,   128,   146,   130,   131,   132,   133,   134,
     135,   136,   137,   138,   139,    -1,   141,   125,    -1,   127,
     128,   146,   130,   131,   132,   133,   134,   135,   136,   137,
     138,   139,    -1,   141,   125,    -1,   127,   128,   146,   130,
     131,   132,   133,   134,   135,   136,   137,   138,   139,    -1,
     141,   125,    -1,   127,   128,   146,   130,   131,   132,   133,
     134,   135,   136,   137,   138,   139,    -1,   141,   125,    -1,
     127,   128,   146,   130,   131,   132,   133,   134,   135,   136,
     137,   138,   139,    -1,   141,   125,    -1,   127,   128,   146,
     130,   131,   132,   133,   134,   135,   136,   137,   138,   139,
      -1,   141,   125,    -1,   127,   128,   146,   130,   131,   132,
     133,   134,   135,   136,   137,   138,   139,    -1,   141,   125,
      -1,   127,   128,   146,   130,   131,   132,   133,   134,   135,
     136,   137,   138,   139,    -1,   141,   125,    -1,   127,   128,
     146,   130,   131,   132,   133,   134,   135,   136,   137,   138,
     139,    -1,   141,   125,    -1,   127,   128,   146,   130,   131,
     132,   133,   134,   135,   136,   137,   138,   139,    -1,   141,
     125,    -1,   127,   128,   146,   130,   131,   132,   133,   134,
     135,   136,   137,   138,   139,    -1,   141,    -1,    -1,   125,
     145,   127,   128,    -1,   130,   131,   132,   133,   134,   135,
     136,   137,   138,   139,    -1,   141,    -1,    -1,   125,   145,
     127,   128,    -1,   130,   131,   132,   133,   134,   135,   136,
     137,   138,   139,    -1,   141,    -1,    -1,   125,   145,   127,
     128,    -1,   130,   131,   132,   133,   134,   135,   136,   137,
     138,   139,    -1,   141,    -1,    -1,   125,   145,   127,   128,
      -1,   130,   131,   132,   133,   134,   135,   136,   137,   138,
     139,    -1,   141,    -1,    -1,   125,   145,   127,   128,    -1,
     130,   131,   132,   133,   134,   135,   136,   137,   138,   139,
      -1,   141,    -1,    -1,   125,   145,   127,   128,    -1,   130,
     131,   132,   133,   134,   135,   136,   137,   138,   139,    -1,
     141,    -1,    -1,   125,   145,   127,   128,    -1,   130,   131,
     132,   133,   134,   135,   136,   137,   138,   139,    -1,   141,
      -1,    -1,   125,   145,   127,   128,    -1,   130,   131,   132,
     133,   134,   135,   136,   137,   138,   139,    -1,   141,    -1,
      -1,   125,   145,   127,   128,    -1,   130,   131,   132,   133,
     134,   135,   136,   137,   138,   139,    -1,   141,    -1,    -1,
     125,   145,   127,   128,    -1,   130,   131,   132,   133,   134,
     135,   136,   137,   138,   139,    -1,   141,    -1,    -1,   125,
     145,   127,   128,    -1,   130,   131,   132,   133,   134,   135,
     136,   137,   138,   139,    -1,   141,    -1,    -1,   125,   145,
     127,   128,    -1,   130,   131,   132,   133,   134,   135,   136,
     137,   138,   139,    -1,   141,    -1,    -1,   125,   145,   127,
     128,    -1,   130,   131,   132,   133,   134,   135,   136,   137,
     138,   139,    -1,   141,    -1,    -1,   125,   145,   127,   128,
      -1,   130,   131,   132,   133,   134,   135,   136,   137,   138,
     139,    -1,   141,    -1,    -1,   125,   145,   127,   128,    -1,
     130,   131,   132,   133,   134,   135,   136,   137,   138,   139,
      -1,   141,    -1,    -1,   125,   145,   127,   128,    -1,   130,
     131,   132,   133,   134,   135,   136,   137,   138,   139,    -1,
     141,    -1,    -1,   125,   145,   127,   128,    -1,   130,   131,
     132,   133,   134,   135,   136,   137,   138,   139,    -1,   141,
      -1,    -1,   125,   145,   127,   128,    -1,   130,   131,   132,
     133,   134,   135,   136,   137,   138,   139,    -1,   141,    -1,
      -1,   125,   145,   127,   128,    -1,   130,   131,   132,   133,
     134,   135,   136,   137,   138,   139,    -1,   141,    -1,    -1,
     125,   145,   127,   128,    -1,   130,   131,   132,   133,   134,
     135,   136,   137,   138,   139,    -1,   141,    -1,    -1,   125,
     145,   127,   128,    -1,   130,   131,   132,   133,   134,   135,
     136,   137,   138,   139,    -1,   141,    -1,    -1,   125,   145,
     127,   128,    -1,   130,   131,   132,   133,   134,   135,   136,
     137,   138,   139,    -1,   141,    -1,    -1,   125,   145,   127,
     128,    -1,   130,   131,   132,   133,   134,   135,   136,   137,
     138,   139,    -1,   141,    -1,    -1,   125,   145,   127,   128,
      -1,   130,   131,   132,   133,   134,   135,   136,   137,   138,
     139,    -1,   141,    -1,    -1,   125,   145,   127,   128,    -1,
     130,   131,   132,   133,   134,   135,   136,   137,   138,   139,
      -1,   141,    -1,    -1,   125,   145,   127,   128,    -1,   130,
     131,   132,   133,   134,   135,   136,   137,   138,   139,    -1,
     141,    -1,    -1,   125,   145,   127,   128,    -1,   130,   131,
     132,   133,   134,   135,   136,   137,   138,   139,    -1,   141,
      -1,    -1,   125,   145,   127,   128,    -1,   130,   131,   132,
     133,   134,   135,   136,   137,   138,   139,    -1,   141,    -1,
      -1,   125,   145,   127,   128,    -1,   130,   131,   132,   133,
     134,   135,   136,   137,   138,   139,    -1,   141,    -1,    -1,
     125,   145,   127,   128,    -1,   130,   131,   132,   133,   134,
     135,   136,   137,   138,   139,    -1,   141,    -1,    -1,   125,
     145,   127,   128,    -1,   130,   131,   132,   133,   134,   135,
     136,   137,   138,   139,    -1,   141,    -1,    -1,   125,   145,
     127,   128,    -1,   130,   131,   132,   133,   134,   135,   136,
     137,   138,   139,    -1,   141,    -1,    -1,   125,   145,   127,
     128,    -1,   130,   131,   132,   133,   134,   135,   136,   137,
     138,   139,    -1,   141,    -1,    -1,   125,   145,   127,   128,
      -1,   130,   131,   132,   133,   134,   135,   136,   137,   138,
     139,    -1,   141,    -1,    -1,   125,   145,   127,   128,    -1,
     130,   131,   132,   133,   134,   135,   136,   137,   138,   139,
      -1,   141,    -1,    -1,   125,   145,   127,   128,    -1,   130,
     131,   132,   133,   134,   135,   136,   137,   138,   139,    -1,
     141,    -1,    -1,   125,   145,   127,   128,    -1,   130,   131,
     132,   133,   134,   135,   136,   137,   138,   139,    -1,   141,
      -1,    -1,   125,   145,   127,   128,    -1,   130,   131,   132,
     133,   134,   135,   136,   137,   138,   139,    -1,   141,    -1,
      -1,   125,   145,   127,   128,    -1,   130,   131,   132,   133,
     134,   135,   136,   137,   138,   139,    -1,   141,    -1,    -1,
     125,   145,   127,   128,    -1,   130,   131,   132,   133,   134,
     135,   136,   137,   138,   139,    -1,   141,    -1,    -1,   125,
     145,   127,   128,    -1,   130,   131,   132,   133,   134,   135,
     136,   137,   138,   139,    -1,   141,    -1,    -1,    -1,   145
};
/* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
#line 3 "/usr/local/share/bison/bison.simple"

/* Skeleton output parser for bison,

   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002 Free Software
   Foundation, Inc.

   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 2, or (at your option)
   any later version.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software
   Foundation, Inc., 59 Temple Place - Suite 330,
   Boston, MA 02111-1307, USA.  */

/* As a special exception, when this file is copied by Bison into a
   Bison output file, you may use that output file without restriction.
   This special exception was added by the Free Software Foundation
   in version 1.24 of Bison.  */

/* This is the parser code that is written into each bison parser when
   the %semantic_parser declaration is not specified in the grammar.
   It was written by Richard Stallman by simplifying the hairy parser
   used when %semantic_parser is specified.  */

/* All symbols defined below should begin with yy or YY, to avoid
   infringing on user name space.  This should be done even for local
   variables, as they might otherwise be expanded by user macros.
   There are some unavoidable exceptions within include files to
   define necessary library symbols; they are noted "INFRINGES ON
   USER NAME SPACE" below.  */

#if ! defined (yyoverflow) || defined (YYERROR_VERBOSE)

/* The parser invokes alloca or malloc; define the necessary symbols.  */

# if YYSTACK_USE_ALLOCA
#  define YYSTACK_ALLOC alloca
# else
#  ifndef YYSTACK_USE_ALLOCA
#   if defined (alloca) || defined (_ALLOCA_H)
#    define YYSTACK_ALLOC alloca
#   else
#    ifdef __GNUC__
#     define YYSTACK_ALLOC __builtin_alloca
#    endif
#   endif
#  endif
# endif

# ifdef YYSTACK_ALLOC
   /* Pacify GCC's `empty if-body' warning. */
#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
# else
#  if defined (__STDC__) || defined (__cplusplus)
#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
#   define YYSIZE_T size_t
#  endif
#  define YYSTACK_ALLOC malloc
#  define YYSTACK_FREE free
# endif
#endif /* ! defined (yyoverflow) || defined (YYERROR_VERBOSE) */


#if (! defined (yyoverflow) \
     && (! defined (__cplusplus) \
	 || (YYLTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))

/* A type that is properly aligned for any stack member.  */
union yyalloc
{
  short yyss;
  YYSTYPE yyvs;
# if YYLSP_NEEDED
  YYLTYPE yyls;
# endif
};

/* The size of the maximum gap between one aligned stack and the next.  */
# define YYSTACK_GAP_MAX (sizeof (union yyalloc) - 1)

/* The size of an array large to enough to hold all stacks, each with
   N elements.  */
# if YYLSP_NEEDED
#  define YYSTACK_BYTES(N) \
     ((N) * (sizeof (short) + sizeof (YYSTYPE) + sizeof (YYLTYPE))	\
      + 2 * YYSTACK_GAP_MAX)
# else
#  define YYSTACK_BYTES(N) \
     ((N) * (sizeof (short) + sizeof (YYSTYPE))				\
      + YYSTACK_GAP_MAX)
# endif

/* Copy COUNT objects from FROM to TO.  The source and destination do
   not overlap.  */
# ifndef YYCOPY
#  if 1 < __GNUC__
#   define YYCOPY(To, From, Count) \
      __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
#  else
#   define YYCOPY(To, From, Count)		\
      do					\
	{					\
	  register YYSIZE_T yyi;		\
	  for (yyi = 0; yyi < (Count); yyi++)	\
	    (To)[yyi] = (From)[yyi];		\
	}					\
      while (0)
#  endif
# endif

/* Relocate STACK from its old location to the new one.  The
   local variables YYSIZE and YYSTACKSIZE give the old and new number of
   elements in the stack, and YYPTR gives the new location of the
   stack.  Advance YYPTR to a properly aligned location for the next
   stack.  */
# define YYSTACK_RELOCATE(Stack)					\
    do									\
      {									\
	YYSIZE_T yynewbytes;						\
	YYCOPY (&yyptr->Stack, Stack, yysize);				\
	Stack = &yyptr->Stack;						\
	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAX;	\
	yyptr += yynewbytes / sizeof (*yyptr);				\
      }									\
    while (0)

#endif


#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
# define YYSIZE_T __SIZE_TYPE__
#endif
#if ! defined (YYSIZE_T) && defined (size_t)
# define YYSIZE_T size_t
#endif
#if ! defined (YYSIZE_T)
# if defined (__STDC__) || defined (__cplusplus)
#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
#  define YYSIZE_T size_t
# endif
#endif
#if ! defined (YYSIZE_T)
# define YYSIZE_T unsigned int
#endif

#define yyerrok		(yyerrstatus = 0)
#define yyclearin	(yychar = YYEMPTY)
#define YYEMPTY		-2
#define YYEOF		0
#define YYACCEPT	goto yyacceptlab
#define YYABORT 	goto yyabortlab
#define YYERROR		goto yyerrlab1
/* Like YYERROR except do call yyerror.  This remains here temporarily
   to ease the transition to the new meaning of YYERROR, for GCC.
   Once GCC version 2 has supplanted version 1, this can go.  */
#define YYFAIL		goto yyerrlab
#define YYRECOVERING()  (!!yyerrstatus)
#define YYBACKUP(Token, Value)					\
do								\
  if (yychar == YYEMPTY && yylen == 1)				\
    {								\
      yychar = (Token);						\
      yylval = (Value);						\
      yychar1 = YYTRANSLATE (yychar);				\
      YYPOPSTACK;						\
      goto yybackup;						\
    }								\
  else								\
    { 								\
      yyerror ("syntax error: cannot back up");			\
      YYERROR;							\
    }								\
while (0)

#define YYTERROR	1
#define YYERRCODE	256


/* YYLLOC_DEFAULT -- Compute the default location (before the actions
   are run).

   When YYLLOC_DEFAULT is run, CURRENT is set the location of the
   first token.  By default, to implement support for ranges, extend
   its range to the last symbol.  */

#ifndef YYLLOC_DEFAULT
# define YYLLOC_DEFAULT(Current, Rhs, N)       	\
   Current.last_line   = Rhs[N].last_line;	\
   Current.last_column = Rhs[N].last_column;
#endif


/* YYLEX -- calling `yylex' with the right arguments.  */

#if YYPURE
# if YYLSP_NEEDED
#  ifdef YYLEX_PARAM
#   define YYLEX		yylex (&yylval, &yylloc, YYLEX_PARAM)
#  else
#   define YYLEX		yylex (&yylval, &yylloc)
#  endif
# else /* !YYLSP_NEEDED */
#  ifdef YYLEX_PARAM
#   define YYLEX		yylex (&yylval, YYLEX_PARAM)
#  else
#   define YYLEX		yylex (&yylval)
#  endif
# endif /* !YYLSP_NEEDED */
#else /* !YYPURE */
# define YYLEX			yylex ()
#endif /* !YYPURE */


/* Enable debugging if requested.  */
#if YYDEBUG

# ifndef YYFPRINTF
#  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
#  define YYFPRINTF fprintf
# endif

# define YYDPRINTF(Args)			\
do {						\
  if (yydebug)					\
    YYFPRINTF Args;				\
} while (0)
/* Nonzero means print parse trace.  It is left uninitialized so that
   multiple parsers can coexist.  */
int yydebug;
#else /* !YYDEBUG */
# define YYDPRINTF(Args)
#endif /* !YYDEBUG */

/* YYINITDEPTH -- initial size of the parser's stacks.  */
#ifndef	YYINITDEPTH
# define YYINITDEPTH 200
#endif

/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
   if the built-in stack extension method is used).

   Do not make this value too large; the results are undefined if
   SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH)
   evaluated with infinite-precision integer arithmetic.  */

#if YYMAXDEPTH == 0
# undef YYMAXDEPTH
#endif

#ifndef YYMAXDEPTH
# define YYMAXDEPTH 10000
#endif

#ifdef YYERROR_VERBOSE

# ifndef yystrlen
#  if defined (__GLIBC__) && defined (_STRING_H)
#   define yystrlen strlen
#  else
/* Return the length of YYSTR.  */
static YYSIZE_T
#   if defined (__STDC__) || defined (__cplusplus)
yystrlen (const char *yystr)
#   else
yystrlen (yystr)
     const char *yystr;
#   endif
{
  register const char *yys = yystr;

  while (*yys++ != '\0')
    continue;

  return yys - yystr - 1;
}
#  endif
# endif

# ifndef yystpcpy
#  if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
#   define yystpcpy stpcpy
#  else
/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
   YYDEST.  */
static char *
#   if defined (__STDC__) || defined (__cplusplus)
yystpcpy (char *yydest, const char *yysrc)
#   else
yystpcpy (yydest, yysrc)
     char *yydest;
     const char *yysrc;
#   endif
{
  register char *yyd = yydest;
  register const char *yys = yysrc;

  while ((*yyd++ = *yys++) != '\0')
    continue;

  return yyd - 1;
}
#  endif
# endif
#endif

#line 315 "/usr/local/share/bison/bison.simple"


/* The user can define YYPARSE_PARAM as the name of an argument to be passed
   into yyparse.  The argument should have type void *.
   It should actually point to an object.
   Grammar actions can access the variable by casting it
   to the proper pointer type.  */

#ifdef YYPARSE_PARAM
# if defined (__STDC__) || defined (__cplusplus)
#  define YYPARSE_PARAM_ARG void *YYPARSE_PARAM
#  define YYPARSE_PARAM_DECL
# else
#  define YYPARSE_PARAM_ARG YYPARSE_PARAM
#  define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
# endif
#else /* !YYPARSE_PARAM */
# define YYPARSE_PARAM_ARG
# define YYPARSE_PARAM_DECL
#endif /* !YYPARSE_PARAM */

/* Prevent warning if -Wstrict-prototypes.  */
#ifdef __GNUC__
# ifdef YYPARSE_PARAM
int yyparse (void *);
# else
int yyparse (void);
# endif
#endif

/* YY_DECL_VARIABLES -- depending whether we use a pure parser,
   variables are global, or local to YYPARSE.  */

#define YY_DECL_NON_LSP_VARIABLES			\
/* The lookahead symbol.  */				\
int yychar;						\
							\
/* The semantic value of the lookahead symbol. */	\
YYSTYPE yylval;						\
							\
/* Number of parse errors so far.  */			\
int yynerrs;

#if YYLSP_NEEDED
# define YY_DECL_VARIABLES			\
YY_DECL_NON_LSP_VARIABLES			\
						\
/* Location data for the lookahead symbol.  */	\
YYLTYPE yylloc;
#else
# define YY_DECL_VARIABLES			\
YY_DECL_NON_LSP_VARIABLES
#endif


/* If nonreentrant, generate the variables here. */

#if !YYPURE
YY_DECL_VARIABLES
#endif  /* !YYPURE */

int
yyparse (YYPARSE_PARAM_ARG)
     YYPARSE_PARAM_DECL
{
  /* If reentrant, generate the variables here. */
#if YYPURE
  YY_DECL_VARIABLES
#endif  /* !YYPURE */

  register int yystate;
  register int yyn;
  int yyresult;
  /* Number of tokens to shift before error messages enabled.  */
  int yyerrstatus;
  /* Lookahead token as an internal (translated) token number.  */
  int yychar1 = 0;

  /* Three stacks and their tools:
     `yyss': related to states,
     `yyvs': related to semantic values,
     `yyls': related to locations.

     Refer to the stacks thru separate pointers, to allow yyoverflow
     to reallocate them elsewhere.  */

  /* The state stack. */
  short	yyssa[YYINITDEPTH];
  short *yyss = yyssa;
  register short *yyssp;

  /* The semantic value stack.  */
  YYSTYPE yyvsa[YYINITDEPTH];
  YYSTYPE *yyvs = yyvsa;
  register YYSTYPE *yyvsp;

#if YYLSP_NEEDED
  /* The location stack.  */
  YYLTYPE yylsa[YYINITDEPTH];
  YYLTYPE *yyls = yylsa;
  YYLTYPE *yylsp;
#endif

#if YYLSP_NEEDED
# define YYPOPSTACK   (yyvsp--, yyssp--, yylsp--)
#else
# define YYPOPSTACK   (yyvsp--, yyssp--)
#endif

  YYSIZE_T yystacksize = YYINITDEPTH;


  /* The variables used to return semantic value and location from the
     action routines.  */
  YYSTYPE yyval;
#if YYLSP_NEEDED
  YYLTYPE yyloc;
#endif

  /* When reducing, the number of symbols on the RHS of the reduced
     rule. */
  int yylen;

  YYDPRINTF ((stderr, "Starting parse\n"));

  yystate = 0;
  yyerrstatus = 0;
  yynerrs = 0;
  yychar = YYEMPTY;		/* Cause a token to be read.  */

  /* Initialize stack pointers.
     Waste one element of value and location stack
     so that they stay on the same level as the state stack.
     The wasted elements are never initialized.  */

  yyssp = yyss;
  yyvsp = yyvs;
#if YYLSP_NEEDED
  yylsp = yyls;
#endif
  goto yysetstate;

/*------------------------------------------------------------.
| yynewstate -- Push a new state, which is found in yystate.  |
`------------------------------------------------------------*/
 yynewstate:
  /* In all cases, when you get here, the value and location stacks
     have just been pushed. so pushing a state here evens the stacks.
     */
  yyssp++;

 yysetstate:
  *yyssp = yystate;

  if (yyssp >= yyss + yystacksize - 1)
    {
      /* Get the current used size of the three stacks, in elements.  */
      YYSIZE_T yysize = yyssp - yyss + 1;

#ifdef yyoverflow
      {
	/* Give user a chance to reallocate the stack. Use copies of
	   these so that the &'s don't force the real ones into
	   memory.  */
	YYSTYPE *yyvs1 = yyvs;
	short *yyss1 = yyss;

	/* Each stack pointer address is followed by the size of the
	   data in use in that stack, in bytes.  */
# if YYLSP_NEEDED
	YYLTYPE *yyls1 = yyls;
	/* This used to be a conditional around just the two extra args,
	   but that might be undefined if yyoverflow is a macro.  */
	yyoverflow ("parser stack overflow",
		    &yyss1, yysize * sizeof (*yyssp),
		    &yyvs1, yysize * sizeof (*yyvsp),
		    &yyls1, yysize * sizeof (*yylsp),
		    &yystacksize);
	yyls = yyls1;
# else
	yyoverflow ("parser stack overflow",
		    &yyss1, yysize * sizeof (*yyssp),
		    &yyvs1, yysize * sizeof (*yyvsp),
		    &yystacksize);
# endif
	yyss = yyss1;
	yyvs = yyvs1;
      }
#else /* no yyoverflow */
# ifndef YYSTACK_RELOCATE
      goto yyoverflowlab;
# else
      /* Extend the stack our own way.  */
      if (yystacksize >= YYMAXDEPTH)
	goto yyoverflowlab;
      yystacksize *= 2;
      if (yystacksize > YYMAXDEPTH)
	yystacksize = YYMAXDEPTH;

      {
	short *yyss1 = yyss;
	union yyalloc *yyptr =
	  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
	if (! yyptr)
	  goto yyoverflowlab;
	YYSTACK_RELOCATE (yyss);
	YYSTACK_RELOCATE (yyvs);
# if YYLSP_NEEDED
	YYSTACK_RELOCATE (yyls);
# endif
# undef YYSTACK_RELOCATE
	if (yyss1 != yyssa)
	  YYSTACK_FREE (yyss1);
      }
# endif
#endif /* no yyoverflow */

      yyssp = yyss + yysize - 1;
      yyvsp = yyvs + yysize - 1;
#if YYLSP_NEEDED
      yylsp = yyls + yysize - 1;
#endif

      YYDPRINTF ((stderr, "Stack size increased to %lu\n",
		  (unsigned long int) yystacksize));

      if (yyssp >= yyss + yystacksize - 1)
	YYABORT;
    }

  YYDPRINTF ((stderr, "Entering state %d\n", yystate));

  goto yybackup;


/*-----------.
| yybackup.  |
`-----------*/
yybackup:

/* Do appropriate processing given the current state.  */
/* Read a lookahead token if we need one and don't already have one.  */
/* yyresume: */

  /* First try to decide what to do without reference to lookahead token.  */

  yyn = yypact[yystate];
  if (yyn == YYFLAG)
    goto yydefault;

  /* Not known => get a lookahead token if don't already have one.  */

  /* yychar is either YYEMPTY or YYEOF
     or a valid token in external form.  */

  if (yychar == YYEMPTY)
    {
      YYDPRINTF ((stderr, "Reading a token: "));
      yychar = YYLEX;
    }

  /* Convert token to internal form (in yychar1) for indexing tables with */

  if (yychar <= 0)		/* This means end of input. */
    {
      yychar1 = 0;
      yychar = YYEOF;		/* Don't call YYLEX any more */

      YYDPRINTF ((stderr, "Now at end of input.\n"));
    }
  else
    {
      yychar1 = YYTRANSLATE (yychar);

#if YYDEBUG
     /* We have to keep this `#if YYDEBUG', since we use variables
	which are defined only if `YYDEBUG' is set.  */
      if (yydebug)
	{
	  YYFPRINTF (stderr, "Next token is %d (%s",
		     yychar, yytname[yychar1]);
	  /* Give the individual parser a way to print the precise
	     meaning of a token, for further debugging info.  */
# ifdef YYPRINT
	  YYPRINT (stderr, yychar, yylval);
# endif
	  YYFPRINTF (stderr, ")\n");
	}
#endif
    }

  yyn += yychar1;
  if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
    goto yydefault;

  yyn = yytable[yyn];

  /* yyn is what to do for this token type in this state.
     Negative => reduce, -yyn is rule number.
     Positive => shift, yyn is new state.
       New state is final state => don't bother to shift,
       just return success.
     0, or most negative number => error.  */

  if (yyn < 0)
    {
      if (yyn == YYFLAG)
	goto yyerrlab;
      yyn = -yyn;
      goto yyreduce;
    }
  else if (yyn == 0)
    goto yyerrlab;

  if (yyn == YYFINAL)
    YYACCEPT;

  /* Shift the lookahead token.  */
  YYDPRINTF ((stderr, "Shifting token %d (%s), ",
	      yychar, yytname[yychar1]));

  /* Discard the token being shifted unless it is eof.  */
  if (yychar != YYEOF)
    yychar = YYEMPTY;

  *++yyvsp = yylval;
#if YYLSP_NEEDED
  *++yylsp = yylloc;
#endif

  /* Count tokens shifted since error; after three, turn off error
     status.  */
  if (yyerrstatus)
    yyerrstatus--;

  yystate = yyn;
  goto yynewstate;


/*-----------------------------------------------------------.
| yydefault -- do the default action for the current state.  |
`-----------------------------------------------------------*/
yydefault:
  yyn = yydefact[yystate];
  if (yyn == 0)
    goto yyerrlab;
  goto yyreduce;


/*-----------------------------.
| yyreduce -- Do a reduction.  |
`-----------------------------*/
yyreduce:
  /* yyn is the number of a rule to reduce with.  */
  yylen = yyr2[yyn];

  /* If YYLEN is nonzero, implement the default value of the action:
     `$$ = $1'.

     Otherwise, the following line sets YYVAL to the semantic value of
     the lookahead token.  This behavior is undocumented and Bison
     users should not rely upon it.  Assigning to YYVAL
     unconditionally makes the parser a bit smaller, and it avoids a
     GCC warning that YYVAL may be used uninitialized.  */
  yyval = yyvsp[1-yylen];

#if YYLSP_NEEDED
  /* Similarly for the default location.  Let the user run additional
     commands if for instance locations are ranges.  */
  yyloc = yylsp[1-yylen];
  YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);
#endif

#if YYDEBUG
  /* We have to keep this `#if YYDEBUG', since we use variables which
     are defined only if `YYDEBUG' is set.  */
  if (yydebug)
    {
      int yyi;

      YYFPRINTF (stderr, "Reducing via rule %d (line %d), ",
		 yyn, yyrline[yyn]);

      /* Print the symbols being reduced, and their result.  */
      for (yyi = yyprhs[yyn]; yyrhs[yyi] > 0; yyi++)
	YYFPRINTF (stderr, "%s ", yytname[yyrhs[yyi]]);
      YYFPRINTF (stderr, " -> %s\n", yytname[yyr1[yyn]]);
    }
#endif

  switch (yyn) {

case 12:
#line 122 "parser.y"
{ yyvsp[-2].ptr->type = NUMBER; yyvsp[-2].ptr->object.number = yyvsp[0].number; ;
    break;}
case 13:
#line 125 "parser.y"
{ P_assignment(yyvsp[-2].ptr, yyvsp[0].point); ;
    break;}
case 14:
#line 128 "parser.y"
{ V_assignment(yyvsp[-2].ptr, yyvsp[0].vector); ;
    break;}
case 15:
#line 131 "parser.y"
{ L_assignment(yyvsp[-2].ptr, yyvsp[0].line); ;
    break;}
case 16:
#line 134 "parser.y"
{ S_assignment(yyvsp[-2].ptr, yyvsp[0].segment); ;
    break;}
case 17:
#line 137 "parser.y"
{ C_assignment(yyvsp[-2].ptr, yyvsp[0].circle); ;
    break;}
case 18:
#line 140 "parser.y"
{ Co_assignment(yyvsp[-2].ptr, yyvsp[0].conic); ;
    break;}
case 27:
#line 158 "parser.y"
{ yyval.number = yyvsp[0].number; ;
    break;}
case 28:
#line 161 "parser.y"
{ yyval.number = yyvsp[0].ptr->object.number; ;
    break;}
case 29:
#line 164 "parser.y"
{ yyval.number = yyvsp[-2].number + yyvsp[0].number; ;
    break;}
case 30:
#line 167 "parser.y"
{ yyval.number = yyvsp[-2].number - yyvsp[0].number; ;
    break;}
case 31:
#line 170 "parser.y"
{ yyval.number = yyvsp[-2].number * yyvsp[0].number; ;
    break;}
case 32:
#line 173 "parser.y"
{ 
      if (ZERO(yyvsp[0].number)) yyerror("invalid number");
      yyval.number = yyvsp[-2].number / yyvsp[0].number; 
    ;
    break;}
case 33:
#line 179 "parser.y"
{ yyval.number = -yyvsp[0].number; ;
    break;}
case 34:
#line 182 "parser.y"
{ yyval.number = Pow(yyvsp[-2].number, yyvsp[0].number); ;
    break;}
case 35:
#line 185 "parser.y"
{ yyval.number = yyvsp[-2].number==yyvsp[0].number; ;
    break;}
case 36:
#line 188 "parser.y"
{ yyval.number = yyvsp[-2].number!=yyvsp[0].number; ;
    break;}
case 37:
#line 191 "parser.y"
{ yyval.number = yyvsp[-2].number<yyvsp[0].number; ;
    break;}
case 38:
#line 194 "parser.y"
{ yyval.number = yyvsp[-2].number>yyvsp[0].number; ;
    break;}
case 39:
#line 197 "parser.y"
{ yyval.number = yyvsp[-2].number<=yyvsp[0].number; ;
    break;}
case 40:
#line 200 "parser.y"
{ yyval.number = yyvsp[-2].number>=yyvsp[0].number; ;
    break;}
case 41:
#line 203 "parser.y"
{ yyval.number = !yyvsp[0].number; ;
    break;}
case 42:
#line 206 "parser.y"
{ yyval.number = yyvsp[-2].number&&yyvsp[0].number; ;
    break;}
case 43:
#line 209 "parser.y"
{ yyval.number = yyvsp[-2].number||yyvsp[0].number; ;
    break;}
case 44:
#line 212 "parser.y"
{ yyval.number = yyvsp[-4].number?yyvsp[-2].number:yyvsp[0].number; ;
    break;}
case 45:
#line 215 "parser.y"
{ 
      if (yyvsp[-1].number<0) yyerror("invalid number");
      yyval.number = sqrt(yyvsp[-1].number);
    ;
    break;}
case 46:
#line 221 "parser.y"
{
      yyval.number = exp(yyvsp[-1].number);
    ;
    break;}
case 47:
#line 226 "parser.y"
{
      if (yyvsp[-1].number<EPSILON) { warning("invalid number"); yyval.number = -1e8; }
      else yyval.number = log(yyvsp[-1].number);
    ;
    break;}
case 48:
#line 232 "parser.y"
{ yyval.number = M_PI; ;
    break;}
case 49:
#line 235 "parser.y"
{ yyval.number = Sin(yyvsp[-1].number); ;
    break;}
case 50:
#line 238 "parser.y"
{ yyval.number = Cos(yyvsp[-1].number); ;
    break;}
case 51:
#line 241 "parser.y"
{ 
      if (ZERO(Cos(yyvsp[-1].number))) yyerror("invalid number");
      yyval.number = Tan(yyvsp[-1].number);
    ;
    break;}
case 52:
#line 247 "parser.y"
{ 
      if ((yyvsp[-1].number>1)||(yyvsp[-1].number<-1)) yyerror("invalid number");
      yyval.number = Asin(yyvsp[-1].number);
    ;
    break;}
case 53:
#line 253 "parser.y"
{ 
      if ((yyvsp[-1].number>1)||(yyvsp[-1].number<-1)) yyerror("invalid number");
      yyval.number = Acos(yyvsp[-1].number);
    ;
    break;}
case 54:
#line 259 "parser.y"
{ yyval.number = Atan(yyvsp[-1].number); ;
    break;}
case 55:
#line 262 "parser.y"
{ yyval.number = DEG(yyvsp[-1].number); ;
    break;}
case 56:
#line 265 "parser.y"
{ yyval.number = RAD(yyvsp[-1].number); ;
    break;}
case 57:
#line 268 "parser.y"
{ yyval.number = fabs(yyvsp[-1].number); ;
    break;}
case 58:
#line 271 "parser.y"
{ yyval.number = yyvsp[-1].number==0?0:yyvsp[-1].number>0?1:-1; ;
    break;}
case 59:
#line 274 "parser.y"
{ yyval.number = ceil(yyvsp[-1].number); ;
    break;}
case 60:
#line 277 "parser.y"
{ yyval.number = floor(yyvsp[-1].number); ;
    break;}
case 61:
#line 280 "parser.y"
{ yyval.number = rint(yyvsp[-1].number); ;
    break;}
case 62:
#line 283 "parser.y"
{ yyval.number = yyvsp[-3].number<yyvsp[-1].number?yyvsp[-3].number:yyvsp[-1].number; ;
    break;}
case 63:
#line 286 "parser.y"
{ yyval.number = yyvsp[-3].number>yyvsp[-1].number?yyvsp[-3].number:yyvsp[-1].number; ;
    break;}
case 64:
#line 289 "parser.y"
{ yyval.number = yyvsp[-5].number>=yyvsp[-3].number&&yyvsp[-5].number<yyvsp[-1].number?yyvsp[-5].number:yyvsp[-5].number<yyvsp[-3].number?yyvsp[-3].number:yyvsp[-1].number; ;
    break;}
case 65:
#line 292 "parser.y"
{ yyval.number = yyvsp[-1].point->x; ;
    break;}
case 66:
#line 295 "parser.y"
{ yyval.number = yyvsp[-1].vector->x; ;
    break;}
case 67:
#line 298 "parser.y"
{ yyval.number = yyvsp[-1].point->y; ;
    break;}
case 68:
#line 301 "parser.y"
{ yyval.number = yyvsp[-1].vector->y; ;
    break;}
case 69:
#line 304 "parser.y"
{ yyval.number = PP_distance(yyvsp[-3].point, yyvsp[-1].point); ;
    break;}
case 70:
#line 307 "parser.y"
{ yyval.number = PL_distance(yyvsp[-3].point, yyvsp[-1].line); ;
    break;}
case 71:
#line 310 "parser.y"
{ yyval.number = V_length(yyvsp[-1].vector); ;
    break;}
case 72:
#line 313 "parser.y"
{ yyval.number = S_length(yyvsp[-1].segment); ;
    break;}
case 73:
#line 316 "parser.y"
{ yyval.number = yyvsp[-1].circle->radius; ;
    break;}
case 74:
#line 319 "parser.y"
{ yyval.number = yyvsp[-1].conic->a; ;
    break;}
case 75:
#line 322 "parser.y"
{ yyval.number = yyvsp[-1].conic->b; ;
    break;}
case 76:
#line 325 "parser.y"
{ yyval.number = eccentricity(yyvsp[-1].conic); ;
    break;}
case 77:
#line 328 "parser.y"
{ yyval.number = height(yyvsp[-5].point, yyvsp[-3].point, yyvsp[-1].point); ;
    break;}
case 78:
#line 331 "parser.y"
{ yyval.number = V_angle(yyvsp[-1].vector); ;
    break;}
case 79:
#line 334 "parser.y"
{ yyval.number = yyvsp[-1].line->angle; ;
    break;}
case 80:
#line 337 "parser.y"
{ yyval.number = S_angle(yyvsp[-1].segment); ;
    break;}
case 81:
#line 340 "parser.y"
{ yyval.number = Co_angle(yyvsp[-1].conic); ;
    break;}
case 82:
#line 343 "parser.y"
{ yyval.number = VV_angle(yyvsp[-3].vector, yyvsp[-1].vector); ;
    break;}
case 83:
#line 346 "parser.y"
{ yyval.number = T_angle(yyvsp[-5].point, yyvsp[-3].point, yyvsp[-1].point); ;
    break;}
case 84:
#line 349 "parser.y"
{ yyval.number = C_argument(yyvsp[-3].circle, yyvsp[-1].point); ;
    break;}
case 85:
#line 352 "parser.y"
{ yyval.number = Co_argument(yyvsp[-3].conic, yyvsp[-1].point); ;
    break;}
case 86:
#line 355 "parser.y"
{ yyval.number = scalar(yyvsp[-2].vector, yyvsp[0].vector); ;
    break;}
case 87:
#line 358 "parser.y"
{ yyval.number = yyvsp[-1].number; ;
    break;}
case 88:
#line 365 "parser.y"
{ yyval.number = yyvsp[-1].number; ;
    break;}
case 89:
#line 367 "parser.y"
{ yyval.number = DEG(yyvsp[-1].number); ;
    break;}
case 90:
#line 374 "parser.y"
{ yyval.point = yyvsp[0].ptr->object.point; ;
    break;}
case 91:
#line 377 "parser.y"
{ yyval.point = P_new(yyvsp[-3].number, yyvsp[-1].number); ;
    break;}
case 92:
#line 380 "parser.y"
{ yyval.point = P_polar(yyvsp[-3].number, yyvsp[-1].number); ;
    break;}
case 93:
#line 383 "parser.y"
{ yyval.point = P_line(yyvsp[-3].line, yyvsp[-1].number); ;
    break;}
case 94:
#line 386 "parser.y"
{ yyval.point = P_segment(yyvsp[-3].segment, yyvsp[-1].number); ;
    break;}
case 95:
#line 389 "parser.y"
{ yyval.point = P_circle(yyvsp[-3].circle, yyvsp[-1].number); ;
    break;}
case 96:
#line 392 "parser.y"
{ yyval.point = P_conic(yyvsp[-3].conic, yyvsp[-1].number); ;
    break;}
case 97:
#line 395 "parser.y"
{ yyval.point = P_translation(yyvsp[-3].point, yyvsp[-1].vector); ;
    break;}
case 98:
#line 398 "parser.y"
{ yyval.point = P_reflection(yyvsp[-3].point, yyvsp[-1].line); ;
    break;}
case 99:
#line 401 "parser.y"
{ yyval.point = P_rotation(yyvsp[-3].point, yyvsp[-1].point, 180); ;
    break;}
case 100:
#line 404 "parser.y"
{ yyval.point = P_rotation(yyvsp[-5].point, yyvsp[-3].point, yyvsp[-1].number); ;
    break;}
case 101:
#line 407 "parser.y"
{ yyval.point = P_L_projection(yyvsp[-3].point, yyvsp[-1].line); ;
    break;}
case 102:
#line 410 "parser.y"
{ yyval.point = P_LL_projection(yyvsp[-5].point, yyvsp[-3].line, yyvsp[-1].line); ;
    break;}
case 103:
#line 413 "parser.y"
{ yyval.point = P_homothecy(yyvsp[-5].point, yyvsp[-3].point, yyvsp[-1].number); ;
    break;}
case 104:
#line 416 "parser.y"
{ yyval.point = P_2_barycenter(yyvsp[-3].point, 1, yyvsp[-1].point, 1); ;
    break;}
case 105:
#line 419 "parser.y"
{ yyval.point = P_3_barycenter(yyvsp[-5].point, 1, yyvsp[-3].point, 1, yyvsp[-1].point, 1); ;
    break;}
case 106:
#line 422 "parser.y"
{ yyval.point = P_4_barycenter(yyvsp[-7].point, 1, yyvsp[-5].point, 1, yyvsp[-3].point, 1, yyvsp[-1].point, 1); ;
    break;}
case 107:
#line 425 "parser.y"
{ yyval.point = P_2_barycenter(yyvsp[-7].point, yyvsp[-5].number, yyvsp[-3].point, yyvsp[-1].number); ;
    break;}
case 108:
#line 429 "parser.y"
{ yyval.point = P_3_barycenter(yyvsp[-11].point, yyvsp[-9].number, yyvsp[-7].point, yyvsp[-5].number, yyvsp[-3].point, yyvsp[-1].number); ;
    break;}
case 109:
#line 433 "parser.y"
{ yyval.point = P_4_barycenter(yyvsp[-15].point, yyvsp[-13].number, yyvsp[-11].point, yyvsp[-9].number, yyvsp[-7].point, yyvsp[-5].number, yyvsp[-3].point, yyvsp[-1].number); ;
    break;}
case 110:
#line 436 "parser.y"
{ yyval.point = P_LL_intersection(yyvsp[-3].line, yyvsp[-1].line); ;
    break;}
case 111:
#line 439 "parser.y"
{ yyval.point = P_abscissa(yyvsp[-3].line, yyvsp[-1].number); ;
    break;}
case 112:
#line 442 "parser.y"
{ yyval.point = P_ordinate(yyvsp[-3].line, yyvsp[-1].number); ;
    break;}
case 113:
#line 445 "parser.y"
{ yyval.point = P_midpoint(yyvsp[-1].segment); ;
    break;}
case 114:
#line 448 "parser.y"
{ yyval.point = P_begin(yyvsp[-1].segment); ;
    break;}
case 115:
#line 451 "parser.y"
{ yyval.point = P_end(yyvsp[-1].segment); ;
    break;}
case 116:
#line 454 "parser.y"
{ yyval.point = P_center(yyvsp[-1].circle); ;
    break;}
case 117:
#line 457 "parser.y"
{ yyval.point = P_Co_center(yyvsp[-1].conic); ;
    break;}
case 118:
#line 460 "parser.y"
{ yyval.point = P_orthocenter(yyvsp[-5].point, yyvsp[-3].point, yyvsp[-1].point); ;
    break;}
case 119:
#line 463 "parser.y"
{ yyval.point = yyvsp[-1].point; ;
    break;}
case 120:
#line 470 "parser.y"
{ yyval.vector = yyvsp[0].ptr->object.vector; ;
    break;}
case 121:
#line 473 "parser.y"
{ yyval.vector = V_NN_new(yyvsp[-3].number, yyvsp[-1].number); ;
    break;}
case 122:
#line 476 "parser.y"
{ yyval.vector = V_NA_new(yyvsp[-3].number, yyvsp[-1].number); ;
    break;}
case 123:
#line 479 "parser.y"
{ yyval.vector = V_PP_new(yyvsp[-3].point, yyvsp[-1].point); ;
    break;}
case 124:
#line 482 "parser.y"
{ yyval.vector = V_L_new(yyvsp[-1].line); ;
    break;}
case 125:
#line 485 "parser.y"
{ yyval.vector = V_S_new(yyvsp[-1].segment); ;
    break;}
case 126:
#line 488 "parser.y"
{ yyval.vector = V_rotation(yyvsp[-3].vector, yyvsp[-1].number); ;
    break;}
case 127:
#line 491 "parser.y"
{ yyval.vector = V_add(yyvsp[-2].vector, yyvsp[0].vector); ;
    break;}
case 128:
#line 494 "parser.y"
{ yyval.vector = V_sub(yyvsp[-2].vector, yyvsp[0].vector); ;
    break;}
case 129:
#line 497 "parser.y"
{ yyval.vector = V_mult(yyvsp[-2].number, yyvsp[0].vector); ;
    break;}
case 130:
#line 500 "parser.y"
{
      if (yyvsp[0].number<0) yyerror("invalid number");
      else yyval.vector = V_mult(1 / yyvsp[0].number, yyvsp[-2].vector);
    ;
    break;}
case 131:
#line 506 "parser.y"
{ yyval.vector = V_mult(-1, yyvsp[0].vector); ;
    break;}
case 132:
#line 509 "parser.y"
{ yyval.vector = yyvsp[-1].vector; ;
    break;}
case 133:
#line 516 "parser.y"
{ yyval.line = yyvsp[0].ptr->object.line; ;
    break;}
case 134:
#line 519 "parser.y"
{ yyval.line = L_PP_new(yyvsp[-3].point, yyvsp[-1].point); ;
    break;}
case 135:
#line 522 "parser.y"
{ yyval.line = L_PA_new(yyvsp[-3].point, yyvsp[-1].number); ;
    break;}
case 136:
#line 525 "parser.y"
{ yyval.line = L_PV_new(yyvsp[-3].point, yyvsp[-1].vector); ;
    break;}
case 137:
#line 528 "parser.y"
{ yyval.line = L_S_new(yyvsp[-1].segment); ;
    break;}
case 138:
#line 531 "parser.y"
{ yyval.line = L_CA_new(yyvsp[-3].circle, yyvsp[-1].number); ;
    break;}
case 139:
#line 534 "parser.y"
{ yyval.line = L_Co_new(yyvsp[-3].conic, yyvsp[-1].number); ;
    break;}
case 140:
#line 537 "parser.y"
{ yyval.line = L_translation(yyvsp[-3].line, yyvsp[-1].vector); ;
    break;}
case 141:
#line 540 "parser.y"
{ yyval.line = L_reflection(yyvsp[-3].line, yyvsp[-1].line); ;
    break;}
case 142:
#line 543 "parser.y"
{ yyval.line = L_rotation(yyvsp[-3].line, yyvsp[-1].point, 180); ;
    break;}
case 143:
#line 546 "parser.y"
{ yyval.line = L_rotation(yyvsp[-5].line, yyvsp[-3].point, yyvsp[-1].number); ;
    break;}
case 144:
#line 549 "parser.y"
{ yyval.line = L_homothecy(yyvsp[-5].line, yyvsp[-3].point, yyvsp[-1].number); ;
    break;}
case 145:
#line 552 "parser.y"
{ yyval.line = L_L_parallel(yyvsp[-3].line, yyvsp[-1].point); ;
    break;}
case 146:
#line 555 "parser.y"
{ yyval.line = L_S_parallel(yyvsp[-3].segment, yyvsp[-1].point); ;
    break;}
case 147:
#line 558 "parser.y"
{ yyval.line = L_L_perpendicular(yyvsp[-3].line, yyvsp[-1].point); ;
    break;}
case 148:
#line 561 "parser.y"
{ yyval.line = L_S_perpendicular(yyvsp[-3].segment, yyvsp[-1].point); ;
    break;}
case 149:
#line 564 "parser.y"
{ yyval.line = L_S_bisector(yyvsp[-1].segment); ;
    break;}
case 150:
#line 567 "parser.y"
{ yyval.line = L_P_bisector(yyvsp[-5].point, yyvsp[-3].point, yyvsp[-1].point); ;
    break;}
case 151:
#line 570 "parser.y"
{ yyval.line = L_LL_bisector(yyvsp[-3].line, yyvsp[-1].line); ;
    break;}
case 152:
#line 573 "parser.y"
{ yyval.line = L_altitude(yyvsp[-5].point, yyvsp[-3].point, yyvsp[-1].point); ;
    break;}
case 153:
#line 576 "parser.y"
{ yyval.line = L_median(yyvsp[-5].point, yyvsp[-3].point, yyvsp[-1].point); ;
    break;}
case 154:
#line 579 "parser.y"
{ yyval.line = L_invert(yyvsp[0].line); ;
    break;}
case 155:
#line 582 "parser.y"
{ yyval.line = yyvsp[-1].line; ;
    break;}
case 156:
#line 589 "parser.y"
{ yyval.segment = yyvsp[0].ptr->object.segment; ;
    break;}
case 157:
#line 592 "parser.y"
{ yyval.segment = S_P_new(yyvsp[-3].point, yyvsp[-1].point); ;
    break;}
case 158:
#line 595 "parser.y"
{ yyval.segment = S_V_new(yyvsp[-3].point, yyvsp[-1].vector); ;
    break;}
case 159:
#line 598 "parser.y"
{ yyval.segment = S_NA_new(yyvsp[-5].point, yyvsp[-3].number, yyvsp[-1].number); ;
    break;}
case 160:
#line 601 "parser.y"
{ yyval.segment = S_CA_new(yyvsp[-3].circle, yyvsp[-1].number); ;
    break;}
case 161:
#line 604 "parser.y"
{ yyval.segment = S_translation(yyvsp[-3].segment, yyvsp[-1].vector); ;
    break;}
case 162:
#line 607 "parser.y"
{ yyval.segment = S_reflection(yyvsp[-3].segment, yyvsp[-1].line); ;
    break;}
case 163:
#line 610 "parser.y"
{ yyval.segment = S_rotation(yyvsp[-3].segment, yyvsp[-1].point, 180); ;
    break;}
case 164:
#line 613 "parser.y"
{ yyval.segment = S_rotation(yyvsp[-5].segment, yyvsp[-3].point, yyvsp[-1].number); ;
    break;}
case 165:
#line 616 "parser.y"
{ yyval.segment = S_homothecy(yyvsp[-5].segment, yyvsp[-3].point, yyvsp[-1].number); ;
    break;}
case 166:
#line 619 "parser.y"
{ yyval.segment = S_invert(yyvsp[0].segment); ;
    break;}
case 167:
#line 622 "parser.y"
{ yyval.segment = yyvsp[-1].segment; ;
    break;}
case 168:
#line 629 "parser.y"
{ yyval.circle = yyvsp[0].ptr->object.circle; ;
    break;}
case 169:
#line 632 "parser.y"
{ yyval.circle = C_PP_new(yyvsp[-3].point, yyvsp[-1].point); ;
    break;}
case 170:
#line 635 "parser.y"
{ yyval.circle = C_PPP_new(yyvsp[-5].point, yyvsp[-3].point, yyvsp[-1].point); ;
    break;}
case 171:
#line 638 "parser.y"
{ yyval.circle = C_PN_new(yyvsp[-3].point, yyvsp[-1].number); ;
    break;}
case 172:
#line 641 "parser.y"
{ yyval.circle = C_translation(yyvsp[-3].circle, yyvsp[-1].vector); ;
    break;}
case 173:
#line 644 "parser.y"
{ yyval.circle = C_reflection(yyvsp[-3].circle, yyvsp[-1].line); ;
    break;}
case 174:
#line 647 "parser.y"
{ yyval.circle = C_rotation(yyvsp[-3].circle, yyvsp[-1].point, 180); ;
    break;}
case 175:
#line 650 "parser.y"
{ yyval.circle = C_rotation(yyvsp[-5].circle, yyvsp[-3].point, yyvsp[-1].number); ;
    break;}
case 176:
#line 653 "parser.y"
{ yyval.circle = C_homothecy(yyvsp[-5].circle, yyvsp[-3].point, yyvsp[-1].number); ;
    break;}
case 177:
#line 656 "parser.y"
{ yyval.circle = C_incircle(yyvsp[-5].point, yyvsp[-3].point, yyvsp[-1].point); ;
    break;}
case 178:
#line 659 "parser.y"
{ yyval.circle = yyvsp[-1].circle; ;
    break;}
case 179:
#line 665 "parser.y"
{ yyval.conic = yyvsp[0].ptr->object.conic; ;
    break;}
case 180:
#line 668 "parser.y"
{ yyval.conic = Co_new(yyvsp[-5].point, yyvsp[-3].line, yyvsp[-1].number); ;
    break;}
case 181:
#line 671 "parser.y"
{ yyval.conic = Pa_new(yyvsp[-3].point, yyvsp[-1].line); ;
    break;}
case 182:
#line 674 "parser.y"
{ yyval.conic = Co_N_new(yyvsp[-5].point->x, yyvsp[-5].point->y, yyvsp[-1].number-90, fabs(yyvsp[-3].number), 0, PARABOLA); ;
    break;}
case 183:
#line 677 "parser.y"
{ yyval.conic = Co_PP_new(yyvsp[-5].point, yyvsp[-3].point, yyvsp[-1].number); ;
    break;}
case 184:
#line 680 "parser.y"
{ yyval.conic = Co_N_new(yyvsp[-7].point->x, yyvsp[-7].point->y, yyvsp[-1].number, fabs(yyvsp[-5].number), fabs(yyvsp[-3].number), ELLIPSE); ;
    break;}
case 185:
#line 683 "parser.y"
{ yyval.conic = Co_N_new(yyvsp[-7].point->x, yyvsp[-7].point->y, yyvsp[-1].number, fabs(yyvsp[-5].number), fabs(yyvsp[-3].number), HYPERBOLA); ;
    break;}
case 186:
#line 686 "parser.y"
{ yyval.conic = Co_translation(yyvsp[-3].conic, yyvsp[-1].vector); ;
    break;}
case 187:
#line 689 "parser.y"
{ yyval.conic = Co_reflection(yyvsp[-3].conic, yyvsp[-1].line); ;
    break;}
case 188:
#line 692 "parser.y"
{ yyval.conic = Co_rotation(yyvsp[-3].conic, yyvsp[-1].point, 180); ;
    break;}
case 189:
#line 695 "parser.y"
{ yyval.conic = Co_rotation(yyvsp[-5].conic, yyvsp[-3].point, yyvsp[-1].number); ;
    break;}
case 190:
#line 698 "parser.y"
{ yyval.conic = Co_homothecy(yyvsp[-5].conic, yyvsp[-3].point, yyvsp[-1].number); ;
    break;}
case 191:
#line 701 "parser.y"
{ yyval.conic = yyvsp[-1].conic; ;
    break;}
case 192:
#line 708 "parser.y"
{ LC_intersection(yyvsp[-7].ptr, yyvsp[-6].ptr, yyvsp[-3].line, yyvsp[-1].circle); ;
    break;}
case 193:
#line 711 "parser.y"
{ CC_intersection(yyvsp[-7].ptr, yyvsp[-6].ptr, yyvsp[-3].circle, yyvsp[-1].circle); ;
    break;}
case 194:
#line 714 "parser.y"
{ LCo_intersection(yyvsp[-7].ptr, yyvsp[-6].ptr, yyvsp[-3].line, yyvsp[-1].conic); ;
    break;}
case 195:
#line 717 "parser.y"
{ vertices(yyvsp[-5].ptr, yyvsp[-4].ptr, yyvsp[-1].conic); ;
    break;}
case 196:
#line 720 "parser.y"
{ foci(yyvsp[-5].ptr, yyvsp[-4].ptr, yyvsp[-1].conic); ;
    break;}
case 197:
#line 727 "parser.y"
{ T_scalenes(yyvsp[-3].ptr, yyvsp[-2].ptr, yyvsp[-1].ptr, 6, 0); ;
    break;}
case 198:
#line 730 "parser.y"
{ T_scalenes(yyvsp[-6].ptr, yyvsp[-5].ptr, yyvsp[-4].ptr, yyvsp[-1].number, 0); ;
    break;}
case 199:
#line 733 "parser.y"
{ T_scalenes(yyvsp[-8].ptr, yyvsp[-7].ptr, yyvsp[-6].ptr, yyvsp[-3].number, yyvsp[-1].number); ;
    break;}
case 200:
#line 736 "parser.y"
{ T_3N_triangle(yyvsp[-10].ptr, yyvsp[-9].ptr, yyvsp[-8].ptr, yyvsp[-5].number, yyvsp[-3].number, yyvsp[-1].number, 0); ;
    break;}
case 201:
#line 739 "parser.y"
{ T_2N_triangle(yyvsp[-8].ptr, yyvsp[-7].ptr, yyvsp[-6].ptr, yyvsp[-3].number, yyvsp[-1].number); ;
    break;}
case 202:
#line 743 "parser.y"
{ T_3N_triangle(yyvsp[-12].ptr, yyvsp[-11].ptr, yyvsp[-10].ptr, yyvsp[-7].number, yyvsp[-5].number, yyvsp[-3].number, yyvsp[-1].number); ;
    break;}
case 203:
#line 746 "parser.y"
{ T_2A_triangle(yyvsp[-10].ptr, yyvsp[-9].ptr, yyvsp[-8].ptr, yyvsp[-5].number, yyvsp[-3].number, yyvsp[-1].number, 0); ;
    break;}
case 204:
#line 750 "parser.y"
{ T_2A_triangle(yyvsp[-12].ptr, yyvsp[-11].ptr, yyvsp[-10].ptr, yyvsp[-7].number, yyvsp[-5].number, yyvsp[-3].number, yyvsp[-1].number); ;
    break;}
case 205:
#line 753 "parser.y"
{ T_A_triangle(yyvsp[-8].ptr, yyvsp[-7].ptr, yyvsp[-6].ptr, yyvsp[-3].number, yyvsp[-1].number); ;
    break;}
case 206:
#line 756 "parser.y"
{ T_2N_right(yyvsp[-3].ptr, yyvsp[-2].ptr, yyvsp[-1].ptr, 6, 4.5, 0); ;
    break;}
case 207:
#line 759 "parser.y"
{ T_N_right(yyvsp[-6].ptr, yyvsp[-5].ptr, yyvsp[-4].ptr, yyvsp[-1].number); ;
    break;}
case 208:
#line 762 "parser.y"
{ T_2N_right(yyvsp[-8].ptr, yyvsp[-7].ptr, yyvsp[-6].ptr, yyvsp[-3].number, yyvsp[-1].number, 0); ;
    break;}
case 209:
#line 765 "parser.y"
{ T_A_triangle(yyvsp[-6].ptr, yyvsp[-5].ptr, yyvsp[-4].ptr, yyvsp[-1].number, 90); ;
    break;}
case 210:
#line 768 "parser.y"
{ T_2A_triangle(yyvsp[-8].ptr, yyvsp[-7].ptr, yyvsp[-6].ptr, yyvsp[-3].number, yyvsp[-1].number, 90, 0); ;
    break;}
case 211:
#line 771 "parser.y"
{ T_2N_right(yyvsp[-10].ptr, yyvsp[-9].ptr, yyvsp[-8].ptr, yyvsp[-5].number, yyvsp[-3].number, yyvsp[-1].number); ;
    break;}
case 212:
#line 774 "parser.y"
{ T_2A_triangle(yyvsp[-10].ptr, yyvsp[-9].ptr, yyvsp[-8].ptr, yyvsp[-5].number, yyvsp[-3].number, 90, yyvsp[-1].number); ;
    break;}
case 213:
#line 777 "parser.y"
{ T_NA_isosceles(yyvsp[-3].ptr, yyvsp[-2].ptr, yyvsp[-1].ptr, 6, 39, 0); ;
    break;}
case 214:
#line 780 "parser.y"
{ T_A_isosceles(yyvsp[-6].ptr, yyvsp[-5].ptr, yyvsp[-4].ptr, yyvsp[-1].number); ;
    break;}
case 215:
#line 783 "parser.y"
{ T_NA_isosceles(yyvsp[-8].ptr, yyvsp[-7].ptr, yyvsp[-6].ptr, yyvsp[-3].number, yyvsp[-1].number, 0); ;
    break;}
case 216:
#line 786 "parser.y"
{ T_NA_isosceles(yyvsp[-10].ptr, yyvsp[-9].ptr, yyvsp[-8].ptr, yyvsp[-5].number, yyvsp[-3].number, yyvsp[-1].number); ;
    break;}
case 217:
#line 789 "parser.y"
{ T_N_isosceles(yyvsp[-6].ptr, yyvsp[-5].ptr, yyvsp[-4].ptr, yyvsp[-1].number); ;
    break;}
case 218:
#line 792 "parser.y"
{ T_2N_isosceles(yyvsp[-8].ptr, yyvsp[-7].ptr, yyvsp[-6].ptr, yyvsp[-3].number, yyvsp[-1].number, 0); ;
    break;}
case 219:
#line 795 "parser.y"
{ T_2N_isosceles(yyvsp[-10].ptr, yyvsp[-9].ptr, yyvsp[-8].ptr, yyvsp[-5].number, yyvsp[-3].number, yyvsp[-1].number); ;
    break;}
case 220:
#line 798 "parser.y"
{ T_E_equilateral(yyvsp[-3].ptr, yyvsp[-2].ptr, yyvsp[-1].ptr); ;
    break;}
case 221:
#line 801 "parser.y"
{ T_equilateral(yyvsp[-6].ptr, yyvsp[-5].ptr, yyvsp[-4].ptr, yyvsp[-1].number, 0); ;
    break;}
case 222:
#line 804 "parser.y"
{ T_equilateral(yyvsp[-8].ptr, yyvsp[-7].ptr, yyvsp[-6].ptr, yyvsp[-3].number, yyvsp[-1].number); ;
    break;}
case 223:
#line 811 "parser.y"
{ Q_E_parallelogram(yyvsp[-4].ptr, yyvsp[-3].ptr, yyvsp[-2].ptr, yyvsp[-1].ptr); ;
    break;}
case 224:
#line 815 "parser.y"
{ Q_S_parallelogram(yyvsp[-9].ptr, yyvsp[-8].ptr, yyvsp[-7].ptr, yyvsp[-6].ptr, yyvsp[-3].number, yyvsp[-1].number); ;
    break;}
case 225:
#line 819 "parser.y"
{ Q_parallelogram(yyvsp[-11].ptr, yyvsp[-10].ptr, yyvsp[-9].ptr, yyvsp[-8].ptr, yyvsp[-5].number, yyvsp[-3].number, yyvsp[-1].number, 0); ;
    break;}
case 226:
#line 823 "parser.y"
{ Q_parallelogram(yyvsp[-13].ptr, yyvsp[-12].ptr, yyvsp[-11].ptr, yyvsp[-10].ptr, yyvsp[-7].number, yyvsp[-5].number, yyvsp[-3].number, yyvsp[-1].number); ;
    break;}
case 227:
#line 827 "parser.y"
{ Q_V_parallelogram(yyvsp[-9].ptr, yyvsp[-8].ptr, yyvsp[-7].ptr, yyvsp[-6].ptr, yyvsp[-3].vector, yyvsp[-1].vector); ;
    break;}
case 228:
#line 830 "parser.y"
{ Q_E_rectangle(yyvsp[-4].ptr, yyvsp[-3].ptr, yyvsp[-2].ptr, yyvsp[-1].ptr); ;
    break;}
case 229:
#line 833 "parser.y"
{ Q_S_rectangle(yyvsp[-7].ptr, yyvsp[-6].ptr, yyvsp[-5].ptr, yyvsp[-4].ptr, yyvsp[-1].number); ;
    break;}
case 230:
#line 836 "parser.y"
{ Q_parallelogram(yyvsp[-9].ptr, yyvsp[-8].ptr, yyvsp[-7].ptr, yyvsp[-6].ptr, yyvsp[-3].number, yyvsp[-1].number, 90, 0); ;
    break;}
case 231:
#line 840 "parser.y"
{ Q_parallelogram(yyvsp[-11].ptr, yyvsp[-10].ptr, yyvsp[-9].ptr, yyvsp[-8].ptr, yyvsp[-5].number, yyvsp[-3].number, 90, yyvsp[-1].number); ;
    break;}
case 232:
#line 843 "parser.y"
{ Q_square(yyvsp[-4].ptr, yyvsp[-3].ptr, yyvsp[-2].ptr, yyvsp[-1].ptr); ;
    break;}
case 233:
#line 846 "parser.y"
{ Q_parallelogram(yyvsp[-7].ptr, yyvsp[-6].ptr, yyvsp[-5].ptr, yyvsp[-4].ptr, yyvsp[-1].number, yyvsp[-1].number, 90, 0); ;
    break;}
case 234:
#line 849 "parser.y"
{ Q_parallelogram(yyvsp[-9].ptr, yyvsp[-8].ptr, yyvsp[-7].ptr, yyvsp[-6].ptr, yyvsp[-3].number, yyvsp[-3].number, 90, yyvsp[-1].number); ;
    break;}
case 235:
#line 853 "parser.y"
{ pentagon(yyvsp[-12].ptr, yyvsp[-11].ptr, yyvsp[-10].ptr, yyvsp[-9].ptr ,yyvsp[-8].ptr, yyvsp[-5].point, yyvsp[-3].number, yyvsp[-1].number); ;
    break;}
case 236:
#line 857 "parser.y"
{ hexagon(yyvsp[-13].ptr, yyvsp[-12].ptr, yyvsp[-11].ptr, yyvsp[-10].ptr ,yyvsp[-9].ptr, yyvsp[-8].ptr, yyvsp[-5].point, yyvsp[-3].number, yyvsp[-1].number); ;
    break;}
case 237:
#line 863 "parser.y"
{ yyval.flag = UP; ;
    break;}
case 238:
#line 865 "parser.y"
{ yyval.flag = RIGHT; ;
    break;}
case 239:
#line 872 "parser.y"
{ yyvsp[-10].ptr->type = NUMBER; yyvsp[-10].ptr->object.number = yyvsp[-7].number; ;
    break;}
case 240:
#line 876 "parser.y"
{ yyvsp[-11].ptr->type = NUMBER; yyvsp[-11].ptr->object.number = -yyvsp[-7].number; ;
    break;}
case 241:
#line 881 "parser.y"
{ yyvsp[-14].ptr->type = NUMBER; yyvsp[-14].ptr->object.number = yyvsp[-11].number; ;
    break;}
case 242:
#line 886 "parser.y"
{ yyvsp[-15].ptr->type = NUMBER; yyvsp[-15].ptr->object.number = -yyvsp[-11].number; ;
    break;}
case 243:
#line 890 "parser.y"
{ yyvsp[-11].ptr->type = NUMBER; yyvsp[-11].ptr->object.number = yyvsp[-7].number; ;
    break;}
case 244:
#line 895 "parser.y"
{ yyvsp[-15].ptr->type = NUMBER; yyvsp[-15].ptr->object.number = yyvsp[-11].number; ;
    break;}
case 245:
#line 901 "parser.y"
{ yyval.flag =  DOT; ;
    break;}
case 246:
#line 903 "parser.y"
{ yyval.flag =  DISC; ;
    break;}
case 247:
#line 905 "parser.y"
{ yyval.flag =  BOX; ;
    break;}
case 248:
#line 907 "parser.y"
{ yyval.flag =  CROSS; ;
    break;}
case 249:
#line 909 "parser.y"
{ yyval.flag = PLUS; ;
    break;}
case 250:
#line 915 "parser.y"
{ yyval.flag =  ENTIRE; ;
    break;}
case 251:
#line 917 "parser.y"
{ yyval.flag =  HALFLINE; ;
    break;}
case 252:
#line 919 "parser.y"
{ yyval.flag =  BACKHALFLINE; ;
    break;}
case 253:
#line 925 "parser.y"
{ yyval.flag =  NOARROW; ;
    break;}
case 254:
#line 927 "parser.y"
{ yyval.flag =  ARROW; ;
    break;}
case 255:
#line 929 "parser.y"
{ yyval.flag =  BACKARROW; ;
    break;}
case 256:
#line 931 "parser.y"
{ yyval.flag =  DOUBLEARROW; ;
    break;}
case 257:
#line 937 "parser.y"
{ yyval.flag = FULL; ;
    break;}
case 258:
#line 939 "parser.y"
{ yyval.flag = DOTTED; ;
    break;}
case 259:
#line 941 "parser.y"
{ yyval.flag =  DASHED; ;
    break;}
case 260:
#line 947 "parser.y"
{ yyval.flag = SIMPLE; ;
    break;}
case 261:
#line 949 "parser.y"
{ yyval.flag = DOUBLE; ;
    break;}
case 262:
#line 951 "parser.y"
{ yyval.flag = TRIPLE; ;
    break;}
case 263:
#line 953 "parser.y"
{ yyval.flag = CROSS; ;
    break;}
case 264:
#line 959 "parser.y"
{ yyval.flag = SIMPLE; ;
    break;}
case 265:
#line 961 "parser.y"
{ yyval.flag = DOUBLE; ;
    break;}
case 266:
#line 963 "parser.y"
{ yyval.flag = TRIPLE; ;
    break;}
case 267:
#line 965 "parser.y"
{ yyval.flag = DASHED; ;
    break;}
case 268:
#line 967 "parser.y"
{ yyval.flag = ARROW; ;
    break;}
case 269:
#line 969 "parser.y"
{ yyval.flag =  BACKARROW; ;
    break;}
case 270:
#line 971 "parser.y"
{ yyval.flag = RIGHT; ;
    break;}
case 271:
#line 973 "parser.y"
{ yyval.flag = DOT; ;
    break;}
case 272:
#line 975 "parser.y"
{ yyval.flag = DOTTED; ;
    break;}
case 273:
#line 981 "parser.y"
{ yyval.flag = BLACK; ;
    break;}
case 274:
#line 983 "parser.y"
{ yyval.flag = DARKGRAY; ;
    break;}
case 275:
#line 985 "parser.y"
{ yyval.flag = GRAY; ;
    break;}
case 276:
#line 987 "parser.y"
{ yyval.flag = LIGHTGRAY; ;
    break;}
case 277:
#line 989 "parser.y"
{ yyval.flag = WHITE; ;
    break;}
case 278:
#line 991 "parser.y"
{ yyval.flag = RED; ;
    break;}
case 279:
#line 993 "parser.y"
{ yyval.flag = GREEN; ;
    break;}
case 280:
#line 995 "parser.y"
{ yyval.flag = BLUE; ;
    break;}
case 281:
#line 997 "parser.y"
{ yyval.flag = CYAN; ;
    break;}
case 282:
#line 999 "parser.y"
{ yyval.flag = MAGENTA; ;
    break;}
case 283:
#line 1001 "parser.y"
{ yyval.flag = YELLOW; ;
    break;}
case 284:
#line 1008 "parser.y"
{ frame(yyvsp[-7].number, yyvsp[-5].number, yyvsp[-3].number, yyvsp[-1].number, 1); ;
    break;}
case 285:
#line 1011 "parser.y"
{ frame(yyvsp[-9].number, yyvsp[-7].number, yyvsp[-5].number, yyvsp[-3].number, yyvsp[-1].number); ;
    break;}
case 286:
#line 1014 "parser.y"
{ frame(yyvsp[-7].number, yyvsp[-5].number, yyvsp[-3].number, yyvsp[-1].number, 1); ;
    break;}
case 287:
#line 1017 "parser.y"
{ frame(yyvsp[-9].number, yyvsp[-7].number, yyvsp[-5].number, yyvsp[-3].number, yyvsp[-1].number); ;
    break;}
case 288:
#line 1020 "parser.y"
{ setcolor_string(yyvsp[0].string); ;
    break;}
case 289:
#line 1023 "parser.y"
{ setcolor_flag(yyvsp[-1].flag); ;
    break;}
case 290:
#line 1026 "parser.y"
{ setthickness(yyvsp[-1].number); ;
    break;}
case 291:
#line 1029 "parser.y"
{ drawing_style = yyvsp[-1].flag; ;
    break;}
case 292:
#line 1032 "parser.y"
{ /* Nothing to do */ ;
    break;}
case 293:
#line 1035 "parser.y"
{ puttricks(yyvsp[0].string); ;
    break;}
case 294:
#line 1038 "parser.y"
{ strokes = yyvsp[-1].number<=3?4:yyvsp[-1].number>=299?300:(yyvsp[-1].number+1); ;
    break;}
case 295:
#line 1041 "parser.y"
{ /* Nothing to do */ ;
    break;}
case 296:
#line 1044 "parser.y"
{ /* Nothing to do */ ;
    break;}
case 297:
#line 1047 "parser.y"
{ /* Nothing to do */ ;
    break;}
case 298:
#line 1050 "parser.y"
{ draw_point(yyvsp[-1].point, DOT, 1); ;
    break;}
case 299:
#line 1053 "parser.y"
{ draw_point(yyvsp[-3].point, yyvsp[-1].flag, 1); ;
    break;}
case 300:
#line 1056 "parser.y"
{ draw_point(yyvsp[-5].point, yyvsp[-3].flag, yyvsp[-1].number); ;
    break;}
case 301:
#line 1059 "parser.y"
{ draw_vector(yyvsp[-3].vector, yyvsp[-1].point, drawing_style); ;
    break;}
case 302:
#line 1062 "parser.y"
{ draw_vector(yyvsp[-5].vector, yyvsp[-3].point, yyvsp[-1].flag); ;
    break;}
case 303:
#line 1065 "parser.y"
{ draw_line(yyvsp[-1].line, drawing_style, ENTIRE); ;
    break;}
case 304:
#line 1068 "parser.y"
{ draw_line(yyvsp[-3].line, yyvsp[-1].flag, ENTIRE); ;
    break;}
case 305:
#line 1071 "parser.y"
{ draw_line(yyvsp[-5].line, yyvsp[-3].flag, yyvsp[-1].flag); ;
    break;}
case 306:
#line 1074 "parser.y"
{ draw_segment(yyvsp[-1].segment, drawing_style, NOARROW); ;
    break;}
case 307:
#line 1077 "parser.y"
{ draw_segment(yyvsp[-3].segment, yyvsp[-1].flag, NOARROW); ;
    break;}
case 308:
#line 1080 "parser.y"
{ draw_segment(yyvsp[-5].segment, yyvsp[-3].flag, yyvsp[-1].flag); ;
    break;}
case 309:
#line 1083 "parser.y"
{ draw_circle(yyvsp[-1].circle, drawing_style); ;
    break;}
case 310:
#line 1086 "parser.y"
{ draw_arc(yyvsp[-5].circle, yyvsp[-3].number, yyvsp[-1].number, drawing_style, NOARROW); ;
    break;}
case 311:
#line 1089 "parser.y"
{ draw_circle(yyvsp[-3].circle, yyvsp[-1].flag); ;
    break;}
case 312:
#line 1092 "parser.y"
{ draw_arc(yyvsp[-7].circle, yyvsp[-5].number, yyvsp[-3].number, yyvsp[-1].flag, NOARROW); ;
    break;}
case 313:
#line 1096 "parser.y"
{ draw_arc(yyvsp[-9].circle, yyvsp[-7].number, yyvsp[-5].number, yyvsp[-3].flag, yyvsp[-1].flag); ;
    break;}
case 314:
#line 1099 "parser.y"
{ draw_conic(yyvsp[-1].conic, drawing_style); ;
    break;}
case 315:
#line 1102 "parser.y"
{ draw_conic(yyvsp[-3].conic, yyvsp[-1].flag); ;
    break;}
case 316:
#line 1105 "parser.y"
{ draw_conic_arc(yyvsp[-5].conic, yyvsp[-3].number, yyvsp[-1].number, drawing_style); ;
    break;}
case 317:
#line 1108 "parser.y"
{ draw_conic_arc(yyvsp[-7].conic, yyvsp[-5].number, yyvsp[-3].number, yyvsp[-1].flag); ;
    break;}
case 318:
#line 1111 "parser.y"
{ draw_digon(yyvsp[-3].point, yyvsp[-1].point, drawing_style, NOARROW); ;
    break;}
case 319:
#line 1114 "parser.y"
{ draw_digon(yyvsp[-5].point, yyvsp[-3].point, yyvsp[-1].flag, NOARROW); ;
    break;}
case 320:
#line 1117 "parser.y"
{ draw_digon(yyvsp[-7].point, yyvsp[-5].point, yyvsp[-3].flag, yyvsp[-1].flag); ;
    break;}
case 321:
#line 1120 "parser.y"
{ draw_triangle(yyvsp[-5].point, yyvsp[-3].point, yyvsp[-1].point, drawing_style); ;
    break;}
case 322:
#line 1123 "parser.y"
{ draw_triangle(yyvsp[-7].point, yyvsp[-5].point, yyvsp[-3].point, yyvsp[-1].flag); ;
    break;}
case 323:
#line 1126 "parser.y"
{ draw_quadrilateral(yyvsp[-7].point, yyvsp[-5].point, yyvsp[-3].point, yyvsp[-1].point, drawing_style); ;
    break;}
case 324:
#line 1130 "parser.y"
{ draw_quadrilateral(yyvsp[-9].point, yyvsp[-7].point, yyvsp[-5].point, yyvsp[-3].point, yyvsp[-1].flag); ;
    break;}
case 325:
#line 1133 "parser.y"
{ draw_pentagon(yyvsp[-9].point, yyvsp[-7].point, yyvsp[-5].point, yyvsp[-3].point, yyvsp[-1].point, drawing_style); ;
    break;}
case 326:
#line 1138 "parser.y"
{ draw_pentagon(yyvsp[-11].point, yyvsp[-9].point, yyvsp[-7].point, yyvsp[-5].point, yyvsp[-3].point, yyvsp[-1].flag); ;
    break;}
case 327:
#line 1143 "parser.y"
{ draw_hexagon(yyvsp[-11].point, yyvsp[-9].point, yyvsp[-7].point, yyvsp[-5].point, yyvsp[-3].point, yyvsp[-1].point, drawing_style); ;
    break;}
case 328:
#line 1148 "parser.y"
{ draw_hexagon(yyvsp[-13].point, yyvsp[-11].point, yyvsp[-9].point, yyvsp[-7].point, yyvsp[-5].point, yyvsp[-3].point, yyvsp[-1].flag); ;
    break;}
case 329:
#line 1151 "parser.y"
{ draw_P_label(yyvsp[-5].string, yyvsp[-3].point, .3, yyvsp[-1].number); ;
    break;}
case 330:
#line 1154 "parser.y"
{ draw_S_label(yyvsp[-5].string, yyvsp[-3].segment, .3, yyvsp[-1].number); ;
    break;}
case 331:
#line 1157 "parser.y"
{ draw_P_label(yyvsp[-7].string, yyvsp[-5].point, yyvsp[-3].number, yyvsp[-1].number); ;
    break;}
case 332:
#line 1160 "parser.y"
{ draw_S_label(yyvsp[-7].string, yyvsp[-5].segment, yyvsp[-3].number, yyvsp[-1].number); ;
    break;}
case 333:
#line 1163 "parser.y"
{ draw_P_N(yyvsp[-5].number, "%.2f", yyvsp[-3].point, .3, yyvsp[-1].number); ;
    break;}
case 334:
#line 1166 "parser.y"
{ draw_S_N(yyvsp[-5].number, "%.2f", yyvsp[-3].segment, .3, yyvsp[-1].number); ;
    break;}
case 335:
#line 1169 "parser.y"
{ draw_P_N(yyvsp[-7].number, yyvsp[-5].string, yyvsp[-3].point, .3, yyvsp[-1].number); ;
    break;}
case 336:
#line 1172 "parser.y"
{ draw_S_N(yyvsp[-7].number, yyvsp[-5].string, yyvsp[-3].segment, .3, yyvsp[-1].number); ;
    break;}
case 337:
#line 1175 "parser.y"
{ draw_P_NN(yyvsp[-9].number, yyvsp[-7].number, yyvsp[-5].string, yyvsp[-3].point, .3, yyvsp[-1].number); ;
    break;}
case 338:
#line 1178 "parser.y"
{ draw_S_NN(yyvsp[-9].number, yyvsp[-7].number, yyvsp[-5].string, yyvsp[-3].segment, .3, yyvsp[-1].number); ;
    break;}
case 339:
#line 1181 "parser.y"
{ draw_P_N(yyvsp[-7].number, "%.2f", yyvsp[-5].point, yyvsp[-3].number, yyvsp[-1].number); ;
    break;}
case 340:
#line 1184 "parser.y"
{ draw_S_N(yyvsp[-7].number, "%.2f", yyvsp[-5].segment, yyvsp[-3].number, yyvsp[-1].number); ;
    break;}
case 341:
#line 1187 "parser.y"
{ draw_P_N(yyvsp[-9].number, yyvsp[-7].string, yyvsp[-5].point, yyvsp[-3].number, yyvsp[-1].number); ;
    break;}
case 342:
#line 1190 "parser.y"
{ draw_S_N(yyvsp[-9].number, yyvsp[-7].string, yyvsp[-5].segment, yyvsp[-3].number, yyvsp[-1].number); ;
    break;}
case 343:
#line 1194 "parser.y"
{ draw_P_NN(yyvsp[-11].number, yyvsp[-9].number, yyvsp[-7].string, yyvsp[-5].point, yyvsp[-3].number, yyvsp[-1].number); ;
    break;}
case 344:
#line 1198 "parser.y"
{ draw_S_NN(yyvsp[-11].number, yyvsp[-9].number, yyvsp[-7].string, yyvsp[-5].segment, yyvsp[-3].number, yyvsp[-1].number); ;
    break;}
case 345:
#line 1201 "parser.y"
{ draw_label(yyvsp[-5].ptr->name, yyvsp[-5].ptr->object.point, yyvsp[-3].number, yyvsp[-1].number); ;
    break;}
case 346:
#line 1204 "parser.y"
{ draw_label(yyvsp[-3].ptr->name, yyvsp[-3].ptr->object.point, .3, yyvsp[-1].number); ;
    break;}
case 347:
#line 1207 "parser.y"
{ mark_S(yyvsp[-1].segment, SIMPLE, 1); ;
    break;}
case 348:
#line 1210 "parser.y"
{ mark_S(yyvsp[-3].segment, yyvsp[-1].flag, 1); ;
    break;}
case 349:
#line 1213 "parser.y"
{ mark_S(yyvsp[-5].segment, yyvsp[-3].flag, yyvsp[-1].number); ;
    break;}
case 350:
#line 1216 "parser.y"
{ mark_A(yyvsp[-5].point, yyvsp[-3].point, yyvsp[-1].point, SIMPLE, 1); ;
    break;}
case 351:
#line 1219 "parser.y"
{ mark_A(yyvsp[-7].point, yyvsp[-5].point, yyvsp[-3].point, yyvsp[-1].flag, 1); ;
    break;}
case 352:
#line 1223 "parser.y"
{ mark_A(yyvsp[-9].point, yyvsp[-7].point, yyvsp[-5].point, yyvsp[-3].flag, yyvsp[-1].number); ;
    break;}
case 353:
#line 1225 "parser.y"
{ default_frame(); printf("\\%s",yyvsp[0].string); ;
    break;}
case 354:
#line 1226 "parser.y"
{printf("\n");;
    break;}
case 356:
#line 1230 "parser.y"
{ printf("["); ;
    break;}
case 357:
#line 1230 "parser.y"
{ printf("]"); ;
    break;}
case 362:
#line 1241 "parser.y"
{ printf("(%.4f,%.4f)",yyvsp[0].point->x,yyvsp[0].point->y); ;
    break;}
case 363:
#line 1242 "parser.y"
{ printf("{%.4f}",yyvsp[0].number); ;
    break;}
case 364:
#line 1243 "parser.y"
{ printf("{%s}",yyvsp[0].string); ;
    break;}
case 366:
#line 1247 "parser.y"
{ fputs(",",stdout); ;
    break;}
case 368:
#line 1250 "parser.y"
{ fputs(yyvsp[0].string,stdout); ;
    break;}
case 369:
#line 1251 "parser.y"
{ printf("%s=%s",yyvsp[-2].string,yyvsp[0].string); ;
    break;}
case 370:
#line 1252 "parser.y"
{ printf("%s=%.4f",yyvsp[-2].string,yyvsp[0].number); ;
    break;}
case 371:
#line 1255 "parser.y"
{ yyval.string=yyvsp[0].string; ;
    break;}
case 372:
#line 1256 "parser.y"
{ yyval.string=yyvsp[0].ptr->name; ;
    break;}
case 373:
#line 1257 "parser.y"
{ yyval.string="angle"; ;
    break;}
case 374:
#line 1258 "parser.y"
{ yyval.string="radius"; ;
    break;}
case 375:
#line 1259 "parser.y"
{ yyval.string="style"; ;
    break;}
case 378:
#line 1268 "parser.y"
{ 
      if (traceind>0) { yyerror("parse error"); return 0; }
      tracevar = yyvsp[-5].ptr;
      yyvsp[-5].ptr->type = NUMBER;
      yyvsp[-5].ptr->object.number = yyvsp[-3].number;
      traceind = 0;
      tracebegin = yyvsp[-3].number;
      tracestep = (yyvsp[-1].number-yyvsp[-3].number)/(strokes-1);
      tracestyle = drawing_style;
    ;
    break;}
case 379:
#line 1280 "parser.y"
{ 
      if (traceind>0) { yyerror("parse error"); return 0; }
      tracevar = yyvsp[-7].ptr;
      yyvsp[-7].ptr->type = NUMBER;
      yyvsp[-7].ptr->object.number = yyvsp[-5].number;
      traceind = 0;
      tracebegin = yyvsp[-5].number;
      tracestep = (yyvsp[-3].number-yyvsp[-5].number)/(strokes-1);
      tracestyle = yyvsp[-1].flag;
    ;
    break;}
case 380:
#line 1292 "parser.y"
{
      if (traceind >= 0) {
	add_point(yyvsp[-2].point, tracestyle);
	traceind++;
	tracevar->object.number = tracebegin+traceind*tracestep;
	if (traceind == strokes) {
	  traceind = -1;
	  printf("\n");
	}
      }
    ;
    break;}
}

#line 705 "/usr/local/share/bison/bison.simple"


  yyvsp -= yylen;
  yyssp -= yylen;
#if YYLSP_NEEDED
  yylsp -= yylen;
#endif

#if YYDEBUG
  if (yydebug)
    {
      short *yyssp1 = yyss - 1;
      YYFPRINTF (stderr, "state stack now");
      while (yyssp1 != yyssp)
	YYFPRINTF (stderr, " %d", *++yyssp1);
      YYFPRINTF (stderr, "\n");
    }
#endif

  *++yyvsp = yyval;
#if YYLSP_NEEDED
  *++yylsp = yyloc;
#endif

  /* Now `shift' the result of the reduction.  Determine what state
     that goes to, based on the state we popped back to and the rule
     number reduced by.  */

  yyn = yyr1[yyn];

  yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
  if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
    yystate = yytable[yystate];
  else
    yystate = yydefgoto[yyn - YYNTBASE];

  goto yynewstate;


/*------------------------------------.
| yyerrlab -- here on detecting error |
`------------------------------------*/
yyerrlab:
  /* If not already recovering from an error, report this error.  */
  if (!yyerrstatus)
    {
      ++yynerrs;

#ifdef YYERROR_VERBOSE
      yyn = yypact[yystate];

      if (yyn > YYFLAG && yyn < YYLAST)
	{
	  YYSIZE_T yysize = 0;
	  char *yymsg;
	  int yyx, yycount;

	  yycount = 0;
	  /* Start YYX at -YYN if negative to avoid negative indexes in
	     YYCHECK.  */
	  for (yyx = yyn < 0 ? -yyn : 0;
	       yyx < (int) (sizeof (yytname) / sizeof (char *)); yyx++)
	    if (yycheck[yyx + yyn] == yyx)
	      yysize += yystrlen (yytname[yyx]) + 15, yycount++;
	  yysize += yystrlen ("parse error, unexpected ") + 1;
	  yysize += yystrlen (yytname[YYTRANSLATE (yychar)]);
	  yymsg = (char *) YYSTACK_ALLOC (yysize);
	  if (yymsg != 0)
	    {
	      char *yyp = yystpcpy (yymsg, "parse error, unexpected ");
	      yyp = yystpcpy (yyp, yytname[YYTRANSLATE (yychar)]);

	      if (yycount < 5)
		{
		  yycount = 0;
		  for (yyx = yyn < 0 ? -yyn : 0;
		       yyx < (int) (sizeof (yytname) / sizeof (char *));
		       yyx++)
		    if (yycheck[yyx + yyn] == yyx)
		      {
			const char *yyq = ! yycount ? ", expecting " : " or ";
			yyp = yystpcpy (yyp, yyq);
			yyp = yystpcpy (yyp, yytname[yyx]);
			yycount++;
		      }
		}
	      yyerror (yymsg);
	      YYSTACK_FREE (yymsg);
	    }
	  else
	    yyerror ("parse error; also virtual memory exhausted");
	}
      else
#endif /* defined (YYERROR_VERBOSE) */
	yyerror ("parse error");
    }
  goto yyerrlab1;


/*--------------------------------------------------.
| yyerrlab1 -- error raised explicitly by an action |
`--------------------------------------------------*/
yyerrlab1:
  if (yyerrstatus == 3)
    {
      /* If just tried and failed to reuse lookahead token after an
	 error, discard it.  */

      /* return failure if at end of input */
      if (yychar == YYEOF)
	YYABORT;
      YYDPRINTF ((stderr, "Discarding token %d (%s).\n",
		  yychar, yytname[yychar1]));
      yychar = YYEMPTY;
    }

  /* Else will try to reuse lookahead token after shifting the error
     token.  */

  yyerrstatus = 3;		/* Each real token shifted decrements this */

  goto yyerrhandle;


/*-------------------------------------------------------------------.
| yyerrdefault -- current state does not do anything special for the |
| error token.                                                       |
`-------------------------------------------------------------------*/
yyerrdefault:
#if 0
  /* This is wrong; only states that explicitly want error tokens
     should shift them.  */

  /* If its default is to accept any token, ok.  Otherwise pop it.  */
  yyn = yydefact[yystate];
  if (yyn)
    goto yydefault;
#endif


/*---------------------------------------------------------------.
| yyerrpop -- pop the current state because it cannot handle the |
| error token                                                    |
`---------------------------------------------------------------*/
yyerrpop:
  if (yyssp == yyss)
    YYABORT;
  yyvsp--;
  yystate = *--yyssp;
#if YYLSP_NEEDED
  yylsp--;
#endif

#if YYDEBUG
  if (yydebug)
    {
      short *yyssp1 = yyss - 1;
      YYFPRINTF (stderr, "Error: state stack now");
      while (yyssp1 != yyssp)
	YYFPRINTF (stderr, " %d", *++yyssp1);
      YYFPRINTF (stderr, "\n");
    }
#endif

/*--------------.
| yyerrhandle.  |
`--------------*/
yyerrhandle:
  yyn = yypact[yystate];
  if (yyn == YYFLAG)
    goto yyerrdefault;

  yyn += YYTERROR;
  if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
    goto yyerrdefault;

  yyn = yytable[yyn];
  if (yyn < 0)
    {
      if (yyn == YYFLAG)
	goto yyerrpop;
      yyn = -yyn;
      goto yyreduce;
    }
  else if (yyn == 0)
    goto yyerrpop;

  if (yyn == YYFINAL)
    YYACCEPT;

  YYDPRINTF ((stderr, "Shifting error token, "));

  *++yyvsp = yylval;
#if YYLSP_NEEDED
  *++yylsp = yylloc;
#endif

  yystate = yyn;
  goto yynewstate;


/*-------------------------------------.
| yyacceptlab -- YYACCEPT comes here.  |
`-------------------------------------*/
yyacceptlab:
  yyresult = 0;
  goto yyreturn;

/*-----------------------------------.
| yyabortlab -- YYABORT comes here.  |
`-----------------------------------*/
yyabortlab:
  yyresult = 1;
  goto yyreturn;

/*---------------------------------------------.
| yyoverflowab -- parser overflow comes here.  |
`---------------------------------------------*/
yyoverflowlab:
  yyerror ("parser stack overflow");
  yyresult = 2;
  /* Fall through.  */

yyreturn:
#ifndef yyoverflow
  if (yyss != yyssa)
    YYSTACK_FREE (yyss);
#endif
  return yyresult;
}
#line 1305 "parser.y"



syntax highlighted by Code2HTML, v. 0.9.1