Merge with upstream widl from Wine


git-svn-id: svn+ssh://svn.code.sf.net/p/mingw-w64/code/trunk@6553 4407c894-4637-0410-b4f5-ada5f102cad1
diff --git a/mingw-w64-tools/widl/src/header.c b/mingw-w64-tools/widl/src/header.c
index 97a8ee0..547774c 100644
--- a/mingw-w64-tools/widl/src/header.c
+++ b/mingw-w64-tools/widl/src/header.c
@@ -88,20 +88,16 @@
 int is_attr(const attr_list_t *list, enum attr_type t)
 {
     const attr_t *attr;
-    if (list) {
-        LIST_FOR_EACH_ENTRY( attr, list, const attr_t, entry )
+    if (list) LIST_FOR_EACH_ENTRY( attr, list, const attr_t, entry )
         if (attr->type == t) return 1;
-    }
     return 0;
 }
 
 void *get_attrp(const attr_list_t *list, enum attr_type t)
 {
     const attr_t *attr;
-    if (list) {
-        LIST_FOR_EACH_ENTRY( attr, list, const attr_t, entry )
+    if (list) LIST_FOR_EACH_ENTRY( attr, list, const attr_t, entry )
         if (attr->type == t) return attr->u.pval;
-    }
     return NULL;
 }
 
@@ -113,16 +109,6 @@
     return 0;
 }
 
-int is_void(const type_t *t)
-{
-    return type_get_type(t) == TYPE_VOID;
-}
-
-int is_conformant_array(const type_t *t)
-{
-    return is_array(t) && type_array_has_conformance(t);
-}
-
 static void write_guid(FILE *f, const char *guid_prefix, const char *name, const UUID *uuid)
 {
   if (!uuid) return;
@@ -1535,6 +1521,7 @@
       case STMT_TYPEDEF:
       case STMT_MODULE:
       case STMT_CPPQUOTE:
+      case STMT_PRAGMA:
       case STMT_DECLARATION:
         /* not processed here */
         break;
@@ -1569,6 +1556,7 @@
       case STMT_TYPEDEF:
       case STMT_MODULE:
       case STMT_CPPQUOTE:
+      case STMT_PRAGMA:
       case STMT_DECLARATION:
         /* not processed here */
         break;
@@ -1639,6 +1627,7 @@
         break;
       case STMT_IMPORTLIB:
       case STMT_MODULE:
+      case STMT_PRAGMA:
         /* not included in header */
         break;
       case STMT_IMPORT:
diff --git a/mingw-w64-tools/widl/src/header.h b/mingw-w64-tools/widl/src/header.h
index bb3ed86..380d4a4 100644
--- a/mingw-w64-tools/widl/src/header.h
+++ b/mingw-w64-tools/widl/src/header.h
@@ -28,9 +28,6 @@
 extern int is_attr(const attr_list_t *list, enum attr_type t);
 extern void *get_attrp(const attr_list_t *list, enum attr_type t);
 extern unsigned int get_attrv(const attr_list_t *list, enum attr_type t);
-extern int is_void(const type_t *t);
-extern int is_conformant_array(const type_t *t);
-extern int is_declptr(const type_t *t);
 extern const char* get_name(const var_t *v);
 extern void write_type_left(FILE *h, type_t *t, int declonly);
 extern void write_type_right(FILE *h, type_t *t, int is_field);
@@ -63,6 +60,31 @@
 extern int has_out_arg_or_return(const var_t *func);
 extern int is_const_decl(const var_t *var);
 
+static inline int is_ptr(const type_t *t)
+{
+    return type_get_type(t) == TYPE_POINTER;
+}
+
+static inline int is_array(const type_t *t)
+{
+    return type_get_type(t) == TYPE_ARRAY;
+}
+
+static inline int is_void(const type_t *t)
+{
+    return type_get_type(t) == TYPE_VOID;
+}
+
+static inline int is_declptr(const type_t *t)
+{
+    return is_ptr(t) || (type_get_type(t) == TYPE_ARRAY && type_array_is_decl_as_ptr(t));
+}
+
+static inline int is_conformant_array(const type_t *t)
+{
+    return is_array(t) && type_array_has_conformance(t);
+}
+
 static inline int last_ptr(const type_t *type)
 {
     return is_ptr(type) && !is_declptr(type_pointer_get_ref(type));
diff --git a/mingw-w64-tools/widl/src/parser.l b/mingw-w64-tools/widl/src/parser.l
index 2bb9c33..e5e9f76 100644
--- a/mingw-w64-tools/widl/src/parser.l
+++ b/mingw-w64-tools/widl/src/parser.l
@@ -37,6 +37,7 @@
 %x WSTRQUOTE
 %x ATTR
 %x PP_LINE
+%x PP_PRAGMA
 %x SQUOTE
 
 %{
@@ -89,6 +90,8 @@
 static unsigned int xstrtoul(const char *nptr, char **endptr, int base)
 {
 #if defined(__MINGW32__) || defined(_MSC_VER)
+  /* Long might be not wide enough for LLP64 target, so we want to use
+     double-precision here instead.  */
   unsigned long long val;
 
   errno = 0;
@@ -135,6 +138,7 @@
  **************************************************************************
  */
 %%
+<INITIAL>^{ws}*\#{ws}*pragma{ws}+ yy_push_state(PP_PRAGMA);
 <INITIAL,ATTR>^{ws}*\#{ws}*	yy_push_state(PP_LINE);
 <PP_LINE>[^\n]*         {
                             int lineno;
@@ -154,6 +158,8 @@
                             line_number = lineno - 1;  /* We didn't read the newline */
                             input_name = xstrdup(fname);
                         }
+<PP_PRAGMA>midl_echo[^\n]*  yyless(9); yy_pop_state(); return tCPPQUOTE;
+<PP_PRAGMA>[^\n]*       parser_lval.str = xstrdup(yytext); yy_pop_state(); return aPRAGMA;
 <INITIAL,ATTR>\"	yy_push_state(QUOTE); cbufidx = 0;
 <QUOTE>\"		{
 				yy_pop_state();
@@ -425,7 +431,7 @@
 	struct keyword key, *kwp;
 	key.kw = kw;
 	kwp = bsearch(&key, keywords, NKEYWORDS, sizeof(keywords[0]), kw_cmp_func);
-	if (kwp && (flag_is_rt || kwp->token != tNAMESPACE)) {
+	if (kwp && (do_rt_extension || kwp->token != tNAMESPACE)) {
 		parser_lval.str = xstrdup(kwp->kw);
 		return kwp->token;
 	}
diff --git a/mingw-w64-tools/widl/src/parser.tab.c b/mingw-w64-tools/widl/src/parser.tab.c
index ba7d6f2..2e076d6 100644
--- a/mingw-w64-tools/widl/src/parser.tab.c
+++ b/mingw-w64-tools/widl/src/parser.tab.c
@@ -1,9 +1,8 @@
-/* A Bison parser, made by GNU Bison 2.4.3.  */
+/* A Bison parser, made by GNU Bison 2.7.12-4996.  */
 
-/* Skeleton implementation for Bison's Yacc-like parsers in C
+/* Bison implementation for Yacc-like parsers in C
    
-      Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-   2009, 2010 Free Software Foundation, Inc.
+      Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
    
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -45,7 +44,7 @@
 #define YYBISON 1
 
 /* Bison version.  */
-#define YYBISON_VERSION "2.4.3"
+#define YYBISON_VERSION "2.7.12-4996"
 
 /* Skeleton name.  */
 #define YYSKELETON_NAME "yacc.c"
@@ -59,8 +58,6 @@
 /* Pull parsers.  */
 #define YYPULL 1
 
-/* Using locations.  */
-#define YYLSP_NEEDED 0
 
 /* Substitute the variable and function names.  */
 #define yyparse         parser_parse
@@ -71,10 +68,8 @@
 #define yydebug         parser_debug
 #define yynerrs         parser_nerrs
 
-
 /* Copy the first part of user declarations.  */
-
-/* Line 189 of yacc.c  */
+/* Line 371 of yacc.c  */
 #line 1 "parser.y"
 
 /*
@@ -116,33 +111,6 @@
 #include "expr.h"
 #include "typetree.h"
 
-#if defined(YYBYACC)
-	/* Berkeley yacc (byacc) doesn't seem to know about these */
-	/* Some *BSD supplied versions do define these though */
-# ifndef YYEMPTY
-#  define YYEMPTY	(-1)	/* Empty lookahead value of yychar */
-# endif
-# ifndef YYLEX
-#  define YYLEX		yylex()
-# endif
-
-#elif defined(YYBISON)
-	/* Bison was used for original development */
-	/* #define YYEMPTY -2 */
-	/* #define YYLEX   yylex() */
-
-#else
-	/* No yacc we know yet */
-# if !defined(YYEMPTY) || !defined(YYLEX)
-#  error Yacc version/type unknown. This version needs to be verified for settings of YYEMPTY and YYLEX.
-# elif defined(__GNUC__)	/* gcc defines the #warning directive */
-#  warning Yacc version/type unknown. It defines YYEMPTY and YYLEX, but is not tested
-  /* #else we just take a chance that it works... */
-# endif
-#endif
-
-#define YYERROR_VERBOSE
-
 static unsigned char pointer_default = RPC_FC_UP;
 
 typedef struct list typelist_t;
@@ -219,6 +187,7 @@
 static statement_t *make_statement_reference(type_t *type);
 static statement_t *make_statement_declaration(var_t *var);
 static statement_t *make_statement_library(typelib_t *typelib);
+static statement_t *make_statement_pragma(const char *str);
 static statement_t *make_statement_cppquote(const char *str);
 static statement_t *make_statement_importlib(const char *str);
 static statement_t *make_statement_module(type_t *type);
@@ -230,28 +199,36 @@
 static attr_list_t *append_attribs(attr_list_t *, attr_list_t *);
 
 
+/* Line 371 of yacc.c  */
+#line 204 "parser.tab.c"
 
-/* Line 189 of yacc.c  */
-#line 236 "parser.tab.c"
-
-/* Enabling traces.  */
-#ifndef YYDEBUG
-# define YYDEBUG 0
-#endif
+# ifndef YY_NULL
+#  if defined __cplusplus && 201103L <= __cplusplus
+#   define YY_NULL nullptr
+#  else
+#   define YY_NULL 0
+#  endif
+# endif
 
 /* Enabling verbose error messages.  */
 #ifdef YYERROR_VERBOSE
 # undef YYERROR_VERBOSE
 # define YYERROR_VERBOSE 1
 #else
-# define YYERROR_VERBOSE 0
+# define YYERROR_VERBOSE 1
 #endif
 
-/* Enabling the token table.  */
-#ifndef YYTOKEN_TABLE
-# define YYTOKEN_TABLE 0
+/* In a future release of Bison, this section will be replaced
+   by #include "parser.tab.h".  */
+#ifndef YY_PARSER_PARSER_TAB_H_INCLUDED
+# define YY_PARSER_PARSER_TAB_H_INCLUDED
+/* Enabling traces.  */
+#ifndef YYDEBUG
+# define YYDEBUG 0
 #endif
-
+#if YYDEBUG
+extern int parser_debug;
+#endif
 
 /* Tokens.  */
 #ifndef YYTOKENTYPE
@@ -260,198 +237,197 @@
       know about them.  */
    enum yytokentype {
      aIDENTIFIER = 258,
-     aKNOWNTYPE = 259,
-     aNUM = 260,
-     aHEXNUM = 261,
-     aDOUBLE = 262,
-     aSTRING = 263,
-     aWSTRING = 264,
-     aSQSTRING = 265,
-     aUUID = 266,
-     aEOF = 267,
-     SHL = 268,
-     SHR = 269,
-     MEMBERPTR = 270,
-     EQUALITY = 271,
-     INEQUALITY = 272,
-     GREATEREQUAL = 273,
-     LESSEQUAL = 274,
-     LOGICALOR = 275,
-     LOGICALAND = 276,
-     ELLIPSIS = 277,
-     tAGGREGATABLE = 278,
-     tALLOCATE = 279,
-     tANNOTATION = 280,
-     tAPPOBJECT = 281,
-     tASYNC = 282,
-     tASYNCUUID = 283,
-     tAUTOHANDLE = 284,
-     tBINDABLE = 285,
-     tBOOLEAN = 286,
-     tBROADCAST = 287,
-     tBYTE = 288,
-     tBYTECOUNT = 289,
-     tCALLAS = 290,
-     tCALLBACK = 291,
-     tCASE = 292,
-     tCDECL = 293,
-     tCHAR = 294,
-     tCOCLASS = 295,
-     tCODE = 296,
-     tCOMMSTATUS = 297,
-     tCONST = 298,
-     tCONTEXTHANDLE = 299,
-     tCONTEXTHANDLENOSERIALIZE = 300,
-     tCONTEXTHANDLESERIALIZE = 301,
-     tCONTROL = 302,
-     tCPPQUOTE = 303,
-     tDECODE = 304,
-     tDEFAULT = 305,
-     tDEFAULTBIND = 306,
-     tDEFAULTCOLLELEM = 307,
-     tDEFAULTVALUE = 308,
-     tDEFAULTVTABLE = 309,
-     tDISABLECONSISTENCYCHECK = 310,
-     tDISPLAYBIND = 311,
-     tDISPINTERFACE = 312,
-     tDLLNAME = 313,
-     tDOUBLE = 314,
-     tDUAL = 315,
-     tENABLEALLOCATE = 316,
-     tENCODE = 317,
-     tENDPOINT = 318,
-     tENTRY = 319,
-     tENUM = 320,
-     tERRORSTATUST = 321,
-     tEXPLICITHANDLE = 322,
-     tEXTERN = 323,
-     tFALSE = 324,
-     tFASTCALL = 325,
-     tFAULTSTATUS = 326,
-     tFLOAT = 327,
-     tFORCEALLOCATE = 328,
-     tHANDLE = 329,
-     tHANDLET = 330,
-     tHELPCONTEXT = 331,
-     tHELPFILE = 332,
-     tHELPSTRING = 333,
-     tHELPSTRINGCONTEXT = 334,
-     tHELPSTRINGDLL = 335,
-     tHIDDEN = 336,
-     tHYPER = 337,
-     tID = 338,
-     tIDEMPOTENT = 339,
-     tIGNORE = 340,
-     tIIDIS = 341,
-     tIMMEDIATEBIND = 342,
-     tIMPLICITHANDLE = 343,
-     tIMPORT = 344,
-     tIMPORTLIB = 345,
-     tIN = 346,
-     tIN_LINE = 347,
-     tINLINE = 348,
-     tINPUTSYNC = 349,
-     tINT = 350,
-     tINT3264 = 351,
-     tINT64 = 352,
-     tINTERFACE = 353,
-     tLCID = 354,
-     tLENGTHIS = 355,
-     tLIBRARY = 356,
-     tLICENSED = 357,
-     tLOCAL = 358,
-     tLONG = 359,
-     tMAYBE = 360,
-     tMESSAGE = 361,
-     tMETHODS = 362,
-     tMODULE = 363,
-     tNAMESPACE = 364,
-     tNOCODE = 365,
-     tNONBROWSABLE = 366,
-     tNONCREATABLE = 367,
-     tNONEXTENSIBLE = 368,
-     tNOTIFY = 369,
-     tNOTIFYFLAG = 370,
-     tNULL = 371,
-     tOBJECT = 372,
-     tODL = 373,
-     tOLEAUTOMATION = 374,
-     tOPTIMIZE = 375,
-     tOPTIONAL = 376,
-     tOUT = 377,
-     tPARTIALIGNORE = 378,
-     tPASCAL = 379,
-     tPOINTERDEFAULT = 380,
-     tPROGID = 381,
-     tPROPERTIES = 382,
-     tPROPGET = 383,
-     tPROPPUT = 384,
-     tPROPPUTREF = 385,
-     tPROXY = 386,
-     tPTR = 387,
-     tPUBLIC = 388,
-     tRANGE = 389,
-     tREADONLY = 390,
-     tREF = 391,
-     tREGISTER = 392,
-     tREPRESENTAS = 393,
-     tREQUESTEDIT = 394,
-     tRESTRICTED = 395,
-     tRETVAL = 396,
-     tSAFEARRAY = 397,
-     tSHORT = 398,
-     tSIGNED = 399,
-     tSIZEIS = 400,
-     tSIZEOF = 401,
-     tSMALL = 402,
-     tSOURCE = 403,
-     tSTATIC = 404,
-     tSTDCALL = 405,
-     tSTRICTCONTEXTHANDLE = 406,
-     tSTRING = 407,
-     tSTRUCT = 408,
-     tSWITCH = 409,
-     tSWITCHIS = 410,
-     tSWITCHTYPE = 411,
-     tTHREADING = 412,
-     tTRANSMITAS = 413,
-     tTRUE = 414,
-     tTYPEDEF = 415,
-     tUIDEFAULT = 416,
-     tUNION = 417,
-     tUNIQUE = 418,
-     tUNSIGNED = 419,
-     tUSESGETLASTERROR = 420,
-     tUSERMARSHAL = 421,
-     tUUID = 422,
-     tV1ENUM = 423,
-     tVARARG = 424,
-     tVERSION = 425,
-     tVIPROGID = 426,
-     tVOID = 427,
-     tWCHAR = 428,
-     tWIREMARSHAL = 429,
-     tAPARTMENT = 430,
-     tNEUTRAL = 431,
-     tSINGLE = 432,
-     tFREE = 433,
-     tBOTH = 434,
-     ADDRESSOF = 435,
-     NEG = 436,
-     POS = 437,
-     PPTR = 438,
-     CAST = 439
+     aPRAGMA = 259,
+     aKNOWNTYPE = 260,
+     aNUM = 261,
+     aHEXNUM = 262,
+     aDOUBLE = 263,
+     aSTRING = 264,
+     aWSTRING = 265,
+     aSQSTRING = 266,
+     aUUID = 267,
+     aEOF = 268,
+     SHL = 269,
+     SHR = 270,
+     MEMBERPTR = 271,
+     EQUALITY = 272,
+     INEQUALITY = 273,
+     GREATEREQUAL = 274,
+     LESSEQUAL = 275,
+     LOGICALOR = 276,
+     LOGICALAND = 277,
+     ELLIPSIS = 278,
+     tAGGREGATABLE = 279,
+     tALLOCATE = 280,
+     tANNOTATION = 281,
+     tAPPOBJECT = 282,
+     tASYNC = 283,
+     tASYNCUUID = 284,
+     tAUTOHANDLE = 285,
+     tBINDABLE = 286,
+     tBOOLEAN = 287,
+     tBROADCAST = 288,
+     tBYTE = 289,
+     tBYTECOUNT = 290,
+     tCALLAS = 291,
+     tCALLBACK = 292,
+     tCASE = 293,
+     tCDECL = 294,
+     tCHAR = 295,
+     tCOCLASS = 296,
+     tCODE = 297,
+     tCOMMSTATUS = 298,
+     tCONST = 299,
+     tCONTEXTHANDLE = 300,
+     tCONTEXTHANDLENOSERIALIZE = 301,
+     tCONTEXTHANDLESERIALIZE = 302,
+     tCONTROL = 303,
+     tCPPQUOTE = 304,
+     tDECODE = 305,
+     tDEFAULT = 306,
+     tDEFAULTBIND = 307,
+     tDEFAULTCOLLELEM = 308,
+     tDEFAULTVALUE = 309,
+     tDEFAULTVTABLE = 310,
+     tDISABLECONSISTENCYCHECK = 311,
+     tDISPLAYBIND = 312,
+     tDISPINTERFACE = 313,
+     tDLLNAME = 314,
+     tDOUBLE = 315,
+     tDUAL = 316,
+     tENABLEALLOCATE = 317,
+     tENCODE = 318,
+     tENDPOINT = 319,
+     tENTRY = 320,
+     tENUM = 321,
+     tERRORSTATUST = 322,
+     tEXPLICITHANDLE = 323,
+     tEXTERN = 324,
+     tFALSE = 325,
+     tFASTCALL = 326,
+     tFAULTSTATUS = 327,
+     tFLOAT = 328,
+     tFORCEALLOCATE = 329,
+     tHANDLE = 330,
+     tHANDLET = 331,
+     tHELPCONTEXT = 332,
+     tHELPFILE = 333,
+     tHELPSTRING = 334,
+     tHELPSTRINGCONTEXT = 335,
+     tHELPSTRINGDLL = 336,
+     tHIDDEN = 337,
+     tHYPER = 338,
+     tID = 339,
+     tIDEMPOTENT = 340,
+     tIGNORE = 341,
+     tIIDIS = 342,
+     tIMMEDIATEBIND = 343,
+     tIMPLICITHANDLE = 344,
+     tIMPORT = 345,
+     tIMPORTLIB = 346,
+     tIN = 347,
+     tIN_LINE = 348,
+     tINLINE = 349,
+     tINPUTSYNC = 350,
+     tINT = 351,
+     tINT3264 = 352,
+     tINT64 = 353,
+     tINTERFACE = 354,
+     tLCID = 355,
+     tLENGTHIS = 356,
+     tLIBRARY = 357,
+     tLICENSED = 358,
+     tLOCAL = 359,
+     tLONG = 360,
+     tMAYBE = 361,
+     tMESSAGE = 362,
+     tMETHODS = 363,
+     tMODULE = 364,
+     tNAMESPACE = 365,
+     tNOCODE = 366,
+     tNONBROWSABLE = 367,
+     tNONCREATABLE = 368,
+     tNONEXTENSIBLE = 369,
+     tNOTIFY = 370,
+     tNOTIFYFLAG = 371,
+     tNULL = 372,
+     tOBJECT = 373,
+     tODL = 374,
+     tOLEAUTOMATION = 375,
+     tOPTIMIZE = 376,
+     tOPTIONAL = 377,
+     tOUT = 378,
+     tPARTIALIGNORE = 379,
+     tPASCAL = 380,
+     tPOINTERDEFAULT = 381,
+     tPROGID = 382,
+     tPROPERTIES = 383,
+     tPROPGET = 384,
+     tPROPPUT = 385,
+     tPROPPUTREF = 386,
+     tPROXY = 387,
+     tPTR = 388,
+     tPUBLIC = 389,
+     tRANGE = 390,
+     tREADONLY = 391,
+     tREF = 392,
+     tREGISTER = 393,
+     tREPRESENTAS = 394,
+     tREQUESTEDIT = 395,
+     tRESTRICTED = 396,
+     tRETVAL = 397,
+     tSAFEARRAY = 398,
+     tSHORT = 399,
+     tSIGNED = 400,
+     tSIZEIS = 401,
+     tSIZEOF = 402,
+     tSMALL = 403,
+     tSOURCE = 404,
+     tSTATIC = 405,
+     tSTDCALL = 406,
+     tSTRICTCONTEXTHANDLE = 407,
+     tSTRING = 408,
+     tSTRUCT = 409,
+     tSWITCH = 410,
+     tSWITCHIS = 411,
+     tSWITCHTYPE = 412,
+     tTHREADING = 413,
+     tTRANSMITAS = 414,
+     tTRUE = 415,
+     tTYPEDEF = 416,
+     tUIDEFAULT = 417,
+     tUNION = 418,
+     tUNIQUE = 419,
+     tUNSIGNED = 420,
+     tUSESGETLASTERROR = 421,
+     tUSERMARSHAL = 422,
+     tUUID = 423,
+     tV1ENUM = 424,
+     tVARARG = 425,
+     tVERSION = 426,
+     tVIPROGID = 427,
+     tVOID = 428,
+     tWCHAR = 429,
+     tWIREMARSHAL = 430,
+     tAPARTMENT = 431,
+     tNEUTRAL = 432,
+     tSINGLE = 433,
+     tFREE = 434,
+     tBOTH = 435,
+     ADDRESSOF = 436,
+     NEG = 437,
+     POS = 438,
+     PPTR = 439,
+     CAST = 440
    };
 #endif
 
 
-
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
 typedef union YYSTYPE
 {
-
-/* Line 214 of yacc.c  */
-#line 155 "parser.y"
+/* Line 387 of yacc.c  */
+#line 129 "parser.y"
 
 	attr_t *attr;
 	attr_list_t *attr_list;
@@ -479,21 +455,36 @@
 	enum storage_class stgclass;
 
 
-
-/* Line 214 of yacc.c  */
-#line 485 "parser.tab.c"
+/* Line 387 of yacc.c  */
+#line 460 "parser.tab.c"
 } YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
 #endif
 
+extern YYSTYPE parser_lval;
+
+#ifdef YYPARSE_PARAM
+#if defined __STDC__ || defined __cplusplus
+int parser_parse (void *YYPARSE_PARAM);
+#else
+int parser_parse ();
+#endif
+#else /* ! YYPARSE_PARAM */
+#if defined __STDC__ || defined __cplusplus
+int parser_parse (void);
+#else
+int parser_parse ();
+#endif
+#endif /* ! YYPARSE_PARAM */
+
+#endif /* !YY_PARSER_PARSER_TAB_H_INCLUDED  */
 
 /* Copy the second part of user declarations.  */
 
-
-/* Line 264 of yacc.c  */
-#line 497 "parser.tab.c"
+/* Line 390 of yacc.c  */
+#line 488 "parser.tab.c"
 
 #ifdef short
 # undef short
@@ -546,24 +537,33 @@
 # if defined YYENABLE_NLS && YYENABLE_NLS
 #  if ENABLE_NLS
 #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
-#   define YY_(msgid) dgettext ("bison-runtime", msgid)
+#   define YY_(Msgid) dgettext ("bison-runtime", Msgid)
 #  endif
 # endif
 # ifndef YY_
-#  define YY_(msgid) msgid
+#  define YY_(Msgid) Msgid
+# endif
+#endif
+
+#ifndef __attribute__
+/* This feature is available in gcc versions 2.5 and later.  */
+# if (! defined __GNUC__ || __GNUC__ < 2 \
+      || (__GNUC__ == 2 && __GNUC_MINOR__ < 5))
+#  define __attribute__(Spec) /* empty */
 # endif
 #endif
 
 /* Suppress unused-variable warnings by "using" E.  */
 #if ! defined lint || defined __GNUC__
-# define YYUSE(e) ((void) (e))
+# define YYUSE(E) ((void) (E))
 #else
-# define YYUSE(e) /* empty */
+# define YYUSE(E) /* empty */
 #endif
 
+
 /* Identity function, used to suppress warnings about constant conditions.  */
 #ifndef lint
-# define YYID(n) (n)
+# define YYID(N) (N)
 #else
 #if (defined __STDC__ || defined __C99__FUNC__ \
      || defined __cplusplus || defined _MSC_VER)
@@ -596,11 +596,12 @@
 #    define alloca _alloca
 #   else
 #    define YYSTACK_ALLOC alloca
-#    if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
+#    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
      || defined __cplusplus || defined _MSC_VER)
 #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-#     ifndef _STDLIB_H
-#      define _STDLIB_H 1
+      /* Use EXIT_SUCCESS as a witness for stdlib.h.  */
+#     ifndef EXIT_SUCCESS
+#      define EXIT_SUCCESS 0
 #     endif
 #    endif
 #   endif
@@ -623,24 +624,24 @@
 #  ifndef YYSTACK_ALLOC_MAXIMUM
 #   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
 #  endif
-#  if (defined __cplusplus && ! defined _STDLIB_H \
+#  if (defined __cplusplus && ! defined EXIT_SUCCESS \
        && ! ((defined YYMALLOC || defined malloc) \
 	     && (defined YYFREE || defined free)))
 #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-#   ifndef _STDLIB_H
-#    define _STDLIB_H 1
+#   ifndef EXIT_SUCCESS
+#    define EXIT_SUCCESS 0
 #   endif
 #  endif
 #  ifndef YYMALLOC
 #   define YYMALLOC malloc
-#   if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
+#   if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
      || defined __cplusplus || defined _MSC_VER)
 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
 #   endif
 #  endif
 #  ifndef YYFREE
 #   define YYFREE free
-#   if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
+#   if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
      || defined __cplusplus || defined _MSC_VER)
 void free (void *); /* INFRINGES ON USER NAME SPACE */
 #   endif
@@ -669,23 +670,7 @@
      ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
       + YYSTACK_GAP_MAXIMUM)
 
-/* Copy COUNT objects from FROM to TO.  The source and destination do
-   not overlap.  */
-# ifndef YYCOPY
-#  if defined __GNUC__ && 1 < __GNUC__
-#   define YYCOPY(To, From, Count) \
-      __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
-#  else
-#   define YYCOPY(To, From, Count)		\
-      do					\
-	{					\
-	  YYSIZE_T yyi;				\
-	  for (yyi = 0; yyi < (Count); yyi++)	\
-	    (To)[yyi] = (From)[yyi];		\
-	}					\
-      while (YYID (0))
-#  endif
-# endif
+# define YYCOPY_NEEDED 1
 
 /* Relocate STACK from its old location to the new one.  The
    local variables YYSIZE and YYSTACKSIZE give the old and new number of
@@ -705,23 +690,43 @@
 
 #endif
 
+#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
+/* Copy COUNT objects from SRC to DST.  The source and destination do
+   not overlap.  */
+# ifndef YYCOPY
+#  if defined __GNUC__ && 1 < __GNUC__
+#   define YYCOPY(Dst, Src, Count) \
+      __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
+#  else
+#   define YYCOPY(Dst, Src, Count)              \
+      do                                        \
+        {                                       \
+          YYSIZE_T yyi;                         \
+          for (yyi = 0; yyi < (Count); yyi++)   \
+            (Dst)[yyi] = (Src)[yyi];            \
+        }                                       \
+      while (YYID (0))
+#  endif
+# endif
+#endif /* !YYCOPY_NEEDED */
+
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  3
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   3002
+#define YYLAST   3077
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  209
+#define YYNTOKENS  210
 /* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  101
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  386
+#define YYNRULES  387
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  678
+#define YYNSTATES  679
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   439
+#define YYMAXUTOK   440
 
 #define YYTRANSLATE(YYX)						\
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -732,16 +737,16 @@
        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,   193,     2,     2,     2,   192,   185,     2,
-     206,   207,   190,   189,   180,   188,   200,   191,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,   182,   205,
-     186,   208,   187,   181,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,   194,     2,     2,     2,   193,   186,     2,
+     207,   208,   191,   190,   181,   189,   201,   192,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,   183,   206,
+     187,   209,   188,   182,     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,   201,     2,   202,   184,     2,     2,     2,     2,     2,
+       2,   202,     2,   203,   185,     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,   203,   183,   204,   194,     2,     2,     2,
+       2,     2,     2,   204,   184,   205,   195,     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,
@@ -772,7 +777,8 @@
      145,   146,   147,   148,   149,   150,   151,   152,   153,   154,
      155,   156,   157,   158,   159,   160,   161,   162,   163,   164,
      165,   166,   167,   168,   169,   170,   171,   172,   173,   174,
-     175,   176,   177,   178,   179,   195,   196,   197,   198,   199
+     175,   176,   177,   178,   179,   180,   196,   197,   198,   199,
+     200
 };
 
 #if YYDEBUG
@@ -783,219 +789,219 @@
        0,     0,     3,     5,     6,    12,    15,    18,    22,    25,
       28,    31,    34,    35,    38,    44,    47,    51,    54,    57,
       60,    63,    66,    67,    70,    71,    73,    75,    78,    81,
-      83,    86,    88,    91,    93,    96,    98,   101,   104,   107,
-     110,   115,   119,   123,   129,   132,   136,   141,   142,   144,
-     146,   150,   152,   156,   160,   163,   167,   171,   174,   175,
-     177,   181,   183,   187,   192,   194,   198,   199,   201,   206,
-     208,   210,   212,   214,   216,   221,   226,   228,   230,   232,
-     234,   236,   238,   240,   242,   244,   246,   251,   253,   255,
-     257,   262,   264,   266,   268,   273,   278,   280,   282,   284,
-     286,   291,   296,   301,   306,   311,   313,   318,   320,   322,
-     327,   329,   334,   336,   338,   343,   348,   350,   352,   354,
+      83,    86,    88,    90,    93,    95,    98,   100,   103,   106,
+     109,   112,   117,   121,   125,   131,   134,   138,   143,   144,
+     146,   148,   152,   154,   158,   162,   165,   169,   173,   176,
+     177,   179,   183,   185,   189,   194,   196,   200,   201,   203,
+     208,   210,   212,   214,   216,   218,   223,   228,   230,   232,
+     234,   236,   238,   240,   242,   244,   246,   248,   253,   255,
+     257,   259,   264,   266,   268,   270,   275,   280,   282,   284,
+     286,   288,   293,   298,   303,   308,   313,   315,   320,   322,
+     324,   329,   331,   336,   338,   340,   345,   350,   352,   354,
      356,   358,   360,   362,   364,   366,   368,   370,   372,   374,
-     376,   381,   383,   385,   387,   392,   397,   399,   401,   403,
-     405,   407,   414,   416,   421,   423,   425,   427,   432,   434,
-     436,   438,   443,   448,   453,   458,   460,   462,   467,   472,
-     477,   479,   481,   486,   491,   496,   498,   500,   502,   504,
-     506,   508,   510,   511,   514,   519,   523,   524,   527,   529,
-     531,   535,   539,   541,   547,   549,   553,   554,   556,   558,
-     560,   562,   564,   566,   568,   570,   572,   574,   576,   582,
-     586,   590,   594,   598,   602,   606,   610,   614,   618,   622,
-     626,   630,   634,   638,   642,   646,   650,   654,   657,   660,
-     663,   666,   669,   672,   676,   680,   686,   692,   697,   701,
-     703,   707,   709,   711,   712,   715,   720,   724,   727,   730,
-     731,   734,   737,   739,   743,   746,   748,   752,   755,   756,
-     758,   759,   761,   763,   765,   767,   769,   771,   773,   776,
-     779,   781,   783,   785,   787,   789,   791,   792,   794,   796,
-     799,   801,   804,   807,   809,   811,   813,   816,   819,   822,
-     828,   831,   832,   835,   838,   841,   844,   847,   850,   854,
-     857,   861,   867,   873,   874,   877,   880,   883,   886,   893,
-     902,   905,   908,   911,   914,   917,   920,   926,   928,   930,
-     932,   934,   936,   937,   940,   943,   947,   948,   950,   953,
-     956,   959,   963,   966,   968,   970,   974,   977,   982,   986,
-     989,   991,   995,   998,   999,  1001,  1005,  1008,  1010,  1014,
-    1019,  1023,  1026,  1028,  1032,  1035,  1036,  1038,  1040,  1044,
-    1047,  1049,  1053,  1058,  1060,  1064,  1065,  1068,  1071,  1073,
-    1077,  1079,  1083,  1085,  1087,  1089,  1091,  1093,  1095,  1097,
-    1099,  1105,  1107,  1109,  1111,  1113,  1116,  1118,  1121,  1123,
-    1126,  1131,  1137,  1143,  1154,  1156,  1160
+     376,   378,   383,   385,   387,   389,   394,   399,   401,   403,
+     405,   407,   409,   416,   418,   423,   425,   427,   429,   434,
+     436,   438,   440,   445,   450,   455,   460,   462,   464,   469,
+     474,   479,   481,   483,   488,   493,   498,   500,   502,   504,
+     506,   508,   510,   512,   513,   516,   521,   525,   526,   529,
+     531,   533,   537,   541,   543,   549,   551,   555,   556,   558,
+     560,   562,   564,   566,   568,   570,   572,   574,   576,   578,
+     584,   588,   592,   596,   600,   604,   608,   612,   616,   620,
+     624,   628,   632,   636,   640,   644,   648,   652,   656,   659,
+     662,   665,   668,   671,   674,   678,   682,   688,   694,   699,
+     703,   705,   709,   711,   713,   714,   717,   722,   726,   729,
+     732,   733,   736,   739,   741,   745,   748,   750,   754,   757,
+     758,   760,   761,   763,   765,   767,   769,   771,   773,   775,
+     778,   781,   783,   785,   787,   789,   791,   793,   794,   796,
+     798,   801,   803,   806,   809,   811,   813,   815,   818,   821,
+     824,   830,   833,   834,   837,   840,   843,   846,   849,   852,
+     856,   859,   863,   869,   875,   876,   879,   882,   885,   888,
+     895,   904,   907,   910,   913,   916,   919,   922,   928,   930,
+     932,   934,   936,   938,   939,   942,   945,   949,   950,   952,
+     955,   958,   961,   965,   968,   970,   972,   976,   979,   984,
+     988,   991,   993,   997,  1000,  1001,  1003,  1007,  1010,  1012,
+    1016,  1021,  1025,  1028,  1030,  1034,  1037,  1038,  1040,  1042,
+    1046,  1049,  1051,  1055,  1060,  1062,  1066,  1067,  1070,  1073,
+    1075,  1079,  1081,  1085,  1087,  1089,  1091,  1093,  1095,  1097,
+    1099,  1101,  1107,  1109,  1111,  1113,  1115,  1118,  1120,  1123,
+    1125,  1128,  1133,  1139,  1145,  1156,  1158,  1162
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
 static const yytype_int16 yyrhs[] =
 {
-     210,     0,    -1,   211,    -1,    -1,   211,   265,   203,   211,
-     204,    -1,   211,   277,    -1,   211,   276,    -1,   211,   262,
-     205,    -1,   211,   264,    -1,   211,   280,    -1,   211,   223,
-      -1,   211,   215,    -1,    -1,   212,   277,    -1,   212,   265,
-     203,   212,   204,    -1,   212,   276,    -1,   212,   262,   205,
-      -1,   212,   264,    -1,   212,   280,    -1,   212,   215,    -1,
-     212,   220,    -1,   212,   223,    -1,    -1,   213,   215,    -1,
-      -1,   205,    -1,   217,    -1,   216,   205,    -1,   255,   205,
-      -1,   219,    -1,   307,   205,    -1,   241,    -1,    65,     3,
-      -1,   305,    -1,   153,     3,    -1,   308,    -1,   162,     3,
-      -1,   230,   241,    -1,   230,   305,    -1,   230,   308,    -1,
-      48,   206,     8,   207,    -1,    89,     8,   205,    -1,   218,
-     212,    12,    -1,    90,   206,     8,   207,   214,    -1,   101,
-       3,    -1,   230,   221,   203,    -1,   222,   212,   204,   214,
-      -1,    -1,   226,    -1,   227,    -1,   225,   180,   227,    -1,
-     225,    -1,   225,   180,    22,    -1,   230,   285,   296,    -1,
-     285,   296,    -1,   201,   244,   202,    -1,   201,   190,   202,
-      -1,   201,   202,    -1,    -1,   230,    -1,   201,   231,   202,
-      -1,   233,    -1,   231,   180,   233,    -1,   231,   202,   201,
-     233,    -1,     8,    -1,   232,   180,     8,    -1,    -1,    23,
-      -1,    25,   206,     8,   207,    -1,    26,    -1,    27,    -1,
-      29,    -1,    30,    -1,    32,    -1,    35,   206,   258,   207,
-      -1,    37,   206,   245,   207,    -1,    41,    -1,    42,    -1,
-      44,    -1,    45,    -1,    46,    -1,    47,    -1,    49,    -1,
-      50,    -1,    51,    -1,    52,    -1,    53,   206,   247,   207,
-      -1,    54,    -1,    55,    -1,    56,    -1,    58,   206,     8,
-     207,    -1,    60,    -1,    61,    -1,    62,    -1,    63,   206,
-     232,   207,    -1,    64,   206,   247,   207,    -1,    67,    -1,
-      71,    -1,    73,    -1,    74,    -1,    76,   206,   246,   207,
-      -1,    77,   206,     8,   207,    -1,    78,   206,     8,   207,
-      -1,    79,   206,   246,   207,    -1,    80,   206,     8,   207,
-      -1,    81,    -1,    83,   206,   246,   207,    -1,    84,    -1,
-      85,    -1,    86,   206,   244,   207,    -1,    87,    -1,    88,
-     206,   227,   207,    -1,    91,    -1,    94,    -1,   100,   206,
-     242,   207,    -1,    99,   206,   246,   207,    -1,    99,    -1,
-     102,    -1,   103,    -1,   105,    -1,   106,    -1,   110,    -1,
+     211,     0,    -1,   212,    -1,    -1,   212,   266,   204,   212,
+     205,    -1,   212,   278,    -1,   212,   277,    -1,   212,   263,
+     206,    -1,   212,   265,    -1,   212,   281,    -1,   212,   224,
+      -1,   212,   216,    -1,    -1,   213,   278,    -1,   213,   266,
+     204,   213,   205,    -1,   213,   277,    -1,   213,   263,   206,
+      -1,   213,   265,    -1,   213,   281,    -1,   213,   216,    -1,
+     213,   221,    -1,   213,   224,    -1,    -1,   214,   216,    -1,
+      -1,   206,    -1,   218,    -1,   217,   206,    -1,   256,   206,
+      -1,   220,    -1,   308,   206,    -1,     4,    -1,   242,    -1,
+      66,     3,    -1,   306,    -1,   154,     3,    -1,   309,    -1,
+     163,     3,    -1,   231,   242,    -1,   231,   306,    -1,   231,
+     309,    -1,    49,   207,     9,   208,    -1,    90,     9,   206,
+      -1,   219,   213,    13,    -1,    91,   207,     9,   208,   215,
+      -1,   102,     3,    -1,   231,   222,   204,    -1,   223,   213,
+     205,   215,    -1,    -1,   227,    -1,   228,    -1,   226,   181,
+     228,    -1,   226,    -1,   226,   181,    23,    -1,   231,   286,
+     297,    -1,   286,   297,    -1,   202,   245,   203,    -1,   202,
+     191,   203,    -1,   202,   203,    -1,    -1,   231,    -1,   202,
+     232,   203,    -1,   234,    -1,   232,   181,   234,    -1,   232,
+     203,   202,   234,    -1,     9,    -1,   233,   181,     9,    -1,
+      -1,    24,    -1,    26,   207,     9,   208,    -1,    27,    -1,
+      28,    -1,    30,    -1,    31,    -1,    33,    -1,    36,   207,
+     259,   208,    -1,    38,   207,   246,   208,    -1,    42,    -1,
+      43,    -1,    45,    -1,    46,    -1,    47,    -1,    48,    -1,
+      50,    -1,    51,    -1,    52,    -1,    53,    -1,    54,   207,
+     248,   208,    -1,    55,    -1,    56,    -1,    57,    -1,    59,
+     207,     9,   208,    -1,    61,    -1,    62,    -1,    63,    -1,
+      64,   207,   233,   208,    -1,    65,   207,   248,   208,    -1,
+      68,    -1,    72,    -1,    74,    -1,    75,    -1,    77,   207,
+     247,   208,    -1,    78,   207,     9,   208,    -1,    79,   207,
+       9,   208,    -1,    80,   207,   247,   208,    -1,    81,   207,
+       9,   208,    -1,    82,    -1,    84,   207,   247,   208,    -1,
+      85,    -1,    86,    -1,    87,   207,   245,   208,    -1,    88,
+      -1,    89,   207,   228,   208,    -1,    92,    -1,    95,    -1,
+     101,   207,   243,   208,    -1,   100,   207,   247,   208,    -1,
+     100,    -1,   103,    -1,   104,    -1,   106,    -1,   107,    -1,
      111,    -1,   112,    -1,   113,    -1,   114,    -1,   115,    -1,
-     117,    -1,   118,    -1,   119,    -1,   120,   206,     8,   207,
-      -1,   121,    -1,   122,    -1,   123,    -1,   125,   206,   304,
-     207,    -1,   126,   206,     8,   207,    -1,   128,    -1,   129,
-      -1,   130,    -1,   131,    -1,   133,    -1,   134,   206,   246,
-     180,   246,   207,    -1,   135,    -1,   138,   206,   306,   207,
-      -1,   139,    -1,   140,    -1,   141,    -1,   145,   206,   242,
-     207,    -1,   148,    -1,   151,    -1,   152,    -1,   155,   206,
-     244,   207,    -1,   156,   206,   306,   207,    -1,   158,   206,
-     306,   207,    -1,   157,   206,   303,   207,    -1,   161,    -1,
-     165,    -1,   166,   206,   306,   207,    -1,   167,   206,   234,
-     207,    -1,    28,   206,   234,   207,    -1,   168,    -1,   169,
-      -1,   170,   206,   309,   207,    -1,   171,   206,     8,   207,
-      -1,   174,   206,   306,   207,    -1,   304,    -1,    11,    -1,
-       8,    -1,    38,    -1,    70,    -1,   124,    -1,   150,    -1,
-      -1,   236,   237,    -1,    37,   246,   182,   252,    -1,    50,
-     182,   252,    -1,    -1,   239,   180,    -1,   239,    -1,   240,
-      -1,   239,   180,   240,    -1,   258,   208,   246,    -1,   258,
-      -1,    65,   257,   203,   238,   204,    -1,   243,    -1,   242,
-     180,   243,    -1,    -1,   244,    -1,     5,    -1,     6,    -1,
-       7,    -1,    69,    -1,   116,    -1,   159,    -1,     8,    -1,
-       9,    -1,    10,    -1,     3,    -1,   244,   181,   244,   182,
-     244,    -1,   244,    20,   244,    -1,   244,    21,   244,    -1,
-     244,   183,   244,    -1,   244,   184,   244,    -1,   244,   185,
-     244,    -1,   244,    16,   244,    -1,   244,    17,   244,    -1,
-     244,   187,   244,    -1,   244,   186,   244,    -1,   244,    18,
-     244,    -1,   244,    19,   244,    -1,   244,    13,   244,    -1,
-     244,    14,   244,    -1,   244,   189,   244,    -1,   244,   188,
-     244,    -1,   244,   192,   244,    -1,   244,   190,   244,    -1,
-     244,   191,   244,    -1,   193,   244,    -1,   194,   244,    -1,
-     189,   244,    -1,   188,   244,    -1,   185,   244,    -1,   190,
-     244,    -1,   244,    15,     3,    -1,   244,   200,     3,    -1,
-     206,   285,   292,   207,   244,    -1,   146,   206,   285,   292,
-     207,    -1,   244,   201,   244,   202,    -1,   206,   244,   207,
-      -1,   246,    -1,   245,   180,   246,    -1,   244,    -1,   244,
-      -1,    -1,   248,   249,    -1,   229,   285,   301,   205,    -1,
-     229,   308,   205,    -1,   253,   205,    -1,   230,   205,    -1,
-      -1,   251,   250,    -1,   253,   205,    -1,   205,    -1,   229,
-     285,   288,    -1,   229,   305,    -1,   255,    -1,   230,   285,
-     302,    -1,   285,   302,    -1,    -1,   258,    -1,    -1,     3,
-      -1,     4,    -1,     3,    -1,     4,    -1,    33,    -1,   173,
-      -1,   261,    -1,   144,   261,    -1,   164,   261,    -1,   164,
-      -1,    72,    -1,    59,    -1,    31,    -1,    66,    -1,    75,
-      -1,    -1,    95,    -1,    95,    -1,   143,   260,    -1,   147,
-      -1,   104,   260,    -1,    82,   260,    -1,    97,    -1,    39,
-      -1,    96,    -1,    40,     3,    -1,    40,     4,    -1,   230,
-     262,    -1,   263,   203,   266,   204,   214,    -1,   109,     3,
-      -1,    -1,   266,   267,    -1,   229,   277,    -1,    57,     3,
-      -1,    57,     4,    -1,   230,   268,    -1,   127,   182,    -1,
-     270,   253,   205,    -1,   107,   182,    -1,   271,   254,   205,
-      -1,   269,   203,   270,   271,   204,    -1,   269,   203,   274,
-     205,   204,    -1,    -1,   182,     4,    -1,    98,     3,    -1,
-      98,     4,    -1,   230,   274,    -1,   275,   273,   203,   213,
-     204,   214,    -1,   275,   182,     3,   203,   219,   213,   204,
-     214,    -1,   272,   214,    -1,   274,   205,    -1,   268,   205,
-      -1,   108,     3,    -1,   108,     4,    -1,   230,   278,    -1,
-     279,   203,   213,   204,   214,    -1,    68,    -1,   149,    -1,
-     137,    -1,    93,    -1,    43,    -1,    -1,   284,   283,    -1,
-     306,   286,    -1,   287,   306,   286,    -1,    -1,   287,    -1,
-     283,   286,    -1,   282,   286,    -1,   281,   286,    -1,   190,
-     284,   288,    -1,   235,   288,    -1,   289,    -1,   258,    -1,
-     206,   288,   207,    -1,   289,   228,    -1,   289,   206,   224,
-     207,    -1,   190,   284,   292,    -1,   235,   292,    -1,   293,
-      -1,   190,   284,   296,    -1,   235,   296,    -1,    -1,   290,
-      -1,   206,   291,   207,    -1,   293,   228,    -1,   228,    -1,
-     206,   224,   207,    -1,   293,   206,   224,   207,    -1,   190,
-     284,   296,    -1,   235,   296,    -1,   297,    -1,   190,   284,
-     296,    -1,   235,   296,    -1,    -1,   294,    -1,   258,    -1,
-     206,   295,   207,    -1,   297,   228,    -1,   228,    -1,   206,
-     224,   207,    -1,   297,   206,   224,   207,    -1,   288,    -1,
-     298,   180,   288,    -1,    -1,   182,   247,    -1,   294,   299,
-      -1,   300,    -1,   301,   180,   300,    -1,   288,    -1,   288,
-     208,   247,    -1,   175,    -1,   176,    -1,   177,    -1,   178,
-      -1,   179,    -1,   136,    -1,   163,    -1,   132,    -1,   153,
-     257,   203,   248,   204,    -1,   172,    -1,     4,    -1,   259,
-      -1,   241,    -1,    65,     3,    -1,   305,    -1,   153,     3,
-      -1,   308,    -1,   162,     3,    -1,   142,   206,   306,   207,
-      -1,   229,   160,   229,   285,   298,    -1,   162,   257,   203,
-     251,   204,    -1,   162,   257,   154,   206,   253,   207,   256,
-     203,   236,   204,    -1,     5,    -1,     5,   200,     5,    -1,
-       6,    -1
+     116,    -1,   118,    -1,   119,    -1,   120,    -1,   121,   207,
+       9,   208,    -1,   122,    -1,   123,    -1,   124,    -1,   126,
+     207,   305,   208,    -1,   127,   207,     9,   208,    -1,   129,
+      -1,   130,    -1,   131,    -1,   132,    -1,   134,    -1,   135,
+     207,   247,   181,   247,   208,    -1,   136,    -1,   139,   207,
+     307,   208,    -1,   140,    -1,   141,    -1,   142,    -1,   146,
+     207,   243,   208,    -1,   149,    -1,   152,    -1,   153,    -1,
+     156,   207,   245,   208,    -1,   157,   207,   307,   208,    -1,
+     159,   207,   307,   208,    -1,   158,   207,   304,   208,    -1,
+     162,    -1,   166,    -1,   167,   207,   307,   208,    -1,   168,
+     207,   235,   208,    -1,    29,   207,   235,   208,    -1,   169,
+      -1,   170,    -1,   171,   207,   310,   208,    -1,   172,   207,
+       9,   208,    -1,   175,   207,   307,   208,    -1,   305,    -1,
+      12,    -1,     9,    -1,    39,    -1,    71,    -1,   125,    -1,
+     151,    -1,    -1,   237,   238,    -1,    38,   247,   183,   253,
+      -1,    51,   183,   253,    -1,    -1,   240,   181,    -1,   240,
+      -1,   241,    -1,   240,   181,   241,    -1,   259,   209,   247,
+      -1,   259,    -1,    66,   258,   204,   239,   205,    -1,   244,
+      -1,   243,   181,   244,    -1,    -1,   245,    -1,     6,    -1,
+       7,    -1,     8,    -1,    70,    -1,   117,    -1,   160,    -1,
+       9,    -1,    10,    -1,    11,    -1,     3,    -1,   245,   182,
+     245,   183,   245,    -1,   245,    21,   245,    -1,   245,    22,
+     245,    -1,   245,   184,   245,    -1,   245,   185,   245,    -1,
+     245,   186,   245,    -1,   245,    17,   245,    -1,   245,    18,
+     245,    -1,   245,   188,   245,    -1,   245,   187,   245,    -1,
+     245,    19,   245,    -1,   245,    20,   245,    -1,   245,    14,
+     245,    -1,   245,    15,   245,    -1,   245,   190,   245,    -1,
+     245,   189,   245,    -1,   245,   193,   245,    -1,   245,   191,
+     245,    -1,   245,   192,   245,    -1,   194,   245,    -1,   195,
+     245,    -1,   190,   245,    -1,   189,   245,    -1,   186,   245,
+      -1,   191,   245,    -1,   245,    16,     3,    -1,   245,   201,
+       3,    -1,   207,   286,   293,   208,   245,    -1,   147,   207,
+     286,   293,   208,    -1,   245,   202,   245,   203,    -1,   207,
+     245,   208,    -1,   247,    -1,   246,   181,   247,    -1,   245,
+      -1,   245,    -1,    -1,   249,   250,    -1,   230,   286,   302,
+     206,    -1,   230,   309,   206,    -1,   254,   206,    -1,   231,
+     206,    -1,    -1,   252,   251,    -1,   254,   206,    -1,   206,
+      -1,   230,   286,   289,    -1,   230,   306,    -1,   256,    -1,
+     231,   286,   303,    -1,   286,   303,    -1,    -1,   259,    -1,
+      -1,     3,    -1,     5,    -1,     3,    -1,     5,    -1,    34,
+      -1,   174,    -1,   262,    -1,   145,   262,    -1,   165,   262,
+      -1,   165,    -1,    73,    -1,    60,    -1,    32,    -1,    67,
+      -1,    76,    -1,    -1,    96,    -1,    96,    -1,   144,   261,
+      -1,   148,    -1,   105,   261,    -1,    83,   261,    -1,    98,
+      -1,    40,    -1,    97,    -1,    41,     3,    -1,    41,     5,
+      -1,   231,   263,    -1,   264,   204,   267,   205,   215,    -1,
+     110,     3,    -1,    -1,   267,   268,    -1,   230,   278,    -1,
+      58,     3,    -1,    58,     5,    -1,   231,   269,    -1,   128,
+     183,    -1,   271,   254,   206,    -1,   108,   183,    -1,   272,
+     255,   206,    -1,   270,   204,   271,   272,   205,    -1,   270,
+     204,   275,   206,   205,    -1,    -1,   183,     5,    -1,    99,
+       3,    -1,    99,     5,    -1,   231,   275,    -1,   276,   274,
+     204,   214,   205,   215,    -1,   276,   183,     3,   204,   220,
+     214,   205,   215,    -1,   273,   215,    -1,   275,   206,    -1,
+     269,   206,    -1,   109,     3,    -1,   109,     5,    -1,   231,
+     279,    -1,   280,   204,   214,   205,   215,    -1,    69,    -1,
+     150,    -1,   138,    -1,    94,    -1,    44,    -1,    -1,   285,
+     284,    -1,   307,   287,    -1,   288,   307,   287,    -1,    -1,
+     288,    -1,   284,   287,    -1,   283,   287,    -1,   282,   287,
+      -1,   191,   285,   289,    -1,   236,   289,    -1,   290,    -1,
+     259,    -1,   207,   289,   208,    -1,   290,   229,    -1,   290,
+     207,   225,   208,    -1,   191,   285,   293,    -1,   236,   293,
+      -1,   294,    -1,   191,   285,   297,    -1,   236,   297,    -1,
+      -1,   291,    -1,   207,   292,   208,    -1,   294,   229,    -1,
+     229,    -1,   207,   225,   208,    -1,   294,   207,   225,   208,
+      -1,   191,   285,   297,    -1,   236,   297,    -1,   298,    -1,
+     191,   285,   297,    -1,   236,   297,    -1,    -1,   295,    -1,
+     259,    -1,   207,   296,   208,    -1,   298,   229,    -1,   229,
+      -1,   207,   225,   208,    -1,   298,   207,   225,   208,    -1,
+     289,    -1,   299,   181,   289,    -1,    -1,   183,   248,    -1,
+     295,   300,    -1,   301,    -1,   302,   181,   301,    -1,   289,
+      -1,   289,   209,   248,    -1,   176,    -1,   177,    -1,   178,
+      -1,   179,    -1,   180,    -1,   137,    -1,   164,    -1,   133,
+      -1,   154,   258,   204,   249,   205,    -1,   173,    -1,     5,
+      -1,   260,    -1,   242,    -1,    66,     3,    -1,   306,    -1,
+     154,     3,    -1,   309,    -1,   163,     3,    -1,   143,   207,
+     307,   208,    -1,   230,   161,   230,   286,   299,    -1,   163,
+     258,   204,   252,   205,    -1,   163,   258,   155,   207,   254,
+     208,   257,   204,   237,   205,    -1,     6,    -1,     6,   201,
+       6,    -1,     7,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
-       0,   331,   331,   345,   346,   348,   349,   350,   353,   356,
-     357,   358,   361,   362,   363,   364,   365,   366,   369,   370,
-     371,   372,   375,   376,   379,   380,   384,   385,   386,   387,
-     388,   392,   393,   394,   395,   396,   397,   398,   399,   400,
-     403,   405,   413,   419,   423,   425,   429,   436,   437,   440,
-     441,   444,   445,   449,   454,   461,   465,   466,   469,   470,
-     474,   477,   478,   479,   482,   483,   486,   487,   488,   489,
-     490,   491,   492,   493,   494,   495,   496,   497,   498,   499,
-     500,   501,   502,   503,   504,   505,   506,   507,   508,   509,
-     510,   511,   512,   513,   514,   515,   516,   517,   518,   519,
-     520,   521,   522,   523,   524,   525,   526,   527,   528,   529,
-     530,   531,   532,   533,   534,   535,   536,   537,   538,   539,
-     540,   541,   542,   543,   544,   545,   546,   547,   548,   549,
-     550,   551,   552,   553,   554,   555,   556,   557,   558,   559,
-     560,   561,   565,   566,   567,   568,   569,   570,   571,   572,
-     573,   574,   575,   576,   577,   578,   579,   580,   581,   582,
-     583,   584,   585,   586,   587,   588,   592,   593,   598,   599,
-     600,   601,   604,   605,   608,   612,   618,   619,   620,   623,
-     627,   639,   643,   648,   651,   652,   655,   656,   659,   660,
-     661,   662,   663,   664,   665,   666,   667,   668,   669,   670,
-     671,   672,   673,   674,   675,   676,   677,   678,   679,   680,
-     681,   682,   683,   684,   685,   686,   687,   688,   689,   690,
-     691,   692,   693,   694,   695,   696,   698,   700,   701,   704,
-     705,   708,   714,   720,   721,   724,   729,   736,   737,   740,
-     741,   745,   746,   749,   753,   759,   767,   771,   776,   777,
-     780,   781,   782,   785,   787,   790,   791,   792,   793,   794,
-     795,   796,   797,   798,   799,   800,   803,   804,   807,   808,
-     809,   810,   811,   812,   813,   814,   817,   818,   826,   832,
-     836,   840,   841,   845,   848,   849,   852,   861,   862,   865,
-     866,   869,   875,   881,   882,   885,   886,   889,   899,   908,
-     914,   918,   919,   922,   923,   926,   931,   938,   939,   940,
-     944,   948,   951,   952,   955,   956,   960,   961,   965,   966,
-     967,   971,   973,   975,   979,   980,   981,   982,   990,   992,
-     994,   999,  1001,  1006,  1007,  1012,  1013,  1014,  1015,  1020,
-    1029,  1031,  1032,  1037,  1039,  1043,  1044,  1051,  1052,  1053,
-    1054,  1055,  1060,  1068,  1069,  1072,  1073,  1076,  1083,  1084,
-    1089,  1090,  1094,  1095,  1096,  1097,  1098,  1102,  1103,  1104,
-    1107,  1110,  1111,  1112,  1113,  1114,  1115,  1116,  1117,  1118,
-    1119,  1122,  1130,  1132,  1138,  1139,  1140
+       0,   308,   308,   322,   323,   325,   326,   327,   330,   333,
+     334,   335,   338,   339,   340,   342,   343,   344,   347,   348,
+     349,   350,   353,   354,   357,   358,   362,   363,   364,   365,
+     366,   367,   371,   372,   373,   374,   375,   376,   377,   378,
+     379,   382,   384,   392,   398,   402,   404,   408,   415,   416,
+     419,   420,   423,   424,   428,   433,   440,   444,   445,   448,
+     449,   453,   456,   457,   458,   461,   462,   465,   466,   467,
+     468,   469,   470,   471,   472,   473,   474,   475,   476,   477,
+     478,   479,   480,   481,   482,   483,   484,   485,   486,   487,
+     488,   489,   490,   491,   492,   493,   494,   495,   496,   497,
+     498,   499,   500,   501,   502,   503,   504,   505,   506,   507,
+     508,   509,   510,   511,   512,   513,   514,   515,   516,   517,
+     518,   519,   520,   521,   522,   523,   524,   525,   526,   527,
+     528,   529,   530,   531,   532,   533,   534,   535,   536,   537,
+     538,   539,   540,   544,   545,   546,   547,   548,   549,   550,
+     551,   552,   553,   554,   555,   556,   557,   558,   559,   560,
+     561,   562,   563,   564,   565,   566,   567,   571,   572,   577,
+     578,   579,   580,   583,   584,   587,   591,   597,   598,   599,
+     602,   606,   618,   622,   627,   630,   631,   634,   635,   638,
+     639,   640,   641,   642,   643,   644,   645,   646,   647,   648,
+     649,   650,   651,   652,   653,   654,   655,   656,   657,   658,
+     659,   660,   661,   662,   663,   664,   665,   666,   667,   668,
+     669,   670,   671,   672,   673,   674,   675,   677,   679,   680,
+     683,   684,   687,   693,   699,   700,   703,   708,   715,   716,
+     719,   720,   724,   725,   728,   732,   738,   746,   750,   755,
+     756,   759,   760,   761,   764,   766,   769,   770,   771,   772,
+     773,   774,   775,   776,   777,   778,   779,   782,   783,   786,
+     787,   788,   789,   790,   791,   792,   793,   796,   797,   805,
+     811,   815,   818,   819,   823,   826,   827,   830,   839,   840,
+     843,   844,   847,   853,   859,   860,   863,   864,   867,   877,
+     886,   892,   896,   897,   900,   901,   904,   909,   916,   917,
+     918,   922,   926,   929,   930,   933,   934,   938,   939,   943,
+     944,   945,   949,   951,   953,   957,   958,   959,   960,   968,
+     970,   972,   977,   979,   984,   985,   990,   991,   992,   993,
+     998,  1007,  1009,  1010,  1015,  1017,  1021,  1022,  1029,  1030,
+    1031,  1032,  1033,  1038,  1046,  1047,  1050,  1051,  1054,  1061,
+    1062,  1067,  1068,  1072,  1073,  1074,  1075,  1076,  1080,  1081,
+    1082,  1085,  1088,  1089,  1090,  1091,  1092,  1093,  1094,  1095,
+    1096,  1097,  1100,  1107,  1109,  1115,  1116,  1117
 };
 #endif
 
-#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
+#if YYDEBUG || YYERROR_VERBOSE || 1
 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
    First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
 static const char *const yytname[] =
 {
-  "$end", "error", "$undefined", "aIDENTIFIER", "aKNOWNTYPE", "aNUM",
-  "aHEXNUM", "aDOUBLE", "aSTRING", "aWSTRING", "aSQSTRING", "aUUID",
-  "aEOF", "SHL", "SHR", "MEMBERPTR", "EQUALITY", "INEQUALITY",
+  "$end", "error", "$undefined", "aIDENTIFIER", "aPRAGMA", "aKNOWNTYPE",
+  "aNUM", "aHEXNUM", "aDOUBLE", "aSTRING", "aWSTRING", "aSQSTRING",
+  "aUUID", "aEOF", "SHL", "SHR", "MEMBERPTR", "EQUALITY", "INEQUALITY",
   "GREATEREQUAL", "LESSEQUAL", "LOGICALOR", "LOGICALAND", "ELLIPSIS",
   "tAGGREGATABLE", "tALLOCATE", "tANNOTATION", "tAPPOBJECT", "tASYNC",
   "tASYNCUUID", "tAUTOHANDLE", "tBINDABLE", "tBOOLEAN", "tBROADCAST",
@@ -1052,7 +1058,7 @@
   "any_declarator_no_direct", "m_any_declarator", "any_direct_declarator",
   "declarator_list", "m_bitfield", "struct_declarator",
   "struct_declarator_list", "init_declarator", "threading_type",
-  "pointer_type", "structdef", "type", "typedef", "uniondef", "version", 0
+  "pointer_type", "structdef", "type", "typedef", "uniondef", "version", YY_NULL
 };
 #endif
 
@@ -1079,54 +1085,54 @@
      405,   406,   407,   408,   409,   410,   411,   412,   413,   414,
      415,   416,   417,   418,   419,   420,   421,   422,   423,   424,
      425,   426,   427,   428,   429,   430,   431,   432,   433,   434,
-      44,    63,    58,   124,    94,    38,    60,    62,    45,    43,
-      42,    47,    37,    33,   126,   435,   436,   437,   438,   439,
-      46,    91,    93,   123,   125,    59,    40,    41,    61
+     435,    44,    63,    58,   124,    94,    38,    60,    62,    45,
+      43,    42,    47,    37,    33,   126,   436,   437,   438,   439,
+     440,    46,    91,    93,   123,   125,    59,    40,    41,    61
 };
 # endif
 
 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint16 yyr1[] =
 {
-       0,   209,   210,   211,   211,   211,   211,   211,   211,   211,
-     211,   211,   212,   212,   212,   212,   212,   212,   212,   212,
-     212,   212,   213,   213,   214,   214,   215,   215,   215,   215,
-     215,   216,   216,   216,   216,   216,   216,   216,   216,   216,
-     217,   218,   219,   220,   221,   222,   223,   224,   224,   225,
-     225,   226,   226,   227,   227,   228,   228,   228,   229,   229,
-     230,   231,   231,   231,   232,   232,   233,   233,   233,   233,
-     233,   233,   233,   233,   233,   233,   233,   233,   233,   233,
-     233,   233,   233,   233,   233,   233,   233,   233,   233,   233,
-     233,   233,   233,   233,   233,   233,   233,   233,   233,   233,
-     233,   233,   233,   233,   233,   233,   233,   233,   233,   233,
-     233,   233,   233,   233,   233,   233,   233,   233,   233,   233,
-     233,   233,   233,   233,   233,   233,   233,   233,   233,   233,
-     233,   233,   233,   233,   233,   233,   233,   233,   233,   233,
-     233,   233,   233,   233,   233,   233,   233,   233,   233,   233,
-     233,   233,   233,   233,   233,   233,   233,   233,   233,   233,
-     233,   233,   233,   233,   233,   233,   234,   234,   235,   235,
-     235,   235,   236,   236,   237,   237,   238,   238,   238,   239,
-     239,   240,   240,   241,   242,   242,   243,   243,   244,   244,
-     244,   244,   244,   244,   244,   244,   244,   244,   244,   244,
-     244,   244,   244,   244,   244,   244,   244,   244,   244,   244,
-     244,   244,   244,   244,   244,   244,   244,   244,   244,   244,
-     244,   244,   244,   244,   244,   244,   244,   244,   244,   245,
-     245,   246,   247,   248,   248,   249,   249,   250,   250,   251,
-     251,   252,   252,   253,   253,   254,   255,   255,   256,   256,
-     257,   257,   257,   258,   258,   259,   259,   259,   259,   259,
-     259,   259,   259,   259,   259,   259,   260,   260,   261,   261,
-     261,   261,   261,   261,   261,   261,   262,   262,   263,   264,
-     265,   266,   266,   267,   268,   268,   269,   270,   270,   271,
-     271,   272,   272,   273,   273,   274,   274,   275,   276,   276,
-     276,   277,   277,   278,   278,   279,   280,   281,   281,   281,
-     282,   283,   284,   284,   285,   285,   286,   286,   287,   287,
-     287,   288,   288,   288,   289,   289,   289,   289,   290,   290,
-     290,   291,   291,   292,   292,   293,   293,   293,   293,   293,
-     294,   294,   294,   295,   295,   296,   296,   297,   297,   297,
-     297,   297,   297,   298,   298,   299,   299,   300,   301,   301,
-     302,   302,   303,   303,   303,   303,   303,   304,   304,   304,
-     305,   306,   306,   306,   306,   306,   306,   306,   306,   306,
-     306,   307,   308,   308,   309,   309,   309
+       0,   210,   211,   212,   212,   212,   212,   212,   212,   212,
+     212,   212,   213,   213,   213,   213,   213,   213,   213,   213,
+     213,   213,   214,   214,   215,   215,   216,   216,   216,   216,
+     216,   216,   217,   217,   217,   217,   217,   217,   217,   217,
+     217,   218,   219,   220,   221,   222,   223,   224,   225,   225,
+     226,   226,   227,   227,   228,   228,   229,   229,   229,   230,
+     230,   231,   232,   232,   232,   233,   233,   234,   234,   234,
+     234,   234,   234,   234,   234,   234,   234,   234,   234,   234,
+     234,   234,   234,   234,   234,   234,   234,   234,   234,   234,
+     234,   234,   234,   234,   234,   234,   234,   234,   234,   234,
+     234,   234,   234,   234,   234,   234,   234,   234,   234,   234,
+     234,   234,   234,   234,   234,   234,   234,   234,   234,   234,
+     234,   234,   234,   234,   234,   234,   234,   234,   234,   234,
+     234,   234,   234,   234,   234,   234,   234,   234,   234,   234,
+     234,   234,   234,   234,   234,   234,   234,   234,   234,   234,
+     234,   234,   234,   234,   234,   234,   234,   234,   234,   234,
+     234,   234,   234,   234,   234,   234,   234,   235,   235,   236,
+     236,   236,   236,   237,   237,   238,   238,   239,   239,   239,
+     240,   240,   241,   241,   242,   243,   243,   244,   244,   245,
+     245,   245,   245,   245,   245,   245,   245,   245,   245,   245,
+     245,   245,   245,   245,   245,   245,   245,   245,   245,   245,
+     245,   245,   245,   245,   245,   245,   245,   245,   245,   245,
+     245,   245,   245,   245,   245,   245,   245,   245,   245,   245,
+     246,   246,   247,   248,   249,   249,   250,   250,   251,   251,
+     252,   252,   253,   253,   254,   254,   255,   256,   256,   257,
+     257,   258,   258,   258,   259,   259,   260,   260,   260,   260,
+     260,   260,   260,   260,   260,   260,   260,   261,   261,   262,
+     262,   262,   262,   262,   262,   262,   262,   263,   263,   264,
+     265,   266,   267,   267,   268,   269,   269,   270,   271,   271,
+     272,   272,   273,   273,   274,   274,   275,   275,   276,   277,
+     277,   277,   278,   278,   279,   279,   280,   281,   282,   282,
+     282,   283,   284,   285,   285,   286,   286,   287,   287,   288,
+     288,   288,   289,   289,   289,   290,   290,   290,   290,   291,
+     291,   291,   292,   292,   293,   293,   294,   294,   294,   294,
+     294,   295,   295,   295,   296,   296,   297,   297,   298,   298,
+     298,   298,   298,   298,   299,   299,   300,   300,   301,   302,
+     302,   303,   303,   304,   304,   304,   304,   304,   305,   305,
+     305,   306,   307,   307,   307,   307,   307,   307,   307,   307,
+     307,   307,   308,   309,   309,   310,   310,   310
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -1135,913 +1141,932 @@
        0,     2,     1,     0,     5,     2,     2,     3,     2,     2,
        2,     2,     0,     2,     5,     2,     3,     2,     2,     2,
        2,     2,     0,     2,     0,     1,     1,     2,     2,     1,
-       2,     1,     2,     1,     2,     1,     2,     2,     2,     2,
-       4,     3,     3,     5,     2,     3,     4,     0,     1,     1,
-       3,     1,     3,     3,     2,     3,     3,     2,     0,     1,
-       3,     1,     3,     4,     1,     3,     0,     1,     4,     1,
-       1,     1,     1,     1,     4,     4,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     4,     1,     1,     1,
-       4,     1,     1,     1,     4,     4,     1,     1,     1,     1,
-       4,     4,     4,     4,     4,     1,     4,     1,     1,     4,
-       1,     4,     1,     1,     4,     4,     1,     1,     1,     1,
+       2,     1,     1,     2,     1,     2,     1,     2,     2,     2,
+       2,     4,     3,     3,     5,     2,     3,     4,     0,     1,
+       1,     3,     1,     3,     3,     2,     3,     3,     2,     0,
+       1,     3,     1,     3,     4,     1,     3,     0,     1,     4,
+       1,     1,     1,     1,     1,     4,     4,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     4,     1,     1,
+       1,     4,     1,     1,     1,     4,     4,     1,     1,     1,
+       1,     4,     4,     4,     4,     4,     1,     4,     1,     1,
+       4,     1,     4,     1,     1,     4,     4,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       4,     1,     1,     1,     4,     4,     1,     1,     1,     1,
-       1,     6,     1,     4,     1,     1,     1,     4,     1,     1,
-       1,     4,     4,     4,     4,     1,     1,     4,     4,     4,
-       1,     1,     4,     4,     4,     1,     1,     1,     1,     1,
-       1,     1,     0,     2,     4,     3,     0,     2,     1,     1,
-       3,     3,     1,     5,     1,     3,     0,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     5,     3,
+       1,     4,     1,     1,     1,     4,     4,     1,     1,     1,
+       1,     1,     6,     1,     4,     1,     1,     1,     4,     1,
+       1,     1,     4,     4,     4,     4,     1,     1,     4,     4,
+       4,     1,     1,     4,     4,     4,     1,     1,     1,     1,
+       1,     1,     1,     0,     2,     4,     3,     0,     2,     1,
+       1,     3,     3,     1,     5,     1,     3,     0,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     5,
        3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
-       3,     3,     3,     3,     3,     3,     3,     2,     2,     2,
-       2,     2,     2,     3,     3,     5,     5,     4,     3,     1,
-       3,     1,     1,     0,     2,     4,     3,     2,     2,     0,
-       2,     2,     1,     3,     2,     1,     3,     2,     0,     1,
-       0,     1,     1,     1,     1,     1,     1,     1,     2,     2,
-       1,     1,     1,     1,     1,     1,     0,     1,     1,     2,
-       1,     2,     2,     1,     1,     1,     2,     2,     2,     5,
-       2,     0,     2,     2,     2,     2,     2,     2,     3,     2,
-       3,     5,     5,     0,     2,     2,     2,     2,     6,     8,
-       2,     2,     2,     2,     2,     2,     5,     1,     1,     1,
-       1,     1,     0,     2,     2,     3,     0,     1,     2,     2,
-       2,     3,     2,     1,     1,     3,     2,     4,     3,     2,
-       1,     3,     2,     0,     1,     3,     2,     1,     3,     4,
-       3,     2,     1,     3,     2,     0,     1,     1,     3,     2,
-       1,     3,     4,     1,     3,     0,     2,     2,     1,     3,
-       1,     3,     1,     1,     1,     1,     1,     1,     1,     1,
-       5,     1,     1,     1,     1,     2,     1,     2,     1,     2,
-       4,     5,     5,    10,     1,     3,     1
+       3,     3,     3,     3,     3,     3,     3,     3,     2,     2,
+       2,     2,     2,     2,     3,     3,     5,     5,     4,     3,
+       1,     3,     1,     1,     0,     2,     4,     3,     2,     2,
+       0,     2,     2,     1,     3,     2,     1,     3,     2,     0,
+       1,     0,     1,     1,     1,     1,     1,     1,     1,     2,
+       2,     1,     1,     1,     1,     1,     1,     0,     1,     1,
+       2,     1,     2,     2,     1,     1,     1,     2,     2,     2,
+       5,     2,     0,     2,     2,     2,     2,     2,     2,     3,
+       2,     3,     5,     5,     0,     2,     2,     2,     2,     6,
+       8,     2,     2,     2,     2,     2,     2,     5,     1,     1,
+       1,     1,     1,     0,     2,     2,     3,     0,     1,     2,
+       2,     2,     3,     2,     1,     1,     3,     2,     4,     3,
+       2,     1,     3,     2,     0,     1,     3,     2,     1,     3,
+       4,     3,     2,     1,     3,     2,     0,     1,     1,     3,
+       2,     1,     3,     4,     1,     3,     0,     2,     2,     1,
+       3,     1,     3,     1,     1,     1,     1,     1,     1,     1,
+       1,     5,     1,     1,     1,     1,     2,     1,     2,     1,
+       2,     4,     5,     5,    10,     1,     3,     1
 };
 
-/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
-   STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
+/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM.
+   Performed when YYTABLE doesn't specify something else to do.  Zero
    means the default is an error.  */
 static const yytype_uint16 yydefact[] =
 {
-       3,     0,     2,     1,   372,   263,   255,   274,     0,   311,
-       0,     0,   262,   250,   264,   307,   261,   265,   266,     0,
-     310,   268,   275,   273,     0,   266,     0,   309,     0,   266,
-       0,   270,   308,   250,   250,   260,   371,   256,    66,    11,
-       0,    26,    12,    29,    12,    10,     0,    59,   374,     0,
-     373,   257,     0,     0,     8,     0,     0,     0,    24,     0,
-     293,     6,     5,     0,     9,   316,   316,   316,     0,     0,
-     376,   316,     0,   378,   276,   277,     0,   284,   285,   375,
-     252,     0,   267,   272,     0,   295,   296,   271,   280,     0,
-     269,   258,   377,     0,   379,     0,   259,    67,     0,    69,
-      70,     0,    71,    72,    73,     0,     0,    76,    77,    78,
-      79,    80,    81,    82,    83,    84,    85,     0,    87,    88,
-      89,     0,    91,    92,    93,     0,     0,    96,    97,    98,
-      99,     0,     0,     0,     0,     0,   105,     0,   107,   108,
-       0,   110,     0,   112,   113,   116,     0,   117,   118,   119,
+       3,     0,     2,     1,    31,   373,   264,   256,   275,     0,
+     312,     0,     0,   263,   251,   265,   308,   262,   266,   267,
+       0,   311,   269,   276,   274,     0,   267,     0,   310,     0,
+     267,     0,   271,   309,   251,   251,   261,   372,   257,    67,
+      11,     0,    26,    12,    29,    12,    10,     0,    60,   375,
+       0,   374,   258,     0,     0,     8,     0,     0,     0,    24,
+       0,   294,     6,     5,     0,     9,   317,   317,   317,     0,
+       0,   377,   317,     0,   379,   277,   278,     0,   285,   286,
+     376,   253,     0,   268,   273,     0,   296,   297,   272,   281,
+       0,   270,   259,   378,     0,   380,     0,   260,    68,     0,
+      70,    71,     0,    72,    73,    74,     0,     0,    77,    78,
+      79,    80,    81,    82,    83,    84,    85,    86,     0,    88,
+      89,    90,     0,    92,    93,    94,     0,     0,    97,    98,
+      99,   100,     0,     0,     0,     0,     0,   106,     0,   108,
+     109,     0,   111,     0,   113,   114,   117,     0,   118,   119,
      120,   121,   122,   123,   124,   125,   126,   127,   128,   129,
-       0,   131,   132,   133,     0,     0,   136,   137,   138,   139,
-     369,   140,     0,   142,   367,     0,   144,   145,   146,     0,
-     148,   149,   150,     0,     0,     0,     0,   155,   368,   156,
-       0,     0,   160,   161,     0,     0,     0,     0,    61,   165,
-      27,    58,    58,    58,   250,     0,     0,   250,   250,     0,
-     374,   278,   286,   297,   305,     0,   376,   378,    28,     7,
-     281,     3,   302,     0,    25,   300,   301,     0,     0,    22,
-     320,   317,   319,   318,   253,   254,   168,   169,   170,   171,
-     312,     0,     0,   324,   360,   323,   247,   374,   376,   316,
-     378,   314,    30,     0,   176,    41,     0,   233,     0,   239,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   186,     0,     0,
-       0,     0,     0,   186,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    66,    60,    42,     0,    19,    20,    21,
-       0,    17,     0,    15,    13,    18,    24,     0,    59,   375,
-      44,   303,   304,   377,   379,    45,   246,    58,    58,     0,
-      58,     0,     0,   294,    22,    58,     0,     0,   322,     0,
-       0,    47,   326,   315,    40,     0,   178,   179,   182,   380,
-      58,    58,    58,     0,   167,   166,     0,     0,   197,   188,
-     189,   190,   194,   195,   196,   191,   192,     0,   193,     0,
-       0,     0,     0,     0,     0,     0,   231,     0,   229,   232,
-       0,     0,    64,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   345,     0,     0,   184,   187,     0,
-       0,     0,     0,     0,     0,     0,     0,   362,   363,   364,
-     365,   366,     0,     0,     0,     0,   384,   386,     0,     0,
-       0,    62,    66,     0,    16,    12,    46,     0,    24,     0,
-     282,     4,   287,     0,     0,     0,     0,     0,     0,    58,
-      24,    23,    59,   313,   321,   325,   361,     0,    57,     0,
-       0,    51,    48,    49,   183,   177,     0,   370,     0,   234,
-       0,   382,    59,   240,     0,    68,   159,    74,     0,   221,
-     220,   219,   222,   217,   218,     0,   333,     0,     0,     0,
+     130,     0,   132,   133,   134,     0,     0,   137,   138,   139,
+     140,   370,   141,     0,   143,   368,     0,   145,   146,   147,
+       0,   149,   150,   151,     0,     0,     0,     0,   156,   369,
+     157,     0,     0,   161,   162,     0,     0,     0,     0,    62,
+     166,    27,    59,    59,    59,   251,     0,     0,   251,   251,
+       0,   375,   279,   287,   298,   306,     0,   377,   379,    28,
+       7,   282,     3,   303,     0,    25,   301,   302,     0,     0,
+      22,   321,   318,   320,   319,   254,   255,   169,   170,   171,
+     172,   313,     0,     0,   325,   361,   324,   248,   375,   377,
+     317,   379,   315,    30,     0,   177,    42,     0,   234,     0,
+     240,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   187,     0,
+       0,     0,     0,     0,   187,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    67,    61,    43,     0,    19,    20,
+      21,     0,    17,     0,    15,    13,    18,    24,     0,    60,
+     376,    45,   304,   305,   378,   380,    46,   247,    59,    59,
+       0,    59,     0,     0,   295,    22,    59,     0,     0,   323,
+       0,     0,    48,   327,   316,    41,     0,   179,   180,   183,
+     381,    59,    59,    59,     0,   168,   167,     0,     0,   198,
+     189,   190,   191,   195,   196,   197,   192,   193,     0,   194,
+       0,     0,     0,     0,     0,     0,     0,   232,     0,   230,
+     233,     0,     0,    65,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   346,     0,     0,   185,   188,
+       0,     0,     0,     0,     0,     0,     0,     0,   363,   364,
+     365,   366,   367,     0,     0,     0,     0,   385,   387,     0,
+       0,     0,    63,    67,     0,    16,    12,    47,     0,    24,
+       0,   283,     4,   288,     0,     0,     0,     0,     0,     0,
+      59,    24,    23,    60,   314,   322,   326,   362,     0,    58,
+       0,     0,    52,    49,    50,   184,   178,     0,   371,     0,
+     235,     0,   383,    60,   241,     0,    69,   160,    75,     0,
+     222,   221,   220,   223,   218,   219,     0,   334,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      75,    86,    90,     0,    94,    95,   100,   101,   102,   103,
-     104,   106,   109,   111,   345,   312,    47,   350,   345,   347,
-     346,    54,   342,   115,   186,   114,   130,   134,   135,     0,
-     143,   147,   151,   152,   154,   153,   157,   158,     0,   162,
-     163,   164,    63,     0,    58,   353,   381,   279,   283,   289,
-       0,   376,   288,   291,     0,     0,   245,   292,    22,    24,
-     306,    56,    55,   327,     0,   180,   181,     0,   378,   248,
-     238,   237,   333,   228,   312,    47,   337,   333,   334,     0,
-     330,   210,   211,   223,   204,   205,   208,   209,   199,   200,
-       0,   201,   202,   203,   207,   206,   213,   212,   215,   216,
-     214,   224,     0,   230,    65,    53,   345,   312,     0,   345,
-       0,   341,    47,   349,   185,     0,   385,    24,    14,     0,
-     243,   290,    58,   298,    52,    50,   355,   358,     0,   236,
-       0,   249,     0,   333,   312,     0,   345,     0,   329,     0,
-      47,   336,     0,   227,   340,   345,   351,   344,   348,     0,
-     141,    43,   354,    24,     0,   357,     0,   235,   172,   226,
-     328,   345,   338,   332,   335,   225,     0,   198,   343,   352,
-     299,   356,   359,     0,   331,   339,     0,     0,   383,   173,
-       0,    58,    58,   242,   175,     0,   174,   241
+       0,    76,    87,    91,     0,    95,    96,   101,   102,   103,
+     104,   105,   107,   110,   112,   346,   313,    48,   351,   346,
+     348,   347,    55,   343,   116,   187,   115,   131,   135,   136,
+       0,   144,   148,   152,   153,   155,   154,   158,   159,     0,
+     163,   164,   165,    64,     0,    59,   354,   382,   280,   284,
+     290,     0,   377,   289,   292,     0,     0,   246,   293,    22,
+      24,   307,    57,    56,   328,     0,   181,   182,     0,   379,
+     249,   239,   238,   334,   229,   313,    48,   338,   334,   335,
+       0,   331,   211,   212,   224,   205,   206,   209,   210,   200,
+     201,     0,   202,   203,   204,   208,   207,   214,   213,   216,
+     217,   215,   225,     0,   231,    66,    54,   346,   313,     0,
+     346,     0,   342,    48,   350,   186,     0,   386,    24,    14,
+       0,   244,   291,    59,   299,    53,    51,   356,   359,     0,
+     237,     0,   250,     0,   334,   313,     0,   346,     0,   330,
+       0,    48,   337,     0,   228,   341,   346,   352,   345,   349,
+       0,   142,    44,   355,    24,     0,   358,     0,   236,   173,
+     227,   329,   346,   339,   333,   336,   226,     0,   199,   344,
+     353,   300,   357,   360,     0,   332,   340,     0,     0,   384,
+     174,     0,    59,    59,   243,   176,     0,   175,   242
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,     1,     2,   201,   325,   225,   297,    40,    41,    42,
-      43,   298,   209,    44,   299,   440,   441,   442,   443,   507,
-      46,   308,   197,   373,   198,   346,   508,   663,   669,   335,
-     336,   337,   247,   386,   387,   366,   367,   368,   370,   340,
-     449,   453,   342,   674,   675,   545,    49,   620,    81,   509,
-      50,    83,    51,   300,    53,   301,   302,   317,   420,    56,
-      57,   320,   426,    58,   228,    59,    60,   303,   304,   214,
-      63,   305,    65,    66,    67,   326,    68,   230,    69,   244,
-     245,   568,   627,   569,   570,   510,   600,   511,   512,   536,
-     645,   617,   618,   246,   402,   199,   248,    71,    72,   250,
-     408
+      -1,     1,     2,   202,   326,   226,   298,    41,    42,    43,
+      44,   299,   210,    45,   300,   441,   442,   443,   444,   508,
+      47,   309,   198,   374,   199,   347,   509,   664,   670,   336,
+     337,   338,   248,   387,   388,   367,   368,   369,   371,   341,
+     450,   454,   343,   675,   676,   546,    50,   621,    82,   510,
+      51,    84,    52,   301,    54,   302,   303,   318,   421,    57,
+      58,   321,   427,    59,   229,    60,    61,   304,   305,   215,
+      64,   306,    66,    67,    68,   327,    69,   231,    70,   245,
+     246,   569,   628,   570,   571,   511,   601,   512,   513,   537,
+     646,   618,   619,   247,   403,   200,   249,    72,    73,   251,
+     409
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -531
+#define YYPACT_NINF -526
 static const yytype_int16 yypact[] =
 {
-    -531,    75,  1662,  -531,  -531,  -531,  -531,  -531,    95,  -531,
-     -91,   151,  -531,   240,  -531,  -531,  -531,  -531,    37,   116,
-    -531,  -531,  -531,  -531,   245,    37,   156,  -531,   -30,    37,
-     525,  -531,  -531,   249,   251,   525,  -531,  -531,  2828,  -531,
-     -23,  -531,  -531,  -531,  -531,  -531,    24,  2505,    -9,    -7,
-    -531,  -531,    -4,    54,  -531,    58,     6,    62,    16,    67,
-      96,  -531,  -531,    79,  -531,     9,     9,     9,   446,  2677,
-      80,     9,    85,    97,  -531,  -531,   170,  -531,  -531,  -138,
-    -531,   100,  -531,  -531,    99,  -531,  -531,  -531,  -531,  2677,
-    -531,  -531,   -56,   102,  -111,  -110,  -531,  -531,     0,  -531,
-    -531,   103,  -531,  -531,  -531,   106,   107,  -531,  -531,  -531,
-    -531,  -531,  -531,  -531,  -531,  -531,  -531,   112,  -531,  -531,
-    -531,   125,  -531,  -531,  -531,   130,   131,  -531,  -531,  -531,
-    -531,   142,   143,   150,   161,   162,  -531,   163,  -531,  -531,
-     165,  -531,   166,  -531,  -531,   167,   171,  -531,  -531,  -531,
-    -531,  -531,  -531,  -531,  -531,  -531,  -531,  -531,  -531,  -531,
-     172,  -531,  -531,  -531,   175,   177,  -531,  -531,  -531,  -531,
-    -531,  -531,   178,  -531,  -531,   182,  -531,  -531,  -531,   183,
-    -531,  -531,  -531,   184,   185,   186,   187,  -531,  -531,  -531,
-     188,   190,  -531,  -531,   191,   193,   194,   -51,  -531,  -531,
-    -531,  1545,   850,   110,   256,   305,   264,   273,   277,   119,
-     196,  -531,  -531,  -531,  -531,   446,   206,   207,  -531,  -531,
-    -531,  -531,  -531,   -32,  -531,  -531,  -531,   292,   212,  -531,
-    -531,  -531,  -531,  -531,  -531,  -531,  -531,  -531,  -531,  -531,
-    -531,   446,   446,  -531,   208,  -133,  -531,  -531,  -531,     9,
-    -531,  -531,  -531,   210,   296,  -531,   214,  -531,   216,  -531,
-     406,   158,   296,   449,   449,   412,   415,   449,   449,   418,
-     421,   449,   426,   449,   449,  2093,   449,   449,   429,   -87,
-     430,   449,  2677,   449,   449,  2677,   -14,  2677,  2677,   158,
-     211,   433,  2677,  2828,   241,  -531,   237,  -531,  -531,  -531,
-     243,  -531,   242,  -531,  -531,  -531,    16,  2591,  -531,   250,
-    -531,  -531,  -531,   250,  -107,  -531,  -531,   -34,  1084,   278,
-     -75,   257,   260,  -531,  -531,  1170,   101,   258,  -531,   449,
-      81,  2093,  -531,  -531,  -531,   263,   284,  -531,   261,  -531,
-     -29,   110,   -27,   267,  -531,  -531,   268,   269,  -531,  -531,
-    -531,  -531,  -531,  -531,  -531,  -531,  -531,   276,  -531,   449,
-     449,   449,   449,   449,   449,   706,  2316,  -129,  -531,  2316,
-     272,   279,  -531,  -127,   281,   282,   285,   287,   288,   294,
-     295,   777,   301,  2591,   443,   303,   -99,  -531,  2316,   304,
-     307,   308,   290,   312,   -80,  2099,   314,  -531,  -531,  -531,
-    -531,  -531,   317,   318,   324,   326,   283,  -531,   327,   329,
-     333,  -531,  2828,   477,  -531,  -531,  -531,   446,    16,     5,
-    -531,  -531,  -531,   309,  2591,   343,  1428,   347,   464,  1256,
-      16,  -531,  2591,  -531,  -531,  -531,  -531,   104,  -531,  2254,
-     348,   374,  -531,  -531,  -531,   296,   449,  -531,  2591,  -531,
-     349,  -531,   353,  -531,   354,  -531,  -531,  -531,  2591,    18,
-      18,    18,    18,    18,    18,  2185,   316,   449,   449,   557,
-     449,   449,   449,   449,   449,   449,   449,   449,   449,   449,
-     449,   449,   449,   449,   449,   449,   449,   563,   449,   449,
-    -531,  -531,  -531,   560,  -531,  -531,  -531,  -531,  -531,  -531,
-    -531,  -531,  -531,  -531,   443,  -531,  1748,  -531,   443,  -531,
-    -531,  -531,   -73,  -531,   449,  -531,  -531,  -531,  -531,   449,
-    -531,  -531,  -531,  -531,  -531,  -531,  -531,  -531,   564,  -531,
-    -531,  -531,  -531,   364,   967,  -531,   399,  -531,  -531,  -531,
-     446,   -24,  -531,  -531,  2591,   375,  -531,  -531,  -531,    16,
-    -531,  -531,  -531,  -531,  2007,  -531,  -531,   443,   376,   296,
-    -531,  -531,   316,  -531,  -531,  1875,  -531,   316,  -531,   377,
-     -70,   218,   218,  -531,   531,   531,   338,   338,  2210,   174,
-     646,  1263,  1350,  2332,   338,   338,    22,    22,    18,    18,
-      18,  -531,  2294,  -531,  -531,  -531,    36,  -531,   379,   443,
-     380,  -531,  2093,  -531,  -531,   381,  -531,    16,  -531,   446,
-    -531,  -531,  1342,  -531,  -531,  -531,   400,  -531,  -120,  -531,
-     386,  -531,   383,   554,  -531,   384,   443,   387,  -531,   449,
-    2093,  -531,   449,  -531,  -531,    36,  -531,  -531,  -531,   391,
-    -531,  -531,  -531,    16,   449,  -531,   443,  -531,  -531,  -531,
-    -531,    36,  -531,  -531,  -531,    18,   392,  2316,  -531,  -531,
-    -531,  -531,  -531,    32,  -531,  -531,   449,   401,  -531,  -531,
-     419,   -67,   -67,  -531,  -531,   397,  -531,  -531
+    -526,    59,  1737,  -526,  -526,  -526,  -526,  -526,  -526,   163,
+    -526,  -138,   169,  -526,   194,  -526,  -526,  -526,  -526,    12,
+      73,  -526,  -526,  -526,  -526,   219,    12,   120,  -526,   -64,
+      12,   300,  -526,  -526,   266,   270,   300,  -526,  -526,  2902,
+    -526,   -48,  -526,  -526,  -526,  -526,  -526,    46,  2579,   -44,
+     -23,  -526,  -526,    39,    19,  -526,    48,    47,    54,    62,
+      76,   -33,  -526,  -526,    82,  -526,    96,    96,    96,    57,
+    2751,    86,    96,    87,    90,  -526,  -526,   223,  -526,  -526,
+      72,  -526,    95,  -526,  -526,   103,  -526,  -526,  -526,  -526,
+    2751,  -526,  -526,    99,   112,  -112,  -109,  -526,  -526,    21,
+    -526,  -526,    56,  -526,  -526,  -526,    93,   156,  -526,  -526,
+    -526,  -526,  -526,  -526,  -526,  -526,  -526,  -526,   157,  -526,
+    -526,  -526,   162,  -526,  -526,  -526,   164,   168,  -526,  -526,
+    -526,  -526,   170,   171,   173,   174,   175,  -526,   177,  -526,
+    -526,   178,  -526,   179,  -526,  -526,   184,   186,  -526,  -526,
+    -526,  -526,  -526,  -526,  -526,  -526,  -526,  -526,  -526,  -526,
+    -526,   187,  -526,  -526,  -526,   193,   196,  -526,  -526,  -526,
+    -526,  -526,  -526,   197,  -526,  -526,   200,  -526,  -526,  -526,
+     201,  -526,  -526,  -526,   202,   203,   215,   216,  -526,  -526,
+    -526,   220,   225,  -526,  -526,   228,   231,   234,   -56,  -526,
+    -526,  -526,  1620,   877,   136,   301,   373,   329,   347,   356,
+     226,   195,  -526,  -526,  -526,  -526,    57,   237,   239,  -526,
+    -526,  -526,  -526,  -526,   -22,  -526,  -526,  -526,   357,   242,
+    -526,  -526,  -526,  -526,  -526,  -526,  -526,  -526,  -526,  -526,
+    -526,  -526,    57,    57,  -526,   238,  -141,  -526,  -526,  -526,
+      96,  -526,  -526,  -526,   241,   365,  -526,   243,  -526,   247,
+    -526,   453,   161,   365,   713,   713,   454,   455,   713,   713,
+     456,   457,   713,   458,   713,   713,  2168,   713,   713,   459,
+     -54,   461,   713,  2751,   713,   713,  2751,   135,  2751,  2751,
+     161,   130,   462,  2751,  2902,   271,  -526,   265,  -526,  -526,
+    -526,   273,  -526,   276,  -526,  -526,  -526,    62,  2665,  -526,
+     277,  -526,  -526,  -526,   277,  -105,  -526,  -526,   -18,  1111,
+     294,   -76,   280,   278,  -526,  -526,  1213,    42,   279,  -526,
+     713,    94,  2168,  -526,  -526,  -526,   284,   309,  -526,   282,
+    -526,   -13,   136,   -11,   288,  -526,  -526,   289,   291,  -526,
+    -526,  -526,  -526,  -526,  -526,  -526,  -526,  -526,   285,  -526,
+     713,   713,   713,   713,   713,   713,   703,  2390,   -91,  -526,
+    2390,   292,   296,  -526,   -70,   298,   302,   303,   304,   305,
+     306,   307,   398,   308,  2665,    88,   310,   -66,  -526,  2390,
+     311,   313,   314,   321,   315,   -63,  2174,   316,  -526,  -526,
+    -526,  -526,  -526,   317,   318,   319,   322,   328,  -526,   323,
+     324,   326,  -526,  2902,   499,  -526,  -526,  -526,    57,    62,
+     -21,  -526,  -526,  -526,   352,  2665,   331,  1503,   334,   419,
+    1315,    62,  -526,  2665,  -526,  -526,  -526,  -526,   450,  -526,
+    1425,   336,   366,  -526,  -526,  -526,   365,   713,  -526,  2665,
+    -526,   338,  -526,   342,  -526,   343,  -526,  -526,  -526,  2665,
+      18,    18,    18,    18,    18,    18,  2260,   248,   713,   713,
+     547,   713,   713,   713,   713,   713,   713,   713,   713,   713,
+     713,   713,   713,   713,   713,   713,   713,   713,   548,   713,
+     713,  -526,  -526,  -526,   543,  -526,  -526,  -526,  -526,  -526,
+    -526,  -526,  -526,  -526,  -526,    88,  -526,  1823,  -526,    88,
+    -526,  -526,  -526,  -137,  -526,   713,  -526,  -526,  -526,  -526,
+     713,  -526,  -526,  -526,  -526,  -526,  -526,  -526,  -526,   549,
+    -526,  -526,  -526,  -526,   346,   994,  -526,   375,  -526,  -526,
+    -526,    57,   166,  -526,  -526,  2665,   351,  -526,  -526,  -526,
+      62,  -526,  -526,  -526,  -526,  2082,  -526,  -526,    88,   354,
+     365,  -526,  -526,   248,  -526,  -526,  1950,  -526,   248,  -526,
+     350,  -135,    25,    25,  -526,   603,   603,   165,   165,   817,
+    2285,  2369,  2408,  2440,   740,   165,   165,    64,    64,    18,
+      18,    18,  -526,  2329,  -526,  -526,  -526,    70,  -526,   353,
+      88,   355,  -526,  2168,  -526,  -526,   358,  -526,    62,  -526,
+      57,  -526,  -526,  1417,  -526,  -526,  -526,   379,  -526,   -94,
+    -526,   364,  -526,   361,   100,  -526,   369,    88,   370,  -526,
+     713,  2168,  -526,   713,  -526,  -526,    70,  -526,  -526,  -526,
+     371,  -526,  -526,  -526,    62,   713,  -526,    88,  -526,  -526,
+    -526,  -526,    70,  -526,  -526,  -526,    18,   384,  2390,  -526,
+    -526,  -526,  -526,  -526,    -3,  -526,  -526,   713,   411,  -526,
+    -526,   412,   -86,   -86,  -526,  -526,   390,  -526,  -526
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -531,  -531,   382,   -33,  -301,  -293,    -1,  -531,  -531,  -531,
-     176,  -531,  -531,  -531,    23,  -482,  -531,  -531,  -253,  -228,
-    -199,    -2,  -531,  -531,  -267,   320,   -62,  -531,  -531,  -531,
-    -531,   160,     7,   323,    98,   213,  -531,  -261,  -259,  -531,
-    -531,  -531,  -531,   -58,  -219,  -531,   192,  -531,    38,   -47,
-    -531,   127,   105,    17,  -531,    26,    27,  -531,  -531,   569,
-    -531,  -531,  -531,  -531,  -531,     8,  -531,    28,    12,  -531,
-    -531,    29,  -531,  -531,  -308,  -467,   -45,   -25,    -8,  -207,
-    -531,  -531,  -531,  -506,  -531,  -530,  -531,  -128,  -531,  -531,
-    -531,   -21,  -531,   402,  -531,   344,     1,   -53,  -531,     3,
-    -531
+    -526,  -526,   359,   -28,  -305,  -300,    -1,  -526,  -526,  -526,
+     176,  -526,  -526,  -526,    23,  -468,  -526,  -526,  -257,  -232,
+    -189,    -2,  -526,  -526,  -267,   312,   -65,  -526,  -526,  -526,
+    -526,   152,     7,   320,    92,   210,  -526,  -261,  -256,  -526,
+    -526,  -526,  -526,   -60,  -187,  -526,   181,  -526,    22,   -67,
+    -526,   131,    40,    16,  -526,    24,    26,  -526,  -526,   555,
+    -526,  -526,  -526,  -526,  -526,   -12,  -526,    28,     4,  -526,
+    -526,    29,  -526,  -526,  -287,  -477,   -38,    17,   -14,  -220,
+    -526,  -526,  -526,  -500,  -526,  -525,  -526,  -467,  -526,  -526,
+    -526,   -32,  -526,   393,  -526,   341,     1,   -46,  -526,     3,
+    -526
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
    positive, shift that token.  If negative, reduce the rule which
-   number is the opposite.  If zero, do what YYDEFACT says.
-   If YYTABLE_NINF, syntax error.  */
-#define YYTABLE_NINF -252
+   number is the opposite.  If YYTABLE_NINF, syntax error.  */
+#define YYTABLE_NINF -253
 static const yytype_int16 yytable[] =
 {
-      47,    39,   215,    70,   307,    73,   242,   375,   374,    48,
-     378,   202,   380,   416,    62,   385,   249,   332,   433,    52,
-     392,   243,   382,   429,   598,    45,   411,   616,    54,    55,
-      61,    64,   423,   469,   327,   328,   256,   469,   596,   234,
-     235,   232,   233,  -251,   258,   170,   251,  -251,   216,   174,
-     217,   489,     9,   493,   210,   213,   622,   231,   231,   231,
-     646,   628,    11,   231,   211,  -251,    24,   -32,   330,   666,
-     436,    93,    95,   331,   236,     3,   188,    15,   490,     9,
-     494,   514,   667,   625,   348,   647,   349,   350,   351,   352,
-     353,   354,  -251,   259,   -36,   319,  -251,   623,    74,    75,
-     514,   425,    20,    24,   234,   235,   237,   348,   515,   349,
-     350,   351,   352,   353,   354,    76,   616,   650,   419,   434,
-     639,   424,   450,   454,    84,   537,    38,   521,   330,   293,
-     635,   330,    82,   602,    38,    91,   630,   550,   673,   236,
-      96,   448,   424,   424,     9,   532,    27,  -251,   656,   -34,
-     355,   294,    87,   242,    77,    78,    90,   651,    32,    88,
-     238,   397,   398,   399,   400,   401,   344,    38,   243,   345,
-     418,   237,    38,   355,    38,   447,    89,   451,   253,   242,
-     242,  -244,   200,  -244,   203,   556,   239,   467,   468,   469,
-     470,   471,   472,   473,   243,   243,   -31,   356,   218,    47,
-      47,   219,    70,    70,    73,    73,   260,   338,    48,    48,
-     535,   222,   484,   485,   486,   347,   406,   407,   487,   488,
-     356,   224,   487,   488,   333,   238,   505,   357,   593,   393,
-     384,   321,   396,   469,   403,   404,   668,   330,   566,   410,
-     358,   231,   506,    79,    80,    93,    95,   612,    85,    86,
-     357,   239,    92,    80,    94,    80,   613,   220,   605,   309,
-      80,   221,   417,   358,   242,   223,   359,   311,   312,   360,
-     361,   437,   226,   383,   363,   364,   313,    80,   227,   243,
-     314,    80,   229,   438,   603,   -33,   384,   365,   433,   359,
-     252,   240,   360,   361,   362,   322,   323,   363,   364,   234,
-     235,   615,   -35,   254,   255,   257,   551,   241,   310,   261,
-     365,    38,   262,   263,   641,   433,    47,    39,   264,    70,
-     466,    73,   315,   432,   431,    48,    70,   433,    73,   383,
-      62,   265,    48,   610,   566,    52,   266,   267,   504,   566,
-     452,    45,   631,   433,    54,    55,    61,    64,   268,   269,
-     660,   467,   468,   469,   236,   242,   270,   477,   478,   479,
-     480,   481,   482,   483,   484,   485,   486,   271,   272,   273,
-     243,   274,   275,   276,   487,   488,   595,   277,   278,   540,
-     601,   279,   534,   280,   281,   661,   237,   215,   282,   283,
-     284,   285,   286,   287,   288,   566,   289,   290,   338,   291,
-     292,   -37,   642,   557,   567,   670,   482,   483,   484,   485,
-     486,   -38,   -39,   562,   343,   324,   329,   334,   487,   488,
-     371,   339,   341,   372,   544,   541,   376,   432,   431,   377,
-      70,   538,    73,   216,   379,   217,    48,   389,   391,   210,
-     238,   409,   412,   413,   599,   415,   234,   235,   414,   234,
-     235,   558,   348,  -251,   349,   350,   351,   352,   353,   354,
-     422,   384,   427,   428,   445,   435,   239,   444,   634,   446,
-     519,   637,   424,   424,   455,   456,   457,   369,   242,   491,
-     369,   236,   458,   528,   236,   533,   492,   381,   495,   496,
-     388,   539,   497,   243,   498,   499,   388,   395,   653,   215,
-     567,   500,   501,   626,   383,   567,   564,   658,   503,   384,
-     513,   516,   621,   237,   517,   518,   237,   330,   355,   520,
-     384,   523,   565,   664,   524,   525,   482,   483,   484,   485,
-     486,   526,    47,   527,   529,    70,   530,    73,   487,   488,
-     531,    48,   369,   439,   467,   468,   469,   242,   542,   472,
-     473,   547,   383,    19,   554,   553,   559,   384,   560,   561,
-     573,   567,   243,   383,     7,   356,   591,   238,   594,   606,
-     238,   607,   459,   460,   461,   462,   463,   464,   465,   609,
-     611,   619,   644,   671,   629,   384,   636,   638,   640,   648,
-     649,   652,   236,   239,   654,   357,   239,     9,   659,   665,
-     383,   672,   677,   318,   548,   555,   394,    18,   358,   405,
-     432,   431,   604,    70,   676,    73,   212,   316,   546,    48,
-      21,    22,    23,   390,   237,   662,     0,     0,   383,    25,
-       0,     0,     0,   505,   359,     0,   240,   360,   361,   362,
-       0,     0,   363,   364,   330,     0,     0,     0,     0,   506,
-     462,     0,   241,     0,     0,   365,     0,     0,     0,   467,
-     468,   469,   470,   471,   472,   473,   474,   475,    29,     0,
-       0,     0,    31,     0,     0,     0,     0,     0,   238,     0,
-     571,   572,     0,   574,   575,   576,   577,   578,   579,   580,
-     581,   582,   583,   584,   585,   586,   587,   588,   589,   590,
-       0,   592,     0,     0,   239,     0,     0,     0,     0,   348,
-       4,   349,   350,   351,   352,   353,   354,   480,   481,   482,
-     483,   484,   485,   486,     0,     0,     0,   388,     0,     0,
-       0,   487,   488,     0,     0,     0,     0,     5,     0,     6,
-       0,     0,     0,     0,   564,     7,     0,     0,     0,     9,
-       0,     0,     0,     0,     0,   330,     0,     0,     0,     0,
-     565,     0,     0,     0,     0,    12,     0,     0,     0,     0,
-       0,   204,    14,     0,    15,   355,     0,     0,    16,     0,
-       0,    17,     0,     0,     0,     0,     0,     0,    18,     0,
-     467,   468,   469,   470,   471,   472,   473,   474,   475,    20,
-       0,    21,    22,    23,     0,     0,     0,     0,     0,     0,
-      25,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   356,     0,     0,     0,     0,   476,   632,   477,
-     478,   479,   480,   481,   482,   483,   484,   485,   486,     0,
-       0,     0,   655,    27,     0,   657,   487,   488,    28,    29,
-      30,     0,   357,    31,     4,    32,     0,   369,     0,   207,
-       0,     0,     0,     0,     0,   358,     0,     0,   208,     0,
-      35,     0,     0,     0,     0,     0,     0,     0,    36,    37,
-       0,     5,     0,     6,     0,     0,     0,     0,     0,     7,
-       8,   359,     0,     9,   360,   361,   362,     0,    10,   363,
-     364,     0,     0,     0,     0,     0,     0,    11,     0,    12,
-       0,     0,   365,     0,     0,    13,    14,     0,    15,     0,
-       0,     0,    16,     0,     0,    17,     0,     0,     0,     0,
-       0,     0,    18,     0,     0,     0,     0,     0,     0,    19,
-     296,     0,     0,    20,     0,    21,    22,    23,    24,     0,
-       0,     0,     0,     0,    25,     0,     0,     0,   476,    26,
-     477,   478,   479,   480,   481,   482,   483,   484,   485,   486,
-       0,     4,     0,     0,     0,     0,     0,   487,   488,     0,
-       0,     0,     0,     0,   502,     0,     0,    27,     0,     0,
-       0,     0,    28,    29,    30,     0,     0,    31,     5,    32,
-       6,     0,     0,    33,     0,     0,     7,     8,     0,     0,
-       9,     0,    34,     0,    35,    10,     0,     0,     0,     0,
-       0,     0,    36,    37,    11,     0,    12,     0,     0,     0,
-       0,     0,    13,    14,     0,    15,     0,     0,     0,    16,
-       0,     0,    17,     0,     0,     0,     0,     0,     0,    18,
-       0,    38,     0,     0,   306,     0,    19,   296,     0,     0,
-      20,     0,    21,    22,    23,    24,     0,     0,     0,     0,
-       0,    25,     0,     0,     0,     0,    26,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     4,     0,
+      48,    40,   244,    71,   243,    74,    63,   417,   376,    49,
+     216,   379,   375,   381,   333,   308,   386,   203,    53,   383,
+     430,   393,   328,   329,   250,    46,    55,   412,    56,   597,
+      62,    65,   424,   617,   470,   667,   214,    12,   596,   599,
+     434,   470,   602,  -252,   257,   235,   259,   236,   668,   217,
+    -252,   218,   232,   232,   232,   211,    94,    96,   232,     3,
+     235,   331,   236,   623,   212,   331,   332,   331,   629,    77,
+     603,    92,   631,   235,   437,   236,    97,    25,    25,   171,
+     470,   237,    85,   175,   233,   234,    10,   647,   624,   252,
+     490,   235,  -252,   236,   -37,   260,   237,   349,   626,  -252,
+     350,   351,   352,   353,   354,   355,   320,   435,    83,   237,
+     189,   494,   648,   238,    10,   515,    39,   491,   515,   538,
+     674,   636,   617,    89,   651,   294,    39,   237,   238,   420,
+     635,   551,   425,   638,   426,   640,   407,   408,   495,   237,
+      10,   238,   516,    90,    10,   522,   533,   295,   652,   244,
+     228,   243,   449,   425,   425,   451,   455,    88,   201,   238,
+     654,    91,   -32,   657,   356,    16,    75,   239,    76,   659,
+     345,   238,    78,   346,    79,   244,   244,   243,   243,   468,
+     469,   470,   239,   219,    39,   665,   557,   419,   339,    39,
+      21,    39,   448,   240,   452,   239,   348,    80,   536,    81,
+      48,    48,   669,    71,    71,    74,    74,   204,   240,    49,
+      49,   357,   322,   239,   483,   484,   485,   486,   487,   488,
+     489,   240,    86,   221,    87,   239,   488,   489,   261,   594,
+      94,    96,   254,   241,    28,   567,   232,   394,   385,   240,
+     397,   358,   404,   405,   613,   220,    33,   411,   241,   242,
+     614,   240,   222,   223,   359,   485,   486,   487,   224,   606,
+     244,   506,   243,   262,   242,   488,   489,   334,   225,    93,
+     418,    81,   331,    95,   384,    81,  -252,   507,   -33,   506,
+     360,   604,   227,   361,   362,   438,   230,   237,   364,   365,
+     331,   565,   -34,   253,   385,   507,   -36,   439,   616,   255,
+     263,   366,   331,  -252,   310,   -35,    81,   566,   642,   256,
+     434,   398,   399,   400,   401,   402,   258,    48,    40,   238,
+      71,   611,    74,    63,   433,   432,    49,    71,   467,    74,
+     384,   567,   312,    49,   313,    53,   567,   434,    39,   632,
+       8,   453,    46,    55,   661,    56,   505,    62,    65,   434,
+     314,   244,    81,   243,   483,   484,   485,   486,   487,   315,
+     323,    81,   324,   264,   265,   434,   488,   489,   235,   266,
+     236,   267,  -245,   239,  -245,   268,   311,   269,   270,   339,
+     271,   272,   273,    19,   274,   275,   276,   541,   535,   662,
+     643,   277,   567,   278,   279,   216,    22,    23,    24,   240,
+     280,   -38,   568,   281,   282,    26,   671,   283,   284,   285,
+     286,   558,   468,   469,   470,   471,   472,   473,   474,   475,
+     476,   563,   287,   288,   539,   545,   542,   289,   433,   432,
+     316,    71,   290,    74,   217,   291,   218,    49,   292,   565,
+     211,   293,   600,   -39,    30,   -40,   325,   330,    32,   335,
+     331,   340,   559,   349,   342,   566,   350,   351,   352,   353,
+     354,   355,   344,   372,   373,   377,   378,   380,   390,   385,
+     392,   410,   414,   413,   244,   370,   243,   423,   370,   415,
+     416,  -252,   429,   425,   425,   382,   428,   436,   389,   445,
+     446,   447,   459,   622,   389,   396,   456,   457,   568,   458,
+     492,   627,   520,   568,   493,   384,   496,   216,   534,    20,
+     497,   498,   499,   500,   501,   502,   504,   385,   514,   517,
+     356,   518,   519,   521,   524,   525,   526,   527,   385,   529,
+     528,   530,   531,    48,   532,   540,    71,   543,    74,   548,
+     370,   440,    49,   244,   554,   243,   560,   555,   561,   562,
+     574,   592,   595,   384,   608,   607,   610,   612,   630,   568,
+     620,   637,   645,   639,   384,   385,   641,   357,   649,   650,
+     460,   461,   462,   463,   464,   465,   466,   653,   655,   660,
+     477,   319,   478,   479,   480,   481,   482,   483,   484,   485,
+     486,   487,   666,   385,   672,   673,   678,   358,   556,   488,
+     489,   384,   406,   213,   395,   549,   503,   605,   547,   317,
+     359,   433,   432,   677,    71,   663,    74,   468,   469,   470,
+      49,   391,   473,   474,     0,     0,     0,     0,     0,   384,
+       0,     0,     0,     0,     0,     0,   360,     0,     0,   361,
+     362,   363,     0,     0,   364,   365,     0,     0,   463,     0,
+       0,     0,     0,   552,     0,     0,     0,   366,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    27,     0,     0,     0,     0,    28,
-      29,    30,     0,     0,    31,     5,    32,     6,     0,     0,
-      33,     0,     0,     7,     8,     0,     0,     9,     0,    34,
-       0,    35,    10,     0,     0,     0,     0,     0,     0,    36,
-      37,    11,     0,    12,     0,     0,     0,     0,     0,    13,
-      14,     0,    15,     0,     0,     0,    16,     0,     0,    17,
-       0,     0,     0,     0,     0,     0,    18,     0,    38,     0,
-       0,   608,     0,    19,     4,     0,     0,    20,     0,    21,
-      22,    23,    24,     0,     0,     0,     0,     0,    25,     0,
-       0,     0,     0,    26,     0,     0,     0,     0,     0,     0,
-       0,     5,     0,     6,     0,     0,     0,     0,     0,     7,
-       0,     0,     0,     9,     0,     0,     0,     0,    10,     0,
-       0,    27,     0,     0,     0,     0,    28,    29,    30,    12,
-       0,    31,     0,    32,     0,    13,    14,    33,    15,     0,
-       0,     0,    16,     0,     0,    17,    34,     0,    35,     0,
-       0,     0,    18,     0,     0,     0,    36,    37,     0,    19,
-       4,     0,     0,    20,     0,    21,    22,    23,     0,     0,
-       0,     0,     0,     0,    25,     0,   467,   468,   469,   470,
-     471,   472,   473,     0,     0,    38,     0,     5,   421,     6,
-       0,     0,     0,     0,     0,     7,     0,     0,     0,     9,
-       0,     0,     0,     0,    10,     0,     0,    27,     0,     0,
-       0,     0,    28,    29,    30,    12,     0,    31,     0,    32,
-       0,    13,    14,    33,    15,     0,     0,     0,    16,     0,
-       0,    17,    34,     0,    35,     0,     0,     0,    18,     0,
-       0,     0,    36,    37,     0,    19,     4,     0,     0,    20,
-       0,    21,    22,    23,     0,     0,     0,     0,     0,     0,
-      25,     0,     0,   467,   468,   469,   470,   471,   472,   473,
-       0,    38,     0,     5,   430,     6,     0,     0,     0,     0,
-       0,     7,     0,     0,     0,     9,     0,     0,     0,     0,
-      10,     0,     0,    27,     0,     0,     0,     0,    28,    29,
-      30,    12,     0,    31,     0,    32,     0,    13,    14,    33,
-      15,     0,     0,     0,    16,     0,     0,    17,    34,     0,
-      35,     0,     0,     0,    18,     0,     0,     0,    36,    37,
-       0,    19,     4,     0,     0,    20,     0,    21,    22,    23,
-       0,     0,     0,     0,     0,     0,    25,   478,   479,   480,
-     481,   482,   483,   484,   485,   486,     0,    38,     0,     5,
-     549,     6,     0,   487,   488,     0,     0,     7,     0,     0,
-       0,     9,     0,     0,     0,     0,     0,     0,     0,    27,
-       0,     0,     0,     0,    28,    29,    30,    12,     0,    31,
-       0,    32,     0,   204,    14,    33,    15,     0,     0,     0,
-      16,     0,     0,    17,    34,     0,    35,     0,     0,     0,
-      18,     0,     0,     0,    36,    37,     0,     0,     0,     0,
-       0,    20,     0,    21,    22,    23,     0,     0,     0,     0,
-       0,     0,    25,     0,     0,   479,   480,   481,   482,   483,
-     484,   485,   486,    38,     0,     0,   643,     0,     0,     4,
-     487,   488,     0,     0,     0,     0,     0,   295,     0,     0,
-       0,     0,     0,     0,     0,    27,     0,     0,     0,     0,
-      28,    29,    30,     0,     0,    31,     5,    32,     6,     0,
-       0,   207,     0,     0,     7,     8,     0,     0,     9,     0,
-     208,     0,    35,    10,     0,     0,     0,     0,     0,     0,
-      36,    37,    11,     0,    12,     0,     0,     0,     0,     0,
-      13,    14,     0,    15,     0,     0,     0,    16,     0,     0,
-      17,     0,     0,     0,     0,     0,     0,    18,     0,    38,
-       0,     0,   543,     0,    19,   296,     0,     0,    20,     0,
-      21,    22,    23,    24,     0,     0,     0,     0,     0,    25,
-       0,     0,     0,     0,    26,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     4,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   572,   573,
+       0,   575,   576,   577,   578,   579,   580,   581,   582,   583,
+     584,   585,   586,   587,   588,   589,   590,   591,     0,   593,
+       0,     0,     0,     0,     0,     0,   349,     0,     5,   350,
+     351,   352,   353,   354,   355,     0,   349,     0,     0,   350,
+     351,   352,   353,   354,   355,   389,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     6,     0,     7,     0,     0,
+       0,     0,     0,     8,     0,     0,     0,    10,     0,     0,
+       0,     0,     0,     0,   468,   469,   470,   471,   472,   473,
+     474,     0,     0,    13,     0,     0,     0,     0,     0,   205,
+      15,     0,    16,   356,     0,     0,    17,     0,     0,    18,
+       0,     0,     0,   356,     0,     0,    19,     0,     0,     0,
+     481,   482,   483,   484,   485,   486,   487,    21,     0,    22,
+      23,    24,     0,     0,   488,   489,     0,     0,    26,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    27,     0,     0,     0,     0,    28,    29,    30,
-       0,     0,    31,     5,    32,     6,     0,     0,    33,     0,
-       0,     7,     8,     0,     0,     9,     0,    34,     0,    35,
-      10,     0,     0,     0,     0,     0,     0,    36,    37,    11,
-       0,    12,     0,     0,     0,     0,     0,    13,    14,     0,
-      15,     0,     0,     0,    16,     0,     0,    17,     0,     0,
-       0,     0,     0,     0,    18,     0,    38,     0,     0,     0,
-       0,    19,     4,     0,     0,    20,     0,    21,    22,    23,
-      24,     0,     0,     0,     0,     0,    25,     0,     0,     0,
-       0,    26,     0,     0,     0,     0,     0,     0,     0,     5,
-       0,     6,     0,     0,     0,     0,   236,     7,     0,     0,
-       0,     9,     0,     0,     0,     0,     0,     0,     0,    27,
-       0,     0,     0,     0,    28,    29,    30,    12,     0,    31,
-       0,    32,     0,   204,    14,    33,    15,     0,   237,     0,
-      16,     0,   -58,    17,    34,     0,    35,     0,     0,     0,
-      18,     0,     0,     0,    36,    37,     0,     0,     0,     0,
-       0,    20,     0,    21,    22,    23,     0,     0,     0,     0,
-       0,     0,    25,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    38,     0,     0,     0,     0,     0,     0,
-       0,     0,   238,     0,     0,     0,     0,     0,     0,     4,
-       0,     0,     0,     0,     0,    27,     0,     0,     0,     0,
-      28,    29,    30,     0,     0,    31,     0,    32,   239,     0,
-       0,   207,     0,     0,     0,     0,     5,     0,     6,     0,
-     208,     0,    35,   236,     7,     0,     0,     0,     9,     0,
-      36,    37,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    12,     0,     0,     0,   597,     0,
-     204,    14,     0,    15,     0,   237,     0,    16,     0,    38,
-      17,     0,     0,     0,     0,     0,     0,    18,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    20,     0,
-      21,    22,    23,     0,     0,     0,     0,     0,     0,    25,
+     357,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     357,   468,   469,   470,   471,   472,   473,   474,     0,   476,
+     656,    28,     0,   658,     0,     0,    29,    30,    31,     0,
+     358,    32,     0,    33,     0,   370,     0,   208,     0,     0,
+     358,     0,     0,   359,     0,     0,   209,     0,    36,     0,
+       0,     0,     0,   359,     0,     0,    37,    38,     0,     0,
+       0,     4,     5,     0,     0,     0,     0,     0,     0,   360,
+       0,     0,   361,   362,   363,     0,     0,   364,   365,   360,
+       0,     0,   361,   362,   363,     0,     0,   364,   365,     6,
+     366,     7,     0,     0,     0,     0,     0,     8,     9,     0,
+     366,    10,     0,     0,     0,     0,    11,   481,   482,   483,
+     484,   485,   486,   487,     0,    12,     0,    13,     0,     0,
+       0,   488,   489,    14,    15,     0,    16,     0,     0,     0,
+      17,     0,     0,    18,     0,     0,     0,     0,     0,     0,
+      19,     0,     0,     0,     0,     0,     0,    20,   297,     0,
+       0,    21,     0,    22,    23,    24,    25,     0,     0,     0,
+       0,     0,    26,     0,     0,     0,     0,    27,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     4,     5,
+       0,   478,   479,   480,   481,   482,   483,   484,   485,   486,
+     487,     0,     0,     0,     0,    28,     0,     0,   488,   489,
+      29,    30,    31,     0,     0,    32,     6,    33,     7,     0,
+       0,    34,     0,     0,     8,     9,     0,     0,    10,     0,
+      35,     0,    36,    11,     0,     0,     0,     0,     0,     0,
+      37,    38,    12,     0,    13,     0,     0,     0,     0,     0,
+      14,    15,     0,    16,     0,     0,     0,    17,     0,     0,
+      18,     0,     0,     0,     0,     0,     0,    19,     0,    39,
+       0,     0,   307,     0,    20,   297,     0,     0,    21,     0,
+      22,    23,    24,    25,     0,     0,     0,     0,     0,    26,
+       0,     0,     0,     0,    27,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     4,     5,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   238,
+       0,     0,    28,     0,     0,     0,     0,    29,    30,    31,
+       0,     0,    32,     6,    33,     7,     0,     0,    34,     0,
+       0,     8,     9,     0,     0,    10,     0,    35,     0,    36,
+      11,     0,     0,     0,     0,     0,     0,    37,    38,    12,
+       0,    13,     0,     0,     0,     0,     0,    14,    15,     0,
+      16,     0,     0,     0,    17,     0,     0,    18,     0,     0,
+       0,     0,     0,     0,    19,     0,    39,     0,     0,   609,
+       0,    20,     0,     0,     0,    21,     0,    22,    23,    24,
+      25,     0,     0,     0,     0,     0,    26,     4,     5,     0,
+       0,    27,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     4,    27,     0,     0,     0,     0,    28,    29,    30,
-       0,     0,    31,     0,    32,   239,     0,     0,   207,   614,
-       0,     0,     0,     0,     0,     0,     0,   208,     5,    35,
-       6,     0,     0,     0,     0,     0,     7,    36,    37,     0,
-       9,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   624,    12,     0,     0,     0,
-       0,     0,   204,    14,     0,    15,    38,     0,     0,    16,
-       0,     0,    17,     0,     0,     0,     0,     0,     0,    18,
-       0,     0,     0,     0,     0,     0,     0,     4,     0,     0,
-      20,     0,    21,    22,    23,     0,     0,     0,     0,     0,
-       0,    25,   467,   468,   469,   470,   471,   472,   473,   474,
-     475,     0,     0,     0,     5,     0,     6,     0,     0,     0,
-       0,     0,     7,     0,     0,     0,     9,     0,     0,     0,
-       0,     0,     0,     0,    27,     0,     0,     0,     0,    28,
-      29,    30,    12,     0,    31,     0,    32,     0,   204,    14,
-     207,    15,     0,     0,     0,    16,     0,     0,    17,   208,
-       0,    35,     0,     0,     0,    18,     0,     0,     0,    36,
-      37,     0,     0,     0,     0,     0,    20,     0,    21,    22,
-      23,     0,     0,     0,     0,     0,     0,    25,   467,   468,
-     469,   470,   471,   472,   473,   474,   475,     0,    38,     0,
+       0,     0,     0,     0,     0,     6,     0,     7,     0,    28,
+       0,     0,     0,     8,    29,    30,    31,    10,     0,    32,
+       0,    33,    11,     0,     0,    34,     0,     0,     0,     0,
+       0,     0,     0,    13,    35,     0,    36,     0,     0,    14,
+      15,     0,    16,     0,    37,    38,    17,     0,     0,    18,
+       0,     0,     0,     0,     0,     0,    19,     0,     0,     0,
+       0,     0,     0,    20,     0,     0,     0,    21,     0,    22,
+      23,    24,     0,    39,     0,     0,   422,     0,    26,     4,
+       5,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   467,   468,   469,   470,   471,   472,   473,
-      27,   475,     0,     0,     0,    28,    29,    30,     0,     0,
-      31,     0,    32,     0,     0,     0,   207,     0,     0,     0,
-       0,     0,     0,     0,     0,   208,     0,    35,     0,     0,
-       0,     0,     0,     0,     0,    36,    37,   467,   468,   469,
-     470,   471,   472,   473,   474,   475,     0,     0,     0,     0,
-     476,     0,   477,   478,   479,   480,   481,   482,   483,   484,
-     485,   486,     0,     0,    38,     0,     0,     0,     0,   487,
-     488,     0,     0,     0,     0,     0,   522,   467,   468,   469,
-     470,   471,   472,   473,   474,   475,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   467,
-     468,   469,   470,   471,   472,   473,   474,   475,     0,     0,
-       0,     0,     0,     0,     0,   467,   468,   469,   470,   471,
-     472,   473,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   476,     0,   477,   478,
-     479,   480,   481,   482,   483,   484,   485,   486,     0,     0,
-       0,     0,     0,     0,     0,   487,   488,     0,     0,     0,
-       0,     0,   563,   477,   478,   479,   480,   481,   482,   483,
-     484,   485,   486,     0,     0,     0,     0,     0,     0,     0,
-     487,   488,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     6,     0,     7,
+       0,    28,     0,     0,     0,     8,    29,    30,    31,    10,
+       0,    32,     0,    33,    11,     0,     0,    34,     0,     0,
+       0,     0,     0,     0,     0,    13,    35,     0,    36,     0,
+       0,    14,    15,     0,    16,     0,    37,    38,    17,     0,
+       0,    18,     0,     0,     0,     0,     0,     0,    19,     0,
+       0,     0,     0,     0,     0,    20,     0,     0,     0,    21,
+       0,    22,    23,    24,     0,    39,     0,     0,   431,     0,
+      26,     4,     5,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   468,
+     469,   470,   471,   472,   473,   474,   475,   476,     0,     6,
+       0,     7,     0,    28,     0,     0,     0,     8,    29,    30,
+      31,    10,     0,    32,     0,    33,    11,     0,     0,    34,
+       0,     0,     0,     0,     0,     0,     0,    13,    35,     0,
+      36,     0,     0,    14,    15,     0,    16,     0,    37,    38,
+      17,     0,     0,    18,     0,     0,     0,     0,     0,     0,
+      19,     0,     0,     0,     0,     0,     0,    20,     5,     0,
+       0,    21,     0,    22,    23,    24,     0,    39,     0,     0,
+     550,     0,    26,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     6,     0,     7,     0,     0,
+       0,     0,     0,     8,     0,     0,     0,    10,     0,     0,
+       0,     0,     0,     0,     0,    28,     0,     0,     0,     0,
+      29,    30,    31,    13,     0,    32,     0,    33,     0,   205,
+      15,    34,    16,     0,     0,     0,    17,     0,     0,    18,
+      35,     0,    36,     0,     0,     0,    19,     0,     0,     0,
+      37,    38,     0,     0,     0,     0,     0,    21,     0,    22,
+      23,    24,     0,     0,     0,     0,     0,   477,    26,   478,
+     479,   480,   481,   482,   483,   484,   485,   486,   487,    39,
+       0,     0,   644,     0,     4,     5,   488,   489,   553,     0,
+       0,     0,     0,   296,     0,     0,     0,     0,     0,     0,
+       0,    28,     0,     0,     0,     0,    29,    30,    31,     0,
+       0,    32,     6,    33,     7,     0,     0,   208,     0,     0,
+       8,     9,     0,     0,    10,     0,   209,     0,    36,    11,
+       0,     0,     0,     0,     0,     0,    37,    38,    12,     0,
+      13,     0,     0,     0,     0,     0,    14,    15,     0,    16,
+       0,     0,     0,    17,     0,     0,    18,     0,     0,     0,
+       0,     0,     0,    19,     0,    39,     0,     0,   544,     0,
+      20,   297,     0,     0,    21,     0,    22,    23,    24,    25,
+       0,     0,     0,     0,     0,    26,     0,     0,     0,     0,
+      27,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     4,     5,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    28,     0,
+       0,     0,     0,    29,    30,    31,     0,     0,    32,     6,
+      33,     7,     0,     0,    34,     0,     0,     8,     9,     0,
+       0,    10,     0,    35,     0,    36,    11,     0,     0,     0,
+       0,     0,     0,    37,    38,    12,     0,    13,     0,     0,
+       0,     0,     0,    14,    15,     0,    16,     0,     0,     0,
+      17,     0,     0,    18,     0,     0,     0,     0,     0,     0,
+      19,     0,    39,     0,     0,     0,     0,    20,     5,     0,
+       0,    21,     0,    22,    23,    24,    25,     0,     0,     0,
+       0,     0,    26,     0,     0,     0,     0,    27,     0,     0,
+       0,     0,     0,     0,     0,     6,     0,     7,     0,     0,
+       0,     0,   237,     8,     0,     0,     0,    10,     0,     0,
+       0,     0,     0,     0,     0,    28,     0,     0,     0,     0,
+      29,    30,    31,    13,     0,    32,     0,    33,     0,   205,
+      15,    34,    16,     0,   238,     0,    17,     0,   -59,    18,
+      35,     0,    36,     0,     0,     0,    19,     0,     0,     0,
+      37,    38,     0,     0,     0,     0,     0,    21,     0,    22,
+      23,    24,     0,     0,     0,     0,     0,     0,    26,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    39,
+       0,     0,     0,     0,     0,     0,     0,     0,   239,     0,
+       0,     0,     0,     0,     0,     5,     0,     0,     0,     0,
+       0,    28,     0,     0,     0,     0,    29,    30,    31,     0,
+       0,    32,     0,    33,   240,     0,     0,   208,     0,     0,
+       0,     0,     6,     0,     7,     0,   209,     0,    36,   237,
+       8,     0,     0,     0,    10,     0,    37,    38,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   476,     0,   477,   478,   479,
-     480,   481,   482,   483,   484,   485,   486,     0,     0,     0,
-       0,     0,     0,     0,   487,   488,   552,     0,     0,     0,
+      13,     0,     0,     0,   598,     0,   205,    15,     0,    16,
+       0,   238,     0,    17,     0,    39,    18,     0,     0,     0,
+       0,     0,     0,    19,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    21,     0,    22,    23,    24,     0,
+       0,     0,     0,     0,     0,    26,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   476,     0,   477,   478,   479,
-     480,   481,   482,   483,   484,   485,   486,     0,     0,     0,
-       0,     0,     0,     0,   487,   488,   633,   476,     0,   477,
-     478,   479,   480,   481,   482,   483,   484,   485,   486,     4,
-       0,     0,     0,     0,     0,     0,   487,   488,   480,   481,
-     482,   483,   484,   485,   486,     0,     0,     0,     0,     0,
-       0,     0,   487,   488,     0,     0,     5,     0,     6,     0,
-       0,     0,     0,     0,     7,     8,     0,     0,     9,     0,
+       0,     0,     0,     0,     0,   239,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     5,    28,     0,
+       0,     0,     0,    29,    30,    31,     0,     0,    32,     0,
+      33,   240,     0,     0,   208,   615,     0,     0,     0,     0,
+       0,     0,     0,   209,     6,    36,     7,     0,     0,     0,
+       0,     0,     8,    37,    38,     0,    10,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    11,     0,    12,     0,     0,     0,     0,     0,
-     204,    14,     0,    15,     0,     0,     0,    16,     0,     0,
-      17,     0,     0,     0,     0,     0,     0,    18,     0,     0,
-       0,     0,     0,     0,     0,     4,     0,     0,    20,     0,
-      21,    22,    23,    24,     0,     0,   205,     0,     0,    25,
-       0,     0,     0,   206,     0,     0,     0,     0,     0,     0,
-       0,     0,     5,     0,     6,     0,     0,     0,     0,     0,
-       7,     0,     0,     0,     9,     0,     0,     0,     0,     0,
-       0,     0,    27,     0,     0,     0,     0,    28,    29,    30,
-      12,     0,    31,     0,    32,     0,   204,    14,   207,    15,
-       0,     0,     0,    16,     0,     0,    17,   208,     0,    35,
-       0,     0,     0,    18,     0,     0,     0,    36,    37,     0,
-       0,     4,     0,     0,    20,     0,    21,    22,    23,     0,
-       0,     0,     0,     0,     0,    25,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     5,     0,
-       6,     0,     0,     0,     0,     0,     7,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    27,     0,
-       0,     0,     0,    28,    29,    30,    12,     0,    31,     0,
-      32,     0,   204,    14,   207,     0,     0,     0,     0,    16,
-       0,     0,    17,   208,     0,    35,     0,     0,     0,    18,
-       0,     0,     0,    36,    37,     0,     0,     0,     0,     0,
-       0,     0,    21,    22,    23,     0,     0,     0,     0,     0,
-       0,    25,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   625,    13,     0,     0,     0,     0,     0,   205,    15,
+       0,    16,    39,     0,     0,    17,     0,     0,    18,     0,
+       0,     0,     0,     0,     0,    19,     0,     0,     0,     0,
+       0,     0,     0,     5,     0,     0,    21,     0,    22,    23,
+      24,     0,     0,     0,     0,     0,     0,    26,   468,   469,
+     470,   471,   472,   473,   474,   475,   476,     0,     0,     0,
+       6,     0,     7,     0,     0,     0,     0,     0,     8,     0,
+       0,     0,    10,     0,     0,     0,     0,     0,     0,     0,
+      28,     0,     0,     0,     0,    29,    30,    31,    13,     0,
+      32,     0,    33,     0,   205,    15,   208,    16,     0,     0,
+       0,    17,     0,     0,    18,   209,     0,    36,     0,     0,
+       0,    19,     0,     0,     0,    37,    38,     0,     0,     0,
+       0,     0,    21,     0,    22,    23,    24,     0,     0,     0,
+       0,     0,     0,    26,   468,   469,   470,   471,   472,   473,
+     474,   475,   476,     0,    39,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   468,
+     469,   470,   471,   472,   473,   474,    28,     0,     0,     0,
+       0,    29,    30,    31,     0,     0,    32,     0,    33,     0,
+       0,     0,   208,     0,     0,     0,     0,     0,     0,     0,
+       0,   209,     0,    36,     0,     0,     0,     0,     0,     0,
+       0,    37,    38,   468,   469,   470,   471,   472,   473,   474,
+     475,   476,     0,     0,     0,     0,   477,     0,   478,   479,
+     480,   481,   482,   483,   484,   485,   486,   487,     0,     0,
+      39,     0,     0,     0,     0,   488,   489,     0,     0,     0,
+       0,     0,   523,   468,   469,   470,   471,   472,   473,   474,
+     475,   476,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   468,   469,   470,   471,   472,   473,
+     474,   475,   476,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   468,   469,   470,   471,   472,   473,   474,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   477,     0,   478,   479,   480,   481,   482,   483,
+     484,   485,   486,   487,   468,   469,   470,   471,   472,   473,
+     474,   488,   489,     0,     0,     0,     0,     0,   564,   478,
+     479,   480,   481,   482,   483,   484,   485,   486,   487,     0,
+       0,     0,     0,     0,     0,     0,   488,   489,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    28,
-      29,    30,     0,     0,    31,     0,     0,     0,     0,     0,
-     207,     0,     0,     0,     0,     0,     0,     0,     0,   208,
-       0,    35,     0,     0,     0,     0,     0,     0,     0,    36,
-      37,    97,     0,    98,    99,   100,   101,   102,   103,     0,
-     104,     0,     0,   105,     0,   106,     0,     0,     0,   107,
-     108,     0,   109,   110,   111,   112,     0,   113,   114,   115,
-     116,   117,   118,   119,   120,     0,   121,     0,   122,   123,
-     124,   125,   126,     0,     0,   127,     0,     0,     0,   128,
-       0,   129,   130,     0,   131,   132,   133,   134,   135,   136,
-       0,   137,   138,   139,   140,   141,   142,     0,     0,   143,
-       0,     0,   144,     0,     0,     0,     0,   145,   146,     0,
-     147,   148,     0,   149,   150,     0,     0,     0,   151,   152,
-     153,   154,   155,   156,     0,   157,   158,   159,   160,   161,
-     162,   163,     0,   164,   165,     0,   166,   167,   168,   169,
-     170,   171,   172,   173,   174,     0,   175,   176,   177,   178,
-       0,     0,     0,   179,     0,     0,   180,     0,     0,   181,
-     182,     0,     0,   183,   184,   185,   186,     0,     0,   187,
-       0,   188,     0,   189,   190,   191,   192,   193,   194,   195,
-       0,     0,   196
+       0,   477,     0,   478,   479,   480,   481,   482,   483,   484,
+     485,   486,   487,     0,     0,     0,     0,     0,     0,     0,
+     488,   489,   634,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   477,   633,   478,   479,   480,   481,   482,   483,   484,
+     485,   486,   487,     0,     0,     0,     0,     0,     0,     0,
+     488,   489,   477,     0,   478,   479,   480,   481,   482,   483,
+     484,   485,   486,   487,     5,     0,     0,     0,     0,     0,
+       0,   488,   489,   479,   480,   481,   482,   483,   484,   485,
+     486,   487,     0,     0,     0,     0,     0,     0,     0,   488,
+     489,     6,     0,     7,     0,     0,     0,     0,     0,     8,
+       9,     0,     0,    10,     0,     0,   480,   481,   482,   483,
+     484,   485,   486,   487,     0,     0,     0,    12,     0,    13,
+       0,   488,   489,     0,     0,   205,    15,     0,    16,     0,
+       0,     0,    17,     0,     0,    18,     0,     0,     0,     0,
+       0,     0,    19,     0,     0,     0,     0,     0,     0,     0,
+       5,     0,     0,    21,     0,    22,    23,    24,    25,     0,
+       0,   206,     0,     0,    26,     0,     0,     0,   207,     0,
+       0,     0,     0,     0,     0,     0,     0,     6,     0,     7,
+       0,     0,     0,     0,     0,     8,     0,     0,     0,    10,
+       0,     0,     0,     0,     0,     0,     0,    28,     0,     0,
+       0,     0,    29,    30,    31,    13,     0,    32,     0,    33,
+       0,   205,    15,   208,    16,     0,     0,     0,    17,     0,
+       0,    18,   209,     0,    36,     0,     0,     0,    19,     0,
+       0,     0,    37,    38,     0,     0,     5,     0,     0,    21,
+       0,    22,    23,    24,     0,     0,     0,     0,     0,     0,
+      26,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     6,     0,     7,     0,     0,     0,     0,
+       0,     8,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    28,     0,     0,     0,     0,    29,    30,
+      31,    13,     0,    32,     0,    33,     0,   205,    15,   208,
+       0,     0,     0,     0,    17,     0,     0,    18,   209,     0,
+      36,     0,     0,     0,    19,     0,     0,     0,    37,    38,
+       0,     0,     0,     0,     0,     0,     0,    22,    23,    24,
+       0,     0,     0,     0,     0,     0,    26,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    29,    30,    31,     0,     0,    32,
+       0,     0,     0,     0,     0,   208,     0,     0,     0,     0,
+       0,     0,     0,     0,   209,     0,    36,     0,     0,     0,
+       0,     0,     0,     0,    37,    38,    98,     0,    99,   100,
+     101,   102,   103,   104,     0,   105,     0,     0,   106,     0,
+     107,     0,     0,     0,   108,   109,     0,   110,   111,   112,
+     113,     0,   114,   115,   116,   117,   118,   119,   120,   121,
+       0,   122,     0,   123,   124,   125,   126,   127,     0,     0,
+     128,     0,     0,     0,   129,     0,   130,   131,     0,   132,
+     133,   134,   135,   136,   137,     0,   138,   139,   140,   141,
+     142,   143,     0,     0,   144,     0,     0,   145,     0,     0,
+       0,     0,   146,   147,     0,   148,   149,     0,   150,   151,
+       0,     0,     0,   152,   153,   154,   155,   156,   157,     0,
+     158,   159,   160,   161,   162,   163,   164,     0,   165,   166,
+       0,   167,   168,   169,   170,   171,   172,   173,   174,   175,
+       0,   176,   177,   178,   179,     0,     0,     0,   180,     0,
+       0,   181,     0,     0,   182,   183,     0,     0,   184,   185,
+     186,   187,     0,     0,   188,     0,   189,     0,   190,   191,
+     192,   193,   194,   195,   196,     0,     0,   197
 };
 
+#define yypact_value_is_default(Yystate) \
+  (!!((Yystate) == (-526)))
+
+#define yytable_value_is_error(Yytable_value) \
+  YYID (0)
+
 static const yytype_int16 yycheck[] =
 {
-       2,     2,    47,     2,   203,     2,    68,   268,   267,     2,
-     271,    44,   273,   306,     2,   276,    69,   245,   326,     2,
-     281,    68,   275,   324,   506,     2,   293,   557,     2,     2,
-       2,     2,   107,    15,   241,   242,    89,    15,   505,     3,
-       4,    66,    67,   154,   154,   132,    71,   154,    47,   136,
-      47,   180,    43,   180,    47,    47,   562,    65,    66,    67,
-     180,   567,    57,    71,    47,   203,    98,   205,   201,    37,
-     329,    33,    34,   206,    38,     0,   163,    68,   207,    43,
-     207,   180,    50,   565,     3,   205,     5,     6,     7,     8,
-       9,    10,   203,   203,   205,   127,   203,   564,     3,     4,
-     180,   320,    93,    98,     3,     4,    70,     3,   207,     5,
-       6,     7,     8,     9,    10,   206,   646,   623,   317,   326,
-     602,   320,   341,   342,     8,   418,   201,   207,   201,   180,
-     597,   201,    95,   206,   201,    30,   206,   430,   205,    38,
-      35,   340,   341,   342,    43,   412,   137,   203,   630,   205,
-      69,   202,    25,   215,     3,     4,    29,   624,   149,     3,
-     124,   175,   176,   177,   178,   179,     8,   201,   215,    11,
-     204,    70,   201,    69,   201,   204,   206,   204,     8,   241,
-     242,   205,   205,   207,   160,   446,   150,    13,    14,    15,
-      16,    17,    18,    19,   241,   242,   205,   116,   205,   201,
-     202,   205,   201,   202,   201,   202,   206,   254,   201,   202,
-     417,   205,   190,   191,   192,   262,     5,     6,   200,   201,
-     116,   205,   200,   201,   249,   124,   190,   146,   489,   282,
-     275,   223,   285,    15,   287,   288,   204,   201,   466,   292,
-     159,   249,   206,     3,     4,   207,   208,   548,     3,     4,
-     146,   150,     3,     4,     3,     4,   549,   203,   519,     3,
-       4,   203,   307,   159,   326,   203,   185,     3,     4,   188,
-     189,   190,   205,   275,   193,   194,     3,     4,   182,   326,
-       3,     4,   203,   202,   512,   205,   331,   206,   596,   185,
-     205,   190,   188,   189,   190,     3,     4,   193,   194,     3,
-       4,   554,   205,   203,   205,   203,   202,   206,     3,   206,
-     206,   201,   206,   206,   607,   623,   318,   318,   206,   318,
-     365,   318,   203,   325,   325,   318,   325,   635,   325,   331,
-     318,   206,   325,   540,   562,   318,   206,   206,   383,   567,
-     342,   318,   570,   651,   318,   318,   318,   318,   206,   206,
-     643,    13,    14,    15,    38,   417,   206,   183,   184,   185,
-     186,   187,   188,   189,   190,   191,   192,   206,   206,   206,
-     417,   206,   206,   206,   200,   201,   504,   206,   206,   424,
-     508,   206,   415,   206,   206,   644,    70,   432,   206,   206,
-     206,   206,   206,   206,   206,   623,   206,   206,   445,   206,
-     206,   205,   609,   448,   466,   666,   188,   189,   190,   191,
-     192,   205,   205,   458,     8,   203,   208,   207,   200,   201,
-       8,   207,   206,     8,   426,   424,     8,   429,   429,     8,
-     429,   419,   429,   432,     8,   432,   429,     8,     8,   432,
-     124,     8,   201,   206,   506,   203,     3,     4,   205,     3,
-       4,   448,     3,   203,     5,     6,     7,     8,     9,    10,
-     182,   506,   205,   203,   180,   207,   150,   204,   596,   208,
-     180,   599,   671,   672,   207,   207,   207,   264,   540,   207,
-     267,    38,   206,   200,    38,     8,   207,   274,   207,   207,
-     277,   182,   207,   540,   207,   207,   283,   284,   626,   544,
-     562,   207,   207,   565,   506,   567,   190,   635,   207,   554,
-     207,   207,   559,    70,   207,   207,    70,   201,    69,   207,
-     565,   207,   206,   651,   207,   207,   188,   189,   190,   191,
-     192,   207,   534,   207,   207,   534,   207,   534,   200,   201,
-     207,   534,   329,   330,    13,    14,    15,   609,   205,    18,
-      19,   204,   554,    89,   180,   207,   207,   602,   205,   205,
-       3,   623,   609,   565,    39,   116,     3,   124,     8,     5,
-     124,   207,   359,   360,   361,   362,   363,   364,   365,   180,
-     205,   205,   182,   182,   207,   630,   207,   207,   207,   203,
-     207,   207,    38,   150,   207,   146,   150,    43,   207,   207,
-     602,   182,   205,   221,   428,   445,   283,    82,   159,   289,
-     612,   612,   514,   612,   672,   612,    47,   215,   426,   612,
-      95,    96,    97,   279,    70,   646,    -1,    -1,   630,   104,
-      -1,    -1,    -1,   190,   185,    -1,   190,   188,   189,   190,
-      -1,    -1,   193,   194,   201,    -1,    -1,    -1,    -1,   206,
-     437,    -1,   206,    -1,    -1,   206,    -1,    -1,    -1,    13,
-      14,    15,    16,    17,    18,    19,    20,    21,   143,    -1,
-      -1,    -1,   147,    -1,    -1,    -1,    -1,    -1,   124,    -1,
-     467,   468,    -1,   470,   471,   472,   473,   474,   475,   476,
-     477,   478,   479,   480,   481,   482,   483,   484,   485,   486,
-      -1,   488,    -1,    -1,   150,    -1,    -1,    -1,    -1,     3,
-       4,     5,     6,     7,     8,     9,    10,   186,   187,   188,
-     189,   190,   191,   192,    -1,    -1,    -1,   514,    -1,    -1,
-      -1,   200,   201,    -1,    -1,    -1,    -1,    31,    -1,    33,
-      -1,    -1,    -1,    -1,   190,    39,    -1,    -1,    -1,    43,
-      -1,    -1,    -1,    -1,    -1,   201,    -1,    -1,    -1,    -1,
-     206,    -1,    -1,    -1,    -1,    59,    -1,    -1,    -1,    -1,
-      -1,    65,    66,    -1,    68,    69,    -1,    -1,    72,    -1,
-      -1,    75,    -1,    -1,    -1,    -1,    -1,    -1,    82,    -1,
-      13,    14,    15,    16,    17,    18,    19,    20,    21,    93,
-      -1,    95,    96,    97,    -1,    -1,    -1,    -1,    -1,    -1,
-     104,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   116,    -1,    -1,    -1,    -1,   181,   182,   183,
-     184,   185,   186,   187,   188,   189,   190,   191,   192,    -1,
-      -1,    -1,   629,   137,    -1,   632,   200,   201,   142,   143,
-     144,    -1,   146,   147,     4,   149,    -1,   644,    -1,   153,
-      -1,    -1,    -1,    -1,    -1,   159,    -1,    -1,   162,    -1,
-     164,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   172,   173,
-      -1,    31,    -1,    33,    -1,    -1,    -1,    -1,    -1,    39,
-      40,   185,    -1,    43,   188,   189,   190,    -1,    48,   193,
-     194,    -1,    -1,    -1,    -1,    -1,    -1,    57,    -1,    59,
-      -1,    -1,   206,    -1,    -1,    65,    66,    -1,    68,    -1,
-      -1,    -1,    72,    -1,    -1,    75,    -1,    -1,    -1,    -1,
-      -1,    -1,    82,    -1,    -1,    -1,    -1,    -1,    -1,    89,
-      90,    -1,    -1,    93,    -1,    95,    96,    97,    98,    -1,
-      -1,    -1,    -1,    -1,   104,    -1,    -1,    -1,   181,   109,
-     183,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-      -1,     4,    -1,    -1,    -1,    -1,    -1,   200,   201,    -1,
-      -1,    -1,    -1,    -1,   207,    -1,    -1,   137,    -1,    -1,
-      -1,    -1,   142,   143,   144,    -1,    -1,   147,    31,   149,
-      33,    -1,    -1,   153,    -1,    -1,    39,    40,    -1,    -1,
-      43,    -1,   162,    -1,   164,    48,    -1,    -1,    -1,    -1,
-      -1,    -1,   172,   173,    57,    -1,    59,    -1,    -1,    -1,
-      -1,    -1,    65,    66,    -1,    68,    -1,    -1,    -1,    72,
-      -1,    -1,    75,    -1,    -1,    -1,    -1,    -1,    -1,    82,
-      -1,   201,    -1,    -1,   204,    -1,    89,    90,    -1,    -1,
-      93,    -1,    95,    96,    97,    98,    -1,    -1,    -1,    -1,
-      -1,   104,    -1,    -1,    -1,    -1,   109,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     4,    -1,
+       2,     2,    69,     2,    69,     2,     2,   307,   269,     2,
+      48,   272,   268,   274,   246,   204,   277,    45,     2,   276,
+     325,   282,   242,   243,    70,     2,     2,   294,     2,   506,
+       2,     2,   108,   558,    16,    38,    48,    58,   505,   507,
+     327,    16,   509,   155,    90,     3,   155,     5,    51,    48,
+     155,    48,    66,    67,    68,    48,    34,    35,    72,     0,
+       3,   202,     5,   563,    48,   202,   207,   202,   568,   207,
+     207,    31,   207,     3,   330,     5,    36,    99,    99,   133,
+      16,    39,     9,   137,    67,    68,    44,   181,   565,    72,
+     181,     3,   204,     5,   206,   204,    39,     3,   566,   204,
+       6,     7,     8,     9,    10,    11,   128,   327,    96,    39,
+     164,   181,   206,    71,    44,   181,   202,   208,   181,   419,
+     206,   598,   647,     3,   624,   181,   202,    39,    71,   318,
+     597,   431,   321,   600,   321,   603,     6,     7,   208,    39,
+      44,    71,   208,   207,    44,   208,   413,   203,   625,   216,
+     183,   216,   341,   342,   343,   342,   343,    26,   206,    71,
+     627,    30,   206,   631,    70,    69,     3,   125,     5,   636,
+       9,    71,     3,    12,     5,   242,   243,   242,   243,    14,
+      15,    16,   125,   206,   202,   652,   447,   205,   255,   202,
+      94,   202,   205,   151,   205,   125,   263,     3,   418,     5,
+     202,   203,   205,   202,   203,   202,   203,   161,   151,   202,
+     203,   117,   224,   125,   189,   190,   191,   192,   193,   201,
+     202,   151,     3,   204,     5,   125,   201,   202,   207,   490,
+     208,   209,     9,   191,   138,   467,   250,   283,   276,   151,
+     286,   147,   288,   289,   549,   206,   150,   293,   191,   207,
+     550,   151,   204,   206,   160,   191,   192,   193,   204,   520,
+     327,   191,   327,   207,   207,   201,   202,   250,   206,     3,
+     308,     5,   202,     3,   276,     5,   204,   207,   206,   191,
+     186,   513,   206,   189,   190,   191,   204,    39,   194,   195,
+     202,   191,   206,   206,   332,   207,   206,   203,   555,   204,
+     207,   207,   202,   204,     3,   206,     5,   207,   608,   206,
+     597,   176,   177,   178,   179,   180,   204,   319,   319,    71,
+     319,   541,   319,   319,   326,   326,   319,   326,   366,   326,
+     332,   563,     3,   326,     5,   319,   568,   624,   202,   571,
+      40,   343,   319,   319,   644,   319,   384,   319,   319,   636,
+       3,   418,     5,   418,   189,   190,   191,   192,   193,     3,
+       3,     5,     5,   207,   207,   652,   201,   202,     3,   207,
+       5,   207,   206,   125,   208,   207,     3,   207,   207,   446,
+     207,   207,   207,    83,   207,   207,   207,   425,   416,   645,
+     610,   207,   624,   207,   207,   433,    96,    97,    98,   151,
+     207,   206,   467,   207,   207,   105,   667,   207,   207,   207,
+     207,   449,    14,    15,    16,    17,    18,    19,    20,    21,
+      22,   459,   207,   207,   420,   427,   425,   207,   430,   430,
+     204,   430,   207,   430,   433,   207,   433,   430,   207,   191,
+     433,   207,   507,   206,   144,   206,   204,   209,   148,   208,
+     202,   208,   449,     3,   207,   207,     6,     7,     8,     9,
+      10,    11,     9,     9,     9,     9,     9,     9,     9,   507,
+       9,     9,   207,   202,   541,   265,   541,   183,   268,   206,
+     204,   204,   204,   672,   673,   275,   206,   208,   278,   205,
+     181,   209,   207,   560,   284,   285,   208,   208,   563,   208,
+     208,   566,   181,   568,   208,   507,   208,   545,     9,    90,
+     208,   208,   208,   208,   208,   208,   208,   555,   208,   208,
+      70,   208,   208,   208,   208,   208,   208,   208,   566,   201,
+     208,   208,   208,   535,   208,   183,   535,   206,   535,   205,
+     330,   331,   535,   610,   208,   610,   208,   181,   206,   206,
+       3,     3,     9,   555,   208,     6,   181,   206,   208,   624,
+     206,   208,   183,   208,   566,   603,   208,   117,   204,   208,
+     360,   361,   362,   363,   364,   365,   366,   208,   208,   208,
+     182,   222,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,   193,   208,   631,   183,   183,   206,   147,   446,   201,
+     202,   603,   290,    48,   284,   429,   208,   515,   427,   216,
+     160,   613,   613,   673,   613,   647,   613,    14,    15,    16,
+     613,   280,    19,    20,    -1,    -1,    -1,    -1,    -1,   631,
+      -1,    -1,    -1,    -1,    -1,    -1,   186,    -1,    -1,   189,
+     190,   191,    -1,    -1,   194,   195,    -1,    -1,   438,    -1,
+      -1,    -1,    -1,   203,    -1,    -1,    -1,   207,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   137,    -1,    -1,    -1,    -1,   142,
-     143,   144,    -1,    -1,   147,    31,   149,    33,    -1,    -1,
-     153,    -1,    -1,    39,    40,    -1,    -1,    43,    -1,   162,
-      -1,   164,    48,    -1,    -1,    -1,    -1,    -1,    -1,   172,
-     173,    57,    -1,    59,    -1,    -1,    -1,    -1,    -1,    65,
-      66,    -1,    68,    -1,    -1,    -1,    72,    -1,    -1,    75,
-      -1,    -1,    -1,    -1,    -1,    -1,    82,    -1,   201,    -1,
-      -1,   204,    -1,    89,     4,    -1,    -1,    93,    -1,    95,
-      96,    97,    98,    -1,    -1,    -1,    -1,    -1,   104,    -1,
-      -1,    -1,    -1,   109,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    31,    -1,    33,    -1,    -1,    -1,    -1,    -1,    39,
-      -1,    -1,    -1,    43,    -1,    -1,    -1,    -1,    48,    -1,
-      -1,   137,    -1,    -1,    -1,    -1,   142,   143,   144,    59,
-      -1,   147,    -1,   149,    -1,    65,    66,   153,    68,    -1,
-      -1,    -1,    72,    -1,    -1,    75,   162,    -1,   164,    -1,
-      -1,    -1,    82,    -1,    -1,    -1,   172,   173,    -1,    89,
-       4,    -1,    -1,    93,    -1,    95,    96,    97,    -1,    -1,
-      -1,    -1,    -1,    -1,   104,    -1,    13,    14,    15,    16,
-      17,    18,    19,    -1,    -1,   201,    -1,    31,   204,    33,
-      -1,    -1,    -1,    -1,    -1,    39,    -1,    -1,    -1,    43,
-      -1,    -1,    -1,    -1,    48,    -1,    -1,   137,    -1,    -1,
-      -1,    -1,   142,   143,   144,    59,    -1,   147,    -1,   149,
-      -1,    65,    66,   153,    68,    -1,    -1,    -1,    72,    -1,
-      -1,    75,   162,    -1,   164,    -1,    -1,    -1,    82,    -1,
-      -1,    -1,   172,   173,    -1,    89,     4,    -1,    -1,    93,
-      -1,    95,    96,    97,    -1,    -1,    -1,    -1,    -1,    -1,
-     104,    -1,    -1,    13,    14,    15,    16,    17,    18,    19,
-      -1,   201,    -1,    31,   204,    33,    -1,    -1,    -1,    -1,
-      -1,    39,    -1,    -1,    -1,    43,    -1,    -1,    -1,    -1,
-      48,    -1,    -1,   137,    -1,    -1,    -1,    -1,   142,   143,
-     144,    59,    -1,   147,    -1,   149,    -1,    65,    66,   153,
-      68,    -1,    -1,    -1,    72,    -1,    -1,    75,   162,    -1,
-     164,    -1,    -1,    -1,    82,    -1,    -1,    -1,   172,   173,
-      -1,    89,     4,    -1,    -1,    93,    -1,    95,    96,    97,
-      -1,    -1,    -1,    -1,    -1,    -1,   104,   184,   185,   186,
-     187,   188,   189,   190,   191,   192,    -1,   201,    -1,    31,
-     204,    33,    -1,   200,   201,    -1,    -1,    39,    -1,    -1,
-      -1,    43,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   137,
-      -1,    -1,    -1,    -1,   142,   143,   144,    59,    -1,   147,
-      -1,   149,    -1,    65,    66,   153,    68,    -1,    -1,    -1,
-      72,    -1,    -1,    75,   162,    -1,   164,    -1,    -1,    -1,
-      82,    -1,    -1,    -1,   172,   173,    -1,    -1,    -1,    -1,
-      -1,    93,    -1,    95,    96,    97,    -1,    -1,    -1,    -1,
-      -1,    -1,   104,    -1,    -1,   185,   186,   187,   188,   189,
-     190,   191,   192,   201,    -1,    -1,   204,    -1,    -1,     4,
-     200,   201,    -1,    -1,    -1,    -1,    -1,    12,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   137,    -1,    -1,    -1,    -1,
-     142,   143,   144,    -1,    -1,   147,    31,   149,    33,    -1,
-      -1,   153,    -1,    -1,    39,    40,    -1,    -1,    43,    -1,
-     162,    -1,   164,    48,    -1,    -1,    -1,    -1,    -1,    -1,
-     172,   173,    57,    -1,    59,    -1,    -1,    -1,    -1,    -1,
-      65,    66,    -1,    68,    -1,    -1,    -1,    72,    -1,    -1,
-      75,    -1,    -1,    -1,    -1,    -1,    -1,    82,    -1,   201,
-      -1,    -1,   204,    -1,    89,    90,    -1,    -1,    93,    -1,
-      95,    96,    97,    98,    -1,    -1,    -1,    -1,    -1,   104,
-      -1,    -1,    -1,    -1,   109,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,     4,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   468,   469,
+      -1,   471,   472,   473,   474,   475,   476,   477,   478,   479,
+     480,   481,   482,   483,   484,   485,   486,   487,    -1,   489,
+      -1,    -1,    -1,    -1,    -1,    -1,     3,    -1,     5,     6,
+       7,     8,     9,    10,    11,    -1,     3,    -1,    -1,     6,
+       7,     8,     9,    10,    11,   515,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    32,    -1,    34,    -1,    -1,
+      -1,    -1,    -1,    40,    -1,    -1,    -1,    44,    -1,    -1,
+      -1,    -1,    -1,    -1,    14,    15,    16,    17,    18,    19,
+      20,    -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,    66,
+      67,    -1,    69,    70,    -1,    -1,    73,    -1,    -1,    76,
+      -1,    -1,    -1,    70,    -1,    -1,    83,    -1,    -1,    -1,
+     187,   188,   189,   190,   191,   192,   193,    94,    -1,    96,
+      97,    98,    -1,    -1,   201,   202,    -1,    -1,   105,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   137,    -1,    -1,    -1,    -1,   142,   143,   144,
-      -1,    -1,   147,    31,   149,    33,    -1,    -1,   153,    -1,
-      -1,    39,    40,    -1,    -1,    43,    -1,   162,    -1,   164,
-      48,    -1,    -1,    -1,    -1,    -1,    -1,   172,   173,    57,
-      -1,    59,    -1,    -1,    -1,    -1,    -1,    65,    66,    -1,
-      68,    -1,    -1,    -1,    72,    -1,    -1,    75,    -1,    -1,
-      -1,    -1,    -1,    -1,    82,    -1,   201,    -1,    -1,    -1,
-      -1,    89,     4,    -1,    -1,    93,    -1,    95,    96,    97,
-      98,    -1,    -1,    -1,    -1,    -1,   104,    -1,    -1,    -1,
-      -1,   109,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    31,
-      -1,    33,    -1,    -1,    -1,    -1,    38,    39,    -1,    -1,
-      -1,    43,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   137,
-      -1,    -1,    -1,    -1,   142,   143,   144,    59,    -1,   147,
-      -1,   149,    -1,    65,    66,   153,    68,    -1,    70,    -1,
-      72,    -1,   160,    75,   162,    -1,   164,    -1,    -1,    -1,
-      82,    -1,    -1,    -1,   172,   173,    -1,    -1,    -1,    -1,
-      -1,    93,    -1,    95,    96,    97,    -1,    -1,    -1,    -1,
-      -1,    -1,   104,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   201,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   124,    -1,    -1,    -1,    -1,    -1,    -1,     4,
-      -1,    -1,    -1,    -1,    -1,   137,    -1,    -1,    -1,    -1,
-     142,   143,   144,    -1,    -1,   147,    -1,   149,   150,    -1,
-      -1,   153,    -1,    -1,    -1,    -1,    31,    -1,    33,    -1,
-     162,    -1,   164,    38,    39,    -1,    -1,    -1,    43,    -1,
-     172,   173,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    59,    -1,    -1,    -1,   190,    -1,
-      65,    66,    -1,    68,    -1,    70,    -1,    72,    -1,   201,
-      75,    -1,    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    93,    -1,
-      95,    96,    97,    -1,    -1,    -1,    -1,    -1,    -1,   104,
+     117,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     117,    14,    15,    16,    17,    18,    19,    20,    -1,    22,
+     630,   138,    -1,   633,    -1,    -1,   143,   144,   145,    -1,
+     147,   148,    -1,   150,    -1,   645,    -1,   154,    -1,    -1,
+     147,    -1,    -1,   160,    -1,    -1,   163,    -1,   165,    -1,
+      -1,    -1,    -1,   160,    -1,    -1,   173,   174,    -1,    -1,
+      -1,     4,     5,    -1,    -1,    -1,    -1,    -1,    -1,   186,
+      -1,    -1,   189,   190,   191,    -1,    -1,   194,   195,   186,
+      -1,    -1,   189,   190,   191,    -1,    -1,   194,   195,    32,
+     207,    34,    -1,    -1,    -1,    -1,    -1,    40,    41,    -1,
+     207,    44,    -1,    -1,    -1,    -1,    49,   187,   188,   189,
+     190,   191,   192,   193,    -1,    58,    -1,    60,    -1,    -1,
+      -1,   201,   202,    66,    67,    -1,    69,    -1,    -1,    -1,
+      73,    -1,    -1,    76,    -1,    -1,    -1,    -1,    -1,    -1,
+      83,    -1,    -1,    -1,    -1,    -1,    -1,    90,    91,    -1,
+      -1,    94,    -1,    96,    97,    98,    99,    -1,    -1,    -1,
+      -1,    -1,   105,    -1,    -1,    -1,    -1,   110,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     4,     5,
+      -1,   184,   185,   186,   187,   188,   189,   190,   191,   192,
+     193,    -1,    -1,    -1,    -1,   138,    -1,    -1,   201,   202,
+     143,   144,   145,    -1,    -1,   148,    32,   150,    34,    -1,
+      -1,   154,    -1,    -1,    40,    41,    -1,    -1,    44,    -1,
+     163,    -1,   165,    49,    -1,    -1,    -1,    -1,    -1,    -1,
+     173,   174,    58,    -1,    60,    -1,    -1,    -1,    -1,    -1,
+      66,    67,    -1,    69,    -1,    -1,    -1,    73,    -1,    -1,
+      76,    -1,    -1,    -1,    -1,    -1,    -1,    83,    -1,   202,
+      -1,    -1,   205,    -1,    90,    91,    -1,    -1,    94,    -1,
+      96,    97,    98,    99,    -1,    -1,    -1,    -1,    -1,   105,
+      -1,    -1,    -1,    -1,   110,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,     4,     5,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   124,
+      -1,    -1,   138,    -1,    -1,    -1,    -1,   143,   144,   145,
+      -1,    -1,   148,    32,   150,    34,    -1,    -1,   154,    -1,
+      -1,    40,    41,    -1,    -1,    44,    -1,   163,    -1,   165,
+      49,    -1,    -1,    -1,    -1,    -1,    -1,   173,   174,    58,
+      -1,    60,    -1,    -1,    -1,    -1,    -1,    66,    67,    -1,
+      69,    -1,    -1,    -1,    73,    -1,    -1,    76,    -1,    -1,
+      -1,    -1,    -1,    -1,    83,    -1,   202,    -1,    -1,   205,
+      -1,    90,    -1,    -1,    -1,    94,    -1,    96,    97,    98,
+      99,    -1,    -1,    -1,    -1,    -1,   105,     4,     5,    -1,
+      -1,   110,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,     4,   137,    -1,    -1,    -1,    -1,   142,   143,   144,
-      -1,    -1,   147,    -1,   149,   150,    -1,    -1,   153,    22,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   162,    31,   164,
-      33,    -1,    -1,    -1,    -1,    -1,    39,   172,   173,    -1,
-      43,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   190,    59,    -1,    -1,    -1,
-      -1,    -1,    65,    66,    -1,    68,   201,    -1,    -1,    72,
-      -1,    -1,    75,    -1,    -1,    -1,    -1,    -1,    -1,    82,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,     4,    -1,    -1,
-      93,    -1,    95,    96,    97,    -1,    -1,    -1,    -1,    -1,
-      -1,   104,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,    -1,    -1,    -1,    31,    -1,    33,    -1,    -1,    -1,
-      -1,    -1,    39,    -1,    -1,    -1,    43,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   137,    -1,    -1,    -1,    -1,   142,
-     143,   144,    59,    -1,   147,    -1,   149,    -1,    65,    66,
-     153,    68,    -1,    -1,    -1,    72,    -1,    -1,    75,   162,
-      -1,   164,    -1,    -1,    -1,    82,    -1,    -1,    -1,   172,
-     173,    -1,    -1,    -1,    -1,    -1,    93,    -1,    95,    96,
-      97,    -1,    -1,    -1,    -1,    -1,    -1,   104,    13,    14,
-      15,    16,    17,    18,    19,    20,    21,    -1,   201,    -1,
+      -1,    -1,    -1,    -1,    -1,    32,    -1,    34,    -1,   138,
+      -1,    -1,    -1,    40,   143,   144,   145,    44,    -1,   148,
+      -1,   150,    49,    -1,    -1,   154,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    60,   163,    -1,   165,    -1,    -1,    66,
+      67,    -1,    69,    -1,   173,   174,    73,    -1,    -1,    76,
+      -1,    -1,    -1,    -1,    -1,    -1,    83,    -1,    -1,    -1,
+      -1,    -1,    -1,    90,    -1,    -1,    -1,    94,    -1,    96,
+      97,    98,    -1,   202,    -1,    -1,   205,    -1,   105,     4,
+       5,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    13,    14,    15,    16,    17,    18,    19,
-     137,    21,    -1,    -1,    -1,   142,   143,   144,    -1,    -1,
-     147,    -1,   149,    -1,    -1,    -1,   153,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   162,    -1,   164,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   172,   173,    13,    14,    15,
-      16,    17,    18,    19,    20,    21,    -1,    -1,    -1,    -1,
-     181,    -1,   183,   184,   185,   186,   187,   188,   189,   190,
-     191,   192,    -1,    -1,   201,    -1,    -1,    -1,    -1,   200,
-     201,    -1,    -1,    -1,    -1,    -1,   207,    13,    14,    15,
-      16,    17,    18,    19,    20,    21,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    13,
-      14,    15,    16,    17,    18,    19,    20,    21,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    13,    14,    15,    16,    17,
-      18,    19,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   181,    -1,   183,   184,
-     185,   186,   187,   188,   189,   190,   191,   192,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   200,   201,    -1,    -1,    -1,
-      -1,    -1,   207,   183,   184,   185,   186,   187,   188,   189,
-     190,   191,   192,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     200,   201,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    32,    -1,    34,
+      -1,   138,    -1,    -1,    -1,    40,   143,   144,   145,    44,
+      -1,   148,    -1,   150,    49,    -1,    -1,   154,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    60,   163,    -1,   165,    -1,
+      -1,    66,    67,    -1,    69,    -1,   173,   174,    73,    -1,
+      -1,    76,    -1,    -1,    -1,    -1,    -1,    -1,    83,    -1,
+      -1,    -1,    -1,    -1,    -1,    90,    -1,    -1,    -1,    94,
+      -1,    96,    97,    98,    -1,   202,    -1,    -1,   205,    -1,
+     105,     4,     5,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    -1,    32,
+      -1,    34,    -1,   138,    -1,    -1,    -1,    40,   143,   144,
+     145,    44,    -1,   148,    -1,   150,    49,    -1,    -1,   154,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,   163,    -1,
+     165,    -1,    -1,    66,    67,    -1,    69,    -1,   173,   174,
+      73,    -1,    -1,    76,    -1,    -1,    -1,    -1,    -1,    -1,
+      83,    -1,    -1,    -1,    -1,    -1,    -1,    90,     5,    -1,
+      -1,    94,    -1,    96,    97,    98,    -1,   202,    -1,    -1,
+     205,    -1,   105,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    32,    -1,    34,    -1,    -1,
+      -1,    -1,    -1,    40,    -1,    -1,    -1,    44,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   138,    -1,    -1,    -1,    -1,
+     143,   144,   145,    60,    -1,   148,    -1,   150,    -1,    66,
+      67,   154,    69,    -1,    -1,    -1,    73,    -1,    -1,    76,
+     163,    -1,   165,    -1,    -1,    -1,    83,    -1,    -1,    -1,
+     173,   174,    -1,    -1,    -1,    -1,    -1,    94,    -1,    96,
+      97,    98,    -1,    -1,    -1,    -1,    -1,   182,   105,   184,
+     185,   186,   187,   188,   189,   190,   191,   192,   193,   202,
+      -1,    -1,   205,    -1,     4,     5,   201,   202,   203,    -1,
+      -1,    -1,    -1,    13,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   138,    -1,    -1,    -1,    -1,   143,   144,   145,    -1,
+      -1,   148,    32,   150,    34,    -1,    -1,   154,    -1,    -1,
+      40,    41,    -1,    -1,    44,    -1,   163,    -1,   165,    49,
+      -1,    -1,    -1,    -1,    -1,    -1,   173,   174,    58,    -1,
+      60,    -1,    -1,    -1,    -1,    -1,    66,    67,    -1,    69,
+      -1,    -1,    -1,    73,    -1,    -1,    76,    -1,    -1,    -1,
+      -1,    -1,    -1,    83,    -1,   202,    -1,    -1,   205,    -1,
+      90,    91,    -1,    -1,    94,    -1,    96,    97,    98,    99,
+      -1,    -1,    -1,    -1,    -1,   105,    -1,    -1,    -1,    -1,
+     110,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,     4,     5,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   138,    -1,
+      -1,    -1,    -1,   143,   144,   145,    -1,    -1,   148,    32,
+     150,    34,    -1,    -1,   154,    -1,    -1,    40,    41,    -1,
+      -1,    44,    -1,   163,    -1,   165,    49,    -1,    -1,    -1,
+      -1,    -1,    -1,   173,   174,    58,    -1,    60,    -1,    -1,
+      -1,    -1,    -1,    66,    67,    -1,    69,    -1,    -1,    -1,
+      73,    -1,    -1,    76,    -1,    -1,    -1,    -1,    -1,    -1,
+      83,    -1,   202,    -1,    -1,    -1,    -1,    90,     5,    -1,
+      -1,    94,    -1,    96,    97,    98,    99,    -1,    -1,    -1,
+      -1,    -1,   105,    -1,    -1,    -1,    -1,   110,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    32,    -1,    34,    -1,    -1,
+      -1,    -1,    39,    40,    -1,    -1,    -1,    44,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   138,    -1,    -1,    -1,    -1,
+     143,   144,   145,    60,    -1,   148,    -1,   150,    -1,    66,
+      67,   154,    69,    -1,    71,    -1,    73,    -1,   161,    76,
+     163,    -1,   165,    -1,    -1,    -1,    83,    -1,    -1,    -1,
+     173,   174,    -1,    -1,    -1,    -1,    -1,    94,    -1,    96,
+      97,    98,    -1,    -1,    -1,    -1,    -1,    -1,   105,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   202,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   125,    -1,
+      -1,    -1,    -1,    -1,    -1,     5,    -1,    -1,    -1,    -1,
+      -1,   138,    -1,    -1,    -1,    -1,   143,   144,   145,    -1,
+      -1,   148,    -1,   150,   151,    -1,    -1,   154,    -1,    -1,
+      -1,    -1,    32,    -1,    34,    -1,   163,    -1,   165,    39,
+      40,    -1,    -1,    -1,    44,    -1,   173,   174,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   181,    -1,   183,   184,   185,
-     186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   200,   201,   202,    -1,    -1,    -1,
+      60,    -1,    -1,    -1,   191,    -1,    66,    67,    -1,    69,
+      -1,    71,    -1,    73,    -1,   202,    76,    -1,    -1,    -1,
+      -1,    -1,    -1,    83,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    94,    -1,    96,    97,    98,    -1,
+      -1,    -1,    -1,    -1,    -1,   105,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   181,    -1,   183,   184,   185,
-     186,   187,   188,   189,   190,   191,   192,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   200,   201,   202,   181,    -1,   183,
-     184,   185,   186,   187,   188,   189,   190,   191,   192,     4,
-      -1,    -1,    -1,    -1,    -1,    -1,   200,   201,   186,   187,
-     188,   189,   190,   191,   192,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   200,   201,    -1,    -1,    31,    -1,    33,    -1,
-      -1,    -1,    -1,    -1,    39,    40,    -1,    -1,    43,    -1,
+      -1,    -1,    -1,    -1,    -1,   125,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,     5,   138,    -1,
+      -1,    -1,    -1,   143,   144,   145,    -1,    -1,   148,    -1,
+     150,   151,    -1,    -1,   154,    23,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   163,    32,   165,    34,    -1,    -1,    -1,
+      -1,    -1,    40,   173,   174,    -1,    44,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    57,    -1,    59,    -1,    -1,    -1,    -1,    -1,
-      65,    66,    -1,    68,    -1,    -1,    -1,    72,    -1,    -1,
-      75,    -1,    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,     4,    -1,    -1,    93,    -1,
-      95,    96,    97,    98,    -1,    -1,   101,    -1,    -1,   104,
-      -1,    -1,    -1,   108,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    31,    -1,    33,    -1,    -1,    -1,    -1,    -1,
-      39,    -1,    -1,    -1,    43,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   137,    -1,    -1,    -1,    -1,   142,   143,   144,
-      59,    -1,   147,    -1,   149,    -1,    65,    66,   153,    68,
-      -1,    -1,    -1,    72,    -1,    -1,    75,   162,    -1,   164,
-      -1,    -1,    -1,    82,    -1,    -1,    -1,   172,   173,    -1,
-      -1,     4,    -1,    -1,    93,    -1,    95,    96,    97,    -1,
-      -1,    -1,    -1,    -1,    -1,   104,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    31,    -1,
-      33,    -1,    -1,    -1,    -1,    -1,    39,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   137,    -1,
-      -1,    -1,    -1,   142,   143,   144,    59,    -1,   147,    -1,
-     149,    -1,    65,    66,   153,    -1,    -1,    -1,    -1,    72,
-      -1,    -1,    75,   162,    -1,   164,    -1,    -1,    -1,    82,
-      -1,    -1,    -1,   172,   173,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    95,    96,    97,    -1,    -1,    -1,    -1,    -1,
-      -1,   104,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   191,    60,    -1,    -1,    -1,    -1,    -1,    66,    67,
+      -1,    69,   202,    -1,    -1,    73,    -1,    -1,    76,    -1,
+      -1,    -1,    -1,    -1,    -1,    83,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,     5,    -1,    -1,    94,    -1,    96,    97,
+      98,    -1,    -1,    -1,    -1,    -1,    -1,   105,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    -1,    -1,    -1,
+      32,    -1,    34,    -1,    -1,    -1,    -1,    -1,    40,    -1,
+      -1,    -1,    44,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     138,    -1,    -1,    -1,    -1,   143,   144,   145,    60,    -1,
+     148,    -1,   150,    -1,    66,    67,   154,    69,    -1,    -1,
+      -1,    73,    -1,    -1,    76,   163,    -1,   165,    -1,    -1,
+      -1,    83,    -1,    -1,    -1,   173,   174,    -1,    -1,    -1,
+      -1,    -1,    94,    -1,    96,    97,    98,    -1,    -1,    -1,
+      -1,    -1,    -1,   105,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,    -1,   202,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    14,
+      15,    16,    17,    18,    19,    20,   138,    -1,    -1,    -1,
+      -1,   143,   144,   145,    -1,    -1,   148,    -1,   150,    -1,
+      -1,    -1,   154,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   163,    -1,   165,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   173,   174,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,    -1,    -1,    -1,    -1,   182,    -1,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,   193,    -1,    -1,
+     202,    -1,    -1,    -1,    -1,   201,   202,    -1,    -1,    -1,
+      -1,    -1,   208,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    14,    15,    16,    17,    18,    19,    20,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   182,    -1,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,   193,    14,    15,    16,    17,    18,    19,
+      20,   201,   202,    -1,    -1,    -1,    -1,    -1,   208,   184,
+     185,   186,   187,   188,   189,   190,   191,   192,   193,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   201,   202,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   142,
-     143,   144,    -1,    -1,   147,    -1,    -1,    -1,    -1,    -1,
-     153,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   162,
-      -1,   164,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   172,
-     173,    23,    -1,    25,    26,    27,    28,    29,    30,    -1,
-      32,    -1,    -1,    35,    -1,    37,    -1,    -1,    -1,    41,
-      42,    -1,    44,    45,    46,    47,    -1,    49,    50,    51,
-      52,    53,    54,    55,    56,    -1,    58,    -1,    60,    61,
-      62,    63,    64,    -1,    -1,    67,    -1,    -1,    -1,    71,
-      -1,    73,    74,    -1,    76,    77,    78,    79,    80,    81,
-      -1,    83,    84,    85,    86,    87,    88,    -1,    -1,    91,
-      -1,    -1,    94,    -1,    -1,    -1,    -1,    99,   100,    -1,
-     102,   103,    -1,   105,   106,    -1,    -1,    -1,   110,   111,
-     112,   113,   114,   115,    -1,   117,   118,   119,   120,   121,
-     122,   123,    -1,   125,   126,    -1,   128,   129,   130,   131,
-     132,   133,   134,   135,   136,    -1,   138,   139,   140,   141,
-      -1,    -1,    -1,   145,    -1,    -1,   148,    -1,    -1,   151,
-     152,    -1,    -1,   155,   156,   157,   158,    -1,    -1,   161,
-      -1,   163,    -1,   165,   166,   167,   168,   169,   170,   171,
-      -1,    -1,   174
+      -1,   182,    -1,   184,   185,   186,   187,   188,   189,   190,
+     191,   192,   193,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     201,   202,   203,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   182,   183,   184,   185,   186,   187,   188,   189,   190,
+     191,   192,   193,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     201,   202,   182,    -1,   184,   185,   186,   187,   188,   189,
+     190,   191,   192,   193,     5,    -1,    -1,    -1,    -1,    -1,
+      -1,   201,   202,   185,   186,   187,   188,   189,   190,   191,
+     192,   193,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   201,
+     202,    32,    -1,    34,    -1,    -1,    -1,    -1,    -1,    40,
+      41,    -1,    -1,    44,    -1,    -1,   186,   187,   188,   189,
+     190,   191,   192,   193,    -1,    -1,    -1,    58,    -1,    60,
+      -1,   201,   202,    -1,    -1,    66,    67,    -1,    69,    -1,
+      -1,    -1,    73,    -1,    -1,    76,    -1,    -1,    -1,    -1,
+      -1,    -1,    83,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+       5,    -1,    -1,    94,    -1,    96,    97,    98,    99,    -1,
+      -1,   102,    -1,    -1,   105,    -1,    -1,    -1,   109,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    32,    -1,    34,
+      -1,    -1,    -1,    -1,    -1,    40,    -1,    -1,    -1,    44,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   138,    -1,    -1,
+      -1,    -1,   143,   144,   145,    60,    -1,   148,    -1,   150,
+      -1,    66,    67,   154,    69,    -1,    -1,    -1,    73,    -1,
+      -1,    76,   163,    -1,   165,    -1,    -1,    -1,    83,    -1,
+      -1,    -1,   173,   174,    -1,    -1,     5,    -1,    -1,    94,
+      -1,    96,    97,    98,    -1,    -1,    -1,    -1,    -1,    -1,
+     105,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    32,    -1,    34,    -1,    -1,    -1,    -1,
+      -1,    40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   138,    -1,    -1,    -1,    -1,   143,   144,
+     145,    60,    -1,   148,    -1,   150,    -1,    66,    67,   154,
+      -1,    -1,    -1,    -1,    73,    -1,    -1,    76,   163,    -1,
+     165,    -1,    -1,    -1,    83,    -1,    -1,    -1,   173,   174,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    96,    97,    98,
+      -1,    -1,    -1,    -1,    -1,    -1,   105,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   143,   144,   145,    -1,    -1,   148,
+      -1,    -1,    -1,    -1,    -1,   154,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   163,    -1,   165,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   173,   174,    24,    -1,    26,    27,
+      28,    29,    30,    31,    -1,    33,    -1,    -1,    36,    -1,
+      38,    -1,    -1,    -1,    42,    43,    -1,    45,    46,    47,
+      48,    -1,    50,    51,    52,    53,    54,    55,    56,    57,
+      -1,    59,    -1,    61,    62,    63,    64,    65,    -1,    -1,
+      68,    -1,    -1,    -1,    72,    -1,    74,    75,    -1,    77,
+      78,    79,    80,    81,    82,    -1,    84,    85,    86,    87,
+      88,    89,    -1,    -1,    92,    -1,    -1,    95,    -1,    -1,
+      -1,    -1,   100,   101,    -1,   103,   104,    -1,   106,   107,
+      -1,    -1,    -1,   111,   112,   113,   114,   115,   116,    -1,
+     118,   119,   120,   121,   122,   123,   124,    -1,   126,   127,
+      -1,   129,   130,   131,   132,   133,   134,   135,   136,   137,
+      -1,   139,   140,   141,   142,    -1,    -1,    -1,   146,    -1,
+      -1,   149,    -1,    -1,   152,   153,    -1,    -1,   156,   157,
+     158,   159,    -1,    -1,   162,    -1,   164,    -1,   166,   167,
+     168,   169,   170,   171,   172,    -1,    -1,   175
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
    symbol of state STATE-NUM.  */
 static const yytype_uint16 yystos[] =
 {
-       0,   210,   211,     0,     4,    31,    33,    39,    40,    43,
-      48,    57,    59,    65,    66,    68,    72,    75,    82,    89,
-      93,    95,    96,    97,    98,   104,   109,   137,   142,   143,
-     144,   147,   149,   153,   162,   164,   172,   173,   201,   215,
-     216,   217,   218,   219,   222,   223,   229,   230,   241,   255,
-     259,   261,   262,   263,   264,   265,   268,   269,   272,   274,
-     275,   276,   277,   279,   280,   281,   282,   283,   285,   287,
-     305,   306,   307,   308,     3,     4,   206,     3,     4,     3,
-       4,   257,    95,   260,     8,     3,     4,   260,     3,   206,
-     260,   261,     3,   257,     3,   257,   261,    23,    25,    26,
-      27,    28,    29,    30,    32,    35,    37,    41,    42,    44,
-      45,    46,    47,    49,    50,    51,    52,    53,    54,    55,
-      56,    58,    60,    61,    62,    63,    64,    67,    71,    73,
-      74,    76,    77,    78,    79,    80,    81,    83,    84,    85,
-      86,    87,    88,    91,    94,    99,   100,   102,   103,   105,
-     106,   110,   111,   112,   113,   114,   115,   117,   118,   119,
-     120,   121,   122,   123,   125,   126,   128,   129,   130,   131,
-     132,   133,   134,   135,   136,   138,   139,   140,   141,   145,
-     148,   151,   152,   155,   156,   157,   158,   161,   163,   165,
-     166,   167,   168,   169,   170,   171,   174,   231,   233,   304,
-     205,   212,   212,   160,    65,   101,   108,   153,   162,   221,
-     241,   262,   268,   274,   278,   285,   305,   308,   205,   205,
-     203,   203,   205,   203,   205,   214,   205,   182,   273,   203,
-     286,   287,   286,   286,     3,     4,    38,    70,   124,   150,
-     190,   206,   235,   258,   288,   289,   302,   241,   305,   306,
-     308,   286,   205,     8,   203,   205,   306,   203,   154,   203,
-     206,   206,   206,   206,   206,   206,   206,   206,   206,   206,
-     206,   206,   206,   206,   206,   206,   206,   206,   206,   206,
-     206,   206,   206,   206,   206,   206,   206,   206,   206,   206,
-     206,   206,   206,   180,   202,    12,    90,   215,   220,   223,
-     262,   264,   265,   276,   277,   280,   204,   229,   230,     3,
-       3,     3,     4,     3,     3,   203,   302,   266,   211,   127,
-     270,   274,     3,     4,   203,   213,   284,   288,   288,   208,
-     201,   206,   228,   286,   207,   238,   239,   240,   258,   207,
-     248,   206,   251,     8,     8,    11,   234,   258,     3,     5,
-       6,     7,     8,     9,    10,    69,   116,   146,   159,   185,
-     188,   189,   190,   193,   194,   206,   244,   245,   246,   244,
-     247,     8,     8,   232,   247,   246,     8,     8,   246,     8,
-     246,   244,   227,   230,   285,   246,   242,   243,   244,     8,
-     304,     8,   246,   306,   242,   244,   306,   175,   176,   177,
-     178,   179,   303,   306,   306,   234,     5,     6,   309,     8,
-     306,   233,   201,   206,   205,   203,   214,   285,   204,   229,
-     267,   204,   182,   107,   229,   253,   271,   205,   203,   213,
-     204,   215,   230,   283,   288,   207,   247,   190,   202,   244,
-     224,   225,   226,   227,   204,   180,   208,   204,   229,   249,
-     253,   204,   230,   250,   253,   207,   207,   207,   206,   244,
-     244,   244,   244,   244,   244,   244,   285,    13,    14,    15,
-      16,    17,    18,    19,    20,    21,   181,   183,   184,   185,
-     186,   187,   188,   189,   190,   191,   192,   200,   201,   180,
-     207,   207,   207,   180,   207,   207,   207,   207,   207,   207,
-     207,   207,   207,   207,   285,   190,   206,   228,   235,   258,
-     294,   296,   297,   207,   180,   207,   207,   207,   207,   180,
-     207,   207,   207,   207,   207,   207,   207,   207,   200,   207,
-     207,   207,   233,     8,   212,   288,   298,   214,   277,   182,
-     285,   305,   205,   204,   230,   254,   255,   204,   219,   204,
-     214,   202,   202,   207,   180,   240,   246,   285,   308,   207,
-     205,   205,   285,   207,   190,   206,   228,   235,   290,   292,
-     293,   244,   244,     3,   244,   244,   244,   244,   244,   244,
-     244,   244,   244,   244,   244,   244,   244,   244,   244,   244,
-     244,     3,   244,   246,     8,   296,   284,   190,   224,   235,
-     295,   296,   206,   228,   243,   246,     5,   207,   204,   180,
-     288,   205,   213,   214,    22,   227,   294,   300,   301,   205,
-     256,   258,   292,   284,   190,   224,   235,   291,   292,   207,
-     206,   228,   182,   202,   296,   284,   207,   296,   207,   224,
-     207,   214,   288,   204,   182,   299,   180,   205,   203,   207,
-     292,   284,   207,   296,   207,   244,   224,   244,   296,   207,
-     214,   247,   300,   236,   296,   207,    37,    50,   204,   237,
-     246,   182,   182,   205,   252,   253,   252,   205
+       0,   211,   212,     0,     4,     5,    32,    34,    40,    41,
+      44,    49,    58,    60,    66,    67,    69,    73,    76,    83,
+      90,    94,    96,    97,    98,    99,   105,   110,   138,   143,
+     144,   145,   148,   150,   154,   163,   165,   173,   174,   202,
+     216,   217,   218,   219,   220,   223,   224,   230,   231,   242,
+     256,   260,   262,   263,   264,   265,   266,   269,   270,   273,
+     275,   276,   277,   278,   280,   281,   282,   283,   284,   286,
+     288,   306,   307,   308,   309,     3,     5,   207,     3,     5,
+       3,     5,   258,    96,   261,     9,     3,     5,   261,     3,
+     207,   261,   262,     3,   258,     3,   258,   262,    24,    26,
+      27,    28,    29,    30,    31,    33,    36,    38,    42,    43,
+      45,    46,    47,    48,    50,    51,    52,    53,    54,    55,
+      56,    57,    59,    61,    62,    63,    64,    65,    68,    72,
+      74,    75,    77,    78,    79,    80,    81,    82,    84,    85,
+      86,    87,    88,    89,    92,    95,   100,   101,   103,   104,
+     106,   107,   111,   112,   113,   114,   115,   116,   118,   119,
+     120,   121,   122,   123,   124,   126,   127,   129,   130,   131,
+     132,   133,   134,   135,   136,   137,   139,   140,   141,   142,
+     146,   149,   152,   153,   156,   157,   158,   159,   162,   164,
+     166,   167,   168,   169,   170,   171,   172,   175,   232,   234,
+     305,   206,   213,   213,   161,    66,   102,   109,   154,   163,
+     222,   242,   263,   269,   275,   279,   286,   306,   309,   206,
+     206,   204,   204,   206,   204,   206,   215,   206,   183,   274,
+     204,   287,   288,   287,   287,     3,     5,    39,    71,   125,
+     151,   191,   207,   236,   259,   289,   290,   303,   242,   306,
+     307,   309,   287,   206,     9,   204,   206,   307,   204,   155,
+     204,   207,   207,   207,   207,   207,   207,   207,   207,   207,
+     207,   207,   207,   207,   207,   207,   207,   207,   207,   207,
+     207,   207,   207,   207,   207,   207,   207,   207,   207,   207,
+     207,   207,   207,   207,   181,   203,    13,    91,   216,   221,
+     224,   263,   265,   266,   277,   278,   281,   205,   230,   231,
+       3,     3,     3,     5,     3,     3,   204,   303,   267,   212,
+     128,   271,   275,     3,     5,   204,   214,   285,   289,   289,
+     209,   202,   207,   229,   287,   208,   239,   240,   241,   259,
+     208,   249,   207,   252,     9,     9,    12,   235,   259,     3,
+       6,     7,     8,     9,    10,    11,    70,   117,   147,   160,
+     186,   189,   190,   191,   194,   195,   207,   245,   246,   247,
+     245,   248,     9,     9,   233,   248,   247,     9,     9,   247,
+       9,   247,   245,   228,   231,   286,   247,   243,   244,   245,
+       9,   305,     9,   247,   307,   243,   245,   307,   176,   177,
+     178,   179,   180,   304,   307,   307,   235,     6,     7,   310,
+       9,   307,   234,   202,   207,   206,   204,   215,   286,   205,
+     230,   268,   205,   183,   108,   230,   254,   272,   206,   204,
+     214,   205,   216,   231,   284,   289,   208,   248,   191,   203,
+     245,   225,   226,   227,   228,   205,   181,   209,   205,   230,
+     250,   254,   205,   231,   251,   254,   208,   208,   208,   207,
+     245,   245,   245,   245,   245,   245,   245,   286,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,   182,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,   193,   201,   202,
+     181,   208,   208,   208,   181,   208,   208,   208,   208,   208,
+     208,   208,   208,   208,   208,   286,   191,   207,   229,   236,
+     259,   295,   297,   298,   208,   181,   208,   208,   208,   208,
+     181,   208,   208,   208,   208,   208,   208,   208,   208,   201,
+     208,   208,   208,   234,     9,   213,   289,   299,   215,   278,
+     183,   286,   306,   206,   205,   231,   255,   256,   205,   220,
+     205,   215,   203,   203,   208,   181,   241,   247,   286,   309,
+     208,   206,   206,   286,   208,   191,   207,   229,   236,   291,
+     293,   294,   245,   245,     3,   245,   245,   245,   245,   245,
+     245,   245,   245,   245,   245,   245,   245,   245,   245,   245,
+     245,   245,     3,   245,   247,     9,   297,   285,   191,   225,
+     236,   296,   297,   207,   229,   244,   247,     6,   208,   205,
+     181,   289,   206,   214,   215,    23,   228,   295,   301,   302,
+     206,   257,   259,   293,   285,   191,   225,   236,   292,   293,
+     208,   207,   229,   183,   203,   297,   285,   208,   297,   208,
+     225,   208,   215,   289,   205,   183,   300,   181,   206,   204,
+     208,   293,   285,   208,   297,   208,   245,   225,   245,   297,
+     208,   215,   248,   301,   237,   297,   208,    38,    51,   205,
+     238,   247,   183,   183,   206,   253,   254,   253,   206
 };
 
 #define yyerrok		(yyerrstatus = 0)
@@ -2071,72 +2096,35 @@
 
 #define YYRECOVERING()  (!!yyerrstatus)
 
-#define YYBACKUP(Token, Value)					\
-do								\
-  if (yychar == YYEMPTY && yylen == 1)				\
-    {								\
-      yychar = (Token);						\
-      yylval = (Value);						\
-      yytoken = YYTRANSLATE (yychar);				\
-      YYPOPSTACK (1);						\
-      goto yybackup;						\
-    }								\
-  else								\
-    {								\
+#define YYBACKUP(Token, Value)                                  \
+do                                                              \
+  if (yychar == YYEMPTY)                                        \
+    {                                                           \
+      yychar = (Token);                                         \
+      yylval = (Value);                                         \
+      YYPOPSTACK (yylen);                                       \
+      yystate = *yyssp;                                         \
+      goto yybackup;                                            \
+    }                                                           \
+  else                                                          \
+    {                                                           \
       yyerror (YY_("syntax error: cannot back up")); \
       YYERROR;							\
     }								\
 while (YYID (0))
 
-
+/* Error token number */
 #define YYTERROR	1
 #define YYERRCODE	256
 
 
-/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
-   If N is 0, then set CURRENT to the empty location which ends
-   the previous symbol: RHS[0] (always defined).  */
-
-#define YYRHSLOC(Rhs, K) ((Rhs)[K])
-#ifndef YYLLOC_DEFAULT
-# define YYLLOC_DEFAULT(Current, Rhs, N)				\
-    do									\
-      if (YYID (N))                                                    \
-	{								\
-	  (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;	\
-	  (Current).first_column = YYRHSLOC (Rhs, 1).first_column;	\
-	  (Current).last_line    = YYRHSLOC (Rhs, N).last_line;		\
-	  (Current).last_column  = YYRHSLOC (Rhs, N).last_column;	\
-	}								\
-      else								\
-	{								\
-	  (Current).first_line   = (Current).last_line   =		\
-	    YYRHSLOC (Rhs, 0).last_line;				\
-	  (Current).first_column = (Current).last_column =		\
-	    YYRHSLOC (Rhs, 0).last_column;				\
-	}								\
-    while (YYID (0))
-#endif
-
-
-/* YY_LOCATION_PRINT -- Print the location on the stream.
-   This macro was not mandated originally: define only if we know
-   we won't break user code: when these are the locations we know.  */
-
+/* This macro is provided for backward compatibility. */
 #ifndef YY_LOCATION_PRINT
-# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
-#  define YY_LOCATION_PRINT(File, Loc)			\
-     fprintf (File, "%d.%d-%d.%d",			\
-	      (Loc).first_line, (Loc).first_column,	\
-	      (Loc).last_line,  (Loc).last_column)
-# else
-#  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
-# endif
+# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
 #endif
 
 
 /* YYLEX -- calling `yylex' with the right arguments.  */
-
 #ifdef YYLEX_PARAM
 # define YYLEX yylex (YYLEX_PARAM)
 #else
@@ -2186,6 +2174,8 @@
     YYSTYPE const * const yyvaluep;
 #endif
 {
+  FILE *yyo = yyoutput;
+  YYUSE (yyo);
   if (!yyvaluep)
     return;
 # ifdef YYPRINT
@@ -2194,11 +2184,7 @@
 # else
   YYUSE (yyoutput);
 # endif
-  switch (yytype)
-    {
-      default:
-	break;
-    }
+  YYUSE (yytype);
 }
 
 
@@ -2323,7 +2309,6 @@
 # define YYMAXDEPTH 10000
 #endif
 
-
 
 #if YYERROR_VERBOSE
 
@@ -2426,115 +2411,145 @@
 }
 # endif
 
-/* Copy into YYRESULT an error message about the unexpected token
-   YYCHAR while in state YYSTATE.  Return the number of bytes copied,
-   including the terminating null byte.  If YYRESULT is null, do not
-   copy anything; just return the number of bytes that would be
-   copied.  As a special case, return 0 if an ordinary "syntax error"
-   message will do.  Return YYSIZE_MAXIMUM if overflow occurs during
-   size calculation.  */
-static YYSIZE_T
-yysyntax_error (char *yyresult, int yystate, int yychar)
+/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
+   about the unexpected token YYTOKEN for the state stack whose top is
+   YYSSP.
+
+   Return 0 if *YYMSG was successfully written.  Return 1 if *YYMSG is
+   not large enough to hold the message.  In that case, also set
+   *YYMSG_ALLOC to the required number of bytes.  Return 2 if the
+   required number of bytes is too large to store.  */
+static int
+yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
+                yytype_int16 *yyssp, int yytoken)
 {
-  int yyn = yypact[yystate];
+  YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]);
+  YYSIZE_T yysize = yysize0;
+  enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
+  /* Internationalized format string. */
+  const char *yyformat = YY_NULL;
+  /* Arguments of yyformat. */
+  char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
+  /* Number of reported tokens (one for the "unexpected", one per
+     "expected"). */
+  int yycount = 0;
 
-  if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
-    return 0;
-  else
+  /* There are many possibilities here to consider:
+     - Assume YYFAIL is not used.  It's too flawed to consider.  See
+       <http://lists.gnu.org/archive/html/bison-patches/2009-12/msg00024.html>
+       for details.  YYERROR is fine as it does not invoke this
+       function.
+     - If this state is a consistent state with a default action, then
+       the only way this function was invoked is if the default action
+       is an error action.  In that case, don't check for expected
+       tokens because there are none.
+     - The only way there can be no lookahead present (in yychar) is if
+       this state is a consistent state with a default action.  Thus,
+       detecting the absence of a lookahead is sufficient to determine
+       that there is no unexpected or expected token to report.  In that
+       case, just report a simple "syntax error".
+     - Don't assume there isn't a lookahead just because this state is a
+       consistent state with a default action.  There might have been a
+       previous inconsistent state, consistent state with a non-default
+       action, or user semantic action that manipulated yychar.
+     - Of course, the expected token list depends on states to have
+       correct lookahead information, and it depends on the parser not
+       to perform extra reductions after fetching a lookahead from the
+       scanner and before detecting a syntax error.  Thus, state merging
+       (from LALR or IELR) and default reductions corrupt the expected
+       token list.  However, the list is correct for canonical LR with
+       one exception: it will still contain any token that will not be
+       accepted due to an error action in a later state.
+  */
+  if (yytoken != YYEMPTY)
     {
-      int yytype = YYTRANSLATE (yychar);
-      YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
-      YYSIZE_T yysize = yysize0;
-      YYSIZE_T yysize1;
-      int yysize_overflow = 0;
-      enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
-      char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
-      int yyx;
+      int yyn = yypact[*yyssp];
+      yyarg[yycount++] = yytname[yytoken];
+      if (!yypact_value_is_default (yyn))
+        {
+          /* Start YYX at -YYN if negative to avoid negative indexes in
+             YYCHECK.  In other words, skip the first -YYN actions for
+             this state because they are default actions.  */
+          int yyxbegin = yyn < 0 ? -yyn : 0;
+          /* Stay within bounds of both yycheck and yytname.  */
+          int yychecklim = YYLAST - yyn + 1;
+          int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
+          int yyx;
 
-# if 0
-      /* This is so xgettext sees the translatable formats that are
-	 constructed on the fly.  */
-      YY_("syntax error, unexpected %s");
-      YY_("syntax error, unexpected %s, expecting %s");
-      YY_("syntax error, unexpected %s, expecting %s or %s");
-      YY_("syntax error, unexpected %s, expecting %s or %s or %s");
-      YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
-# endif
-      char *yyfmt;
-      char const *yyf;
-      static char const yyunexpected[] = "syntax error, unexpected %s";
-      static char const yyexpecting[] = ", expecting %s";
-      static char const yyor[] = " or %s";
-      char yyformat[sizeof yyunexpected
-		    + sizeof yyexpecting - 1
-		    + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
-		       * (sizeof yyor - 1))];
-      char const *yyprefix = yyexpecting;
-
-      /* Start YYX at -YYN if negative to avoid negative indexes in
-	 YYCHECK.  */
-      int yyxbegin = yyn < 0 ? -yyn : 0;
-
-      /* Stay within bounds of both yycheck and yytname.  */
-      int yychecklim = YYLAST - yyn + 1;
-      int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
-      int yycount = 1;
-
-      yyarg[0] = yytname[yytype];
-      yyfmt = yystpcpy (yyformat, yyunexpected);
-
-      for (yyx = yyxbegin; yyx < yyxend; ++yyx)
-	if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
-	  {
-	    if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
-	      {
-		yycount = 1;
-		yysize = yysize0;
-		yyformat[sizeof yyunexpected - 1] = '\0';
-		break;
-	      }
-	    yyarg[yycount++] = yytname[yyx];
-	    yysize1 = yysize + yytnamerr (0, yytname[yyx]);
-	    yysize_overflow |= (yysize1 < yysize);
-	    yysize = yysize1;
-	    yyfmt = yystpcpy (yyfmt, yyprefix);
-	    yyprefix = yyor;
-	  }
-
-      yyf = YY_(yyformat);
-      yysize1 = yysize + yystrlen (yyf);
-      yysize_overflow |= (yysize1 < yysize);
-      yysize = yysize1;
-
-      if (yysize_overflow)
-	return YYSIZE_MAXIMUM;
-
-      if (yyresult)
-	{
-	  /* Avoid sprintf, as that infringes on the user's name space.
-	     Don't have undefined behavior even if the translation
-	     produced a string with the wrong number of "%s"s.  */
-	  char *yyp = yyresult;
-	  int yyi = 0;
-	  while ((*yyp = *yyf) != '\0')
-	    {
-	      if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
-		{
-		  yyp += yytnamerr (yyp, yyarg[yyi++]);
-		  yyf += 2;
-		}
-	      else
-		{
-		  yyp++;
-		  yyf++;
-		}
-	    }
-	}
-      return yysize;
+          for (yyx = yyxbegin; yyx < yyxend; ++yyx)
+            if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
+                && !yytable_value_is_error (yytable[yyx + yyn]))
+              {
+                if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
+                  {
+                    yycount = 1;
+                    yysize = yysize0;
+                    break;
+                  }
+                yyarg[yycount++] = yytname[yyx];
+                {
+                  YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]);
+                  if (! (yysize <= yysize1
+                         && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
+                    return 2;
+                  yysize = yysize1;
+                }
+              }
+        }
     }
+
+  switch (yycount)
+    {
+# define YYCASE_(N, S)                      \
+      case N:                               \
+        yyformat = S;                       \
+      break
+      YYCASE_(0, YY_("syntax error"));
+      YYCASE_(1, YY_("syntax error, unexpected %s"));
+      YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
+      YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
+      YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
+      YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
+# undef YYCASE_
+    }
+
+  {
+    YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
+    if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
+      return 2;
+    yysize = yysize1;
+  }
+
+  if (*yymsg_alloc < yysize)
+    {
+      *yymsg_alloc = 2 * yysize;
+      if (! (yysize <= *yymsg_alloc
+             && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
+        *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
+      return 1;
+    }
+
+  /* Avoid sprintf, as that infringes on the user's name space.
+     Don't have undefined behavior even if the translation
+     produced a string with the wrong number of "%s"s.  */
+  {
+    char *yyp = *yymsg;
+    int yyi = 0;
+    while ((*yyp = *yyformat) != '\0')
+      if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
+        {
+          yyp += yytnamerr (yyp, yyarg[yyi++]);
+          yyformat += 2;
+        }
+      else
+        {
+          yyp++;
+          yyformat++;
+        }
+  }
+  return 0;
 }
 #endif /* YYERROR_VERBOSE */
-
 
 /*-----------------------------------------------.
 | Release the memory associated to this symbol.  |
@@ -2559,44 +2574,34 @@
     yymsg = "Deleting";
   YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
 
-  switch (yytype)
-    {
-
-      default:
-	break;
-    }
+  YYUSE (yytype);
 }
 
-/* Prevent warnings from -Wmissing-prototypes.  */
-#ifdef YYPARSE_PARAM
-#if defined __STDC__ || defined __cplusplus
-int yyparse (void *YYPARSE_PARAM);
-#else
-int yyparse ();
-#endif
-#else /* ! YYPARSE_PARAM */
-#if defined __STDC__ || defined __cplusplus
-int yyparse (void);
-#else
-int yyparse ();
-#endif
-#endif /* ! YYPARSE_PARAM */
+
 
 
 /* The lookahead symbol.  */
 int yychar;
 
+
+#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+# define YY_IGNORE_MAYBE_UNINITIALIZED_END
+#endif
+#ifndef YY_INITIAL_VALUE
+# define YY_INITIAL_VALUE(Value) /* Nothing. */
+#endif
+
 /* The semantic value of the lookahead symbol.  */
-YYSTYPE yylval;
+YYSTYPE yylval YY_INITIAL_VALUE(yyval_default);
 
 /* Number of syntax errors so far.  */
 int yynerrs;
 
 
-
-/*-------------------------.
-| yyparse or yypush_parse.  |
-`-------------------------*/
+/*----------.
+| yyparse.  |
+`----------*/
 
 #ifdef YYPARSE_PARAM
 #if (defined __STDC__ || defined __C99__FUNC__ \
@@ -2620,8 +2625,6 @@
 #endif
 #endif
 {
-
-
     int yystate;
     /* Number of tokens to shift before error messages enabled.  */
     int yyerrstatus;
@@ -2630,7 +2633,7 @@
        `yyss': related to states.
        `yyvs': related to semantic values.
 
-       Refer to the stacks thru separate pointers, to allow yyoverflow
+       Refer to the stacks through separate pointers, to allow yyoverflow
        to reallocate them elsewhere.  */
 
     /* The state stack.  */
@@ -2648,7 +2651,7 @@
   int yyn;
   int yyresult;
   /* Lookahead token as an internal (translated) token number.  */
-  int yytoken;
+  int yytoken = 0;
   /* The variables used to return semantic value and location from the
      action routines.  */
   YYSTYPE yyval;
@@ -2666,9 +2669,8 @@
      Keep to zero when no symbol should be popped.  */
   int yylen = 0;
 
-  yytoken = 0;
-  yyss = yyssa;
-  yyvs = yyvsa;
+  yyssp = yyss = yyssa;
+  yyvsp = yyvs = yyvsa;
   yystacksize = YYINITDEPTH;
 
   YYDPRINTF ((stderr, "Starting parse\n"));
@@ -2677,14 +2679,6 @@
   yyerrstatus = 0;
   yynerrs = 0;
   yychar = YYEMPTY; /* Cause a token to be read.  */
-
-  /* Initialize stack pointers.
-     Waste one element of value and location stack
-     so that they stay on the same level as the state stack.
-     The wasted elements are never initialized.  */
-  yyssp = yyss;
-  yyvsp = yyvs;
-
   goto yysetstate;
 
 /*------------------------------------------------------------.
@@ -2776,7 +2770,7 @@
 
   /* First try to decide what to do without reference to lookahead token.  */
   yyn = yypact[yystate];
-  if (yyn == YYPACT_NINF)
+  if (yypact_value_is_default (yyn))
     goto yydefault;
 
   /* Not known => get a lookahead token if don't already have one.  */
@@ -2807,8 +2801,8 @@
   yyn = yytable[yyn];
   if (yyn <= 0)
     {
-      if (yyn == 0 || yyn == YYTABLE_NINF)
-	goto yyerrlab;
+      if (yytable_value_is_error (yyn))
+        goto yyerrlab;
       yyn = -yyn;
       goto yyreduce;
     }
@@ -2825,7 +2819,9 @@
   yychar = YYEMPTY;
 
   yystate = yyn;
+  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
   *++yyvsp = yylval;
+  YY_IGNORE_MAYBE_UNINITIALIZED_END
 
   goto yynewstate;
 
@@ -2862,9 +2858,8 @@
   switch (yyn)
     {
         case 2:
-
-/* Line 1464 of yacc.c  */
-#line 331 "parser.y"
+/* Line 1787 of yacc.c  */
+#line 308 "parser.y"
     { fix_incomplete();
 						  check_statements((yyvsp[(1) - (1)].stmt_list), FALSE);
 						  check_all_user_types((yyvsp[(1) - (1)].stmt_list));
@@ -2876,1225 +2871,1063 @@
 						  write_regscript((yyvsp[(1) - (1)].stmt_list));
 						  write_dlldata((yyvsp[(1) - (1)].stmt_list));
 						  write_local_stubs((yyvsp[(1) - (1)].stmt_list));
-						;}
+						}
     break;
 
   case 3:
-
-/* Line 1464 of yacc.c  */
-#line 345 "parser.y"
-    { (yyval.stmt_list) = NULL; ;}
+/* Line 1787 of yacc.c  */
+#line 322 "parser.y"
+    { (yyval.stmt_list) = NULL; }
     break;
 
   case 4:
-
-/* Line 1464 of yacc.c  */
-#line 347 "parser.y"
-    { (yyval.stmt_list) = append_statements((yyvsp[(1) - (5)].stmt_list), (yyvsp[(4) - (5)].stmt_list)); ;}
+/* Line 1787 of yacc.c  */
+#line 324 "parser.y"
+    { (yyval.stmt_list) = append_statements((yyvsp[(1) - (5)].stmt_list), (yyvsp[(4) - (5)].stmt_list)); }
     break;
 
   case 5:
-
-/* Line 1464 of yacc.c  */
-#line 348 "parser.y"
-    { (yyval.stmt_list) = append_statement((yyvsp[(1) - (2)].stmt_list), make_statement_reference((yyvsp[(2) - (2)].type))); ;}
+/* Line 1787 of yacc.c  */
+#line 325 "parser.y"
+    { (yyval.stmt_list) = append_statement((yyvsp[(1) - (2)].stmt_list), make_statement_reference((yyvsp[(2) - (2)].type))); }
     break;
 
   case 6:
-
-/* Line 1464 of yacc.c  */
-#line 349 "parser.y"
-    { (yyval.stmt_list) = append_statement((yyvsp[(1) - (2)].stmt_list), make_statement_type_decl((yyvsp[(2) - (2)].type))); ;}
+/* Line 1787 of yacc.c  */
+#line 326 "parser.y"
+    { (yyval.stmt_list) = append_statement((yyvsp[(1) - (2)].stmt_list), make_statement_type_decl((yyvsp[(2) - (2)].type))); }
     break;
 
   case 7:
-
-/* Line 1464 of yacc.c  */
-#line 350 "parser.y"
+/* Line 1787 of yacc.c  */
+#line 327 "parser.y"
     { (yyval.stmt_list) = (yyvsp[(1) - (3)].stmt_list);
 						  reg_type((yyvsp[(2) - (3)].type), (yyvsp[(2) - (3)].type)->name, 0);
-						;}
+						}
     break;
 
   case 8:
-
-/* Line 1464 of yacc.c  */
-#line 353 "parser.y"
+/* Line 1787 of yacc.c  */
+#line 330 "parser.y"
     { (yyval.stmt_list) = append_statement((yyvsp[(1) - (2)].stmt_list), make_statement_type_decl((yyvsp[(2) - (2)].type)));
 						  reg_type((yyvsp[(2) - (2)].type), (yyvsp[(2) - (2)].type)->name, 0);
-						;}
+						}
     break;
 
   case 9:
-
-/* Line 1464 of yacc.c  */
-#line 356 "parser.y"
-    { (yyval.stmt_list) = append_statement((yyvsp[(1) - (2)].stmt_list), make_statement_module((yyvsp[(2) - (2)].type))); ;}
+/* Line 1787 of yacc.c  */
+#line 333 "parser.y"
+    { (yyval.stmt_list) = append_statement((yyvsp[(1) - (2)].stmt_list), make_statement_module((yyvsp[(2) - (2)].type))); }
     break;
 
   case 10:
-
-/* Line 1464 of yacc.c  */
-#line 357 "parser.y"
-    { (yyval.stmt_list) = append_statement((yyvsp[(1) - (2)].stmt_list), make_statement_library((yyvsp[(2) - (2)].typelib))); ;}
+/* Line 1787 of yacc.c  */
+#line 334 "parser.y"
+    { (yyval.stmt_list) = append_statement((yyvsp[(1) - (2)].stmt_list), make_statement_library((yyvsp[(2) - (2)].typelib))); }
     break;
 
   case 11:
-
-/* Line 1464 of yacc.c  */
-#line 358 "parser.y"
-    { (yyval.stmt_list) = append_statement((yyvsp[(1) - (2)].stmt_list), (yyvsp[(2) - (2)].statement)); ;}
+/* Line 1787 of yacc.c  */
+#line 335 "parser.y"
+    { (yyval.stmt_list) = append_statement((yyvsp[(1) - (2)].stmt_list), (yyvsp[(2) - (2)].statement)); }
     break;
 
   case 12:
-
-/* Line 1464 of yacc.c  */
-#line 361 "parser.y"
-    { (yyval.stmt_list) = NULL; ;}
+/* Line 1787 of yacc.c  */
+#line 338 "parser.y"
+    { (yyval.stmt_list) = NULL; }
     break;
 
   case 13:
-
-/* Line 1464 of yacc.c  */
-#line 362 "parser.y"
-    { (yyval.stmt_list) = append_statement((yyvsp[(1) - (2)].stmt_list), make_statement_reference((yyvsp[(2) - (2)].type))); ;}
+/* Line 1787 of yacc.c  */
+#line 339 "parser.y"
+    { (yyval.stmt_list) = append_statement((yyvsp[(1) - (2)].stmt_list), make_statement_reference((yyvsp[(2) - (2)].type))); }
     break;
 
   case 14:
-
-/* Line 1464 of yacc.c  */
-#line 363 "parser.y"
-    { (yyval.stmt_list) = append_statements((yyvsp[(1) - (5)].stmt_list), (yyvsp[(4) - (5)].stmt_list)); ;}
+/* Line 1787 of yacc.c  */
+#line 341 "parser.y"
+    { (yyval.stmt_list) = append_statements((yyvsp[(1) - (5)].stmt_list), (yyvsp[(4) - (5)].stmt_list)); }
     break;
 
   case 15:
-
-/* Line 1464 of yacc.c  */
-#line 364 "parser.y"
-    { (yyval.stmt_list) = append_statement((yyvsp[(1) - (2)].stmt_list), make_statement_type_decl((yyvsp[(2) - (2)].type))); ;}
+/* Line 1787 of yacc.c  */
+#line 342 "parser.y"
+    { (yyval.stmt_list) = append_statement((yyvsp[(1) - (2)].stmt_list), make_statement_type_decl((yyvsp[(2) - (2)].type))); }
     break;
 
   case 16:
-
-/* Line 1464 of yacc.c  */
-#line 365 "parser.y"
-    { (yyval.stmt_list) = (yyvsp[(1) - (3)].stmt_list); reg_type((yyvsp[(2) - (3)].type), (yyvsp[(2) - (3)].type)->name, 0); ;}
+/* Line 1787 of yacc.c  */
+#line 343 "parser.y"
+    { (yyval.stmt_list) = (yyvsp[(1) - (3)].stmt_list); reg_type((yyvsp[(2) - (3)].type), (yyvsp[(2) - (3)].type)->name, 0); }
     break;
 
   case 17:
-
-/* Line 1464 of yacc.c  */
-#line 366 "parser.y"
+/* Line 1787 of yacc.c  */
+#line 344 "parser.y"
     { (yyval.stmt_list) = append_statement((yyvsp[(1) - (2)].stmt_list), make_statement_type_decl((yyvsp[(2) - (2)].type)));
 						  reg_type((yyvsp[(2) - (2)].type), (yyvsp[(2) - (2)].type)->name, 0);
-						;}
+						}
     break;
 
   case 18:
-
-/* Line 1464 of yacc.c  */
-#line 369 "parser.y"
-    { (yyval.stmt_list) = append_statement((yyvsp[(1) - (2)].stmt_list), make_statement_module((yyvsp[(2) - (2)].type))); ;}
+/* Line 1787 of yacc.c  */
+#line 347 "parser.y"
+    { (yyval.stmt_list) = append_statement((yyvsp[(1) - (2)].stmt_list), make_statement_module((yyvsp[(2) - (2)].type))); }
     break;
 
   case 19:
-
-/* Line 1464 of yacc.c  */
-#line 370 "parser.y"
-    { (yyval.stmt_list) = append_statement((yyvsp[(1) - (2)].stmt_list), (yyvsp[(2) - (2)].statement)); ;}
+/* Line 1787 of yacc.c  */
+#line 348 "parser.y"
+    { (yyval.stmt_list) = append_statement((yyvsp[(1) - (2)].stmt_list), (yyvsp[(2) - (2)].statement)); }
     break;
 
   case 20:
-
-/* Line 1464 of yacc.c  */
-#line 371 "parser.y"
-    { (yyval.stmt_list) = append_statement((yyvsp[(1) - (2)].stmt_list), make_statement_importlib((yyvsp[(2) - (2)].str))); ;}
+/* Line 1787 of yacc.c  */
+#line 349 "parser.y"
+    { (yyval.stmt_list) = append_statement((yyvsp[(1) - (2)].stmt_list), make_statement_importlib((yyvsp[(2) - (2)].str))); }
     break;
 
   case 21:
-
-/* Line 1464 of yacc.c  */
-#line 372 "parser.y"
-    { (yyval.stmt_list) = append_statement((yyvsp[(1) - (2)].stmt_list), make_statement_library((yyvsp[(2) - (2)].typelib))); ;}
+/* Line 1787 of yacc.c  */
+#line 350 "parser.y"
+    { (yyval.stmt_list) = append_statement((yyvsp[(1) - (2)].stmt_list), make_statement_library((yyvsp[(2) - (2)].typelib))); }
     break;
 
   case 22:
-
-/* Line 1464 of yacc.c  */
-#line 375 "parser.y"
-    { (yyval.stmt_list) = NULL; ;}
+/* Line 1787 of yacc.c  */
+#line 353 "parser.y"
+    { (yyval.stmt_list) = NULL; }
     break;
 
   case 23:
-
-/* Line 1464 of yacc.c  */
-#line 376 "parser.y"
-    { (yyval.stmt_list) = append_statement((yyvsp[(1) - (2)].stmt_list), (yyvsp[(2) - (2)].statement)); ;}
+/* Line 1787 of yacc.c  */
+#line 354 "parser.y"
+    { (yyval.stmt_list) = append_statement((yyvsp[(1) - (2)].stmt_list), (yyvsp[(2) - (2)].statement)); }
     break;
 
   case 26:
-
-/* Line 1464 of yacc.c  */
-#line 384 "parser.y"
-    { (yyval.statement) = make_statement_cppquote((yyvsp[(1) - (1)].str)); ;}
+/* Line 1787 of yacc.c  */
+#line 362 "parser.y"
+    { (yyval.statement) = make_statement_cppquote((yyvsp[(1) - (1)].str)); }
     break;
 
   case 27:
-
-/* Line 1464 of yacc.c  */
-#line 385 "parser.y"
-    { (yyval.statement) = make_statement_type_decl((yyvsp[(1) - (2)].type)); ;}
+/* Line 1787 of yacc.c  */
+#line 363 "parser.y"
+    { (yyval.statement) = make_statement_type_decl((yyvsp[(1) - (2)].type)); }
     break;
 
   case 28:
-
-/* Line 1464 of yacc.c  */
-#line 386 "parser.y"
-    { (yyval.statement) = make_statement_declaration((yyvsp[(1) - (2)].var)); ;}
+/* Line 1787 of yacc.c  */
+#line 364 "parser.y"
+    { (yyval.statement) = make_statement_declaration((yyvsp[(1) - (2)].var)); }
     break;
 
   case 29:
-
-/* Line 1464 of yacc.c  */
-#line 387 "parser.y"
-    { (yyval.statement) = make_statement_import((yyvsp[(1) - (1)].str)); ;}
+/* Line 1787 of yacc.c  */
+#line 365 "parser.y"
+    { (yyval.statement) = make_statement_import((yyvsp[(1) - (1)].str)); }
     break;
 
   case 30:
-
-/* Line 1464 of yacc.c  */
-#line 388 "parser.y"
-    { (yyval.statement) = (yyvsp[(1) - (2)].statement); ;}
+/* Line 1787 of yacc.c  */
+#line 366 "parser.y"
+    { (yyval.statement) = (yyvsp[(1) - (2)].statement); }
     break;
 
-  case 32:
-
-/* Line 1464 of yacc.c  */
-#line 393 "parser.y"
-    { (yyval.type) = type_new_enum((yyvsp[(2) - (2)].str), FALSE, NULL); ;}
+  case 31:
+/* Line 1787 of yacc.c  */
+#line 367 "parser.y"
+    { (yyval.statement) = make_statement_pragma((yyvsp[(1) - (1)].str)); }
     break;
 
-  case 34:
-
-/* Line 1464 of yacc.c  */
-#line 395 "parser.y"
-    { (yyval.type) = type_new_struct((yyvsp[(2) - (2)].str), FALSE, NULL); ;}
+  case 33:
+/* Line 1787 of yacc.c  */
+#line 372 "parser.y"
+    { (yyval.type) = type_new_enum((yyvsp[(2) - (2)].str), FALSE, NULL); }
     break;
 
-  case 36:
-
-/* Line 1464 of yacc.c  */
-#line 397 "parser.y"
-    { (yyval.type) = type_new_nonencapsulated_union((yyvsp[(2) - (2)].str), FALSE, NULL); ;}
+  case 35:
+/* Line 1787 of yacc.c  */
+#line 374 "parser.y"
+    { (yyval.type) = type_new_struct((yyvsp[(2) - (2)].str), FALSE, NULL); }
     break;
 
   case 37:
-
-/* Line 1464 of yacc.c  */
-#line 398 "parser.y"
-    { (yyval.type) = (yyvsp[(2) - (2)].type); (yyval.type)->attrs = check_enum_attrs((yyvsp[(1) - (2)].attr_list)); ;}
+/* Line 1787 of yacc.c  */
+#line 376 "parser.y"
+    { (yyval.type) = type_new_nonencapsulated_union((yyvsp[(2) - (2)].str), FALSE, NULL); }
     break;
 
   case 38:
-
-/* Line 1464 of yacc.c  */
-#line 399 "parser.y"
-    { (yyval.type) = (yyvsp[(2) - (2)].type); (yyval.type)->attrs = check_struct_attrs((yyvsp[(1) - (2)].attr_list)); ;}
+/* Line 1787 of yacc.c  */
+#line 377 "parser.y"
+    { (yyval.type) = (yyvsp[(2) - (2)].type); (yyval.type)->attrs = check_enum_attrs((yyvsp[(1) - (2)].attr_list)); }
     break;
 
   case 39:
-
-/* Line 1464 of yacc.c  */
-#line 400 "parser.y"
-    { (yyval.type) = (yyvsp[(2) - (2)].type); (yyval.type)->attrs = check_union_attrs((yyvsp[(1) - (2)].attr_list)); ;}
+/* Line 1787 of yacc.c  */
+#line 378 "parser.y"
+    { (yyval.type) = (yyvsp[(2) - (2)].type); (yyval.type)->attrs = check_struct_attrs((yyvsp[(1) - (2)].attr_list)); }
     break;
 
   case 40:
-
-/* Line 1464 of yacc.c  */
-#line 403 "parser.y"
-    { (yyval.str) = (yyvsp[(3) - (4)].str); ;}
+/* Line 1787 of yacc.c  */
+#line 379 "parser.y"
+    { (yyval.type) = (yyvsp[(2) - (2)].type); (yyval.type)->attrs = check_union_attrs((yyvsp[(1) - (2)].attr_list)); }
     break;
 
   case 41:
+/* Line 1787 of yacc.c  */
+#line 382 "parser.y"
+    { (yyval.str) = (yyvsp[(3) - (4)].str); }
+    break;
 
-/* Line 1464 of yacc.c  */
-#line 405 "parser.y"
+  case 42:
+/* Line 1787 of yacc.c  */
+#line 384 "parser.y"
     { assert(yychar == YYEMPTY);
 						  (yyval.import) = xmalloc(sizeof(struct _import_t));
 						  (yyval.import)->name = (yyvsp[(2) - (3)].str);
 						  (yyval.import)->import_performed = do_import((yyvsp[(2) - (3)].str));
 						  if (!(yyval.import)->import_performed) yychar = aEOF;
-						;}
-    break;
-
-  case 42:
-
-/* Line 1464 of yacc.c  */
-#line 413 "parser.y"
-    { (yyval.str) = (yyvsp[(1) - (3)].import)->name;
-						  if ((yyvsp[(1) - (3)].import)->import_performed) pop_import();
-						  free((yyvsp[(1) - (3)].import));
-						;}
+						}
     break;
 
   case 43:
-
-/* Line 1464 of yacc.c  */
-#line 420 "parser.y"
-    { (yyval.str) = (yyvsp[(3) - (5)].str); if(!parse_only) add_importlib((yyvsp[(3) - (5)].str)); ;}
+/* Line 1787 of yacc.c  */
+#line 392 "parser.y"
+    { (yyval.str) = (yyvsp[(1) - (3)].import)->name;
+						  if ((yyvsp[(1) - (3)].import)->import_performed) pop_import();
+						  free((yyvsp[(1) - (3)].import));
+						}
     break;
 
   case 44:
-
-/* Line 1464 of yacc.c  */
-#line 423 "parser.y"
-    { (yyval.str) = (yyvsp[(2) - (2)].str); ;}
+/* Line 1787 of yacc.c  */
+#line 399 "parser.y"
+    { (yyval.str) = (yyvsp[(3) - (5)].str); if(!parse_only) add_importlib((yyvsp[(3) - (5)].str)); }
     break;
 
   case 45:
-
-/* Line 1464 of yacc.c  */
-#line 425 "parser.y"
-    { (yyval.typelib) = make_library((yyvsp[(2) - (3)].str), check_library_attrs((yyvsp[(2) - (3)].str), (yyvsp[(1) - (3)].attr_list)));
-						  if (!parse_only) start_typelib((yyval.typelib));
-						;}
+/* Line 1787 of yacc.c  */
+#line 402 "parser.y"
+    { (yyval.str) = (yyvsp[(2) - (2)].str); }
     break;
 
   case 46:
-
-/* Line 1464 of yacc.c  */
-#line 430 "parser.y"
-    { (yyval.typelib) = (yyvsp[(1) - (4)].typelib);
-						  (yyval.typelib)->stmts = (yyvsp[(2) - (4)].stmt_list);
-						  if (!parse_only) end_typelib();
-						;}
+/* Line 1787 of yacc.c  */
+#line 404 "parser.y"
+    { (yyval.typelib) = make_library((yyvsp[(2) - (3)].str), check_library_attrs((yyvsp[(2) - (3)].str), (yyvsp[(1) - (3)].attr_list)));
+						  if (!parse_only) start_typelib((yyval.typelib));
+						}
     break;
 
   case 47:
-
-/* Line 1464 of yacc.c  */
-#line 436 "parser.y"
-    { (yyval.var_list) = NULL; ;}
+/* Line 1787 of yacc.c  */
+#line 409 "parser.y"
+    { (yyval.typelib) = (yyvsp[(1) - (4)].typelib);
+						  (yyval.typelib)->stmts = (yyvsp[(2) - (4)].stmt_list);
+						  if (!parse_only) end_typelib();
+						}
     break;
 
-  case 49:
-
-/* Line 1464 of yacc.c  */
-#line 440 "parser.y"
-    { check_arg_attrs((yyvsp[(1) - (1)].var)); (yyval.var_list) = append_var( NULL, (yyvsp[(1) - (1)].var) ); ;}
+  case 48:
+/* Line 1787 of yacc.c  */
+#line 415 "parser.y"
+    { (yyval.var_list) = NULL; }
     break;
 
   case 50:
-
-/* Line 1464 of yacc.c  */
-#line 441 "parser.y"
-    { check_arg_attrs((yyvsp[(3) - (3)].var)); (yyval.var_list) = append_var( (yyvsp[(1) - (3)].var_list), (yyvsp[(3) - (3)].var) ); ;}
+/* Line 1787 of yacc.c  */
+#line 419 "parser.y"
+    { check_arg_attrs((yyvsp[(1) - (1)].var)); (yyval.var_list) = append_var( NULL, (yyvsp[(1) - (1)].var) ); }
     break;
 
-  case 52:
-
-/* Line 1464 of yacc.c  */
-#line 445 "parser.y"
-    { (yyval.var_list) = append_var( (yyvsp[(1) - (3)].var_list), make_var(strdup("...")) ); ;}
+  case 51:
+/* Line 1787 of yacc.c  */
+#line 420 "parser.y"
+    { check_arg_attrs((yyvsp[(3) - (3)].var)); (yyval.var_list) = append_var( (yyvsp[(1) - (3)].var_list), (yyvsp[(3) - (3)].var) ); }
     break;
 
   case 53:
+/* Line 1787 of yacc.c  */
+#line 424 "parser.y"
+    { (yyval.var_list) = append_var( (yyvsp[(1) - (3)].var_list), make_var(strdup("...")) ); }
+    break;
 
-/* Line 1464 of yacc.c  */
-#line 449 "parser.y"
+  case 54:
+/* Line 1787 of yacc.c  */
+#line 428 "parser.y"
     { if ((yyvsp[(2) - (3)].declspec)->stgclass != STG_NONE && (yyvsp[(2) - (3)].declspec)->stgclass != STG_REGISTER)
 						    error_loc("invalid storage class for function parameter\n");
 						  (yyval.var) = declare_var((yyvsp[(1) - (3)].attr_list), (yyvsp[(2) - (3)].declspec), (yyvsp[(3) - (3)].declarator), TRUE);
 						  free((yyvsp[(2) - (3)].declspec)); free((yyvsp[(3) - (3)].declarator));
-						;}
+						}
     break;
 
-  case 54:
-
-/* Line 1464 of yacc.c  */
-#line 454 "parser.y"
+  case 55:
+/* Line 1787 of yacc.c  */
+#line 433 "parser.y"
     { if ((yyvsp[(1) - (2)].declspec)->stgclass != STG_NONE && (yyvsp[(1) - (2)].declspec)->stgclass != STG_REGISTER)
 						    error_loc("invalid storage class for function parameter\n");
 						  (yyval.var) = declare_var(NULL, (yyvsp[(1) - (2)].declspec), (yyvsp[(2) - (2)].declarator), TRUE);
 						  free((yyvsp[(1) - (2)].declspec)); free((yyvsp[(2) - (2)].declarator));
-						;}
-    break;
-
-  case 55:
-
-/* Line 1464 of yacc.c  */
-#line 461 "parser.y"
-    { (yyval.expr) = (yyvsp[(2) - (3)].expr);
-						  if (!(yyval.expr)->is_const)
-						      error_loc("array dimension is not an integer constant\n");
-						;}
+						}
     break;
 
   case 56:
-
-/* Line 1464 of yacc.c  */
-#line 465 "parser.y"
-    { (yyval.expr) = make_expr(EXPR_VOID); ;}
+/* Line 1787 of yacc.c  */
+#line 440 "parser.y"
+    { (yyval.expr) = (yyvsp[(2) - (3)].expr);
+						  if (!(yyval.expr)->is_const)
+						      error_loc("array dimension is not an integer constant\n");
+						}
     break;
 
   case 57:
-
-/* Line 1464 of yacc.c  */
-#line 466 "parser.y"
-    { (yyval.expr) = make_expr(EXPR_VOID); ;}
+/* Line 1787 of yacc.c  */
+#line 444 "parser.y"
+    { (yyval.expr) = make_expr(EXPR_VOID); }
     break;
 
   case 58:
-
-/* Line 1464 of yacc.c  */
-#line 469 "parser.y"
-    { (yyval.attr_list) = NULL; ;}
+/* Line 1787 of yacc.c  */
+#line 445 "parser.y"
+    { (yyval.expr) = make_expr(EXPR_VOID); }
     break;
 
-  case 60:
-
-/* Line 1464 of yacc.c  */
-#line 474 "parser.y"
-    { (yyval.attr_list) = (yyvsp[(2) - (3)].attr_list); ;}
+  case 59:
+/* Line 1787 of yacc.c  */
+#line 448 "parser.y"
+    { (yyval.attr_list) = NULL; }
     break;
 
   case 61:
-
-/* Line 1464 of yacc.c  */
-#line 477 "parser.y"
-    { (yyval.attr_list) = append_attr( NULL, (yyvsp[(1) - (1)].attr) ); ;}
+/* Line 1787 of yacc.c  */
+#line 453 "parser.y"
+    { (yyval.attr_list) = (yyvsp[(2) - (3)].attr_list); }
     break;
 
   case 62:
-
-/* Line 1464 of yacc.c  */
-#line 478 "parser.y"
-    { (yyval.attr_list) = append_attr( (yyvsp[(1) - (3)].attr_list), (yyvsp[(3) - (3)].attr) ); ;}
+/* Line 1787 of yacc.c  */
+#line 456 "parser.y"
+    { (yyval.attr_list) = append_attr( NULL, (yyvsp[(1) - (1)].attr) ); }
     break;
 
   case 63:
-
-/* Line 1464 of yacc.c  */
-#line 479 "parser.y"
-    { (yyval.attr_list) = append_attr( (yyvsp[(1) - (4)].attr_list), (yyvsp[(4) - (4)].attr) ); ;}
+/* Line 1787 of yacc.c  */
+#line 457 "parser.y"
+    { (yyval.attr_list) = append_attr( (yyvsp[(1) - (3)].attr_list), (yyvsp[(3) - (3)].attr) ); }
     break;
 
   case 64:
-
-/* Line 1464 of yacc.c  */
-#line 482 "parser.y"
-    { (yyval.str_list) = append_str( NULL, (yyvsp[(1) - (1)].str) ); ;}
+/* Line 1787 of yacc.c  */
+#line 458 "parser.y"
+    { (yyval.attr_list) = append_attr( (yyvsp[(1) - (4)].attr_list), (yyvsp[(4) - (4)].attr) ); }
     break;
 
   case 65:
-
-/* Line 1464 of yacc.c  */
-#line 483 "parser.y"
-    { (yyval.str_list) = append_str( (yyvsp[(1) - (3)].str_list), (yyvsp[(3) - (3)].str) ); ;}
+/* Line 1787 of yacc.c  */
+#line 461 "parser.y"
+    { (yyval.str_list) = append_str( NULL, (yyvsp[(1) - (1)].str) ); }
     break;
 
   case 66:
-
-/* Line 1464 of yacc.c  */
-#line 486 "parser.y"
-    { (yyval.attr) = NULL; ;}
+/* Line 1787 of yacc.c  */
+#line 462 "parser.y"
+    { (yyval.str_list) = append_str( (yyvsp[(1) - (3)].str_list), (yyvsp[(3) - (3)].str) ); }
     break;
 
   case 67:
-
-/* Line 1464 of yacc.c  */
-#line 487 "parser.y"
-    { (yyval.attr) = make_attr(ATTR_AGGREGATABLE); ;}
+/* Line 1787 of yacc.c  */
+#line 465 "parser.y"
+    { (yyval.attr) = NULL; }
     break;
 
   case 68:
-
-/* Line 1464 of yacc.c  */
-#line 488 "parser.y"
-    { (yyval.attr) = make_attrp(ATTR_ANNOTATION, (yyvsp[(3) - (4)].str)); ;}
+/* Line 1787 of yacc.c  */
+#line 466 "parser.y"
+    { (yyval.attr) = make_attr(ATTR_AGGREGATABLE); }
     break;
 
   case 69:
-
-/* Line 1464 of yacc.c  */
-#line 489 "parser.y"
-    { (yyval.attr) = make_attr(ATTR_APPOBJECT); ;}
+/* Line 1787 of yacc.c  */
+#line 467 "parser.y"
+    { (yyval.attr) = make_attrp(ATTR_ANNOTATION, (yyvsp[(3) - (4)].str)); }
     break;
 
   case 70:
-
-/* Line 1464 of yacc.c  */
-#line 490 "parser.y"
-    { (yyval.attr) = make_attr(ATTR_ASYNC); ;}
+/* Line 1787 of yacc.c  */
+#line 468 "parser.y"
+    { (yyval.attr) = make_attr(ATTR_APPOBJECT); }
     break;
 
   case 71:
-
-/* Line 1464 of yacc.c  */
-#line 491 "parser.y"
-    { (yyval.attr) = make_attr(ATTR_AUTO_HANDLE); ;}
+/* Line 1787 of yacc.c  */
+#line 469 "parser.y"
+    { (yyval.attr) = make_attr(ATTR_ASYNC); }
     break;
 
   case 72:
-
-/* Line 1464 of yacc.c  */
-#line 492 "parser.y"
-    { (yyval.attr) = make_attr(ATTR_BINDABLE); ;}
+/* Line 1787 of yacc.c  */
+#line 470 "parser.y"
+    { (yyval.attr) = make_attr(ATTR_AUTO_HANDLE); }
     break;
 
   case 73:
-
-/* Line 1464 of yacc.c  */
-#line 493 "parser.y"
-    { (yyval.attr) = make_attr(ATTR_BROADCAST); ;}
+/* Line 1787 of yacc.c  */
+#line 471 "parser.y"
+    { (yyval.attr) = make_attr(ATTR_BINDABLE); }
     break;
 
   case 74:
-
-/* Line 1464 of yacc.c  */
-#line 494 "parser.y"
-    { (yyval.attr) = make_attrp(ATTR_CALLAS, (yyvsp[(3) - (4)].var)); ;}
+/* Line 1787 of yacc.c  */
+#line 472 "parser.y"
+    { (yyval.attr) = make_attr(ATTR_BROADCAST); }
     break;
 
   case 75:
-
-/* Line 1464 of yacc.c  */
-#line 495 "parser.y"
-    { (yyval.attr) = make_attrp(ATTR_CASE, (yyvsp[(3) - (4)].expr_list)); ;}
+/* Line 1787 of yacc.c  */
+#line 473 "parser.y"
+    { (yyval.attr) = make_attrp(ATTR_CALLAS, (yyvsp[(3) - (4)].var)); }
     break;
 
   case 76:
-
-/* Line 1464 of yacc.c  */
-#line 496 "parser.y"
-    { (yyval.attr) = make_attr(ATTR_CODE); ;}
+/* Line 1787 of yacc.c  */
+#line 474 "parser.y"
+    { (yyval.attr) = make_attrp(ATTR_CASE, (yyvsp[(3) - (4)].expr_list)); }
     break;
 
   case 77:
-
-/* Line 1464 of yacc.c  */
-#line 497 "parser.y"
-    { (yyval.attr) = make_attr(ATTR_COMMSTATUS); ;}
+/* Line 1787 of yacc.c  */
+#line 475 "parser.y"
+    { (yyval.attr) = make_attr(ATTR_CODE); }
     break;
 
   case 78:
-
-/* Line 1464 of yacc.c  */
-#line 498 "parser.y"
-    { (yyval.attr) = make_attrv(ATTR_CONTEXTHANDLE, 0); ;}
+/* Line 1787 of yacc.c  */
+#line 476 "parser.y"
+    { (yyval.attr) = make_attr(ATTR_COMMSTATUS); }
     break;
 
   case 79:
-
-/* Line 1464 of yacc.c  */
-#line 499 "parser.y"
-    { (yyval.attr) = make_attrv(ATTR_CONTEXTHANDLE, 0); /* RPC_CONTEXT_HANDLE_DONT_SERIALIZE */ ;}
+/* Line 1787 of yacc.c  */
+#line 477 "parser.y"
+    { (yyval.attr) = make_attrv(ATTR_CONTEXTHANDLE, 0); }
     break;
 
   case 80:
-
-/* Line 1464 of yacc.c  */
-#line 500 "parser.y"
-    { (yyval.attr) = make_attrv(ATTR_CONTEXTHANDLE, 0); /* RPC_CONTEXT_HANDLE_SERIALIZE */ ;}
+/* Line 1787 of yacc.c  */
+#line 478 "parser.y"
+    { (yyval.attr) = make_attrv(ATTR_CONTEXTHANDLE, 0); /* RPC_CONTEXT_HANDLE_DONT_SERIALIZE */ }
     break;
 
   case 81:
-
-/* Line 1464 of yacc.c  */
-#line 501 "parser.y"
-    { (yyval.attr) = make_attr(ATTR_CONTROL); ;}
+/* Line 1787 of yacc.c  */
+#line 479 "parser.y"
+    { (yyval.attr) = make_attrv(ATTR_CONTEXTHANDLE, 0); /* RPC_CONTEXT_HANDLE_SERIALIZE */ }
     break;
 
   case 82:
-
-/* Line 1464 of yacc.c  */
-#line 502 "parser.y"
-    { (yyval.attr) = make_attr(ATTR_DECODE); ;}
+/* Line 1787 of yacc.c  */
+#line 480 "parser.y"
+    { (yyval.attr) = make_attr(ATTR_CONTROL); }
     break;
 
   case 83:
-
-/* Line 1464 of yacc.c  */
-#line 503 "parser.y"
-    { (yyval.attr) = make_attr(ATTR_DEFAULT); ;}
+/* Line 1787 of yacc.c  */
+#line 481 "parser.y"
+    { (yyval.attr) = make_attr(ATTR_DECODE); }
     break;
 
   case 84:
-
-/* Line 1464 of yacc.c  */
-#line 504 "parser.y"
-    { (yyval.attr) = make_attr(ATTR_DEFAULTBIND); ;}
+/* Line 1787 of yacc.c  */
+#line 482 "parser.y"
+    { (yyval.attr) = make_attr(ATTR_DEFAULT); }
     break;
 
   case 85:
-
-/* Line 1464 of yacc.c  */
-#line 505 "parser.y"
-    { (yyval.attr) = make_attr(ATTR_DEFAULTCOLLELEM); ;}
+/* Line 1787 of yacc.c  */
+#line 483 "parser.y"
+    { (yyval.attr) = make_attr(ATTR_DEFAULTBIND); }
     break;
 
   case 86:
-
-/* Line 1464 of yacc.c  */
-#line 506 "parser.y"
-    { (yyval.attr) = make_attrp(ATTR_DEFAULTVALUE, (yyvsp[(3) - (4)].expr)); ;}
+/* Line 1787 of yacc.c  */
+#line 484 "parser.y"
+    { (yyval.attr) = make_attr(ATTR_DEFAULTCOLLELEM); }
     break;
 
   case 87:
-
-/* Line 1464 of yacc.c  */
-#line 507 "parser.y"
-    { (yyval.attr) = make_attr(ATTR_DEFAULTVTABLE); ;}
+/* Line 1787 of yacc.c  */
+#line 485 "parser.y"
+    { (yyval.attr) = make_attrp(ATTR_DEFAULTVALUE, (yyvsp[(3) - (4)].expr)); }
     break;
 
   case 88:
-
-/* Line 1464 of yacc.c  */
-#line 508 "parser.y"
-    { (yyval.attr) = make_attr(ATTR_DISABLECONSISTENCYCHECK); ;}
+/* Line 1787 of yacc.c  */
+#line 486 "parser.y"
+    { (yyval.attr) = make_attr(ATTR_DEFAULTVTABLE); }
     break;
 
   case 89:
-
-/* Line 1464 of yacc.c  */
-#line 509 "parser.y"
-    { (yyval.attr) = make_attr(ATTR_DISPLAYBIND); ;}
+/* Line 1787 of yacc.c  */
+#line 487 "parser.y"
+    { (yyval.attr) = make_attr(ATTR_DISABLECONSISTENCYCHECK); }
     break;
 
   case 90:
-
-/* Line 1464 of yacc.c  */
-#line 510 "parser.y"
-    { (yyval.attr) = make_attrp(ATTR_DLLNAME, (yyvsp[(3) - (4)].str)); ;}
+/* Line 1787 of yacc.c  */
+#line 488 "parser.y"
+    { (yyval.attr) = make_attr(ATTR_DISPLAYBIND); }
     break;
 
   case 91:
-
-/* Line 1464 of yacc.c  */
-#line 511 "parser.y"
-    { (yyval.attr) = make_attr(ATTR_DUAL); ;}
+/* Line 1787 of yacc.c  */
+#line 489 "parser.y"
+    { (yyval.attr) = make_attrp(ATTR_DLLNAME, (yyvsp[(3) - (4)].str)); }
     break;
 
   case 92:
-
-/* Line 1464 of yacc.c  */
-#line 512 "parser.y"
-    { (yyval.attr) = make_attr(ATTR_ENABLEALLOCATE); ;}
+/* Line 1787 of yacc.c  */
+#line 490 "parser.y"
+    { (yyval.attr) = make_attr(ATTR_DUAL); }
     break;
 
   case 93:
-
-/* Line 1464 of yacc.c  */
-#line 513 "parser.y"
-    { (yyval.attr) = make_attr(ATTR_ENCODE); ;}
+/* Line 1787 of yacc.c  */
+#line 491 "parser.y"
+    { (yyval.attr) = make_attr(ATTR_ENABLEALLOCATE); }
     break;
 
   case 94:
-
-/* Line 1464 of yacc.c  */
-#line 514 "parser.y"
-    { (yyval.attr) = make_attrp(ATTR_ENDPOINT, (yyvsp[(3) - (4)].str_list)); ;}
+/* Line 1787 of yacc.c  */
+#line 492 "parser.y"
+    { (yyval.attr) = make_attr(ATTR_ENCODE); }
     break;
 
   case 95:
-
-/* Line 1464 of yacc.c  */
-#line 515 "parser.y"
-    { (yyval.attr) = make_attrp(ATTR_ENTRY, (yyvsp[(3) - (4)].expr)); ;}
+/* Line 1787 of yacc.c  */
+#line 493 "parser.y"
+    { (yyval.attr) = make_attrp(ATTR_ENDPOINT, (yyvsp[(3) - (4)].str_list)); }
     break;
 
   case 96:
-
-/* Line 1464 of yacc.c  */
-#line 516 "parser.y"
-    { (yyval.attr) = make_attr(ATTR_EXPLICIT_HANDLE); ;}
+/* Line 1787 of yacc.c  */
+#line 494 "parser.y"
+    { (yyval.attr) = make_attrp(ATTR_ENTRY, (yyvsp[(3) - (4)].expr)); }
     break;
 
   case 97:
-
-/* Line 1464 of yacc.c  */
-#line 517 "parser.y"
-    { (yyval.attr) = make_attr(ATTR_FAULTSTATUS); ;}
+/* Line 1787 of yacc.c  */
+#line 495 "parser.y"
+    { (yyval.attr) = make_attr(ATTR_EXPLICIT_HANDLE); }
     break;
 
   case 98:
-
-/* Line 1464 of yacc.c  */
-#line 518 "parser.y"
-    { (yyval.attr) = make_attr(ATTR_FORCEALLOCATE); ;}
+/* Line 1787 of yacc.c  */
+#line 496 "parser.y"
+    { (yyval.attr) = make_attr(ATTR_FAULTSTATUS); }
     break;
 
   case 99:
-
-/* Line 1464 of yacc.c  */
-#line 519 "parser.y"
-    { (yyval.attr) = make_attr(ATTR_HANDLE); ;}
+/* Line 1787 of yacc.c  */
+#line 497 "parser.y"
+    { (yyval.attr) = make_attr(ATTR_FORCEALLOCATE); }
     break;
 
   case 100:
-
-/* Line 1464 of yacc.c  */
-#line 520 "parser.y"
-    { (yyval.attr) = make_attrp(ATTR_HELPCONTEXT, (yyvsp[(3) - (4)].expr)); ;}
+/* Line 1787 of yacc.c  */
+#line 498 "parser.y"
+    { (yyval.attr) = make_attr(ATTR_HANDLE); }
     break;
 
   case 101:
-
-/* Line 1464 of yacc.c  */
-#line 521 "parser.y"
-    { (yyval.attr) = make_attrp(ATTR_HELPFILE, (yyvsp[(3) - (4)].str)); ;}
+/* Line 1787 of yacc.c  */
+#line 499 "parser.y"
+    { (yyval.attr) = make_attrp(ATTR_HELPCONTEXT, (yyvsp[(3) - (4)].expr)); }
     break;
 
   case 102:
-
-/* Line 1464 of yacc.c  */
-#line 522 "parser.y"
-    { (yyval.attr) = make_attrp(ATTR_HELPSTRING, (yyvsp[(3) - (4)].str)); ;}
+/* Line 1787 of yacc.c  */
+#line 500 "parser.y"
+    { (yyval.attr) = make_attrp(ATTR_HELPFILE, (yyvsp[(3) - (4)].str)); }
     break;
 
   case 103:
-
-/* Line 1464 of yacc.c  */
-#line 523 "parser.y"
-    { (yyval.attr) = make_attrp(ATTR_HELPSTRINGCONTEXT, (yyvsp[(3) - (4)].expr)); ;}
+/* Line 1787 of yacc.c  */
+#line 501 "parser.y"
+    { (yyval.attr) = make_attrp(ATTR_HELPSTRING, (yyvsp[(3) - (4)].str)); }
     break;
 
   case 104:
-
-/* Line 1464 of yacc.c  */
-#line 524 "parser.y"
-    { (yyval.attr) = make_attrp(ATTR_HELPSTRINGDLL, (yyvsp[(3) - (4)].str)); ;}
+/* Line 1787 of yacc.c  */
+#line 502 "parser.y"
+    { (yyval.attr) = make_attrp(ATTR_HELPSTRINGCONTEXT, (yyvsp[(3) - (4)].expr)); }
     break;
 
   case 105:
-
-/* Line 1464 of yacc.c  */
-#line 525 "parser.y"
-    { (yyval.attr) = make_attr(ATTR_HIDDEN); ;}
+/* Line 1787 of yacc.c  */
+#line 503 "parser.y"
+    { (yyval.attr) = make_attrp(ATTR_HELPSTRINGDLL, (yyvsp[(3) - (4)].str)); }
     break;
 
   case 106:
-
-/* Line 1464 of yacc.c  */
-#line 526 "parser.y"
-    { (yyval.attr) = make_attrp(ATTR_ID, (yyvsp[(3) - (4)].expr)); ;}
+/* Line 1787 of yacc.c  */
+#line 504 "parser.y"
+    { (yyval.attr) = make_attr(ATTR_HIDDEN); }
     break;
 
   case 107:
-
-/* Line 1464 of yacc.c  */
-#line 527 "parser.y"
-    { (yyval.attr) = make_attr(ATTR_IDEMPOTENT); ;}
+/* Line 1787 of yacc.c  */
+#line 505 "parser.y"
+    { (yyval.attr) = make_attrp(ATTR_ID, (yyvsp[(3) - (4)].expr)); }
     break;
 
   case 108:
-
-/* Line 1464 of yacc.c  */
-#line 528 "parser.y"
-    { (yyval.attr) = make_attr(ATTR_IGNORE); ;}
+/* Line 1787 of yacc.c  */
+#line 506 "parser.y"
+    { (yyval.attr) = make_attr(ATTR_IDEMPOTENT); }
     break;
 
   case 109:
-
-/* Line 1464 of yacc.c  */
-#line 529 "parser.y"
-    { (yyval.attr) = make_attrp(ATTR_IIDIS, (yyvsp[(3) - (4)].expr)); ;}
+/* Line 1787 of yacc.c  */
+#line 507 "parser.y"
+    { (yyval.attr) = make_attr(ATTR_IGNORE); }
     break;
 
   case 110:
-
-/* Line 1464 of yacc.c  */
-#line 530 "parser.y"
-    { (yyval.attr) = make_attr(ATTR_IMMEDIATEBIND); ;}
+/* Line 1787 of yacc.c  */
+#line 508 "parser.y"
+    { (yyval.attr) = make_attrp(ATTR_IIDIS, (yyvsp[(3) - (4)].expr)); }
     break;
 
   case 111:
-
-/* Line 1464 of yacc.c  */
-#line 531 "parser.y"
-    { (yyval.attr) = make_attrp(ATTR_IMPLICIT_HANDLE, (yyvsp[(3) - (4)].var)); ;}
+/* Line 1787 of yacc.c  */
+#line 509 "parser.y"
+    { (yyval.attr) = make_attr(ATTR_IMMEDIATEBIND); }
     break;
 
   case 112:
-
-/* Line 1464 of yacc.c  */
-#line 532 "parser.y"
-    { (yyval.attr) = make_attr(ATTR_IN); ;}
+/* Line 1787 of yacc.c  */
+#line 510 "parser.y"
+    { (yyval.attr) = make_attrp(ATTR_IMPLICIT_HANDLE, (yyvsp[(3) - (4)].var)); }
     break;
 
   case 113:
-
-/* Line 1464 of yacc.c  */
-#line 533 "parser.y"
-    { (yyval.attr) = make_attr(ATTR_INPUTSYNC); ;}
+/* Line 1787 of yacc.c  */
+#line 511 "parser.y"
+    { (yyval.attr) = make_attr(ATTR_IN); }
     break;
 
   case 114:
-
-/* Line 1464 of yacc.c  */
-#line 534 "parser.y"
-    { (yyval.attr) = make_attrp(ATTR_LENGTHIS, (yyvsp[(3) - (4)].expr_list)); ;}
+/* Line 1787 of yacc.c  */
+#line 512 "parser.y"
+    { (yyval.attr) = make_attr(ATTR_INPUTSYNC); }
     break;
 
   case 115:
-
-/* Line 1464 of yacc.c  */
-#line 535 "parser.y"
-    { (yyval.attr) = make_attrp(ATTR_LIBLCID, (yyvsp[(3) - (4)].expr)); ;}
+/* Line 1787 of yacc.c  */
+#line 513 "parser.y"
+    { (yyval.attr) = make_attrp(ATTR_LENGTHIS, (yyvsp[(3) - (4)].expr_list)); }
     break;
 
   case 116:
-
-/* Line 1464 of yacc.c  */
-#line 536 "parser.y"
-    { (yyval.attr) = make_attr(ATTR_PARAMLCID); ;}
+/* Line 1787 of yacc.c  */
+#line 514 "parser.y"
+    { (yyval.attr) = make_attrp(ATTR_LIBLCID, (yyvsp[(3) - (4)].expr)); }
     break;
 
   case 117:
-
-/* Line 1464 of yacc.c  */
-#line 537 "parser.y"
-    { (yyval.attr) = make_attr(ATTR_LICENSED); ;}
+/* Line 1787 of yacc.c  */
+#line 515 "parser.y"
+    { (yyval.attr) = make_attr(ATTR_PARAMLCID); }
     break;
 
   case 118:
-
-/* Line 1464 of yacc.c  */
-#line 538 "parser.y"
-    { (yyval.attr) = make_attr(ATTR_LOCAL); ;}
+/* Line 1787 of yacc.c  */
+#line 516 "parser.y"
+    { (yyval.attr) = make_attr(ATTR_LICENSED); }
     break;
 
   case 119:
-
-/* Line 1464 of yacc.c  */
-#line 539 "parser.y"
-    { (yyval.attr) = make_attr(ATTR_MAYBE); ;}
+/* Line 1787 of yacc.c  */
+#line 517 "parser.y"
+    { (yyval.attr) = make_attr(ATTR_LOCAL); }
     break;
 
   case 120:
-
-/* Line 1464 of yacc.c  */
-#line 540 "parser.y"
-    { (yyval.attr) = make_attr(ATTR_MESSAGE); ;}
+/* Line 1787 of yacc.c  */
+#line 518 "parser.y"
+    { (yyval.attr) = make_attr(ATTR_MAYBE); }
     break;
 
   case 121:
-
-/* Line 1464 of yacc.c  */
-#line 541 "parser.y"
-    { (yyval.attr) = make_attr(ATTR_NOCODE); ;}
+/* Line 1787 of yacc.c  */
+#line 519 "parser.y"
+    { (yyval.attr) = make_attr(ATTR_MESSAGE); }
     break;
 
   case 122:
-
-/* Line 1464 of yacc.c  */
-#line 542 "parser.y"
-    { (yyval.attr) = make_attr(ATTR_NONBROWSABLE); ;}
+/* Line 1787 of yacc.c  */
+#line 520 "parser.y"
+    { (yyval.attr) = make_attr(ATTR_NOCODE); }
     break;
 
   case 123:
-
-/* Line 1464 of yacc.c  */
-#line 543 "parser.y"
-    { (yyval.attr) = make_attr(ATTR_NONCREATABLE); ;}
+/* Line 1787 of yacc.c  */
+#line 521 "parser.y"
+    { (yyval.attr) = make_attr(ATTR_NONBROWSABLE); }
     break;
 
   case 124:
-
-/* Line 1464 of yacc.c  */
-#line 544 "parser.y"
-    { (yyval.attr) = make_attr(ATTR_NONEXTENSIBLE); ;}
+/* Line 1787 of yacc.c  */
+#line 522 "parser.y"
+    { (yyval.attr) = make_attr(ATTR_NONCREATABLE); }
     break;
 
   case 125:
-
-/* Line 1464 of yacc.c  */
-#line 545 "parser.y"
-    { (yyval.attr) = make_attr(ATTR_NOTIFY); ;}
+/* Line 1787 of yacc.c  */
+#line 523 "parser.y"
+    { (yyval.attr) = make_attr(ATTR_NONEXTENSIBLE); }
     break;
 
   case 126:
-
-/* Line 1464 of yacc.c  */
-#line 546 "parser.y"
-    { (yyval.attr) = make_attr(ATTR_NOTIFYFLAG); ;}
+/* Line 1787 of yacc.c  */
+#line 524 "parser.y"
+    { (yyval.attr) = make_attr(ATTR_NOTIFY); }
     break;
 
   case 127:
-
-/* Line 1464 of yacc.c  */
-#line 547 "parser.y"
-    { (yyval.attr) = make_attr(ATTR_OBJECT); ;}
+/* Line 1787 of yacc.c  */
+#line 525 "parser.y"
+    { (yyval.attr) = make_attr(ATTR_NOTIFYFLAG); }
     break;
 
   case 128:
-
-/* Line 1464 of yacc.c  */
-#line 548 "parser.y"
-    { (yyval.attr) = make_attr(ATTR_ODL); ;}
+/* Line 1787 of yacc.c  */
+#line 526 "parser.y"
+    { (yyval.attr) = make_attr(ATTR_OBJECT); }
     break;
 
   case 129:
-
-/* Line 1464 of yacc.c  */
-#line 549 "parser.y"
-    { (yyval.attr) = make_attr(ATTR_OLEAUTOMATION); ;}
+/* Line 1787 of yacc.c  */
+#line 527 "parser.y"
+    { (yyval.attr) = make_attr(ATTR_ODL); }
     break;
 
   case 130:
-
-/* Line 1464 of yacc.c  */
-#line 550 "parser.y"
-    { (yyval.attr) = make_attrp(ATTR_OPTIMIZE, (yyvsp[(3) - (4)].str)); ;}
+/* Line 1787 of yacc.c  */
+#line 528 "parser.y"
+    { (yyval.attr) = make_attr(ATTR_OLEAUTOMATION); }
     break;
 
   case 131:
-
-/* Line 1464 of yacc.c  */
-#line 551 "parser.y"
-    { (yyval.attr) = make_attr(ATTR_OPTIONAL); ;}
+/* Line 1787 of yacc.c  */
+#line 529 "parser.y"
+    { (yyval.attr) = make_attrp(ATTR_OPTIMIZE, (yyvsp[(3) - (4)].str)); }
     break;
 
   case 132:
-
-/* Line 1464 of yacc.c  */
-#line 552 "parser.y"
-    { (yyval.attr) = make_attr(ATTR_OUT); ;}
+/* Line 1787 of yacc.c  */
+#line 530 "parser.y"
+    { (yyval.attr) = make_attr(ATTR_OPTIONAL); }
     break;
 
   case 133:
-
-/* Line 1464 of yacc.c  */
-#line 553 "parser.y"
-    { (yyval.attr) = make_attr(ATTR_PARTIALIGNORE); ;}
+/* Line 1787 of yacc.c  */
+#line 531 "parser.y"
+    { (yyval.attr) = make_attr(ATTR_OUT); }
     break;
 
   case 134:
-
-/* Line 1464 of yacc.c  */
-#line 554 "parser.y"
-    { (yyval.attr) = make_attrv(ATTR_POINTERDEFAULT, (yyvsp[(3) - (4)].num)); ;}
+/* Line 1787 of yacc.c  */
+#line 532 "parser.y"
+    { (yyval.attr) = make_attr(ATTR_PARTIALIGNORE); }
     break;
 
   case 135:
-
-/* Line 1464 of yacc.c  */
-#line 555 "parser.y"
-    { (yyval.attr) = make_attrp(ATTR_PROGID, (yyvsp[(3) - (4)].str)); ;}
+/* Line 1787 of yacc.c  */
+#line 533 "parser.y"
+    { (yyval.attr) = make_attrv(ATTR_POINTERDEFAULT, (yyvsp[(3) - (4)].num)); }
     break;
 
   case 136:
-
-/* Line 1464 of yacc.c  */
-#line 556 "parser.y"
-    { (yyval.attr) = make_attr(ATTR_PROPGET); ;}
+/* Line 1787 of yacc.c  */
+#line 534 "parser.y"
+    { (yyval.attr) = make_attrp(ATTR_PROGID, (yyvsp[(3) - (4)].str)); }
     break;
 
   case 137:
-
-/* Line 1464 of yacc.c  */
-#line 557 "parser.y"
-    { (yyval.attr) = make_attr(ATTR_PROPPUT); ;}
+/* Line 1787 of yacc.c  */
+#line 535 "parser.y"
+    { (yyval.attr) = make_attr(ATTR_PROPGET); }
     break;
 
   case 138:
-
-/* Line 1464 of yacc.c  */
-#line 558 "parser.y"
-    { (yyval.attr) = make_attr(ATTR_PROPPUTREF); ;}
+/* Line 1787 of yacc.c  */
+#line 536 "parser.y"
+    { (yyval.attr) = make_attr(ATTR_PROPPUT); }
     break;
 
   case 139:
-
-/* Line 1464 of yacc.c  */
-#line 559 "parser.y"
-    { (yyval.attr) = make_attr(ATTR_PROXY); ;}
+/* Line 1787 of yacc.c  */
+#line 537 "parser.y"
+    { (yyval.attr) = make_attr(ATTR_PROPPUTREF); }
     break;
 
   case 140:
-
-/* Line 1464 of yacc.c  */
-#line 560 "parser.y"
-    { (yyval.attr) = make_attr(ATTR_PUBLIC); ;}
+/* Line 1787 of yacc.c  */
+#line 538 "parser.y"
+    { (yyval.attr) = make_attr(ATTR_PROXY); }
     break;
 
   case 141:
-
-/* Line 1464 of yacc.c  */
-#line 562 "parser.y"
-    { expr_list_t *list = append_expr( NULL, (yyvsp[(3) - (6)].expr) );
-						  list = append_expr( list, (yyvsp[(5) - (6)].expr) );
-						  (yyval.attr) = make_attrp(ATTR_RANGE, list); ;}
+/* Line 1787 of yacc.c  */
+#line 539 "parser.y"
+    { (yyval.attr) = make_attr(ATTR_PUBLIC); }
     break;
 
   case 142:
-
-/* Line 1464 of yacc.c  */
-#line 565 "parser.y"
-    { (yyval.attr) = make_attr(ATTR_READONLY); ;}
+/* Line 1787 of yacc.c  */
+#line 541 "parser.y"
+    { expr_list_t *list = append_expr( NULL, (yyvsp[(3) - (6)].expr) );
+						  list = append_expr( list, (yyvsp[(5) - (6)].expr) );
+						  (yyval.attr) = make_attrp(ATTR_RANGE, list); }
     break;
 
   case 143:
-
-/* Line 1464 of yacc.c  */
-#line 566 "parser.y"
-    { (yyval.attr) = make_attrp(ATTR_REPRESENTAS, (yyvsp[(3) - (4)].type)); ;}
+/* Line 1787 of yacc.c  */
+#line 544 "parser.y"
+    { (yyval.attr) = make_attr(ATTR_READONLY); }
     break;
 
   case 144:
-
-/* Line 1464 of yacc.c  */
-#line 567 "parser.y"
-    { (yyval.attr) = make_attr(ATTR_REQUESTEDIT); ;}
+/* Line 1787 of yacc.c  */
+#line 545 "parser.y"
+    { (yyval.attr) = make_attrp(ATTR_REPRESENTAS, (yyvsp[(3) - (4)].type)); }
     break;
 
   case 145:
-
-/* Line 1464 of yacc.c  */
-#line 568 "parser.y"
-    { (yyval.attr) = make_attr(ATTR_RESTRICTED); ;}
+/* Line 1787 of yacc.c  */
+#line 546 "parser.y"
+    { (yyval.attr) = make_attr(ATTR_REQUESTEDIT); }
     break;
 
   case 146:
-
-/* Line 1464 of yacc.c  */
-#line 569 "parser.y"
-    { (yyval.attr) = make_attr(ATTR_RETVAL); ;}
+/* Line 1787 of yacc.c  */
+#line 547 "parser.y"
+    { (yyval.attr) = make_attr(ATTR_RESTRICTED); }
     break;
 
   case 147:
-
-/* Line 1464 of yacc.c  */
-#line 570 "parser.y"
-    { (yyval.attr) = make_attrp(ATTR_SIZEIS, (yyvsp[(3) - (4)].expr_list)); ;}
+/* Line 1787 of yacc.c  */
+#line 548 "parser.y"
+    { (yyval.attr) = make_attr(ATTR_RETVAL); }
     break;
 
   case 148:
-
-/* Line 1464 of yacc.c  */
-#line 571 "parser.y"
-    { (yyval.attr) = make_attr(ATTR_SOURCE); ;}
+/* Line 1787 of yacc.c  */
+#line 549 "parser.y"
+    { (yyval.attr) = make_attrp(ATTR_SIZEIS, (yyvsp[(3) - (4)].expr_list)); }
     break;
 
   case 149:
-
-/* Line 1464 of yacc.c  */
-#line 572 "parser.y"
-    { (yyval.attr) = make_attr(ATTR_STRICTCONTEXTHANDLE); ;}
+/* Line 1787 of yacc.c  */
+#line 550 "parser.y"
+    { (yyval.attr) = make_attr(ATTR_SOURCE); }
     break;
 
   case 150:
-
-/* Line 1464 of yacc.c  */
-#line 573 "parser.y"
-    { (yyval.attr) = make_attr(ATTR_STRING); ;}
+/* Line 1787 of yacc.c  */
+#line 551 "parser.y"
+    { (yyval.attr) = make_attr(ATTR_STRICTCONTEXTHANDLE); }
     break;
 
   case 151:
-
-/* Line 1464 of yacc.c  */
-#line 574 "parser.y"
-    { (yyval.attr) = make_attrp(ATTR_SWITCHIS, (yyvsp[(3) - (4)].expr)); ;}
+/* Line 1787 of yacc.c  */
+#line 552 "parser.y"
+    { (yyval.attr) = make_attr(ATTR_STRING); }
     break;
 
   case 152:
-
-/* Line 1464 of yacc.c  */
-#line 575 "parser.y"
-    { (yyval.attr) = make_attrp(ATTR_SWITCHTYPE, (yyvsp[(3) - (4)].type)); ;}
+/* Line 1787 of yacc.c  */
+#line 553 "parser.y"
+    { (yyval.attr) = make_attrp(ATTR_SWITCHIS, (yyvsp[(3) - (4)].expr)); }
     break;
 
   case 153:
-
-/* Line 1464 of yacc.c  */
-#line 576 "parser.y"
-    { (yyval.attr) = make_attrp(ATTR_TRANSMITAS, (yyvsp[(3) - (4)].type)); ;}
+/* Line 1787 of yacc.c  */
+#line 554 "parser.y"
+    { (yyval.attr) = make_attrp(ATTR_SWITCHTYPE, (yyvsp[(3) - (4)].type)); }
     break;
 
   case 154:
-
-/* Line 1464 of yacc.c  */
-#line 577 "parser.y"
-    { (yyval.attr) = make_attrv(ATTR_THREADING, (yyvsp[(3) - (4)].num)); ;}
+/* Line 1787 of yacc.c  */
+#line 555 "parser.y"
+    { (yyval.attr) = make_attrp(ATTR_TRANSMITAS, (yyvsp[(3) - (4)].type)); }
     break;
 
   case 155:
-
-/* Line 1464 of yacc.c  */
-#line 578 "parser.y"
-    { (yyval.attr) = make_attr(ATTR_UIDEFAULT); ;}
+/* Line 1787 of yacc.c  */
+#line 556 "parser.y"
+    { (yyval.attr) = make_attrv(ATTR_THREADING, (yyvsp[(3) - (4)].num)); }
     break;
 
   case 156:
-
-/* Line 1464 of yacc.c  */
-#line 579 "parser.y"
-    { (yyval.attr) = make_attr(ATTR_USESGETLASTERROR); ;}
+/* Line 1787 of yacc.c  */
+#line 557 "parser.y"
+    { (yyval.attr) = make_attr(ATTR_UIDEFAULT); }
     break;
 
   case 157:
-
-/* Line 1464 of yacc.c  */
-#line 580 "parser.y"
-    { (yyval.attr) = make_attrp(ATTR_USERMARSHAL, (yyvsp[(3) - (4)].type)); ;}
+/* Line 1787 of yacc.c  */
+#line 558 "parser.y"
+    { (yyval.attr) = make_attr(ATTR_USESGETLASTERROR); }
     break;
 
   case 158:
-
-/* Line 1464 of yacc.c  */
-#line 581 "parser.y"
-    { (yyval.attr) = make_attrp(ATTR_UUID, (yyvsp[(3) - (4)].uuid)); ;}
+/* Line 1787 of yacc.c  */
+#line 559 "parser.y"
+    { (yyval.attr) = make_attrp(ATTR_USERMARSHAL, (yyvsp[(3) - (4)].type)); }
     break;
 
   case 159:
-
-/* Line 1464 of yacc.c  */
-#line 582 "parser.y"
-    { (yyval.attr) = make_attrp(ATTR_ASYNCUUID, (yyvsp[(3) - (4)].uuid)); ;}
+/* Line 1787 of yacc.c  */
+#line 560 "parser.y"
+    { (yyval.attr) = make_attrp(ATTR_UUID, (yyvsp[(3) - (4)].uuid)); }
     break;
 
   case 160:
-
-/* Line 1464 of yacc.c  */
-#line 583 "parser.y"
-    { (yyval.attr) = make_attr(ATTR_V1ENUM); ;}
+/* Line 1787 of yacc.c  */
+#line 561 "parser.y"
+    { (yyval.attr) = make_attrp(ATTR_ASYNCUUID, (yyvsp[(3) - (4)].uuid)); }
     break;
 
   case 161:
-
-/* Line 1464 of yacc.c  */
-#line 584 "parser.y"
-    { (yyval.attr) = make_attr(ATTR_VARARG); ;}
+/* Line 1787 of yacc.c  */
+#line 562 "parser.y"
+    { (yyval.attr) = make_attr(ATTR_V1ENUM); }
     break;
 
   case 162:
-
-/* Line 1464 of yacc.c  */
-#line 585 "parser.y"
-    { (yyval.attr) = make_attrv(ATTR_VERSION, (yyvsp[(3) - (4)].num)); ;}
+/* Line 1787 of yacc.c  */
+#line 563 "parser.y"
+    { (yyval.attr) = make_attr(ATTR_VARARG); }
     break;
 
   case 163:
-
-/* Line 1464 of yacc.c  */
-#line 586 "parser.y"
-    { (yyval.attr) = make_attrp(ATTR_VIPROGID, (yyvsp[(3) - (4)].str)); ;}
+/* Line 1787 of yacc.c  */
+#line 564 "parser.y"
+    { (yyval.attr) = make_attrv(ATTR_VERSION, (yyvsp[(3) - (4)].num)); }
     break;
 
   case 164:
-
-/* Line 1464 of yacc.c  */
-#line 587 "parser.y"
-    { (yyval.attr) = make_attrp(ATTR_WIREMARSHAL, (yyvsp[(3) - (4)].type)); ;}
+/* Line 1787 of yacc.c  */
+#line 565 "parser.y"
+    { (yyval.attr) = make_attrp(ATTR_VIPROGID, (yyvsp[(3) - (4)].str)); }
     break;
 
   case 165:
-
-/* Line 1464 of yacc.c  */
-#line 588 "parser.y"
-    { (yyval.attr) = make_attrv(ATTR_POINTERTYPE, (yyvsp[(1) - (1)].num)); ;}
+/* Line 1787 of yacc.c  */
+#line 566 "parser.y"
+    { (yyval.attr) = make_attrp(ATTR_WIREMARSHAL, (yyvsp[(3) - (4)].type)); }
     break;
 
-  case 167:
-
-/* Line 1464 of yacc.c  */
-#line 593 "parser.y"
-    { if (!is_valid_uuid((yyvsp[(1) - (1)].str)))
-						    error_loc("invalid UUID: %s\n", (yyvsp[(1) - (1)].str));
-						  (yyval.uuid) = parse_uuid((yyvsp[(1) - (1)].str)); ;}
+  case 166:
+/* Line 1787 of yacc.c  */
+#line 567 "parser.y"
+    { (yyval.attr) = make_attrv(ATTR_POINTERTYPE, (yyvsp[(1) - (1)].num)); }
     break;
 
   case 168:
-
-/* Line 1464 of yacc.c  */
-#line 598 "parser.y"
-    { (yyval.str) = xstrdup("__cdecl"); ;}
+/* Line 1787 of yacc.c  */
+#line 572 "parser.y"
+    { if (!is_valid_uuid((yyvsp[(1) - (1)].str)))
+						    error_loc("invalid UUID: %s\n", (yyvsp[(1) - (1)].str));
+						  (yyval.uuid) = parse_uuid((yyvsp[(1) - (1)].str)); }
     break;
 
   case 169:
-
-/* Line 1464 of yacc.c  */
-#line 599 "parser.y"
-    { (yyval.str) = xstrdup("__fastcall"); ;}
+/* Line 1787 of yacc.c  */
+#line 577 "parser.y"
+    { (yyval.str) = xstrdup("__cdecl"); }
     break;
 
   case 170:
-
-/* Line 1464 of yacc.c  */
-#line 600 "parser.y"
-    { (yyval.str) = xstrdup("__pascal"); ;}
+/* Line 1787 of yacc.c  */
+#line 578 "parser.y"
+    { (yyval.str) = xstrdup("__fastcall"); }
     break;
 
   case 171:
-
-/* Line 1464 of yacc.c  */
-#line 601 "parser.y"
-    { (yyval.str) = xstrdup("__stdcall"); ;}
+/* Line 1787 of yacc.c  */
+#line 579 "parser.y"
+    { (yyval.str) = xstrdup("__pascal"); }
     break;
 
   case 172:
-
-/* Line 1464 of yacc.c  */
-#line 604 "parser.y"
-    { (yyval.var_list) = NULL; ;}
+/* Line 1787 of yacc.c  */
+#line 580 "parser.y"
+    { (yyval.str) = xstrdup("__stdcall"); }
     break;
 
   case 173:
-
-/* Line 1464 of yacc.c  */
-#line 605 "parser.y"
-    { (yyval.var_list) = append_var( (yyvsp[(1) - (2)].var_list), (yyvsp[(2) - (2)].var) ); ;}
+/* Line 1787 of yacc.c  */
+#line 583 "parser.y"
+    { (yyval.var_list) = NULL; }
     break;
 
   case 174:
-
-/* Line 1464 of yacc.c  */
-#line 608 "parser.y"
-    { attr_t *a = make_attrp(ATTR_CASE, append_expr( NULL, (yyvsp[(2) - (4)].expr) ));
-						  (yyval.var) = (yyvsp[(4) - (4)].var); if (!(yyval.var)) (yyval.var) = make_var(NULL);
-						  (yyval.var)->attrs = append_attr( (yyval.var)->attrs, a );
-						;}
+/* Line 1787 of yacc.c  */
+#line 584 "parser.y"
+    { (yyval.var_list) = append_var( (yyvsp[(1) - (2)].var_list), (yyvsp[(2) - (2)].var) ); }
     break;
 
   case 175:
-
-/* Line 1464 of yacc.c  */
-#line 612 "parser.y"
-    { attr_t *a = make_attr(ATTR_DEFAULT);
-						  (yyval.var) = (yyvsp[(3) - (3)].var); if (!(yyval.var)) (yyval.var) = make_var(NULL);
+/* Line 1787 of yacc.c  */
+#line 587 "parser.y"
+    { attr_t *a = make_attrp(ATTR_CASE, append_expr( NULL, (yyvsp[(2) - (4)].expr) ));
+						  (yyval.var) = (yyvsp[(4) - (4)].var); if (!(yyval.var)) (yyval.var) = make_var(NULL);
 						  (yyval.var)->attrs = append_attr( (yyval.var)->attrs, a );
-						;}
+						}
     break;
 
   case 176:
-
-/* Line 1464 of yacc.c  */
-#line 618 "parser.y"
-    { (yyval.var_list) = NULL; ;}
+/* Line 1787 of yacc.c  */
+#line 591 "parser.y"
+    { attr_t *a = make_attr(ATTR_DEFAULT);
+						  (yyval.var) = (yyvsp[(3) - (3)].var); if (!(yyval.var)) (yyval.var) = make_var(NULL);
+						  (yyval.var)->attrs = append_attr( (yyval.var)->attrs, a );
+						}
     break;
 
   case 177:
-
-/* Line 1464 of yacc.c  */
-#line 619 "parser.y"
-    { (yyval.var_list) = (yyvsp[(1) - (2)].var_list); ;}
+/* Line 1787 of yacc.c  */
+#line 597 "parser.y"
+    { (yyval.var_list) = NULL; }
     break;
 
-  case 179:
-
-/* Line 1464 of yacc.c  */
-#line 623 "parser.y"
-    { if (!(yyvsp[(1) - (1)].var)->eval)
-						    (yyvsp[(1) - (1)].var)->eval = make_exprl(EXPR_NUM, 0 /* default for first enum entry */);
-                                                  (yyval.var_list) = append_var( NULL, (yyvsp[(1) - (1)].var) );
-						;}
+  case 178:
+/* Line 1787 of yacc.c  */
+#line 598 "parser.y"
+    { (yyval.var_list) = (yyvsp[(1) - (2)].var_list); }
     break;
 
   case 180:
+/* Line 1787 of yacc.c  */
+#line 602 "parser.y"
+    { if (!(yyvsp[(1) - (1)].var)->eval)
+						    (yyvsp[(1) - (1)].var)->eval = make_exprl(EXPR_NUM, 0 /* default for first enum entry */);
+                                                  (yyval.var_list) = append_var( NULL, (yyvsp[(1) - (1)].var) );
+						}
+    break;
 
-/* Line 1464 of yacc.c  */
-#line 627 "parser.y"
+  case 181:
+/* Line 1787 of yacc.c  */
+#line 606 "parser.y"
     { if (!(yyvsp[(3) - (3)].var)->eval)
                                                   {
                                                     var_t *last = LIST_ENTRY( list_tail((yyval.var_list)), var_t, entry );
@@ -4104,839 +3937,727 @@
                                                     (yyvsp[(3) - (3)].var)->eval = make_exprl(type, last->eval->cval + 1);
                                                   }
                                                   (yyval.var_list) = append_var( (yyvsp[(1) - (3)].var_list), (yyvsp[(3) - (3)].var) );
-						;}
-    break;
-
-  case 181:
-
-/* Line 1464 of yacc.c  */
-#line 639 "parser.y"
-    { (yyval.var) = reg_const((yyvsp[(1) - (3)].var));
-						  (yyval.var)->eval = (yyvsp[(3) - (3)].expr);
-                                                  (yyval.var)->type = type_new_int(TYPE_BASIC_INT, 0);
-						;}
+						}
     break;
 
   case 182:
-
-/* Line 1464 of yacc.c  */
-#line 643 "parser.y"
-    { (yyval.var) = reg_const((yyvsp[(1) - (1)].var));
+/* Line 1787 of yacc.c  */
+#line 618 "parser.y"
+    { (yyval.var) = reg_const((yyvsp[(1) - (3)].var));
+						  (yyval.var)->eval = (yyvsp[(3) - (3)].expr);
                                                   (yyval.var)->type = type_new_int(TYPE_BASIC_INT, 0);
-						;}
+						}
     break;
 
   case 183:
-
-/* Line 1464 of yacc.c  */
-#line 648 "parser.y"
-    { (yyval.type) = type_new_enum((yyvsp[(2) - (5)].str), TRUE, (yyvsp[(4) - (5)].var_list)); ;}
+/* Line 1787 of yacc.c  */
+#line 622 "parser.y"
+    { (yyval.var) = reg_const((yyvsp[(1) - (1)].var));
+                                                  (yyval.var)->type = type_new_int(TYPE_BASIC_INT, 0);
+						}
     break;
 
   case 184:
-
-/* Line 1464 of yacc.c  */
-#line 651 "parser.y"
-    { (yyval.expr_list) = append_expr( NULL, (yyvsp[(1) - (1)].expr) ); ;}
+/* Line 1787 of yacc.c  */
+#line 627 "parser.y"
+    { (yyval.type) = type_new_enum((yyvsp[(2) - (5)].str), TRUE, (yyvsp[(4) - (5)].var_list)); }
     break;
 
   case 185:
-
-/* Line 1464 of yacc.c  */
-#line 652 "parser.y"
-    { (yyval.expr_list) = append_expr( (yyvsp[(1) - (3)].expr_list), (yyvsp[(3) - (3)].expr) ); ;}
+/* Line 1787 of yacc.c  */
+#line 630 "parser.y"
+    { (yyval.expr_list) = append_expr( NULL, (yyvsp[(1) - (1)].expr) ); }
     break;
 
   case 186:
-
-/* Line 1464 of yacc.c  */
-#line 655 "parser.y"
-    { (yyval.expr) = make_expr(EXPR_VOID); ;}
+/* Line 1787 of yacc.c  */
+#line 631 "parser.y"
+    { (yyval.expr_list) = append_expr( (yyvsp[(1) - (3)].expr_list), (yyvsp[(3) - (3)].expr) ); }
     break;
 
-  case 188:
-
-/* Line 1464 of yacc.c  */
-#line 659 "parser.y"
-    { (yyval.expr) = make_exprl(EXPR_NUM, (yyvsp[(1) - (1)].num)); ;}
+  case 187:
+/* Line 1787 of yacc.c  */
+#line 634 "parser.y"
+    { (yyval.expr) = make_expr(EXPR_VOID); }
     break;
 
   case 189:
-
-/* Line 1464 of yacc.c  */
-#line 660 "parser.y"
-    { (yyval.expr) = make_exprl(EXPR_HEXNUM, (yyvsp[(1) - (1)].num)); ;}
+/* Line 1787 of yacc.c  */
+#line 638 "parser.y"
+    { (yyval.expr) = make_exprl(EXPR_NUM, (yyvsp[(1) - (1)].num)); }
     break;
 
   case 190:
-
-/* Line 1464 of yacc.c  */
-#line 661 "parser.y"
-    { (yyval.expr) = make_exprd(EXPR_DOUBLE, (yyvsp[(1) - (1)].dbl)); ;}
+/* Line 1787 of yacc.c  */
+#line 639 "parser.y"
+    { (yyval.expr) = make_exprl(EXPR_HEXNUM, (yyvsp[(1) - (1)].num)); }
     break;
 
   case 191:
-
-/* Line 1464 of yacc.c  */
-#line 662 "parser.y"
-    { (yyval.expr) = make_exprl(EXPR_TRUEFALSE, 0); ;}
+/* Line 1787 of yacc.c  */
+#line 640 "parser.y"
+    { (yyval.expr) = make_exprd(EXPR_DOUBLE, (yyvsp[(1) - (1)].dbl)); }
     break;
 
   case 192:
-
-/* Line 1464 of yacc.c  */
-#line 663 "parser.y"
-    { (yyval.expr) = make_exprl(EXPR_NUM, 0); ;}
+/* Line 1787 of yacc.c  */
+#line 641 "parser.y"
+    { (yyval.expr) = make_exprl(EXPR_TRUEFALSE, 0); }
     break;
 
   case 193:
-
-/* Line 1464 of yacc.c  */
-#line 664 "parser.y"
-    { (yyval.expr) = make_exprl(EXPR_TRUEFALSE, 1); ;}
+/* Line 1787 of yacc.c  */
+#line 642 "parser.y"
+    { (yyval.expr) = make_exprl(EXPR_NUM, 0); }
     break;
 
   case 194:
-
-/* Line 1464 of yacc.c  */
-#line 665 "parser.y"
-    { (yyval.expr) = make_exprs(EXPR_STRLIT, (yyvsp[(1) - (1)].str)); ;}
+/* Line 1787 of yacc.c  */
+#line 643 "parser.y"
+    { (yyval.expr) = make_exprl(EXPR_TRUEFALSE, 1); }
     break;
 
   case 195:
-
-/* Line 1464 of yacc.c  */
-#line 666 "parser.y"
-    { (yyval.expr) = make_exprs(EXPR_WSTRLIT, (yyvsp[(1) - (1)].str)); ;}
+/* Line 1787 of yacc.c  */
+#line 644 "parser.y"
+    { (yyval.expr) = make_exprs(EXPR_STRLIT, (yyvsp[(1) - (1)].str)); }
     break;
 
   case 196:
-
-/* Line 1464 of yacc.c  */
-#line 667 "parser.y"
-    { (yyval.expr) = make_exprs(EXPR_CHARCONST, (yyvsp[(1) - (1)].str)); ;}
+/* Line 1787 of yacc.c  */
+#line 645 "parser.y"
+    { (yyval.expr) = make_exprs(EXPR_WSTRLIT, (yyvsp[(1) - (1)].str)); }
     break;
 
   case 197:
-
-/* Line 1464 of yacc.c  */
-#line 668 "parser.y"
-    { (yyval.expr) = make_exprs(EXPR_IDENTIFIER, (yyvsp[(1) - (1)].str)); ;}
+/* Line 1787 of yacc.c  */
+#line 646 "parser.y"
+    { (yyval.expr) = make_exprs(EXPR_CHARCONST, (yyvsp[(1) - (1)].str)); }
     break;
 
   case 198:
-
-/* Line 1464 of yacc.c  */
-#line 669 "parser.y"
-    { (yyval.expr) = make_expr3(EXPR_COND, (yyvsp[(1) - (5)].expr), (yyvsp[(3) - (5)].expr), (yyvsp[(5) - (5)].expr)); ;}
+/* Line 1787 of yacc.c  */
+#line 647 "parser.y"
+    { (yyval.expr) = make_exprs(EXPR_IDENTIFIER, (yyvsp[(1) - (1)].str)); }
     break;
 
   case 199:
-
-/* Line 1464 of yacc.c  */
-#line 670 "parser.y"
-    { (yyval.expr) = make_expr2(EXPR_LOGOR, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
+/* Line 1787 of yacc.c  */
+#line 648 "parser.y"
+    { (yyval.expr) = make_expr3(EXPR_COND, (yyvsp[(1) - (5)].expr), (yyvsp[(3) - (5)].expr), (yyvsp[(5) - (5)].expr)); }
     break;
 
   case 200:
-
-/* Line 1464 of yacc.c  */
-#line 671 "parser.y"
-    { (yyval.expr) = make_expr2(EXPR_LOGAND, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
+/* Line 1787 of yacc.c  */
+#line 649 "parser.y"
+    { (yyval.expr) = make_expr2(EXPR_LOGOR, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); }
     break;
 
   case 201:
-
-/* Line 1464 of yacc.c  */
-#line 672 "parser.y"
-    { (yyval.expr) = make_expr2(EXPR_OR , (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
+/* Line 1787 of yacc.c  */
+#line 650 "parser.y"
+    { (yyval.expr) = make_expr2(EXPR_LOGAND, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); }
     break;
 
   case 202:
-
-/* Line 1464 of yacc.c  */
-#line 673 "parser.y"
-    { (yyval.expr) = make_expr2(EXPR_XOR, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
+/* Line 1787 of yacc.c  */
+#line 651 "parser.y"
+    { (yyval.expr) = make_expr2(EXPR_OR , (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); }
     break;
 
   case 203:
-
-/* Line 1464 of yacc.c  */
-#line 674 "parser.y"
-    { (yyval.expr) = make_expr2(EXPR_AND, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
+/* Line 1787 of yacc.c  */
+#line 652 "parser.y"
+    { (yyval.expr) = make_expr2(EXPR_XOR, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); }
     break;
 
   case 204:
-
-/* Line 1464 of yacc.c  */
-#line 675 "parser.y"
-    { (yyval.expr) = make_expr2(EXPR_EQUALITY, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
+/* Line 1787 of yacc.c  */
+#line 653 "parser.y"
+    { (yyval.expr) = make_expr2(EXPR_AND, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); }
     break;
 
   case 205:
-
-/* Line 1464 of yacc.c  */
-#line 676 "parser.y"
-    { (yyval.expr) = make_expr2(EXPR_INEQUALITY, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
+/* Line 1787 of yacc.c  */
+#line 654 "parser.y"
+    { (yyval.expr) = make_expr2(EXPR_EQUALITY, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); }
     break;
 
   case 206:
-
-/* Line 1464 of yacc.c  */
-#line 677 "parser.y"
-    { (yyval.expr) = make_expr2(EXPR_GTR, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
+/* Line 1787 of yacc.c  */
+#line 655 "parser.y"
+    { (yyval.expr) = make_expr2(EXPR_INEQUALITY, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); }
     break;
 
   case 207:
-
-/* Line 1464 of yacc.c  */
-#line 678 "parser.y"
-    { (yyval.expr) = make_expr2(EXPR_LESS, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
+/* Line 1787 of yacc.c  */
+#line 656 "parser.y"
+    { (yyval.expr) = make_expr2(EXPR_GTR, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); }
     break;
 
   case 208:
-
-/* Line 1464 of yacc.c  */
-#line 679 "parser.y"
-    { (yyval.expr) = make_expr2(EXPR_GTREQL, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
+/* Line 1787 of yacc.c  */
+#line 657 "parser.y"
+    { (yyval.expr) = make_expr2(EXPR_LESS, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); }
     break;
 
   case 209:
-
-/* Line 1464 of yacc.c  */
-#line 680 "parser.y"
-    { (yyval.expr) = make_expr2(EXPR_LESSEQL, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
+/* Line 1787 of yacc.c  */
+#line 658 "parser.y"
+    { (yyval.expr) = make_expr2(EXPR_GTREQL, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); }
     break;
 
   case 210:
-
-/* Line 1464 of yacc.c  */
-#line 681 "parser.y"
-    { (yyval.expr) = make_expr2(EXPR_SHL, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
+/* Line 1787 of yacc.c  */
+#line 659 "parser.y"
+    { (yyval.expr) = make_expr2(EXPR_LESSEQL, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); }
     break;
 
   case 211:
-
-/* Line 1464 of yacc.c  */
-#line 682 "parser.y"
-    { (yyval.expr) = make_expr2(EXPR_SHR, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
+/* Line 1787 of yacc.c  */
+#line 660 "parser.y"
+    { (yyval.expr) = make_expr2(EXPR_SHL, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); }
     break;
 
   case 212:
-
-/* Line 1464 of yacc.c  */
-#line 683 "parser.y"
-    { (yyval.expr) = make_expr2(EXPR_ADD, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
+/* Line 1787 of yacc.c  */
+#line 661 "parser.y"
+    { (yyval.expr) = make_expr2(EXPR_SHR, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); }
     break;
 
   case 213:
-
-/* Line 1464 of yacc.c  */
-#line 684 "parser.y"
-    { (yyval.expr) = make_expr2(EXPR_SUB, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
+/* Line 1787 of yacc.c  */
+#line 662 "parser.y"
+    { (yyval.expr) = make_expr2(EXPR_ADD, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); }
     break;
 
   case 214:
-
-/* Line 1464 of yacc.c  */
-#line 685 "parser.y"
-    { (yyval.expr) = make_expr2(EXPR_MOD, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
+/* Line 1787 of yacc.c  */
+#line 663 "parser.y"
+    { (yyval.expr) = make_expr2(EXPR_SUB, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); }
     break;
 
   case 215:
-
-/* Line 1464 of yacc.c  */
-#line 686 "parser.y"
-    { (yyval.expr) = make_expr2(EXPR_MUL, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
+/* Line 1787 of yacc.c  */
+#line 664 "parser.y"
+    { (yyval.expr) = make_expr2(EXPR_MOD, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); }
     break;
 
   case 216:
-
-/* Line 1464 of yacc.c  */
-#line 687 "parser.y"
-    { (yyval.expr) = make_expr2(EXPR_DIV, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
+/* Line 1787 of yacc.c  */
+#line 665 "parser.y"
+    { (yyval.expr) = make_expr2(EXPR_MUL, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); }
     break;
 
   case 217:
-
-/* Line 1464 of yacc.c  */
-#line 688 "parser.y"
-    { (yyval.expr) = make_expr1(EXPR_LOGNOT, (yyvsp[(2) - (2)].expr)); ;}
+/* Line 1787 of yacc.c  */
+#line 666 "parser.y"
+    { (yyval.expr) = make_expr2(EXPR_DIV, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); }
     break;
 
   case 218:
-
-/* Line 1464 of yacc.c  */
-#line 689 "parser.y"
-    { (yyval.expr) = make_expr1(EXPR_NOT, (yyvsp[(2) - (2)].expr)); ;}
+/* Line 1787 of yacc.c  */
+#line 667 "parser.y"
+    { (yyval.expr) = make_expr1(EXPR_LOGNOT, (yyvsp[(2) - (2)].expr)); }
     break;
 
   case 219:
-
-/* Line 1464 of yacc.c  */
-#line 690 "parser.y"
-    { (yyval.expr) = make_expr1(EXPR_POS, (yyvsp[(2) - (2)].expr)); ;}
+/* Line 1787 of yacc.c  */
+#line 668 "parser.y"
+    { (yyval.expr) = make_expr1(EXPR_NOT, (yyvsp[(2) - (2)].expr)); }
     break;
 
   case 220:
-
-/* Line 1464 of yacc.c  */
-#line 691 "parser.y"
-    { (yyval.expr) = make_expr1(EXPR_NEG, (yyvsp[(2) - (2)].expr)); ;}
+/* Line 1787 of yacc.c  */
+#line 669 "parser.y"
+    { (yyval.expr) = make_expr1(EXPR_POS, (yyvsp[(2) - (2)].expr)); }
     break;
 
   case 221:
-
-/* Line 1464 of yacc.c  */
-#line 692 "parser.y"
-    { (yyval.expr) = make_expr1(EXPR_ADDRESSOF, (yyvsp[(2) - (2)].expr)); ;}
+/* Line 1787 of yacc.c  */
+#line 670 "parser.y"
+    { (yyval.expr) = make_expr1(EXPR_NEG, (yyvsp[(2) - (2)].expr)); }
     break;
 
   case 222:
-
-/* Line 1464 of yacc.c  */
-#line 693 "parser.y"
-    { (yyval.expr) = make_expr1(EXPR_PPTR, (yyvsp[(2) - (2)].expr)); ;}
+/* Line 1787 of yacc.c  */
+#line 671 "parser.y"
+    { (yyval.expr) = make_expr1(EXPR_ADDRESSOF, (yyvsp[(2) - (2)].expr)); }
     break;
 
   case 223:
-
-/* Line 1464 of yacc.c  */
-#line 694 "parser.y"
-    { (yyval.expr) = make_expr2(EXPR_MEMBER, make_expr1(EXPR_PPTR, (yyvsp[(1) - (3)].expr)), make_exprs(EXPR_IDENTIFIER, (yyvsp[(3) - (3)].str))); ;}
+/* Line 1787 of yacc.c  */
+#line 672 "parser.y"
+    { (yyval.expr) = make_expr1(EXPR_PPTR, (yyvsp[(2) - (2)].expr)); }
     break;
 
   case 224:
-
-/* Line 1464 of yacc.c  */
-#line 695 "parser.y"
-    { (yyval.expr) = make_expr2(EXPR_MEMBER, (yyvsp[(1) - (3)].expr), make_exprs(EXPR_IDENTIFIER, (yyvsp[(3) - (3)].str))); ;}
+/* Line 1787 of yacc.c  */
+#line 673 "parser.y"
+    { (yyval.expr) = make_expr2(EXPR_MEMBER, make_expr1(EXPR_PPTR, (yyvsp[(1) - (3)].expr)), make_exprs(EXPR_IDENTIFIER, (yyvsp[(3) - (3)].str))); }
     break;
 
   case 225:
-
-/* Line 1464 of yacc.c  */
-#line 697 "parser.y"
-    { (yyval.expr) = make_exprt(EXPR_CAST, declare_var(NULL, (yyvsp[(2) - (5)].declspec), (yyvsp[(3) - (5)].declarator), 0), (yyvsp[(5) - (5)].expr)); free((yyvsp[(2) - (5)].declspec)); free((yyvsp[(3) - (5)].declarator)); ;}
+/* Line 1787 of yacc.c  */
+#line 674 "parser.y"
+    { (yyval.expr) = make_expr2(EXPR_MEMBER, (yyvsp[(1) - (3)].expr), make_exprs(EXPR_IDENTIFIER, (yyvsp[(3) - (3)].str))); }
     break;
 
   case 226:
-
-/* Line 1464 of yacc.c  */
-#line 699 "parser.y"
-    { (yyval.expr) = make_exprt(EXPR_SIZEOF, declare_var(NULL, (yyvsp[(3) - (5)].declspec), (yyvsp[(4) - (5)].declarator), 0), NULL); free((yyvsp[(3) - (5)].declspec)); free((yyvsp[(4) - (5)].declarator)); ;}
+/* Line 1787 of yacc.c  */
+#line 676 "parser.y"
+    { (yyval.expr) = make_exprt(EXPR_CAST, declare_var(NULL, (yyvsp[(2) - (5)].declspec), (yyvsp[(3) - (5)].declarator), 0), (yyvsp[(5) - (5)].expr)); free((yyvsp[(2) - (5)].declspec)); free((yyvsp[(3) - (5)].declarator)); }
     break;
 
   case 227:
-
-/* Line 1464 of yacc.c  */
-#line 700 "parser.y"
-    { (yyval.expr) = make_expr2(EXPR_ARRAY, (yyvsp[(1) - (4)].expr), (yyvsp[(3) - (4)].expr)); ;}
+/* Line 1787 of yacc.c  */
+#line 678 "parser.y"
+    { (yyval.expr) = make_exprt(EXPR_SIZEOF, declare_var(NULL, (yyvsp[(3) - (5)].declspec), (yyvsp[(4) - (5)].declarator), 0), NULL); free((yyvsp[(3) - (5)].declspec)); free((yyvsp[(4) - (5)].declarator)); }
     break;
 
   case 228:
-
-/* Line 1464 of yacc.c  */
-#line 701 "parser.y"
-    { (yyval.expr) = (yyvsp[(2) - (3)].expr); ;}
+/* Line 1787 of yacc.c  */
+#line 679 "parser.y"
+    { (yyval.expr) = make_expr2(EXPR_ARRAY, (yyvsp[(1) - (4)].expr), (yyvsp[(3) - (4)].expr)); }
     break;
 
   case 229:
-
-/* Line 1464 of yacc.c  */
-#line 704 "parser.y"
-    { (yyval.expr_list) = append_expr( NULL, (yyvsp[(1) - (1)].expr) ); ;}
+/* Line 1787 of yacc.c  */
+#line 680 "parser.y"
+    { (yyval.expr) = (yyvsp[(2) - (3)].expr); }
     break;
 
   case 230:
-
-/* Line 1464 of yacc.c  */
-#line 705 "parser.y"
-    { (yyval.expr_list) = append_expr( (yyvsp[(1) - (3)].expr_list), (yyvsp[(3) - (3)].expr) ); ;}
+/* Line 1787 of yacc.c  */
+#line 683 "parser.y"
+    { (yyval.expr_list) = append_expr( NULL, (yyvsp[(1) - (1)].expr) ); }
     break;
 
   case 231:
-
-/* Line 1464 of yacc.c  */
-#line 708 "parser.y"
-    { (yyval.expr) = (yyvsp[(1) - (1)].expr);
-						  if (!(yyval.expr)->is_const)
-						      error_loc("expression is not an integer constant\n");
-						;}
+/* Line 1787 of yacc.c  */
+#line 684 "parser.y"
+    { (yyval.expr_list) = append_expr( (yyvsp[(1) - (3)].expr_list), (yyvsp[(3) - (3)].expr) ); }
     break;
 
   case 232:
-
-/* Line 1464 of yacc.c  */
-#line 714 "parser.y"
+/* Line 1787 of yacc.c  */
+#line 687 "parser.y"
     { (yyval.expr) = (yyvsp[(1) - (1)].expr);
-						  if (!(yyval.expr)->is_const && (yyval.expr)->type != EXPR_STRLIT && (yyval.expr)->type != EXPR_WSTRLIT)
-						      error_loc("expression is not constant\n");
-						;}
+						  if (!(yyval.expr)->is_const)
+						      error_loc("expression is not an integer constant\n");
+						}
     break;
 
   case 233:
-
-/* Line 1464 of yacc.c  */
-#line 720 "parser.y"
-    { (yyval.var_list) = NULL; ;}
+/* Line 1787 of yacc.c  */
+#line 693 "parser.y"
+    { (yyval.expr) = (yyvsp[(1) - (1)].expr);
+						  if (!(yyval.expr)->is_const && (yyval.expr)->type != EXPR_STRLIT && (yyval.expr)->type != EXPR_WSTRLIT)
+						      error_loc("expression is not constant\n");
+						}
     break;
 
   case 234:
-
-/* Line 1464 of yacc.c  */
-#line 721 "parser.y"
-    { (yyval.var_list) = append_var_list((yyvsp[(1) - (2)].var_list), (yyvsp[(2) - (2)].var_list)); ;}
+/* Line 1787 of yacc.c  */
+#line 699 "parser.y"
+    { (yyval.var_list) = NULL; }
     break;
 
   case 235:
-
-/* Line 1464 of yacc.c  */
-#line 725 "parser.y"
-    { const char *first = LIST_ENTRY(list_head((yyvsp[(3) - (4)].declarator_list)), declarator_t, entry)->var->name;
-						  check_field_attrs(first, (yyvsp[(1) - (4)].attr_list));
-						  (yyval.var_list) = set_var_types((yyvsp[(1) - (4)].attr_list), (yyvsp[(2) - (4)].declspec), (yyvsp[(3) - (4)].declarator_list));
-						;}
+/* Line 1787 of yacc.c  */
+#line 700 "parser.y"
+    { (yyval.var_list) = append_var_list((yyvsp[(1) - (2)].var_list), (yyvsp[(2) - (2)].var_list)); }
     break;
 
   case 236:
-
-/* Line 1464 of yacc.c  */
-#line 729 "parser.y"
-    { var_t *v = make_var(NULL);
-						  v->type = (yyvsp[(2) - (3)].type); v->attrs = (yyvsp[(1) - (3)].attr_list);
-						  (yyval.var_list) = append_var(NULL, v);
-						;}
+/* Line 1787 of yacc.c  */
+#line 704 "parser.y"
+    { const char *first = LIST_ENTRY(list_head((yyvsp[(3) - (4)].declarator_list)), declarator_t, entry)->var->name;
+						  check_field_attrs(first, (yyvsp[(1) - (4)].attr_list));
+						  (yyval.var_list) = set_var_types((yyvsp[(1) - (4)].attr_list), (yyvsp[(2) - (4)].declspec), (yyvsp[(3) - (4)].declarator_list));
+						}
     break;
 
   case 237:
-
-/* Line 1464 of yacc.c  */
-#line 736 "parser.y"
-    { (yyval.var) = (yyvsp[(1) - (2)].var); ;}
+/* Line 1787 of yacc.c  */
+#line 708 "parser.y"
+    { var_t *v = make_var(NULL);
+						  v->type = (yyvsp[(2) - (3)].type); v->attrs = (yyvsp[(1) - (3)].attr_list);
+						  (yyval.var_list) = append_var(NULL, v);
+						}
     break;
 
   case 238:
-
-/* Line 1464 of yacc.c  */
-#line 737 "parser.y"
-    { (yyval.var) = make_var(NULL); (yyval.var)->attrs = (yyvsp[(1) - (2)].attr_list); ;}
+/* Line 1787 of yacc.c  */
+#line 715 "parser.y"
+    { (yyval.var) = (yyvsp[(1) - (2)].var); }
     break;
 
   case 239:
-
-/* Line 1464 of yacc.c  */
-#line 740 "parser.y"
-    { (yyval.var_list) = NULL; ;}
+/* Line 1787 of yacc.c  */
+#line 716 "parser.y"
+    { (yyval.var) = make_var(NULL); (yyval.var)->attrs = (yyvsp[(1) - (2)].attr_list); }
     break;
 
   case 240:
-
-/* Line 1464 of yacc.c  */
-#line 741 "parser.y"
-    { (yyval.var_list) = append_var( (yyvsp[(1) - (2)].var_list), (yyvsp[(2) - (2)].var) ); ;}
+/* Line 1787 of yacc.c  */
+#line 719 "parser.y"
+    { (yyval.var_list) = NULL; }
     break;
 
   case 241:
-
-/* Line 1464 of yacc.c  */
-#line 745 "parser.y"
-    { (yyval.var) = (yyvsp[(1) - (2)].var); ;}
+/* Line 1787 of yacc.c  */
+#line 720 "parser.y"
+    { (yyval.var_list) = append_var( (yyvsp[(1) - (2)].var_list), (yyvsp[(2) - (2)].var) ); }
     break;
 
   case 242:
-
-/* Line 1464 of yacc.c  */
-#line 746 "parser.y"
-    { (yyval.var) = NULL; ;}
+/* Line 1787 of yacc.c  */
+#line 724 "parser.y"
+    { (yyval.var) = (yyvsp[(1) - (2)].var); }
     break;
 
   case 243:
-
-/* Line 1464 of yacc.c  */
-#line 749 "parser.y"
-    { (yyval.var) = declare_var(check_field_attrs((yyvsp[(3) - (3)].declarator)->var->name, (yyvsp[(1) - (3)].attr_list)),
-						                (yyvsp[(2) - (3)].declspec), (yyvsp[(3) - (3)].declarator), FALSE);
-						  free((yyvsp[(3) - (3)].declarator));
-						;}
+/* Line 1787 of yacc.c  */
+#line 725 "parser.y"
+    { (yyval.var) = NULL; }
     break;
 
   case 244:
-
-/* Line 1464 of yacc.c  */
-#line 753 "parser.y"
-    { var_t *v = make_var(NULL);
-						  v->type = (yyvsp[(2) - (2)].type); v->attrs = (yyvsp[(1) - (2)].attr_list);
-						  (yyval.var) = v;
-						;}
+/* Line 1787 of yacc.c  */
+#line 728 "parser.y"
+    { (yyval.var) = declare_var(check_field_attrs((yyvsp[(3) - (3)].declarator)->var->name, (yyvsp[(1) - (3)].attr_list)),
+						                (yyvsp[(2) - (3)].declspec), (yyvsp[(3) - (3)].declarator), FALSE);
+						  free((yyvsp[(3) - (3)].declarator));
+						}
     break;
 
   case 245:
+/* Line 1787 of yacc.c  */
+#line 732 "parser.y"
+    { var_t *v = make_var(NULL);
+						  v->type = (yyvsp[(2) - (2)].type); v->attrs = (yyvsp[(1) - (2)].attr_list);
+						  (yyval.var) = v;
+						}
+    break;
 
-/* Line 1464 of yacc.c  */
-#line 759 "parser.y"
+  case 246:
+/* Line 1787 of yacc.c  */
+#line 738 "parser.y"
     { (yyval.var) = (yyvsp[(1) - (1)].var);
 						  if (type_get_type((yyval.var)->type) != TYPE_FUNCTION)
 						    error_loc("only methods may be declared inside the methods section of a dispinterface\n");
 						  check_function_attrs((yyval.var)->name, (yyval.var)->attrs);
-						;}
-    break;
-
-  case 246:
-
-/* Line 1464 of yacc.c  */
-#line 768 "parser.y"
-    { (yyval.var) = declare_var((yyvsp[(1) - (3)].attr_list), (yyvsp[(2) - (3)].declspec), (yyvsp[(3) - (3)].declarator), FALSE);
-						  free((yyvsp[(3) - (3)].declarator));
-						;}
+						}
     break;
 
   case 247:
-
-/* Line 1464 of yacc.c  */
-#line 771 "parser.y"
-    { (yyval.var) = declare_var(NULL, (yyvsp[(1) - (2)].declspec), (yyvsp[(2) - (2)].declarator), FALSE);
-						  free((yyvsp[(2) - (2)].declarator));
-						;}
+/* Line 1787 of yacc.c  */
+#line 747 "parser.y"
+    { (yyval.var) = declare_var((yyvsp[(1) - (3)].attr_list), (yyvsp[(2) - (3)].declspec), (yyvsp[(3) - (3)].declarator), FALSE);
+						  free((yyvsp[(3) - (3)].declarator));
+						}
     break;
 
   case 248:
-
-/* Line 1464 of yacc.c  */
-#line 776 "parser.y"
-    { (yyval.var) = NULL; ;}
+/* Line 1787 of yacc.c  */
+#line 750 "parser.y"
+    { (yyval.var) = declare_var(NULL, (yyvsp[(1) - (2)].declspec), (yyvsp[(2) - (2)].declarator), FALSE);
+						  free((yyvsp[(2) - (2)].declarator));
+						}
     break;
 
-  case 250:
-
-/* Line 1464 of yacc.c  */
-#line 780 "parser.y"
-    { (yyval.str) = NULL; ;}
+  case 249:
+/* Line 1787 of yacc.c  */
+#line 755 "parser.y"
+    { (yyval.var) = NULL; }
     break;
 
   case 251:
-
-/* Line 1464 of yacc.c  */
-#line 781 "parser.y"
-    { (yyval.str) = (yyvsp[(1) - (1)].str); ;}
+/* Line 1787 of yacc.c  */
+#line 759 "parser.y"
+    { (yyval.str) = NULL; }
     break;
 
   case 252:
-
-/* Line 1464 of yacc.c  */
-#line 782 "parser.y"
-    { (yyval.str) = (yyvsp[(1) - (1)].str); ;}
+/* Line 1787 of yacc.c  */
+#line 760 "parser.y"
+    { (yyval.str) = (yyvsp[(1) - (1)].str); }
     break;
 
   case 253:
-
-/* Line 1464 of yacc.c  */
-#line 785 "parser.y"
-    { (yyval.var) = make_var((yyvsp[(1) - (1)].str)); ;}
+/* Line 1787 of yacc.c  */
+#line 761 "parser.y"
+    { (yyval.str) = (yyvsp[(1) - (1)].str); }
     break;
 
   case 254:
-
-/* Line 1464 of yacc.c  */
-#line 787 "parser.y"
-    { (yyval.var) = make_var((yyvsp[(1) - (1)].str)); ;}
+/* Line 1787 of yacc.c  */
+#line 764 "parser.y"
+    { (yyval.var) = make_var((yyvsp[(1) - (1)].str)); }
     break;
 
   case 255:
-
-/* Line 1464 of yacc.c  */
-#line 790 "parser.y"
-    { (yyval.type) = find_type_or_error((yyvsp[(1) - (1)].str), 0); ;}
+/* Line 1787 of yacc.c  */
+#line 766 "parser.y"
+    { (yyval.var) = make_var((yyvsp[(1) - (1)].str)); }
     break;
 
   case 256:
-
-/* Line 1464 of yacc.c  */
-#line 791 "parser.y"
-    { (yyval.type) = find_type_or_error((yyvsp[(1) - (1)].str), 0); ;}
+/* Line 1787 of yacc.c  */
+#line 769 "parser.y"
+    { (yyval.type) = find_type_or_error((yyvsp[(1) - (1)].str), 0); }
     break;
 
-  case 258:
-
-/* Line 1464 of yacc.c  */
-#line 793 "parser.y"
-    { (yyval.type) = type_new_int(type_basic_get_type((yyvsp[(2) - (2)].type)), -1); ;}
+  case 257:
+/* Line 1787 of yacc.c  */
+#line 770 "parser.y"
+    { (yyval.type) = find_type_or_error((yyvsp[(1) - (1)].str), 0); }
     break;
 
   case 259:
-
-/* Line 1464 of yacc.c  */
-#line 794 "parser.y"
-    { (yyval.type) = type_new_int(type_basic_get_type((yyvsp[(2) - (2)].type)), 1); ;}
+/* Line 1787 of yacc.c  */
+#line 772 "parser.y"
+    { (yyval.type) = type_new_int(type_basic_get_type((yyvsp[(2) - (2)].type)), -1); }
     break;
 
   case 260:
-
-/* Line 1464 of yacc.c  */
-#line 795 "parser.y"
-    { (yyval.type) = type_new_int(TYPE_BASIC_INT, 1); ;}
+/* Line 1787 of yacc.c  */
+#line 773 "parser.y"
+    { (yyval.type) = type_new_int(type_basic_get_type((yyvsp[(2) - (2)].type)), 1); }
     break;
 
   case 261:
-
-/* Line 1464 of yacc.c  */
-#line 796 "parser.y"
-    { (yyval.type) = find_type_or_error((yyvsp[(1) - (1)].str), 0); ;}
+/* Line 1787 of yacc.c  */
+#line 774 "parser.y"
+    { (yyval.type) = type_new_int(TYPE_BASIC_INT, 1); }
     break;
 
   case 262:
-
-/* Line 1464 of yacc.c  */
-#line 797 "parser.y"
-    { (yyval.type) = find_type_or_error((yyvsp[(1) - (1)].str), 0); ;}
+/* Line 1787 of yacc.c  */
+#line 775 "parser.y"
+    { (yyval.type) = find_type_or_error((yyvsp[(1) - (1)].str), 0); }
     break;
 
   case 263:
-
-/* Line 1464 of yacc.c  */
-#line 798 "parser.y"
-    { (yyval.type) = find_type_or_error((yyvsp[(1) - (1)].str), 0); ;}
+/* Line 1787 of yacc.c  */
+#line 776 "parser.y"
+    { (yyval.type) = find_type_or_error((yyvsp[(1) - (1)].str), 0); }
     break;
 
   case 264:
-
-/* Line 1464 of yacc.c  */
-#line 799 "parser.y"
-    { (yyval.type) = find_type_or_error((yyvsp[(1) - (1)].str), 0); ;}
+/* Line 1787 of yacc.c  */
+#line 777 "parser.y"
+    { (yyval.type) = find_type_or_error((yyvsp[(1) - (1)].str), 0); }
     break;
 
   case 265:
-
-/* Line 1464 of yacc.c  */
-#line 800 "parser.y"
-    { (yyval.type) = find_type_or_error((yyvsp[(1) - (1)].str), 0); ;}
+/* Line 1787 of yacc.c  */
+#line 778 "parser.y"
+    { (yyval.type) = find_type_or_error((yyvsp[(1) - (1)].str), 0); }
     break;
 
-  case 268:
-
-/* Line 1464 of yacc.c  */
-#line 807 "parser.y"
-    { (yyval.type) = type_new_int(TYPE_BASIC_INT, 0); ;}
+  case 266:
+/* Line 1787 of yacc.c  */
+#line 779 "parser.y"
+    { (yyval.type) = find_type_or_error((yyvsp[(1) - (1)].str), 0); }
     break;
 
   case 269:
-
-/* Line 1464 of yacc.c  */
-#line 808 "parser.y"
-    { (yyval.type) = type_new_int(TYPE_BASIC_INT16, 0); ;}
+/* Line 1787 of yacc.c  */
+#line 786 "parser.y"
+    { (yyval.type) = type_new_int(TYPE_BASIC_INT, 0); }
     break;
 
   case 270:
-
-/* Line 1464 of yacc.c  */
-#line 809 "parser.y"
-    { (yyval.type) = type_new_int(TYPE_BASIC_INT8, 0); ;}
+/* Line 1787 of yacc.c  */
+#line 787 "parser.y"
+    { (yyval.type) = type_new_int(TYPE_BASIC_INT16, 0); }
     break;
 
   case 271:
-
-/* Line 1464 of yacc.c  */
-#line 810 "parser.y"
-    { (yyval.type) = type_new_int(TYPE_BASIC_INT32, 0); ;}
+/* Line 1787 of yacc.c  */
+#line 788 "parser.y"
+    { (yyval.type) = type_new_int(TYPE_BASIC_INT8, 0); }
     break;
 
   case 272:
-
-/* Line 1464 of yacc.c  */
-#line 811 "parser.y"
-    { (yyval.type) = type_new_int(TYPE_BASIC_HYPER, 0); ;}
+/* Line 1787 of yacc.c  */
+#line 789 "parser.y"
+    { (yyval.type) = type_new_int(TYPE_BASIC_INT32, 0); }
     break;
 
   case 273:
-
-/* Line 1464 of yacc.c  */
-#line 812 "parser.y"
-    { (yyval.type) = type_new_int(TYPE_BASIC_INT64, 0); ;}
+/* Line 1787 of yacc.c  */
+#line 790 "parser.y"
+    { (yyval.type) = type_new_int(TYPE_BASIC_HYPER, 0); }
     break;
 
   case 274:
-
-/* Line 1464 of yacc.c  */
-#line 813 "parser.y"
-    { (yyval.type) = type_new_int(TYPE_BASIC_CHAR, 0); ;}
+/* Line 1787 of yacc.c  */
+#line 791 "parser.y"
+    { (yyval.type) = type_new_int(TYPE_BASIC_INT64, 0); }
     break;
 
   case 275:
-
-/* Line 1464 of yacc.c  */
-#line 814 "parser.y"
-    { (yyval.type) = type_new_int(TYPE_BASIC_INT3264, 0); ;}
+/* Line 1787 of yacc.c  */
+#line 792 "parser.y"
+    { (yyval.type) = type_new_int(TYPE_BASIC_CHAR, 0); }
     break;
 
   case 276:
-
-/* Line 1464 of yacc.c  */
-#line 817 "parser.y"
-    { (yyval.type) = type_new_coclass((yyvsp[(2) - (2)].str)); ;}
+/* Line 1787 of yacc.c  */
+#line 793 "parser.y"
+    { (yyval.type) = type_new_int(TYPE_BASIC_INT3264, 0); }
     break;
 
   case 277:
+/* Line 1787 of yacc.c  */
+#line 796 "parser.y"
+    { (yyval.type) = type_new_coclass((yyvsp[(2) - (2)].str)); }
+    break;
 
-/* Line 1464 of yacc.c  */
-#line 818 "parser.y"
+  case 278:
+/* Line 1787 of yacc.c  */
+#line 797 "parser.y"
     { (yyval.type) = find_type((yyvsp[(2) - (2)].str), 0);
 						  if (type_get_type_detect_alias((yyval.type)) != TYPE_COCLASS)
 						    error_loc("%s was not declared a coclass at %s:%d\n",
 							      (yyvsp[(2) - (2)].str), (yyval.type)->loc_info.input_name,
 							      (yyval.type)->loc_info.line_number);
-						;}
-    break;
-
-  case 278:
-
-/* Line 1464 of yacc.c  */
-#line 826 "parser.y"
-    { (yyval.type) = (yyvsp[(2) - (2)].type);
-						  check_def((yyval.type));
-						  (yyval.type)->attrs = check_coclass_attrs((yyvsp[(2) - (2)].type)->name, (yyvsp[(1) - (2)].attr_list));
-						;}
+						}
     break;
 
   case 279:
-
-/* Line 1464 of yacc.c  */
-#line 833 "parser.y"
-    { (yyval.type) = type_coclass_define((yyvsp[(1) - (5)].type), (yyvsp[(3) - (5)].ifref_list)); ;}
+/* Line 1787 of yacc.c  */
+#line 805 "parser.y"
+    { (yyval.type) = (yyvsp[(2) - (2)].type);
+						  check_def((yyval.type));
+						  (yyval.type)->attrs = check_coclass_attrs((yyvsp[(2) - (2)].type)->name, (yyvsp[(1) - (2)].attr_list));
+						}
     break;
 
   case 280:
-
-/* Line 1464 of yacc.c  */
-#line 837 "parser.y"
-    { fprintf (stderr, "NS<%s>\n", (yyvsp[(2) - (2)].str)); (yyval.type)=NULL; ;}
+/* Line 1787 of yacc.c  */
+#line 812 "parser.y"
+    { (yyval.type) = type_coclass_define((yyvsp[(1) - (5)].type), (yyvsp[(3) - (5)].ifref_list)); }
     break;
 
   case 281:
-
-/* Line 1464 of yacc.c  */
-#line 840 "parser.y"
-    { (yyval.ifref_list) = NULL; ;}
+/* Line 1787 of yacc.c  */
+#line 815 "parser.y"
+    { (yyval.type) = NULL; }
     break;
 
   case 282:
-
-/* Line 1464 of yacc.c  */
-#line 841 "parser.y"
-    { (yyval.ifref_list) = append_ifref( (yyvsp[(1) - (2)].ifref_list), (yyvsp[(2) - (2)].ifref) ); ;}
+/* Line 1787 of yacc.c  */
+#line 818 "parser.y"
+    { (yyval.ifref_list) = NULL; }
     break;
 
   case 283:
-
-/* Line 1464 of yacc.c  */
-#line 845 "parser.y"
-    { (yyval.ifref) = make_ifref((yyvsp[(2) - (2)].type)); (yyval.ifref)->attrs = (yyvsp[(1) - (2)].attr_list); ;}
+/* Line 1787 of yacc.c  */
+#line 819 "parser.y"
+    { (yyval.ifref_list) = append_ifref( (yyvsp[(1) - (2)].ifref_list), (yyvsp[(2) - (2)].ifref) ); }
     break;
 
   case 284:
-
-/* Line 1464 of yacc.c  */
-#line 848 "parser.y"
-    { (yyval.type) = get_type(TYPE_INTERFACE, (yyvsp[(2) - (2)].str), 0); ;}
+/* Line 1787 of yacc.c  */
+#line 823 "parser.y"
+    { (yyval.ifref) = make_ifref((yyvsp[(2) - (2)].type)); (yyval.ifref)->attrs = (yyvsp[(1) - (2)].attr_list); }
     break;
 
   case 285:
-
-/* Line 1464 of yacc.c  */
-#line 849 "parser.y"
-    { (yyval.type) = get_type(TYPE_INTERFACE, (yyvsp[(2) - (2)].str), 0); ;}
+/* Line 1787 of yacc.c  */
+#line 826 "parser.y"
+    { (yyval.type) = get_type(TYPE_INTERFACE, (yyvsp[(2) - (2)].str), 0); }
     break;
 
   case 286:
+/* Line 1787 of yacc.c  */
+#line 827 "parser.y"
+    { (yyval.type) = get_type(TYPE_INTERFACE, (yyvsp[(2) - (2)].str), 0); }
+    break;
 
-/* Line 1464 of yacc.c  */
-#line 852 "parser.y"
+  case 287:
+/* Line 1787 of yacc.c  */
+#line 830 "parser.y"
     { attr_t *attrs;
 						  (yyval.type) = (yyvsp[(2) - (2)].type);
 						  check_def((yyval.type));
 						  attrs = make_attr(ATTR_DISPINTERFACE);
 						  (yyval.type)->attrs = append_attr( check_dispiface_attrs((yyvsp[(2) - (2)].type)->name, (yyvsp[(1) - (2)].attr_list)), attrs );
 						  (yyval.type)->defined = TRUE;
-						;}
-    break;
-
-  case 287:
-
-/* Line 1464 of yacc.c  */
-#line 861 "parser.y"
-    { (yyval.var_list) = NULL; ;}
+						}
     break;
 
   case 288:
-
-/* Line 1464 of yacc.c  */
-#line 862 "parser.y"
-    { (yyval.var_list) = append_var( (yyvsp[(1) - (3)].var_list), (yyvsp[(2) - (3)].var) ); ;}
+/* Line 1787 of yacc.c  */
+#line 839 "parser.y"
+    { (yyval.var_list) = NULL; }
     break;
 
   case 289:
-
-/* Line 1464 of yacc.c  */
-#line 865 "parser.y"
-    { (yyval.var_list) = NULL; ;}
+/* Line 1787 of yacc.c  */
+#line 840 "parser.y"
+    { (yyval.var_list) = append_var( (yyvsp[(1) - (3)].var_list), (yyvsp[(2) - (3)].var) ); }
     break;
 
   case 290:
-
-/* Line 1464 of yacc.c  */
-#line 866 "parser.y"
-    { (yyval.var_list) = append_var( (yyvsp[(1) - (3)].var_list), (yyvsp[(2) - (3)].var) ); ;}
+/* Line 1787 of yacc.c  */
+#line 843 "parser.y"
+    { (yyval.var_list) = NULL; }
     break;
 
   case 291:
-
-/* Line 1464 of yacc.c  */
-#line 872 "parser.y"
-    { (yyval.type) = (yyvsp[(1) - (5)].type);
-						  type_dispinterface_define((yyval.type), (yyvsp[(3) - (5)].var_list), (yyvsp[(4) - (5)].var_list));
-						;}
+/* Line 1787 of yacc.c  */
+#line 844 "parser.y"
+    { (yyval.var_list) = append_var( (yyvsp[(1) - (3)].var_list), (yyvsp[(2) - (3)].var) ); }
     break;
 
   case 292:
-
-/* Line 1464 of yacc.c  */
-#line 876 "parser.y"
+/* Line 1787 of yacc.c  */
+#line 850 "parser.y"
     { (yyval.type) = (yyvsp[(1) - (5)].type);
-						  type_dispinterface_define_from_iface((yyval.type), (yyvsp[(3) - (5)].type));
-						;}
+						  type_dispinterface_define((yyval.type), (yyvsp[(3) - (5)].var_list), (yyvsp[(4) - (5)].var_list));
+						}
     break;
 
   case 293:
-
-/* Line 1464 of yacc.c  */
-#line 881 "parser.y"
-    { (yyval.type) = NULL; ;}
+/* Line 1787 of yacc.c  */
+#line 854 "parser.y"
+    { (yyval.type) = (yyvsp[(1) - (5)].type);
+						  type_dispinterface_define_from_iface((yyval.type), (yyvsp[(3) - (5)].type));
+						}
     break;
 
   case 294:
-
-/* Line 1464 of yacc.c  */
-#line 882 "parser.y"
-    { (yyval.type) = find_type_or_error2((yyvsp[(2) - (2)].str), 0); ;}
+/* Line 1787 of yacc.c  */
+#line 859 "parser.y"
+    { (yyval.type) = NULL; }
     break;
 
   case 295:
-
-/* Line 1464 of yacc.c  */
-#line 885 "parser.y"
-    { (yyval.type) = get_type(TYPE_INTERFACE, (yyvsp[(2) - (2)].str), 0); ;}
+/* Line 1787 of yacc.c  */
+#line 860 "parser.y"
+    { (yyval.type) = find_type_or_error2((yyvsp[(2) - (2)].str), 0); }
     break;
 
   case 296:
-
-/* Line 1464 of yacc.c  */
-#line 886 "parser.y"
-    { (yyval.type) = get_type(TYPE_INTERFACE, (yyvsp[(2) - (2)].str), 0); ;}
+/* Line 1787 of yacc.c  */
+#line 863 "parser.y"
+    { (yyval.type) = get_type(TYPE_INTERFACE, (yyvsp[(2) - (2)].str), 0); }
     break;
 
   case 297:
+/* Line 1787 of yacc.c  */
+#line 864 "parser.y"
+    { (yyval.type) = get_type(TYPE_INTERFACE, (yyvsp[(2) - (2)].str), 0); }
+    break;
 
-/* Line 1464 of yacc.c  */
-#line 889 "parser.y"
+  case 298:
+/* Line 1787 of yacc.c  */
+#line 867 "parser.y"
     { (yyval.ifinfo).interface = (yyvsp[(2) - (2)].type);
 						  (yyval.ifinfo).old_pointer_default = pointer_default;
 						  if (is_attr((yyvsp[(1) - (2)].attr_list), ATTR_POINTERDEFAULT))
@@ -4944,633 +4665,559 @@
 						  check_def((yyvsp[(2) - (2)].type));
 						  (yyvsp[(2) - (2)].type)->attrs = check_iface_attrs((yyvsp[(2) - (2)].type)->name, (yyvsp[(1) - (2)].attr_list));
 						  (yyvsp[(2) - (2)].type)->defined = TRUE;
-						;}
+						}
     break;
 
-  case 298:
-
-/* Line 1464 of yacc.c  */
-#line 900 "parser.y"
+  case 299:
+/* Line 1787 of yacc.c  */
+#line 878 "parser.y"
     { (yyval.type) = (yyvsp[(1) - (6)].ifinfo).interface;
 						  if((yyval.type) == (yyvsp[(2) - (6)].type))
 						    error_loc("Interface can't inherit from itself\n");
 						  type_interface_define((yyval.type), (yyvsp[(2) - (6)].type), (yyvsp[(4) - (6)].stmt_list));
 						  pointer_default = (yyvsp[(1) - (6)].ifinfo).old_pointer_default;
-						;}
-    break;
-
-  case 299:
-
-/* Line 1464 of yacc.c  */
-#line 910 "parser.y"
-    { (yyval.type) = (yyvsp[(1) - (8)].ifinfo).interface;
-						  type_interface_define((yyval.type), find_type_or_error2((yyvsp[(3) - (8)].str), 0), (yyvsp[(6) - (8)].stmt_list));
-						  pointer_default = (yyvsp[(1) - (8)].ifinfo).old_pointer_default;
-						;}
+						}
     break;
 
   case 300:
-
-/* Line 1464 of yacc.c  */
-#line 914 "parser.y"
-    { (yyval.type) = (yyvsp[(1) - (2)].type); ;}
+/* Line 1787 of yacc.c  */
+#line 888 "parser.y"
+    { (yyval.type) = (yyvsp[(1) - (8)].ifinfo).interface;
+						  type_interface_define((yyval.type), find_type_or_error2((yyvsp[(3) - (8)].str), 0), (yyvsp[(6) - (8)].stmt_list));
+						  pointer_default = (yyvsp[(1) - (8)].ifinfo).old_pointer_default;
+						}
     break;
 
   case 301:
-
-/* Line 1464 of yacc.c  */
-#line 918 "parser.y"
-    { (yyval.type) = (yyvsp[(1) - (2)].type); ;}
+/* Line 1787 of yacc.c  */
+#line 892 "parser.y"
+    { (yyval.type) = (yyvsp[(1) - (2)].type); }
     break;
 
   case 302:
-
-/* Line 1464 of yacc.c  */
-#line 919 "parser.y"
-    { (yyval.type) = (yyvsp[(1) - (2)].type); ;}
+/* Line 1787 of yacc.c  */
+#line 896 "parser.y"
+    { (yyval.type) = (yyvsp[(1) - (2)].type); }
     break;
 
   case 303:
-
-/* Line 1464 of yacc.c  */
-#line 922 "parser.y"
-    { (yyval.type) = type_new_module((yyvsp[(2) - (2)].str)); ;}
+/* Line 1787 of yacc.c  */
+#line 897 "parser.y"
+    { (yyval.type) = (yyvsp[(1) - (2)].type); }
     break;
 
   case 304:
-
-/* Line 1464 of yacc.c  */
-#line 923 "parser.y"
-    { (yyval.type) = type_new_module((yyvsp[(2) - (2)].str)); ;}
+/* Line 1787 of yacc.c  */
+#line 900 "parser.y"
+    { (yyval.type) = type_new_module((yyvsp[(2) - (2)].str)); }
     break;
 
   case 305:
-
-/* Line 1464 of yacc.c  */
-#line 926 "parser.y"
-    { (yyval.type) = (yyvsp[(2) - (2)].type);
-						  (yyval.type)->attrs = check_module_attrs((yyvsp[(2) - (2)].type)->name, (yyvsp[(1) - (2)].attr_list));
-						;}
+/* Line 1787 of yacc.c  */
+#line 901 "parser.y"
+    { (yyval.type) = type_new_module((yyvsp[(2) - (2)].str)); }
     break;
 
   case 306:
-
-/* Line 1464 of yacc.c  */
-#line 932 "parser.y"
-    { (yyval.type) = (yyvsp[(1) - (5)].type);
-                                                  type_module_define((yyval.type), (yyvsp[(3) - (5)].stmt_list));
-						;}
+/* Line 1787 of yacc.c  */
+#line 904 "parser.y"
+    { (yyval.type) = (yyvsp[(2) - (2)].type);
+						  (yyval.type)->attrs = check_module_attrs((yyvsp[(2) - (2)].type)->name, (yyvsp[(1) - (2)].attr_list));
+						}
     break;
 
   case 307:
-
-/* Line 1464 of yacc.c  */
-#line 938 "parser.y"
-    { (yyval.stgclass) = STG_EXTERN; ;}
+/* Line 1787 of yacc.c  */
+#line 910 "parser.y"
+    { (yyval.type) = (yyvsp[(1) - (5)].type);
+                                                  type_module_define((yyval.type), (yyvsp[(3) - (5)].stmt_list));
+						}
     break;
 
   case 308:
-
-/* Line 1464 of yacc.c  */
-#line 939 "parser.y"
-    { (yyval.stgclass) = STG_STATIC; ;}
+/* Line 1787 of yacc.c  */
+#line 916 "parser.y"
+    { (yyval.stgclass) = STG_EXTERN; }
     break;
 
   case 309:
-
-/* Line 1464 of yacc.c  */
-#line 940 "parser.y"
-    { (yyval.stgclass) = STG_REGISTER; ;}
+/* Line 1787 of yacc.c  */
+#line 917 "parser.y"
+    { (yyval.stgclass) = STG_STATIC; }
     break;
 
   case 310:
-
-/* Line 1464 of yacc.c  */
-#line 944 "parser.y"
-    { (yyval.attr) = make_attr(ATTR_INLINE); ;}
+/* Line 1787 of yacc.c  */
+#line 918 "parser.y"
+    { (yyval.stgclass) = STG_REGISTER; }
     break;
 
   case 311:
-
-/* Line 1464 of yacc.c  */
-#line 948 "parser.y"
-    { (yyval.attr) = make_attr(ATTR_CONST); ;}
+/* Line 1787 of yacc.c  */
+#line 922 "parser.y"
+    { (yyval.attr) = make_attr(ATTR_INLINE); }
     break;
 
   case 312:
-
-/* Line 1464 of yacc.c  */
-#line 951 "parser.y"
-    { (yyval.attr_list) = NULL; ;}
+/* Line 1787 of yacc.c  */
+#line 926 "parser.y"
+    { (yyval.attr) = make_attr(ATTR_CONST); }
     break;
 
   case 313:
-
-/* Line 1464 of yacc.c  */
-#line 952 "parser.y"
-    { (yyval.attr_list) = append_attr((yyvsp[(1) - (2)].attr_list), (yyvsp[(2) - (2)].attr)); ;}
+/* Line 1787 of yacc.c  */
+#line 929 "parser.y"
+    { (yyval.attr_list) = NULL; }
     break;
 
   case 314:
-
-/* Line 1464 of yacc.c  */
-#line 955 "parser.y"
-    { (yyval.declspec) = make_decl_spec((yyvsp[(1) - (2)].type), (yyvsp[(2) - (2)].declspec), NULL, NULL, STG_NONE); ;}
+/* Line 1787 of yacc.c  */
+#line 930 "parser.y"
+    { (yyval.attr_list) = append_attr((yyvsp[(1) - (2)].attr_list), (yyvsp[(2) - (2)].attr)); }
     break;
 
   case 315:
-
-/* Line 1464 of yacc.c  */
-#line 957 "parser.y"
-    { (yyval.declspec) = make_decl_spec((yyvsp[(2) - (3)].type), (yyvsp[(1) - (3)].declspec), (yyvsp[(3) - (3)].declspec), NULL, STG_NONE); ;}
+/* Line 1787 of yacc.c  */
+#line 933 "parser.y"
+    { (yyval.declspec) = make_decl_spec((yyvsp[(1) - (2)].type), (yyvsp[(2) - (2)].declspec), NULL, NULL, STG_NONE); }
     break;
 
   case 316:
-
-/* Line 1464 of yacc.c  */
-#line 960 "parser.y"
-    { (yyval.declspec) = NULL; ;}
+/* Line 1787 of yacc.c  */
+#line 935 "parser.y"
+    { (yyval.declspec) = make_decl_spec((yyvsp[(2) - (3)].type), (yyvsp[(1) - (3)].declspec), (yyvsp[(3) - (3)].declspec), NULL, STG_NONE); }
     break;
 
-  case 318:
-
-/* Line 1464 of yacc.c  */
-#line 965 "parser.y"
-    { (yyval.declspec) = make_decl_spec(NULL, (yyvsp[(2) - (2)].declspec), NULL, (yyvsp[(1) - (2)].attr), STG_NONE); ;}
+  case 317:
+/* Line 1787 of yacc.c  */
+#line 938 "parser.y"
+    { (yyval.declspec) = NULL; }
     break;
 
   case 319:
-
-/* Line 1464 of yacc.c  */
-#line 966 "parser.y"
-    { (yyval.declspec) = make_decl_spec(NULL, (yyvsp[(2) - (2)].declspec), NULL, (yyvsp[(1) - (2)].attr), STG_NONE); ;}
+/* Line 1787 of yacc.c  */
+#line 943 "parser.y"
+    { (yyval.declspec) = make_decl_spec(NULL, (yyvsp[(2) - (2)].declspec), NULL, (yyvsp[(1) - (2)].attr), STG_NONE); }
     break;
 
   case 320:
-
-/* Line 1464 of yacc.c  */
-#line 967 "parser.y"
-    { (yyval.declspec) = make_decl_spec(NULL, (yyvsp[(2) - (2)].declspec), NULL, NULL, (yyvsp[(1) - (2)].stgclass)); ;}
+/* Line 1787 of yacc.c  */
+#line 944 "parser.y"
+    { (yyval.declspec) = make_decl_spec(NULL, (yyvsp[(2) - (2)].declspec), NULL, (yyvsp[(1) - (2)].attr), STG_NONE); }
     break;
 
   case 321:
-
-/* Line 1464 of yacc.c  */
-#line 972 "parser.y"
-    { (yyval.declarator) = (yyvsp[(3) - (3)].declarator); (yyval.declarator)->type = append_ptrchain_type((yyval.declarator)->type, type_new_pointer(pointer_default, NULL, (yyvsp[(2) - (3)].attr_list))); ;}
+/* Line 1787 of yacc.c  */
+#line 945 "parser.y"
+    { (yyval.declspec) = make_decl_spec(NULL, (yyvsp[(2) - (2)].declspec), NULL, NULL, (yyvsp[(1) - (2)].stgclass)); }
     break;
 
   case 322:
-
-/* Line 1464 of yacc.c  */
-#line 973 "parser.y"
-    { (yyval.declarator) = (yyvsp[(2) - (2)].declarator); if ((yyval.declarator)->func_type) (yyval.declarator)->func_type->attrs = append_attr((yyval.declarator)->func_type->attrs, make_attrp(ATTR_CALLCONV, (yyvsp[(1) - (2)].str)));
-						           else if ((yyval.declarator)->type) (yyval.declarator)->type->attrs = append_attr((yyval.declarator)->type->attrs, make_attrp(ATTR_CALLCONV, (yyvsp[(1) - (2)].str))); ;}
+/* Line 1787 of yacc.c  */
+#line 950 "parser.y"
+    { (yyval.declarator) = (yyvsp[(3) - (3)].declarator); (yyval.declarator)->type = append_ptrchain_type((yyval.declarator)->type, type_new_pointer(pointer_default, NULL, (yyvsp[(2) - (3)].attr_list))); }
     break;
 
-  case 324:
-
-/* Line 1464 of yacc.c  */
-#line 979 "parser.y"
-    { (yyval.declarator) = make_declarator((yyvsp[(1) - (1)].var)); ;}
+  case 323:
+/* Line 1787 of yacc.c  */
+#line 951 "parser.y"
+    { (yyval.declarator) = (yyvsp[(2) - (2)].declarator); if ((yyval.declarator)->func_type) (yyval.declarator)->func_type->attrs = append_attr((yyval.declarator)->func_type->attrs, make_attrp(ATTR_CALLCONV, (yyvsp[(1) - (2)].str)));
+						           else if ((yyval.declarator)->type) (yyval.declarator)->type->attrs = append_attr((yyval.declarator)->type->attrs, make_attrp(ATTR_CALLCONV, (yyvsp[(1) - (2)].str))); }
     break;
 
   case 325:
-
-/* Line 1464 of yacc.c  */
-#line 980 "parser.y"
-    { (yyval.declarator) = (yyvsp[(2) - (3)].declarator); ;}
+/* Line 1787 of yacc.c  */
+#line 957 "parser.y"
+    { (yyval.declarator) = make_declarator((yyvsp[(1) - (1)].var)); }
     break;
 
   case 326:
-
-/* Line 1464 of yacc.c  */
-#line 981 "parser.y"
-    { (yyval.declarator) = (yyvsp[(1) - (2)].declarator); (yyval.declarator)->array = append_array((yyval.declarator)->array, (yyvsp[(2) - (2)].expr)); ;}
+/* Line 1787 of yacc.c  */
+#line 958 "parser.y"
+    { (yyval.declarator) = (yyvsp[(2) - (3)].declarator); }
     break;
 
   case 327:
-
-/* Line 1464 of yacc.c  */
-#line 982 "parser.y"
-    { (yyval.declarator) = (yyvsp[(1) - (4)].declarator);
-						  (yyval.declarator)->func_type = append_ptrchain_type((yyval.declarator)->type, type_new_function((yyvsp[(3) - (4)].var_list)));
-						  (yyval.declarator)->type = NULL;
-						;}
+/* Line 1787 of yacc.c  */
+#line 959 "parser.y"
+    { (yyval.declarator) = (yyvsp[(1) - (2)].declarator); (yyval.declarator)->array = append_array((yyval.declarator)->array, (yyvsp[(2) - (2)].expr)); }
     break;
 
   case 328:
-
-/* Line 1464 of yacc.c  */
-#line 991 "parser.y"
-    { (yyval.declarator) = (yyvsp[(3) - (3)].declarator); (yyval.declarator)->type = append_ptrchain_type((yyval.declarator)->type, type_new_pointer(pointer_default, NULL, (yyvsp[(2) - (3)].attr_list))); ;}
+/* Line 1787 of yacc.c  */
+#line 960 "parser.y"
+    { (yyval.declarator) = (yyvsp[(1) - (4)].declarator);
+						  (yyval.declarator)->func_type = append_ptrchain_type((yyval.declarator)->type, type_new_function((yyvsp[(3) - (4)].var_list)));
+						  (yyval.declarator)->type = NULL;
+						}
     break;
 
   case 329:
-
-/* Line 1464 of yacc.c  */
-#line 992 "parser.y"
-    { (yyval.declarator) = (yyvsp[(2) - (2)].declarator); if ((yyval.declarator)->func_type) (yyval.declarator)->func_type->attrs = append_attr((yyval.declarator)->func_type->attrs, make_attrp(ATTR_CALLCONV, (yyvsp[(1) - (2)].str)));
-						           else if ((yyval.declarator)->type) (yyval.declarator)->type->attrs = append_attr((yyval.declarator)->type->attrs, make_attrp(ATTR_CALLCONV, (yyvsp[(1) - (2)].str))); ;}
+/* Line 1787 of yacc.c  */
+#line 969 "parser.y"
+    { (yyval.declarator) = (yyvsp[(3) - (3)].declarator); (yyval.declarator)->type = append_ptrchain_type((yyval.declarator)->type, type_new_pointer(pointer_default, NULL, (yyvsp[(2) - (3)].attr_list))); }
     break;
 
-  case 331:
-
-/* Line 1464 of yacc.c  */
-#line 1000 "parser.y"
-    { (yyval.declarator) = (yyvsp[(3) - (3)].declarator); (yyval.declarator)->type = append_ptrchain_type((yyval.declarator)->type, type_new_pointer(pointer_default, NULL, (yyvsp[(2) - (3)].attr_list))); ;}
+  case 330:
+/* Line 1787 of yacc.c  */
+#line 970 "parser.y"
+    { (yyval.declarator) = (yyvsp[(2) - (2)].declarator); if ((yyval.declarator)->func_type) (yyval.declarator)->func_type->attrs = append_attr((yyval.declarator)->func_type->attrs, make_attrp(ATTR_CALLCONV, (yyvsp[(1) - (2)].str)));
+						           else if ((yyval.declarator)->type) (yyval.declarator)->type->attrs = append_attr((yyval.declarator)->type->attrs, make_attrp(ATTR_CALLCONV, (yyvsp[(1) - (2)].str))); }
     break;
 
   case 332:
-
-/* Line 1464 of yacc.c  */
-#line 1001 "parser.y"
-    { (yyval.declarator) = (yyvsp[(2) - (2)].declarator); if ((yyval.declarator)->func_type) (yyval.declarator)->func_type->attrs = append_attr((yyval.declarator)->func_type->attrs, make_attrp(ATTR_CALLCONV, (yyvsp[(1) - (2)].str)));
-						           else if ((yyval.declarator)->type) (yyval.declarator)->type->attrs = append_attr((yyval.declarator)->type->attrs, make_attrp(ATTR_CALLCONV, (yyvsp[(1) - (2)].str))); ;}
+/* Line 1787 of yacc.c  */
+#line 978 "parser.y"
+    { (yyval.declarator) = (yyvsp[(3) - (3)].declarator); (yyval.declarator)->type = append_ptrchain_type((yyval.declarator)->type, type_new_pointer(pointer_default, NULL, (yyvsp[(2) - (3)].attr_list))); }
     break;
 
   case 333:
-
-/* Line 1464 of yacc.c  */
-#line 1006 "parser.y"
-    { (yyval.declarator) = make_declarator(NULL); ;}
+/* Line 1787 of yacc.c  */
+#line 979 "parser.y"
+    { (yyval.declarator) = (yyvsp[(2) - (2)].declarator); if ((yyval.declarator)->func_type) (yyval.declarator)->func_type->attrs = append_attr((yyval.declarator)->func_type->attrs, make_attrp(ATTR_CALLCONV, (yyvsp[(1) - (2)].str)));
+						           else if ((yyval.declarator)->type) (yyval.declarator)->type->attrs = append_attr((yyval.declarator)->type->attrs, make_attrp(ATTR_CALLCONV, (yyvsp[(1) - (2)].str))); }
     break;
 
-  case 335:
-
-/* Line 1464 of yacc.c  */
-#line 1012 "parser.y"
-    { (yyval.declarator) = (yyvsp[(2) - (3)].declarator); ;}
+  case 334:
+/* Line 1787 of yacc.c  */
+#line 984 "parser.y"
+    { (yyval.declarator) = make_declarator(NULL); }
     break;
 
   case 336:
-
-/* Line 1464 of yacc.c  */
-#line 1013 "parser.y"
-    { (yyval.declarator) = (yyvsp[(1) - (2)].declarator); (yyval.declarator)->array = append_array((yyval.declarator)->array, (yyvsp[(2) - (2)].expr)); ;}
+/* Line 1787 of yacc.c  */
+#line 990 "parser.y"
+    { (yyval.declarator) = (yyvsp[(2) - (3)].declarator); }
     break;
 
   case 337:
-
-/* Line 1464 of yacc.c  */
-#line 1014 "parser.y"
-    { (yyval.declarator) = make_declarator(NULL); (yyval.declarator)->array = append_array((yyval.declarator)->array, (yyvsp[(1) - (1)].expr)); ;}
+/* Line 1787 of yacc.c  */
+#line 991 "parser.y"
+    { (yyval.declarator) = (yyvsp[(1) - (2)].declarator); (yyval.declarator)->array = append_array((yyval.declarator)->array, (yyvsp[(2) - (2)].expr)); }
     break;
 
   case 338:
-
-/* Line 1464 of yacc.c  */
-#line 1016 "parser.y"
-    { (yyval.declarator) = make_declarator(NULL);
-						  (yyval.declarator)->func_type = append_ptrchain_type((yyval.declarator)->type, type_new_function((yyvsp[(2) - (3)].var_list)));
-						  (yyval.declarator)->type = NULL;
-						;}
+/* Line 1787 of yacc.c  */
+#line 992 "parser.y"
+    { (yyval.declarator) = make_declarator(NULL); (yyval.declarator)->array = append_array((yyval.declarator)->array, (yyvsp[(1) - (1)].expr)); }
     break;
 
   case 339:
-
-/* Line 1464 of yacc.c  */
-#line 1021 "parser.y"
-    { (yyval.declarator) = (yyvsp[(1) - (4)].declarator);
-						  (yyval.declarator)->func_type = append_ptrchain_type((yyval.declarator)->type, type_new_function((yyvsp[(3) - (4)].var_list)));
-						  (yyval.declarator)->type = NULL;
-						;}
-    break;
-
-  case 340:
-
-/* Line 1464 of yacc.c  */
-#line 1030 "parser.y"
-    { (yyval.declarator) = (yyvsp[(3) - (3)].declarator); (yyval.declarator)->type = append_ptrchain_type((yyval.declarator)->type, type_new_pointer(pointer_default, NULL, (yyvsp[(2) - (3)].attr_list))); ;}
-    break;
-
-  case 341:
-
-/* Line 1464 of yacc.c  */
-#line 1031 "parser.y"
-    { (yyval.declarator) = (yyvsp[(2) - (2)].declarator); (yyval.declarator)->type->attrs = append_attr((yyval.declarator)->type->attrs, make_attrp(ATTR_CALLCONV, (yyvsp[(1) - (2)].str))); ;}
-    break;
-
-  case 343:
-
-/* Line 1464 of yacc.c  */
-#line 1038 "parser.y"
-    { (yyval.declarator) = (yyvsp[(3) - (3)].declarator); (yyval.declarator)->type = append_ptrchain_type((yyval.declarator)->type, type_new_pointer(pointer_default, NULL, (yyvsp[(2) - (3)].attr_list))); ;}
-    break;
-
-  case 344:
-
-/* Line 1464 of yacc.c  */
-#line 1039 "parser.y"
-    { (yyval.declarator) = (yyvsp[(2) - (2)].declarator); (yyval.declarator)->type->attrs = append_attr((yyval.declarator)->type->attrs, make_attrp(ATTR_CALLCONV, (yyvsp[(1) - (2)].str))); ;}
-    break;
-
-  case 345:
-
-/* Line 1464 of yacc.c  */
-#line 1043 "parser.y"
-    { (yyval.declarator) = make_declarator(NULL); ;}
-    break;
-
-  case 347:
-
-/* Line 1464 of yacc.c  */
-#line 1051 "parser.y"
-    { (yyval.declarator) = make_declarator((yyvsp[(1) - (1)].var)); ;}
-    break;
-
-  case 348:
-
-/* Line 1464 of yacc.c  */
-#line 1052 "parser.y"
-    { (yyval.declarator) = (yyvsp[(2) - (3)].declarator); ;}
-    break;
-
-  case 349:
-
-/* Line 1464 of yacc.c  */
-#line 1053 "parser.y"
-    { (yyval.declarator) = (yyvsp[(1) - (2)].declarator); (yyval.declarator)->array = append_array((yyval.declarator)->array, (yyvsp[(2) - (2)].expr)); ;}
-    break;
-
-  case 350:
-
-/* Line 1464 of yacc.c  */
-#line 1054 "parser.y"
-    { (yyval.declarator) = make_declarator(NULL); (yyval.declarator)->array = append_array((yyval.declarator)->array, (yyvsp[(1) - (1)].expr)); ;}
-    break;
-
-  case 351:
-
-/* Line 1464 of yacc.c  */
-#line 1056 "parser.y"
+/* Line 1787 of yacc.c  */
+#line 994 "parser.y"
     { (yyval.declarator) = make_declarator(NULL);
 						  (yyval.declarator)->func_type = append_ptrchain_type((yyval.declarator)->type, type_new_function((yyvsp[(2) - (3)].var_list)));
 						  (yyval.declarator)->type = NULL;
-						;}
+						}
     break;
 
-  case 352:
-
-/* Line 1464 of yacc.c  */
-#line 1061 "parser.y"
+  case 340:
+/* Line 1787 of yacc.c  */
+#line 999 "parser.y"
     { (yyval.declarator) = (yyvsp[(1) - (4)].declarator);
 						  (yyval.declarator)->func_type = append_ptrchain_type((yyval.declarator)->type, type_new_function((yyvsp[(3) - (4)].var_list)));
 						  (yyval.declarator)->type = NULL;
-						;}
+						}
+    break;
+
+  case 341:
+/* Line 1787 of yacc.c  */
+#line 1008 "parser.y"
+    { (yyval.declarator) = (yyvsp[(3) - (3)].declarator); (yyval.declarator)->type = append_ptrchain_type((yyval.declarator)->type, type_new_pointer(pointer_default, NULL, (yyvsp[(2) - (3)].attr_list))); }
+    break;
+
+  case 342:
+/* Line 1787 of yacc.c  */
+#line 1009 "parser.y"
+    { (yyval.declarator) = (yyvsp[(2) - (2)].declarator); (yyval.declarator)->type->attrs = append_attr((yyval.declarator)->type->attrs, make_attrp(ATTR_CALLCONV, (yyvsp[(1) - (2)].str))); }
+    break;
+
+  case 344:
+/* Line 1787 of yacc.c  */
+#line 1016 "parser.y"
+    { (yyval.declarator) = (yyvsp[(3) - (3)].declarator); (yyval.declarator)->type = append_ptrchain_type((yyval.declarator)->type, type_new_pointer(pointer_default, NULL, (yyvsp[(2) - (3)].attr_list))); }
+    break;
+
+  case 345:
+/* Line 1787 of yacc.c  */
+#line 1017 "parser.y"
+    { (yyval.declarator) = (yyvsp[(2) - (2)].declarator); (yyval.declarator)->type->attrs = append_attr((yyval.declarator)->type->attrs, make_attrp(ATTR_CALLCONV, (yyvsp[(1) - (2)].str))); }
+    break;
+
+  case 346:
+/* Line 1787 of yacc.c  */
+#line 1021 "parser.y"
+    { (yyval.declarator) = make_declarator(NULL); }
+    break;
+
+  case 348:
+/* Line 1787 of yacc.c  */
+#line 1029 "parser.y"
+    { (yyval.declarator) = make_declarator((yyvsp[(1) - (1)].var)); }
+    break;
+
+  case 349:
+/* Line 1787 of yacc.c  */
+#line 1030 "parser.y"
+    { (yyval.declarator) = (yyvsp[(2) - (3)].declarator); }
+    break;
+
+  case 350:
+/* Line 1787 of yacc.c  */
+#line 1031 "parser.y"
+    { (yyval.declarator) = (yyvsp[(1) - (2)].declarator); (yyval.declarator)->array = append_array((yyval.declarator)->array, (yyvsp[(2) - (2)].expr)); }
+    break;
+
+  case 351:
+/* Line 1787 of yacc.c  */
+#line 1032 "parser.y"
+    { (yyval.declarator) = make_declarator(NULL); (yyval.declarator)->array = append_array((yyval.declarator)->array, (yyvsp[(1) - (1)].expr)); }
+    break;
+
+  case 352:
+/* Line 1787 of yacc.c  */
+#line 1034 "parser.y"
+    { (yyval.declarator) = make_declarator(NULL);
+						  (yyval.declarator)->func_type = append_ptrchain_type((yyval.declarator)->type, type_new_function((yyvsp[(2) - (3)].var_list)));
+						  (yyval.declarator)->type = NULL;
+						}
     break;
 
   case 353:
-
-/* Line 1464 of yacc.c  */
-#line 1068 "parser.y"
-    { (yyval.declarator_list) = append_declarator( NULL, (yyvsp[(1) - (1)].declarator) ); ;}
+/* Line 1787 of yacc.c  */
+#line 1039 "parser.y"
+    { (yyval.declarator) = (yyvsp[(1) - (4)].declarator);
+						  (yyval.declarator)->func_type = append_ptrchain_type((yyval.declarator)->type, type_new_function((yyvsp[(3) - (4)].var_list)));
+						  (yyval.declarator)->type = NULL;
+						}
     break;
 
   case 354:
-
-/* Line 1464 of yacc.c  */
-#line 1069 "parser.y"
-    { (yyval.declarator_list) = append_declarator( (yyvsp[(1) - (3)].declarator_list), (yyvsp[(3) - (3)].declarator) ); ;}
+/* Line 1787 of yacc.c  */
+#line 1046 "parser.y"
+    { (yyval.declarator_list) = append_declarator( NULL, (yyvsp[(1) - (1)].declarator) ); }
     break;
 
   case 355:
-
-/* Line 1464 of yacc.c  */
-#line 1072 "parser.y"
-    { (yyval.expr) = NULL; ;}
+/* Line 1787 of yacc.c  */
+#line 1047 "parser.y"
+    { (yyval.declarator_list) = append_declarator( (yyvsp[(1) - (3)].declarator_list), (yyvsp[(3) - (3)].declarator) ); }
     break;
 
   case 356:
-
-/* Line 1464 of yacc.c  */
-#line 1073 "parser.y"
-    { (yyval.expr) = (yyvsp[(2) - (2)].expr); ;}
+/* Line 1787 of yacc.c  */
+#line 1050 "parser.y"
+    { (yyval.expr) = NULL; }
     break;
 
   case 357:
-
-/* Line 1464 of yacc.c  */
-#line 1076 "parser.y"
-    { (yyval.declarator) = (yyvsp[(1) - (2)].declarator); (yyval.declarator)->bits = (yyvsp[(2) - (2)].expr);
-						  if (!(yyval.declarator)->bits && !(yyval.declarator)->var->name)
-						    error_loc("unnamed fields are not allowed\n");
-						;}
+/* Line 1787 of yacc.c  */
+#line 1051 "parser.y"
+    { (yyval.expr) = (yyvsp[(2) - (2)].expr); }
     break;
 
   case 358:
-
-/* Line 1464 of yacc.c  */
-#line 1083 "parser.y"
-    { (yyval.declarator_list) = append_declarator( NULL, (yyvsp[(1) - (1)].declarator) ); ;}
+/* Line 1787 of yacc.c  */
+#line 1054 "parser.y"
+    { (yyval.declarator) = (yyvsp[(1) - (2)].declarator); (yyval.declarator)->bits = (yyvsp[(2) - (2)].expr);
+						  if (!(yyval.declarator)->bits && !(yyval.declarator)->var->name)
+						    error_loc("unnamed fields are not allowed\n");
+						}
     break;
 
   case 359:
-
-/* Line 1464 of yacc.c  */
-#line 1085 "parser.y"
-    { (yyval.declarator_list) = append_declarator( (yyvsp[(1) - (3)].declarator_list), (yyvsp[(3) - (3)].declarator) ); ;}
+/* Line 1787 of yacc.c  */
+#line 1061 "parser.y"
+    { (yyval.declarator_list) = append_declarator( NULL, (yyvsp[(1) - (1)].declarator) ); }
     break;
 
   case 360:
-
-/* Line 1464 of yacc.c  */
-#line 1089 "parser.y"
-    { (yyval.declarator) = (yyvsp[(1) - (1)].declarator); ;}
+/* Line 1787 of yacc.c  */
+#line 1063 "parser.y"
+    { (yyval.declarator_list) = append_declarator( (yyvsp[(1) - (3)].declarator_list), (yyvsp[(3) - (3)].declarator) ); }
     break;
 
   case 361:
-
-/* Line 1464 of yacc.c  */
-#line 1090 "parser.y"
-    { (yyval.declarator) = (yyvsp[(1) - (3)].declarator); (yyvsp[(1) - (3)].declarator)->var->eval = (yyvsp[(3) - (3)].expr); ;}
+/* Line 1787 of yacc.c  */
+#line 1067 "parser.y"
+    { (yyval.declarator) = (yyvsp[(1) - (1)].declarator); }
     break;
 
   case 362:
-
-/* Line 1464 of yacc.c  */
-#line 1094 "parser.y"
-    { (yyval.num) = THREADING_APARTMENT; ;}
+/* Line 1787 of yacc.c  */
+#line 1068 "parser.y"
+    { (yyval.declarator) = (yyvsp[(1) - (3)].declarator); (yyvsp[(1) - (3)].declarator)->var->eval = (yyvsp[(3) - (3)].expr); }
     break;
 
   case 363:
-
-/* Line 1464 of yacc.c  */
-#line 1095 "parser.y"
-    { (yyval.num) = THREADING_NEUTRAL; ;}
+/* Line 1787 of yacc.c  */
+#line 1072 "parser.y"
+    { (yyval.num) = THREADING_APARTMENT; }
     break;
 
   case 364:
-
-/* Line 1464 of yacc.c  */
-#line 1096 "parser.y"
-    { (yyval.num) = THREADING_SINGLE; ;}
+/* Line 1787 of yacc.c  */
+#line 1073 "parser.y"
+    { (yyval.num) = THREADING_NEUTRAL; }
     break;
 
   case 365:
-
-/* Line 1464 of yacc.c  */
-#line 1097 "parser.y"
-    { (yyval.num) = THREADING_FREE; ;}
+/* Line 1787 of yacc.c  */
+#line 1074 "parser.y"
+    { (yyval.num) = THREADING_SINGLE; }
     break;
 
   case 366:
-
-/* Line 1464 of yacc.c  */
-#line 1098 "parser.y"
-    { (yyval.num) = THREADING_BOTH; ;}
+/* Line 1787 of yacc.c  */
+#line 1075 "parser.y"
+    { (yyval.num) = THREADING_FREE; }
     break;
 
   case 367:
-
-/* Line 1464 of yacc.c  */
-#line 1102 "parser.y"
-    { (yyval.num) = RPC_FC_RP; ;}
+/* Line 1787 of yacc.c  */
+#line 1076 "parser.y"
+    { (yyval.num) = THREADING_BOTH; }
     break;
 
   case 368:
-
-/* Line 1464 of yacc.c  */
-#line 1103 "parser.y"
-    { (yyval.num) = RPC_FC_UP; ;}
+/* Line 1787 of yacc.c  */
+#line 1080 "parser.y"
+    { (yyval.num) = RPC_FC_RP; }
     break;
 
   case 369:
-
-/* Line 1464 of yacc.c  */
-#line 1104 "parser.y"
-    { (yyval.num) = RPC_FC_FP; ;}
+/* Line 1787 of yacc.c  */
+#line 1081 "parser.y"
+    { (yyval.num) = RPC_FC_UP; }
     break;
 
   case 370:
-
-/* Line 1464 of yacc.c  */
-#line 1107 "parser.y"
-    { (yyval.type) = type_new_struct((yyvsp[(2) - (5)].str), TRUE, (yyvsp[(4) - (5)].var_list)); ;}
+/* Line 1787 of yacc.c  */
+#line 1082 "parser.y"
+    { (yyval.num) = RPC_FC_FP; }
     break;
 
   case 371:
-
-/* Line 1464 of yacc.c  */
-#line 1110 "parser.y"
-    { (yyval.type) = type_new_void(); ;}
+/* Line 1787 of yacc.c  */
+#line 1085 "parser.y"
+    { (yyval.type) = type_new_struct((yyvsp[(2) - (5)].str), TRUE, (yyvsp[(4) - (5)].var_list)); }
     break;
 
   case 372:
-
-/* Line 1464 of yacc.c  */
-#line 1111 "parser.y"
-    { (yyval.type) = find_type_or_error((yyvsp[(1) - (1)].str), 0); ;}
+/* Line 1787 of yacc.c  */
+#line 1088 "parser.y"
+    { (yyval.type) = type_new_void(); }
     break;
 
   case 373:
-
-/* Line 1464 of yacc.c  */
-#line 1112 "parser.y"
-    { (yyval.type) = (yyvsp[(1) - (1)].type); ;}
+/* Line 1787 of yacc.c  */
+#line 1089 "parser.y"
+    { (yyval.type) = find_type_or_error((yyvsp[(1) - (1)].str), 0); }
     break;
 
   case 374:
-
-/* Line 1464 of yacc.c  */
-#line 1113 "parser.y"
-    { (yyval.type) = (yyvsp[(1) - (1)].type); ;}
+/* Line 1787 of yacc.c  */
+#line 1090 "parser.y"
+    { (yyval.type) = (yyvsp[(1) - (1)].type); }
     break;
 
   case 375:
-
-/* Line 1464 of yacc.c  */
-#line 1114 "parser.y"
-    { (yyval.type) = type_new_enum((yyvsp[(2) - (2)].str), FALSE, NULL); ;}
+/* Line 1787 of yacc.c  */
+#line 1091 "parser.y"
+    { (yyval.type) = (yyvsp[(1) - (1)].type); }
     break;
 
   case 376:
-
-/* Line 1464 of yacc.c  */
-#line 1115 "parser.y"
-    { (yyval.type) = (yyvsp[(1) - (1)].type); ;}
+/* Line 1787 of yacc.c  */
+#line 1092 "parser.y"
+    { (yyval.type) = type_new_enum((yyvsp[(2) - (2)].str), FALSE, NULL); }
     break;
 
   case 377:
-
-/* Line 1464 of yacc.c  */
-#line 1116 "parser.y"
-    { (yyval.type) = type_new_struct((yyvsp[(2) - (2)].str), FALSE, NULL); ;}
+/* Line 1787 of yacc.c  */
+#line 1093 "parser.y"
+    { (yyval.type) = (yyvsp[(1) - (1)].type); }
     break;
 
   case 378:
-
-/* Line 1464 of yacc.c  */
-#line 1117 "parser.y"
-    { (yyval.type) = (yyvsp[(1) - (1)].type); ;}
+/* Line 1787 of yacc.c  */
+#line 1094 "parser.y"
+    { (yyval.type) = type_new_struct((yyvsp[(2) - (2)].str), FALSE, NULL); }
     break;
 
   case 379:
-
-/* Line 1464 of yacc.c  */
-#line 1118 "parser.y"
-    { (yyval.type) = type_new_nonencapsulated_union((yyvsp[(2) - (2)].str), FALSE, NULL); ;}
+/* Line 1787 of yacc.c  */
+#line 1095 "parser.y"
+    { (yyval.type) = (yyvsp[(1) - (1)].type); }
     break;
 
   case 380:
-
-/* Line 1464 of yacc.c  */
-#line 1119 "parser.y"
-    { (yyval.type) = make_safearray((yyvsp[(3) - (4)].type)); ;}
+/* Line 1787 of yacc.c  */
+#line 1096 "parser.y"
+    { (yyval.type) = type_new_nonencapsulated_union((yyvsp[(2) - (2)].str), FALSE, NULL); }
     break;
 
   case 381:
-
-/* Line 1464 of yacc.c  */
-#line 1123 "parser.y"
-    {
-						  (yyvsp[(1) - (5)].attr_list) = append_attribs ((yyvsp[(1) - (5)].attr_list), (yyvsp[(3) - (5)].attr_list));
-						  reg_typedefs((yyvsp[(4) - (5)].declspec), (yyvsp[(5) - (5)].declarator_list), check_typedef_attrs((yyvsp[(1) - (5)].attr_list)));
-						  (yyval.statement) = make_statement_typedef((yyvsp[(5) - (5)].declarator_list));
-						;}
+/* Line 1787 of yacc.c  */
+#line 1097 "parser.y"
+    { (yyval.type) = make_safearray((yyvsp[(3) - (4)].type)); }
     break;
 
   case 382:
-
-/* Line 1464 of yacc.c  */
-#line 1131 "parser.y"
-    { (yyval.type) = type_new_nonencapsulated_union((yyvsp[(2) - (5)].str), TRUE, (yyvsp[(4) - (5)].var_list)); ;}
+/* Line 1787 of yacc.c  */
+#line 1101 "parser.y"
+    { (yyvsp[(1) - (5)].attr_list) = append_attribs((yyvsp[(1) - (5)].attr_list), (yyvsp[(3) - (5)].attr_list));
+						  reg_typedefs((yyvsp[(4) - (5)].declspec), (yyvsp[(5) - (5)].declarator_list), check_typedef_attrs((yyvsp[(1) - (5)].attr_list)));
+						  (yyval.statement) = make_statement_typedef((yyvsp[(5) - (5)].declarator_list));
+						}
     break;
 
   case 383:
-
-/* Line 1464 of yacc.c  */
-#line 1134 "parser.y"
-    { (yyval.type) = type_new_encapsulated_union((yyvsp[(2) - (10)].str), (yyvsp[(5) - (10)].var), (yyvsp[(7) - (10)].var), (yyvsp[(9) - (10)].var_list)); ;}
+/* Line 1787 of yacc.c  */
+#line 1108 "parser.y"
+    { (yyval.type) = type_new_nonencapsulated_union((yyvsp[(2) - (5)].str), TRUE, (yyvsp[(4) - (5)].var_list)); }
     break;
 
   case 384:
-
-/* Line 1464 of yacc.c  */
-#line 1138 "parser.y"
-    { (yyval.num) = MAKEVERSION((yyvsp[(1) - (1)].num), 0); ;}
+/* Line 1787 of yacc.c  */
+#line 1111 "parser.y"
+    { (yyval.type) = type_new_encapsulated_union((yyvsp[(2) - (10)].str), (yyvsp[(5) - (10)].var), (yyvsp[(7) - (10)].var), (yyvsp[(9) - (10)].var_list)); }
     break;
 
   case 385:
-
-/* Line 1464 of yacc.c  */
-#line 1139 "parser.y"
-    { (yyval.num) = MAKEVERSION((yyvsp[(1) - (3)].num), (yyvsp[(3) - (3)].num)); ;}
+/* Line 1787 of yacc.c  */
+#line 1115 "parser.y"
+    { (yyval.num) = MAKEVERSION((yyvsp[(1) - (1)].num), 0); }
     break;
 
   case 386:
+/* Line 1787 of yacc.c  */
+#line 1116 "parser.y"
+    { (yyval.num) = MAKEVERSION((yyvsp[(1) - (3)].num), (yyvsp[(3) - (3)].num)); }
+    break;
 
-/* Line 1464 of yacc.c  */
-#line 1140 "parser.y"
-    { (yyval.num) = (yyvsp[(1) - (1)].num); ;}
+  case 387:
+/* Line 1787 of yacc.c  */
+#line 1117 "parser.y"
+    { (yyval.num) = (yyvsp[(1) - (1)].num); }
     break;
 
 
-
-/* Line 1464 of yacc.c  */
-#line 5572 "parser.tab.c"
+/* Line 1787 of yacc.c  */
+#line 5208 "parser.tab.c"
       default: break;
     }
+  /* User semantic actions sometimes alter yychar, and that requires
+     that yytoken be updated with the new translation.  We take the
+     approach of translating immediately before every use of yytoken.
+     One alternative is translating here after every semantic action,
+     but that translation would be missed if the semantic action invokes
+     YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
+     if it invokes YYBACKUP.  In the case of YYABORT or YYACCEPT, an
+     incorrect destructor might then be invoked immediately.  In the
+     case of YYERROR or YYBACKUP, subsequent parser actions might lead
+     to an incorrect destructor call or verbose syntax error message
+     before the lookahead is translated.  */
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
 
   YYPOPSTACK (yylen);
@@ -5598,6 +5245,10 @@
 | yyerrlab -- here on detecting error |
 `------------------------------------*/
 yyerrlab:
+  /* Make sure we have latest lookahead translation.  See comments at
+     user semantic actions for why this is necessary.  */
+  yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
+
   /* If not already recovering from an error, report this error.  */
   if (!yyerrstatus)
     {
@@ -5605,37 +5256,36 @@
 #if ! YYERROR_VERBOSE
       yyerror (YY_("syntax error"));
 #else
+# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
+                                        yyssp, yytoken)
       {
-	YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
-	if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
-	  {
-	    YYSIZE_T yyalloc = 2 * yysize;
-	    if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
-	      yyalloc = YYSTACK_ALLOC_MAXIMUM;
-	    if (yymsg != yymsgbuf)
-	      YYSTACK_FREE (yymsg);
-	    yymsg = (char *) YYSTACK_ALLOC (yyalloc);
-	    if (yymsg)
-	      yymsg_alloc = yyalloc;
-	    else
-	      {
-		yymsg = yymsgbuf;
-		yymsg_alloc = sizeof yymsgbuf;
-	      }
-	  }
-
-	if (0 < yysize && yysize <= yymsg_alloc)
-	  {
-	    (void) yysyntax_error (yymsg, yystate, yychar);
-	    yyerror (yymsg);
-	  }
-	else
-	  {
-	    yyerror (YY_("syntax error"));
-	    if (yysize != 0)
-	      goto yyexhaustedlab;
-	  }
+        char const *yymsgp = YY_("syntax error");
+        int yysyntax_error_status;
+        yysyntax_error_status = YYSYNTAX_ERROR;
+        if (yysyntax_error_status == 0)
+          yymsgp = yymsg;
+        else if (yysyntax_error_status == 1)
+          {
+            if (yymsg != yymsgbuf)
+              YYSTACK_FREE (yymsg);
+            yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
+            if (!yymsg)
+              {
+                yymsg = yymsgbuf;
+                yymsg_alloc = sizeof yymsgbuf;
+                yysyntax_error_status = 2;
+              }
+            else
+              {
+                yysyntax_error_status = YYSYNTAX_ERROR;
+                yymsgp = yymsg;
+              }
+          }
+        yyerror (yymsgp);
+        if (yysyntax_error_status == 2)
+          goto yyexhaustedlab;
       }
+# undef YYSYNTAX_ERROR
 #endif
     }
 
@@ -5694,7 +5344,7 @@
   for (;;)
     {
       yyn = yypact[yystate];
-      if (yyn != YYPACT_NINF)
+      if (!yypact_value_is_default (yyn))
 	{
 	  yyn += YYTERROR;
 	  if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
@@ -5717,7 +5367,9 @@
       YY_STACK_PRINT (yyss, yyssp);
     }
 
+  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
   *++yyvsp = yylval;
+  YY_IGNORE_MAYBE_UNINITIALIZED_END
 
 
   /* Shift the error token.  */
@@ -5741,7 +5393,7 @@
   yyresult = 1;
   goto yyreturn;
 
-#if !defined(yyoverflow) || YYERROR_VERBOSE
+#if !defined yyoverflow || YYERROR_VERBOSE
 /*-------------------------------------------------.
 | yyexhaustedlab -- memory exhaustion comes here.  |
 `-------------------------------------------------*/
@@ -5753,8 +5405,13 @@
 
 yyreturn:
   if (yychar != YYEMPTY)
-     yydestruct ("Cleanup: discarding lookahead",
-		 yytoken, &yylval);
+    {
+      /* Make sure we have latest lookahead translation.  See comments at
+         user semantic actions for why this is necessary.  */
+      yytoken = YYTRANSLATE (yychar);
+      yydestruct ("Cleanup: discarding lookahead",
+                  yytoken, &yylval);
+    }
   /* Do not reclaim the symbols of the rule which action triggered
      this YYABORT or YYACCEPT.  */
   YYPOPSTACK (yylen);
@@ -5778,9 +5435,8 @@
 }
 
 
-
-/* Line 1684 of yacc.c  */
-#line 1143 "parser.y"
+/* Line 2050 of yacc.c  */
+#line 1120 "parser.y"
 
 
 static void decl_builtin_basic(const char *name, enum type_basic_type type)
@@ -6513,7 +6169,7 @@
     type->name = gen_name();
   }
   else if (is_attr(attrs, ATTR_UUID) && !is_attr(attrs, ATTR_PUBLIC)
-	   && !is_attr (attrs, ATTR_HIDDEN))
+	   && !is_attr(attrs, ATTR_HIDDEN))
     attrs = append_attr( attrs, make_attr(ATTR_PUBLIC) );
 
   LIST_FOR_EACH_ENTRY( decl, decls, const declarator_t, entry )
@@ -6687,7 +6343,7 @@
     /* ATTR_ANNOTATION */          { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, "annotation" },
     /* ATTR_APPOBJECT */           { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, "appobject" },
     /* ATTR_ASYNC */               { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "async" },
-    /* ATTR_ASYNCUUID */	   { 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, "async_uuid" },
+    /* ATTR_ASYNCUUID */           { 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, "async_uuid" },
     /* ATTR_AUTO_HANDLE */         { 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "auto_handle" },
     /* ATTR_BINDABLE */            { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "bindable" },
     /* ATTR_BROADCAST */           { 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "broadcast" },
@@ -6778,7 +6434,7 @@
     /* ATTR_UIDEFAULT */           { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "uidefault" },
     /* ATTR_USESGETLASTERROR */    { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "usesgetlasterror" },
     /* ATTR_USERMARSHAL */         { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, "user_marshal" },
-    /* ATTR_UUID */                { 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, "uuid" },
+    /* ATTR_UUID */                { 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, "uuid" },
     /* ATTR_V1ENUM */              { 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, "v1_enum" },
     /* ATTR_VARARG */              { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "vararg" },
     /* ATTR_VERSION */             { 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, "version" },
@@ -7410,6 +7066,13 @@
     return stmt;
 }
 
+static statement_t *make_statement_pragma(const char *str)
+{
+    statement_t *stmt = make_statement(STMT_PRAGMA);
+    stmt->u.str = str;
+    return stmt;
+}
+
 static statement_t *make_statement_cppquote(const char *str)
 {
     statement_t *stmt = make_statement(STMT_CPPQUOTE);
@@ -7468,18 +7131,18 @@
 
 static statement_list_t *append_statements(statement_list_t *l1, statement_list_t *l2)
 {
-  if (!l2) return l1;
-  if (!l1 || l1 == l2) return l2;
-  list_move_tail (l1, l2);
-  return l1;
+    if (!l2) return l1;
+    if (!l1 || l1 == l2) return l2;
+    list_move_tail (l1, l2);
+    return l1;
 }
 
 static attr_list_t *append_attribs(attr_list_t *l1, attr_list_t *l2)
 {
-  if (!l2) return l1;
-  if (!l1 || l1 == l2) return l2;
-  list_move_tail (l1, l2);
-  return l1;
+    if (!l2) return l1;
+    if (!l1 || l1 == l2) return l2;
+    list_move_tail (l1, l2);
+    return l1;
 }
 
 static statement_list_t *append_statement(statement_list_t *list, statement_t *stmt)
@@ -7507,4 +7170,3 @@
         error_loc("%s: redefinition error; original definition was at %s:%d\n",
                   t->name, t->loc_info.input_name, t->loc_info.line_number);
 }
-
diff --git a/mingw-w64-tools/widl/src/parser.tab.h b/mingw-w64-tools/widl/src/parser.tab.h
index 430a977..9cb4037 100644
--- a/mingw-w64-tools/widl/src/parser.tab.h
+++ b/mingw-w64-tools/widl/src/parser.tab.h
@@ -1,9 +1,8 @@
-/* A Bison parser, made by GNU Bison 2.4.3.  */
+/* A Bison parser, made by GNU Bison 2.7.12-4996.  */
 
-/* Skeleton interface for Bison's Yacc-like parsers in C
+/* Bison interface for Yacc-like parsers in C
    
-      Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-   2009, 2010 Free Software Foundation, Inc.
+      Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
    
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -31,6 +30,15 @@
    This special exception was added by the Free Software Foundation in
    version 2.2 of Bison.  */
 
+#ifndef YY_PARSER_PARSER_TAB_H_INCLUDED
+# define YY_PARSER_PARSER_TAB_H_INCLUDED
+/* Enabling traces.  */
+#ifndef YYDEBUG
+# define YYDEBUG 0
+#endif
+#if YYDEBUG
+extern int parser_debug;
+#endif
 
 /* Tokens.  */
 #ifndef YYTOKENTYPE
@@ -39,198 +47,197 @@
       know about them.  */
    enum yytokentype {
      aIDENTIFIER = 258,
-     aKNOWNTYPE = 259,
-     aNUM = 260,
-     aHEXNUM = 261,
-     aDOUBLE = 262,
-     aSTRING = 263,
-     aWSTRING = 264,
-     aSQSTRING = 265,
-     aUUID = 266,
-     aEOF = 267,
-     SHL = 268,
-     SHR = 269,
-     MEMBERPTR = 270,
-     EQUALITY = 271,
-     INEQUALITY = 272,
-     GREATEREQUAL = 273,
-     LESSEQUAL = 274,
-     LOGICALOR = 275,
-     LOGICALAND = 276,
-     ELLIPSIS = 277,
-     tAGGREGATABLE = 278,
-     tALLOCATE = 279,
-     tANNOTATION = 280,
-     tAPPOBJECT = 281,
-     tASYNC = 282,
-     tASYNCUUID = 283,
-     tAUTOHANDLE = 284,
-     tBINDABLE = 285,
-     tBOOLEAN = 286,
-     tBROADCAST = 287,
-     tBYTE = 288,
-     tBYTECOUNT = 289,
-     tCALLAS = 290,
-     tCALLBACK = 291,
-     tCASE = 292,
-     tCDECL = 293,
-     tCHAR = 294,
-     tCOCLASS = 295,
-     tCODE = 296,
-     tCOMMSTATUS = 297,
-     tCONST = 298,
-     tCONTEXTHANDLE = 299,
-     tCONTEXTHANDLENOSERIALIZE = 300,
-     tCONTEXTHANDLESERIALIZE = 301,
-     tCONTROL = 302,
-     tCPPQUOTE = 303,
-     tDECODE = 304,
-     tDEFAULT = 305,
-     tDEFAULTBIND = 306,
-     tDEFAULTCOLLELEM = 307,
-     tDEFAULTVALUE = 308,
-     tDEFAULTVTABLE = 309,
-     tDISABLECONSISTENCYCHECK = 310,
-     tDISPLAYBIND = 311,
-     tDISPINTERFACE = 312,
-     tDLLNAME = 313,
-     tDOUBLE = 314,
-     tDUAL = 315,
-     tENABLEALLOCATE = 316,
-     tENCODE = 317,
-     tENDPOINT = 318,
-     tENTRY = 319,
-     tENUM = 320,
-     tERRORSTATUST = 321,
-     tEXPLICITHANDLE = 322,
-     tEXTERN = 323,
-     tFALSE = 324,
-     tFASTCALL = 325,
-     tFAULTSTATUS = 326,
-     tFLOAT = 327,
-     tFORCEALLOCATE = 328,
-     tHANDLE = 329,
-     tHANDLET = 330,
-     tHELPCONTEXT = 331,
-     tHELPFILE = 332,
-     tHELPSTRING = 333,
-     tHELPSTRINGCONTEXT = 334,
-     tHELPSTRINGDLL = 335,
-     tHIDDEN = 336,
-     tHYPER = 337,
-     tID = 338,
-     tIDEMPOTENT = 339,
-     tIGNORE = 340,
-     tIIDIS = 341,
-     tIMMEDIATEBIND = 342,
-     tIMPLICITHANDLE = 343,
-     tIMPORT = 344,
-     tIMPORTLIB = 345,
-     tIN = 346,
-     tIN_LINE = 347,
-     tINLINE = 348,
-     tINPUTSYNC = 349,
-     tINT = 350,
-     tINT3264 = 351,
-     tINT64 = 352,
-     tINTERFACE = 353,
-     tLCID = 354,
-     tLENGTHIS = 355,
-     tLIBRARY = 356,
-     tLICENSED = 357,
-     tLOCAL = 358,
-     tLONG = 359,
-     tMAYBE = 360,
-     tMESSAGE = 361,
-     tMETHODS = 362,
-     tMODULE = 363,
-     tNAMESPACE = 364,
-     tNOCODE = 365,
-     tNONBROWSABLE = 366,
-     tNONCREATABLE = 367,
-     tNONEXTENSIBLE = 368,
-     tNOTIFY = 369,
-     tNOTIFYFLAG = 370,
-     tNULL = 371,
-     tOBJECT = 372,
-     tODL = 373,
-     tOLEAUTOMATION = 374,
-     tOPTIMIZE = 375,
-     tOPTIONAL = 376,
-     tOUT = 377,
-     tPARTIALIGNORE = 378,
-     tPASCAL = 379,
-     tPOINTERDEFAULT = 380,
-     tPROGID = 381,
-     tPROPERTIES = 382,
-     tPROPGET = 383,
-     tPROPPUT = 384,
-     tPROPPUTREF = 385,
-     tPROXY = 386,
-     tPTR = 387,
-     tPUBLIC = 388,
-     tRANGE = 389,
-     tREADONLY = 390,
-     tREF = 391,
-     tREGISTER = 392,
-     tREPRESENTAS = 393,
-     tREQUESTEDIT = 394,
-     tRESTRICTED = 395,
-     tRETVAL = 396,
-     tSAFEARRAY = 397,
-     tSHORT = 398,
-     tSIGNED = 399,
-     tSIZEIS = 400,
-     tSIZEOF = 401,
-     tSMALL = 402,
-     tSOURCE = 403,
-     tSTATIC = 404,
-     tSTDCALL = 405,
-     tSTRICTCONTEXTHANDLE = 406,
-     tSTRING = 407,
-     tSTRUCT = 408,
-     tSWITCH = 409,
-     tSWITCHIS = 410,
-     tSWITCHTYPE = 411,
-     tTHREADING = 412,
-     tTRANSMITAS = 413,
-     tTRUE = 414,
-     tTYPEDEF = 415,
-     tUIDEFAULT = 416,
-     tUNION = 417,
-     tUNIQUE = 418,
-     tUNSIGNED = 419,
-     tUSESGETLASTERROR = 420,
-     tUSERMARSHAL = 421,
-     tUUID = 422,
-     tV1ENUM = 423,
-     tVARARG = 424,
-     tVERSION = 425,
-     tVIPROGID = 426,
-     tVOID = 427,
-     tWCHAR = 428,
-     tWIREMARSHAL = 429,
-     tAPARTMENT = 430,
-     tNEUTRAL = 431,
-     tSINGLE = 432,
-     tFREE = 433,
-     tBOTH = 434,
-     ADDRESSOF = 435,
-     NEG = 436,
-     POS = 437,
-     PPTR = 438,
-     CAST = 439
+     aPRAGMA = 259,
+     aKNOWNTYPE = 260,
+     aNUM = 261,
+     aHEXNUM = 262,
+     aDOUBLE = 263,
+     aSTRING = 264,
+     aWSTRING = 265,
+     aSQSTRING = 266,
+     aUUID = 267,
+     aEOF = 268,
+     SHL = 269,
+     SHR = 270,
+     MEMBERPTR = 271,
+     EQUALITY = 272,
+     INEQUALITY = 273,
+     GREATEREQUAL = 274,
+     LESSEQUAL = 275,
+     LOGICALOR = 276,
+     LOGICALAND = 277,
+     ELLIPSIS = 278,
+     tAGGREGATABLE = 279,
+     tALLOCATE = 280,
+     tANNOTATION = 281,
+     tAPPOBJECT = 282,
+     tASYNC = 283,
+     tASYNCUUID = 284,
+     tAUTOHANDLE = 285,
+     tBINDABLE = 286,
+     tBOOLEAN = 287,
+     tBROADCAST = 288,
+     tBYTE = 289,
+     tBYTECOUNT = 290,
+     tCALLAS = 291,
+     tCALLBACK = 292,
+     tCASE = 293,
+     tCDECL = 294,
+     tCHAR = 295,
+     tCOCLASS = 296,
+     tCODE = 297,
+     tCOMMSTATUS = 298,
+     tCONST = 299,
+     tCONTEXTHANDLE = 300,
+     tCONTEXTHANDLENOSERIALIZE = 301,
+     tCONTEXTHANDLESERIALIZE = 302,
+     tCONTROL = 303,
+     tCPPQUOTE = 304,
+     tDECODE = 305,
+     tDEFAULT = 306,
+     tDEFAULTBIND = 307,
+     tDEFAULTCOLLELEM = 308,
+     tDEFAULTVALUE = 309,
+     tDEFAULTVTABLE = 310,
+     tDISABLECONSISTENCYCHECK = 311,
+     tDISPLAYBIND = 312,
+     tDISPINTERFACE = 313,
+     tDLLNAME = 314,
+     tDOUBLE = 315,
+     tDUAL = 316,
+     tENABLEALLOCATE = 317,
+     tENCODE = 318,
+     tENDPOINT = 319,
+     tENTRY = 320,
+     tENUM = 321,
+     tERRORSTATUST = 322,
+     tEXPLICITHANDLE = 323,
+     tEXTERN = 324,
+     tFALSE = 325,
+     tFASTCALL = 326,
+     tFAULTSTATUS = 327,
+     tFLOAT = 328,
+     tFORCEALLOCATE = 329,
+     tHANDLE = 330,
+     tHANDLET = 331,
+     tHELPCONTEXT = 332,
+     tHELPFILE = 333,
+     tHELPSTRING = 334,
+     tHELPSTRINGCONTEXT = 335,
+     tHELPSTRINGDLL = 336,
+     tHIDDEN = 337,
+     tHYPER = 338,
+     tID = 339,
+     tIDEMPOTENT = 340,
+     tIGNORE = 341,
+     tIIDIS = 342,
+     tIMMEDIATEBIND = 343,
+     tIMPLICITHANDLE = 344,
+     tIMPORT = 345,
+     tIMPORTLIB = 346,
+     tIN = 347,
+     tIN_LINE = 348,
+     tINLINE = 349,
+     tINPUTSYNC = 350,
+     tINT = 351,
+     tINT3264 = 352,
+     tINT64 = 353,
+     tINTERFACE = 354,
+     tLCID = 355,
+     tLENGTHIS = 356,
+     tLIBRARY = 357,
+     tLICENSED = 358,
+     tLOCAL = 359,
+     tLONG = 360,
+     tMAYBE = 361,
+     tMESSAGE = 362,
+     tMETHODS = 363,
+     tMODULE = 364,
+     tNAMESPACE = 365,
+     tNOCODE = 366,
+     tNONBROWSABLE = 367,
+     tNONCREATABLE = 368,
+     tNONEXTENSIBLE = 369,
+     tNOTIFY = 370,
+     tNOTIFYFLAG = 371,
+     tNULL = 372,
+     tOBJECT = 373,
+     tODL = 374,
+     tOLEAUTOMATION = 375,
+     tOPTIMIZE = 376,
+     tOPTIONAL = 377,
+     tOUT = 378,
+     tPARTIALIGNORE = 379,
+     tPASCAL = 380,
+     tPOINTERDEFAULT = 381,
+     tPROGID = 382,
+     tPROPERTIES = 383,
+     tPROPGET = 384,
+     tPROPPUT = 385,
+     tPROPPUTREF = 386,
+     tPROXY = 387,
+     tPTR = 388,
+     tPUBLIC = 389,
+     tRANGE = 390,
+     tREADONLY = 391,
+     tREF = 392,
+     tREGISTER = 393,
+     tREPRESENTAS = 394,
+     tREQUESTEDIT = 395,
+     tRESTRICTED = 396,
+     tRETVAL = 397,
+     tSAFEARRAY = 398,
+     tSHORT = 399,
+     tSIGNED = 400,
+     tSIZEIS = 401,
+     tSIZEOF = 402,
+     tSMALL = 403,
+     tSOURCE = 404,
+     tSTATIC = 405,
+     tSTDCALL = 406,
+     tSTRICTCONTEXTHANDLE = 407,
+     tSTRING = 408,
+     tSTRUCT = 409,
+     tSWITCH = 410,
+     tSWITCHIS = 411,
+     tSWITCHTYPE = 412,
+     tTHREADING = 413,
+     tTRANSMITAS = 414,
+     tTRUE = 415,
+     tTYPEDEF = 416,
+     tUIDEFAULT = 417,
+     tUNION = 418,
+     tUNIQUE = 419,
+     tUNSIGNED = 420,
+     tUSESGETLASTERROR = 421,
+     tUSERMARSHAL = 422,
+     tUUID = 423,
+     tV1ENUM = 424,
+     tVARARG = 425,
+     tVERSION = 426,
+     tVIPROGID = 427,
+     tVOID = 428,
+     tWCHAR = 429,
+     tWIREMARSHAL = 430,
+     tAPARTMENT = 431,
+     tNEUTRAL = 432,
+     tSINGLE = 433,
+     tFREE = 434,
+     tBOTH = 435,
+     ADDRESSOF = 436,
+     NEG = 437,
+     POS = 438,
+     PPTR = 439,
+     CAST = 440
    };
 #endif
 
 
-
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
 typedef union YYSTYPE
 {
-
-/* Line 1685 of yacc.c  */
-#line 155 "parser.y"
+/* Line 2053 of yacc.c  */
+#line 129 "parser.y"
 
 	attr_t *attr;
 	attr_list_t *attr_list;
@@ -258,9 +265,8 @@
 	enum storage_class stgclass;
 
 
-
-/* Line 1685 of yacc.c  */
-#line 264 "parser.tab.h"
+/* Line 2053 of yacc.c  */
+#line 270 "parser.tab.h"
 } YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
@@ -269,4 +275,18 @@
 
 extern YYSTYPE parser_lval;
 
+#ifdef YYPARSE_PARAM
+#if defined __STDC__ || defined __cplusplus
+int parser_parse (void *YYPARSE_PARAM);
+#else
+int parser_parse ();
+#endif
+#else /* ! YYPARSE_PARAM */
+#if defined __STDC__ || defined __cplusplus
+int parser_parse (void);
+#else
+int parser_parse ();
+#endif
+#endif /* ! YYPARSE_PARAM */
 
+#endif /* !YY_PARSER_PARSER_TAB_H_INCLUDED  */
diff --git a/mingw-w64-tools/widl/src/parser.y b/mingw-w64-tools/widl/src/parser.y
index ef3bee5..c0c77d7 100644
--- a/mingw-w64-tools/widl/src/parser.y
+++ b/mingw-w64-tools/widl/src/parser.y
@@ -38,33 +38,6 @@
 #include "expr.h"
 #include "typetree.h"
 
-#if defined(YYBYACC)
-	/* Berkeley yacc (byacc) doesn't seem to know about these */
-	/* Some *BSD supplied versions do define these though */
-# ifndef YYEMPTY
-#  define YYEMPTY	(-1)	/* Empty lookahead value of yychar */
-# endif
-# ifndef YYLEX
-#  define YYLEX		yylex()
-# endif
-
-#elif defined(YYBISON)
-	/* Bison was used for original development */
-	/* #define YYEMPTY -2 */
-	/* #define YYLEX   yylex() */
-
-#else
-	/* No yacc we know yet */
-# if !defined(YYEMPTY) || !defined(YYLEX)
-#  error Yacc version/type unknown. This version needs to be verified for settings of YYEMPTY and YYLEX.
-# elif defined(__GNUC__)	/* gcc defines the #warning directive */
-#  warning Yacc version/type unknown. It defines YYEMPTY and YYLEX, but is not tested
-  /* #else we just take a chance that it works... */
-# endif
-#endif
-
-#define YYERROR_VERBOSE
-
 static unsigned char pointer_default = RPC_FC_UP;
 
 typedef struct list typelist_t;
@@ -88,26 +61,6 @@
 
 typelist_t incomplete_types = LIST_INIT(incomplete_types);
 
-typedef struct str_namespace_pool_t {
-  struct str_namespace_pool_t *next;
-  size_t len;
-  char name[1];
-} str_namespace_pool_t;
-
-static const char *unify_ns_str (const char *str);
-static const char *unify_ns_name(const char *l, const char *r);
-
-typedef struct ctx_namespace_t {
-  struct ctx_namespace_t *prev;
-  const char *name;
-} ctx_namespace_t;
-
-static ctx_namespace_t *ctx_namespace = NULL;
-
-static void push_namespace(const char *name);
-static int pop_namespace(void);
-static const char *get_cur_namespace(void);
-
 static void fix_incomplete(void);
 static void fix_incomplete_types(type_t *complete_type);
 
@@ -161,6 +114,7 @@
 static statement_t *make_statement_reference(type_t *type);
 static statement_t *make_statement_declaration(var_t *var);
 static statement_t *make_statement_library(typelib_t *typelib);
+static statement_t *make_statement_pragma(const char *str);
 static statement_t *make_statement_cppquote(const char *str);
 static statement_t *make_statement_importlib(const char *str);
 static statement_t *make_statement_module(type_t *type);
@@ -199,7 +153,7 @@
 	enum storage_class stgclass;
 }
 
-%token <str> aIDENTIFIER
+%token <str> aIDENTIFIER aPRAGMA
 %token <str> aKNOWNTYPE
 %token <num> aNUM aHEXNUM
 %token <dbl> aDOUBLE
@@ -305,9 +259,10 @@
 %type <ifinfo> interfacehdr
 %type <stgclass> storage_cls_spec
 %type <declspec> decl_spec decl_spec_no_type m_decl_spec_no_type
-%type <type> inherit interface interfacedef interfacedec namespacedef
+%type <type> inherit interface interfacedef interfacedec
 %type <type> dispinterface dispinterfacehdr dispinterfacedef
 %type <type> module modulehdr moduledef
+%type <type> namespacedef
 %type <type> base_type int_std
 %type <type> enumdef structdef uniondef typedecl
 %type <type> type
@@ -346,6 +301,8 @@
 %right '!' '~' CAST PPTR POS NEG ADDRESSOF tSIZEOF
 %left '.' MEMBERPTR '[' ']'
 
+%error-verbose
+
 %%
 
 input:   gbl_statements				{ fix_incomplete();
@@ -364,7 +321,7 @@
 
 gbl_statements:					{ $$ = NULL; }
 	| gbl_statements namespacedef '{' gbl_statements '}'
-						{ $$ = append_statements($1, $4); pop_namespace(); }
+						{ $$ = append_statements($1, $4); }
 	| gbl_statements interfacedec		{ $$ = append_statement($1, make_statement_reference($2)); }
 	| gbl_statements interfacedef		{ $$ = append_statement($1, make_statement_type_decl($2)); }
 	| gbl_statements coclass ';'		{ $$ = $1;
@@ -380,7 +337,8 @@
 
 imp_statements:					{ $$ = NULL; }
 	| imp_statements interfacedec		{ $$ = append_statement($1, make_statement_reference($2)); }
-	| imp_statements namespacedef '{' imp_statements '}' { $$ = append_statements($1, $4); pop_namespace(); }
+	| imp_statements namespacedef '{' imp_statements '}'
+						{ $$ = append_statements($1, $4); }
 	| imp_statements interfacedef		{ $$ = append_statement($1, make_statement_type_decl($2)); }
 	| imp_statements coclass ';'		{ $$ = $1; reg_type($2, $2->name, 0); }
 	| imp_statements coclassdef		{ $$ = append_statement($1, make_statement_type_decl($2));
@@ -406,6 +364,7 @@
 	| declaration ';'			{ $$ = make_statement_declaration($1); }
 	| import				{ $$ = make_statement_import($1); }
 	| typedef ';'				{ $$ = $1; }
+	| aPRAGMA				{ $$ = make_statement_pragma($1); }
 	;
 
 typedecl:
@@ -853,8 +812,7 @@
 						{ $$ = type_coclass_define($1, $3); }
 	;
 
-namespacedef: tNAMESPACE aIDENTIFIER
-						{ $$=NULL; push_namespace($2); }
+namespacedef: tNAMESPACE aIDENTIFIER		{ $$ = NULL; }
 	;
 
 coclass_ints:					{ $$ = NULL; }
@@ -1140,8 +1098,7 @@
 	;
 
 typedef: m_attributes tTYPEDEF m_attributes decl_spec declarator_list
-						{
-						  $1 = append_attribs ($1, $3);
+						{ $1 = append_attribs($1, $3);
 						  reg_typedefs($4, $5, check_typedef_attrs($1));
 						  $$ = make_statement_typedef($5);
 						}
@@ -1892,7 +1849,7 @@
     type->name = gen_name();
   }
   else if (is_attr(attrs, ATTR_UUID) && !is_attr(attrs, ATTR_PUBLIC)
-	   && !is_attr (attrs, ATTR_HIDDEN))
+	   && !is_attr(attrs, ATTR_HIDDEN))
     attrs = append_attr( attrs, make_attr(ATTR_PUBLIC) );
 
   LIST_FOR_EACH_ENTRY( decl, decls, const declarator_t, entry )
@@ -2066,7 +2023,7 @@
     /* ATTR_ANNOTATION */          { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, "annotation" },
     /* ATTR_APPOBJECT */           { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, "appobject" },
     /* ATTR_ASYNC */               { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "async" },
-    /* ATTR_ASYNCUUID */	   { 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, "async_uuid" },
+    /* ATTR_ASYNCUUID */           { 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, "async_uuid" },
     /* ATTR_AUTO_HANDLE */         { 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "auto_handle" },
     /* ATTR_BINDABLE */            { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "bindable" },
     /* ATTR_BROADCAST */           { 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "broadcast" },
@@ -2157,7 +2114,7 @@
     /* ATTR_UIDEFAULT */           { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "uidefault" },
     /* ATTR_USESGETLASTERROR */    { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "usesgetlasterror" },
     /* ATTR_USERMARSHAL */         { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, "user_marshal" },
-    /* ATTR_UUID */                { 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, "uuid" },
+    /* ATTR_UUID */                { 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, "uuid" },
     /* ATTR_V1ENUM */              { 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, "v1_enum" },
     /* ATTR_VARARG */              { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "vararg" },
     /* ATTR_VERSION */             { 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, "version" },
@@ -2747,7 +2704,6 @@
 {
     statement_t *stmt = xmalloc(sizeof(*stmt));
     stmt->type = type;
-    stmt->nspace = get_cur_namespace();
     return stmt;
 }
 
@@ -2790,6 +2746,13 @@
     return stmt;
 }
 
+static statement_t *make_statement_pragma(const char *str)
+{
+    statement_t *stmt = make_statement(STMT_PRAGMA);
+    stmt->u.str = str;
+    return stmt;
+}
+
 static statement_t *make_statement_cppquote(const char *str)
 {
     statement_t *stmt = make_statement(STMT_CPPQUOTE);
@@ -2848,18 +2811,18 @@
 
 static statement_list_t *append_statements(statement_list_t *l1, statement_list_t *l2)
 {
-  if (!l2) return l1;
-  if (!l1 || l1 == l2) return l2;
-  list_move_tail (l1, l2);
-  return l1;
+    if (!l2) return l1;
+    if (!l1 || l1 == l2) return l2;
+    list_move_tail (l1, l2);
+    return l1;
 }
 
 static attr_list_t *append_attribs(attr_list_t *l1, attr_list_t *l2)
 {
-  if (!l2) return l1;
-  if (!l1 || l1 == l2) return l2;
-  list_move_tail (l1, l2);
-  return l1;
+    if (!l2) return l1;
+    if (!l1 || l1 == l2) return l2;
+    list_move_tail (l1, l2);
+    return l1;
 }
 
 static statement_list_t *append_statement(statement_list_t *list, statement_t *stmt)
@@ -2887,84 +2850,3 @@
         error_loc("%s: redefinition error; original definition was at %s:%d\n",
                   t->name, t->loc_info.input_name, t->loc_info.line_number);
 }
-
-static void push_namespace(const char *nameadd)
-{
-  ctx_namespace_t *c;
-
-  if (!nameadd)
-    nameadd = "";
-  c = xmalloc(sizeof(ctx_namespace_t));
-  c->name = unify_ns_name(get_cur_namespace(), nameadd);
-  c->prev = ctx_namespace;
-  ctx_namespace = c;
-}
-
-static int pop_namespace(void)
-{
-  ctx_namespace_t *c;
-
-  if (!(c = ctx_namespace))
-    return 0;
-  ctx_namespace = c->prev;
-  c->prev = NULL;
-  free (c);
-  return 1;
-}
-
-static const char *get_cur_namespace(void)
-{
-  if (!ctx_namespace)
-    return unify_ns_str(NULL);
-  return ctx_namespace->name;
-}
-
-static const char *unify_ns_name(const char *l, const char *r)
-{
-  const char *r;
-  char *h;
-  if (!l || *l == 0)
-    return unify_ns_str(r);
-  if (!r || *r == 0)
-    return unify_ns_str(l);
-  h = xmalloc(strlen(l) + strlen(r) + 2);
-  strcpy(h, l);
-  strcat(h, ".");
-  strcat(h, r);
-  r = unify_ns_str(h);
-  free(h);
-  return r;
-}
-
-static const char *unify_ns_str (const char *str)
-{
-  static str_namespace_pool_t *pool = NULL;
-  size_t l;
-  int e;
-  str_namespace_pool_t *p, *c, *n;
-
-  if (!str || *str == 0)
-    return "";
-  l = strlen (str);
-  p = NULL;
-  c = pool;
-  while (c != NULL)
-  {
-    if (c->len == l && (e = strcmp (c->name, str)) >= 0)
-    {
-      if (!e)
-	return &(c->name[0]);
-      break;
-    }
-    c = (p = c)->next;
-  }
-  n = xmalloc (sizeof (str_namespace_pool_t) + l);
-  strcpy (n->name, str);
-  n->next = c;
-  n->len = l;
-  if (!p)
-    pool = n;
-  else
-    p->next = n;
-  return &(n->name[0]);
-}
diff --git a/mingw-w64-tools/widl/src/parser.yy.c b/mingw-w64-tools/widl/src/parser.yy.c
index 89ecfba..4b24c87 100644
--- a/mingw-w64-tools/widl/src/parser.yy.c
+++ b/mingw-w64-tools/widl/src/parser.yy.c
@@ -379,8 +379,8 @@
 	*yy_cp = '\0'; \
 	(yy_c_buf_p) = yy_cp;
 
-#define YY_NUM_RULES 36
-#define YY_END_OF_BUFFER 37
+#define YY_NUM_RULES 39
+#define YY_END_OF_BUFFER 40
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -388,24 +388,27 @@
 	flex_int32_t yy_verify;
 	flex_int32_t yy_nxt;
 	};
-static yyconst flex_int16_t yy_accept[148] =
+static yyconst flex_int16_t yy_accept[174] =
     {   0,
-        0,    0,    0,    0,    0,    0,    0,    0,    2,    2,
-        0,    0,   37,   35,   24,   23,   35,    3,   35,    7,
-       35,   35,   19,   19,   35,   35,   35,   22,   22,   22,
-       14,   35,   24,    1,   13,   36,    4,   13,    6,   19,
-       19,   16,   16,   16,   15,    2,    8,   13,   29,   33,
-       27,    0,    0,   19,   19,   19,    0,   25,   31,   28,
-       30,   26,   22,    5,   22,   32,    0,    1,    1,   12,
-       10,    9,   19,    0,   16,   16,    2,   11,   34,   20,
-       19,   19,   18,   22,   19,    0,   16,    0,   18,   18,
-       22,   19,    0,   16,    0,   20,   18,   18,   22,   19,
+        0,    0,    0,    0,    0,    0,    0,    0,    3,    3,
+        5,    5,    0,    0,   40,   38,   27,   26,   38,    6,
+       38,   10,   38,   38,   22,   22,   38,   38,   38,   25,
+       25,   25,   17,   38,   27,    2,   16,   39,    7,   16,
+        9,   22,   22,   19,   19,   19,   18,   27,    2,    3,
+        5,    5,   11,   16,   32,   36,   30,    0,    0,   22,
+       22,   22,    0,   28,   34,   31,   33,   29,   25,    8,
+       25,   35,    0,    2,    2,    0,   15,   13,   12,   22,
+        0,   19,   19,    0,    2,    2,    3,    5,    5,   14,
+       37,   23,   22,   22,   21,   25,    0,   22,    0,   19,
 
-        0,   16,   22,   19,    0,   16,   22,   19,    0,   16,
-       22,   19,    0,   16,   22,    0,   19,    0,   21,    0,
+        5,    0,   21,   21,   25,    0,   22,    0,   19,    5,
+        0,   23,   21,   21,   25,    0,   22,    0,   19,    5,
+       25,    0,   22,    0,   19,    5,   25,    0,   22,    0,
+       19,    5,   25,    1,   22,    0,   19,    5,   25,    0,
+       22,    4,    0,   24,    0,    4,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,   17,    0
+        0,   20,    0
     } ;
 
 static yyconst flex_int32_t yy_ec[256] =
@@ -419,11 +422,11 @@
        16,   17,    1,    1,   18,   19,   19,   19,   20,   21,
        22,   22,   22,   22,   22,   23,   22,   22,   22,   22,
        22,   24,   25,   22,   26,   22,   22,   27,   28,   22,
-       29,   30,   31,    1,   22,    1,   19,   19,   19,   19,
+       29,   30,   31,    1,   32,    1,   33,   19,   34,   35,
 
-       32,   19,   22,   22,   22,   22,   22,   33,   22,   22,
-       22,   22,   22,   22,   22,   22,   34,   22,   22,   35,
-       22,   22,    1,   36,    1,    1,    1,    1,    1,    1,
+       36,   19,   37,   38,   39,   22,   22,   40,   41,   22,
+       42,   43,   22,   44,   22,   22,   45,   22,   22,   46,
+       22,   22,    1,   47,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -440,182 +443,227 @@
         1,    1,    1,    1,    1
     } ;
 
-static yyconst flex_int32_t yy_meta[37] =
+static yyconst flex_int32_t yy_meta[48] =
     {   0,
         1,    1,    2,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    3,    3,    1,    1,    1,    3,    3,    3,
         3,    4,    4,    4,    4,    4,    4,    4,    1,    1,
-        1,    3,    4,    4,    4,    1
+        1,    4,    3,    3,    3,    3,    4,    4,    4,    4,
+        4,    4,    4,    4,    4,    4,    1
     } ;
 
-static yyconst flex_int16_t yy_base[184] =
+static yyconst flex_int16_t yy_base[214] =
     {   0,
-        0,   35,   35,   39,   40,   43,   61,   45,  262,  261,
-       46,   47,  263,  481,  481,  481,  246,  481,  254,  481,
-      243,  243,   85,   25,   41,  238,   42,    0,  248,  229,
-      481,  210,   60,  243,  481,  481,  481,   34,  481,  108,
-       26,  131,  154,  239,  481,    0,  481,   60,  481,  481,
-      481,  231,   58,    0,   75,   77,    0,  481,  481,  481,
-      481,  481,    0,  481,  220,  481,   61,  238,  236,  481,
-      481,  481,  174,    0,  196,    0,    0,  481,  481,   93,
-      481,  481,  113,  213,  216,    0,  238,  166,   89,   81,
-      214,  258,    0,  280,   89,  169,  481,  481,  207,  300,
+        0,   46,   46,   50,   51,   54,   84,   56,  345,  344,
+      129,  130,  131,  132,  346,  639,  639,  639,  325,  639,
+      333,  639,  322,  326,  160,  124,   45,  321,   47,    0,
+      331,  316,  639,  286,   63,  139,  639,  639,  639,   45,
+      639,  194,  117,  228,    0,  326,  639,   64,  324,    0,
+        0,  286,  639,  135,  639,  639,  639,  312,   54,  154,
+      130,  119,    0,  639,  639,  639,  639,  639,    0,  639,
+      296,  639,   71,  146,  147,  272,  639,  639,  639,  252,
+        0,  285,    0,   72,  313,  312,    0,    0,  278,  639,
+      639,  140,  639,  639,  158,  291,  277,  309,    0,  342,
 
-        0,  322,  203,  342,    0,  364,  208,  384,    0,  406,
-      197,  428,  213,  212,  115,    0,  211,  128,  481,    0,
-        0,    0,  210,    0,    0,    0,    0,  209,    0,    0,
-        0,    0,  208,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,  481,  481,  462,  466,  468,
-      472,  476,  215,  210,  209,  208,  202,  201,  200,  199,
-      196,  195,  193,  188,  187,  182,  181,  178,  175,  168,
-      167,  166,  159,  158,  157,  145,  135,  130,  129,  113,
-      102,   88,   75
+      269,  182,  152,  162,  290,  265,  366,    0,  399,  269,
+       58,  196,  639,  639,  276,  255,  423,    0,  456,  259,
+      270,  258,  480,    0,  513,  255,  266,  281,  537,    0,
+      570,  244,  251,  275,  212,  265,  263,  227,  143,    0,
+      267,    0,  149,  639,    0,    0,    0,    0,  257,    0,
+        0,    0,    0,  256,    0,    0,    0,    0,  249,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,  639,  639,  606,  610,  614,  616,  620,  622,  626,
+      630,  256,  255,  253,  252,  251,  250,  248,  247,  634,
+      242,  241,  240,  234,  233,  230,  228,  221,  219,  216,
+
+      215,  208,  201,  198,  188,  185,  176,  154,  152,  143,
+       80,   79,   76
     } ;
 
-static yyconst flex_int16_t yy_def[184] =
+static yyconst flex_int16_t yy_def[214] =
     {   0,
-      147,    1,  148,  148,  148,  148,    1,    7,  149,  149,
-      148,  148,  147,  147,  147,  147,  147,  147,  147,  147,
-      147,  147,  147,   23,  147,  147,  147,  150,  150,  150,
-      147,  147,  147,  147,  147,  147,  147,  151,  147,  147,
-       40,  147,   42,   43,  147,  152,  147,  151,  147,  147,
-      147,  147,  147,   24,  147,  147,  153,  147,  147,  147,
-      147,  147,  150,  147,  150,  147,  147,  147,  147,  147,
-      147,  147,  147,  154,   43,   43,  152,  147,  147,  147,
-      147,  147,  153,  150,  147,  155,   43,  147,  147,  147,
-      150,  147,  156,   43,  147,  147,  147,  147,  150,  147,
+      173,    1,  174,  174,  174,  174,  173,    7,  175,  175,
+      176,  176,  174,  174,  173,  173,  173,  173,  173,  173,
+      173,  173,  173,  173,  173,  173,  173,  173,  173,  177,
+      177,  177,  173,  173,  173,  173,  173,  173,  173,  178,
+      173,  173,   42,  179,  179,  179,  173,  173,  173,  180,
+      181,  181,  173,  178,  173,  173,  173,  173,  173,  173,
+      173,  173,  182,  173,  173,  173,  173,  173,  177,  173,
+      177,  173,  173,  173,  173,  173,  173,  173,  173,  173,
+      183,  179,  179,  173,  173,  173,  180,  181,  181,  173,
+      173,  173,  173,  173,  182,  177,  173,  173,  184,  179,
 
-      157,   43,  150,  147,  158,   43,  150,  147,  159,   43,
-      150,  147,  147,   43,  150,  160,  112,  147,  147,  161,
-      162,  163,  147,  164,  165,  166,  167,  147,  168,  169,
-      170,  171,  147,  172,  173,  174,  175,  176,  177,  178,
-      179,  180,  181,  182,  183,  147,    0,  147,  147,  147,
-      147,  147,  147,  147,  147,  147,  147,  147,  147,  147,
-      147,  147,  147,  147,  147,  147,  147,  147,  147,  147,
-      147,  147,  147,  147,  147,  147,  147,  147,  147,  147,
-      147,  147,  147
+      181,  173,  173,  173,  177,  173,  173,  185,  179,  181,
+      173,  173,  173,  173,  177,  173,  173,  186,  179,  181,
+      177,  173,  173,  187,  179,  181,  177,  173,  173,  188,
+      179,  181,  177,  173,  173,  173,  179,  181,  177,  189,
+      173,  190,  173,  173,  191,  190,  192,  193,  173,  194,
+      195,  196,  197,  173,  198,  199,  200,  201,  173,  202,
+      203,  204,  205,  206,  207,  208,  209,  210,  211,  212,
+      213,  173,    0,  173,  173,  173,  173,  173,  173,  173,
+      173,  173,  173,  173,  173,  173,  173,  173,  173,  173,
+      173,  173,  173,  173,  173,  173,  173,  173,  173,  173,
+
+      173,  173,  173,  173,  173,  173,  173,  173,  173,  173,
+      173,  173,  173
     } ;
 
-static yyconst flex_int16_t yy_nxt[518] =
+static yyconst flex_int16_t yy_nxt[687] =
     {   0,
-       14,   15,   16,   17,   18,   14,   19,   20,   14,   14,
-       21,   22,   23,   24,   25,   26,   27,   28,   28,   28,
-       28,   28,   29,   28,   30,   28,   28,   28,   31,   14,
-       14,   28,   28,   28,   28,   32,   33,   36,   71,   37,
-       34,   36,   36,   37,   39,   36,   33,   39,   36,   36,
-       34,  147,  147,   47,   47,   58,   59,   61,   62,  147,
-      147,   67,   67,   72,   38,   68,   68,   78,   38,   38,
-       80,   80,   38,   40,   41,   48,   48,  146,   42,   42,
-       42,   42,   43,   44,   43,   43,   43,   43,   43,   72,
-      145,   45,   42,   43,   43,   43,   53,   54,   54,   82,
+       16,   17,   18,   19,   20,   16,   21,   22,   16,   16,
+       23,   24,   25,   26,   27,   28,   29,   30,   30,   30,
+       30,   30,   31,   30,   32,   30,   30,   30,   33,   16,
+       16,   30,   30,   30,   30,   30,   30,   30,   30,   30,
+       30,   30,   30,   30,   30,   30,   34,   35,   38,   78,
+       39,   36,   38,   38,   39,   41,   38,   48,   41,   64,
+       65,   49,   67,   68,   73,   84,   92,   92,   74,   85,
+      112,  112,   73,   84,   79,   40,   74,   85,  172,   40,
+       40,  171,  170,   40,   16,   17,   18,   19,   20,   16,
+       21,   22,   16,   16,   23,   24,   42,   43,   27,   28,
 
-       81,   96,   96,   98,  144,   80,   80,   55,   81,   82,
-       56,   57,   88,   98,   97,  143,  118,   55,   56,   57,
-       73,   73,   97,  119,   88,   74,   74,   74,   74,  118,
-       55,  142,  141,   56,   57,   89,  119,  140,   90,   74,
-       55,   56,   57,   75,   75,   89,   90,  139,   75,   75,
-       75,   75,   76,   76,   76,   76,   76,   76,   76,  138,
-      137,  136,   75,   76,   76,   76,   76,   76,  135,  133,
-      132,   76,   76,   76,   76,   95,   95,  131,   96,   96,
-      130,   96,   96,  128,  127,   76,   85,   85,   88,  126,
-      125,   86,   86,   86,   86,  123,   55,  122,  121,   56,
+       29,   44,   44,   44,   44,   45,   46,   45,   45,   45,
+       45,   45,   33,   16,   47,   45,   44,   44,   44,   44,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       34,   38,   38,   38,   38,   59,   60,   60,   53,   53,
+       75,   94,   90,  173,  143,  169,   61,   75,   75,   62,
+      143,  144,   92,   92,  168,   93,  167,  144,   94,  102,
+       54,   54,  173,   61,   79,   59,   60,   60,   62,   52,
+       52,   59,   60,   60,   93,  102,   61,  113,  166,   62,
+      103,   76,   61,  104,  114,   62,   63,  165,   76,   76,
+      164,  111,  111,   61,  112,  112,  113,  103,   62,   61,
 
-       88,  120,  113,  109,  105,   86,   55,   56,   87,   87,
-      101,   93,   86,   87,   87,   87,   87,   83,  134,  129,
-      124,  147,  116,  116,  115,  111,  107,   87,   92,   92,
-      103,   99,   91,   93,   93,   93,   93,   69,   55,   69,
-       84,   56,   79,   64,   69,   66,   65,   93,   55,   56,
-       94,   94,   64,   60,   52,   94,   94,   94,   94,   51,
-       50,   49,  147,   36,   36,  147,  147,  147,  147,   94,
-      100,  100,  147,  147,  147,  101,  101,  101,  101,  147,
-       55,  147,  147,   56,  147,  147,  147,  147,  147,  101,
-       55,   56,  102,  102,  147,  147,  147,  102,  102,  102,
+      163,  114,  104,  162,   62,   63,   80,   80,  112,  112,
+      161,   81,   81,   81,   81,  102,   61,  159,  158,   62,
+       63,  157,  140,  156,  141,  141,   81,   81,   81,   81,
+      154,  102,  153,   61,   61,  152,  151,   62,   62,   63,
+       82,   82,  149,  148,  147,   82,   82,   82,   82,  145,
+      136,   61,  130,  124,  118,  108,   62,   99,   95,  160,
+       82,   82,   82,   82,   98,   98,  155,  150,  142,   99,
+       99,   99,   99,  140,   61,  140,  134,   62,  139,  141,
+      141,  138,  134,  133,   99,   99,   99,   99,  132,   61,
+      128,   61,   62,  127,  126,  122,   62,  100,  100,  121,
 
-      102,  147,  147,  147,  147,  147,  147,  147,  147,  147,
-      147,  102,  104,  104,  147,  147,  147,  105,  105,  105,
-      105,  147,   55,  147,  147,   56,  147,  147,  147,  147,
-      147,  105,   55,   56,  106,  106,  147,  147,  147,  106,
-      106,  106,  106,  147,  147,  147,  147,  147,  147,  147,
-      147,  147,  147,  106,  108,  108,  147,  147,  147,  109,
-      109,  109,  109,  147,   55,  147,  147,   56,  147,  147,
-      147,  147,  147,  109,   55,   56,  110,  110,  147,  147,
-      147,  110,  110,  110,  110,  147,  147,  147,  147,  147,
-      147,  147,  147,  147,  147,  110,  112,  112,  147,  147,
+      120,  116,  100,  100,  100,  100,   61,  115,  110,  106,
+      105,   62,  101,   86,   86,   97,   96,  100,  100,  100,
+      100,  107,  107,   91,   89,   86,  108,  108,  108,  108,
+       70,   61,   72,   71,   62,   70,   66,   58,   57,   56,
+       55,  108,  108,  108,  108,  173,   38,   38,   61,  173,
+      173,  173,  173,   62,  109,  109,  173,  173,  173,  109,
+      109,  109,  109,  173,  173,  173,  173,  173,  173,  173,
+      173,  173,  173,  173,  109,  109,  109,  109,  117,  117,
+      173,  173,  173,  118,  118,  118,  118,  173,   61,  173,
+      173,   62,  173,  173,  173,  173,  173,  173,  118,  118,
 
-      147,  113,  113,  113,  113,  147,   55,  147,  147,   56,
-      147,  147,  147,  147,  147,  113,   55,   56,  114,  114,
-      147,  147,  147,  114,  114,  114,  114,  147,  147,  147,
-      147,  147,  147,  147,  147,  147,  147,  114,  116,  147,
-      117,  117,  147,  147,  147,  147,  147,  147,  147,  147,
-       55,  147,  147,   56,  147,  147,  147,  147,  147,  147,
-       55,   56,   35,   35,   35,   35,   46,   46,   46,   46,
-       63,   63,   70,  147,   70,   70,   77,  147,   77,   77,
-       13,  147,  147,  147,  147,  147,  147,  147,  147,  147,
-      147,  147,  147,  147,  147,  147,  147,  147,  147,  147,
+      118,  118,  173,  173,  173,   61,  173,  173,  173,  173,
+       62,  119,  119,  173,  173,  173,  119,  119,  119,  119,
+      173,  173,  173,  173,  173,  173,  173,  173,  173,  173,
+      173,  119,  119,  119,  119,  123,  123,  173,  173,  173,
+      124,  124,  124,  124,  173,   61,  173,  173,   62,  173,
+      173,  173,  173,  173,  173,  124,  124,  124,  124,  173,
+      173,  173,   61,  173,  173,  173,  173,   62,  125,  125,
+      173,  173,  173,  125,  125,  125,  125,  173,  173,  173,
+      173,  173,  173,  173,  173,  173,  173,  173,  125,  125,
+      125,  125,  129,  129,  173,  173,  173,  130,  130,  130,
 
-      147,  147,  147,  147,  147,  147,  147,  147,  147,  147,
-      147,  147,  147,  147,  147,  147,  147
+      130,  173,   61,  173,  173,   62,  173,  173,  173,  173,
+      173,  173,  130,  130,  130,  130,  173,  173,  173,   61,
+      173,  173,  173,  173,   62,  131,  131,  173,  173,  173,
+      131,  131,  131,  131,  173,  173,  173,  173,  173,  173,
+      173,  173,  173,  173,  173,  131,  131,  131,  131,  135,
+      135,  173,  173,  173,  136,  136,  136,  136,  173,   61,
+      173,  173,   62,  173,  173,  173,  173,  173,  173,  136,
+      136,  136,  136,  173,  173,  173,   61,  173,  173,  173,
+      173,   62,  137,  137,  173,  173,  173,  137,  137,  137,
+      137,  173,  173,  173,  173,  173,  173,  173,  173,  173,
+
+      173,  173,  137,  137,  137,  137,   37,   37,   37,   37,
+       50,   50,   50,   50,   51,   51,   51,   51,   69,   69,
+       77,  173,   77,   77,   83,   83,   87,  173,   87,   87,
+       88,  173,   88,   88,  146,  173,  146,  146,   15,  173,
+      173,  173,  173,  173,  173,  173,  173,  173,  173,  173,
+      173,  173,  173,  173,  173,  173,  173,  173,  173,  173,
+      173,  173,  173,  173,  173,  173,  173,  173,  173,  173,
+      173,  173,  173,  173,  173,  173,  173,  173,  173,  173,
+      173,  173,  173,  173,  173,  173
     } ;
 
-static yyconst flex_int16_t yy_chk[518] =
+static yyconst flex_int16_t yy_chk[687] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    2,    3,   38,    3,
-        2,    4,    5,    4,    5,    6,    8,    6,   11,   12,
-        8,   24,   41,   11,   12,   25,   25,   27,   27,   24,
-       41,   33,   67,   38,    3,   33,   67,   48,    4,    5,
-       53,   53,    6,    7,    7,   11,   12,  183,    7,    7,
-        7,    7,    7,    7,    7,    7,    7,    7,    7,   48,
-      182,    7,    7,    7,    7,    7,   23,   23,   23,   56,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    2,    3,   40,
+        3,    2,    4,    5,    4,    5,    6,    8,    6,   27,
+       27,    8,   29,   29,   35,   48,   59,   59,   35,   48,
+      111,  111,   73,   84,   40,    3,   73,   84,  213,    4,
+        5,  212,  211,    6,    7,    7,    7,    7,    7,    7,
+        7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
 
-       55,   95,   95,   90,  181,   80,   80,   23,   55,   56,
-       23,   23,   80,   90,   89,  180,  115,   23,   23,   23,
-       40,   40,   89,  115,   80,   40,   40,   40,   40,  118,
-       40,  179,  178,   40,   40,   83,  118,  177,   83,   40,
-       40,   40,   40,   42,   42,   83,   83,  176,   42,   42,
-       42,   42,   42,   42,   42,   42,   42,   42,   42,  175,
-      174,  173,   42,   42,   42,   42,   43,   43,  172,  171,
-      170,   43,   43,   43,   43,   88,   88,  169,   88,   88,
-      168,   96,   96,  167,  166,   43,   73,   73,   96,  165,
-      164,   73,   73,   73,   73,  163,   73,  162,  161,   73,
+        7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
+        7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
+        7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
+        7,   11,   12,   13,   14,   26,   26,   26,   13,   14,
+       36,   62,   54,   43,  139,  210,   26,   74,   75,   26,
+      143,  139,   92,   92,  209,   61,  208,  143,   62,   92,
+       13,   14,   43,   26,   54,   60,   60,   60,   26,   11,
+       12,   25,   25,   25,   61,   92,   60,  103,  207,   60,
+       95,   36,   25,   95,  104,   25,   25,  206,   74,   75,
+      205,  102,  102,   60,  102,  102,  103,   95,   60,   25,
 
-       96,  160,  159,  158,  157,   73,   73,   73,   75,   75,
-      156,  155,  154,   75,   75,   75,   75,  153,  133,  128,
-      123,  117,  114,  113,  111,  107,  103,   75,   85,   85,
-       99,   91,   84,   85,   85,   85,   85,   69,   85,   68,
-       65,   85,   52,   44,   34,   32,   30,   85,   85,   85,
-       87,   87,   29,   26,   22,   87,   87,   87,   87,   21,
-       19,   17,   13,   10,    9,    0,    0,    0,    0,   87,
-       92,   92,    0,    0,    0,   92,   92,   92,   92,    0,
-       92,    0,    0,   92,    0,    0,    0,    0,    0,   92,
-       92,   92,   94,   94,    0,    0,    0,   94,   94,   94,
+      204,  104,   95,  203,   25,   25,   42,   42,  112,  112,
+      202,   42,   42,   42,   42,  112,   42,  201,  200,   42,
+       42,  199,  135,  198,  135,  135,   42,   42,   42,   42,
+      197,  112,  196,   42,  135,  195,  194,  135,   42,   42,
+       44,   44,  193,  192,  191,   44,   44,   44,   44,  189,
+      188,  135,  187,  186,  185,  184,  135,  183,  182,  159,
+       44,   44,   44,   44,   80,   80,  154,  149,  138,   80,
+       80,   80,   80,  137,   80,  136,  134,   80,  133,  141,
+      141,  132,  128,  127,   80,   80,   80,   80,  126,  141,
+      122,   80,  141,  121,  120,  116,   80,   82,   82,  115,
 
-       94,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   94,  100,  100,    0,    0,    0,  100,  100,  100,
-      100,    0,  100,    0,    0,  100,    0,    0,    0,    0,
-        0,  100,  100,  100,  102,  102,    0,    0,    0,  102,
-      102,  102,  102,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  102,  104,  104,    0,    0,    0,  104,
-      104,  104,  104,    0,  104,    0,    0,  104,    0,    0,
-        0,    0,    0,  104,  104,  104,  106,  106,    0,    0,
-        0,  106,  106,  106,  106,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,  106,  108,  108,    0,    0,
+      110,  106,   82,   82,   82,   82,  141,  105,  101,   97,
+       96,  141,   89,   86,   85,   76,   71,   82,   82,   82,
+       82,   98,   98,   58,   52,   49,   98,   98,   98,   98,
+       46,   98,   34,   32,   98,   31,   28,   24,   23,   21,
+       19,   98,   98,   98,   98,   15,   10,    9,   98,    0,
+        0,    0,    0,   98,  100,  100,    0,    0,    0,  100,
+      100,  100,  100,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,  100,  100,  100,  100,  107,  107,
+        0,    0,    0,  107,  107,  107,  107,    0,  107,    0,
+        0,  107,    0,    0,    0,    0,    0,    0,  107,  107,
 
-        0,  108,  108,  108,  108,    0,  108,    0,    0,  108,
-        0,    0,    0,    0,    0,  108,  108,  108,  110,  110,
-        0,    0,    0,  110,  110,  110,  110,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,  110,  112,    0,
-      112,  112,    0,    0,    0,    0,    0,    0,    0,    0,
-      112,    0,    0,  112,    0,    0,    0,    0,    0,    0,
-      112,  112,  148,  148,  148,  148,  149,  149,  149,  149,
-      150,  150,  151,    0,  151,  151,  152,    0,  152,  152,
-      147,  147,  147,  147,  147,  147,  147,  147,  147,  147,
-      147,  147,  147,  147,  147,  147,  147,  147,  147,  147,
+      107,  107,    0,    0,    0,  107,    0,    0,    0,    0,
+      107,  109,  109,    0,    0,    0,  109,  109,  109,  109,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,  109,  109,  109,  109,  117,  117,    0,    0,    0,
+      117,  117,  117,  117,    0,  117,    0,    0,  117,    0,
+        0,    0,    0,    0,    0,  117,  117,  117,  117,    0,
+        0,    0,  117,    0,    0,    0,    0,  117,  119,  119,
+        0,    0,    0,  119,  119,  119,  119,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,  119,  119,
+      119,  119,  123,  123,    0,    0,    0,  123,  123,  123,
 
-      147,  147,  147,  147,  147,  147,  147,  147,  147,  147,
-      147,  147,  147,  147,  147,  147,  147
+      123,    0,  123,    0,    0,  123,    0,    0,    0,    0,
+        0,    0,  123,  123,  123,  123,    0,    0,    0,  123,
+        0,    0,    0,    0,  123,  125,  125,    0,    0,    0,
+      125,  125,  125,  125,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  125,  125,  125,  125,  129,
+      129,    0,    0,    0,  129,  129,  129,  129,    0,  129,
+        0,    0,  129,    0,    0,    0,    0,    0,    0,  129,
+      129,  129,  129,    0,    0,    0,  129,    0,    0,    0,
+        0,  129,  131,  131,    0,    0,    0,  131,  131,  131,
+      131,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+
+        0,    0,  131,  131,  131,  131,  174,  174,  174,  174,
+      175,  175,  175,  175,  176,  176,  176,  176,  177,  177,
+      178,    0,  178,  178,  179,  179,  180,    0,  180,  180,
+      181,    0,  181,  181,  190,    0,  190,  190,  173,  173,
+      173,  173,  173,  173,  173,  173,  173,  173,  173,  173,
+      173,  173,  173,  173,  173,  173,  173,  173,  173,  173,
+      173,  173,  173,  173,  173,  173,  173,  173,  173,  173,
+      173,  173,  173,  173,  173,  173,  173,  173,  173,  173,
+      173,  173,  173,  173,  173,  173
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -658,7 +706,8 @@
 
 
 
-#line 43 "parser.l"
+
+#line 44 "parser.l"
 
 #include "config.h"
 #include "wine/port.h"
@@ -708,6 +757,8 @@
 static unsigned int xstrtoul(const char *nptr, char **endptr, int base)
 {
 #if defined(__MINGW32__) || defined(_MSC_VER)
+  /* Long might be not wide enough for LLP64 target, so we want to use
+     double-precision here instead.  */
   unsigned long long val;
 
   errno = 0;
@@ -751,14 +802,15 @@
  * The flexer starts here
  **************************************************************************
  */
-#line 755 "parser.yy.c"
+#line 806 "parser.yy.c"
 
 #define INITIAL 0
 #define QUOTE 1
 #define WSTRQUOTE 2
 #define ATTR 3
 #define PP_LINE 4
-#define SQUOTE 5
+#define PP_PRAGMA 5
+#define SQUOTE 6
 
 #ifndef YY_NO_UNISTD_H
 /* Special case for "unistd.h", since it is non-ANSI. We include it way
@@ -947,9 +999,9 @@
 	register char *yy_cp, *yy_bp;
 	register int yy_act;
     
-#line 137 "parser.l"
+#line 140 "parser.l"
 
-#line 953 "parser.yy.c"
+#line 1005 "parser.yy.c"
 
 	if ( !(yy_init) )
 		{
@@ -1003,13 +1055,13 @@
 			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 				{
 				yy_current_state = (int) yy_def[yy_current_state];
-				if ( yy_current_state >= 148 )
+				if ( yy_current_state >= 174 )
 					yy_c = yy_meta[(unsigned int) yy_c];
 				}
 			yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
 			++yy_cp;
 			}
-		while ( yy_current_state != 147 );
+		while ( yy_current_state != 173 );
 		yy_cp = (yy_last_accepting_cpos);
 		yy_current_state = (yy_last_accepting_state);
 
@@ -1031,12 +1083,17 @@
 
 case 1:
 YY_RULE_SETUP
-#line 138 "parser.l"
-yy_push_state(PP_LINE);
+#line 141 "parser.l"
+yy_push_state(PP_PRAGMA);
 	YY_BREAK
 case 2:
 YY_RULE_SETUP
-#line 139 "parser.l"
+#line 142 "parser.l"
+yy_push_state(PP_LINE);
+	YY_BREAK
+case 3:
+YY_RULE_SETUP
+#line 143 "parser.l"
 {
                             int lineno;
                             char *cptr, *fname;
@@ -1056,194 +1113,204 @@
                             input_name = xstrdup(fname);
                         }
 	YY_BREAK
-case 3:
-YY_RULE_SETUP
-#line 157 "parser.l"
-yy_push_state(QUOTE); cbufidx = 0;
-	YY_BREAK
 case 4:
 YY_RULE_SETUP
-#line 158 "parser.l"
+#line 161 "parser.l"
+yyless(9); yy_pop_state(); return tCPPQUOTE;
+	YY_BREAK
+case 5:
+YY_RULE_SETUP
+#line 162 "parser.l"
+parser_lval.str = xstrdup(parser_text); yy_pop_state(); return aPRAGMA;
+	YY_BREAK
+case 6:
+YY_RULE_SETUP
+#line 163 "parser.l"
+yy_push_state(QUOTE); cbufidx = 0;
+	YY_BREAK
+case 7:
+YY_RULE_SETUP
+#line 164 "parser.l"
 {
 				yy_pop_state();
 				parser_lval.str = get_buffered_cstring();
 				return aSTRING;
 			}
 	YY_BREAK
-case 5:
+case 8:
 YY_RULE_SETUP
-#line 163 "parser.l"
+#line 169 "parser.l"
 yy_push_state(WSTRQUOTE); cbufidx = 0;
 	YY_BREAK
-case 6:
+case 9:
 YY_RULE_SETUP
-#line 164 "parser.l"
+#line 170 "parser.l"
 {
 				yy_pop_state();
 				parser_lval.str = get_buffered_cstring();
 				return aWSTRING;
 			}
 	YY_BREAK
-case 7:
+case 10:
 YY_RULE_SETUP
-#line 169 "parser.l"
+#line 175 "parser.l"
 yy_push_state(SQUOTE); cbufidx = 0;
 	YY_BREAK
-case 8:
+case 11:
 YY_RULE_SETUP
-#line 170 "parser.l"
+#line 176 "parser.l"
 {
 				yy_pop_state();
 				parser_lval.str = get_buffered_cstring();
 				return aSQSTRING;
 			}
 	YY_BREAK
-case 9:
-#line 176 "parser.l"
-case 10:
-YY_RULE_SETUP
-#line 176 "parser.l"
-addcchar(parser_text[1]);
-	YY_BREAK
-case 11:
-YY_RULE_SETUP
-#line 177 "parser.l"
-addcchar(parser_text[1]);
-	YY_BREAK
 case 12:
-YY_RULE_SETUP
-#line 178 "parser.l"
-addcchar('\\'); addcchar(parser_text[1]);
-	YY_BREAK
+#line 182 "parser.l"
 case 13:
 YY_RULE_SETUP
-#line 179 "parser.l"
-addcchar(parser_text[0]);
+#line 182 "parser.l"
+addcchar(parser_text[1]);
 	YY_BREAK
 case 14:
 YY_RULE_SETUP
-#line 180 "parser.l"
-yy_push_state(ATTR); return '[';
+#line 183 "parser.l"
+addcchar(parser_text[1]);
 	YY_BREAK
 case 15:
 YY_RULE_SETUP
-#line 181 "parser.l"
-yy_pop_state(); return ']';
+#line 184 "parser.l"
+addcchar('\\'); addcchar(parser_text[1]);
 	YY_BREAK
 case 16:
 YY_RULE_SETUP
-#line 182 "parser.l"
-return attr_token(parser_text);
+#line 185 "parser.l"
+addcchar(parser_text[0]);
 	YY_BREAK
 case 17:
 YY_RULE_SETUP
-#line 183 "parser.l"
+#line 186 "parser.l"
+yy_push_state(ATTR); return '[';
+	YY_BREAK
+case 18:
+YY_RULE_SETUP
+#line 187 "parser.l"
+yy_pop_state(); return ']';
+	YY_BREAK
+case 19:
+YY_RULE_SETUP
+#line 188 "parser.l"
+return attr_token(parser_text);
+	YY_BREAK
+case 20:
+YY_RULE_SETUP
+#line 189 "parser.l"
 {
 				parser_lval.uuid = parse_uuid(parser_text);
 				return aUUID;
 			}
 	YY_BREAK
-case 18:
+case 21:
 YY_RULE_SETUP
-#line 187 "parser.l"
+#line 193 "parser.l"
 {
 				parser_lval.num = xstrtoul(parser_text, NULL, 0);
 				return aHEXNUM;
 			}
 	YY_BREAK
-case 19:
+case 22:
 YY_RULE_SETUP
-#line 191 "parser.l"
+#line 197 "parser.l"
 {
 				parser_lval.num = xstrtoul(parser_text, NULL, 0);
 				return aNUM;
 			}
 	YY_BREAK
-case 20:
+case 23:
 YY_RULE_SETUP
-#line 195 "parser.l"
+#line 201 "parser.l"
 {
 				parser_lval.dbl = strtod(parser_text, NULL);
 				return aDOUBLE;
 			}
 	YY_BREAK
-case 21:
+case 24:
 *yy_cp = (yy_hold_char); /* undo effects of setting up parser_text */
 (yy_c_buf_p) = yy_cp -= 1;
 YY_DO_BEFORE_ACTION; /* set up parser_text again */
 YY_RULE_SETUP
-#line 199 "parser.l"
+#line 205 "parser.l"
 return tSAFEARRAY;
 	YY_BREAK
-case 22:
-YY_RULE_SETUP
-#line 200 "parser.l"
-return kw_token(parser_text);
-	YY_BREAK
-case 23:
-/* rule 23 can match eol */
-YY_RULE_SETUP
-#line 201 "parser.l"
-line_number++;
-	YY_BREAK
-case 24:
-YY_RULE_SETUP
-#line 202 "parser.l"
-
-	YY_BREAK
 case 25:
 YY_RULE_SETUP
-#line 203 "parser.l"
-return SHL;
+#line 206 "parser.l"
+return kw_token(parser_text);
 	YY_BREAK
 case 26:
+/* rule 26 can match eol */
 YY_RULE_SETUP
-#line 204 "parser.l"
-return SHR;
+#line 207 "parser.l"
+line_number++;
 	YY_BREAK
 case 27:
 YY_RULE_SETUP
-#line 205 "parser.l"
-return MEMBERPTR;
+#line 208 "parser.l"
+
 	YY_BREAK
 case 28:
 YY_RULE_SETUP
-#line 206 "parser.l"
-return EQUALITY;
+#line 209 "parser.l"
+return SHL;
 	YY_BREAK
 case 29:
 YY_RULE_SETUP
-#line 207 "parser.l"
-return INEQUALITY;
+#line 210 "parser.l"
+return SHR;
 	YY_BREAK
 case 30:
 YY_RULE_SETUP
-#line 208 "parser.l"
-return GREATEREQUAL;
+#line 211 "parser.l"
+return MEMBERPTR;
 	YY_BREAK
 case 31:
 YY_RULE_SETUP
-#line 209 "parser.l"
-return LESSEQUAL;
+#line 212 "parser.l"
+return EQUALITY;
 	YY_BREAK
 case 32:
 YY_RULE_SETUP
-#line 210 "parser.l"
-return LOGICALOR;
+#line 213 "parser.l"
+return INEQUALITY;
 	YY_BREAK
 case 33:
 YY_RULE_SETUP
-#line 211 "parser.l"
-return LOGICALAND;
+#line 214 "parser.l"
+return GREATEREQUAL;
 	YY_BREAK
 case 34:
 YY_RULE_SETUP
-#line 212 "parser.l"
-return ELLIPSIS;
+#line 215 "parser.l"
+return LESSEQUAL;
 	YY_BREAK
 case 35:
 YY_RULE_SETUP
-#line 213 "parser.l"
+#line 216 "parser.l"
+return LOGICALOR;
+	YY_BREAK
+case 36:
+YY_RULE_SETUP
+#line 217 "parser.l"
+return LOGICALAND;
+	YY_BREAK
+case 37:
+YY_RULE_SETUP
+#line 218 "parser.l"
+return ELLIPSIS;
+	YY_BREAK
+case 38:
+YY_RULE_SETUP
+#line 219 "parser.l"
 return parser_text[0];
 	YY_BREAK
 case YY_STATE_EOF(INITIAL):
@@ -1251,20 +1318,21 @@
 case YY_STATE_EOF(WSTRQUOTE):
 case YY_STATE_EOF(ATTR):
 case YY_STATE_EOF(PP_LINE):
+case YY_STATE_EOF(PP_PRAGMA):
 case YY_STATE_EOF(SQUOTE):
-#line 214 "parser.l"
+#line 220 "parser.l"
 {
 				if (import_stack_ptr)
 					return aEOF;
 				else yyterminate();
 			}
 	YY_BREAK
-case 36:
+case 39:
 YY_RULE_SETUP
-#line 219 "parser.l"
+#line 225 "parser.l"
 ECHO;
 	YY_BREAK
-#line 1268 "parser.yy.c"
+#line 1336 "parser.yy.c"
 
 	case YY_END_OF_BUFFER:
 		{
@@ -1556,7 +1624,7 @@
 		while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 			{
 			yy_current_state = (int) yy_def[yy_current_state];
-			if ( yy_current_state >= 148 )
+			if ( yy_current_state >= 174 )
 				yy_c = yy_meta[(unsigned int) yy_c];
 			}
 		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -1584,11 +1652,11 @@
 	while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 		{
 		yy_current_state = (int) yy_def[yy_current_state];
-		if ( yy_current_state >= 148 )
+		if ( yy_current_state >= 174 )
 			yy_c = yy_meta[(unsigned int) yy_c];
 		}
 	yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-	yy_is_jam = (yy_current_state == 147);
+	yy_is_jam = (yy_current_state == 173);
 
 	return yy_is_jam ? 0 : yy_current_state;
 }
@@ -2263,7 +2331,7 @@
 
 #define YYTABLES_NAME "yytables"
 
-#line 219 "parser.l"
+#line 225 "parser.l"
 
 
 
@@ -2474,7 +2542,7 @@
 	struct keyword key, *kwp;
 	key.kw = kw;
 	kwp = bsearch(&key, keywords, NKEYWORDS, sizeof(keywords[0]), kw_cmp_func);
-	if (kwp && (flag_is_rt || kwp->token != tNAMESPACE)) {
+	if (kwp && (do_rt_extension || kwp->token != tNAMESPACE)) {
 		parser_lval.str = xstrdup(kwp->kw);
 		return kwp->token;
 	}
diff --git a/mingw-w64-tools/widl/src/register.c b/mingw-w64-tools/widl/src/register.c
index d8b34d9..9a4f219 100644
--- a/mingw-w64-tools/widl/src/register.c
+++ b/mingw-w64-tools/widl/src/register.c
@@ -280,6 +280,8 @@
     const expr_t *lcid_expr = get_attrp( typelib->attrs, ATTR_LIBLCID );
     unsigned int version = get_attrv( typelib->attrs, ATTR_VERSION );
     unsigned int flags = 0;
+    char id_part[12] = "";
+    expr_t *expr;
 
     if (is_attr( typelib->attrs, ATTR_RESTRICTED )) flags |= 1; /* LIBFLAG_FRESTRICTED */
     if (is_attr( typelib->attrs, ATTR_CONTROL )) flags |= 2; /* LIBFLAG_FCONTROL */
@@ -295,8 +297,11 @@
     put_str( indent, "'%u.%u' = s '%s'\n",
              MAJORVERSION(version), MINORVERSION(version), descr ? descr : typelib->name );
     put_str( indent++, "{\n" );
-    put_str( indent, "'%x' { %s = s '%%MODULE%%' }\n",
-             lcid_expr ? lcid_expr->cval : 0, typelib_kind == SYS_WIN64 ? "win64" : "win32" );
+    expr = get_attrp( typelib->attrs, ATTR_ID );
+    if (expr)
+        sprintf(id_part, "\\%d", expr->cval);
+    put_str( indent, "'%x' { %s = s '%%MODULE%%%s' }\n",
+             lcid_expr ? lcid_expr->cval : 0, typelib_kind == SYS_WIN64 ? "win64" : "win32", id_part );
     put_str( indent, "FLAGS = s '%u'\n", flags );
     put_str( --indent, "}\n" );
     put_str( --indent, "}\n" );
diff --git a/mingw-w64-tools/widl/src/typegen.c b/mingw-w64-tools/widl/src/typegen.c
index 29ec15f..ea9bca6 100644
--- a/mingw-w64-tools/widl/src/typegen.c
+++ b/mingw-w64-tools/widl/src/typegen.c
@@ -864,7 +864,7 @@
     do { \
         if (file) \
             fprintf(file, "/* %2u */\n", typestring_offset); \
-        print_file((file), 2, "0x%02x,    /* " #fctype " */\n", RPC_##fctype); \
+        print_file((file), 2, "0x%02x,\t/* " #fctype " */\n", RPC_##fctype); \
     } \
     while (0)
 
@@ -1451,8 +1451,8 @@
         if (!is_new_style)
         {
             print_file(file, 0, "/* %u (void) */\n", *offset);
-            print_file(file, indent, "0x5b,    /* FC_END */\n");
-            print_file(file, indent, "0x5c,    /* FC_PAD */\n");
+            print_file(file, indent, "0x5b,\t/* FC_END */\n");
+            print_file(file, indent, "0x5c,\t/* FC_PAD */\n");
             *offset += 2;
         }
     }
@@ -2354,10 +2354,10 @@
 {
     if (*tfsoff % 2 == 0)
     {
-        print_file(file, 2, "0x%x,\t\t/* FC_PAD */\n", RPC_FC_PAD);
+        print_file(file, 2, "0x%x,\t/* FC_PAD */\n", RPC_FC_PAD);
         *tfsoff += 1;
     }
-    print_file(file, 2, "0x%x,\t\t/* FC_END */\n", RPC_FC_END);
+    print_file(file, 2, "0x%x,\t/* FC_END */\n", RPC_FC_END);
     *tfsoff += 1;
 }
 
@@ -2778,11 +2778,6 @@
             &offset_in_memory, &offset_in_buffer, typestring_offset);
 }
 
-int is_declptr(const type_t *t)
-{
-  return is_ptr(t) || (type_get_type(t) == TYPE_ARRAY && type_array_is_decl_as_ptr(t));
-}
-
 static unsigned int write_string_tfs(FILE *file, const attr_list_t *attrs,
                                      type_t *type, enum type_context context,
                                      const char *name, unsigned int *typestring_offset)
@@ -2846,7 +2841,7 @@
             WRITE_FCTYPE(file, FC_WSTRING, *typestring_offset);
         else
             WRITE_FCTYPE(file, FC_CSTRING, *typestring_offset);
-        print_file(file, 2, "0x%x, /* FC_PAD */\n", RPC_FC_PAD);
+        print_file(file, 2, "0x%x,\t/* FC_PAD */\n", RPC_FC_PAD);
         *typestring_offset += 2;
 
         print_file(file, 2, "NdrFcShort(0x%hx),\t/* %d */\n", (unsigned short)dim, dim);
@@ -2861,7 +2856,7 @@
             WRITE_FCTYPE(file, FC_C_WSTRING, *typestring_offset);
         else
             WRITE_FCTYPE(file, FC_C_CSTRING, *typestring_offset);
-        print_file(file, 2, "0x%x, /* FC_STRING_SIZED */\n", RPC_FC_STRING_SIZED);
+        print_file(file, 2, "0x%x,\t/* FC_STRING_SIZED */\n", RPC_FC_STRING_SIZED);
         *typestring_offset += 2;
 
         *typestring_offset += write_conf_or_var_desc(
@@ -2882,7 +2877,7 @@
             WRITE_FCTYPE(file, FC_C_WSTRING, *typestring_offset);
         else
             WRITE_FCTYPE(file, FC_C_CSTRING, *typestring_offset);
-        print_file(file, 2, "0x%x, /* FC_PAD */\n", RPC_FC_PAD);
+        print_file(file, 2, "0x%x,\t/* FC_PAD */\n", RPC_FC_PAD);
         *typestring_offset += 2;
 
         update_tfsoff(type, start_offset, file);
@@ -2968,11 +2963,11 @@
         if (type_has_pointers(type_array_get_element(type)) &&
             (type_array_is_decl_as_ptr(type) || !current_structure))
         {
-            print_file(file, 2, "0x%x, /* FC_PP */\n", RPC_FC_PP);
-            print_file(file, 2, "0x%x, /* FC_PAD */\n", RPC_FC_PAD);
+            print_file(file, 2, "0x%x,\t/* FC_PP */\n", RPC_FC_PP);
+            print_file(file, 2, "0x%x,\t/* FC_PAD */\n", RPC_FC_PAD);
             *typestring_offset += 2;
             write_pointer_description(file, type, typestring_offset);
-            print_file(file, 2, "0x%x, /* FC_END */\n", RPC_FC_END);
+            print_file(file, 2, "0x%x,\t/* FC_END */\n", RPC_FC_END);
             *typestring_offset += 1;
         }
 
@@ -3155,11 +3150,11 @@
              (fc == RPC_FC_CPSTRUCT) ||
              (fc == RPC_FC_CVSTRUCT && type_has_pointers(type)))
     {
-        print_file(file, 2, "0x%x, /* FC_PP */\n", RPC_FC_PP);
-        print_file(file, 2, "0x%x, /* FC_PAD */\n", RPC_FC_PAD);
+        print_file(file, 2, "0x%x,\t/* FC_PP */\n", RPC_FC_PP);
+        print_file(file, 2, "0x%x,\t/* FC_PAD */\n", RPC_FC_PAD);
         *tfsoff += 2;
         write_pointer_description(file, type, tfsoff);
-        print_file(file, 2, "0x%x, /* FC_END */\n", RPC_FC_END);
+        print_file(file, 2, "0x%x,\t/* FC_END */\n", RPC_FC_END);
         *tfsoff += 1;
     }
 
diff --git a/mingw-w64-tools/widl/src/typelib.c b/mingw-w64-tools/widl/src/typelib.c
index e3fc0b9..8632fdf 100644
--- a/mingw-w64-tools/widl/src/typelib.c
+++ b/mingw-w64-tools/widl/src/typelib.c
@@ -49,16 +49,6 @@
 
 static typelib_t *typelib;
 
-int is_ptr(const type_t *t)
-{
-    return type_get_type(t) == TYPE_POINTER;
-}
-
-int is_array(const type_t *t)
-{
-    return type_get_type(t) == TYPE_ARRAY;
-}
-
 /* List of oleauto types that should be recognized by name.
  * (most of) these seem to be intrinsic types in mktyplib.
  * This table MUST be alphabetically sorted on the kw field.
diff --git a/mingw-w64-tools/widl/src/typelib_struct.h b/mingw-w64-tools/widl/src/typelib_struct.h
index 79b86b9..42faac8 100644
--- a/mingw-w64-tools/widl/src/typelib_struct.h
+++ b/mingw-w64-tools/widl/src/typelib_struct.h
@@ -97,12 +97,12 @@
 /*2*/MSFT_pSeg pImpInfo;     /* table with info for imported types */
 /*3*/MSFT_pSeg pImpFiles;    /* import libraries */
 /*4*/MSFT_pSeg pRefTab;      /* References table */
-/*5*/MSFT_pSeg pLibtab;      /* always exists, always same size (0x80) */
-                             /* hash table w offsets to guid????? */
+/*5*/MSFT_pSeg pGuidHashTab; /* always exists, always same size (0x80) */
+                             /* hash table with offsets to guid */
 /*6*/MSFT_pSeg pGuidTab;     /* all guids are stored here together with  */
                              /* offset in some table???? */
-/*7*/MSFT_pSeg res07;        /* always created, always same size (0x200) */
-                             /* purpose largely unknown */
+/*7*/MSFT_pSeg pNameHashTab; /* always created, always same size (0x200) */
+                             /* hash table with offsets to names */
 /*8*/MSFT_pSeg pNametab;     /* name tables */
 /*9*/MSFT_pSeg pStringtab;   /* string table */
 /*A*/MSFT_pSeg pTypdescTab;  /* table with type descriptors */
diff --git a/mingw-w64-tools/widl/src/typetree.h b/mingw-w64-tools/widl/src/typetree.h
index 1e7ed88..8ba348b 100644
--- a/mingw-w64-tools/widl/src/typetree.h
+++ b/mingw-w64-tools/widl/src/typetree.h
@@ -85,6 +85,13 @@
     return type->details.structure->fields;
 }
 
+static inline var_list_t *type_union_get_fields(const type_t *type)
+{
+    type = type_get_real_type(type);
+    assert(type_get_type(type) == TYPE_UNION);
+    return type->details.structure->fields;
+}
+
 static inline var_list_t *type_function_get_args(const type_t *type)
 {
     type = type_get_real_type(type);
diff --git a/mingw-w64-tools/widl/src/widl.c b/mingw-w64-tools/widl/src/widl.c
index 64319ed..dfe2341 100644
--- a/mingw-w64-tools/widl/src/widl.c
+++ b/mingw-w64-tools/widl/src/widl.c
@@ -72,12 +72,12 @@
 "   --prefix-client=p  Prefix names of client stubs with 'p'\n"
 "   --prefix-server=p  Prefix names of server functions with 'p'\n"
 "   -r                 Generate registration script\n"
+"   --rt               Enable WinRT's language extensions for IDL\n"
 "   -s                 Generate server stub\n"
 "   -t                 Generate typelib\n"
 "   -u                 Generate interface identifiers file\n"
 "   -V                 Print version and exit\n"
 "   -W                 Enable pedantic warnings\n"
-"   --rt               Enable RT's extensions\n"
 "   --win32            Only generate 32-bit code\n"
 "   --win64            Only generate 64-bit code\n"
 "   --win32-align n    Set win32 structure alignment to 'n'\n"
@@ -114,7 +114,7 @@
 int do_win64 = 1;
 int win32_packing = 8;
 int win64_packing = 8;
-int flag_is_rt = 0;
+int do_rt_extension = 0;
 static enum stub_mode stub_mode = MODE_Os;
 
 char *input_name;
@@ -141,7 +141,7 @@
 
 static FILE *idfile;
 
-unsigned int pointer_size = sizeof (void*);
+unsigned int pointer_size = sizeof(void*);
 syskind_t typelib_kind = sizeof(void*) == 8 ? SYS_WIN64 : SYS_WIN32;
 
 time_t now;
@@ -400,7 +400,7 @@
 
   dlldata = fopen(dlldata_name, "r");
   if (dlldata) {
-    static char marker[] = "REFERENCE_PROXY_FILE";
+    static const char marker[] = "REFERENCE_PROXY_FILE";
     static const char delegation_define[] = "#define PROXY_DELEGATION";
     char *line = NULL;
     size_t len = 0;
@@ -578,7 +578,7 @@
       fprintf(stderr, "%s", usage);
       return 0;
     case RT_OPTION:
-      flag_is_rt = 1;
+      do_rt_extension = 1;
       break;
     case WIN32_OPTION:
       do_win32 = 1;
@@ -635,7 +635,6 @@
     case 'm':
       if (!strcmp( optarg, "32" )) typelib_kind = SYS_WIN32;
       else if (!strcmp( optarg, "64" )) typelib_kind = SYS_WIN64;
-      else error( "Invalid -m argument '%s'\n", optarg );
       break;
     case 'N':
       no_preprocess = 1;
@@ -699,14 +698,30 @@
   wpp_add_include_path(DEFAULT_INCLUDE_DIR);
 #endif
 
+  /* if nothing specified, try to guess output type from the output file name */
+  if (output_name && do_everything && !do_header && !do_typelib && !do_proxies &&
+      !do_client && !do_server && !do_regscript && !do_idfile && !do_dlldata)
+  {
+      do_everything = 0;
+      if (strendswith( output_name, ".h" )) do_header = 1;
+      else if (strendswith( output_name, ".tlb" )) do_typelib = 1;
+      else if (strendswith( output_name, "_p.c" )) do_proxies = 1;
+      else if (strendswith( output_name, "_c.c" )) do_client = 1;
+      else if (strendswith( output_name, "_s.c" )) do_server = 1;
+      else if (strendswith( output_name, "_i.c" )) do_idfile = 1;
+      else if (strendswith( output_name, "_r.res" )) do_regscript = 1;
+      else if (strendswith( output_name, "_t.res" )) do_typelib = 1;
+      else if (strendswith( output_name, "dlldata.c" )) do_dlldata = 1;
+      else do_everything = 1;
+  }
+
   if(do_everything) {
     set_everything(TRUE);
   }
 
   if (!output_name) output_name = dup_basename(input_name, ".idl");
 
-  if (!do_everything &&
-      do_header + do_typelib + do_proxies + do_client +
+  if (do_header + do_typelib + do_proxies + do_client +
       do_server + do_regscript + do_idfile + do_dlldata == 1)
   {
       if (do_header) header_name = output_name;
diff --git a/mingw-w64-tools/widl/src/widl.h b/mingw-w64-tools/widl/src/widl.h
index b8ab374..9e09f76 100644
--- a/mingw-w64-tools/widl/src/widl.h
+++ b/mingw-w64-tools/widl/src/widl.h
@@ -49,7 +49,7 @@
 extern int do_win64;
 extern int win32_packing;
 extern int win64_packing;
-extern int flag_is_rt;
+extern int do_rt_extension;
 
 extern char *input_name;
 extern char *input_idl_name;
diff --git a/mingw-w64-tools/widl/src/widltypes.h b/mingw-w64-tools/widl/src/widltypes.h
index 4aa46d7..47c8844 100644
--- a/mingw-w64-tools/widl/src/widltypes.h
+++ b/mingw-w64-tools/widl/src/widltypes.h
@@ -243,6 +243,7 @@
     STMT_TYPEDEF,
     STMT_IMPORT,
     STMT_IMPORTLIB,
+    STMT_PRAGMA,
     STMT_CPPQUOTE
 };
 
@@ -514,7 +515,6 @@
 struct _statement_t {
     struct list entry;
     enum statement_type type;
-    const char *nspace;
     union
     {
         ifref_t iface;
@@ -544,9 +544,6 @@
 void set_all_tfswrite(int val);
 void clear_all_offsets(void);
 
-int is_ptr(const type_t *t);
-int is_array(const type_t *t);
-
 #define tsENUM   1
 #define tsSTRUCT 2
 #define tsUNION  3
diff --git a/mingw-w64-tools/widl/src/write_msft.c b/mingw-w64-tools/widl/src/write_msft.c
index 53e1feb..1a13f67 100644
--- a/mingw-w64-tools/widl/src/write_msft.c
+++ b/mingw-w64-tools/widl/src/write_msft.c
@@ -174,7 +174,7 @@
 
     segdir = &typelib->typelib_segdir[MSFT_SEG_TYPEINFO];
 
-    for (i = 0; i < 15; i++) {
+    for (i = 0; i < MSFT_SEG_MAX; i++) {
 	segdir[i].offset = -1;
 	segdir[i].length = 0;
 	segdir[i].res08 = -1;
@@ -743,6 +743,7 @@
     return NULL;
 }
 
+static void add_union_typeinfo(msft_typelib_t *typelib, type_t *structure);
 static void add_structure_typeinfo(msft_typelib_t *typelib, type_t *structure);
 static void add_interface_typeinfo(msft_typelib_t *typelib, type_t *interface);
 static void add_enum_typeinfo(msft_typelib_t *typelib, type_t *enumeration);
@@ -827,7 +828,6 @@
     case VT_UI4:
     case VT_R4:
     case VT_ERROR:
-    case VT_BSTR:
     case VT_HRESULT:
 	*encoded_type = default_type;
 	*width = 4;
@@ -863,8 +863,9 @@
 
     case VT_UNKNOWN:
     case VT_DISPATCH:
+    case VT_BSTR:
         *encoded_type = default_type;
-        *width = 4;
+        *width = pointer_size;
         *alignment = 4;
         break;
 
@@ -875,7 +876,7 @@
     case VT_LPSTR:
     case VT_LPWSTR:
         *encoded_type = 0xfffe0000 | vt;
-        *width = 4;
+        *width = pointer_size;
         *alignment = 4;
         break;
 
@@ -898,7 +899,7 @@
         if(next_vt == VT_DISPATCH || next_vt == VT_UNKNOWN) {
             chat("encode_type: skipping ptr\n");
             *encoded_type = target_type;
-            *width = 4;
+            *width = pointer_size;
             *alignment = 4;
             *decoded_size = child_size;
             break;
@@ -928,13 +929,12 @@
 
 	*encoded_type = typeoffset;
 
-	*width = 4;
+	*width = pointer_size;
 	*alignment = 4;
 	*decoded_size = 8 /*sizeof(TYPEDESC)*/ + child_size;
         break;
     }
 
-
     case VT_SAFEARRAY:
 	{
 	type_t *element_type = type_alias_get_aliasee(type_array_get_element(type));
@@ -966,13 +966,12 @@
 
 	*encoded_type = typeoffset;
 
-	*width = 4;
+	*width = pointer_size;
 	*alignment = 4;
 	*decoded_size = 8 /*sizeof(TYPEDESC)*/ + child_size;
 	break;
 	}
 
-
     case VT_USERDEFINED:
       {
         int typeinfo_offset;
@@ -990,6 +989,9 @@
             case TYPE_STRUCT:
                 add_structure_typeinfo(typelib, type);
                 break;
+            case TYPE_UNION:
+                add_union_typeinfo(typelib, type);
+                break;
             case TYPE_INTERFACE:
                 add_interface_typeinfo(typelib, type);
                 break;
@@ -1119,7 +1121,7 @@
             chat("encode_var: skipping ptr\n");
             *encoded_type = target_type;
             *decoded_size = child_size;
-            *width = 4;
+            *width = pointer_size;
             *alignment = 4;
             return 0;
         }
@@ -1148,7 +1150,7 @@
 
 	*encoded_type = typeoffset;
 
-	*width = 4;
+	*width = pointer_size;
 	*alignment = 4;
 	*decoded_size = 8 /*sizeof(TYPEDESC)*/ + child_size;
         return 0;
@@ -1193,6 +1195,8 @@
     case VT_UINT:
     case VT_HRESULT:
     case VT_PTR:
+    case VT_UNKNOWN:
+    case VT_DISPATCH:
       {
         const unsigned int lv = get_ulong_val(*(const unsigned int *)value, vt);
         if((lv & 0x3ffffff) == lv) {
@@ -1232,7 +1236,7 @@
 }
 
 static HRESULT set_custdata(msft_typelib_t *typelib, REFGUID guid,
-                            int vt, int value, int *offset)
+                            int vt, const void *value, int *offset)
 {
     MSFT_GuidEntry guidentry;
     int guidoffset;
@@ -1246,7 +1250,7 @@
     guidentry.next_hash = -1;
 
     guidoffset = ctl2_alloc_guid(typelib, &guidentry);
-    write_value(typelib, &data_out, vt, &value);
+    write_value(typelib, &data_out, vt, value);
 
     custoffset = ctl2_alloc_segment(typelib, MSFT_SEG_CUSTDATAGUID, 12, 0);
 
@@ -1259,6 +1263,33 @@
     return S_OK;
 }
 
+/* It's possible to have a default value for pointer arguments too.
+   In this case default value has a referenced type, e.g.
+   'LONG*' argument gets VT_I4, 'DOUBLE*' - VT_R8. IUnknown* and IDispatch*
+   are recognised too and stored as VT_UNKNOWN and VT_DISPATCH.
+   But IUnknown/IDispatch arguments can only have default value of 0
+   (or expression that resolves to zero) while other pointers can have
+   any default value. */
+static int get_defaultvalue_vt(type_t *type)
+{
+    int vt = get_type_vt(type);
+    if (type_get_type(type) == TYPE_ENUM)
+        vt = VT_I4;
+    else
+   {
+        vt = get_type_vt(type);
+        if (vt == VT_PTR && is_ptr(type)) {
+            vt = get_type_vt(type_pointer_get_ref(type));
+            /* The only acceptable value for pointers to non-basic types
+               is NULL, it's stored as VT_I4 for both 32 and 64 bit typelibs. */
+            if (vt == VT_USERDEFINED)
+                vt = VT_I4;
+        }
+    }
+
+    return vt;
+}
+
 static HRESULT add_func_desc(msft_typeinfo_t* typeinfo, var_t *func, int index)
 {
     int offset, name_offset;
@@ -1483,10 +1514,7 @@
               {
                 int vt;
                 expr_t *expr = (expr_t *)attr->u.pval;
-                if (type_get_type(arg->type) == TYPE_ENUM)
-                    vt = VT_INT;
-                else
-                    vt = get_type_vt(arg->type);
+                vt = get_defaultvalue_vt(arg->type);
                 paramflags |= 0x30; /* PARAMFLAG_FHASDEFAULT | PARAMFLAG_FOPT */
                 if (expr->type == EXPR_STRLIT || expr->type == EXPR_WSTRLIT)
                 {
@@ -1728,7 +1756,7 @@
         break;
     case TKIND_DISPATCH:
         var_kind = 3; /* VAR_DISPATCH */
-        typeinfo->datawidth = 4;
+        typeinfo->datawidth = pointer_size;
         var_alignment = 4;
         break;
     default:
@@ -1981,7 +2009,7 @@
     msft_typeinfo = create_msft_typeinfo(typelib, TKIND_DISPATCH, dispinterface->name,
                                          dispinterface->attrs);
 
-    msft_typeinfo->typeinfo->size = 4;
+    msft_typeinfo->typeinfo->size = pointer_size;
     msft_typeinfo->typeinfo->typekind |= 0x2100;
 
     msft_typeinfo->typeinfo->flags |= 0x1000; /* TYPEFLAG_FDISPATCHABLE */
@@ -2046,7 +2074,7 @@
 
     interface->typelib_idx = typelib->typelib_header.nrtypeinfos;
     msft_typeinfo = create_msft_typeinfo(typelib, TKIND_INTERFACE, interface->name, interface->attrs);
-    msft_typeinfo->typeinfo->size = 4;
+    msft_typeinfo->typeinfo->size = pointer_size;
     msft_typeinfo->typeinfo->typekind |= 0x2200;
 
     for (derived = inherit; derived; derived = type_iface_get_inherit(derived))
@@ -2079,6 +2107,24 @@
     }
 }
 
+static void add_union_typeinfo(msft_typelib_t *typelib, type_t *structure)
+{
+    int idx = 0;
+    var_t *cur;
+    msft_typeinfo_t *msft_typeinfo;
+
+    if (-1 < structure->typelib_idx)
+        return;
+
+    structure->typelib_idx = typelib->typelib_header.nrtypeinfos;
+    msft_typeinfo = create_msft_typeinfo(typelib, TKIND_UNION, structure->name, structure->attrs);
+    msft_typeinfo->typeinfo->size = 0;
+
+    if (type_union_get_cases(structure))
+        LIST_FOR_EACH_ENTRY( cur, type_union_get_cases(structure), var_t, entry )
+            add_var_desc(msft_typeinfo, idx++, cur);
+}
+
 static void add_structure_typeinfo(msft_typelib_t *typelib, type_t *structure)
 {
     int idx = 0;
@@ -2103,6 +2149,9 @@
     var_t *cur;
     msft_typeinfo_t *msft_typeinfo;
 
+    if (-1 < enumeration->typelib_idx)
+        return;
+
     enumeration->typelib_idx = typelib->typelib_header.nrtypeinfos;
     msft_typeinfo = create_msft_typeinfo(typelib, TKIND_ENUM, enumeration->name, enumeration->attrs);
     msft_typeinfo->typeinfo->size = 0;
@@ -2210,7 +2259,7 @@
         first_source->flags |= 0x1;
 
     msft_typeinfo->typeinfo->cImplTypes = num_ifaces;
-    msft_typeinfo->typeinfo->size = 4;
+    msft_typeinfo->typeinfo->size = pointer_size;
     msft_typeinfo->typeinfo->typekind |= 0x2200;
 }
 
@@ -2245,6 +2294,9 @@
     case TYPE_STRUCT:
         add_structure_typeinfo(typelib, type);
         break;
+    case TYPE_UNION:
+        add_union_typeinfo(typelib, type);
+        break;
     case TYPE_ENUM:
         add_enum_typeinfo(typelib, type);
         break;
@@ -2266,6 +2318,7 @@
     switch(stmt->type) {
     case STMT_LIBRARY:
     case STMT_IMPORT:
+    case STMT_PRAGMA:
     case STMT_CPPQUOTE:
     case STMT_DECLARATION:
         /* not included in typelib */
@@ -2566,9 +2619,11 @@
     const statement_t *stmt;
     time_t cur_time;
     char *time_override;
-    unsigned int version = 5 << 24 | 1 << 16 | 164; /* 5.01.0164 */
-    GUID midl_time_guid    = {0xde77ba63,0x517c,0x11d1,{0xa2,0xda,0x00,0x00,0xf8,0x77,0x3c,0xe9}}; 
-    GUID midl_version_guid = {0xde77ba64,0x517c,0x11d1,{0xa2,0xda,0x00,0x00,0xf8,0x77,0x3c,0xe9}}; 
+    unsigned int version = 7 << 24 | 555; /* 7.00.0555 */
+    GUID midl_time_guid    = {0xde77ba63,0x517c,0x11d1,{0xa2,0xda,0x00,0x00,0xf8,0x77,0x3c,0xe9}};
+    GUID midl_version_guid = {0xde77ba64,0x517c,0x11d1,{0xa2,0xda,0x00,0x00,0xf8,0x77,0x3c,0xe9}};
+    GUID midl_info_guid = {0xde77ba65,0x517c,0x11d1,{0xa2,0xda,0x00,0x00,0xf8,0x77,0x3c,0xe9}};
+    char info_string[128];
 
     pointer_size = (typelib_kind == SYS_WIN64) ? 8 : 4;
 
@@ -2615,8 +2670,10 @@
        and midl's version number */
     time_override = getenv( "WIDL_TIME_OVERRIDE");
     cur_time = time_override ? atol( time_override) : time(NULL);
-    set_custdata(msft, &midl_time_guid, VT_UI4, cur_time, &msft->typelib_header.CustomDataOffset);
-    set_custdata(msft, &midl_version_guid, VT_UI4, version, &msft->typelib_header.CustomDataOffset);
+    sprintf(info_string, "Created by WIDL version %s at %s\n", PACKAGE_VERSION, ctime(&cur_time));
+    set_custdata(msft, &midl_info_guid, VT_BSTR, info_string, &msft->typelib_header.CustomDataOffset);
+    set_custdata(msft, &midl_time_guid, VT_UI4, &cur_time, &msft->typelib_header.CustomDataOffset);
+    set_custdata(msft, &midl_version_guid, VT_UI4, &version, &msft->typelib_header.CustomDataOffset);
 
     if (typelib->stmts)
         LIST_FOR_EACH_ENTRY( stmt, typelib->stmts, const statement_t, entry )