]> gcc.gnu.org Git - gcc.git/commitdiff
c-common.c (declare_function_name): Declare predefinied variable `__func__'.
authorUlrich Drepper <drepper@cygnus.com>
Tue, 1 Dec 1998 21:05:17 +0000 (21:05 +0000)
committerRichard Henderson <rth@gcc.gnu.org>
Tue, 1 Dec 1998 21:05:17 +0000 (13:05 -0800)
        * c-common.c (declare_function_name): Declare predefinied variable
        `__func__'.
        * c-decl.c (flag_isoc9x): Set to 1 by default.
        (c_decode_option): Handle -std= option.  Remove -flang-isoc9x.
        (grokdeclarator): Always emit warning about implicit int for ISO C 9x.
        * c-parse.in: Allow constructors in ISO C 9x.
        Rewrite designator list handling.
        Allow [*] parameters.
        Don't warn about comma at end of enum definition for ISO C 9x.
        * cccp.c (c9x): New variable.
        (rest_extension): New variable.
        (print_help): Document new -std= option.
        (main): Recognize -std= option.  Set c9x appropriately.
        (create_definition): Recognize ISO C 9x vararg macros.
        * gcc.c (default_compilers): Adjust specs for -std options.
        (option_map): Add --std.
        (display_help): Document -std.
        * toplev.c (documented_lang_options): Add -std and remove
        -flang-isoc9x.
        * c-lex.c (yylex): Recognize hex FP constants and call REAL_VALUE_ATOF
        or REAL_VALUE_HTOF based on base of the constants.
        * fold-const.c (real_hex_to_f): New function.  Replacement function
        for hex FP conversion if REAL_ARITHMETIC is not defined.
        * real.c (asctoeg): Add handling of hex FP constants.
        * real.h: Define REAL_VALUE_HTOF if necessary using ereal_atof or
        real_hex_to_f.

Co-Authored-By: Richard Henderson <rth@cygnus.com>
Co-Authored-By: Stephen L Moshier <moshier@world.std.com>
From-SVN: r24049

17 files changed:
gcc/ChangeLog
gcc/c-common.c
gcc/c-decl.c
gcc/c-lex.c
gcc/c-parse.c
gcc/c-parse.in
gcc/c-parse.y
gcc/cccp.c
gcc/extend.texi
gcc/fold-const.c
gcc/gcc.c
gcc/objc/objc-parse.c
gcc/objc/objc-parse.y
gcc/real.c
gcc/real.h
gcc/reorg.c
gcc/toplev.c

index c239f45e906fdbd194b288ec6b6977ca4bb1b827..8f571a34ff1e190557ed622fbd7556e48b3e6e47 100644 (file)
@@ -1,3 +1,40 @@
+Tue Dec  1 20:49:49 1998  Ulrich Drepper  <drepper@cygnus.com>
+                         Stephen L Moshier  <moshier@world.std.com>
+                         Richard Henderson  <rth@cygnus.com>
+
+       * c-common.c (declare_function_name): Declare predefinied variable
+       `__func__'.
+
+       * c-decl.c (flag_isoc9x): Set to 1 by default.
+       (c_decode_option): Handle -std= option.  Remove -flang-isoc9x.
+       (grokdeclarator): Always emit warning about implicit int for ISO C 9x.
+
+       * c-parse.in: Allow constructors in ISO C 9x.
+       Rewrite designator list handling.
+       Allow [*] parameters.
+       Don't warn about comma at end of enum definition for ISO C 9x.
+
+       * cccp.c (c9x): New variable.
+       (rest_extension): New variable.
+       (print_help): Document new -std= option.
+       (main): Recognize -std= option.  Set c9x appropriately.
+       (create_definition): Recognize ISO C 9x vararg macros.
+
+       * gcc.c (default_compilers): Adjust specs for -std options.
+       (option_map): Add --std.
+       (display_help): Document -std.
+
+       * toplev.c (documented_lang_options): Add -std and remove
+       -flang-isoc9x.
+        
+       * c-lex.c (yylex): Recognize hex FP constants and call REAL_VALUE_ATOF
+       or REAL_VALUE_HTOF based on base of the constants.
+       * fold-const.c (real_hex_to_f): New function.  Replacement function
+       for hex FP conversion if REAL_ARITHMETIC is not defined.
+       * real.c (asctoeg): Add handling of hex FP constants.
+       * real.h: Define REAL_VALUE_HTOF if necessary using ereal_atof or
+       real_hex_to_f.
+
 Tue Dec  1 16:45:49 1998  Stan Cox  <scox@cygnus.com>
 
        * mips.md (divmodsi4*, divmoddi4*, udivmodsi4*, udivmoddi4): Add
index 653af682d70d9ef54f4d4dde2cfb235b1765ce76..cfa4b78ba2aecff85d60dc6cbff1591c52639e1b 100644 (file)
@@ -164,7 +164,7 @@ c_expand_start_else ()
   expand_start_else ();
 }
 
-/* Make bindings for __FUNCTION__ and __PRETTY_FUNCTION__.  */
+/* Make bindings for __FUNCTION__, __PRETTY_FUNCTION__, and __func__.  */
 
 void
 declare_function_name ()
@@ -188,6 +188,9 @@ declare_function_name ()
 
   declare_hidden_char_array ("__FUNCTION__", name);
   declare_hidden_char_array ("__PRETTY_FUNCTION__", printable_name);
+  /* The ISO C people "of course" couldn't use __FUNCTION__ in the
+     ISO C 9x standard; instead a new variable is invented.  */
+  declare_hidden_char_array ("__func__", name);
 }
 
 static void
index 91e35104a110a9cfb3ae17967283151cb6576e26..c089836364246a98cd5e97ff1abf0311063f1375 100644 (file)
@@ -470,7 +470,7 @@ int flag_traditional;
 
 /* Nonzero means use the ISO C9x dialect of C.  */
 
-int flag_isoc9x = 0;
+int flag_isoc9x = 1;
 
 /* Nonzero means that we have builtin functions, and main is an int */
 
@@ -652,8 +652,54 @@ c_decode_option (argc, argv)
       flag_traditional = 0;
       flag_writable_strings = 0;
     }
-  else if (!strcmp (p, "-flang-isoc9x"))
-    flag_isoc9x = 1;
+  else if (!strncmp (p, "-std=", 5))
+    {
+      /* Select the appropriate language standard.  We currently
+        recognize:
+        -std=iso9899:1990      same as -ansi
+        -std=gnu               default
+        -std=iso9899:199409    ISO C as modified in amend. 1
+        -std=iso9899:199x      ISO C 9x
+        -std=c89               same as -std=iso9899:1990
+        -std=c9x               same as -std=iso9899:199x
+      */
+      const char *argstart = &p[5];
+
+      if (!strcmp (argstart, "iso9899:1990")
+         || !strcmp (argstart, "c89"))
+       {
+       iso_1990:
+         flag_traditional = 0;
+         flag_writable_strings = 0;
+         flag_no_asm = 1;
+         flag_no_nonansi_builtin = 1;
+         flag_isoc9x = 0;
+       }
+      else if (!strcmp (argstart, "iso9899:199409"))
+       {
+         /* ??? The changes since ISO C 1990 are not supported.  */
+         goto iso_1990;
+       }
+      else if (!strcmp (argstart, "iso9899:199x")
+              || !strcmp (argstart, "c9x"))
+       {
+         flag_traditional = 0;
+         flag_writable_strings = 0;
+         flag_no_asm = 1;
+         flag_no_nonansi_builtin = 1;
+         flag_isoc9x = 1;
+       }
+      else if (!strcmp (argstart, "gnu"))
+       {
+         flag_traditional = 0;
+         flag_writable_strings = 0;
+         flag_no_asm = 0;
+         flag_no_nonansi_builtin = 0;
+         flag_isoc9x = 1;
+       }
+      else
+       error ("unknown C standard `%s'", argstart);
+    }
   else if (!strcmp (p, "-fdollars-in-identifiers"))
     dollars_in_ident = 1;
   else if (!strcmp (p, "-fno-dollars-in-identifiers"))
@@ -703,7 +749,7 @@ c_decode_option (argc, argv)
   else if (!strcmp (p, "-fident"))
     flag_no_ident = 0;
   else if (!strcmp (p, "-ansi"))
-    flag_no_asm = 1, flag_no_nonansi_builtin = 1;
+    goto iso_1990;
   else if (!strcmp (p, "-Werror-implicit-function-declaration"))
     mesg_implicit_function_declaration = 2;
   else if (!strcmp (p, "-Wimplicit-function-declaration"))
@@ -4492,13 +4538,12 @@ grokdeclarator (declarator, declspecs, decl_context, initialized)
          && ! (specbits & (1 << (int) RID_TYPEDEF) && initialized)
          && ! (in_system_header && ! allocation_temporary_p ()))
        {
-         /* C9x will probably require a diagnostic here.
-            For now, issue a warning if -Wreturn-type and this is a function,
-            or if -Wimplicit; prefer the former warning since it is more
-            explicit.  */
+         /* Issue a warning if this is an ISO C 9x program or if -Wreturn-type
+            and this is a function, or if -Wimplicit; prefer the former
+            warning since it is more explicit.  */
          if ((warn_implicit_int || warn_return_type) && funcdef_flag)
            warn_about_return_type = 1;
-         else if (warn_implicit_int)
+         else if (warn_implicit_int || flag_isoc9x)
            warning ("type defaults to `int' in declaration of `%s'", name);
        }
 
index 934f251b354ea9dafdc10edd1025c07d2de2e077..8ba053f55f12d4ba9ed75fd1012112f08f9e3a3e 100644 (file)
@@ -1333,8 +1333,8 @@ yylex ()
        int parts[TOTAL_PARTS];
        int overflow = 0;
 
-       enum anon1 { NOT_FLOAT, AFTER_POINT, TOO_MANY_POINTS} floatflag
-         = NOT_FLOAT;
+       enum anon1 { NOT_FLOAT, AFTER_POINT, TOO_MANY_POINTS, AFTER_EXPON}
+         floatflag = NOT_FLOAT;
 
        for (count = 0; count < TOTAL_PARTS; count++)
          parts[count] = 0;
@@ -1370,12 +1370,12 @@ yylex ()
          {
            if (c == '.')
              {
-               if (base == 16)
+               if (base == 16 && pedantic)
                  error ("floating constant may not be in radix 16");
                if (floatflag == TOO_MANY_POINTS)
                  /* We have already emitted an error.  Don't need another.  */
                  ;
-               else if (floatflag == AFTER_POINT)
+               else if (floatflag == AFTER_POINT || floatflag == AFTER_EXPON)
                  {
                    error ("malformed floating constant");
                    floatflag = TOO_MANY_POINTS;
@@ -1386,6 +1386,7 @@ yylex ()
                else
                  floatflag = AFTER_POINT;
 
+               if (base == 8)
                base = 10;
                *p++ = c = GETC();
                /* Accept '.' as the start of a floating-point number
@@ -1425,12 +1426,17 @@ yylex ()
                    if (c == 'e' || c == 'E')
                      {
                        base = 10;
-                       floatflag = AFTER_POINT;
+                       floatflag = AFTER_EXPON;
                        break;   /* start of exponent */
                      }
                    error ("nondigits in number and not hexadecimal");
                    c = 0;
                  }
+               else if (base == 16 && (c == 'p' || c == 'P'))
+                 {
+                   floatflag = AFTER_EXPON;
+                   break;   /* start of exponent */
+                 }
                else if (c >= 'a')
                  {
                    c = c - 'a' + 10;
@@ -1487,7 +1493,8 @@ yylex ()
 
            /* Read explicit exponent if any, and put it in tokenbuf.  */
 
-           if ((c == 'e') || (c == 'E'))
+           if ((base == 10 && ((c == 'e') || (c == 'E')))
+               || (base == 16 && (c == 'p' || c == 'P')))
              {
                if (p >= token_buffer + maxtoken - 3)
                  p = extend_token_buffer (p);
@@ -1498,6 +1505,7 @@ yylex ()
                    *p++ = c;
                    c = GETC();
                  }
+               /* Exponent is decimal, even if string is a hex float.  */
                if (! ISDIGIT (c))
                  error ("floating constant exponent has no digits");
                while (ISDIGIT (c))
@@ -1508,6 +1516,8 @@ yylex ()
                    c = GETC();
                  }
              }
+           if (base == 16 && floatflag != AFTER_EXPON)
+             error ("hexadecimal floating constant has no exponent");
 
            *p = 0;
 
@@ -1580,10 +1590,13 @@ yylex ()
 
                    type = float_type_node;
                    errno = 0;
+                   if (base == 16)
+                     value = REAL_VALUE_HTOF (copy, TYPE_MODE (type));
+                   else
                    value = REAL_VALUE_ATOF (copy, TYPE_MODE (type));
                    conversion_errno = errno;
                    /* A diagnostic is required here by some ANSI C testsuites.
-                      This is not pedwarn, become some people don't want
+                      This is not pedwarn, because some people don't want
                       an error for this.  */
                    if (REAL_VALUE_ISINF (value) && pedantic)
                      warning ("floating point number exceeds range of `float'");
@@ -1592,6 +1605,9 @@ yylex ()
                  {
                    type = long_double_type_node;
                    errno = 0;
+                   if (base == 16)
+                     value = REAL_VALUE_HTOF (copy, TYPE_MODE (type));
+                   else
                    value = REAL_VALUE_ATOF (copy, TYPE_MODE (type));
                    conversion_errno = errno;
                    if (REAL_VALUE_ISINF (value) && pedantic)
@@ -1600,6 +1616,9 @@ yylex ()
                else
                  {
                    errno = 0;
+                   if (base == 16)
+                     value = REAL_VALUE_HTOF (copy, TYPE_MODE (type));
+                   else
                    value = REAL_VALUE_ATOF (copy, TYPE_MODE (type));
                    conversion_errno = errno;
                    if (REAL_VALUE_ISINF (value) && pedantic)
index c20d2a00511ae49d38b73734e0e61ec93801e0f6..47e11a6e171f2714cef112146ff0665570627d92 100644 (file)
@@ -138,7 +138,7 @@ extern void yyprint                 PROTO ((FILE *, int, YYSTYPE));
 #define        YYFLAG          -32768
 #define        YYNTBASE        84
 
-#define YYTRANSLATE(x) ((unsigned)(x) <= 316 ? yytranslate[x] : 242)
+#define YYTRANSLATE(x) ((unsigned)(x) <= 316 ? yytranslate[x] : 241)
 
 static const char yytranslate[] = {     0,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -196,49 +196,49 @@ static const short yyprhs[] = {     0,
    488,   492,   493,   498,   499,   506,   510,   511,   518,   522,
    523,   525,   527,   530,   537,   539,   543,   544,   546,   551,
    558,   563,   565,   567,   569,   571,   573,   574,   579,   581,
-   582,   585,   587,   591,   593,   594,   599,   601,   602,   611,
-   612,   619,   620,   626,   627,   632,   633,   639,   640,   641,
-   647,   648,   649,   655,   657,   659,   663,   667,   672,   676,
-   680,   684,   686,   690,   695,   699,   703,   707,   709,   713,
-   717,   721,   726,   730,   734,   736,   738,   741,   743,   746,
-   748,   751,   752,   760,   766,   769,   770,   778,   784,   787,
-   788,   797,   798,   806,   809,   810,   812,   813,   815,   817,
-   820,   821,   825,   828,   832,   834,   838,   840,   842,   845,
-   847,   851,   856,   863,   869,   871,   875,   877,   879,   883,
-   886,   889,   890,   892,   894,   897,   898,   901,   905,   909,
-   912,   916,   921,   925,   928,   932,   935,   937,   939,   942,
-   945,   946,   948,   951,   952,   953,   955,   957,   960,   964,
-   966,   969,   971,   974,   981,   987,   993,   996,   999,  1004,
-  1005,  1010,  1011,  1012,  1016,  1021,  1025,  1027,  1029,  1031,
-  1033,  1036,  1037,  1042,  1044,  1048,  1049,  1050,  1058,  1064,
-  1067,  1068,  1069,  1070,  1083,  1084,  1091,  1094,  1097,  1100,
-  1104,  1111,  1120,  1131,  1144,  1148,  1153,  1155,  1157,  1158,
-  1165,  1169,  1175,  1178,  1181,  1182,  1184,  1185,  1187,  1188,
-  1190,  1192,  1196,  1201,  1203,  1207,  1208,  1211,  1214,  1215,
-  1220,  1223,  1224,  1226,  1228,  1232,  1234,  1238,  1243,  1248,
-  1253,  1258,  1263,  1264,  1267,  1269,  1272,  1274,  1278,  1280,
-  1284
+   582,   585,   587,   591,   595,   598,   599,   604,   606,   607,
+   612,   614,   616,   618,   621,   624,   630,   634,   635,   636,
+   642,   643,   644,   650,   652,   654,   658,   662,   667,   671,
+   675,   679,   681,   685,   690,   695,   699,   703,   707,   709,
+   713,   717,   721,   726,   731,   735,   739,   741,   743,   746,
+   748,   751,   753,   756,   757,   765,   771,   774,   775,   783,
+   789,   792,   793,   802,   803,   811,   814,   815,   817,   818,
+   820,   822,   825,   826,   830,   833,   837,   839,   843,   845,
+   847,   850,   852,   856,   861,   868,   874,   876,   880,   882,
+   884,   888,   891,   894,   895,   897,   899,   902,   903,   906,
+   910,   914,   917,   921,   926,   930,   933,   937,   940,   942,
+   944,   947,   950,   951,   953,   956,   957,   958,   960,   962,
+   965,   969,   971,   974,   976,   979,   986,   992,   998,  1001,
+  1004,  1009,  1010,  1015,  1016,  1017,  1021,  1026,  1030,  1032,
+  1034,  1036,  1038,  1041,  1042,  1047,  1049,  1053,  1054,  1055,
+  1063,  1069,  1072,  1073,  1074,  1075,  1088,  1089,  1096,  1099,
+  1102,  1105,  1109,  1116,  1125,  1136,  1149,  1153,  1158,  1160,
+  1162,  1163,  1170,  1174,  1180,  1183,  1186,  1187,  1189,  1190,
+  1192,  1193,  1195,  1197,  1201,  1206,  1208,  1212,  1213,  1216,
+  1219,  1220,  1225,  1228,  1229,  1231,  1233,  1237,  1239,  1243,
+  1248,  1253,  1258,  1263,  1268,  1269,  1272,  1274,  1277,  1279,
+  1283,  1285,  1289
 };
 
 static const short yyrhs[] = {    -1,
     85,     0,     0,    86,    88,     0,     0,    85,    87,    88,
      0,    90,     0,    89,     0,    27,    59,    99,    76,    77,
-     0,   241,    88,     0,   122,   136,    77,     0,   129,   122,
+     0,   240,    88,     0,   122,   136,    77,     0,   129,   122,
    136,    77,     0,   125,   122,   135,    77,     0,   129,    77,
      0,   125,    77,     0,     1,    77,     0,     1,    78,     0,
-    77,     0,     0,     0,   125,   122,   165,    91,   116,    92,
-   199,     0,   125,   122,   165,     1,     0,     0,     0,   129,
-   122,   168,    93,   116,    94,   199,     0,   129,   122,   168,
-     1,     0,     0,     0,   122,   168,    95,   116,    96,   199,
-     0,   122,   168,     1,     0,     3,     0,     4,     0,    43,
+    77,     0,     0,     0,   125,   122,   164,    91,   116,    92,
+   198,     0,   125,   122,   164,     1,     0,     0,     0,   129,
+   122,   167,    93,   116,    94,   198,     0,   129,   122,   167,
+     1,     0,     0,     0,   122,   167,    95,   116,    96,   198,
+     0,   122,   167,     1,     0,     3,     0,     4,     0,    43,
      0,    49,     0,    48,     0,    54,     0,    55,     0,    79,
      0,    80,     0,   101,     0,     0,   101,     0,   107,     0,
-   101,    81,   107,     0,   113,     0,    50,   105,     0,   241,
+   101,    81,   107,     0,   113,     0,    50,   105,     0,   240,
    105,     0,    98,   105,     0,    40,    97,     0,   103,   102,
-     0,   103,    59,   186,    76,     0,   104,   102,     0,   104,
-    59,   186,    76,     0,    33,   105,     0,    34,   105,     0,
-    11,     0,    29,     0,   102,     0,    59,   186,    76,   105,
-     0,     0,    59,   186,    76,    82,   106,   150,    78,     0,
+     0,   103,    59,   185,    76,     0,   104,   102,     0,   104,
+    59,   185,    76,     0,    33,   105,     0,    34,   105,     0,
+    11,     0,    29,     0,   102,     0,    59,   185,    76,   105,
+     0,     0,    59,   185,    76,    82,   106,   150,    78,     0,
    105,     0,   107,    48,   107,     0,   107,    49,   107,     0,
    107,    50,   107,     0,   107,    51,   107,     0,   107,    52,
    107,     0,   107,    46,   107,     0,   107,    47,   107,     0,
@@ -249,107 +249,107 @@ static const short yyrhs[] = {    -1,
    107,     0,     0,   107,    37,   112,    38,   107,     0,   107,
     36,   107,     0,   107,    35,   107,     0,     3,     0,     8,
      0,   115,     0,    59,    99,    76,     0,    59,     1,    76,
-     0,     0,    59,   114,   201,    76,     0,   113,    59,   100,
+     0,     0,    59,   114,   200,    76,     0,   113,    59,   100,
     76,     0,   113,    60,    99,    83,     0,   113,    58,    97,
      0,   113,    57,    97,     0,   113,    54,     0,   113,    55,
      0,     9,     0,   115,     9,     0,     0,   118,     0,   118,
-    10,     0,   206,   207,   119,     0,   117,     0,   194,     0,
-   118,   117,     0,   117,   194,     0,   127,   122,   135,    77,
+    10,     0,   205,   206,   119,     0,   117,     0,   193,     0,
+   118,   117,     0,   117,   193,     0,   127,   122,   135,    77,
      0,   130,   122,   136,    77,     0,   127,    77,     0,   130,
-    77,     0,   206,   207,   124,     0,   120,     0,   194,     0,
-   121,   120,     0,   120,   194,     0,     0,     0,   125,   122,
+    77,     0,   205,   206,   124,     0,   120,     0,   193,     0,
+   121,   120,     0,   120,   193,     0,     0,     0,   125,   122,
    135,    77,     0,   129,   122,   136,    77,     0,   125,   122,
-   159,     0,   129,   122,   162,     0,   125,    77,     0,   129,
-    77,     0,   241,   124,     0,   133,   126,     0,   129,   133,
+   158,     0,   129,   122,   161,     0,   125,    77,     0,   129,
+    77,     0,   240,   124,     0,   133,   126,     0,   129,   133,
    126,     0,     0,   126,   134,     0,   126,     5,     0,   126,
    143,     0,   133,   128,     0,   130,   133,   128,     0,     0,
    128,   134,     0,   128,     5,     0,   130,     0,   143,     0,
    129,   130,     0,   129,   143,     0,     7,     0,     5,     0,
-   130,     7,     0,   130,     5,     0,   133,   132,     0,   188,
-   133,   132,     0,     0,   132,   134,     0,     6,     0,   172,
+   130,     7,     0,   130,     5,     0,   133,   132,     0,   187,
+   133,   132,     0,     0,   132,   134,     0,     6,     0,   171,
      0,     4,     0,    28,    59,    99,    76,     0,    28,    59,
-   186,    76,     0,     6,     0,     7,     0,   172,     0,   138,
+   185,    76,     0,     6,     0,     7,     0,   171,     0,   138,
      0,   135,    81,   138,     0,   140,     0,   136,    81,   138,
-     0,     0,    27,    59,   115,    76,     0,     0,   165,   137,
-   142,    36,   139,   148,     0,   165,   137,   142,     0,     0,
-   168,   137,   142,    36,   141,   148,     0,   168,   137,   142,
+     0,     0,    27,    59,   115,    76,     0,     0,   164,   137,
+   142,    36,   139,   148,     0,   164,   137,   142,     0,     0,
+   167,   137,   142,    36,   141,   148,     0,   167,   137,   142,
      0,     0,   143,     0,   144,     0,   143,   144,     0,    30,
     59,    59,   145,    76,    76,     0,   146,     0,   145,    81,
    146,     0,     0,   147,     0,   147,    59,     3,    76,     0,
    147,    59,     3,    81,   101,    76,     0,   147,    59,   100,
     76,     0,    97,     0,     5,     0,     6,     0,     7,     0,
    107,     0,     0,    82,   149,   150,    78,     0,     1,     0,
-     0,   151,   177,     0,   152,     0,   151,    81,   152,     0,
-   107,     0,     0,    82,   153,   150,    78,     0,     1,     0,
-     0,    60,   107,    10,   107,    83,    36,   154,   152,     0,
-     0,    60,   107,    83,    36,   155,   152,     0,     0,    60,
-   107,    83,   156,   152,     0,     0,    97,    38,   157,   152,
-     0,     0,    58,    97,    36,   158,   152,     0,     0,     0,
-   165,   160,   116,   161,   201,     0,     0,     0,   168,   163,
-   116,   164,   201,     0,   166,     0,   168,     0,    59,   166,
-    76,     0,   166,    59,   236,     0,   166,    60,    99,    83,
-     0,   166,    60,    83,     0,    50,   189,   166,     0,   143,
-   123,   166,     0,     4,     0,   167,    59,   236,     0,   167,
-    60,    99,    83,     0,   167,    60,    83,     0,    50,   189,
-   167,     0,   143,   123,   167,     0,     4,     0,   168,    59,
-   236,     0,    59,   168,    76,     0,    50,   189,   168,     0,
-   168,    60,    99,    83,     0,   168,    60,    83,     0,   143,
-   123,   168,     0,     3,     0,    13,     0,    13,   143,     0,
-    14,     0,    14,   143,     0,    12,     0,    12,   143,     0,
-     0,   169,    97,    82,   173,   179,    78,   142,     0,   169,
-    82,   179,    78,   142,     0,   169,    97,     0,     0,   170,
-    97,    82,   174,   179,    78,   142,     0,   170,    82,   179,
-    78,   142,     0,   170,    97,     0,     0,   171,    97,    82,
-   175,   184,   178,    78,   142,     0,     0,   171,    82,   176,
-   184,   178,    78,   142,     0,   171,    97,     0,     0,    81,
-     0,     0,    81,     0,   180,     0,   180,   181,     0,     0,
-   180,   181,    77,     0,   180,    77,     0,   131,   122,   182,
-     0,   131,     0,   188,   122,   182,     0,   188,     0,     1,
-     0,   241,   181,     0,   183,     0,   182,    81,   183,     0,
-   206,   207,   165,   142,     0,   206,   207,   165,    38,   107,
-   142,     0,   206,   207,    38,   107,   142,     0,   185,     0,
-   184,    81,   185,     0,     1,     0,    97,     0,    97,    36,
-   107,     0,   131,   187,     0,   188,   187,     0,     0,   190,
-     0,     7,     0,   188,     7,     0,     0,   189,     7,     0,
-    59,   190,    76,     0,    50,   189,   190,     0,    50,   189,
-     0,   190,    59,   229,     0,   190,    60,    99,    83,     0,
-   190,    60,    83,     0,    59,   229,     0,    60,    99,    83,
-     0,    60,    83,     0,   192,     0,   209,     0,   192,   209,
-     0,   192,   194,     0,     0,   191,     0,     1,    77,     0,
-     0,     0,   197,     0,   198,     0,   197,   198,     0,    32,
-   240,    77,     0,   201,     0,     1,   201,     0,    82,     0,
-   200,    78,     0,   200,   195,   196,   121,   193,    78,     0,
-   200,   195,   196,     1,    78,     0,   200,   195,   196,   191,
-    78,     0,   203,   208,     0,   203,     1,     0,    15,    59,
-    99,    76,     0,     0,    18,   205,   208,    17,     0,     0,
-     0,   206,   207,   211,     0,   206,   207,   222,   208,     0,
-   206,   207,   210,     0,   211,     0,   222,     0,   201,     0,
-   219,     0,    99,    77,     0,     0,   202,    16,   212,   208,
-     0,   202,     0,   202,    16,     1,     0,     0,     0,    17,
-   213,    59,    99,    76,   214,   208,     0,   204,    59,    99,
-    76,    77,     0,   204,     1,     0,     0,     0,     0,    19,
-    59,   224,    77,   215,   224,    77,   216,   224,    76,   217,
-   208,     0,     0,    20,    59,    99,    76,   218,   208,     0,
-    23,    77,     0,    24,    77,     0,    25,    77,     0,    25,
-    99,    77,     0,    27,   223,    59,    99,    76,    77,     0,
-    27,   223,    59,    99,    38,   225,    76,    77,     0,    27,
-   223,    59,    99,    38,   225,    38,   225,    76,    77,     0,
-    27,   223,    59,    99,    38,   225,    38,   225,    38,   228,
-    76,    77,     0,    26,    97,    77,     0,    26,    50,    99,
-    77,     0,    77,     0,   220,     0,     0,    19,    59,   113,
-    76,   221,   208,     0,    21,   107,    38,     0,    21,   107,
-    10,   107,    38,     0,    22,    38,     0,    97,    38,     0,
-     0,     7,     0,     0,    99,     0,     0,   226,     0,   227,
-     0,   226,    81,   227,     0,     9,    59,    99,    76,     0,
-   115,     0,   228,    81,   115,     0,     0,   230,   231,     0,
-   233,    76,     0,     0,   234,    77,   232,   231,     0,     1,
-    76,     0,     0,    10,     0,   234,     0,   234,    81,    10,
-     0,   235,     0,   234,    81,   235,     0,   125,   122,   167,
-   142,     0,   125,   122,   168,   142,     0,   125,   122,   187,
-   142,     0,   129,   122,   168,   142,     0,   129,   122,   187,
-   142,     0,     0,   237,   238,     0,   231,     0,   239,    76,
-     0,     3,     0,   239,    81,     3,     0,    97,     0,   240,
-    81,    97,     0,    31,     0
+     0,   151,   176,     0,   152,     0,   151,    81,   152,     0,
+   156,    36,   154,     0,   157,   154,     0,     0,    97,    38,
+   153,   154,     0,   154,     0,     0,    82,   155,   150,    78,
+     0,   107,     0,     1,     0,   157,     0,   156,   157,     0,
+    58,    97,     0,    60,   107,    10,   107,    83,     0,    60,
+   107,    83,     0,     0,     0,   164,   159,   116,   160,   200,
+     0,     0,     0,   167,   162,   116,   163,   200,     0,   165,
+     0,   167,     0,    59,   165,    76,     0,   165,    59,   235,
+     0,   165,    60,    99,    83,     0,   165,    60,    83,     0,
+    50,   188,   165,     0,   143,   123,   165,     0,     4,     0,
+   166,    59,   235,     0,   166,    60,    50,    83,     0,   166,
+    60,    99,    83,     0,   166,    60,    83,     0,    50,   188,
+   166,     0,   143,   123,   166,     0,     4,     0,   167,    59,
+   235,     0,    59,   167,    76,     0,    50,   188,   167,     0,
+   167,    60,    50,    83,     0,   167,    60,    99,    83,     0,
+   167,    60,    83,     0,   143,   123,   167,     0,     3,     0,
+    13,     0,    13,   143,     0,    14,     0,    14,   143,     0,
+    12,     0,    12,   143,     0,     0,   168,    97,    82,   172,
+   178,    78,   142,     0,   168,    82,   178,    78,   142,     0,
+   168,    97,     0,     0,   169,    97,    82,   173,   178,    78,
+   142,     0,   169,    82,   178,    78,   142,     0,   169,    97,
+     0,     0,   170,    97,    82,   174,   183,   177,    78,   142,
+     0,     0,   170,    82,   175,   183,   177,    78,   142,     0,
+   170,    97,     0,     0,    81,     0,     0,    81,     0,   179,
+     0,   179,   180,     0,     0,   179,   180,    77,     0,   179,
+    77,     0,   131,   122,   181,     0,   131,     0,   187,   122,
+   181,     0,   187,     0,     1,     0,   240,   180,     0,   182,
+     0,   181,    81,   182,     0,   205,   206,   164,   142,     0,
+   205,   206,   164,    38,   107,   142,     0,   205,   206,    38,
+   107,   142,     0,   184,     0,   183,    81,   184,     0,     1,
+     0,    97,     0,    97,    36,   107,     0,   131,   186,     0,
+   187,   186,     0,     0,   189,     0,     7,     0,   187,     7,
+     0,     0,   188,     7,     0,    59,   189,    76,     0,    50,
+   188,   189,     0,    50,   188,     0,   189,    59,   228,     0,
+   189,    60,    99,    83,     0,   189,    60,    83,     0,    59,
+   228,     0,    60,    99,    83,     0,    60,    83,     0,   191,
+     0,   208,     0,   191,   208,     0,   191,   193,     0,     0,
+   190,     0,     1,    77,     0,     0,     0,   196,     0,   197,
+     0,   196,   197,     0,    32,   239,    77,     0,   200,     0,
+     1,   200,     0,    82,     0,   199,    78,     0,   199,   194,
+   195,   121,   192,    78,     0,   199,   194,   195,     1,    78,
+     0,   199,   194,   195,   190,    78,     0,   202,   207,     0,
+   202,     1,     0,    15,    59,    99,    76,     0,     0,    18,
+   204,   207,    17,     0,     0,     0,   205,   206,   210,     0,
+   205,   206,   221,   207,     0,   205,   206,   209,     0,   210,
+     0,   221,     0,   200,     0,   218,     0,    99,    77,     0,
+     0,   201,    16,   211,   207,     0,   201,     0,   201,    16,
+     1,     0,     0,     0,    17,   212,    59,    99,    76,   213,
+   207,     0,   203,    59,    99,    76,    77,     0,   203,     1,
+     0,     0,     0,     0,    19,    59,   223,    77,   214,   223,
+    77,   215,   223,    76,   216,   207,     0,     0,    20,    59,
+    99,    76,   217,   207,     0,    23,    77,     0,    24,    77,
+     0,    25,    77,     0,    25,    99,    77,     0,    27,   222,
+    59,    99,    76,    77,     0,    27,   222,    59,    99,    38,
+   224,    76,    77,     0,    27,   222,    59,    99,    38,   224,
+    38,   224,    76,    77,     0,    27,   222,    59,    99,    38,
+   224,    38,   224,    38,   227,    76,    77,     0,    26,    97,
+    77,     0,    26,    50,    99,    77,     0,    77,     0,   219,
+     0,     0,    19,    59,   113,    76,   220,   207,     0,    21,
+   107,    38,     0,    21,   107,    10,   107,    38,     0,    22,
+    38,     0,    97,    38,     0,     0,     7,     0,     0,    99,
+     0,     0,   225,     0,   226,     0,   225,    81,   226,     0,
+     9,    59,    99,    76,     0,   115,     0,   227,    81,   115,
+     0,     0,   229,   230,     0,   232,    76,     0,     0,   233,
+    77,   231,   230,     0,     1,    76,     0,     0,    10,     0,
+   233,     0,   233,    81,    10,     0,   234,     0,   233,    81,
+   234,     0,   125,   122,   166,   142,     0,   125,   122,   167,
+   142,     0,   125,   122,   186,   142,     0,   129,   122,   167,
+   142,     0,   129,   122,   186,   142,     0,     0,   236,   237,
+     0,   230,     0,   238,    76,     0,     3,     0,   238,    81,
+     3,     0,    97,     0,   239,    81,    97,     0,    31,     0
 };
 
 #endif
@@ -375,28 +375,28 @@ static const short yyrline[] = { 0,
    981,   984,   987,   993,  1000,  1002,  1009,  1016,  1019,  1026,
   1029,  1033,  1036,  1040,  1045,  1048,  1052,  1055,  1057,  1059,
   1061,  1068,  1070,  1071,  1072,  1077,  1079,  1084,  1092,  1097,
-  1101,  1104,  1106,  1111,  1114,  1116,  1118,  1122,  1125,  1125,
-  1128,  1128,  1131,  1131,  1134,  1134,  1137,  1139,  1150,  1158,
-  1162,  1173,  1181,  1188,  1190,  1195,  1198,  1203,  1205,  1207,
-  1214,  1216,  1224,  1230,  1232,  1234,  1241,  1243,  1249,  1255,
-  1257,  1259,  1261,  1268,  1270,  1273,  1276,  1280,  1283,  1287,
-  1290,  1294,  1299,  1301,  1305,  1307,  1309,  1311,  1315,  1317,
-  1320,  1323,  1326,  1329,  1333,  1335,  1338,  1340,  1344,  1347,
-  1352,  1354,  1356,  1370,  1377,  1382,  1388,  1393,  1395,  1400,
-  1402,  1406,  1410,  1414,  1424,  1426,  1431,  1436,  1439,  1443,
-  1446,  1450,  1453,  1456,  1459,  1463,  1466,  1470,  1474,  1476,
-  1478,  1480,  1482,  1484,  1486,  1488,  1498,  1506,  1508,  1510,
-  1514,  1516,  1519,  1522,  1533,  1535,  1540,  1542,  1545,  1559,
-  1562,  1565,  1567,  1569,  1577,  1585,  1596,  1601,  1604,  1618,
-  1627,  1631,  1635,  1639,  1645,  1649,  1654,  1657,  1662,  1665,
-  1666,  1683,  1688,  1691,  1703,  1705,  1715,  1725,  1726,  1734,
-  1737,  1749,  1753,  1770,  1780,  1789,  1794,  1799,  1804,  1808,
-  1812,  1823,  1830,  1837,  1844,  1855,  1861,  1864,  1869,  1892,
-  1926,  1957,  1988,  2003,  2014,  2018,  2022,  2025,  2030,  2032,
-  2035,  2037,  2041,  2046,  2049,  2055,  2060,  2065,  2067,  2076,
-  2077,  2083,  2085,  2095,  2097,  2101,  2104,  2110,  2120,  2129,
-  2138,  2148,  2162,  2167,  2172,  2174,  2183,  2186,  2191,  2194,
-  2198
+  1101,  1104,  1106,  1111,  1113,  1114,  1117,  1117,  1120,  1123,
+  1125,  1127,  1130,  1132,  1135,  1141,  1143,  1147,  1158,  1166,
+  1170,  1181,  1189,  1196,  1198,  1203,  1206,  1211,  1213,  1215,
+  1222,  1224,  1232,  1238,  1243,  1245,  1247,  1254,  1256,  1262,
+  1268,  1270,  1272,  1277,  1279,  1286,  1288,  1291,  1294,  1298,
+  1301,  1305,  1308,  1312,  1317,  1319,  1323,  1325,  1327,  1329,
+  1333,  1335,  1338,  1341,  1344,  1347,  1351,  1353,  1356,  1358,
+  1363,  1366,  1371,  1373,  1375,  1389,  1396,  1401,  1407,  1412,
+  1414,  1419,  1421,  1425,  1429,  1433,  1443,  1445,  1450,  1455,
+  1458,  1462,  1465,  1469,  1472,  1475,  1478,  1482,  1485,  1489,
+  1493,  1495,  1497,  1499,  1501,  1503,  1505,  1507,  1517,  1525,
+  1527,  1529,  1533,  1535,  1538,  1541,  1552,  1554,  1559,  1561,
+  1564,  1578,  1581,  1584,  1586,  1588,  1596,  1604,  1615,  1620,
+  1623,  1637,  1646,  1650,  1654,  1658,  1664,  1668,  1673,  1676,
+  1681,  1684,  1685,  1702,  1707,  1710,  1722,  1724,  1734,  1744,
+  1745,  1753,  1756,  1768,  1772,  1789,  1799,  1808,  1813,  1818,
+  1823,  1827,  1831,  1842,  1849,  1856,  1863,  1874,  1880,  1883,
+  1888,  1911,  1945,  1976,  2007,  2022,  2033,  2037,  2041,  2044,
+  2049,  2051,  2054,  2056,  2060,  2065,  2068,  2074,  2079,  2084,
+  2086,  2095,  2096,  2102,  2104,  2114,  2116,  2120,  2123,  2129,
+  2139,  2148,  2157,  2167,  2181,  2186,  2191,  2193,  2202,  2205,
+  2210,  2213,  2217
 };
 #endif
 
@@ -423,20 +423,20 @@ static const char * const yytname[] = {   "$","error","$undefined.","IDENTIFIER"
 "typespecqual_reserved","initdecls","notype_initdecls","maybeasm","initdcl",
 "@16","notype_initdcl","@17","maybe_attribute","attributes","attribute","attribute_list",
 "attrib","any_word","init","@18","initlist_maybe_comma","initlist1","initelt",
-"@19","@20","@21","@22","@23","@24","nested_function","@25","@26","notype_nested_function",
-"@27","@28","declarator","after_type_declarator","parm_declarator","notype_declarator",
-"struct_head","union_head","enum_head","structsp","@29","@30","@31","@32","maybecomma",
-"maybecomma_warn","component_decl_list","component_decl_list2","component_decl",
-"components","component_declarator","enumlist","enumerator","typename","absdcl",
-"nonempty_type_quals","type_quals","absdcl1","stmts","lineno_stmt_or_labels",
-"xstmts","errstmt","pushlevel","maybe_label_decls","label_decls","label_decl",
-"compstmt_or_error","compstmt_start","compstmt","simple_if","if_prefix","do_stmt_start",
-"@33","save_filename","save_lineno","lineno_labeled_stmt","lineno_stmt_or_label",
-"stmt_or_label","stmt","@34","@35","@36","@37","@38","@39","@40","all_iter_stmt",
-"all_iter_stmt_simple","@41","label","maybe_type_qual","xexpr","asm_operands",
-"nonnull_asm_operands","asm_operand","asm_clobbers","parmlist","@42","parmlist_1",
-"@43","parmlist_2","parms","parm","parmlist_or_identifiers","@44","parmlist_or_identifiers_1",
-"identifiers","identifiers_or_typenames","extension", NULL
+"@19","initval","@20","designator_list","designator","nested_function","@21",
+"@22","notype_nested_function","@23","@24","declarator","after_type_declarator",
+"parm_declarator","notype_declarator","struct_head","union_head","enum_head",
+"structsp","@25","@26","@27","@28","maybecomma","maybecomma_warn","component_decl_list",
+"component_decl_list2","component_decl","components","component_declarator",
+"enumlist","enumerator","typename","absdcl","nonempty_type_quals","type_quals",
+"absdcl1","stmts","lineno_stmt_or_labels","xstmts","errstmt","pushlevel","maybe_label_decls",
+"label_decls","label_decl","compstmt_or_error","compstmt_start","compstmt","simple_if",
+"if_prefix","do_stmt_start","@29","save_filename","save_lineno","lineno_labeled_stmt",
+"lineno_stmt_or_label","stmt_or_label","stmt","@30","@31","@32","@33","@34",
+"@35","@36","all_iter_stmt","all_iter_stmt_simple","@37","label","maybe_type_qual",
+"xexpr","asm_operands","nonnull_asm_operands","asm_operand","asm_clobbers","parmlist",
+"@38","parmlist_1","@39","parmlist_2","parms","parm","parmlist_or_identifiers",
+"@40","parmlist_or_identifiers_1","identifiers","identifiers_or_typenames","extension", NULL
 };
 #endif
 
@@ -460,28 +460,28 @@ static const short yyr1[] = {     0,
    136,   137,   137,   139,   138,   138,   141,   140,   140,   142,
    142,   143,   143,   144,   145,   145,   146,   146,   146,   146,
    146,   147,   147,   147,   147,   148,   149,   148,   148,   150,
-   150,   151,   151,   152,   153,   152,   152,   154,   152,   155,
-   152,   156,   152,   157,   152,   158,   152,   160,   161,   159,
-   163,   164,   162,   165,   165,   166,   166,   166,   166,   166,
-   166,   166,   167,   167,   167,   167,   167,   167,   168,   168,
-   168,   168,   168,   168,   168,   169,   169,   170,   170,   171,
-   171,   173,   172,   172,   172,   174,   172,   172,   172,   175,
-   172,   176,   172,   172,   177,   177,   178,   178,   179,   179,
-   180,   180,   180,   181,   181,   181,   181,   181,   181,   182,
-   182,   183,   183,   183,   184,   184,   184,   185,   185,   186,
-   186,   187,   187,   188,   188,   189,   189,   190,   190,   190,
-   190,   190,   190,   190,   190,   190,   191,   192,   192,   192,
-   193,   193,   194,   195,   196,   196,   197,   197,   198,   199,
-   199,   200,   201,   201,   201,   201,   202,   202,   203,   205,
-   204,   206,   207,   208,   208,   209,   210,   210,   211,   211,
-   211,   212,   211,   211,   211,   213,   214,   211,   211,   211,
-   215,   216,   217,   211,   218,   211,   211,   211,   211,   211,
-   211,   211,   211,   211,   211,   211,   211,   219,   221,   220,
-   222,   222,   222,   222,   223,   223,   224,   224,   225,   225,
-   226,   226,   227,   228,   228,   230,   229,   231,   232,   231,
-   231,   233,   233,   233,   233,   234,   234,   235,   235,   235,
-   235,   235,   237,   236,   238,   238,   239,   239,   240,   240,
-   241
+   150,   151,   151,   152,   152,   153,   152,   152,   155,   154,
+   154,   154,   156,   156,   157,   157,   157,   159,   160,   158,
+   162,   163,   161,   164,   164,   165,   165,   165,   165,   165,
+   165,   165,   166,   166,   166,   166,   166,   166,   166,   167,
+   167,   167,   167,   167,   167,   167,   167,   168,   168,   169,
+   169,   170,   170,   172,   171,   171,   171,   173,   171,   171,
+   171,   174,   171,   175,   171,   171,   176,   176,   177,   177,
+   178,   178,   179,   179,   179,   180,   180,   180,   180,   180,
+   180,   181,   181,   182,   182,   182,   183,   183,   183,   184,
+   184,   185,   185,   186,   186,   187,   187,   188,   188,   189,
+   189,   189,   189,   189,   189,   189,   189,   189,   190,   191,
+   191,   191,   192,   192,   193,   194,   195,   195,   196,   196,
+   197,   198,   198,   199,   200,   200,   200,   200,   201,   201,
+   202,   204,   203,   205,   206,   207,   207,   208,   209,   209,
+   210,   210,   210,   211,   210,   210,   210,   212,   213,   210,
+   210,   210,   214,   215,   216,   210,   217,   210,   210,   210,
+   210,   210,   210,   210,   210,   210,   210,   210,   210,   218,
+   220,   219,   221,   221,   221,   221,   222,   222,   223,   223,
+   224,   224,   225,   225,   226,   227,   227,   229,   228,   230,
+   231,   230,   230,   232,   232,   232,   232,   233,   233,   234,
+   234,   234,   234,   234,   236,   235,   237,   237,   238,   238,
+   239,   239,   240
 };
 
 static const short yyr2[] = {     0,
@@ -504,663 +504,705 @@ static const short yyr2[] = {     0,
      3,     0,     4,     0,     6,     3,     0,     6,     3,     0,
      1,     1,     2,     6,     1,     3,     0,     1,     4,     6,
      4,     1,     1,     1,     1,     1,     0,     4,     1,     0,
-     2,     1,     3,     1,     0,     4,     1,     0,     8,     0,
-     6,     0,     5,     0,     4,     0,     5,     0,     0,     5,
+     2,     1,     3,     3,     2,     0,     4,     1,     0,     4,
+     1,     1,     1,     2,     2,     5,     3,     0,     0,     5,
      0,     0,     5,     1,     1,     3,     3,     4,     3,     3,
-     3,     1,     3,     4,     3,     3,     3,     1,     3,     3,
-     3,     4,     3,     3,     1,     1,     2,     1,     2,     1,
-     2,     0,     7,     5,     2,     0,     7,     5,     2,     0,
-     8,     0,     7,     2,     0,     1,     0,     1,     1,     2,
-     0,     3,     2,     3,     1,     3,     1,     1,     2,     1,
-     3,     4,     6,     5,     1,     3,     1,     1,     3,     2,
-     2,     0,     1,     1,     2,     0,     2,     3,     3,     2,
-     3,     4,     3,     2,     3,     2,     1,     1,     2,     2,
-     0,     1,     2,     0,     0,     1,     1,     2,     3,     1,
-     2,     1,     2,     6,     5,     5,     2,     2,     4,     0,
-     4,     0,     0,     3,     4,     3,     1,     1,     1,     1,
-     2,     0,     4,     1,     3,     0,     0,     7,     5,     2,
-     0,     0,     0,    12,     0,     6,     2,     2,     2,     3,
-     6,     8,    10,    12,     3,     4,     1,     1,     0,     6,
-     3,     5,     2,     2,     0,     1,     0,     1,     0,     1,
-     1,     3,     4,     1,     3,     0,     2,     2,     0,     4,
-     2,     0,     1,     1,     3,     1,     3,     4,     4,     4,
-     4,     4,     0,     2,     1,     2,     1,     3,     1,     3,
-     1
+     3,     1,     3,     4,     4,     3,     3,     3,     1,     3,
+     3,     3,     4,     4,     3,     3,     1,     1,     2,     1,
+     2,     1,     2,     0,     7,     5,     2,     0,     7,     5,
+     2,     0,     8,     0,     7,     2,     0,     1,     0,     1,
+     1,     2,     0,     3,     2,     3,     1,     3,     1,     1,
+     2,     1,     3,     4,     6,     5,     1,     3,     1,     1,
+     3,     2,     2,     0,     1,     1,     2,     0,     2,     3,
+     3,     2,     3,     4,     3,     2,     3,     2,     1,     1,
+     2,     2,     0,     1,     2,     0,     0,     1,     1,     2,
+     3,     1,     2,     1,     2,     6,     5,     5,     2,     2,
+     4,     0,     4,     0,     0,     3,     4,     3,     1,     1,
+     1,     1,     2,     0,     4,     1,     3,     0,     0,     7,
+     5,     2,     0,     0,     0,    12,     0,     6,     2,     2,
+     2,     3,     6,     8,    10,    12,     3,     4,     1,     1,
+     0,     6,     3,     5,     2,     2,     0,     1,     0,     1,
+     0,     1,     1,     3,     4,     1,     3,     0,     2,     2,
+     0,     4,     2,     0,     1,     1,     3,     1,     3,     4,
+     4,     4,     4,     4,     0,     2,     1,     2,     1,     3,
+     1,     3,     1
 };
 
 static const short yydefact[] = {     3,
-     5,     0,     0,     0,   152,   143,   150,   142,   240,   236,
-   238,     0,     0,     0,   401,    18,     4,     8,     7,     0,
+     5,     0,     0,     0,   152,   143,   150,   142,   242,   238,
+   240,     0,     0,     0,   403,    18,     4,     8,     7,     0,
    118,   118,   138,   129,   139,   172,     0,     0,     0,   151,
-     0,     6,    16,    17,   241,   237,   239,     0,     0,     0,
-   235,   286,     0,     0,   160,   119,     0,    15,     0,    14,
+     0,     6,    16,    17,   243,   239,   241,     0,     0,     0,
+   237,   288,     0,     0,   160,   119,     0,    15,     0,    14,
      0,   140,   129,   141,   145,   144,   127,   173,    31,    32,
-   261,   245,   261,   249,   252,   254,    10,    86,    87,    99,
+   263,   247,   263,   251,   254,   256,    10,    86,    87,    99,
     56,    57,     0,     0,     0,    33,    35,    34,     0,    36,
     37,     0,    38,    39,     0,     0,    40,    58,     0,     0,
-    62,    43,    45,    88,     0,   284,     0,   282,   148,     0,
-   282,   177,     0,     0,    11,     0,     0,    30,     0,   393,
-     0,     0,   170,   222,   286,     0,     0,   158,   119,     0,
+    62,    43,    45,    88,     0,   286,     0,   284,   148,     0,
+   284,   177,     0,     0,    11,     0,     0,    30,     0,   395,
+     0,     0,   170,   222,   288,     0,     0,   158,   119,     0,
    214,   215,     0,     0,   128,   131,   155,   156,   130,   132,
-   157,     0,     0,   242,     0,   246,     0,   250,    54,    55,
+   157,     0,     0,   244,     0,   248,     0,   252,    54,    55,
     49,    46,     0,     0,     0,     0,    48,     0,     0,     0,
     50,     0,    52,     0,     0,    79,    77,    75,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-    97,    98,     0,     0,    41,     0,   100,    47,   153,   286,
-   376,     0,   280,   283,   146,   154,   285,   148,   281,   183,
-   184,   185,   182,     0,   175,   178,   287,   231,   230,   161,
-   162,   234,     0,   229,     0,   233,     0,     0,    28,     0,
-   322,   106,   323,   169,   171,     0,     0,    13,     0,     0,
-    22,     0,   170,   393,     0,    12,    26,     0,   170,   268,
-   263,   118,   260,   118,     0,   261,   170,   261,   277,   278,
-   257,   275,     0,    90,    89,   312,   304,     0,     0,     9,
-    44,     0,     0,    85,    84,     0,     0,     0,     0,    73,
-    74,    72,    71,    70,    68,    69,    63,    64,    65,    66,
-    67,    96,    95,     0,    42,     0,   290,     0,   294,     0,
-   296,     0,   376,     0,   149,   147,     0,   177,    41,     0,
-     0,   397,   383,   118,   118,   395,     0,   384,   386,   394,
-     0,   232,   303,     0,   108,   103,   107,     0,   167,   220,
-   216,   159,   221,    20,   166,   217,   219,     0,    24,   244,
-   322,   262,   322,   269,     0,   248,     0,     0,   258,     0,
-   257,   313,   305,    92,    60,    59,    51,    53,     0,     0,
-    78,    76,    93,    94,   289,   288,   377,   295,   291,   293,
-     0,   174,   176,    86,     0,   163,   381,   282,   282,   378,
-   379,     0,   396,     0,     0,    29,   310,   104,   118,   118,
-   135,     0,     0,   164,   218,     0,   264,   270,   323,   266,
-   170,   170,   279,   276,   170,     0,     0,     0,   306,   307,
-     0,    80,    83,   292,   179,     0,   181,   228,   286,   376,
-   119,   170,   170,   170,   286,   170,   170,     0,   385,   387,
-   398,   311,   111,     0,   112,     0,   135,   133,   189,   187,
-   186,   168,    21,     0,    25,   322,     0,   243,   247,   253,
-   170,   399,     0,     0,     0,   322,     0,     0,   115,   323,
-   298,   308,   197,    86,     0,     0,   195,     0,   194,     0,
-   255,   192,     0,     0,   290,     0,   393,     0,   388,   389,
-   390,   290,   391,   392,   380,     0,     0,   162,   134,   137,
-   136,     0,   165,   271,     0,   170,   251,   309,     0,   315,
-   117,   116,   302,     0,   316,   300,   323,   299,     0,     0,
-     0,     0,   204,    61,     0,   191,    81,   180,   226,   286,
-   227,   223,   225,     0,   109,   110,     0,   170,     0,   272,
-   400,   314,     0,   152,     0,   336,   320,     0,     0,     0,
-     0,     0,     0,     0,     0,   365,   357,     0,     0,   113,
-   118,   118,   329,   334,     0,     0,   326,   327,   330,   358,
-   328,     0,   206,     0,   202,     0,     0,   193,     0,   224,
-   188,   274,   170,     0,     0,   322,   367,     0,     0,   363,
-   347,   348,   349,     0,     0,     0,   366,     0,   364,   331,
-   124,     0,   125,     0,     0,   318,   323,   317,   340,     0,
-   126,     0,     0,   200,     0,   196,   205,   273,     0,     0,
-     0,   368,    45,     0,     0,     0,   361,   350,     0,   355,
-     0,     0,   122,   208,     0,   123,   211,   335,   322,     0,
-     0,   207,     0,     0,   203,   319,     0,   321,   359,   341,
-   345,     0,   356,     0,   120,     0,   121,     0,   333,   324,
-   322,     0,   198,   201,   337,   322,   367,   322,   362,   369,
-     0,   209,   212,   325,   339,     0,   322,   360,     0,   346,
-     0,     0,   370,   371,   351,     0,     0,   199,   338,   342,
-     0,   369,     0,     0,   210,   213,   367,     0,     0,   352,
-   372,     0,   373,     0,     0,   343,   374,     0,   353,   322,
-     0,     0,   344,   354,   375,     0,     0,     0
+    97,    98,     0,     0,    41,     0,   100,    47,   153,   288,
+   378,     0,   282,   285,   146,   154,   287,   148,   283,   183,
+   184,   185,   182,     0,   175,   178,   289,   232,   231,   161,
+   162,   236,     0,   230,     0,     0,   235,     0,     0,    28,
+     0,   324,   106,   325,   169,   171,     0,     0,    13,     0,
+     0,    22,     0,   170,   395,     0,    12,    26,     0,   170,
+   270,   265,   118,   262,   118,     0,   263,   170,   263,   279,
+   280,   259,   277,     0,    90,    89,   314,   306,     0,     0,
+     9,    44,     0,     0,    85,    84,     0,     0,     0,     0,
+    73,    74,    72,    71,    70,    68,    69,    63,    64,    65,
+    66,    67,    96,    95,     0,    42,     0,   292,     0,   296,
+     0,   298,     0,   378,     0,   149,   147,     0,   177,    41,
+     0,     0,   399,   385,   118,   118,   397,     0,   386,   388,
+   396,     0,   233,   234,   305,     0,   108,   103,   107,     0,
+   167,   220,   216,   159,   221,    20,   166,   217,   219,     0,
+    24,   246,   324,   264,   324,   271,     0,   250,     0,     0,
+   260,     0,   259,   315,   307,    92,    60,    59,    51,    53,
+     0,     0,    78,    76,    93,    94,   291,   290,   379,   297,
+   293,   295,     0,   174,   176,    86,     0,   163,   383,   284,
+   284,   380,   381,     0,   398,     0,     0,    29,   312,   104,
+   118,   118,   135,     0,     0,   164,   218,     0,   266,   272,
+   325,   268,   170,   170,   281,   278,   170,     0,     0,     0,
+   308,   309,     0,    80,    83,   294,   179,     0,   181,   229,
+   288,   378,   119,   170,   170,   170,   288,   170,   170,     0,
+   387,   389,   400,   313,   111,     0,   112,     0,   135,   133,
+   189,   187,   186,   168,    21,     0,    25,   324,     0,   245,
+   249,   255,   170,   401,     0,     0,     0,   324,     0,     0,
+   115,   325,   300,   310,   202,    86,     0,     0,   199,     0,
+   201,     0,   257,   192,   198,     0,     0,     0,     0,   292,
+     0,   395,     0,   390,   391,   392,   292,   393,   394,   382,
+     0,     0,   162,   134,   137,   136,     0,   165,   273,     0,
+   170,   253,   311,     0,   317,   117,   116,   304,     0,   318,
+   302,   325,   301,     0,   205,     0,     0,   196,    61,     0,
+   191,     0,   204,   195,    81,   180,   227,   288,   228,   223,
+     0,   226,     0,   109,   110,     0,   170,     0,   274,   402,
+   316,     0,   152,     0,   338,   322,     0,     0,     0,     0,
+     0,     0,     0,     0,   367,   359,     0,     0,   113,   118,
+   118,   331,   336,     0,     0,   328,   329,   332,   360,   330,
+     0,     0,   207,     0,     0,   193,   194,     0,   224,   225,
+   188,   276,   170,     0,     0,   324,   369,     0,     0,   365,
+   349,   350,   351,     0,     0,     0,   368,     0,   366,   333,
+   124,     0,   125,     0,     0,   320,   325,   319,   342,     0,
+   126,     0,   200,   197,   275,     0,     0,     0,   370,    45,
+     0,     0,     0,   363,   352,     0,   357,     0,     0,   122,
+   208,     0,   123,   211,   337,   324,     0,     0,   206,   321,
+     0,   323,   361,   343,   347,     0,   358,     0,   120,     0,
+   121,     0,   335,   326,   324,     0,   339,   324,   369,   324,
+   364,   371,     0,   209,   212,   327,   341,   324,   362,     0,
+   348,     0,     0,   372,   373,   353,     0,     0,   340,   344,
+     0,   371,     0,     0,   210,   213,   369,     0,     0,   354,
+   374,     0,   375,     0,     0,   345,   376,     0,   355,   324,
+     0,     0,   346,   356,   377,     0,     0,     0
 };
 
 static const short yydefgoto[] = {   686,
-     1,     2,     3,    17,    18,    19,   222,   373,   228,   376,
-   112,   304,   448,    85,   144,   274,    87,    88,    89,    90,
-    91,   391,    92,   259,   258,   256,   453,   257,    93,   145,
-    94,   209,   210,   211,   368,   435,   436,    20,   107,   530,
-   294,    57,   369,   418,   295,    23,    98,   185,    24,   129,
-   117,    44,   113,   118,   424,    45,   372,   214,   215,    26,
-   194,   195,   196,   422,   472,   450,   451,   452,   492,   646,
-   614,   585,   547,   582,   603,   626,   656,   606,   628,   657,
-   201,   121,   499,   122,    27,    28,    29,    30,   236,   238,
-   243,   137,   496,   330,   132,   133,   233,   377,   378,   241,
-   242,   100,   183,   101,   103,   184,   437,   438,   484,   212,
-   333,   388,   389,   390,   366,   247,   367,   534,   535,   536,
-   556,   577,   308,   578,   441,   537,   538,   609,   555,   647,
-   637,   667,   680,   638,   539,   540,   636,   541,   568,   594,
-   652,   653,   654,   678,   279,   280,   296,   408,   297,   298,
-   299,   204,   205,   300,   301,   433,    95
+     1,     2,     3,    17,    18,    19,   223,   375,   229,   378,
+   112,   306,   450,    85,   144,   275,    87,    88,    89,    90,
+    91,   393,    92,   260,   259,   257,   458,   258,    93,   145,
+    94,   210,   211,   212,   370,   437,   438,    20,   107,   539,
+   295,    57,   371,   420,   296,    23,    98,   185,    24,   129,
+   117,    44,   113,   118,   426,    45,   374,   215,   216,    26,
+   194,   195,   196,   424,   477,   452,   453,   454,   555,   455,
+   497,   456,   457,   610,   630,   657,   613,   632,   658,   201,
+   121,   507,   122,    27,    28,    29,    30,   237,   239,   244,
+   137,   501,   332,   132,   133,   234,   379,   380,   242,   243,
+   100,   183,   101,   103,   184,   439,   440,   489,   213,   335,
+   390,   391,   392,   368,   248,   369,   543,   544,   545,   566,
+   587,   310,   588,   443,   546,   547,   616,   565,   648,   639,
+   667,   680,   640,   548,   549,   638,   550,   578,   601,   653,
+   654,   655,   678,   280,   281,   297,   410,   298,   299,   300,
+   204,   205,   301,   302,   435,    95
 };
 
-static const short yypact[] = {    93,
-   154,  1950,  1950,   173,-32768,-32768,-32768,-32768,   130,   130,
-   130,   143,   166,   215,-32768,-32768,-32768,-32768,-32768,   554,
-    87,   336,   318,-32768,   130,-32768,    80,    83,    88,-32768,
-  1950,-32768,-32768,-32768,   130,   130,   130,  1812,  1746,   228,
--32768,-32768,   554,   111,-32768,   130,   387,-32768,   327,-32768,
-   554,   318,-32768,   130,-32768,-32768,   858,-32768,-32768,-32768,
--32768,   257,-32768,   265,-32768,   283,-32768,-32768,-32768,-32768,
--32768,-32768,  1812,  1812,   290,-32768,-32768,-32768,  1812,-32768,
--32768,   567,-32768,-32768,  1812,   136,   235,-32768,  1839,  1866,
--32768,  2137,  1030,   326,  1812,-32768,   292,    20,-32768,   296,
-  1483,   975,   428,    29,-32768,   327,   554,-32768,   323,-32768,
-  1288,   808,   130,-32768,-32768,   327,   114,-32768,   130,   626,
-   243,   253,   151,  1234,   858,-32768,-32768,-32768,-32768,   130,
--32768,   332,   885,-32768,   334,-32768,   436,-32768,-32768,-32768,
--32768,-32768,   328,   340,   347,   342,-32768,   359,  1812,   567,
--32768,   567,-32768,  1812,  1812,   407,-32768,-32768,  1812,  1812,
-  1812,  1812,  1812,  1812,  1812,  1812,  1812,  1812,  1812,  1812,
--32768,-32768,   290,   290,  1812,  1812,-32768,-32768,-32768,-32768,
-    20,  1301,-32768,   321,  1036,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,    92,-32768,   389,-32768,   253,-32768,-32768,
-   430,   253,   450,-32768,   963,-32768,   380,   395,-32768,   728,
-    49,-32768,-32768,   438,   130,   207,   141,-32768,   327,   327,
--32768,   808,   130,-32768,  1354,-32768,-32768,   808,   130,-32768,
--32768,   376,   408,  1954,  2122,-32768,   130,-32768,-32768,   455,
-   412,-32768,   436,-32768,-32768,-32768,   421,   442,  1635,-32768,
-  2137,   447,   448,  2137,  2137,  1812,   492,  1812,  1812,  1605,
-  2159,  1783,   463,  1237,   973,   973,   310,   310,-32768,-32768,
--32768,-32768,-32768,   458,   235,   452,    48,   374,-32768,  1558,
--32768,   461,-32768,  1367,-32768,  1036,   465,   975,  1893,    57,
-   469,-32768,-32768,-32768,  1452,-32768,   473,   159,-32768,-32768,
-   102,-32768,-32768,    52,-32768,-32768,-32768,  1533,-32768,   243,
--32768,-32768,   243,-32768,   495,-32768,-32768,   471,-32768,-32768,
--32768,-32768,-32768,-32768,   478,-32768,   486,  1812,   290,   488,
-   412,-32768,   533,-32768,-32768,-32768,-32768,-32768,   529,  1812,
-  2097,  2149,-32768,-32768,   321,-32768,-32768,-32768,-32768,-32768,
-   494,-32768,-32768,   104,   506,-32768,-32768,   348,   269,-32768,
--32768,   638,-32768,   584,   347,-32768,-32768,-32768,   512,   192,
--32768,  1223,    52,-32768,-32768,    52,   509,-32768,-32768,   509,
-   130,   130,  2137,-32768,   130,   514,   290,   746,   533,-32768,
-  1043,-32768,  1974,-32768,-32768,  1812,-32768,-32768,-32768,   269,
-   130,   149,   203,   130,-32768,   203,   130,  1558,-32768,-32768,
--32768,-32768,-32768,   327,-32768,   554,-32768,   785,-32768,-32768,
-  2137,-32768,-32768,  1223,-32768,-32768,   294,-32768,-32768,-32768,
-   130,-32768,   161,   393,   666,   515,   516,   826,-32768,-32768,
--32768,-32768,-32768,   559,   290,  1812,-32768,   564,  2137,   525,
-   524,-32768,  1812,   153,   402,   892,-32768,  1420,-32768,-32768,
--32768,   487,-32768,-32768,-32768,   171,   179,    50,   785,-32768,
--32768,  1043,-32768,-32768,  1812,    91,-32768,-32768,   290,-32768,
--32768,-32768,-32768,   528,-32768,-32768,-32768,-32768,  1501,   573,
-  1998,  1043,-32768,-32768,  1103,-32768,  1974,-32768,   424,-32768,
-   424,-32768,-32768,   531,-32768,-32768,   534,  2047,  1812,-32768,
--32768,-32768,  1581,   580,   560,-32768,-32768,   561,   565,  1812,
-   590,   557,   558,  1759,   144,   630,-32768,   603,   578,-32768,
-   581,  1982,-32768,   641,   906,    56,-32768,-32768,-32768,-32768,
--32768,  1692,-32768,  1812,   623,   583,  1163,-32768,   781,-32768,
--32768,-32768,  2047,  1812,   605,-32768,  1812,  1812,  2070,-32768,
--32768,-32768,-32768,   588,  1812,   599,-32768,   643,-32768,-32768,
--32768,   327,-32768,   554,   986,-32768,-32768,-32768,-32768,  1812,
--32768,  1163,  2021,-32768,  1163,-32768,-32768,-32768,   606,  1812,
-   687,-32768,   422,   628,   634,  1812,-32768,-32768,   636,-32768,
-  1812,   223,-32768,   349,   234,-32768,  1001,-32768,-32768,  1581,
-   635,-32768,   681,  1163,-32768,-32768,   642,-32768,-32768,-32768,
--32768,  2119,-32768,    36,-32768,   808,-32768,   808,-32768,-32768,
--32768,   645,-32768,-32768,-32768,-32768,  1812,-32768,-32768,   710,
-   646,-32768,-32768,-32768,-32768,  1163,-32768,-32768,   647,-32768,
-   667,    43,   650,-32768,-32768,   347,   347,-32768,-32768,-32768,
-  1812,   710,   651,   710,-32768,-32768,  1812,   660,    61,-32768,
--32768,   661,-32768,   450,   662,-32768,   326,   168,-32768,-32768,
-   701,   450,-32768,-32768,   326,   727,   782,-32768
+static const short yypact[] = {    58,
+    63,  2224,  2224,   400,-32768,-32768,-32768,-32768,    39,    39,
+    39,    28,    71,    75,-32768,-32768,-32768,-32768,-32768,   289,
+   124,  2252,    69,-32768,    39,-32768,    87,   107,   112,-32768,
+  2224,-32768,-32768,-32768,    39,    39,    39,  2086,  2020,    93,
+-32768,-32768,   289,    94,-32768,    39,  1373,-32768,   519,-32768,
+   289,    69,-32768,    39,-32768,-32768,   702,-32768,-32768,-32768,
+-32768,    23,-32768,   146,-32768,   178,-32768,-32768,-32768,-32768,
+-32768,-32768,  2086,  2086,   434,-32768,-32768,-32768,  2086,-32768,
+-32768,  1072,-32768,-32768,  2086,   192,   195,-32768,  2113,  2140,
+-32768,  2353,   646,   270,  2086,-32768,   214,   266,-32768,   222,
+   398,   786,   469,   315,-32768,   519,   289,-32768,   228,-32768,
+  1448,   357,    39,-32768,-32768,   519,   132,-32768,    39,   598,
+   423,   430,   173,  1435,   702,-32768,-32768,-32768,-32768,    39,
+-32768,   230,   402,-32768,   246,-32768,   431,-32768,-32768,-32768,
+-32768,-32768,   251,   261,   265,   283,-32768,   280,  2086,  1072,
+-32768,  1072,-32768,  2086,  2086,   334,-32768,-32768,  2086,  2086,
+  2086,  2086,  2086,  2086,  2086,  2086,  2086,  2086,  2086,  2086,
+-32768,-32768,   434,   434,  2086,  2086,-32768,-32768,-32768,-32768,
+   266,  1475,-32768,   482,   894,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,    -1,-32768,   319,-32768,   430,-32768,-32768,
+   353,   430,   377,-32768,   723,  1530,-32768,   324,   312,-32768,
+   211,    54,-32768,-32768,   392,    39,   462,   322,-32768,   519,
+   519,-32768,   357,    39,-32768,  1557,-32768,-32768,   357,    39,
+-32768,-32768,   416,   368,   113,   440,-32768,    39,-32768,-32768,
+   404,   374,-32768,   431,-32768,-32768,-32768,   384,   388,  1909,
+-32768,  2353,   405,   409,  2353,  2353,  2086,   436,  2086,  2086,
+  1582,   698,  1662,  1379,  1875,  1002,  1002,   463,   463,-32768,
+-32768,-32768,-32768,-32768,   411,   195,   414,   186,   360,-32768,
+   816,-32768,   419,-32768,  1612,-32768,   894,   428,   786,  2167,
+    48,   432,-32768,-32768,-32768,  1320,-32768,   435,   229,-32768,
+-32768,   126,-32768,-32768,-32768,    51,-32768,-32768,-32768,   308,
+-32768,   423,-32768,-32768,   423,-32768,   480,-32768,-32768,   437,
+-32768,-32768,-32768,-32768,-32768,-32768,   447,-32768,   449,  2086,
+   434,   455,   374,-32768,   474,-32768,-32768,-32768,-32768,-32768,
+   497,  2086,   959,  1501,-32768,-32768,   482,-32768,-32768,-32768,
+-32768,-32768,   461,-32768,-32768,   185,   489,-32768,-32768,   245,
+   184,-32768,-32768,  1143,-32768,   547,   265,-32768,-32768,-32768,
+   481,   921,-32768,  1309,    51,-32768,-32768,    51,   487,-32768,
+-32768,   487,    39,    39,  2353,-32768,    39,   483,   434,   754,
+   474,-32768,  1129,-32768,  2369,-32768,-32768,  2086,-32768,-32768,
+-32768,   184,    39,   151,   226,    39,-32768,   226,    39,   816,
+-32768,-32768,-32768,-32768,-32768,   519,-32768,   289,-32768,   891,
+-32768,-32768,  2353,-32768,-32768,  1309,-32768,-32768,   363,-32768,
+-32768,-32768,    39,-32768,   268,   470,   643,   494,   516,   834,
+-32768,-32768,-32768,-32768,-32768,   557,   434,  2086,-32768,   568,
+  2353,   529,   532,-32768,-32768,    34,  1249,  2086,   218,   223,
+   550,-32768,  1639,-32768,-32768,-32768,   281,-32768,-32768,-32768,
+   279,   306,   120,   891,-32768,-32768,  1129,-32768,-32768,  2086,
+   167,-32768,-32768,   434,-32768,-32768,-32768,-32768,   546,-32768,
+-32768,-32768,-32768,  1775,-32768,  2263,  1129,-32768,-32768,  1189,
+-32768,  1364,-32768,-32768,  2369,-32768,   496,-32768,   496,-32768,
+  1694,-32768,   544,-32768,-32768,   552,  1796,  2086,-32768,-32768,
+-32768,  1855,   593,   573,-32768,-32768,   574,   576,  2086,   599,
+   559,   563,  2033,   128,   635,-32768,   605,   582,-32768,   601,
+  2256,-32768,   629,   935,    53,-32768,-32768,-32768,-32768,-32768,
+  1966,  2086,-32768,   575,  1364,-32768,-32768,   681,-32768,-32768,
+-32768,-32768,  1796,  2086,   628,-32768,  2086,  2086,  1719,-32768,
+-32768,-32768,-32768,   612,  2086,   613,-32768,   636,-32768,-32768,
+-32768,   519,-32768,   289,  1015,-32768,-32768,-32768,-32768,  2086,
+-32768,  2308,-32768,-32768,-32768,   618,  2086,   679,-32768,   562,
+   622,   634,  2086,-32768,-32768,   640,-32768,  2086,   311,-32768,
+   156,   318,-32768,   537,-32768,-32768,  1855,   637,-32768,-32768,
+   642,-32768,-32768,-32768,-32768,  2326,-32768,    10,-32768,   357,
+-32768,   357,-32768,-32768,-32768,   657,-32768,-32768,  2086,-32768,
+-32768,   703,   661,-32768,-32768,-32768,-32768,-32768,-32768,   662,
+-32768,   660,    27,   673,-32768,-32768,   265,   265,-32768,-32768,
+  2086,   703,   693,   703,-32768,-32768,  2086,   680,    61,-32768,
+-32768,   710,-32768,   377,   718,-32768,   270,   221,-32768,-32768,
+   721,   377,-32768,-32768,   270,   800,   801,-32768
 };
 
 static const short yypgoto[] = {-32768,
--32768,-32768,-32768,    73,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,   -24,-32768,   -38,   498,  -123,   432,-32768,-32768,
-   -10,-32768,   116,-32768,-32768,-32768,-32768,-32768,   224,-32768,
-  -178,  -204,   572,-32768,-32768,   357,-32768,    27,   -93,   260,
-     8,   750,-32768,   390,    13,     1,   -72,   616,    19,  -151,
-  -386,   -49,  -101,   -63,-32768,-32768,-32768,   -48,    11,   105,
--32768,   518,-32768,   384,-32768,  -376,-32768,  -424,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-   -43,   -44,  -311,   -13,-32768,-32768,-32768,   -28,-32768,-32768,
--32768,-32768,-32768,   485,   -23,-32768,   582,   496,   392,   589,
-   504,   -26,   -69,   -68,   -98,  -145,   388,-32768,-32768,  -143,
--32768,-32768,-32768,   449,  -230,-32768,  -118,-32768,-32768,-32768,
--32768,  -100,  -334,  -454,   401,-32768,   232,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,   244,-32768,  -542,
-   194,-32768,   197,-32768,   575,-32768,  -234,-32768,-32768,-32768,
-   500,  -189,-32768,-32768,-32768,-32768,     6
+-32768,-32768,-32768,    78,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,   -24,-32768,   -38,   515,  -139,   485,-32768,-32768,
+   -50,-32768,   422,-32768,-32768,-32768,-32768,-32768,   239,-32768,
+  -186,  -201,   595,-32768,-32768,   372,-32768,     5,  -112,   260,
+     9,   759,-32768,   395,    11,    -7,   -77,   630,    22,  -165,
+  -378,   -45,  -104,   -59,-32768,-32768,-32768,   -54,    57,    47,
+-32768,   527,-32768,   393,-32768,  -226,-32768,   325,-32768,  -407,
+-32768,-32768,   371,-32768,-32768,-32768,-32768,-32768,-32768,   -39,
+   -63,  -319,   -18,-32768,-32768,-32768,   -23,-32768,-32768,-32768,
+-32768,-32768,   491,   -31,-32768,   596,   514,   412,   597,   531,
+    46,   -80,   -71,   -84,  -132,   426,-32768,-32768,  -168,-32768,
+-32768,-32768,   456,  -143,-32768,  -126,-32768,-32768,-32768,-32768,
+   -94,  -335,  -495,   410,-32768,   249,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,   252,-32768,  -472,   209,
+-32768,   208,-32768,   589,-32768,  -242,-32768,-32768,-32768,   511,
+  -195,-32768,-32768,-32768,-32768,     6
 };
 
 
-#define        YYLAST          2211
+#define        YYLAST          2421
 
 
 static const short yytable[] = {    86,
-    97,   123,    62,    64,    66,   120,    47,    31,    31,    21,
-    21,   213,    25,    25,    22,    22,   216,   314,   223,    35,
-    36,    37,    52,   319,   290,   220,   248,   466,   131,   104,
-    46,   189,    54,   285,   316,   278,    31,   124,    21,   135,
-    53,    25,   200,    22,   427,   347,   402,    49,    51,  -102,
-   141,   275,   365,    46,   197,   146,   579,    99,   306,   119,
-   232,    46,   139,   140,   234,   177,   305,   130,   142,   180,
-   548,   217,   207,   640,   147,    32,   109,   193,   181,   182,
-   662,   277,    59,    60,   178,    59,    60,   110,   111,   198,
-    59,    60,    -1,   202,   649,   507,   131,   180,   674,   223,
-    99,   591,   104,    67,   199,   489,   181,   182,   110,   111,
-   213,   641,   240,    46,   580,   546,   119,    46,   663,   188,
-    14,   213,   587,   252,   672,   253,   119,   213,   509,    58,
-  -102,   345,   356,   246,   285,   130,   675,   276,   235,    58,
-    58,    58,   423,   282,   501,   425,    59,    60,   272,   273,
-    58,    99,   513,    -2,   629,   312,   131,   612,    58,    14,
-   615,    61,   232,    48,    63,   275,   234,   287,    99,    65,
-    99,   310,   288,   465,   315,   313,   644,   363,    14,   395,
-   320,   648,   364,   650,   396,   602,   318,   105,   326,   634,
-   218,   106,   659,   565,   219,     5,    55,     7,    56,   224,
-   225,    38,   198,     9,    10,    11,   202,   457,   458,    41,
-   114,   148,   325,   197,   327,    25,   311,   339,   240,    13,
-   379,   658,   379,    58,    39,   683,   119,   226,   498,   119,
-   119,   106,    14,   149,    58,   361,    14,   478,   336,   362,
-   235,   479,   610,   681,   439,   351,   412,   505,   682,    33,
-    34,   219,   188,    99,   278,   506,   115,   131,   321,   106,
-   323,   110,   111,   193,   251,   116,   471,   502,   415,   254,
-   255,    41,   454,    40,   260,   261,   262,   263,   264,   265,
-   266,   267,   268,   269,   270,   271,   102,   440,   404,   407,
-    25,   481,    59,    60,   486,    52,    41,   114,    14,   625,
-   455,   224,   225,   219,   240,    54,   462,   456,   370,   345,
-   627,   110,   111,    53,   106,   149,   345,   471,   405,    58,
-   358,   359,    55,    14,    56,   379,   371,   400,   182,    41,
-   114,   475,   428,   429,   177,   440,   430,   487,   134,     5,
-     6,     7,     8,   115,   403,   406,   136,     9,    10,    11,
-    41,   398,   116,   459,   460,   461,    14,   463,   464,   168,
-   169,   170,   432,    13,   138,    14,   467,   179,   401,    46,
-   533,   186,    25,   341,   342,   109,   115,    14,  -162,   283,
-   284,   203,   477,   476,  -162,   116,   104,   108,   417,   131,
-   -27,   -27,   -27,   -27,   533,   414,   416,   399,   -27,   -27,
-   -27,   549,   468,   244,    41,   398,   400,   182,   197,   229,
-    46,   237,    50,   109,   -27,   245,  -162,   249,    25,   504,
-   490,   642,  -162,   643,   119,  -162,    46,   510,   246,  -162,
-    41,    14,   283,   284,   197,   250,   239,   119,    59,    60,
-   131,   198,   202,   383,   -82,   110,   111,   289,   198,   346,
-   529,   399,  -265,  -265,   511,   393,   109,    14,    70,   552,
-   400,   182,   302,  -162,   528,   401,   401,  -162,   -27,   303,
-   480,   303,    46,   309,   529,   171,   172,    42,   173,   174,
-   175,   176,   457,   458,   322,   564,    43,   421,   528,    41,
-   328,   533,   329,   197,   542,   677,   531,   619,   332,    25,
-   566,   532,   223,   685,   588,    58,   449,   163,   164,   165,
-   166,   167,   168,   169,   170,   589,    14,   334,   592,   595,
-   151,   153,   337,   338,   605,   213,   599,   213,   604,   340,
-   374,   178,    52,   343,   344,   198,   405,   665,   666,   421,
-   352,   611,    54,   348,   357,   400,   182,   542,   360,   531,
-    53,   617,    25,   375,   532,   381,    41,   572,   574,   401,
-   607,   491,   624,   382,   387,   385,   392,   143,   497,    68,
-     5,   529,     7,    96,    69,    70,   394,    71,     9,    10,
-    11,   397,   119,    14,    46,   528,   411,   449,   413,   426,
-   508,   431,  -301,   485,    13,    72,   -31,    15,   592,    73,
-    74,   493,   494,    42,   495,   512,    75,   449,   543,    76,
-   449,   551,    43,   550,    77,    78,    79,   -32,   554,   557,
-    80,    81,   668,   558,   553,    82,   221,   560,   592,   -19,
-   -19,   -19,   -19,   561,   562,   559,   567,   -19,   -19,   -19,
-   569,     5,     6,     7,     8,    83,    84,   409,   -91,     9,
-    10,    11,   109,   -19,   570,  -162,   575,   571,   584,   583,
-   586,  -162,   449,   590,   598,    13,   208,    14,  -114,  -114,
-  -114,  -114,  -114,  -114,  -114,   600,  -114,  -114,  -114,  -114,
-  -114,   616,  -114,  -114,  -114,  -114,  -114,  -114,  -114,  -114,
-  -114,  -114,  -114,  -114,  -114,  -114,  -114,   449,  -114,  -114,
-   449,   601,  -162,   618,   620,  -114,  -162,   -19,  -114,   621,
-   632,   622,   623,  -114,  -114,  -114,   633,   635,   651,  -114,
-  -114,   645,   655,   660,  -114,   661,   687,   670,   208,   449,
-   664,  -105,  -105,  -105,  -105,   673,   676,  -105,   679,  -105,
-  -105,  -105,  -114,  -114,  -114,  -114,   434,  -114,  -322,  -322,
-  -322,  -322,  -322,  -322,  -322,  -105,  -322,  -322,  -322,  -322,
-  -322,   449,  -322,  -322,  -322,  -322,  -322,  -322,  -322,  -322,
-  -322,  -322,  -322,  -322,  -322,  -322,  -322,   684,  -322,  -322,
-   593,   688,   307,    41,   398,  -322,   355,   197,  -322,   470,
-   127,   128,   482,  -322,  -322,  -322,     9,    10,    11,  -322,
-  -322,   581,   125,   286,  -322,   353,   469,   473,   208,  -105,
-    14,  -322,  -322,  -322,  -322,   386,   324,   474,   380,  -322,
-  -322,  -322,  -322,   483,  -322,  -322,   208,  -322,  -322,  -322,
-   500,   331,   384,  -322,  -322,  -322,  -322,   442,   488,    43,
-  -322,   630,  -322,  -322,  -322,  -322,  -322,  -322,  -322,  -322,
-  -322,  -322,  -322,   631,  -322,   669,  -322,   349,  -322,  -322,
-   671,   410,   126,   127,   128,  -322,     0,     0,  -322,     9,
-    10,    11,     0,  -322,  -322,  -322,     0,     0,     0,  -322,
-  -322,     0,     0,     0,  -322,   230,     0,    14,     5,  -101,
-     7,    96,     0,     0,    41,   398,     9,    10,    11,     0,
-     0,     0,  -322,  -297,  -322,  -322,   576,  -322,  -322,  -322,
-     0,     0,    13,  -322,  -322,    15,  -322,     0,     0,     0,
-  -322,    14,  -322,  -322,  -322,  -322,  -322,  -322,  -322,  -322,
-  -322,  -322,  -322,     0,  -322,     0,  -322,     0,  -322,  -322,
-     0,   500,     0,     0,     0,  -322,     0,     0,  -322,     0,
-    43,     0,     0,  -322,  -322,  -322,     0,     0,     0,  -322,
-  -322,   231,  -259,   291,  -322,   292,     5,     6,     7,     8,
-     0,     0,   293,     0,     9,    10,    11,    59,    60,   190,
-   191,   192,  -322,     0,  -322,  -322,   608,  -322,  -332,  -332,
-    13,     0,    14,  -332,  -332,     0,  -332,     0,     0,     0,
-  -332,     0,  -332,  -332,  -332,  -332,  -332,  -332,  -332,  -332,
-  -332,  -332,  -332,     0,  -332,     0,  -332,     0,  -332,  -332,
-   166,   167,   168,   169,   170,  -332,     0,   109,  -332,     0,
-  -162,     0,     0,  -332,  -332,  -332,  -162,     0,  -382,  -332,
-  -332,   127,   128,   443,  -332,   444,    60,     9,    10,    11,
-    69,    70,     0,    71,     0,     0,     0,     0,     0,   110,
-   111,     0,  -332,     0,  -332,  -332,     0,  -332,     0,     0,
-     0,    72,     0,    15,     0,    73,    74,  -162,     0,     0,
-     0,  -162,    75,   171,   172,    76,   173,   174,   175,   176,
-    77,    78,    79,     0,     0,     0,    80,    81,     0,     0,
-   445,    82,   446,   443,     0,   444,    60,     0,     0,     0,
-    69,    70,     0,    71,     0,     0,     0,     0,     0,     0,
-  -190,    83,    84,     0,   447,     0,     0,     0,     0,     0,
-     0,    72,     0,    15,     0,    73,    74,     0,     0,     0,
-     0,     0,    75,     0,     0,    76,     0,     0,     0,     0,
-    77,    78,    79,     0,     0,     0,    80,    81,     0,     0,
-   445,    82,   446,   443,     0,   444,    60,     0,     0,     0,
-    69,    70,     0,    71,     0,     0,     0,     0,     0,     0,
-  -256,    83,    84,     0,   447,     0,     0,     0,     0,     0,
-     0,    72,     0,    15,     0,    73,    74,     0,     0,     0,
-     0,     0,    75,     0,     0,    76,     0,     0,     0,     0,
-    77,    78,    79,     0,     0,     0,    80,    81,     0,     0,
-   445,    82,   446,   419,     0,    68,     0,     0,     0,     0,
-    69,    70,     0,    71,   227,     0,     0,   -23,   -23,   -23,
-   -23,    83,    84,     0,   447,   -23,   -23,   -23,     0,     0,
-     0,    72,     0,    15,     0,    73,    74,     0,     0,     0,
-   109,   -23,    75,  -162,     0,    76,     0,     0,     0,  -162,
-    77,    78,    79,     0,     0,     0,    80,    81,     0,     0,
-     0,    82,   164,   165,   166,   167,   168,   169,   170,     0,
-    68,     0,   110,   111,     0,    69,    70,     0,    71,     0,
-     0,    83,    84,    68,   420,     0,     0,     0,    69,    70,
-  -162,    71,     0,     0,  -162,   -23,    72,     0,    15,     0,
-    73,    74,     0,     0,     0,     0,     0,    75,     0,    72,
-    76,    15,     0,    73,    74,    77,    78,    79,     0,     0,
-    75,    80,    81,    76,     0,     0,    82,     0,    77,    78,
-    79,     0,     0,     0,    80,    81,    68,     0,     0,    82,
-     0,    69,    70,     0,    71,     0,    83,    84,     0,    68,
-   206,     0,     0,     0,    69,    70,     0,    71,     0,    83,
-    84,     0,    72,   281,    15,     0,    73,    74,     0,     0,
-     0,     0,     0,    75,     0,    72,    76,    15,     0,    73,
-    74,    77,    78,    79,     0,     0,    75,    80,    81,    76,
-     0,     0,    82,     0,    77,    78,    79,     0,     0,     0,
-    80,    81,    68,     0,     0,    82,     0,    69,    70,     0,
-    71,     0,    83,    84,     0,     0,   317,     0,     0,     0,
-     0,     0,     0,     0,     0,    83,    84,     0,    72,   350,
-    15,     0,    73,    74,     0,     5,     6,     7,     8,    75,
-     0,     0,    76,     9,    10,    11,     0,    77,    78,    79,
-     0,     0,     0,    80,    81,     0,     0,     0,    82,    13,
-     0,    14,     0,     0,     0,     0,     5,     0,     7,   187,
-     0,     0,     0,     0,     9,    10,    11,     0,    83,    84,
-     0,     0,   503,   444,   514,     6,     7,     8,    69,    70,
-    13,    71,     9,    10,    11,   515,     0,   516,   517,   518,
-   519,   520,   521,   522,   523,   524,   525,   526,    13,    72,
-    14,    15,   180,    73,    74,     0,     5,     6,     7,     8,
-    75,   181,   182,    76,     9,    10,    11,     0,    77,    78,
-    79,     0,     0,     0,    80,    81,     0,     0,   291,    82,
-    13,     5,     6,     7,     8,     0,     0,   293,     0,     9,
-    10,    11,     0,     0,     0,     0,     0,   527,     0,    83,
-    84,     0,   246,   444,    60,    13,     0,    14,    69,    70,
-     0,    71,     0,     0,     0,   515,     0,   516,   517,   518,
-   519,   520,   521,   522,   523,   524,   525,   526,     0,    72,
-     0,    15,     0,    73,    74,     0,     0,     0,     0,     0,
-    75,     0,     0,    76,     0,     0,     0,     0,    77,    78,
-    79,     0,     0,  -382,    80,    81,     0,    68,     0,    82,
-     0,     0,    69,    70,     0,    71,   160,   161,   162,   163,
-   164,   165,   166,   167,   168,   169,   170,   527,     0,    83,
-    84,     0,   246,    72,     0,    15,     0,    73,    74,     0,
-     0,     0,     0,     0,    75,     0,     0,    76,     0,     0,
-     0,     0,    77,    78,    79,     0,     0,     0,    80,    81,
-     0,     0,     0,    82,    68,     5,     6,     7,     8,    69,
+    97,    47,    62,    64,    66,   123,   221,    31,    31,   120,
+    21,    21,    22,    22,    52,   224,   291,   214,   249,   286,
+   189,   316,   139,   140,   104,    49,    51,   321,   142,   318,
+   217,   135,   124,   131,   147,   276,    31,   471,   349,    21,
+   404,    22,   307,    53,   178,   429,   200,   642,   279,   504,
+   141,   367,   218,   589,  -102,   233,   177,    -1,    25,    25,
+    99,   235,    -2,   308,   662,    35,    36,    37,    14,   502,
+   598,    58,   208,    55,   288,    56,    46,   193,    54,   289,
+    32,    58,    58,    58,   198,   643,    38,    25,   202,    59,
+    60,   447,    58,   448,   557,   278,   224,   104,   674,    46,
+    58,   131,   663,    99,   134,   119,   494,    46,    67,    59,
+    60,   590,   241,   130,    59,    60,     5,   214,     7,   187,
+   633,   286,   188,   358,     9,    10,    11,   146,   214,    39,
+    59,    60,   247,    40,   214,  -102,   675,   277,   236,   646,
+    13,   509,   649,   283,   651,   347,   109,   594,   273,   274,
+   276,   102,   659,   312,    99,   142,   522,   315,   233,    46,
+   314,   131,   119,    46,   235,    58,   650,   470,    61,   317,
+   105,    99,   119,    99,   106,   322,    58,   575,   110,   111,
+    14,   130,   109,   328,   683,  -162,    41,   320,    63,  -269,
+  -269,  -162,   197,    65,   672,   253,    14,   254,   198,   338,
+    48,   365,   202,   609,   518,   327,   366,   329,   219,   462,
+   463,   209,   220,    14,  -105,  -105,  -105,  -105,   341,   241,
+  -105,   441,  -105,  -105,  -105,    41,   400,   136,   381,   197,
+   381,   425,  -162,   407,   427,   180,  -162,   323,  -105,   325,
+   414,   236,   402,   182,   181,   182,   353,    41,   400,   227,
+   516,   617,    14,   106,   476,    14,   188,    99,   459,   138,
+   397,    25,    58,   131,   193,   398,   510,   148,   486,   279,
+   554,   491,   401,   119,    14,   149,   119,   119,   177,   406,
+   409,   402,   182,    41,   110,   111,   203,   197,    52,   179,
+   461,    41,  -105,   506,   401,   442,   681,   186,   149,   360,
+   361,   682,   372,   402,   182,   363,   241,   230,   476,   364,
+    14,     5,     6,     7,     8,   180,   460,    53,    14,     9,
+    10,    11,   467,   238,   181,   182,   245,   347,   430,   431,
+   407,   373,   432,   381,   347,    13,   246,    25,    42,   402,
+   182,   405,   408,   442,   483,   492,   247,    43,   484,   464,
+   465,   466,    54,   468,   469,   514,   251,   209,   250,   220,
+  -324,  -324,  -324,  -324,   434,    41,   114,   542,  -324,  -324,
+  -324,   -82,   472,   110,   111,   416,   418,   290,   482,   109,
+   225,   226,   515,   104,  -324,    70,   106,   629,   305,   481,
+   199,   220,    14,   419,   631,   542,   131,   313,   106,   473,
+   480,     5,   231,     7,   187,     5,   304,     7,    96,     9,
+    10,    11,   115,     9,    10,    11,   403,    46,   284,   285,
+    25,   116,   495,   558,   513,    13,   519,   311,   644,    13,
+   645,   240,    15,    59,    60,   348,    59,    60,  -101,   330,
+   231,   198,   202,     5,   324,     7,    96,   180,   198,    58,
+   131,     9,    10,    11,   331,   538,   181,   182,    46,   520,
+   142,   334,   562,   336,    41,   114,    25,    13,   197,   537,
+    15,    41,   119,   342,    46,   197,    33,    34,   232,  -261,
+   339,   225,   226,   538,   340,   119,   345,   677,   110,   111,
+   542,    14,  -267,  -267,   574,   685,   346,   537,    14,   551,
+   178,   350,   540,   354,   541,   389,   224,   359,   595,   576,
+   362,   115,   168,   169,   170,   376,   403,   403,    42,   377,
+   116,    41,   114,    46,   383,   596,   384,    43,   599,   602,
+   665,   666,   387,    52,   394,   214,   606,   214,   612,   198,
+   284,   285,   611,   396,   582,   584,   305,   485,    14,   413,
+    25,   618,    41,   400,   462,   463,   551,   415,   621,   540,
+   433,   541,    53,   109,   399,   614,  -162,   428,   115,   628,
+   252,  -303,  -162,   151,   153,   255,   256,   116,   538,    14,
+   261,   262,   263,   264,   265,   266,   267,   268,   269,   270,
+   271,   272,   537,   490,   -31,   110,   111,    54,   222,   508,
+   599,   -19,   -19,   -19,   -19,   498,   499,    25,    43,   -19,
+   -19,   -19,   500,  -162,   403,   171,   172,  -162,   173,   174,
+   175,   176,   668,   521,   109,   -19,   560,  -162,   599,   561,
+   -32,   564,   567,  -162,   568,   571,   570,   623,   119,   572,
+    46,   577,   579,   209,   585,  -114,  -114,  -114,  -114,  -114,
+  -114,  -114,   593,  -114,  -114,  -114,  -114,  -114,   580,  -114,
+  -114,  -114,  -114,  -114,  -114,  -114,  -114,  -114,  -114,  -114,
+  -114,  -114,  -114,  -114,  -162,  -114,  -114,   581,  -162,   -19,
+   343,   344,  -114,    41,   400,  -114,   597,   197,   605,   607,
+  -114,  -114,  -114,   620,   608,   622,  -114,  -114,   624,   171,
+   172,  -114,   173,   174,   175,   176,   126,   127,   128,   625,
+    14,   652,   636,     9,    10,    11,   627,   637,   661,  -114,
+  -114,  -114,  -114,   292,  -114,   293,     5,     6,     7,     8,
+   508,    14,   294,   647,     9,    10,    11,   656,   660,    43,
+   161,   162,   163,   164,   165,   166,   167,   168,   169,   170,
+    13,   385,    14,   664,   436,   673,  -324,  -324,  -324,  -324,
+  -324,  -324,  -324,   395,  -324,  -324,  -324,  -324,  -324,   670,
+  -324,  -324,  -324,  -324,  -324,  -324,  -324,  -324,  -324,  -324,
+  -324,  -324,  -324,  -324,  -324,   676,  -324,  -324,    59,    60,
+   190,   191,   192,  -324,   679,   423,  -324,   684,  -384,   687,
+   688,  -324,  -324,  -324,   357,   600,   309,  -324,  -324,   487,
+   591,   125,  -324,   474,   451,   355,   292,   287,   478,     5,
+     6,     7,     8,   388,   556,   294,   503,     9,    10,    11,
+  -324,   326,  -324,  -324,   209,  -324,  -324,  -324,   382,   479,
+   333,  -324,  -324,    13,  -324,    14,   444,   423,  -324,   493,
+  -324,  -324,  -324,  -324,  -324,  -324,  -324,  -324,  -324,  -324,
+  -324,   386,  -324,   488,  -324,   634,  -324,  -324,   635,   496,
+   669,   671,   351,  -324,   412,     0,  -324,     0,   451,   505,
+     0,  -324,  -324,  -324,     0,     0,     0,  -324,  -324,     0,
+     0,  -384,  -324,     0,     0,   475,   127,   128,   451,   127,
+   128,   517,     9,    10,    11,     9,    10,    11,     0,     0,
+  -324,  -299,  -324,  -324,     0,  -324,     0,     0,   451,     0,
+     0,   451,     0,   451,     5,    55,     7,    56,     0,     0,
+     0,     0,     9,    10,    11,   586,     0,  -324,  -324,   563,
+     0,     0,  -324,  -324,     0,  -324,     0,     0,    13,  -324,
+   569,  -324,  -324,  -324,  -324,  -324,  -324,  -324,  -324,  -324,
+  -324,  -324,     0,  -324,     0,  -324,     0,  -324,  -324,     0,
+     0,     0,     0,   592,  -324,     0,   451,  -324,     0,     0,
+     0,     0,  -324,  -324,  -324,     0,     0,     0,  -324,  -324,
+     0,     0,     0,  -324,     0,     0,     0,   417,   158,   159,
+   160,   161,   162,   163,   164,   165,   166,   167,   168,   169,
+   170,  -324,     0,  -324,  -324,   615,  -324,  -334,  -334,     0,
+     0,     0,  -334,  -334,   626,  -334,     0,     0,     0,  -334,
+     0,  -334,  -334,  -334,  -334,  -334,  -334,  -334,  -334,  -334,
+  -334,  -334,     0,  -334,     0,  -334,     0,  -334,  -334,   166,
+   167,   168,   169,   170,  -334,     0,     0,  -334,     0,     0,
+     0,     0,  -334,  -334,  -334,     0,     0,     0,  -334,  -334,
+     0,     0,   143,  -334,    68,     5,     0,     7,    96,    69,
     70,     0,    71,     9,    10,    11,     0,     0,     0,     0,
-     0,     0,     0,    83,    84,     0,   335,     0,     0,    13,
-    72,    14,    15,     0,    73,    74,     0,     0,     0,     0,
+     0,  -334,     0,  -334,  -334,     0,  -334,     0,     0,    13,
+    72,     0,    15,     0,    73,    74,     0,     0,     0,     0,
      0,    75,     0,     0,    76,     0,     0,     0,     0,    77,
-    78,    79,     0,     0,     0,    80,    81,     0,    68,     5,
-    82,     7,    96,    69,    70,     0,    71,     9,    10,    11,
+    78,    79,     0,     0,     0,    80,    81,     0,     0,   445,
+    82,   446,    60,     0,     0,     0,    69,    70,     0,    71,
+     0,     0,     0,     0,     0,     0,     5,     6,     7,     8,
+    83,    84,   411,   -91,     9,    10,    11,    72,     0,    15,
+     0,    73,    74,     0,     0,     0,     0,     0,    75,     0,
+    13,    76,    14,     0,     0,     0,    77,    78,    79,     0,
+     0,     0,    80,    81,     0,     0,   447,    82,   448,   445,
+     0,   446,    60,     0,     0,     0,    69,    70,     0,    71,
+     0,     0,     0,     0,     0,     0,  -190,    83,    84,     0,
+   449,     0,     0,     0,     0,     0,     0,    72,     0,    15,
+     0,    73,    74,     0,     0,     0,     0,     0,    75,     0,
+     0,    76,     0,     0,     0,     0,    77,    78,    79,     0,
+     0,     0,    80,    81,     0,     0,   447,    82,   448,   445,
+     0,    68,     0,     0,     0,     0,    69,    70,     0,    71,
+     0,     0,     0,     0,     0,     0,  -258,    83,    84,     0,
+   449,     0,     0,     0,     0,     0,     0,    72,     0,    15,
+     0,    73,    74,     0,  -203,     0,     0,     0,    75,     0,
+     0,    76,     0,     0,     0,     0,    77,    78,    79,     0,
+     0,     0,    80,    81,     0,     0,  -203,    82,  -203,   421,
      0,    68,     0,     0,     0,     0,    69,    70,     0,    71,
-    83,    84,     0,    13,    72,     0,    15,     0,    73,    74,
-     0,     0,     0,     0,     0,    75,     0,    72,    76,    15,
-     0,    73,    74,    77,    78,    79,     0,     0,    75,    80,
-    81,    76,     0,     0,    82,     0,    77,    78,    79,     0,
-     0,     0,    80,    81,    68,     0,     0,    82,     0,    69,
-    70,     0,    71,     0,    83,    84,   162,   163,   164,   165,
-   166,   167,   168,   169,   170,   563,     0,    83,    84,     0,
+     0,     0,     0,     5,     6,     7,     8,    83,    84,     0,
+   449,     9,    10,    11,     0,     0,     0,    72,     0,    15,
+     0,    73,    74,     0,     0,     0,     0,    13,    75,    14,
+     0,    76,     0,     0,     0,     0,    77,    78,    79,     0,
+     0,     0,    80,    81,   445,     0,    68,    82,     0,     0,
+     0,    69,    70,   108,    71,     0,   -27,   -27,   -27,   -27,
+     0,     0,     0,     0,   -27,   -27,   -27,    83,    84,     0,
+   422,     0,    72,     0,    15,     0,    73,    74,     0,   109,
+   -27,     0,  -162,    75,     0,     0,    76,     0,  -162,     0,
+     0,    77,    78,    79,     0,     0,     0,    80,    81,     0,
+     0,     0,    82,   163,   164,   165,   166,   167,   168,   169,
+   170,   110,   111,     0,     0,   228,     0,     0,   -23,   -23,
+   -23,   -23,    83,    84,     0,   449,   -23,   -23,   -23,  -162,
+    68,     0,     0,  -162,   -27,    69,    70,     0,    71,     0,
+     0,   109,   -23,     0,  -162,     0,     0,     0,     0,     0,
+  -162,     0,     0,     0,     0,     0,    72,    68,    15,     0,
+    73,    74,    69,    70,     0,    71,     0,    75,     0,     0,
+    76,     0,     0,   110,   111,    77,    78,   206,     0,     0,
+     0,    80,    81,    72,     0,    15,    82,    73,    74,     0,
+     0,  -162,     0,     0,    75,  -162,   -23,    76,     0,     0,
+     0,     0,    77,    78,    79,     0,    83,    84,    80,    81,
+   207,     0,    68,    82,     0,     0,     0,    69,    70,     0,
+    71,   159,   160,   161,   162,   163,   164,   165,   166,   167,
+   168,   169,   170,    83,    84,     0,     0,   282,    72,    68,
+    15,     0,    73,    74,    69,    70,     0,    71,     0,    75,
+     0,     0,    76,     0,     0,     0,     0,    77,    78,    79,
+     0,     0,     0,    80,    81,    72,     0,    15,    82,    73,
+    74,     0,     0,     0,     0,     0,    75,     0,     0,    76,
+     0,     0,     0,     0,    77,    78,    79,     0,    83,    84,
+    80,    81,   303,     0,    68,    82,     0,     0,     0,    69,
+    70,     0,    71,   160,   161,   162,   163,   164,   165,   166,
+   167,   168,   169,   170,     0,    83,    84,     0,     0,   319,
     72,    68,    15,     0,    73,    74,    69,    70,     0,    71,
      0,    75,     0,     0,    76,     0,     0,     0,     0,    77,
-    78,    79,     0,     0,     0,    80,    81,    72,    68,    15,
-    82,    73,    74,    69,    70,     0,    71,     0,    75,     0,
+    78,    79,     0,     0,     0,    80,    81,    72,     0,    15,
+    82,    73,    74,     0,     0,     0,     0,     0,    75,     0,
+     0,    76,     0,     0,     0,     0,    77,    78,   511,     0,
+    83,    84,    80,    81,   352,     0,    68,    82,     0,     0,
+     0,    69,    70,     0,    71,   162,   163,   164,   165,   166,
+   167,   168,   169,   170,     0,     0,     0,    83,    84,     0,
+     0,   512,    72,     0,    15,     0,    73,    74,   603,     0,
+     0,     0,     0,    75,     0,     0,    76,     0,     0,     0,
+     0,    77,    78,    79,     0,     0,     0,    80,    81,     0,
+     0,     0,    82,   154,   155,   156,   604,   157,   158,   159,
+   160,   161,   162,   163,   164,   165,   166,   167,   168,   169,
+   170,     0,    83,    84,     0,     0,   559,   446,   523,     6,
+     7,     8,    69,    70,     0,    71,     9,    10,    11,   524,
+     0,   525,   526,   527,   528,   529,   530,   531,   532,   533,
+   534,   535,    13,    72,    14,    15,     0,    73,    74,     0,
+     0,     0,     0,     0,    75,     0,     0,    76,     0,     0,
+     0,     0,    77,    78,    79,    14,     0,     0,    80,    81,
+   154,   155,   156,    82,   157,   158,   159,   160,   161,   162,
+   163,   164,   165,   166,   167,   168,   169,   170,     0,     0,
+     0,   536,     0,    83,    84,     0,   247,   446,    60,     0,
+     0,     0,    69,    70,     0,    71,     0,     0,     0,   524,
+     0,   525,   526,   527,   528,   529,   530,   531,   532,   533,
+   534,   535,     0,    72,     0,    15,     0,    73,    74,     0,
+     0,     0,     0,     0,    75,     0,     0,    76,     0,     0,
+     0,     0,    77,    78,    79,     0,     0,     0,    80,    81,
+     0,    68,     0,    82,     0,     0,    69,    70,     0,    71,
+   164,   165,   166,   167,   168,   169,   170,     0,     0,     0,
+     0,   536,     0,    83,    84,     0,   247,    72,     0,    15,
+     0,    73,    74,     0,     0,     0,     0,     0,    75,     0,
      0,    76,     0,     0,     0,     0,    77,    78,    79,     0,
-    83,    84,    80,    81,    72,   354,    15,   150,    73,    74,
+     0,     0,    80,    81,     0,     0,     0,    82,    68,     5,
+     6,     7,     8,    69,    70,     0,    71,     9,    10,    11,
+     0,     0,     0,     0,     0,     0,     0,    83,    84,     0,
+   337,     0,     0,    13,    72,    14,    15,     0,    73,    74,
+     0,     0,     0,     0,     0,    75,     0,     0,    76,     0,
+     0,     0,     0,    77,    78,    79,     0,     0,     0,    80,
+    81,     0,    68,     5,    82,     7,    96,    69,    70,     0,
+    71,     9,    10,    11,     0,    68,     0,     0,     0,     0,
+    69,    70,     0,    71,    83,    84,     0,    13,    72,     0,
+    15,     0,    73,    74,     0,     0,     0,     0,     0,    75,
+     0,    72,    76,    15,     0,    73,    74,    77,    78,    79,
+     0,     0,    75,    80,    81,    76,     0,     0,    82,     0,
+    77,    78,    79,     0,     0,     0,    80,    81,    68,     0,
+     0,    82,     0,    69,    70,     0,    71,     0,    83,    84,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,   573,
+     0,    83,    84,     0,    72,    68,    15,     0,    73,    74,
     69,    70,     0,    71,     0,    75,     0,     0,    76,     0,
-     0,     0,     0,    77,    78,    79,     0,    83,    84,    80,
-    81,    72,     0,    15,   152,    73,    74,     0,     0,     0,
-     0,     0,    75,     0,     0,    76,     0,     0,     0,     0,
-    77,    78,    79,     0,    83,    84,    80,    81,     0,     0,
-     4,    82,  -118,     5,     6,     7,     8,     5,     0,     7,
-   187,     9,    10,    11,     0,     9,    10,    11,     0,     0,
-     0,    83,    84,     0,     0,     0,    12,    13,     0,    14,
-    15,    13,     0,     0,     0,     5,     6,     7,     8,     0,
-     0,     0,     0,     9,    10,    11,     0,     0,     0,  -118,
-     0,     0,     0,     0,     0,     0,     0,   544,  -118,    13,
-   156,    14,   157,   158,   159,   160,   161,   162,   163,   164,
-   165,   166,   167,   168,   169,   170,    16,     0,     0,     0,
-  -267,  -267,   154,   155,   156,     0,   157,   158,   159,   160,
+     0,     0,     0,    77,    78,    79,     0,     0,     0,    80,
+    81,    72,    68,    15,    82,    73,    74,    69,    70,     0,
+    71,     0,    75,     0,     0,    76,     0,     0,     0,     0,
+    77,    78,    79,     0,    83,    84,    80,    81,    72,   356,
+    15,   150,    73,    74,    69,    70,     0,    71,     0,    75,
+     0,     0,    76,     0,     0,     0,     0,    77,    78,    79,
+     0,    83,    84,    80,    81,    72,     0,    15,   152,    73,
+    74,     0,     0,     0,     0,     0,    75,     0,     0,    76,
+     0,     0,     0,     0,    77,    78,    79,     0,    83,    84,
+    80,    81,     0,     0,     4,    82,  -118,     5,     6,     7,
+     8,     0,     0,     0,     0,     9,    10,    11,     0,     0,
+     0,     0,     0,     0,     0,    83,    84,     0,     0,     0,
+    12,    13,     0,    14,    15,     5,     6,     7,     8,     5,
+     6,     7,     8,     9,    10,    11,     0,     9,    10,    11,
+     0,     0,   552,  -118,     0,     0,     0,     0,     0,    13,
+     0,    14,  -118,    13,     0,    14,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,   154,   155,   156,
+    16,   157,   158,   159,   160,   161,   162,   163,   164,   165,
+   166,   167,   168,   169,   170,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,    50,     0,
+     0,     0,   583,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,   154,   155,   156,   553,   157,   158,   159,   160,
    161,   162,   163,   164,   165,   166,   167,   168,   169,   170,
-     0,     0,     0,     0,     0,   154,   155,   156,   573,   157,
-   158,   159,   160,   161,   162,   163,   164,   165,   166,   167,
-   168,   169,   170,     0,     0,     0,    14,     0,     0,   596,
-   545,   154,   155,   156,     0,   157,   158,   159,   160,   161,
-   162,   163,   164,   165,   166,   167,   168,   169,   170,     0,
-     0,     0,     0,   613,   154,   155,   156,   597,   157,   158,
-   159,   160,   161,   162,   163,   164,   165,   166,   167,   168,
-   169,   170,   230,     0,     0,     5,     0,     7,    96,     0,
-     0,     0,     0,     9,    10,    11,   158,   159,   160,   161,
-   162,   163,   164,   165,   166,   167,   168,   169,   170,    13,
-     0,     0,    15,   154,   155,   156,   639,   157,   158,   159,
-   160,   161,   162,   163,   164,   165,   166,   167,   168,   169,
-   170,   154,   155,   156,     0,   157,   158,   159,   160,   161,
-   162,   163,   164,   165,   166,   167,   168,   169,   170,   159,
+   154,   155,   156,   641,   157,   158,   159,   160,   161,   162,
+   163,   164,   165,   166,   167,   168,   169,   170,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,   154,   155,   156,
+   619,   157,   158,   159,   160,   161,   162,   163,   164,   165,
+   166,   167,   168,   169,   170,   156,     0,   157,   158,   159,
    160,   161,   162,   163,   164,   165,   166,   167,   168,   169,
-   170,   161,   162,   163,   164,   165,   166,   167,   168,   169,
    170
 };
 
 static const short yycheck[] = {    38,
-    39,    51,    27,    28,    29,    49,    20,     2,     3,     2,
-     3,   112,     2,     3,     2,     3,   115,   222,   120,     9,
-    10,    11,    22,   228,   203,   119,   145,   414,    57,    43,
-    20,   101,    22,   185,   224,   181,    31,    51,    31,    63,
-    22,    31,   106,    31,   379,   280,   358,    21,    22,     1,
-    75,   175,     1,    43,     7,    82,     1,    39,    10,    49,
-   133,    51,    73,    74,   133,     9,   210,    57,    79,    50,
-   495,   116,   111,    38,    85,     3,    27,   102,    59,    60,
-    38,   180,     3,     4,    95,     3,     4,    59,    60,   103,
-     3,     4,     0,   107,   637,   472,   125,    50,    38,   201,
-    82,   556,   116,    31,    76,   440,    59,    60,    59,    60,
-   211,    76,   137,   103,    59,   492,   106,   107,    76,   101,
-    30,   222,   547,   150,   667,   152,   116,   228,    38,    25,
-    82,   277,    76,    82,   286,   125,    76,   176,   133,    35,
-    36,    37,   373,   182,   456,   376,     3,     4,   173,   174,
-    46,   133,   487,     0,   609,   219,   185,   582,    54,    30,
-   585,    82,   235,    77,    82,   289,   235,    76,   150,    82,
-   152,   216,    81,   408,   223,   220,   631,    76,    30,    76,
-   229,   636,    81,   638,    81,   572,   225,    77,   237,   614,
-    77,    81,   647,    50,    81,     4,     5,     6,     7,    59,
-    60,    59,   216,    12,    13,    14,   220,    59,    60,     3,
-     4,    76,   236,     7,   238,   205,    76,   256,   243,    28,
-   321,   646,   323,   119,    59,   680,   216,    77,    76,   219,
-   220,    81,    30,    81,   130,    77,    30,    77,   249,    81,
-   235,    81,   577,    76,   388,   284,   365,    77,    81,    77,
-    78,    81,   234,   235,   400,    77,    50,   286,   232,    81,
-   234,    59,    60,   288,   149,    59,   418,   457,    77,   154,
-   155,     3,   396,    59,   159,   160,   161,   162,   163,   164,
-   165,   166,   167,   168,   169,   170,    59,   388,   358,   359,
-   280,   435,     3,     4,   438,   295,     3,     4,    30,    77,
-   399,    59,    60,    81,   329,   295,   405,   401,   308,   455,
-    77,    59,    60,   295,    81,    81,   462,   469,    50,   215,
-   294,   295,     5,    30,     7,   426,   308,    59,    60,     3,
-     4,    38,   381,   382,     9,   436,   385,   438,    82,     4,
-     5,     6,     7,    50,   358,   359,    82,    12,    13,    14,
-     3,     4,    59,   402,   403,   404,    30,   406,   407,    50,
-    51,    52,   387,    28,    82,    30,   416,    76,   358,   359,
-   489,    76,   362,   258,   259,    27,    50,    30,    30,    59,
-    60,    59,   431,   427,    36,    59,   400,     1,   370,   418,
-     4,     5,     6,     7,   513,   369,   370,    50,    12,    13,
-    14,   500,   416,    76,     3,     4,    59,    60,     7,    78,
-   400,    78,    77,    27,    28,    76,    30,    76,   408,   458,
-   445,   626,    36,   628,   414,    77,   416,   476,    82,    81,
-     3,    30,    59,    60,     7,    77,     1,   427,     3,     4,
-   469,   455,   456,   328,    38,    59,    60,    59,   462,    76,
-   489,    50,    77,    78,   479,   340,    27,    30,     9,   508,
-    59,    60,    83,    77,   489,   455,   456,    81,    82,    77,
-    78,    77,   462,    36,   513,    54,    55,    50,    57,    58,
-    59,    60,    59,    60,    77,   524,    59,   372,   513,     3,
-    36,   610,    81,     7,   489,   674,   489,    76,    78,   489,
-   525,   489,   604,   682,   553,   401,   391,    45,    46,    47,
-    48,    49,    50,    51,    52,   554,    30,    76,   557,   558,
-    89,    90,    76,    76,   574,   626,   565,   628,   572,    38,
-    36,   542,   532,    76,    83,   549,    50,   656,   657,   424,
-    76,   580,   532,    83,    76,    59,    60,   542,    76,   542,
-   532,   590,   542,    83,   542,    78,     3,   531,   532,   549,
-   574,   446,   601,    78,    32,    78,    38,     1,   453,     3,
-     4,   610,     6,     7,     8,     9,    83,    11,    12,    13,
-    14,    76,   572,    30,   574,   610,     3,   472,    77,    81,
-   475,    78,    78,    78,    28,    29,    38,    31,   637,    33,
-    34,    38,    78,    50,    81,    78,    40,   492,    36,    43,
-   495,    78,    59,    83,    48,    49,    50,    38,    59,    59,
-    54,    55,   661,    59,   509,    59,     1,    38,   667,     4,
-     5,     6,     7,    77,    77,   520,     7,    12,    13,    14,
-    38,     4,     5,     6,     7,    79,    80,    10,    82,    12,
-    13,    14,    27,    28,    77,    30,    16,    77,    36,   544,
-    78,    36,   547,    59,    77,    28,     1,    30,     3,     4,
-     5,     6,     7,     8,     9,    77,    11,    12,    13,    14,
-    15,    76,    17,    18,    19,    20,    21,    22,    23,    24,
-    25,    26,    27,    28,    29,    30,    31,   582,    33,    34,
-   585,    59,    77,    17,    77,    40,    81,    82,    43,    76,
-    76,   596,    77,    48,    49,    50,    36,    76,     9,    54,
-    55,    77,    77,    77,    59,    59,     0,    77,     1,   614,
-    81,     4,     5,     6,     7,    76,    76,    10,    77,    12,
-    13,    14,    77,    78,    79,    80,     1,    82,     3,     4,
-     5,     6,     7,     8,     9,    28,    11,    12,    13,    14,
-    15,   646,    17,    18,    19,    20,    21,    22,    23,    24,
-    25,    26,    27,    28,    29,    30,    31,    77,    33,    34,
-   557,     0,   211,     3,     4,    40,   289,     7,    43,     5,
-     6,     7,   436,    48,    49,    50,    12,    13,    14,    54,
-    55,   542,    53,   188,    59,   288,   417,   424,     1,    82,
-    30,     4,     5,     6,     7,   331,   235,   426,   323,    12,
-    13,    14,    77,   436,    79,    80,     1,    82,     3,     4,
-    50,   243,   329,     8,     9,    28,    11,   389,   438,    59,
-    15,   610,    17,    18,    19,    20,    21,    22,    23,    24,
-    25,    26,    27,   610,    29,   662,    31,   283,    33,    34,
-   664,   362,     5,     6,     7,    40,    -1,    -1,    43,    12,
-    13,    14,    -1,    48,    49,    50,    -1,    -1,    -1,    54,
-    55,    -1,    -1,    -1,    59,     1,    -1,    30,     4,    82,
-     6,     7,    -1,    -1,     3,     4,    12,    13,    14,    -1,
-    -1,    -1,    77,    78,    79,    80,     1,    82,     3,     4,
-    -1,    -1,    28,     8,     9,    31,    11,    -1,    -1,    -1,
-    15,    30,    17,    18,    19,    20,    21,    22,    23,    24,
-    25,    26,    27,    -1,    29,    -1,    31,    -1,    33,    34,
-    -1,    50,    -1,    -1,    -1,    40,    -1,    -1,    43,    -1,
-    59,    -1,    -1,    48,    49,    50,    -1,    -1,    -1,    54,
-    55,    77,    78,     1,    59,     3,     4,     5,     6,     7,
-    -1,    -1,    10,    -1,    12,    13,    14,     3,     4,     5,
-     6,     7,    77,    -1,    79,    80,     1,    82,     3,     4,
-    28,    -1,    30,     8,     9,    -1,    11,    -1,    -1,    -1,
-    15,    -1,    17,    18,    19,    20,    21,    22,    23,    24,
-    25,    26,    27,    -1,    29,    -1,    31,    -1,    33,    34,
-    48,    49,    50,    51,    52,    40,    -1,    27,    43,    -1,
-    30,    -1,    -1,    48,    49,    50,    36,    -1,    76,    54,
-    55,     6,     7,     1,    59,     3,     4,    12,    13,    14,
-     8,     9,    -1,    11,    -1,    -1,    -1,    -1,    -1,    59,
-    60,    -1,    77,    -1,    79,    80,    -1,    82,    -1,    -1,
-    -1,    29,    -1,    31,    -1,    33,    34,    77,    -1,    -1,
-    -1,    81,    40,    54,    55,    43,    57,    58,    59,    60,
-    48,    49,    50,    -1,    -1,    -1,    54,    55,    -1,    -1,
-    58,    59,    60,     1,    -1,     3,     4,    -1,    -1,    -1,
-     8,     9,    -1,    11,    -1,    -1,    -1,    -1,    -1,    -1,
-    78,    79,    80,    -1,    82,    -1,    -1,    -1,    -1,    -1,
-    -1,    29,    -1,    31,    -1,    33,    34,    -1,    -1,    -1,
-    -1,    -1,    40,    -1,    -1,    43,    -1,    -1,    -1,    -1,
-    48,    49,    50,    -1,    -1,    -1,    54,    55,    -1,    -1,
-    58,    59,    60,     1,    -1,     3,     4,    -1,    -1,    -1,
-     8,     9,    -1,    11,    -1,    -1,    -1,    -1,    -1,    -1,
-    78,    79,    80,    -1,    82,    -1,    -1,    -1,    -1,    -1,
-    -1,    29,    -1,    31,    -1,    33,    34,    -1,    -1,    -1,
-    -1,    -1,    40,    -1,    -1,    43,    -1,    -1,    -1,    -1,
-    48,    49,    50,    -1,    -1,    -1,    54,    55,    -1,    -1,
-    58,    59,    60,     1,    -1,     3,    -1,    -1,    -1,    -1,
-     8,     9,    -1,    11,     1,    -1,    -1,     4,     5,     6,
-     7,    79,    80,    -1,    82,    12,    13,    14,    -1,    -1,
-    -1,    29,    -1,    31,    -1,    33,    34,    -1,    -1,    -1,
-    27,    28,    40,    30,    -1,    43,    -1,    -1,    -1,    36,
-    48,    49,    50,    -1,    -1,    -1,    54,    55,    -1,    -1,
-    -1,    59,    46,    47,    48,    49,    50,    51,    52,    -1,
-     3,    -1,    59,    60,    -1,     8,     9,    -1,    11,    -1,
-    -1,    79,    80,     3,    82,    -1,    -1,    -1,     8,     9,
-    77,    11,    -1,    -1,    81,    82,    29,    -1,    31,    -1,
-    33,    34,    -1,    -1,    -1,    -1,    -1,    40,    -1,    29,
-    43,    31,    -1,    33,    34,    48,    49,    50,    -1,    -1,
-    40,    54,    55,    43,    -1,    -1,    59,    -1,    48,    49,
-    50,    -1,    -1,    -1,    54,    55,     3,    -1,    -1,    59,
-    -1,     8,     9,    -1,    11,    -1,    79,    80,    -1,     3,
-    83,    -1,    -1,    -1,     8,     9,    -1,    11,    -1,    79,
-    80,    -1,    29,    83,    31,    -1,    33,    34,    -1,    -1,
-    -1,    -1,    -1,    40,    -1,    29,    43,    31,    -1,    33,
-    34,    48,    49,    50,    -1,    -1,    40,    54,    55,    43,
-    -1,    -1,    59,    -1,    48,    49,    50,    -1,    -1,    -1,
-    54,    55,     3,    -1,    -1,    59,    -1,     8,     9,    -1,
-    11,    -1,    79,    80,    -1,    -1,    83,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    79,    80,    -1,    29,    83,
-    31,    -1,    33,    34,    -1,     4,     5,     6,     7,    40,
-    -1,    -1,    43,    12,    13,    14,    -1,    48,    49,    50,
-    -1,    -1,    -1,    54,    55,    -1,    -1,    -1,    59,    28,
-    -1,    30,    -1,    -1,    -1,    -1,     4,    -1,     6,     7,
-    -1,    -1,    -1,    -1,    12,    13,    14,    -1,    79,    80,
-    -1,    -1,    83,     3,     4,     5,     6,     7,     8,     9,
-    28,    11,    12,    13,    14,    15,    -1,    17,    18,    19,
-    20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
-    30,    31,    50,    33,    34,    -1,     4,     5,     6,     7,
-    40,    59,    60,    43,    12,    13,    14,    -1,    48,    49,
-    50,    -1,    -1,    -1,    54,    55,    -1,    -1,     1,    59,
-    28,     4,     5,     6,     7,    -1,    -1,    10,    -1,    12,
-    13,    14,    -1,    -1,    -1,    -1,    -1,    77,    -1,    79,
-    80,    -1,    82,     3,     4,    28,    -1,    30,     8,     9,
-    -1,    11,    -1,    -1,    -1,    15,    -1,    17,    18,    19,
-    20,    21,    22,    23,    24,    25,    26,    27,    -1,    29,
-    -1,    31,    -1,    33,    34,    -1,    -1,    -1,    -1,    -1,
-    40,    -1,    -1,    43,    -1,    -1,    -1,    -1,    48,    49,
-    50,    -1,    -1,    76,    54,    55,    -1,     3,    -1,    59,
-    -1,    -1,     8,     9,    -1,    11,    42,    43,    44,    45,
-    46,    47,    48,    49,    50,    51,    52,    77,    -1,    79,
-    80,    -1,    82,    29,    -1,    31,    -1,    33,    34,    -1,
-    -1,    -1,    -1,    -1,    40,    -1,    -1,    43,    -1,    -1,
+    39,    20,    27,    28,    29,    51,   119,     2,     3,    49,
+     2,     3,     2,     3,    22,   120,   203,   112,   145,   185,
+   101,   223,    73,    74,    43,    21,    22,   229,    79,   225,
+   115,    63,    51,    57,    85,   175,    31,   416,   281,    31,
+   360,    31,   211,    22,    95,   381,   106,    38,   181,   457,
+    75,     1,   116,     1,     1,   133,     9,     0,     2,     3,
+    39,   133,     0,    10,    38,     9,    10,    11,    30,    36,
+   566,    25,   111,     5,    76,     7,    20,   102,    22,    81,
+     3,    35,    36,    37,   103,    76,    59,    31,   107,     3,
+     4,    58,    46,    60,   502,   180,   201,   116,    38,    43,
+    54,   125,    76,    82,    82,    49,   442,    51,    31,     3,
+     4,    59,   137,    57,     3,     4,     4,   212,     6,     7,
+   616,   287,   101,    76,    12,    13,    14,    82,   223,    59,
+     3,     4,    82,    59,   229,    82,    76,   176,   133,   635,
+    28,   461,   638,   182,   640,   278,    27,   555,   173,   174,
+   290,    59,   648,   217,   133,   206,   492,   221,   236,   103,
+   220,   185,   106,   107,   236,   119,   639,   410,    82,   224,
+    77,   150,   116,   152,    81,   230,   130,    50,    59,    60,
+    30,   125,    27,   238,   680,    30,     3,   226,    82,    77,
+    78,    36,     7,    82,   667,   150,    30,   152,   217,   250,
+    77,    76,   221,   582,    38,   237,    81,   239,    77,    59,
+    60,     1,    81,    30,     4,     5,     6,     7,   257,   244,
+    10,   390,    12,    13,    14,     3,     4,    82,   323,     7,
+   325,   375,    77,    50,   378,    50,    81,   233,    28,   235,
+   367,   236,    59,    60,    59,    60,   285,     3,     4,    77,
+   477,   587,    30,    81,   420,    30,   235,   236,   398,    82,
+    76,   205,   216,   287,   289,    81,   462,    76,   437,   402,
+   497,   440,    50,   217,    30,    81,   220,   221,     9,   360,
+   361,    59,    60,     3,    59,    60,    59,     7,   296,    76,
+   403,     3,    82,    76,    50,   390,    76,    76,    81,   295,
+   296,    81,   310,    59,    60,    77,   331,    78,   474,    81,
+    30,     4,     5,     6,     7,    50,   401,   296,    30,    12,
+    13,    14,   407,    78,    59,    60,    76,   460,   383,   384,
+    50,   310,   387,   428,   467,    28,    76,   281,    50,    59,
+    60,   360,   361,   438,    77,   440,    82,    59,    81,   404,
+   405,   406,   296,   408,   409,    77,    77,     1,    76,    81,
+     4,     5,     6,     7,   389,     3,     4,   494,    12,    13,
+    14,    38,   418,    59,    60,   371,   372,    59,   433,    27,
+    59,    60,    77,   402,    28,     9,    81,    77,    77,   429,
+    76,    81,    30,   372,    77,   522,   420,    76,    81,   418,
+    38,     4,     1,     6,     7,     4,    83,     6,     7,    12,
+    13,    14,    50,    12,    13,    14,   360,   361,    59,    60,
+   364,    59,   447,   508,   463,    28,   481,    36,   630,    28,
+   632,     1,    31,     3,     4,    76,     3,     4,    82,    36,
+     1,   460,   461,     4,    77,     6,     7,    50,   467,   403,
+   474,    12,    13,    14,    81,   494,    59,    60,   402,   484,
+   511,    78,   517,    76,     3,     4,   410,    28,     7,   494,
+    31,     3,   416,    38,   418,     7,    77,    78,    77,    78,
+    76,    59,    60,   522,    76,   429,    76,   674,    59,    60,
+   617,    30,    77,    78,   533,   682,    83,   522,    30,   494,
+   551,    83,   494,    76,   494,    32,   611,    76,   563,   534,
+    76,    50,    50,    51,    52,    36,   460,   461,    50,    83,
+    59,     3,     4,   467,    78,   564,    78,    59,   567,   568,
+   657,   658,    78,   541,    38,   630,   575,   632,   584,   558,
+    59,    60,   582,    83,   540,   541,    77,    78,    30,     3,
+   494,   590,     3,     4,    59,    60,   551,    77,   597,   551,
+    78,   551,   541,    27,    76,   584,    30,    81,    50,   608,
+   149,    78,    36,    89,    90,   154,   155,    59,   617,    30,
+   159,   160,   161,   162,   163,   164,   165,   166,   167,   168,
+   169,   170,   617,    78,    38,    59,    60,   541,     1,    50,
+   639,     4,     5,     6,     7,    38,    78,   551,    59,    12,
+    13,    14,    81,    77,   558,    54,    55,    81,    57,    58,
+    59,    60,   661,    78,    27,    28,    83,    30,   667,    78,
+    38,    59,    59,    36,    59,    77,    38,    76,   582,    77,
+   584,     7,    38,     1,    16,     3,     4,     5,     6,     7,
+     8,     9,    78,    11,    12,    13,    14,    15,    77,    17,
+    18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
+    28,    29,    30,    31,    77,    33,    34,    77,    81,    82,
+   259,   260,    40,     3,     4,    43,    59,     7,    77,    77,
+    48,    49,    50,    76,    59,    17,    54,    55,    77,    54,
+    55,    59,    57,    58,    59,    60,     5,     6,     7,    76,
+    30,     9,    76,    12,    13,    14,    77,    76,    59,    77,
+    78,    79,    80,     1,    82,     3,     4,     5,     6,     7,
+    50,    30,    10,    77,    12,    13,    14,    77,    77,    59,
+    43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
+    28,   330,    30,    81,     1,    76,     3,     4,     5,     6,
+     7,     8,     9,   342,    11,    12,    13,    14,    15,    77,
+    17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
+    27,    28,    29,    30,    31,    76,    33,    34,     3,     4,
+     5,     6,     7,    40,    77,   374,    43,    77,    76,     0,
+     0,    48,    49,    50,   290,   567,   212,    54,    55,   438,
+   551,    53,    59,   419,   393,   289,     1,   188,   426,     4,
+     5,     6,     7,   333,   500,    10,   456,    12,    13,    14,
+    77,   236,    79,    80,     1,    82,     3,     4,   325,   428,
+   244,     8,     9,    28,    11,    30,   391,   426,    15,   440,
+    17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
+    27,   331,    29,   438,    31,   617,    33,    34,   617,   448,
+   662,   664,   284,    40,   364,    -1,    43,    -1,   457,   458,
+    -1,    48,    49,    50,    -1,    -1,    -1,    54,    55,    -1,
+    -1,    76,    59,    -1,    -1,     5,     6,     7,   477,     6,
+     7,   480,    12,    13,    14,    12,    13,    14,    -1,    -1,
+    77,    78,    79,    80,    -1,    82,    -1,    -1,   497,    -1,
+    -1,   500,    -1,   502,     4,     5,     6,     7,    -1,    -1,
+    -1,    -1,    12,    13,    14,     1,    -1,     3,     4,   518,
+    -1,    -1,     8,     9,    -1,    11,    -1,    -1,    28,    15,
+   529,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+    26,    27,    -1,    29,    -1,    31,    -1,    33,    34,    -1,
+    -1,    -1,    -1,   552,    40,    -1,   555,    43,    -1,    -1,
     -1,    -1,    48,    49,    50,    -1,    -1,    -1,    54,    55,
-    -1,    -1,    -1,    59,     3,     4,     5,     6,     7,     8,
+    -1,    -1,    -1,    59,    -1,    -1,    -1,    77,    40,    41,
+    42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
+    52,    77,    -1,    79,    80,     1,    82,     3,     4,    -1,
+    -1,    -1,     8,     9,   603,    11,    -1,    -1,    -1,    15,
+    -1,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+    26,    27,    -1,    29,    -1,    31,    -1,    33,    34,    48,
+    49,    50,    51,    52,    40,    -1,    -1,    43,    -1,    -1,
+    -1,    -1,    48,    49,    50,    -1,    -1,    -1,    54,    55,
+    -1,    -1,     1,    59,     3,     4,    -1,     6,     7,     8,
      9,    -1,    11,    12,    13,    14,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    79,    80,    -1,    82,    -1,    -1,    28,
-    29,    30,    31,    -1,    33,    34,    -1,    -1,    -1,    -1,
+    -1,    77,    -1,    79,    80,    -1,    82,    -1,    -1,    28,
+    29,    -1,    31,    -1,    33,    34,    -1,    -1,    -1,    -1,
     -1,    40,    -1,    -1,    43,    -1,    -1,    -1,    -1,    48,
-    49,    50,    -1,    -1,    -1,    54,    55,    -1,     3,     4,
-    59,     6,     7,     8,     9,    -1,    11,    12,    13,    14,
+    49,    50,    -1,    -1,    -1,    54,    55,    -1,    -1,     1,
+    59,     3,     4,    -1,    -1,    -1,     8,     9,    -1,    11,
+    -1,    -1,    -1,    -1,    -1,    -1,     4,     5,     6,     7,
+    79,    80,    10,    82,    12,    13,    14,    29,    -1,    31,
+    -1,    33,    34,    -1,    -1,    -1,    -1,    -1,    40,    -1,
+    28,    43,    30,    -1,    -1,    -1,    48,    49,    50,    -1,
+    -1,    -1,    54,    55,    -1,    -1,    58,    59,    60,     1,
+    -1,     3,     4,    -1,    -1,    -1,     8,     9,    -1,    11,
+    -1,    -1,    -1,    -1,    -1,    -1,    78,    79,    80,    -1,
+    82,    -1,    -1,    -1,    -1,    -1,    -1,    29,    -1,    31,
+    -1,    33,    34,    -1,    -1,    -1,    -1,    -1,    40,    -1,
+    -1,    43,    -1,    -1,    -1,    -1,    48,    49,    50,    -1,
+    -1,    -1,    54,    55,    -1,    -1,    58,    59,    60,     1,
     -1,     3,    -1,    -1,    -1,    -1,     8,     9,    -1,    11,
-    79,    80,    -1,    28,    29,    -1,    31,    -1,    33,    34,
-    -1,    -1,    -1,    -1,    -1,    40,    -1,    29,    43,    31,
-    -1,    33,    34,    48,    49,    50,    -1,    -1,    40,    54,
-    55,    43,    -1,    -1,    59,    -1,    48,    49,    50,    -1,
-    -1,    -1,    54,    55,     3,    -1,    -1,    59,    -1,     8,
-     9,    -1,    11,    -1,    79,    80,    44,    45,    46,    47,
-    48,    49,    50,    51,    52,    77,    -1,    79,    80,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    78,    79,    80,    -1,
+    82,    -1,    -1,    -1,    -1,    -1,    -1,    29,    -1,    31,
+    -1,    33,    34,    -1,    36,    -1,    -1,    -1,    40,    -1,
+    -1,    43,    -1,    -1,    -1,    -1,    48,    49,    50,    -1,
+    -1,    -1,    54,    55,    -1,    -1,    58,    59,    60,     1,
+    -1,     3,    -1,    -1,    -1,    -1,     8,     9,    -1,    11,
+    -1,    -1,    -1,     4,     5,     6,     7,    79,    80,    -1,
+    82,    12,    13,    14,    -1,    -1,    -1,    29,    -1,    31,
+    -1,    33,    34,    -1,    -1,    -1,    -1,    28,    40,    30,
+    -1,    43,    -1,    -1,    -1,    -1,    48,    49,    50,    -1,
+    -1,    -1,    54,    55,     1,    -1,     3,    59,    -1,    -1,
+    -1,     8,     9,     1,    11,    -1,     4,     5,     6,     7,
+    -1,    -1,    -1,    -1,    12,    13,    14,    79,    80,    -1,
+    82,    -1,    29,    -1,    31,    -1,    33,    34,    -1,    27,
+    28,    -1,    30,    40,    -1,    -1,    43,    -1,    36,    -1,
+    -1,    48,    49,    50,    -1,    -1,    -1,    54,    55,    -1,
+    -1,    -1,    59,    45,    46,    47,    48,    49,    50,    51,
+    52,    59,    60,    -1,    -1,     1,    -1,    -1,     4,     5,
+     6,     7,    79,    80,    -1,    82,    12,    13,    14,    77,
+     3,    -1,    -1,    81,    82,     8,     9,    -1,    11,    -1,
+    -1,    27,    28,    -1,    30,    -1,    -1,    -1,    -1,    -1,
+    36,    -1,    -1,    -1,    -1,    -1,    29,     3,    31,    -1,
+    33,    34,     8,     9,    -1,    11,    -1,    40,    -1,    -1,
+    43,    -1,    -1,    59,    60,    48,    49,    50,    -1,    -1,
+    -1,    54,    55,    29,    -1,    31,    59,    33,    34,    -1,
+    -1,    77,    -1,    -1,    40,    81,    82,    43,    -1,    -1,
+    -1,    -1,    48,    49,    50,    -1,    79,    80,    54,    55,
+    83,    -1,     3,    59,    -1,    -1,    -1,     8,     9,    -1,
+    11,    41,    42,    43,    44,    45,    46,    47,    48,    49,
+    50,    51,    52,    79,    80,    -1,    -1,    83,    29,     3,
+    31,    -1,    33,    34,     8,     9,    -1,    11,    -1,    40,
+    -1,    -1,    43,    -1,    -1,    -1,    -1,    48,    49,    50,
+    -1,    -1,    -1,    54,    55,    29,    -1,    31,    59,    33,
+    34,    -1,    -1,    -1,    -1,    -1,    40,    -1,    -1,    43,
+    -1,    -1,    -1,    -1,    48,    49,    50,    -1,    79,    80,
+    54,    55,    83,    -1,     3,    59,    -1,    -1,    -1,     8,
+     9,    -1,    11,    42,    43,    44,    45,    46,    47,    48,
+    49,    50,    51,    52,    -1,    79,    80,    -1,    -1,    83,
     29,     3,    31,    -1,    33,    34,     8,     9,    -1,    11,
     -1,    40,    -1,    -1,    43,    -1,    -1,    -1,    -1,    48,
-    49,    50,    -1,    -1,    -1,    54,    55,    29,     3,    31,
-    59,    33,    34,     8,     9,    -1,    11,    -1,    40,    -1,
+    49,    50,    -1,    -1,    -1,    54,    55,    29,    -1,    31,
+    59,    33,    34,    -1,    -1,    -1,    -1,    -1,    40,    -1,
     -1,    43,    -1,    -1,    -1,    -1,    48,    49,    50,    -1,
-    79,    80,    54,    55,    29,     3,    31,    59,    33,    34,
+    79,    80,    54,    55,    83,    -1,     3,    59,    -1,    -1,
+    -1,     8,     9,    -1,    11,    44,    45,    46,    47,    48,
+    49,    50,    51,    52,    -1,    -1,    -1,    79,    80,    -1,
+    -1,    83,    29,    -1,    31,    -1,    33,    34,    10,    -1,
+    -1,    -1,    -1,    40,    -1,    -1,    43,    -1,    -1,    -1,
+    -1,    48,    49,    50,    -1,    -1,    -1,    54,    55,    -1,
+    -1,    -1,    59,    35,    36,    37,    38,    39,    40,    41,
+    42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
+    52,    -1,    79,    80,    -1,    -1,    83,     3,     4,     5,
+     6,     7,     8,     9,    -1,    11,    12,    13,    14,    15,
+    -1,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+    26,    27,    28,    29,    30,    31,    -1,    33,    34,    -1,
+    -1,    -1,    -1,    -1,    40,    -1,    -1,    43,    -1,    -1,
+    -1,    -1,    48,    49,    50,    30,    -1,    -1,    54,    55,
+    35,    36,    37,    59,    39,    40,    41,    42,    43,    44,
+    45,    46,    47,    48,    49,    50,    51,    52,    -1,    -1,
+    -1,    77,    -1,    79,    80,    -1,    82,     3,     4,    -1,
+    -1,    -1,     8,     9,    -1,    11,    -1,    -1,    -1,    15,
+    -1,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+    26,    27,    -1,    29,    -1,    31,    -1,    33,    34,    -1,
+    -1,    -1,    -1,    -1,    40,    -1,    -1,    43,    -1,    -1,
+    -1,    -1,    48,    49,    50,    -1,    -1,    -1,    54,    55,
+    -1,     3,    -1,    59,    -1,    -1,     8,     9,    -1,    11,
+    46,    47,    48,    49,    50,    51,    52,    -1,    -1,    -1,
+    -1,    77,    -1,    79,    80,    -1,    82,    29,    -1,    31,
+    -1,    33,    34,    -1,    -1,    -1,    -1,    -1,    40,    -1,
+    -1,    43,    -1,    -1,    -1,    -1,    48,    49,    50,    -1,
+    -1,    -1,    54,    55,    -1,    -1,    -1,    59,     3,     4,
+     5,     6,     7,     8,     9,    -1,    11,    12,    13,    14,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    79,    80,    -1,
+    82,    -1,    -1,    28,    29,    30,    31,    -1,    33,    34,
+    -1,    -1,    -1,    -1,    -1,    40,    -1,    -1,    43,    -1,
+    -1,    -1,    -1,    48,    49,    50,    -1,    -1,    -1,    54,
+    55,    -1,     3,     4,    59,     6,     7,     8,     9,    -1,
+    11,    12,    13,    14,    -1,     3,    -1,    -1,    -1,    -1,
+     8,     9,    -1,    11,    79,    80,    -1,    28,    29,    -1,
+    31,    -1,    33,    34,    -1,    -1,    -1,    -1,    -1,    40,
+    -1,    29,    43,    31,    -1,    33,    34,    48,    49,    50,
+    -1,    -1,    40,    54,    55,    43,    -1,    -1,    59,    -1,
+    48,    49,    50,    -1,    -1,    -1,    54,    55,     3,    -1,
+    -1,    59,    -1,     8,     9,    -1,    11,    -1,    79,    80,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    77,
+    -1,    79,    80,    -1,    29,     3,    31,    -1,    33,    34,
      8,     9,    -1,    11,    -1,    40,    -1,    -1,    43,    -1,
-    -1,    -1,    -1,    48,    49,    50,    -1,    79,    80,    54,
-    55,    29,    -1,    31,    59,    33,    34,    -1,    -1,    -1,
-    -1,    -1,    40,    -1,    -1,    43,    -1,    -1,    -1,    -1,
-    48,    49,    50,    -1,    79,    80,    54,    55,    -1,    -1,
-     1,    59,     3,     4,     5,     6,     7,     4,    -1,     6,
-     7,    12,    13,    14,    -1,    12,    13,    14,    -1,    -1,
-    -1,    79,    80,    -1,    -1,    -1,    27,    28,    -1,    30,
-    31,    28,    -1,    -1,    -1,     4,     5,     6,     7,    -1,
-    -1,    -1,    -1,    12,    13,    14,    -1,    -1,    -1,    50,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    10,    59,    28,
-    37,    30,    39,    40,    41,    42,    43,    44,    45,    46,
-    47,    48,    49,    50,    51,    52,    77,    -1,    -1,    -1,
-    77,    78,    35,    36,    37,    -1,    39,    40,    41,    42,
+    -1,    -1,    -1,    48,    49,    50,    -1,    -1,    -1,    54,
+    55,    29,     3,    31,    59,    33,    34,     8,     9,    -1,
+    11,    -1,    40,    -1,    -1,    43,    -1,    -1,    -1,    -1,
+    48,    49,    50,    -1,    79,    80,    54,    55,    29,     3,
+    31,    59,    33,    34,     8,     9,    -1,    11,    -1,    40,
+    -1,    -1,    43,    -1,    -1,    -1,    -1,    48,    49,    50,
+    -1,    79,    80,    54,    55,    29,    -1,    31,    59,    33,
+    34,    -1,    -1,    -1,    -1,    -1,    40,    -1,    -1,    43,
+    -1,    -1,    -1,    -1,    48,    49,    50,    -1,    79,    80,
+    54,    55,    -1,    -1,     1,    59,     3,     4,     5,     6,
+     7,    -1,    -1,    -1,    -1,    12,    13,    14,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    79,    80,    -1,    -1,    -1,
+    27,    28,    -1,    30,    31,     4,     5,     6,     7,     4,
+     5,     6,     7,    12,    13,    14,    -1,    12,    13,    14,
+    -1,    -1,    10,    50,    -1,    -1,    -1,    -1,    -1,    28,
+    -1,    30,    59,    28,    -1,    30,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    35,    36,    37,
+    77,    39,    40,    41,    42,    43,    44,    45,    46,    47,
+    48,    49,    50,    51,    52,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    77,    -1,
+    -1,    -1,    77,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    35,    36,    37,    83,    39,    40,    41,    42,
     43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
-    -1,    -1,    -1,    -1,    -1,    35,    36,    37,    77,    39,
-    40,    41,    42,    43,    44,    45,    46,    47,    48,    49,
-    50,    51,    52,    -1,    -1,    -1,    30,    -1,    -1,    10,
-    83,    35,    36,    37,    -1,    39,    40,    41,    42,    43,
-    44,    45,    46,    47,    48,    49,    50,    51,    52,    -1,
-    -1,    -1,    -1,    83,    35,    36,    37,    38,    39,    40,
-    41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
-    51,    52,     1,    -1,    -1,     4,    -1,     6,     7,    -1,
-    -1,    -1,    -1,    12,    13,    14,    40,    41,    42,    43,
-    44,    45,    46,    47,    48,    49,    50,    51,    52,    28,
-    -1,    -1,    31,    35,    36,    37,    38,    39,    40,    41,
-    42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
-    52,    35,    36,    37,    -1,    39,    40,    41,    42,    43,
-    44,    45,    46,    47,    48,    49,    50,    51,    52,    41,
+    35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
+    45,    46,    47,    48,    49,    50,    51,    52,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    35,    36,    37,
+    83,    39,    40,    41,    42,    43,    44,    45,    46,    47,
+    48,    49,    50,    51,    52,    37,    -1,    39,    40,    41,
     42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
-    52,    43,    44,    45,    46,    47,    48,    49,    50,    51,
     52
 };
 /* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
@@ -1947,7 +1989,7 @@ case 61:
                  tree type = yyvsp[-5].ttype;
                  finish_init ();
 
-                 if (pedantic)
+                 if (pedantic && ! flag_isoc9x)
                    pedwarn ("ANSI C forbids constructor expressions");
                  if (TYPE_NAME (type) != 0)
                    {
@@ -2594,40 +2636,36 @@ case 190:
 { if (pedantic)
                    pedwarn ("ANSI C forbids empty initializer braces"); ;
     break;}
-case 194:
-#line 1113 "c-parse.y"
-{ process_init_element (yyvsp[0].ttype); ;
-    break;}
-case 195:
+case 196:
 #line 1115 "c-parse.y"
+{ set_init_label (yyvsp[-1].ttype); ;
+    break;}
+case 199:
+#line 1122 "c-parse.y"
 { push_init_level (0); ;
     break;}
-case 196:
-#line 1117 "c-parse.y"
+case 200:
+#line 1124 "c-parse.y"
 { process_init_element (pop_init_level (0)); ;
     break;}
-case 198:
-#line 1123 "c-parse.y"
-{ set_init_index (yyvsp[-4].ttype, yyvsp[-2].ttype); ;
-    break;}
-case 200:
+case 201:
 #line 1126 "c-parse.y"
-{ set_init_index (yyvsp[-2].ttype, NULL_TREE); ;
-    break;}
-case 202:
-#line 1129 "c-parse.y"
-{ set_init_index (yyvsp[-1].ttype, NULL_TREE); ;
+{ process_init_element (yyvsp[0].ttype); ;
     break;}
-case 204:
-#line 1132 "c-parse.y"
-{ set_init_label (yyvsp[-1].ttype); ;
+case 205:
+#line 1137 "c-parse.y"
+{ set_init_label (yyvsp[0].ttype); ;
     break;}
 case 206:
-#line 1135 "c-parse.y"
-{ set_init_label (yyvsp[-1].ttype); ;
+#line 1142 "c-parse.y"
+{ set_init_index (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
+    break;}
+case 207:
+#line 1144 "c-parse.y"
+{ set_init_index (yyvsp[-1].ttype, NULL_TREE); ;
     break;}
 case 208:
-#line 1141 "c-parse.y"
+#line 1149 "c-parse.y"
 { push_c_function_context ();
                  if (! start_function (current_declspecs, yyvsp[0].ttype,
                                        prefix_attributes, NULL_TREE, 1))
@@ -2638,16 +2676,16 @@ case 208:
                  reinit_parse_for_function (); ;
     break;}
 case 209:
-#line 1150 "c-parse.y"
+#line 1158 "c-parse.y"
 { store_parm_decls (); ;
     break;}
 case 210:
-#line 1158 "c-parse.y"
+#line 1166 "c-parse.y"
 { finish_function (1);
                  pop_c_function_context (); ;
     break;}
 case 211:
-#line 1164 "c-parse.y"
+#line 1172 "c-parse.y"
 { push_c_function_context ();
                  if (! start_function (current_declspecs, yyvsp[0].ttype,
                                        prefix_attributes, NULL_TREE, 1))
@@ -2658,352 +2696,367 @@ case 211:
                  reinit_parse_for_function (); ;
     break;}
 case 212:
-#line 1173 "c-parse.y"
+#line 1181 "c-parse.y"
 { store_parm_decls (); ;
     break;}
 case 213:
-#line 1181 "c-parse.y"
+#line 1189 "c-parse.y"
 { finish_function (1);
                  pop_c_function_context (); ;
     break;}
 case 216:
-#line 1197 "c-parse.y"
+#line 1205 "c-parse.y"
 { yyval.ttype = yyvsp[-1].ttype; ;
     break;}
 case 217:
-#line 1199 "c-parse.y"
+#line 1207 "c-parse.y"
 { yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ;
     break;}
 case 218:
-#line 1204 "c-parse.y"
+#line 1212 "c-parse.y"
 { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-3].ttype, yyvsp[-1].ttype); ;
     break;}
 case 219:
-#line 1206 "c-parse.y"
+#line 1214 "c-parse.y"
 { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-2].ttype, NULL_TREE); ;
     break;}
 case 220:
-#line 1208 "c-parse.y"
+#line 1216 "c-parse.y"
 { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
 case 221:
-#line 1215 "c-parse.y"
+#line 1223 "c-parse.y"
 { yyval.ttype = yyvsp[0].ttype; ;
     break;}
 case 223:
-#line 1226 "c-parse.y"
+#line 1234 "c-parse.y"
 { yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ;
     break;}
 case 224:
-#line 1231 "c-parse.y"
-{ yyval.ttype = build_nt (ARRAY_REF, yyvsp[-3].ttype, yyvsp[-1].ttype); ;
+#line 1239 "c-parse.y"
+{ yyval.ttype = build_nt (ARRAY_REF, yyvsp[-3].ttype, NULL_TREE);
+                 if (! flag_isoc9x)
+                   error ("`[*]' in parameter declaration only allowed in ISO C 9x");
+               ;
     break;}
 case 225:
-#line 1233 "c-parse.y"
-{ yyval.ttype = build_nt (ARRAY_REF, yyvsp[-2].ttype, NULL_TREE); ;
+#line 1244 "c-parse.y"
+{ yyval.ttype = build_nt (ARRAY_REF, yyvsp[-3].ttype, yyvsp[-1].ttype); ;
     break;}
 case 226:
-#line 1235 "c-parse.y"
-{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
+#line 1246 "c-parse.y"
+{ yyval.ttype = build_nt (ARRAY_REF, yyvsp[-2].ttype, NULL_TREE); ;
     break;}
 case 227:
-#line 1242 "c-parse.y"
-{ yyval.ttype = yyvsp[0].ttype; ;
+#line 1248 "c-parse.y"
+{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
-case 229:
-#line 1251 "c-parse.y"
-{ yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ;
+case 228:
+#line 1255 "c-parse.y"
+{ yyval.ttype = yyvsp[0].ttype; ;
     break;}
 case 230:
-#line 1256 "c-parse.y"
-{ yyval.ttype = yyvsp[-1].ttype; ;
+#line 1264 "c-parse.y"
+{ yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ;
     break;}
 case 231:
-#line 1258 "c-parse.y"
-{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
+#line 1269 "c-parse.y"
+{ yyval.ttype = yyvsp[-1].ttype; ;
     break;}
 case 232:
-#line 1260 "c-parse.y"
-{ yyval.ttype = build_nt (ARRAY_REF, yyvsp[-3].ttype, yyvsp[-1].ttype); ;
+#line 1271 "c-parse.y"
+{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
 case 233:
-#line 1262 "c-parse.y"
-{ yyval.ttype = build_nt (ARRAY_REF, yyvsp[-2].ttype, NULL_TREE); ;
+#line 1273 "c-parse.y"
+{ yyval.ttype = build_nt (ARRAY_REF, yyvsp[-3].ttype, NULL_TREE);
+                 if (! flag_isoc9x)
+                   error ("`[*]' in parameter declaration only allowed in ISO C 9x");
+               ;
     break;}
 case 234:
-#line 1269 "c-parse.y"
-{ yyval.ttype = yyvsp[0].ttype; ;
+#line 1278 "c-parse.y"
+{ yyval.ttype = build_nt (ARRAY_REF, yyvsp[-3].ttype, yyvsp[-1].ttype); ;
     break;}
-case 236:
-#line 1275 "c-parse.y"
-{ yyval.ttype = NULL_TREE; ;
+case 235:
+#line 1280 "c-parse.y"
+{ yyval.ttype = build_nt (ARRAY_REF, yyvsp[-2].ttype, NULL_TREE); ;
     break;}
-case 237:
-#line 1277 "c-parse.y"
+case 236:
+#line 1287 "c-parse.y"
 { yyval.ttype = yyvsp[0].ttype; ;
     break;}
 case 238:
-#line 1282 "c-parse.y"
+#line 1293 "c-parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
 case 239:
-#line 1284 "c-parse.y"
+#line 1295 "c-parse.y"
 { yyval.ttype = yyvsp[0].ttype; ;
     break;}
 case 240:
-#line 1289 "c-parse.y"
+#line 1300 "c-parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
 case 241:
-#line 1291 "c-parse.y"
+#line 1302 "c-parse.y"
 { yyval.ttype = yyvsp[0].ttype; ;
     break;}
 case 242:
-#line 1296 "c-parse.y"
+#line 1307 "c-parse.y"
+{ yyval.ttype = NULL_TREE; ;
+    break;}
+case 243:
+#line 1309 "c-parse.y"
+{ yyval.ttype = yyvsp[0].ttype; ;
+    break;}
+case 244:
+#line 1314 "c-parse.y"
 { yyval.ttype = start_struct (RECORD_TYPE, yyvsp[-1].ttype);
                  /* Start scope of tag before parsing components.  */
                ;
     break;}
-case 243:
-#line 1300 "c-parse.y"
+case 245:
+#line 1318 "c-parse.y"
 { yyval.ttype = finish_struct (yyvsp[-3].ttype, yyvsp[-2].ttype, chainon (yyvsp[-6].ttype, yyvsp[0].ttype)); ;
     break;}
-case 244:
-#line 1302 "c-parse.y"
+case 246:
+#line 1320 "c-parse.y"
 { yyval.ttype = finish_struct (start_struct (RECORD_TYPE, NULL_TREE),
                                      yyvsp[-2].ttype, chainon (yyvsp[-4].ttype, yyvsp[0].ttype));
                ;
     break;}
-case 245:
-#line 1306 "c-parse.y"
+case 247:
+#line 1324 "c-parse.y"
 { yyval.ttype = xref_tag (RECORD_TYPE, yyvsp[0].ttype); ;
     break;}
-case 246:
-#line 1308 "c-parse.y"
+case 248:
+#line 1326 "c-parse.y"
 { yyval.ttype = start_struct (UNION_TYPE, yyvsp[-1].ttype); ;
     break;}
-case 247:
-#line 1310 "c-parse.y"
+case 249:
+#line 1328 "c-parse.y"
 { yyval.ttype = finish_struct (yyvsp[-3].ttype, yyvsp[-2].ttype, chainon (yyvsp[-6].ttype, yyvsp[0].ttype)); ;
     break;}
-case 248:
-#line 1312 "c-parse.y"
+case 250:
+#line 1330 "c-parse.y"
 { yyval.ttype = finish_struct (start_struct (UNION_TYPE, NULL_TREE),
                                      yyvsp[-2].ttype, chainon (yyvsp[-4].ttype, yyvsp[0].ttype));
                ;
     break;}
-case 249:
-#line 1316 "c-parse.y"
+case 251:
+#line 1334 "c-parse.y"
 { yyval.ttype = xref_tag (UNION_TYPE, yyvsp[0].ttype); ;
     break;}
-case 250:
-#line 1318 "c-parse.y"
+case 252:
+#line 1336 "c-parse.y"
 { yyvsp[0].itype = suspend_momentary ();
                  yyval.ttype = start_enum (yyvsp[-1].ttype); ;
     break;}
-case 251:
-#line 1321 "c-parse.y"
+case 253:
+#line 1339 "c-parse.y"
 { yyval.ttype= finish_enum (yyvsp[-4].ttype, nreverse (yyvsp[-3].ttype), chainon (yyvsp[-7].ttype, yyvsp[0].ttype));
                  resume_momentary (yyvsp[-5].itype); ;
     break;}
-case 252:
-#line 1324 "c-parse.y"
+case 254:
+#line 1342 "c-parse.y"
 { yyvsp[0].itype = suspend_momentary ();
                  yyval.ttype = start_enum (NULL_TREE); ;
     break;}
-case 253:
-#line 1327 "c-parse.y"
+case 255:
+#line 1345 "c-parse.y"
 { yyval.ttype= finish_enum (yyvsp[-4].ttype, nreverse (yyvsp[-3].ttype), chainon (yyvsp[-6].ttype, yyvsp[0].ttype));
                  resume_momentary (yyvsp[-5].itype); ;
     break;}
-case 254:
-#line 1330 "c-parse.y"
+case 256:
+#line 1348 "c-parse.y"
 { yyval.ttype = xref_tag (ENUMERAL_TYPE, yyvsp[0].ttype); ;
     break;}
-case 258:
-#line 1341 "c-parse.y"
-{ if (pedantic) pedwarn ("comma at end of enumerator list"); ;
+case 260:
+#line 1359 "c-parse.y"
+{ if (pedantic && ! flag_isoc9x)
+                   pedwarn ("comma at end of enumerator list"); ;
     break;}
-case 259:
-#line 1346 "c-parse.y"
+case 261:
+#line 1365 "c-parse.y"
 { yyval.ttype = yyvsp[0].ttype; ;
     break;}
-case 260:
-#line 1348 "c-parse.y"
+case 262:
+#line 1367 "c-parse.y"
 { yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype);
                  pedwarn ("no semicolon at end of struct or union"); ;
     break;}
-case 261:
-#line 1353 "c-parse.y"
+case 263:
+#line 1372 "c-parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
-case 262:
-#line 1355 "c-parse.y"
+case 264:
+#line 1374 "c-parse.y"
 { yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[-1].ttype); ;
     break;}
-case 263:
-#line 1357 "c-parse.y"
+case 265:
+#line 1376 "c-parse.y"
 { if (pedantic)
                    pedwarn ("extra semicolon in struct or union specified"); ;
     break;}
-case 264:
-#line 1372 "c-parse.y"
+case 266:
+#line 1391 "c-parse.y"
 { yyval.ttype = yyvsp[0].ttype;
                  current_declspecs = TREE_VALUE (declspec_stack);
                  prefix_attributes = TREE_PURPOSE (declspec_stack);
                  declspec_stack = TREE_CHAIN (declspec_stack);
                  resume_momentary (yyvsp[-1].itype); ;
     break;}
-case 265:
-#line 1378 "c-parse.y"
+case 267:
+#line 1397 "c-parse.y"
 { if (pedantic)
                    pedwarn ("ANSI C forbids member declarations with no members");
                  shadow_tag(yyvsp[0].ttype);
                  yyval.ttype = NULL_TREE; ;
     break;}
-case 266:
-#line 1383 "c-parse.y"
+case 268:
+#line 1402 "c-parse.y"
 { yyval.ttype = yyvsp[0].ttype;
                  current_declspecs = TREE_VALUE (declspec_stack);
                  prefix_attributes = TREE_PURPOSE (declspec_stack);
                  declspec_stack = TREE_CHAIN (declspec_stack);
                  resume_momentary (yyvsp[-1].itype); ;
     break;}
-case 267:
-#line 1389 "c-parse.y"
+case 269:
+#line 1408 "c-parse.y"
 { if (pedantic)
                    pedwarn ("ANSI C forbids member declarations with no members");
                  shadow_tag(yyvsp[0].ttype);
                  yyval.ttype = NULL_TREE; ;
     break;}
-case 268:
-#line 1394 "c-parse.y"
+case 270:
+#line 1413 "c-parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
-case 269:
-#line 1396 "c-parse.y"
+case 271:
+#line 1415 "c-parse.y"
 { yyval.ttype = yyvsp[0].ttype;
                  pedantic = yyvsp[-1].itype; ;
     break;}
-case 271:
-#line 1403 "c-parse.y"
+case 273:
+#line 1422 "c-parse.y"
 { yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[0].ttype); ;
     break;}
-case 272:
-#line 1408 "c-parse.y"
+case 274:
+#line 1427 "c-parse.y"
 { yyval.ttype = grokfield (yyvsp[-3].filename, yyvsp[-2].lineno, yyvsp[-1].ttype, current_declspecs, NULL_TREE);
                  decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
     break;}
-case 273:
-#line 1412 "c-parse.y"
+case 275:
+#line 1431 "c-parse.y"
 { yyval.ttype = grokfield (yyvsp[-5].filename, yyvsp[-4].lineno, yyvsp[-3].ttype, current_declspecs, yyvsp[-1].ttype);
                  decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
     break;}
-case 274:
-#line 1415 "c-parse.y"
+case 276:
+#line 1434 "c-parse.y"
 { yyval.ttype = grokfield (yyvsp[-4].filename, yyvsp[-3].lineno, NULL_TREE, current_declspecs, yyvsp[-1].ttype);
                  decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
     break;}
-case 276:
-#line 1427 "c-parse.y"
+case 278:
+#line 1446 "c-parse.y"
 { if (yyvsp[-2].ttype == error_mark_node)
                    yyval.ttype = yyvsp[-2].ttype;
                  else
                    yyval.ttype = chainon (yyvsp[0].ttype, yyvsp[-2].ttype); ;
     break;}
-case 277:
-#line 1432 "c-parse.y"
+case 279:
+#line 1451 "c-parse.y"
 { yyval.ttype = error_mark_node; ;
     break;}
-case 278:
-#line 1438 "c-parse.y"
+case 280:
+#line 1457 "c-parse.y"
 { yyval.ttype = build_enumerator (yyvsp[0].ttype, NULL_TREE); ;
     break;}
-case 279:
-#line 1440 "c-parse.y"
+case 281:
+#line 1459 "c-parse.y"
 { yyval.ttype = build_enumerator (yyvsp[-2].ttype, yyvsp[0].ttype); ;
     break;}
-case 280:
-#line 1445 "c-parse.y"
+case 282:
+#line 1464 "c-parse.y"
 { yyval.ttype = build_tree_list (yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
-case 281:
-#line 1447 "c-parse.y"
+case 283:
+#line 1466 "c-parse.y"
 { yyval.ttype = build_tree_list (yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
-case 282:
-#line 1452 "c-parse.y"
+case 284:
+#line 1471 "c-parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
-case 284:
-#line 1458 "c-parse.y"
+case 286:
+#line 1477 "c-parse.y"
 { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE); ;
     break;}
-case 285:
-#line 1460 "c-parse.y"
+case 287:
+#line 1479 "c-parse.y"
 { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ;
     break;}
-case 286:
-#line 1465 "c-parse.y"
+case 288:
+#line 1484 "c-parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
-case 287:
-#line 1467 "c-parse.y"
+case 289:
+#line 1486 "c-parse.y"
 { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ;
     break;}
-case 288:
-#line 1472 "c-parse.y"
+case 290:
+#line 1491 "c-parse.y"
 { yyval.ttype = yyvsp[-1].ttype; ;
     break;}
-case 289:
-#line 1475 "c-parse.y"
+case 291:
+#line 1494 "c-parse.y"
 { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
-case 290:
-#line 1477 "c-parse.y"
+case 292:
+#line 1496 "c-parse.y"
 { yyval.ttype = make_pointer_declarator (yyvsp[0].ttype, NULL_TREE); ;
     break;}
-case 291:
-#line 1479 "c-parse.y"
+case 293:
+#line 1498 "c-parse.y"
 { yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ;
     break;}
-case 292:
-#line 1481 "c-parse.y"
+case 294:
+#line 1500 "c-parse.y"
 { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-3].ttype, yyvsp[-1].ttype); ;
     break;}
-case 293:
-#line 1483 "c-parse.y"
+case 295:
+#line 1502 "c-parse.y"
 { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-2].ttype, NULL_TREE); ;
     break;}
-case 294:
-#line 1485 "c-parse.y"
+case 296:
+#line 1504 "c-parse.y"
 { yyval.ttype = build_nt (CALL_EXPR, NULL_TREE, yyvsp[0].ttype, NULL_TREE); ;
     break;}
-case 295:
-#line 1487 "c-parse.y"
+case 297:
+#line 1506 "c-parse.y"
 { yyval.ttype = build_nt (ARRAY_REF, NULL_TREE, yyvsp[-1].ttype); ;
     break;}
-case 296:
-#line 1489 "c-parse.y"
+case 298:
+#line 1508 "c-parse.y"
 { yyval.ttype = build_nt (ARRAY_REF, NULL_TREE, NULL_TREE); ;
     break;}
-case 297:
-#line 1500 "c-parse.y"
+case 299:
+#line 1519 "c-parse.y"
 {
                  if (pedantic && yyvsp[0].ends_in_label)
                    pedwarn ("ANSI C forbids label at end of compound statement");
                ;
     break;}
-case 299:
-#line 1509 "c-parse.y"
+case 301:
+#line 1528 "c-parse.y"
 { yyval.ends_in_label = yyvsp[0].ends_in_label; ;
     break;}
-case 300:
-#line 1511 "c-parse.y"
+case 302:
+#line 1530 "c-parse.y"
 { yyval.ends_in_label = 0; ;
     break;}
-case 304:
-#line 1523 "c-parse.y"
+case 306:
+#line 1542 "c-parse.y"
 { emit_line_note (input_filename, lineno);
                  pushlevel (0);
                  clear_last_expr ();
@@ -3011,13 +3064,13 @@ case 304:
                  expand_start_bindings (0);
                ;
     break;}
-case 306:
-#line 1536 "c-parse.y"
+case 308:
+#line 1555 "c-parse.y"
 { if (pedantic)
                    pedwarn ("ANSI C forbids label declarations"); ;
     break;}
-case 309:
-#line 1547 "c-parse.y"
+case 311:
+#line 1566 "c-parse.y"
 { tree link;
                  for (link = yyvsp[-1].ttype; link; link = TREE_CHAIN (link))
                    {
@@ -3027,20 +3080,20 @@ case 309:
                    }
                ;
     break;}
-case 310:
-#line 1561 "c-parse.y"
+case 312:
+#line 1580 "c-parse.y"
 {;
     break;}
-case 312:
-#line 1565 "c-parse.y"
+case 314:
+#line 1584 "c-parse.y"
 { compstmt_count++; ;
     break;}
-case 313:
-#line 1568 "c-parse.y"
+case 315:
+#line 1587 "c-parse.y"
 { yyval.ttype = convert (void_type_node, integer_zero_node); ;
     break;}
-case 314:
-#line 1570 "c-parse.y"
+case 316:
+#line 1589 "c-parse.y"
 { emit_line_note (input_filename, lineno);
                  expand_end_bindings (getdecls (), 1, 0);
                  yyval.ttype = poplevel (1, 1, 0);
@@ -3049,8 +3102,8 @@ case 314:
                  else
                    pop_momentary (); ;
     break;}
-case 315:
-#line 1578 "c-parse.y"
+case 317:
+#line 1597 "c-parse.y"
 { emit_line_note (input_filename, lineno);
                  expand_end_bindings (getdecls (), kept_level_p (), 0);
                  yyval.ttype = poplevel (kept_level_p (), 0, 0);
@@ -3059,8 +3112,8 @@ case 315:
                  else
                    pop_momentary (); ;
     break;}
-case 316:
-#line 1586 "c-parse.y"
+case 318:
+#line 1605 "c-parse.y"
 { emit_line_note (input_filename, lineno);
                  expand_end_bindings (getdecls (), kept_level_p (), 0);
                  yyval.ttype = poplevel (kept_level_p (), 0, 0);
@@ -3069,8 +3122,8 @@ case 316:
                  else
                    pop_momentary (); ;
     break;}
-case 319:
-#line 1606 "c-parse.y"
+case 321:
+#line 1625 "c-parse.y"
 { emit_line_note (yyvsp[-5].filename, yyvsp[-4].lineno);
                  c_expand_start_cond (truthvalue_conversion (yyvsp[-1].ttype), 0, 
                                       compstmt_count);
@@ -3079,8 +3132,8 @@ case 319:
                  if_stmt_line = yyvsp[-4].lineno;
                  position_after_white_space (); ;
     break;}
-case 320:
-#line 1620 "c-parse.y"
+case 322:
+#line 1639 "c-parse.y"
 { stmt_count++;
                  compstmt_count++;
                  emit_line_note (yyvsp[-2].filename, yyvsp[-1].lineno);
@@ -3089,44 +3142,44 @@ case 320:
                  expand_start_loop_continue_elsewhere (1);
                  position_after_white_space (); ;
     break;}
-case 321:
-#line 1628 "c-parse.y"
+case 323:
+#line 1647 "c-parse.y"
 { expand_loop_continue_here (); ;
     break;}
-case 322:
-#line 1632 "c-parse.y"
+case 324:
+#line 1651 "c-parse.y"
 { yyval.filename = input_filename; ;
     break;}
-case 323:
-#line 1636 "c-parse.y"
+case 325:
+#line 1655 "c-parse.y"
 { yyval.lineno = lineno; ;
     break;}
-case 324:
-#line 1641 "c-parse.y"
+case 326:
+#line 1660 "c-parse.y"
 { ;
     break;}
-case 325:
-#line 1646 "c-parse.y"
+case 327:
+#line 1665 "c-parse.y"
 { ;
     break;}
-case 326:
-#line 1651 "c-parse.y"
+case 328:
+#line 1670 "c-parse.y"
 { yyval.ends_in_label = yyvsp[0].ends_in_label; ;
     break;}
-case 327:
-#line 1656 "c-parse.y"
+case 329:
+#line 1675 "c-parse.y"
 { yyval.ends_in_label = 0; ;
     break;}
-case 328:
-#line 1658 "c-parse.y"
+case 330:
+#line 1677 "c-parse.y"
 { yyval.ends_in_label = 1; ;
     break;}
-case 329:
-#line 1664 "c-parse.y"
+case 331:
+#line 1683 "c-parse.y"
 { stmt_count++; ;
     break;}
-case 331:
-#line 1667 "c-parse.y"
+case 333:
+#line 1686 "c-parse.y"
 { stmt_count++;
                  emit_line_note (yyvsp[-3].filename, yyvsp[-2].lineno);
 /* It appears that this should not be done--that a non-lvalue array
@@ -3144,20 +3197,20 @@ case 331:
                  iterator_expand (yyvsp[-1].ttype);
                  clear_momentary (); ;
     break;}
-case 332:
-#line 1684 "c-parse.y"
+case 334:
+#line 1703 "c-parse.y"
 { c_expand_start_else ();
                  yyvsp[-1].itype = stmt_count;
                  position_after_white_space (); ;
     break;}
-case 333:
-#line 1688 "c-parse.y"
+case 335:
+#line 1707 "c-parse.y"
 { c_expand_end_cond ();
                  if (extra_warnings && stmt_count == yyvsp[-3].itype)
                    warning ("empty body in an else-statement"); ;
     break;}
-case 334:
-#line 1692 "c-parse.y"
+case 336:
+#line 1711 "c-parse.y"
 { c_expand_end_cond ();
                  /* This warning is here instead of in simple_if, because we
                     do not want a warning if an empty if is followed by an
@@ -3167,12 +3220,12 @@ case 334:
                    warning_with_file_and_line (if_stmt_file, if_stmt_line,
                                                "empty body in an if-statement"); ;
     break;}
-case 335:
-#line 1704 "c-parse.y"
+case 337:
+#line 1723 "c-parse.y"
 { c_expand_end_cond (); ;
     break;}
-case 336:
-#line 1706 "c-parse.y"
+case 338:
+#line 1725 "c-parse.y"
 { stmt_count++;
                  emit_line_note (yyvsp[-2].filename, yyvsp[-1].lineno);
                  /* The emit_nop used to come before emit_line_note,
@@ -3183,8 +3236,8 @@ case 336:
                     We will see.  --rms, July 15, 1991.  */
                  emit_nop (); ;
     break;}
-case 337:
-#line 1716 "c-parse.y"
+case 339:
+#line 1735 "c-parse.y"
 { /* Don't start the loop till we have succeeded
                     in parsing the end test.  This is to make sure
                     that we end every loop we start.  */
@@ -3194,25 +3247,25 @@ case 337:
                                             truthvalue_conversion (yyvsp[-1].ttype));
                  position_after_white_space (); ;
     break;}
-case 338:
-#line 1725 "c-parse.y"
+case 340:
+#line 1744 "c-parse.y"
 { expand_end_loop (); ;
     break;}
-case 339:
-#line 1728 "c-parse.y"
+case 341:
+#line 1747 "c-parse.y"
 { emit_line_note (input_filename, lineno);
                  expand_exit_loop_if_false (NULL_PTR,
                                             truthvalue_conversion (yyvsp[-2].ttype));
                  expand_end_loop ();
                  clear_momentary (); ;
     break;}
-case 340:
-#line 1735 "c-parse.y"
+case 342:
+#line 1754 "c-parse.y"
 { expand_end_loop ();
                  clear_momentary (); ;
     break;}
-case 341:
-#line 1739 "c-parse.y"
+case 343:
+#line 1758 "c-parse.y"
 { stmt_count++;
                  emit_line_note (yyvsp[-5].filename, yyvsp[-4].lineno);
                  /* See comment in `while' alternative, above.  */
@@ -3224,13 +3277,13 @@ case 341:
                     fn without calling expand_end_loop.  */
                ;
     break;}
-case 342:
-#line 1751 "c-parse.y"
+case 344:
+#line 1770 "c-parse.y"
 { yyvsp[0].lineno = lineno;
                  yyval.filename = input_filename; ;
     break;}
-case 343:
-#line 1754 "c-parse.y"
+case 345:
+#line 1773 "c-parse.y"
 { 
                  /* Start the loop.  Doing this after parsing
                     all the expressions ensures we will end the loop.  */
@@ -3247,8 +3300,8 @@ case 343:
                  yyvsp[-2].filename = input_filename;
                  position_after_white_space (); ;
     break;}
-case 344:
-#line 1770 "c-parse.y"
+case 346:
+#line 1789 "c-parse.y"
 { /* Emit the increment expression, with a line number.  */
                  emit_line_note (yyvsp[-4].filename, yyvsp[-5].lineno);
                  expand_loop_continue_here ();
@@ -3260,8 +3313,8 @@ case 344:
                    pop_momentary ();
                  expand_end_loop (); ;
     break;}
-case 345:
-#line 1781 "c-parse.y"
+case 347:
+#line 1800 "c-parse.y"
 { stmt_count++;
                  emit_line_note (yyvsp[-5].filename, yyvsp[-4].lineno);
                  c_expand_start_case (yyvsp[-1].ttype);
@@ -3270,42 +3323,42 @@ case 345:
                  push_momentary ();
                  position_after_white_space (); ;
     break;}
-case 346:
-#line 1789 "c-parse.y"
+case 348:
+#line 1808 "c-parse.y"
 { expand_end_case (yyvsp[-3].ttype);
                  if (yychar == CONSTANT || yychar == STRING)
                    pop_momentary_nofree ();
                  else
                    pop_momentary (); ;
     break;}
-case 347:
-#line 1795 "c-parse.y"
+case 349:
+#line 1814 "c-parse.y"
 { stmt_count++;
                  emit_line_note (yyvsp[-3].filename, yyvsp[-2].lineno);
                  if ( ! expand_exit_something ())
                    error ("break statement not within loop or switch"); ;
     break;}
-case 348:
-#line 1800 "c-parse.y"
+case 350:
+#line 1819 "c-parse.y"
 { stmt_count++;
                  emit_line_note (yyvsp[-3].filename, yyvsp[-2].lineno);
                  if (! expand_continue_loop (NULL_PTR))
                    error ("continue statement not within a loop"); ;
     break;}
-case 349:
-#line 1805 "c-parse.y"
+case 351:
+#line 1824 "c-parse.y"
 { stmt_count++;
                  emit_line_note (yyvsp[-3].filename, yyvsp[-2].lineno);
                  c_expand_return (NULL_TREE); ;
     break;}
-case 350:
-#line 1809 "c-parse.y"
+case 352:
+#line 1828 "c-parse.y"
 { stmt_count++;
                  emit_line_note (yyvsp[-4].filename, yyvsp[-3].lineno);
                  c_expand_return (yyvsp[-1].ttype); ;
     break;}
-case 351:
-#line 1813 "c-parse.y"
+case 353:
+#line 1832 "c-parse.y"
 { stmt_count++;
                  emit_line_note (yyvsp[-7].filename, yyvsp[-6].lineno);
                  STRIP_NOPS (yyvsp[-2].ttype);
@@ -3316,32 +3369,32 @@ case 351:
                  else
                    error ("argument of `asm' is not a constant string"); ;
     break;}
-case 352:
-#line 1824 "c-parse.y"
+case 354:
+#line 1843 "c-parse.y"
 { stmt_count++;
                  emit_line_note (yyvsp[-9].filename, yyvsp[-8].lineno);
                  c_expand_asm_operands (yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE, NULL_TREE,
                                         yyvsp[-6].ttype == ridpointers[(int)RID_VOLATILE],
                                         input_filename, lineno); ;
     break;}
-case 353:
-#line 1831 "c-parse.y"
+case 355:
+#line 1850 "c-parse.y"
 { stmt_count++;
                  emit_line_note (yyvsp[-11].filename, yyvsp[-10].lineno);
                  c_expand_asm_operands (yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE,
                                         yyvsp[-8].ttype == ridpointers[(int)RID_VOLATILE],
                                         input_filename, lineno); ;
     break;}
-case 354:
-#line 1839 "c-parse.y"
+case 356:
+#line 1858 "c-parse.y"
 { stmt_count++;
                  emit_line_note (yyvsp[-13].filename, yyvsp[-12].lineno);
                  c_expand_asm_operands (yyvsp[-8].ttype, yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype,
                                         yyvsp[-10].ttype == ridpointers[(int)RID_VOLATILE],
                                         input_filename, lineno); ;
     break;}
-case 355:
-#line 1845 "c-parse.y"
+case 357:
+#line 1864 "c-parse.y"
 { tree decl;
                  stmt_count++;
                  emit_line_note (yyvsp[-4].filename, yyvsp[-3].lineno);
@@ -3353,16 +3406,16 @@ case 355:
                    }
                ;
     break;}
-case 356:
-#line 1856 "c-parse.y"
+case 358:
+#line 1875 "c-parse.y"
 { if (pedantic)
                    pedwarn ("ANSI C forbids `goto *expr;'");
                  stmt_count++;
                  emit_line_note (yyvsp[-5].filename, yyvsp[-4].lineno);
                  expand_computed_goto (convert (ptr_type_node, yyvsp[-1].ttype)); ;
     break;}
-case 359:
-#line 1871 "c-parse.y"
+case 361:
+#line 1890 "c-parse.y"
 {
            /* The value returned by this action is  */
            /*      1 if everything is OK */ 
@@ -3384,15 +3437,15 @@ case 359:
              }
          ;
     break;}
-case 360:
-#line 1892 "c-parse.y"
+case 362:
+#line 1911 "c-parse.y"
 {
            if (yyvsp[-1].itype)
              iterator_for_loop_end (yyvsp[-3].ttype);
          ;
     break;}
-case 361:
-#line 1927 "c-parse.y"
+case 363:
+#line 1946 "c-parse.y"
 { register tree value = check_case_value (yyvsp[-1].ttype);
                  register tree label
                    = build_decl (LABEL_DECL, NULL_TREE, NULL_TREE);
@@ -3424,8 +3477,8 @@ case 361:
                    }
                  position_after_white_space (); ;
     break;}
-case 362:
-#line 1958 "c-parse.y"
+case 364:
+#line 1977 "c-parse.y"
 { register tree value1 = check_case_value (yyvsp[-3].ttype);
                  register tree value2 = check_case_value (yyvsp[-1].ttype);
                  register tree label
@@ -3457,8 +3510,8 @@ case 362:
                    }
                  position_after_white_space (); ;
     break;}
-case 363:
-#line 1989 "c-parse.y"
+case 365:
+#line 2008 "c-parse.y"
 {
                  tree duplicate;
                  register tree label
@@ -3474,8 +3527,8 @@ case 363:
                    }
                  position_after_white_space (); ;
     break;}
-case 364:
-#line 2004 "c-parse.y"
+case 366:
+#line 2023 "c-parse.y"
 { tree label = define_label (input_filename, lineno, yyvsp[-1].ttype);
                  stmt_count++;
                  emit_nop ();
@@ -3483,53 +3536,53 @@ case 364:
                    expand_label (label);
                  position_after_white_space (); ;
     break;}
-case 365:
-#line 2016 "c-parse.y"
+case 367:
+#line 2035 "c-parse.y"
 { emit_line_note (input_filename, lineno);
                  yyval.ttype = NULL_TREE; ;
     break;}
-case 366:
-#line 2019 "c-parse.y"
+case 368:
+#line 2038 "c-parse.y"
 { emit_line_note (input_filename, lineno); ;
     break;}
-case 367:
-#line 2024 "c-parse.y"
+case 369:
+#line 2043 "c-parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
-case 369:
-#line 2031 "c-parse.y"
+case 371:
+#line 2050 "c-parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
-case 372:
-#line 2038 "c-parse.y"
+case 374:
+#line 2057 "c-parse.y"
 { yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[0].ttype); ;
     break;}
-case 373:
-#line 2043 "c-parse.y"
+case 375:
+#line 2062 "c-parse.y"
 { yyval.ttype = build_tree_list (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
     break;}
-case 374:
-#line 2048 "c-parse.y"
+case 376:
+#line 2067 "c-parse.y"
 { yyval.ttype = tree_cons (NULL_TREE, combine_strings (yyvsp[0].ttype), NULL_TREE); ;
     break;}
-case 375:
-#line 2050 "c-parse.y"
+case 377:
+#line 2069 "c-parse.y"
 { yyval.ttype = tree_cons (NULL_TREE, combine_strings (yyvsp[0].ttype), yyvsp[-2].ttype); ;
     break;}
-case 376:
-#line 2056 "c-parse.y"
+case 378:
+#line 2075 "c-parse.y"
 { pushlevel (0);
                  clear_parm_order ();
                  declare_parm_level (0); ;
     break;}
-case 377:
-#line 2060 "c-parse.y"
+case 379:
+#line 2079 "c-parse.y"
 { yyval.ttype = yyvsp[0].ttype;
                  parmlist_tags_warning ();
                  poplevel (0, 0, 0); ;
     break;}
-case 379:
-#line 2068 "c-parse.y"
+case 381:
+#line 2087 "c-parse.y"
 { tree parm;
                  if (pedantic)
                    pedwarn ("ANSI C forbids forward parameter declarations");
@@ -3538,20 +3591,20 @@ case 379:
                    TREE_ASM_WRITTEN (parm) = 1;
                  clear_parm_order (); ;
     break;}
-case 380:
-#line 2076 "c-parse.y"
+case 382:
+#line 2095 "c-parse.y"
 { yyval.ttype = yyvsp[0].ttype; ;
     break;}
-case 381:
-#line 2078 "c-parse.y"
+case 383:
+#line 2097 "c-parse.y"
 { yyval.ttype = tree_cons (NULL_TREE, NULL_TREE, NULL_TREE); ;
     break;}
-case 382:
-#line 2084 "c-parse.y"
+case 384:
+#line 2103 "c-parse.y"
 { yyval.ttype = get_parm_info (0); ;
     break;}
-case 383:
-#line 2086 "c-parse.y"
+case 385:
+#line 2105 "c-parse.y"
 { yyval.ttype = get_parm_info (0);
                  /* Gcc used to allow this as an extension.  However, it does
                     not work for all targets, and thus has been disabled.
@@ -3562,24 +3615,24 @@ case 383:
                  error ("ANSI C requires a named argument before `...'");
                ;
     break;}
-case 384:
-#line 2096 "c-parse.y"
+case 386:
+#line 2115 "c-parse.y"
 { yyval.ttype = get_parm_info (1); ;
     break;}
-case 385:
-#line 2098 "c-parse.y"
+case 387:
+#line 2117 "c-parse.y"
 { yyval.ttype = get_parm_info (0); ;
     break;}
-case 386:
-#line 2103 "c-parse.y"
+case 388:
+#line 2122 "c-parse.y"
 { push_parm_decl (yyvsp[0].ttype); ;
     break;}
-case 387:
-#line 2105 "c-parse.y"
+case 389:
+#line 2124 "c-parse.y"
 { push_parm_decl (yyvsp[0].ttype); ;
     break;}
-case 388:
-#line 2112 "c-parse.y"
+case 390:
+#line 2131 "c-parse.y"
 { yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
                                                         yyvsp[-1].ttype),
                                        build_tree_list (prefix_attributes,
@@ -3589,8 +3642,8 @@ case 388:
                  declspec_stack = TREE_CHAIN (declspec_stack);
                  resume_momentary (yyvsp[-2].itype); ;
     break;}
-case 389:
-#line 2121 "c-parse.y"
+case 391:
+#line 2140 "c-parse.y"
 { yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
                                                         yyvsp[-1].ttype),
                                        build_tree_list (prefix_attributes,
@@ -3600,8 +3653,8 @@ case 389:
                  declspec_stack = TREE_CHAIN (declspec_stack);
                  resume_momentary (yyvsp[-2].itype); ;
     break;}
-case 390:
-#line 2130 "c-parse.y"
+case 392:
+#line 2149 "c-parse.y"
 { yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
                                                         yyvsp[-1].ttype),
                                        build_tree_list (prefix_attributes,
@@ -3611,8 +3664,8 @@ case 390:
                  declspec_stack = TREE_CHAIN (declspec_stack);
                  resume_momentary (yyvsp[-2].itype); ;
     break;}
-case 391:
-#line 2139 "c-parse.y"
+case 393:
+#line 2158 "c-parse.y"
 { yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
                                                         yyvsp[-1].ttype),
                                        build_tree_list (prefix_attributes,
@@ -3622,8 +3675,8 @@ case 391:
                  declspec_stack = TREE_CHAIN (declspec_stack);
                  resume_momentary (yyvsp[-2].itype);  ;
     break;}
-case 392:
-#line 2149 "c-parse.y"
+case 394:
+#line 2168 "c-parse.y"
 { yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
                                                         yyvsp[-1].ttype),
                                        build_tree_list (prefix_attributes,
@@ -3633,44 +3686,44 @@ case 392:
                  declspec_stack = TREE_CHAIN (declspec_stack);
                  resume_momentary (yyvsp[-2].itype);  ;
     break;}
-case 393:
-#line 2163 "c-parse.y"
+case 395:
+#line 2182 "c-parse.y"
 { pushlevel (0);
                  clear_parm_order ();
                  declare_parm_level (1); ;
     break;}
-case 394:
-#line 2167 "c-parse.y"
+case 396:
+#line 2186 "c-parse.y"
 { yyval.ttype = yyvsp[0].ttype;
                  parmlist_tags_warning ();
                  poplevel (0, 0, 0); ;
     break;}
-case 396:
-#line 2175 "c-parse.y"
+case 398:
+#line 2194 "c-parse.y"
 { tree t;
                  for (t = yyvsp[-1].ttype; t; t = TREE_CHAIN (t))
                    if (TREE_VALUE (t) == NULL_TREE)
                      error ("`...' in old-style identifier list");
                  yyval.ttype = tree_cons (NULL_TREE, NULL_TREE, yyvsp[-1].ttype); ;
     break;}
-case 397:
-#line 2185 "c-parse.y"
+case 399:
+#line 2204 "c-parse.y"
 { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;
     break;}
-case 398:
-#line 2187 "c-parse.y"
+case 400:
+#line 2206 "c-parse.y"
 { yyval.ttype = chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
     break;}
-case 399:
-#line 2193 "c-parse.y"
+case 401:
+#line 2212 "c-parse.y"
 { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;
     break;}
-case 400:
-#line 2195 "c-parse.y"
+case 402:
+#line 2214 "c-parse.y"
 { yyval.ttype = chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
     break;}
-case 401:
-#line 2200 "c-parse.y"
+case 403:
+#line 2219 "c-parse.y"
 { yyval.itype = pedantic;
                  pedantic = 0; ;
     break;}
@@ -3872,5 +3925,5 @@ yyerrhandle:
   yystate = yyn;
   goto yynewstate;
 }
-#line 2204 "c-parse.y"
+#line 2223 "c-parse.y"
 
index 88a308c118cdd2788fb31314314c8c093045bd79..c0bf10798ee39e63bfdab97fbf32d31d0f6a56df 100644 (file)
@@ -525,7 +525,7 @@ cast_expr:
                  tree type = $2;
                  finish_init ();
 
-                 if (pedantic)
+                 if (pedantic && ! flag_isoc9x)
                    pedwarn ("ANSI C forbids constructor expressions");
                  if (TYPE_NAME (type) != 0)
                    {
@@ -1275,33 +1275,41 @@ initlist1:
 /* `initelt' is a single element of an initializer.
    It may use braces.  */
 initelt:
-       expr_no_commas
-               { process_init_element ($1); }
-       | '{' 
+         designator_list '=' initval
+       | designator initval
+       | identifier ':'
+               { set_init_label ($1); }
+         initval
+       | initval
+       ;
+
+initval:
+         '{'
                { push_init_level (0); }
          initlist_maybe_comma '}'
                { process_init_element (pop_init_level (0)); }
+       | expr_no_commas
+               { process_init_element ($1); }
        | error
+       ;
+
+designator_list:
+         designator
+       | designator_list designator
+       ;
+
+designator:
+         '.' identifier
+               { set_init_label ($2); }
        /* These are for labeled elements.  The syntax for an array element
           initializer conflicts with the syntax for an Objective-C message,
           so don't include these productions in the Objective-C grammar.  */
 ifc
-       | '[' expr_no_commas ELLIPSIS expr_no_commas ']' '='
+       | '[' expr_no_commas ELLIPSIS expr_no_commas ']'
                { set_init_index ($2, $4); }
-         initelt
-       | '[' expr_no_commas ']' '='
-               { set_init_index ($2, NULL_TREE); }
-         initelt
        | '[' expr_no_commas ']'
                { set_init_index ($2, NULL_TREE); }
-         initelt
 end ifc
-       | identifier ':'
-               { set_init_label ($1); }
-         initelt
-       | '.' identifier '='
-               { set_init_label ($2); }
-         initelt
        ;
 \f
 nested_function:
@@ -1398,6 +1406,13 @@ parm_declarator:
 /*     | parm_declarator '(' error ')'  %prec '.'
                { $$ = build_nt (CALL_EXPR, $1, NULL_TREE, NULL_TREE);
                  poplevel (0, 0, 0); }  */
+ifc
+       | parm_declarator '[' '*' ']'  %prec '.'
+               { $$ = build_nt (ARRAY_REF, $1, NULL_TREE);
+                 if (! flag_isoc9x)
+                   error ("`[*]' in parameter declaration only allowed in ISO C 9x");
+               }
+end ifc
        | parm_declarator '[' expr ']'  %prec '.'
                { $$ = build_nt (ARRAY_REF, $1, $3); }
        | parm_declarator '[' ']'  %prec '.'
@@ -1427,6 +1442,13 @@ notype_declarator:
                { $$ = $2; }
        | '*' type_quals notype_declarator  %prec UNARY
                { $$ = make_pointer_declarator ($2, $3); }
+ifc
+       | notype_declarator '[' '*' ']'  %prec '.'
+               { $$ = build_nt (ARRAY_REF, $1, NULL_TREE);
+                 if (! flag_isoc9x)
+                   error ("`[*]' in parameter declaration only allowed in ISO C 9x");
+               }
+end ifc
        | notype_declarator '[' expr ']'  %prec '.'
                { $$ = build_nt (ARRAY_REF, $1, $3); }
        | notype_declarator '[' ']'  %prec '.'
@@ -1509,7 +1531,8 @@ maybecomma:
 maybecomma_warn:
          /* empty */
        | ','
-               { if (pedantic) pedwarn ("comma at end of enumerator list"); }
+               { if (pedantic && ! flag_isoc9x)
+                   pedwarn ("comma at end of enumerator list"); }
        ;
 
 component_decl_list:
index 99cf1675c009797ddcda84dbf84f73e400f37045..aa5a5b4ae1421eb280a94d6f23fef01e6b565169 100644 (file)
@@ -480,7 +480,7 @@ cast_expr:
                  tree type = $2;
                  finish_init ();
 
-                 if (pedantic)
+                 if (pedantic && ! flag_isoc9x)
                    pedwarn ("ANSI C forbids constructor expressions");
                  if (TYPE_NAME (type) != 0)
                    {
@@ -1109,31 +1109,39 @@ initlist1:
 /* `initelt' is a single element of an initializer.
    It may use braces.  */
 initelt:
-       expr_no_commas
-               { process_init_element ($1); }
-       | '{' 
+         designator_list '=' initval
+       | designator initval
+       | identifier ':'
+               { set_init_label ($1); }
+         initval
+       | initval
+       ;
+
+initval:
+         '{'
                { push_init_level (0); }
          initlist_maybe_comma '}'
                { process_init_element (pop_init_level (0)); }
+       | expr_no_commas
+               { process_init_element ($1); }
        | error
+       ;
+
+designator_list:
+         designator
+       | designator_list designator
+       ;
+
+designator:
+         '.' identifier
+               { set_init_label ($2); }
        /* These are for labeled elements.  The syntax for an array element
           initializer conflicts with the syntax for an Objective-C message,
           so don't include these productions in the Objective-C grammar.  */
-       | '[' expr_no_commas ELLIPSIS expr_no_commas ']' '='
+       | '[' expr_no_commas ELLIPSIS expr_no_commas ']'
                { set_init_index ($2, $4); }
-         initelt
-       | '[' expr_no_commas ']' '='
-               { set_init_index ($2, NULL_TREE); }
-         initelt
        | '[' expr_no_commas ']'
                { set_init_index ($2, NULL_TREE); }
-         initelt
-       | identifier ':'
-               { set_init_label ($1); }
-         initelt
-       | '.' identifier '='
-               { set_init_label ($2); }
-         initelt
        ;
 \f
 nested_function:
@@ -1227,6 +1235,11 @@ parm_declarator:
 /*     | parm_declarator '(' error ')'  %prec '.'
                { $$ = build_nt (CALL_EXPR, $1, NULL_TREE, NULL_TREE);
                  poplevel (0, 0, 0); }  */
+       | parm_declarator '[' '*' ']'  %prec '.'
+               { $$ = build_nt (ARRAY_REF, $1, NULL_TREE);
+                 if (! flag_isoc9x)
+                   error ("`[*]' in parameter declaration only allowed in ISO C 9x");
+               }
        | parm_declarator '[' expr ']'  %prec '.'
                { $$ = build_nt (ARRAY_REF, $1, $3); }
        | parm_declarator '[' ']'  %prec '.'
@@ -1256,6 +1269,11 @@ notype_declarator:
                { $$ = $2; }
        | '*' type_quals notype_declarator  %prec UNARY
                { $$ = make_pointer_declarator ($2, $3); }
+       | notype_declarator '[' '*' ']'  %prec '.'
+               { $$ = build_nt (ARRAY_REF, $1, NULL_TREE);
+                 if (! flag_isoc9x)
+                   error ("`[*]' in parameter declaration only allowed in ISO C 9x");
+               }
        | notype_declarator '[' expr ']'  %prec '.'
                { $$ = build_nt (ARRAY_REF, $1, $3); }
        | notype_declarator '[' ']'  %prec '.'
@@ -1338,7 +1356,8 @@ maybecomma:
 maybecomma_warn:
          /* empty */
        | ','
-               { if (pedantic) pedwarn ("comma at end of enumerator list"); }
+               { if (pedantic && ! flag_isoc9x)
+                   pedwarn ("comma at end of enumerator list"); }
        ;
 
 component_decl_list:
index 87868a0e8307560f2d345ed50631957d3413d954..f09709dc94c0d6660265de0f5312eb2e315e8dd2 100644 (file)
@@ -285,6 +285,10 @@ int traditional;
 
 int c89;
 
+/* Nonzero for the 199x C Standard.  */
+
+int c9x;
+
 /* Nonzero causes output not to be done,
    but directives such as #define that have side effects
    are still obeyed.  */
@@ -604,6 +608,11 @@ union hashval {
 static char rest_extension[] = "...";
 #define REST_EXTENSION_LENGTH  (sizeof (rest_extension) - 1)
 
+/* This is the implicit parameter name when using variable number of
+   parameters for macros using the ISO C 9x extension.  */
+static char va_args_name[] = "__VA_ARGS__";
+#define VA_ARGS_NAME_LENGTH    (sizeof (va_args_name) - 1)
+
 /* The structure of a node in the hash table.  The hash table
    has entries for all tokens defined by #define directives (type T_MACRO),
    plus some special tokens like __LINE__ (these each have their own
@@ -1156,12 +1165,15 @@ print_help ()
   printf ("  -traditional              Follow K&R pre-processor behaviour\n");
   printf ("  -trigraphs                Support ANSI C trigraphs\n");
   printf ("  -lang-c                   Assume that the input sources are in C\n");
-  printf ("  -lang-c89                 Assume that the input sources are in C89\n");
+  printf ("  -lang-c89                 Assume that the input is C89; depricated\n");
   printf ("  -lang-c++                 Assume that the input sources are in C++\n");
   printf ("  -lang-objc                Assume that the input sources are in ObjectiveC\n");
   printf ("  -lang-objc++              Assume that the input sources are in ObjectiveC++\n");
   printf ("  -lang-asm                 Assume that the input sources are in assembler\n");
   printf ("  -lang-chill               Assume that the input sources are in Chill\n");
+  printf ("  -std=<std name>           Specify the conformance standard; one of:\n");
+  printf ("                            gnu, c89, c9x, iso9899:1990,\n");
+  printf ("                            iso9899:199409, iso9899:199x\n");
   printf ("  -+                        Allow parsing of C++ style features\n");
   printf ("  -w                        Inhibit warning messages\n");
   printf ("  -Wtrigraphs               Warn if trigraphs are encountered\n");
@@ -1460,18 +1472,18 @@ main (argc, argv)
 
       case 'l':
        if (! strcmp (argv[i], "-lang-c"))
-         cplusplus = 0, cplusplus_comments = 1, c89 = 0, objc = 0;
-       if (! strcmp (argv[i], "-lang-c89"))
-         cplusplus = 0, cplusplus_comments = 0, c89 = 1, objc = 0;
-       if (! strcmp (argv[i], "-lang-c++"))
-         cplusplus = 1, cplusplus_comments = 1, c89 = 0, objc = 0;
-       if (! strcmp (argv[i], "-lang-objc"))
-         cplusplus = 0, cplusplus_comments = 1, c89 = 0, objc = 1;
-       if (! strcmp (argv[i], "-lang-objc++"))
-         cplusplus = 1, cplusplus_comments = 1, c89 = 0, objc = 1;
-       if (! strcmp (argv[i], "-lang-asm"))
+         cplusplus = 0, cplusplus_comments = 1, c89 = 0, c9x = 1, objc = 0;
+       else if (! strcmp (argv[i], "-lang-c89"))
+         cplusplus = 0, cplusplus_comments = 0, c89 = 1, c9x = 0, objc = 0;
+       else if (! strcmp (argv[i], "-lang-c++"))
+         cplusplus = 1, cplusplus_comments = 1, c89 = 0, c9x = 0, objc = 0;
+       else if (! strcmp (argv[i], "-lang-objc"))
+         cplusplus = 0, cplusplus_comments = 1, c89 = 0, c9x = 0, objc = 1;
+       else if (! strcmp (argv[i], "-lang-objc++"))
+         cplusplus = 1, cplusplus_comments = 1, c89 = 0, c9x = 0, objc = 1;
+       else if (! strcmp (argv[i], "-lang-asm"))
          lang_asm = 1;
-       if (! strcmp (argv[i], "-lint"))
+       else if (! strcmp (argv[i], "-lint"))
          for_lint = 1;
        break;
 
@@ -1479,6 +1491,17 @@ main (argc, argv)
        cplusplus = 1, cplusplus_comments = 1;
        break;
 
+      case 's':
+       if (!strcmp (argv[i], "-std=iso9899:1990")
+           || !strcmp (argv[i], "-std=iso9899:199409")
+           || !strcmp (argv[i], "-std=c89"))
+         cplusplus = 0, cplusplus_comments = 0, c89 = 1, c9x = 0, objc = 0;
+        else if (!strcmp (argv[i], "-std=iso9899:199x")
+                || !strcmp (argv[i], "-std=c9x")
+                || !strcmp (argv[i], "-std=gnu"))
+         cplusplus = 0, cplusplus_comments = 1, c89 = 0, c9x = 1, objc = 0;
+       break;
+
       case 'w':
        inhibit_warnings = 1;
        break;
@@ -5800,7 +5823,18 @@ create_definition (buf, limit, op)
                 rest_extension);
 
       if (!is_idstart[*bp])
+       {
+         if (c9x && limit - bp > (long) REST_EXTENSION_LENGTH
+             && bcmp (rest_extension, bp, REST_EXTENSION_LENGTH) == 0)
+           {
+             /* This is the ISO C 9x way to write macros with variable
+                number of arguments.  */
+             rest_args = 1;
+             temp->rest_args = 1;
+           }
+         else
        pedwarn ("invalid character in macro parameter name");
+       }
       
       /* Find the end of the arg name.  */
       while (is_idchar[*bp]) {
@@ -5815,6 +5849,13 @@ create_definition (buf, limit, op)
          break;
        }
       }
+      if (bp == temp->name && rest_args == 1)
+       {
+         /* This is the ISO C 9x style.  */
+         temp->name = va_args_name;
+         temp->length = VA_ARGS_NAME_LENGTH;
+       }
+      else
       temp->length = bp - temp->name;
       if (rest_args == 1)
        bp += REST_EXTENSION_LENGTH;
@@ -5828,7 +5869,9 @@ create_definition (buf, limit, op)
        bp++;
        SKIP_WHITE_SPACE (bp);
        /* A comma at this point can only be followed by an identifier.  */
-       if (!is_idstart[*bp]) {
+       if (!is_idstart[*bp]
+           && (c9x && limit - bp <= (long) REST_EXTENSION_LENGTH
+               ||  bcmp (rest_extension, bp, REST_EXTENSION_LENGTH) != 0)) {
          error ("badly punctuated parameter list in `#define'");
          goto nope;
        }
@@ -5842,11 +5885,19 @@ create_definition (buf, limit, op)
 
        for (otemp = temp->next; otemp != NULL; otemp = otemp->next)
          if (temp->length == otemp->length
-             && bcmp (temp->name, otemp->name, temp->length) == 0) {
+             && bcmp (temp->name, otemp->name, temp->length) == 0)
+           {
              error ("duplicate argument name `%.*s' in `#define'",
                     temp->length, temp->name);
              goto nope;
          }
+       if (rest_args == 0 && temp->length == VA_ARGS_NAME_LENGTH
+           && bcmp (temp->name, va_args_name, VA_ARGS_NAME_LENGTH) == 0)
+         {
+           error ("\
+reserved name `%s' used as argument name in `#define'", va_args_name);
+           goto nope;
+         }
       }
     }
 
index dac403593034cdef49ca5baff0c2ae197840cf66..c1cd7889db589603883630f37e175847b4315137 100644 (file)
@@ -33,6 +33,7 @@ C++ Language}, for extensions that apply @emph{only} to C++.
 * Conditionals::        Omitting the middle operand of a @samp{?:} expression.
 * Long Long::          Double-word integers---@code{long long int}.
 * Complex::             Data types for complex numbers.
+* Hex Floats::          Hexadecimal floating-point constants.
 * Zero Length::         Zero-length arrays.
 * Variable Length::     Arrays whose length is computed at run time.
 * Macro Varargs::      Macros with variable number of arguments.
@@ -78,6 +79,7 @@ C++ Language}, for extensions that apply @emph{only} to C++.
 * Conditionals::        Omitting the middle operand of a @samp{?:} expression.
 * Long Long::          Double-word integers---@code{long long int}.
 * Complex::             Data types for complex numbers.
+* Hex Floats::          Hexadecimal floating-point constants.
 * Zero Length::         Zero-length arrays.
 * Variable Length::     Arrays whose length is computed at run time.
 * Macro Varargs::      Macros with variable number of arguments.
@@ -791,6 +793,22 @@ examine and set these two fictitious variables with your debugger.
 A future version of GDB will know how to recognize such pairs and treat
 them as a single variable with a complex type.
 
+@node Hex Floats
+GNU CC recognizes floating-point numbers written not only in the usual
+decimal notation, such as @code{1.55e1}, but also numbers such as
+@code{0x1.fp3} written in hexadecimal format.  In that format the
+@code{0x} hex introducer and the @code{p} or @code{P} exponent field are
+mandatory.  The exponent is a decimal number that indicates the power of
+2 by which the significand part will be multiplied.  Thus @code{0x1.f} is
+1 15/16, @code{p3} multiplies it by 8, and the value of @code{0x1.fp3}
+is the same as @code{1.55e1}.
+
+Unlike for floating-point numbers in the decimal notation the exponent
+is always required in the hexadecimal notation.  Otherwise the compiler
+would not be able to resolve the ambiguity of, e.g., @code{0x1.f}.  This
+could mean @code{1.0f} or @code{1.9375} since @code{f} is also the
+extension for floating-point constants of type @code{float}.
+
 @node Zero Length
 @section Arrays of Length Zero
 @cindex arrays of length zero
index c05c331daca593ed9eece907472b8fed0ecce12f..0937d74af0cf63650d6ded758858e4cefe8df94d 100644 (file)
@@ -964,6 +964,235 @@ fail:
   *r = y.d;
   return 1;
 }
+
+
+/* Convert C9X hexadecimal floating point string constant S.  Return
+   real value type in mode MODE.  This function uses the host computer's
+   fp arithmetic when there is no REAL_ARITHMETIC.  */
+
+REAL_VALUE_TYPE
+real_hex_to_f (s, mode)
+   char *s;
+   enum machine_mode mode;
+{
+   REAL_VALUE_TYPE ip;
+   char *p = s;
+   unsigned HOST_WIDE_INT low, high;
+   int frexpon, expon, shcount, nrmcount, k;
+   int sign, expsign, decpt, isfloat, isldouble, gotp, lost;
+   char c;
+
+   isldouble = 0;
+   isfloat = 0;
+   frexpon = 0;
+   expon = 0;
+   expsign = 1;
+   ip = 0.0;
+
+   while (*p == ' ' || *p == '\t')
+     ++p;
+
+   /* Sign, if any, comes first.  */
+   sign = 1;
+   if (*p == '-')
+     {
+       sign = -1;
+       ++p;
+     }
+
+   /* The string is supposed to start with 0x or 0X .  */
+   if (*p == '0')
+     {
+       ++p;
+       if (*p == 'x' || *p == 'X')
+        ++p;
+       else
+        abort ();
+     }
+   else
+     abort ();
+
+   while (*p == '0')
+     ++p;
+
+   high = 0;
+   low = 0;
+   lost = 0; /* Nonzero low order bits shifted out and discarded.  */
+   frexpon = 0;  /* Bits after the decimal point.  */
+   expon = 0;  /* Value of exponent.  */
+   decpt = 0;  /* How many decimal points.  */
+   gotp = 0;  /* How many P's.  */
+   shcount = 0;
+   while ((c = *p) != '\0')
+     {
+       if ((c >= '0' && c <= '9') || (c >= 'A' && c <= 'F')
+          || (c >= 'a' && c <= 'f'))
+        {
+          k = c & 0x7f;
+          if (k >= 'a')
+            k = k - 'a' + 10;
+          else if (k >= 'A')
+            k = k - 'A' + 10;
+          else
+            k = k - '0';
+
+          if ((high & 0xf0000000) == 0)
+            {
+              high = (high << 4) + ((low >> 28) & 15);
+              low = (low << 4) + k;
+              shcount += 4;
+              if (decpt)
+                frexpon += 4;
+            }
+          else
+            {
+              /* Record nonzero lost bits.  */
+              lost |= k;
+              if (!decpt)
+                frexpon -= 4;
+            }
+          ++p;
+        }
+       else if ( c == '.')
+        {
+          ++decpt;
+          ++p;
+        }
+       else if (c == 'p' || c == 'P')
+        {
+          ++gotp;
+          ++p;
+          /* Sign of exponent.  */
+          if (*p == '-')
+            {
+              expsign = -1;
+              ++p;
+            }
+          /* Value of exponent.
+             The exponent field is a decimal integer.  */
+          while (isdigit(*p))
+            {
+              k = (*p++ & 0x7f) - '0';
+              expon = 10 * expon + k;
+            }
+          expon *= expsign;
+          /* F suffix is ambiguous in the significand part
+             so it must appear after the decimal exponent field.  */
+          if (*p == 'f' || *p == 'F')
+            {
+              isfloat = 1;
+              ++p;
+              break;
+            }
+        }
+       else if (c == 'l' || c == 'L')
+        {
+          isldouble = 1;
+          ++p;
+          break;
+        }
+       else
+        break;
+     }
+   /* Abort if last character read was not legitimate.  */
+   c = *p;
+   if ((c != '\0' && c != ' ' && c != '\n' && c != '\r') || (decpt > 1))
+     abort ();
+   /* There must be either one decimal point or one p.  */
+   if (decpt == 0 && gotp == 0)
+     abort ();
+   shcount -= 4;
+   if ((high == 0) && (low == 0))
+     {
+       return dconst0;
+     }
+
+   /* Normalize.  */
+   nrmcount = 0;
+   if (high == 0)
+     {
+       high = low;
+       low = 0;
+       nrmcount += 32;
+     }
+   /* Leave a high guard bit for carry-out.  */
+   if ((high & 0x80000000) != 0)
+     {
+       lost |= low & 1;
+       low = (low >> 1) | (high << 31);
+       high = high >> 1;
+       nrmcount -= 1;
+     }
+   if ((high & 0xffff8000) == 0)
+     {
+       high = (high << 16) + ((low >> 16) & 0xffff);
+       low = low << 16;
+       nrmcount += 16;
+     }
+   while ((high & 0xc0000000) == 0)
+     {
+       high = (high << 1) + ((low >> 31) & 1);
+       low = low << 1;
+       nrmcount += 1;
+     }
+   if (isfloat || GET_MODE_SIZE(mode) == UNITS_PER_WORD)
+     {
+       /* Keep 24 bits precision, bits 0x7fffff80.
+         Rounding bit is 0x40.  */
+       lost = lost | low | (high & 0x3f);
+       low = 0;
+       if (high & 0x40)
+        {
+          if ((high & 0x80) || lost)
+            high += 0x40;
+        }
+       high &= 0xffffff80;
+     }
+   else
+     {
+       /* We need real.c to do long double formats, so here default
+         to double precision.  */
+#if HOST_FLOAT_FORMAT == IEEE_FLOAT_FORMAT
+       /* IEEE double.
+         Keep 53 bits precision, bits 0x7fffffff fffffc00.
+         Rounding bit is low word 0x200.  */
+       lost = lost | (low & 0x1ff);
+       if (low & 0x200)
+        {
+          if ((low & 0x400) || lost)
+            {
+              low = (low + 0x200) & 0xfffffc00;
+              if (low == 0)
+                high += 1;
+            }
+        }
+       low &= 0xfffffc00;
+#else
+       /* Assume it's a VAX with 56-bit significand,
+          bits 0x7fffffff ffffff80.  */
+       lost = lost | (low & 0x7f);
+       if (low & 0x40)
+        {
+          if ((low & 0x80) || lost)
+            {
+              low = (low + 0x40) & 0xffffff80;
+              if (low == 0)
+                high += 1;
+            }
+        }
+       low &= 0xffffff80;
+#endif
+     }
+   ip = (double) high;
+   ip =  REAL_VALUE_LDEXP (ip, 32) + (double) low;
+   /* Apply shifts and exponent value as power of 2.  */
+   ip = REAL_VALUE_LDEXP (ip, expon - (nrmcount + frexpon));
+
+   if (sign < 0)
+     ip = -ip;
+   return ip;
+}
+
 #endif /* no REAL_ARITHMETIC */
 \f
 /* Split a tree IN into a constant and a variable part
index 8521665768c4d97066200861a38a47a92b54262c..7b67bd369f69813a21a22dfe377077151c50b296 100644 (file)
--- a/gcc/gcc.c
+++ b/gcc/gcc.c
@@ -581,12 +581,13 @@ static struct compiler default_compilers[] =
   {"@c",
    {
 #if USE_CPPLIB
-     "%{E|M|MM:cpp -lang-c%{ansi:89} %{nostdinc*} %{C} %{v} %{A*} %{I*} %{P} %I\
+     "%{E|M|MM:cpp -lang-c %(ansi:-std=c89} %{std*} %{nostdinc*}\
+       %{C} %{v} %{A*} %{I*} %{P} %I\
        %{C:%{!E:%eGNU C does not support -C without using -E}}\
        %{M} %{MM} %{MD:-MD %b.d} %{MMD:-MMD %b.d} %{MG}\
         -undef -D__GNUC__=%v1 -D__GNUC_MINOR__=%v2\
-       %{ansi:-trigraphs -D__STRICT_ANSI__}\
-       %{!undef:%{!ansi:%p} %P} %{trigraphs} \
+       %{ansi|std=*:%{!std=gnu:-trigraphs -D__STRICT_ANSI__}}\
+       %{!undef:%{!ansi:%{!std=*:%p}%{std=gnu:%p}} %P} %{trigraphs}\
         %c %{Os:-D__OPTIMIZE_SIZE__} %{O*:%{!O0:-D__OPTIMIZE__}}\
         %{traditional} %{ftraditional:-traditional}\
         %{traditional-cpp:-traditional}\
@@ -594,20 +595,20 @@ static struct compiler default_compilers[] =
        %{g*} %{W*} %{w} %{pedantic*} %{H} %{d*} %C %{D*} %{U*} %{i*} %Z\
         %i %{E:%W{o*}}%{M:%W{o*}}%{MM:%W{o*}}\n}\
       %{!E:%{!M:%{!MM:cc1 %i %1 \
-                  -lang-c%{ansi:89} %{nostdinc*} %{A*} %{I*} %I\
+                  %{std*} %{nostdinc*} %{A*} %{I*} %I\
                   %{!Q:-quiet} -dumpbase %b.c %{d*} %{m*} %{a*}\
                   %{MD:-MD %b.d} %{MMD:-MMD %b.d} %{MG}\
                   -undef -D__GNUC__=%v1 -D__GNUC_MINOR__=%v2\
-                  %{ansi:-trigraphs -D__STRICT_ANSI__}\
-                  %{!undef:%{!ansi:%p} %P} %{trigraphs} \
+                 %{ansi|std=*:%{!std=gnu:-trigraphs -D__STRICT_ANSI__}}\
+                 %{!undef:%{!ansi:%{!std=*:%p}%{std=gnu:%p}} %P} %{trigraphs}\
                   %c %{Os:-D__OPTIMIZE_SIZE__} %{O*:%{!O0:-D__OPTIMIZE__}}\
                   %{H} %C %{D*} %{U*} %{i*} %Z\
                   %{ftraditional:-traditional}\
                   %{traditional-cpp:-traditional}\
                  %{traditional} %{v:-version} %{pg:-p} %{p} %{f*}\
                  %{aux-info*}\
-                 %{--help:--help} \
-                 %{g*} %{O*} %{W*} %{w} %{pedantic*} %{ansi} \
+                 %{--help:--help}\
+                 %{g*} %{O*} %{W*} %{w} %{pedantic*}\
                  %{pg:%{fomit-frame-pointer:%e-pg and -fomit-frame-pointer are incompatible}}\
                  %{S:%W{o*}%{!o*:-o %b.s}}%{!S:-o %{|!pipe:%g.s}} |\n\
                   %{!S:as %a %Y\
@@ -615,12 +616,13 @@ static struct compiler default_compilers[] =
                      %{!pipe:%g.s} %A\n }}}}"
   }},
 #else /* ! USE_CPPLIB */
-    "cpp -lang-c%{ansi:89} %{nostdinc*} %{C} %{v} %{A*} %{I*} %{P} %I\
+    "cpp -lang-c %{ansi:-std=c89} %{std*} %{nostdinc*}\
+       %{C} %{v} %{A*} %{I*} %{P} %I\
        %{C:%{!E:%eGNU C does not support -C without using -E}}\
        %{M} %{MM} %{MD:-MD %b.d} %{MMD:-MMD %b.d} %{MG}\
         -undef -D__GNUC__=%v1 -D__GNUC_MINOR__=%v2\
-       %{ansi:-trigraphs -D__STRICT_ANSI__}\
-       %{!undef:%{!ansi:%p} %P} %{trigraphs} \
+       %{ansi|std=*:%{!std=gnu:-trigraphs -D__STRICT_ANSI__}}\
+       %{!undef:%{!ansi:%{!std=*:%p}%{std=gnu:%p}} %P} %{trigraphs}\
         %c %{Os:-D__OPTIMIZE_SIZE__} %{O*:%{!O0:-D__OPTIMIZE__}}\
         %{traditional} %{ftraditional:-traditional}\
         %{traditional-cpp:-traditional}\
@@ -629,7 +631,7 @@ static struct compiler default_compilers[] =
         %i %{!M:%{!MM:%{!E:%{!pipe:%g.i}}}}%{E:%W{o*}}%{M:%W{o*}}%{MM:%W{o*}} |\n",
    "%{!M:%{!MM:%{!E:cc1 %{!pipe:%g.i} %1 \
                   %{!Q:-quiet} -dumpbase %b.c %{d*} %{m*} %{a*}\
-                  %{g*} %{O*} %{W*} %{w} %{pedantic*} %{ansi} \
+                  %{g*} %{O*} %{W*} %{w} %{pedantic*} %{std*}\
                   %{traditional} %{v:-version} %{pg:-p} %{p} %{f*}\
                   %{aux-info*}\
                   %{--help:--help} \
@@ -641,12 +643,13 @@ static struct compiler default_compilers[] =
   }},
 #endif /* ! USE_CPPLIB */
   {"-",
-   {"%{E:cpp -lang-c%{ansi:89} %{nostdinc*} %{C} %{v} %{A*} %{I*} %{P} %I\
+   {"%{E:cpp -lang-c %{ansi:-std=c89} %{std*} %{nostdinc*}\
+       %{C} %{v} %{A*} %{I*} %{P} %I\
        %{C:%{!E:%eGNU C does not support -C without using -E}}\
        %{M} %{MM} %{MD:-MD %b.d} %{MMD:-MMD %b.d} %{MG}\
         -undef -D__GNUC__=%v1 -D__GNUC_MINOR__=%v2\
-       %{ansi:-trigraphs -D__STRICT_ANSI__}\
-       %{!undef:%{!ansi:%p} %P} %{trigraphs}\
+       %{ansi|std=*:%{!std=gnu:-trigraphs -D__STRICT_ANSI__}}\
+       %{!undef:%{!ansi:%{!std=*:%p}%{std=gnu:%p}} %P} %{trigraphs}\
         %c %{Os:-D__OPTIMIZE_SIZE__} %{O*:%{!O0:-D__OPTIMIZE__}}\
         %{traditional} %{ftraditional:-traditional}\
         %{traditional-cpp:-traditional}\
@@ -661,8 +664,8 @@ static struct compiler default_compilers[] =
        %{C:%{!E:%eGNU C does not support -C without using -E}}\
         %{M} %{MM} %{MD:-MD %b.d} %{MMD:-MMD %b.d} %{MG}\
         -undef -D__GNUC__=%v1 -D__GNUC_MINOR__=%v2\
-        %{ansi:-trigraphs -D__STRICT_ANSI__}\
-       %{!undef:%{!ansi:%p} %P} %{trigraphs}\
+       %{std=*:%{!std=gnu:-trigraphs -D__STRICT_ANSI__}}\
+       %{!undef:%{!std=*:%p}%{std=gnu:%p} %P} %{trigraphs}\
         %c %{Os:-D__OPTIMIZE_SIZE__} %{O*:%{!O0:-D__OPTIMIZE__}}\
         %{traditional} %{ftraditional:-traditional}\
         %{traditional-cpp:-traditional}\
@@ -672,7 +675,7 @@ static struct compiler default_compilers[] =
   {".i", {"@cpp-output"}},
   {"@cpp-output",
    {"%{!M:%{!MM:%{!E:cc1 %i %1 %{!Q:-quiet} %{d*} %{m*} %{a*}\
-                       %{g*} %{O*} %{W*} %{w} %{pedantic*} %{ansi}\
+                       %{g*} %{O*} %{W*} %{w} %{pedantic*} %{std*}\
                        %{traditional} %{v:-version} %{pg:-p} %{p} %{f*}\
                        %{aux-info*}\
                        %{pg:%{fomit-frame-pointer:%e-pg and -fomit-frame-pointer are incompatible}}\
@@ -850,6 +853,7 @@ struct option_map option_map[] =
    {"--silent", "-q", 0},
    {"--specs", "-specs=", "aj"},
    {"--static", "-static", 0},
+   {"--std", "-std=", "aj"},
    {"--symbolic", "-symbolic", 0},
    {"--target", "-b", "a"},
    {"--trace-includes", "-H", 0},
@@ -2454,6 +2458,7 @@ display_help ()
   printf ("  -save-temps              Do not delete intermediate files\n");
   printf ("  -pipe                    Use pipes rather than intermediate files\n");
   printf ("  -specs=<file>            Override builtin specs with the contents of <file>\n");
+  printf ("  -std=<standard>          Assume that the input sources are for <standard>\n");
   printf ("  -B <directory>           Add <directory> to the compiler's search paths\n");
   printf ("  -b <machine>             Run gcc for target <machine>, if installed\n");
   printf ("  -V <version>             Run gcc version number <version>, if installed\n");
index 81daef3b8f793e05ef4ecb1efb194417b6e832db..9215f1805d5ecc8c5f5cf0b25f44c135b37ea15d 100644 (file)
@@ -146,11 +146,11 @@ extern void yyprint                       PROTO ((FILE *, int, YYSTYPE));
 
 
 
-#define        YYFINAL         947
+#define        YYFINAL         951
 #define        YYFLAG          -32768
 #define        YYNTBASE        84
 
-#define YYTRANSLATE(x) ((unsigned)(x) <= 316 ? yytranslate[x] : 309)
+#define YYTRANSLATE(x) ((unsigned)(x) <= 316 ? yytranslate[x] : 311)
 
 static const char yytranslate[] = {     0,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -209,64 +209,64 @@ static const short yyprhs[] = {     0,
    509,   511,   515,   517,   521,   522,   527,   528,   535,   539,
    540,   547,   551,   552,   554,   556,   559,   566,   568,   572,
    573,   575,   580,   587,   592,   594,   596,   598,   600,   602,
-   603,   608,   610,   611,   614,   616,   620,   622,   623,   628,
-   630,   631,   636,   637,   643,   644,   645,   651,   652,   653,
-   659,   661,   663,   667,   671,   676,   680,   684,   688,   690,
-   692,   696,   701,   705,   709,   713,   715,   719,   723,   727,
-   732,   736,   740,   742,   744,   747,   749,   752,   754,   757,
-   758,   766,   772,   775,   776,   784,   790,   793,   794,   803,
-   804,   812,   815,   816,   818,   819,   821,   823,   826,   827,
-   831,   834,   839,   843,   845,   849,   851,   853,   856,   858,
-   862,   867,   874,   880,   882,   886,   888,   890,   894,   897,
-   900,   901,   903,   905,   908,   909,   912,   916,   920,   923,
-   927,   932,   936,   939,   943,   946,   948,   950,   953,   956,
-   957,   959,   962,   963,   964,   966,   968,   971,   975,   977,
-   980,   982,   985,   992,   998,  1004,  1007,  1010,  1015,  1016,
-  1021,  1022,  1023,  1027,  1032,  1036,  1038,  1040,  1042,  1044,
-  1047,  1048,  1053,  1055,  1059,  1060,  1061,  1069,  1075,  1078,
-  1079,  1080,  1081,  1094,  1095,  1102,  1105,  1108,  1111,  1115,
-  1122,  1131,  1142,  1155,  1159,  1164,  1166,  1168,  1169,  1176,
-  1180,  1186,  1189,  1192,  1193,  1195,  1196,  1198,  1199,  1201,
-  1203,  1207,  1212,  1214,  1218,  1219,  1222,  1225,  1226,  1231,
-  1234,  1235,  1237,  1239,  1243,  1245,  1249,  1254,  1259,  1264,
-  1269,  1274,  1275,  1278,  1280,  1283,  1285,  1289,  1291,  1295,
-  1297,  1299,  1301,  1303,  1305,  1307,  1309,  1311,  1315,  1319,
-  1324,  1325,  1326,  1337,  1338,  1345,  1346,  1347,  1360,  1361,
-  1370,  1371,  1378,  1381,  1382,  1391,  1396,  1397,  1407,  1413,
-  1414,  1421,  1422,  1424,  1428,  1432,  1434,  1436,  1438,  1440,
-  1441,  1445,  1448,  1452,  1456,  1458,  1459,  1461,  1465,  1467,
-  1471,  1474,  1475,  1476,  1477,  1485,  1486,  1487,  1488,  1496,
-  1497,  1498,  1501,  1503,  1505,  1508,  1509,  1513,  1515,  1517,
-  1518,  1519,  1525,  1526,  1527,  1533,  1538,  1540,  1546,  1549,
-  1550,  1553,  1554,  1556,  1558,  1560,  1563,  1566,  1571,  1574,
-  1577,  1579,  1583,  1586,  1589,  1592,  1593,  1596,  1597,  1601,
-  1603,  1605,  1608,  1610,  1612,  1614,  1616,  1618,  1620,  1622,
-  1624,  1626,  1628,  1630,  1632,  1634,  1636,  1638,  1640,  1642,
-  1644,  1646,  1648,  1650,  1652,  1654,  1656,  1658,  1665,  1669,
-  1675,  1678,  1680,  1682,  1684,  1687,  1689,  1693,  1696,  1698,
-  1700,  1701,  1702,  1709,  1711,  1713,  1715,  1718,  1721,  1723,
-  1728,  1733
+   603,   608,   610,   611,   614,   616,   620,   624,   627,   628,
+   633,   635,   636,   641,   643,   645,   647,   650,   653,   654,
+   655,   661,   662,   663,   669,   671,   673,   677,   681,   686,
+   690,   694,   698,   700,   702,   706,   711,   715,   719,   723,
+   725,   729,   733,   737,   742,   746,   750,   752,   754,   757,
+   759,   762,   764,   767,   768,   776,   782,   785,   786,   794,
+   800,   803,   804,   813,   814,   822,   825,   826,   828,   829,
+   831,   833,   836,   837,   841,   844,   849,   853,   855,   859,
+   861,   863,   866,   868,   872,   877,   884,   890,   892,   896,
+   898,   900,   904,   907,   910,   911,   913,   915,   918,   919,
+   922,   926,   930,   933,   937,   942,   946,   949,   953,   956,
+   958,   960,   963,   966,   967,   969,   972,   973,   974,   976,
+   978,   981,   985,   987,   990,   992,   995,  1002,  1008,  1014,
+  1017,  1020,  1025,  1026,  1031,  1032,  1033,  1037,  1042,  1046,
+  1048,  1050,  1052,  1054,  1057,  1058,  1063,  1065,  1069,  1070,
+  1071,  1079,  1085,  1088,  1089,  1090,  1091,  1104,  1105,  1112,
+  1115,  1118,  1121,  1125,  1132,  1141,  1152,  1165,  1169,  1174,
+  1176,  1178,  1179,  1186,  1190,  1196,  1199,  1202,  1203,  1205,
+  1206,  1208,  1209,  1211,  1213,  1217,  1222,  1224,  1228,  1229,
+  1232,  1235,  1236,  1241,  1244,  1245,  1247,  1249,  1253,  1255,
+  1259,  1264,  1269,  1274,  1279,  1284,  1285,  1288,  1290,  1293,
+  1295,  1299,  1301,  1305,  1307,  1309,  1311,  1313,  1315,  1317,
+  1319,  1321,  1325,  1329,  1334,  1335,  1336,  1347,  1348,  1355,
+  1356,  1357,  1370,  1371,  1380,  1381,  1388,  1391,  1392,  1401,
+  1406,  1407,  1417,  1423,  1424,  1431,  1432,  1434,  1438,  1442,
+  1444,  1446,  1448,  1450,  1451,  1455,  1458,  1462,  1466,  1468,
+  1469,  1471,  1475,  1477,  1481,  1484,  1485,  1486,  1487,  1495,
+  1496,  1497,  1498,  1506,  1507,  1508,  1511,  1513,  1515,  1518,
+  1519,  1523,  1525,  1527,  1528,  1529,  1535,  1536,  1537,  1543,
+  1548,  1550,  1556,  1559,  1560,  1563,  1564,  1566,  1568,  1570,
+  1573,  1576,  1581,  1584,  1587,  1589,  1593,  1596,  1599,  1602,
+  1603,  1606,  1607,  1611,  1613,  1615,  1618,  1620,  1622,  1624,
+  1626,  1628,  1630,  1632,  1634,  1636,  1638,  1640,  1642,  1644,
+  1646,  1648,  1650,  1652,  1654,  1656,  1658,  1660,  1662,  1664,
+  1666,  1668,  1675,  1679,  1685,  1688,  1690,  1692,  1694,  1697,
+  1699,  1703,  1706,  1708,  1710,  1711,  1712,  1719,  1721,  1723,
+  1725,  1728,  1731,  1733,  1738,  1743
 };
 
 static const short yyrhs[] = {    -1,
     85,     0,     0,    86,    88,     0,     0,    85,    87,    88,
-     0,    90,     0,    89,     0,   240,     0,    27,    59,    99,
-    76,    77,     0,   239,    88,     0,   123,   137,    77,     0,
+     0,    90,     0,    89,     0,   242,     0,    27,    59,    99,
+    76,    77,     0,   241,    88,     0,   123,   137,    77,     0,
    130,   123,   137,    77,     0,   126,   123,   136,    77,     0,
    130,    77,     0,   126,    77,     0,     1,    77,     0,     1,
-    78,     0,    77,     0,     0,     0,   126,   123,   163,    91,
-   117,    92,   197,     0,   126,   123,   163,     1,     0,     0,
-     0,   130,   123,   166,    93,   117,    94,   197,     0,   130,
-   123,   166,     1,     0,     0,     0,   123,   166,    95,   117,
-    96,   197,     0,   123,   166,     1,     0,     3,     0,     4,
+    78,     0,    77,     0,     0,     0,   126,   123,   165,    91,
+   117,    92,   199,     0,   126,   123,   165,     1,     0,     0,
+     0,   130,   123,   168,    93,   117,    94,   199,     0,   130,
+   123,   168,     1,     0,     0,     0,   123,   168,    95,   117,
+    96,   199,     0,   123,   168,     1,     0,     3,     0,     4,
      0,    72,     0,    67,     0,    43,     0,    49,     0,    48,
      0,    54,     0,    55,     0,    79,     0,    80,     0,   101,
      0,     0,   101,     0,   107,     0,   101,    81,   107,     0,
-   113,     0,    50,   105,     0,   239,   105,     0,    98,   105,
-     0,    40,    97,     0,   103,   102,     0,   103,    59,   184,
-    76,     0,   104,   102,     0,   104,    59,   184,    76,     0,
+   113,     0,    50,   105,     0,   241,   105,     0,    98,   105,
+     0,    40,    97,     0,   103,   102,     0,   103,    59,   186,
+    76,     0,   104,   102,     0,   104,    59,   186,    76,     0,
     33,   105,     0,    34,   105,     0,    11,     0,    29,     0,
-   102,     0,    59,   184,    76,   105,     0,     0,    59,   184,
+   102,     0,    59,   186,    76,   105,     0,     0,    59,   186,
     76,    82,   106,   151,    78,     0,   105,     0,   107,    48,
    107,     0,   107,    49,   107,     0,   107,    50,   107,     0,
    107,    51,   107,     0,   107,    52,   107,     0,   107,    46,
@@ -278,151 +278,152 @@ static const short yyrhs[] = {    -1,
     37,   112,    38,   107,     0,   107,    36,   107,     0,   107,
     35,   107,     0,     3,     0,     8,     0,   115,     0,    59,
     99,    76,     0,    59,     1,    76,     0,     0,    59,   114,
-   199,    76,     0,   113,    59,   100,    76,     0,   113,    60,
+   201,    76,     0,   113,    59,   100,    76,     0,   113,    60,
     99,    83,     0,   113,    58,    97,     0,   113,    57,    97,
-     0,   113,    54,     0,   113,    55,     0,   300,     0,   306,
-     0,   307,     0,   308,     0,   116,     0,     9,     0,   115,
+     0,   113,    54,     0,   113,    55,     0,   302,     0,   308,
+     0,   309,     0,   310,     0,   116,     0,     9,     0,   115,
      9,     0,    75,     0,   116,    75,     0,     0,   119,     0,
-   119,    10,     0,   204,   205,   120,     0,   118,     0,   192,
-     0,   119,   118,     0,   118,   192,     0,   128,   123,   136,
+   119,    10,     0,   206,   207,   120,     0,   118,     0,   194,
+     0,   119,   118,     0,   118,   194,     0,   128,   123,   136,
     77,     0,   131,   123,   137,    77,     0,   128,    77,     0,
-   131,    77,     0,   204,   205,   125,     0,   121,     0,   192,
-     0,   122,   121,     0,   121,   192,     0,     0,     0,   126,
+   131,    77,     0,   206,   207,   125,     0,   121,     0,   194,
+     0,   122,   121,     0,   121,   194,     0,     0,     0,   126,
    123,   136,    77,     0,   130,   123,   137,    77,     0,   126,
-   123,   157,     0,   130,   123,   160,     0,   126,    77,     0,
-   130,    77,     0,   239,   125,     0,   134,   127,     0,   130,
+   123,   159,     0,   130,   123,   162,     0,   126,    77,     0,
+   130,    77,     0,   241,   125,     0,   134,   127,     0,   130,
    134,   127,     0,     0,   127,   135,     0,   127,     5,     0,
    127,   144,     0,   134,   129,     0,   131,   134,   129,     0,
      0,   129,   135,     0,   129,     5,     0,   131,     0,   144,
      0,   130,   131,     0,   130,   144,     0,     7,     0,     5,
      0,   131,     7,     0,   131,     5,     0,   134,   133,     0,
-   186,   134,   133,     0,     0,   133,   135,     0,     6,     0,
-   170,     0,     4,     0,    67,   256,     0,    72,   256,     0,
-   257,     0,    28,    59,    99,    76,     0,    28,    59,   184,
-    76,     0,     6,     0,     7,     0,   170,     0,   139,     0,
+   188,   134,   133,     0,     0,   133,   135,     0,     6,     0,
+   172,     0,     4,     0,    67,   258,     0,    72,   258,     0,
+   259,     0,    28,    59,    99,    76,     0,    28,    59,   186,
+    76,     0,     6,     0,     7,     0,   172,     0,   139,     0,
    136,    81,   139,     0,   141,     0,   137,    81,   139,     0,
-     0,    27,    59,   115,    76,     0,     0,   163,   138,   143,
-    36,   140,   149,     0,   163,   138,   143,     0,     0,   166,
-   138,   143,    36,   142,   149,     0,   166,   138,   143,     0,
+     0,    27,    59,   115,    76,     0,     0,   165,   138,   143,
+    36,   140,   149,     0,   165,   138,   143,     0,     0,   168,
+   138,   143,    36,   142,   149,     0,   168,   138,   143,     0,
      0,   144,     0,   145,     0,   144,   145,     0,    30,    59,
     59,   146,    76,    76,     0,   147,     0,   146,    81,   147,
      0,     0,   148,     0,   148,    59,     3,    76,     0,   148,
     59,     3,    81,   101,    76,     0,   148,    59,   100,    76,
      0,    97,     0,     5,     0,     6,     0,     7,     0,   107,
      0,     0,    82,   150,   151,    78,     0,     1,     0,     0,
-   152,   175,     0,   153,     0,   152,    81,   153,     0,   107,
-     0,     0,    82,   154,   151,    78,     0,     1,     0,     0,
-    97,    38,   155,   153,     0,     0,    58,    97,    36,   156,
-   153,     0,     0,     0,   163,   158,   117,   159,   199,     0,
-     0,     0,   166,   161,   117,   162,   199,     0,   164,     0,
-   166,     0,    59,   164,    76,     0,   164,    59,   234,     0,
-   164,    60,    99,    83,     0,   164,    60,    83,     0,    50,
-   187,   164,     0,   144,   124,   164,     0,     4,     0,    72,
-     0,   165,    59,   234,     0,   165,    60,    99,    83,     0,
-   165,    60,    83,     0,    50,   187,   165,     0,   144,   124,
-   165,     0,     4,     0,   166,    59,   234,     0,    59,   166,
-    76,     0,    50,   187,   166,     0,   166,    60,    99,    83,
-     0,   166,    60,    83,     0,   144,   124,   166,     0,     3,
+   152,   177,     0,   153,     0,   152,    81,   153,     0,   157,
+    36,   155,     0,   158,   155,     0,     0,    97,    38,   154,
+   155,     0,   155,     0,     0,    82,   156,   151,    78,     0,
+   107,     0,     1,     0,   158,     0,   157,   158,     0,    58,
+    97,     0,     0,     0,   165,   160,   117,   161,   201,     0,
+     0,     0,   168,   163,   117,   164,   201,     0,   166,     0,
+   168,     0,    59,   166,    76,     0,   166,    59,   236,     0,
+   166,    60,    99,    83,     0,   166,    60,    83,     0,    50,
+   189,   166,     0,   144,   124,   166,     0,     4,     0,    72,
+     0,   167,    59,   236,     0,   167,    60,    99,    83,     0,
+   167,    60,    83,     0,    50,   189,   167,     0,   144,   124,
+   167,     0,     4,     0,   168,    59,   236,     0,    59,   168,
+    76,     0,    50,   189,   168,     0,   168,    60,    99,    83,
+     0,   168,    60,    83,     0,   144,   124,   168,     0,     3,
      0,    13,     0,    13,   144,     0,    14,     0,    14,   144,
-     0,    12,     0,    12,   144,     0,     0,   167,    97,    82,
-   171,   177,    78,   143,     0,   167,    82,   177,    78,   143,
-     0,   167,    97,     0,     0,   168,    97,    82,   172,   177,
-    78,   143,     0,   168,    82,   177,    78,   143,     0,   168,
-    97,     0,     0,   169,    97,    82,   173,   182,   176,    78,
-   143,     0,     0,   169,    82,   174,   182,   176,    78,   143,
-     0,   169,    97,     0,     0,    81,     0,     0,    81,     0,
-   178,     0,   178,   179,     0,     0,   178,   179,    77,     0,
-   178,    77,     0,    65,    59,    67,    76,     0,   132,   123,
-   180,     0,   132,     0,   186,   123,   180,     0,   186,     0,
-     1,     0,   239,   179,     0,   181,     0,   180,    81,   181,
-     0,   204,   205,   163,   143,     0,   204,   205,   163,    38,
-   107,   143,     0,   204,   205,    38,   107,   143,     0,   183,
-     0,   182,    81,   183,     0,     1,     0,    97,     0,    97,
-    36,   107,     0,   132,   185,     0,   186,   185,     0,     0,
-   188,     0,     7,     0,   186,     7,     0,     0,   187,     7,
-     0,    59,   188,    76,     0,    50,   187,   188,     0,    50,
-   187,     0,   188,    59,   227,     0,   188,    60,    99,    83,
-     0,   188,    60,    83,     0,    59,   227,     0,    60,    99,
-    83,     0,    60,    83,     0,   190,     0,   207,     0,   190,
-   207,     0,   190,   192,     0,     0,   189,     0,     1,    77,
-     0,     0,     0,   195,     0,   196,     0,   195,   196,     0,
-    32,   238,    77,     0,   199,     0,     1,   199,     0,    82,
-     0,   198,    78,     0,   198,   193,   194,   122,   191,    78,
-     0,   198,   193,   194,     1,    78,     0,   198,   193,   194,
-   189,    78,     0,   201,   206,     0,   201,     1,     0,    15,
-    59,    99,    76,     0,     0,    18,   203,   206,    17,     0,
-     0,     0,   204,   205,   209,     0,   204,   205,   220,   206,
-     0,   204,   205,   208,     0,   209,     0,   220,     0,   199,
-     0,   217,     0,    99,    77,     0,     0,   200,    16,   210,
-   206,     0,   200,     0,   200,    16,     1,     0,     0,     0,
-    17,   211,    59,    99,    76,   212,   206,     0,   202,    59,
-    99,    76,    77,     0,   202,     1,     0,     0,     0,     0,
-    19,    59,   222,    77,   213,   222,    77,   214,   222,    76,
-   215,   206,     0,     0,    20,    59,    99,    76,   216,   206,
+     0,    12,     0,    12,   144,     0,     0,   169,    97,    82,
+   173,   179,    78,   143,     0,   169,    82,   179,    78,   143,
+     0,   169,    97,     0,     0,   170,    97,    82,   174,   179,
+    78,   143,     0,   170,    82,   179,    78,   143,     0,   170,
+    97,     0,     0,   171,    97,    82,   175,   184,   178,    78,
+   143,     0,     0,   171,    82,   176,   184,   178,    78,   143,
+     0,   171,    97,     0,     0,    81,     0,     0,    81,     0,
+   180,     0,   180,   181,     0,     0,   180,   181,    77,     0,
+   180,    77,     0,    65,    59,    67,    76,     0,   132,   123,
+   182,     0,   132,     0,   188,   123,   182,     0,   188,     0,
+     1,     0,   241,   181,     0,   183,     0,   182,    81,   183,
+     0,   206,   207,   165,   143,     0,   206,   207,   165,    38,
+   107,   143,     0,   206,   207,    38,   107,   143,     0,   185,
+     0,   184,    81,   185,     0,     1,     0,    97,     0,    97,
+    36,   107,     0,   132,   187,     0,   188,   187,     0,     0,
+   190,     0,     7,     0,   188,     7,     0,     0,   189,     7,
+     0,    59,   190,    76,     0,    50,   189,   190,     0,    50,
+   189,     0,   190,    59,   229,     0,   190,    60,    99,    83,
+     0,   190,    60,    83,     0,    59,   229,     0,    60,    99,
+    83,     0,    60,    83,     0,   192,     0,   209,     0,   192,
+   209,     0,   192,   194,     0,     0,   191,     0,     1,    77,
+     0,     0,     0,   197,     0,   198,     0,   197,   198,     0,
+    32,   240,    77,     0,   201,     0,     1,   201,     0,    82,
+     0,   200,    78,     0,   200,   195,   196,   122,   193,    78,
+     0,   200,   195,   196,     1,    78,     0,   200,   195,   196,
+   191,    78,     0,   203,   208,     0,   203,     1,     0,    15,
+    59,    99,    76,     0,     0,    18,   205,   208,    17,     0,
+     0,     0,   206,   207,   211,     0,   206,   207,   222,   208,
+     0,   206,   207,   210,     0,   211,     0,   222,     0,   201,
+     0,   219,     0,    99,    77,     0,     0,   202,    16,   212,
+   208,     0,   202,     0,   202,    16,     1,     0,     0,     0,
+    17,   213,    59,    99,    76,   214,   208,     0,   204,    59,
+    99,    76,    77,     0,   204,     1,     0,     0,     0,     0,
+    19,    59,   224,    77,   215,   224,    77,   216,   224,    76,
+   217,   208,     0,     0,    20,    59,    99,    76,   218,   208,
      0,    23,    77,     0,    24,    77,     0,    25,    77,     0,
-    25,    99,    77,     0,    27,   221,    59,    99,    76,    77,
-     0,    27,   221,    59,    99,    38,   223,    76,    77,     0,
-    27,   221,    59,    99,    38,   223,    38,   223,    76,    77,
-     0,    27,   221,    59,    99,    38,   223,    38,   223,    38,
-   226,    76,    77,     0,    26,    97,    77,     0,    26,    50,
-    99,    77,     0,    77,     0,   218,     0,     0,    19,    59,
-   113,    76,   219,   206,     0,    21,   107,    38,     0,    21,
+    25,    99,    77,     0,    27,   223,    59,    99,    76,    77,
+     0,    27,   223,    59,    99,    38,   225,    76,    77,     0,
+    27,   223,    59,    99,    38,   225,    38,   225,    76,    77,
+     0,    27,   223,    59,    99,    38,   225,    38,   225,    38,
+   228,    76,    77,     0,    26,    97,    77,     0,    26,    50,
+    99,    77,     0,    77,     0,   220,     0,     0,    19,    59,
+   113,    76,   221,   208,     0,    21,   107,    38,     0,    21,
    107,    10,   107,    38,     0,    22,    38,     0,    97,    38,
-     0,     0,     7,     0,     0,    99,     0,     0,   224,     0,
-   225,     0,   224,    81,   225,     0,     9,    59,    99,    76,
-     0,   115,     0,   226,    81,   115,     0,     0,   228,   229,
-     0,   231,    76,     0,     0,   232,    77,   230,   229,     0,
-     1,    76,     0,     0,    10,     0,   232,     0,   232,    81,
-    10,     0,   233,     0,   232,    81,   233,     0,   126,   123,
-   165,   143,     0,   126,   123,   166,   143,     0,   126,   123,
-   185,   143,     0,   130,   123,   166,   143,     0,   130,   123,
-   185,   143,     0,     0,   235,   236,     0,   229,     0,   237,
-    76,     0,     3,     0,   237,    81,     3,     0,    97,     0,
-   238,    81,    97,     0,    31,     0,   244,     0,   242,     0,
-   243,     0,   254,     0,   264,     0,    63,     0,    97,     0,
-   241,    81,    97,     0,    73,   241,    77,     0,    74,    97,
-    97,    77,     0,     0,     0,    61,    97,   256,    82,   245,
-   258,    78,   246,   271,    63,     0,     0,    61,    97,   256,
-   247,   271,    63,     0,     0,     0,    61,    97,    38,    97,
-   256,    82,   248,   258,    78,   249,   271,    63,     0,     0,
-    61,    97,    38,    97,   256,   250,   271,    63,     0,     0,
-    62,    97,    82,   251,   258,    78,     0,    62,    97,     0,
-     0,    62,    97,    38,    97,    82,   252,   258,    78,     0,
+     0,     0,     7,     0,     0,    99,     0,     0,   226,     0,
+   227,     0,   226,    81,   227,     0,     9,    59,    99,    76,
+     0,   115,     0,   228,    81,   115,     0,     0,   230,   231,
+     0,   233,    76,     0,     0,   234,    77,   232,   231,     0,
+     1,    76,     0,     0,    10,     0,   234,     0,   234,    81,
+    10,     0,   235,     0,   234,    81,   235,     0,   126,   123,
+   167,   143,     0,   126,   123,   168,   143,     0,   126,   123,
+   187,   143,     0,   130,   123,   168,   143,     0,   130,   123,
+   187,   143,     0,     0,   237,   238,     0,   231,     0,   239,
+    76,     0,     3,     0,   239,    81,     3,     0,    97,     0,
+   240,    81,    97,     0,    31,     0,   246,     0,   244,     0,
+   245,     0,   256,     0,   266,     0,    63,     0,    97,     0,
+   243,    81,    97,     0,    73,   243,    77,     0,    74,    97,
+    97,    77,     0,     0,     0,    61,    97,   258,    82,   247,
+   260,    78,   248,   273,    63,     0,     0,    61,    97,   258,
+   249,   273,    63,     0,     0,     0,    61,    97,    38,    97,
+   258,    82,   250,   260,    78,   251,   273,    63,     0,     0,
+    61,    97,    38,    97,   258,   252,   273,    63,     0,     0,
+    62,    97,    82,   253,   260,    78,     0,    62,    97,     0,
+     0,    62,    97,    38,    97,    82,   254,   260,    78,     0,
     62,    97,    38,    97,     0,     0,    61,    97,    59,    97,
-    76,   256,   253,   271,    63,     0,    62,    97,    59,    97,
-    76,     0,     0,    71,    97,   256,   255,   271,    63,     0,
-     0,   257,     0,    45,   241,    45,     0,   258,   259,   260,
-     0,   260,     0,    69,     0,    70,     0,    68,     0,     0,
-   260,   261,    77,     0,   260,    77,     0,   132,   123,   262,
-     0,   186,   123,   262,     0,     1,     0,     0,   263,     0,
-   262,    81,   263,     0,   163,     0,   163,    38,   107,     0,
-    38,   107,     0,     0,     0,     0,    48,   265,   281,   266,
-   282,   267,   197,     0,     0,     0,     0,    49,   268,   281,
-   269,   282,   270,   197,     0,     0,     0,   272,   273,     0,
-   276,     0,    89,     0,   273,   276,     0,     0,   273,   274,
-    89,     0,    77,     0,     1,     0,     0,     0,    48,   277,
-   281,   278,   275,     0,     0,     0,    49,   279,   281,   280,
-   275,     0,    59,   184,    76,   290,     0,   290,     0,    59,
-   184,    76,   291,   288,     0,   291,   288,     0,     0,    77,
-   283,     0,     0,   284,     0,   285,     0,   192,     0,   284,
-   285,     0,   285,   192,     0,   126,   123,   286,    77,     0,
-   126,    77,     0,   130,    77,     0,   287,     0,   286,    81,
-   287,     0,   165,   143,     0,   166,   143,     0,   185,   143,
-     0,     0,    81,    10,     0,     0,    81,   289,   231,     0,
-   292,     0,   294,     0,   291,   294,     0,     3,     0,     4,
-     0,    72,     0,   293,     0,    12,     0,    13,     0,    14,
+    76,   258,   255,   273,    63,     0,    62,    97,    59,    97,
+    76,     0,     0,    71,    97,   258,   257,   273,    63,     0,
+     0,   259,     0,    45,   243,    45,     0,   260,   261,   262,
+     0,   262,     0,    69,     0,    70,     0,    68,     0,     0,
+   262,   263,    77,     0,   262,    77,     0,   132,   123,   264,
+     0,   188,   123,   264,     0,     1,     0,     0,   265,     0,
+   264,    81,   265,     0,   165,     0,   165,    38,   107,     0,
+    38,   107,     0,     0,     0,     0,    48,   267,   283,   268,
+   284,   269,   199,     0,     0,     0,     0,    49,   270,   283,
+   271,   284,   272,   199,     0,     0,     0,   274,   275,     0,
+   278,     0,    89,     0,   275,   278,     0,     0,   275,   276,
+    89,     0,    77,     0,     1,     0,     0,     0,    48,   279,
+   283,   280,   277,     0,     0,     0,    49,   281,   283,   282,
+   277,     0,    59,   186,    76,   292,     0,   292,     0,    59,
+   186,    76,   293,   290,     0,   293,   290,     0,     0,    77,
+   285,     0,     0,   286,     0,   287,     0,   194,     0,   286,
+   287,     0,   287,   194,     0,   126,   123,   288,    77,     0,
+   126,    77,     0,   130,    77,     0,   289,     0,   288,    81,
+   289,     0,   167,   143,     0,   168,   143,     0,   187,   143,
+     0,     0,    81,    10,     0,     0,    81,   291,   233,     0,
+   294,     0,   296,     0,   293,   296,     0,     3,     0,     4,
+     0,    72,     0,   295,     0,    12,     0,    13,     0,    14,
      0,    15,     0,    16,     0,    17,     0,    18,     0,    19,
      0,    20,     0,    21,     0,    22,     0,    23,     0,    24,
      0,    25,     0,    26,     0,    27,     0,    11,     0,    28,
-     0,    29,     0,     6,     0,     7,     0,   292,    38,    59,
-   184,    76,    97,     0,   292,    38,    97,     0,    38,    59,
-   184,    76,    97,     0,    38,    97,     0,   292,     0,   296,
-     0,   298,     0,   296,   298,     0,   101,     0,   292,    38,
-   297,     0,    38,   297,     0,    99,     0,    67,     0,     0,
-     0,    60,   301,   299,   302,   295,    83,     0,   292,     0,
-   304,     0,   305,     0,   304,   305,     0,   292,    38,     0,
-    38,     0,    64,    59,   303,    76,     0,    71,    59,    97,
-    76,     0,    66,    59,   184,    76,     0
+     0,    29,     0,     6,     0,     7,     0,   294,    38,    59,
+   186,    76,    97,     0,   294,    38,    97,     0,    38,    59,
+   186,    76,    97,     0,    38,    97,     0,   294,     0,   298,
+     0,   300,     0,   298,   300,     0,   101,     0,   294,    38,
+   299,     0,    38,   299,     0,    99,     0,    67,     0,     0,
+     0,    60,   303,   301,   304,   297,    83,     0,   294,     0,
+   306,     0,   307,     0,   306,   307,     0,   294,    38,     0,
+    38,     0,    64,    59,   305,    76,     0,    71,    59,    97,
+    76,     0,    66,    59,   186,    76,     0
 };
 
 #endif
@@ -449,43 +450,43 @@ static const short yyrline[] = { 0,
   1080,  1082,  1085,  1087,  1090,  1093,  1099,  1106,  1108,  1115,
   1122,  1125,  1132,  1135,  1139,  1142,  1146,  1151,  1154,  1158,
   1161,  1163,  1165,  1167,  1174,  1176,  1177,  1178,  1183,  1185,
-  1190,  1198,  1203,  1207,  1210,  1212,  1217,  1220,  1222,  1224,
-  1228,  1231,  1231,  1234,  1236,  1247,  1255,  1259,  1270,  1278,
-  1285,  1287,  1292,  1295,  1300,  1302,  1304,  1311,  1313,  1314,
-  1322,  1328,  1330,  1332,  1339,  1341,  1347,  1353,  1355,  1357,
-  1359,  1366,  1368,  1371,  1374,  1378,  1381,  1385,  1388,  1392,
-  1397,  1399,  1403,  1405,  1407,  1409,  1413,  1415,  1418,  1421,
-  1424,  1427,  1431,  1433,  1436,  1438,  1442,  1445,  1450,  1452,
-  1454,  1458,  1482,  1489,  1494,  1500,  1505,  1507,  1512,  1514,
-  1518,  1522,  1526,  1536,  1538,  1543,  1548,  1551,  1555,  1558,
-  1562,  1565,  1568,  1571,  1575,  1578,  1582,  1586,  1588,  1590,
-  1592,  1594,  1596,  1598,  1600,  1610,  1618,  1620,  1622,  1626,
-  1628,  1631,  1634,  1647,  1649,  1654,  1656,  1659,  1673,  1676,
-  1679,  1681,  1683,  1691,  1699,  1710,  1715,  1718,  1732,  1741,
-  1745,  1749,  1753,  1759,  1763,  1768,  1771,  1776,  1779,  1780,
-  1797,  1802,  1805,  1817,  1819,  1829,  1839,  1840,  1848,  1851,
-  1863,  1867,  1884,  1894,  1903,  1908,  1913,  1918,  1922,  1926,
-  1937,  1944,  1951,  1958,  1969,  1975,  1978,  1983,  2006,  2040,
-  2071,  2102,  2117,  2128,  2132,  2136,  2139,  2144,  2146,  2149,
-  2151,  2155,  2160,  2163,  2169,  2174,  2179,  2181,  2190,  2191,
-  2197,  2199,  2209,  2211,  2215,  2218,  2224,  2234,  2243,  2252,
-  2262,  2276,  2281,  2286,  2288,  2297,  2300,  2305,  2308,  2312,
-  2320,  2322,  2323,  2324,  2325,  2326,  2340,  2343,  2347,  2353,
-  2359,  2366,  2371,  2377,  2384,  2390,  2396,  2401,  2407,  2414,
-  2420,  2426,  2432,  2440,  2446,  2452,  2460,  2467,  2473,  2482,
-  2489,  2497,  2502,  2505,  2515,  2517,  2520,  2522,  2523,  2526,
-  2531,  2532,  2549,  2556,  2562,  2566,  2569,  2570,  2573,  2581,
-  2587,  2596,  2606,  2613,  2617,  2622,  2631,  2638,  2642,  2652,
-  2654,  2655,  2657,  2659,  2660,  2661,  2662,  2664,  2666,  2669,
-  2677,  2684,  2684,  2691,  2697,  2699,  2705,  2710,  2715,  2724,
-  2726,  2732,  2734,  2737,  2739,  2740,  2741,  2744,  2750,  2752,
-  2756,  2759,  2766,  2772,  2777,  2784,  2789,  2794,  2799,  2806,
-  2810,  2813,  2819,  2821,  2822,  2823,  2826,  2828,  2829,  2830,
-  2831,  2832,  2833,  2834,  2835,  2836,  2837,  2838,  2839,  2840,
-  2841,  2842,  2843,  2844,  2845,  2846,  2846,  2849,  2855,  2860,
-  2865,  2871,  2873,  2876,  2878,  2885,  2897,  2902,  2908,  2910,
-  2916,  2920,  2921,  2927,  2929,  2932,  2934,  2940,  2945,  2951,
-  2958,  2967
+  1190,  1198,  1203,  1207,  1210,  1212,  1217,  1219,  1220,  1223,
+  1223,  1226,  1229,  1231,  1233,  1236,  1238,  1241,  1249,  1260,
+  1268,  1272,  1283,  1291,  1298,  1300,  1305,  1308,  1313,  1315,
+  1317,  1324,  1326,  1327,  1335,  1341,  1343,  1345,  1352,  1354,
+  1360,  1366,  1368,  1370,  1372,  1379,  1381,  1384,  1387,  1391,
+  1394,  1398,  1401,  1405,  1410,  1412,  1416,  1418,  1420,  1422,
+  1426,  1428,  1431,  1434,  1437,  1440,  1444,  1446,  1449,  1451,
+  1456,  1459,  1464,  1466,  1468,  1472,  1496,  1503,  1508,  1514,
+  1519,  1521,  1526,  1528,  1532,  1536,  1540,  1550,  1552,  1557,
+  1562,  1565,  1569,  1572,  1576,  1579,  1582,  1585,  1589,  1592,
+  1596,  1600,  1602,  1604,  1606,  1608,  1610,  1612,  1614,  1624,
+  1632,  1634,  1636,  1640,  1642,  1645,  1648,  1661,  1663,  1668,
+  1670,  1673,  1687,  1690,  1693,  1695,  1697,  1705,  1713,  1724,
+  1729,  1732,  1746,  1755,  1759,  1763,  1767,  1773,  1777,  1782,
+  1785,  1790,  1793,  1794,  1811,  1816,  1819,  1831,  1833,  1843,
+  1853,  1854,  1862,  1865,  1877,  1881,  1898,  1908,  1917,  1922,
+  1927,  1932,  1936,  1940,  1951,  1958,  1965,  1972,  1983,  1989,
+  1992,  1997,  2020,  2054,  2085,  2116,  2131,  2142,  2146,  2150,
+  2153,  2158,  2160,  2163,  2165,  2169,  2174,  2177,  2183,  2188,
+  2193,  2195,  2204,  2205,  2211,  2213,  2223,  2225,  2229,  2232,
+  2238,  2248,  2257,  2266,  2276,  2290,  2295,  2300,  2302,  2311,
+  2314,  2319,  2322,  2326,  2334,  2336,  2337,  2338,  2339,  2340,
+  2354,  2357,  2361,  2367,  2373,  2380,  2385,  2391,  2398,  2404,
+  2410,  2415,  2421,  2428,  2434,  2440,  2446,  2454,  2460,  2466,
+  2474,  2481,  2487,  2496,  2503,  2511,  2516,  2519,  2529,  2531,
+  2534,  2536,  2537,  2540,  2545,  2546,  2563,  2570,  2576,  2580,
+  2583,  2584,  2587,  2595,  2601,  2610,  2620,  2627,  2631,  2636,
+  2645,  2652,  2656,  2666,  2668,  2669,  2671,  2673,  2674,  2675,
+  2676,  2678,  2680,  2683,  2691,  2698,  2698,  2705,  2711,  2713,
+  2719,  2724,  2729,  2738,  2740,  2746,  2748,  2751,  2753,  2754,
+  2755,  2758,  2764,  2766,  2770,  2773,  2780,  2786,  2791,  2798,
+  2803,  2808,  2813,  2820,  2824,  2827,  2833,  2835,  2836,  2837,
+  2840,  2842,  2843,  2844,  2845,  2846,  2847,  2848,  2849,  2850,
+  2851,  2852,  2853,  2854,  2855,  2856,  2857,  2858,  2859,  2860,
+  2860,  2863,  2869,  2874,  2879,  2885,  2887,  2890,  2892,  2899,
+  2911,  2916,  2922,  2924,  2930,  2934,  2935,  2941,  2943,  2946,
+  2948,  2954,  2959,  2965,  2972,  2981
 };
 #endif
 
@@ -512,28 +513,28 @@ static const char * const yytname[] = {   "$","error","$undefined.","IDENTIFIER"
 "typespec","typespecqual_reserved","initdecls","notype_initdecls","maybeasm",
 "initdcl","@16","notype_initdcl","@17","maybe_attribute","attributes","attribute",
 "attribute_list","attrib","any_word","init","@18","initlist_maybe_comma","initlist1",
-"initelt","@19","@20","@21","nested_function","@22","@23","notype_nested_function",
-"@24","@25","declarator","after_type_declarator","parm_declarator","notype_declarator",
-"struct_head","union_head","enum_head","structsp","@26","@27","@28","@29","maybecomma",
-"maybecomma_warn","component_decl_list","component_decl_list2","component_decl",
-"components","component_declarator","enumlist","enumerator","typename","absdcl",
-"nonempty_type_quals","type_quals","absdcl1","stmts","lineno_stmt_or_labels",
-"xstmts","errstmt","pushlevel","maybe_label_decls","label_decls","label_decl",
-"compstmt_or_error","compstmt_start","compstmt","simple_if","if_prefix","do_stmt_start",
-"@30","save_filename","save_lineno","lineno_labeled_stmt","lineno_stmt_or_label",
-"stmt_or_label","stmt","@31","@32","@33","@34","@35","@36","@37","all_iter_stmt",
-"all_iter_stmt_simple","@38","label","maybe_type_qual","xexpr","asm_operands",
-"nonnull_asm_operands","asm_operand","asm_clobbers","parmlist","@39","parmlist_1",
-"@40","parmlist_2","parms","parm","parmlist_or_identifiers","@41","parmlist_or_identifiers_1",
-"identifiers","identifiers_or_typenames","extension","objcdef","identifier_list",
-"classdecl","aliasdecl","classdef","@42","@43","@44","@45","@46","@47","@48",
-"@49","@50","protocoldef","@51","protocolrefs","non_empty_protocolrefs","ivar_decl_list",
-"visibility_spec","ivar_decls","ivar_decl","ivars","ivar_declarator","methoddef",
-"@52","@53","@54","@55","@56","@57","methodprotolist","@58","methodprotolist2",
-"@59","semi_or_error","methodproto","@60","@61","@62","@63","methoddecl","optarglist",
-"myxdecls","mydecls","mydecl","myparms","myparm","optparmlist","@64","unaryselector",
+"initelt","@19","initval","@20","designator_list","designator","nested_function",
+"@21","@22","notype_nested_function","@23","@24","declarator","after_type_declarator",
+"parm_declarator","notype_declarator","struct_head","union_head","enum_head",
+"structsp","@25","@26","@27","@28","maybecomma","maybecomma_warn","component_decl_list",
+"component_decl_list2","component_decl","components","component_declarator",
+"enumlist","enumerator","typename","absdcl","nonempty_type_quals","type_quals",
+"absdcl1","stmts","lineno_stmt_or_labels","xstmts","errstmt","pushlevel","maybe_label_decls",
+"label_decls","label_decl","compstmt_or_error","compstmt_start","compstmt","simple_if",
+"if_prefix","do_stmt_start","@29","save_filename","save_lineno","lineno_labeled_stmt",
+"lineno_stmt_or_label","stmt_or_label","stmt","@30","@31","@32","@33","@34",
+"@35","@36","all_iter_stmt","all_iter_stmt_simple","@37","label","maybe_type_qual",
+"xexpr","asm_operands","nonnull_asm_operands","asm_operand","asm_clobbers","parmlist",
+"@38","parmlist_1","@39","parmlist_2","parms","parm","parmlist_or_identifiers",
+"@40","parmlist_or_identifiers_1","identifiers","identifiers_or_typenames","extension",
+"objcdef","identifier_list","classdecl","aliasdecl","classdef","@41","@42","@43",
+"@44","@45","@46","@47","@48","@49","protocoldef","@50","protocolrefs","non_empty_protocolrefs",
+"ivar_decl_list","visibility_spec","ivar_decls","ivar_decl","ivars","ivar_declarator",
+"methoddef","@51","@52","@53","@54","@55","@56","methodprotolist","@57","methodprotolist2",
+"@58","semi_or_error","methodproto","@59","@60","@61","@62","methoddecl","optarglist",
+"myxdecls","mydecls","mydecl","myparms","myparm","optparmlist","@63","unaryselector",
 "keywordselector","selector","reservedwords","keyworddecl","messageargs","keywordarglist",
-"keywordexpr","keywordarg","receiver","objcmessageexpr","@65","@66","selectorarg",
+"keywordexpr","keywordarg","receiver","objcmessageexpr","@64","@65","selectorarg",
 "keywordnamelist","keywordname","objcselectorexpr","objcprotocolexpr","objcencodeexpr", NULL
 };
 #endif
@@ -559,43 +560,43 @@ static const short yyr1[] = {     0,
    136,   136,   137,   137,   138,   138,   140,   139,   139,   142,
    141,   141,   143,   143,   144,   144,   145,   146,   146,   147,
    147,   147,   147,   147,   148,   148,   148,   148,   149,   150,
-   149,   149,   151,   151,   152,   152,   153,   154,   153,   153,
-   155,   153,   156,   153,   158,   159,   157,   161,   162,   160,
-   163,   163,   164,   164,   164,   164,   164,   164,   164,   164,
-   165,   165,   165,   165,   165,   165,   166,   166,   166,   166,
-   166,   166,   166,   167,   167,   168,   168,   169,   169,   171,
-   170,   170,   170,   172,   170,   170,   170,   173,   170,   174,
-   170,   170,   175,   175,   176,   176,   177,   177,   178,   178,
-   178,   178,   179,   179,   179,   179,   179,   179,   180,   180,
-   181,   181,   181,   182,   182,   182,   183,   183,   184,   184,
-   185,   185,   186,   186,   187,   187,   188,   188,   188,   188,
-   188,   188,   188,   188,   188,   189,   190,   190,   190,   191,
-   191,   192,   193,   194,   194,   195,   195,   196,   197,   197,
-   198,   199,   199,   199,   199,   200,   200,   201,   203,   202,
-   204,   205,   206,   206,   207,   208,   208,   209,   209,   209,
-   210,   209,   209,   209,   211,   212,   209,   209,   209,   213,
-   214,   215,   209,   216,   209,   209,   209,   209,   209,   209,
-   209,   209,   209,   209,   209,   209,   217,   219,   218,   220,
-   220,   220,   220,   221,   221,   222,   222,   223,   223,   224,
-   224,   225,   226,   226,   228,   227,   229,   230,   229,   229,
-   231,   231,   231,   231,   232,   232,   233,   233,   233,   233,
-   233,   235,   234,   236,   236,   237,   237,   238,   238,   239,
-   240,   240,   240,   240,   240,   240,   241,   241,   242,   243,
-   245,   246,   244,   247,   244,   248,   249,   244,   250,   244,
-   251,   244,   244,   252,   244,   244,   253,   244,   244,   255,
-   254,   256,   256,   257,   258,   258,   259,   259,   259,   260,
-   260,   260,   261,   261,   261,   262,   262,   262,   263,   263,
-   263,   265,   266,   267,   264,   268,   269,   270,   264,   271,
-   272,   271,   273,   273,   273,   274,   273,   275,   275,   277,
-   278,   276,   279,   280,   276,   281,   281,   281,   281,   282,
-   282,   283,   283,   284,   284,   284,   284,   285,   285,   285,
-   286,   286,   287,   287,   287,   288,   288,   289,   288,   290,
-   291,   291,   292,   292,   292,   292,   293,   293,   293,   293,
-   293,   293,   293,   293,   293,   293,   293,   293,   293,   293,
-   293,   293,   293,   293,   293,   293,   293,   294,   294,   294,
-   294,   295,   295,   296,   296,   297,   298,   298,   299,   299,
-   301,   302,   300,   303,   303,   304,   304,   305,   305,   306,
-   307,   308
+   149,   149,   151,   151,   152,   152,   153,   153,   154,   153,
+   153,   156,   155,   155,   155,   157,   157,   158,   160,   161,
+   159,   163,   164,   162,   165,   165,   166,   166,   166,   166,
+   166,   166,   166,   166,   167,   167,   167,   167,   167,   167,
+   168,   168,   168,   168,   168,   168,   168,   169,   169,   170,
+   170,   171,   171,   173,   172,   172,   172,   174,   172,   172,
+   172,   175,   172,   176,   172,   172,   177,   177,   178,   178,
+   179,   179,   180,   180,   180,   180,   181,   181,   181,   181,
+   181,   181,   182,   182,   183,   183,   183,   184,   184,   184,
+   185,   185,   186,   186,   187,   187,   188,   188,   189,   189,
+   190,   190,   190,   190,   190,   190,   190,   190,   190,   191,
+   192,   192,   192,   193,   193,   194,   195,   196,   196,   197,
+   197,   198,   199,   199,   200,   201,   201,   201,   201,   202,
+   202,   203,   205,   204,   206,   207,   208,   208,   209,   210,
+   210,   211,   211,   211,   212,   211,   211,   211,   213,   214,
+   211,   211,   211,   215,   216,   217,   211,   218,   211,   211,
+   211,   211,   211,   211,   211,   211,   211,   211,   211,   211,
+   219,   221,   220,   222,   222,   222,   222,   223,   223,   224,
+   224,   225,   225,   226,   226,   227,   228,   228,   230,   229,
+   231,   232,   231,   231,   233,   233,   233,   233,   234,   234,
+   235,   235,   235,   235,   235,   237,   236,   238,   238,   239,
+   239,   240,   240,   241,   242,   242,   242,   242,   242,   242,
+   243,   243,   244,   245,   247,   248,   246,   249,   246,   250,
+   251,   246,   252,   246,   253,   246,   246,   254,   246,   246,
+   255,   246,   246,   257,   256,   258,   258,   259,   260,   260,
+   261,   261,   261,   262,   262,   262,   263,   263,   263,   264,
+   264,   264,   265,   265,   265,   267,   268,   269,   266,   270,
+   271,   272,   266,   273,   274,   273,   275,   275,   275,   276,
+   275,   277,   277,   279,   280,   278,   281,   282,   278,   283,
+   283,   283,   283,   284,   284,   285,   285,   286,   286,   286,
+   286,   287,   287,   287,   288,   288,   289,   289,   289,   290,
+   290,   291,   290,   292,   293,   293,   294,   294,   294,   294,
+   295,   295,   295,   295,   295,   295,   295,   295,   295,   295,
+   295,   295,   295,   295,   295,   295,   295,   295,   295,   295,
+   295,   296,   296,   296,   296,   297,   297,   298,   298,   299,
+   300,   300,   301,   301,   303,   304,   302,   305,   305,   306,
+   306,   307,   307,   308,   309,   310
 };
 
 static const short yyr2[] = {     0,
@@ -619,951 +620,972 @@ static const short yyr2[] = {     0,
      1,     3,     1,     3,     0,     4,     0,     6,     3,     0,
      6,     3,     0,     1,     1,     2,     6,     1,     3,     0,
      1,     4,     6,     4,     1,     1,     1,     1,     1,     0,
-     4,     1,     0,     2,     1,     3,     1,     0,     4,     1,
-     0,     4,     0,     5,     0,     0,     5,     0,     0,     5,
-     1,     1,     3,     3,     4,     3,     3,     3,     1,     1,
-     3,     4,     3,     3,     3,     1,     3,     3,     3,     4,
-     3,     3,     1,     1,     2,     1,     2,     1,     2,     0,
-     7,     5,     2,     0,     7,     5,     2,     0,     8,     0,
-     7,     2,     0,     1,     0,     1,     1,     2,     0,     3,
-     2,     4,     3,     1,     3,     1,     1,     2,     1,     3,
-     4,     6,     5,     1,     3,     1,     1,     3,     2,     2,
-     0,     1,     1,     2,     0,     2,     3,     3,     2,     3,
-     4,     3,     2,     3,     2,     1,     1,     2,     2,     0,
-     1,     2,     0,     0,     1,     1,     2,     3,     1,     2,
-     1,     2,     6,     5,     5,     2,     2,     4,     0,     4,
-     0,     0,     3,     4,     3,     1,     1,     1,     1,     2,
-     0,     4,     1,     3,     0,     0,     7,     5,     2,     0,
-     0,     0,    12,     0,     6,     2,     2,     2,     3,     6,
-     8,    10,    12,     3,     4,     1,     1,     0,     6,     3,
-     5,     2,     2,     0,     1,     0,     1,     0,     1,     1,
-     3,     4,     1,     3,     0,     2,     2,     0,     4,     2,
-     0,     1,     1,     3,     1,     3,     4,     4,     4,     4,
-     4,     0,     2,     1,     2,     1,     3,     1,     3,     1,
-     1,     1,     1,     1,     1,     1,     1,     3,     3,     4,
-     0,     0,    10,     0,     6,     0,     0,    12,     0,     8,
-     0,     6,     2,     0,     8,     4,     0,     9,     5,     0,
-     6,     0,     1,     3,     3,     1,     1,     1,     1,     0,
-     3,     2,     3,     3,     1,     0,     1,     3,     1,     3,
-     2,     0,     0,     0,     7,     0,     0,     0,     7,     0,
-     0,     2,     1,     1,     2,     0,     3,     1,     1,     0,
-     0,     5,     0,     0,     5,     4,     1,     5,     2,     0,
-     2,     0,     1,     1,     1,     2,     2,     4,     2,     2,
-     1,     3,     2,     2,     2,     0,     2,     0,     3,     1,
-     1,     2,     1,     1,     1,     1,     1,     1,     1,     1,
+     4,     1,     0,     2,     1,     3,     3,     2,     0,     4,
+     1,     0,     4,     1,     1,     1,     2,     2,     0,     0,
+     5,     0,     0,     5,     1,     1,     3,     3,     4,     3,
+     3,     3,     1,     1,     3,     4,     3,     3,     3,     1,
+     3,     3,     3,     4,     3,     3,     1,     1,     2,     1,
+     2,     1,     2,     0,     7,     5,     2,     0,     7,     5,
+     2,     0,     8,     0,     7,     2,     0,     1,     0,     1,
+     1,     2,     0,     3,     2,     4,     3,     1,     3,     1,
+     1,     2,     1,     3,     4,     6,     5,     1,     3,     1,
+     1,     3,     2,     2,     0,     1,     1,     2,     0,     2,
+     3,     3,     2,     3,     4,     3,     2,     3,     2,     1,
+     1,     2,     2,     0,     1,     2,     0,     0,     1,     1,
+     2,     3,     1,     2,     1,     2,     6,     5,     5,     2,
+     2,     4,     0,     4,     0,     0,     3,     4,     3,     1,
+     1,     1,     1,     2,     0,     4,     1,     3,     0,     0,
+     7,     5,     2,     0,     0,     0,    12,     0,     6,     2,
+     2,     2,     3,     6,     8,    10,    12,     3,     4,     1,
+     1,     0,     6,     3,     5,     2,     2,     0,     1,     0,
+     1,     0,     1,     1,     3,     4,     1,     3,     0,     2,
+     2,     0,     4,     2,     0,     1,     1,     3,     1,     3,
+     4,     4,     4,     4,     4,     0,     2,     1,     2,     1,
+     3,     1,     3,     1,     1,     1,     1,     1,     1,     1,
+     1,     3,     3,     4,     0,     0,    10,     0,     6,     0,
+     0,    12,     0,     8,     0,     6,     2,     0,     8,     4,
+     0,     9,     5,     0,     6,     0,     1,     3,     3,     1,
+     1,     1,     1,     0,     3,     2,     3,     3,     1,     0,
+     1,     3,     1,     3,     2,     0,     0,     0,     7,     0,
+     0,     0,     7,     0,     0,     2,     1,     1,     2,     0,
+     3,     1,     1,     0,     0,     5,     0,     0,     5,     4,
+     1,     5,     2,     0,     2,     0,     1,     1,     1,     2,
+     2,     4,     2,     2,     1,     3,     2,     2,     2,     0,
+     2,     0,     3,     1,     1,     2,     1,     1,     1,     1,
      1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-     1,     1,     1,     1,     1,     1,     1,     6,     3,     5,
-     2,     1,     1,     1,     2,     1,     3,     2,     1,     1,
-     0,     0,     6,     1,     1,     1,     2,     2,     1,     4,
-     4,     4
+     1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+     1,     6,     3,     5,     2,     1,     1,     1,     2,     1,
+     3,     2,     1,     1,     0,     0,     6,     1,     1,     1,
+     2,     2,     1,     4,     4,     4
 };
 
 static const short yydefact[] = {     3,
-     5,     0,     0,     0,   162,   153,   160,   152,   248,   244,
-   246,     0,     0,     0,   410,     0,   462,   466,     0,     0,
-   416,   442,     0,   442,     0,     0,    19,     4,     8,     7,
+     5,     0,     0,     0,   162,   153,   160,   152,   252,   248,
+   250,     0,     0,     0,   414,     0,   466,   470,     0,     0,
+   420,   446,     0,   446,     0,     0,    19,     4,     8,     7,
      0,   128,   128,   148,   139,   149,   185,     0,     0,     0,
-   161,     0,     9,   412,   413,   411,   414,   165,   415,     6,
-    17,    18,   249,   245,   247,     0,     0,     0,    32,    33,
-    35,    34,   417,     0,     0,     0,   442,   433,   163,   443,
-   442,   164,     0,     0,   243,   295,     0,     0,   173,   129,
+   161,     0,     9,   416,   417,   415,   418,   165,   419,     6,
+    17,    18,   253,   249,   251,     0,     0,     0,    32,    33,
+    35,    34,   421,     0,     0,     0,   446,   437,   163,   447,
+   446,   164,     0,     0,   247,   299,     0,     0,   173,   129,
      0,    16,     0,    15,     0,   150,   139,   151,   155,   154,
-   137,   186,   269,   253,   269,   257,   260,   262,    11,    89,
+   137,   186,   273,   257,   273,   261,   264,   266,    11,    89,
     90,   107,    59,    60,     0,     0,     0,    36,    38,    37,
-     0,    39,    40,     0,   551,     0,     0,     0,   109,    41,
+     0,    39,    40,     0,   555,     0,     0,     0,   109,    41,
     42,     0,     0,    43,    61,     0,     0,    65,    46,    48,
-    91,   106,     0,   102,   103,   104,   105,   293,     0,   291,
-   158,     0,   291,   190,   444,     0,   513,   514,   536,   537,
-   533,   517,   518,   519,   520,   521,   522,   523,   524,   525,
-   526,   527,   528,   529,   530,   531,   532,   534,   535,     0,
-     0,   515,   463,   487,   506,   510,   516,   511,   467,     0,
-     0,   424,     0,     0,   431,   440,   419,     0,     0,     0,
-    12,     0,     0,    31,     0,   402,     0,     0,   183,   229,
-   295,     0,   230,     0,   171,   129,     0,   221,   222,     0,
+    91,   106,     0,   102,   103,   104,   105,   297,     0,   295,
+   158,     0,   295,   190,   448,     0,   517,   518,   540,   541,
+   537,   521,   522,   523,   524,   525,   526,   527,   528,   529,
+   530,   531,   532,   533,   534,   535,   536,   538,   539,     0,
+     0,   519,   467,   491,   510,   514,   520,   515,   471,     0,
+     0,   428,     0,     0,   435,   444,   423,     0,     0,     0,
+    12,     0,     0,    31,     0,   406,     0,     0,   183,   233,
+   299,     0,   234,     0,   171,   129,     0,   225,   226,     0,
      0,   138,   141,   168,   169,   140,   142,   170,     0,     0,
-     0,   250,     0,   254,     0,   258,    57,    58,    52,    49,
+     0,   254,     0,   258,     0,   262,    57,    58,    52,    49,
      0,     0,     0,     0,     0,     0,     0,     0,    51,     0,
      0,     0,    53,     0,    55,     0,     0,    82,    80,    78,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,   100,   101,     0,     0,    44,     0,   108,   110,
-    50,   166,   295,   385,     0,   289,   292,   156,   167,   294,
-   158,   290,   196,   197,   198,   195,     0,   188,   191,   418,
-     0,   541,     0,   490,   508,   489,     0,   512,     0,   490,
-   442,     0,   421,   471,   436,     0,   450,   471,   420,   296,
-   239,   238,   174,   175,   242,     0,   237,     0,   241,     0,
-     0,    29,     0,   331,   116,   332,   182,   184,     0,     0,
-    14,     0,     0,    23,     0,   183,   402,     0,    13,    27,
-     0,     0,   183,   277,   271,   128,   268,   128,     0,   269,
-   183,   269,   286,   287,   265,   284,     0,    93,    92,   321,
-   313,     0,     0,   550,   549,   552,   559,   554,     0,   555,
-   556,     0,     0,    10,    47,     0,     0,    88,    87,     0,
+    50,   166,   299,   389,     0,   293,   296,   156,   167,   298,
+   158,   294,   196,   197,   198,   195,     0,   188,   191,   422,
+     0,   545,     0,   494,   512,   493,     0,   516,     0,   494,
+   446,     0,   425,   475,   440,     0,   454,   475,   424,   300,
+   243,   242,   174,   175,   246,     0,   241,     0,   245,     0,
+     0,    29,     0,   335,   116,   336,   182,   184,     0,     0,
+    14,     0,     0,    23,     0,   183,   406,     0,    13,    27,
+     0,     0,   183,   281,   275,   128,   272,   128,     0,   273,
+   183,   273,   290,   291,   269,   288,     0,    93,    92,   325,
+   317,     0,     0,   554,   553,   556,   563,   558,     0,   559,
+   560,     0,     0,    10,    47,     0,     0,    88,    87,     0,
      0,     0,     0,    76,    77,    75,    74,    73,    71,    72,
     66,    67,    68,    69,    70,    99,    98,     0,    45,     0,
-   299,     0,   303,     0,   305,     0,   385,     0,   159,   157,
-     0,   190,    44,     0,     0,     0,   464,   507,   391,     0,
-   539,   468,   429,   442,   450,     0,     0,   434,   439,     0,
-     0,     0,     0,     0,   406,   392,   128,   128,   404,     0,
-   393,   395,   403,     0,   240,   312,     0,   118,   113,   117,
-     0,   180,   227,   223,   172,   228,    21,   179,   224,   226,
-     0,    25,     0,   252,   331,   270,   331,   278,     0,   256,
-     0,     0,   266,     0,   265,   322,   314,    95,    63,    62,
-     0,   558,   560,     0,   557,   562,   561,    54,    56,     0,
-     0,    81,    79,    96,    97,   298,   297,   386,   304,   300,
-   302,     0,   187,   189,    89,     0,     0,   486,   506,   128,
-     0,   495,   491,   493,     0,     0,   509,   393,     0,     0,
-   426,   471,   437,     0,   425,   480,   483,   474,     0,   128,
-   128,   476,   473,   450,   449,   447,   448,   432,   450,   455,
-   452,   128,   128,     0,   441,   176,   390,   291,   291,   387,
-   388,     0,   405,     0,     0,    30,   319,   114,   128,   128,
-   145,     0,     0,   177,   225,     0,   272,   273,   279,   332,
-   275,   183,   183,   288,   285,   183,     0,     0,     0,   315,
-   316,     0,     0,   542,     0,   543,   544,    83,    86,   301,
-   192,     0,   194,   540,   488,   499,   291,   500,   496,   497,
-   465,     0,   469,   450,     0,   471,   422,     0,     0,   175,
-     0,     0,     0,   475,     0,     0,   456,   456,   451,   236,
-   295,   385,   129,   183,   183,   183,   295,   183,   183,     0,
-   394,   396,   407,   320,   121,     0,   122,     0,   145,   143,
-   202,   200,   199,   181,    22,     0,    26,   331,     0,   251,
-   255,   261,   183,   408,     0,     0,     0,   331,     0,     0,
-   125,   332,   307,   317,   210,    89,     0,   208,     0,   207,
-     0,   263,   205,   546,   548,     0,   553,     0,   545,     0,
-     0,   183,   183,   183,     0,   501,   538,     0,   430,     0,
-   471,   481,   484,   477,   435,     0,   459,   453,   457,   454,
-   299,     0,   402,     0,   397,   398,   399,   299,   400,   401,
-   389,     0,     0,   144,   147,   146,     0,   178,   280,     0,
-   183,   259,   318,     0,   324,   127,   126,   311,     0,   325,
-   309,   332,   308,     0,     0,     0,   211,    64,     0,   204,
-   547,    84,   193,   503,   504,   505,   498,   291,   427,   438,
-     0,     0,     0,   461,     0,     0,   234,   295,   235,   231,
-   233,     0,   119,   120,     0,   183,     0,   281,   409,   323,
-     0,   162,     0,   345,   329,     0,     0,     0,     0,     0,
-     0,     0,     0,   374,   442,   442,   366,     0,     0,   123,
-   128,   128,   338,   343,     0,     0,   335,   336,   339,   367,
-   337,     0,   213,     0,     0,   206,   502,   471,   423,   479,
-   478,   482,   485,   460,   458,     0,   232,   201,   283,   183,
-     0,     0,   331,   376,     0,     0,   372,   356,   357,   358,
-     0,     0,     0,   375,     0,   373,   340,   134,     0,   135,
-     0,     0,   327,   332,   326,   349,     0,   136,     0,   209,
-   212,     0,   282,     0,     0,     0,   377,    48,     0,     0,
-     0,   370,   359,     0,   364,     0,     0,   132,   215,     0,
-   133,   218,   344,   331,     0,     0,   214,   428,   328,     0,
-   330,   368,   350,   354,     0,   365,     0,   130,     0,   131,
-     0,   342,   333,   331,     0,   346,   331,   376,   331,   371,
-   378,     0,   216,   219,   334,   348,   331,   369,     0,   355,
-     0,     0,   379,   380,   360,     0,     0,   347,   351,     0,
-   378,     0,     0,   217,   220,   376,     0,     0,   361,   381,
-     0,   382,     0,     0,   352,   383,     0,   362,   331,     0,
-     0,   353,   363,   384,     0,     0,     0
+   303,     0,   307,     0,   309,     0,   389,     0,   159,   157,
+     0,   190,    44,     0,     0,     0,   468,   511,   395,     0,
+   543,   472,   433,   446,   454,     0,     0,   438,   443,     0,
+     0,     0,     0,     0,   410,   396,   128,   128,   408,     0,
+   397,   399,   407,     0,   244,   316,     0,   118,   113,   117,
+     0,   180,   231,   227,   172,   232,    21,   179,   228,   230,
+     0,    25,     0,   256,   335,   274,   335,   282,     0,   260,
+     0,     0,   270,     0,   269,   326,   318,    95,    63,    62,
+     0,   562,   564,     0,   561,   566,   565,    54,    56,     0,
+     0,    81,    79,    96,    97,   302,   301,   390,   308,   304,
+   306,     0,   187,   189,    89,     0,     0,   490,   510,   128,
+     0,   499,   495,   497,     0,     0,   513,   397,     0,     0,
+   430,   475,   441,     0,   429,   484,   487,   478,     0,   128,
+   128,   480,   477,   454,   453,   451,   452,   436,   454,   459,
+   456,   128,   128,     0,   445,   176,   394,   295,   295,   391,
+   392,     0,   409,     0,     0,    30,   323,   114,   128,   128,
+   145,     0,     0,   177,   229,     0,   276,   277,   283,   336,
+   279,   183,   183,   292,   289,   183,     0,     0,     0,   319,
+   320,     0,     0,   546,     0,   547,   548,    83,    86,   305,
+   192,     0,   194,   544,   492,   503,   295,   504,   500,   501,
+   469,     0,   473,   454,     0,   475,   426,     0,     0,   175,
+     0,     0,     0,   479,     0,     0,   460,   460,   455,   240,
+   299,   389,   129,   183,   183,   183,   299,   183,   183,     0,
+   398,   400,   411,   324,   121,     0,   122,     0,   145,   143,
+   202,   200,   199,   181,    22,     0,    26,   335,     0,   255,
+   259,   265,   183,   412,     0,     0,     0,   335,     0,     0,
+   125,   336,   311,   321,   215,    89,     0,   212,     0,   214,
+     0,   267,   205,   211,     0,     0,   550,   552,     0,   557,
+     0,   549,     0,     0,   183,   183,   183,     0,   505,   542,
+     0,   434,     0,   475,   485,   488,   481,   439,     0,   463,
+   457,   461,   458,   303,     0,   406,     0,   401,   402,   403,
+   303,   404,   405,   393,     0,     0,   144,   147,   146,     0,
+   178,   284,     0,   183,   263,   322,     0,   328,   127,   126,
+   315,     0,   329,   313,   336,   312,     0,   218,     0,   209,
+    64,     0,   204,     0,   217,   208,   551,    84,   193,   507,
+   508,   509,   502,   295,   431,   442,     0,     0,     0,   465,
+     0,     0,   238,   299,   239,   235,   237,     0,   119,   120,
+     0,   183,     0,   285,   413,   327,     0,   162,     0,   349,
+   333,     0,     0,     0,     0,     0,     0,     0,     0,   378,
+   446,   446,   370,     0,     0,   123,   128,   128,   342,   347,
+     0,     0,   339,   340,   343,   371,   341,     0,     0,     0,
+   206,   207,   506,   475,   427,   483,   482,   486,   489,   464,
+   462,     0,   236,   201,   287,   183,     0,     0,   335,   380,
+     0,     0,   376,   360,   361,   362,     0,     0,     0,   379,
+     0,   377,   344,   134,     0,   135,     0,     0,   331,   336,
+   330,   353,     0,   136,   213,   210,     0,   286,     0,     0,
+     0,   381,    48,     0,     0,     0,   374,   363,     0,   368,
+     0,     0,   132,   219,     0,   133,   222,   348,   335,     0,
+     0,   432,   332,     0,   334,   372,   354,   358,     0,   369,
+     0,   130,     0,   131,     0,   346,   337,   335,     0,   350,
+   335,   380,   335,   375,   382,     0,   220,   223,   338,   352,
+   335,   373,     0,   359,     0,     0,   383,   384,   364,     0,
+     0,   351,   355,     0,   382,     0,     0,   221,   224,   380,
+     0,     0,   365,   385,     0,   386,     0,     0,   356,   387,
+     0,   366,   335,     0,     0,   357,   367,   388,     0,     0,
+     0
 };
 
-static const short yydefgoto[] = {   945,
+static const short yydefgoto[] = {   949,
      1,     2,     3,    28,    29,    30,   335,   563,   341,   566,
    198,   447,   669,   122,   232,   398,   124,   125,   126,   127,
-   128,   582,   129,   383,   382,   380,   680,   381,   130,   233,
+   128,   582,   129,   383,   382,   380,   683,   381,   130,   233,
    131,   132,   322,   323,   324,   558,   657,   658,    31,   193,
-   790,   437,    91,   559,   640,   438,    34,   140,   278,    35,
+   796,   437,    91,   559,   640,   438,    34,   140,   278,    35,
    216,   204,    78,   199,   205,   646,    79,   562,   327,   328,
-    37,   287,   288,   289,   644,   717,   671,   672,   673,   736,
-   805,   849,   868,   889,   916,   871,   891,   917,   314,   208,
-   682,   209,    38,    39,    40,    41,   350,   352,   357,   225,
-   740,   474,   220,   221,   347,   568,   569,   355,   356,   142,
-   684,   143,   189,   277,   659,   660,   729,   325,   477,   579,
-   580,   581,   556,   361,   557,   794,   795,   796,   823,   844,
-   451,   845,   663,   797,   798,   874,   822,   907,   898,   926,
-   939,   899,   799,   800,   897,   801,   835,   859,   912,   913,
-   914,   937,   403,   404,   439,   630,   440,   441,   442,   317,
-   318,   443,   444,   655,   133,    43,    64,    44,    45,    46,
-   425,   691,   304,   604,   808,   522,   307,   534,   606,    47,
-   308,    69,    48,   430,   539,   431,   544,   698,   699,    49,
-    65,   294,   516,    66,   300,   520,   426,   427,   532,   613,
-   812,   533,   608,   752,   609,   753,   173,   417,   513,   514,
-   515,   685,   686,   296,   419,   174,   175,   176,   177,   178,
-   585,   586,   675,   587,   366,   134,   235,   481,   369,   370,
-   371,   135,   136,   137
+    37,   287,   288,   289,   644,   720,   671,   672,   673,   810,
+   674,   739,   675,   676,   873,   893,   920,   876,   895,   921,
+   314,   208,   685,   209,    38,    39,    40,    41,   350,   352,
+   357,   225,   743,   474,   220,   221,   347,   568,   569,   355,
+   356,   142,   687,   143,   189,   277,   659,   660,   732,   325,
+   477,   579,   580,   581,   556,   361,   557,   800,   801,   802,
+   829,   850,   451,   851,   663,   803,   804,   879,   828,   911,
+   902,   930,   943,   903,   805,   806,   901,   807,   841,   864,
+   916,   917,   918,   941,   403,   404,   439,   630,   440,   441,
+   442,   317,   318,   443,   444,   655,   133,    43,    64,    44,
+    45,    46,   425,   694,   304,   604,   814,   522,   307,   534,
+   606,    47,   308,    69,    48,   430,   539,   431,   544,   701,
+   702,    49,    65,   294,   516,    66,   300,   520,   426,   427,
+   532,   613,   818,   533,   608,   758,   609,   759,   173,   417,
+   513,   514,   515,   688,   689,   296,   419,   174,   175,   176,
+   177,   178,   585,   586,   678,   587,   366,   134,   235,   481,
+   369,   370,   371,   135,   136,   137
 };
 
-static const short yypact[] = {   146,
-   163,  3062,  3062,   133,-32768,-32768,-32768,-32768,   205,   205,
-   205,   182,   209,   215,-32768,   282,-32768,-32768,   282,   282,
--32768,   235,   282,   235,   282,   282,-32768,-32768,-32768,-32768,
-    77,   206,  2542,   195,-32768,   205,-32768,    95,   125,   150,
--32768,  3062,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,   205,   205,   205,  2771,  2609,   246,-32768,-32768,
--32768,-32768,-32768,   105,  3331,  3331,   211,    49,-32768,-32768,
-   235,-32768,    23,   282,-32768,-32768,    77,    25,-32768,   205,
-  1765,-32768,   464,-32768,    77,   195,-32768,   205,-32768,-32768,
-   593,-32768,   248,   247,   248,   265,-32768,   274,-32768,-32768,
--32768,-32768,-32768,-32768,  2771,  2771,   282,-32768,-32768,-32768,
-  2771,-32768,-32768,  1370,-32768,   257,   279,   307,-32768,-32768,
--32768,  2771,   301,   302,-32768,  2825,  2879,-32768,  3643,   773,
-   371,   336,  2771,-32768,-32768,-32768,-32768,-32768,   362,   322,
--32768,   387,  3451,   259,-32768,   282,-32768,-32768,-32768,-32768,
+static const short yypact[] = {   118,
+   131,  3118,  3118,   336,-32768,-32768,-32768,-32768,   112,   112,
+   112,   133,   165,   173,-32768,    85,-32768,-32768,    85,    85,
+-32768,   106,    85,   106,    85,    85,-32768,-32768,-32768,-32768,
+   186,   167,   845,   316,-32768,   112,-32768,   141,   158,   181,
+-32768,  3118,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,   112,   112,   112,  2827,  2665,   191,-32768,-32768,
+-32768,-32768,-32768,    55,  3392,  3392,   190,    68,-32768,-32768,
+   106,-32768,   296,    85,-32768,-32768,   186,   353,-32768,   112,
+  1821,-32768,   275,-32768,   186,   316,-32768,   112,-32768,-32768,
+   831,-32768,   200,   189,   200,   195,-32768,   211,-32768,-32768,
+-32768,-32768,-32768,-32768,  2827,  2827,    85,-32768,-32768,-32768,
+  2827,-32768,-32768,  1351,-32768,   253,   270,   276,-32768,-32768,
+-32768,  2827,   267,   277,-32768,  2881,  2935,-32768,  3725,  1040,
+   347,   332,  2827,-32768,-32768,-32768,-32768,-32768,   295,   349,
+-32768,   339,  3546,   116,-32768,    85,-32768,-32768,-32768,-32768,
 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   225,
-   837,-32768,-32768,-32768,  2503,   409,-32768,-32768,-32768,   282,
-   282,   391,   282,   282,-32768,-32768,-32768,   388,   292,   144,
--32768,   464,    77,-32768,   416,-32768,  1972,  1176,   205,-32768,
--32768,   464,-32768,    39,-32768,   205,  1863,   234,   299,   263,
-  1784,   593,-32768,-32768,-32768,-32768,   205,-32768,   426,   419,
-  1696,-32768,   437,-32768,   239,-32768,-32768,-32768,-32768,-32768,
-   449,   469,   465,   477,  2663,  3359,   837,   282,-32768,   450,
-  2771,  1370,-32768,  1370,-32768,  2771,  2771,   518,-32768,-32768,
-  2771,  2771,  2771,  2771,  2771,  2771,  2771,  2771,  2771,  2771,
-  2771,  2771,-32768,-32768,   282,   282,  2771,  2771,-32768,-32768,
--32768,-32768,-32768,   322,  2031,-32768,   337,   670,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,   157,-32768,   498,-32768,
-   837,-32768,   484,   485,   554,-32768,   409,-32768,   256,   485,
-   235,   493,-32768,   509,   491,   502,-32768,   509,-32768,-32768,
-   299,-32768,-32768,   558,   299,   582,-32768,  3215,-32768,   511,
-   515,-32768,   879,    84,-32768,-32768,   561,   205,   372,   155,
--32768,   464,   464,-32768,  1176,   205,-32768,  2090,-32768,-32768,
-  1176,   534,   205,-32768,-32768,   326,   525,  1910,   717,   248,
-   205,   248,-32768,   572,   529,-32768,   239,-32768,-32768,-32768,
-   536,   552,  2423,-32768,-32768,-32768,-32768,   595,   560,  3359,
--32768,   564,   570,-32768,  3643,   577,   580,  3643,  3643,  2771,
-   620,  2771,  2771,  1580,   959,  1151,  1757,  1854,   658,   658,
-   489,   489,-32768,-32768,-32768,-32768,-32768,   583,   302,   584,
-   177,   213,-32768,  3234,-32768,   588,-32768,  2149,-32768,   670,
-   587,   259,  2933,   590,  3395,  1882,-32768,-32768,  3464,   837,
--32768,-32768,   578,   235,-32768,   611,  3137,-32768,-32768,   421,
-  3010,   624,    75,   612,-32768,-32768,-32768,  3521,-32768,   626,
-   360,-32768,-32768,   254,-32768,-32768,    92,-32768,-32768,-32768,
-  3533,-32768,   234,-32768,-32768,   234,-32768,   668,-32768,-32768,
-   628,-32768,   638,-32768,-32768,-32768,-32768,-32768,   647,-32768,
-   650,  2771,   282,   654,   529,-32768,   703,-32768,-32768,-32768,
-  3423,-32768,-32768,   595,-32768,-32768,-32768,-32768,-32768,   698,
-  2771,  1345,  1501,-32768,-32768,   337,-32768,-32768,-32768,-32768,
--32768,   655,-32768,-32768,   287,   663,   282,-32768,  2503,   665,
-  3245,-32768,-32768,  3521,  1946,    92,-32768,   662,   671,    92,
--32768,   509,-32768,   543,-32768,-32768,-32768,-32768,    77,   206,
-  2542,   228,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,  3546,   667,-32768,-32768,-32768,   592,   357,-32768,
--32768,  3476,-32768,   743,   465,-32768,-32768,-32768,   672,   833,
--32768,  1685,    92,-32768,-32768,    92,-32768,   674,-32768,-32768,
-   674,   205,   205,  3643,-32768,   205,   673,   282,  1011,   703,
--32768,  1450,  2771,   715,   675,  3423,-32768,-32768,  1423,-32768,
--32768,  2771,-32768,-32768,-32768,-32768,   592,-32768,-32768,-32768,
--32768,   282,-32768,-32768,   693,   509,-32768,  3331,  3331,    62,
-   464,    77,  3165,-32768,   549,  3028,   405,   405,-32768,-32768,
--32768,   357,   205,   260,   273,   205,-32768,   273,   205,  3234,
--32768,-32768,-32768,-32768,-32768,   464,-32768,    77,-32768,   625,
--32768,-32768,  3643,-32768,-32768,  1685,-32768,-32768,   446,-32768,
--32768,-32768,   205,-32768,   411,   348,   914,   679,   682,  1091,
--32768,-32768,-32768,-32768,-32768,   723,   282,-32768,   725,  3643,
-   686,   689,-32768,   302,-32768,  2771,-32768,   715,-32768,  2771,
-   318,   260,   273,   205,   427,-32768,-32768,   556,-32768,   704,
-   509,-32768,-32768,-32768,-32768,  2771,   737,   697,-32768,   697,
-   499,   410,-32768,  2208,-32768,-32768,-32768,   747,-32768,-32768,
--32768,   435,   445,   625,-32768,-32768,  1450,-32768,-32768,  2771,
-    73,-32768,-32768,   282,-32768,-32768,-32768,-32768,   701,-32768,
--32768,-32768,-32768,  2289,   745,  1450,-32768,-32768,  1530,-32768,
--32768,  1423,-32768,-32768,-32768,-32768,-32768,   592,-32768,-32768,
-   719,    65,    65,  3643,  2771,   405,   398,-32768,   398,-32768,
--32768,   700,-32768,-32768,   712,  3607,  2771,-32768,-32768,-32768,
-  2369,   754,   734,-32768,-32768,   736,   739,  2771,   758,   724,
-   726,  2717,   109,   793,   178,   289,-32768,   764,   727,-32768,
-   731,  3264,-32768,   795,  1207,    89,-32768,-32768,-32768,-32768,
--32768,  2531,-32768,   735,  1610,-32768,-32768,   509,-32768,-32768,
--32768,-32768,-32768,  3643,-32768,   822,-32768,-32768,-32768,  3607,
-  2771,   755,-32768,  2771,  2771,  3584,-32768,-32768,-32768,-32768,
-   738,  2771,   740,-32768,   757,-32768,-32768,-32768,   464,-32768,
-    77,  1290,-32768,-32768,-32768,-32768,  2771,-32768,  1610,-32768,
--32768,   760,-32768,   742,  2771,   838,-32768,   799,   783,   786,
-  2771,-32768,-32768,   789,-32768,  2771,   451,-32768,   221,   456,
--32768,   471,-32768,-32768,  2369,   791,-32768,-32768,-32768,   792,
--32768,-32768,-32768,-32768,  3625,-32768,    54,-32768,  1176,-32768,
-  1176,-32768,-32768,-32768,   797,-32768,-32768,  2771,-32768,-32768,
-   860,   800,-32768,-32768,-32768,-32768,-32768,-32768,   802,-32768,
-   817,    80,   806,-32768,-32768,   465,   465,-32768,-32768,  2771,
-   860,   811,   860,-32768,-32768,  2771,   814,    81,-32768,-32768,
-   818,-32768,   582,   820,-32768,   371,   334,-32768,-32768,   821,
-   582,-32768,-32768,   371,   895,   899,-32768
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   230,
+  3651,-32768,-32768,-32768,  2559,   394,-32768,-32768,-32768,    85,
+    85,   318,    85,    85,-32768,-32768,-32768,   367,   632,   199,
+-32768,   275,   186,-32768,   419,-32768,  2028,  1966,   112,-32768,
+-32768,   275,-32768,   360,-32768,   112,  1919,   362,   379,   386,
+  1840,   831,-32768,-32768,-32768,-32768,   112,-32768,   430,   414,
+  1752,-32768,   443,-32768,   109,-32768,-32768,-32768,-32768,-32768,
+   421,   429,   445,   454,  2719,  3454,  3651,    85,-32768,   459,
+  2827,  1351,-32768,  1351,-32768,  2827,  2827,   504,-32768,-32768,
+  2827,  2827,  2827,  2827,  2827,  2827,  2827,  2827,  2827,  2827,
+  2827,  2827,-32768,-32768,    85,    85,  2827,  2827,-32768,-32768,
+-32768,-32768,-32768,   349,  2087,-32768,   410,   658,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,   215,-32768,   494,-32768,
+  3651,-32768,   468,   484,   540,-32768,   394,-32768,   476,   484,
+   106,   498,-32768,   514,   497,   508,-32768,   514,-32768,-32768,
+   379,-32768,-32768,   562,   379,   583,-32768,  3271,-32768,   512,
+   527,-32768,   294,    82,-32768,-32768,   570,   112,   324,   260,
+-32768,   275,   275,-32768,  1966,   112,-32768,  2146,-32768,-32768,
+  1966,   549,   112,-32768,-32768,   435,   541,   378,  3357,   200,
+   112,   200,-32768,   586,   564,-32768,   109,-32768,-32768,-32768,
+   565,   571,  2479,-32768,-32768,-32768,-32768,   610,   573,  3454,
+-32768,   574,   576,-32768,  3725,   577,   579,  3725,  3725,  2827,
+   620,  2827,  2827,  1481,  1560,  1092,  1633,  1567,   771,   771,
+   337,   337,-32768,-32768,-32768,-32768,-32768,   585,   277,   584,
+   210,   273,-32768,  3290,-32768,   592,-32768,  2205,-32768,   658,
+   590,   116,  2989,   600,  3482,  1938,-32768,-32768,  3557,  3651,
+-32768,-32768,   595,   106,-32768,   615,  3193,-32768,-32768,    47,
+  3066,   617,    92,   609,-32768,-32768,-32768,  3632,-32768,   618,
+   407,-32768,-32768,   269,-32768,-32768,    89,-32768,-32768,-32768,
+   596,-32768,   362,-32768,-32768,   362,-32768,   650,-32768,-32768,
+   612,-32768,   634,-32768,-32768,-32768,-32768,-32768,   633,-32768,
+   637,  2827,    85,   644,   564,-32768,   702,-32768,-32768,-32768,
+  3518,-32768,-32768,   610,-32768,-32768,-32768,-32768,-32768,   697,
+  2827,  1326,  1402,-32768,-32768,   410,-32768,-32768,-32768,-32768,
+-32768,   653,-32768,-32768,   284,   661,    85,-32768,  2559,   663,
+  2598,-32768,-32768,  3632,  2002,    89,-32768,   667,   668,    89,
+-32768,   514,-32768,   216,-32768,-32768,-32768,-32768,   186,   167,
+   845,    80,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,  3669,   672,-32768,-32768,-32768,   739,   457,-32768,
+-32768,  3621,-32768,   750,   445,-32768,-32768,-32768,   683,  3320,
+-32768,  1666,    89,-32768,-32768,    89,-32768,   680,-32768,-32768,
+   680,   112,   112,  3725,-32768,   112,   685,    85,   971,   702,
+-32768,  1431,  2827,   727,   684,  3518,-32768,-32768,  1131,-32768,
+-32768,  2827,-32768,-32768,-32768,-32768,   739,-32768,-32768,-32768,
+-32768,    85,-32768,-32768,   709,   514,-32768,  3392,  3392,    87,
+   275,   186,  3221,-32768,   325,  3084,   473,   473,-32768,-32768,
+-32768,   457,   112,   213,   257,   112,-32768,   257,   112,  3290,
+-32768,-32768,-32768,-32768,-32768,   275,-32768,   186,-32768,   745,
+-32768,-32768,  3725,-32768,-32768,  1666,-32768,-32768,   490,-32768,
+-32768,-32768,   112,-32768,   409,   477,   880,   695,   699,  1053,
+-32768,-32768,-32768,-32768,-32768,   752,    85,-32768,   753,  3725,
+   710,   714,-32768,-32768,    66,  1591,   277,-32768,  2827,-32768,
+   727,-32768,  2827,   299,   213,   257,   112,   418,-32768,-32768,
+   432,-32768,   737,   514,-32768,-32768,-32768,-32768,  2827,   764,
+   722,-32768,   722,   726,   629,-32768,  2264,-32768,-32768,-32768,
+   422,-32768,-32768,-32768,   427,   489,   745,-32768,-32768,  1431,
+-32768,-32768,  2827,   188,-32768,-32768,    85,-32768,-32768,-32768,
+-32768,   732,-32768,-32768,-32768,-32768,  2345,-32768,  1431,-32768,
+-32768,  1511,-32768,  1741,-32768,-32768,-32768,  1131,-32768,-32768,
+-32768,-32768,-32768,   739,-32768,-32768,   742,    77,    77,  3725,
+  2827,   473,   539,-32768,   539,-32768,-32768,   728,-32768,-32768,
+   747,  3396,  2827,-32768,-32768,-32768,  2425,   779,   768,-32768,
+-32768,   772,   774,  2827,   796,   758,   762,  2773,   521,   840,
+   157,   223,-32768,   810,   777,-32768,   783,  3301,-32768,   846,
+  1191,    94,-32768,-32768,-32768,-32768,-32768,  2587,   778,  1741,
+-32768,-32768,-32768,   514,-32768,-32768,-32768,-32768,-32768,  3725,
+-32768,   624,-32768,-32768,-32768,  3396,  2827,   804,-32768,  2827,
+  2827,  1111,-32768,-32768,-32768,-32768,   787,  2827,   788,-32768,
+   807,-32768,-32768,-32768,   275,-32768,   186,  1271,-32768,-32768,
+-32768,-32768,  2827,-32768,-32768,-32768,   808,-32768,   791,  2827,
+   853,-32768,   911,   795,   800,  2827,-32768,-32768,   801,-32768,
+  2827,   491,-32768,   321,   492,-32768,   687,-32768,-32768,  2425,
+   806,-32768,-32768,   820,-32768,-32768,-32768,-32768,  3707,-32768,
+   110,-32768,  1966,-32768,  1966,-32768,-32768,-32768,   803,-32768,
+-32768,  2827,-32768,-32768,   868,   838,-32768,-32768,-32768,-32768,
+-32768,-32768,   839,-32768,   860,   166,   843,-32768,-32768,   445,
+   445,-32768,-32768,  2827,   868,   844,   868,-32768,-32768,  2827,
+   850,   171,-32768,-32768,   855,-32768,   583,   856,-32768,   347,
+   329,-32768,-32768,   859,   583,-32768,-32768,   347,   932,   938,
+-32768
 };
 
 static const short yypgoto[] = {-32768,
--32768,-32768,-32768,    98,  -363,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,   -12,-32768,   -56,   488,  -230,   383,-32768,-32768,
-   -75,-32768,   439,-32768,-32768,-32768,-32768,-32768,    78,-32768,
-  -272,-32768,  -312,   579,-32768,-32768,   250,-32768,    44,  -181,
-   110,     3,   819,-32768,   275,     7,   -18,  -162,   632,   104,
-  -228,  -581,   -68,  -204,  -123,-32768,-32768,-32768,  -255,    32,
-    90,-32768,   504,-32768,   303,-32768,  -612,-32768,  -653,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   -67,  -134,
-  -508,   -29,-32768,-32768,-32768,   -73,-32768,-32768,-32768,-32768,
--32768,   475,   -38,-32768,   603,   486,   308,   598,   487,   -36,
-   -70,  -160,  -182,  -221,   300,-32768,-32768,  -269,-32768,-32768,
--32768,   385,  -177,-32768,  -200,-32768,-32768,-32768,-32768,  -186,
-  -487,  -709,   306,-32768,    96,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,    97,-32768,  -801,    46,-32768,
-    47,-32768,   568,-32768,  -352,-32768,   557,   563,   425,  -298,
--32768,-32768,-32768,-32768,    18,-32768,   954,-32768,-32768,-32768,
+-32768,-32768,-32768,    95,  -362,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,   -11,-32768,   -56,   528,  -220,   485,-32768,-32768,
+   -54,-32768,   446,-32768,-32768,-32768,-32768,-32768,   113,-32768,
+  -303,-32768,  -280,   621,-32768,-32768,   290,-32768,    16,  -166,
+   134,     1,   862,-32768,   311,     4,    -2,  -155,   673,    20,
+  -243,  -562,   -60,  -205,  -125,-32768,-32768,-32768,   155,     8,
+    50,-32768,   544,-32768,   307,-32768,  -613,-32768,   219,-32768,
+  -604,-32768,-32768,   288,-32768,-32768,-32768,-32768,-32768,-32768,
+   -53,  -118,  -467,   -15,-32768,-32768,-32768,   -57,-32768,-32768,
+-32768,-32768,-32768,   531,   -37,-32768,   654,   500,   359,   607,
+   536,   -39,   -84,  -150,  -179,  -236,   315,-32768,-32768,  -241,
+-32768,-32768,-32768,   433,    74,-32768,  -196,-32768,-32768,-32768,
+-32768,  -175,  -506,  -721,   350,-32768,   132,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,   135,-32768,  -791,
+    93,-32768,    90,-32768,   616,-32768,  -350,-32768,   603,   605,
+   475,  -295,-32768,-32768,-32768,-32768,    18,-32768,  1004,-32768,
 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,     8,     0,  -343,-32768,   444,-32768,   366,   231,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,  -270,-32768,-32768,-32768,
-   237,   463,-32768,-32768,-32768,-32768,   -20,   688,-32768,-32768,
-   483,-32768,   251,   537,-32768,   585,   633,  -103,-32768,  -124,
--32768,-32768,   351,   412,-32768,-32768,-32768,-32768,-32768,-32768,
-   643,-32768,-32768,-32768
+-32768,-32768,-32768,     9,     2,  -338,-32768,   493,-32768,   415,
+   272,-32768,-32768,-32768,-32768,-32768,-32768,-32768,  -276,-32768,
+-32768,-32768,   280,   509,-32768,-32768,-32768,-32768,   -22,   736,
+-32768,-32768,   526,-32768,   291,   535,-32768,   640,   643,  -139,
+-32768,  -130,-32768,-32768,   368,   463,-32768,-32768,-32768,-32768,
+-32768,-32768,   682,-32768,-32768,-32768
 };
 
 
-#define        YYLAST          3695
+#define        YYLAST          3777
 
 
 static const short yytable[] = {   123,
-   139,    81,   336,    63,    32,    32,    67,    68,    33,    33,
-    71,   326,    63,    74,    86,   207,   210,   218,   329,    42,
-    42,    70,   457,    70,   333,    94,    96,    98,   462,   227,
-   228,    72,   362,    36,    36,   230,   399,   432,   459,   624,
-    53,    54,    55,   433,    32,   179,   239,   190,    33,   409,
-   298,   498,   402,   448,   712,   211,   223,   271,   346,    42,
-   348,   188,    80,   528,    88,   810,    70,   330,   313,   276,
-    70,   297,   282,    36,   182,    83,    85,   234,   186,    75,
-   458,   524,   649,   269,  -112,   806,   183,   464,   195,   846,
-   401,   901,   555,   449,   229,   470,   909,    59,    60,   187,
-    50,   191,    14,   146,   765,   192,    14,   184,    80,   336,
-   767,    59,    60,   856,   206,   331,    80,   921,   933,   332,
-   196,   197,   217,   804,   931,    92,    76,    59,    60,   902,
-   185,   286,   368,   290,   293,    77,    87,   326,   218,    99,
-   320,   811,    92,    92,    92,    -1,   512,   847,   326,   145,
-   546,   851,    59,    60,   326,   922,   934,   292,   832,   311,
-   141,    61,    -2,   315,   892,  -112,    62,   301,   302,    92,
-   305,   306,   190,   360,   734,    61,    93,    92,   365,   496,
-    62,   409,   399,   310,   905,   146,   346,   908,   348,   910,
-   615,    61,   757,   759,   453,   877,    62,   918,   456,    89,
-   372,    90,   196,   197,   218,   376,    95,   377,   455,    51,
-    52,   400,   354,   337,   338,   -35,    61,   141,   406,   312,
-    80,    62,    16,   206,    80,   373,   273,    59,    60,   942,
-   454,    97,   411,   206,    14,   274,   275,   412,   349,   353,
-    56,    59,    60,   217,   771,   600,   281,   195,   180,   694,
-  -175,   605,   396,   397,   414,    16,  -175,   867,    59,    60,
-   688,    59,    60,   283,   284,   285,   484,    57,   542,   181,
-   543,   407,   408,    58,   141,   526,   527,   711,   570,    16,
-   570,   461,    82,   291,    59,    60,   421,   480,   497,    14,
-  -472,    61,   337,   338,    75,    92,    62,  -175,   310,   311,
-    70,  -175,    14,   315,   144,    61,    92,   757,   423,   661,
-    62,   469,   219,   471,   420,   236,   650,   651,   703,   704,
-   652,    14,    61,   490,   141,    61,   -34,    62,   222,   553,
-    62,   196,   197,    16,   554,   690,   218,   237,   601,   339,
-   141,    76,   603,   192,   354,   141,   224,   141,    61,    36,
-    77,   502,   674,    62,   634,   226,   875,   196,   197,    75,
-   206,   681,   591,   206,   206,   238,   349,   592,   705,   706,
-   707,   273,   709,   710,    75,   200,   240,   584,   310,   269,
-   274,   275,   241,   519,   298,   645,    14,   726,   647,   465,
-   731,   467,   662,   743,   141,   407,   408,   722,   241,   286,
-   402,    14,  -274,  -274,   760,   297,   627,    75,   200,   940,
-   270,   716,    75,   620,   941,   622,   275,    92,   510,    86,
-   751,   201,   511,    70,   446,   725,   744,   745,   746,   530,
-   202,   523,   560,   531,    14,    36,   551,   272,   701,    14,
-   552,   702,   696,   203,   708,   674,   299,    36,    75,   200,
-    36,   281,   141,   542,   201,   543,   703,   704,    36,   758,
-   354,   570,   279,   202,   309,   768,    75,   200,    77,    88,
-   529,   662,   303,   732,   316,    14,   203,   626,   629,   496,
-   548,   549,   678,   720,   342,   716,   496,   723,   535,   536,
-   537,   724,    86,    14,   594,   201,   343,   195,   538,   610,
-  -175,    75,   620,   747,   202,   310,  -175,   748,   243,   245,
-   819,   763,    86,   201,   351,   332,   510,   203,   625,   628,
-   511,   764,   202,   141,   358,   192,   374,   888,    14,   196,
-   197,   332,   890,   793,   141,   203,   192,   852,   260,   261,
-   262,    87,    88,   210,   359,    36,   360,  -175,   621,   697,
-   697,  -175,   363,   597,   561,   -85,   413,   622,   275,   415,
-    80,   416,    88,   418,   853,   654,   218,   683,   424,   713,
-   793,  -470,   428,   611,   612,   816,   903,   429,   904,   623,
-    80,   721,   610,    36,   195,   617,   618,   692,   693,   687,
-   102,   446,   190,   445,    75,   620,   452,   213,   214,   215,
-   463,   466,   636,   638,     9,    10,    11,   472,   610,   473,
-   535,   536,   537,   476,    87,   530,   535,   536,   537,   531,
-   607,    14,    14,   535,   536,   537,   695,   478,   623,   715,
-   214,   215,   482,   749,    87,   483,     9,    10,    11,   486,
-   218,   621,   206,    80,    36,   487,   281,   762,   206,   206,
-   622,   275,   488,    80,   735,   489,   529,   491,   494,   521,
-   936,    36,   503,   639,   336,   507,   495,   206,   944,    80,
-   499,   311,   315,   525,   793,   214,   215,   789,   311,   375,
-   206,     9,    10,    11,   378,   379,   545,   547,   697,   384,
-   385,   386,   387,   388,   389,   390,   391,   392,   393,   394,
-   395,   550,   326,   564,   326,   258,   259,   260,   261,   262,
-   565,   769,    92,   567,   789,   924,   925,   344,   683,   141,
-     5,   788,     7,   138,   572,   831,   271,   573,     9,    10,
-    11,   576,   623,   623,   578,   588,   791,   590,   593,    80,
-   792,   596,   552,   619,    13,   633,   602,    15,   635,    75,
-   653,   802,   676,   310,   648,   689,  -310,   677,   788,   730,
-   -32,    16,   737,   738,   854,    36,   750,   857,   860,   739,
-   833,   869,   870,    86,   755,   864,    14,   756,   770,   623,
-   803,   809,   817,    22,    70,    70,   311,   206,    24,   818,
-   876,   -33,   821,    72,   824,   827,   627,   825,   880,   834,
-   828,   836,   829,   837,   791,   622,   275,   838,   792,   887,
-   842,   872,   850,   855,   863,   866,   865,   879,   789,   802,
-   492,   493,   878,    88,    75,   620,   263,   264,   310,   265,
-   266,   267,   268,    36,   839,   841,     5,    89,     7,    90,
-     5,   857,     7,   138,     9,    10,    11,   623,     9,    10,
-    11,    14,   263,   264,   881,   265,   266,   267,   268,   883,
-    13,   884,   788,   927,    13,   886,   895,   896,   911,   857,
-   206,   758,    80,   906,   882,   920,   915,    16,   919,   321,
-    77,    16,  -115,  -115,  -115,  -115,   923,   929,  -115,   932,
-  -115,  -115,  -115,   935,   946,    87,   938,   943,   947,    22,
-   506,   858,   450,    22,    24,   212,  -115,   727,    24,   637,
-   574,   848,   410,   714,   321,   504,  -124,  -124,  -124,  -124,
-  -124,  -124,  -124,  -115,  -124,  -124,  -124,  -124,  -124,   589,
+   139,   336,    32,    32,    63,    33,    33,    67,    68,    36,
+    36,    71,   433,    63,    74,    81,    53,    54,    55,    42,
+    42,   329,   326,    70,   210,    70,    94,    96,    98,   207,
+    86,   432,    72,   218,   409,   297,   362,   402,    80,   333,
+    88,   459,    32,   179,   298,    33,   399,    83,    85,    36,
+   227,   228,    87,   498,   457,   276,   230,   223,   282,    42,
+   462,   190,   188,   649,   528,   346,   313,   239,    70,   211,
+   348,   746,    70,   715,   234,   182,   141,   816,   271,   186,
+   624,   448,  -112,   330,    80,    92,   524,    59,    60,   555,
+   206,   449,    80,   401,   852,   229,   368,    50,   217,   145,
+   269,   744,    92,    92,    92,   183,   771,   861,   336,   353,
+   913,    59,    60,   195,   535,   536,   537,    -1,    59,    60,
+   283,   284,   285,   667,   538,   809,   184,   526,   527,    92,
+    -2,   293,   286,   141,   290,   146,    99,    92,   935,   812,
+   320,    14,  -476,    59,    60,   196,   197,   905,   326,   185,
+    16,    61,   853,   817,   218,   737,    62,   896,   292,   326,
+    59,    60,   281,  -112,   496,   326,   409,   546,   301,   302,
+   360,   305,   306,   311,   512,    61,   909,   315,   365,   912,
+    62,   914,    61,    59,    60,   906,   190,    62,    75,   922,
+   141,    56,   399,   346,   -35,   615,    80,   372,   348,   206,
+    80,    16,   376,   925,   377,   856,   455,    61,   937,   206,
+   453,   400,    62,   354,   456,    14,   310,    14,   406,   217,
+   218,   946,    93,    57,    61,   773,   373,   180,   777,    62,
+   484,    58,    59,    60,    16,    76,   763,   765,   349,    95,
+   141,   926,    14,    82,    77,   605,   938,    61,   181,   144,
+   697,   414,    62,   396,   397,    92,   141,   196,   197,   273,
+   -34,   141,    97,   141,   219,   691,    92,    16,   274,   275,
+   222,   706,   707,   600,   312,   542,   224,    75,   200,   714,
+   543,   461,   872,   535,   536,   537,    14,   421,   291,   570,
+   411,   570,   226,   607,   321,   412,    61,  -115,  -115,  -115,
+  -115,    62,    70,  -115,    14,  -115,  -115,  -115,   480,   423,
+   141,   236,   469,   311,   471,   196,   197,   315,   337,   338,
+    89,  -115,    90,   490,   201,    36,    75,   200,   237,   693,
+   310,   407,   408,   202,   238,   454,   206,   661,  -115,   206,
+   206,   584,   240,   880,   553,   354,   203,   195,   497,   554,
+  -175,   502,   218,    14,   763,   269,  -175,   241,   634,   591,
+  -115,   465,   677,   467,   592,  -115,   349,   281,   141,   297,
+   272,   684,   187,   201,   749,  -115,   146,    92,   298,   241,
+   519,     5,   202,     7,   280,   402,   260,   261,   262,     9,
+    10,    11,   535,   536,   537,   203,   719,  -175,   273,   303,
+   286,  -175,   698,   662,   944,    13,   270,   274,   275,   945,
+   766,    36,    51,    52,   279,   729,   510,   757,   734,   511,
+   337,   338,    16,    36,    75,    70,    36,   530,   310,   191,
+   531,   299,   523,   192,    36,    86,   331,   196,   197,   141,
+   332,   704,   529,   309,    22,    88,   681,   711,   560,    24,
+   141,    14,   548,   549,  -280,  -280,   705,    87,   677,    75,
+   542,   354,   339,   626,   629,   543,   192,   496,   407,   408,
+   561,   627,   570,   719,   496,    75,   200,   316,    59,    60,
+   622,   275,   662,   551,   735,   726,    14,   552,   342,   727,
+   458,   343,    75,   200,   753,   594,   358,   464,   754,   535,
+   536,   537,    14,   769,   359,   470,   627,   332,    86,   755,
+   699,  -278,  -278,   610,   510,   622,   275,   511,    88,    14,
+   351,    36,   201,    59,    60,   597,   360,   723,    86,   363,
+    87,   202,   625,   628,   420,   374,    80,   857,    88,   201,
+   799,   -85,    61,   415,   203,   611,   612,    62,   202,   418,
+    87,   210,   413,   446,   728,   623,    80,   617,   618,    36,
+   416,   203,   281,   700,   700,   770,   654,   892,   894,   192,
+   838,   332,   192,   424,   636,   638,  -474,   716,   428,   639,
+   799,   686,   218,   429,   822,   695,   696,    61,   195,   601,
+   690,   102,    62,   603,   445,   724,   610,   706,   707,     5,
+     6,     7,     8,   446,   623,   452,   190,     9,    10,    11,
+   243,   245,   907,   530,   908,   463,   531,   466,   206,    80,
+    36,   472,   610,    13,   206,   206,    75,   620,   529,    80,
+   310,    75,   620,   940,    75,   141,   645,    36,   310,   647,
+    16,   948,   476,   206,   473,    80,   478,   482,   483,   486,
+   768,   487,   488,    14,   489,   738,   206,   491,    14,   218,
+   494,    14,    22,   214,   215,   503,   495,    24,   336,     9,
+    10,    11,    92,   764,   499,   507,   521,   525,   764,   545,
+   795,    76,    77,   799,   547,   564,   375,    77,   311,   315,
+    77,   378,   379,   550,   565,   311,   384,   385,   386,   387,
+   388,   389,   390,   391,   392,   393,   394,   395,   700,   567,
+   572,   623,   623,   195,   573,   775,  -175,   326,    80,   326,
+   795,   576,  -175,   928,   929,   794,   650,   651,    75,   620,
+   652,   837,   310,   578,   588,   590,   593,   797,   686,   596,
+   798,    75,   620,   602,    36,   196,   197,   552,   619,   718,
+   214,   215,   633,   271,   808,    14,     9,    10,    11,   635,
+   648,   623,   653,  -175,   679,   794,   680,  -175,    14,   206,
+   859,   692,  -314,   862,   865,   621,   733,   839,   708,   709,
+   710,   869,   712,   713,   622,   275,   875,   741,   621,   -32,
+   740,   874,    70,    70,   742,    86,   881,   622,   275,   756,
+    72,   761,   762,   884,   815,    88,   311,   725,   797,   776,
+   823,   798,   845,   847,   891,    36,   -33,    87,   258,   259,
+   260,   261,   262,   795,   824,   808,   827,   492,   493,   623,
+   830,   877,   831,   833,   834,   213,   214,   215,   835,   750,
+   751,   752,     9,    10,    11,   862,   840,   842,     5,     6,
+     7,     8,   206,   843,    80,   855,     9,    10,    11,   844,
+    14,   848,   860,   868,   870,   871,   883,   931,   794,   885,
+   882,   887,    13,   862,    14,   888,   915,   890,   774,   910,
+   321,   899,  -124,  -124,  -124,  -124,  -124,  -124,  -124,    16,
+  -124,  -124,  -124,  -124,  -124,   900,  -124,  -124,  -124,  -124,
   -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,  -124,
-  -124,  -124,  -124,  -124,  -124,  -115,  -124,  -124,   718,   577,
-  -115,   468,   571,  -124,   475,   719,  -124,   728,  -124,   575,
-  -115,  -124,  -124,  -124,   664,   733,   928,  -124,  -124,   930,
-   893,   894,  -124,  -124,   500,   517,   632,  -124,    73,  -124,
-  -124,   518,   616,   700,  -124,  -124,   815,   422,  -124,   813,
-  -124,  -124,  -124,  -124,   614,  -124,   599,   679,   807,   508,
-   643,   253,   254,   255,   256,   257,   258,   259,   260,   261,
-   262,   656,   485,  -331,  -331,  -331,  -331,  -331,  -331,  -331,
-   670,  -331,  -331,  -331,  -331,  -331,   741,  -331,  -331,  -331,
-  -331,  -331,  -331,  -331,  -331,  -331,  -331,  -331,  -331,  -331,
-  -331,  -331,     0,  -331,  -331,   595,     0,   509,     0,     0,
-  -331,     0,     0,  -331,     0,  -331,     0,     0,  -331,  -331,
-  -331,     0,     0,     0,  -331,  -331,     0,     0,     0,  -331,
-  -331,     0,     0,     0,  -331,     0,  -331,  -331,     0,     0,
-     0,  -331,  -331,     0,   643,  -331,     0,  -331,     0,  -331,
-  -331,   321,  -331,  -331,  -331,     0,     0,     0,  -331,  -331,
-     0,  -331,     0,     0,     0,  -331,     0,  -331,  -331,  -331,
-  -331,  -331,  -331,  -331,  -331,  -331,  -331,  -331,   742,  -331,
-     0,  -331,     0,  -331,  -331,     0,     0,     0,     0,     0,
-  -331,     0,     0,  -331,   754,     0,     0,     0,  -331,  -331,
-  -331,     0,     0,     0,  -331,  -331,     0,     0,     0,  -331,
-  -331,     0,     0,     0,  -331,   670,  -331,  -331,   766,     0,
-     0,  -331,  -331,     0,     0,  -331,     0,  -331,  -306,  -331,
-  -331,     0,  -331,     0,   670,     0,   321,   670,     0,  -331,
-  -331,  -331,  -331,     0,     0,     0,     0,  -331,  -331,  -331,
-     0,     0,     0,   814,   254,   255,   256,   257,   258,   259,
-   260,   261,   262,  -331,     0,   820,     0,   843,     0,  -331,
-  -331,     0,     0,     0,  -331,  -331,   826,  -331,     0,     0,
-  -331,  -331,     0,  -331,  -331,  -331,  -331,  -331,  -331,  -331,
-  -331,  -331,  -331,  -331,     0,  -331,     0,  -331,     0,  -331,
-  -331,     0,  -331,   670,     0,     0,  -331,  -331,     0,  -331,
-     0,     0,     0,     0,  -331,  -331,  -331,  -111,     0,     0,
-  -331,  -331,     0,     0,     0,  -331,  -331,     0,     0,     0,
-  -331,     0,  -331,  -331,     0,     0,     0,  -331,  -331,     0,
-     0,  -331,     0,  -331,     0,  -331,  -331,   670,  -331,     0,
-   873,     0,  -341,  -341,     0,     0,     0,  -341,  -341,   885,
-  -341,     0,     0,     0,  -341,     0,  -341,  -341,  -341,  -341,
-  -341,  -341,  -341,  -341,  -341,  -341,  -341,     0,  -341,     0,
-  -341,     0,  -341,  -341,     0,     0,     0,     0,     0,  -341,
-     0,     0,  -341,     0,     0,     0,     0,  -341,  -341,  -341,
-     0,     0,     0,  -341,  -341,     0,     0,     0,  -341,  -341,
-     0,     0,     0,  -341,     0,  -341,  -341,     0,     0,     0,
-  -341,  -341,     0,     0,  -341,     0,  -341,     0,  -341,  -341,
-   231,  -341,   100,     5,     0,     7,   138,   101,   102,     0,
-   103,     9,    10,    11,   250,   251,   252,   253,   254,   255,
-   256,   257,   258,   259,   260,   261,   262,    13,   104,     0,
-    15,     0,   105,   106,     0,     0,     0,     0,     0,   107,
-     0,     0,   108,     0,    16,     0,     0,   109,   110,   111,
-     0,     0,     0,   112,   113,     0,     0,     0,   114,   115,
-     0,     0,     0,   116,     0,   117,    22,     0,     0,     0,
-   118,    24,     0,     0,   119,     0,     0,     0,   120,   121,
-   665,   -94,   666,    60,     0,     0,     0,   101,   102,   248,
-   103,   249,   250,   251,   252,   253,   254,   255,   256,   257,
-   258,   259,   260,   261,   262,     0,     0,     0,   104,     0,
-    15,     0,   105,   106,     0,     0,     0,     0,     0,   107,
-     0,     0,   108,     0,     0,     0,     0,   109,   110,   111,
-     0,     0,     0,   112,   113,     0,     0,   667,   114,   115,
-     0,     0,     0,   116,     0,   117,    61,     0,     0,     0,
-   118,    62,     0,     0,   119,     0,     0,  -203,   120,   121,
-   665,   668,   666,    60,     0,     0,     0,   101,   102,     0,
-   103,   251,   252,   253,   254,   255,   256,   257,   258,   259,
-   260,   261,   262,     0,     0,     0,     0,     0,   104,     0,
-    15,     0,   105,   106,     0,     0,     0,     0,     0,   107,
-     0,     0,   108,     0,     0,     0,     0,   109,   110,   111,
-     0,     0,     0,   112,   113,     0,     0,   667,   114,   115,
-     0,     0,     0,   116,     0,   117,    61,     0,     0,     0,
-   118,    62,     0,     0,   119,     0,     0,  -264,   120,   121,
-   665,   668,   666,    60,     0,     0,     0,   101,   102,     0,
-   103,   252,   253,   254,   255,   256,   257,   258,   259,   260,
-   261,   262,     0,     0,     0,     0,     0,     0,   104,     0,
-    15,     0,   105,   106,     0,     0,     0,     0,     0,   107,
-     0,     0,   108,     0,     0,     0,     0,   109,   110,   111,
-     0,     0,     0,   112,   113,     0,     0,   667,   114,   115,
-     0,     0,     0,   116,     0,   117,    61,     0,     0,     0,
-   118,    62,     0,     0,   119,   641,     0,   100,   120,   121,
-     0,   668,   101,   102,     0,   103,   344,     0,     0,     5,
-     0,     7,   138,     0,     0,     0,     0,     9,    10,    11,
-     0,     0,     0,   104,     0,    15,     0,   105,   106,     0,
-     0,     0,     0,    13,   107,     0,    15,   108,     0,     0,
-     0,     0,   109,   110,   111,     0,     0,     0,   112,   113,
-    16,     0,     0,   114,   115,     0,     0,     0,   116,     0,
-   117,     0,     0,     0,     0,   118,     0,     0,     0,   119,
-     0,     0,    22,   120,   121,   194,   642,    24,   -28,   -28,
-   -28,   -28,   345,  -267,     0,     0,   -28,   -28,   -28,     0,
-     0,     0,     0,     0,   340,     0,     0,   -24,   -24,   -24,
-   -24,   195,   -28,     0,  -175,   -24,   -24,   -24,     0,     0,
-  -175,   255,   256,   257,   258,   259,   260,   261,   262,   -28,
-   195,   -24,     0,  -175,     0,     0,     0,     0,     0,  -175,
-     0,     0,     0,   196,   197,     0,     0,     0,   -24,     0,
-     0,   -28,     0,     0,     0,     0,   -28,     0,     0,     0,
-     0,  -175,   196,   197,     0,  -175,   -28,     0,     0,     0,
-   -24,     0,     0,     0,     0,   -24,     0,     0,     0,     0,
-  -175,     0,     0,   334,  -175,   -24,   -20,   -20,   -20,   -20,
-     0,     0,     0,     0,   -20,   -20,   -20,     0,     0,     0,
-     0,     0,   321,     0,     0,     5,     6,     7,     8,   195,
-   -20,     0,  -175,     9,    10,    11,     0,     0,  -175,   256,
-   257,   258,   259,   260,   261,   262,     0,   -20,     0,    13,
-     0,    14,     0,     5,     0,     7,   280,     0,     0,     0,
-     0,     9,    10,    11,     0,     0,    16,     0,     0,   -20,
-     0,     0,     0,     0,   -20,     0,     0,    13,     0,  -175,
-     0,     0,     0,  -175,   -20,     0,   321,     0,    22,  -494,
-  -494,  -494,  -494,    24,    16,     0,     0,  -494,  -494,  -494,
-     0,     0,     0,  -492,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,  -494,   100,  -494,    22,     0,     0,   101,
-   102,    24,   103,     0,     0,     0,  -276,  -276,     0,     0,
-  -494,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-   104,     0,    15,     0,   105,   106,     0,     0,     0,     0,
-     0,   107,  -494,     0,   108,     0,     0,  -494,     0,   109,
-   110,   111,     0,     0,     0,   112,   113,  -494,     0,     0,
-   114,   115,     0,   100,     0,   116,     0,   117,   101,   102,
-     0,   103,   118,     0,     0,     0,   119,     0,     0,     0,
-   120,   121,     0,     0,   319,     0,     0,     0,     0,   104,
+  -124,    22,  -124,  -124,   919,   923,    24,   574,   924,  -124,
+   933,    84,  -124,   927,  -124,   936,   825,  -124,  -124,  -124,
+   939,   950,   942,  -124,  -124,   947,   589,   951,  -124,  -124,
+   506,   854,   863,  -124,   450,  -124,  -124,   730,   212,   717,
+  -124,  -124,   721,   410,  -124,   504,  -124,  -124,  -124,  -124,
+   811,  -124,   745,   475,   263,   264,   571,   265,   266,   267,
+   268,   656,   731,  -335,  -335,  -335,  -335,  -335,  -335,  -335,
+   858,  -335,  -335,  -335,  -335,  -335,   886,  -335,  -335,  -335,
+  -335,  -335,  -335,  -335,  -335,  -335,  -335,  -335,  -335,  -335,
+  -335,  -335,   468,  -335,  -335,   577,   722,   643,   575,   736,
+  -335,   897,   664,  -335,   898,  -335,   934,   932,  -335,  -335,
+  -335,   517,   500,   518,  -335,  -335,   632,   670,    73,  -335,
+  -335,   616,   703,   821,  -335,   422,  -335,  -335,   819,   599,
+   614,  -335,  -335,   595,   813,  -335,   747,  -335,   682,  -335,
+  -335,   485,  -335,   321,   508,  -335,  -335,   509,     0,     0,
+  -335,  -335,     0,  -335,     0,     0,     0,  -335,     0,  -335,
+  -335,  -335,  -335,  -335,  -335,  -335,  -335,  -335,  -335,  -335,
+     0,  -335,     0,  -335,     0,  -335,  -335,     0,     0,     0,
+     0,   643,  -335,   263,   264,  -335,   265,   266,   267,   268,
+  -335,  -335,  -335,     0,     0,     0,  -335,  -335,     0,     0,
+     0,  -335,  -335,     0,     0,     0,  -335,     0,  -335,  -335,
+   866,   670,     0,  -335,  -335,     0,     0,  -335,   748,  -335,
+  -310,  -335,  -335,     0,  -335,   254,   255,   256,   257,   258,
+   259,   260,   261,   262,   760,   246,   247,   248,   867,   249,
+   250,   251,   252,   253,   254,   255,   256,   257,   258,   259,
+   260,   261,   262,     0,     0,   670,     0,   248,   772,   249,
+   250,   251,   252,   253,   254,   255,   256,   257,   258,   259,
+   260,   261,   262,     0,   670,     0,     0,   670,     0,   670,
+     0,   849,     0,  -335,  -335,     0,     0,     0,  -335,  -335,
+     0,  -335,     0,     0,     0,  -335,   820,  -335,  -335,  -335,
+  -335,  -335,  -335,  -335,  -335,  -335,  -335,  -335,   826,  -335,
+     0,  -335,     0,  -335,  -335,     0,     0,     0,     0,   832,
+  -335,     0,     0,  -335,     0,     0,     0,     0,  -335,  -335,
+  -335,     0,     0,     0,  -335,  -335,     0,     0,     0,  -335,
+  -335,     0,     0,     0,  -335,   670,  -335,  -335,     0,     0,
+     0,  -335,  -335,     0,     0,  -335,     0,  -335,     0,  -335,
+  -335,   878,  -335,  -345,  -345,     0,     0,     0,  -345,  -345,
+     0,  -345,     0,     0,     0,  -345,     0,  -345,  -345,  -345,
+  -345,  -345,  -345,  -345,  -345,  -345,  -345,  -345,     0,  -345,
+     0,  -345,     0,  -345,  -345,     0,     0,     0,     0,     0,
+  -345,   889,     0,  -345,     0,     0,     0,     0,  -345,  -345,
+  -345,     0,     0,     0,  -345,  -345,     0,     0,     0,  -345,
+  -345,     0,     0,     0,  -345,     0,  -345,  -345,     0,     0,
+     0,  -345,  -345,     0,     0,  -345,     0,  -345,     0,  -345,
+  -345,   231,  -345,   100,     5,     0,     7,   138,   101,   102,
+     0,   103,     9,    10,    11,   250,   251,   252,   253,   254,
+   255,   256,   257,   258,   259,   260,   261,   262,    13,   104,
      0,    15,     0,   105,   106,     0,     0,     0,     0,     0,
-   107,     0,     0,   108,     0,     0,     0,     0,   109,   110,
+   107,     0,     0,   108,     0,    16,     0,     0,   109,   110,
    111,     0,     0,     0,   112,   113,     0,     0,     0,   114,
-   115,     0,   100,     0,   116,     0,   117,   101,   102,     0,
-   103,   118,     0,     0,     0,   119,     0,     0,     0,   120,
-   121,     0,     0,   405,     0,     0,     0,     0,   104,     0,
-    15,     0,   105,   106,     0,     0,     0,     0,     0,   107,
-     0,     0,   108,     0,     0,     0,     0,   109,   110,   111,
-     0,     0,     0,   112,   113,     0,     0,     0,   114,   115,
-     0,   100,     0,   116,     0,   117,   101,   102,     0,   103,
-   118,     0,     0,     0,   119,     0,     0,     0,   120,   121,
-     0,     0,   460,     0,     0,     0,     0,   104,     0,    15,
+   115,     0,     0,     0,   116,     0,   117,    22,     0,     0,
+     0,   118,    24,     0,     0,   119,     0,     0,     0,   120,
+   121,   665,   -94,   666,    60,     0,     0,     0,   101,   102,
+     0,   103,   251,   252,   253,   254,   255,   256,   257,   258,
+   259,   260,   261,   262,     0,     0,     0,     0,     0,   104,
+     0,    15,     0,   105,   106,     0,     0,     0,     0,     0,
+   107,     0,     0,   108,     0,     0,     0,     0,   109,   110,
+   111,     0,     0,     0,   112,   113,     0,     0,   667,   114,
+   115,     0,     0,     0,   116,     0,   117,    61,     0,     0,
+     0,   118,    62,     0,     0,   119,     0,     0,  -203,   120,
+   121,   665,   668,   666,    60,     0,     0,     0,   101,   102,
+     0,   103,   252,   253,   254,   255,   256,   257,   258,   259,
+   260,   261,   262,     0,     0,     0,     0,     0,     0,   104,
+     0,    15,     0,   105,   106,     0,     0,     0,     0,     0,
+   107,     0,     0,   108,     0,     0,     0,     0,   109,   110,
+   111,     0,     0,     0,   112,   113,     0,     0,   667,   114,
+   115,     0,     0,     0,   116,     0,   117,    61,     0,     0,
+     0,   118,    62,     0,     0,   119,     0,     0,  -268,   120,
+   121,   665,   668,   100,     0,     0,     0,     0,   101,   102,
+     0,   103,   253,   254,   255,   256,   257,   258,   259,   260,
+   261,   262,   256,   257,   258,   259,   260,   261,   262,   104,
+     0,    15,     0,   105,   106,     0,  -216,     0,     0,     0,
+   107,     0,     0,   108,     0,     0,     0,     0,   109,   110,
+   111,     0,     0,     0,   112,   113,     0,     0,  -216,   114,
+   115,     0,     0,     0,   116,     0,   117,     0,     0,     0,
+     0,   118,     0,     0,     0,   119,   641,     0,   100,   120,
+   121,     0,   668,   101,   102,     0,   103,   255,   256,   257,
+   258,   259,   260,   261,   262,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,   104,     0,    15,     0,   105,   106,
+     0,     0,     0,     0,     0,   107,     0,     0,   108,     0,
+     0,     0,     0,   109,   110,   111,     0,     0,     0,   112,
+   113,     0,     0,     0,   114,   115,     0,     0,     0,   116,
+     0,   117,     0,     0,     0,     0,   118,     0,     0,     0,
+   119,   665,     0,   100,   120,   121,     0,   642,   101,   102,
+     0,   103,   344,     0,     0,     5,     0,     7,   138,     0,
+     0,     0,     0,     9,    10,    11,     0,     0,     0,   104,
+     0,    15,     0,   105,   106,     0,     0,     0,     0,    13,
+   107,     0,    15,   108,     0,     0,     0,     0,   109,   110,
+   111,     0,     0,     0,   112,   113,    16,     0,     0,   114,
+   115,     0,     0,     0,   116,     0,   117,     0,     0,     0,
+     0,   118,     0,     0,     0,   119,     0,     0,    22,   120,
+   121,   194,   668,    24,   -28,   -28,   -28,   -28,   345,  -271,
+     0,     0,   -28,   -28,   -28,     0,     0,     0,     0,     0,
+   340,     0,     0,   -24,   -24,   -24,   -24,   195,   -28,     0,
+  -175,   -24,   -24,   -24,     0,     0,  -175,     0,     0,     0,
+     0,     0,     0,     0,     0,   -28,   195,   -24,     0,  -175,
+     0,     0,     0,     0,     0,  -175,     0,     0,     0,   196,
+   197,     0,     0,     0,   -24,     0,     0,   -28,     0,     0,
+     0,     0,   -28,     0,     0,     0,     0,  -175,   196,   197,
+     0,  -175,   -28,     0,     0,     0,   -24,     0,     0,     0,
+     0,   -24,     0,     0,     0,     0,  -175,     0,     0,   334,
+  -175,   -24,   -20,   -20,   -20,   -20,     0,     0,     0,     0,
+   -20,   -20,   -20,     0,     0,     0,     0,     0,   321,     0,
+     0,     5,     6,     7,     8,   195,   -20,     0,  -175,     9,
+    10,    11,     0,     0,  -175,     0,     0,     0,     0,     0,
+     0,     0,     0,   -20,     0,    13,   321,    14,     0,  -335,
+  -335,  -335,  -335,     0,     0,     0,     0,  -335,  -335,  -335,
+     0,     0,    16,     0,     0,   -20,     0,     0,     0,     0,
+   -20,     0,     0,  -335,     0,  -175,     0,     0,     0,  -175,
+   -20,     0,   321,     0,    22,  -498,  -498,  -498,  -498,    24,
+  -335,     0,     0,  -498,  -498,  -498,     0,     0,     0,  -496,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,  -498,
+   100,  -498,  -335,     0,     0,   101,   102,  -335,   103,     0,
+     0,     0,     0,     0,     0,     0,  -498,  -111,     0,     0,
+     0,     0,     0,     0,     0,     0,   104,     0,    15,     0,
+   105,   106,     0,     0,     0,     0,     0,   107,  -498,     0,
+   108,     0,     0,  -498,     0,   109,   110,   111,     0,     0,
+     0,   112,   113,  -498,     0,     0,   114,   115,     0,   100,
+     0,   116,     0,   117,   101,   102,     0,   103,   118,     0,
+     0,     0,   119,     0,     0,     0,   120,   121,     0,     0,
+   319,     0,     0,     0,     0,   104,     0,    15,     0,   105,
+   106,     0,     0,     0,     0,     0,   107,     0,     0,   108,
+     0,     0,     0,     0,   109,   110,   111,     0,     0,     0,
+   112,   113,     0,     0,     0,   114,   115,     0,   100,     0,
+   116,     0,   117,   101,   102,     0,   103,   118,     0,     0,
+     0,   119,     0,     0,     0,   120,   121,     0,     0,   405,
+     0,     0,     0,     0,   104,     0,    15,     0,   105,   106,
+     0,     0,     0,     0,     0,   107,     0,     0,   108,     0,
+     0,     0,     0,   109,   110,   111,     0,     0,     0,   112,
+   113,     0,     0,     0,   114,   115,     0,   100,     0,   116,
+     0,   117,   101,   102,     0,   103,   118,     0,     0,     0,
+   119,     0,     0,     0,   120,   121,     0,     0,   460,     0,
+     0,     0,     0,   104,     0,    15,     0,   105,   106,     0,
+     0,     0,     0,     0,   107,     0,     0,   108,     0,     0,
+     0,     0,   109,   110,   111,     0,     0,     0,   112,   113,
+     0,     0,     0,   114,   115,     0,   100,     0,   116,     0,
+   117,   101,   102,     0,   103,   118,     0,     0,     0,   119,
+     0,     0,     0,   120,   121,     0,     0,   501,     0,     0,
+     0,     0,   104,     0,    15,     0,   105,   106,     0,     0,
+     0,     0,     0,   107,     0,     0,   108,     0,     0,     0,
+     0,   109,   110,   111,     0,     0,     0,   112,   113,     0,
+     0,     0,   114,   115,     0,     0,     0,   116,     0,   117,
+     0,     0,     0,     0,   118,     0,     0,     0,   119,     0,
+     0,     0,   120,   121,     0,     0,   767,   666,   778,     6,
+     7,     8,   101,   102,     0,   103,     9,    10,    11,   779,
+     0,   780,   781,   782,   783,   784,   785,   786,   787,   788,
+   789,   790,    13,   104,    14,    15,     0,   105,   106,     0,
+     0,     0,     0,     0,   107,     0,     0,   108,     0,    16,
+     0,     0,   109,   110,   111,     0,     0,     0,   112,   113,
+     0,     0,     0,   114,   115,     0,     0,     0,   116,     0,
+   117,   791,     0,     0,     0,   118,   792,     0,     0,   119,
+     0,   793,     0,   120,   121,     0,   360,   666,    60,     0,
+     0,     0,   101,   102,     0,   103,     0,     0,     0,   779,
+     0,   780,   781,   782,   783,   784,   785,   786,   787,   788,
+   789,   790,     0,   104,     0,    15,     0,   105,   106,     0,
+     0,     0,     0,     0,   107,     0,     0,   108,     0,     0,
+     0,     0,   109,   110,   111,     0,     0,     0,   112,   113,
+     0,   100,     0,   114,   115,     0,   101,   102,   116,   103,
+   117,    61,     0,     0,     0,   118,    62,     0,     0,   119,
+     0,   793,     0,   120,   121,     0,   360,   104,     0,    15,
      0,   105,   106,     0,     0,     0,     0,     0,   107,     0,
      0,   108,     0,     0,     0,     0,   109,   110,   111,     0,
      0,     0,   112,   113,     0,     0,     0,   114,   115,     0,
-   100,     0,   116,     0,   117,   101,   102,     0,   103,   118,
+     0,     0,   116,     0,   117,     0,     0,     0,     0,   118,
      0,     0,     0,   119,     0,     0,     0,   120,   121,     0,
-     0,   501,     0,     0,     0,     0,   104,     0,    15,     0,
-   105,   106,     0,     0,     0,     0,     0,   107,     0,     0,
-   108,     0,     0,     0,     0,   109,   110,   111,     0,     0,
-     0,   112,   113,     0,     0,     0,   114,   115,     0,     0,
-     0,   116,     0,   117,     0,     0,     0,     0,   118,     0,
-     0,     0,   119,     0,     0,     0,   120,   121,     0,     0,
-   761,   666,   772,     6,     7,     8,   101,   102,     0,   103,
-     9,    10,    11,   773,     0,   774,   775,   776,   777,   778,
-   779,   780,   781,   782,   783,   784,    13,   104,    14,    15,
-     0,   105,   106,     0,     0,     0,     0,     0,   107,     0,
-     0,   108,     0,    16,     0,     0,   109,   110,   111,     0,
-     0,     0,   112,   113,     0,     0,     0,   114,   115,     0,
-     0,     0,   116,     0,   117,   785,     0,     0,     0,   118,
-   786,     0,     0,   119,     0,   787,     0,   120,   121,     0,
-   360,   666,    60,     0,     0,     0,   101,   102,     0,   103,
-     0,     0,     0,   773,     0,   774,   775,   776,   777,   778,
-   779,   780,   781,   782,   783,   784,     0,   104,     0,    15,
+   479,   147,   148,     0,   149,   150,     0,     0,     0,   151,
+   152,   153,   154,   155,   156,   157,   158,   159,   160,   161,
+   162,   163,   164,   165,   166,   167,   168,   169,     0,   100,
+     5,     6,     7,     8,   101,   102,   170,   103,     9,    10,
+    11,     5,     6,     7,     8,     0,     0,     0,     0,     9,
+    10,    11,     0,     0,    13,   104,    14,    15,     0,   105,
+   106,     0,     0,     0,     0,    13,   107,    14,     0,   108,
+   172,    16,     0,     0,   109,   110,   111,     0,     0,   295,
+   112,   113,    16,     0,     0,   114,   115,     0,     0,     0,
+   116,     0,   117,    22,     0,     0,     0,   118,    24,     0,
+     0,   119,     0,     0,    22,   120,   121,   100,     5,    24,
+     7,   138,   101,   102,   598,   103,     9,    10,    11,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,    13,   104,     0,    15,     0,   105,   106,     0,
+     0,     0,     0,     0,   107,     0,     0,   108,     0,    16,
+     0,     0,   109,   110,   111,     0,     0,     0,   112,   113,
+     0,   100,     0,   114,   115,     0,   101,   102,   116,   103,
+   117,    22,     0,     0,     0,   118,    24,     0,     0,   119,
+     0,     0,     0,   120,   121,     0,     0,   104,     0,    15,
      0,   105,   106,     0,     0,     0,     0,     0,   107,     0,
      0,   108,     0,     0,     0,     0,   109,   110,   111,     0,
      0,     0,   112,   113,     0,   100,     0,   114,   115,     0,
-   101,   102,   116,   103,   117,    61,     0,     0,     0,   118,
-    62,     0,     0,   119,     0,   787,     0,   120,   121,     0,
-   360,   104,     0,    15,     0,   105,   106,     0,     0,     0,
-     0,     0,   107,     0,     0,   108,     0,     0,     0,     0,
-   109,   110,   111,     0,     0,     0,   112,   113,     0,     0,
-     0,   114,   115,     0,     0,     0,   116,     0,   117,     0,
-     0,     0,     0,   118,     0,     0,     0,   119,     0,     0,
-     0,   120,   121,     0,   479,   147,   148,     0,   149,   150,
-     0,     0,     0,   151,   152,   153,   154,   155,   156,   157,
-   158,   159,   160,   161,   162,   163,   164,   165,   166,   167,
-   168,   169,     0,   100,     5,     6,     7,     8,   101,   102,
-   170,   103,     9,    10,    11,     5,     6,     7,     8,     0,
-     0,     0,     0,     9,    10,    11,     0,     0,    13,   104,
-    14,    15,     0,   105,   106,     0,     0,     0,     0,    13,
-   107,    14,     0,   108,   172,    16,     0,     0,   109,   110,
-   111,     0,     0,   295,   112,   113,    16,     0,     0,   114,
-   115,     0,     0,     0,   116,     0,   117,    22,     0,     0,
-     0,   118,    24,     0,     0,   119,     0,     0,    22,   120,
-   121,   100,     5,    24,     7,   138,   101,   102,    84,   103,
-     9,    10,    11,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,    13,   104,     0,    15,
-     0,   105,   106,     0,     0,     0,     0,     0,   107,     0,
-     0,   108,     0,    16,     0,     0,   109,   110,   111,     0,
-     0,     0,   112,   113,     0,   100,     0,   114,   115,     0,
-   101,   102,   116,   103,   117,    22,     0,     0,     0,   118,
-    24,     0,     0,   119,     0,     0,     0,   120,   121,     0,
+   101,   102,   116,   103,   117,   364,     0,     0,     0,   118,
+     0,     0,     0,   119,     0,     0,     0,   120,   121,     0,
      0,   104,     0,    15,     0,   105,   106,     0,     0,     0,
      0,     0,   107,     0,     0,   108,     0,     0,     0,     0,
    109,   110,   111,     0,     0,     0,   112,   113,     0,   100,
-     0,   114,   115,     0,   101,   102,   116,   103,   117,   364,
-     0,     0,     0,   118,     0,     0,     0,   119,     0,     0,
+     0,   114,   115,     0,   101,   102,   116,   103,   117,     0,
+     0,     0,     0,   118,     0,     0,     0,   119,     0,   836,
      0,   120,   121,     0,     0,   104,     0,    15,     0,   105,
    106,     0,     0,     0,     0,     0,   107,     0,     0,   108,
      0,     0,     0,     0,   109,   110,   111,     0,     0,     0,
    112,   113,     0,   100,     0,   114,   115,     0,   101,   102,
    116,   103,   117,     0,     0,     0,     0,   118,     0,     0,
-     0,   119,     0,   830,     0,   120,   121,     0,     0,   104,
+     0,   119,     0,     0,     0,   120,   121,     0,     0,   104,
      0,    15,     0,   105,   106,     0,     0,     0,     0,     0,
    107,     0,     0,   108,     0,     0,     0,     0,   109,   110,
-   111,     0,     0,     0,   112,   113,     0,   100,     0,   114,
+   111,     0,     0,     0,   112,   113,     0,   100,     0,   242,
    115,     0,   101,   102,   116,   103,   117,     0,     0,     0,
      0,   118,     0,     0,     0,   119,     0,     0,     0,   120,
    121,     0,     0,   104,     0,    15,     0,   105,   106,     0,
      0,     0,     0,     0,   107,     0,     0,   108,     0,     0,
      0,     0,   109,   110,   111,     0,     0,     0,   112,   113,
-     0,   100,     0,   242,   115,     0,   101,   102,   116,   103,
+     0,   505,     0,   244,   115,     0,   101,   102,   116,   103,
    117,     0,     0,     0,     0,   118,     0,     0,     0,   119,
      0,     0,     0,   120,   121,     0,     0,   104,     0,    15,
      0,   105,   106,     0,     0,     0,     0,     0,   107,     0,
      0,   108,     0,     0,     0,     0,   109,   110,   111,     0,
-     0,     0,   112,   113,     0,   505,     0,   244,   115,     0,
-   101,   102,   116,   103,   117,     0,     0,     0,     0,   118,
-     0,     0,     0,   119,     0,     0,     0,   120,   121,     0,
-     0,   104,     0,    15,     0,   105,   106,     0,     0,     0,
-     0,     0,   107,     0,     0,   108,     0,     0,     0,     0,
-   109,   110,   111,     0,     0,     0,   112,   113,     0,     0,
-     0,   114,   115,     0,     0,     0,   116,     0,   117,     0,
-     0,     0,     0,   118,     0,     0,     0,   119,     0,     0,
-   540,   120,   121,     5,     0,     7,   138,     0,     0,     0,
-     0,     9,    10,    11,     0,     0,     0,     0,   540,     0,
-     0,     5,     0,     7,   138,     0,     0,    13,     0,     9,
-    10,    11,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,    16,    13,     0,     0,     0,     0,
-     0,     0,     4,     0,  -128,     5,     6,     7,     8,     0,
-     0,     0,    16,     9,    10,    11,    22,  -446,  -446,  -446,
-     0,    24,     0,     0,     0,     0,   541,  -446,    12,    13,
-     0,    14,    15,     0,    22,  -445,  -445,  -445,     0,    24,
-     0,     0,     0,     0,   541,  -445,    16,     0,     0,    17,
-    18,  -128,     0,     0,     0,     0,     0,     0,     0,     0,
-  -128,     0,    19,    20,    21,     0,     0,     0,    22,     0,
-     0,     0,    23,    24,    25,    26,     0,     4,    27,  -128,
-     5,     6,     7,     8,     0,     0,     0,     0,     9,    10,
-    11,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,    13,     4,    14,  -128,     5,     6,
-     7,     8,     0,     0,     0,     0,     9,    10,    11,     0,
-     0,    16,     0,     0,   526,   527,  -128,     0,     0,     0,
-     0,     0,    13,     0,    14,  -128,     0,     0,     0,     0,
-     0,     0,     0,    22,     0,     0,     0,     0,    24,    16,
-     0,     0,     0,    27,  -128,   434,     0,   435,     5,     6,
-     7,     8,     0,  -128,   436,     0,     9,    10,    11,     0,
-     0,    22,     0,     0,   434,     0,    24,     5,     6,     7,
-     8,    27,    13,   436,    14,     9,    10,    11,     5,     6,
-     7,     8,     0,     0,     0,     0,     9,    10,    11,    16,
-     0,    13,     0,    14,     0,     0,     0,     5,     6,     7,
-     8,     0,    13,     0,    14,     9,    10,    11,    16,     0,
-     0,    22,     0,     0,     0,     0,    24,     0,     0,    16,
-  -391,    13,     0,    14,     0,     0,     0,     0,     0,     0,
-    22,     0,     0,     0,     0,    24,     0,     0,    16,  -391,
-     0,    22,     0,     0,     0,     0,    24,     0,     0,     0,
-     0,   598,     0,     0,     0,     0,     0,     0,     0,     0,
-    22,     0,     0,   147,   148,    24,   149,   150,     0,     0,
-   840,   151,   152,   153,   154,   155,   156,   157,   158,   159,
-   160,   161,   162,   163,   164,   165,   166,   167,   168,   169,
-     0,   147,   148,     0,   149,   150,     0,     0,   170,   151,
-   152,   153,   154,   155,   156,   157,   158,   159,   160,   161,
-   162,   163,   164,   165,   166,   167,   168,   169,     0,   171,
-     0,     0,     0,     0,     0,     0,   367,   147,   148,     0,
-   149,   150,   172,     0,     0,   151,   152,   153,   154,   155,
-   156,   157,   158,   159,   160,   161,   162,   163,   164,   165,
-   166,   167,   168,   169,     0,   147,   148,     0,   149,   150,
-   172,     0,   170,   151,   152,   153,   154,   155,   156,   157,
-   158,   159,   160,   161,   162,   163,   164,   165,   166,   167,
-   168,   169,     0,     0,     5,     0,     7,   280,     0,     0,
-   583,     0,     9,    10,    11,     0,   172,     5,     6,     7,
-     8,     0,     0,   436,     0,     9,    10,    11,    13,     5,
-     6,     7,     8,     0,     0,   631,     0,     9,    10,    11,
-     0,    13,     0,    14,   172,    16,     0,     0,     0,     0,
-   273,     0,     0,    13,     0,    14,     0,     0,    16,   274,
-   275,     0,     0,     0,     0,     0,     0,    22,     0,     0,
-    16,     0,    24,     0,     5,     6,     7,     8,     0,     0,
-    22,     0,     9,    10,    11,    24,     5,     6,     7,     8,
-     0,     0,    22,     0,     9,    10,    11,    24,    13,     5,
-    14,     7,   280,     0,     0,     0,     0,     9,    10,    11,
-    13,     0,     0,     0,     0,    16,     0,     0,     0,     0,
-     0,     0,     0,    13,     0,     0,     0,    16,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,    22,     0,     0,
-    16,     0,    24,   861,     0,     0,     0,     0,     0,    22,
-     0,     0,     0,     0,    24,     0,     0,     0,     0,     0,
-     0,     0,    22,     0,     0,     0,     0,    24,   246,   247,
-   248,   862,   249,   250,   251,   252,   253,   254,   255,   256,
-   257,   258,   259,   260,   261,   262,    14,     0,     0,     0,
-     0,   246,   247,   248,     0,   249,   250,   251,   252,   253,
+     0,     0,   112,   113,     0,     0,     0,   114,   115,     0,
+     0,     0,   116,     0,   117,     0,     0,     0,     0,   118,
+     0,     0,     0,   119,     0,     0,   540,   120,   121,     5,
+     0,     7,   138,     0,     0,     0,     0,     9,    10,    11,
+     0,     0,     0,     0,   540,     0,     0,     5,     0,     7,
+   138,     0,     0,    13,     0,     9,    10,    11,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+    16,    13,     0,     0,     0,     0,     0,     0,     4,     0,
+  -128,     5,     6,     7,     8,     0,     0,     0,    16,     9,
+    10,    11,    22,  -450,  -450,  -450,     0,    24,     0,     0,
+     0,     0,   541,  -450,    12,    13,     0,    14,    15,     0,
+    22,  -449,  -449,  -449,     0,    24,     0,     0,     0,     0,
+   541,  -449,    16,     0,     0,    17,    18,  -128,     0,     0,
+     0,     0,     0,     0,     0,     0,  -128,     0,    19,    20,
+    21,     0,     0,     0,    22,     0,     0,     0,    23,    24,
+    25,    26,     0,     4,    27,  -128,     5,     6,     7,     8,
+     0,     0,     0,     0,     9,    10,    11,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+    13,     4,    14,  -128,     5,     6,     7,     8,     0,     0,
+     0,     0,     9,    10,    11,     0,     0,    16,     0,     0,
+   526,   527,  -128,     0,     0,     0,     0,     0,    13,     0,
+    14,  -128,     0,     0,     0,     0,     0,     0,     0,    22,
+     0,     0,     0,     0,    24,    16,     0,     0,     0,    27,
+  -128,   434,     0,   435,     5,     6,     7,     8,     0,  -128,
+   436,     0,     9,    10,    11,     0,     0,    22,     0,     0,
+   434,     0,    24,     5,     6,     7,     8,    27,    13,   436,
+    14,     9,    10,    11,     5,     6,     7,     8,     0,     0,
+     0,     0,     9,    10,    11,    16,     0,    13,     0,    14,
+     0,     0,     0,     5,    89,     7,    90,     0,    13,     0,
+    14,     9,    10,    11,    16,     0,     0,    22,     0,     0,
+     0,     0,    24,     0,     0,    16,  -395,    13,     0,     0,
+     0,     0,     0,     0,     0,     0,    22,   344,     0,     0,
+     5,    24,     7,   138,    16,  -395,     0,    22,     9,    10,
+    11,     0,    24,     0,     0,     0,     0,   846,     0,     0,
+     0,     0,     0,     0,    13,     0,    22,    15,     0,     0,
+     0,    24,     0,     0,   147,   148,   637,   149,   150,     0,
+     0,    16,   151,   152,   153,   154,   155,   156,   157,   158,
+   159,   160,   161,   162,   163,   164,   165,   166,   167,   168,
+   169,     0,     0,    22,     0,    14,     0,     0,    24,   170,
+   246,   247,   248,     0,   249,   250,   251,   252,   253,   254,
+   255,   256,   257,   258,   259,   260,   261,   262,     0,     0,
+   171,     0,     0,     0,     0,     0,   147,   148,     0,   149,
+   150,     0,     0,   172,   151,   152,   153,   154,   155,   156,
+   157,   158,   159,   160,   161,   162,   163,   164,   165,   166,
+   167,   168,   169,     0,   147,   148,     0,   149,   150,     0,
+     0,   367,   151,   152,   153,   154,   155,   156,   157,   158,
+   159,   160,   161,   162,   163,   164,   165,   166,   167,   168,
+   169,     0,     0,     0,     0,     0,     0,     0,     0,   170,
+   147,   148,     0,   149,   150,   172,     0,     0,   151,   152,
+   153,   154,   155,   156,   157,   158,   159,   160,   161,   162,
+   163,   164,   165,   166,   167,   168,   169,     0,     0,     5,
+     0,     7,   280,   172,     0,   583,     0,     9,    10,    11,
+     5,     6,     7,     8,     0,     0,   436,     0,     9,    10,
+    11,     0,     0,    13,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,    13,     0,    14,     0,     0,   172,
+    16,     0,     0,     0,     0,   273,     0,     0,     0,     0,
+     0,    16,     0,     0,   274,   275,     0,     0,     0,     0,
+     0,     0,    22,     0,     0,     0,     0,    24,     0,     0,
+     0,     0,     0,    22,     5,     6,     7,     8,    24,     0,
+   631,     0,     9,    10,    11,     5,     6,     7,     8,     0,
+     0,     0,     0,     9,    10,    11,     0,     0,    13,     0,
+    14,     0,     0,     0,     5,     0,     7,   138,     0,    13,
+     0,    14,     9,    10,    11,    16,     0,     0,     0,     0,
+     0,     0,     5,     0,     7,   280,    16,     0,    13,     0,
+     9,    10,    11,     0,     0,     0,     0,    22,     0,     0,
+     0,     0,    24,     0,     0,    16,    13,     0,    22,     0,
+     0,     0,     0,    24,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,    16,     0,     0,     0,    22,     0,     0,
+     0,     0,    24,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,    22,     0,     0,     0,     0,
+    24,   246,   247,   248,   904,   249,   250,   251,   252,   253,
    254,   255,   256,   257,   258,   259,   260,   261,   262,   246,
-   247,   248,   900,   249,   250,   251,   252,   253,   254,   255,
-   256,   257,   258,   259,   260,   261,   262,   246,   247,   248,
-     0,   249,   250,   251,   252,   253,   254,   255,   256,   257,
-   258,   259,   260,   261,   262
+   247,   248,     0,   249,   250,   251,   252,   253,   254,   255,
+   256,   257,   258,   259,   260,   261,   262
 };
 
 static const short yycheck[] = {    56,
-    57,    31,   207,    16,     2,     3,    19,    20,     2,     3,
-    23,   198,    25,    26,    33,    83,    85,    91,   201,     2,
-     3,    22,   335,    24,   206,    38,    39,    40,   341,   105,
-   106,    24,   233,     2,     3,   111,   267,   308,   337,   548,
-     9,    10,    11,   316,    42,    66,   122,    77,    42,   278,
-   175,   404,   274,   323,   636,    85,    95,   133,   221,    42,
-   221,    74,    31,   427,    33,     1,    67,   202,   192,   140,
-    71,   175,   143,    42,    67,    32,    33,   114,    71,     3,
-   336,   425,   570,     9,     1,   739,    38,   343,    27,     1,
-   273,    38,     1,    10,   107,   351,   898,     3,     4,    77,
-     3,    77,    30,    81,   717,    81,    30,    59,    77,   314,
-    38,     3,     4,   823,    83,    77,    85,    38,    38,    81,
-    59,    60,    91,   736,   926,    36,    50,     3,     4,    76,
-    82,   144,   236,   146,   171,    59,    33,   324,   212,    42,
-   197,    77,    53,    54,    55,     0,   416,    59,   335,    45,
-    76,   805,     3,     4,   341,    76,    76,   170,    50,   189,
-    57,    67,     0,   193,   874,    82,    72,   180,   181,    80,
-   183,   184,   202,    82,   662,    67,    82,    88,   235,   401,
-    72,   410,   413,     7,   894,    81,   349,   897,   349,   899,
-   534,    67,   701,   702,   329,   849,    72,   907,   333,     5,
-   237,     7,    59,    60,   278,   242,    82,   244,   332,    77,
-    78,   268,   225,    59,    60,    38,    67,   114,   275,    76,
-   189,    72,    45,   192,   193,   238,    50,     3,     4,   939,
-    76,    82,    76,   202,    30,    59,    60,    81,   221,     1,
-    59,     3,     4,   212,   732,   515,   143,    27,    38,   613,
-    30,   522,   265,   266,   291,    45,    36,   839,     3,     4,
-   604,     3,     4,     5,     6,     7,   370,    59,   431,    59,
-   431,    59,    60,    59,   171,    48,    49,   630,   465,    45,
-   467,   338,    77,    59,     3,     4,   299,   363,    76,    30,
-    63,    67,    59,    60,     3,   206,    72,    77,     7,   329,
-   301,    81,    30,   333,    59,    67,   217,   816,   301,   579,
-    72,   350,    65,   352,    59,    59,   572,   573,    59,    60,
-   576,    30,    67,   380,   221,    67,    38,    72,    82,    76,
-    72,    59,    60,    45,    81,   606,   410,    59,   516,    77,
-   237,    50,   520,    81,   357,   242,    82,   244,    67,   318,
-    59,   408,   583,    72,   555,    82,   844,    59,    60,     3,
-   329,   592,    76,   332,   333,    59,   349,    81,   624,   625,
-   626,    50,   628,   629,     3,     4,    76,   481,     7,     9,
-    59,    60,    81,   420,   509,   563,    30,   657,   566,   346,
-   660,   348,   579,    76,   291,    59,    60,   653,    81,   412,
-   622,    30,    77,    78,   703,   509,    50,     3,     4,    76,
-    75,   640,     3,     4,    81,    59,    60,   328,   416,   438,
-   691,    50,   416,   424,    77,    78,   682,   683,   684,   427,
-    59,   424,   451,   427,    30,   404,    77,    76,   621,    30,
-    81,   623,    38,    72,   627,   676,    38,   416,     3,     4,
-   419,   348,   349,   616,    50,   616,    59,    60,   427,    50,
-   473,   648,    76,    59,    77,   721,     3,     4,    59,   438,
-   427,   658,    82,   660,    59,    30,    72,   548,   549,   701,
-   437,   438,   586,    38,    59,   714,   708,    77,    68,    69,
-    70,    81,   511,    30,   507,    50,    78,    27,    78,   529,
-    30,     3,     4,    77,    59,     7,    36,    81,   126,   127,
-   766,    77,   531,    50,    78,    81,   514,    72,   548,   549,
-   514,    77,    59,   420,    76,    81,    77,    77,    30,    59,
-    60,    81,    77,   734,   431,    72,    81,   808,    50,    51,
-    52,   438,   511,   612,    76,   514,    82,    77,    50,   617,
-   618,    81,    76,   510,   451,    38,    59,    59,    60,    76,
-   529,    77,   531,    10,   820,   578,   640,   597,    76,   638,
-   771,    63,    82,   530,   531,   758,   889,    76,   891,   548,
-   549,   649,   612,   552,    27,   542,   543,   608,   609,   602,
-     9,    77,   622,    83,     3,     4,    36,     5,     6,     7,
-    67,    77,   559,   560,    12,    13,    14,    36,   638,    81,
-    68,    69,    70,    78,   511,   613,    68,    69,    70,   613,
-    78,    30,    30,    68,    69,    70,    78,    76,   597,     5,
-     6,     7,    38,    78,   531,    76,    12,    13,    14,    76,
-   714,    50,   611,   612,   613,    76,   543,   704,   617,   618,
-    59,    60,    76,   622,   667,    76,   613,    38,    76,    82,
-   933,   630,    76,   560,   869,    76,    83,   636,   941,   638,
-    83,   701,   702,    63,   875,     6,     7,   734,   708,   241,
-   649,    12,    13,    14,   246,   247,    63,    76,   756,   251,
-   252,   253,   254,   255,   256,   257,   258,   259,   260,   261,
-   262,    76,   889,    36,   891,    48,    49,    50,    51,    52,
-    83,   724,   623,    76,   771,   916,   917,     1,   748,   616,
-     4,   734,     6,     7,    78,   782,   802,    78,    12,    13,
-    14,    78,   701,   702,    32,    38,   734,    83,    76,   708,
-   734,    77,    81,    77,    28,     3,    76,    31,    77,     3,
-    78,   734,    38,     7,    81,    63,    78,    83,   771,    78,
-    38,    45,    38,    78,   821,   734,    63,   824,   825,    81,
-   783,   839,   841,   792,    38,   832,    30,    81,    78,   748,
-    36,    63,    83,    67,   785,   786,   816,   756,    72,    78,
-   847,    38,    59,   786,    59,    38,    50,    59,   855,     7,
-    77,    38,    77,    77,   802,    59,    60,    77,   802,   866,
-    16,   841,    78,    59,    77,    59,    77,    76,   875,   802,
-   382,   383,    63,   792,     3,     4,    54,    55,     7,    57,
-    58,    59,    60,   802,   791,   792,     4,     5,     6,     7,
-     4,   898,     6,     7,    12,    13,    14,   816,    12,    13,
-    14,    30,    54,    55,    17,    57,    58,    59,    60,    77,
-    28,    76,   875,   920,    28,    77,    76,    76,     9,   926,
-   839,    50,   841,    77,    76,    59,    77,    45,    77,     1,
-    59,    45,     4,     5,     6,     7,    81,    77,    10,    76,
-    12,    13,    14,    76,     0,   792,    77,    77,     0,    67,
-   413,   824,   324,    67,    72,    87,    28,   658,    72,    77,
-   472,   802,   281,   639,     1,   412,     3,     4,     5,     6,
-     7,     8,     9,    45,    11,    12,    13,    14,    15,   491,
-    17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
-    27,    28,    29,    30,    31,    67,    33,    34,   646,   475,
-    72,   349,   467,    40,   357,   648,    43,   658,    45,   473,
-    82,    48,    49,    50,   580,   660,   921,    54,    55,   923,
-   875,   875,    59,    60,   407,   419,   552,    64,    25,    66,
-    67,   419,   539,   618,    71,    72,   756,   300,    75,   753,
-    77,    78,    79,    80,   532,    82,   514,   586,   748,   415,
-   562,    43,    44,    45,    46,    47,    48,    49,    50,    51,
-    52,     1,   370,     3,     4,     5,     6,     7,     8,     9,
-   582,    11,    12,    13,    14,    15,   676,    17,    18,    19,
+    57,   207,     2,     3,    16,     2,     3,    19,    20,     2,
+     3,    23,   316,    25,    26,    31,     9,    10,    11,     2,
+     3,   201,   198,    22,    85,    24,    38,    39,    40,    83,
+    33,   308,    24,    91,   278,   175,   233,   274,    31,   206,
+    33,   337,    42,    66,   175,    42,   267,    32,    33,    42,
+   105,   106,    33,   404,   335,   140,   111,    95,   143,    42,
+   341,    77,    74,   570,   427,   221,   192,   122,    67,    85,
+   221,   676,    71,   636,   114,    67,    57,     1,   133,    71,
+   548,   323,     1,   202,    77,    36,   425,     3,     4,     1,
+    83,    10,    85,   273,     1,   107,   236,     3,    91,    45,
+     9,    36,    53,    54,    55,    38,   720,   829,   314,     1,
+   902,     3,     4,    27,    68,    69,    70,     0,     3,     4,
+     5,     6,     7,    58,    78,   739,    59,    48,    49,    80,
+     0,   171,   144,   114,   146,    81,    42,    88,   930,   744,
+   197,    30,    63,     3,     4,    59,    60,    38,   324,    82,
+    45,    67,    59,    77,   212,   662,    72,   879,   170,   335,
+     3,     4,   143,    82,   401,   341,   410,    76,   180,   181,
+    82,   183,   184,   189,   416,    67,   898,   193,   235,   901,
+    72,   903,    67,     3,     4,    76,   202,    72,     3,   911,
+   171,    59,   413,   349,    38,   534,   189,   237,   349,   192,
+   193,    45,   242,    38,   244,   810,   332,    67,    38,   202,
+   329,   268,    72,   225,   333,    30,     7,    30,   275,   212,
+   278,   943,    82,    59,    67,    38,   238,    38,   735,    72,
+   370,    59,     3,     4,    45,    50,   704,   705,   221,    82,
+   221,    76,    30,    77,    59,   522,    76,    67,    59,    59,
+   613,   291,    72,   265,   266,   206,   237,    59,    60,    50,
+    38,   242,    82,   244,    65,   604,   217,    45,    59,    60,
+    82,    59,    60,   515,    76,   431,    82,     3,     4,   630,
+   431,   338,   845,    68,    69,    70,    30,   299,    59,   465,
+    76,   467,    82,    78,     1,    81,    67,     4,     5,     6,
+     7,    72,   301,    10,    30,    12,    13,    14,   363,   301,
+   291,    59,   350,   329,   352,    59,    60,   333,    59,    60,
+     5,    28,     7,   380,    50,   318,     3,     4,    59,   606,
+     7,    59,    60,    59,    59,    76,   329,   579,    45,   332,
+   333,   481,    76,   850,    76,   357,    72,    27,    76,    81,
+    30,   408,   410,    30,   822,     9,    36,    81,   555,    76,
+    67,   346,   583,   348,    81,    72,   349,   348,   349,   509,
+    76,   592,    77,    50,    76,    82,    81,   328,   509,    81,
+   420,     4,    59,     6,     7,   622,    50,    51,    52,    12,
+    13,    14,    68,    69,    70,    72,   640,    77,    50,    82,
+   412,    81,    78,   579,    76,    28,    75,    59,    60,    81,
+   706,   404,    77,    78,    76,   657,   416,   694,   660,   416,
+    59,    60,    45,   416,     3,   424,   419,   427,     7,    77,
+   427,    38,   424,    81,   427,   438,    77,    59,    60,   420,
+    81,   621,   427,    77,    67,   438,   586,   627,   451,    72,
+   431,    30,   437,   438,    77,    78,   623,   438,   679,     3,
+   616,   473,    77,   548,   549,   616,    81,   704,    59,    60,
+   451,    50,   648,   717,   711,     3,     4,    59,     3,     4,
+    59,    60,   658,    77,   660,    77,    30,    81,    59,    81,
+   336,    78,     3,     4,    77,   507,    76,   343,    81,    68,
+    69,    70,    30,    77,    76,   351,    50,    81,   511,    78,
+    38,    77,    78,   529,   514,    59,    60,   514,   511,    30,
+    78,   514,    50,     3,     4,   510,    82,    38,   531,    76,
+   511,    59,   548,   549,    59,    77,   529,   814,   531,    50,
+   737,    38,    67,    76,    72,   530,   531,    72,    59,    10,
+   531,   612,    59,    77,    78,   548,   549,   542,   543,   552,
+    77,    72,   543,   617,   618,    77,   578,    77,    77,    81,
+    50,    81,    81,    76,   559,   560,    63,   638,    82,   560,
+   777,   597,   640,    76,   764,   608,   609,    67,    27,   516,
+   602,     9,    72,   520,    83,   649,   612,    59,    60,     4,
+     5,     6,     7,    77,   597,    36,   622,    12,    13,    14,
+   126,   127,   893,   613,   895,    67,   613,    77,   611,   612,
+   613,    36,   638,    28,   617,   618,     3,     4,   613,   622,
+     7,     3,     4,   937,     3,   616,   563,   630,     7,   566,
+    45,   945,    78,   636,    81,   638,    76,    38,    76,    76,
+   707,    76,    76,    30,    76,   667,   649,    38,    30,   717,
+    76,    30,    67,     6,     7,    76,    83,    72,   874,    12,
+    13,    14,   623,    50,    83,    76,    82,    63,    50,    63,
+   737,    50,    59,   880,    76,    36,   241,    59,   704,   705,
+    59,   246,   247,    76,    83,   711,   251,   252,   253,   254,
+   255,   256,   257,   258,   259,   260,   261,   262,   762,    76,
+    78,   704,   705,    27,    78,   727,    30,   893,   711,   895,
+   777,    78,    36,   920,   921,   737,   572,   573,     3,     4,
+   576,   788,     7,    32,    38,    83,    76,   737,   754,    77,
+   737,     3,     4,    76,   737,    59,    60,    81,    77,     5,
+     6,     7,     3,   808,   737,    30,    12,    13,    14,    77,
+    81,   754,    78,    77,    38,   777,    83,    81,    30,   762,
+   827,    63,    78,   830,   831,    50,    78,   789,   624,   625,
+   626,   838,   628,   629,    59,    60,   847,    78,    50,    38,
+    38,   845,   791,   792,    81,   798,   853,    59,    60,    63,
+   792,    38,    81,   860,    63,   798,   822,   653,   808,    78,
+    83,   808,   797,   798,   871,   808,    38,   798,    48,    49,
+    50,    51,    52,   880,    78,   808,    59,   382,   383,   822,
+    59,   847,    59,    38,    77,     5,     6,     7,    77,   685,
+   686,   687,    12,    13,    14,   902,     7,    38,     4,     5,
+     6,     7,   845,    77,   847,    78,    12,    13,    14,    77,
+    30,    16,    59,    77,    77,    59,    76,   924,   880,    17,
+    63,    77,    28,   930,    30,    76,     9,    77,   724,    77,
+     1,    76,     3,     4,     5,     6,     7,     8,     9,    45,
+    11,    12,    13,    14,    15,    76,    17,    18,    19,    20,
+    21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
+    31,    67,    33,    34,    77,    77,    72,   472,    59,    40,
+    77,    77,    43,    81,    45,    76,   772,    48,    49,    50,
+    76,     0,    77,    54,    55,    77,   491,     0,    59,    60,
+   413,   808,   830,    64,   324,    66,    67,   658,    87,   639,
+    71,    72,   646,   281,    75,   412,    77,    78,    79,    80,
+   742,    82,   675,   357,    54,    55,   467,    57,    58,    59,
+    60,     1,   658,     3,     4,     5,     6,     7,     8,     9,
+   826,    11,    12,    13,    14,    15,    76,    17,    18,    19,
     20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
-    30,    31,    -1,    33,    34,   509,    -1,   415,    -1,    -1,
-    40,    -1,    -1,    43,    -1,    45,    -1,    -1,    48,    49,
+    30,    31,   349,    33,    34,   475,   648,   562,   473,   660,
+    40,   880,   580,    43,   880,    45,   927,   925,    48,    49,
+    50,   419,   407,   419,    54,    55,   552,   582,    25,    59,
+    60,   539,   618,   762,    64,   300,    66,    67,   759,   514,
+   532,    71,    72,   509,   754,    75,   679,    77,   586,    79,
+    80,   370,    82,     1,   415,     3,     4,   415,    -1,    -1,
+     8,     9,    -1,    11,    -1,    -1,    -1,    15,    -1,    17,
+    18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
+    -1,    29,    -1,    31,    -1,    33,    34,    -1,    -1,    -1,
+    -1,   646,    40,    54,    55,    43,    57,    58,    59,    60,
+    48,    49,    50,    -1,    -1,    -1,    54,    55,    -1,    -1,
+    -1,    59,    60,    -1,    -1,    -1,    64,    -1,    66,    67,
+    10,   676,    -1,    71,    72,    -1,    -1,    75,   683,    77,
+    78,    79,    80,    -1,    82,    44,    45,    46,    47,    48,
+    49,    50,    51,    52,   699,    35,    36,    37,    38,    39,
+    40,    41,    42,    43,    44,    45,    46,    47,    48,    49,
+    50,    51,    52,    -1,    -1,   720,    -1,    37,   723,    39,
+    40,    41,    42,    43,    44,    45,    46,    47,    48,    49,
+    50,    51,    52,    -1,   739,    -1,    -1,   742,    -1,   744,
+    -1,     1,    -1,     3,     4,    -1,    -1,    -1,     8,     9,
+    -1,    11,    -1,    -1,    -1,    15,   761,    17,    18,    19,
+    20,    21,    22,    23,    24,    25,    26,    27,   773,    29,
+    -1,    31,    -1,    33,    34,    -1,    -1,    -1,    -1,   784,
+    40,    -1,    -1,    43,    -1,    -1,    -1,    -1,    48,    49,
     50,    -1,    -1,    -1,    54,    55,    -1,    -1,    -1,    59,
-    60,    -1,    -1,    -1,    64,    -1,    66,    67,    -1,    -1,
-    -1,    71,    72,    -1,   646,    75,    -1,    77,    -1,    79,
+    60,    -1,    -1,    -1,    64,   810,    66,    67,    -1,    -1,
+    -1,    71,    72,    -1,    -1,    75,    -1,    77,    -1,    79,
     80,     1,    82,     3,     4,    -1,    -1,    -1,     8,     9,
     -1,    11,    -1,    -1,    -1,    15,    -1,    17,    18,    19,
-    20,    21,    22,    23,    24,    25,    26,    27,   680,    29,
+    20,    21,    22,    23,    24,    25,    26,    27,    -1,    29,
     -1,    31,    -1,    33,    34,    -1,    -1,    -1,    -1,    -1,
-    40,    -1,    -1,    43,   696,    -1,    -1,    -1,    48,    49,
+    40,   866,    -1,    43,    -1,    -1,    -1,    -1,    48,    49,
     50,    -1,    -1,    -1,    54,    55,    -1,    -1,    -1,    59,
-    60,    -1,    -1,    -1,    64,   717,    66,    67,   720,    -1,
-    -1,    71,    72,    -1,    -1,    75,    -1,    77,    78,    79,
-    80,    -1,    82,    -1,   736,    -1,     1,   739,    -1,     4,
+    60,    -1,    -1,    -1,    64,    -1,    66,    67,    -1,    -1,
+    -1,    71,    72,    -1,    -1,    75,    -1,    77,    -1,    79,
+    80,     1,    82,     3,     4,    -1,     6,     7,     8,     9,
+    -1,    11,    12,    13,    14,    40,    41,    42,    43,    44,
+    45,    46,    47,    48,    49,    50,    51,    52,    28,    29,
+    -1,    31,    -1,    33,    34,    -1,    -1,    -1,    -1,    -1,
+    40,    -1,    -1,    43,    -1,    45,    -1,    -1,    48,    49,
+    50,    -1,    -1,    -1,    54,    55,    -1,    -1,    -1,    59,
+    60,    -1,    -1,    -1,    64,    -1,    66,    67,    -1,    -1,
+    -1,    71,    72,    -1,    -1,    75,    -1,    -1,    -1,    79,
+    80,     1,    82,     3,     4,    -1,    -1,    -1,     8,     9,
+    -1,    11,    41,    42,    43,    44,    45,    46,    47,    48,
+    49,    50,    51,    52,    -1,    -1,    -1,    -1,    -1,    29,
+    -1,    31,    -1,    33,    34,    -1,    -1,    -1,    -1,    -1,
+    40,    -1,    -1,    43,    -1,    -1,    -1,    -1,    48,    49,
+    50,    -1,    -1,    -1,    54,    55,    -1,    -1,    58,    59,
+    60,    -1,    -1,    -1,    64,    -1,    66,    67,    -1,    -1,
+    -1,    71,    72,    -1,    -1,    75,    -1,    -1,    78,    79,
+    80,     1,    82,     3,     4,    -1,    -1,    -1,     8,     9,
+    -1,    11,    42,    43,    44,    45,    46,    47,    48,    49,
+    50,    51,    52,    -1,    -1,    -1,    -1,    -1,    -1,    29,
+    -1,    31,    -1,    33,    34,    -1,    -1,    -1,    -1,    -1,
+    40,    -1,    -1,    43,    -1,    -1,    -1,    -1,    48,    49,
+    50,    -1,    -1,    -1,    54,    55,    -1,    -1,    58,    59,
+    60,    -1,    -1,    -1,    64,    -1,    66,    67,    -1,    -1,
+    -1,    71,    72,    -1,    -1,    75,    -1,    -1,    78,    79,
+    80,     1,    82,     3,    -1,    -1,    -1,    -1,     8,     9,
+    -1,    11,    43,    44,    45,    46,    47,    48,    49,    50,
+    51,    52,    46,    47,    48,    49,    50,    51,    52,    29,
+    -1,    31,    -1,    33,    34,    -1,    36,    -1,    -1,    -1,
+    40,    -1,    -1,    43,    -1,    -1,    -1,    -1,    48,    49,
+    50,    -1,    -1,    -1,    54,    55,    -1,    -1,    58,    59,
+    60,    -1,    -1,    -1,    64,    -1,    66,    -1,    -1,    -1,
+    -1,    71,    -1,    -1,    -1,    75,     1,    -1,     3,    79,
+    80,    -1,    82,     8,     9,    -1,    11,    45,    46,    47,
+    48,    49,    50,    51,    52,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    29,    -1,    31,    -1,    33,    34,
+    -1,    -1,    -1,    -1,    -1,    40,    -1,    -1,    43,    -1,
+    -1,    -1,    -1,    48,    49,    50,    -1,    -1,    -1,    54,
+    55,    -1,    -1,    -1,    59,    60,    -1,    -1,    -1,    64,
+    -1,    66,    -1,    -1,    -1,    -1,    71,    -1,    -1,    -1,
+    75,     1,    -1,     3,    79,    80,    -1,    82,     8,     9,
+    -1,    11,     1,    -1,    -1,     4,    -1,     6,     7,    -1,
+    -1,    -1,    -1,    12,    13,    14,    -1,    -1,    -1,    29,
+    -1,    31,    -1,    33,    34,    -1,    -1,    -1,    -1,    28,
+    40,    -1,    31,    43,    -1,    -1,    -1,    -1,    48,    49,
+    50,    -1,    -1,    -1,    54,    55,    45,    -1,    -1,    59,
+    60,    -1,    -1,    -1,    64,    -1,    66,    -1,    -1,    -1,
+    -1,    71,    -1,    -1,    -1,    75,    -1,    -1,    67,    79,
+    80,     1,    82,    72,     4,     5,     6,     7,    77,    78,
+    -1,    -1,    12,    13,    14,    -1,    -1,    -1,    -1,    -1,
+     1,    -1,    -1,     4,     5,     6,     7,    27,    28,    -1,
+    30,    12,    13,    14,    -1,    -1,    36,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    45,    27,    28,    -1,    30,
+    -1,    -1,    -1,    -1,    -1,    36,    -1,    -1,    -1,    59,
+    60,    -1,    -1,    -1,    45,    -1,    -1,    67,    -1,    -1,
+    -1,    -1,    72,    -1,    -1,    -1,    -1,    77,    59,    60,
+    -1,    81,    82,    -1,    -1,    -1,    67,    -1,    -1,    -1,
+    -1,    72,    -1,    -1,    -1,    -1,    77,    -1,    -1,     1,
+    81,    82,     4,     5,     6,     7,    -1,    -1,    -1,    -1,
+    12,    13,    14,    -1,    -1,    -1,    -1,    -1,     1,    -1,
+    -1,     4,     5,     6,     7,    27,    28,    -1,    30,    12,
+    13,    14,    -1,    -1,    36,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    45,    -1,    28,     1,    30,    -1,     4,
      5,     6,     7,    -1,    -1,    -1,    -1,    12,    13,    14,
-    -1,    -1,    -1,   755,    44,    45,    46,    47,    48,    49,
-    50,    51,    52,    28,    -1,   767,    -1,     1,    -1,     3,
-     4,    -1,    -1,    -1,     8,     9,   778,    11,    -1,    -1,
-    45,    15,    -1,    17,    18,    19,    20,    21,    22,    23,
-    24,    25,    26,    27,    -1,    29,    -1,    31,    -1,    33,
-    34,    -1,    67,   805,    -1,    -1,    40,    72,    -1,    43,
-    -1,    -1,    -1,    -1,    48,    49,    50,    82,    -1,    -1,
-    54,    55,    -1,    -1,    -1,    59,    60,    -1,    -1,    -1,
-    64,    -1,    66,    67,    -1,    -1,    -1,    71,    72,    -1,
-    -1,    75,    -1,    77,    -1,    79,    80,   849,    82,    -1,
-     1,    -1,     3,     4,    -1,    -1,    -1,     8,     9,   861,
-    11,    -1,    -1,    -1,    15,    -1,    17,    18,    19,    20,
-    21,    22,    23,    24,    25,    26,    27,    -1,    29,    -1,
-    31,    -1,    33,    34,    -1,    -1,    -1,    -1,    -1,    40,
-    -1,    -1,    43,    -1,    -1,    -1,    -1,    48,    49,    50,
-    -1,    -1,    -1,    54,    55,    -1,    -1,    -1,    59,    60,
-    -1,    -1,    -1,    64,    -1,    66,    67,    -1,    -1,    -1,
-    71,    72,    -1,    -1,    75,    -1,    77,    -1,    79,    80,
-     1,    82,     3,     4,    -1,     6,     7,     8,     9,    -1,
-    11,    12,    13,    14,    40,    41,    42,    43,    44,    45,
-    46,    47,    48,    49,    50,    51,    52,    28,    29,    -1,
-    31,    -1,    33,    34,    -1,    -1,    -1,    -1,    -1,    40,
-    -1,    -1,    43,    -1,    45,    -1,    -1,    48,    49,    50,
-    -1,    -1,    -1,    54,    55,    -1,    -1,    -1,    59,    60,
-    -1,    -1,    -1,    64,    -1,    66,    67,    -1,    -1,    -1,
-    71,    72,    -1,    -1,    75,    -1,    -1,    -1,    79,    80,
-     1,    82,     3,     4,    -1,    -1,    -1,     8,     9,    37,
-    11,    39,    40,    41,    42,    43,    44,    45,    46,    47,
-    48,    49,    50,    51,    52,    -1,    -1,    -1,    29,    -1,
-    31,    -1,    33,    34,    -1,    -1,    -1,    -1,    -1,    40,
-    -1,    -1,    43,    -1,    -1,    -1,    -1,    48,    49,    50,
-    -1,    -1,    -1,    54,    55,    -1,    -1,    58,    59,    60,
-    -1,    -1,    -1,    64,    -1,    66,    67,    -1,    -1,    -1,
-    71,    72,    -1,    -1,    75,    -1,    -1,    78,    79,    80,
-     1,    82,     3,     4,    -1,    -1,    -1,     8,     9,    -1,
-    11,    41,    42,    43,    44,    45,    46,    47,    48,    49,
-    50,    51,    52,    -1,    -1,    -1,    -1,    -1,    29,    -1,
-    31,    -1,    33,    34,    -1,    -1,    -1,    -1,    -1,    40,
-    -1,    -1,    43,    -1,    -1,    -1,    -1,    48,    49,    50,
-    -1,    -1,    -1,    54,    55,    -1,    -1,    58,    59,    60,
-    -1,    -1,    -1,    64,    -1,    66,    67,    -1,    -1,    -1,
-    71,    72,    -1,    -1,    75,    -1,    -1,    78,    79,    80,
-     1,    82,     3,     4,    -1,    -1,    -1,     8,     9,    -1,
-    11,    42,    43,    44,    45,    46,    47,    48,    49,    50,
-    51,    52,    -1,    -1,    -1,    -1,    -1,    -1,    29,    -1,
-    31,    -1,    33,    34,    -1,    -1,    -1,    -1,    -1,    40,
-    -1,    -1,    43,    -1,    -1,    -1,    -1,    48,    49,    50,
-    -1,    -1,    -1,    54,    55,    -1,    -1,    58,    59,    60,
-    -1,    -1,    -1,    64,    -1,    66,    67,    -1,    -1,    -1,
-    71,    72,    -1,    -1,    75,     1,    -1,     3,    79,    80,
-    -1,    82,     8,     9,    -1,    11,     1,    -1,    -1,     4,
-    -1,     6,     7,    -1,    -1,    -1,    -1,    12,    13,    14,
+    -1,    -1,    45,    -1,    -1,    67,    -1,    -1,    -1,    -1,
+    72,    -1,    -1,    28,    -1,    77,    -1,    -1,    -1,    81,
+    82,    -1,     1,    -1,    67,     4,     5,     6,     7,    72,
+    45,    -1,    -1,    12,    13,    14,    -1,    -1,    -1,    82,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    28,
+     3,    30,    67,    -1,    -1,     8,     9,    72,    11,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    45,    82,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    29,    -1,    31,    -1,
+    33,    34,    -1,    -1,    -1,    -1,    -1,    40,    67,    -1,
+    43,    -1,    -1,    72,    -1,    48,    49,    50,    -1,    -1,
+    -1,    54,    55,    82,    -1,    -1,    59,    60,    -1,     3,
+    -1,    64,    -1,    66,     8,     9,    -1,    11,    71,    -1,
+    -1,    -1,    75,    -1,    -1,    -1,    79,    80,    -1,    -1,
+    83,    -1,    -1,    -1,    -1,    29,    -1,    31,    -1,    33,
+    34,    -1,    -1,    -1,    -1,    -1,    40,    -1,    -1,    43,
+    -1,    -1,    -1,    -1,    48,    49,    50,    -1,    -1,    -1,
+    54,    55,    -1,    -1,    -1,    59,    60,    -1,     3,    -1,
+    64,    -1,    66,     8,     9,    -1,    11,    71,    -1,    -1,
+    -1,    75,    -1,    -1,    -1,    79,    80,    -1,    -1,    83,
+    -1,    -1,    -1,    -1,    29,    -1,    31,    -1,    33,    34,
+    -1,    -1,    -1,    -1,    -1,    40,    -1,    -1,    43,    -1,
+    -1,    -1,    -1,    48,    49,    50,    -1,    -1,    -1,    54,
+    55,    -1,    -1,    -1,    59,    60,    -1,     3,    -1,    64,
+    -1,    66,     8,     9,    -1,    11,    71,    -1,    -1,    -1,
+    75,    -1,    -1,    -1,    79,    80,    -1,    -1,    83,    -1,
     -1,    -1,    -1,    29,    -1,    31,    -1,    33,    34,    -1,
-    -1,    -1,    -1,    28,    40,    -1,    31,    43,    -1,    -1,
+    -1,    -1,    -1,    -1,    40,    -1,    -1,    43,    -1,    -1,
     -1,    -1,    48,    49,    50,    -1,    -1,    -1,    54,    55,
-    45,    -1,    -1,    59,    60,    -1,    -1,    -1,    64,    -1,
-    66,    -1,    -1,    -1,    -1,    71,    -1,    -1,    -1,    75,
-    -1,    -1,    67,    79,    80,     1,    82,    72,     4,     5,
-     6,     7,    77,    78,    -1,    -1,    12,    13,    14,    -1,
-    -1,    -1,    -1,    -1,     1,    -1,    -1,     4,     5,     6,
-     7,    27,    28,    -1,    30,    12,    13,    14,    -1,    -1,
-    36,    45,    46,    47,    48,    49,    50,    51,    52,    45,
-    27,    28,    -1,    30,    -1,    -1,    -1,    -1,    -1,    36,
-    -1,    -1,    -1,    59,    60,    -1,    -1,    -1,    45,    -1,
-    -1,    67,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,
-    -1,    77,    59,    60,    -1,    81,    82,    -1,    -1,    -1,
-    67,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    -1,
-    77,    -1,    -1,     1,    81,    82,     4,     5,     6,     7,
-    -1,    -1,    -1,    -1,    12,    13,    14,    -1,    -1,    -1,
-    -1,    -1,     1,    -1,    -1,     4,     5,     6,     7,    27,
-    28,    -1,    30,    12,    13,    14,    -1,    -1,    36,    46,
-    47,    48,    49,    50,    51,    52,    -1,    45,    -1,    28,
-    -1,    30,    -1,     4,    -1,     6,     7,    -1,    -1,    -1,
-    -1,    12,    13,    14,    -1,    -1,    45,    -1,    -1,    67,
-    -1,    -1,    -1,    -1,    72,    -1,    -1,    28,    -1,    77,
-    -1,    -1,    -1,    81,    82,    -1,     1,    -1,    67,     4,
-     5,     6,     7,    72,    45,    -1,    -1,    12,    13,    14,
-    -1,    -1,    -1,    82,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    28,     3,    30,    67,    -1,    -1,     8,
-     9,    72,    11,    -1,    -1,    -1,    77,    78,    -1,    -1,
-    45,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    29,    -1,    31,    -1,    33,    34,    -1,    -1,    -1,    -1,
-    -1,    40,    67,    -1,    43,    -1,    -1,    72,    -1,    48,
-    49,    50,    -1,    -1,    -1,    54,    55,    82,    -1,    -1,
-    59,    60,    -1,     3,    -1,    64,    -1,    66,     8,     9,
-    -1,    11,    71,    -1,    -1,    -1,    75,    -1,    -1,    -1,
-    79,    80,    -1,    -1,    83,    -1,    -1,    -1,    -1,    29,
-    -1,    31,    -1,    33,    34,    -1,    -1,    -1,    -1,    -1,
-    40,    -1,    -1,    43,    -1,    -1,    -1,    -1,    48,    49,
-    50,    -1,    -1,    -1,    54,    55,    -1,    -1,    -1,    59,
-    60,    -1,     3,    -1,    64,    -1,    66,     8,     9,    -1,
-    11,    71,    -1,    -1,    -1,    75,    -1,    -1,    -1,    79,
-    80,    -1,    -1,    83,    -1,    -1,    -1,    -1,    29,    -1,
-    31,    -1,    33,    34,    -1,    -1,    -1,    -1,    -1,    40,
-    -1,    -1,    43,    -1,    -1,    -1,    -1,    48,    49,    50,
-    -1,    -1,    -1,    54,    55,    -1,    -1,    -1,    59,    60,
-    -1,     3,    -1,    64,    -1,    66,     8,     9,    -1,    11,
-    71,    -1,    -1,    -1,    75,    -1,    -1,    -1,    79,    80,
-    -1,    -1,    83,    -1,    -1,    -1,    -1,    29,    -1,    31,
+    -1,    -1,    -1,    59,    60,    -1,     3,    -1,    64,    -1,
+    66,     8,     9,    -1,    11,    71,    -1,    -1,    -1,    75,
+    -1,    -1,    -1,    79,    80,    -1,    -1,    83,    -1,    -1,
+    -1,    -1,    29,    -1,    31,    -1,    33,    34,    -1,    -1,
+    -1,    -1,    -1,    40,    -1,    -1,    43,    -1,    -1,    -1,
+    -1,    48,    49,    50,    -1,    -1,    -1,    54,    55,    -1,
+    -1,    -1,    59,    60,    -1,    -1,    -1,    64,    -1,    66,
+    -1,    -1,    -1,    -1,    71,    -1,    -1,    -1,    75,    -1,
+    -1,    -1,    79,    80,    -1,    -1,    83,     3,     4,     5,
+     6,     7,     8,     9,    -1,    11,    12,    13,    14,    15,
+    -1,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+    26,    27,    28,    29,    30,    31,    -1,    33,    34,    -1,
+    -1,    -1,    -1,    -1,    40,    -1,    -1,    43,    -1,    45,
+    -1,    -1,    48,    49,    50,    -1,    -1,    -1,    54,    55,
+    -1,    -1,    -1,    59,    60,    -1,    -1,    -1,    64,    -1,
+    66,    67,    -1,    -1,    -1,    71,    72,    -1,    -1,    75,
+    -1,    77,    -1,    79,    80,    -1,    82,     3,     4,    -1,
+    -1,    -1,     8,     9,    -1,    11,    -1,    -1,    -1,    15,
+    -1,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+    26,    27,    -1,    29,    -1,    31,    -1,    33,    34,    -1,
+    -1,    -1,    -1,    -1,    40,    -1,    -1,    43,    -1,    -1,
+    -1,    -1,    48,    49,    50,    -1,    -1,    -1,    54,    55,
+    -1,     3,    -1,    59,    60,    -1,     8,     9,    64,    11,
+    66,    67,    -1,    -1,    -1,    71,    72,    -1,    -1,    75,
+    -1,    77,    -1,    79,    80,    -1,    82,    29,    -1,    31,
     -1,    33,    34,    -1,    -1,    -1,    -1,    -1,    40,    -1,
     -1,    43,    -1,    -1,    -1,    -1,    48,    49,    50,    -1,
     -1,    -1,    54,    55,    -1,    -1,    -1,    59,    60,    -1,
-     3,    -1,    64,    -1,    66,     8,     9,    -1,    11,    71,
+    -1,    -1,    64,    -1,    66,    -1,    -1,    -1,    -1,    71,
     -1,    -1,    -1,    75,    -1,    -1,    -1,    79,    80,    -1,
-    -1,    83,    -1,    -1,    -1,    -1,    29,    -1,    31,    -1,
-    33,    34,    -1,    -1,    -1,    -1,    -1,    40,    -1,    -1,
-    43,    -1,    -1,    -1,    -1,    48,    49,    50,    -1,    -1,
-    -1,    54,    55,    -1,    -1,    -1,    59,    60,    -1,    -1,
-    -1,    64,    -1,    66,    -1,    -1,    -1,    -1,    71,    -1,
-    -1,    -1,    75,    -1,    -1,    -1,    79,    80,    -1,    -1,
-    83,     3,     4,     5,     6,     7,     8,     9,    -1,    11,
-    12,    13,    14,    15,    -1,    17,    18,    19,    20,    21,
-    22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
-    -1,    33,    34,    -1,    -1,    -1,    -1,    -1,    40,    -1,
-    -1,    43,    -1,    45,    -1,    -1,    48,    49,    50,    -1,
-    -1,    -1,    54,    55,    -1,    -1,    -1,    59,    60,    -1,
-    -1,    -1,    64,    -1,    66,    67,    -1,    -1,    -1,    71,
-    72,    -1,    -1,    75,    -1,    77,    -1,    79,    80,    -1,
-    82,     3,     4,    -1,    -1,    -1,     8,     9,    -1,    11,
-    -1,    -1,    -1,    15,    -1,    17,    18,    19,    20,    21,
-    22,    23,    24,    25,    26,    27,    -1,    29,    -1,    31,
+    82,     3,     4,    -1,     6,     7,    -1,    -1,    -1,    11,
+    12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+    22,    23,    24,    25,    26,    27,    28,    29,    -1,     3,
+     4,     5,     6,     7,     8,     9,    38,    11,    12,    13,
+    14,     4,     5,     6,     7,    -1,    -1,    -1,    -1,    12,
+    13,    14,    -1,    -1,    28,    29,    30,    31,    -1,    33,
+    34,    -1,    -1,    -1,    -1,    28,    40,    30,    -1,    43,
+    72,    45,    -1,    -1,    48,    49,    50,    -1,    -1,    81,
+    54,    55,    45,    -1,    -1,    59,    60,    -1,    -1,    -1,
+    64,    -1,    66,    67,    -1,    -1,    -1,    71,    72,    -1,
+    -1,    75,    -1,    -1,    67,    79,    80,     3,     4,    72,
+     6,     7,     8,     9,    77,    11,    12,    13,    14,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    28,    29,    -1,    31,    -1,    33,    34,    -1,
+    -1,    -1,    -1,    -1,    40,    -1,    -1,    43,    -1,    45,
+    -1,    -1,    48,    49,    50,    -1,    -1,    -1,    54,    55,
+    -1,     3,    -1,    59,    60,    -1,     8,     9,    64,    11,
+    66,    67,    -1,    -1,    -1,    71,    72,    -1,    -1,    75,
+    -1,    -1,    -1,    79,    80,    -1,    -1,    29,    -1,    31,
     -1,    33,    34,    -1,    -1,    -1,    -1,    -1,    40,    -1,
     -1,    43,    -1,    -1,    -1,    -1,    48,    49,    50,    -1,
     -1,    -1,    54,    55,    -1,     3,    -1,    59,    60,    -1,
      8,     9,    64,    11,    66,    67,    -1,    -1,    -1,    71,
-    72,    -1,    -1,    75,    -1,    77,    -1,    79,    80,    -1,
-    82,    29,    -1,    31,    -1,    33,    34,    -1,    -1,    -1,
-    -1,    -1,    40,    -1,    -1,    43,    -1,    -1,    -1,    -1,
-    48,    49,    50,    -1,    -1,    -1,    54,    55,    -1,    -1,
-    -1,    59,    60,    -1,    -1,    -1,    64,    -1,    66,    -1,
-    -1,    -1,    -1,    71,    -1,    -1,    -1,    75,    -1,    -1,
-    -1,    79,    80,    -1,    82,     3,     4,    -1,     6,     7,
-    -1,    -1,    -1,    11,    12,    13,    14,    15,    16,    17,
-    18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
-    28,    29,    -1,     3,     4,     5,     6,     7,     8,     9,
-    38,    11,    12,    13,    14,     4,     5,     6,     7,    -1,
-    -1,    -1,    -1,    12,    13,    14,    -1,    -1,    28,    29,
-    30,    31,    -1,    33,    34,    -1,    -1,    -1,    -1,    28,
-    40,    30,    -1,    43,    72,    45,    -1,    -1,    48,    49,
-    50,    -1,    -1,    81,    54,    55,    45,    -1,    -1,    59,
-    60,    -1,    -1,    -1,    64,    -1,    66,    67,    -1,    -1,
-    -1,    71,    72,    -1,    -1,    75,    -1,    -1,    67,    79,
-    80,     3,     4,    72,     6,     7,     8,     9,    77,    11,
-    12,    13,    14,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    28,    29,    -1,    31,
-    -1,    33,    34,    -1,    -1,    -1,    -1,    -1,    40,    -1,
-    -1,    43,    -1,    45,    -1,    -1,    48,    49,    50,    -1,
-    -1,    -1,    54,    55,    -1,     3,    -1,    59,    60,    -1,
-     8,     9,    64,    11,    66,    67,    -1,    -1,    -1,    71,
-    72,    -1,    -1,    75,    -1,    -1,    -1,    79,    80,    -1,
+    -1,    -1,    -1,    75,    -1,    -1,    -1,    79,    80,    -1,
     -1,    29,    -1,    31,    -1,    33,    34,    -1,    -1,    -1,
     -1,    -1,    40,    -1,    -1,    43,    -1,    -1,    -1,    -1,
     48,    49,    50,    -1,    -1,    -1,    54,    55,    -1,     3,
-    -1,    59,    60,    -1,     8,     9,    64,    11,    66,    67,
-    -1,    -1,    -1,    71,    -1,    -1,    -1,    75,    -1,    -1,
+    -1,    59,    60,    -1,     8,     9,    64,    11,    66,    -1,
+    -1,    -1,    -1,    71,    -1,    -1,    -1,    75,    -1,    77,
     -1,    79,    80,    -1,    -1,    29,    -1,    31,    -1,    33,
     34,    -1,    -1,    -1,    -1,    -1,    40,    -1,    -1,    43,
     -1,    -1,    -1,    -1,    48,    49,    50,    -1,    -1,    -1,
     54,    55,    -1,     3,    -1,    59,    60,    -1,     8,     9,
     64,    11,    66,    -1,    -1,    -1,    -1,    71,    -1,    -1,
-    -1,    75,    -1,    77,    -1,    79,    80,    -1,    -1,    29,
+    -1,    75,    -1,    -1,    -1,    79,    80,    -1,    -1,    29,
     -1,    31,    -1,    33,    34,    -1,    -1,    -1,    -1,    -1,
     40,    -1,    -1,    43,    -1,    -1,    -1,    -1,    48,    49,
     50,    -1,    -1,    -1,    54,    55,    -1,     3,    -1,    59,
@@ -1577,86 +1599,83 @@ static const short yycheck[] = {    56,
     -1,    -1,    -1,    79,    80,    -1,    -1,    29,    -1,    31,
     -1,    33,    34,    -1,    -1,    -1,    -1,    -1,    40,    -1,
     -1,    43,    -1,    -1,    -1,    -1,    48,    49,    50,    -1,
-    -1,    -1,    54,    55,    -1,     3,    -1,    59,    60,    -1,
-     8,     9,    64,    11,    66,    -1,    -1,    -1,    -1,    71,
-    -1,    -1,    -1,    75,    -1,    -1,    -1,    79,    80,    -1,
-    -1,    29,    -1,    31,    -1,    33,    34,    -1,    -1,    -1,
-    -1,    -1,    40,    -1,    -1,    43,    -1,    -1,    -1,    -1,
-    48,    49,    50,    -1,    -1,    -1,    54,    55,    -1,    -1,
-    -1,    59,    60,    -1,    -1,    -1,    64,    -1,    66,    -1,
-    -1,    -1,    -1,    71,    -1,    -1,    -1,    75,    -1,    -1,
-     1,    79,    80,     4,    -1,     6,     7,    -1,    -1,    -1,
-    -1,    12,    13,    14,    -1,    -1,    -1,    -1,     1,    -1,
-    -1,     4,    -1,     6,     7,    -1,    -1,    28,    -1,    12,
-    13,    14,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    45,    28,    -1,    -1,    -1,    -1,
-    -1,    -1,     1,    -1,     3,     4,     5,     6,     7,    -1,
-    -1,    -1,    45,    12,    13,    14,    67,    68,    69,    70,
-    -1,    72,    -1,    -1,    -1,    -1,    77,    78,    27,    28,
-    -1,    30,    31,    -1,    67,    68,    69,    70,    -1,    72,
-    -1,    -1,    -1,    -1,    77,    78,    45,    -1,    -1,    48,
-    49,    50,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    59,    -1,    61,    62,    63,    -1,    -1,    -1,    67,    -1,
-    -1,    -1,    71,    72,    73,    74,    -1,     1,    77,     3,
-     4,     5,     6,     7,    -1,    -1,    -1,    -1,    12,    13,
-    14,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    28,     1,    30,     3,     4,     5,
-     6,     7,    -1,    -1,    -1,    -1,    12,    13,    14,    -1,
-    -1,    45,    -1,    -1,    48,    49,    50,    -1,    -1,    -1,
-    -1,    -1,    28,    -1,    30,    59,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,    72,    45,
-    -1,    -1,    -1,    77,    50,     1,    -1,     3,     4,     5,
-     6,     7,    -1,    59,    10,    -1,    12,    13,    14,    -1,
-    -1,    67,    -1,    -1,     1,    -1,    72,     4,     5,     6,
-     7,    77,    28,    10,    30,    12,    13,    14,     4,     5,
-     6,     7,    -1,    -1,    -1,    -1,    12,    13,    14,    45,
-    -1,    28,    -1,    30,    -1,    -1,    -1,     4,     5,     6,
-     7,    -1,    28,    -1,    30,    12,    13,    14,    45,    -1,
-    -1,    67,    -1,    -1,    -1,    -1,    72,    -1,    -1,    45,
-    76,    28,    -1,    30,    -1,    -1,    -1,    -1,    -1,    -1,
-    67,    -1,    -1,    -1,    -1,    72,    -1,    -1,    45,    76,
-    -1,    67,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,
-    -1,    77,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    67,    -1,    -1,     3,     4,    72,     6,     7,    -1,    -1,
-    77,    11,    12,    13,    14,    15,    16,    17,    18,    19,
-    20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
-    -1,     3,     4,    -1,     6,     7,    -1,    -1,    38,    11,
-    12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-    22,    23,    24,    25,    26,    27,    28,    29,    -1,    59,
-    -1,    -1,    -1,    -1,    -1,    -1,    38,     3,     4,    -1,
-     6,     7,    72,    -1,    -1,    11,    12,    13,    14,    15,
-    16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
-    26,    27,    28,    29,    -1,     3,     4,    -1,     6,     7,
-    72,    -1,    38,    11,    12,    13,    14,    15,    16,    17,
-    18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
-    28,    29,    -1,    -1,     4,    -1,     6,     7,    -1,    -1,
-    38,    -1,    12,    13,    14,    -1,    72,     4,     5,     6,
-     7,    -1,    -1,    10,    -1,    12,    13,    14,    28,     4,
-     5,     6,     7,    -1,    -1,    10,    -1,    12,    13,    14,
-    -1,    28,    -1,    30,    72,    45,    -1,    -1,    -1,    -1,
-    50,    -1,    -1,    28,    -1,    30,    -1,    -1,    45,    59,
-    60,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,
-    45,    -1,    72,    -1,     4,     5,     6,     7,    -1,    -1,
-    67,    -1,    12,    13,    14,    72,     4,     5,     6,     7,
-    -1,    -1,    67,    -1,    12,    13,    14,    72,    28,     4,
-    30,     6,     7,    -1,    -1,    -1,    -1,    12,    13,    14,
-    28,    -1,    -1,    -1,    -1,    45,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    28,    -1,    -1,    -1,    45,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,
-    45,    -1,    72,    10,    -1,    -1,    -1,    -1,    -1,    67,
-    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    67,    -1,    -1,    -1,    -1,    72,    35,    36,
-    37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
-    47,    48,    49,    50,    51,    52,    30,    -1,    -1,    -1,
-    -1,    35,    36,    37,    -1,    39,    40,    41,    42,    43,
+    -1,    -1,    54,    55,    -1,    -1,    -1,    59,    60,    -1,
+    -1,    -1,    64,    -1,    66,    -1,    -1,    -1,    -1,    71,
+    -1,    -1,    -1,    75,    -1,    -1,     1,    79,    80,     4,
+    -1,     6,     7,    -1,    -1,    -1,    -1,    12,    13,    14,
+    -1,    -1,    -1,    -1,     1,    -1,    -1,     4,    -1,     6,
+     7,    -1,    -1,    28,    -1,    12,    13,    14,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    45,    28,    -1,    -1,    -1,    -1,    -1,    -1,     1,    -1,
+     3,     4,     5,     6,     7,    -1,    -1,    -1,    45,    12,
+    13,    14,    67,    68,    69,    70,    -1,    72,    -1,    -1,
+    -1,    -1,    77,    78,    27,    28,    -1,    30,    31,    -1,
+    67,    68,    69,    70,    -1,    72,    -1,    -1,    -1,    -1,
+    77,    78,    45,    -1,    -1,    48,    49,    50,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    59,    -1,    61,    62,
+    63,    -1,    -1,    -1,    67,    -1,    -1,    -1,    71,    72,
+    73,    74,    -1,     1,    77,     3,     4,     5,     6,     7,
+    -1,    -1,    -1,    -1,    12,    13,    14,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    28,     1,    30,     3,     4,     5,     6,     7,    -1,    -1,
+    -1,    -1,    12,    13,    14,    -1,    -1,    45,    -1,    -1,
+    48,    49,    50,    -1,    -1,    -1,    -1,    -1,    28,    -1,
+    30,    59,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,
+    -1,    -1,    -1,    -1,    72,    45,    -1,    -1,    -1,    77,
+    50,     1,    -1,     3,     4,     5,     6,     7,    -1,    59,
+    10,    -1,    12,    13,    14,    -1,    -1,    67,    -1,    -1,
+     1,    -1,    72,     4,     5,     6,     7,    77,    28,    10,
+    30,    12,    13,    14,     4,     5,     6,     7,    -1,    -1,
+    -1,    -1,    12,    13,    14,    45,    -1,    28,    -1,    30,
+    -1,    -1,    -1,     4,     5,     6,     7,    -1,    28,    -1,
+    30,    12,    13,    14,    45,    -1,    -1,    67,    -1,    -1,
+    -1,    -1,    72,    -1,    -1,    45,    76,    28,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    67,     1,    -1,    -1,
+     4,    72,     6,     7,    45,    76,    -1,    67,    12,    13,
+    14,    -1,    72,    -1,    -1,    -1,    -1,    77,    -1,    -1,
+    -1,    -1,    -1,    -1,    28,    -1,    67,    31,    -1,    -1,
+    -1,    72,    -1,    -1,     3,     4,    77,     6,     7,    -1,
+    -1,    45,    11,    12,    13,    14,    15,    16,    17,    18,
+    19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
+    29,    -1,    -1,    67,    -1,    30,    -1,    -1,    72,    38,
+    35,    36,    37,    -1,    39,    40,    41,    42,    43,    44,
+    45,    46,    47,    48,    49,    50,    51,    52,    -1,    -1,
+    59,    -1,    -1,    -1,    -1,    -1,     3,     4,    -1,     6,
+     7,    -1,    -1,    72,    11,    12,    13,    14,    15,    16,
+    17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
+    27,    28,    29,    -1,     3,     4,    -1,     6,     7,    -1,
+    -1,    38,    11,    12,    13,    14,    15,    16,    17,    18,
+    19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
+    29,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    38,
+     3,     4,    -1,     6,     7,    72,    -1,    -1,    11,    12,
+    13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+    23,    24,    25,    26,    27,    28,    29,    -1,    -1,     4,
+    -1,     6,     7,    72,    -1,    38,    -1,    12,    13,    14,
+     4,     5,     6,     7,    -1,    -1,    10,    -1,    12,    13,
+    14,    -1,    -1,    28,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    28,    -1,    30,    -1,    -1,    72,
+    45,    -1,    -1,    -1,    -1,    50,    -1,    -1,    -1,    -1,
+    -1,    45,    -1,    -1,    59,    60,    -1,    -1,    -1,    -1,
+    -1,    -1,    67,    -1,    -1,    -1,    -1,    72,    -1,    -1,
+    -1,    -1,    -1,    67,     4,     5,     6,     7,    72,    -1,
+    10,    -1,    12,    13,    14,     4,     5,     6,     7,    -1,
+    -1,    -1,    -1,    12,    13,    14,    -1,    -1,    28,    -1,
+    30,    -1,    -1,    -1,     4,    -1,     6,     7,    -1,    28,
+    -1,    30,    12,    13,    14,    45,    -1,    -1,    -1,    -1,
+    -1,    -1,     4,    -1,     6,     7,    45,    -1,    28,    -1,
+    12,    13,    14,    -1,    -1,    -1,    -1,    67,    -1,    -1,
+    -1,    -1,    72,    -1,    -1,    45,    28,    -1,    67,    -1,
+    -1,    -1,    -1,    72,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    45,    -1,    -1,    -1,    67,    -1,    -1,
+    -1,    -1,    72,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,
+    72,    35,    36,    37,    38,    39,    40,    41,    42,    43,
     44,    45,    46,    47,    48,    49,    50,    51,    52,    35,
-    36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
-    46,    47,    48,    49,    50,    51,    52,    35,    36,    37,
-    -1,    39,    40,    41,    42,    43,    44,    45,    46,    47,
-    48,    49,    50,    51,    52
+    36,    37,    -1,    39,    40,    41,    42,    43,    44,    45,
+    46,    47,    48,    49,    50,    51,    52
 };
 /* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
-#line 3 "/usr/cygnus/progressive-98r1/share/bison.simple"
+#line 3 "/usr/lib/bison.simple"
 
 /* Skeleton output parser for bison,
    Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.
@@ -1849,7 +1868,7 @@ __yy_memcpy (char *to, char *from, int count)
 #endif
 #endif
 \f
-#line 196 "/usr/cygnus/progressive-98r1/share/bison.simple"
+#line 196 "/usr/lib/bison.simple"
 
 /* The user can define YYPARSE_PARAM as the name of an argument to be passed
    into yyparse.  The argument should have type void *.
@@ -2439,7 +2458,7 @@ case 64:
                  tree type = yyvsp[-5].ttype;
                  finish_init ();
 
-                 if (pedantic)
+                 if (pedantic && ! flag_isoc9x)
                    pedwarn ("ANSI C forbids constructor expressions");
                  if (TYPE_NAME (type) != 0)
                    {
@@ -3199,28 +3218,28 @@ case 203:
 { if (pedantic)
                    pedwarn ("ANSI C forbids empty initializer braces"); ;
     break;}
-case 207:
-#line 1219 "objc-parse.y"
-{ process_init_element (yyvsp[0].ttype); ;
-    break;}
-case 208:
+case 209:
 #line 1221 "objc-parse.y"
+{ set_init_label (yyvsp[-1].ttype); ;
+    break;}
+case 212:
+#line 1228 "objc-parse.y"
 { push_init_level (0); ;
     break;}
-case 209:
-#line 1223 "objc-parse.y"
+case 213:
+#line 1230 "objc-parse.y"
 { process_init_element (pop_init_level (0)); ;
     break;}
-case 211:
-#line 1229 "objc-parse.y"
-{ set_init_label (yyvsp[-1].ttype); ;
-    break;}
-case 213:
+case 214:
 #line 1232 "objc-parse.y"
-{ set_init_label (yyvsp[-1].ttype); ;
+{ process_init_element (yyvsp[0].ttype); ;
+    break;}
+case 218:
+#line 1243 "objc-parse.y"
+{ set_init_label (yyvsp[0].ttype); ;
     break;}
-case 215:
-#line 1238 "objc-parse.y"
+case 219:
+#line 1251 "objc-parse.y"
 { push_c_function_context ();
                  if (! start_function (current_declspecs, yyvsp[0].ttype,
                                        prefix_attributes, NULL_TREE, 1))
@@ -3230,17 +3249,17 @@ case 215:
                    }
                  reinit_parse_for_function (); ;
     break;}
-case 216:
-#line 1247 "objc-parse.y"
+case 220:
+#line 1260 "objc-parse.y"
 { store_parm_decls (); ;
     break;}
-case 217:
-#line 1255 "objc-parse.y"
+case 221:
+#line 1268 "objc-parse.y"
 { finish_function (1);
                  pop_c_function_context (); ;
     break;}
-case 218:
-#line 1261 "objc-parse.y"
+case 222:
+#line 1274 "objc-parse.y"
 { push_c_function_context ();
                  if (! start_function (current_declspecs, yyvsp[0].ttype,
                                        prefix_attributes, NULL_TREE, 1))
@@ -3250,197 +3269,198 @@ case 218:
                    }
                  reinit_parse_for_function (); ;
     break;}
-case 219:
-#line 1270 "objc-parse.y"
+case 223:
+#line 1283 "objc-parse.y"
 { store_parm_decls (); ;
     break;}
-case 220:
-#line 1278 "objc-parse.y"
+case 224:
+#line 1291 "objc-parse.y"
 { finish_function (1);
                  pop_c_function_context (); ;
     break;}
-case 223:
-#line 1294 "objc-parse.y"
+case 227:
+#line 1307 "objc-parse.y"
 { yyval.ttype = yyvsp[-1].ttype; ;
     break;}
-case 224:
-#line 1296 "objc-parse.y"
+case 228:
+#line 1309 "objc-parse.y"
 { yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ;
     break;}
-case 225:
-#line 1301 "objc-parse.y"
+case 229:
+#line 1314 "objc-parse.y"
 { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-3].ttype, yyvsp[-1].ttype); ;
     break;}
-case 226:
-#line 1303 "objc-parse.y"
+case 230:
+#line 1316 "objc-parse.y"
 { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-2].ttype, NULL_TREE); ;
     break;}
-case 227:
-#line 1305 "objc-parse.y"
+case 231:
+#line 1318 "objc-parse.y"
 { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
-case 228:
-#line 1312 "objc-parse.y"
+case 232:
+#line 1325 "objc-parse.y"
 { yyval.ttype = yyvsp[0].ttype; ;
     break;}
-case 231:
-#line 1324 "objc-parse.y"
+case 235:
+#line 1337 "objc-parse.y"
 { yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ;
     break;}
-case 232:
-#line 1329 "objc-parse.y"
+case 236:
+#line 1342 "objc-parse.y"
 { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-3].ttype, yyvsp[-1].ttype); ;
     break;}
-case 233:
-#line 1331 "objc-parse.y"
+case 237:
+#line 1344 "objc-parse.y"
 { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-2].ttype, NULL_TREE); ;
     break;}
-case 234:
-#line 1333 "objc-parse.y"
+case 238:
+#line 1346 "objc-parse.y"
 { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
-case 235:
-#line 1340 "objc-parse.y"
+case 239:
+#line 1353 "objc-parse.y"
 { yyval.ttype = yyvsp[0].ttype; ;
     break;}
-case 237:
-#line 1349 "objc-parse.y"
+case 241:
+#line 1362 "objc-parse.y"
 { yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ;
     break;}
-case 238:
-#line 1354 "objc-parse.y"
+case 242:
+#line 1367 "objc-parse.y"
 { yyval.ttype = yyvsp[-1].ttype; ;
     break;}
-case 239:
-#line 1356 "objc-parse.y"
+case 243:
+#line 1369 "objc-parse.y"
 { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
-case 240:
-#line 1358 "objc-parse.y"
+case 244:
+#line 1371 "objc-parse.y"
 { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-3].ttype, yyvsp[-1].ttype); ;
     break;}
-case 241:
-#line 1360 "objc-parse.y"
+case 245:
+#line 1373 "objc-parse.y"
 { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-2].ttype, NULL_TREE); ;
     break;}
-case 242:
-#line 1367 "objc-parse.y"
+case 246:
+#line 1380 "objc-parse.y"
 { yyval.ttype = yyvsp[0].ttype; ;
     break;}
-case 244:
-#line 1373 "objc-parse.y"
+case 248:
+#line 1386 "objc-parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
-case 245:
-#line 1375 "objc-parse.y"
+case 249:
+#line 1388 "objc-parse.y"
 { yyval.ttype = yyvsp[0].ttype; ;
     break;}
-case 246:
-#line 1380 "objc-parse.y"
+case 250:
+#line 1393 "objc-parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
-case 247:
-#line 1382 "objc-parse.y"
+case 251:
+#line 1395 "objc-parse.y"
 { yyval.ttype = yyvsp[0].ttype; ;
     break;}
-case 248:
-#line 1387 "objc-parse.y"
+case 252:
+#line 1400 "objc-parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
-case 249:
-#line 1389 "objc-parse.y"
+case 253:
+#line 1402 "objc-parse.y"
 { yyval.ttype = yyvsp[0].ttype; ;
     break;}
-case 250:
-#line 1394 "objc-parse.y"
+case 254:
+#line 1407 "objc-parse.y"
 { yyval.ttype = start_struct (RECORD_TYPE, yyvsp[-1].ttype);
                  /* Start scope of tag before parsing components.  */
                ;
     break;}
-case 251:
-#line 1398 "objc-parse.y"
+case 255:
+#line 1411 "objc-parse.y"
 { yyval.ttype = finish_struct (yyvsp[-3].ttype, yyvsp[-2].ttype, chainon (yyvsp[-6].ttype, yyvsp[0].ttype)); ;
     break;}
-case 252:
-#line 1400 "objc-parse.y"
+case 256:
+#line 1413 "objc-parse.y"
 { yyval.ttype = finish_struct (start_struct (RECORD_TYPE, NULL_TREE),
                                      yyvsp[-2].ttype, chainon (yyvsp[-4].ttype, yyvsp[0].ttype));
                ;
     break;}
-case 253:
-#line 1404 "objc-parse.y"
+case 257:
+#line 1417 "objc-parse.y"
 { yyval.ttype = xref_tag (RECORD_TYPE, yyvsp[0].ttype); ;
     break;}
-case 254:
-#line 1406 "objc-parse.y"
+case 258:
+#line 1419 "objc-parse.y"
 { yyval.ttype = start_struct (UNION_TYPE, yyvsp[-1].ttype); ;
     break;}
-case 255:
-#line 1408 "objc-parse.y"
+case 259:
+#line 1421 "objc-parse.y"
 { yyval.ttype = finish_struct (yyvsp[-3].ttype, yyvsp[-2].ttype, chainon (yyvsp[-6].ttype, yyvsp[0].ttype)); ;
     break;}
-case 256:
-#line 1410 "objc-parse.y"
+case 260:
+#line 1423 "objc-parse.y"
 { yyval.ttype = finish_struct (start_struct (UNION_TYPE, NULL_TREE),
                                      yyvsp[-2].ttype, chainon (yyvsp[-4].ttype, yyvsp[0].ttype));
                ;
     break;}
-case 257:
-#line 1414 "objc-parse.y"
+case 261:
+#line 1427 "objc-parse.y"
 { yyval.ttype = xref_tag (UNION_TYPE, yyvsp[0].ttype); ;
     break;}
-case 258:
-#line 1416 "objc-parse.y"
+case 262:
+#line 1429 "objc-parse.y"
 { yyvsp[0].itype = suspend_momentary ();
                  yyval.ttype = start_enum (yyvsp[-1].ttype); ;
     break;}
-case 259:
-#line 1419 "objc-parse.y"
+case 263:
+#line 1432 "objc-parse.y"
 { yyval.ttype= finish_enum (yyvsp[-4].ttype, nreverse (yyvsp[-3].ttype), chainon (yyvsp[-7].ttype, yyvsp[0].ttype));
                  resume_momentary (yyvsp[-5].itype); ;
     break;}
-case 260:
-#line 1422 "objc-parse.y"
+case 264:
+#line 1435 "objc-parse.y"
 { yyvsp[0].itype = suspend_momentary ();
                  yyval.ttype = start_enum (NULL_TREE); ;
     break;}
-case 261:
-#line 1425 "objc-parse.y"
+case 265:
+#line 1438 "objc-parse.y"
 { yyval.ttype= finish_enum (yyvsp[-4].ttype, nreverse (yyvsp[-3].ttype), chainon (yyvsp[-6].ttype, yyvsp[0].ttype));
                  resume_momentary (yyvsp[-5].itype); ;
     break;}
-case 262:
-#line 1428 "objc-parse.y"
+case 266:
+#line 1441 "objc-parse.y"
 { yyval.ttype = xref_tag (ENUMERAL_TYPE, yyvsp[0].ttype); ;
     break;}
-case 266:
-#line 1439 "objc-parse.y"
-{ if (pedantic) pedwarn ("comma at end of enumerator list"); ;
+case 270:
+#line 1452 "objc-parse.y"
+{ if (pedantic && ! flag_isoc9x)
+                   pedwarn ("comma at end of enumerator list"); ;
     break;}
-case 267:
-#line 1444 "objc-parse.y"
+case 271:
+#line 1458 "objc-parse.y"
 { yyval.ttype = yyvsp[0].ttype; ;
     break;}
-case 268:
-#line 1446 "objc-parse.y"
+case 272:
+#line 1460 "objc-parse.y"
 { yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype);
                  pedwarn ("no semicolon at end of struct or union"); ;
     break;}
-case 269:
-#line 1451 "objc-parse.y"
+case 273:
+#line 1465 "objc-parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
-case 270:
-#line 1453 "objc-parse.y"
+case 274:
+#line 1467 "objc-parse.y"
 { yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[-1].ttype); ;
     break;}
-case 271:
-#line 1455 "objc-parse.y"
+case 275:
+#line 1469 "objc-parse.y"
 { if (pedantic)
                    pedwarn ("extra semicolon in struct or union specified"); ;
     break;}
-case 272:
-#line 1459 "objc-parse.y"
+case 276:
+#line 1473 "objc-parse.y"
 {
                  tree interface = lookup_interface (yyvsp[-1].ttype);
 
@@ -3454,164 +3474,164 @@ case 272:
                    }
                ;
     break;}
-case 273:
-#line 1484 "objc-parse.y"
+case 277:
+#line 1498 "objc-parse.y"
 { yyval.ttype = yyvsp[0].ttype;
                  current_declspecs = TREE_VALUE (declspec_stack);
                  prefix_attributes = TREE_PURPOSE (declspec_stack);
                  declspec_stack = TREE_CHAIN (declspec_stack);
                  resume_momentary (yyvsp[-1].itype); ;
     break;}
-case 274:
-#line 1490 "objc-parse.y"
+case 278:
+#line 1504 "objc-parse.y"
 { if (pedantic)
                    pedwarn ("ANSI C forbids member declarations with no members");
                  shadow_tag(yyvsp[0].ttype);
                  yyval.ttype = NULL_TREE; ;
     break;}
-case 275:
-#line 1495 "objc-parse.y"
+case 279:
+#line 1509 "objc-parse.y"
 { yyval.ttype = yyvsp[0].ttype;
                  current_declspecs = TREE_VALUE (declspec_stack);
                  prefix_attributes = TREE_PURPOSE (declspec_stack);
                  declspec_stack = TREE_CHAIN (declspec_stack);
                  resume_momentary (yyvsp[-1].itype); ;
     break;}
-case 276:
-#line 1501 "objc-parse.y"
+case 280:
+#line 1515 "objc-parse.y"
 { if (pedantic)
                    pedwarn ("ANSI C forbids member declarations with no members");
                  shadow_tag(yyvsp[0].ttype);
                  yyval.ttype = NULL_TREE; ;
     break;}
-case 277:
-#line 1506 "objc-parse.y"
+case 281:
+#line 1520 "objc-parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
-case 278:
-#line 1508 "objc-parse.y"
+case 282:
+#line 1522 "objc-parse.y"
 { yyval.ttype = yyvsp[0].ttype;
                  pedantic = yyvsp[-1].itype; ;
     break;}
-case 280:
-#line 1515 "objc-parse.y"
+case 284:
+#line 1529 "objc-parse.y"
 { yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[0].ttype); ;
     break;}
-case 281:
-#line 1520 "objc-parse.y"
+case 285:
+#line 1534 "objc-parse.y"
 { yyval.ttype = grokfield (yyvsp[-3].filename, yyvsp[-2].lineno, yyvsp[-1].ttype, current_declspecs, NULL_TREE);
                  decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
     break;}
-case 282:
-#line 1524 "objc-parse.y"
+case 286:
+#line 1538 "objc-parse.y"
 { yyval.ttype = grokfield (yyvsp[-5].filename, yyvsp[-4].lineno, yyvsp[-3].ttype, current_declspecs, yyvsp[-1].ttype);
                  decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
     break;}
-case 283:
-#line 1527 "objc-parse.y"
+case 287:
+#line 1541 "objc-parse.y"
 { yyval.ttype = grokfield (yyvsp[-4].filename, yyvsp[-3].lineno, NULL_TREE, current_declspecs, yyvsp[-1].ttype);
                  decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
     break;}
-case 285:
-#line 1539 "objc-parse.y"
+case 289:
+#line 1553 "objc-parse.y"
 { if (yyvsp[-2].ttype == error_mark_node)
                    yyval.ttype = yyvsp[-2].ttype;
                  else
                    yyval.ttype = chainon (yyvsp[0].ttype, yyvsp[-2].ttype); ;
     break;}
-case 286:
-#line 1544 "objc-parse.y"
+case 290:
+#line 1558 "objc-parse.y"
 { yyval.ttype = error_mark_node; ;
     break;}
-case 287:
-#line 1550 "objc-parse.y"
+case 291:
+#line 1564 "objc-parse.y"
 { yyval.ttype = build_enumerator (yyvsp[0].ttype, NULL_TREE); ;
     break;}
-case 288:
-#line 1552 "objc-parse.y"
+case 292:
+#line 1566 "objc-parse.y"
 { yyval.ttype = build_enumerator (yyvsp[-2].ttype, yyvsp[0].ttype); ;
     break;}
-case 289:
-#line 1557 "objc-parse.y"
+case 293:
+#line 1571 "objc-parse.y"
 { yyval.ttype = build_tree_list (yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
-case 290:
-#line 1559 "objc-parse.y"
+case 294:
+#line 1573 "objc-parse.y"
 { yyval.ttype = build_tree_list (yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
-case 291:
-#line 1564 "objc-parse.y"
+case 295:
+#line 1578 "objc-parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
-case 293:
-#line 1570 "objc-parse.y"
+case 297:
+#line 1584 "objc-parse.y"
 { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE); ;
     break;}
-case 294:
-#line 1572 "objc-parse.y"
+case 298:
+#line 1586 "objc-parse.y"
 { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ;
     break;}
-case 295:
-#line 1577 "objc-parse.y"
+case 299:
+#line 1591 "objc-parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
-case 296:
-#line 1579 "objc-parse.y"
+case 300:
+#line 1593 "objc-parse.y"
 { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ;
     break;}
-case 297:
-#line 1584 "objc-parse.y"
+case 301:
+#line 1598 "objc-parse.y"
 { yyval.ttype = yyvsp[-1].ttype; ;
     break;}
-case 298:
-#line 1587 "objc-parse.y"
+case 302:
+#line 1601 "objc-parse.y"
 { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
-case 299:
-#line 1589 "objc-parse.y"
+case 303:
+#line 1603 "objc-parse.y"
 { yyval.ttype = make_pointer_declarator (yyvsp[0].ttype, NULL_TREE); ;
     break;}
-case 300:
-#line 1591 "objc-parse.y"
+case 304:
+#line 1605 "objc-parse.y"
 { yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ;
     break;}
-case 301:
-#line 1593 "objc-parse.y"
+case 305:
+#line 1607 "objc-parse.y"
 { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-3].ttype, yyvsp[-1].ttype); ;
     break;}
-case 302:
-#line 1595 "objc-parse.y"
+case 306:
+#line 1609 "objc-parse.y"
 { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-2].ttype, NULL_TREE); ;
     break;}
-case 303:
-#line 1597 "objc-parse.y"
+case 307:
+#line 1611 "objc-parse.y"
 { yyval.ttype = build_nt (CALL_EXPR, NULL_TREE, yyvsp[0].ttype, NULL_TREE); ;
     break;}
-case 304:
-#line 1599 "objc-parse.y"
+case 308:
+#line 1613 "objc-parse.y"
 { yyval.ttype = build_nt (ARRAY_REF, NULL_TREE, yyvsp[-1].ttype); ;
     break;}
-case 305:
-#line 1601 "objc-parse.y"
+case 309:
+#line 1615 "objc-parse.y"
 { yyval.ttype = build_nt (ARRAY_REF, NULL_TREE, NULL_TREE); ;
     break;}
-case 306:
-#line 1612 "objc-parse.y"
+case 310:
+#line 1626 "objc-parse.y"
 {
                  if (pedantic && yyvsp[0].ends_in_label)
                    pedwarn ("ANSI C forbids label at end of compound statement");
                ;
     break;}
-case 308:
-#line 1621 "objc-parse.y"
+case 312:
+#line 1635 "objc-parse.y"
 { yyval.ends_in_label = yyvsp[0].ends_in_label; ;
     break;}
-case 309:
-#line 1623 "objc-parse.y"
+case 313:
+#line 1637 "objc-parse.y"
 { yyval.ends_in_label = 0; ;
     break;}
-case 313:
-#line 1635 "objc-parse.y"
+case 317:
+#line 1649 "objc-parse.y"
 { emit_line_note (input_filename, lineno);
                  pushlevel (0);
                  clear_last_expr ();
@@ -3621,13 +3641,13 @@ case 313:
                    add_objc_decls ();
                ;
     break;}
-case 315:
-#line 1650 "objc-parse.y"
+case 319:
+#line 1664 "objc-parse.y"
 { if (pedantic)
                    pedwarn ("ANSI C forbids label declarations"); ;
     break;}
-case 318:
-#line 1661 "objc-parse.y"
+case 322:
+#line 1675 "objc-parse.y"
 { tree link;
                  for (link = yyvsp[-1].ttype; link; link = TREE_CHAIN (link))
                    {
@@ -3637,20 +3657,20 @@ case 318:
                    }
                ;
     break;}
-case 319:
-#line 1675 "objc-parse.y"
+case 323:
+#line 1689 "objc-parse.y"
 {;
     break;}
-case 321:
-#line 1679 "objc-parse.y"
+case 325:
+#line 1693 "objc-parse.y"
 { compstmt_count++; ;
     break;}
-case 322:
-#line 1682 "objc-parse.y"
+case 326:
+#line 1696 "objc-parse.y"
 { yyval.ttype = convert (void_type_node, integer_zero_node); ;
     break;}
-case 323:
-#line 1684 "objc-parse.y"
+case 327:
+#line 1698 "objc-parse.y"
 { emit_line_note (input_filename, lineno);
                  expand_end_bindings (getdecls (), 1, 0);
                  yyval.ttype = poplevel (1, 1, 0);
@@ -3659,8 +3679,8 @@ case 323:
                  else
                    pop_momentary (); ;
     break;}
-case 324:
-#line 1692 "objc-parse.y"
+case 328:
+#line 1706 "objc-parse.y"
 { emit_line_note (input_filename, lineno);
                  expand_end_bindings (getdecls (), kept_level_p (), 0);
                  yyval.ttype = poplevel (kept_level_p (), 0, 0);
@@ -3669,8 +3689,8 @@ case 324:
                  else
                    pop_momentary (); ;
     break;}
-case 325:
-#line 1700 "objc-parse.y"
+case 329:
+#line 1714 "objc-parse.y"
 { emit_line_note (input_filename, lineno);
                  expand_end_bindings (getdecls (), kept_level_p (), 0);
                  yyval.ttype = poplevel (kept_level_p (), 0, 0);
@@ -3679,8 +3699,8 @@ case 325:
                  else
                    pop_momentary (); ;
     break;}
-case 328:
-#line 1720 "objc-parse.y"
+case 332:
+#line 1734 "objc-parse.y"
 { emit_line_note (yyvsp[-5].filename, yyvsp[-4].lineno);
                  c_expand_start_cond (truthvalue_conversion (yyvsp[-1].ttype), 0, 
                                       compstmt_count);
@@ -3689,8 +3709,8 @@ case 328:
                  if_stmt_line = yyvsp[-4].lineno;
                  position_after_white_space (); ;
     break;}
-case 329:
-#line 1734 "objc-parse.y"
+case 333:
+#line 1748 "objc-parse.y"
 { stmt_count++;
                  compstmt_count++;
                  emit_line_note (yyvsp[-2].filename, yyvsp[-1].lineno);
@@ -3699,44 +3719,44 @@ case 329:
                  expand_start_loop_continue_elsewhere (1);
                  position_after_white_space (); ;
     break;}
-case 330:
-#line 1742 "objc-parse.y"
+case 334:
+#line 1756 "objc-parse.y"
 { expand_loop_continue_here (); ;
     break;}
-case 331:
-#line 1746 "objc-parse.y"
+case 335:
+#line 1760 "objc-parse.y"
 { yyval.filename = input_filename; ;
     break;}
-case 332:
-#line 1750 "objc-parse.y"
+case 336:
+#line 1764 "objc-parse.y"
 { yyval.lineno = lineno; ;
     break;}
-case 333:
-#line 1755 "objc-parse.y"
+case 337:
+#line 1769 "objc-parse.y"
 { ;
     break;}
-case 334:
-#line 1760 "objc-parse.y"
+case 338:
+#line 1774 "objc-parse.y"
 { ;
     break;}
-case 335:
-#line 1765 "objc-parse.y"
+case 339:
+#line 1779 "objc-parse.y"
 { yyval.ends_in_label = yyvsp[0].ends_in_label; ;
     break;}
-case 336:
-#line 1770 "objc-parse.y"
+case 340:
+#line 1784 "objc-parse.y"
 { yyval.ends_in_label = 0; ;
     break;}
-case 337:
-#line 1772 "objc-parse.y"
+case 341:
+#line 1786 "objc-parse.y"
 { yyval.ends_in_label = 1; ;
     break;}
-case 338:
-#line 1778 "objc-parse.y"
+case 342:
+#line 1792 "objc-parse.y"
 { stmt_count++; ;
     break;}
-case 340:
-#line 1781 "objc-parse.y"
+case 344:
+#line 1795 "objc-parse.y"
 { stmt_count++;
                  emit_line_note (yyvsp[-3].filename, yyvsp[-2].lineno);
 /* It appears that this should not be done--that a non-lvalue array
@@ -3754,20 +3774,20 @@ case 340:
                  iterator_expand (yyvsp[-1].ttype);
                  clear_momentary (); ;
     break;}
-case 341:
-#line 1798 "objc-parse.y"
+case 345:
+#line 1812 "objc-parse.y"
 { c_expand_start_else ();
                  yyvsp[-1].itype = stmt_count;
                  position_after_white_space (); ;
     break;}
-case 342:
-#line 1802 "objc-parse.y"
+case 346:
+#line 1816 "objc-parse.y"
 { c_expand_end_cond ();
                  if (extra_warnings && stmt_count == yyvsp[-3].itype)
                    warning ("empty body in an else-statement"); ;
     break;}
-case 343:
-#line 1806 "objc-parse.y"
+case 347:
+#line 1820 "objc-parse.y"
 { c_expand_end_cond ();
                  /* This warning is here instead of in simple_if, because we
                     do not want a warning if an empty if is followed by an
@@ -3777,12 +3797,12 @@ case 343:
                    warning_with_file_and_line (if_stmt_file, if_stmt_line,
                                                "empty body in an if-statement"); ;
     break;}
-case 344:
-#line 1818 "objc-parse.y"
+case 348:
+#line 1832 "objc-parse.y"
 { c_expand_end_cond (); ;
     break;}
-case 345:
-#line 1820 "objc-parse.y"
+case 349:
+#line 1834 "objc-parse.y"
 { stmt_count++;
                  emit_line_note (yyvsp[-2].filename, yyvsp[-1].lineno);
                  /* The emit_nop used to come before emit_line_note,
@@ -3793,8 +3813,8 @@ case 345:
                     We will see.  --rms, July 15, 1991.  */
                  emit_nop (); ;
     break;}
-case 346:
-#line 1830 "objc-parse.y"
+case 350:
+#line 1844 "objc-parse.y"
 { /* Don't start the loop till we have succeeded
                     in parsing the end test.  This is to make sure
                     that we end every loop we start.  */
@@ -3804,25 +3824,25 @@ case 346:
                                             truthvalue_conversion (yyvsp[-1].ttype));
                  position_after_white_space (); ;
     break;}
-case 347:
-#line 1839 "objc-parse.y"
+case 351:
+#line 1853 "objc-parse.y"
 { expand_end_loop (); ;
     break;}
-case 348:
-#line 1842 "objc-parse.y"
+case 352:
+#line 1856 "objc-parse.y"
 { emit_line_note (input_filename, lineno);
                  expand_exit_loop_if_false (NULL_PTR,
                                             truthvalue_conversion (yyvsp[-2].ttype));
                  expand_end_loop ();
                  clear_momentary (); ;
     break;}
-case 349:
-#line 1849 "objc-parse.y"
+case 353:
+#line 1863 "objc-parse.y"
 { expand_end_loop ();
                  clear_momentary (); ;
     break;}
-case 350:
-#line 1853 "objc-parse.y"
+case 354:
+#line 1867 "objc-parse.y"
 { stmt_count++;
                  emit_line_note (yyvsp[-5].filename, yyvsp[-4].lineno);
                  /* See comment in `while' alternative, above.  */
@@ -3834,13 +3854,13 @@ case 350:
                     fn without calling expand_end_loop.  */
                ;
     break;}
-case 351:
-#line 1865 "objc-parse.y"
+case 355:
+#line 1879 "objc-parse.y"
 { yyvsp[0].lineno = lineno;
                  yyval.filename = input_filename; ;
     break;}
-case 352:
-#line 1868 "objc-parse.y"
+case 356:
+#line 1882 "objc-parse.y"
 { 
                  /* Start the loop.  Doing this after parsing
                     all the expressions ensures we will end the loop.  */
@@ -3857,8 +3877,8 @@ case 352:
                  yyvsp[-2].filename = input_filename;
                  position_after_white_space (); ;
     break;}
-case 353:
-#line 1884 "objc-parse.y"
+case 357:
+#line 1898 "objc-parse.y"
 { /* Emit the increment expression, with a line number.  */
                  emit_line_note (yyvsp[-4].filename, yyvsp[-5].lineno);
                  expand_loop_continue_here ();
@@ -3870,8 +3890,8 @@ case 353:
                    pop_momentary ();
                  expand_end_loop (); ;
     break;}
-case 354:
-#line 1895 "objc-parse.y"
+case 358:
+#line 1909 "objc-parse.y"
 { stmt_count++;
                  emit_line_note (yyvsp[-5].filename, yyvsp[-4].lineno);
                  c_expand_start_case (yyvsp[-1].ttype);
@@ -3880,42 +3900,42 @@ case 354:
                  push_momentary ();
                  position_after_white_space (); ;
     break;}
-case 355:
-#line 1903 "objc-parse.y"
+case 359:
+#line 1917 "objc-parse.y"
 { expand_end_case (yyvsp[-3].ttype);
                  if (yychar == CONSTANT || yychar == STRING)
                    pop_momentary_nofree ();
                  else
                    pop_momentary (); ;
     break;}
-case 356:
-#line 1909 "objc-parse.y"
+case 360:
+#line 1923 "objc-parse.y"
 { stmt_count++;
                  emit_line_note (yyvsp[-3].filename, yyvsp[-2].lineno);
                  if ( ! expand_exit_something ())
                    error ("break statement not within loop or switch"); ;
     break;}
-case 357:
-#line 1914 "objc-parse.y"
+case 361:
+#line 1928 "objc-parse.y"
 { stmt_count++;
                  emit_line_note (yyvsp[-3].filename, yyvsp[-2].lineno);
                  if (! expand_continue_loop (NULL_PTR))
                    error ("continue statement not within a loop"); ;
     break;}
-case 358:
-#line 1919 "objc-parse.y"
+case 362:
+#line 1933 "objc-parse.y"
 { stmt_count++;
                  emit_line_note (yyvsp[-3].filename, yyvsp[-2].lineno);
                  c_expand_return (NULL_TREE); ;
     break;}
-case 359:
-#line 1923 "objc-parse.y"
+case 363:
+#line 1937 "objc-parse.y"
 { stmt_count++;
                  emit_line_note (yyvsp[-4].filename, yyvsp[-3].lineno);
                  c_expand_return (yyvsp[-1].ttype); ;
     break;}
-case 360:
-#line 1927 "objc-parse.y"
+case 364:
+#line 1941 "objc-parse.y"
 { stmt_count++;
                  emit_line_note (yyvsp[-7].filename, yyvsp[-6].lineno);
                  STRIP_NOPS (yyvsp[-2].ttype);
@@ -3926,32 +3946,32 @@ case 360:
                  else
                    error ("argument of `asm' is not a constant string"); ;
     break;}
-case 361:
-#line 1938 "objc-parse.y"
+case 365:
+#line 1952 "objc-parse.y"
 { stmt_count++;
                  emit_line_note (yyvsp[-9].filename, yyvsp[-8].lineno);
                  c_expand_asm_operands (yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE, NULL_TREE,
                                         yyvsp[-6].ttype == ridpointers[(int)RID_VOLATILE],
                                         input_filename, lineno); ;
     break;}
-case 362:
-#line 1945 "objc-parse.y"
+case 366:
+#line 1959 "objc-parse.y"
 { stmt_count++;
                  emit_line_note (yyvsp[-11].filename, yyvsp[-10].lineno);
                  c_expand_asm_operands (yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE,
                                         yyvsp[-8].ttype == ridpointers[(int)RID_VOLATILE],
                                         input_filename, lineno); ;
     break;}
-case 363:
-#line 1953 "objc-parse.y"
+case 367:
+#line 1967 "objc-parse.y"
 { stmt_count++;
                  emit_line_note (yyvsp[-13].filename, yyvsp[-12].lineno);
                  c_expand_asm_operands (yyvsp[-8].ttype, yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype,
                                         yyvsp[-10].ttype == ridpointers[(int)RID_VOLATILE],
                                         input_filename, lineno); ;
     break;}
-case 364:
-#line 1959 "objc-parse.y"
+case 368:
+#line 1973 "objc-parse.y"
 { tree decl;
                  stmt_count++;
                  emit_line_note (yyvsp[-4].filename, yyvsp[-3].lineno);
@@ -3963,16 +3983,16 @@ case 364:
                    }
                ;
     break;}
-case 365:
-#line 1970 "objc-parse.y"
+case 369:
+#line 1984 "objc-parse.y"
 { if (pedantic)
                    pedwarn ("ANSI C forbids `goto *expr;'");
                  stmt_count++;
                  emit_line_note (yyvsp[-5].filename, yyvsp[-4].lineno);
                  expand_computed_goto (convert (ptr_type_node, yyvsp[-1].ttype)); ;
     break;}
-case 368:
-#line 1985 "objc-parse.y"
+case 372:
+#line 1999 "objc-parse.y"
 {
            /* The value returned by this action is  */
            /*      1 if everything is OK */ 
@@ -3994,15 +4014,15 @@ case 368:
              }
          ;
     break;}
-case 369:
-#line 2006 "objc-parse.y"
+case 373:
+#line 2020 "objc-parse.y"
 {
            if (yyvsp[-1].itype)
              iterator_for_loop_end (yyvsp[-3].ttype);
          ;
     break;}
-case 370:
-#line 2041 "objc-parse.y"
+case 374:
+#line 2055 "objc-parse.y"
 { register tree value = check_case_value (yyvsp[-1].ttype);
                  register tree label
                    = build_decl (LABEL_DECL, NULL_TREE, NULL_TREE);
@@ -4034,8 +4054,8 @@ case 370:
                    }
                  position_after_white_space (); ;
     break;}
-case 371:
-#line 2072 "objc-parse.y"
+case 375:
+#line 2086 "objc-parse.y"
 { register tree value1 = check_case_value (yyvsp[-3].ttype);
                  register tree value2 = check_case_value (yyvsp[-1].ttype);
                  register tree label
@@ -4067,8 +4087,8 @@ case 371:
                    }
                  position_after_white_space (); ;
     break;}
-case 372:
-#line 2103 "objc-parse.y"
+case 376:
+#line 2117 "objc-parse.y"
 {
                  tree duplicate;
                  register tree label
@@ -4084,8 +4104,8 @@ case 372:
                    }
                  position_after_white_space (); ;
     break;}
-case 373:
-#line 2118 "objc-parse.y"
+case 377:
+#line 2132 "objc-parse.y"
 { tree label = define_label (input_filename, lineno, yyvsp[-1].ttype);
                  stmt_count++;
                  emit_nop ();
@@ -4093,53 +4113,53 @@ case 373:
                    expand_label (label);
                  position_after_white_space (); ;
     break;}
-case 374:
-#line 2130 "objc-parse.y"
+case 378:
+#line 2144 "objc-parse.y"
 { emit_line_note (input_filename, lineno);
                  yyval.ttype = NULL_TREE; ;
     break;}
-case 375:
-#line 2133 "objc-parse.y"
+case 379:
+#line 2147 "objc-parse.y"
 { emit_line_note (input_filename, lineno); ;
     break;}
-case 376:
-#line 2138 "objc-parse.y"
+case 380:
+#line 2152 "objc-parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
-case 378:
-#line 2145 "objc-parse.y"
+case 382:
+#line 2159 "objc-parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
-case 381:
-#line 2152 "objc-parse.y"
+case 385:
+#line 2166 "objc-parse.y"
 { yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[0].ttype); ;
     break;}
-case 382:
-#line 2157 "objc-parse.y"
+case 386:
+#line 2171 "objc-parse.y"
 { yyval.ttype = build_tree_list (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
     break;}
-case 383:
-#line 2162 "objc-parse.y"
+case 387:
+#line 2176 "objc-parse.y"
 { yyval.ttype = tree_cons (NULL_TREE, combine_strings (yyvsp[0].ttype), NULL_TREE); ;
     break;}
-case 384:
-#line 2164 "objc-parse.y"
+case 388:
+#line 2178 "objc-parse.y"
 { yyval.ttype = tree_cons (NULL_TREE, combine_strings (yyvsp[0].ttype), yyvsp[-2].ttype); ;
     break;}
-case 385:
-#line 2170 "objc-parse.y"
+case 389:
+#line 2184 "objc-parse.y"
 { pushlevel (0);
                  clear_parm_order ();
                  declare_parm_level (0); ;
     break;}
-case 386:
-#line 2174 "objc-parse.y"
+case 390:
+#line 2188 "objc-parse.y"
 { yyval.ttype = yyvsp[0].ttype;
                  parmlist_tags_warning ();
                  poplevel (0, 0, 0); ;
     break;}
-case 388:
-#line 2182 "objc-parse.y"
+case 392:
+#line 2196 "objc-parse.y"
 { tree parm;
                  if (pedantic)
                    pedwarn ("ANSI C forbids forward parameter declarations");
@@ -4148,20 +4168,20 @@ case 388:
                    TREE_ASM_WRITTEN (parm) = 1;
                  clear_parm_order (); ;
     break;}
-case 389:
-#line 2190 "objc-parse.y"
+case 393:
+#line 2204 "objc-parse.y"
 { yyval.ttype = yyvsp[0].ttype; ;
     break;}
-case 390:
-#line 2192 "objc-parse.y"
+case 394:
+#line 2206 "objc-parse.y"
 { yyval.ttype = tree_cons (NULL_TREE, NULL_TREE, NULL_TREE); ;
     break;}
-case 391:
-#line 2198 "objc-parse.y"
+case 395:
+#line 2212 "objc-parse.y"
 { yyval.ttype = get_parm_info (0); ;
     break;}
-case 392:
-#line 2200 "objc-parse.y"
+case 396:
+#line 2214 "objc-parse.y"
 { yyval.ttype = get_parm_info (0);
                  /* Gcc used to allow this as an extension.  However, it does
                     not work for all targets, and thus has been disabled.
@@ -4172,24 +4192,24 @@ case 392:
                  error ("ANSI C requires a named argument before `...'");
                ;
     break;}
-case 393:
-#line 2210 "objc-parse.y"
+case 397:
+#line 2224 "objc-parse.y"
 { yyval.ttype = get_parm_info (1); ;
     break;}
-case 394:
-#line 2212 "objc-parse.y"
+case 398:
+#line 2226 "objc-parse.y"
 { yyval.ttype = get_parm_info (0); ;
     break;}
-case 395:
-#line 2217 "objc-parse.y"
+case 399:
+#line 2231 "objc-parse.y"
 { push_parm_decl (yyvsp[0].ttype); ;
     break;}
-case 396:
-#line 2219 "objc-parse.y"
+case 400:
+#line 2233 "objc-parse.y"
 { push_parm_decl (yyvsp[0].ttype); ;
     break;}
-case 397:
-#line 2226 "objc-parse.y"
+case 401:
+#line 2240 "objc-parse.y"
 { yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
                                                         yyvsp[-1].ttype),
                                        build_tree_list (prefix_attributes,
@@ -4199,8 +4219,8 @@ case 397:
                  declspec_stack = TREE_CHAIN (declspec_stack);
                  resume_momentary (yyvsp[-2].itype); ;
     break;}
-case 398:
-#line 2235 "objc-parse.y"
+case 402:
+#line 2249 "objc-parse.y"
 { yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
                                                         yyvsp[-1].ttype),
                                        build_tree_list (prefix_attributes,
@@ -4210,8 +4230,8 @@ case 398:
                  declspec_stack = TREE_CHAIN (declspec_stack);
                  resume_momentary (yyvsp[-2].itype); ;
     break;}
-case 399:
-#line 2244 "objc-parse.y"
+case 403:
+#line 2258 "objc-parse.y"
 { yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
                                                         yyvsp[-1].ttype),
                                        build_tree_list (prefix_attributes,
@@ -4221,8 +4241,8 @@ case 399:
                  declspec_stack = TREE_CHAIN (declspec_stack);
                  resume_momentary (yyvsp[-2].itype); ;
     break;}
-case 400:
-#line 2253 "objc-parse.y"
+case 404:
+#line 2267 "objc-parse.y"
 { yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
                                                         yyvsp[-1].ttype),
                                        build_tree_list (prefix_attributes,
@@ -4232,8 +4252,8 @@ case 400:
                  declspec_stack = TREE_CHAIN (declspec_stack);
                  resume_momentary (yyvsp[-2].itype);  ;
     break;}
-case 401:
-#line 2263 "objc-parse.y"
+case 405:
+#line 2277 "objc-parse.y"
 { yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
                                                         yyvsp[-1].ttype),
                                        build_tree_list (prefix_attributes,
@@ -4243,49 +4263,49 @@ case 401:
                  declspec_stack = TREE_CHAIN (declspec_stack);
                  resume_momentary (yyvsp[-2].itype);  ;
     break;}
-case 402:
-#line 2277 "objc-parse.y"
+case 406:
+#line 2291 "objc-parse.y"
 { pushlevel (0);
                  clear_parm_order ();
                  declare_parm_level (1); ;
     break;}
-case 403:
-#line 2281 "objc-parse.y"
+case 407:
+#line 2295 "objc-parse.y"
 { yyval.ttype = yyvsp[0].ttype;
                  parmlist_tags_warning ();
                  poplevel (0, 0, 0); ;
     break;}
-case 405:
-#line 2289 "objc-parse.y"
+case 409:
+#line 2303 "objc-parse.y"
 { tree t;
                  for (t = yyvsp[-1].ttype; t; t = TREE_CHAIN (t))
                    if (TREE_VALUE (t) == NULL_TREE)
                      error ("`...' in old-style identifier list");
                  yyval.ttype = tree_cons (NULL_TREE, NULL_TREE, yyvsp[-1].ttype); ;
     break;}
-case 406:
-#line 2299 "objc-parse.y"
+case 410:
+#line 2313 "objc-parse.y"
 { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;
     break;}
-case 407:
-#line 2301 "objc-parse.y"
+case 411:
+#line 2315 "objc-parse.y"
 { yyval.ttype = chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
     break;}
-case 408:
-#line 2307 "objc-parse.y"
+case 412:
+#line 2321 "objc-parse.y"
 { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;
     break;}
-case 409:
-#line 2309 "objc-parse.y"
+case 413:
+#line 2323 "objc-parse.y"
 { yyval.ttype = chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
     break;}
-case 410:
-#line 2314 "objc-parse.y"
+case 414:
+#line 2328 "objc-parse.y"
 { yyval.itype = pedantic;
                  pedantic = 0; ;
     break;}
-case 416:
-#line 2327 "objc-parse.y"
+case 420:
+#line 2341 "objc-parse.y"
 {
                  if (objc_implementation_context)
                     {
@@ -4297,115 +4317,115 @@ case 416:
                    warning ("`@end' must appear in an implementation context");
                ;
     break;}
-case 417:
-#line 2342 "objc-parse.y"
+case 421:
+#line 2356 "objc-parse.y"
 { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;
     break;}
-case 418:
-#line 2344 "objc-parse.y"
+case 422:
+#line 2358 "objc-parse.y"
 { yyval.ttype = chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
     break;}
-case 419:
-#line 2349 "objc-parse.y"
+case 423:
+#line 2363 "objc-parse.y"
 {
                  objc_declare_class (yyvsp[-1].ttype);
                ;
     break;}
-case 420:
-#line 2355 "objc-parse.y"
+case 424:
+#line 2369 "objc-parse.y"
 {
                  objc_declare_alias (yyvsp[-2].ttype, yyvsp[-1].ttype);
                ;
     break;}
-case 421:
-#line 2361 "objc-parse.y"
+case 425:
+#line 2375 "objc-parse.y"
 {
                  objc_interface_context = objc_ivar_context
                    = start_class (CLASS_INTERFACE_TYPE, yyvsp[-2].ttype, NULL_TREE, yyvsp[-1].ttype);
                   objc_public_flag = 0;
                ;
     break;}
-case 422:
-#line 2367 "objc-parse.y"
+case 426:
+#line 2381 "objc-parse.y"
 {
                   continue_class (objc_interface_context);
                ;
     break;}
-case 423:
-#line 2372 "objc-parse.y"
+case 427:
+#line 2386 "objc-parse.y"
 {
                  finish_class (objc_interface_context);
                  objc_interface_context = NULL_TREE;
                ;
     break;}
-case 424:
-#line 2378 "objc-parse.y"
+case 428:
+#line 2392 "objc-parse.y"
 {
                  objc_interface_context
                    = start_class (CLASS_INTERFACE_TYPE, yyvsp[-1].ttype, NULL_TREE, yyvsp[0].ttype);
                   continue_class (objc_interface_context);
                ;
     break;}
-case 425:
-#line 2385 "objc-parse.y"
+case 429:
+#line 2399 "objc-parse.y"
 {
                  finish_class (objc_interface_context);
                  objc_interface_context = NULL_TREE;
                ;
     break;}
-case 426:
-#line 2391 "objc-parse.y"
+case 430:
+#line 2405 "objc-parse.y"
 {
                  objc_interface_context = objc_ivar_context
                    = start_class (CLASS_INTERFACE_TYPE, yyvsp[-4].ttype, yyvsp[-2].ttype, yyvsp[-1].ttype);
                   objc_public_flag = 0;
                ;
     break;}
-case 427:
-#line 2397 "objc-parse.y"
+case 431:
+#line 2411 "objc-parse.y"
 {
                   continue_class (objc_interface_context);
                ;
     break;}
-case 428:
-#line 2402 "objc-parse.y"
+case 432:
+#line 2416 "objc-parse.y"
 {
                  finish_class (objc_interface_context);
                  objc_interface_context = NULL_TREE;
                ;
     break;}
-case 429:
-#line 2408 "objc-parse.y"
+case 433:
+#line 2422 "objc-parse.y"
 {
                  objc_interface_context
                    = start_class (CLASS_INTERFACE_TYPE, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype);
                   continue_class (objc_interface_context);
                ;
     break;}
-case 430:
-#line 2415 "objc-parse.y"
+case 434:
+#line 2429 "objc-parse.y"
 {
                  finish_class (objc_interface_context);
                  objc_interface_context = NULL_TREE;
                ;
     break;}
-case 431:
-#line 2421 "objc-parse.y"
+case 435:
+#line 2435 "objc-parse.y"
 {
                  objc_implementation_context = objc_ivar_context
                    = start_class (CLASS_IMPLEMENTATION_TYPE, yyvsp[-1].ttype, NULL_TREE, NULL_TREE);
                   objc_public_flag = 0;
                ;
     break;}
-case 432:
-#line 2427 "objc-parse.y"
+case 436:
+#line 2441 "objc-parse.y"
 {
                   objc_ivar_chain
                    = continue_class (objc_implementation_context);
                ;
     break;}
-case 433:
-#line 2433 "objc-parse.y"
+case 437:
+#line 2447 "objc-parse.y"
 {
                  objc_implementation_context
                    = start_class (CLASS_IMPLEMENTATION_TYPE, yyvsp[0].ttype, NULL_TREE, NULL_TREE);
@@ -4413,23 +4433,23 @@ case 433:
                    = continue_class (objc_implementation_context);
                ;
     break;}
-case 434:
-#line 2441 "objc-parse.y"
+case 438:
+#line 2455 "objc-parse.y"
 {
                  objc_implementation_context = objc_ivar_context
                    = start_class (CLASS_IMPLEMENTATION_TYPE, yyvsp[-3].ttype, yyvsp[-1].ttype, NULL_TREE);
                   objc_public_flag = 0;
                ;
     break;}
-case 435:
-#line 2447 "objc-parse.y"
+case 439:
+#line 2461 "objc-parse.y"
 {
                   objc_ivar_chain
                    = continue_class (objc_implementation_context);
                ;
     break;}
-case 436:
-#line 2453 "objc-parse.y"
+case 440:
+#line 2467 "objc-parse.y"
 {
                  objc_implementation_context
                    = start_class (CLASS_IMPLEMENTATION_TYPE, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE);
@@ -4437,23 +4457,23 @@ case 436:
                    = continue_class (objc_implementation_context);
                ;
     break;}
-case 437:
-#line 2461 "objc-parse.y"
+case 441:
+#line 2475 "objc-parse.y"
 {
                  objc_interface_context
                    = start_class (CATEGORY_INTERFACE_TYPE, yyvsp[-4].ttype, yyvsp[-2].ttype, yyvsp[0].ttype);
                   continue_class (objc_interface_context);
                ;
     break;}
-case 438:
-#line 2468 "objc-parse.y"
+case 442:
+#line 2482 "objc-parse.y"
 {
                  finish_class (objc_interface_context);
                  objc_interface_context = NULL_TREE;
                ;
     break;}
-case 439:
-#line 2474 "objc-parse.y"
+case 443:
+#line 2488 "objc-parse.y"
 {
                  objc_implementation_context
                    = start_class (CATEGORY_IMPLEMENTATION_TYPE, yyvsp[-3].ttype, yyvsp[-1].ttype, NULL_TREE);
@@ -4461,30 +4481,30 @@ case 439:
                    = continue_class (objc_implementation_context);
                ;
     break;}
-case 440:
-#line 2484 "objc-parse.y"
+case 444:
+#line 2498 "objc-parse.y"
 {
                  remember_protocol_qualifiers ();
                  objc_interface_context
                    = start_protocol(PROTOCOL_INTERFACE_TYPE, yyvsp[-1].ttype, yyvsp[0].ttype);
                ;
     break;}
-case 441:
-#line 2490 "objc-parse.y"
+case 445:
+#line 2504 "objc-parse.y"
 {
                  forget_protocol_qualifiers();
                  finish_protocol(objc_interface_context);
                  objc_interface_context = NULL_TREE;
                ;
     break;}
-case 442:
-#line 2499 "objc-parse.y"
+case 446:
+#line 2513 "objc-parse.y"
 {
                  yyval.ttype = NULL_TREE;
                ;
     break;}
-case 444:
-#line 2507 "objc-parse.y"
+case 448:
+#line 2521 "objc-parse.y"
 {
                  if (yyvsp[-2].code == LT_EXPR && yyvsp[0].code == GT_EXPR)
                    yyval.ttype = yyvsp[-1].ttype;
@@ -4492,57 +4512,57 @@ case 444:
                    YYERROR1;
                ;
     break;}
-case 447:
-#line 2521 "objc-parse.y"
+case 451:
+#line 2535 "objc-parse.y"
 { objc_public_flag = 2; ;
     break;}
-case 448:
-#line 2522 "objc-parse.y"
+case 452:
+#line 2536 "objc-parse.y"
 { objc_public_flag = 0; ;
     break;}
-case 449:
-#line 2523 "objc-parse.y"
+case 453:
+#line 2537 "objc-parse.y"
 { objc_public_flag = 1; ;
     break;}
-case 450:
-#line 2528 "objc-parse.y"
+case 454:
+#line 2542 "objc-parse.y"
 {
                   yyval.ttype = NULL_TREE;
                 ;
     break;}
-case 452:
-#line 2533 "objc-parse.y"
+case 456:
+#line 2547 "objc-parse.y"
 {
                   if (pedantic)
                    pedwarn ("extra semicolon in struct or union specified");
                 ;
     break;}
-case 453:
-#line 2551 "objc-parse.y"
+case 457:
+#line 2565 "objc-parse.y"
 { yyval.ttype = yyvsp[0].ttype;
                  current_declspecs = TREE_VALUE (declspec_stack);
                  prefix_attributes = TREE_PURPOSE (declspec_stack);
                  declspec_stack = TREE_CHAIN (declspec_stack);
                  resume_momentary (yyvsp[-1].itype); ;
     break;}
-case 454:
-#line 2557 "objc-parse.y"
+case 458:
+#line 2571 "objc-parse.y"
 { yyval.ttype = yyvsp[0].ttype;
                  current_declspecs = TREE_VALUE (declspec_stack);
                  prefix_attributes = TREE_PURPOSE (declspec_stack);
                  declspec_stack = TREE_CHAIN (declspec_stack);
                  resume_momentary (yyvsp[-1].itype); ;
     break;}
-case 455:
-#line 2563 "objc-parse.y"
+case 459:
+#line 2577 "objc-parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
-case 456:
-#line 2568 "objc-parse.y"
+case 460:
+#line 2582 "objc-parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
-case 459:
-#line 2575 "objc-parse.y"
+case 463:
+#line 2589 "objc-parse.y"
 {
                  yyval.ttype = add_instance_variable (objc_ivar_context,
                                              objc_public_flag,
@@ -4550,16 +4570,16 @@ case 459:
                                              NULL_TREE);
                 ;
     break;}
-case 460:
-#line 2582 "objc-parse.y"
+case 464:
+#line 2596 "objc-parse.y"
 {
                  yyval.ttype = add_instance_variable (objc_ivar_context,
                                              objc_public_flag,
                                              yyvsp[-2].ttype, current_declspecs, yyvsp[0].ttype);
                 ;
     break;}
-case 461:
-#line 2588 "objc-parse.y"
+case 465:
+#line 2602 "objc-parse.y"
 {
                  yyval.ttype = add_instance_variable (objc_ivar_context,
                                              objc_public_flag,
@@ -4567,8 +4587,8 @@ case 461:
                                              current_declspecs, yyvsp[0].ttype);
                 ;
     break;}
-case 462:
-#line 2598 "objc-parse.y"
+case 466:
+#line 2612 "objc-parse.y"
 {
                  remember_protocol_qualifiers ();
                  if (objc_implementation_context)
@@ -4577,8 +4597,8 @@ case 462:
                    fatal ("method definition not in class context");
                ;
     break;}
-case 463:
-#line 2606 "objc-parse.y"
+case 467:
+#line 2620 "objc-parse.y"
 {
                  forget_protocol_qualifiers ();
                  add_class_method (objc_implementation_context, yyvsp[0].ttype);
@@ -4586,21 +4606,21 @@ case 463:
                  objc_method_context = yyvsp[0].ttype;
                ;
     break;}
-case 464:
-#line 2613 "objc-parse.y"
+case 468:
+#line 2627 "objc-parse.y"
 {
                  continue_method_def ();
                ;
     break;}
-case 465:
-#line 2617 "objc-parse.y"
+case 469:
+#line 2631 "objc-parse.y"
 {
                  finish_method_def ();
                  objc_method_context = NULL_TREE;
                ;
     break;}
-case 466:
-#line 2623 "objc-parse.y"
+case 470:
+#line 2637 "objc-parse.y"
 {
                  remember_protocol_qualifiers ();
                  if (objc_implementation_context)
@@ -4609,8 +4629,8 @@ case 466:
                    fatal ("method definition not in class context");
                ;
     break;}
-case 467:
-#line 2631 "objc-parse.y"
+case 471:
+#line 2645 "objc-parse.y"
 {
                  forget_protocol_qualifiers ();
                  add_instance_method (objc_implementation_context, yyvsp[0].ttype);
@@ -4618,268 +4638,268 @@ case 467:
                  objc_method_context = yyvsp[0].ttype;
                ;
     break;}
-case 468:
-#line 2638 "objc-parse.y"
+case 472:
+#line 2652 "objc-parse.y"
 {
                  continue_method_def ();
                ;
     break;}
-case 469:
-#line 2642 "objc-parse.y"
+case 473:
+#line 2656 "objc-parse.y"
 {
                  finish_method_def ();
                  objc_method_context = NULL_TREE;
                ;
     break;}
-case 471:
-#line 2654 "objc-parse.y"
+case 475:
+#line 2668 "objc-parse.y"
 {yyval.ttype = NULL_TREE; ;
     break;}
-case 476:
-#line 2661 "objc-parse.y"
+case 480:
+#line 2675 "objc-parse.y"
 {yyval.ttype = NULL_TREE; ;
     break;}
-case 480:
-#line 2671 "objc-parse.y"
+case 484:
+#line 2685 "objc-parse.y"
 {
                  /* Remember protocol qualifiers in prototypes.  */
                  remember_protocol_qualifiers ();
                  objc_inherit_code = CLASS_METHOD_DECL;
                ;
     break;}
-case 481:
-#line 2677 "objc-parse.y"
+case 485:
+#line 2691 "objc-parse.y"
 {
                  /* Forget protocol qualifiers here.  */
                  forget_protocol_qualifiers ();
                  add_class_method (objc_interface_context, yyvsp[0].ttype);
                ;
     break;}
-case 483:
-#line 2685 "objc-parse.y"
+case 487:
+#line 2699 "objc-parse.y"
 {
                  /* Remember protocol qualifiers in prototypes.  */
                  remember_protocol_qualifiers ();
                  objc_inherit_code = INSTANCE_METHOD_DECL;
                ;
     break;}
-case 484:
-#line 2691 "objc-parse.y"
+case 488:
+#line 2705 "objc-parse.y"
 {
                  /* Forget protocol qualifiers here.  */
                  forget_protocol_qualifiers ();
                  add_instance_method (objc_interface_context, yyvsp[0].ttype);
                ;
     break;}
-case 486:
-#line 2701 "objc-parse.y"
+case 490:
+#line 2715 "objc-parse.y"
 {
                  yyval.ttype = build_method_decl (objc_inherit_code, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE);
                ;
     break;}
-case 487:
-#line 2706 "objc-parse.y"
+case 491:
+#line 2720 "objc-parse.y"
 {
                  yyval.ttype = build_method_decl (objc_inherit_code, NULL_TREE, yyvsp[0].ttype, NULL_TREE);
                ;
     break;}
-case 488:
-#line 2711 "objc-parse.y"
+case 492:
+#line 2725 "objc-parse.y"
 {
                  yyval.ttype = build_method_decl (objc_inherit_code, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype);
                ;
     break;}
-case 489:
-#line 2716 "objc-parse.y"
+case 493:
+#line 2730 "objc-parse.y"
 {
                  yyval.ttype = build_method_decl (objc_inherit_code, NULL_TREE, yyvsp[-1].ttype, yyvsp[0].ttype);
                ;
     break;}
-case 498:
-#line 2746 "objc-parse.y"
+case 502:
+#line 2760 "objc-parse.y"
 { current_declspecs = TREE_VALUE (declspec_stack);
                  prefix_attributes = TREE_PURPOSE (declspec_stack);
                  declspec_stack = TREE_CHAIN (declspec_stack);
                  resume_momentary (yyvsp[-2].itype); ;
     break;}
-case 499:
-#line 2751 "objc-parse.y"
+case 503:
+#line 2765 "objc-parse.y"
 { shadow_tag (yyvsp[-1].ttype); ;
     break;}
-case 500:
-#line 2753 "objc-parse.y"
+case 504:
+#line 2767 "objc-parse.y"
 { pedwarn ("empty declaration"); ;
     break;}
-case 501:
-#line 2758 "objc-parse.y"
+case 505:
+#line 2772 "objc-parse.y"
 { push_parm_decl (yyvsp[0].ttype); ;
     break;}
-case 502:
-#line 2760 "objc-parse.y"
+case 506:
+#line 2774 "objc-parse.y"
 { push_parm_decl (yyvsp[0].ttype); ;
     break;}
-case 503:
-#line 2768 "objc-parse.y"
+case 507:
+#line 2782 "objc-parse.y"
 { yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
                                                         yyvsp[-1].ttype),
                                        build_tree_list (prefix_attributes,
                                                         yyvsp[0].ttype)); ;
     break;}
-case 504:
-#line 2773 "objc-parse.y"
+case 508:
+#line 2787 "objc-parse.y"
 { yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
                                                         yyvsp[-1].ttype),
                                        build_tree_list (prefix_attributes,
                                                         yyvsp[0].ttype)); ;
     break;}
-case 505:
-#line 2778 "objc-parse.y"
+case 509:
+#line 2792 "objc-parse.y"
 { yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
                                                         yyvsp[-1].ttype),
                                        build_tree_list (prefix_attributes,
                                                         yyvsp[0].ttype)); ;
     break;}
-case 506:
-#line 2786 "objc-parse.y"
+case 510:
+#line 2800 "objc-parse.y"
 {
                  yyval.ttype = NULL_TREE;
                ;
     break;}
-case 507:
-#line 2790 "objc-parse.y"
+case 511:
+#line 2804 "objc-parse.y"
 {
                  /* oh what a kludge! */
                  yyval.ttype = (tree)1;
                ;
     break;}
-case 508:
-#line 2795 "objc-parse.y"
+case 512:
+#line 2809 "objc-parse.y"
 {
                  pushlevel (0);
                ;
     break;}
-case 509:
-#line 2799 "objc-parse.y"
+case 513:
+#line 2813 "objc-parse.y"
 {
                  /* returns a tree list node generated by get_parm_info */
                  yyval.ttype = yyvsp[0].ttype;
                  poplevel (0, 0, 0);
                ;
     break;}
-case 512:
-#line 2814 "objc-parse.y"
+case 516:
+#line 2828 "objc-parse.y"
 {
                  yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype);
                ;
     break;}
-case 517:
-#line 2827 "objc-parse.y"
-{ yyval.ttype = get_identifier (token_buffer); ;
-    break;}
-case 518:
-#line 2828 "objc-parse.y"
-{ yyval.ttype = get_identifier (token_buffer); ;
-    break;}
-case 519:
-#line 2829 "objc-parse.y"
-{ yyval.ttype = get_identifier (token_buffer); ;
-    break;}
-case 520:
-#line 2830 "objc-parse.y"
-{ yyval.ttype = get_identifier (token_buffer); ;
-    break;}
 case 521:
-#line 2831 "objc-parse.y"
+#line 2841 "objc-parse.y"
 { yyval.ttype = get_identifier (token_buffer); ;
     break;}
 case 522:
-#line 2832 "objc-parse.y"
+#line 2842 "objc-parse.y"
 { yyval.ttype = get_identifier (token_buffer); ;
     break;}
 case 523:
-#line 2833 "objc-parse.y"
+#line 2843 "objc-parse.y"
 { yyval.ttype = get_identifier (token_buffer); ;
     break;}
 case 524:
-#line 2834 "objc-parse.y"
+#line 2844 "objc-parse.y"
 { yyval.ttype = get_identifier (token_buffer); ;
     break;}
 case 525:
-#line 2835 "objc-parse.y"
+#line 2845 "objc-parse.y"
 { yyval.ttype = get_identifier (token_buffer); ;
     break;}
 case 526:
-#line 2836 "objc-parse.y"
+#line 2846 "objc-parse.y"
 { yyval.ttype = get_identifier (token_buffer); ;
     break;}
 case 527:
-#line 2837 "objc-parse.y"
+#line 2847 "objc-parse.y"
 { yyval.ttype = get_identifier (token_buffer); ;
     break;}
 case 528:
-#line 2838 "objc-parse.y"
+#line 2848 "objc-parse.y"
 { yyval.ttype = get_identifier (token_buffer); ;
     break;}
 case 529:
-#line 2839 "objc-parse.y"
+#line 2849 "objc-parse.y"
 { yyval.ttype = get_identifier (token_buffer); ;
     break;}
 case 530:
-#line 2840 "objc-parse.y"
+#line 2850 "objc-parse.y"
 { yyval.ttype = get_identifier (token_buffer); ;
     break;}
 case 531:
-#line 2841 "objc-parse.y"
+#line 2851 "objc-parse.y"
 { yyval.ttype = get_identifier (token_buffer); ;
     break;}
 case 532:
-#line 2842 "objc-parse.y"
+#line 2852 "objc-parse.y"
 { yyval.ttype = get_identifier (token_buffer); ;
     break;}
 case 533:
-#line 2843 "objc-parse.y"
+#line 2853 "objc-parse.y"
 { yyval.ttype = get_identifier (token_buffer); ;
     break;}
 case 534:
-#line 2844 "objc-parse.y"
+#line 2854 "objc-parse.y"
 { yyval.ttype = get_identifier (token_buffer); ;
     break;}
 case 535:
-#line 2845 "objc-parse.y"
+#line 2855 "objc-parse.y"
+{ yyval.ttype = get_identifier (token_buffer); ;
+    break;}
+case 536:
+#line 2856 "objc-parse.y"
+{ yyval.ttype = get_identifier (token_buffer); ;
+    break;}
+case 537:
+#line 2857 "objc-parse.y"
 { yyval.ttype = get_identifier (token_buffer); ;
     break;}
 case 538:
-#line 2851 "objc-parse.y"
+#line 2858 "objc-parse.y"
+{ yyval.ttype = get_identifier (token_buffer); ;
+    break;}
+case 539:
+#line 2859 "objc-parse.y"
+{ yyval.ttype = get_identifier (token_buffer); ;
+    break;}
+case 542:
+#line 2865 "objc-parse.y"
 {
                  yyval.ttype = build_keyword_decl (yyvsp[-5].ttype, yyvsp[-2].ttype, yyvsp[0].ttype);
                ;
     break;}
-case 539:
-#line 2856 "objc-parse.y"
+case 543:
+#line 2870 "objc-parse.y"
 {
                  yyval.ttype = build_keyword_decl (yyvsp[-2].ttype, NULL_TREE, yyvsp[0].ttype);
                ;
     break;}
-case 540:
-#line 2861 "objc-parse.y"
+case 544:
+#line 2875 "objc-parse.y"
 {
                  yyval.ttype = build_keyword_decl (NULL_TREE, yyvsp[-2].ttype, yyvsp[0].ttype);
                ;
     break;}
-case 541:
-#line 2866 "objc-parse.y"
+case 545:
+#line 2880 "objc-parse.y"
 {
                  yyval.ttype = build_keyword_decl (NULL_TREE, NULL_TREE, yyvsp[0].ttype);
                ;
     break;}
-case 545:
-#line 2879 "objc-parse.y"
+case 549:
+#line 2893 "objc-parse.y"
 {
                  yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype);
                ;
     break;}
-case 546:
-#line 2887 "objc-parse.y"
+case 550:
+#line 2901 "objc-parse.y"
 {
                  if (TREE_CHAIN (yyvsp[0].ttype) == NULL_TREE)
                    /* just return the expr., remove a level of indirection */
@@ -4889,77 +4909,77 @@ case 546:
                    yyval.ttype = yyvsp[0].ttype;
                ;
     break;}
-case 547:
-#line 2899 "objc-parse.y"
+case 551:
+#line 2913 "objc-parse.y"
 {
                  yyval.ttype = build_tree_list (yyvsp[-2].ttype, yyvsp[0].ttype);
                ;
     break;}
-case 548:
-#line 2903 "objc-parse.y"
+case 552:
+#line 2917 "objc-parse.y"
 {
                  yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype);
                ;
     break;}
-case 550:
-#line 2911 "objc-parse.y"
+case 554:
+#line 2925 "objc-parse.y"
 {
                  yyval.ttype = get_class_reference (yyvsp[0].ttype);
                ;
     break;}
-case 551:
-#line 2918 "objc-parse.y"
+case 555:
+#line 2932 "objc-parse.y"
 { objc_receiver_context = 1; ;
     break;}
-case 552:
-#line 2920 "objc-parse.y"
+case 556:
+#line 2934 "objc-parse.y"
 { objc_receiver_context = 0; ;
     break;}
-case 553:
-#line 2922 "objc-parse.y"
+case 557:
+#line 2936 "objc-parse.y"
 {
                  yyval.ttype = build_tree_list (yyvsp[-3].ttype, yyvsp[-1].ttype);
                ;
     break;}
-case 557:
-#line 2935 "objc-parse.y"
+case 561:
+#line 2949 "objc-parse.y"
 {
                  yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype);
                ;
     break;}
-case 558:
-#line 2942 "objc-parse.y"
+case 562:
+#line 2956 "objc-parse.y"
 {
                  yyval.ttype = build_tree_list (yyvsp[-1].ttype, NULL_TREE);
                ;
     break;}
-case 559:
-#line 2946 "objc-parse.y"
+case 563:
+#line 2960 "objc-parse.y"
 {
                  yyval.ttype = build_tree_list (NULL_TREE, NULL_TREE);
                ;
     break;}
-case 560:
-#line 2953 "objc-parse.y"
+case 564:
+#line 2967 "objc-parse.y"
 {
                  yyval.ttype = yyvsp[-1].ttype;
                ;
     break;}
-case 561:
-#line 2960 "objc-parse.y"
+case 565:
+#line 2974 "objc-parse.y"
 {
                  yyval.ttype = yyvsp[-1].ttype;
                ;
     break;}
-case 562:
-#line 2969 "objc-parse.y"
+case 566:
+#line 2983 "objc-parse.y"
 {
                  yyval.ttype = groktypename (yyvsp[-1].ttype);
                ;
     break;}
 }
    /* the action file gets copied in in place of this dollarsign */
-#line 498 "/usr/cygnus/progressive-98r1/share/bison.simple"
+#line 498 "/usr/lib/bison.simple"
 \f
   yyvsp -= yylen;
   yyssp -= yylen;
@@ -5155,5 +5175,5 @@ yyerrhandle:
   yystate = yyn;
   goto yynewstate;
 }
-#line 2974 "objc-parse.y"
+#line 2988 "objc-parse.y"
 
index bc98ff23489e065414aca119e5bcea8a204b240c..06465f7da3081f17054d9a719a863f486610219a 100644 (file)
@@ -82,7 +82,7 @@ char *language_string = "GNU Obj-C";
    yylval contains an IDENTIFIER_NODE which indicates which one.  */
 %token TYPESPEC
 
-/* Reserved words that qualify type: "const" or "volatile".
+/* Reserved words that qualify type: "const", "volatile", or "restrict".
    yylval contains an IDENTIFIER_NODE which indicates which one.  */
 %token TYPE_QUAL
 
@@ -483,7 +483,7 @@ cast_expr:
                  tree type = $2;
                  finish_init ();
 
-                 if (pedantic)
+                 if (pedantic && ! flag_isoc9x)
                    pedwarn ("ANSI C forbids constructor expressions");
                  if (TYPE_NAME (type) != 0)
                    {
@@ -1215,22 +1215,35 @@ initlist1:
 /* `initelt' is a single element of an initializer.
    It may use braces.  */
 initelt:
-       expr_no_commas
-               { process_init_element ($1); }
-       | '{' 
+         designator_list '=' initval
+       | designator initval
+       | identifier ':'
+               { set_init_label ($1); }
+         initval
+       | initval
+       ;
+
+initval:
+         '{'
                { push_init_level (0); }
          initlist_maybe_comma '}'
                { process_init_element (pop_init_level (0)); }
+       | expr_no_commas
+               { process_init_element ($1); }
        | error
+       ;
+
+designator_list:
+         designator
+       | designator_list designator
+       ;
+
+designator:
+         '.' identifier
+               { set_init_label ($2); }
        /* These are for labeled elements.  The syntax for an array element
           initializer conflicts with the syntax for an Objective-C message,
           so don't include these productions in the Objective-C grammar.  */
-       | identifier ':'
-               { set_init_label ($1); }
-         initelt
-       | '.' identifier '='
-               { set_init_label ($2); }
-         initelt
        ;
 \f
 nested_function:
@@ -1436,7 +1449,8 @@ maybecomma:
 maybecomma_warn:
          /* empty */
        | ','
-               { if (pedantic) pedwarn ("comma at end of enumerator list"); }
+               { if (pedantic && ! flag_isoc9x)
+                   pedwarn ("comma at end of enumerator list"); }
        ;
 
 component_decl_list:
index d40a0f374d0e79f66b025e414622c4b25c5f6932..cb3a3eb75d21edcaae60d944e9749453f0ec1789 100644 (file)
@@ -680,9 +680,9 @@ etruncui (x)
 }
 
 
-/* This is the REAL_VALUE_ATOF function.  It converts a decimal string to
-   binary, rounding off as indicated by the machine_mode argument.  Then it
-   promotes the rounded value to REAL_VALUE_TYPE.  */
+/* This is the REAL_VALUE_ATOF function.  It converts a decimal or hexadecimal
+   string to binary, rounding off as indicated by the machine_mode argument.
+   Then it promotes the rounded value to REAL_VALUE_TYPE.  */
 
 REAL_VALUE_TYPE 
 ereal_atof (s, t)
@@ -5058,7 +5058,7 @@ asctoe (s, y)
 }
 
 /* Convert ASCII string SS to e type Y, with a specified rounding precision
-   of OPREC bits.  */
+   of OPREC bits.  BASE is 16 for C9X hexadecimal floating constants.  */
 
 static void 
 asctoeg (ss, y, oprec)
@@ -5072,17 +5072,26 @@ asctoeg (ss, y, oprec)
   EMULONG lexp;
   unsigned EMUSHORT nsign, *p;
   char *sp, *s, *lstr;
+  int base = 10;
 
   /* Copy the input string.  */
   lstr = (char *) alloca (strlen (ss) + 1);
+
   s = ss;
   while (*s == ' ')            /* skip leading spaces */
     ++s;
+
   sp = lstr;
   while ((*sp++ = *s++) != '\0')
     ;
   s = lstr;
 
+  if (s[0] == '0' && (s[1] == 'x' || s[1] == 'X'))
+    {
+      base = 16;
+      s += 2;
+    }
+
   rndsav = rndprc;
   rndprc = NBITS;              /* Set to full precision */
   lost = 0;
@@ -5096,8 +5105,13 @@ asctoeg (ss, y, oprec)
   trail = 0;
 
  nxtcom:
+  if (*s >= '0' && *s <= '9')
   k = *s - '0';
-  if ((k >= 0) && (k <= 9))
+  else if (*s >= 'a')
+    k = 10 + *s - 'a';
+  else
+    k = 10 + *s - 'A';
+  if ((k >= 0) && (k < base))
     {
       /* Ignore leading zeros */
       if ((prec == 0) && (decflg == 0) && (k == 0))
@@ -5106,11 +5120,15 @@ asctoeg (ss, y, oprec)
       if ((trail == 0) && (decflg != 0))
        {
          sp = s;
-         while ((*sp >= '0') && (*sp <= '9'))
+         while ((*sp >= '0' && *sp <= '9')
+                || (base == 16 && ((*sp >= 'a' && *sp <= 'f')
+                                   || (*sp >= 'A' && *sp <= 'F'))))
            ++sp;
          /* Check for syntax error */
          c = *sp & 0x7f;
-         if ((c != 'e') && (c != 'E') && (c != '\0')
+         if ((base != 10 || ((c != 'e') && (c != 'E')))
+             && (base != 16 || ((c != 'p') && (c != 'P')))
+             && (c != '\0')
              && (c != '\n') && (c != '\r') && (c != ' ')
              && (c != ','))
            goto error;
@@ -5129,13 +5147,28 @@ asctoeg (ss, y, oprec)
 
       if (yy[2] == 0)
        {
+         if (base == 16)
+           {
          if (decflg)
+               nexp += 4;      /* count digits after decimal point */
+
+             eshup1 (yy);      /* multiply current number by 16 */
+             eshup1 (yy);
+             eshup1 (yy);
+             eshup1 (yy);
+           }
+         else
+           {
+             if (decflg)
            nexp += 1;          /* count digits after decimal point */
+
          eshup1 (yy);          /* multiply current number by 10 */
          emovz (yy, xt);
          eshup1 (xt);
          eshup1 (xt);
          eaddm (xt, yy);
+           }
+         /* Insert the current digit.  */
          ecleaz (xt);
          xt[NI - 2] = (unsigned EMUSHORT) k;
          eaddm (xt, yy);
@@ -5146,7 +5179,12 @@ asctoeg (ss, y, oprec)
          lost |= k;
          /* Count lost digits before the decimal point.  */
          if (decflg == 0)
+           {
+             if (base == 10)
            nexp -= 1;
+             else
+               nexp -= 4;
+       }
        }
       prec += 1;
       goto donchr;
@@ -5158,6 +5196,8 @@ asctoeg (ss, y, oprec)
       break;
     case 'E':
     case 'e':
+    case 'P':
+    case 'p':
       goto expnt;
     case '.':                  /* decimal point */
       if (decflg)
@@ -5224,24 +5264,19 @@ read_expnt:
     {
       exp *= 10;
       exp += *s++ - '0';
-      if (exp > -(MINDECEXP))
-       {
-         if (esign < 0)
-           goto zero;
-         else
-           goto infinite;
-       }
+      if (exp > 999999)
+       break;
     }
   if (esign < 0)
     exp = -exp;
-  if (exp > MAXDECEXP)
+  if ((exp > MAXDECEXP) && (base == 10))
     {
  infinite:
       ecleaz (yy);
       yy[E] = 0x7fff;          /* infinity */
       goto aexit;
     }
-  if (exp < MINDECEXP)
+  if ((exp < MINDECEXP) && (base == 10))
     {
  zero:
       ecleaz (yy);
@@ -5249,6 +5284,25 @@ read_expnt:
     }
 
  daldone:
+  if (base == 16)
+    {
+      /* Base 16 hexadecimal floating constant.  */
+      if ((k = enormlz (yy)) > NBITS)
+       {
+         ecleaz (yy);
+         goto aexit;
+       }
+      /* Adjust the exponent.  NEXP is the number of hex digits,
+         EXP is a power of 2.  */
+      lexp = (EXONE - 1 + NBITS) - k + yy[E] + exp - nexp;
+      if (lexp > 0x7fff)
+       goto infinite;
+      if (lexp < 0)
+       goto zero;
+      yy[E] = lexp;
+      goto expdon;
+    }
+
   nexp = exp - nexp;
   /* Pad trailing zeros to minimize power of 10, per IEEE spec.  */
   while ((nexp > 0) && (yy[2] == 0))
@@ -5270,6 +5324,7 @@ read_expnt:
     }
   lexp = (EXONE - 1 + NBITS) - k;
   emdnorm (yy, lost, 0, lexp, 64);
+  lost = 0;
 
   /* Convert to external format:
 
@@ -5325,6 +5380,7 @@ read_expnt:
       k = emulm (tt, yy);
       lexp -= EXONE - 1;
     }
+  lost = k;
 
  expdon:
 
@@ -5348,7 +5404,7 @@ read_expnt:
     lexp -= EXONE - 0201;
 #endif
   rndprc = oprec;
-  emdnorm (yy, k, 0, lexp, 64);
+  emdnorm (yy, lost, 0, lexp, 64);
 
  aexit:
 
index 0719c26654d1c4672cabc4970645a8e947db3e65..97841cfe512819ab93cb65711f5fe3984558e0bb 100644 (file)
@@ -1,5 +1,5 @@
 /* Definitions of floating-point access for GNU compiler.
-   Copyright (C) 1989, 1991, 1994, 1996, 1997 Free Software Foundation, Inc.
+   Copyright (C) 1989, 91, 94, 96, 97, 98 Free Software Foundation, Inc.
 
 This file is part of GNU CC.
 
@@ -178,7 +178,11 @@ extern REAL_VALUE_TYPE real_value_truncate PROTO ((enum machine_mode,
    toward zero. */
 #define REAL_VALUE_UNSIGNED_FIX(x) (efixui (x))
 
+/* Convert ASCII string S to floating point in mode M.
+   Decimal input uses ATOF.  Hexadecimal uses HTOF.  */
 #define REAL_VALUE_ATOF ereal_atof
+#define REAL_VALUE_HTOF ereal_atof
+
 #define REAL_VALUE_NEGATE ereal_negate
 
 #define REAL_VALUE_MINUS_ZERO(x) \
@@ -355,6 +359,9 @@ extern double ldexp ();
 /* Use real.c to convert decimal numbers to binary, ... */
 REAL_VALUE_TYPE ereal_atof ();
 #define REAL_VALUE_ATOF(x, s) ereal_atof (x, s)
+/* Could use ereal_atof here for hexadecimal floats too, but real_hex_to_f
+   is OK and it uses faster native fp arithmetic.  */
+/* #define REAL_VALUE_HTOF(x, s) ereal_atof (x, s) */
 #else
 /* ... or, if you like the host computer's atof, go ahead and use it: */
 #define REAL_VALUE_ATOF(x, s) atof (x)
@@ -369,6 +376,13 @@ extern double (atof) ();
 #endif
 #endif
 
+/* Hexadecimal floating constant input for use with host computer's
+   fp arithmetic.  */
+#ifndef REAL_VALUE_HTOF
+extern REAL_VALUE_TYPE real_hex_to_f PROTO((char *, enum machine_mode));
+#define REAL_VALUE_HTOF(s,m) real_hex_to_f(s,m)
+#endif
+
 /* Negate the floating-point value X.  */
 #ifndef REAL_VALUE_NEGATE
 #define REAL_VALUE_NEGATE(x) (- (x))
index f4b9f1f9dd752d2418a5ee782ab5dedb773f8a48..375d4f8721353ce0f32635b0fc4b5a3cd60ca14a 100644 (file)
@@ -1377,7 +1377,7 @@ mostly_true_jump (jump_insn, condition)
      always gives a correct answer.  */
   if (flag_branch_probabilities)
     {
-      rtx note = find_reg_note (jump_insn, REG_BR_PROB, 0);;
+      rtx note = find_reg_note (jump_insn, REG_BR_PROB, 0);
       if (note)
        {
          int prob = XINT (note, 0);
index e0fc108f86080b4fdcba0f00ca0903656d4ce217..7533063a1865649bdbe480a03c02095322ab3219 100644 (file)
@@ -958,6 +958,7 @@ documented_lang_options[] =
   { "-ansi", "Compile just for ANSI C" },
   { "-fallow-single-precision",
     "Do not promote floats to double if using -traditional" },
+  { "-std= ", "Determine language standard"},
 
   { "-fsigned-bitfields", "" },
   { "-funsigned-bitfields","Make bitfields by unsigned by default" },
@@ -972,7 +973,6 @@ documented_lang_options[] =
   { "-traditional", "Attempt to support traditional K&R style C"},
   { "-fnotraditional", "" },
   { "-fno-traditional", "" },
-  { "-flang-isoc9x", "Enable C9X features"},
 
   { "-fasm", "" },
   { "-fno-asm", "Do not recognise the 'asm' keyword" },
@@ -2517,9 +2517,9 @@ dump_rtl (suffix, decl, func, insns)
 /* Routine to empty a dump file.  */
 static void
 clean_dump_file (suffix)
-     char * suffix;
+     char *suffix;
 {
-  char * dumpname;
+  char *dumpname;
 
   dumpname = (char *) xmalloc (strlen (dump_base_name) + strlen (suffix) + 1);
 
This page took 0.38652 seconds and 5 git commands to generate.