
/*  A Bison parser, made from parse.y with Bison version GNU Bison version 1.22
  */

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

#define	IDENTIFIER	258
#define	TYPENAME	259
#define	SCSPEC	260
#define	TYPESPEC	261
#define	TYPE_QUAL	262
#define	CONSTANT	263
#define	STRING	264
#define	ELLIPSIS	265
#define	SIZEOF	266
#define	ENUM	267
#define	IF	268
#define	ELSE	269
#define	WHILE	270
#define	DO	271
#define	FOR	272
#define	SWITCH	273
#define	CASE	274
#define	DEFAULT	275
#define	BREAK	276
#define	CONTINUE	277
#define	RETURN	278
#define	GOTO	279
#define	ASM_KEYWORD	280
#define	GCC_ASM_KEYWORD	281
#define	TYPEOF	282
#define	ALIGNOF	283
#define	HEADOF	284
#define	CLASSOF	285
#define	SIGOF	286
#define	ATTRIBUTE	287
#define	EXTENSION	288
#define	LABEL	289
#define	AGGR	290
#define	VISSPEC	291
#define	DELETE	292
#define	NEW	293
#define	OVERLOAD	294
#define	THIS	295
#define	OPERATOR	296
#define	CXX_TRUE	297
#define	CXX_FALSE	298
#define	LEFT_RIGHT	299
#define	TEMPLATE	300
#define	TYPEID	301
#define	DYNAMIC_CAST	302
#define	STATIC_CAST	303
#define	REINTERPRET_CAST	304
#define	CONST_CAST	305
#define	SCOPE	306
#define	EMPTY	307
#define	PTYPENAME	308
#define	ASSIGN	309
#define	OROR	310
#define	ANDAND	311
#define	MIN_MAX	312
#define	EQCOMPARE	313
#define	ARITHCOMPARE	314
#define	LSHIFT	315
#define	RSHIFT	316
#define	POINTSAT_STAR	317
#define	DOT_STAR	318
#define	UNARY	319
#define	PLUSPLUS	320
#define	MINUSMINUS	321
#define	HYPERUNARY	322
#define	PAREN_STAR_PAREN	323
#define	POINTSAT	324
#define	TRY	325
#define	CATCH	326
#define	THROW	327
#define	TYPENAME_ELLIPSIS	328
#define	PRE_PARSED_FUNCTION_DECL	329
#define	EXTERN_LANG_STRING	330
#define	ALL	331
#define	PRE_PARSED_CLASS_DECL	332
#define	TYPENAME_DEFN	333
#define	IDENTIFIER_DEFN	334
#define	PTYPENAME_DEFN	335
#define	END_OF_SAVED_INPUT	336

#line 42 "parse.y"

/* Cause the `yydebug' variable to be defined.  */
#define YYDEBUG 1

#include "config.h"

#include <stdio.h>
#include <errno.h>

#include "tree.h"
#include "input.h"
#include "flags.h"
#include "lex.h"
#include "cp-tree.h"

/* Since parsers are distinct for each language, put the language string
   definition here.  (fnf) */
char *language_string = "GNU C++";

extern tree void_list_node;
extern struct obstack permanent_obstack;

#ifndef errno
extern int errno;
#endif

extern int end_of_file;
extern int current_class_depth;

void yyerror ();

/* Like YYERROR but do call yyerror.  */
#define YYERROR1 { yyerror ("syntax error"); YYERROR; }

#define OP0(NODE) (TREE_OPERAND (NODE, 0))
#define OP1(NODE) (TREE_OPERAND (NODE, 1))

/* Contains the statement keyword (if/while/do) to include in an
   error message if the user supplies an empty conditional expression.  */
static char *cond_stmt_keyword;

/* Nonzero if we have an `extern "C"' acting as an extern specifier.  */
int have_extern_spec;
int used_extern_spec;

void yyhook ();

/* Cons up an empty parameter list.  */
#ifdef __GNUC__
__inline
#endif
static tree
empty_parms ()
{
  tree parms;

  if (strict_prototype)
    parms = void_list_node;
  else
    parms = NULL_TREE;
  return parms;
}

#line 108 "parse.y"
typedef union {long itype; tree ttype; char *strtype; enum tree_code code; } YYSTYPE;
#line 277 "parse.y"

/* List of types and structure classes of the current declaration.  */
static tree current_declspecs;

/* When defining an aggregate, this is the most recent one being defined.  */
static tree current_aggr;

/* Tell yyparse how to print a token's value, if yydebug is set.  */

#define YYPRINT(FILE,YYCHAR,YYLVAL) yyprint(FILE,YYCHAR,YYLVAL)
extern void yyprint ();
extern tree combine_strings		PROTO((tree));

#ifndef YYLTYPE
typedef
  struct yyltype
    {
      int timestamp;
      int first_line;
      int first_column;
      int last_line;
      int last_column;
      char *text;
   }
  yyltype;

#define YYLTYPE yyltype
#endif

#include <stdio.h>

#ifndef __cplusplus
#ifndef __STDC__
#define const
#endif
#endif



#define	YYFINAL		1356
#define	YYFLAG		-32768
#define	YYNTBASE	106

#define YYTRANSLATE(x) ((unsigned)(x) <= 336 ? yytranslate[x] : 338)

static const char yytranslate[] = {     0,
     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,   104,     2,     2,     2,    77,    65,     2,    88,
   102,    75,    73,    55,    74,    87,    76,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,    60,    56,    69,
    58,    70,    59,     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,
    89,     2,   105,    64,     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,    54,    63,   103,    83,     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,     2,     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,    57,    61,
    62,    66,    67,    68,    71,    72,    78,    79,    80,    81,
    82,    84,    85,    86,    90,    91,    92,    93,    94,    95,
    96,    97,    98,    99,   100,   101
};

#if YYDEBUG != 0
static const short yyprhs[] = {     0,
     0,     1,     3,     4,     7,    10,    11,    12,    14,    16,
    17,    20,    22,    24,    26,    28,    34,    39,    43,    48,
    53,    55,    56,    62,    64,    68,    70,    73,    75,    79,
    81,    85,    87,    91,    92,    98,    99,   105,   106,   112,
   113,   119,   123,   127,   134,   142,   147,   151,   155,   157,
   159,   161,   163,   165,   168,   172,   176,   180,   184,   187,
   190,   193,   196,   199,   201,   205,   210,   214,   220,   225,
   229,   233,   236,   240,   244,   247,   249,   256,   261,   265,
   269,   272,   275,   277,   281,   286,   289,   293,   294,   295,
   297,   301,   304,   308,   310,   315,   318,   323,   326,   331,
   334,   336,   338,   340,   342,   344,   346,   348,   350,   354,
   358,   363,   368,   372,   377,   381,   386,   387,   389,   393,
   395,   397,   398,   405,   406,   408,   409,   412,   414,   416,
   418,   420,   422,   424,   426,   428,   432,   434,   438,   439,
   441,   443,   444,   453,   455,   458,   463,   468,   470,   474,
   478,   482,   486,   488,   490,   492,   493,   497,   500,   503,
   506,   509,   512,   515,   520,   523,   528,   531,   535,   539,
   544,   549,   555,   561,   568,   571,   576,   582,   586,   590,
   594,   596,   600,   603,   607,   612,   614,   617,   623,   625,
   630,   635,   640,   642,   646,   650,   654,   658,   662,   666,
   670,   674,   678,   682,   686,   690,   694,   698,   702,   706,
   710,   714,   718,   724,   728,   732,   734,   737,   741,   743,
   745,   747,   749,   751,   753,   755,   758,   761,   765,   767,
   769,   771,   775,   777,   779,   781,   783,   787,   791,   792,
   797,   798,   805,   808,   813,   816,   819,   821,   826,   828,
   836,   844,   852,   860,   865,   870,   873,   876,   878,   883,
   886,   889,   892,   898,   902,   908,   912,   917,   924,   926,
   929,   931,   934,   936,   938,   940,   943,   944,   947,   950,
   954,   958,   962,   966,   970,   973,   976,   978,   980,   982,
   985,   988,   991,   994,   996,   998,  1000,  1002,  1005,  1008,
  1012,  1016,  1021,  1023,  1026,  1029,  1031,  1033,  1036,  1039,
  1041,  1044,  1047,  1051,  1053,  1056,  1058,  1060,  1062,  1067,
  1072,  1077,  1082,  1084,  1086,  1088,  1090,  1094,  1096,  1100,
  1102,  1106,  1107,  1112,  1113,  1121,  1126,  1127,  1135,  1140,
  1141,  1149,  1154,  1155,  1163,  1168,  1169,  1171,  1173,  1176,
  1183,  1185,  1189,  1190,  1192,  1197,  1204,  1209,  1211,  1213,
  1215,  1217,  1219,  1223,  1225,  1228,  1232,  1237,  1239,  1241,
  1245,  1250,  1257,  1261,  1267,  1268,  1276,  1281,  1282,  1289,
  1293,  1296,  1299,  1304,  1306,  1307,  1309,  1310,  1312,  1314,
  1317,  1320,  1323,  1326,  1330,  1333,  1336,  1339,  1343,  1347,
  1349,  1352,  1353,  1354,  1358,  1362,  1365,  1367,  1369,  1370,
  1372,  1375,  1377,  1381,  1383,  1386,  1388,  1393,  1398,  1400,
  1402,  1405,  1408,  1410,  1411,  1413,  1418,  1422,  1424,  1427,
  1430,  1433,  1436,  1439,  1442,  1445,  1448,  1453,  1456,  1458,
  1464,  1468,  1469,  1471,  1475,  1476,  1478,  1482,  1484,  1486,
  1488,  1490,  1495,  1502,  1507,  1512,  1519,  1524,  1528,  1533,
  1540,  1545,  1550,  1557,  1562,  1566,  1568,  1572,  1574,  1578,
  1581,  1583,  1590,  1591,  1594,  1596,  1599,  1600,  1603,  1607,
  1611,  1614,  1617,  1621,  1623,  1625,  1627,  1630,  1636,  1642,
  1646,  1652,  1657,  1661,  1665,  1668,  1670,  1674,  1678,  1681,
  1684,  1688,  1690,  1694,  1698,  1701,  1704,  1708,  1710,  1716,
  1722,  1726,  1732,  1736,  1741,  1745,  1748,  1751,  1753,  1756,
  1761,  1766,  1769,  1771,  1773,  1775,  1778,  1781,  1784,  1786,
  1789,  1791,  1794,  1797,  1801,  1803,  1807,  1810,  1814,  1817,
  1820,  1824,  1826,  1830,  1835,  1839,  1842,  1845,  1847,  1851,
  1854,  1857,  1859,  1862,  1866,  1868,  1872,  1874,  1880,  1884,
  1889,  1893,  1898,  1901,  1904,  1908,  1911,  1913,  1915,  1918,
  1921,  1924,  1925,  1926,  1928,  1930,  1933,  1937,  1939,  1942,
  1946,  1952,  1959,  1965,  1966,  1967,  1974,  1976,  1979,  1981,
  1983,  1985,  1988,  1989,  1994,  1996,  1997,  1998,  2005,  2006,
  2007,  2015,  2016,  2017,  2018,  2029,  2030,  2031,  2032,  2043,
  2044,  2052,  2053,  2059,  2060,  2068,  2069,  2074,  2077,  2080,
  2083,  2087,  2094,  2103,  2114,  2127,  2132,  2136,  2139,  2142,
  2144,  2146,  2147,  2148,  2156,  2158,  2161,  2164,  2165,  2166,
  2172,  2174,  2176,  2180,  2184,  2187,  2190,  2193,  2197,  2202,
  2207,  2211,  2216,  2223,  2230,  2231,  2233,  2234,  2236,  2238,
  2239,  2241,  2243,  2247,  2252,  2254,  2258,  2259,  2261,  2263,
  2265,  2268,  2271,  2274,  2276,  2278,  2281,  2284,  2287,  2290,
  2292,  2296,  2299,  2302,  2307,  2310,  2313,  2316,  2319,  2322,
  2325,  2327,  2330,  2332,  2336,  2338,  2340,  2341,  2342,  2344,
  2345,  2350,  2352,  2354,  2358,  2359,  2363,  2367,  2371,  2373,
  2376,  2379,  2382,  2385,  2388,  2391,  2394,  2397,  2400,  2403,
  2406,  2409,  2412,  2415,  2418,  2421,  2424,  2427,  2430,  2433,
  2436,  2439,  2442,  2446,  2449,  2452,  2455,  2458,  2462,  2465,
  2468,  2473,  2478,  2482
};

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

#endif

#if YYDEBUG != 0
static const short yyrline[] = { 0,
   292,   293,   307,   309,   310,   314,   319,   323,   325,   328,
   331,   335,   338,   340,   342,   343,   346,   348,   350,   353,
   358,   363,   366,   370,   373,   377,   387,   391,   401,   403,
   406,   411,   413,   417,   423,   423,   426,   426,   429,   429,
   444,   444,   449,   454,   471,   494,   504,   505,   508,   509,
   510,   511,   512,   515,   518,   521,   526,   531,   537,   539,
   540,   559,   560,   561,   564,   578,   591,   594,   597,   600,
   602,   604,   608,   614,   619,   624,   631,   642,   649,   651,
   653,   657,   665,   667,   669,   671,   675,   688,   711,   714,
   716,   717,   720,   726,   732,   734,   736,   738,   741,   745,
   751,   753,   754,   757,   759,   762,   764,   765,   768,   771,
   773,   775,   779,   784,   787,   789,   793,   798,   801,   805,
   808,   811,   845,   861,   864,   868,   871,   875,   877,   879,
   881,   883,   887,   889,   892,   897,   902,   907,   912,   915,
   918,   922,   941,   948,   951,   954,   956,   958,   962,   966,
   969,   971,   975,   978,   981,   990,   993,   996,   998,  1000,
  1002,  1009,  1020,  1040,  1042,  1044,  1049,  1051,  1053,  1055,
  1057,  1060,  1062,  1064,  1067,  1069,  1073,  1079,  1082,  1089,
  1092,  1094,  1102,  1111,  1117,  1123,  1125,  1127,  1140,  1142,
  1144,  1146,  1163,  1166,  1168,  1170,  1172,  1174,  1176,  1178,
  1180,  1182,  1184,  1186,  1188,  1190,  1192,  1194,  1196,  1198,
  1200,  1202,  1204,  1206,  1208,  1215,  1217,  1234,  1237,  1238,
  1239,  1242,  1244,  1247,  1249,  1250,  1252,  1254,  1258,  1260,
  1261,  1264,  1268,  1288,  1289,  1290,  1292,  1294,  1296,  1304,
  1325,  1330,  1337,  1344,  1346,  1355,  1360,  1383,  1427,  1428,
  1431,  1434,  1437,  1440,  1442,  1445,  1484,  1491,  1493,  1495,
  1497,  1499,  1501,  1516,  1531,  1542,  1554,  1561,  1610,  1612,
  1616,  1618,  1622,  1625,  1630,  1632,  1636,  1649,  1650,  1656,
  1667,  1675,  1681,  1686,  1688,  1693,  1700,  1702,  1706,  1710,
  1716,  1719,  1721,  1723,  1725,  1733,  1735,  1737,  1740,  1742,
  1744,  1746,  1751,  1757,  1759,  1770,  1773,  1775,  1778,  1793,
  1796,  1798,  1800,  1804,  1807,  1815,  1816,  1817,  1818,  1822,
  1826,  1840,  1858,  1859,  1860,  1863,  1865,  1868,  1870,  1873,
  1875,  1878,  1881,  1885,  1902,  1904,  1922,  1928,  1929,  1935,
  1943,  1945,  1954,  1962,  1964,  1975,  1978,  1982,  1985,  1989,
  1994,  1997,  2001,  2004,  2006,  2008,  2010,  2017,  2019,  2020,
  2021,  2025,  2028,  2032,  2034,  2037,  2040,  2043,  2049,  2052,
  2055,  2057,  2059,  2061,  2065,  2069,  2073,  2076,  2079,  2083,
  2086,  2088,  2092,  2143,  2158,  2160,  2163,  2165,  2169,  2170,
  2172,  2174,  2176,  2180,  2189,  2192,  2194,  2196,  2202,  2204,
  2207,  2212,  2215,  2218,  2227,  2238,  2243,  2243,  2245,  2248,
  2250,  2254,  2256,  2260,  2288,  2319,  2321,  2343,  2367,  2369,
  2373,  2399,  2408,  2470,  2473,  2480,  2491,  2500,  2504,  2517,
  2520,  2522,  2527,  2529,  2533,  2541,  2545,  2548,  2550,  2561,
  2566,  2574,  2577,  2578,  2589,  2592,  2593,  2604,  2606,  2609,
  2611,  2614,  2619,  2623,  2629,  2634,  2638,  2642,  2648,  2652,
  2655,  2660,  2664,  2667,  2670,  2679,  2681,  2685,  2688,  2693,
  2696,  2700,  2709,  2712,  2716,  2719,  2727,  2729,  2734,  2737,
  2739,  2741,  2743,  2747,  2750,  2764,  2767,  2772,  2775,  2777,
  2779,  2781,  2783,  2785,  2787,  2791,  2797,  2800,  2802,  2804,
  2806,  2810,  2813,  2816,  2818,  2820,  2822,  2826,  2829,  2832,
  2834,  2836,  2838,  2840,  2842,  2846,  2852,  2858,  2860,  2864,
  2867,  2869,  2873,  2875,  2878,  2880,  2886,  2889,  2903,  2905,
  2909,  2911,  2915,  2918,  2924,  2930,  2933,  2935,  2937,  2939,
  2943,  2947,  2951,  2954,  2959,  2962,  2964,  2966,  2968,  2970,
  2972,  2974,  2976,  2980,  2984,  2988,  2992,  2993,  2995,  2997,
  2999,  3001,  3003,  3005,  3007,  3009,  3017,  3019,  3020,  3021,
  3024,  3031,  3041,  3043,  3048,  3050,  3053,  3067,  3070,  3073,
  3077,  3081,  3085,  3091,  3094,  3098,  3100,  3103,  3109,  3112,
  3115,  3118,  3131,  3134,  3139,  3145,  3150,  3153,  3158,  3162,
  3165,  3171,  3176,  3179,  3184,  3193,  3197,  3200,  3206,  3216,
  3223,  3229,  3254,  3254,  3286,  3286,  3302,  3302,  3306,  3310,
  3313,  3318,  3325,  3334,  3343,  3352,  3355,  3361,  3363,  3367,
  3369,  3372,  3376,  3379,  3382,  3390,  3394,  3400,  3402,  3404,
  3408,  3410,  3413,  3426,  3431,  3439,  3441,  3445,  3448,  3450,
  3454,  3457,  3459,  3461,  3467,  3471,  3475,  3478,  3479,  3485,
  3487,  3490,  3492,  3496,  3501,  3504,  3514,  3521,  3522,  3529,
  3535,  3540,  3544,  3549,  3556,  3560,  3564,  3569,  3580,  3594,
  3597,  3599,  3601,  3603,  3607,  3609,  3617,  3634,  3636,  3638,
  3640,  3642,  3646,  3649,  3653,  3655,  3658,  3680,  3686,  3693,
  3696,  3700,  3705,  3707,  3714,  3717,  3719,  3721,  3727,  3731,
  3734,  3736,  3738,  3740,  3742,  3744,  3746,  3748,  3750,  3752,
  3754,  3756,  3758,  3760,  3762,  3764,  3766,  3768,  3770,  3772,
  3774,  3776,  3778,  3780,  3782,  3784,  3786,  3788,  3790,  3792,
  3794,  3796,  3799,  3801
};

static const char * const yytname[] = {   "$","error","$illegal.","IDENTIFIER",
"TYPENAME","SCSPEC","TYPESPEC","TYPE_QUAL","CONSTANT","STRING","ELLIPSIS","SIZEOF",
"ENUM","IF","ELSE","WHILE","DO","FOR","SWITCH","CASE","DEFAULT","BREAK","CONTINUE",
"RETURN","GOTO","ASM_KEYWORD","GCC_ASM_KEYWORD","TYPEOF","ALIGNOF","HEADOF",
"CLASSOF","SIGOF","ATTRIBUTE","EXTENSION","LABEL","AGGR","VISSPEC","DELETE",
"NEW","OVERLOAD","THIS","OPERATOR","CXX_TRUE","CXX_FALSE","LEFT_RIGHT","TEMPLATE",
"TYPEID","DYNAMIC_CAST","STATIC_CAST","REINTERPRET_CAST","CONST_CAST","SCOPE",
"EMPTY","PTYPENAME","'{'","','","';'","ASSIGN","'='","'?'","':'","OROR","ANDAND",
"'|'","'^'","'&'","MIN_MAX","EQCOMPARE","ARITHCOMPARE","'<'","'>'","LSHIFT",
"RSHIFT","'+'","'-'","'*'","'/'","'%'","POINTSAT_STAR","DOT_STAR","UNARY","PLUSPLUS",
"MINUSMINUS","'~'","HYPERUNARY","PAREN_STAR_PAREN","POINTSAT","'.'","'('","'['",
"TRY","CATCH","THROW","TYPENAME_ELLIPSIS","PRE_PARSED_FUNCTION_DECL","EXTERN_LANG_STRING",
"ALL","PRE_PARSED_CLASS_DECL","TYPENAME_DEFN","IDENTIFIER_DEFN","PTYPENAME_DEFN",
"END_OF_SAVED_INPUT","')'","'}'","'!'","']'","program","extdefs","@1",".hush_warning",
".warning_ok","asm_keyword","lang_extdef","@2","extdef","extern_lang_string",
"template_header","@3","template_parm_list","template_type_parm","template_parm",
"overloaddef","ov_identifiers","template_def","@4","@5","@6","@7","fn_tmpl_end",
"datadef","fndef","fn.def1","fn.def2","return_id","return_init","base_init",
".set_base_init","member_init_list","member_init","identifier","notype_identifier",
"identifier_defn","explicit_instantiation","template_type","template_type_name",
"tmpl.2","template_arg_list","template_arg","template_instantiate_once","@8",
"template_instantiation","template_instantiate_some","unop","expr","paren_expr_or_null",
"paren_cond_or_null","xcond","condition","@9","already_scoped_stmt","nontrivial_exprlist",
"nonnull_exprlist","unary_expr","@10","new_placement","new_initializer","regcast_or_absdcl",
"cast_expr","sub_cast_expr","expr_no_commas","notype_unqualified_id","unqualified_id",
"expr_or_declarator","direct_notype_declarator","primary","@11","@12","new",
"delete","boolean.literal","string","nodecls","object","decl","declarator","fcast_or_absdcl",
"type_id","typed_declspecs","typed_declspecs1","reserved_declspecs","declmods",
"typed_typespecs","reserved_typespecquals","typespec","typespecqual_reserved",
"initdecls","notype_initdecls","nomods_initdecls","maybeasm","initdcl0","@13",
"initdcl","@14","notype_initdcl0","@15","nomods_initdcl0","@16","maybe_attribute",
"attributes","attribute","attribute_list","attrib","any_word","identifiers_or_typenames",
"init","initlist","structsp","@17","@18","maybecomma","maybecomma_warn","aggr",
"specialization","named_class_head_sans_basetype","named_class_head_sans_basetype_defn",
"do_xref","do_xref_defn","named_class_head","unnamed_class_head","class_head",
"maybe_base_class_list","base_class_list","base_class","base_class.1","base_class_access_list",
"left_curly","opt.component_decl_list","component_decl_list","component_decl",
"component_decl_1","components","notype_components","component_declarator0",
"component_declarator","after_type_component_declarator0","notype_component_declarator0",
"after_type_component_declarator","notype_component_declarator","enumlist","enumerator",
"new_type_id","type_quals","nonempty_type_quals","nonmomentary_expr","@19","after_type_declarator",
"qualified_type_name","nested_type","direct_after_type_declarator","notype_declarator",
"complex_notype_declarator","complex_direct_notype_declarator","qualified_id",
"notype_qualified_id","overqualified_id","functional_cast","type_name","nested_name_specifier",
"nested_name_specifier_1","complete_type_name","complex_type_name","ptr_to_mem",
"global_scope","new_declarator","direct_new_declarator","absdcl","direct_abstract_declarator",
"stmts","errstmt",".pushlevel","maybe_label_decls","label_decls","label_decl",
"compstmt_or_error","compstmt","simple_if","@20","@21","implicitly_scoped_stmt",
"stmt","simple_stmt","@22","@23","@24","@25","@26","@27","@28","@29","@30","@31",
"@32","@33","@34","@35","@36","try_block","@37","@38","ansi_try_stmts","handler_seq",
"@39","type_specifier_seq","handler_args","label_colon","forhead.1","forhead.2",
"maybe_type_qual","xexpr","asm_operands","nonnull_asm_operands","asm_operand",
"asm_clobbers","parmlist","complex_parmlist","parms","parms_comma","named_parm",
"full_parm","parm","see_typename","bad_parm","maybe_raises","ansi_raise_identifier",
"ansi_raise_identifiers","conversion_declarator","operator","operator_name",
""
};
#endif

static const short yyr1[] = {     0,
   106,   106,   108,   107,   107,   109,   110,   111,   111,   113,
   112,   114,   114,   114,   114,   114,   114,   114,   114,   114,
   115,   117,   116,   118,   118,   119,   119,   120,   120,   120,
   121,   122,   122,   124,   123,   125,   123,   126,   123,   127,
   123,   123,   123,   123,   123,   123,   123,   123,   128,   128,
   128,   128,   128,   129,   129,   129,   129,   129,   129,   129,
   129,   129,   129,   129,   130,   130,   130,   130,   130,   130,
   130,   130,   131,   131,   131,   131,   132,   132,   132,   132,
   132,   133,   134,   134,   134,   134,   135,   136,   137,   137,
   137,   137,   138,   138,   138,   138,   138,   138,   138,   138,
   139,   139,   139,   140,   140,   141,   141,   141,   142,   142,
   142,   142,   143,   144,   144,   144,   145,   146,   146,   147,
   147,   149,   148,   150,   150,   151,   151,   152,   152,   152,
   152,   152,   153,   153,   154,   154,   155,   155,   156,   156,
   156,   158,   157,   157,   159,   159,   159,   159,   160,   160,
   160,   160,   161,   161,   162,   163,   162,   162,   162,   162,
   162,   162,   162,   162,   162,   162,   162,   162,   162,   162,
   162,   162,   162,   162,   162,   162,   162,   164,   164,   165,
   165,   165,   165,   166,   166,   167,   167,   167,   168,   168,
   168,   168,   169,   169,   169,   169,   169,   169,   169,   169,
   169,   169,   169,   169,   169,   169,   169,   169,   169,   169,
   169,   169,   169,   169,   169,   169,   169,   170,   170,   170,
   170,   171,   171,   172,   172,   172,   172,   172,   173,   173,
   173,   173,   174,   174,   174,   174,   174,   174,   175,   174,
   176,   174,   174,   174,   174,   174,   174,   174,   174,   174,
   174,   174,   174,   174,   174,   174,   174,   174,   174,   174,
   174,   174,   174,   174,   174,   174,   174,   174,   177,   177,
   178,   178,   179,   179,   180,   180,   181,   182,   182,   183,
   183,   183,   183,   183,   183,   183,   184,   184,   185,   185,
   186,   186,   186,   186,   186,   187,   187,   188,   188,   188,
   188,   188,   189,   189,   189,   190,   190,   190,   190,   191,
   191,   191,   191,   192,   192,   193,   193,   193,   193,   193,
   193,   193,   194,   194,   194,   195,   195,   196,   196,   197,
   197,   198,   198,   200,   199,   199,   202,   201,   201,   204,
   203,   203,   206,   205,   205,   207,   207,   208,   208,   209,
   210,   210,   211,   211,   211,   211,   211,   212,   212,   212,
   212,   213,   213,   214,   214,   214,   214,   214,   215,   215,
   215,   215,   215,   215,   217,   216,   216,   218,   216,   216,
   216,   216,   216,   216,   219,   219,   220,   220,   221,   221,
   221,   221,   221,   222,   223,   223,   223,   223,   223,   223,
   224,   225,   226,   227,   227,   228,   229,   229,   230,   230,
   230,   231,   231,   232,   232,   233,   233,   233,   234,   234,
   234,   234,   235,   236,   236,   236,   236,   237,   237,   237,
   238,   238,   238,   238,   239,   239,   239,   239,   239,   239,
   239,   240,   240,   240,   241,   241,   241,   242,   242,   243,
   243,   244,   244,   244,   245,   245,   245,   245,   246,   246,
   246,   247,   247,   247,   247,   248,   248,   249,   249,   250,
   250,   250,   251,   251,   252,   252,   254,   253,   255,   255,
   255,   255,   255,   255,   256,   256,   257,   258,   258,   258,
   258,   258,   258,   258,   258,   258,   259,   259,   259,   259,
   259,   259,   260,   260,   260,   260,   260,   260,   261,   261,
   261,   261,   261,   261,   261,   262,   263,   264,   264,   265,
   265,   265,   266,   266,   267,   267,   268,   268,   269,   269,
   270,   270,   271,   271,   272,   273,   273,   273,   273,   273,
   273,   273,   274,   274,   275,   275,   275,   275,   275,   275,
   275,   275,   275,   275,   275,   276,   276,   276,   276,   276,
   276,   276,   276,   276,   276,   276,   277,   277,   277,   277,
   278,   279,   280,   280,   281,   281,   282,   283,   283,   284,
   284,   284,   284,   286,   287,   285,   288,   288,   289,   289,
   290,   290,   291,   290,   290,   292,   293,   290,   294,   295,
   290,   296,   297,   298,   290,   299,   300,   301,   290,   302,
   290,   303,   290,   304,   290,   305,   290,   290,   290,   290,
   290,   290,   290,   290,   290,   290,   290,   290,   290,   290,
   290,   307,   308,   306,   309,   309,   309,   310,   311,   310,
   312,   312,   313,   313,   314,   314,   314,   315,   315,   315,
   316,   316,   316,   316,   317,   317,   318,   318,   318,   319,
   319,   320,   320,   321,   322,   322,   323,   323,   323,   324,
   324,   324,   324,   324,   324,   324,   324,   324,   324,   325,
   325,   325,   325,   325,   326,   326,   327,   327,   327,   327,
   327,   327,   328,   328,   329,   329,   330,   331,   331,   332,
   332,   333,   334,   334,   335,   335,   335,   335,   336,   337,
   337,   337,   337,   337,   337,   337,   337,   337,   337,   337,
   337,   337,   337,   337,   337,   337,   337,   337,   337,   337,
   337,   337,   337,   337,   337,   337,   337,   337,   337,   337,
   337,   337,   337,   337
};

static const short yyr2[] = {     0,
     0,     1,     0,     2,     2,     0,     0,     1,     1,     0,
     2,     1,     1,     1,     1,     5,     4,     3,     4,     4,
     1,     0,     5,     1,     3,     1,     2,     1,     3,     1,
     3,     1,     3,     0,     5,     0,     5,     0,     5,     0,
     5,     3,     3,     6,     7,     4,     3,     3,     1,     1,
     1,     1,     1,     2,     3,     3,     3,     3,     2,     2,
     2,     2,     2,     1,     3,     4,     3,     5,     4,     3,
     3,     2,     3,     3,     2,     1,     6,     4,     3,     3,
     2,     2,     1,     3,     4,     2,     3,     0,     0,     1,
     3,     2,     3,     1,     4,     2,     4,     2,     4,     2,
     1,     1,     1,     1,     1,     1,     1,     1,     3,     3,
     4,     4,     3,     4,     3,     4,     0,     1,     3,     1,
     1,     0,     6,     0,     1,     0,     2,     1,     1,     1,
     1,     1,     1,     1,     1,     3,     1,     3,     0,     1,
     1,     0,     8,     1,     2,     4,     4,     1,     3,     3,
     3,     3,     1,     1,     1,     0,     3,     2,     2,     2,
     2,     2,     2,     4,     2,     4,     2,     3,     3,     4,
     4,     5,     5,     6,     2,     4,     5,     3,     3,     3,
     1,     3,     2,     3,     4,     1,     2,     5,     1,     4,
     4,     4,     1,     3,     3,     3,     3,     3,     3,     3,
     3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
     3,     3,     5,     3,     3,     1,     2,     3,     1,     1,
     1,     1,     1,     1,     1,     2,     2,     3,     1,     1,
     1,     3,     1,     1,     1,     1,     3,     3,     0,     4,
     0,     6,     2,     4,     2,     2,     1,     4,     1,     7,
     7,     7,     7,     4,     4,     2,     2,     1,     4,     2,
     2,     2,     5,     3,     5,     3,     4,     6,     1,     2,
     1,     2,     1,     1,     1,     2,     0,     2,     2,     3,
     3,     3,     3,     3,     2,     2,     1,     1,     1,     2,
     2,     2,     2,     1,     1,     1,     1,     2,     2,     3,
     3,     4,     1,     2,     2,     1,     1,     2,     2,     1,
     2,     2,     3,     1,     2,     1,     1,     1,     4,     4,
     4,     4,     1,     1,     1,     1,     3,     1,     3,     1,
     3,     0,     4,     0,     7,     4,     0,     7,     4,     0,
     7,     4,     0,     7,     4,     0,     1,     1,     2,     6,
     1,     3,     0,     1,     4,     6,     4,     1,     1,     1,
     1,     1,     3,     1,     2,     3,     4,     1,     1,     3,
     4,     6,     3,     5,     0,     7,     4,     0,     6,     3,
     2,     2,     4,     1,     0,     1,     0,     1,     1,     2,
     2,     2,     2,     3,     2,     2,     2,     3,     3,     1,
     2,     0,     0,     3,     3,     2,     1,     1,     0,     1,
     2,     1,     3,     1,     2,     1,     4,     4,     1,     1,
     2,     2,     1,     0,     1,     4,     3,     1,     2,     2,
     2,     2,     2,     2,     2,     2,     4,     2,     1,     5,
     3,     0,     1,     3,     0,     1,     3,     1,     1,     1,
     1,     4,     6,     4,     4,     6,     4,     3,     4,     6,
     4,     4,     6,     4,     3,     1,     3,     1,     3,     2,
     1,     6,     0,     2,     1,     2,     0,     2,     3,     3,
     2,     2,     3,     1,     1,     1,     2,     5,     5,     3,
     5,     4,     3,     3,     2,     1,     3,     3,     2,     2,
     3,     1,     3,     3,     2,     2,     3,     1,     5,     5,
     3,     5,     3,     4,     3,     2,     2,     1,     2,     4,
     4,     2,     1,     1,     1,     2,     2,     2,     1,     2,
     1,     2,     2,     3,     1,     3,     2,     3,     2,     2,
     3,     1,     3,     4,     3,     2,     2,     1,     3,     2,
     2,     1,     2,     3,     1,     3,     1,     5,     3,     4,
     3,     4,     2,     2,     3,     2,     1,     1,     2,     2,
     2,     0,     0,     1,     1,     2,     3,     1,     2,     3,
     5,     6,     5,     0,     0,     6,     1,     2,     1,     1,
     1,     2,     0,     4,     1,     0,     0,     6,     0,     0,
     7,     0,     0,     0,    10,     0,     0,     0,    10,     0,
     7,     0,     5,     0,     7,     0,     4,     2,     2,     2,
     3,     6,     8,    10,    12,     4,     3,     2,     2,     1,
     1,     0,     0,     7,     1,     2,     2,     0,     0,     5,
     1,     1,     3,     3,     2,     2,     2,     3,     4,     4,
     3,     4,     6,     6,     0,     1,     0,     1,     1,     0,
     1,     1,     3,     4,     1,     3,     0,     1,     1,     1,
     2,     2,     2,     1,     1,     2,     2,     2,     2,     1,
     3,     2,     2,     4,     2,     2,     2,     2,     2,     2,
     1,     2,     1,     3,     1,     1,     0,     0,     1,     0,
     4,     1,     1,     3,     0,     3,     3,     3,     1,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     2,     2,     3,     2,     2,     2,     2,     3,     2,     2,
     4,     4,     3,     2
};

static const short yydefact[] = {     3,
    10,    10,     5,     0,     4,     0,   220,   523,   307,   317,
   475,     0,     8,     9,     0,     0,   389,     0,   709,     0,
   535,   221,    64,     0,     0,   697,     0,    76,    21,     0,
    11,     6,     0,    15,    14,    13,    12,   277,     0,   524,
   117,   230,   502,     0,   297,     0,   296,   310,     0,   330,
   316,     0,   400,   402,   403,   408,   407,   384,   306,   529,
   486,     0,   229,   231,   485,     0,   525,   318,   473,     0,
     0,   219,    62,    63,   527,     0,     0,   101,   102,   103,
   378,   381,     0,   531,     0,   382,     0,     0,     0,    32,
     0,   307,     0,    22,     0,     0,   400,     0,     0,     0,
     0,   500,     0,     0,     0,   499,     0,     0,     0,     0,
   230,     0,     0,     0,   229,   231,   473,     0,     3,     0,
     0,     0,     0,   402,   403,   700,     0,    88,    83,   277,
     0,     0,    60,   528,   124,   473,     0,   477,    61,     0,
     0,     0,     0,     0,   326,   287,   484,   288,   496,     0,
   473,   309,   308,    59,   298,     0,   328,     0,   303,   323,
   324,   299,   312,   314,   325,     0,    54,   390,   391,   392,
   393,   406,   107,   106,   108,   395,   401,   397,   117,   396,
   409,   409,   423,     0,   476,   311,    72,     0,    75,   533,
   517,   487,   526,     0,   530,     0,   744,   740,   739,   737,
   719,   724,   725,     0,   731,   730,   716,   717,   715,   734,
   723,   720,   721,   722,   726,   727,   713,   714,   710,   711,
   712,   736,   728,   729,   718,   735,     0,   732,   641,   310,
   642,   705,   475,   234,   275,     0,     0,     0,     0,   156,
   271,   269,   247,   273,   274,     0,     0,     0,     0,     0,
     0,     0,   129,   128,     0,   130,   131,     0,     0,   216,
   132,     0,   118,     0,   189,     0,   193,   186,   121,   233,
   155,     0,     0,   235,   236,     0,   120,   294,   310,   295,
   518,   258,   249,     0,     0,     0,   400,   380,     0,   375,
   532,     0,   133,   134,     0,     0,     0,     0,    31,     0,
   110,   409,   125,   109,   115,     0,   498,     0,   497,   102,
   103,   218,   227,     0,   506,   226,     0,   505,     0,   232,
   513,     0,     0,    18,    10,     0,     7,     7,    48,    47,
   700,     0,    34,    42,    38,    36,    43,    40,   332,    82,
    89,    86,     0,     0,   277,     0,     0,     0,   572,    65,
   578,    67,   113,   511,     0,   674,   675,   154,     0,   153,
   669,   691,     0,   294,   310,   295,     0,   668,   670,   698,
   680,     0,   515,     0,     0,     0,   482,     0,   481,     0,
     0,     0,     0,   473,    70,    58,    73,     0,    57,   473,
     0,   477,   495,     0,   300,   301,     0,    55,    71,    56,
    74,   305,   304,   315,   700,   331,   398,   394,   399,   410,
   404,   405,   439,     0,     0,   442,   445,     0,     0,   428,
     0,   700,   313,     0,     0,   346,   474,   501,   534,     0,
     0,   733,   738,   473,   473,     0,   473,   743,     0,     0,
     0,   163,     0,     0,   165,     0,     0,     0,     0,     0,
     0,     0,     0,   162,   159,   158,   160,     0,     0,     0,
     0,   217,     0,   116,   161,     0,     0,   187,     0,     0,
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
   243,   245,   246,   279,   278,     0,     0,     0,     0,     0,
   167,   471,     0,   175,   276,   223,     0,   697,   222,   261,
   262,     0,   289,   552,   548,   557,     0,   477,   473,   473,
   473,   291,   555,     0,   522,   293,     0,   292,   260,     0,
   256,   270,   272,   519,     0,   257,   112,   111,   468,   387,
   466,   377,     0,   319,     0,     0,   320,   321,   322,    33,
     0,    28,    24,   696,   310,    26,   695,    30,   693,   122,
   114,   504,   503,   232,   507,     0,    17,    20,    19,   332,
    53,    49,    51,    52,    50,    46,     0,     0,     0,     0,
   346,   104,    94,   105,     0,    87,    90,     0,     0,     0,
   368,     0,   364,    84,     0,     0,    66,    69,   579,   573,
   473,   473,   673,   686,   679,   677,   552,   548,     0,   687,
   473,   690,   692,   688,     0,   689,   473,   672,   685,   678,
   676,   671,   699,   682,   683,     0,   514,   478,   480,   479,
     0,     0,   494,     0,   346,   327,   490,     0,     0,     0,
   493,     0,   483,   302,   329,   346,   332,   420,     0,   419,
   411,   412,   414,     0,   416,   438,   434,   433,   220,   523,
   473,     0,   667,   700,   435,   443,   448,   449,   700,   700,
   436,   446,   700,     0,   383,   430,   429,   431,   432,   332,
   702,   310,   703,     0,     0,     0,   345,   347,   348,   742,
   741,   705,   705,   705,     0,     0,     0,   522,     0,     0,
   523,     0,   157,     0,     0,     0,     0,     0,     0,   238,
   237,     0,   184,   119,   220,   523,   221,     0,     0,   369,
   385,     0,   215,   214,   659,   658,     0,   212,   211,   209,
   210,   208,   207,   206,   203,   204,   205,   201,   202,   196,
   197,   198,   199,   200,   194,   195,     0,     0,     0,     0,
     0,     0,   169,   181,     0,     0,   168,   473,   473,     0,
   473,   470,   542,     0,     0,     0,     0,   264,     0,   266,
     0,   516,   551,   550,   547,   546,   696,     0,     0,   566,
     0,     0,   563,   290,   564,   553,   473,   667,   477,   552,
   548,     0,     0,   473,   233,     0,   518,     0,     0,     0,
   388,     0,   387,   152,   151,   150,   149,     0,    23,     0,
   395,     0,     0,    16,   346,    35,    39,    37,    41,     0,
     0,    92,     0,    96,     0,   100,     0,    98,     0,   365,
     0,    85,    68,     0,   580,     0,   574,   575,   512,   509,
   551,   547,   552,   548,     0,   485,     0,   473,   553,   552,
   548,     0,   233,     0,   518,   510,     0,   681,   336,   473,
   473,   473,   492,   342,   346,     0,     0,   422,   421,   415,
     0,     0,   441,   346,     0,    79,     0,   332,   332,     0,
   332,     0,   346,     0,   701,     0,     0,   343,   349,   707,
   706,   708,   248,   164,     0,     0,     0,   166,   190,   192,
   191,   254,   255,     0,     0,     0,     0,   240,     0,     0,
     0,     0,   185,     0,   241,   244,   179,   178,   171,     0,
   170,   183,     0,     0,   539,   537,     0,   540,   477,   176,
     0,     0,   267,     0,     0,   549,   545,   556,   473,   565,
   554,   559,     0,   561,     0,     0,   520,   521,     0,   259,
   469,   467,   379,     0,    25,    29,   694,     0,     0,    44,
    93,    91,     0,     0,     0,     0,   366,   362,     0,     0,
   220,   523,   584,   596,   599,     0,   572,     0,     0,     0,
     0,     0,     0,   221,   630,     0,   655,     0,   591,     0,
     0,   310,     0,   568,   589,   595,   567,   590,   631,     0,
   602,   606,   576,   551,   547,   487,   553,   521,   684,   334,
   491,   488,   489,   340,   339,     0,     0,   413,   346,   346,
    78,   458,   473,   220,   523,     0,   444,   450,   451,   700,
   700,   346,   346,   447,     0,   437,   704,   333,   353,     0,
     0,     0,     0,     0,     0,   373,     0,     0,   370,   188,
   213,   126,     0,   172,   173,   180,   182,   538,   536,   543,
   541,     0,   177,     0,   263,   265,   562,   473,   560,   228,
   376,     0,    45,    95,    99,    97,   367,     0,   577,   571,
   583,   645,   647,   572,   572,   572,     0,     0,     0,   616,
   618,   619,   620,     0,     0,     0,   646,   572,   656,     0,
   592,   285,   700,     0,   286,     0,   700,     0,   700,     0,
     0,   581,   570,   569,   593,   629,   628,   572,   572,     0,
     0,   337,   417,   418,   457,   454,   440,     0,     0,   346,
   332,   332,   452,   455,   359,   360,   361,   358,     0,   351,
   354,   344,     0,     0,     0,     0,   371,     0,     0,   126,
   242,     0,   174,   544,   268,   558,   123,   363,     0,     0,
     0,   587,     0,     0,   572,   648,     0,   651,     0,     0,
   612,     0,   621,     0,   627,   632,     0,   281,   332,   283,
   284,   332,     0,     0,     0,   280,   282,   582,   572,     0,
     0,   335,   341,     0,    77,   346,   346,   465,   346,   346,
     0,     0,   353,     0,     0,   250,   251,   252,   253,     0,
   374,   127,   472,   137,     0,   585,   597,   588,   600,   652,
   650,     0,   649,   144,     0,   310,     0,     0,     0,   617,
   626,     0,     0,   594,   141,     0,   140,     0,   338,   464,
   461,   459,   462,   453,   456,   352,   350,   220,     0,   372,
     0,   572,     0,     0,     0,     0,   610,   700,   614,   613,
     0,   635,     0,   633,   660,     0,   603,   607,     0,     0,
     0,   355,   357,   138,   586,   573,   598,   148,   135,     0,
     0,   654,     0,   653,   572,   332,     0,   637,   636,   638,
     0,     0,   661,   662,   622,     0,     0,   460,   463,     0,
   145,     0,     0,   601,   611,   346,   615,   634,     0,   660,
     0,     0,     0,     0,   356,     0,     0,   136,     0,   639,
     0,     0,   623,   663,   604,   608,   147,   146,   142,     0,
   664,     0,     0,     0,     0,     0,     0,     0,   665,     0,
   624,   605,   609,   143,     0,     0,   640,     0,     0,   643,
   644,   666,   625,     0,     0,     0
};

static const short yydefgoto[] = {  1354,
     1,     2,   120,   568,   987,     3,     4,    31,    32,    33,
   300,   551,   552,   553,    34,    91,    35,   577,   579,   578,
   580,   576,    36,    37,    38,   415,   129,   130,   131,   341,
   586,   587,   539,   588,   177,    39,    40,    41,   135,   262,
   263,   303,   813,   304,  1151,   264,   988,  1281,  1216,  1236,
  1237,  1336,  1277,   293,   793,   265,   448,   500,   757,   266,
   267,   268,   294,   270,   510,   313,    43,   271,   460,  1052,
   272,   273,   274,   275,   132,   276,   989,   405,   520,   777,
   990,    45,   162,   991,    47,   163,   443,   164,   144,   156,
    49,   635,   145,  1120,   406,  1194,   157,  1121,    50,  1040,
   687,   688,   689,  1139,  1140,  1141,   969,   720,   721,    51,
   543,   289,   912,   802,    52,    53,    54,    55,   181,   182,
    56,    57,    58,   411,   651,   652,   653,   654,   184,   418,
   419,   420,   421,   665,   671,   666,  1027,   667,   668,  1028,
  1029,   540,   541,   501,   783,    59,   374,   375,   146,    60,
    61,   147,   148,   114,    63,   511,   281,   282,   283,    65,
   284,    67,    68,   180,    69,   285,   762,   763,   778,   523,
   993,   994,  1161,   836,   837,   838,   350,   995,   996,  1084,
  1252,  1163,   997,   998,  1189,  1085,  1253,  1086,  1254,  1118,
  1296,  1334,  1119,  1297,  1335,  1285,  1229,  1287,  1172,   999,
  1232,  1290,  1264,  1308,  1330,  1227,  1338,  1000,  1001,  1002,
  1100,   727,  1292,  1293,  1294,  1340,   367,   779,   369,   370,
   371,   558,   372,   107,   625,  1179,   683,   684,   438,    71,
    72
};

static const short yypact[] = {    64,
    80,-32768,-32768,  2131,-32768,   130,-32768,   283,    48,-32768,
-32768,   556,-32768,-32768,    66,    87,-32768,   206,-32768,  2650,
-32768,   210,-32768,  1299,  1299,-32768,  1901,-32768,-32768,   292,
-32768,   333,  3137,-32768,-32768,-32768,-32768,   573,   353,   368,
-32768,-32768,   166,  1701,-32768,  2829,-32768,  1033,   294,-32768,
-32768,   540,-32768,-32768,-32768,-32768,-32768,   396,  1486,-32768,
-32768,   591,-32768,-32768,-32768,    82,-32768,-32768,-32768,   214,
  6712,-32768,-32768,-32768,-32768,  8620,  2499,-32768,   283,   210,
   355,   414,   368,-32768,   214,-32768,   214,  8620,  8620,-32768,
   512,-32768,   210,-32768,  4042,  3298,     1,   214,  8446,   283,
  2225,-32768,   361,   267,  2225,-32768,   262,  2706,  2706,  1901,
   383,   435,   166,   453,   495,   498,-32768,   571,   446,  2532,
   224,  4042,  3192,   680,   723,   521,   617,-32768,    55,    16,
   143,   143,-32768,-32768,   546,-32768,  6059,   532,-32768,  3255,
  3255,  4407,   641,   569,-32768,-32768,   255,-32768,-32768,    82,
-32768,-32768,-32768,-32768,  1033,   669,-32768,   998,-32768,-32768,
-32768,  1070,   673,-32768,-32768,  4042,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,-32768,-32768,-32768,-32768,   368,   775,-32768,
   609,   609,-32768,  2064,-32768,   673,-32768,   604,   970,-32768,
-32768,-32768,-32768,  3851,-32768,    50,-32768,   605,   633,-32768,
-32768,-32768,-32768,   640,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,-32768,-32768,-32768,   601,-32768,-32768,   673,
  1486,   654,   627,-32768,-32768,  9561,  9644,   659,   664,-32768,
-32768,-32768,-32768,-32768,-32768,   675,   689,   696,   698,   701,
   262,  9312,-32768,-32768,  9312,-32768,-32768,  9312,  6796,  3961,
-32768,   422,-32768,  9312,-32768,  8707,-32768,-32768,  9780,-32768,
   845,  1829,  8790,-32768,   781,   434,-32768,   126,  1601,  4144,
-32768,   160,-32768,   475,   813,  4042,     1,-32768,   262,   690,
-32768,   721,   743,  9688,   726,   728,   734,   800,-32768,  2499,
-32768,   609,-32768,-32768,-32768,   478,-32768,   125,-32768,-32768,
-32768,-32768,-32768,  2225,-32768,-32768,  2225,-32768,   758,-32768,
-32768,  3851,    47,-32768,   729,  2499,-32768,-32768,-32768,-32768,
   521,   708,-32768,-32768,-32768,-32768,-32768,-32768,   712,-32768,
   249,-32768,  6886,  8877,-32768,   143,   143,   803,-32768,-32768,
-32768,-32768,-32768,   855,   765,-32768,-32768,   743,   767,  9688,
   296,  2466,  3192,  2466,  3043,  3464,   772,-32768,   100,  3351,
   807,   819,-32768,   776,  8877,  3862,-32768,  3862,-32768,  4280,
  4280,  4407,   785,-32768,-32768,-32768,   970,  4042,-32768,-32768,
  6161,   792,-32768,  4311,  1070,  1033,  4042,-32768,-32768,-32768,
   970,-32768,-32768,-32768,   521,-32768,-32768,-32768,-32768,   905,
-32768,-32768,-32768,  8877,   447,  1155,  3724,    60,  1544,-32768,
   252,   521,   673,  2142,   802,   867,-32768,-32768,-32768,   796,
   798,-32768,-32768,-32768,-32768,   164,-32768,-32768,  8877,   627,
  6796,-32768,   229,  6796,-32768,  8877,  8964,  9312,  8620,  2142,
  2142,  2142,  2142,-32768,-32768,-32768,-32768,   805,   809,   803,
   810,-32768,  8620,-32768,-32768,  6623,  6796,-32768,  8877,  8877,
  6976,  8877,  8877,  8877,  8877,  8877,  8877,  8877,  8877,  8877,
  8877,  8877,  8877,  8877,  8877,  8877,  8877,  8877,  8877,  8877,
-32768,-32768,-32768,-32768,-32768,  8877,  8877,  8877,  8620,  1393,
   564,   670,  7615,-32768,-32768,   283,   865,   912,-32768,   237,
   244,   615,-32768,  1080,  1080,-32768,  3796,   814,   837,   884,
-32768,-32768,   490,  8090,   114,-32768,   188,-32768,-32768,  8877,
-32768,-32768,-32768,-32768,   626,-32768,-32768,-32768,   877,   874,
-32768,-32768,   262,-32768,  7438,  7528,-32768,-32768,-32768,-32768,
   606,   879,-32768,-32768,  3594,   540,-32768,-32768,   887,-32768,
-32768,-32768,-32768,   844,-32768,   891,-32768,-32768,-32768,   712,
-32768,-32768,-32768,-32768,-32768,-32768,   893,   896,   897,   903,
   867,-32768,-32768,   210,  8877,   906,-32768,   280,   420,   436,
-32768,  6263,  9757,-32768,   849,   143,-32768,-32768,-32768,    24,
-32768,-32768,-32768,-32768,-32768,-32768,   817,   817,  4802,-32768,
-32768,-32768,-32768,-32768,  8181,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,-32768,   902,  6886,-32768,-32768,-32768,-32768,
  3862,  3862,-32768,  4311,   867,-32768,   855,   861,   863,   866,
-32768,   872,-32768,  1070,-32768,   867,   712,-32768,   883,-32768,
   923,-32768,-32768,   939,-32768,  9757,-32768,-32768,   922,    18,
-32768,  8877,  2818,   521,   930,-32768,-32768,-32768,   510,   611,
   934,-32768,   521,   937,-32768,-32768,-32768,-32768,-32768,   748,
-32768,  3086,-32768,   281,   571,   916,   947,   867,-32768,-32768,
-32768,   282,   282,   282,   904,   908,  9051,   884,   913,   915,
   192,   917,-32768,   918,   920,   938,   944,   948,   957,-32768,
-32768,   932,-32768,-32768,   975,   421,   338,  8877,   976,-32768,
   987,   941,  9757,  9757,-32768,-32768,   988,  4588,  9818,  4862,
  4703,  4168,  4535,  3669,  1937,  1937,  1937,  1334,  1334,  1050,
  1050,   713,   713,   713,-32768,-32768,   955,   954,   959,   958,
   961,  2142,   564,-32768,  6886,  8877,-32768,-32768,-32768,  8877,
-32768,-32768,   980,  9312,   967,   981,  1030,-32768,  8877,-32768,
  8877,-32768,  1350,-32768,  1350,-32768,    71,   977,   978,-32768,
   973,  2142,   855,-32768,   855,  1728,-32768,  1109,   983,  8272,
  8272,  5855,   979,  8707,   383,   984,   498,   813,   989,  8877,
   262,   982,   874,-32768,  9757,-32768,  9757,  2499,-32768,  2761,
   662,  6886,   396,-32768,   867,-32768,-32768,-32768,-32768,   708,
   994,-32768,   249,-32768,  8877,-32768,  8877,-32768,  8877,-32768,
   116,-32768,-32768,   262,-32768,  5585,  1049,-32768,   855,   855,
  1260,  1260,  1918,  1918,  4802,-32768,    82,-32768,  2412,  8359,
  8359,  5957,   240,  1005,   341,   855,  6886,-32768,  1031,-32768,
-32768,-32768,-32768,  1051,   867,  8620,   905,-32768,-32768,-32768,
  8877,  8877,   152,  4929,  1006,-32768,   401,   712,   712,  3568,
   755,  2290,   867,  2142,-32768,    54,  1023,-32768,-32768,-32768,
-32768,-32768,-32768,-32768,  9395,  9395,  7066,-32768,-32768,-32768,
-32768,-32768,-32768,  1024,  1029,  1032,  1034,-32768,  4688,  6886,
  6353,  1020,-32768,  8877,-32768,-32768,-32768,-32768,   474,  1035,
-32768,-32768,  1039,    44,   181,   181,  1027,   181,-32768,-32768,
  9312,  1128,-32768,  1044,  1046,-32768,-32768,-32768,-32768,-32768,
-32768,   855,  1059,-32768,  1047,  1062,-32768,-32768,   452,-32768,
  9757,-32768,-32768,  1063,-32768,-32768,-32768,  2064,   708,-32768,
-32768,-32768,  1068,  1071,  1073,  6443,-32768,-32768,   745,   289,
  1075,   575,-32768,-32768,-32768,  1065,-32768,  8877,  1116,  1121,
  1122,  8533,    67,   572,-32768,  1129,  1175,  1131,-32768,  2565,
  4428,  2918,  5022,-32768,-32768,  1170,-32768,-32768,-32768,  7718,
-32768,-32768,-32768,  1260,  1260,-32768,  2412,  1408,-32768,-32768,
   855,   855,   855,-32768,  1132,  1089,  1093,-32768,  4929,  4929,
-32768,-32768,-32768,  1138,   624,  8877,-32768,-32768,-32768,   521,
   521,   867,   867,-32768,  2406,-32768,-32768,-32768,   583,  6886,
  8877,  8877,  8877,  8877,  6886,-32768,  8877,  1140,-32768,-32768,
  9801,   546,  8877,-32768,   474,-32768,-32768,-32768,-32768,-32768,
-32768,  1100,-32768,  1163,-32768,-32768,   855,-32768,-32768,-32768,
-32768,    73,-32768,-32768,-32768,-32768,-32768,   262,-32768,-32768,
-32768,-32768,-32768,-32768,-32768,   803,  6533,  1123,  4518,-32768,
-32768,-32768,-32768,  1153,  8877,  1158,-32768,-32768,-32768,  1130,
-32768,-32768,   191,   763,-32768,   788,   521,  9138,   427,   797,
   307,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,  6886,
  6886,-32768,-32768,-32768,-32768,-32768,   152,  8877,  8877,  4929,
   712,   712,  1159,  1161,-32768,-32768,-32768,-32768,   315,-32768,
  1133,-32768,  1120,  1126,  1127,  1137,-32768,  9711,  6886,   546,
-32768,  1119,-32768,-32768,-32768,   855,-32768,-32768,   462,   462,
  8000,-32768,  1210,  1184,  1139,-32768,  1189,-32768,  8620,  8877,
-32768,  7820,-32768,  1190,-32768,-32768,   571,-32768,   712,-32768,
-32768,   712,  9478,  9478,  7156,-32768,-32768,-32768,   803,  7246,
  7246,-32768,-32768,  6886,-32768,  4929,  4929,-32768,   867,   867,
  6886,  6886,   583,  1146,  9225,-32768,-32768,-32768,-32768,  6886,
-32768,-32768,-32768,-32768,  8620,-32768,-32768,-32768,-32768,-32768,
-32768,  5675,-32768,-32768,  1148,   416,  4042,  9734,  7820,-32768,
-32768,  5141,    51,-32768,-32768,  1198,-32768,  1199,-32768,-32768,
-32768,  1174,  1200,-32768,-32768,-32768,-32768,   369,  1154,-32768,
  1160,   803,  7910,   527,   370,  5273,-32768,   521,-32768,-32768,
   379,-32768,  5377,-32768,  1248,  1204,-32768,-32768,  6886,  6886,
  8877,-32768,-32768,-32768,-32768,    25,-32768,-32768,-32768,  8877,
  1205,-32768,  1213,-32768,   803,   712,  7820,-32768,-32768,-32768,
  1178,   271,  1216,-32768,-32768,  7336,  7336,-32768,-32768,  1171,
-32768,  5765,  1172,-32768,-32768,   867,-32768,  1181,  8877,  1248,
  1222,  1248,  1177,  1187,-32768,   397,  5481,-32768,  1233,-32768,
  1192,   365,-32768,-32768,-32768,-32768,-32768,-32768,-32768,  1208,
-32768,  1271,  1236,  7910,  7910,  6886,  3413,   803,-32768,   410,
-32768,-32768,-32768,-32768,  1195,  1197,-32768,  1296,  1251,-32768,
-32768,-32768,-32768,  1308,  1309,-32768
};

static const short yypgoto[] = {-32768,
  1191,-32768,-32768,   986,     7,  1310,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,   507,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,  -770,  1196,  1207,-32768,-32768,-32768,-32768,  1201,-32768,
-32768,   496,   135,-32768,-32768,-32768,  2838,   -25,-32768,  1221,
   888,  -999,-32768,   -88,   178,-32768,   895,-32768,   169,   139,
 -1101,-32768,  -524,  1474,   -99,   619,-32768,-32768,  -714,  3947,
    43,  -240,  2252,  2872,   825,  1176,   432,-32768,-32768,-32768,
-32768,  -273,-32768,  -116,   -94,-32768,   266,    17,  -276,   132,
    75,  -106,  -109,    -3,  1594,    27,  1371,  -118,  -752,   364,
-32768,   -82,-32768,-32768,   265,-32768,-32768,-32768,-32768,-32768,
   327,-32768,   677,-32768,   155,-32768,-32768,   730,   769,    74,
-32768,-32768,-32768,   560,  -272,    13,  1335,  1336,-32768,-32768,
-32768,-32768,-32768,  -141,-32768,   500,   716,-32768,   559,   418,
   497,  -414,-32768,-32768,-32768,-32768,-32768,-32768,   960,-32768,
   501,   835,   582,   889,  2241,  1820,  -368,-32768,  3695,   -55,
    10,-32768,  4252,   -90,   717,-32768,  3290,-32768,-32768,  3834,
    -4,   245,  -328,  1372,  3416,   871,  -214,-32768,  4134,-32768,
 -1157,  -942,  -343,   117,-32768,   553,   -97,  -122,-32768,-32768,
-32768, -1137,  -860, -1112,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,-32768,-32768,   -37,-32768,-32768,-32768,-32768,
-32768,  -425,    86,-32768,    90,-32768,  -354,  -133,-32768,-32768,
  -293,  1052,  -286,-32768,-32768,    40,   530,-32768,    57,-32768,
  -260
};


#define	YYLAST		9897


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

static const short yycheck[] = {     4,
     4,   118,   279,   137,   419,   349,   300,    12,   131,   132,
     4,   285,   341,   300,    70,    20,    20,   108,   109,    24,
    25,    12,    27,   392,   285,   266,    52,   300,    33,    33,
   137,    87,    20,    71,   132,   130,   391,   137,   753,    44,
   182,    46,    98,   162,   163,   155,   135,    52,  1161,   820,
   993,  1189,  1052,     4,    59,     9,    56,    34,    34,     9,
    44,    52,     9,     0,  1222,    70,    71,  1169,    51,     3,
     4,    56,    77,    77,  1232,    60,   370,    60,     4,     0,
    10,   410,    87,   370,     3,     4,    69,    44,   365,    77,
    95,    96,    45,    98,    20,    36,   101,    97,    44,   104,
   105,    62,    53,   108,   109,   110,   189,    33,    36,    10,
    60,    95,    58,  1215,  1252,   120,   120,   122,   123,    53,
     7,    48,    41,    10,    75,    55,   103,   103,     4,     4,
    60,    88,   993,   137,    53,   140,   141,   142,   122,  1000,
  1253,    75,    88,     1,  1302,   102,    12,  1285,   102,   518,
  1150,    77,   102,    88,    55,   102,    75,    44,     7,    60,
   302,   166,   103,    93,    83,   126,   443,     4,    55,    44,
    55,    58,   102,    60,    88,   103,    51,    53,    53,   184,
   184,   155,   143,    70,     4,    56,    52,     7,   959,   194,
    65,     4,    93,   300,   120,   189,    54,   158,   287,    75,
    75,    88,    89,    44,   919,    54,    93,    76,     3,    44,
    85,    60,   186,    88,    89,   102,    53,     4,   103,    88,
    89,  1334,  1335,   346,   347,   348,   231,   232,   155,   285,
    99,    51,   103,    53,   272,   162,   163,   990,    75,   992,
    53,   107,    51,    92,   344,    65,    56,    88,   346,   347,
   345,     3,     4,    88,    89,    75,   339,   391,   184,   186,
    69,   535,    75,   370,     3,     4,    53,   272,   137,    89,
     4,   276,    44,   278,   279,   280,   395,   396,    69,    56,
    44,   286,    92,    44,   391,     4,   396,    44,     7,   380,
   381,   391,    44,   102,   252,   300,   300,   255,    44,    51,
   258,    53,   286,   230,   423,    10,   264,    56,   663,   314,
    66,  1172,   317,  1256,    53,   273,    88,   322,   401,    53,
  1263,   326,   326,    44,    88,   654,   103,    88,    89,    85,
    60,    88,    51,    51,    53,    55,    88,   460,   326,   439,
  1055,   102,    88,    89,    56,   339,    65,   103,    55,    56,
    55,    69,   279,    58,   103,    60,    75,   362,   363,   364,
   365,   366,    56,     3,     4,   370,   370,    88,  1229,    55,
   331,   376,   102,   378,  1317,   380,   381,   382,   362,    88,
   364,   365,   102,   388,    44,   251,    54,   391,    93,   394,
   259,   103,   397,   387,   150,  1256,   496,    60,   498,   499,
   326,    41,  1263,     3,     4,   410,    69,   401,    56,   103,
   517,   416,   417,    53,   419,   419,   102,   524,    51,   424,
   789,     6,     7,    55,    60,    56,  1287,    12,    88,    89,
   530,   300,   416,   788,    56,    75,     3,     4,   365,     6,
   196,    41,   102,    83,   405,   450,   451,   452,   453,    54,
    35,    51,    56,    53,     3,     4,  1317,   103,    27,    44,
    60,   422,   500,    44,    55,    65,   102,    54,   395,   396,
   102,    51,   103,   596,    41,    75,    55,     3,     4,    44,
    60,   103,    56,    83,   102,   585,    53,   570,    88,    69,
   448,    70,    41,   419,   823,   500,   423,   502,   596,   103,
    54,   370,   609,    88,    53,    44,    60,    88,   615,   514,
   515,   102,   517,   517,   808,    41,    83,    44,    92,   524,
   524,   808,   391,    88,   798,   644,    75,    53,   284,   663,
   556,    58,    55,    44,    83,   808,   102,   798,   867,   108,
   109,   110,     3,     4,     5,     6,     7,    70,   103,    88,
   555,   556,   308,   794,   102,   424,   663,    83,     3,     4,
   929,    88,    89,    54,   647,   556,    55,    56,   685,    60,
    44,   555,   441,   142,    35,   444,   570,    88,    89,     9,
   449,   450,   451,   452,   453,     3,     4,     5,     6,     7,
    51,     1,    53,    54,   463,    23,   102,   680,   467,   102,
   466,    92,   607,   608,   609,   609,    51,    44,    53,    54,
   615,   615,    92,    23,    88,    25,    26,     3,     4,     3,
  1035,    58,    32,    55,    56,    51,   631,   632,   555,   634,
   499,    60,    60,   977,    60,    53,   105,    98,    99,   100,
    69,     1,    97,    69,    54,    55,    56,   924,    58,   654,
    60,    88,   388,   647,   788,    41,   756,     4,   663,   663,
    55,   397,    37,    23,    54,    25,    26,    53,    60,   769,
    60,   771,    32,     4,    51,    70,    51,   682,     6,     7,
   436,   788,    92,    60,    12,   792,   680,   692,   693,   694,
   556,    88,    69,    89,    54,    55,    56,    83,    58,    60,
    60,   808,    92,   664,    51,   105,    53,    35,   669,   670,
   925,   926,   673,   928,    88,   992,    55,   644,    65,    58,
    51,    89,    53,    55,    56,   825,   592,   827,    75,   829,
    23,    70,    92,    54,    65,    56,    25,    26,   845,    60,
  1084,  1085,   798,    27,    75,   852,    88,   752,   692,   693,
   694,    88,   843,   844,  1098,   682,   512,    69,    89,   850,
   851,    54,    88,    56,    69,    58,    69,    60,   773,    69,
   775,   527,    25,    26,  1118,  1119,    54,   782,    56,    25,
    26,   786,    60,   788,   788,   790,   791,   792,   792,     9,
    78,    79,   103,   798,   663,   878,   879,    55,   881,    55,
    56,    54,     3,   808,   808,   810,   764,    60,    54,  1334,
  1335,   380,   381,   382,    60,     3,     4,    55,    56,     3,
     4,  1165,   102,     7,   108,   109,   110,   102,    54,   102,
    56,   103,   790,   791,    60,   102,   841,   842,   843,   844,
   845,   845,    55,    56,   849,   850,   851,   852,   852,    37,
    38,    55,    56,    41,   236,   237,    54,    41,   142,   102,
    44,     7,   867,    51,    58,    53,   102,    51,   102,    53,
  1296,  1297,   877,   102,     4,   880,    58,   882,   882,   884,
   105,    65,    12,   752,   878,   879,   102,   881,    44,    88,
    20,    75,   850,   851,    24,    25,   105,    27,    32,    83,
   105,    85,   105,    33,    88,    89,   102,   581,     4,     5,
   102,   102,   873,   782,    44,    51,    46,     6,   105,   788,
   925,   926,    52,   928,    88,    81,    82,    44,    55,    59,
    86,    87,    88,    89,    58,    31,    58,   895,   896,   808,
    36,    71,     4,     5,    58,   102,    56,    77,    56,  1226,
   102,    56,    56,   958,   958,    51,   882,    53,    56,    58,
    55,   635,   102,  1086,   102,    95,    96,   102,   834,    31,
    88,   101,   646,   931,    36,   105,   105,    55,   108,   109,
   110,    60,    88,    89,    55,   990,   991,   992,    55,    51,
   120,    53,   122,   123,    25,    26,    60,   866,     1,  1004,
  1005,    32,  1007,    88,    58,   102,   990,    70,   992,   102,
   140,   141,   142,    70,   102,   884,   102,    70,   102,   102,
    23,   102,    25,    26,    55,    56,    70,    58,   897,    32,
  1035,  1035,   958,   102,    60,    60,   166,     5,     6,     7,
   609,    55,   102,  1337,    12,   911,   615,    60,  1131,  1132,
  1337,    54,    55,    56,   184,    58,   102,    60,   105,   102,
  1177,   103,   102,    83,   194,   992,  1189,    35,    89,  1030,
  1031,   105,   343,    44,     5,     6,     7,   105,   102,   102,
   102,    12,    34,     4,   103,   102,     7,   105,    58,    92,
   102,   847,  1183,  1184,   663,   102,   380,   381,   382,  1182,
   966,   231,   232,  1108,    35,  1205,   102,   102,    58,  1035,
    88,    88,     4,     5,     6,     7,    88,   983,    10,    88,
    12,    88,   103,    44,    75,    76,    77,    78,    79,  1252,
    51,   105,    53,     6,    60,    27,   102,  1131,  1132,    31,
   102,   815,   272,    35,    65,   102,  1107,   102,   278,   279,
   280,   105,    88,   259,    75,   285,   286,     3,     4,    51,
   102,    53,  1285,   102,    85,   103,  1127,    88,    89,   102,
   300,  1271,   102,  1039,   102,    60,    56,    56,  1183,  1184,
  1185,     7,    54,    14,   314,  1179,    56,   317,  1182,    58,
   102,   865,   322,   949,   102,    41,   326,    60,    44,    60,
   874,    93,    27,  1286,   105,    51,    44,    53,    56,   883,
    88,   341,  1078,    56,    60,  1338,    58,    88,    58,    65,
    88,   102,  1227,   105,    15,  1183,  1184,   102,   102,    75,
  1337,    58,   362,   363,   364,   365,   366,    83,   102,    56,
   370,   103,    88,  1227,    56,    56,   376,   102,   378,   102,
   380,   381,   382,    56,    56,   102,     9,    58,   388,    56,
    56,   102,     3,     4,   394,    88,     7,   397,    56,   375,
    55,    91,   102,   102,   843,   844,   845,    56,   102,     9,
   410,   850,   851,   852,   109,   110,   416,   417,   102,   419,
    58,    56,  1286,   102,   424,    88,   102,  1258,   102,  1226,
    41,     3,     4,    44,     9,     7,    56,     0,     0,   119,
    51,     2,    53,   328,   808,   120,  1185,   142,   823,    99,
   450,   451,   452,   453,    65,   609,   120,  1150,  1160,  1191,
   130,   615,  1337,  1337,    75,   441,   512,  1203,   444,    41,
   446,   447,    83,   449,    85,  1019,  1020,    88,    89,    51,
   463,    53,  1087,     4,   991,   626,     7,  1203,  1032,  1033,
   592,   467,   803,    65,   688,   471,   867,    33,    33,   654,
   500,   813,   502,    75,     4,   958,   417,   543,   882,   663,
   880,    83,   801,    12,   514,   515,    88,   517,   500,   837,
    20,   497,  1276,    44,   524,  1310,     4,   503,     6,     7,
    51,  1312,    53,    33,    12,   535,    73,    74,    75,    76,
    77,    78,    79,   884,    65,    -1,    46,    10,    -1,    27,
    -1,   370,    -1,    31,    75,   555,   556,    35,    -1,    59,
    -1,    -1,    25,    26,    85,    -1,    -1,    88,    89,    32,
    -1,    71,    -1,    51,    -1,    53,    76,    77,    -1,    -1,
    -1,    44,    -1,    -1,    -1,    -1,  1130,    -1,    88,    89,
    -1,    -1,    55,    56,    -1,    58,    96,    60,  1337,    99,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,   607,   608,   609,
    88,    -1,    -1,    -1,   755,   615,    -1,    -1,    -1,     4,
   120,     6,     7,   123,    -1,    88,    89,    12,    -1,    92,
    93,   631,   632,    -1,   634,    -1,    -1,   137,    -1,   102,
    -1,    -1,    27,    -1,    -1,    -1,    31,    -1,    -1,    -1,
    35,    -1,  1196,  1197,   654,  1199,  1200,    -1,    -1,    -1,
    -1,    -1,    -1,   663,    -1,    -1,    51,    -1,    53,  1108,
    -1,   812,    -1,    -1,     1,    -1,     3,     4,     5,     6,
     7,    -1,   682,    -1,   184,    12,   381,   382,    -1,   843,
   844,   845,   692,   693,   694,    -1,   850,   851,   852,    -1,
    27,    -1,    -1,    -1,    31,    -1,    -1,    -1,    35,    36,
    -1,    -1,    -1,    -1,    41,    -1,   857,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    51,    -1,    53,    -1,    -1,    56,
    -1,   231,    -1,    60,     4,    -1,     6,     7,    65,    -1,
   137,    -1,    12,    -1,  1183,  1184,  1185,    -1,    75,    -1,
    -1,    -1,   752,    -1,    -1,    -1,    83,    -1,    -1,   259,
    -1,    88,  1306,    -1,    -1,    35,    -1,    -1,    -1,   910,
   911,    -1,   272,   773,    44,   775,   103,    -1,    -1,    -1,
   280,    51,   782,    53,   760,    -1,   786,    -1,   788,    -1,
   790,   791,   792,    -1,    71,    65,    -1,    -1,   798,    76,
   300,    -1,    -1,    -1,    -1,    75,    -1,    -1,   808,    -1,
   810,    88,    89,    -1,    -1,    85,   792,    -1,    88,    89,
    -1,    -1,    99,   823,    -1,   966,   326,    -1,    -1,   524,
    -1,    -1,    -1,     3,     4,    -1,    -1,    -1,    -1,    -1,
    -1,   841,   842,   843,   844,   845,    -1,    -1,    -1,   849,
   850,   851,   852,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
   137,     4,    -1,   363,     7,    -1,   366,   867,    -1,    -1,
   370,    41,    -1,    -1,    -1,    -1,   852,   877,    -1,    -1,
   880,    51,   882,    53,   884,    -1,    56,    -1,    -1,    -1,
   866,   391,    -1,    -1,    -1,    65,    -1,    -1,    -1,  1040,
    -1,    44,    -1,    -1,  1045,    75,    -1,    -1,    51,    -1,
    53,    -1,    -1,    83,   609,    -1,    -1,   417,    88,   419,
   615,   897,    65,    -1,   424,   925,   926,    -1,   928,    -1,
    -1,    -1,    75,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,   441,    85,    -1,   444,    88,    89,   344,    -1,   449,
   450,   451,   452,   453,  1108,    -1,    -1,    -1,   958,    -1,
    -1,    -1,     4,   463,     6,     7,    -1,   467,   663,    -1,
    12,    -1,    -1,    24,    25,    -1,    -1,    -1,    -1,  1120,
  1121,    -1,   259,    -1,    -1,    27,    -1,    -1,    -1,    31,
   990,   991,   992,    35,   391,   272,    -1,    -1,    -1,   499,
   500,    -1,   697,    -1,  1004,  1005,   982,  1007,  1149,    51,
    -1,    53,    54,    -1,    -1,    -1,    -1,   517,    -1,    -1,
    71,    -1,    -1,   300,   524,    76,    -1,    -1,    -1,  1183,
  1184,  1185,    -1,     3,     4,  1035,    -1,    88,    89,    -1,
    -1,    -1,   439,    -1,    -1,    -1,    88,    -1,    99,    -1,
     3,     4,    -1,  1194,     7,    -1,    -1,   108,   109,    -1,
  1201,  1202,    -1,    -1,    -1,  1041,  1042,  1043,  1044,  1210,
    -1,    41,    -1,    -1,    -1,    -1,    -1,  1053,    -1,    -1,
    -1,    51,    -1,    53,    -1,    -1,   137,    -1,    41,   140,
   141,    44,    -1,   370,    -1,    65,   791,   792,    51,   496,
    53,   498,   499,    -1,    -1,    75,    -1,    -1,  1108,   609,
    -1,  1087,    65,    83,   391,   615,    -1,    -1,    88,  1095,
    -1,    -1,    75,    -1,    -1,    -1,    -1,   524,  1269,  1270,
    83,    -1,    85,   530,    -1,    88,    89,    71,    72,    73,
    74,    75,    76,    77,    78,    79,    -1,   424,    -1,   844,
   845,    -1,    -1,    -1,    -1,    -1,   851,   852,    -1,    -1,
    -1,    -1,    -1,   663,   441,    -1,    -1,   444,    -1,    -1,
    -1,    -1,   449,   450,   451,   452,   453,    -1,    -1,    -1,
    -1,    -1,    -1,  1183,  1184,  1185,   463,    -1,   585,    -1,
   467,    -1,    -1,  1169,     1,  1336,     3,     4,     5,     6,
     7,   896,   897,    -1,    -1,    12,    -1,    -1,   259,  1185,
    -1,    -1,    -1,    -1,  1190,  1191,    -1,    -1,   615,    -1,
    27,   272,   499,   500,    31,    -1,    -1,  1227,    35,    36,
    -1,    -1,    -1,    -1,    41,    -1,    -1,    -1,    -1,  1215,
   517,    -1,    -1,    -1,    51,    -1,    53,   524,    -1,   300,
    -1,    -1,   752,    60,    -1,    -1,   756,    -1,    65,    -1,
    -1,     1,    -1,     3,     4,     5,     6,     7,    75,    -1,
    -1,    -1,    12,    -1,    -1,     4,    83,     6,     7,    -1,
    -1,    88,   782,    12,    -1,    25,    26,    27,   788,    -1,
    -1,    31,   792,    -1,    -1,    35,   103,    -1,    27,    39,
   697,    41,    31,    -1,  1280,    45,    35,    -1,   808,    -1,
   810,    51,    -1,    53,    -1,    -1,    56,    -1,    -1,   370,
  1296,  1297,    51,    -1,    53,    65,    -1,    -1,    -1,   380,
   381,    -1,   609,  1309,    -1,    75,   836,  1337,   615,    -1,
   391,    -1,    -1,    83,    -1,   845,    -1,    -1,    88,    -1,
    -1,    -1,   852,    -1,    94,    95,    -1,     3,     4,   756,
    -1,     7,    -1,    -1,    -1,    -1,   866,    -1,    -1,    -1,
    -1,    -1,   769,   424,   771,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,   882,    -1,   884,    -1,   663,    -1,    -1,    -1,
   441,    -1,    -1,   444,    -1,    41,    -1,   897,   449,   450,
   451,   452,   453,    -1,    -1,    51,    -1,    53,    -1,    -1,
    -1,    -1,   463,  1108,    -1,    -1,   467,    -1,    -1,    65,
     1,    -1,     3,     4,     5,     6,     7,    -1,   825,    75,
   827,    12,   829,    -1,    -1,    -1,    -1,    83,    -1,    69,
    -1,    -1,    88,    -1,    -1,    -1,    27,    -1,   499,   500,
    31,    -1,    -1,    -1,    35,    36,    -1,    76,   958,    -1,
    41,    -1,    -1,   514,   515,    -1,   517,    -1,    -1,    -1,
    51,    -1,    53,   524,    -1,   752,    -1,    -1,    -1,    60,
    99,    -1,    -1,    -1,    65,    -1,    -1,   117,    -1,  1184,
  1185,   991,    -1,   993,    75,    -1,    -1,    -1,    -1,    -1,
  1000,    -1,    83,    -1,    -1,   782,   136,    88,    -1,    -1,
    -1,   788,    -1,    -1,    -1,   792,    -1,    -1,   137,    -1,
    -1,   151,   103,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,   808,    -1,    -1,    -1,  1035,     1,    -1,     3,     4,
     5,     6,     7,    -1,     3,     4,    -1,    12,     7,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,   607,   608,   609,    -1,
    -1,    -1,    27,    -1,   615,    -1,    31,    -1,   845,    -1,
    35,    36,    -1,    -1,    -1,   852,    41,    -1,    -1,    -1,
    -1,    -1,    41,    -1,    -1,    44,    51,  1087,    53,   866,
    -1,    56,    51,    -1,    53,    60,    -1,    -1,     3,     4,
    65,    -1,    -1,    -1,    -1,    -1,    65,   884,    -1,    -1,
    75,    -1,   663,    -1,    -1,    -1,    75,    -1,    83,    -1,
   897,    -1,    -1,    88,    83,    -1,    85,    -1,    -1,    88,
    89,    -1,     4,     5,     6,     7,    41,    -1,   103,    44,
    12,   260,    -1,    -1,    -1,    -1,    51,    -1,    53,    -1,
    -1,    -1,    -1,    -1,    -1,    27,    -1,    -1,    -1,    31,
    65,  1161,     1,    35,     3,     4,     5,     6,     7,  1169,
    75,    -1,  1172,    12,    -1,    -1,    -1,    -1,    83,    51,
    85,    53,    -1,    88,    89,  1185,    -1,    -1,    27,    -1,
  1190,  1191,    31,    -1,    -1,    -1,    35,     3,     4,    -1,
    -1,   752,    41,    -1,    -1,    -1,    45,    -1,    -1,    -1,
    -1,  1108,    51,    -1,    53,  1215,    -1,    56,    -1,    -1,
    -1,    -1,  1222,    -1,   343,   344,    65,    -1,    -1,  1229,
    -1,   782,  1232,    -1,    -1,    41,    75,   788,    -1,   790,
   791,   792,    -1,    -1,    83,    51,    -1,    53,    -1,    88,
    56,    -1,    -1,  1253,   384,    94,  1256,   808,    -1,    65,
   390,    -1,    -1,  1263,    -1,    -1,    -1,    -1,    -1,    75,
    -1,    -1,   391,    -1,    -1,    -1,    -1,    83,    -1,    -1,
    -1,    -1,    88,     4,     5,     6,     7,  1287,    -1,    -1,
    -1,    12,   843,   844,   845,   414,    -1,    -1,    -1,   850,
   851,   852,  1302,    -1,   434,   435,    27,   437,  1205,    -1,
    31,    -1,    -1,    -1,    35,   866,    -1,  1317,    -1,    -1,
   439,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    51,    -1,    53,   884,  1334,  1335,    -1,  1337,     3,     4,
    -1,    -1,     7,    -1,   463,    -1,   897,   466,    69,    -1,
   469,   470,    -1,   472,   473,   474,   475,   476,   477,   478,
   479,   480,   481,   482,   483,   484,   485,   486,   487,   488,
   489,   490,    -1,    -1,  1271,    -1,    41,   496,    -1,   498,
   499,    -1,    -1,    -1,    -1,    -1,    51,    -1,    53,    -1,
   520,   521,  1169,    -1,     4,   525,     6,    -1,    -1,    -1,
    65,    -1,    12,    -1,    -1,   524,    -1,    -1,  1185,    -1,
    75,   530,    -1,  1190,  1191,    -1,    -1,    27,    83,    -1,
    -1,    31,    -1,    88,    -1,    35,   545,   546,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1215,    -1,
    -1,    51,    -1,    53,    -1,    -1,    -1,    -1,    -1,    -1,
     3,     4,     5,     6,     7,    -1,    -1,    10,    -1,    12,
    -1,     3,     4,     5,     6,     7,   585,    -1,    -1,    -1,
    12,   601,   602,   592,    27,    -1,    -1,    -1,    31,    12,
    -1,   611,    35,    -1,    -1,    27,    -1,   617,    41,    31,
    -1,    24,    25,    35,    27,    -1,   615,    -1,    51,    41,
    53,    -1,    -1,    -1,    -1,     4,    -1,   626,    -1,    51,
    -1,    53,    65,    -1,    56,    -1,    -1,    -1,    -1,    52,
    -1,    -1,    75,    65,    -1,    24,    25,    -1,    27,    -1,
    83,   661,    -1,    75,    33,    88,    -1,    -1,    -1,    -1,
    93,    83,    -1,   662,    -1,    44,    88,    46,    -1,    -1,
     3,     4,     5,     6,     7,    -1,    -1,    -1,    -1,    12,
  1337,    -1,    -1,    -1,    -1,    -1,    -1,    66,   101,    -1,
   103,   104,   105,    -1,    -1,   108,   109,   110,   697,    -1,
    -1,    -1,    35,    -1,    -1,    -1,    -1,    -1,    41,    -1,
    -1,    44,    -1,    -1,    -1,    -1,    95,    -1,    51,   718,
    53,    -1,   101,    -1,   103,    -1,   105,    -1,    -1,   108,
   109,   110,    65,    -1,    -1,    -1,    -1,    -1,  1169,    -1,
    -1,   120,    75,   122,   123,    -1,    -1,    -1,   758,   759,
    83,   761,  1183,  1184,  1185,    88,   755,   756,    -1,  1190,
  1191,   140,   141,   142,    -1,    -1,    -1,    -1,    -1,    -1,
   769,   150,   771,    -1,    -1,    -1,    -1,   787,    -1,    -1,
    -1,   194,    -1,    -1,  1215,    -1,    -1,   166,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,     3,     4,     5,     6,     7,
    -1,   800,    -1,    -1,    12,   184,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,   812,    -1,   194,    -1,    -1,    -1,   232,
    -1,    -1,    -1,    -1,    -1,    -1,   825,    35,   827,    -1,
   829,    -1,    -1,    41,    -1,    -1,    44,    -1,   848,     4,
    -1,     6,     7,    51,    -1,    53,    -1,    12,    -1,    -1,
   860,   861,   862,    -1,    -1,    -1,    -1,    65,   857,    -1,
    -1,    -1,    -1,   276,    -1,   278,   279,    75,    -1,    -1,
    35,    -1,   871,   872,    -1,    83,    -1,    85,    -1,    44,
    88,    89,    -1,    -1,    -1,    -1,    51,     1,    53,     3,
     4,     5,     6,     7,    -1,   308,    -1,   276,    12,    -1,
    65,   314,    -1,    -1,   317,   284,  1337,   286,    -1,   322,
    75,   910,   911,    27,    -1,   914,    -1,    31,    -1,    -1,
    85,    35,    -1,    88,    89,    -1,    -1,    41,    -1,   939,
    -1,    -1,    -1,    -1,    -1,   314,    -1,    51,   317,    53,
    -1,    -1,    -1,   322,     3,     4,     5,     6,     7,    -1,
    -1,    65,    -1,    12,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    75,    -1,    -1,    -1,    -1,    -1,   966,    27,    83,
    -1,    -1,    31,    -1,    88,    -1,    35,    -1,    -1,   978,
    -1,    -1,    41,   362,   363,   364,   365,    -1,    -1,    -1,
    -1,   370,    51,    -1,    53,    -1,    -1,   376,    -1,   378,
    -1,   380,   381,   382,    -1,    -1,    65,     3,     4,   388,
    -1,     7,    -1,  1023,    -1,   394,    75,    -1,   397,    -1,
    -1,    -1,    -1,   436,    83,    -1,    -1,  1026,    -1,    88,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,   416,   417,    -1,
   419,  1040,    -1,     4,    -1,    41,  1045,    -1,  1047,    -1,
    -1,     4,     5,     6,     7,    51,    -1,    53,  1068,    12,
    -1,    -1,    -1,    24,    25,    -1,    27,    -1,    -1,    65,
    -1,    -1,    33,    -1,    27,    -1,    -1,    -1,    31,    75,
    -1,    -1,    35,    44,    -1,    46,    -1,    83,    -1,   502,
    -1,    -1,    88,    -1,    -1,    -1,    -1,    -1,    51,   512,
    53,   514,   515,     3,     4,     5,     6,     7,    -1,  1108,
    10,    -1,    12,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,  1120,  1121,    -1,    -1,    -1,    -1,    27,    -1,  1128,
  1129,    31,    -1,   512,    95,    35,    -1,    -1,    -1,    -1,
   101,    41,    -1,   556,   105,   524,    -1,   108,   109,   110,
  1149,    51,    -1,    53,    -1,    -1,    -1,    -1,    -1,   120,
    -1,   122,   123,    -1,    -1,    65,     4,     5,     6,     7,
    -1,  1170,    10,    -1,    12,    75,   555,    -1,    -1,   140,
   141,   142,    -1,    83,    -1,    -1,    -1,    -1,    88,    27,
    -1,    -1,    27,    31,    -1,  1194,    -1,    35,    -1,    -1,
    -1,    -1,  1201,  1202,    -1,   166,  1205,    -1,    -1,    44,
    -1,  1210,    -1,    51,    -1,    53,     3,     4,     5,     6,
     7,    -1,    -1,   184,    -1,    12,    -1,    -1,   607,   608,
   609,    -1,    -1,   194,    -1,    -1,   615,    -1,    -1,    -1,
    27,    -1,    -1,    -1,    31,    -1,    -1,    -1,    35,    -1,
    -1,    -1,   631,   632,    41,   634,    -1,    44,    -1,    -1,
    95,    -1,    -1,    -1,    51,    -1,    53,    -1,    -1,   682,
  1269,  1270,  1271,   108,   109,   110,    -1,    -1,    65,   692,
   693,   694,    -1,    -1,   663,    -1,    -1,   122,    75,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    83,    -1,    85,    -1,
    -1,    88,    89,    -1,    -1,   140,   141,   142,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   697,    -1,
     3,     4,    -1,    -1,   285,   286,    -1,    -1,    -1,    -1,
    -1,   166,    -1,    -1,    -1,    -1,    -1,  1336,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,     3,     4,     5,     6,
     7,    -1,    -1,   314,    -1,    12,   317,    -1,    41,    -1,
   773,   322,   775,    -1,    -1,    -1,    -1,    -1,    51,    -1,
    53,    -1,    -1,   786,    -1,    -1,    -1,    60,    35,    -1,
   341,    -1,    65,    -1,    41,    -1,    -1,    44,    -1,    -1,
    -1,    -1,    75,    -1,    51,    -1,    53,   232,    -1,    -1,
    83,   362,   363,   364,   365,    88,    -1,    -1,    65,   370,
    -1,   790,   791,   792,    -1,   376,    -1,   378,    75,   380,
   381,   382,    -1,    -1,    -1,    -1,    83,   388,    85,    -1,
    -1,    88,    89,   394,    -1,    -1,   397,    -1,    -1,    -1,
    -1,    -1,    -1,   278,   279,   280,    -1,    -1,    -1,    -1,
    -1,   286,    -1,    -1,    -1,   416,   417,    -1,   419,    -1,
    -1,    -1,   841,   842,   843,   844,   845,   880,   847,    -1,
   849,   850,   851,   852,    -1,    -1,     3,     4,     5,     6,
     7,    -1,    -1,    -1,    -1,    12,    68,    69,    70,    71,
    72,    73,    74,    75,    76,    77,    78,    79,   877,    -1,
    27,   880,    -1,   882,    31,    -1,    -1,    -1,    35,    -1,
    -1,    -1,   925,   926,    41,   928,   895,   896,   897,    -1,
    -1,    -1,    -1,    -1,    51,    -1,    53,   362,    -1,   364,
   365,   366,    -1,    60,    -1,    -1,    -1,    -1,    65,    -1,
    -1,   376,    -1,   378,    -1,   380,   381,   382,    75,     4,
     5,     6,     7,   388,    -1,    10,    83,    12,    -1,   394,
    -1,    88,   397,   524,    -1,    -1,    -1,    -1,    -1,    -1,
   949,    -1,    27,    -1,    -1,    -1,    31,    -1,    -1,   958,
    35,   416,    -1,    -1,   140,   141,   142,    -1,    -1,    44,
    -1,    -1,    -1,    -1,   555,    -1,    51,    -1,    53,    -1,
    -1,    -1,    -1,     3,     4,    -1,    -1,     7,    -1,    -1,
    65,   990,   991,   992,     3,     4,    -1,    -1,     7,    -1,
    75,    -1,    -1,    -1,    -1,  1004,  1005,    44,  1007,    -1,
    85,    -1,    -1,    88,    89,    -1,    -1,    -1,    93,    -1,
    -1,    41,    -1,    -1,    -1,    -1,   607,   608,   609,    66,
    -1,    51,    41,    53,   615,    -1,  1035,    -1,    -1,    -1,
    -1,    -1,    51,    -1,    53,    65,    -1,   502,    85,    -1,
   631,   632,    -1,   634,    -1,    75,    65,    -1,    95,   514,
   515,    -1,   517,    83,    -1,    -1,    75,    -1,    88,   524,
    -1,    -1,    -1,    -1,    83,    -1,    -1,    -1,    -1,    88,
    -1,    -1,   663,    -1,    -1,   122,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,     3,     4,    -1,     6,     7,     8,     9,
   555,    11,    12,   140,   141,   142,    -1,    -1,    -1,  1108,
    -1,    -1,    -1,   150,    -1,    -1,   697,    27,    28,    29,
    30,    31,    -1,    33,    -1,    35,    -1,    37,    38,   166,
    40,    41,    42,    43,    -1,    -1,    46,    47,    48,    49,
    50,    51,    -1,    53,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,   607,   608,   609,    -1,    -1,    -1,    -1,   196,
   615,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    81,    82,    83,     3,     4,   631,   632,    88,   634,
    -1,    -1,    92,    -1,  1183,  1184,  1185,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,   104,    -1,    -1,    -1,    -1,    -1,
   376,    -1,   378,    -1,   380,   381,   382,    -1,   663,   790,
   791,   792,    41,    -1,    -1,    -1,    -1,   798,   394,    -1,
    -1,    -1,    51,    -1,    53,    -1,    -1,   682,  1227,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    65,   692,   693,   694,
   416,    -1,   823,    -1,    -1,    -1,    75,   284,    -1,   286,
    -1,    -1,    -1,    -1,    83,    -1,    -1,    -1,    -1,    88,
   841,   842,   843,   844,   845,    -1,    -1,    -1,   849,   850,
   851,   852,    -1,    -1,    -1,    -1,    -1,     4,    -1,     6,
     7,    -1,    -1,    -1,    -1,    12,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,   877,    -1,    -1,   880,
    27,   882,    -1,    -1,    31,    -1,    -1,    -1,    35,    -1,
    -1,    -1,    -1,    -1,   895,   896,   897,    44,   773,    -1,
   775,    -1,    -1,    -1,    51,   362,    53,   364,   365,    -1,
    -1,   786,    -1,    -1,    -1,   790,   791,   792,    65,   376,
    -1,   378,    -1,   380,   381,   382,    -1,    -1,    75,    -1,
    -1,   388,    -1,    -1,   278,   279,   280,   394,    85,    -1,
   397,    88,    89,    66,    67,    68,    69,    70,    71,    72,
    73,    74,    75,    76,    77,    78,    79,   958,    -1,   416,
    -1,    -1,    -1,    -1,    -1,     4,   841,   842,   843,   844,
   845,    -1,    -1,    -1,   849,   850,   851,   852,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    24,    25,    -1,    -1,   990,
   991,   992,     3,     4,    33,    -1,     7,    -1,    -1,    -1,
    -1,    -1,   877,  1004,  1005,    -1,  1007,    46,    -1,    -1,
    -1,   607,   608,   609,    -1,    -1,    -1,    -1,   362,   615,
   364,   365,   366,     3,     4,    -1,    -1,     7,    -1,    -1,
    41,    -1,    -1,    -1,  1035,   631,   632,    -1,   634,    -1,
    51,    -1,    53,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
   925,   926,    -1,   928,    65,    -1,    -1,    -1,    -1,    -1,
    -1,    41,   101,    -1,    75,    -1,   105,   663,    -1,    -1,
   527,    51,    83,    53,    -1,    -1,    -1,    88,    -1,    -1,
    -1,   120,    -1,    -1,   123,    65,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    75,    -1,    -1,   555,    -1,
    -1,   140,   141,    83,    -1,    -1,    -1,  1108,    88,    -1,
    -1,    -1,    -1,    -1,    -1,   990,    -1,   992,    -1,     3,
     4,   278,   279,   280,    -1,    -1,    -1,    -1,    -1,  1004,
  1005,    -1,  1007,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3,     4,     5,     6,     7,   184,    -1,    -1,    -1,    12,
   607,   608,   609,    -1,    -1,   194,    -1,    41,   615,    -1,
    -1,    -1,    -1,    -1,    27,    -1,    -1,    51,    31,    53,
   514,   515,    35,   517,   631,   632,    -1,   634,    41,    -1,
   524,    65,  1183,  1184,  1185,    -1,    -1,    -1,    51,    -1,
    53,    75,    -1,    56,    -1,    -1,    -1,    -1,    -1,    83,
    -1,    -1,    65,    -1,    88,   362,   663,   364,   365,   366,
    -1,   555,    75,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    83,    -1,    -1,    -1,    -1,    88,  1227,    -1,    -1,    -1,
    -1,    -1,    -1,  1108,    -1,    -1,    -1,    10,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,   841,   842,   843,   844,   845,
    -1,    -1,    -1,   849,   850,   851,   852,    -1,    -1,    -1,
    -1,    -1,    -1,   607,   608,   609,    -1,    -1,    -1,    -1,
    -1,   615,    -1,    -1,    -1,   314,    -1,    -1,   317,    -1,
    -1,   877,    -1,   322,    57,    58,    59,    60,    61,    62,
    63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
    73,    74,    75,    76,    77,    78,    79,    -1,  1183,  1184,
  1185,    67,    68,    69,    70,    71,    72,    73,    74,    75,
    76,    77,    78,    79,   363,    -1,    -1,    -1,    -1,    -1,
    -1,   370,    -1,    -1,    -1,    -1,    -1,   376,   682,   378,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,  1227,    -1,    -1,   394,    -1,   514,   515,    62,
    63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
    73,    74,    75,    76,    77,    78,    79,   416,   417,    -1,
   419,    -1,    -1,    -1,   841,   842,   843,   844,   845,    -1,
   847,    -1,   849,   850,   851,   852,    -1,    -1,   555,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1004,  1005,
    -1,  1007,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
   877,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   773,
    -1,   775,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,   786,    -1,    -1,    -1,   790,   791,   792,    -1,
   607,   608,    -1,    -1,    57,    58,    59,    -1,    61,    62,
    63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
    73,    74,    75,    76,    77,    78,    79,    65,    66,    67,
    68,    69,    70,    71,    72,    73,    74,    75,    76,    77,
    78,    79,   949,    -1,    -1,    -1,    -1,   841,   842,   843,
   844,   845,   105,    -1,    -1,   849,   850,   851,   852,    -1,
    -1,    -1,  1108,    -1,     3,     4,     5,     6,     7,    -1,
    -1,    10,    -1,    12,    -1,   682,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,   990,    -1,   992,    -1,    -1,    27,    -1,
    -1,    -1,    31,    -1,    -1,    -1,    35,  1004,  1005,    -1,
  1007,    -1,    41,    -1,    -1,    44,    -1,    -1,    -1,    -1,
    -1,    -1,    51,    -1,    53,    -1,    -1,    -1,   607,   608,
    -1,    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    75,  1183,  1184,  1185,
    -1,    -1,   631,   632,    83,   634,    85,    -1,    -1,    88,
    89,    -1,    -1,    -1,    93,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,   773,    -1,   775,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   786,
    -1,    -1,    -1,   790,   791,    64,    65,    66,    67,    68,
    69,    70,    71,    72,    73,    74,    75,    76,    77,    78,
    79,  1108,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
  1004,  1005,    -1,  1007,    -1,    -1,    -1,    -1,    -1,    -1,
    32,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,   841,   842,   843,   844,    -1,    -1,
    -1,    -1,   849,   850,   851,    57,    58,    59,    -1,    61,
    62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
    72,    73,    74,    75,    76,    77,    78,    79,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,  1183,  1184,  1185,    -1,
    -1,    -1,     1,    -1,     3,     4,     5,     6,     7,     8,
     9,    -1,    11,    12,    13,    -1,    15,    16,    17,    18,
    19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
    29,    30,    31,    -1,    33,    -1,    35,    -1,    37,    38,
  1227,    40,    41,    42,    43,    -1,    -1,    46,    47,    48,
    49,    50,    51,    -1,    53,    54,    -1,    56,    -1,    -1,
    -1,    -1,    -1,    62,    -1,    -1,    65,    -1,    -1,    -1,
    -1,    -1,   841,   842,    73,    74,    75,    -1,    -1,    -1,
   849,    -1,    81,    82,    83,    -1,    -1,    -1,    -1,    88,
    -1,    90,    -1,    92,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,   103,   104,    -1,    -1,   877,    -1,
    -1,   880,    -1,   882,    -1,    -1,    -1,  1004,  1005,    -1,
  1007,     1,    -1,     3,     4,     5,     6,     7,     8,     9,
    -1,    11,    12,    13,    -1,    15,    16,    17,    18,    19,
    20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
    30,    31,    -1,    33,    -1,    35,    -1,    37,    38,    -1,
    40,    41,    42,    43,    -1,    -1,    46,    47,    48,    49,
    50,    51,    -1,    53,    54,    -1,    56,    -1,    -1,    -1,
    -1,    -1,    62,    -1,    -1,    65,    -1,    -1,    -1,   958,
    -1,    -1,    -1,    73,    74,    75,    -1,    -1,    -1,    -1,
    -1,    81,    82,    83,    -1,    -1,    -1,    -1,    88,    -1,
    90,    -1,    92,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,   991,   103,   104,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,  1004,  1005,    -1,  1007,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,     1,    -1,     3,     4,     5,     6,     7,
     8,     9,    -1,    11,    12,    13,  1035,    15,    16,    17,
    18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
    28,    29,    30,    31,    -1,    33,    -1,    35,    -1,    37,
    38,    -1,    40,    41,    42,    43,    -1,    -1,    46,    47,
    48,    49,    50,    51,    -1,    53,    54,    -1,    56,    -1,
    -1,    -1,    -1,    -1,    62,    -1,    -1,    65,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    73,    74,    75,    -1,    -1,
    -1,    -1,    -1,    81,    82,    83,    -1,    -1,    -1,    -1,
    88,    -1,    90,    -1,    92,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,   103,   104,     1,    -1,     3,
     4,     5,     6,     7,     8,     9,    -1,    11,    12,    13,
    -1,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    24,    25,    26,    27,    28,    29,    30,    31,    -1,    33,
    -1,    35,    -1,    37,    38,    -1,    40,    41,    42,    43,
    -1,    -1,    46,    47,    48,    49,    50,    51,    -1,    53,
    54,    -1,    56,    -1,    -1,    -1,    -1,    -1,    62,    -1,
    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,
    74,    75,    -1,    -1,    -1,    -1,    -1,    81,    82,    83,
    -1,    -1,    -1,    -1,    88,    -1,    90,    -1,    92,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   103,
   104,     1,    -1,     3,     4,     5,     6,     7,     8,     9,
    -1,    11,    12,    13,    -1,    15,    16,    17,    18,    19,
    20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
    30,    31,    -1,    33,    -1,    35,    -1,    37,    38,    -1,
    40,    41,    42,    43,    -1,    -1,    46,    47,    48,    49,
    50,    51,    -1,    53,    54,    -1,    56,    -1,    -1,    -1,
    -1,    -1,    62,    -1,    -1,    65,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    73,    74,    75,    -1,    -1,    -1,    -1,
    -1,    81,    82,    83,    -1,    -1,    -1,    -1,    88,    -1,
    90,    -1,    92,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,   103,   104,     1,    -1,     3,     4,     5,
     6,     7,     8,     9,    -1,    11,    12,    13,    -1,    15,
    16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    26,    27,    28,    29,    30,    31,    -1,    33,    -1,    35,
    -1,    37,    38,    -1,    40,    41,    42,    43,    -1,    -1,
    46,    47,    48,    49,    50,    51,    -1,    53,    54,    -1,
    56,    -1,    -1,    -1,    -1,    -1,    62,    -1,    -1,    65,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,    74,    75,
    -1,    -1,    -1,    -1,    -1,    81,    82,    83,    -1,    -1,
    -1,    -1,    88,    -1,    90,     1,    92,     3,     4,     5,
     6,     7,     8,     9,    -1,    11,    12,    13,   104,    15,
    16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    26,    27,    28,    29,    30,    31,    -1,    33,    -1,    35,
    -1,    37,    38,    -1,    40,    41,    42,    43,    -1,    -1,
    46,    47,    48,    49,    50,    51,    -1,    53,    54,    -1,
    56,    -1,    -1,    -1,    -1,    -1,    62,    -1,    -1,    65,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,    74,    75,
    -1,    -1,    -1,    -1,    -1,    81,    82,    83,    -1,    -1,
    -1,    -1,    88,    -1,    90,     1,    92,     3,     4,     5,
     6,     7,     8,     9,    -1,    11,    12,    13,   104,    15,
    16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    26,    27,    28,    29,    30,    31,    -1,    33,    -1,    35,
    -1,    37,    38,    -1,    40,    41,    42,    43,    -1,    -1,
    46,    47,    48,    49,    50,    51,    -1,    53,    54,    -1,
    56,    -1,    -1,    -1,    -1,    -1,    62,    -1,    -1,    65,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,    74,    75,
    -1,    -1,    -1,    -1,    -1,    81,    82,    83,    -1,    -1,
    -1,    -1,    88,    -1,    90,     1,    92,     3,     4,     5,
     6,     7,     8,     9,    10,    11,    12,    -1,   104,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    27,    28,    29,    30,    31,    -1,    33,    -1,    35,
    -1,    37,    38,    -1,    40,    41,    42,    43,    44,    -1,
    46,    47,    48,    49,    50,    51,    -1,    53,    54,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    62,    -1,    -1,    65,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,    74,    75,
    -1,    -1,    -1,    -1,    -1,    81,    82,    83,    -1,    85,
    -1,    -1,    88,    89,    -1,    -1,    92,    93,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,     1,   104,     3,
     4,     5,     6,     7,     8,     9,    10,    11,    12,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    27,    28,    29,    30,    31,    -1,    33,
    -1,    35,    -1,    37,    38,    -1,    40,    41,    42,    43,
    44,    -1,    46,    47,    48,    49,    50,    51,    -1,    53,
    54,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    62,    -1,
    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,
    74,    75,    -1,    -1,    -1,    -1,    -1,    81,    82,    83,
    -1,    85,    -1,    -1,    88,    89,    -1,    -1,    92,    93,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     1,
   104,     3,     4,     5,     6,     7,     8,     9,    10,    11,
    12,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    27,    28,    29,    30,    31,
    -1,    33,    -1,    35,    -1,    37,    38,    -1,    40,    41,
    42,    43,    -1,    -1,    46,    47,    48,    49,    50,    51,
    -1,    53,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    62,    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    73,    74,    75,    -1,    -1,    -1,    -1,    -1,    81,
    82,    83,    -1,    -1,    -1,    -1,    88,    -1,    -1,    -1,
    92,    93,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
   102,     1,   104,     3,     4,     5,     6,     7,     8,     9,
    10,    11,    12,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    27,    28,    29,
    30,    31,    -1,    33,    -1,    35,    -1,    37,    38,    -1,
    40,    41,    42,    43,    -1,    -1,    46,    47,    48,    49,
    50,    51,    -1,    53,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    62,    -1,    -1,    65,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    73,    74,    75,    -1,    -1,    -1,    -1,
    -1,    81,    82,    83,    -1,    -1,    -1,    -1,    88,    -1,
    -1,    -1,    92,    93,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,   102,     1,   104,     3,     4,    -1,     6,     7,
     8,     9,    -1,    11,    12,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    27,
    28,    29,    30,    31,    -1,    33,    -1,    35,    -1,    37,
    38,    -1,    40,    41,    42,    43,    -1,    -1,    46,    47,
    48,    49,    50,    51,    -1,    53,    54,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    62,    -1,    -1,    65,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    73,    74,    75,    -1,    -1,
    -1,    -1,    -1,    81,    82,    83,    -1,    -1,    -1,    -1,
    88,    89,    -1,     1,    92,     3,     4,    -1,     6,     7,
     8,     9,    -1,    11,    12,   103,   104,    -1,    -1,    -1,
    -1,    19,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    27,
    28,    29,    30,    31,    -1,    33,    -1,    35,    -1,    37,
    38,    -1,    40,    41,    42,    43,    -1,    -1,    46,    47,
    48,    49,    50,    51,    -1,    53,    54,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    62,    -1,    -1,    65,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    73,    74,    75,    -1,    -1,
    -1,    -1,    -1,    81,    82,    83,    -1,    -1,    -1,    -1,
    88,    -1,    -1,     1,    92,     3,     4,    -1,     6,     7,
     8,     9,    -1,    11,    12,   103,   104,    -1,    -1,    -1,
    -1,    19,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    27,
    28,    29,    30,    31,    -1,    33,    -1,    35,    -1,    37,
    38,    -1,    40,    41,    42,    43,    -1,    -1,    46,    47,
    48,    49,    50,    51,    -1,    53,    54,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    62,    -1,    -1,    65,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    73,    74,    75,    -1,    -1,
    -1,    -1,    -1,    81,    82,    83,    -1,    -1,    -1,    -1,
    88,    -1,    -1,     1,    92,     3,     4,     5,     6,     7,
     8,     9,    -1,    11,    12,   103,   104,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    27,
    28,    29,    30,    31,    -1,    33,    -1,    35,    -1,    37,
    38,    -1,    40,    41,    42,    43,    -1,    -1,    46,    47,
    48,    49,    50,    51,    -1,    53,    54,    -1,    56,    -1,
    -1,    -1,    -1,    -1,    62,    -1,    -1,    65,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    73,    74,    75,    -1,    -1,
    -1,    -1,    -1,    81,    82,    83,    -1,    -1,    -1,    -1,
    88,    -1,    -1,     1,    92,     3,     4,    -1,     6,     7,
     8,     9,    -1,    11,    12,    -1,   104,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    27,
    28,    29,    30,    31,    -1,    33,    -1,    35,    -1,    37,
    38,    -1,    40,    41,    42,    43,    -1,    -1,    46,    47,
    48,    49,    50,    51,    -1,    53,    54,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    62,    -1,    -1,    65,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    73,    74,    75,    -1,    -1,
    -1,    -1,    -1,    81,    82,    83,    -1,    -1,    -1,    -1,
    88,    89,     1,    -1,    92,     4,    -1,     6,     7,    -1,
    -1,    -1,    -1,    12,    -1,    -1,   104,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    27,    -1,
    -1,    -1,    31,    -1,    -1,    -1,    35,    -1,    37,    38,
    -1,    -1,    -1,    -1,    -1,    44,    -1,    -1,    -1,    -1,
    -1,    -1,    51,    -1,    53,    -1,    55,    -1,    57,    58,
    59,    -1,    61,    62,    63,    64,    65,    66,    67,    68,
    69,    70,    71,    72,    73,    74,    75,    76,    77,    78,
    -1,    -1,    81,    82,    83,    -1,     1,    86,     3,     4,
    89,     6,     7,     8,     9,    -1,    11,    12,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,   104,    -1,    -1,    -1,    -1,
    -1,    -1,    27,    28,    29,    30,    31,    -1,    33,    -1,
    35,    -1,    37,    38,    -1,    40,    41,    42,    43,    -1,
    -1,    46,    47,    48,    49,    50,    51,    -1,    53,    54,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    62,    -1,    -1,
    65,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,    74,
    75,    -1,    -1,    -1,    -1,    -1,    81,    82,    83,    -1,
    -1,    -1,    -1,    88,    -1,    -1,     1,    92,     3,     4,
    -1,     6,     7,     8,     9,    -1,    11,    12,    -1,   104,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    27,    28,    29,    30,    31,    -1,    33,    -1,
    35,    -1,    37,    38,    -1,    40,    41,    42,    43,    -1,
    -1,    46,    47,    48,    49,    50,    51,    -1,    53,    54,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    62,    -1,    -1,
    65,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,    74,
    75,    -1,    -1,    -1,    -1,    -1,    81,    82,    83,    -1,
    -1,    -1,    -1,    88,    -1,    -1,     1,    92,     3,     4,
    -1,     6,     7,     8,     9,    -1,    11,    12,    -1,   104,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    27,    28,    29,    30,    31,    -1,    33,    -1,
    35,    -1,    37,    38,    -1,    40,    41,    42,    43,    -1,
    -1,    46,    47,    48,    49,    50,    51,    -1,    53,    -1,
    -1,    -1,    -1,    -1,    -1,    60,    -1,    62,    -1,    -1,
    65,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,    74,
    75,    -1,    -1,    -1,    -1,    -1,    81,    82,    83,    -1,
    -1,    -1,    -1,    88,    -1,    -1,     1,    92,     3,     4,
    -1,     6,     7,     8,     9,    -1,    11,    12,    -1,   104,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    27,    28,    29,    30,    31,    -1,    33,    -1,
    35,    -1,    37,    38,    -1,    40,    41,    42,    43,    -1,
    -1,    46,    47,    48,    49,    50,    51,    -1,    53,    54,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    62,    -1,    -1,
    65,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,    74,
    75,    -1,    -1,    -1,    -1,    -1,    81,    82,    83,    -1,
    -1,    -1,    -1,    88,    -1,    -1,     1,    92,     3,     4,
    -1,     6,     7,     8,     9,    -1,    11,    12,    -1,   104,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    27,    28,    29,    30,    31,    -1,    33,    -1,
    35,    -1,    37,    38,    -1,    40,    41,    42,    43,    -1,
    -1,    46,    47,    48,    49,    50,    51,    -1,    53,    54,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    62,    -1,    -1,
    65,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,    74,
    75,    -1,    -1,    -1,    -1,    -1,    81,    82,    83,    -1,
    -1,    -1,    -1,    88,    -1,    -1,     1,    92,     3,     4,
    -1,     6,     7,     8,     9,    -1,    11,    12,    -1,   104,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    27,    28,    29,    30,    31,    -1,    33,    -1,
    35,    -1,    37,    38,    -1,    40,    41,    42,    43,    -1,
    -1,    46,    47,    48,    49,    50,    51,    -1,    53,    -1,
    -1,    56,    -1,    -1,    -1,    -1,    -1,    62,    -1,    -1,
    65,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,    74,
    75,    -1,    -1,    -1,    -1,    -1,    81,    82,    83,    -1,
    -1,    -1,    -1,    88,    -1,    -1,     1,    92,     3,     4,
    -1,     6,     7,     8,     9,    -1,    11,    12,    -1,   104,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    27,    28,    29,    30,    31,    -1,    33,    -1,
    35,    -1,    37,    38,    -1,    40,    41,    42,    43,    -1,
    -1,    46,    47,    48,    49,    50,    51,    -1,    53,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    62,    -1,    -1,
    65,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,    74,
    75,    -1,    -1,    -1,    -1,    -1,    81,    82,    83,    -1,
    -1,    -1,    -1,    88,    -1,    -1,    -1,    92,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,   102,     1,   104,
     3,     4,    -1,     6,     7,     8,     9,    -1,    11,    12,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    27,    28,    29,    30,    31,    -1,
    33,    -1,    35,    -1,    37,    38,    -1,    40,    41,    42,
    43,    -1,    -1,    46,    47,    48,    49,    50,    51,    -1,
    53,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    62,
    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    73,    74,    75,    -1,    -1,    -1,    -1,    -1,    81,    82,
    83,    -1,    -1,    -1,    -1,    88,    -1,    -1,     1,    92,
     3,     4,    -1,     6,     7,     8,     9,    -1,    11,    12,
    -1,   104,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    27,    28,    29,    30,    31,    -1,
    33,    -1,    35,    -1,    37,    38,    -1,    40,    41,    42,
    43,    -1,    -1,    46,    47,    48,    49,    50,    51,    -1,
    53,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    62,
    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    73,    74,    75,    -1,    -1,    -1,    -1,    -1,    81,    82,
    83,    -1,    -1,    -1,    -1,    88,    -1,     3,     4,    92,
     6,     7,     8,     9,    -1,    11,    12,    -1,    -1,    -1,
    -1,   104,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    27,    28,    29,    30,    31,    -1,    33,    -1,    35,
    -1,    37,    38,    -1,    40,    41,    42,    43,    -1,    -1,
    46,    47,    48,    49,    50,    51,    -1,    53,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    62,    -1,    -1,    65,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,    74,    75,
    -1,    -1,    -1,    -1,    -1,    81,    82,    83,    -1,    -1,
    -1,    -1,    88,    -1,    -1,    -1,    92,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   104,   105,
     3,     4,     5,     6,     7,     8,     9,    -1,    11,    12,
    13,    -1,    15,    16,    17,    18,    19,    20,    21,    22,
    23,    24,    25,    26,    27,    28,    29,    30,    31,    -1,
    33,    -1,    35,    -1,    37,    38,    -1,    40,    41,    42,
    43,    -1,    -1,    46,    47,    48,    49,    50,    51,    -1,
    53,    54,    -1,    56,    -1,    -1,    -1,    -1,    -1,    62,
    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    73,    74,    75,    -1,    -1,    -1,    -1,    -1,    81,    82,
    83,    -1,    -1,    -1,    -1,    88,    -1,    90,    -1,    92,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
   103,   104,     3,     4,     5,     6,     7,     8,     9,    -1,
    11,    12,    13,    -1,    15,    16,    17,    18,    19,    20,
    21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
    31,    -1,    33,    -1,    35,    -1,    37,    38,    -1,    40,
    41,    42,    43,    -1,    -1,    46,    47,    48,    49,    50,
    51,    -1,    53,    54,    -1,    56,    -1,    -1,    -1,    -1,
    -1,    62,    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    73,    74,    75,    -1,    -1,    -1,    -1,    -1,
    81,    82,    83,    -1,    -1,    -1,    -1,    88,    -1,    90,
    -1,    92,     3,     4,     5,     6,     7,     8,     9,    -1,
    11,    12,    13,   104,    15,    16,    17,    18,    19,    20,
    21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
    31,    -1,    33,    -1,    35,    -1,    37,    38,    -1,    40,
    41,    42,    43,    -1,    -1,    46,    47,    48,    49,    50,
    51,    -1,    53,    54,    -1,    56,    -1,    -1,    -1,    -1,
    -1,    62,    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    73,    74,    75,    -1,    -1,    -1,    -1,    -1,
    81,    82,    83,    -1,    -1,    -1,    -1,    88,    -1,    90,
    -1,    92,     3,     4,     5,     6,     7,     8,     9,    -1,
    11,    12,    13,   104,    15,    16,    17,    18,    19,    20,
    21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
    31,    -1,    33,    -1,    35,    -1,    37,    38,    -1,    40,
    41,    42,    43,    -1,    -1,    46,    47,    48,    49,    50,
    51,    -1,    53,    -1,    -1,    56,    -1,    -1,    -1,    -1,
    -1,    62,    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    73,    74,    75,    -1,    -1,    -1,    -1,    -1,
    81,    82,    83,    -1,    -1,    -1,    -1,    88,    -1,    90,
    -1,    92,     3,     4,     5,     6,     7,     8,     9,    10,
    11,    12,    -1,   104,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    27,    28,    29,    30,
    31,    -1,    33,    -1,    35,    -1,    37,    38,    -1,    40,
    41,    42,    43,    44,    -1,    46,    47,    48,    49,    50,
    51,    -1,    53,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    62,    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    73,    74,    75,    -1,    -1,    -1,    -1,    -1,
    81,    82,    83,    -1,    85,    -1,    -1,    88,    89,    -1,
    -1,    92,    93,     3,     4,     5,     6,     7,     8,     9,
    10,    11,    12,   104,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    27,    28,    29,
    30,    31,    -1,    33,    -1,    35,    -1,    37,    38,    -1,
    40,    41,    42,    43,    44,    -1,    46,    47,    48,    49,
    50,    51,    -1,    53,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    62,    -1,    -1,    65,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    73,    74,    75,    -1,    -1,    -1,    -1,
    -1,    81,    82,    83,    -1,    85,    -1,    -1,    88,    89,
    -1,    -1,    92,    93,     3,     4,    -1,     6,     7,     8,
     9,    -1,    11,    12,   104,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    27,    28,
    29,    30,    31,    -1,    33,    -1,    35,    -1,    37,    38,
    -1,    40,    41,    42,    43,    44,    -1,    46,    47,    48,
    49,    50,    51,    -1,    53,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    62,    -1,    -1,    65,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    73,    74,    75,    -1,    -1,    -1,
    -1,    -1,    81,    82,    83,    -1,    85,    -1,    -1,    88,
    89,     3,     4,    -1,     6,     7,     8,     9,    -1,    11,
    12,    -1,    -1,    -1,    -1,   104,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    27,    28,    29,    30,    31,
    -1,    33,    -1,    35,    -1,    37,    38,    -1,    40,    41,
    42,    43,    44,    -1,    46,    47,    48,    49,    50,    51,
    -1,    53,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    62,    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    73,    74,    75,    -1,    -1,    -1,    -1,    -1,    81,
    82,    83,    -1,    85,    -1,    -1,    88,    89,     3,     4,
    -1,     6,     7,     8,     9,    -1,    11,    12,    -1,    -1,
    -1,    -1,   104,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    27,    28,    29,    30,    31,    -1,    33,    -1,
    35,    -1,    37,    38,    -1,    40,    41,    42,    43,    -1,
    -1,    46,    47,    48,    49,    50,    51,    -1,    53,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    62,    -1,    -1,
    65,    -1,    -1,    -1,    -1,    70,    -1,    -1,    73,    74,
    75,    -1,    -1,    -1,    -1,    -1,    81,    82,    83,    -1,
    -1,    -1,    -1,    88,    -1,     3,     4,    92,     6,     7,
     8,     9,    -1,    11,    12,    -1,    -1,    -1,    -1,   104,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    27,
    28,    29,    30,    31,    -1,    33,    -1,    35,    -1,    37,
    38,    -1,    40,    41,    42,    43,    -1,    -1,    46,    47,
    48,    49,    50,    51,    -1,    53,    -1,    -1,    56,    -1,
    -1,    -1,    -1,    -1,    62,    -1,    -1,    65,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    73,    74,    75,    -1,    -1,
    -1,    -1,    -1,    81,    82,    83,    -1,    -1,    -1,    -1,
    88,    -1,     3,     4,    92,     6,     7,     8,     9,    -1,
    11,    12,    -1,    -1,    -1,    -1,   104,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    27,    28,    29,    30,
    31,    -1,    33,    -1,    35,    -1,    37,    38,    -1,    40,
    41,    42,    43,    -1,    -1,    46,    47,    48,    49,    50,
    51,    -1,    53,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    62,    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    73,    74,    75,    -1,    -1,    -1,    -1,    -1,
    81,    82,    83,    -1,    -1,    -1,    -1,    88,    -1,     3,
     4,    92,     6,     7,     8,     9,    -1,    11,    12,    -1,
    -1,    -1,    -1,   104,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    27,    28,    29,    30,    31,    -1,    33,
    -1,    35,    -1,    37,    38,    -1,    40,    41,    42,    43,
    -1,    -1,    46,    47,    48,    49,    50,    51,    -1,    53,
    54,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    62,    -1,
    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,
    74,    75,    -1,    -1,    -1,    -1,    -1,    81,    82,    83,
    -1,    -1,     3,     4,    88,     6,     7,     8,     9,    -1,
    11,    12,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
   104,    -1,    -1,    -1,    -1,    -1,    27,    28,    29,    30,
    31,    -1,    33,    -1,    35,    -1,    37,    38,    -1,    40,
    41,    42,    43,    -1,    -1,    46,    47,    48,    49,    50,
    51,    -1,    53,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    62,    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    73,    74,    75,    -1,    -1,    -1,    -1,    -1,
    81,    82,    83,    -1,    -1,    -1,    -1,    88,    89,     3,
     4,    -1,     6,     7,     8,     9,    -1,    11,    12,    -1,
    -1,    -1,    -1,   104,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    27,    28,    29,    30,    31,    -1,    33,
    -1,    35,    -1,    37,    38,    -1,    40,    41,    42,    43,
    -1,    -1,    46,    47,    48,    49,    50,    51,    -1,    53,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    62,    -1,
    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,
    74,    75,    -1,    -1,    -1,    -1,    -1,    81,    82,    83,
    -1,    -1,    -1,    -1,    88,    -1,     3,     4,    92,     6,
     7,     8,     9,    -1,    11,    12,    -1,    -1,    -1,    -1,
   104,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    27,    28,    29,    30,    31,    -1,    33,    -1,    35,    -1,
    37,    38,    -1,    40,    41,    42,    43,    -1,    -1,    46,
    47,    48,    49,    50,    51,    -1,    53,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    62,    -1,    -1,    65,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    73,    74,    75,    -1,
    -1,    -1,    -1,    -1,    81,    82,    83,    -1,    -1,    -1,
    -1,    88,    -1,     3,     4,    92,     6,     7,     8,     9,
    -1,    11,    12,    -1,    -1,    -1,    -1,   104,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    27,    28,    29,
    30,    31,    -1,    33,    -1,    35,    -1,    37,    38,    -1,
    40,    41,    42,    43,    -1,    -1,    46,    47,    48,    49,
    50,    51,    -1,    53,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    62,    -1,    -1,    65,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    73,    74,    75,    -1,    -1,    -1,    -1,
    -1,    81,    82,    83,    -1,    -1,    -1,    -1,    88,    -1,
     3,     4,    92,     6,     7,     8,     9,    -1,    11,    12,
    -1,    -1,    -1,    -1,   104,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    27,    28,    29,    30,    31,    -1,
    33,    -1,    35,    -1,    37,    38,    -1,    40,    41,    42,
    43,    -1,    -1,    46,    47,    48,    49,    50,    51,    -1,
    53,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    62,
    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    73,    74,    75,    -1,    -1,    -1,    -1,    -1,    81,    82,
    83,    -1,    -1,    -1,    -1,    88,    -1,     3,     4,    92,
     6,     7,     8,     9,    -1,    11,    12,    -1,    -1,    -1,
    -1,   104,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    27,    28,    29,    30,    31,    -1,    33,    -1,    35,
    -1,    37,    38,    -1,    40,    41,    42,    43,    -1,    -1,
    46,    47,    48,    49,    50,    51,    -1,    53,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    62,    -1,    -1,    65,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,    74,    75,
    -1,    -1,    -1,    -1,    -1,    81,    82,    83,    -1,    -1,
    -1,    -1,    88,    -1,     3,     4,    92,     6,     7,     8,
     9,    -1,    11,    12,    -1,    -1,    -1,    -1,   104,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    27,    28,
    29,    30,    31,    -1,    33,    -1,    35,    -1,    37,    38,
    -1,    40,    41,    42,    43,    -1,    -1,    46,    47,    48,
    49,    50,    51,    -1,    53,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    62,    -1,    -1,    65,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    73,    74,    75,    -1,    -1,    -1,
    -1,    -1,    81,    82,    83,    -1,    -1,     3,     4,    88,
     6,     7,     8,     9,    -1,    11,    12,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,   104,    -1,    -1,    -1,    -1,
    -1,    27,    28,    29,    30,    31,    -1,    33,    -1,    35,
    -1,    37,    38,    -1,    40,    41,    42,    43,    -1,    -1,
    46,    47,    48,    49,    50,    51,    -1,    53,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    62,    -1,    -1,    65,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,    74,    75,
    -1,    -1,    -1,    -1,    -1,    81,    82,    83,    -1,    -1,
     3,     4,    88,     6,     7,     8,     9,    -1,    11,    12,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   104,    -1,
    -1,    -1,    -1,    -1,    27,    28,    29,    30,    31,    -1,
    33,    -1,    35,    -1,    37,    38,    -1,    40,    41,    42,
    43,    -1,    -1,    46,    47,    48,    49,    50,    51,    -1,
    53,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    62,
    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    73,    74,    75,    -1,    -1,    -1,    -1,    -1,    81,    82,
    83,    -1,    -1,     3,     4,    88,     6,     7,     8,     9,
    -1,    11,    12,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,   104,    -1,    -1,    -1,    -1,    -1,    27,    28,    -1,
    -1,    31,    -1,    33,    -1,    35,    -1,    37,    38,    -1,
    40,    41,    42,    43,    -1,    -1,    46,    47,    48,    49,
    50,    51,    -1,    53,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    62,    -1,    -1,    65,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    73,    74,    75,    -1,    -1,    -1,    -1,
    -1,    81,    82,    83,    -1,    -1,     3,     4,    88,     6,
     7,     8,     9,    -1,    11,    12,    -1,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,   104,    -1,    -1,    -1,    -1,    -1,
    27,    28,    -1,    -1,    31,    -1,    33,    -1,    35,    -1,
    37,    38,    -1,    40,    41,    42,    43,    -1,    -1,    46,
    47,    48,    49,    50,    51,    -1,    53,    -1,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    62,    -1,    -1,    65,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    73,    74,    75,    -1,
    -1,    -1,    -1,    -1,    81,    82,    83,    -1,    -1,    -1,
    -1,    88,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    -1,    -1,    55,    -1,    57,    58,    59,   104,    61,    62,
    63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
    73,    74,    75,    76,    77,    78,    79,    57,    58,    59,
    60,    61,    62,    63,    64,    65,    66,    67,    68,    69,
    70,    71,    72,    73,    74,    75,    76,    77,    78,    79,
    57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
    67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
    77,    78,    79,    57,    58,    59,    -1,    61,    62,    63,
    64,    65,    66,    67,    68,    69,    70,    71,    72,    73,
    74,    75,    76,    77,    78,    79,    57,    58,    59,    -1,
    61,    62,    63,    64,    65,    66,    67,    68,    69,    -1,
    71,    72,    73,    74,    75,    76,    77,    78,    79,    59,
    -1,    61,    62,    63,    64,    65,    66,    67,    68,    69,
    70,    71,    72,    73,    74,    75,    76,    77,    78,    79,
    63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
    73,    74,    75,    76,    77,    78,    79
};
/* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
#line 3 "/usr/local/lib/bison.simple"

/* Skeleton output parser for bison,
   Copyright (C) 1984, 1989, 1990 Bob Corbett and Richard Stallman

   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 1, 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., 675 Mass Ave, Cambridge, MA 02139, USA.  */


#ifndef alloca
#ifdef __GNUC__
#define alloca __builtin_alloca
#else /* not GNU C.  */
#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi)
#include <alloca.h>
#else /* not sparc */
#if defined (MSDOS) && !defined (__TURBOC__)
#include <malloc.h>
#else /* not MSDOS, or __TURBOC__ */
#if defined(_AIX)
#include <malloc.h>
 #pragma alloca
#else /* not MSDOS, __TURBOC__, or _AIX */
#ifdef __hpux
#ifdef __cplusplus
extern "C" {
void *alloca (unsigned int);
};
#else /* not __cplusplus */
void *alloca ();
#endif /* not __cplusplus */
#endif /* __hpux */
#endif /* not _AIX */
#endif /* not MSDOS, or __TURBOC__ */
#endif /* not sparc.  */
#endif /* not GNU C.  */
#endif /* alloca not defined.  */

/* 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.  */

/* Note: there must be only one dollar sign in this file.
   It is replaced by the list of actions, each action
   as one case of the switch.  */

#define yyerrok		(yyerrstatus = 0)
#define yyclearin	(yychar = YYEMPTY)
#define YYEMPTY		-2
#define YYEOF		0
#define YYACCEPT	return(0)
#define YYABORT 	return(1)
#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

#ifndef YYPURE
#define YYLEX		yylex()
#endif

#ifdef YYPURE
#ifdef YYLSP_NEEDED
#define YYLEX		yylex(&yylval, &yylloc)
#else
#define YYLEX		yylex(&yylval)
#endif
#endif

/* If nonreentrant, generate the variables here */

#ifndef YYPURE

int	yychar;			/*  the lookahead symbol		*/
YYSTYPE	yylval;			/*  the semantic value of the		*/
				/*  lookahead symbol			*/

#ifdef YYLSP_NEEDED
YYLTYPE yylloc;			/*  location data for the lookahead	*/
				/*  symbol				*/
#endif

int yynerrs;			/*  number of parse errors so far       */
#endif  /* not YYPURE */

#if YYDEBUG != 0
int yydebug;			/*  nonzero means print parse trace	*/
/* Since this is uninitialized, it does not stop multiple parsers
   from coexisting.  */
#endif

/*  YYINITDEPTH indicates the initial size of the parser's stacks	*/

#ifndef	YYINITDEPTH
#define YYINITDEPTH 200
#endif

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

#if YYMAXDEPTH == 0
#undef YYMAXDEPTH
#endif

#ifndef YYMAXDEPTH
#define YYMAXDEPTH 10000
#endif

/* Prevent warning if -Wstrict-prototypes.  */
#ifdef __GNUC__
int yyparse (void);
#endif

#if __GNUC__ > 1		/* GNU C and GNU C++ define this.  */
#define __yy_bcopy(FROM,TO,COUNT)	__builtin_memcpy(TO,FROM,COUNT)
#else				/* not GNU C or C++ */
#ifndef __cplusplus

/* This is the most reliable way to avoid incompatibilities
   in available built-in functions on various systems.  */
static void
__yy_bcopy (from, to, count)
     char *from;
     char *to;
     int count;
{
  register char *f = from;
  register char *t = to;
  register int i = count;

  while (i-- > 0)
    *t++ = *f++;
}

#else /* __cplusplus */

/* This is the most reliable way to avoid incompatibilities
   in available built-in functions on various systems.  */
static void
__yy_bcopy (char *from, char *to, int count)
{
  register char *f = from;
  register char *t = to;
  register int i = count;

  while (i-- > 0)
    *t++ = *f++;
}

#endif
#endif

#line 184 "/usr/local/lib/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
#define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
#else
#define YYPARSE_PARAM
#define YYPARSE_PARAM_DECL
#endif

int
yyparse(YYPARSE_PARAM)
     YYPARSE_PARAM_DECL
{
  register int yystate;
  register int yyn;
  register short *yyssp;
  register YYSTYPE *yyvsp;
  int yyerrstatus;	/*  number of tokens to shift before error messages enabled */
  int yychar1 = 0;		/*  lookahead token as an internal (translated) token number */

  short	yyssa[YYINITDEPTH];	/*  the state stack			*/
  YYSTYPE yyvsa[YYINITDEPTH];	/*  the semantic value stack		*/

  short *yyss = yyssa;		/*  refer to the stacks thru separate pointers */
  YYSTYPE *yyvs = yyvsa;	/*  to allow yyoverflow to reallocate them elsewhere */

#ifdef YYLSP_NEEDED
  YYLTYPE yylsa[YYINITDEPTH];	/*  the location stack			*/
  YYLTYPE *yyls = yylsa;
  YYLTYPE *yylsp;

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

  int yystacksize = YYINITDEPTH;

#ifdef YYPURE
  int yychar;
  YYSTYPE yylval;
  int yynerrs;
#ifdef YYLSP_NEEDED
  YYLTYPE yylloc;
#endif
#endif

  YYSTYPE yyval;		/*  the variable used to return		*/
				/*  semantic values from the action	*/
				/*  routines				*/

  int yylen;

#if YYDEBUG != 0
  if (yydebug)
    fprintf(stderr, "Starting parse\n");
#endif

  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 - 1;
  yyvsp = yyvs;
#ifdef YYLSP_NEEDED
  yylsp = yyls;
#endif

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

  *++yyssp = yystate;

  if (yyssp >= yyss + yystacksize - 1)
    {
      /* 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;
#ifdef YYLSP_NEEDED
      YYLTYPE *yyls1 = yyls;
#endif

      /* Get the current used size of the three stacks, in elements.  */
      int size = yyssp - yyss + 1;

#ifdef yyoverflow
      /* Each stack pointer address is followed by the size of
	 the data in use in that stack, in bytes.  */
#ifdef YYLSP_NEEDED
      /* 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, size * sizeof (*yyssp),
		 &yyvs1, size * sizeof (*yyvsp),
		 &yyls1, size * sizeof (*yylsp),
		 &yystacksize);
#else
      yyoverflow("parser stack overflow",
		 &yyss1, size * sizeof (*yyssp),
		 &yyvs1, size * sizeof (*yyvsp),
		 &yystacksize);
#endif

      yyss = yyss1; yyvs = yyvs1;
#ifdef YYLSP_NEEDED
      yyls = yyls1;
#endif
#else /* no yyoverflow */
      /* Extend the stack our own way.  */
      if (yystacksize >= YYMAXDEPTH)
	{
	  yyerror("parser stack overflow");
	  return 2;
	}
      yystacksize *= 2;
      if (yystacksize > YYMAXDEPTH)
	yystacksize = YYMAXDEPTH;
      yyss = (short *) alloca (yystacksize * sizeof (*yyssp));
      __yy_bcopy ((char *)yyss1, (char *)yyss, size * sizeof (*yyssp));
      yyvs = (YYSTYPE *) alloca (yystacksize * sizeof (*yyvsp));
      __yy_bcopy ((char *)yyvs1, (char *)yyvs, size * sizeof (*yyvsp));
#ifdef YYLSP_NEEDED
      yyls = (YYLTYPE *) alloca (yystacksize * sizeof (*yylsp));
      __yy_bcopy ((char *)yyls1, (char *)yyls, size * sizeof (*yylsp));
#endif
#endif /* no yyoverflow */

      yyssp = yyss + size - 1;
      yyvsp = yyvs + size - 1;
#ifdef YYLSP_NEEDED
      yylsp = yyls + size - 1;
#endif

#if YYDEBUG != 0
      if (yydebug)
	fprintf(stderr, "Stack size increased to %d\n", yystacksize);
#endif

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

#if YYDEBUG != 0
  if (yydebug)
    fprintf(stderr, "Entering state %d\n", yystate);
#endif

  goto 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)
    {
#if YYDEBUG != 0
      if (yydebug)
	fprintf(stderr, "Reading a token: ");
#endif
      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 */

#if YYDEBUG != 0
      if (yydebug)
	fprintf(stderr, "Now at end of input.\n");
#endif
    }
  else
    {
      yychar1 = YYTRANSLATE(yychar);

#if YYDEBUG != 0
      if (yydebug)
	{
	  fprintf (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
	  fprintf (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.  */

#if YYDEBUG != 0
  if (yydebug)
    fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]);
#endif

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

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

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

  yystate = yyn;
  goto yynewstate;

/* Do the default action for the current state.  */
yydefault:

  yyn = yydefact[yystate];
  if (yyn == 0)
    goto yyerrlab;

/* Do a reduction.  yyn is the number of a rule to reduce with.  */
yyreduce:
  yylen = yyr2[yyn];
  if (yylen > 0)
    yyval = yyvsp[1-yylen]; /* implement default value of the action */

#if YYDEBUG != 0
  if (yydebug)
    {
      int i;

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

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


  switch (yyn) {

case 2:
#line 294 "parse.y"
{
		  /* In case there were missing closebraces,
		     get us back to the global binding level.  */
		  while (! global_bindings_p ())
		    poplevel (0, 0, 0);
		  finish_file ();
		;
    break;}
case 3:
#line 308 "parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 4:
#line 309 "parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 5:
#line 311 "parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 6:
#line 315 "parse.y"
{ have_extern_spec = 1;
		  used_extern_spec = 0;
		  yyval.ttype = NULL_TREE; ;
    break;}
case 7:
#line 320 "parse.y"
{ have_extern_spec = 0; ;
    break;}
case 10:
#line 329 "parse.y"
{ if (pending_lang_change) do_pending_lang_change(); ;
    break;}
case 11:
#line 331 "parse.y"
{ if (! global_bindings_p () && ! pseudo_global_level_p())
	      pop_everything (); ;
    break;}
case 12:
#line 337 "parse.y"
{ if (pending_inlines) do_pending_inlines (); ;
    break;}
case 13:
#line 339 "parse.y"
{ if (pending_inlines) do_pending_inlines (); ;
    break;}
case 14:
#line 341 "parse.y"
{ if (pending_inlines) do_pending_inlines (); ;
    break;}
case 16:
#line 344 "parse.y"
{ if (TREE_CHAIN (yyvsp[-2].ttype)) yyvsp[-2].ttype = combine_strings (yyvsp[-2].ttype);
		  assemble_asm (yyvsp[-2].ttype); ;
    break;}
case 17:
#line 347 "parse.y"
{ pop_lang_context (); ;
    break;}
case 18:
#line 349 "parse.y"
{ pop_lang_context (); ;
    break;}
case 19:
#line 351 "parse.y"
{ if (pending_inlines) do_pending_inlines ();
		  pop_lang_context (); ;
    break;}
case 20:
#line 354 "parse.y"
{ if (pending_inlines) do_pending_inlines ();
		  pop_lang_context (); ;
    break;}
case 21:
#line 360 "parse.y"
{ push_lang_context (yyvsp[0].ttype); ;
    break;}
case 22:
#line 365 "parse.y"
{ begin_template_parm_list (); ;
    break;}
case 23:
#line 367 "parse.y"
{ yyval.ttype = end_template_parm_list (yyvsp[-1].ttype); ;
    break;}
case 24:
#line 372 "parse.y"
{ yyval.ttype = process_template_parm (NULL_TREE, yyvsp[0].ttype); ;
    break;}
case 25:
#line 374 "parse.y"
{ yyval.ttype = process_template_parm (yyvsp[-2].ttype, yyvsp[0].ttype); ;
    break;}
case 26:
#line 379 "parse.y"
{ 
		  yyval.ttype = build_tree_list (yyvsp[0].ttype, NULL_TREE);
		 ttpa:
		  if (TREE_PURPOSE (yyval.ttype) == signature_type_node)
		    sorry ("signature as template type parameter");
		  else if (TREE_PURPOSE (yyval.ttype) != class_type_node)
		    pedwarn ("template type parameters must use the keyword `class'");
		;
    break;}
case 27:
#line 388 "parse.y"
{ yyval.ttype = build_tree_list (yyvsp[-1].ttype, yyvsp[0].ttype); goto ttpa; ;
    break;}
case 28:
#line 400 "parse.y"
{ yyval.ttype = build_tree_list (NULL_TREE, yyval.ttype); ;
    break;}
case 29:
#line 402 "parse.y"
{ yyval.ttype = build_tree_list (yyvsp[0].ttype, yyval.ttype); ;
    break;}
case 31:
#line 408 "parse.y"
{ warning ("use of `overload' is an anachronism"); ;
    break;}
case 32:
#line 412 "parse.y"
{ declare_overloaded (yyvsp[0].ttype); ;
    break;}
case 33:
#line 414 "parse.y"
{ declare_overloaded (yyvsp[0].ttype); ;
    break;}
case 34:
#line 421 "parse.y"
{ yychar = '{'; goto template1; ;
    break;}
case 36:
#line 424 "parse.y"
{ yychar = '{'; goto template1; ;
    break;}
case 38:
#line 427 "parse.y"
{ yychar = ':'; goto template1; ;
    break;}
case 40:
#line 430 "parse.y"
{
		  yychar = ':';
		template1:
		  if (current_aggr == exception_type_node)
		    error ("template type must define an aggregate or union");
		  else if (current_aggr == signature_type_node)
		    sorry ("template type defining a signature");
		  /* Maybe pedantic warning for union?
		     How about an enum? :-)  */
		  end_template_decl (yyvsp[-2].ttype, yyvsp[-1].ttype, current_aggr, 1);
		  reinit_parse_for_template (yychar, yyvsp[-2].ttype, yyvsp[-1].ttype);
		  yychar = YYEMPTY;
		;
    break;}
case 42:
#line 445 "parse.y"
{
		  end_template_decl (yyvsp[-2].ttype, yyvsp[-1].ttype, current_aggr, 0);
		  /* declare $2 as template name with $1 parm list */
		;
    break;}
case 43:
#line 450 "parse.y"
{
		  end_template_decl (yyvsp[-2].ttype, yyvsp[-1].ttype, current_aggr, 0);
		  /* declare $2 as template name with $1 parm list */
		;
    break;}
case 44:
#line 457 "parse.y"
{
		  tree d;
		  int momentary;
		  int def = (yyvsp[0].itype != ';');
		  momentary = suspend_momentary ();
		  d = start_decl (yyvsp[-4].ttype, /*current_declspecs*/NULL_TREE, 0,
				  yyvsp[-3].ttype);
		  cplus_decl_attributes (d, yyvsp[-1].ttype);
		  finish_decl (d, NULL_TREE, yyvsp[-2].ttype, 0);
		  end_template_decl (yyvsp[-5].ttype, d, 0, def);
		  if (def)
		    reinit_parse_for_template ((int) yyvsp[0].itype, yyvsp[-5].ttype, d);
		  resume_momentary (momentary);
		;
    break;}
case 45:
#line 474 "parse.y"
{
		  tree d;
		  int momentary;
		  int def = (yyvsp[0].itype != ';');

		  current_declspecs = yyvsp[-5].ttype;
		  momentary = suspend_momentary ();
		  d = start_decl (yyvsp[-4].ttype, current_declspecs,
				  0, yyvsp[-3].ttype);
		  cplus_decl_attributes (d, yyvsp[-1].ttype);
		  finish_decl (d, NULL_TREE, yyvsp[-2].ttype, 0);
		  end_template_decl (yyvsp[-6].ttype, d, 0, def);
		  if (def)
		    {
		      reinit_parse_for_template ((int) yyvsp[0].itype, yyvsp[-6].ttype, d);
		      yychar = YYEMPTY;
		    }
		  note_list_got_semicolon (yyvsp[-5].ttype);
		  resume_momentary (momentary);
		;
    break;}
case 46:
#line 495 "parse.y"
{
		  int def = (yyvsp[0].itype != ';');
		  tree d = start_decl (yyvsp[-1].ttype, yyvsp[-2].ttype, 0, NULL_TREE);
		  finish_decl (d, NULL_TREE, NULL_TREE, 0);
		  end_template_decl (yyvsp[-3].ttype, d, 0, def);
		  if (def)
		    reinit_parse_for_template ((int) yyvsp[0].itype, yyvsp[-3].ttype, d);
		;
    break;}
case 47:
#line 504 "parse.y"
{ end_template_decl (yyvsp[-2].ttype, 0, 0, 0); ;
    break;}
case 48:
#line 505 "parse.y"
{ end_template_decl (yyvsp[-2].ttype, 0, 0, 0); ;
    break;}
case 49:
#line 508 "parse.y"
{ yyval.itype = '{'; ;
    break;}
case 50:
#line 509 "parse.y"
{ yyval.itype = ':'; ;
    break;}
case 51:
#line 510 "parse.y"
{ yyval.itype = ';'; ;
    break;}
case 52:
#line 511 "parse.y"
{ yyval.itype = '='; ;
    break;}
case 53:
#line 512 "parse.y"
{ yyval.itype = RETURN; ;
    break;}
case 54:
#line 517 "parse.y"
{;
    break;}
case 55:
#line 519 "parse.y"
{;
    break;}
case 56:
#line 522 "parse.y"
{ tree d;
		  d = start_decl (yyvsp[-1].ttype, yyval.ttype, 0, NULL_TREE);
		  finish_decl (d, NULL_TREE, NULL_TREE, 0);
		;
    break;}
case 57:
#line 527 "parse.y"
{
		  note_list_got_semicolon (yyval.ttype);
		;
    break;}
case 58:
#line 532 "parse.y"
{ tree d;
		  d = start_decl (yyvsp[-1].ttype, yyval.ttype, 0, NULL_TREE);
		  finish_decl (d, NULL_TREE, NULL_TREE, 0);
		  note_list_got_semicolon (yyval.ttype);
		;
    break;}
case 59:
#line 538 "parse.y"
{ pedwarn ("empty declaration"); ;
    break;}
case 61:
#line 541 "parse.y"
{
	    tree t = yyval.ttype;
	    shadow_tag (t);
	    if (TREE_CODE (t) == TREE_LIST
		&& TREE_PURPOSE (t) == NULL_TREE)
	      {
		t = TREE_VALUE (t);
		if (IS_AGGR_TYPE (t)
		    && IDENTIFIER_TEMPLATE (TYPE_IDENTIFIER (t)))
		  {
		    if (CLASSTYPE_USE_TEMPLATE (t) == 0)
		      SET_CLASSTYPE_TEMPLATE_SPECIALIZATION (t);
		    else if (CLASSTYPE_TEMPLATE_INSTANTIATION (t))
		      error ("override declaration for already-expanded template");
		  }
	      }
	    note_list_got_semicolon (yyval.ttype);
	  ;
    break;}
case 65:
#line 566 "parse.y"
{
		  finish_function (lineno, 1);
		  /* finish_function performs these three statements:

		     expand_end_bindings (getdecls (), 1, 0);
		     poplevel (1, 1, 0);

		     expand_end_bindings (0, 0, 0);
		     poplevel (0, 0, 1);
		     */
		  if (yyval.ttype) process_next_inline (yyval.ttype);
		;
    break;}
case 66:
#line 579 "parse.y"
{
		  finish_function (lineno, 1);
		  /* finish_function performs these three statements:

		     expand_end_bindings (getdecls (), 1, 0);
		     poplevel (1, 1, 0);

		     expand_end_bindings (0, 0, 0);
		     poplevel (0, 0, 1);
		     */
		  if (yyval.ttype) process_next_inline (yyval.ttype);
		;
    break;}
case 67:
#line 592 "parse.y"
{ finish_function (lineno, 0);
		  if (yyval.ttype) process_next_inline (yyval.ttype); ;
    break;}
case 68:
#line 595 "parse.y"
{ finish_function (lineno, 0);
		  if (yyval.ttype) process_next_inline (yyval.ttype); ;
    break;}
case 69:
#line 598 "parse.y"
{ finish_function (lineno, 0);
		  if (yyval.ttype) process_next_inline (yyval.ttype); ;
    break;}
case 70:
#line 601 "parse.y"
{;
    break;}
case 71:
#line 603 "parse.y"
{;
    break;}
case 72:
#line 605 "parse.y"
{;
    break;}
case 73:
#line 610 "parse.y"
{ if (! start_function (yyval.ttype, yyvsp[-1].ttype, yyvsp[0].ttype, 0))
		    YYERROR1;
		  reinit_parse_for_function ();
		  yyval.ttype = NULL_TREE; ;
    break;}
case 74:
#line 615 "parse.y"
{ if (! start_function (yyval.ttype, yyvsp[-1].ttype, yyvsp[0].ttype, 0))
		    YYERROR1;
		  reinit_parse_for_function ();
		  yyval.ttype = NULL_TREE; ;
    break;}
case 75:
#line 620 "parse.y"
{ if (! start_function (NULL_TREE, yyval.ttype, yyvsp[0].ttype, 0))
		    YYERROR1;
		  reinit_parse_for_function ();
		  yyval.ttype = NULL_TREE; ;
    break;}
case 76:
#line 625 "parse.y"
{ start_function (NULL_TREE, TREE_VALUE (yyval.ttype), NULL_TREE, 1);
		  reinit_parse_for_function (); ;
    break;}
case 77:
#line 633 "parse.y"
{
		  yyval.ttype = build_parse_node (CALL_EXPR, TREE_VALUE (yyvsp[-5].ttype), yyvsp[-3].ttype, yyvsp[-1].ttype);
		  yyval.ttype = start_method (TREE_CHAIN (yyvsp[-5].ttype), yyval.ttype, yyvsp[0].ttype);
		 rest_of_mdef:
		  if (! yyval.ttype)
		    YYERROR1;
		  if (yychar == YYEMPTY)
		    yychar = YYLEX;
		  reinit_parse_for_method (yychar, yyval.ttype); ;
    break;}
case 78:
#line 643 "parse.y"
{
		  yyval.ttype = build_parse_node (CALL_EXPR, TREE_VALUE (yyvsp[-3].ttype),
					 empty_parms (), yyvsp[-1].ttype);
		  yyval.ttype = start_method (TREE_CHAIN (yyvsp[-3].ttype), yyval.ttype, yyvsp[0].ttype);
		  goto rest_of_mdef;
		;
    break;}
case 79:
#line 650 "parse.y"
{ yyval.ttype = start_method (yyval.ttype, yyvsp[-1].ttype, yyvsp[0].ttype); goto rest_of_mdef; ;
    break;}
case 80:
#line 652 "parse.y"
{ yyval.ttype = start_method (yyval.ttype, yyvsp[-1].ttype, yyvsp[0].ttype); goto rest_of_mdef; ;
    break;}
case 81:
#line 654 "parse.y"
{ yyval.ttype = start_method (NULL_TREE, yyval.ttype, yyvsp[0].ttype); goto rest_of_mdef; ;
    break;}
case 82:
#line 658 "parse.y"
{
		  if (! current_function_parms_stored)
		    store_parm_decls ();
		  yyval.ttype = yyvsp[0].ttype;
		;
    break;}
case 83:
#line 666 "parse.y"
{ store_return_init (yyval.ttype, NULL_TREE); ;
    break;}
case 84:
#line 668 "parse.y"
{ store_return_init (yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 85:
#line 670 "parse.y"
{ store_return_init (yyval.ttype, yyvsp[-1].ttype); ;
    break;}
case 86:
#line 672 "parse.y"
{ store_return_init (yyval.ttype, NULL_TREE); ;
    break;}
case 87:
#line 677 "parse.y"
{
		  if (yyvsp[0].itype == 0)
		    error ("no base initializers given following ':'");
		  setup_vtbl_ptr ();
		  /* Always keep the BLOCK node associated with the outermost
		     pair of curley braces of a function.  These are needed
		     for correct operation of dwarfout.c.  */
		  keep_next_level ();
		;
    break;}
case 88:
#line 690 "parse.y"
{
		  if (! current_function_parms_stored)
		    store_parm_decls ();

		  /* Flag that we are processing base and member initializers.  */
		  current_vtable_decl = error_mark_node;

		  if (DECL_CONSTRUCTOR_P (current_function_decl))
		    {
		      /* Make a contour for the initializer list.  */
		      pushlevel (0);
		      clear_last_expr ();
		      expand_start_bindings (0);
		    }
		  else if (current_class_type == NULL_TREE)
		    error ("base initializers not allowed for non-member functions");
		  else if (! DECL_CONSTRUCTOR_P (current_function_decl))
		    error ("only constructors take base initializers");
		;
    break;}
case 89:
#line 713 "parse.y"
{ yyval.itype = 0; ;
    break;}
case 90:
#line 715 "parse.y"
{ yyval.itype = 1; ;
    break;}
case 93:
#line 721 "parse.y"
{
		  if (current_class_name && !flag_traditional)
		    pedwarn ("anachronistic old style base class initializer");
		  expand_member_init (C_C_D, NULL_TREE, yyvsp[-1].ttype);
		;
    break;}
case 94:
#line 727 "parse.y"
{
		  if (current_class_name && !flag_traditional)
		    pedwarn ("anachronistic old style base class initializer");
		  expand_member_init (C_C_D, NULL_TREE, void_type_node);
		;
    break;}
case 95:
#line 733 "parse.y"
{ expand_member_init (C_C_D, yyval.ttype, yyvsp[-1].ttype); ;
    break;}
case 96:
#line 735 "parse.y"
{ expand_member_init (C_C_D, yyval.ttype, void_type_node); ;
    break;}
case 97:
#line 737 "parse.y"
{ expand_member_init (C_C_D, yyval.ttype, yyvsp[-1].ttype); ;
    break;}
case 98:
#line 739 "parse.y"
{ expand_member_init (C_C_D, yyval.ttype, void_type_node); ;
    break;}
case 99:
#line 742 "parse.y"
{
		  do_member_init (OP0 (yyvsp[-3].ttype), OP1 (yyvsp[-3].ttype), yyvsp[-1].ttype);
		;
    break;}
case 100:
#line 746 "parse.y"
{
		  do_member_init (OP0 (yyvsp[-1].ttype), OP1 (yyvsp[-1].ttype), void_type_node);
		;
    break;}
case 109:
#line 770 "parse.y"
{ do_type_instantiation (yyvsp[0].ttype ? yyvsp[0].ttype : yyvsp[-1].ttype, NULL_TREE); ;
    break;}
case 110:
#line 772 "parse.y"
{ do_function_instantiation (yyvsp[-1].ttype, yyvsp[0].ttype, NULL_TREE); ;
    break;}
case 111:
#line 774 "parse.y"
{ do_type_instantiation (yyvsp[0].ttype ? yyvsp[0].ttype : yyvsp[-1].ttype, yyvsp[-3].ttype); ;
    break;}
case 112:
#line 776 "parse.y"
{ do_function_instantiation (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-3].ttype); ;
    break;}
case 113:
#line 781 "parse.y"
{ if (yyvsp[0].ttype) yyval.ttype = yyvsp[0].ttype; ;
    break;}
case 114:
#line 786 "parse.y"
{ yyval.ttype = lookup_template_class (yyval.ttype, yyvsp[-1].ttype, NULL_TREE); ;
    break;}
case 115:
#line 788 "parse.y"
{ yyval.ttype = lookup_template_class (yyval.ttype, NULL_TREE, NULL_TREE); ;
    break;}
case 116:
#line 790 "parse.y"
{ yyval.ttype = lookup_template_class (yyval.ttype, yyvsp[-1].ttype, NULL_TREE); ;
    break;}
case 117:
#line 795 "parse.y"
{ yyval.ttype = instantiate_class_template (yyvsp[0].ttype, 1); ;
    break;}
case 118:
#line 800 "parse.y"
{ yyval.ttype = build_tree_list (NULL_TREE, yyval.ttype); ;
    break;}
case 119:
#line 802 "parse.y"
{ yyval.ttype = chainon (yyval.ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
    break;}
case 120:
#line 807 "parse.y"
{ yyval.ttype = groktypename (yyval.ttype); ;
    break;}
case 122:
#line 813 "parse.y"
{
		  tree t, decl, tmpl;

		  tmpl = TREE_PURPOSE (IDENTIFIER_TEMPLATE (yyvsp[-1].ttype));
		  t = xref_tag (DECL_TEMPLATE_INFO (tmpl)->aggr, yyvsp[-1].ttype, yyvsp[0].ttype, 0);
		  set_current_level_tags_transparency (1);
		  my_friendly_assert (TREE_CODE (t) == RECORD_TYPE
				      || TREE_CODE (t) == UNION_TYPE, 257);
		  yyval.ttype = t;

		  /* Now, put a copy of the decl in global scope, to avoid
		     recursive expansion.  */
		  decl = IDENTIFIER_LOCAL_VALUE (yyvsp[-1].ttype);
		  if (!decl)
		    decl = IDENTIFIER_CLASS_VALUE (yyvsp[-1].ttype);
		  /* Now, put a copy of the decl in global scope, to avoid
		     recursive expansion.  */
                  if (decl)
                    {
		      /* Need to copy it to clear the chain pointer,
			 and need to get it into permanent storage.  */
                      my_friendly_assert (TREE_CODE (decl) == TYPE_DECL, 258);
		      push_obstacks (&permanent_obstack, &permanent_obstack);
                      decl = copy_node (decl);
		      if (DECL_LANG_SPECIFIC (decl))
			copy_lang_decl (decl);
		      pop_obstacks ();
		      pushdecl_top_level (decl);
		    }
		  /* Kludge; see instantiate_class_template.  */
		  TYPE_BEING_DEFINED (t) = 0;
		;
    break;}
case 123:
#line 846 "parse.y"
{
		  tree t = finish_struct (yyvsp[-3].ttype, yyvsp[-1].ttype, 0);

		  pop_obstacks ();
		  end_template_instantiation (yyvsp[-5].ttype);

                  /* Now go after the methods & class data.  */
                  instantiate_member_templates (yyvsp[-5].ttype);

		  pop_tinst_level();

		  CLASSTYPE_GOT_SEMICOLON (t) = 1;
		;
    break;}
case 124:
#line 863 "parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 125:
#line 865 "parse.y"
{ yyval.ttype = yyvsp[0].ttype; ;
    break;}
case 126:
#line 870 "parse.y"
{ yyval.ttype = NULL_TREE; /* never used from here... */;
    break;}
case 127:
#line 872 "parse.y"
{ yyval.ttype = yyvsp[-1].ttype; /*???*/ ;
    break;}
case 128:
#line 876 "parse.y"
{ yyval.code = NEGATE_EXPR; ;
    break;}
case 129:
#line 878 "parse.y"
{ yyval.code = CONVERT_EXPR; ;
    break;}
case 130:
#line 880 "parse.y"
{ yyval.code = PREINCREMENT_EXPR; ;
    break;}
case 131:
#line 882 "parse.y"
{ yyval.code = PREDECREMENT_EXPR; ;
    break;}
case 132:
#line 884 "parse.y"
{ yyval.code = TRUTH_NOT_EXPR; ;
    break;}
case 133:
#line 888 "parse.y"
{ yyval.ttype = build_x_compound_expr (yyval.ttype); ;
    break;}
case 135:
#line 894 "parse.y"
{ error ("ANSI C++ forbids an empty condition for `%s'",
			 cond_stmt_keyword);
		  yyval.ttype = integer_zero_node; ;
    break;}
case 136:
#line 898 "parse.y"
{ yyval.ttype = build1 (CLEANUP_POINT_EXPR, bool_type_node, 
			       bool_truthvalue_conversion (yyvsp[-1].ttype)); ;
    break;}
case 137:
#line 904 "parse.y"
{ error ("ANSI C++ forbids an empty condition for `%s'",
			 cond_stmt_keyword);
		  yyval.ttype = integer_zero_node; ;
    break;}
case 138:
#line 908 "parse.y"
{ yyval.ttype = build1 (CLEANUP_POINT_EXPR, bool_type_node, 
			       bool_truthvalue_conversion (yyvsp[-1].ttype)); ;
    break;}
case 139:
#line 914 "parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 140:
#line 916 "parse.y"
{ yyval.ttype = build1 (CLEANUP_POINT_EXPR, bool_type_node, 
			       bool_truthvalue_conversion (yyval.ttype)); ;
    break;}
case 141:
#line 919 "parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 142:
#line 924 "parse.y"
{ {
		  tree d;
		  for (d = getdecls (); d; d = TREE_CHAIN (d))
		    if (TREE_CODE (d) == TYPE_DECL) {
		      tree s = TREE_TYPE (d);
		      if (TREE_CODE (s) == RECORD_TYPE)
			cp_error ("definition of class `%T' in condition", s);
		      else if (TREE_CODE (s) == ENUMERAL_TYPE)
			cp_error ("definition of enum `%T' in condition", s);
		    }
		  }
		  current_declspecs = yyvsp[-5].ttype;
		  yyvsp[0].itype = suspend_momentary ();
		  yyval.ttype = start_decl (yyvsp[-4].ttype, current_declspecs, 1, yyvsp[-3].ttype);
		  cplus_decl_attributes (yyval.ttype, yyvsp[-1].ttype);
		;
    break;}
case 143:
#line 941 "parse.y"
{ 
		  finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-3].ttype, 0);
		  resume_momentary (yyvsp[-2].itype);
		  yyval.ttype = yyvsp[-1].ttype; 
		  if (TREE_CODE (TREE_TYPE (yyval.ttype)) == ARRAY_TYPE)
		    cp_error ("definition of array `%#D' in condition", yyval.ttype); 
		;
    break;}
case 145:
#line 953 "parse.y"
{ finish_stmt (); ;
    break;}
case 146:
#line 955 "parse.y"
{ finish_stmt (); ;
    break;}
case 147:
#line 957 "parse.y"
{ finish_stmt (); ;
    break;}
case 149:
#line 964 "parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyval.ttype, 
		                  build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
    break;}
case 150:
#line 967 "parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyval.ttype, 
		                  build_tree_list (NULL_TREE, error_mark_node)); ;
    break;}
case 151:
#line 970 "parse.y"
{ chainon (yyval.ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
    break;}
case 152:
#line 972 "parse.y"
{ chainon (yyval.ttype, build_tree_list (NULL_TREE, error_mark_node)); ;
    break;}
case 153:
#line 977 "parse.y"
{ yyval.ttype = build_tree_list (NULL_TREE, yyval.ttype); ;
    break;}
case 155:
#line 983 "parse.y"
{
#if 0
		  if (TREE_CODE (yyval.ttype) == TYPE_EXPR)
		    yyval.ttype = build_component_type_expr (C_C_D, yyval.ttype, NULL_TREE, 1);
#endif
		;
    break;}
case 156:
#line 991 "parse.y"
{ yyvsp[0].itype = pedantic;
		  pedantic = 0; ;
    break;}
case 157:
#line 994 "parse.y"
{ yyval.ttype = yyvsp[0].ttype;
		  pedantic = yyvsp[-2].itype; ;
    break;}
case 158:
#line 997 "parse.y"
{ yyval.ttype = build_x_indirect_ref (yyvsp[0].ttype, "unary *"); ;
    break;}
case 159:
#line 999 "parse.y"
{ yyval.ttype = build_x_unary_op (ADDR_EXPR, yyvsp[0].ttype); ;
    break;}
case 160:
#line 1001 "parse.y"
{ yyval.ttype = build_x_unary_op (BIT_NOT_EXPR, yyvsp[0].ttype); ;
    break;}
case 161:
#line 1003 "parse.y"
{ yyval.ttype = build_x_unary_op (yyvsp[-1].code, yyvsp[0].ttype);
		  if (yyvsp[-1].code == NEGATE_EXPR && TREE_CODE (yyvsp[0].ttype) == INTEGER_CST)
		    TREE_NEGATED_INT (yyval.ttype) = 1;
		  overflow_warning (yyval.ttype);
		;
    break;}
case 162:
#line 1010 "parse.y"
{ tree label = lookup_label (yyvsp[0].ttype);
		  if (label == NULL_TREE)
		    yyval.ttype = null_pointer_node;
		  else
		    {
		      TREE_USED (label) = 1;
		      yyval.ttype = build1 (ADDR_EXPR, ptr_type_node, label);
		      TREE_CONSTANT (yyval.ttype) = 1;
		    }
		;
    break;}
case 163:
#line 1021 "parse.y"
{ if (TREE_CODE (yyvsp[0].ttype) == COMPONENT_REF
		      && DECL_BIT_FIELD (TREE_OPERAND (yyvsp[0].ttype, 1)))
		    error ("sizeof applied to a bit-field");
		  /* ANSI says arrays and functions are converted inside comma.
		     But we can't really convert them in build_compound_expr
		     because that would break commas in lvalues.
		     So do the conversion here if operand was a comma.  */
		  if (TREE_CODE (yyvsp[0].ttype) == COMPOUND_EXPR
		      && (TREE_CODE (TREE_TYPE (yyvsp[0].ttype)) == ARRAY_TYPE
			  || TREE_CODE (TREE_TYPE (yyvsp[0].ttype)) == FUNCTION_TYPE))
		    yyvsp[0].ttype = default_conversion (yyvsp[0].ttype);
		  else if (TREE_CODE (yyvsp[0].ttype) == TREE_LIST)
	            {
		      tree t = TREE_VALUE (yyvsp[0].ttype);
		      if (t != NULL_TREE
			  && TREE_CODE (TREE_TYPE (t)) == FUNCTION_TYPE)
			pedwarn ("ANSI C++ forbids using sizeof() on a function");
		    }
		  yyval.ttype = c_sizeof (TREE_TYPE (yyvsp[0].ttype)); ;
    break;}
case 164:
#line 1041 "parse.y"
{ yyval.ttype = c_sizeof (groktypename (yyvsp[-1].ttype)); ;
    break;}
case 165:
#line 1043 "parse.y"
{ yyval.ttype = grok_alignof (yyvsp[0].ttype); ;
    break;}
case 166:
#line 1045 "parse.y"
{ yyval.ttype = c_alignof (groktypename (yyvsp[-1].ttype)); ;
    break;}
case 167:
#line 1050 "parse.y"
{ yyval.ttype = build_new (NULL_TREE, yyvsp[0].ttype, NULL_TREE, yyvsp[-1].itype); ;
    break;}
case 168:
#line 1052 "parse.y"
{ yyval.ttype = build_new (NULL_TREE, yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-2].itype); ;
    break;}
case 169:
#line 1054 "parse.y"
{ yyval.ttype = build_new (yyvsp[-1].ttype, yyvsp[0].ttype, NULL_TREE, yyvsp[-2].itype); ;
    break;}
case 170:
#line 1056 "parse.y"
{ yyval.ttype = build_new (yyvsp[-2].ttype, yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-3].itype); ;
    break;}
case 171:
#line 1058 "parse.y"
{ yyval.ttype = build_new (NULL_TREE, groktypename(yyvsp[-1].ttype),
				  NULL_TREE, yyvsp[-3].itype); ;
    break;}
case 172:
#line 1061 "parse.y"
{ yyval.ttype = build_new (NULL_TREE, groktypename(yyvsp[-2].ttype), yyvsp[0].ttype, yyvsp[-4].itype); ;
    break;}
case 173:
#line 1063 "parse.y"
{ yyval.ttype = build_new (yyvsp[-3].ttype, groktypename(yyvsp[-1].ttype), NULL_TREE, yyvsp[-4].itype); ;
    break;}
case 174:
#line 1065 "parse.y"
{ yyval.ttype = build_new (yyvsp[-4].ttype, groktypename(yyvsp[-2].ttype), yyvsp[0].ttype, yyvsp[-5].itype); ;
    break;}
case 175:
#line 1068 "parse.y"
{ yyval.ttype = delete_sanity (yyvsp[0].ttype, NULL_TREE, 0, yyvsp[-1].itype); ;
    break;}
case 176:
#line 1070 "parse.y"
{ yyval.ttype = delete_sanity (yyvsp[0].ttype, NULL_TREE, 1, yyvsp[-3].itype);
		  if (yychar == YYEMPTY)
		    yychar = YYLEX; ;
    break;}
case 177:
#line 1074 "parse.y"
{ yyval.ttype = delete_sanity (yyvsp[0].ttype, yyvsp[-2].ttype, 2, yyvsp[-4].itype);
		  if (yychar == YYEMPTY)
		    yychar = YYLEX; ;
    break;}
case 178:
#line 1081 "parse.y"
{ yyval.ttype = yyvsp[-1].ttype; ;
    break;}
case 179:
#line 1083 "parse.y"
{
		  yyval.ttype = yyvsp[-1].ttype; 
		  pedwarn ("old style placement syntax, use () instead");
		;
    break;}
case 180:
#line 1091 "parse.y"
{ yyval.ttype = yyvsp[-1].ttype; ;
    break;}
case 181:
#line 1093 "parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 182:
#line 1095 "parse.y"
{
		  cp_error ("`%T' is not a valid expression", yyvsp[-1].ttype);
		  yyval.ttype = error_mark_node;
		;
    break;}
case 183:
#line 1103 "parse.y"
{
		  if (flag_ansi)
		    pedwarn ("ANSI C++ forbids initialization of new expression with `='");
		  yyval.ttype = yyvsp[0].ttype;
		;
    break;}
case 184:
#line 1113 "parse.y"
{ yyvsp[-1].ttype = tree_cons (NULL_TREE, yyvsp[-1].ttype, void_list_node);
		  TREE_PARMLIST (yyvsp[-1].ttype) = 1;
		  yyval.ttype = build_parse_node (CALL_EXPR, NULL_TREE, yyvsp[-1].ttype, 
					 NULL_TREE); ;
    break;}
case 185:
#line 1118 "parse.y"
{ yyvsp[-1].ttype = tree_cons (NULL_TREE, yyvsp[-1].ttype, void_list_node);
		  TREE_PARMLIST (yyvsp[-1].ttype) = 1;
		  yyval.ttype = build_parse_node (CALL_EXPR, yyval.ttype, yyvsp[-1].ttype, NULL_TREE); ;
    break;}
case 187:
#line 1126 "parse.y"
{ yyval.ttype = reparse_absdcl_as_casts (yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 188:
#line 1128 "parse.y"
{ 
		  tree init = build_nt (CONSTRUCTOR, NULL_TREE,
					nreverse (yyvsp[-2].ttype)); 
		  if (flag_ansi)
		    pedwarn ("ANSI C++ forbids constructor-expressions");
		  /* Indicate that this was a GNU C constructor expression.  */
		  TREE_HAS_CONSTRUCTOR (init) = 1;

		  yyval.ttype = reparse_absdcl_as_casts (yyval.ttype, init);
		;
    break;}
case 190:
#line 1143 "parse.y"
{ yyval.ttype = build_headof (yyvsp[-1].ttype); ;
    break;}
case 191:
#line 1145 "parse.y"
{ yyval.ttype = build_classof (yyvsp[-1].ttype); ;
    break;}
case 192:
#line 1147 "parse.y"
{ if (is_aggr_typedef (yyvsp[-1].ttype, 1))
		    {
		      tree type = IDENTIFIER_TYPE_VALUE (yyvsp[-1].ttype);
		      if (! IS_SIGNATURE(type))
			yyval.ttype = CLASSTYPE_DOSSIER (type);
		      else
			{
			  sorry ("signature name as argument of `classof'");
			  yyval.ttype = error_mark_node;
			}
		    }
		  else
		    yyval.ttype = error_mark_node;
		;
    break;}
case 194:
#line 1167 "parse.y"
{ yyval.ttype = build_x_binary_op (MEMBER_REF, yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 195:
#line 1169 "parse.y"
{ yyval.ttype = build_m_component_ref (yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 196:
#line 1171 "parse.y"
{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 197:
#line 1173 "parse.y"
{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 198:
#line 1175 "parse.y"
{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 199:
#line 1177 "parse.y"
{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 200:
#line 1179 "parse.y"
{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 201:
#line 1181 "parse.y"
{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 202:
#line 1183 "parse.y"
{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 203:
#line 1185 "parse.y"
{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 204:
#line 1187 "parse.y"
{ yyval.ttype = build_x_binary_op (LT_EXPR, yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 205:
#line 1189 "parse.y"
{ yyval.ttype = build_x_binary_op (GT_EXPR, yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 206:
#line 1191 "parse.y"
{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 207:
#line 1193 "parse.y"
{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 208:
#line 1195 "parse.y"
{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 209:
#line 1197 "parse.y"
{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 210:
#line 1199 "parse.y"
{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 211:
#line 1201 "parse.y"
{ yyval.ttype = build_x_binary_op (TRUTH_ANDIF_EXPR, yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 212:
#line 1203 "parse.y"
{ yyval.ttype = build_x_binary_op (TRUTH_ORIF_EXPR, yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 213:
#line 1205 "parse.y"
{ yyval.ttype = build_x_conditional_expr (yyval.ttype, yyvsp[-2].ttype, yyvsp[0].ttype); ;
    break;}
case 214:
#line 1207 "parse.y"
{ yyval.ttype = build_modify_expr (yyval.ttype, NOP_EXPR, yyvsp[0].ttype); ;
    break;}
case 215:
#line 1209 "parse.y"
{ register tree rval;
		  if ((rval = build_opfncall (MODIFY_EXPR, LOOKUP_NORMAL, yyval.ttype, yyvsp[0].ttype,
					     make_node (yyvsp[-1].code))))
		    yyval.ttype = rval;
		  else
		    yyval.ttype = build_modify_expr (yyval.ttype, yyvsp[-1].code, yyvsp[0].ttype); ;
    break;}
case 216:
#line 1216 "parse.y"
{ yyval.ttype = build_throw (NULL_TREE); ;
    break;}
case 217:
#line 1218 "parse.y"
{ yyval.ttype = build_throw (yyvsp[0].ttype); ;
    break;}
case 218:
#line 1236 "parse.y"
{ yyval.ttype = build_parse_node (BIT_NOT_EXPR, yyvsp[0].ttype); ;
    break;}
case 226:
#line 1251 "parse.y"
{ yyval.ttype = build_parse_node (INDIRECT_REF, yyvsp[0].ttype); ;
    break;}
case 227:
#line 1253 "parse.y"
{ yyval.ttype = build_parse_node (ADDR_EXPR, yyvsp[0].ttype); ;
    break;}
case 228:
#line 1255 "parse.y"
{ yyval.ttype = yyvsp[-1].ttype; ;
    break;}
case 231:
#line 1262 "parse.y"
{ push_nested_class (TREE_TYPE (OP0 (yyval.ttype)), 3);
		  TREE_COMPLEXITY (yyval.ttype) = current_class_depth; ;
    break;}
case 232:
#line 1265 "parse.y"
{ yyval.ttype = finish_decl_parsing (yyvsp[-1].ttype); ;
    break;}
case 233:
#line 1270 "parse.y"
{
		  if (TREE_CODE (yyval.ttype) == BIT_NOT_EXPR)
		    yyval.ttype = build_x_unary_op (BIT_NOT_EXPR, TREE_OPERAND (yyval.ttype, 0));
		  else if (IDENTIFIER_OPNAME_P (yyval.ttype))
		    {
		      tree op = yyval.ttype;
		      yyval.ttype = lookup_name (op, 0);
		      if (yyval.ttype == NULL_TREE)
			{
			  if (op != ansi_opname[ERROR_MARK])
			    error ("operator %s not defined",
				   operator_name_string (op));
			  yyval.ttype = error_mark_node;
			}
		    }
		  else
		    yyval.ttype = do_identifier (yyval.ttype);
		;
    break;}
case 236:
#line 1291 "parse.y"
{ yyval.ttype = combine_strings (yyval.ttype); ;
    break;}
case 237:
#line 1293 "parse.y"
{ yyval.ttype = yyvsp[-1].ttype; ;
    break;}
case 238:
#line 1295 "parse.y"
{ yyval.ttype = error_mark_node; ;
    break;}
case 239:
#line 1297 "parse.y"
{ if (current_function_decl == 0)
		    {
		      error ("braced-group within expression allowed only inside a function");
		      YYERROR;
		    }
		  keep_next_level ();
		  yyval.ttype = expand_start_stmt_expr (); ;
    break;}
case 240:
#line 1305 "parse.y"
{ tree rtl_exp;
		  if (flag_ansi)
		    pedwarn ("ANSI C++ forbids braced-groups within expressions");
		  rtl_exp = expand_end_stmt_expr (yyvsp[-2].ttype);
		  /* The statements have side effects, so the group does.  */
		  TREE_SIDE_EFFECTS (rtl_exp) = 1;

		  if (TREE_CODE (yyvsp[-1].ttype) == BLOCK)
		    {
		      /* Make a BIND_EXPR for the BLOCK already made.  */
		      yyval.ttype = build (BIND_EXPR, TREE_TYPE (rtl_exp),
				  NULL_TREE, rtl_exp, yyvsp[-1].ttype);
		      /* Remove the block from the tree at this point.
			 It gets put back at the proper place
			 when the BIND_EXPR is expanded.  */
		      delete_block (yyvsp[-1].ttype);
		    }
		  else
		    yyval.ttype = yyvsp[-1].ttype;
		;
    break;}
case 241:
#line 1326 "parse.y"
{ /* [eichin:19911016.1902EST] */
                  yyval.ttype = build_x_function_call (yyvsp[-3].ttype, yyvsp[-1].ttype, current_class_decl); 
                  /* here we instantiate_class_template as needed... */
                  do_pending_templates ();
                ;
    break;}
case 242:
#line 1330 "parse.y"
{
                  if (TREE_CODE (yyvsp[-1].ttype) == CALL_EXPR
                      && TREE_TYPE (yyvsp[-1].ttype) != void_type_node)
	            yyval.ttype = require_complete_type (yyvsp[-1].ttype);
                  else
                    yyval.ttype = yyvsp[-1].ttype;
                ;
    break;}
case 243:
#line 1338 "parse.y"
{
		  yyval.ttype = build_x_function_call (yyval.ttype, NULL_TREE, current_class_decl);
		  if (TREE_CODE (yyval.ttype) == CALL_EXPR
		      && TREE_TYPE (yyval.ttype) != void_type_node)
		    yyval.ttype = require_complete_type (yyval.ttype);
                ;
    break;}
case 244:
#line 1345 "parse.y"
{ yyval.ttype = grok_array_decl (yyval.ttype, yyvsp[-1].ttype); ;
    break;}
case 245:
#line 1347 "parse.y"
{ /* If we get an OFFSET_REF, turn it into what it really
		     means (e.g., a COMPONENT_REF).  This way if we've got,
		     say, a reference to a static member that's being operated
		     on, we don't end up trying to find a member operator for
		     the class it's in.  */
		  if (TREE_CODE (yyval.ttype) == OFFSET_REF)
		    yyval.ttype = resolve_offset_ref (yyval.ttype);
		  yyval.ttype = build_x_unary_op (POSTINCREMENT_EXPR, yyval.ttype); ;
    break;}
case 246:
#line 1356 "parse.y"
{ if (TREE_CODE (yyval.ttype) == OFFSET_REF)
		    yyval.ttype = resolve_offset_ref (yyval.ttype);
		  yyval.ttype = build_x_unary_op (POSTDECREMENT_EXPR, yyval.ttype); ;
    break;}
case 247:
#line 1361 "parse.y"
{ if (current_class_decl)
		    {
#ifdef WARNING_ABOUT_CCD
		      TREE_USED (current_class_decl) = 1;
#endif
		      yyval.ttype = current_class_decl;
		    }
		  else if (current_function_decl
			   && DECL_STATIC_FUNCTION_P (current_function_decl))
		    {
		      error ("`this' is unavailable for static member functions");
		      yyval.ttype = error_mark_node;
		    }
		  else
		    {
		      if (current_function_decl)
			error ("invalid use of `this' in non-member function");
		      else
			error ("invalid use of `this' at top level");
		      yyval.ttype = error_mark_node;
		    }
		;
    break;}
case 248:
#line 1384 "parse.y"
{
		  tree type;
		  tree id = yyval.ttype;

		  /* This is a C cast in C++'s `functional' notation.  */
		  if (yyvsp[-1].ttype == error_mark_node)
		    {
		      yyval.ttype = error_mark_node;
		      break;
		    }
#if 0
		  if (yyvsp[-1].ttype == NULL_TREE)
		    {
		      error ("cannot cast null list to type `%s'",
		             IDENTIFIER_POINTER (TYPE_NAME (id)));
		      yyval.ttype = error_mark_node;
		      break;
		    }
#endif
#if 0
		  /* type is not set! (mrs) */
		  if (type == error_mark_node)
		    yyval.ttype = error_mark_node;
		  else
#endif
		    {
		      if (id == ridpointers[(int) RID_CONST])
		        type = build_type_variant (integer_type_node, 1, 0);
		      else if (id == ridpointers[(int) RID_VOLATILE])
		        type = build_type_variant (integer_type_node, 0, 1);
#if 0
		      /* should not be able to get here (mrs) */
		      else if (id == ridpointers[(int) RID_FRIEND])
		        {
		          error ("cannot cast expression to `friend' type");
		          yyval.ttype = error_mark_node;
		          break;
		        }
#endif
		      else my_friendly_abort (79);
		      yyval.ttype = build_c_cast (type, build_compound_expr (yyvsp[-1].ttype));
		    }
		;
    break;}
case 250:
#line 1429 "parse.y"
{ tree type = groktypename (yyvsp[-4].ttype);
		  yyval.ttype = build_dynamic_cast (type, yyvsp[-1].ttype); ;
    break;}
case 251:
#line 1432 "parse.y"
{ tree type = groktypename (yyvsp[-4].ttype);
		  yyval.ttype = build_static_cast (type, yyvsp[-1].ttype); ;
    break;}
case 252:
#line 1435 "parse.y"
{ tree type = groktypename (yyvsp[-4].ttype);
		  yyval.ttype = build_reinterpret_cast (type, yyvsp[-1].ttype); ;
    break;}
case 253:
#line 1438 "parse.y"
{ tree type = groktypename (yyvsp[-4].ttype);
		  yyval.ttype = build_const_cast (type, yyvsp[-1].ttype); ;
    break;}
case 254:
#line 1441 "parse.y"
{ yyval.ttype = build_typeid (yyvsp[-1].ttype); ;
    break;}
case 255:
#line 1443 "parse.y"
{ tree type = groktypename (yyvsp[-1].ttype);
		  yyval.ttype = get_typeid (type); ;
    break;}
case 256:
#line 1446 "parse.y"
{
		do_scoped_id:
		  yyval.ttype = IDENTIFIER_GLOBAL_VALUE (yyvsp[0].ttype);
		  if (yychar == YYEMPTY)
		    yychar = YYLEX;
		  if (! yyval.ttype)
		    {
		      if (yychar == '(' || yychar == LEFT_RIGHT)
			yyval.ttype = implicitly_declare (yyvsp[0].ttype);
		      else
			{
			  if (IDENTIFIER_GLOBAL_VALUE (yyvsp[0].ttype) != error_mark_node)
			    error ("undeclared variable `%s' (first use here)",
				   IDENTIFIER_POINTER (yyvsp[0].ttype));
			  yyval.ttype = error_mark_node;
			  /* Prevent repeated error messages.  */
			  IDENTIFIER_GLOBAL_VALUE (yyvsp[0].ttype) = error_mark_node;
			}
		    }
		  else
		    {
		      if (TREE_CODE (yyval.ttype) == ADDR_EXPR)
			assemble_external (TREE_OPERAND (yyval.ttype, 0));
		      else
			assemble_external (yyval.ttype);
		      TREE_USED (yyval.ttype) = 1;
		    }
		  if (TREE_CODE (yyval.ttype) == CONST_DECL)
		    {
		      /* XXX CHS - should we set TREE_USED of the constant? */
		      yyval.ttype = DECL_INITIAL (yyval.ttype);
		      /* This is to prevent an enum whose value is 0
			 from being considered a null pointer constant.  */
		      yyval.ttype = build1 (NOP_EXPR, TREE_TYPE (yyval.ttype), yyval.ttype);
		      TREE_CONSTANT (yyval.ttype) = 1;
		    }

		;
    break;}
case 257:
#line 1485 "parse.y"
{
		  got_scope = NULL_TREE;
		  if (TREE_CODE (yyvsp[0].ttype) == IDENTIFIER_NODE)
		    goto do_scoped_id;
		  yyval.ttype = yyvsp[0].ttype;
		;
    break;}
case 258:
#line 1492 "parse.y"
{ yyval.ttype = build_offset_ref (OP0 (yyval.ttype), OP1 (yyval.ttype)); ;
    break;}
case 259:
#line 1494 "parse.y"
{ yyval.ttype = build_member_call (OP0 (yyval.ttype), OP1 (yyval.ttype), yyvsp[-1].ttype); ;
    break;}
case 260:
#line 1496 "parse.y"
{ yyval.ttype = build_member_call (OP0 (yyval.ttype), OP1 (yyval.ttype), NULL_TREE); ;
    break;}
case 261:
#line 1498 "parse.y"
{ yyval.ttype = build_component_ref (yyval.ttype, yyvsp[0].ttype, NULL_TREE, 1); ;
    break;}
case 262:
#line 1500 "parse.y"
{ yyval.ttype = build_object_ref (yyval.ttype, OP0 (yyvsp[0].ttype), OP1 (yyvsp[0].ttype)); ;
    break;}
case 263:
#line 1502 "parse.y"
{
#if 0
		  /* This is a future direction of this code, but because
		     build_x_function_call cannot always undo what is done
		     in build_component_ref entirely yet, we cannot do this. */
		  yyval.ttype = build_x_function_call (build_component_ref (yyval.ttype, yyvsp[-3].ttype, NULL_TREE, 1), yyvsp[-1].ttype, yyval.ttype);
		  if (TREE_CODE (yyval.ttype) == CALL_EXPR
		      && TREE_TYPE (yyval.ttype) != void_type_node)
		    yyval.ttype = require_complete_type (yyval.ttype);
#else
		  yyval.ttype = build_method_call (yyval.ttype, yyvsp[-3].ttype, yyvsp[-1].ttype, NULL_TREE,
					  (LOOKUP_NORMAL|LOOKUP_AGGR));
#endif
		;
    break;}
case 264:
#line 1517 "parse.y"
{
#if 0
		  /* This is a future direction of this code, but because
		     build_x_function_call cannot always undo what is done
		     in build_component_ref entirely yet, we cannot do this. */
		  yyval.ttype = build_x_function_call (build_component_ref (yyval.ttype, yyvsp[-1].ttype, NULL_TREE, 1), NULL_TREE, yyval.ttype);
		  if (TREE_CODE (yyval.ttype) == CALL_EXPR
		      && TREE_TYPE (yyval.ttype) != void_type_node)
		    yyval.ttype = require_complete_type (yyval.ttype);
#else
		  yyval.ttype = build_method_call (yyval.ttype, yyvsp[-1].ttype, NULL_TREE, NULL_TREE,
					  (LOOKUP_NORMAL|LOOKUP_AGGR));
#endif
		;
    break;}
case 265:
#line 1532 "parse.y"
{
		  if (IS_SIGNATURE (IDENTIFIER_TYPE_VALUE (OP0 (yyvsp[-3].ttype))))
		    {
		      warning ("signature name in scope resolution ignored");
		      yyval.ttype = build_method_call (yyval.ttype, OP1 (yyvsp[-3].ttype), yyvsp[-1].ttype, NULL_TREE,
					      (LOOKUP_NORMAL|LOOKUP_AGGR));
		    }
		  else
		    yyval.ttype = build_scoped_method_call (yyval.ttype, OP0 (yyvsp[-3].ttype), OP1 (yyvsp[-3].ttype), yyvsp[-1].ttype);
		;
    break;}
case 266:
#line 1543 "parse.y"
{
		  if (IS_SIGNATURE (IDENTIFIER_TYPE_VALUE (OP0 (yyvsp[-1].ttype))))
		    {
		      warning ("signature name in scope resolution ignored");
		      yyval.ttype = build_method_call (yyval.ttype, OP1 (yyvsp[-1].ttype), NULL_TREE, NULL_TREE,
					      (LOOKUP_NORMAL|LOOKUP_AGGR));
		    }
		  else
		    yyval.ttype = build_scoped_method_call (yyval.ttype, OP0 (yyvsp[-1].ttype), OP1 (yyvsp[-1].ttype), NULL_TREE);
		;
    break;}
case 267:
#line 1555 "parse.y"
{ 
		  if (TREE_CODE (TREE_TYPE (yyvsp[-3].ttype)) 
		      != TREE_CODE (TREE_TYPE (IDENTIFIER_GLOBAL_VALUE (yyvsp[-1].ttype))))
		    cp_error ("`%E' is not of type `%T'", yyvsp[-3].ttype, yyvsp[-1].ttype);
		  yyval.ttype = convert (void_type_node, yyvsp[-3].ttype);
		;
    break;}
case 268:
#line 1562 "parse.y"
{ 
		  if (yyvsp[-4].ttype != yyvsp[-1].ttype)
		    cp_error ("destructor specifier `%T::~%T()' must have matching names", yyvsp[-4].ttype, yyvsp[-1].ttype);
		  if (TREE_CODE (TREE_TYPE (yyvsp[-5].ttype))
		      != TREE_CODE (TREE_TYPE (IDENTIFIER_GLOBAL_VALUE (yyvsp[-4].ttype))))
		    cp_error ("`%E' is not of type `%T'", yyvsp[-5].ttype, yyvsp[-4].ttype);
		  yyval.ttype = convert (void_type_node, yyvsp[-5].ttype);
		;
    break;}
case 269:
#line 1611 "parse.y"
{ yyval.itype = 0; ;
    break;}
case 270:
#line 1613 "parse.y"
{ got_scope = NULL_TREE; yyval.itype = 1; ;
    break;}
case 271:
#line 1617 "parse.y"
{ yyval.itype = 0; ;
    break;}
case 272:
#line 1619 "parse.y"
{ got_scope = NULL_TREE; yyval.itype = 1; ;
    break;}
case 273:
#line 1624 "parse.y"
{ yyval.ttype = true_node; ;
    break;}
case 274:
#line 1626 "parse.y"
{ yyval.ttype = false_node; ;
    break;}
case 276:
#line 1633 "parse.y"
{ yyval.ttype = chainon (yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 277:
#line 1638 "parse.y"
{
		  if (! current_function_parms_stored)
		    store_parm_decls ();
		  setup_vtbl_ptr ();
		  /* Always keep the BLOCK node associated with the outermost
		     pair of curley braces of a function.  These are needed
		     for correct operation of dwarfout.c.  */
		  keep_next_level ();
		;
    break;}
case 279:
#line 1651 "parse.y"
{
		  yyval.ttype = build_x_arrow (yyval.ttype);
		;
    break;}
case 280:
#line 1659 "parse.y"
{ tree d = get_decl_list (yyvsp[-2].ttype);
		  int yes = suspend_momentary ();
		  d = start_decl (yyvsp[-1].ttype, d, 0, NULL_TREE);
		  finish_decl (d, NULL_TREE, NULL_TREE, 0);
		  resume_momentary (yes);
		  if (IS_AGGR_TYPE_CODE (TREE_CODE (yyvsp[-2].ttype)))
		    note_got_semicolon (yyvsp[-2].ttype);
		;
    break;}
case 281:
#line 1668 "parse.y"
{ tree d = yyvsp[-2].ttype;
		  int yes = suspend_momentary ();
		  d = start_decl (yyvsp[-1].ttype, d, 0, NULL_TREE);
		  finish_decl (d, NULL_TREE, NULL_TREE, 0);
		  resume_momentary (yes);
		  note_list_got_semicolon (yyvsp[-2].ttype);
		;
    break;}
case 282:
#line 1676 "parse.y"
{
		  resume_momentary (yyvsp[-1].itype);
		  if (IS_AGGR_TYPE_CODE (TREE_CODE (yyvsp[-2].ttype)))
		    note_got_semicolon (yyvsp[-2].ttype);
		;
    break;}
case 283:
#line 1682 "parse.y"
{
		  resume_momentary (yyvsp[-1].itype);
		  note_list_got_semicolon (yyvsp[-2].ttype);
		;
    break;}
case 284:
#line 1687 "parse.y"
{ resume_momentary (yyvsp[-1].itype); ;
    break;}
case 285:
#line 1689 "parse.y"
{
		  shadow_tag (yyvsp[-1].ttype);
		  note_list_got_semicolon (yyvsp[-1].ttype);
		;
    break;}
case 286:
#line 1694 "parse.y"
{ warning ("empty declaration"); ;
    break;}
case 289:
#line 1708 "parse.y"
{ yyval.ttype = build_parse_node (CALL_EXPR, NULL_TREE, empty_parms (),
					 NULL_TREE); ;
    break;}
case 290:
#line 1711 "parse.y"
{ yyval.ttype = build_parse_node (CALL_EXPR, yyval.ttype, empty_parms (), 
					 NULL_TREE); ;
    break;}
case 291:
#line 1718 "parse.y"
{ yyval.ttype = build_decl_list (yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 292:
#line 1720 "parse.y"
{ yyval.ttype = build_decl_list (yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 293:
#line 1722 "parse.y"
{ yyval.ttype = build_decl_list (get_decl_list (yyval.ttype), yyvsp[0].ttype); ;
    break;}
case 294:
#line 1724 "parse.y"
{ yyval.ttype = build_decl_list (yyval.ttype, NULL_TREE); ;
    break;}
case 295:
#line 1726 "parse.y"
{ yyval.ttype = build_decl_list (yyval.ttype, NULL_TREE); ;
    break;}
case 298:
#line 1739 "parse.y"
{ yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ;
    break;}
case 299:
#line 1741 "parse.y"
{ yyval.ttype = decl_tree_cons (NULL_TREE, yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 300:
#line 1743 "parse.y"
{ yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[-1].ttype, chainon (yyvsp[0].ttype, yyval.ttype)); ;
    break;}
case 301:
#line 1745 "parse.y"
{ yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[-1].ttype, chainon (yyvsp[0].ttype, yyval.ttype)); ;
    break;}
case 302:
#line 1747 "parse.y"
{ yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[-2].ttype, 
				       chainon (yyvsp[-1].ttype, chainon (yyvsp[0].ttype, yyval.ttype))); ;
    break;}
case 303:
#line 1753 "parse.y"
{ if (extra_warnings)
		    warning ("`%s' is not at beginning of declaration",
			     IDENTIFIER_POINTER (yyval.ttype));
		  yyval.ttype = build_decl_list (NULL_TREE, yyval.ttype); ;
    break;}
case 304:
#line 1758 "parse.y"
{ yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ;
    break;}
case 305:
#line 1760 "parse.y"
{ if (extra_warnings)
		    warning ("`%s' is not at beginning of declaration",
			     IDENTIFIER_POINTER (yyvsp[0].ttype));
		  yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ;
    break;}
case 306:
#line 1772 "parse.y"
{ TREE_STATIC (yyval.ttype) = 1; ;
    break;}
case 307:
#line 1774 "parse.y"
{ yyval.ttype = IDENTIFIER_AS_LIST (yyval.ttype); ;
    break;}
case 308:
#line 1776 "parse.y"
{ yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype);
		  TREE_STATIC (yyval.ttype) = 1; ;
    break;}
case 309:
#line 1779 "parse.y"
{ if (extra_warnings && TREE_STATIC (yyval.ttype))
		    warning ("`%s' is not at beginning of declaration",
			     IDENTIFIER_POINTER (yyvsp[0].ttype));
		  yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype);
		  TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
    break;}
case 310:
#line 1795 "parse.y"
{ yyval.ttype = get_decl_list (yyval.ttype); ;
    break;}
case 311:
#line 1797 "parse.y"
{ yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ;
    break;}
case 312:
#line 1799 "parse.y"
{ yyval.ttype = decl_tree_cons (NULL_TREE, yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 313:
#line 1801 "parse.y"
{ yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[-1].ttype, chainon (yyvsp[0].ttype, yyval.ttype)); ;
    break;}
case 314:
#line 1806 "parse.y"
{ yyval.ttype = build_decl_list (NULL_TREE, yyval.ttype); ;
    break;}
case 315:
#line 1808 "parse.y"
{ yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ;
    break;}
case 319:
#line 1819 "parse.y"
{ yyval.ttype = TREE_TYPE (yyvsp[-1].ttype);
		  if (flag_ansi)
		    pedwarn ("ANSI C++ forbids `typeof'"); ;
    break;}
case 320:
#line 1823 "parse.y"
{ yyval.ttype = groktypename (yyvsp[-1].ttype);
		  if (flag_ansi)
		    pedwarn ("ANSI C++ forbids `typeof'"); ;
    break;}
case 321:
#line 1827 "parse.y"
{ tree type = TREE_TYPE (yyvsp[-1].ttype);

		  if (IS_AGGR_TYPE (type))
		    {
		      sorry ("sigof type specifier");
		      yyval.ttype = type;
		    }
		  else
		    {
		      error ("`sigof' applied to non-aggregate expression");
		      yyval.ttype = error_mark_node;
		    }
		;
    break;}
case 322:
#line 1841 "parse.y"
{ tree type = groktypename (yyvsp[-1].ttype);

		  if (IS_AGGR_TYPE (type))
		    {
		      sorry ("sigof type specifier");
		      yyval.ttype = type;
		    }
		  else
		    {
		      error("`sigof' applied to non-aggregate type");
		      yyval.ttype = error_mark_node;
		    }
		;
    break;}
case 332:
#line 1880 "parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 333:
#line 1882 "parse.y"
{ if (TREE_CHAIN (yyvsp[-1].ttype)) yyvsp[-1].ttype = combine_strings (yyvsp[-1].ttype); yyval.ttype = yyvsp[-1].ttype; ;
    break;}
case 334:
#line 1887 "parse.y"
{ current_declspecs = yyvsp[-5].ttype;
		  if (TREE_CODE (current_declspecs) != TREE_LIST)
		    current_declspecs = get_decl_list (current_declspecs);
		  if (have_extern_spec && !used_extern_spec)
		    {
		      current_declspecs = decl_tree_cons
			(NULL_TREE, get_identifier ("extern"), 
			 current_declspecs);
		      used_extern_spec = 1;
		    }
		  yyvsp[0].itype = suspend_momentary ();
		  yyval.ttype = start_decl (yyvsp[-4].ttype, current_declspecs, 1, yyvsp[-3].ttype);
		  cplus_decl_attributes (yyval.ttype, yyvsp[-1].ttype); ;
    break;}
case 335:
#line 1902 "parse.y"
{ finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-4].ttype, 0);
		  yyval.itype = yyvsp[-2].itype; ;
    break;}
case 336:
#line 1905 "parse.y"
{ tree d;
		  current_declspecs = yyvsp[-4].ttype;
		  if (TREE_CODE (current_declspecs) != TREE_LIST)
		    current_declspecs = get_decl_list (current_declspecs);
		  if (have_extern_spec && !used_extern_spec)
		    {
		      current_declspecs = decl_tree_cons
			(NULL_TREE, get_identifier ("extern"), 
			 current_declspecs);
		      used_extern_spec = 1;
		    }
		  yyval.itype = suspend_momentary ();
		  d = start_decl (yyvsp[-3].ttype, current_declspecs, 0, yyvsp[-2].ttype);
		  cplus_decl_attributes (d, yyvsp[0].ttype);
		  finish_decl (d, NULL_TREE, yyvsp[-1].ttype, 0); ;
    break;}
case 337:
#line 1924 "parse.y"
{ yyval.ttype = start_decl (yyvsp[-4].ttype, current_declspecs, 1, yyvsp[-3].ttype);
		  cplus_decl_attributes (yyval.ttype, yyvsp[-1].ttype); ;
    break;}
case 338:
#line 1928 "parse.y"
{ finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-4].ttype, 0); ;
    break;}
case 339:
#line 1930 "parse.y"
{ yyval.ttype = start_decl (yyvsp[-3].ttype, current_declspecs, 0, yyvsp[-2].ttype);
		  cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype);
		  finish_decl (yyval.ttype, NULL_TREE, yyvsp[-1].ttype, 0); ;
    break;}
case 340:
#line 1937 "parse.y"
{ current_declspecs = yyvsp[-5].ttype;
		  yyvsp[0].itype = suspend_momentary ();
		  yyval.ttype = start_decl (yyvsp[-4].ttype, current_declspecs, 1, yyvsp[-3].ttype);
		  cplus_decl_attributes (yyval.ttype, yyvsp[-1].ttype); ;
    break;}
case 341:
#line 1943 "parse.y"
{ finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-4].ttype, 0);
		  yyval.itype = yyvsp[-2].itype; ;
    break;}
case 342:
#line 1946 "parse.y"
{ tree d;
		  current_declspecs = yyvsp[-4].ttype;
		  yyval.itype = suspend_momentary ();
		  d = start_decl (yyvsp[-3].ttype, current_declspecs, 0, yyvsp[-2].ttype);
		  cplus_decl_attributes (d, yyvsp[0].ttype);
		  finish_decl (d, NULL_TREE, yyvsp[-1].ttype, 0); ;
    break;}
case 343:
#line 1956 "parse.y"
{ current_declspecs = NULL_TREE;
		  yyvsp[0].itype = suspend_momentary ();
		  yyval.ttype = start_decl (yyvsp[-4].ttype, current_declspecs, 1, yyvsp[-3].ttype);
		  cplus_decl_attributes (yyval.ttype, yyvsp[-1].ttype); ;
    break;}
case 344:
#line 1962 "parse.y"
{ finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-4].ttype, 0);
		  yyval.itype = yyvsp[-2].itype; ;
    break;}
case 345:
#line 1965 "parse.y"
{ tree d;
		  current_declspecs = NULL_TREE;
		  yyval.itype = suspend_momentary ();
		  d = start_decl (yyvsp[-3].ttype, current_declspecs, 0, yyvsp[-2].ttype);
		  cplus_decl_attributes (d, yyvsp[0].ttype);
		  finish_decl (d, NULL_TREE, yyvsp[-1].ttype, 0); ;
    break;}
case 346:
#line 1977 "parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 347:
#line 1979 "parse.y"
{ yyval.ttype = yyvsp[0].ttype; ;
    break;}
case 348:
#line 1984 "parse.y"
{ yyval.ttype = yyvsp[0].ttype; ;
    break;}
case 349:
#line 1986 "parse.y"
{ yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype); ;
    break;}
case 350:
#line 1991 "parse.y"
{ yyval.ttype = yyvsp[-2].ttype; ;
    break;}
case 351:
#line 1996 "parse.y"
{ yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;
    break;}
case 352:
#line 1998 "parse.y"
{ yyval.ttype = chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
    break;}
case 353:
#line 2003 "parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 354:
#line 2005 "parse.y"
{ yyval.ttype = yyvsp[0].ttype; ;
    break;}
case 355:
#line 2007 "parse.y"
{ yyval.ttype = tree_cons (yyvsp[-3].ttype, NULL_TREE, build_tree_list (NULL_TREE, yyvsp[-1].ttype)); ;
    break;}
case 356:
#line 2009 "parse.y"
{ yyval.ttype = tree_cons (yyvsp[-5].ttype, NULL_TREE, tree_cons (NULL_TREE, yyvsp[-3].ttype, yyvsp[-1].ttype)); ;
    break;}
case 357:
#line 2011 "parse.y"
{ yyval.ttype = tree_cons (yyvsp[-3].ttype, NULL_TREE, yyvsp[-1].ttype); ;
    break;}
case 362:
#line 2027 "parse.y"
{ yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;
    break;}
case 363:
#line 2029 "parse.y"
{ yyval.ttype = chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
    break;}
case 365:
#line 2035 "parse.y"
{ yyval.ttype = build_nt (CONSTRUCTOR, NULL_TREE, NULL_TREE);
		  TREE_HAS_CONSTRUCTOR (yyval.ttype) = 1; ;
    break;}
case 366:
#line 2038 "parse.y"
{ yyval.ttype = build_nt (CONSTRUCTOR, NULL_TREE, nreverse (yyvsp[-1].ttype));
		  TREE_HAS_CONSTRUCTOR (yyval.ttype) = 1; ;
    break;}
case 367:
#line 2041 "parse.y"
{ yyval.ttype = build_nt (CONSTRUCTOR, NULL_TREE, nreverse (yyvsp[-2].ttype));
		  TREE_HAS_CONSTRUCTOR (yyval.ttype) = 1; ;
    break;}
case 368:
#line 2044 "parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 369:
#line 2051 "parse.y"
{ yyval.ttype = build_tree_list (NULL_TREE, yyval.ttype); ;
    break;}
case 370:
#line 2053 "parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ;
    break;}
case 371:
#line 2056 "parse.y"
{ yyval.ttype = build_tree_list (yyvsp[-2].ttype, yyvsp[0].ttype); ;
    break;}
case 372:
#line 2058 "parse.y"
{ yyval.ttype = tree_cons (yyvsp[-2].ttype, yyvsp[0].ttype, yyval.ttype); ;
    break;}
case 373:
#line 2060 "parse.y"
{ yyval.ttype = build_tree_list (yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 374:
#line 2062 "parse.y"
{ yyval.ttype = tree_cons (yyvsp[-2].ttype, yyvsp[0].ttype, yyval.ttype); ;
    break;}
case 375:
#line 2067 "parse.y"
{ yyvsp[0].itype = suspend_momentary ();
		  yyval.ttype = start_enum (yyvsp[-1].ttype); ;
    break;}
case 376:
#line 2070 "parse.y"
{ yyval.ttype = finish_enum (yyvsp[-3].ttype, yyvsp[-2].ttype);
		  resume_momentary ((int) yyvsp[-4].itype);
		  check_for_missing_semicolon (yyvsp[-3].ttype); ;
    break;}
case 377:
#line 2074 "parse.y"
{ yyval.ttype = finish_enum (start_enum (yyvsp[-2].ttype), NULL_TREE);
		  check_for_missing_semicolon (yyval.ttype); ;
    break;}
case 378:
#line 2077 "parse.y"
{ yyvsp[0].itype = suspend_momentary ();
		  yyval.ttype = start_enum (make_anon_name ()); ;
    break;}
case 379:
#line 2080 "parse.y"
{ yyval.ttype = finish_enum (yyvsp[-3].ttype, yyvsp[-2].ttype);
		  resume_momentary ((int) yyvsp[-5].itype);
		  check_for_missing_semicolon (yyvsp[-3].ttype); ;
    break;}
case 380:
#line 2084 "parse.y"
{ yyval.ttype = finish_enum (start_enum (make_anon_name()), NULL_TREE);
		  check_for_missing_semicolon (yyval.ttype); ;
    break;}
case 381:
#line 2087 "parse.y"
{ yyval.ttype = xref_tag (enum_type_node, yyvsp[0].ttype, NULL_TREE, 0); ;
    break;}
case 382:
#line 2089 "parse.y"
{ yyval.ttype = xref_tag (enum_type_node, yyvsp[0].ttype, NULL_TREE, 0); ;
    break;}
case 383:
#line 2093 "parse.y"
{
		  int semi;
		  tree id;

#if 0
		  /* Need to rework class nesting in the
		     presence of nested classes, etc.  */
		  shadow_tag (CLASSTYPE_AS_LIST (yyval.ttype)); */
#endif
		  if (yychar == YYEMPTY)
		    yychar = YYLEX;
		  semi = yychar == ';';
		  /* finish_struct nukes this anyway; if
		     finish_exception does too, then it can go. */
		  if (semi)
		    note_got_semicolon (yyval.ttype);

		  if (TREE_CODE (yyval.ttype) == ENUMERAL_TYPE)
		    /* $$ = $1 from default rule.  */;
		  else if (CLASSTYPE_DECLARED_EXCEPTION (yyval.ttype))
		    {
		    }
		  else
		    {
		      yyval.ttype = finish_struct (yyval.ttype, yyvsp[-1].ttype, semi);
		      if (semi) note_got_semicolon (yyval.ttype);
		    }

		  pop_obstacks ();

		  id = TYPE_IDENTIFIER (yyval.ttype);
		  if (id && IDENTIFIER_TEMPLATE (id))
		    {
		      tree decl;

		      /* I don't know if the copying of this TYPE_DECL is
		       * really needed.  However, it's such a small per-
		       * formance penalty that the extra safety is a bargain.
		       * - niklas@appli.se
		       */
		      push_obstacks (&permanent_obstack, &permanent_obstack);
		      decl = copy_node (lookup_name (id, 0));
		      if (DECL_LANG_SPECIFIC (decl))
			copy_lang_decl (decl);
		      pop_obstacks ();
		      undo_template_name_overload (id, 0);
		      pushdecl_top_level (decl);
		    }
		  if (! semi)
		    check_for_missing_semicolon (yyval.ttype); ;
    break;}
case 384:
#line 2144 "parse.y"
{
#if 0
  /* It's no longer clear what the following error is supposed to
     accomplish.  If it turns out to be needed, add a comment why.  */
		  if (TYPE_BINFO_BASETYPES (yyval.ttype) && !TYPE_SIZE (yyval.ttype))
		    {
		      error ("incomplete definition of type `%s'",
			     TYPE_NAME_STRING (yyval.ttype));
		      yyval.ttype = error_mark_node;
		    }
#endif
		;
    break;}
case 388:
#line 2166 "parse.y"
{ if (pedantic) pedwarn ("comma at end of enumerator list"); ;
    break;}
case 390:
#line 2171 "parse.y"
{ error ("storage class specifier `%s' not allowed after struct or class", IDENTIFIER_POINTER (yyvsp[0].ttype)); ;
    break;}
case 391:
#line 2173 "parse.y"
{ error ("type specifier `%s' not allowed after struct or class", IDENTIFIER_POINTER (yyvsp[0].ttype)); ;
    break;}
case 392:
#line 2175 "parse.y"
{ error ("type qualifier `%s' not allowed after struct or class", IDENTIFIER_POINTER (yyvsp[0].ttype)); ;
    break;}
case 393:
#line 2177 "parse.y"
{ error ("no body nor ';' separates two class, struct or union declarations"); ;
    break;}
case 394:
#line 2182 "parse.y"
{ 
		  yyungetc (';', 1); current_aggr = yyval.ttype; yyval.ttype = yyvsp[-1].ttype; 
		  if (yyvsp[-3].ttype == ridpointers[(int) RID_TEMPLATE])
		    instantiate_class_template (yyval.ttype, 2);
		;
    break;}
case 395:
#line 2191 "parse.y"
{ current_aggr = yyval.ttype; yyval.ttype = yyvsp[0].ttype; ;
    break;}
case 396:
#line 2193 "parse.y"
{ current_aggr = yyval.ttype; yyval.ttype = yyvsp[0].ttype; ;
    break;}
case 397:
#line 2195 "parse.y"
{ current_aggr = yyval.ttype; yyval.ttype = yyvsp[0].ttype; ;
    break;}
case 398:
#line 2197 "parse.y"
{ yyungetc ('{', 1);
		aggr2:
		  current_aggr = yyval.ttype;
		  yyval.ttype = yyvsp[-1].ttype;
		  overload_template_name (yyval.ttype, 0); ;
    break;}
case 399:
#line 2203 "parse.y"
{ yyungetc (':', 1); goto aggr2; ;
    break;}
case 401:
#line 2209 "parse.y"
{ current_aggr = yyval.ttype; yyval.ttype = yyvsp[0].ttype; ;
    break;}
case 402:
#line 2213 "parse.y"
{ yyval.ttype = xref_tag (current_aggr, yyvsp[0].ttype, NULL_TREE, 1); ;
    break;}
case 403:
#line 2216 "parse.y"
{ yyval.ttype = xref_defn_tag (current_aggr, yyvsp[0].ttype, NULL_TREE); ;
    break;}
case 404:
#line 2221 "parse.y"
{
		  if (yyvsp[0].ttype)
		    yyval.ttype = xref_tag (current_aggr, yyvsp[-2].ttype, yyvsp[0].ttype, 1);
		  else
		    yyval.ttype = yyvsp[-1].ttype;
		;
    break;}
case 405:
#line 2230 "parse.y"
{
		  if (yyvsp[0].ttype)
		    yyval.ttype = xref_defn_tag (current_aggr, yyvsp[-2].ttype, yyvsp[0].ttype);
		  else
		    yyval.ttype = yyvsp[-1].ttype;
		;
    break;}
case 406:
#line 2239 "parse.y"
{ yyval.ttype = xref_tag (yyval.ttype, make_anon_name (), NULL_TREE, 0);
		  yyungetc ('{', 1); ;
    break;}
case 409:
#line 2247 "parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 410:
#line 2249 "parse.y"
{ yyungetc(':', 1); yyval.ttype = NULL_TREE; ;
    break;}
case 411:
#line 2251 "parse.y"
{ yyval.ttype = yyvsp[0].ttype; ;
    break;}
case 413:
#line 2257 "parse.y"
{ yyval.ttype = chainon (yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 414:
#line 2262 "parse.y"
{
		  tree type;
		 do_base_class1:
		  type = IDENTIFIER_TYPE_VALUE (yyval.ttype);
		  if (! is_aggr_typedef (yyval.ttype, 1))
		    yyval.ttype = NULL_TREE;
		  else if (current_aggr == signature_type_node
			   && (! type) && (! IS_SIGNATURE (type)))
		    {
		      error ("class name not allowed as base signature");
		      yyval.ttype = NULL_TREE;
		    }
		  else if (current_aggr == signature_type_node)
		    {
		      sorry ("signature inheritance, base type `%s' ignored",
			     IDENTIFIER_POINTER (yyval.ttype));
		      yyval.ttype = build_tree_list ((tree)access_public, yyval.ttype);
		    }
		  else if (type && IS_SIGNATURE (type))
		    {
		      error ("signature name not allowed as base class");
		      yyval.ttype = NULL_TREE;
		    }
		  else
		    yyval.ttype = build_tree_list ((tree)access_default, yyval.ttype);
		;
    break;}
case 415:
#line 2289 "parse.y"
{
		  tree type;
		 do_base_class2:
		  type = IDENTIFIER_TYPE_VALUE (yyvsp[0].ttype);
		  if (current_aggr == signature_type_node)
		    error ("access and source specifiers not allowed in signature");
		  if (! is_aggr_typedef (yyvsp[0].ttype, 1))
		    yyval.ttype = NULL_TREE;
		  else if (current_aggr == signature_type_node
			   && (! type) && (! IS_SIGNATURE (type)))
		    {
		      error ("class name not allowed as base signature");
		      yyval.ttype = NULL_TREE;
		    }
		  else if (current_aggr == signature_type_node)
		    {
		      sorry ("signature inheritance, base type `%s' ignored",
			     IDENTIFIER_POINTER (yyval.ttype));
		      yyval.ttype = build_tree_list ((tree)access_public, yyvsp[0].ttype);
		    }
		  else if (type && IS_SIGNATURE (type))
		    {
		      error ("signature name not allowed as base class");
		      yyval.ttype = NULL_TREE;
		    }
		  else
		    yyval.ttype = build_tree_list ((tree) yyval.ttype, yyvsp[0].ttype);
		;
    break;}
case 417:
#line 2322 "parse.y"
{
		  if (current_aggr == signature_type_node)
		    {
		      if (IS_AGGR_TYPE (TREE_TYPE (yyvsp[-1].ttype)))
			{
			  sorry ("`sigof' as base signature specifier");
			  /* need to return some dummy signature identifier */
			  yyval.ttype = yyvsp[-1].ttype;
			}
		      else
			{
			  error ("`sigof' applied to non-aggregate expression");
			  yyval.ttype = error_mark_node;
			}
		    }
		  else
		    {
		      error ("`sigof' in struct or class declaration");
		      yyval.ttype = error_mark_node;
		    }
		;
    break;}
case 418:
#line 2344 "parse.y"
{
		  if (current_aggr == signature_type_node)
		    {
		      if (IS_AGGR_TYPE (groktypename (yyvsp[-1].ttype)))
			{
			  sorry ("`sigof' as base signature specifier");
			  /* need to return some dummy signature identifier */
			  yyval.ttype = yyvsp[-1].ttype;
			}
		      else
			{
			  error ("`sigof' applied to non-aggregate expression");
			  yyval.ttype = error_mark_node;
			}
		    }
		  else
		    {
		      error ("`sigof' in struct or class declaration");
		      yyval.ttype = error_mark_node;
		    }
		;
    break;}
case 420:
#line 2370 "parse.y"
{ if (yyval.ttype != ridpointers[(int)RID_VIRTUAL])
		    sorry ("non-virtual access");
		  yyval.itype = access_default_virtual; ;
    break;}
case 421:
#line 2374 "parse.y"
{ int err = 0;
		  if (yyvsp[0].itype == access_protected)
		    {
		      warning ("`protected' access not implemented");
		      yyvsp[0].itype = access_public;
		      err++;
		    }
		  else if (yyvsp[0].itype == access_public)
		    {
		      if (yyvsp[-1].itype == access_private)
			{
			mixed:
			  error ("base class cannot be public and private");
			}
		      else if (yyvsp[-1].itype == access_default_virtual)
			yyval.itype = access_public_virtual;
		    }
		  else /* $2 == access_private */
		    {
		      if (yyvsp[-1].itype == access_public)
			goto mixed;
		      else if (yyvsp[-1].itype == access_default_virtual)
			yyval.itype = access_private_virtual;
		    }
		;
    break;}
case 422:
#line 2400 "parse.y"
{ if (yyvsp[0].ttype != ridpointers[(int)RID_VIRTUAL])
		    sorry ("non-virtual access");
		  if (yyval.itype == access_public)
		    yyval.itype = access_public_virtual;
		  else if (yyval.itype == access_private)
		    yyval.itype = access_private_virtual; ;
    break;}
case 423:
#line 2409 "parse.y"
{ tree t = yyvsp[-1].ttype;
		  push_obstacks_nochange ();
		  end_temporary_allocation ();

		  if (! IS_AGGR_TYPE (t))
		    {
		      t = yyvsp[-1].ttype = make_lang_type (RECORD_TYPE);
		      TYPE_NAME (t) = get_identifier ("erroneous type");
		    }
		  if (TYPE_SIZE (t))
		    duplicate_tag_error (t);
                  if (TYPE_SIZE (t) || TYPE_BEING_DEFINED (t))
                    {
                      t = make_lang_type (TREE_CODE (t));
                      pushtag (TYPE_IDENTIFIER (yyvsp[-1].ttype), t, 0);
                      yyvsp[-1].ttype = t;
                    }
		  pushclass (t, 0);
		  TYPE_BEING_DEFINED (t) = 1;
		  /* Reset the interface data, at the earliest possible
		     moment, as it might have been set via a class foo;
		     before.  */
		  /* Don't change signatures.  */
		  if (! IS_SIGNATURE (t))
		    {
		      extern tree pending_vtables;
		      int needs_writing;
		      tree name = TYPE_IDENTIFIER (t);

		      CLASSTYPE_INTERFACE_ONLY (t) = interface_only;
		      SET_CLASSTYPE_INTERFACE_UNKNOWN_X (t, interface_unknown);

		      /* Record how to set the access of this class's
			 virtual functions.  If write_virtuals == 2 or 3, then
			 inline virtuals are ``extern inline''.  */
		      switch (write_virtuals)
			{
			case 0:
			case 1:
			  needs_writing = 1;
			  break;
			case 2:
			  needs_writing = !! value_member (name, pending_vtables);
			  break;
			case 3:
			  needs_writing = ! CLASSTYPE_INTERFACE_ONLY (t)
			    && CLASSTYPE_INTERFACE_KNOWN (t);
			  break;
			default:
			  needs_writing = 0;
			}
		      CLASSTYPE_VTABLE_NEEDS_WRITING (t) = needs_writing;
		    }
#if 0
		  t = TYPE_IDENTIFIER (yyvsp[-1].ttype);
		  if (t && IDENTIFIER_TEMPLATE (t))
		    overload_template_name (t, 1);
#endif
		;
    break;}
case 424:
#line 2472 "parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 425:
#line 2474 "parse.y"
{
		  if (current_aggr == signature_type_node)
		    yyval.ttype = build_tree_list ((tree) access_public, yyval.ttype);
		  else
		    yyval.ttype = build_tree_list ((tree) access_default, yyval.ttype);
		;
    break;}
case 426:
#line 2481 "parse.y"
{
		  tree visspec = (tree) yyvsp[-2].itype;

		  if (current_aggr == signature_type_node)
		    {
		      error ("access specifier not allowed in signature");
		      visspec = (tree) access_public;
		    }
		  yyval.ttype = chainon (yyval.ttype, build_tree_list (visspec, yyvsp[0].ttype));
		;
    break;}
case 427:
#line 2492 "parse.y"
{
		  if (current_aggr == signature_type_node)
		    error ("access specifier not allowed in signature");
		;
    break;}
case 428:
#line 2502 "parse.y"
{ if (yyval.ttype == void_type_node) yyval.ttype = NULL_TREE; 
		;
    break;}
case 429:
#line 2505 "parse.y"
{ /* In pushdecl, we created a reverse list of names
		     in this binding level.  Make sure that the chain
		     of what we're trying to add isn't the item itself
		     (which can happen with what pushdecl's doing).  */
		  if (yyvsp[0].ttype != NULL_TREE && yyvsp[0].ttype != void_type_node)
		    {
		      if (TREE_CHAIN (yyvsp[0].ttype) != yyval.ttype)
			yyval.ttype = chainon (yyval.ttype, yyvsp[0].ttype);
		      else
			yyval.ttype = yyvsp[0].ttype;
		    }
		;
    break;}
case 432:
#line 2523 "parse.y"
{ error ("missing ';' before right brace");
		  yyungetc ('}', 0); ;
    break;}
case 433:
#line 2528 "parse.y"
{ yyval.ttype = finish_method (yyval.ttype); ;
    break;}
case 434:
#line 2530 "parse.y"
{ yyval.ttype = finish_method (yyval.ttype); ;
    break;}
case 435:
#line 2538 "parse.y"
{
		  yyval.ttype = grok_x_components (yyval.ttype, yyvsp[0].ttype);
		;
    break;}
case 436:
#line 2542 "parse.y"
{ 
		  yyval.ttype = grok_x_components (yyval.ttype, yyvsp[0].ttype);
		;
    break;}
case 437:
#line 2546 "parse.y"
{ yyval.ttype = grokfield (yyval.ttype, NULL_TREE, yyvsp[-2].ttype, NULL_TREE, yyvsp[-1].ttype);
		  cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 438:
#line 2549 "parse.y"
{ yyval.ttype = grokbitfield (NULL_TREE, NULL_TREE, yyvsp[0].ttype); ;
    break;}
case 439:
#line 2551 "parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 440:
#line 2562 "parse.y"
{ yyval.ttype = build_parse_node (CALL_EXPR, TREE_VALUE (yyvsp[-4].ttype),
					 yyvsp[-2].ttype, yyvsp[0].ttype);
		  yyval.ttype = grokfield (yyval.ttype, TREE_CHAIN (yyvsp[-4].ttype), NULL_TREE, NULL_TREE,
				  NULL_TREE); ;
    break;}
case 441:
#line 2567 "parse.y"
{ yyval.ttype = build_parse_node (CALL_EXPR, TREE_VALUE (yyvsp[-2].ttype),
					 empty_parms (), yyvsp[0].ttype);
		  yyval.ttype = grokfield (yyval.ttype, TREE_CHAIN (yyvsp[-2].ttype), NULL_TREE, NULL_TREE,
				  NULL_TREE); ;
    break;}
case 442:
#line 2576 "parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 444:
#line 2579 "parse.y"
{
		  /* In this context, void_type_node encodes
		     friends.  They have been recorded elsewhere.  */
		  if (yyval.ttype == void_type_node)
		    yyval.ttype = yyvsp[0].ttype;
		  else
		    yyval.ttype = chainon (yyval.ttype, yyvsp[0].ttype);
		;
    break;}
case 445:
#line 2591 "parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 447:
#line 2594 "parse.y"
{
		  /* In this context, void_type_node encodes
		     friends.  They have been recorded elsewhere.  */
		  if (yyval.ttype == void_type_node)
		    yyval.ttype = yyvsp[0].ttype;
		  else
		    yyval.ttype = chainon (yyval.ttype, yyvsp[0].ttype);
		;
    break;}
case 452:
#line 2616 "parse.y"
{ current_declspecs = yyvsp[-4].ttype;
		  yyval.ttype = grokfield (yyval.ttype, current_declspecs, yyvsp[-2].ttype, NULL_TREE, yyvsp[-1].ttype);
		  cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 453:
#line 2620 "parse.y"
{ current_declspecs = yyvsp[-6].ttype;
		  yyval.ttype = grokfield (yyval.ttype, current_declspecs, yyvsp[-4].ttype, yyvsp[0].ttype, yyvsp[-3].ttype);
		  cplus_decl_attributes (yyval.ttype, yyvsp[-2].ttype); ;
    break;}
case 454:
#line 2624 "parse.y"
{ current_declspecs = yyvsp[-4].ttype;
		  yyval.ttype = grokbitfield (yyval.ttype, current_declspecs, yyvsp[-1].ttype);
		  cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 455:
#line 2631 "parse.y"
{ current_declspecs = yyvsp[-4].ttype;
		  yyval.ttype = grokfield (yyval.ttype, current_declspecs, yyvsp[-2].ttype, NULL_TREE, yyvsp[-1].ttype);
		  cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 456:
#line 2635 "parse.y"
{ current_declspecs = yyvsp[-6].ttype;
		  yyval.ttype = grokfield (yyval.ttype, current_declspecs, yyvsp[-4].ttype, yyvsp[0].ttype, yyvsp[-3].ttype);
		  cplus_decl_attributes (yyval.ttype, yyvsp[-2].ttype); ;
    break;}
case 457:
#line 2639 "parse.y"
{ current_declspecs = yyvsp[-4].ttype;
		  yyval.ttype = grokbitfield (yyval.ttype, current_declspecs, yyvsp[-1].ttype);
		  cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 458:
#line 2643 "parse.y"
{ current_declspecs = yyvsp[-3].ttype;
		  yyval.ttype = grokbitfield (NULL_TREE, current_declspecs, yyvsp[-1].ttype);
		  cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 459:
#line 2650 "parse.y"
{ yyval.ttype = grokfield (yyval.ttype, current_declspecs, yyvsp[-2].ttype, NULL_TREE, yyvsp[-1].ttype);
		  cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 460:
#line 2653 "parse.y"
{ yyval.ttype = grokfield (yyval.ttype, current_declspecs, yyvsp[-4].ttype, yyvsp[0].ttype, yyvsp[-3].ttype);
		  cplus_decl_attributes (yyval.ttype, yyvsp[-2].ttype); ;
    break;}
case 461:
#line 2656 "parse.y"
{ yyval.ttype = grokbitfield (yyval.ttype, current_declspecs, yyvsp[-1].ttype);
		  cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 462:
#line 2662 "parse.y"
{ yyval.ttype = grokfield (yyval.ttype, current_declspecs, yyvsp[-2].ttype, NULL_TREE, yyvsp[-1].ttype);
		  cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 463:
#line 2665 "parse.y"
{ yyval.ttype = grokfield (yyval.ttype, current_declspecs, yyvsp[-4].ttype, yyvsp[0].ttype, yyvsp[-3].ttype);
		  cplus_decl_attributes (yyval.ttype, yyvsp[-2].ttype); ;
    break;}
case 464:
#line 2668 "parse.y"
{ yyval.ttype = grokbitfield (yyval.ttype, current_declspecs, yyvsp[-1].ttype);
		  cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 465:
#line 2671 "parse.y"
{ yyval.ttype = grokbitfield (NULL_TREE, current_declspecs, yyvsp[-1].ttype);
		  cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 467:
#line 2682 "parse.y"
{ TREE_CHAIN (yyvsp[0].ttype) = yyval.ttype; yyval.ttype = yyvsp[0].ttype; ;
    break;}
case 468:
#line 2687 "parse.y"
{ yyval.ttype = build_enumerator (yyval.ttype, NULL_TREE); ;
    break;}
case 469:
#line 2689 "parse.y"
{ yyval.ttype = build_enumerator (yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 470:
#line 2695 "parse.y"
{ yyval.ttype = build_decl_list (yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 471:
#line 2697 "parse.y"
{ yyval.ttype = build_decl_list (yyval.ttype, NULL_TREE); ;
    break;}
case 472:
#line 2701 "parse.y"
{
		  if (flag_ansi)
		    pedwarn ("ANSI C++ forbids array dimensions with parenthesized type in new");
		  yyval.ttype = build_parse_node (ARRAY_REF, TREE_VALUE (yyvsp[-4].ttype), yyvsp[-1].ttype);
		  yyval.ttype = build_decl_list (TREE_PURPOSE (yyvsp[-4].ttype), yyval.ttype);
		;
    break;}
case 473:
#line 2711 "parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 474:
#line 2713 "parse.y"
{ yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ;
    break;}
case 475:
#line 2718 "parse.y"
{ yyval.ttype = IDENTIFIER_AS_LIST (yyval.ttype); ;
    break;}
case 476:
#line 2720 "parse.y"
{ yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ;
    break;}
case 477:
#line 2728 "parse.y"
{ yyval.itype = suspend_momentary (); ;
    break;}
case 478:
#line 2729 "parse.y"
{ resume_momentary ((int) yyvsp[-1].itype); yyval.ttype = yyvsp[0].ttype; ;
    break;}
case 479:
#line 2736 "parse.y"
{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
    break;}
case 480:
#line 2738 "parse.y"
{ yyval.ttype = make_reference_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
    break;}
case 481:
#line 2740 "parse.y"
{ yyval.ttype = make_pointer_declarator (NULL_TREE, yyvsp[0].ttype); ;
    break;}
case 482:
#line 2742 "parse.y"
{ yyval.ttype = make_reference_declarator (NULL_TREE, yyvsp[0].ttype); ;
    break;}
case 483:
#line 2744 "parse.y"
{ tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype);
		  yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, arg);
		;
    break;}
case 485:
#line 2752 "parse.y"
{
		  /* Remember that this name has been used in the class
		     definition, as per [class.scope0] */
		  if (current_class_type
		      && TYPE_BEING_DEFINED (current_class_type)
		      && ! IDENTIFIER_CLASS_VALUE (yyval.ttype))
		    {
		      tree t = lookup_name (yyval.ttype, -2);
		      if (t)
			pushdecl_class_level (t);
		    }
		;
    break;}
case 487:
#line 2769 "parse.y"
{ yyval.ttype = yyvsp[0].ttype; ;
    break;}
case 488:
#line 2774 "parse.y"
{ yyval.ttype = build_parse_node (CALL_EXPR, yyval.ttype, yyvsp[-2].ttype, yyvsp[0].ttype); ;
    break;}
case 489:
#line 2776 "parse.y"
{ yyval.ttype = build_parse_node (CALL_EXPR, yyval.ttype, yyvsp[-2].ttype, yyvsp[0].ttype); ;
    break;}
case 490:
#line 2778 "parse.y"
{ yyval.ttype = build_parse_node (CALL_EXPR, yyval.ttype, empty_parms (), yyvsp[0].ttype); ;
    break;}
case 491:
#line 2780 "parse.y"
{ yyval.ttype = build_parse_node (CALL_EXPR, yyval.ttype, NULL_TREE, NULL_TREE); ;
    break;}
case 492:
#line 2782 "parse.y"
{ yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ;
    break;}
case 493:
#line 2784 "parse.y"
{ yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, NULL_TREE); ;
    break;}
case 494:
#line 2786 "parse.y"
{ yyval.ttype = yyvsp[-1].ttype; ;
    break;}
case 495:
#line 2788 "parse.y"
{ push_nested_class (TREE_TYPE (yyval.ttype), 3);
		  yyval.ttype = build_parse_node (SCOPE_REF, yyval.ttype, yyvsp[0].ttype);
		  TREE_COMPLEXITY (yyval.ttype) = current_class_depth; ;
    break;}
case 497:
#line 2799 "parse.y"
{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
    break;}
case 498:
#line 2801 "parse.y"
{ yyval.ttype = make_reference_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
    break;}
case 499:
#line 2803 "parse.y"
{ yyval.ttype = make_pointer_declarator (NULL_TREE, yyvsp[0].ttype); ;
    break;}
case 500:
#line 2805 "parse.y"
{ yyval.ttype = make_reference_declarator (NULL_TREE, yyvsp[0].ttype); ;
    break;}
case 501:
#line 2807 "parse.y"
{ tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype);
		  yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, arg);
		;
    break;}
case 503:
#line 2815 "parse.y"
{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
    break;}
case 504:
#line 2817 "parse.y"
{ yyval.ttype = make_reference_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
    break;}
case 505:
#line 2819 "parse.y"
{ yyval.ttype = make_pointer_declarator (NULL_TREE, yyvsp[0].ttype); ;
    break;}
case 506:
#line 2821 "parse.y"
{ yyval.ttype = make_reference_declarator (NULL_TREE, yyvsp[0].ttype); ;
    break;}
case 507:
#line 2823 "parse.y"
{ tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype);
		  yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, arg);
		;
    break;}
case 509:
#line 2831 "parse.y"
{ yyval.ttype = build_parse_node (CALL_EXPR, yyval.ttype, yyvsp[-2].ttype, yyvsp[0].ttype); ;
    break;}
case 510:
#line 2833 "parse.y"
{ yyval.ttype = build_parse_node (CALL_EXPR, yyval.ttype, yyvsp[-2].ttype, yyvsp[0].ttype); ;
    break;}
case 511:
#line 2835 "parse.y"
{ yyval.ttype = build_parse_node (CALL_EXPR, yyval.ttype, empty_parms (), yyvsp[0].ttype); ;
    break;}
case 512:
#line 2837 "parse.y"
{ yyval.ttype = build_parse_node (CALL_EXPR, yyval.ttype, NULL_TREE, NULL_TREE); ;
    break;}
case 513:
#line 2839 "parse.y"
{ yyval.ttype = yyvsp[-1].ttype; ;
    break;}
case 514:
#line 2841 "parse.y"
{ yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ;
    break;}
case 515:
#line 2843 "parse.y"
{ yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, NULL_TREE); ;
    break;}
case 516:
#line 2848 "parse.y"
{ got_scope = NULL_TREE;
		  yyval.ttype = build_parse_node (SCOPE_REF, yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 517:
#line 2854 "parse.y"
{ got_scope = NULL_TREE;
		  yyval.ttype = build_parse_node (SCOPE_REF, yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 519:
#line 2861 "parse.y"
{ yyval.ttype = yyvsp[0].ttype; ;
    break;}
case 520:
#line 2866 "parse.y"
{ yyval.ttype = build_functional_cast (yyval.ttype, yyvsp[-1].ttype); ;
    break;}
case 521:
#line 2868 "parse.y"
{ yyval.ttype = reparse_decl_as_expr (yyval.ttype, yyvsp[-1].ttype); ;
    break;}
case 522:
#line 2870 "parse.y"
{ yyval.ttype = reparse_absdcl_as_expr (yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 526:
#line 2881 "parse.y"
{ yyval.ttype = yyvsp[0].ttype; ;
    break;}
case 527:
#line 2888 "parse.y"
{ got_scope = TREE_TYPE (yyval.ttype); ;
    break;}
case 528:
#line 2890 "parse.y"
{ got_scope = TREE_TYPE (yyval.ttype); ;
    break;}
case 530:
#line 2906 "parse.y"
{ yyval.ttype = yyvsp[0].ttype; ;
    break;}
case 532:
#line 2912 "parse.y"
{ yyval.ttype = yyvsp[0].ttype; ;
    break;}
case 533:
#line 2917 "parse.y"
{ got_scope = NULL_TREE; ;
    break;}
case 534:
#line 2919 "parse.y"
{ yyval.ttype = yyvsp[-1].ttype; got_scope = NULL_TREE; ;
    break;}
case 535:
#line 2926 "parse.y"
{ got_scope = void_type_node; ;
    break;}
case 536:
#line 2932 "parse.y"
{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
    break;}
case 537:
#line 2934 "parse.y"
{ yyval.ttype = make_pointer_declarator (yyvsp[0].ttype, NULL_TREE); ;
    break;}
case 538:
#line 2936 "parse.y"
{ yyval.ttype = make_reference_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
    break;}
case 539:
#line 2938 "parse.y"
{ yyval.ttype = make_reference_declarator (yyvsp[0].ttype, NULL_TREE); ;
    break;}
case 540:
#line 2940 "parse.y"
{ tree arg = make_pointer_declarator (yyvsp[0].ttype, NULL_TREE);
		  yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-1].ttype, arg);
		;
    break;}
case 541:
#line 2944 "parse.y"
{ tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype);
		  yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, arg);
		;
    break;}
case 543:
#line 2953 "parse.y"
{ yyval.ttype = build_parse_node (ARRAY_REF, NULL_TREE, yyvsp[-1].ttype); ;
    break;}
case 544:
#line 2955 "parse.y"
{ yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ;
    break;}
case 545:
#line 2961 "parse.y"
{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
    break;}
case 546:
#line 2963 "parse.y"
{ yyval.ttype = make_pointer_declarator (NULL_TREE, yyvsp[0].ttype); ;
    break;}
case 547:
#line 2965 "parse.y"
{ yyval.ttype = make_pointer_declarator (yyvsp[0].ttype, NULL_TREE); ;
    break;}
case 548:
#line 2967 "parse.y"
{ yyval.ttype = make_pointer_declarator (NULL_TREE, NULL_TREE); ;
    break;}
case 549:
#line 2969 "parse.y"
{ yyval.ttype = make_reference_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
    break;}
case 550:
#line 2971 "parse.y"
{ yyval.ttype = make_reference_declarator (NULL_TREE, yyvsp[0].ttype); ;
    break;}
case 551:
#line 2973 "parse.y"
{ yyval.ttype = make_reference_declarator (yyvsp[0].ttype, NULL_TREE); ;
    break;}
case 552:
#line 2975 "parse.y"
{ yyval.ttype = make_reference_declarator (NULL_TREE, NULL_TREE); ;
    break;}
case 553:
#line 2977 "parse.y"
{ tree arg = make_pointer_declarator (yyvsp[0].ttype, NULL_TREE);
		  yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-1].ttype, arg);
		;
    break;}
case 554:
#line 2981 "parse.y"
{ tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype);
		  yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, arg);
		;
    break;}
case 556:
#line 2990 "parse.y"
{ yyval.ttype = yyvsp[-1].ttype; ;
    break;}
case 558:
#line 2994 "parse.y"
{ yyval.ttype = build_parse_node (CALL_EXPR, yyval.ttype, yyvsp[-2].ttype, yyvsp[0].ttype); ;
    break;}
case 559:
#line 2996 "parse.y"
{ yyval.ttype = build_parse_node (CALL_EXPR, yyval.ttype, empty_parms (), yyvsp[0].ttype); ;
    break;}
case 560:
#line 2998 "parse.y"
{ yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ;
    break;}
case 561:
#line 3000 "parse.y"
{ yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, NULL_TREE); ;
    break;}
case 562:
#line 3002 "parse.y"
{ yyval.ttype = build_parse_node (CALL_EXPR, NULL_TREE, yyvsp[-2].ttype, yyvsp[0].ttype); ;
    break;}
case 563:
#line 3004 "parse.y"
{ TREE_OPERAND (yyval.ttype, 2) = yyvsp[0].ttype; ;
    break;}
case 564:
#line 3006 "parse.y"
{ TREE_OPERAND (yyval.ttype, 2) = yyvsp[0].ttype; ;
    break;}
case 565:
#line 3008 "parse.y"
{ yyval.ttype = build_parse_node (ARRAY_REF, NULL_TREE, yyvsp[-1].ttype); ;
    break;}
case 566:
#line 3010 "parse.y"
{ yyval.ttype = build_parse_node (ARRAY_REF, NULL_TREE, NULL_TREE); ;
    break;}
case 572:
#line 3032 "parse.y"
{ emit_line_note (input_filename, lineno);
		  pushlevel (0);
		  clear_last_expr ();
		  push_momentary ();
		  expand_start_bindings (0); ;
    break;}
case 574:
#line 3044 "parse.y"
{ if (flag_ansi)
		    pedwarn ("ANSI C++ forbids label declarations"); ;
    break;}
case 577:
#line 3055 "parse.y"
{ tree link;
		  for (link = yyvsp[-1].ttype; link; link = TREE_CHAIN (link))
		    {
		      tree label = shadow_label (TREE_VALUE (link));
		      C_DECLARED_LABEL_FLAG (label) = 1;
		      declare_nonlocal_label (label);
		    }
		;
    break;}
case 578:
#line 3069 "parse.y"
{;
    break;}
case 580:
#line 3074 "parse.y"
{ expand_end_bindings (getdecls (), kept_level_p(), 1);
		  yyval.ttype = poplevel (kept_level_p (), 1, 0);
		  pop_momentary (); ;
    break;}
case 581:
#line 3078 "parse.y"
{ expand_end_bindings (getdecls (), kept_level_p(), 1);
		  yyval.ttype = poplevel (kept_level_p (), 1, 0);
		  pop_momentary (); ;
    break;}
case 582:
#line 3082 "parse.y"
{ expand_end_bindings (getdecls (), kept_level_p(), 1);
		  yyval.ttype = poplevel (kept_level_p (), 0, 0);
		  pop_momentary (); ;
    break;}
case 583:
#line 3086 "parse.y"
{ expand_end_bindings (getdecls (), kept_level_p(), 1);
		  yyval.ttype = poplevel (kept_level_p (), 0, 0);
		  pop_momentary (); ;
    break;}
case 584:
#line 3093 "parse.y"
{ cond_stmt_keyword = "if"; ;
    break;}
case 585:
#line 3095 "parse.y"
{ emit_line_note (input_filename, lineno);
		  expand_start_cond (yyvsp[0].ttype, 0); ;
    break;}
case 587:
#line 3102 "parse.y"
{ finish_stmt (); ;
    break;}
case 588:
#line 3104 "parse.y"
{ expand_end_bindings (getdecls (), kept_level_p (), 1);
		  yyval.ttype = poplevel (kept_level_p (), 1, 0);
		  pop_momentary (); ;
    break;}
case 589:
#line 3111 "parse.y"
{ finish_stmt (); ;
    break;}
case 591:
#line 3117 "parse.y"
{ finish_stmt (); ;
    break;}
case 592:
#line 3119 "parse.y"
{
		  tree expr = yyvsp[-1].ttype;
		  emit_line_note (input_filename, lineno);
		  /* Do default conversion if safe and possibly important,
		     in case within ({...}).  */
		  if ((TREE_CODE (TREE_TYPE (expr)) == ARRAY_TYPE
		       && lvalue_p (expr))
		      || TREE_CODE (TREE_TYPE (expr)) == FUNCTION_TYPE)
		    expr = default_conversion (expr);
		  cplus_expand_expr_stmt (expr);
		  clear_momentary ();
		  finish_stmt (); ;
    break;}
case 593:
#line 3132 "parse.y"
{ expand_start_else (); ;
    break;}
case 594:
#line 3134 "parse.y"
{ expand_end_cond ();
		  expand_end_bindings (getdecls (), kept_level_p (), 1);
		  poplevel (kept_level_p (), 1, 0);
		  pop_momentary ();
		  finish_stmt (); ;
    break;}
case 595:
#line 3140 "parse.y"
{ expand_end_cond ();
		  expand_end_bindings (getdecls (), kept_level_p (), 1);
		  poplevel (kept_level_p (), 1, 0);
		  pop_momentary ();
		  finish_stmt (); ;
    break;}
case 596:
#line 3146 "parse.y"
{ emit_nop ();
		  emit_line_note (input_filename, lineno);
		  expand_start_loop (1);
		  cond_stmt_keyword = "while"; ;
    break;}
case 597:
#line 3151 "parse.y"
{ expand_exit_loop_if_false (0, yyvsp[0].ttype); ;
    break;}
case 598:
#line 3153 "parse.y"
{ expand_end_bindings (getdecls (), kept_level_p (), 1);
		  poplevel (kept_level_p (), 1, 0);
		  pop_momentary ();
		  expand_end_loop ();
		  finish_stmt (); ;
    break;}
case 599:
#line 3159 "parse.y"
{ emit_nop ();
		  emit_line_note (input_filename, lineno);
		  expand_start_loop_continue_elsewhere (1); ;
    break;}
case 600:
#line 3163 "parse.y"
{ expand_loop_continue_here ();
		  cond_stmt_keyword = "do"; ;
    break;}
case 601:
#line 3166 "parse.y"
{ emit_line_note (input_filename, lineno);
		  expand_exit_loop_if_false (0, yyvsp[-1].ttype);
		  expand_end_loop ();
		  clear_momentary ();
		  finish_stmt (); ;
    break;}
case 602:
#line 3172 "parse.y"
{ emit_nop ();
		  emit_line_note (input_filename, lineno);
		  if (yyvsp[0].ttype) cplus_expand_expr_stmt (yyvsp[0].ttype);
		  expand_start_loop_continue_elsewhere (1); ;
    break;}
case 603:
#line 3177 "parse.y"
{ emit_line_note (input_filename, lineno);
		  if (yyvsp[-1].ttype) expand_exit_loop_if_false (0, yyvsp[-1].ttype); ;
    break;}
case 604:
#line 3182 "parse.y"
{ push_momentary (); ;
    break;}
case 605:
#line 3184 "parse.y"
{ emit_line_note (input_filename, lineno);
		  expand_end_bindings (getdecls (), kept_level_p (), 1);
		  poplevel (kept_level_p (), 1, 0);
		  pop_momentary ();
		  expand_loop_continue_here ();
		  if (yyvsp[-3].ttype) cplus_expand_expr_stmt (yyvsp[-3].ttype);
		  pop_momentary ();
		  expand_end_loop ();
		  finish_stmt (); ;
    break;}
case 606:
#line 3194 "parse.y"
{ emit_nop ();
		  emit_line_note (input_filename, lineno);
		  expand_start_loop_continue_elsewhere (1); ;
    break;}
case 607:
#line 3198 "parse.y"
{ emit_line_note (input_filename, lineno);
		  if (yyvsp[-1].ttype) expand_exit_loop_if_false (0, yyvsp[-1].ttype); ;
    break;}
case 608:
#line 3203 "parse.y"
{ push_momentary ();
		  yyvsp[0].itype = lineno; ;
    break;}
case 609:
#line 3206 "parse.y"
{ emit_line_note (input_filename, (int) yyvsp[-2].itype);
		  expand_end_bindings (getdecls (), kept_level_p (), 1);
		  poplevel (kept_level_p (), 1, 0);
		  pop_momentary ();
		  expand_loop_continue_here ();
		  if (yyvsp[-3].ttype) cplus_expand_expr_stmt (yyvsp[-3].ttype);
		  pop_momentary ();
		  expand_end_loop ();
		  finish_stmt ();
		;
    break;}
case 610:
#line 3217 "parse.y"
{ emit_line_note (input_filename, lineno);
		  c_expand_start_case (yyvsp[-1].ttype);
		  /* Don't let the tree nodes for $4 be discarded by
		     clear_momentary during the parsing of the next stmt.  */
		  push_momentary (); ;
    break;}
case 611:
#line 3223 "parse.y"
{ expand_end_case (yyvsp[-3].ttype);
		  pop_momentary ();
		  expand_end_bindings (getdecls (), kept_level_p (), 1);
		  poplevel (kept_level_p (), 1, 0);
		  pop_momentary ();
		  finish_stmt (); ;
    break;}
case 612:
#line 3230 "parse.y"
{ register tree value = check_cp_case_value (yyvsp[-1].ttype);
		  register tree label
		    = build_decl (LABEL_DECL, NULL_TREE, NULL_TREE);

		  if (value != error_mark_node)
		    {
		      tree duplicate;
		      int success = pushcase (value, convert_and_check,
					      label, &duplicate);
		      if (success == 1)
			cp_error ("case label `%E' not within a switch statement", yyvsp[-1].ttype);
		      else if (success == 2)
			{
			  cp_error ("duplicate case value `%E'", yyvsp[-1].ttype);
			  cp_error_at ("`%E' previously used here", duplicate);
			}
		      else if (success == 3)
			warning ("case value out of range");
		      else if (success == 5)
			cp_error ("case label `%E' within scope of cleanup or variable array", yyvsp[-1].ttype);
		    }
		  define_case_label (label);
		;
    break;}
case 614:
#line 3255 "parse.y"
{ register tree value1 = check_cp_case_value (yyvsp[-3].ttype);
		  register tree value2 = check_cp_case_value (yyvsp[-1].ttype);
		  register tree label
		    = build_decl (LABEL_DECL, NULL_TREE, NULL_TREE);

		  if (flag_ansi)
		    pedwarn ("ANSI C++ forbids range expressions in switch statement");
		  if (value1 != error_mark_node
		      && value2 != error_mark_node)
		    {
		      tree duplicate;
		      int success = pushcase_range (value1, value2,
						    convert_and_check, label,
						    &duplicate);
		      if (success == 1)
			error ("case label not within a switch statement");
		      else if (success == 2)
			{
			  error ("duplicate (or overlapping) case value");
			  error_with_decl (duplicate, "this is the first entry overlapping that value");
			}
		      else if (success == 3)
			warning ("case value out of range");
		      else if (success == 4)
			warning ("empty range specified");
		      else if (success == 5)
			error ("case label within scope of cleanup or variable array");
		    }
		  define_case_label (label);
		;
    break;}
case 616:
#line 3287 "parse.y"
{
		  tree duplicate;
		  register tree label
		    = build_decl (LABEL_DECL, NULL_TREE, NULL_TREE);
		  int success = pushcase (NULL_TREE, 0, label, &duplicate);
		  if (success == 1)
		    error ("default label not within a switch statement");
		  else if (success == 2)
		    {
		      error ("multiple default labels in one switch");
		      error_with_decl (duplicate, "this is the first default label");
		    }
		  define_case_label (NULL_TREE);
		;
    break;}
case 618:
#line 3303 "parse.y"
{ emit_line_note (input_filename, lineno);
		  if ( ! expand_exit_something ())
		    error ("break statement not within loop or switch"); ;
    break;}
case 619:
#line 3307 "parse.y"
{ emit_line_note (input_filename, lineno);
		  if (! expand_continue_loop (0))
		    error ("continue statement not within a loop"); ;
    break;}
case 620:
#line 3311 "parse.y"
{ emit_line_note (input_filename, lineno);
		  c_expand_return (NULL_TREE); ;
    break;}
case 621:
#line 3314 "parse.y"
{ emit_line_note (input_filename, lineno);
		  c_expand_return (yyvsp[-1].ttype);
		  finish_stmt ();
		;
    break;}
case 622:
#line 3319 "parse.y"
{ if (TREE_CHAIN (yyvsp[-2].ttype)) yyvsp[-2].ttype = combine_strings (yyvsp[-2].ttype);
		  emit_line_note (input_filename, lineno);
		  expand_asm (yyvsp[-2].ttype);
		  finish_stmt ();
		;
    break;}
case 623:
#line 3326 "parse.y"
{ if (TREE_CHAIN (yyvsp[-4].ttype)) yyvsp[-4].ttype = combine_strings (yyvsp[-4].ttype);
		  emit_line_note (input_filename, lineno);
		  c_expand_asm_operands (yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE, NULL_TREE,
					 yyvsp[-6].ttype == ridpointers[(int)RID_VOLATILE],
					 input_filename, lineno);
		  finish_stmt ();
		;
    break;}
case 624:
#line 3335 "parse.y"
{ if (TREE_CHAIN (yyvsp[-6].ttype)) yyvsp[-6].ttype = combine_strings (yyvsp[-6].ttype);
		  emit_line_note (input_filename, lineno);
		  c_expand_asm_operands (yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE,
					 yyvsp[-8].ttype == ridpointers[(int)RID_VOLATILE],
					 input_filename, lineno);
		  finish_stmt ();
		;
    break;}
case 625:
#line 3345 "parse.y"
{ if (TREE_CHAIN (yyvsp[-8].ttype)) yyvsp[-8].ttype = combine_strings (yyvsp[-8].ttype);
		  emit_line_note (input_filename, lineno);
		  c_expand_asm_operands (yyvsp[-8].ttype, yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype,
					 yyvsp[-10].ttype == ridpointers[(int)RID_VOLATILE],
					 input_filename, lineno);
		  finish_stmt ();
		;
    break;}
case 626:
#line 3353 "parse.y"
{ emit_line_note (input_filename, lineno);
		  expand_computed_goto (yyvsp[-1].ttype); ;
    break;}
case 627:
#line 3356 "parse.y"
{ tree decl;
		  emit_line_note (input_filename, lineno);
		  decl = lookup_label (yyvsp[-1].ttype);
		  TREE_USED (decl) = 1;
		  expand_goto (decl); ;
    break;}
case 628:
#line 3362 "parse.y"
{ finish_stmt (); ;
    break;}
case 629:
#line 3364 "parse.y"
{ error ("label must be followed by statement");
		  yyungetc ('}', 0);
		  finish_stmt (); ;
    break;}
case 630:
#line 3368 "parse.y"
{ finish_stmt (); ;
    break;}
case 632:
#line 3374 "parse.y"
{ expand_start_try_stmts (); ;
    break;}
case 633:
#line 3376 "parse.y"
{ expand_end_try_stmts ();
		  expand_start_all_catch (); ;
    break;}
case 634:
#line 3379 "parse.y"
{ expand_end_all_catch (); ;
    break;}
case 635:
#line 3387 "parse.y"
{ expand_end_bindings (0,1,1);
		  poplevel (2,0,0);
		;
    break;}
case 636:
#line 3391 "parse.y"
{ expand_end_bindings (0,1,1);
		  poplevel (2,0,0);
		;
    break;}
case 637:
#line 3395 "parse.y"
{ expand_end_bindings (0,1,1);
		  poplevel (2,0,0);
		;
    break;}
case 639:
#line 3403 "parse.y"
{ emit_line_note (input_filename, lineno); ;
    break;}
case 640:
#line 3405 "parse.y"
{ expand_end_catch_block (); ;
    break;}
case 643:
#line 3415 "parse.y"
{ expand_start_catch_block (NULL_TREE, NULL_TREE); ;
    break;}
case 644:
#line 3427 "parse.y"
{ expand_start_catch_block (TREE_PURPOSE (yyvsp[-1].ttype),
					    TREE_VALUE (yyvsp[-1].ttype)); ;
    break;}
case 645:
#line 3433 "parse.y"
{ tree label;
		do_label:
		  label = define_label (input_filename, lineno, yyvsp[-1].ttype);
		  if (label)
		    expand_label (label);
		;
    break;}
case 646:
#line 3440 "parse.y"
{ goto do_label; ;
    break;}
case 647:
#line 3442 "parse.y"
{ goto do_label; ;
    break;}
case 648:
#line 3447 "parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 649:
#line 3449 "parse.y"
{ yyval.ttype = yyvsp[-1].ttype; ;
    break;}
case 650:
#line 3451 "parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 651:
#line 3456 "parse.y"
{ yyval.itype = 0; ;
    break;}
case 652:
#line 3458 "parse.y"
{ yyval.itype = 0; ;
    break;}
case 653:
#line 3460 "parse.y"
{ yyval.itype = 1; ;
    break;}
case 654:
#line 3462 "parse.y"
{ yyval.itype = -1; ;
    break;}
case 655:
#line 3469 "parse.y"
{ emit_line_note (input_filename, lineno);
		  yyval.ttype = NULL_TREE; ;
    break;}
case 656:
#line 3472 "parse.y"
{ emit_line_note (input_filename, lineno); ;
    break;}
case 657:
#line 3477 "parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 659:
#line 3480 "parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 660:
#line 3486 "parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 663:
#line 3493 "parse.y"
{ yyval.ttype = chainon (yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 664:
#line 3498 "parse.y"
{ yyval.ttype = build_tree_list (yyval.ttype, yyvsp[-1].ttype); ;
    break;}
case 665:
#line 3503 "parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyval.ttype, NULL_TREE); ;
    break;}
case 666:
#line 3505 "parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ;
    break;}
case 667:
#line 3515 "parse.y"
{
		  if (strict_prototype)
		    yyval.ttype = void_list_node;
		  else
		    yyval.ttype = NULL_TREE;
		;
    break;}
case 669:
#line 3523 "parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyval.ttype, void_list_node);
		  TREE_PARMLIST (yyval.ttype) = 1; ;
    break;}
case 670:
#line 3531 "parse.y"
{
		  yyval.ttype = chainon (yyval.ttype, void_list_node);
		  TREE_PARMLIST (yyval.ttype) = 1;
		;
    break;}
case 671:
#line 3536 "parse.y"
{
		  TREE_PARMLIST (yyval.ttype) = 1;
		;
    break;}
case 672:
#line 3541 "parse.y"
{
		  TREE_PARMLIST (yyval.ttype) = 1;
		;
    break;}
case 673:
#line 3545 "parse.y"
{
		  yyval.ttype = build_tree_list (NULL_TREE, yyval.ttype); 
		  TREE_PARMLIST (yyval.ttype) = 1;
		;
    break;}
case 674:
#line 3550 "parse.y"
{
		  /* ARM $8.2.5 has this as a boxed-off comment.  */
		  if (pedantic)
		    warning ("use of `...' without a first argument is non-portable");
		  yyval.ttype = NULL_TREE;
		;
    break;}
case 675:
#line 3557 "parse.y"
{
		  TREE_PARMLIST (yyval.ttype) = 1;
		;
    break;}
case 676:
#line 3561 "parse.y"
{
		  TREE_PARMLIST (yyval.ttype) = 1;
		;
    break;}
case 677:
#line 3565 "parse.y"
{
		  yyval.ttype = build_tree_list (NULL_TREE, yyval.ttype);
		  TREE_PARMLIST (yyval.ttype) = 1;
		;
    break;}
case 678:
#line 3570 "parse.y"
{
		  /* This helps us recover from really nasty
		     parse errors, for example, a missing right
		     parenthesis.  */
		  yyerror ("possibly missing ')'");
		  yyval.ttype = chainon (yyval.ttype, void_list_node);
		  TREE_PARMLIST (yyval.ttype) = 1;
		  yyungetc (':', 0);
		  yychar = ')';
		;
    break;}
case 679:
#line 3581 "parse.y"
{
		  /* This helps us recover from really nasty
		     parse errors, for example, a missing right
		     parenthesis.  */
		  yyerror ("possibly missing ')'");
		  yyval.ttype = tree_cons (NULL_TREE, yyval.ttype, void_list_node);
		  TREE_PARMLIST (yyval.ttype) = 1;
		  yyungetc (':', 0);
		  yychar = ')';
		;
    break;}
case 680:
#line 3596 "parse.y"
{ yyval.ttype = build_tree_list (NULL_TREE, yyval.ttype); ;
    break;}
case 681:
#line 3598 "parse.y"
{ yyval.ttype = build_tree_list (yyvsp[0].ttype, yyval.ttype); ;
    break;}
case 682:
#line 3600 "parse.y"
{ yyval.ttype = chainon (yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 683:
#line 3602 "parse.y"
{ yyval.ttype = chainon (yyval.ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
    break;}
case 684:
#line 3604 "parse.y"
{ yyval.ttype = chainon (yyval.ttype, build_tree_list (yyvsp[0].ttype, yyvsp[-2].ttype)); ;
    break;}
case 686:
#line 3610 "parse.y"
{ yyval.ttype = build_tree_list (NULL_TREE, yyval.ttype); ;
    break;}
case 687:
#line 3633 "parse.y"
{ yyval.ttype = build_tree_list (yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 688:
#line 3635 "parse.y"
{ yyval.ttype = build_tree_list (yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 689:
#line 3637 "parse.y"
{ yyval.ttype = build_tree_list (get_decl_list (yyval.ttype), yyvsp[0].ttype); ;
    break;}
case 690:
#line 3639 "parse.y"
{ yyval.ttype = build_tree_list (yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 691:
#line 3641 "parse.y"
{ yyval.ttype = build_tree_list (yyval.ttype, NULL_TREE); ;
    break;}
case 692:
#line 3643 "parse.y"
{ yyval.ttype = build_tree_list (yyval.ttype, yyvsp[0].ttype); ;
    break;}
case 693:
#line 3648 "parse.y"
{ yyval.ttype = build_tree_list (NULL_TREE, yyval.ttype); ;
    break;}
case 694:
#line 3650 "parse.y"
{ yyval.ttype = build_tree_list (yyvsp[0].ttype, yyval.ttype); ;
    break;}
case 697:
#line 3659 "parse.y"
{ see_typename (); ;
    break;}
case 698:
#line 3682 "parse.y"
{
		  warning ("type specifier omitted for parameter");
		  yyval.ttype = build_tree_list (TREE_PURPOSE (TREE_VALUE (yyvsp[-1].ttype)), NULL_TREE);
		;
    break;}
case 699:
#line 3687 "parse.y"
{
		  warning ("type specifier omitted for parameter");
		  yyval.ttype = build_tree_list (TREE_PURPOSE (TREE_VALUE (yyvsp[-2].ttype)), yyval.ttype);
		;
    break;}
case 700:
#line 3695 "parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 701:
#line 3697 "parse.y"
{ yyval.ttype = yyvsp[-1].ttype; ;
    break;}
case 702:
#line 3702 "parse.y"
{ yyval.ttype = build_decl_list (NULL_TREE, yyval.ttype); ;
    break;}
case 704:
#line 3708 "parse.y"
{
		  TREE_CHAIN (yyvsp[0].ttype) = yyval.ttype;
		  yyval.ttype = yyvsp[0].ttype;
		;
    break;}
case 705:
#line 3716 "parse.y"
{ yyval.ttype = NULL_TREE; ;
    break;}
case 706:
#line 3718 "parse.y"
{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
    break;}
case 707:
#line 3720 "parse.y"
{ yyval.ttype = make_reference_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
    break;}
case 708:
#line 3722 "parse.y"
{ tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype);
		  yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, arg);
		;
    break;}
case 709:
#line 3728 "parse.y"
{ got_scope = NULL_TREE; ;
    break;}
case 710:
#line 3733 "parse.y"
{ yyval.ttype = ansi_opname[MULT_EXPR]; ;
    break;}
case 711:
#line 3735 "parse.y"
{ yyval.ttype = ansi_opname[TRUNC_DIV_EXPR]; ;
    break;}
case 712:
#line 3737 "parse.y"
{ yyval.ttype = ansi_opname[TRUNC_MOD_EXPR]; ;
    break;}
case 713:
#line 3739 "parse.y"
{ yyval.ttype = ansi_opname[PLUS_EXPR]; ;
    break;}
case 714:
#line 3741 "parse.y"
{ yyval.ttype = ansi_opname[MINUS_EXPR]; ;
    break;}
case 715:
#line 3743 "parse.y"
{ yyval.ttype = ansi_opname[BIT_AND_EXPR]; ;
    break;}
case 716:
#line 3745 "parse.y"
{ yyval.ttype = ansi_opname[BIT_IOR_EXPR]; ;
    break;}
case 717:
#line 3747 "parse.y"
{ yyval.ttype = ansi_opname[BIT_XOR_EXPR]; ;
    break;}
case 718:
#line 3749 "parse.y"
{ yyval.ttype = ansi_opname[BIT_NOT_EXPR]; ;
    break;}
case 719:
#line 3751 "parse.y"
{ yyval.ttype = ansi_opname[COMPOUND_EXPR]; ;
    break;}
case 720:
#line 3753 "parse.y"
{ yyval.ttype = ansi_opname[yyvsp[0].code]; ;
    break;}
case 721:
#line 3755 "parse.y"
{ yyval.ttype = ansi_opname[LT_EXPR]; ;
    break;}
case 722:
#line 3757 "parse.y"
{ yyval.ttype = ansi_opname[GT_EXPR]; ;
    break;}
case 723:
#line 3759 "parse.y"
{ yyval.ttype = ansi_opname[yyvsp[0].code]; ;
    break;}
case 724:
#line 3761 "parse.y"
{ yyval.ttype = ansi_assopname[yyvsp[0].code]; ;
    break;}
case 725:
#line 3763 "parse.y"
{ yyval.ttype = ansi_opname [MODIFY_EXPR]; ;
    break;}
case 726:
#line 3765 "parse.y"
{ yyval.ttype = ansi_opname[yyvsp[0].code]; ;
    break;}
case 727:
#line 3767 "parse.y"
{ yyval.ttype = ansi_opname[yyvsp[0].code]; ;
    break;}
case 728:
#line 3769 "parse.y"
{ yyval.ttype = ansi_opname[POSTINCREMENT_EXPR]; ;
    break;}
case 729:
#line 3771 "parse.y"
{ yyval.ttype = ansi_opname[PREDECREMENT_EXPR]; ;
    break;}
case 730:
#line 3773 "parse.y"
{ yyval.ttype = ansi_opname[TRUTH_ANDIF_EXPR]; ;
    break;}
case 731:
#line 3775 "parse.y"
{ yyval.ttype = ansi_opname[TRUTH_ORIF_EXPR]; ;
    break;}
case 732:
#line 3777 "parse.y"
{ yyval.ttype = ansi_opname[TRUTH_NOT_EXPR]; ;
    break;}
case 733:
#line 3779 "parse.y"
{ yyval.ttype = ansi_opname[COND_EXPR]; ;
    break;}
case 734:
#line 3781 "parse.y"
{ yyval.ttype = ansi_opname[yyvsp[0].code]; ;
    break;}
case 735:
#line 3783 "parse.y"
{ yyval.ttype = ansi_opname[COMPONENT_REF]; ;
    break;}
case 736:
#line 3785 "parse.y"
{ yyval.ttype = ansi_opname[MEMBER_REF]; ;
    break;}
case 737:
#line 3787 "parse.y"
{ yyval.ttype = ansi_opname[CALL_EXPR]; ;
    break;}
case 738:
#line 3789 "parse.y"
{ yyval.ttype = ansi_opname[ARRAY_REF]; ;
    break;}
case 739:
#line 3791 "parse.y"
{ yyval.ttype = ansi_opname[NEW_EXPR]; ;
    break;}
case 740:
#line 3793 "parse.y"
{ yyval.ttype = ansi_opname[DELETE_EXPR]; ;
    break;}
case 741:
#line 3795 "parse.y"
{ yyval.ttype = ansi_opname[VEC_NEW_EXPR]; ;
    break;}
case 742:
#line 3797 "parse.y"
{ yyval.ttype = ansi_opname[VEC_DELETE_EXPR]; ;
    break;}
case 743:
#line 3800 "parse.y"
{ yyval.ttype = grokoptypename (yyvsp[-1].ttype, yyvsp[0].ttype); ;
    break;}
case 744:
#line 3802 "parse.y"
{ yyval.ttype = ansi_opname[ERROR_MARK]; ;
    break;}
}
   /* the action file gets copied in in place of this dollarsign */
#line 480 "/usr/local/lib/bison.simple"

  yyvsp -= yylen;
  yyssp -= yylen;
#ifdef YYLSP_NEEDED
  yylsp -= yylen;
#endif

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

  *++yyvsp = yyval;

#ifdef YYLSP_NEEDED
  yylsp++;
  if (yylen == 0)
    {
      yylsp->first_line = yylloc.first_line;
      yylsp->first_column = yylloc.first_column;
      yylsp->last_line = (yylsp-1)->last_line;
      yylsp->last_column = (yylsp-1)->last_column;
      yylsp->text = 0;
    }
  else
    {
      yylsp->last_line = (yylsp+yylen-1)->last_line;
      yylsp->last_column = (yylsp+yylen-1)->last_column;
    }
#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 */

  if (! yyerrstatus)
    /* If not already recovering from an error, report this error.  */
    {
      ++yynerrs;

#ifdef YYERROR_VERBOSE
      yyn = yypact[yystate];

      if (yyn > YYFLAG && yyn < YYLAST)
	{
	  int size = 0;
	  char *msg;
	  int x, count;

	  count = 0;
	  /* Start X at -yyn if nec to avoid negative indexes in yycheck.  */
	  for (x = (yyn < 0 ? -yyn : 0);
	       x < (sizeof(yytname) / sizeof(char *)); x++)
	    if (yycheck[x + yyn] == x)
	      size += strlen(yytname[x]) + 15, count++;
	  msg = (char *) malloc(size + 15);
	  if (msg != 0)
	    {
	      strcpy(msg, "parse error");

	      if (count < 5)
		{
		  count = 0;
		  for (x = (yyn < 0 ? -yyn : 0);
		       x < (sizeof(yytname) / sizeof(char *)); x++)
		    if (yycheck[x + yyn] == x)
		      {
			strcat(msg, count == 0 ? ", expecting `" : " or `");
			strcat(msg, yytname[x]);
			strcat(msg, "'");
			count++;
		      }
		}
	      yyerror(msg);
	      free(msg);
	    }
	  else
	    yyerror ("parse error; also virtual memory exceeded");
	}
      else
#endif /* YYERROR_VERBOSE */
	yyerror("parse error");
    }

  goto yyerrlab1;
yyerrlab1:   /* here on error raised explicitly by an action */

  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;

#if YYDEBUG != 0
      if (yydebug)
	fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]);
#endif

      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. */

#if 0
  /* This is wrong; only states that explicitly want error tokens
     should shift them.  */
  yyn = yydefact[yystate];  /* If its default is to accept any token, ok.  Otherwise pop it.*/
  if (yyn) goto yydefault;
#endif

yyerrpop:   /* pop the current state because it cannot handle the error token */

  if (yyssp == yyss) YYABORT;
  yyvsp--;
  yystate = *--yyssp;
#ifdef YYLSP_NEEDED
  yylsp--;
#endif

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

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;

#if YYDEBUG != 0
  if (yydebug)
    fprintf(stderr, "Shifting error token, ");
#endif

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

  yystate = yyn;
  goto yynewstate;
}
#line 3805 "parse.y"


#ifdef SPEW_DEBUG
const char *
debug_yytranslate (value)
    int value;
{
  return yytname[YYTRANSLATE (value)];
}

#endif
