]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/gc: allow new conversion syntax
authorRuss Cox <rsc@golang.org>
Sun, 3 Feb 2013 05:03:10 +0000 (00:03 -0500)
committerRuss Cox <rsc@golang.org>
Sun, 3 Feb 2013 05:03:10 +0000 (00:03 -0500)
For consistency with conversions that look like function calls,
conversions that don't look like function calls now allow an
optional trailing comma.

That is, int(x,) has always been syntactically valid.
Now []int(x,) is valid too.

Fixes #4162.

R=ken2
CC=golang-dev
https://golang.org/cl/7288045

src/cmd/gc/go.y
src/cmd/gc/y.tab.c
src/cmd/gc/yerr.h
test/fixedbugs/issue4162.go [new file with mode: 0644]

index 19fc299e702de0a5d1615322ddaf8febdeb401f6..5f410f308b9bbb6298d7aebe6c900bf4104b32ed 100644 (file)
@@ -947,7 +947,7 @@ pexpr_no_paren:
                $$ = nod(OSLICE, $1, nod(OKEY, $3, $5));
        }
 |      pseudocall
-|      convtype '(' expr ')'
+|      convtype '(' expr ocomma ')'
        {
                // conversion
                $$ = nod(OCALL, $1, N);
index 209a73fcb0d6f75cae65a834ddd027f94fad737b..a4e468845262865f30e16d8fb91c4f0cba0af8e8 100644 (file)
@@ -440,7 +440,7 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  4
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   2144
+#define YYLAST   2194
 
 /* YYNTOKENS -- Number of terminals.  */
 #define YYNTOKENS  76
@@ -449,7 +449,7 @@ union yyalloc
 /* YYNRULES -- Number of rules.  */
 #define YYNRULES  349
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  662
+#define YYNSTATES  663
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
@@ -512,28 +512,28 @@ static const yytype_uint16 yyprhs[] =
      326,   330,   334,   338,   342,   346,   350,   354,   358,   362,
      366,   370,   374,   378,   382,   384,   387,   390,   393,   396,
      399,   402,   405,   408,   412,   418,   425,   427,   429,   433,
-     439,   445,   450,   457,   459,   464,   470,   476,   484,   486,
-     487,   491,   493,   498,   500,   505,   507,   511,   513,   515,
-     517,   519,   521,   523,   525,   526,   528,   530,   532,   534,
-     539,   541,   543,   545,   548,   550,   552,   554,   556,   558,
-     562,   564,   566,   568,   571,   573,   575,   577,   579,   583,
-     585,   587,   589,   591,   593,   595,   597,   599,   601,   605,
-     610,   615,   618,   622,   628,   630,   632,   635,   639,   645,
-     649,   655,   659,   663,   669,   678,   684,   693,   699,   700,
-     704,   705,   707,   711,   713,   718,   721,   722,   726,   728,
-     732,   734,   738,   740,   744,   746,   750,   752,   756,   760,
-     763,   768,   772,   778,   784,   786,   790,   792,   795,   797,
-     801,   806,   808,   811,   814,   816,   818,   822,   823,   826,
-     827,   829,   831,   833,   835,   837,   839,   841,   843,   845,
-     846,   851,   853,   856,   859,   862,   865,   868,   871,   873,
-     877,   879,   883,   885,   889,   891,   895,   897,   901,   903,
-     905,   909,   913,   914,   917,   918,   920,   921,   923,   924,
-     926,   927,   929,   930,   932,   933,   935,   936,   938,   939,
-     941,   942,   944,   949,   954,   960,   967,   972,   977,   979,
-     981,   983,   985,   987,   989,   991,   993,   995,   999,  1004,
-    1010,  1015,  1020,  1023,  1026,  1031,  1035,  1039,  1045,  1049,
-    1054,  1058,  1064,  1066,  1067,  1069,  1073,  1075,  1077,  1080,
-    1082,  1084,  1090,  1091,  1094,  1096,  1100,  1102,  1106,  1108
+     439,   445,   450,   457,   459,   465,   471,   477,   485,   487,
+     488,   492,   494,   499,   501,   506,   508,   512,   514,   516,
+     518,   520,   522,   524,   526,   527,   529,   531,   533,   535,
+     540,   542,   544,   546,   549,   551,   553,   555,   557,   559,
+     563,   565,   567,   569,   572,   574,   576,   578,   580,   584,
+     586,   588,   590,   592,   594,   596,   598,   600,   602,   606,
+     611,   616,   619,   623,   629,   631,   633,   636,   640,   646,
+     650,   656,   660,   664,   670,   679,   685,   694,   700,   701,
+     705,   706,   708,   712,   714,   719,   722,   723,   727,   729,
+     733,   735,   739,   741,   745,   747,   751,   753,   757,   761,
+     764,   769,   773,   779,   785,   787,   791,   793,   796,   798,
+     802,   807,   809,   812,   815,   817,   819,   823,   824,   827,
+     828,   830,   832,   834,   836,   838,   840,   842,   844,   846,
+     847,   852,   854,   857,   860,   863,   866,   869,   872,   874,
+     878,   880,   884,   886,   890,   892,   896,   898,   902,   904,
+     906,   910,   914,   915,   918,   919,   921,   922,   924,   925,
+     927,   928,   930,   931,   933,   934,   936,   937,   939,   940,
+     942,   943,   945,   950,   955,   961,   968,   973,   978,   980,
+     982,   984,   986,   988,   990,   992,   994,   996,  1000,  1005,
+    1011,  1016,  1021,  1024,  1027,  1032,  1036,  1040,  1046,  1050,
+    1055,  1059,  1065,  1067,  1068,  1070,  1074,  1076,  1078,  1081,
+    1083,  1085,  1091,  1092,  1095,  1097,  1101,  1103,  1107,  1109
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
@@ -585,72 +585,72 @@ static const yytype_int16 yyrhs[] =
       63,   141,    -1,   134,    63,    59,   135,    60,    -1,   134,
       63,    59,    31,    60,    -1,   134,    71,   126,    72,    -1,
      134,    71,   192,    66,   192,    72,    -1,   128,    -1,   149,
-      59,   126,    60,    -1,   150,   137,   130,   189,    68,    -1,
-     129,    67,   130,   189,    68,    -1,    59,   135,    60,    67,
-     130,   189,    68,    -1,   165,    -1,    -1,   126,    66,   133,
-      -1,   126,    -1,    67,   130,   189,    68,    -1,   126,    -1,
-      67,   130,   189,    68,    -1,   129,    -1,    59,   135,    60,
-      -1,   126,    -1,   147,    -1,   146,    -1,    35,    -1,    67,
-      -1,   141,    -1,   141,    -1,    -1,   138,    -1,    24,    -1,
-     142,    -1,    73,    -1,    74,     3,    63,    24,    -1,   141,
-      -1,   138,    -1,    11,    -1,    11,   146,    -1,   155,    -1,
-     161,    -1,   153,    -1,   154,    -1,   152,    -1,    59,   146,
-      60,    -1,   155,    -1,   161,    -1,   153,    -1,    53,   147,
+      59,   126,   191,    60,    -1,   150,   137,   130,   189,    68,
+      -1,   129,    67,   130,   189,    68,    -1,    59,   135,    60,
+      67,   130,   189,    68,    -1,   165,    -1,    -1,   126,    66,
+     133,    -1,   126,    -1,    67,   130,   189,    68,    -1,   126,
+      -1,    67,   130,   189,    68,    -1,   129,    -1,    59,   135,
+      60,    -1,   126,    -1,   147,    -1,   146,    -1,    35,    -1,
+      67,    -1,   141,    -1,   141,    -1,    -1,   138,    -1,    24,
+      -1,   142,    -1,    73,    -1,    74,     3,    63,    24,    -1,
+     141,    -1,   138,    -1,    11,    -1,    11,   146,    -1,   155,
       -1,   161,    -1,   153,    -1,   154,    -1,   152,    -1,    59,
-     146,    60,    -1,   161,    -1,   153,    -1,   153,    -1,   155,
-      -1,   161,    -1,   153,    -1,   154,    -1,   152,    -1,   143,
-      -1,   143,    63,   141,    -1,    71,   192,    72,   146,    -1,
-      71,    11,    72,   146,    -1,     8,   148,    -1,     8,    36,
-     146,    -1,    23,    71,   146,    72,   146,    -1,   156,    -1,
-     157,    -1,    53,   146,    -1,    36,     8,   146,    -1,    29,
-     137,   170,   190,    68,    -1,    29,   137,    68,    -1,    22,
-     137,   171,   190,    68,    -1,    22,   137,    68,    -1,    17,
-     159,   162,    -1,   141,    59,   179,    60,   163,    -1,    59,
-     179,    60,   141,    59,   179,    60,   163,    -1,   200,    59,
-     195,    60,   210,    -1,    59,   215,    60,   141,    59,   195,
-      60,   210,    -1,    17,    59,   179,    60,   163,    -1,    -1,
-      67,   183,    68,    -1,    -1,   151,    -1,    59,   179,    60,
-      -1,   161,    -1,   164,   137,   183,    68,    -1,   164,     1,
-      -1,    -1,   166,    90,    62,    -1,    93,    -1,   167,    62,
-      93,    -1,    95,    -1,   168,    62,    95,    -1,    97,    -1,
-     169,    62,    97,    -1,   172,    -1,   170,    62,   172,    -1,
-     175,    -1,   171,    62,   175,    -1,   184,   146,   198,    -1,
-     174,   198,    -1,    59,   174,    60,   198,    -1,    53,   174,
-     198,    -1,    59,    53,   174,    60,   198,    -1,    53,    59,
-     174,    60,   198,    -1,    24,    -1,    24,    63,   141,    -1,
-     173,    -1,   138,   176,    -1,   173,    -1,    59,   173,    60,
-      -1,    59,   179,    60,   163,    -1,   136,    -1,   141,   136,
-      -1,   141,   145,    -1,   145,    -1,   177,    -1,   178,    75,
-     177,    -1,    -1,   178,   191,    -1,    -1,   100,    -1,    91,
-      -1,   181,    -1,     1,    -1,    98,    -1,   110,    -1,   121,
-      -1,   124,    -1,   113,    -1,    -1,   144,    66,   182,   180,
-      -1,    15,    -1,     6,   140,    -1,    10,   140,    -1,    18,
-     128,    -1,    13,   128,    -1,    19,   138,    -1,    27,   193,
-      -1,   180,    -1,   183,    62,   180,    -1,   138,    -1,   184,
-      75,   138,    -1,   139,    -1,   185,    75,   139,    -1,   126,
-      -1,   186,    75,   126,    -1,   135,    -1,   187,    75,   135,
-      -1,   131,    -1,   132,    -1,   188,    75,   131,    -1,   188,
-      75,   132,    -1,    -1,   188,   191,    -1,    -1,    62,    -1,
-      -1,    75,    -1,    -1,   126,    -1,    -1,   186,    -1,    -1,
-      98,    -1,    -1,   215,    -1,    -1,   216,    -1,    -1,   217,
-      -1,    -1,     3,    -1,    21,    24,     3,    62,    -1,    32,
-     200,   202,    62,    -1,     9,   200,    65,   213,    62,    -1,
-       9,   200,   202,    65,   213,    62,    -1,    31,   201,   202,
-      62,    -1,    17,   160,   162,    62,    -1,   142,    -1,   200,
-      -1,   204,    -1,   205,    -1,   206,    -1,   204,    -1,   206,
-      -1,   142,    -1,    24,    -1,    71,    72,   202,    -1,    71,
-       3,    72,   202,    -1,    23,    71,   202,    72,   202,    -1,
-      29,    67,   196,    68,    -1,    22,    67,   197,    68,    -1,
-      53,   202,    -1,     8,   203,    -1,     8,    59,   205,    60,
-      -1,     8,    36,   202,    -1,    36,     8,   202,    -1,    17,
-      59,   195,    60,   210,    -1,   141,   202,   198,    -1,   141,
-      11,   202,   198,    -1,   141,   202,   198,    -1,   141,    59,
-     195,    60,   210,    -1,   202,    -1,    -1,   211,    -1,    59,
-     195,    60,    -1,   202,    -1,     3,    -1,    50,     3,    -1,
-     141,    -1,   212,    -1,    59,   212,    49,   212,    60,    -1,
-      -1,   214,   199,    -1,   207,    -1,   215,    75,   207,    -1,
-     208,    -1,   216,    62,   208,    -1,   209,    -1,   217,    62,
-     209,    -1
+     146,    60,    -1,   155,    -1,   161,    -1,   153,    -1,    53,
+     147,    -1,   161,    -1,   153,    -1,   154,    -1,   152,    -1,
+      59,   146,    60,    -1,   161,    -1,   153,    -1,   153,    -1,
+     155,    -1,   161,    -1,   153,    -1,   154,    -1,   152,    -1,
+     143,    -1,   143,    63,   141,    -1,    71,   192,    72,   146,
+      -1,    71,    11,    72,   146,    -1,     8,   148,    -1,     8,
+      36,   146,    -1,    23,    71,   146,    72,   146,    -1,   156,
+      -1,   157,    -1,    53,   146,    -1,    36,     8,   146,    -1,
+      29,   137,   170,   190,    68,    -1,    29,   137,    68,    -1,
+      22,   137,   171,   190,    68,    -1,    22,   137,    68,    -1,
+      17,   159,   162,    -1,   141,    59,   179,    60,   163,    -1,
+      59,   179,    60,   141,    59,   179,    60,   163,    -1,   200,
+      59,   195,    60,   210,    -1,    59,   215,    60,   141,    59,
+     195,    60,   210,    -1,    17,    59,   179,    60,   163,    -1,
+      -1,    67,   183,    68,    -1,    -1,   151,    -1,    59,   179,
+      60,    -1,   161,    -1,   164,   137,   183,    68,    -1,   164,
+       1,    -1,    -1,   166,    90,    62,    -1,    93,    -1,   167,
+      62,    93,    -1,    95,    -1,   168,    62,    95,    -1,    97,
+      -1,   169,    62,    97,    -1,   172,    -1,   170,    62,   172,
+      -1,   175,    -1,   171,    62,   175,    -1,   184,   146,   198,
+      -1,   174,   198,    -1,    59,   174,    60,   198,    -1,    53,
+     174,   198,    -1,    59,    53,   174,    60,   198,    -1,    53,
+      59,   174,    60,   198,    -1,    24,    -1,    24,    63,   141,
+      -1,   173,    -1,   138,   176,    -1,   173,    -1,    59,   173,
+      60,    -1,    59,   179,    60,   163,    -1,   136,    -1,   141,
+     136,    -1,   141,   145,    -1,   145,    -1,   177,    -1,   178,
+      75,   177,    -1,    -1,   178,   191,    -1,    -1,   100,    -1,
+      91,    -1,   181,    -1,     1,    -1,    98,    -1,   110,    -1,
+     121,    -1,   124,    -1,   113,    -1,    -1,   144,    66,   182,
+     180,    -1,    15,    -1,     6,   140,    -1,    10,   140,    -1,
+      18,   128,    -1,    13,   128,    -1,    19,   138,    -1,    27,
+     193,    -1,   180,    -1,   183,    62,   180,    -1,   138,    -1,
+     184,    75,   138,    -1,   139,    -1,   185,    75,   139,    -1,
+     126,    -1,   186,    75,   126,    -1,   135,    -1,   187,    75,
+     135,    -1,   131,    -1,   132,    -1,   188,    75,   131,    -1,
+     188,    75,   132,    -1,    -1,   188,   191,    -1,    -1,    62,
+      -1,    -1,    75,    -1,    -1,   126,    -1,    -1,   186,    -1,
+      -1,    98,    -1,    -1,   215,    -1,    -1,   216,    -1,    -1,
+     217,    -1,    -1,     3,    -1,    21,    24,     3,    62,    -1,
+      32,   200,   202,    62,    -1,     9,   200,    65,   213,    62,
+      -1,     9,   200,   202,    65,   213,    62,    -1,    31,   201,
+     202,    62,    -1,    17,   160,   162,    62,    -1,   142,    -1,
+     200,    -1,   204,    -1,   205,    -1,   206,    -1,   204,    -1,
+     206,    -1,   142,    -1,    24,    -1,    71,    72,   202,    -1,
+      71,     3,    72,   202,    -1,    23,    71,   202,    72,   202,
+      -1,    29,    67,   196,    68,    -1,    22,    67,   197,    68,
+      -1,    53,   202,    -1,     8,   203,    -1,     8,    59,   205,
+      60,    -1,     8,    36,   202,    -1,    36,     8,   202,    -1,
+      17,    59,   195,    60,   210,    -1,   141,   202,   198,    -1,
+     141,    11,   202,   198,    -1,   141,   202,   198,    -1,   141,
+      59,   195,    60,   210,    -1,   202,    -1,    -1,   211,    -1,
+      59,   195,    60,    -1,   202,    -1,     3,    -1,    50,     3,
+      -1,   141,    -1,   212,    -1,    59,   212,    49,   212,    60,
+      -1,    -1,   214,   199,    -1,   207,    -1,   215,    75,   207,
+      -1,   208,    -1,   216,    62,   208,    -1,   209,    -1,   217,
+      62,   209,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
@@ -815,7 +815,7 @@ static const yytype_uint8 yyr2[] =
        3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
        3,     3,     3,     3,     1,     2,     2,     2,     2,     2,
        2,     2,     2,     3,     5,     6,     1,     1,     3,     5,
-       5,     4,     6,     1,     4,     5,     5,     7,     1,     0,
+       5,     4,     6,     1,     5,     5,     5,     7,     1,     0,
        3,     1,     4,     1,     4,     1,     3,     1,     1,     1,
        1,     1,     1,     1,     0,     1,     1,     1,     1,     4,
        1,     1,     1,     2,     1,     1,     1,     1,     1,     3,
@@ -876,7 +876,7 @@ static const yytype_uint16 yydefact[] =
        0,     0,    51,    95,   110,   113,    96,   100,   101,    99,
      111,    98,    97,    94,   112,   102,   103,   104,   105,   106,
      107,   108,   109,   282,   123,   276,   286,     0,   128,   289,
-       0,     0,     0,   282,   253,    60,   251,   250,   268,   252,
+       0,     0,   286,   282,   253,    60,   251,   250,   268,   252,
        0,    53,    52,   275,     0,     0,     0,     0,   316,     0,
        0,     0,     0,     0,   315,     0,   310,   311,   312,     0,
      344,     0,     0,   294,     0,     0,     0,    15,    10,     0,
@@ -887,144 +887,144 @@ static const yytype_uint16 yydefact[] =
        0,   285,     0,    42,   273,     0,     0,     0,   197,   168,
      166,   167,   165,   139,   190,   189,   285,     0,    44,     0,
      139,   141,   278,   279,   286,     0,   286,   287,     0,     0,
-       0,   131,   288,   260,   134,     0,     0,     0,   214,     0,
-       0,   323,   313,   314,   294,   298,     0,   296,     0,   322,
-     337,     0,     0,   339,   340,     0,     0,     0,     0,     0,
-     300,     0,     0,   307,     0,   295,   302,   306,   303,   210,
-     169,     0,     0,     0,     0,   246,   247,   160,   211,   186,
-     184,   185,   182,   183,   207,   210,   209,    80,    77,   235,
-     239,     0,   227,   200,   193,     0,     0,    92,    62,    65,
-       0,   231,     0,   300,   225,   198,   271,   228,    64,   223,
-      37,   219,    30,    41,     0,   282,    45,   220,   284,    47,
-      33,    43,   282,     0,   287,   283,   136,   287,     0,   277,
-     124,   130,   129,     0,   135,     0,   269,   325,     0,     0,
-     316,     0,   315,     0,   332,   348,   299,     0,     0,     0,
-     346,   297,   326,   338,     0,   304,     0,   317,     0,   300,
-     328,     0,   345,   333,     0,    69,    68,   292,     0,   247,
-     203,    84,   210,     0,    59,     0,   300,   300,   230,     0,
-     169,     0,   285,     0,    46,     0,   139,   143,   140,   280,
-     281,   125,   132,    61,   324,   333,   294,   321,     0,     0,
-     300,   320,     0,     0,   318,   305,   329,   294,   294,   336,
-     205,   334,    67,    70,   212,     0,    86,   240,     0,     0,
-      56,     0,    63,   233,   232,    90,   137,   221,    34,   142,
-     282,   327,     0,   349,   319,   330,   347,     0,     0,     0,
-     210,     0,    85,    81,     0,     0,     0,   333,   341,   333,
-     335,   204,    82,    87,    58,    57,   144,   331,   206,   292,
-       0,    83
+       0,   131,   288,   260,   287,     0,     0,     0,     0,   214,
+       0,     0,   323,   313,   314,   294,   298,     0,   296,     0,
+     322,   337,     0,     0,   339,   340,     0,     0,     0,     0,
+       0,   300,     0,     0,   307,     0,   295,   302,   306,   303,
+     210,   169,     0,     0,     0,     0,   246,   247,   160,   211,
+     186,   184,   185,   182,   183,   207,   210,   209,    80,    77,
+     235,   239,     0,   227,   200,   193,     0,     0,    92,    62,
+      65,     0,   231,     0,   300,   225,   198,   271,   228,    64,
+     223,    37,   219,    30,    41,     0,   282,    45,   220,   284,
+      47,    33,    43,   282,     0,   287,   283,   136,     0,   277,
+     124,   130,   129,     0,   134,   135,     0,   269,   325,     0,
+       0,   316,     0,   315,     0,   332,   348,   299,     0,     0,
+       0,   346,   297,   326,   338,     0,   304,     0,   317,     0,
+     300,   328,     0,   345,   333,     0,    69,    68,   292,     0,
+     247,   203,    84,   210,     0,    59,     0,   300,   300,   230,
+       0,   169,     0,   285,     0,    46,     0,   139,   143,   140,
+     280,   281,   125,   132,    61,   324,   333,   294,   321,     0,
+       0,   300,   320,     0,     0,   318,   305,   329,   294,   294,
+     336,   205,   334,    67,    70,   212,     0,    86,   240,     0,
+       0,    56,     0,    63,   233,   232,    90,   137,   221,    34,
+     142,   282,   327,     0,   349,   319,   330,   347,     0,     0,
+       0,   210,     0,    85,    81,     0,     0,     0,   333,   341,
+     333,   335,   204,    82,    87,    58,    57,   144,   331,   206,
+     292,     0,    83
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
       -1,     1,     6,     2,     3,    14,    21,    30,   104,    31,
-       8,    24,    16,    17,    65,   326,    67,   148,   516,   517,
-     144,   145,    68,   498,   327,   436,   499,   575,   387,   365,
-     471,   236,   237,   238,    69,   126,   252,    70,   132,   377,
-     571,   642,   659,   616,   643,    71,   142,   398,    72,   140,
-      73,    74,    75,    76,   313,   422,   423,   588,    77,   315,
+       8,    24,    16,    17,    65,   326,    67,   148,   517,   518,
+     144,   145,    68,   499,   327,   437,   500,   576,   387,   365,
+     472,   236,   237,   238,    69,   126,   252,    70,   132,   377,
+     572,   643,   660,   617,   644,    71,   142,   398,    72,   140,
+      73,    74,    75,    76,   313,   422,   423,   589,    77,   315,
      242,   135,    78,   149,   110,   116,    13,    80,    81,   244,
-     245,   162,   118,    82,    83,   478,   227,    84,   229,   230,
-      85,    86,    87,   129,   213,    88,   251,   484,    89,    90,
-      22,   279,   518,   275,   267,   258,   268,   269,   270,   260,
+     245,   162,   118,    82,    83,   479,   227,    84,   229,   230,
+      85,    86,    87,   129,   213,    88,   251,   485,    89,    90,
+      22,   279,   519,   275,   267,   258,   268,   269,   270,   260,
      383,   246,   247,   248,   328,   329,   321,   330,   271,   151,
-      92,   316,   424,   425,   221,   373,   170,   139,   253,   464,
-     549,   543,   395,   100,   211,   217,   609,   441,   346,   347,
-     348,   350,   550,   545,   610,   611,   454,   455,    25,   465,
-     551,   546
+      92,   316,   424,   425,   221,   373,   170,   139,   253,   465,
+     550,   544,   395,   100,   211,   217,   610,   442,   346,   347,
+     348,   350,   551,   546,   611,   612,   455,   456,    25,   466,
+     552,   547
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -467
+#define YYPACT_NINF -485
 static const yytype_int16 yypact[] =
 {
-    -467,    53,    59,    64,  -467,    34,  -467,   120,  -467,  -467,
-    -467,   144,    94,  -467,   177,   181,  -467,  -467,   145,  -467,
-      54,   160,  1026,  -467,   163,   397,   215,  -467,   113,   237,
-    -467,    64,   239,  -467,  -467,  -467,    34,  1711,  -467,    34,
-    1567,  -467,  -467,   336,  1567,    34,  -467,   161,   180,  1464,
-    -467,   161,  -467,   389,   409,  1464,  1464,  1464,  1464,  1464,
-    1464,  1507,  1464,  1464,   840,   191,  -467,   461,  -467,  -467,
-    -467,  -467,  -467,   672,  -467,  -467,   207,   227,  -467,   213,
-    -467,   228,   199,   161,   218,  -467,  -467,  -467,   236,    91,
-    -467,  -467,    76,  -467,   223,   -13,   276,   223,   223,   247,
-    -467,  -467,  -467,  -467,   255,  -467,  -467,  -467,  -467,  -467,
-    -467,  -467,   263,  1722,  1722,  1722,  -467,   262,  -467,  -467,
-    -467,  -467,  -467,  -467,   261,   227,  1464,  1679,   265,   259,
-     335,  -467,  1464,  -467,  -467,   399,  1722,  2040,   269,  -467,
-     293,    23,  1464,   211,  1722,  -467,  -467,   291,  -467,  -467,
-    -467,  1593,  -467,  -467,  -467,  -467,  -467,  -467,  1550,  1507,
-    2040,   280,  -467,    31,  -467,   171,  -467,  -467,   300,  2040,
-     304,  -467,   347,  -467,  1620,  1464,  1464,  1464,  1464,  -467,
-    1464,  1464,  1464,  -467,  1464,  1464,  1464,  1464,  1464,  1464,
-    1464,  1464,  1464,  1464,  1464,  1464,  1464,  1464,  -467,   726,
-     484,  1464,  -467,  1464,  -467,  -467,  1187,  1464,  1464,  1464,
-    -467,   310,    34,   259,   295,   377,  -467,  1267,  1267,  -467,
-     115,   322,  -467,  1679,   375,  1722,  -467,  -467,  -467,  -467,
-    -467,  -467,  -467,   326,    34,  -467,  -467,   353,  -467,    78,
-     327,  1722,  -467,  1679,  -467,  -467,  -467,   323,   339,  1679,
-    1187,  -467,  -467,   343,   122,   388,  -467,   342,   354,  -467,
-    -467,   358,  -467,    21,    32,  -467,  -467,   379,  -467,  -467,
-     412,  1652,  -467,  -467,  -467,   387,  -467,  -467,  -467,   413,
-    1464,    34,   411,  1754,  -467,   383,  1722,  1722,  -467,   416,
-    1464,   414,  2040,   881,  -467,  2064,  1178,  1178,  1178,  1178,
-    -467,  1178,  1178,  2088,  -467,   598,   598,   598,   598,  -467,
-    -467,  -467,  -467,   936,  -467,  -467,    48,  1256,  -467,  1913,
-     408,  1113,  2015,   936,  -467,  -467,  -467,  -467,  -467,  -467,
-      -8,   269,   269,  2040,  1833,   425,   419,   421,  -467,   424,
-     485,  1267,    90,    49,  -467,   430,  -467,  -467,  -467,  1841,
-    -467,    27,   435,    34,   439,   440,   442,  -467,  -467,   445,
-    1722,   446,  -467,  -467,  -467,  -467,  1311,  1366,  1464,  -467,
-    -467,  -467,  1679,  -467,  1780,   447,   148,   353,  1464,    34,
-     459,   449,  1679,  -467,   501,   455,  1722,    92,   388,   412,
-     388,   450,   240,   458,  -467,  -467,    34,   412,   492,    34,
-     468,    34,   472,   269,  -467,  1464,  1807,  1722,  -467,   165,
-     167,   253,   392,  -467,  -467,  -467,    34,   480,   269,  1464,
-    -467,  1943,  -467,  -467,   470,   478,   473,  1507,   489,   490,
-     491,  -467,  1464,  -467,  -467,   487,  1187,  1113,  -467,  1267,
-     516,  -467,  -467,  -467,    34,  1866,  1267,    34,  1267,  -467,
-    -467,   550,   196,  -467,  -467,   494,   493,  1267,    90,  1267,
-     412,    34,    34,  -467,   503,   486,  -467,  -467,  -467,  1780,
-    -467,  1187,  1464,  1464,   507,  -467,  1679,   512,  -467,  -467,
-    -467,  -467,  -467,  -467,  -467,  1780,  -467,  -467,  -467,  -467,
-    -467,   513,  -467,  -467,  -467,  1507,   515,  -467,  -467,  -467,
-     518,  -467,   519,   412,  -467,  -467,  -467,  -467,  -467,  -467,
-    -467,  -467,  -467,   269,   522,   936,  -467,  -467,   521,  1620,
-    -467,   269,   936,  1409,   936,  -467,  -467,  -467,   524,  -467,
-    -467,  -467,  -467,   514,  -467,   192,  -467,  -467,   525,   528,
-     530,   533,   535,   527,  -467,  -467,   537,   532,  1267,   538,
-    -467,   543,  -467,  -467,   562,  -467,  1267,  -467,   551,   412,
-    -467,   553,  -467,  1874,   219,  2040,  2040,  1464,   554,  1679,
-    -467,  -467,  1780,    45,  -467,  1113,   412,   412,  -467,    93,
-     429,   548,    34,   557,   414,   552,  -467,  2040,  -467,  -467,
-    -467,  -467,  -467,  -467,  -467,  1874,    34,  -467,  1866,  1267,
-     412,  -467,    34,   196,  -467,  -467,  -467,    34,    34,  -467,
-    -467,  -467,  -467,  -467,  -467,   558,   605,  -467,  1464,  1464,
-    -467,  1507,   560,  -467,  -467,  -467,  -467,  -467,  -467,  -467,
-     936,  -467,   563,  -467,  -467,  -467,  -467,   564,   565,   567,
-    1780,    68,  -467,  -467,  1967,  1991,   561,  1874,  -467,  1874,
-    -467,  -467,  -467,  -467,  -467,  -467,  -467,  -467,  -467,  1464,
-     353,  -467
+    -485,    67,    35,    55,  -485,    44,  -485,    64,  -485,  -485,
+    -485,    96,    38,  -485,    77,    85,  -485,  -485,    66,  -485,
+      34,    84,  1059,  -485,    86,   294,   147,  -485,   165,   210,
+    -485,    55,   221,  -485,  -485,  -485,    44,  1762,  -485,    44,
+     290,  -485,  -485,   442,   290,    44,  -485,    80,    69,  1608,
+    -485,    80,  -485,   450,   452,  1608,  1608,  1608,  1608,  1608,
+    1608,  1651,  1608,  1608,   920,   157,  -485,   460,  -485,  -485,
+    -485,  -485,  -485,   718,  -485,  -485,   167,   344,  -485,   176,
+    -485,   180,   193,    80,   206,  -485,  -485,  -485,   218,    91,
+    -485,  -485,    76,  -485,   205,    10,   260,   205,   205,   223,
+    -485,  -485,  -485,  -485,   230,  -485,  -485,  -485,  -485,  -485,
+    -485,  -485,   237,  1770,  1770,  1770,  -485,   236,  -485,  -485,
+    -485,  -485,  -485,  -485,   220,   344,  1608,   990,   241,   235,
+     262,  -485,  1608,  -485,  -485,   405,  1770,  2090,   254,  -485,
+     297,   444,  1608,    61,  1770,  -485,  -485,   271,  -485,  -485,
+    -485,   671,  -485,  -485,  -485,  -485,  -485,  -485,  1694,  1651,
+    2090,   291,  -485,   181,  -485,    60,  -485,  -485,   287,  2090,
+     301,  -485,   496,  -485,   912,  1608,  1608,  1608,  1608,  -485,
+    1608,  1608,  1608,  -485,  1608,  1608,  1608,  1608,  1608,  1608,
+    1608,  1608,  1608,  1608,  1608,  1608,  1608,  1608,  -485,  1290,
+     468,  1608,  -485,  1608,  -485,  -485,  1221,  1608,  1608,  1608,
+    -485,   573,    44,   235,   275,   347,  -485,  1301,  1301,  -485,
+     113,   302,  -485,   990,   358,  1770,  -485,  -485,  -485,  -485,
+    -485,  -485,  -485,   316,    44,  -485,  -485,   340,  -485,    78,
+     318,  1770,  -485,   990,  -485,  -485,  -485,   307,   325,   990,
+    1221,  -485,  -485,   324,   117,   365,  -485,   343,   337,  -485,
+    -485,   333,  -485,    32,    23,  -485,  -485,   350,  -485,  -485,
+     406,  1737,  -485,  -485,  -485,   351,  -485,  -485,  -485,   352,
+    1608,    44,   354,  1796,  -485,   353,  1770,  1770,  -485,   359,
+    1608,   357,  2090,  1928,  -485,  2114,  1212,  1212,  1212,  1212,
+    -485,  1212,  1212,  2138,  -485,   566,   566,   566,   566,  -485,
+    -485,  -485,  -485,  1345,  -485,  -485,    31,  1400,  -485,  1988,
+     360,  1147,  1955,  1345,  -485,  -485,  -485,  -485,  -485,  -485,
+      95,   254,   254,  2090,  1857,   368,   361,   371,  -485,   363,
+     427,  1301,   247,    51,  -485,   374,  -485,  -485,  -485,  1890,
+    -485,    36,   382,    44,   384,   385,   387,  -485,  -485,   391,
+    1770,   395,  -485,  -485,  -485,  -485,  1455,  1510,  1608,  -485,
+    -485,  -485,   990,  -485,  1823,   399,   135,   340,  1608,    44,
+     397,   403,   990,  -485,   542,   407,  1770,   278,   365,   406,
+     365,   411,   364,   413,  -485,  -485,    44,   406,   430,    44,
+     423,    44,   425,   254,  -485,  1608,  1849,  1770,  -485,   216,
+     219,   274,   288,  -485,  -485,  -485,    44,   426,   254,  1608,
+    -485,  2018,  -485,  -485,   414,   422,   416,  1651,   433,   434,
+     436,  -485,  1608,  -485,  -485,   439,   437,  1221,  1147,  -485,
+    1301,   466,  -485,  -485,  -485,    44,  1882,  1301,    44,  1301,
+    -485,  -485,   504,   207,  -485,  -485,   446,   438,  1301,   247,
+    1301,   406,    44,    44,  -485,   453,   455,  -485,  -485,  -485,
+    1823,  -485,  1221,  1608,  1608,   467,  -485,   990,   472,  -485,
+    -485,  -485,  -485,  -485,  -485,  -485,  1823,  -485,  -485,  -485,
+    -485,  -485,   475,  -485,  -485,  -485,  1651,   470,  -485,  -485,
+    -485,   490,  -485,   493,   406,  -485,  -485,  -485,  -485,  -485,
+    -485,  -485,  -485,  -485,   254,   495,  1345,  -485,  -485,   498,
+     912,  -485,   254,  1345,  1553,  1345,  -485,  -485,   497,  -485,
+    -485,  -485,  -485,   486,  -485,  -485,   143,  -485,  -485,   501,
+     502,   473,   508,   513,   505,  -485,  -485,   515,   503,  1301,
+     511,  -485,   518,  -485,  -485,   533,  -485,  1301,  -485,   522,
+     406,  -485,   526,  -485,  1916,   144,  2090,  2090,  1608,   527,
+     990,  -485,  -485,  1823,    39,  -485,  1147,   406,   406,  -485,
+     315,   293,   521,    44,   548,   357,   525,  -485,  2090,  -485,
+    -485,  -485,  -485,  -485,  -485,  -485,  1916,    44,  -485,  1882,
+    1301,   406,  -485,    44,   207,  -485,  -485,  -485,    44,    44,
+    -485,  -485,  -485,  -485,  -485,  -485,   551,   572,  -485,  1608,
+    1608,  -485,  1651,   550,  -485,  -485,  -485,  -485,  -485,  -485,
+    -485,  1345,  -485,   558,  -485,  -485,  -485,  -485,   563,   564,
+     565,  1823,    46,  -485,  -485,  2042,  2066,   559,  1916,  -485,
+    1916,  -485,  -485,  -485,  -485,  -485,  -485,  -485,  -485,  -485,
+    1608,   340,  -485
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -467,  -467,  -467,  -467,  -467,  -467,  -467,    -6,  -467,  -467,
-     599,  -467,    13,  -467,  -467,   613,  -467,  -123,   -24,    58,
-    -467,  -127,  -121,  -467,     2,  -467,  -467,  -467,   128,  -369,
-    -467,  -467,  -467,  -467,  -467,  -467,  -140,  -467,  -467,  -467,
-    -467,  -467,  -467,  -467,  -467,  -467,  -467,  -467,  -467,  -467,
-     632,    12,    33,  -467,  -201,   121,   123,  -467,   183,   -54,
-     401,   114,   -26,   369,   616,    -5,   420,   385,  -467,   417,
-     -50,   498,  -467,  -467,  -467,  -467,   -33,    18,   -31,   -25,
-    -467,  -467,  -467,  -467,  -467,   194,   448,  -460,  -467,  -467,
-    -467,  -467,  -467,  -467,  -467,  -467,   267,  -109,  -231,   278,
-    -467,   292,  -467,  -214,  -282,   643,  -467,  -223,  -467,   -66,
-     282,   172,  -467,  -311,  -238,  -274,  -183,  -467,  -112,  -414,
-    -467,  -467,  -294,  -467,   264,  -467,    85,  -467,   332,   229,
-     340,   216,    71,    77,  -466,  -467,  -424,   222,  -467,   474,
-    -467,  -467
+    -485,  -485,  -485,  -485,  -485,  -485,  -485,    -6,  -485,  -485,
+     597,  -485,    -3,  -485,  -485,   608,  -485,  -131,   -28,    50,
+    -485,  -135,  -106,  -485,    -7,  -485,  -485,  -485,   125,  -370,
+    -485,  -485,  -485,  -485,  -485,  -485,  -138,  -485,  -485,  -485,
+    -485,  -485,  -485,  -485,  -485,  -485,  -485,  -485,  -485,  -485,
+     665,    15,   116,  -485,  -190,   111,   112,  -485,   164,   -59,
+     398,   137,    14,   367,   603,    -5,   454,   432,  -485,   402,
+     -50,   491,  -485,  -485,  -485,  -485,   -36,    18,   -34,    -9,
+    -485,  -485,  -485,  -485,  -485,   257,   441,  -445,  -485,  -485,
+    -485,  -485,  -485,  -485,  -485,  -485,   259,  -116,  -218,   265,
+    -485,   284,  -485,  -217,  -286,   636,  -485,  -237,  -485,   -62,
+     -24,   166,  -485,  -314,  -246,  -265,  -177,  -485,  -115,  -415,
+    -485,  -485,  -379,  -485,    -8,  -485,   435,  -485,   326,   225,
+     327,   204,    65,    70,  -484,  -485,  -426,   211,  -485,   462,
+    -485,  -485
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
@@ -1034,215 +1034,220 @@ static const yytype_int16 yypgoto[] =
 #define YYTABLE_NINF -275
 static const yytype_int16 yytable[] =
 {
-      12,   174,   272,   323,   119,   235,   121,   161,   487,   359,
-     109,   235,   435,   109,   240,    32,   274,    79,   320,   131,
-     385,   235,   103,    32,   278,   570,   259,   376,   554,   393,
-     539,   111,   389,   391,   111,   375,   164,   400,   128,   433,
-     111,   402,   428,   173,   107,   380,   212,   254,   146,   150,
-     618,   417,   456,     4,   437,   120,   380,    27,     9,   426,
-     438,    11,   150,   226,   232,   233,  -181,   152,   153,   154,
-     155,   156,   157,   124,   166,   167,   263,   130,     9,   163,
-     388,   207,   264,   366,     5,   390,   261,   461,   652,     7,
-    -180,   265,   205,   450,   276,   501,    10,    11,  -181,   495,
-     495,   282,   462,   507,   496,   496,   174,    10,    11,   257,
-     619,   620,   617,    28,     9,   266,    27,    29,    27,   222,
-     621,   457,   243,   427,   291,  -234,   133,    10,    11,   631,
-     111,   228,   228,   228,   164,   325,   111,     9,   146,     9,
-     451,   208,   150,   367,    15,   228,   381,    18,   289,   452,
-     525,   209,   528,   209,   228,   536,    19,   500,   134,   502,
-     497,   625,   228,    10,    11,   141,   560,   150,   491,   228,
-     152,   156,  -213,   102,   164,   361,    29,   163,    29,   637,
-     651,   657,   632,   658,  -234,   379,    10,    11,    10,    11,
-    -234,   369,   228,   638,   639,   318,   133,   204,    20,   450,
-    -177,    79,  -175,   206,   581,    23,  -213,   349,    26,   578,
-     437,   585,   515,   535,   357,    32,   486,   163,   243,   522,
-       9,   397,    33,   125,  -177,    93,  -175,   125,   134,   363,
-    -179,   122,  -177,   408,  -175,     9,   414,   415,  -213,   101,
-     105,   228,   108,   228,   243,    79,   451,   235,   564,   533,
-     409,   136,   411,   171,   437,   165,   474,   235,   203,   228,
-     593,   228,   568,   430,   254,   606,   488,   228,  -265,    10,
-      11,   273,   509,  -265,   198,   259,   150,  -180,   511,  -152,
-     583,   437,   623,   624,    10,    11,   199,   612,  -176,   228,
-     200,   661,   164,   263,   202,  -179,   345,    11,   201,   264,
-     215,   410,   355,   356,   228,   228,   635,   231,   231,   231,
-     408,   219,  -176,    10,    11,     9,    79,   220,   334,   646,
-    -176,   231,   223,  -265,   249,   234,   250,   335,   262,  -265,
-     231,   138,   336,   337,   338,   163,   494,   453,   231,   339,
-     285,   479,  -264,   481,   209,   231,   340,  -264,   349,   482,
-     519,   277,   622,   165,   353,   615,   226,   514,   257,   214,
-       9,   216,   218,   341,    10,    11,   266,   243,   231,   477,
-     506,     9,   286,   529,   489,   342,   287,   243,   228,   111,
-     354,   343,   358,   360,    11,   630,   362,   111,   364,   368,
-     228,   111,   480,   165,   146,   127,   150,  -264,   372,   374,
-     228,   382,   164,  -264,   228,   378,    94,   288,   239,    10,
-      11,   150,   380,     9,    95,   394,   384,   231,    96,   231,
-      10,    11,   117,   254,   228,   228,   449,  -174,    97,    98,
-     386,    79,    79,     9,   460,   231,   479,   231,   481,   349,
-     541,   392,   548,   231,   482,   163,   235,   453,   143,   399,
-     413,  -174,   479,   453,   481,   613,   561,   349,   255,  -174,
-     482,    99,    10,    11,  -178,   231,    79,   256,   147,   584,
-     164,   243,    10,    11,   432,   401,   405,   412,   416,   419,
-     231,   231,    10,    11,   444,     9,   445,   480,  -178,   331,
-     332,   447,   446,   448,   228,   458,  -178,   463,   117,   117,
-     117,   466,   467,   480,   468,   469,   470,   485,     9,   490,
-     503,   165,   117,   163,   210,   210,   519,   210,   210,   660,
-     172,   117,   379,   493,   537,   254,   505,   508,   510,   117,
-     544,   547,   512,   552,    10,    11,   117,   228,   235,   479,
-     520,   481,   557,   317,   559,   524,   526,   482,   527,   530,
-     531,   532,   340,   553,   231,   534,   555,    10,    11,   117,
-     255,   462,   403,   563,   243,   556,   231,   529,   483,   567,
-      79,   569,   418,   572,    10,    11,   231,   150,   576,   577,
-     231,   574,   580,   582,   591,   594,   592,   228,   595,  -156,
-     480,   349,   596,   541,  -157,   597,   164,   548,   453,   598,
-     231,   231,   349,   349,   599,   602,   601,   479,   117,   481,
-     117,   603,   607,   605,   614,   482,   626,   628,   640,   641,
-     629,   165,   437,   647,   648,   649,   117,   650,   117,   656,
-     106,   344,   177,   600,   117,    66,   579,   344,   344,   163,
-     627,   604,   185,   653,   370,   589,   189,   590,   331,   332,
-     404,   194,   195,   196,   197,   123,   117,   284,   480,   504,
-     371,   352,   492,   483,   475,    91,   442,   573,   117,   538,
-     231,   117,   117,   636,   443,   633,   175,  -274,   562,   483,
-     558,   137,     0,   544,   634,     0,   351,   513,     0,   165,
-       0,     0,     0,   160,     0,     0,   169,     0,     0,     0,
-       0,   521,     0,     0,     0,   176,   177,     0,   178,   179,
-     180,   181,   182,   231,   183,   184,   185,   186,   187,   188,
-     189,   190,   191,   192,   193,   194,   195,   196,   197,    35,
-       0,     0,     0,     0,    37,     0,     0,  -274,     0,     0,
-       0,     0,     0,   112,     0,   117,     0,  -274,    47,    48,
-       9,     0,     0,     0,   344,    51,     0,   117,     0,   117,
-       0,   344,   158,   231,     0,     0,   483,   117,     0,   344,
-       0,   117,     0,     0,     0,    56,    57,     0,    58,   159,
-       0,     0,    60,     0,     0,    61,   314,     0,     0,     0,
-       0,   117,   117,     0,     0,    62,    63,    64,     0,    10,
-      11,     0,     0,     0,     0,     0,     0,   292,   293,   294,
-     295,     0,   296,   297,   298,   165,   299,   300,   301,   302,
-     303,   304,   305,   306,   307,   308,   309,   310,   311,   312,
-       0,   160,     0,   319,   483,   322,     0,     0,     0,   137,
-     137,   333,     0,    35,     0,     0,     0,     0,    37,     0,
-       0,   168,     0,     0,   117,     0,     0,   112,     0,   344,
-       0,   117,    47,    48,     9,   542,   344,     0,   344,    51,
-     117,     0,     0,     0,     0,     0,    55,   344,     0,   344,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    56,
-      57,     0,    58,    59,     0,     0,    60,     0,     0,    61,
-       0,     0,     0,     0,   117,     0,     0,     0,     0,    62,
-      63,    64,   137,    10,    11,   177,     0,     0,     0,   180,
-     181,   182,   137,     0,   184,   185,   186,   187,     0,   189,
-     190,   191,   192,   193,   194,   195,   196,   197,     0,    35,
-       0,     0,     0,     0,    37,   421,     0,     0,     0,   160,
-       0,     0,     0,   112,   117,   421,     0,   117,    47,    48,
-       9,     0,     0,     0,     0,    51,     0,     0,   344,     0,
-       0,     0,    55,     0,     0,     0,   344,     0,     0,     0,
-       0,     0,     0,   344,     0,    56,    57,     0,    58,    59,
-       0,     0,    60,     0,     0,    61,     0,     0,   137,   137,
-       0,     0,     0,   420,     0,    62,    63,    64,     0,    10,
-      11,     0,     0,     0,     0,   344,     0,     0,   542,   344,
-       0,     0,     0,     0,     0,   117,    -2,    34,     0,    35,
-       0,     0,    36,     0,    37,    38,    39,   137,     0,    40,
-       0,    41,    42,    43,    44,    45,    46,     0,    47,    48,
-       9,   137,     0,    49,    50,    51,    52,    53,    54,   160,
-       0,     0,    55,     0,   169,     0,     0,   344,     0,   344,
-       0,     0,     0,     0,     0,    56,    57,     0,    58,    59,
-       0,     0,    60,     0,     0,    61,     0,     0,   -24,     0,
-       0,     0,     0,     0,     0,    62,    63,    64,     0,    10,
-      11,     0,     0,     0,   565,   566,     0,     0,     0,     0,
-       0,     0,     0,     0,   324,     0,    35,     0,     0,    36,
-    -249,    37,    38,    39,     0,  -249,    40,   160,    41,    42,
-     112,    44,    45,    46,     0,    47,    48,     9,     0,     0,
-      49,    50,    51,    52,    53,    54,     0,   421,     0,    55,
-       0,     0,     0,     0,   421,   587,   421,     0,     0,     0,
-       0,     0,    56,    57,     0,    58,    59,     0,     0,    60,
-       0,     0,    61,     0,     0,  -249,     0,     0,     0,     0,
-     325,  -249,    62,    63,    64,     0,    10,    11,   324,     0,
-      35,     0,     0,    36,     0,    37,    38,    39,     0,     0,
-      40,     0,    41,    42,   112,    44,    45,    46,     0,    47,
-      48,     9,   177,     0,    49,    50,    51,    52,    53,    54,
-       0,     0,   185,    55,     0,     0,   189,   190,   191,   192,
-     193,   194,   195,   196,   197,     0,    56,    57,     0,    58,
+      12,   119,   161,   121,   272,   174,   359,   488,   274,   436,
+     502,   240,   385,   376,   323,    32,   278,    79,   508,   259,
+     235,   393,   103,    32,   320,   138,   235,   555,   107,   400,
+     540,   111,   375,   402,   111,   433,   235,    27,   128,   173,
+     111,   571,   426,   417,   619,   389,   391,   380,   146,   150,
+     109,   428,   164,   109,   457,   120,   380,   435,     9,   131,
+       5,  -213,   150,   226,   232,   233,   653,     4,     9,   212,
+     152,   153,   154,   155,   156,   157,   390,   166,   167,   163,
+       7,   207,   561,   366,    11,     9,   261,   214,    15,   216,
+     218,   388,   205,    28,   276,  -213,   462,    29,    20,    18,
+      19,   282,   239,   222,   620,   621,   427,    10,    11,    23,
+     174,   463,   632,   325,   622,   133,    27,    10,    11,  -179,
+    -234,   273,   243,   458,   291,   579,   133,  -213,   618,    26,
+     111,   228,   228,   228,    10,    11,   111,     9,   146,   381,
+     136,   208,   150,   367,   289,   228,    33,   134,    93,   257,
+     164,   209,   537,   209,   228,   266,   124,   438,   134,   526,
+     130,   528,   228,   439,   658,   492,   659,   150,    27,   228,
+     501,   101,   503,   152,   156,   361,    29,   163,   638,  -234,
+     379,   607,   633,   331,   332,  -234,    10,    11,   141,     9,
+     164,   369,   228,   639,   640,   318,   652,   438,   624,   625,
+     536,    79,   582,   487,   125,   438,   438,   349,   125,   586,
+     451,   594,   613,   105,   357,    32,  -181,   163,   243,   171,
+     204,   397,   636,   516,   108,   102,   206,  -265,    29,   363,
+     523,     9,  -265,   408,   198,   565,   414,   415,    10,    11,
+    -180,   228,  -152,   228,   243,    79,   202,   409,  -181,   411,
+     451,  -177,   203,   475,  -175,   533,   403,   452,   430,   228,
+     569,   228,   235,   489,   510,  -180,   418,   228,   259,  -264,
+     512,     9,   235,   584,  -264,  -177,   150,  -179,  -175,    11,
+      10,    11,  -265,  -177,   215,   496,  -175,   219,  -265,   228,
+     497,   662,   220,    35,   122,     9,   223,   452,    37,   234,
+     249,   410,   250,    94,   228,   228,   453,   112,   164,  -176,
+     408,    95,    47,    48,     9,    96,    79,   647,   165,    51,
+      10,    11,   496,  -174,  -264,    97,    98,   497,  -178,   209,
+    -264,   277,   262,  -176,   353,   163,   495,   454,   480,   623,
+     482,  -176,   331,   332,    10,    11,   498,  -174,   349,    61,
+     354,   285,  -178,   616,   520,  -174,   226,   515,    99,   286,
+    -178,    64,   358,    10,    11,   483,   360,   243,   529,   478,
+     231,   231,   231,   287,   490,   364,   362,   243,   228,   111,
+     368,   514,   372,   626,   231,   374,   378,   111,   254,   380,
+     228,   111,   481,   231,   146,   522,   150,   631,   257,   384,
+     228,   231,   382,   199,   228,   386,   266,   200,   231,   394,
+     507,   150,   392,   399,   401,   201,   165,   263,   164,   405,
+     413,   416,   419,   264,   228,   228,   432,   445,   446,   254,
+     448,   231,    79,    79,   480,   449,   482,    10,    11,   459,
+     349,   542,   447,   549,   464,   163,   467,   468,   454,   469,
+     480,   470,   482,   614,   454,   471,   165,   562,   349,   486,
+     379,   483,   235,   491,   255,   509,     9,    79,   254,   117,
+     585,   504,   243,   256,     9,   494,     9,   483,    10,    11,
+     231,   506,   231,   511,     9,   513,   521,   164,   481,   525,
+     527,   434,     9,   530,   531,   228,   532,   263,   231,   534,
+     231,   127,   340,   264,   481,   535,   231,   554,   556,   143,
+     557,   147,   265,   564,   163,    10,    11,    10,    11,   172,
+       9,   520,   661,    10,    11,    10,    11,   317,   231,   568,
+     463,   570,  -156,    10,    11,   573,   575,   480,   228,   482,
+     412,    10,    11,   231,   231,   117,   117,   117,   210,   210,
+     577,   210,   210,   578,   235,   581,   288,   592,   593,   117,
+     583,   595,   596,   529,   483,   243,   254,   597,   117,    10,
+      11,    79,  -157,   598,   165,   600,   117,   599,   150,   602,
+     603,   334,   604,   117,   606,   608,   642,   615,   228,   627,
+     335,   481,   349,   630,   542,   336,   337,   338,   549,   454,
+     177,   255,   339,   349,   349,   480,   117,   482,   629,   340,
+     185,   641,   438,   164,   189,    10,    11,   231,   648,   194,
+     195,   196,   197,   649,   650,   651,   341,   657,   106,   231,
+      66,   484,   483,   628,   580,   654,   590,   591,   342,   231,
+     163,   370,   123,   231,   343,   371,   345,    11,   404,   493,
+     284,   505,   355,   356,   352,   117,   476,   117,    91,   481,
+     443,   444,   574,   231,   231,   344,   539,   563,   637,   634,
+     559,   344,   344,   117,   351,   117,     0,     0,     0,    37,
+       0,   117,     0,     0,   165,     0,     0,     0,   112,     0,
+       0,     0,     0,    47,    48,     9,     0,     0,     0,     0,
+      51,     0,     0,   117,     0,     0,     0,   224,     0,     0,
+       0,     0,     0,     0,   137,   117,     0,     0,   117,   117,
+       0,     0,   175,  -274,   114,     0,   160,   484,     0,   169,
+     225,     0,     0,     0,   231,     0,   280,     0,     0,     0,
+       0,     0,    64,   484,    10,    11,   281,     0,     0,     0,
+       0,   176,   177,   165,   178,   179,   180,   181,   182,     0,
+     183,   184,   185,   186,   187,   188,   189,   190,   191,   192,
+     193,   194,   195,   196,   197,     0,   450,   231,     0,     0,
+       0,     0,     0,  -274,   461,     0,     0,     0,   344,     0,
+       0,     0,   117,  -274,     0,   344,     0,     0,     0,     0,
+       0,     0,     0,   344,   117,     0,   117,     0,     0,     0,
+       0,     0,     0,     0,   117,     0,     0,     0,   117,     0,
+       0,     0,     0,     0,     0,     0,     0,   231,     0,     0,
+     484,     0,     0,     0,     0,     0,     0,     0,   117,   117,
+     292,   293,   294,   295,     0,   296,   297,   298,     0,   299,
+     300,   301,   302,   303,   304,   305,   306,   307,   308,   309,
+     310,   311,   312,     0,   160,     0,   319,     0,   322,     0,
+       0,     0,   137,   137,   333,   538,     0,     0,     0,   165,
+       0,   545,   548,     0,   553,     0,     0,     0,     0,     0,
+       0,     0,     0,   558,   344,   560,     0,     0,   484,     0,
+     543,   344,   117,   344,     0,     0,     0,     0,     0,   117,
+       0,     0,   344,     0,   344,     0,     0,     0,   117,     0,
+      37,     0,     0,    35,     0,     0,     0,     0,    37,   112,
+       0,   168,     0,     0,    47,    48,     9,   112,     0,     0,
+       0,    51,    47,    48,     9,   137,     0,     0,   224,    51,
+       0,     0,   117,     0,     0,   137,    55,     0,     0,     0,
+       0,     0,     0,     0,     0,   114,     0,     0,     0,    56,
+      57,   225,    58,    59,     0,     0,    60,   290,   421,    61,
+       0,     0,   160,    64,   601,    10,    11,   281,   421,    62,
+      63,    64,   605,    10,    11,     0,     0,     0,    37,     0,
+       0,   241,   117,   344,     0,   117,     0,   112,     0,     0,
+       0,   344,    47,    48,     9,     0,     0,     0,   344,    51,
+       0,     0,     0,     0,     0,     0,   224,     0,     0,     0,
+       0,   137,   137,     0,   545,   635,     0,     0,     0,     0,
+       0,     0,     0,   114,     0,     0,     0,     0,     0,   225,
+     344,     0,     0,   543,   344,     0,     0,     0,     0,    -2,
+      34,    64,    35,    10,    11,    36,     0,    37,    38,    39,
+     137,     0,    40,   117,    41,    42,    43,    44,    45,    46,
+       0,    47,    48,     9,   137,     0,    49,    50,    51,    52,
+      53,    54,   160,     0,     0,    55,     0,   169,     0,     0,
+       0,     0,   344,     0,   344,     0,     0,     0,    56,    57,
+       0,    58,    59,     0,     0,    60,     0,     0,    61,     0,
+       0,   -24,     0,     0,     0,     0,     0,     0,    62,    63,
+      64,     0,    10,    11,     0,     0,     0,     0,   566,   567,
+       0,     0,     0,     0,     0,     0,     0,     0,   324,     0,
+      35,     0,     0,    36,  -249,    37,    38,    39,     0,  -249,
+      40,   160,    41,    42,   112,    44,    45,    46,     0,    47,
+      48,     9,     0,     0,    49,    50,    51,    52,    53,    54,
+       0,   421,     0,    55,     0,     0,     0,     0,   421,   588,
+     421,     0,     0,     0,     0,     0,    56,    57,     0,    58,
       59,     0,     0,    60,     0,     0,    61,     0,     0,  -249,
-     644,   645,     0,   160,   325,  -249,    62,    63,    64,    35,
-      10,    11,   421,     0,    37,     0,     0,     0,     0,     0,
-       0,     0,     0,   112,     0,   334,     0,     0,    47,    48,
-       9,     0,     0,     0,   335,    51,     0,   429,     0,   336,
-     337,   338,   158,     0,     0,     0,   339,     0,     0,     0,
-       0,     0,     0,   340,     0,    56,    57,     0,    58,   159,
-       0,     0,    60,     0,    35,    61,     0,     0,     0,    37,
-     341,     0,     0,     0,     0,    62,    63,    64,   112,    10,
-      11,     0,     0,    47,    48,     9,     0,   472,   343,     0,
-      51,    11,     0,     0,     0,     0,     0,    55,     0,     0,
+       0,     0,     0,     0,   325,  -249,    62,    63,    64,     0,
+      10,    11,   324,     0,    35,     0,     0,    36,     0,    37,
+      38,    39,     0,     0,    40,     0,    41,    42,   112,    44,
+      45,    46,     0,    47,    48,     9,   177,     0,    49,    50,
+      51,    52,    53,    54,     0,     0,   185,    55,     0,     0,
+     189,   190,   191,   192,   193,   194,   195,   196,   197,     0,
+      56,    57,     0,    58,    59,     0,     0,    60,     0,     0,
+      61,     0,     0,  -249,   645,   646,     0,   160,   325,  -249,
+      62,    63,    64,    35,    10,    11,   421,     0,    37,     0,
+       0,     0,     0,     0,     0,     0,     0,   112,     0,   334,
+       0,     0,    47,    48,     9,     0,     0,     0,   335,    51,
+       0,     0,     0,   336,   337,   338,   158,     0,     0,     0,
+     339,     0,     0,     0,     0,     0,     0,   340,     0,    56,
+      57,     0,    58,   159,     0,     0,    60,     0,    35,    61,
+     314,     0,     0,    37,   341,     0,     0,     0,     0,    62,
+      63,    64,   112,    10,    11,     0,     0,    47,    48,     9,
+       0,     0,   343,     0,    51,    11,     0,     0,     0,     0,
+       0,    55,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    56,    57,     0,    58,    59,     0,
+       0,    60,     0,    35,    61,     0,     0,     0,    37,     0,
+       0,     0,   420,     0,    62,    63,    64,   112,    10,    11,
+       0,     0,    47,    48,     9,     0,     0,     0,     0,    51,
+       0,   429,     0,     0,     0,     0,   158,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    56,
+      57,     0,    58,   159,     0,     0,    60,     0,    35,    61,
+       0,     0,     0,    37,     0,     0,     0,     0,     0,    62,
+      63,    64,   112,    10,    11,     0,     0,    47,    48,     9,
+       0,   473,     0,     0,    51,     0,     0,     0,     0,     0,
+       0,    55,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    56,    57,     0,    58,    59,     0,
+       0,    60,     0,    35,    61,     0,     0,     0,    37,     0,
+       0,     0,     0,     0,    62,    63,    64,   112,    10,    11,
+       0,     0,    47,    48,     9,     0,   474,     0,     0,    51,
+       0,     0,     0,     0,     0,     0,    55,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    35,     0,     0,    56,
+      57,    37,    58,    59,     0,     0,    60,     0,     0,    61,
+     112,     0,     0,     0,     0,    47,    48,     9,     0,    62,
+      63,    64,    51,    10,    11,     0,     0,     0,     0,    55,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      56,    57,     0,    58,    59,     0,     0,    60,     0,    35,
-      61,     0,     0,     0,    37,     0,     0,     0,     0,     0,
-      62,    63,    64,   112,    10,    11,     0,     0,    47,    48,
-       9,     0,   473,     0,     0,    51,     0,     0,     0,     0,
-       0,     0,    55,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    35,     0,     0,    56,    57,    37,    58,    59,
-       0,     0,    60,     0,     0,    61,   112,     0,     0,     0,
-       0,    47,    48,     9,     0,    62,    63,    64,    51,    10,
-      11,     0,     0,     0,     0,    55,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    56,    57,
-       0,    58,    59,     0,     0,    60,     0,    35,    61,     0,
-       0,     0,    37,     0,     0,     0,   586,     0,    62,    63,
-      64,   112,    10,    11,     0,     0,    47,    48,     9,     0,
-       0,     0,     0,    51,     0,     0,     0,     0,     0,     0,
+       0,     0,    56,    57,     0,    58,    59,     0,     0,    60,
+       0,    35,    61,     0,     0,     0,    37,     0,     0,     0,
+     587,     0,    62,    63,    64,   112,    10,    11,     0,     0,
+      47,    48,     9,     0,     0,     0,     0,    51,     0,     0,
+       0,     0,     0,     0,    55,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    35,     0,     0,    56,    57,    37,
+      58,    59,     0,     0,    60,     0,     0,    61,   112,     0,
+       0,     0,     0,    47,    48,     9,     0,    62,    63,    64,
+      51,    10,    11,     0,     0,     0,     0,   158,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    35,     0,     0,
+      56,    57,   283,    58,   159,     0,     0,    60,     0,     0,
+      61,   112,     0,     0,     0,     0,    47,    48,     9,     0,
+      62,    63,    64,    51,    10,    11,     0,     0,     0,     0,
       55,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      35,     0,     0,    56,    57,    37,    58,    59,     0,     0,
+       0,     0,     0,    56,    57,    37,    58,    59,     0,     0,
       60,     0,     0,    61,   112,     0,     0,     0,     0,    47,
       48,     9,     0,    62,    63,    64,    51,    10,    11,     0,
-       0,     0,     0,   158,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    35,     0,     0,    56,    57,   283,    58,
-     159,     0,     0,    60,     0,     0,    61,   112,     0,     0,
-      35,     0,    47,    48,     9,    37,    62,    63,    64,    51,
-      10,    11,     0,     0,   112,     0,    55,     0,     0,    47,
-      48,     9,     0,     0,     0,     0,    51,     0,     0,    56,
-      57,    37,    58,    59,     0,     0,    60,     0,     0,    61,
-     112,     0,     0,     0,     0,    47,    48,     9,     0,    62,
-      63,    64,    51,    10,    11,     0,    61,     0,    37,   224,
-       0,     0,     0,     0,     0,     0,     0,   112,    64,     0,
-      10,    11,    47,    48,     9,     0,   114,     0,     0,    51,
-       0,     0,   225,     0,     0,     0,   224,     0,   280,     0,
-      37,     0,     0,     0,    64,     0,    10,    11,   281,   112,
-       0,     0,     0,   114,    47,    48,     9,     0,     0,   225,
-       0,    51,     0,     0,     0,   290,     0,    37,   224,     0,
-     241,    64,     0,    10,    11,   281,   112,     0,     0,     0,
-       0,    47,    48,     9,     0,   114,     0,     0,    51,     0,
-       0,   225,     0,     0,     0,   224,     0,     0,     0,    37,
-       0,     0,     0,    64,     0,    10,    11,   396,   112,     0,
-      37,     0,   114,    47,    48,     9,     0,     0,   225,   112,
-      51,     0,     0,     0,    47,    48,     9,   113,     0,     0,
-      64,    51,    10,    11,     0,     0,     0,     0,   224,     0,
-       0,     0,    37,     0,   114,     0,     0,     0,     0,     0,
-     115,   112,     0,     0,     0,   114,    47,    48,     9,     0,
-       0,   225,    64,    51,    10,    11,     0,     0,    37,     0,
-     406,     0,     0,    64,     0,    10,    11,   112,     0,     0,
-       0,     0,    47,    48,     9,     0,     0,   114,     0,    51,
-       0,     0,     0,   407,     0,   283,   224,     0,     0,     0,
-       0,     0,     0,     0,   112,    64,     0,    10,    11,    47,
-      48,     9,     0,   114,     0,     0,    51,     0,     0,   476,
-       0,   334,     0,   224,     0,     0,     0,     0,     0,   334,
-     335,    64,   459,    10,    11,   336,   337,   338,   335,     0,
-     114,     0,   339,   336,   337,   338,   225,     0,     0,   439,
-     339,     0,     0,     0,   334,     0,     0,   340,    64,     0,
-      10,    11,   334,   335,     0,     0,   341,     0,   336,   337,
-     540,   335,   440,     0,   341,   339,   336,   337,   338,     0,
-       0,     0,   340,   339,   343,     0,     0,    11,     0,     0,
-     340,     0,   343,     0,     0,    11,     0,     0,     0,   341,
-       0,     0,     0,     0,     0,     0,     0,   341,     0,     0,
-       0,     0,     0,   608,     0,     0,     0,   343,     0,    10,
-      11,     0,     0,     0,     0,   343,   176,   177,    11,   178,
-       0,   180,   181,   182,     0,     0,   184,   185,   186,   187,
-     188,   189,   190,   191,   192,   193,   194,   195,   196,   197,
-       0,     0,     0,     0,     0,     0,   176,   177,     0,   178,
-       0,   180,   181,   182,     0,   431,   184,   185,   186,   187,
-     188,   189,   190,   191,   192,   193,   194,   195,   196,   197,
-     176,   177,     0,   178,     0,   180,   181,   182,     0,   523,
-     184,   185,   186,   187,   188,   189,   190,   191,   192,   193,
-     194,   195,   196,   197,   176,   177,     0,   178,     0,   180,
-     181,   182,     0,   654,   184,   185,   186,   187,   188,   189,
-     190,   191,   192,   193,   194,   195,   196,   197,   176,   177,
-       0,   178,     0,   180,   181,   182,     0,   655,   184,   185,
+      37,     0,     0,   224,     0,     0,     0,     0,    37,   112,
+       0,     0,     0,     0,    47,    48,     9,   112,     0,     0,
+     114,    51,    47,    48,     9,     0,   225,     0,   113,    51,
+       0,     0,     0,     0,    37,     0,   224,     0,    64,     0,
+      10,    11,   396,   112,     0,   114,     0,     0,    47,    48,
+       9,   115,     0,   114,     0,    51,     0,     0,     0,   225,
+       0,    37,   406,    64,     0,    10,    11,     0,     0,     0,
+     112,    64,     0,    10,    11,    47,    48,     9,     0,   114,
+       0,     0,    51,     0,     0,   407,     0,   283,     0,   224,
+       0,     0,     0,     0,     0,   334,   112,    64,     0,    10,
+      11,    47,    48,     9,   335,     0,   114,     0,    51,   336,
+     337,   338,   477,     0,     0,   224,   339,     0,     0,     0,
+     334,     0,     0,   440,    64,     0,    10,    11,   334,   335,
+       0,   460,   114,     0,   336,   337,   541,   335,   225,     0,
+     341,   339,   336,   337,   338,     0,   441,     0,   340,   339,
+      64,     0,    10,    11,   334,     0,   340,     0,   343,     0,
+       0,    11,     0,   335,     0,   341,     0,     0,   336,   337,
+     338,     0,     0,   341,     0,   339,     0,     0,     0,     0,
+       0,     0,   340,   343,     0,    10,    11,     0,     0,     0,
+       0,   343,   177,     0,    11,     0,   180,   181,   182,   341,
+       0,   184,   185,   186,   187,   609,   189,   190,   191,   192,
+     193,   194,   195,   196,   197,     0,     0,   343,   176,   177,
+      11,   178,     0,   180,   181,   182,     0,     0,   184,   185,
      186,   187,   188,   189,   190,   191,   192,   193,   194,   195,
-     196,   197,     0,   176,   177,   434,   178,     0,   180,   181,
-     182,     0,     0,   184,   185,   186,   187,   188,   189,   190,
+     196,   197,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   176,   177,     0,   178,     0,   180,   181,   182,     0,
+     434,   184,   185,   186,   187,   188,   189,   190,   191,   192,
+     193,   194,   195,   196,   197,     0,     0,     0,     0,     0,
+       0,   176,   177,     0,   178,     0,   180,   181,   182,     0,
+     431,   184,   185,   186,   187,   188,   189,   190,   191,   192,
+     193,   194,   195,   196,   197,   176,   177,     0,   178,     0,
+     180,   181,   182,     0,   524,   184,   185,   186,   187,   188,
+     189,   190,   191,   192,   193,   194,   195,   196,   197,   176,
+     177,     0,   178,     0,   180,   181,   182,     0,   655,   184,
+     185,   186,   187,   188,   189,   190,   191,   192,   193,   194,
+     195,   196,   197,   176,   177,     0,   178,     0,   180,   181,
+     182,     0,   656,   184,   185,   186,   187,   188,   189,   190,
      191,   192,   193,   194,   195,   196,   197,   176,   177,     0,
        0,     0,   180,   181,   182,     0,     0,   184,   185,   186,
      187,   188,   189,   190,   191,   192,   193,   194,   195,   196,
@@ -1253,215 +1258,220 @@ static const yytype_int16 yytable[] =
 
 static const yytype_int16 yycheck[] =
 {
-       5,    67,   142,   204,    37,   126,    37,    61,   377,   223,
-      36,   132,   323,    39,   126,    20,   143,    22,   201,    45,
-     258,   142,    28,    28,   147,   485,   135,   250,   452,   267,
-     444,    36,   263,   264,    39,   249,    61,   275,    43,   321,
-      45,   279,   316,    67,    31,    24,    59,    24,    53,    54,
-       5,   289,     3,     0,    62,    37,    24,     3,    24,    11,
-      68,    74,    67,   113,   114,   115,    35,    55,    56,    57,
-      58,    59,    60,    40,    62,    63,    53,    44,    24,    61,
-      59,     5,    59,     5,    25,    53,   136,    60,    20,    25,
-      59,    68,     1,     3,   144,   389,    73,    74,    67,     7,
-       7,   151,    75,   397,    12,    12,   172,    73,    74,   135,
-      65,    66,   572,    59,    24,   141,     3,    63,     3,   106,
-      75,    72,   127,    75,   174,     3,    35,    73,    74,   595,
-     135,   113,   114,   115,   159,    67,   141,    24,   143,    24,
-      50,    65,   147,    65,    24,   127,   255,     3,   172,    59,
-     424,    75,   426,    75,   136,   437,    62,   388,    67,   390,
-      68,    68,   144,    73,    74,    51,   460,   172,   382,   151,
-     158,   159,     1,    60,   199,   225,    63,   159,    63,   603,
-     640,   647,   596,   649,    62,    63,    73,    74,    73,    74,
-      68,   241,   174,   607,   608,   200,    35,    83,    21,     3,
-      35,   206,    35,    89,   515,    24,    35,   212,    63,   503,
-      62,   522,   413,   436,   220,   220,    68,   199,   223,   420,
-      24,   271,    62,    40,    59,    62,    59,    44,    67,   234,
-      59,    37,    67,   283,    67,    24,   286,   287,    67,    24,
-       3,   223,     3,   225,   249,   250,    50,   368,   471,   432,
-     283,    71,   283,    62,    62,    61,   368,   378,    59,   241,
-      68,   243,   476,   317,    24,   559,   378,   249,     7,    73,
-      74,    60,   399,    12,    67,   384,   281,    59,   401,    66,
-     518,    62,   576,   577,    73,    74,    59,    68,    35,   271,
-      63,   660,   317,    53,    66,    59,   211,    74,    71,    59,
-      24,   283,   217,   218,   286,   287,   600,   113,   114,   115,
-     360,    64,    59,    73,    74,    24,   321,    62,     8,   630,
-      67,   127,    59,    62,    59,    63,    67,    17,    35,    68,
-     136,    49,    22,    23,    24,   317,   386,   342,   144,    29,
-      60,   374,     7,   374,    75,   151,    36,    12,   353,   374,
-     416,    60,   575,   159,    59,   569,   406,   407,   384,    95,
-      24,    97,    98,    53,    73,    74,   392,   372,   174,   374,
-     396,    24,    72,   427,   379,    65,    72,   382,   360,   384,
-       3,    71,    60,     8,    74,   586,    60,   392,    35,    62,
-     372,   396,   374,   199,   399,    59,   401,    62,    75,    60,
-     382,    59,   427,    68,   386,    62,     9,    60,   126,    73,
-      74,   416,    24,    24,    17,     3,    62,   223,    21,   225,
-      73,    74,    37,    24,   406,   407,   341,    35,    31,    32,
-      72,   436,   437,    24,   349,   241,   469,   243,   469,   444,
-     445,    62,   447,   249,   469,   427,   567,   452,    59,    62,
-      67,    59,   485,   458,   485,   567,   461,   462,    59,    67,
-     485,    64,    73,    74,    35,   271,   471,    68,    59,   519,
-     495,   476,    73,    74,    66,    62,    65,   283,    62,    65,
-     286,   287,    73,    74,    59,    24,    67,   469,    59,   207,
-     208,    67,    71,     8,   476,    65,    67,    62,   113,   114,
-     115,    62,    62,   485,    62,    60,    60,    60,    24,    60,
-      60,   317,   127,   495,    94,    95,   582,    97,    98,   659,
-      59,   136,    63,    68,   439,    24,    68,    35,    60,   144,
-     445,   446,    60,   448,    73,    74,   151,   519,   659,   572,
-      60,   572,   457,    59,   459,    75,    68,   572,    75,    60,
-      60,    60,    36,     3,   360,    68,    62,    73,    74,   174,
-      59,    75,   280,    60,   569,    72,   372,   621,   374,    62,
-     575,    59,   290,    60,    73,    74,   382,   582,    60,    60,
-     386,    66,    60,    62,    60,    60,    72,   569,    60,    59,
-     572,   596,    59,   598,    59,    68,   621,   602,   603,    62,
-     406,   407,   607,   608,    72,    62,    68,   640,   223,   640,
-     225,    49,    59,    62,    60,   640,    68,    60,    60,    14,
-      68,   427,    62,    60,    60,    60,   241,    60,   243,    68,
-      31,   211,    34,   548,   249,    22,   508,   217,   218,   621,
-     582,   556,    44,   641,   243,   524,    48,   524,   366,   367,
-     281,    53,    54,    55,    56,    39,   271,   159,   640,   392,
-     243,   213,   384,   469,   372,    22,   334,   495,   283,   440,
-     476,   286,   287,   602,   334,   598,     4,     5,   462,   485,
-     458,    49,    -1,   598,   599,    -1,   212,   405,    -1,   495,
-      -1,    -1,    -1,    61,    -1,    -1,    64,    -1,    -1,    -1,
-      -1,   419,    -1,    -1,    -1,    33,    34,    -1,    36,    37,
-      38,    39,    40,   519,    42,    43,    44,    45,    46,    47,
-      48,    49,    50,    51,    52,    53,    54,    55,    56,     3,
-      -1,    -1,    -1,    -1,     8,    -1,    -1,    65,    -1,    -1,
-      -1,    -1,    -1,    17,    -1,   360,    -1,    75,    22,    23,
-      24,    -1,    -1,    -1,   334,    29,    -1,   372,    -1,   374,
-      -1,   341,    36,   569,    -1,    -1,   572,   382,    -1,   349,
-      -1,   386,    -1,    -1,    -1,    49,    50,    -1,    52,    53,
-      -1,    -1,    56,    -1,    -1,    59,    60,    -1,    -1,    -1,
-      -1,   406,   407,    -1,    -1,    69,    70,    71,    -1,    73,
-      74,    -1,    -1,    -1,    -1,    -1,    -1,   175,   176,   177,
-     178,    -1,   180,   181,   182,   621,   184,   185,   186,   187,
-     188,   189,   190,   191,   192,   193,   194,   195,   196,   197,
-      -1,   199,    -1,   201,   640,   203,    -1,    -1,    -1,   207,
-     208,   209,    -1,     3,    -1,    -1,    -1,    -1,     8,    -1,
-      -1,    11,    -1,    -1,   469,    -1,    -1,    17,    -1,   439,
-      -1,   476,    22,    23,    24,   445,   446,    -1,   448,    29,
-     485,    -1,    -1,    -1,    -1,    -1,    36,   457,    -1,   459,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    49,
-      50,    -1,    52,    53,    -1,    -1,    56,    -1,    -1,    59,
-      -1,    -1,    -1,    -1,   519,    -1,    -1,    -1,    -1,    69,
-      70,    71,   280,    73,    74,    34,    -1,    -1,    -1,    38,
-      39,    40,   290,    -1,    43,    44,    45,    46,    -1,    48,
-      49,    50,    51,    52,    53,    54,    55,    56,    -1,     3,
-      -1,    -1,    -1,    -1,     8,   313,    -1,    -1,    -1,   317,
-      -1,    -1,    -1,    17,   569,   323,    -1,   572,    22,    23,
-      24,    -1,    -1,    -1,    -1,    29,    -1,    -1,   548,    -1,
-      -1,    -1,    36,    -1,    -1,    -1,   556,    -1,    -1,    -1,
-      -1,    -1,    -1,   563,    -1,    49,    50,    -1,    52,    53,
-      -1,    -1,    56,    -1,    -1,    59,    -1,    -1,   366,   367,
-      -1,    -1,    -1,    67,    -1,    69,    70,    71,    -1,    73,
-      74,    -1,    -1,    -1,    -1,   595,    -1,    -1,   598,   599,
-      -1,    -1,    -1,    -1,    -1,   640,     0,     1,    -1,     3,
-      -1,    -1,     6,    -1,     8,     9,    10,   405,    -1,    13,
-      -1,    15,    16,    17,    18,    19,    20,    -1,    22,    23,
-      24,   419,    -1,    27,    28,    29,    30,    31,    32,   427,
-      -1,    -1,    36,    -1,   432,    -1,    -1,   647,    -1,   649,
-      -1,    -1,    -1,    -1,    -1,    49,    50,    -1,    52,    53,
-      -1,    -1,    56,    -1,    -1,    59,    -1,    -1,    62,    -1,
-      -1,    -1,    -1,    -1,    -1,    69,    70,    71,    -1,    73,
-      74,    -1,    -1,    -1,   472,   473,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,     1,    -1,     3,    -1,    -1,     6,
-       7,     8,     9,    10,    -1,    12,    13,   495,    15,    16,
-      17,    18,    19,    20,    -1,    22,    23,    24,    -1,    -1,
-      27,    28,    29,    30,    31,    32,    -1,   515,    -1,    36,
-      -1,    -1,    -1,    -1,   522,   523,   524,    -1,    -1,    -1,
-      -1,    -1,    49,    50,    -1,    52,    53,    -1,    -1,    56,
-      -1,    -1,    59,    -1,    -1,    62,    -1,    -1,    -1,    -1,
-      67,    68,    69,    70,    71,    -1,    73,    74,     1,    -1,
-       3,    -1,    -1,     6,    -1,     8,     9,    10,    -1,    -1,
-      13,    -1,    15,    16,    17,    18,    19,    20,    -1,    22,
-      23,    24,    34,    -1,    27,    28,    29,    30,    31,    32,
-      -1,    -1,    44,    36,    -1,    -1,    48,    49,    50,    51,
-      52,    53,    54,    55,    56,    -1,    49,    50,    -1,    52,
+       5,    37,    61,    37,   142,    67,   223,   377,   143,   323,
+     389,   126,   258,   250,   204,    20,   147,    22,   397,   135,
+     126,   267,    28,    28,   201,    49,   132,   453,    31,   275,
+     445,    36,   249,   279,    39,   321,   142,     3,    43,    67,
+      45,   486,    11,   289,     5,   263,   264,    24,    53,    54,
+      36,   316,    61,    39,     3,    37,    24,   322,    24,    45,
+      25,     1,    67,   113,   114,   115,    20,     0,    24,    59,
+      55,    56,    57,    58,    59,    60,    53,    62,    63,    61,
+      25,     5,   461,     5,    74,    24,   136,    95,    24,    97,
+      98,    59,     1,    59,   144,    35,    60,    63,    21,     3,
+      62,   151,   126,   106,    65,    66,    75,    73,    74,    24,
+     172,    75,   596,    67,    75,    35,     3,    73,    74,    59,
+       3,    60,   127,    72,   174,   504,    35,    67,   573,    63,
+     135,   113,   114,   115,    73,    74,   141,    24,   143,   255,
+      71,    65,   147,    65,   172,   127,    62,    67,    62,   135,
+     159,    75,   438,    75,   136,   141,    40,    62,    67,   424,
+      44,   426,   144,    68,   648,   382,   650,   172,     3,   151,
+     388,    24,   390,   158,   159,   225,    63,   159,   604,    62,
+      63,   560,   597,   207,   208,    68,    73,    74,    51,    24,
+     199,   241,   174,   608,   609,   200,   641,    62,   577,   578,
+     437,   206,   516,    68,    40,    62,    62,   212,    44,   523,
+       3,    68,    68,     3,   220,   220,    35,   199,   223,    62,
+      83,   271,   601,   413,     3,    60,    89,     7,    63,   234,
+     420,    24,    12,   283,    67,   472,   286,   287,    73,    74,
+      59,   223,    66,   225,   249,   250,    66,   283,    67,   283,
+       3,    35,    59,   368,    35,   432,   280,    50,   317,   241,
+     477,   243,   368,   378,   399,    59,   290,   249,   384,     7,
+     401,    24,   378,   519,    12,    59,   281,    59,    59,    74,
+      73,    74,    62,    67,    24,     7,    67,    64,    68,   271,
+      12,   661,    62,     3,    37,    24,    59,    50,     8,    63,
+      59,   283,    67,     9,   286,   287,    59,    17,   317,    35,
+     360,    17,    22,    23,    24,    21,   321,   631,    61,    29,
+      73,    74,     7,    35,    62,    31,    32,    12,    35,    75,
+      68,    60,    35,    59,    59,   317,   386,   342,   374,   576,
+     374,    67,   366,   367,    73,    74,    68,    59,   353,    59,
+       3,    60,    59,   570,   416,    67,   406,   407,    64,    72,
+      67,    71,    60,    73,    74,   374,     8,   372,   427,   374,
+     113,   114,   115,    72,   379,    35,    60,   382,   360,   384,
+      62,   405,    75,    68,   127,    60,    62,   392,    24,    24,
+     372,   396,   374,   136,   399,   419,   401,   587,   384,    62,
+     382,   144,    59,    59,   386,    72,   392,    63,   151,     3,
+     396,   416,    62,    62,    62,    71,   159,    53,   427,    65,
+      67,    62,    65,    59,   406,   407,    66,    59,    67,    24,
+      67,   174,   437,   438,   470,     8,   470,    73,    74,    65,
+     445,   446,    71,   448,    62,   427,    62,    62,   453,    62,
+     486,    60,   486,   568,   459,    60,   199,   462,   463,    60,
+      63,   470,   568,    60,    59,    35,    24,   472,    24,    37,
+     520,    60,   477,    68,    24,    68,    24,   486,    73,    74,
+     223,    68,   225,    60,    24,    60,    60,   496,   470,    75,
+      68,    75,    24,    60,    60,   477,    60,    53,   241,    60,
+     243,    59,    36,    59,   486,    68,   249,     3,    62,    59,
+      72,    59,    68,    60,   496,    73,    74,    73,    74,    59,
+      24,   583,   660,    73,    74,    73,    74,    59,   271,    62,
+      75,    59,    59,    73,    74,    60,    66,   573,   520,   573,
+     283,    73,    74,   286,   287,   113,   114,   115,    94,    95,
+      60,    97,    98,    60,   660,    60,    60,    60,    72,   127,
+      62,    60,    60,   622,   573,   570,    24,    59,   136,    73,
+      74,   576,    59,    68,   317,    72,   144,    62,   583,    68,
+      62,     8,    49,   151,    62,    59,    14,    60,   570,    68,
+      17,   573,   597,    68,   599,    22,    23,    24,   603,   604,
+      34,    59,    29,   608,   609,   641,   174,   641,    60,    36,
+      44,    60,    62,   622,    48,    73,    74,   360,    60,    53,
+      54,    55,    56,    60,    60,    60,    53,    68,    31,   372,
+      22,   374,   641,   583,   509,   642,   525,   525,    65,   382,
+     622,   243,    39,   386,    71,   243,   211,    74,   281,   384,
+     159,   392,   217,   218,   213,   223,   372,   225,    22,   641,
+     334,   334,   496,   406,   407,   211,   441,   463,   603,   599,
+     459,   217,   218,   241,   212,   243,    -1,    -1,    -1,     8,
+      -1,   249,    -1,    -1,   427,    -1,    -1,    -1,    17,    -1,
+      -1,    -1,    -1,    22,    23,    24,    -1,    -1,    -1,    -1,
+      29,    -1,    -1,   271,    -1,    -1,    -1,    36,    -1,    -1,
+      -1,    -1,    -1,    -1,    49,   283,    -1,    -1,   286,   287,
+      -1,    -1,     4,     5,    53,    -1,    61,   470,    -1,    64,
+      59,    -1,    -1,    -1,   477,    -1,    65,    -1,    -1,    -1,
+      -1,    -1,    71,   486,    73,    74,    75,    -1,    -1,    -1,
+      -1,    33,    34,   496,    36,    37,    38,    39,    40,    -1,
+      42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
+      52,    53,    54,    55,    56,    -1,   341,   520,    -1,    -1,
+      -1,    -1,    -1,    65,   349,    -1,    -1,    -1,   334,    -1,
+      -1,    -1,   360,    75,    -1,   341,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   349,   372,    -1,   374,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   382,    -1,    -1,    -1,   386,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   570,    -1,    -1,
+     573,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   406,   407,
+     175,   176,   177,   178,    -1,   180,   181,   182,    -1,   184,
+     185,   186,   187,   188,   189,   190,   191,   192,   193,   194,
+     195,   196,   197,    -1,   199,    -1,   201,    -1,   203,    -1,
+      -1,    -1,   207,   208,   209,   440,    -1,    -1,    -1,   622,
+      -1,   446,   447,    -1,   449,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   458,   440,   460,    -1,    -1,   641,    -1,
+     446,   447,   470,   449,    -1,    -1,    -1,    -1,    -1,   477,
+      -1,    -1,   458,    -1,   460,    -1,    -1,    -1,   486,    -1,
+       8,    -1,    -1,     3,    -1,    -1,    -1,    -1,     8,    17,
+      -1,    11,    -1,    -1,    22,    23,    24,    17,    -1,    -1,
+      -1,    29,    22,    23,    24,   280,    -1,    -1,    36,    29,
+      -1,    -1,   520,    -1,    -1,   290,    36,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    53,    -1,    -1,    -1,    49,
+      50,    59,    52,    53,    -1,    -1,    56,    65,   313,    59,
+      -1,    -1,   317,    71,   549,    73,    74,    75,   323,    69,
+      70,    71,   557,    73,    74,    -1,    -1,    -1,     8,    -1,
+      -1,    11,   570,   549,    -1,   573,    -1,    17,    -1,    -1,
+      -1,   557,    22,    23,    24,    -1,    -1,    -1,   564,    29,
+      -1,    -1,    -1,    -1,    -1,    -1,    36,    -1,    -1,    -1,
+      -1,   366,   367,    -1,   599,   600,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    53,    -1,    -1,    -1,    -1,    -1,    59,
+     596,    -1,    -1,   599,   600,    -1,    -1,    -1,    -1,     0,
+       1,    71,     3,    73,    74,     6,    -1,     8,     9,    10,
+     405,    -1,    13,   641,    15,    16,    17,    18,    19,    20,
+      -1,    22,    23,    24,   419,    -1,    27,    28,    29,    30,
+      31,    32,   427,    -1,    -1,    36,    -1,   432,    -1,    -1,
+      -1,    -1,   648,    -1,   650,    -1,    -1,    -1,    49,    50,
+      -1,    52,    53,    -1,    -1,    56,    -1,    -1,    59,    -1,
+      -1,    62,    -1,    -1,    -1,    -1,    -1,    -1,    69,    70,
+      71,    -1,    73,    74,    -1,    -1,    -1,    -1,   473,   474,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     1,    -1,
+       3,    -1,    -1,     6,     7,     8,     9,    10,    -1,    12,
+      13,   496,    15,    16,    17,    18,    19,    20,    -1,    22,
+      23,    24,    -1,    -1,    27,    28,    29,    30,    31,    32,
+      -1,   516,    -1,    36,    -1,    -1,    -1,    -1,   523,   524,
+     525,    -1,    -1,    -1,    -1,    -1,    49,    50,    -1,    52,
       53,    -1,    -1,    56,    -1,    -1,    59,    -1,    -1,    62,
-     618,   619,    -1,   621,    67,    68,    69,    70,    71,     3,
-      73,    74,   630,    -1,     8,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    17,    -1,     8,    -1,    -1,    22,    23,
-      24,    -1,    -1,    -1,    17,    29,    -1,    31,    -1,    22,
-      23,    24,    36,    -1,    -1,    -1,    29,    -1,    -1,    -1,
-      -1,    -1,    -1,    36,    -1,    49,    50,    -1,    52,    53,
-      -1,    -1,    56,    -1,     3,    59,    -1,    -1,    -1,     8,
-      53,    -1,    -1,    -1,    -1,    69,    70,    71,    17,    73,
-      74,    -1,    -1,    22,    23,    24,    -1,    26,    71,    -1,
-      29,    74,    -1,    -1,    -1,    -1,    -1,    36,    -1,    -1,
+      -1,    -1,    -1,    -1,    67,    68,    69,    70,    71,    -1,
+      73,    74,     1,    -1,     3,    -1,    -1,     6,    -1,     8,
+       9,    10,    -1,    -1,    13,    -1,    15,    16,    17,    18,
+      19,    20,    -1,    22,    23,    24,    34,    -1,    27,    28,
+      29,    30,    31,    32,    -1,    -1,    44,    36,    -1,    -1,
+      48,    49,    50,    51,    52,    53,    54,    55,    56,    -1,
+      49,    50,    -1,    52,    53,    -1,    -1,    56,    -1,    -1,
+      59,    -1,    -1,    62,   619,   620,    -1,   622,    67,    68,
+      69,    70,    71,     3,    73,    74,   631,    -1,     8,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    17,    -1,     8,
+      -1,    -1,    22,    23,    24,    -1,    -1,    -1,    17,    29,
+      -1,    -1,    -1,    22,    23,    24,    36,    -1,    -1,    -1,
+      29,    -1,    -1,    -1,    -1,    -1,    -1,    36,    -1,    49,
+      50,    -1,    52,    53,    -1,    -1,    56,    -1,     3,    59,
+      60,    -1,    -1,     8,    53,    -1,    -1,    -1,    -1,    69,
+      70,    71,    17,    73,    74,    -1,    -1,    22,    23,    24,
+      -1,    -1,    71,    -1,    29,    74,    -1,    -1,    -1,    -1,
+      -1,    36,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    49,    50,    -1,    52,    53,    -1,
+      -1,    56,    -1,     3,    59,    -1,    -1,    -1,     8,    -1,
+      -1,    -1,    67,    -1,    69,    70,    71,    17,    73,    74,
+      -1,    -1,    22,    23,    24,    -1,    -1,    -1,    -1,    29,
+      -1,    31,    -1,    -1,    -1,    -1,    36,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    49,
+      50,    -1,    52,    53,    -1,    -1,    56,    -1,     3,    59,
+      -1,    -1,    -1,     8,    -1,    -1,    -1,    -1,    -1,    69,
+      70,    71,    17,    73,    74,    -1,    -1,    22,    23,    24,
+      -1,    26,    -1,    -1,    29,    -1,    -1,    -1,    -1,    -1,
+      -1,    36,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    49,    50,    -1,    52,    53,    -1,
+      -1,    56,    -1,     3,    59,    -1,    -1,    -1,     8,    -1,
+      -1,    -1,    -1,    -1,    69,    70,    71,    17,    73,    74,
+      -1,    -1,    22,    23,    24,    -1,    26,    -1,    -1,    29,
+      -1,    -1,    -1,    -1,    -1,    -1,    36,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,     3,    -1,    -1,    49,
+      50,     8,    52,    53,    -1,    -1,    56,    -1,    -1,    59,
+      17,    -1,    -1,    -1,    -1,    22,    23,    24,    -1,    69,
+      70,    71,    29,    73,    74,    -1,    -1,    -1,    -1,    36,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      49,    50,    -1,    52,    53,    -1,    -1,    56,    -1,     3,
-      59,    -1,    -1,    -1,     8,    -1,    -1,    -1,    -1,    -1,
-      69,    70,    71,    17,    73,    74,    -1,    -1,    22,    23,
-      24,    -1,    26,    -1,    -1,    29,    -1,    -1,    -1,    -1,
-      -1,    -1,    36,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,     3,    -1,    -1,    49,    50,     8,    52,    53,
-      -1,    -1,    56,    -1,    -1,    59,    17,    -1,    -1,    -1,
-      -1,    22,    23,    24,    -1,    69,    70,    71,    29,    73,
-      74,    -1,    -1,    -1,    -1,    36,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    49,    50,
-      -1,    52,    53,    -1,    -1,    56,    -1,     3,    59,    -1,
-      -1,    -1,     8,    -1,    -1,    -1,    67,    -1,    69,    70,
-      71,    17,    73,    74,    -1,    -1,    22,    23,    24,    -1,
-      -1,    -1,    -1,    29,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    49,    50,    -1,    52,    53,    -1,    -1,    56,
+      -1,     3,    59,    -1,    -1,    -1,     8,    -1,    -1,    -1,
+      67,    -1,    69,    70,    71,    17,    73,    74,    -1,    -1,
+      22,    23,    24,    -1,    -1,    -1,    -1,    29,    -1,    -1,
+      -1,    -1,    -1,    -1,    36,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,     3,    -1,    -1,    49,    50,     8,
+      52,    53,    -1,    -1,    56,    -1,    -1,    59,    17,    -1,
+      -1,    -1,    -1,    22,    23,    24,    -1,    69,    70,    71,
+      29,    73,    74,    -1,    -1,    -1,    -1,    36,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,     3,    -1,    -1,
+      49,    50,     8,    52,    53,    -1,    -1,    56,    -1,    -1,
+      59,    17,    -1,    -1,    -1,    -1,    22,    23,    24,    -1,
+      69,    70,    71,    29,    73,    74,    -1,    -1,    -1,    -1,
       36,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-       3,    -1,    -1,    49,    50,     8,    52,    53,    -1,    -1,
+      -1,    -1,    -1,    49,    50,     8,    52,    53,    -1,    -1,
       56,    -1,    -1,    59,    17,    -1,    -1,    -1,    -1,    22,
       23,    24,    -1,    69,    70,    71,    29,    73,    74,    -1,
-      -1,    -1,    -1,    36,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,     3,    -1,    -1,    49,    50,     8,    52,
-      53,    -1,    -1,    56,    -1,    -1,    59,    17,    -1,    -1,
-       3,    -1,    22,    23,    24,     8,    69,    70,    71,    29,
-      73,    74,    -1,    -1,    17,    -1,    36,    -1,    -1,    22,
-      23,    24,    -1,    -1,    -1,    -1,    29,    -1,    -1,    49,
-      50,     8,    52,    53,    -1,    -1,    56,    -1,    -1,    59,
-      17,    -1,    -1,    -1,    -1,    22,    23,    24,    -1,    69,
-      70,    71,    29,    73,    74,    -1,    59,    -1,     8,    36,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    17,    71,    -1,
-      73,    74,    22,    23,    24,    -1,    53,    -1,    -1,    29,
-      -1,    -1,    59,    -1,    -1,    -1,    36,    -1,    65,    -1,
-       8,    -1,    -1,    -1,    71,    -1,    73,    74,    75,    17,
-      -1,    -1,    -1,    53,    22,    23,    24,    -1,    -1,    59,
-      -1,    29,    -1,    -1,    -1,    65,    -1,     8,    36,    -1,
-      11,    71,    -1,    73,    74,    75,    17,    -1,    -1,    -1,
-      -1,    22,    23,    24,    -1,    53,    -1,    -1,    29,    -1,
-      -1,    59,    -1,    -1,    -1,    36,    -1,    -1,    -1,     8,
-      -1,    -1,    -1,    71,    -1,    73,    74,    75,    17,    -1,
-       8,    -1,    53,    22,    23,    24,    -1,    -1,    59,    17,
-      29,    -1,    -1,    -1,    22,    23,    24,    36,    -1,    -1,
-      71,    29,    73,    74,    -1,    -1,    -1,    -1,    36,    -1,
-      -1,    -1,     8,    -1,    53,    -1,    -1,    -1,    -1,    -1,
-      59,    17,    -1,    -1,    -1,    53,    22,    23,    24,    -1,
-      -1,    59,    71,    29,    73,    74,    -1,    -1,     8,    -1,
-      36,    -1,    -1,    71,    -1,    73,    74,    17,    -1,    -1,
-      -1,    -1,    22,    23,    24,    -1,    -1,    53,    -1,    29,
-      -1,    -1,    -1,    59,    -1,     8,    36,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    17,    71,    -1,    73,    74,    22,
-      23,    24,    -1,    53,    -1,    -1,    29,    -1,    -1,    59,
-      -1,     8,    -1,    36,    -1,    -1,    -1,    -1,    -1,     8,
-      17,    71,    11,    73,    74,    22,    23,    24,    17,    -1,
-      53,    -1,    29,    22,    23,    24,    59,    -1,    -1,    36,
-      29,    -1,    -1,    -1,     8,    -1,    -1,    36,    71,    -1,
-      73,    74,     8,    17,    -1,    -1,    53,    -1,    22,    23,
-      24,    17,    59,    -1,    53,    29,    22,    23,    24,    -1,
-      -1,    -1,    36,    29,    71,    -1,    -1,    74,    -1,    -1,
-      36,    -1,    71,    -1,    -1,    74,    -1,    -1,    -1,    53,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    53,    -1,    -1,
-      -1,    -1,    -1,    59,    -1,    -1,    -1,    71,    -1,    73,
-      74,    -1,    -1,    -1,    -1,    71,    33,    34,    74,    36,
-      -1,    38,    39,    40,    -1,    -1,    43,    44,    45,    46,
-      47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
-      -1,    -1,    -1,    -1,    -1,    -1,    33,    34,    -1,    36,
-      -1,    38,    39,    40,    -1,    72,    43,    44,    45,    46,
-      47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
-      33,    34,    -1,    36,    -1,    38,    39,    40,    -1,    66,
-      43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
-      53,    54,    55,    56,    33,    34,    -1,    36,    -1,    38,
-      39,    40,    -1,    66,    43,    44,    45,    46,    47,    48,
-      49,    50,    51,    52,    53,    54,    55,    56,    33,    34,
-      -1,    36,    -1,    38,    39,    40,    -1,    66,    43,    44,
+       8,    -1,    -1,    36,    -1,    -1,    -1,    -1,     8,    17,
+      -1,    -1,    -1,    -1,    22,    23,    24,    17,    -1,    -1,
+      53,    29,    22,    23,    24,    -1,    59,    -1,    36,    29,
+      -1,    -1,    -1,    -1,     8,    -1,    36,    -1,    71,    -1,
+      73,    74,    75,    17,    -1,    53,    -1,    -1,    22,    23,
+      24,    59,    -1,    53,    -1,    29,    -1,    -1,    -1,    59,
+      -1,     8,    36,    71,    -1,    73,    74,    -1,    -1,    -1,
+      17,    71,    -1,    73,    74,    22,    23,    24,    -1,    53,
+      -1,    -1,    29,    -1,    -1,    59,    -1,     8,    -1,    36,
+      -1,    -1,    -1,    -1,    -1,     8,    17,    71,    -1,    73,
+      74,    22,    23,    24,    17,    -1,    53,    -1,    29,    22,
+      23,    24,    59,    -1,    -1,    36,    29,    -1,    -1,    -1,
+       8,    -1,    -1,    36,    71,    -1,    73,    74,     8,    17,
+      -1,    11,    53,    -1,    22,    23,    24,    17,    59,    -1,
+      53,    29,    22,    23,    24,    -1,    59,    -1,    36,    29,
+      71,    -1,    73,    74,     8,    -1,    36,    -1,    71,    -1,
+      -1,    74,    -1,    17,    -1,    53,    -1,    -1,    22,    23,
+      24,    -1,    -1,    53,    -1,    29,    -1,    -1,    -1,    -1,
+      -1,    -1,    36,    71,    -1,    73,    74,    -1,    -1,    -1,
+      -1,    71,    34,    -1,    74,    -1,    38,    39,    40,    53,
+      -1,    43,    44,    45,    46,    59,    48,    49,    50,    51,
+      52,    53,    54,    55,    56,    -1,    -1,    71,    33,    34,
+      74,    36,    -1,    38,    39,    40,    -1,    -1,    43,    44,
       45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
-      55,    56,    -1,    33,    34,    60,    36,    -1,    38,    39,
-      40,    -1,    -1,    43,    44,    45,    46,    47,    48,    49,
+      55,    56,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    33,    34,    -1,    36,    -1,    38,    39,    40,    -1,
+      75,    43,    44,    45,    46,    47,    48,    49,    50,    51,
+      52,    53,    54,    55,    56,    -1,    -1,    -1,    -1,    -1,
+      -1,    33,    34,    -1,    36,    -1,    38,    39,    40,    -1,
+      72,    43,    44,    45,    46,    47,    48,    49,    50,    51,
+      52,    53,    54,    55,    56,    33,    34,    -1,    36,    -1,
+      38,    39,    40,    -1,    66,    43,    44,    45,    46,    47,
+      48,    49,    50,    51,    52,    53,    54,    55,    56,    33,
+      34,    -1,    36,    -1,    38,    39,    40,    -1,    66,    43,
+      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
+      54,    55,    56,    33,    34,    -1,    36,    -1,    38,    39,
+      40,    -1,    66,    43,    44,    45,    46,    47,    48,    49,
       50,    51,    52,    53,    54,    55,    56,    33,    34,    -1,
       -1,    -1,    38,    39,    40,    -1,    -1,    43,    44,    45,
       46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
@@ -1517,30 +1527,30 @@ static const yytype_uint8 yystos[] =
      190,    62,   190,   186,   139,    65,    36,    59,   146,   152,
      153,   154,   161,    67,   146,   146,    62,   190,   186,    65,
       67,   126,   131,   132,   188,   189,    11,    75,   191,    31,
-     135,    72,    66,   180,    60,   189,   101,    62,    68,    36,
-      59,   203,   204,   206,    59,    67,    71,    67,     8,   202,
-       3,    50,    59,   141,   212,   213,     3,    72,    65,    11,
-     202,    60,    75,    62,   195,   215,    62,    62,    62,    60,
-      60,   106,    26,    26,   194,   177,    59,   141,   151,   152,
-     153,   154,   155,   161,   163,    60,    68,   105,   194,   141,
-      60,   179,   175,    68,   146,     7,    12,    68,    99,   102,
-     174,   198,   174,    60,   172,    68,   138,   198,    35,    97,
-      60,    93,    60,   186,   146,   130,    94,    95,   168,   185,
-      60,   186,   130,    66,    75,   191,    68,    75,   191,   135,
-      60,    60,    60,   192,    68,   183,   180,   202,   205,   195,
-      24,   141,   142,   197,   202,   209,   217,   202,   141,   196,
-     208,   216,   202,     3,   212,    62,    72,   202,   213,   202,
-     198,   141,   207,    60,   183,   126,   126,    62,   179,    59,
-     163,   116,    60,   187,    66,   103,    60,    60,   198,   104,
-      60,   189,    62,   190,   146,   189,    67,   126,   133,   131,
-     132,    60,    72,    68,    60,    60,    59,    68,    62,    72,
-     202,    68,    62,    49,   202,    62,   198,    59,    59,   202,
-     210,   211,    68,   194,    60,   179,   119,   163,     5,    65,
-      66,    75,   183,   198,   198,    68,    68,    95,    60,    68,
-     130,   210,   195,   209,   202,   198,   208,   212,   195,   195,
-      60,    14,   117,   120,   126,   126,   189,    60,    60,    60,
-      60,   163,    20,   100,    66,    66,    68,   210,   210,   118,
-     112,   105
+     135,    72,    66,   180,    75,   191,   189,   101,    62,    68,
+      36,    59,   203,   204,   206,    59,    67,    71,    67,     8,
+     202,     3,    50,    59,   141,   212,   213,     3,    72,    65,
+      11,   202,    60,    75,    62,   195,   215,    62,    62,    62,
+      60,    60,   106,    26,    26,   194,   177,    59,   141,   151,
+     152,   153,   154,   155,   161,   163,    60,    68,   105,   194,
+     141,    60,   179,   175,    68,   146,     7,    12,    68,    99,
+     102,   174,   198,   174,    60,   172,    68,   138,   198,    35,
+      97,    60,    93,    60,   186,   146,   130,    94,    95,   168,
+     185,    60,   186,   130,    66,    75,   191,    68,   191,   135,
+      60,    60,    60,   192,    60,    68,   183,   180,   202,   205,
+     195,    24,   141,   142,   197,   202,   209,   217,   202,   141,
+     196,   208,   216,   202,     3,   212,    62,    72,   202,   213,
+     202,   198,   141,   207,    60,   183,   126,   126,    62,   179,
+      59,   163,   116,    60,   187,    66,   103,    60,    60,   198,
+     104,    60,   189,    62,   190,   146,   189,    67,   126,   133,
+     131,   132,    60,    72,    68,    60,    60,    59,    68,    62,
+      72,   202,    68,    62,    49,   202,    62,   198,    59,    59,
+     202,   210,   211,    68,   194,    60,   179,   119,   163,     5,
+      65,    66,    75,   183,   198,   198,    68,    68,    95,    60,
+      68,   130,   210,   195,   209,   202,   198,   208,   212,   195,
+     195,    60,    14,   117,   120,   126,   126,   189,    60,    60,
+      60,    60,   163,    20,   100,    66,    66,    68,   210,   210,
+     118,   112,   105
 };
 
 #define yyerrok                (yyerrstatus = 0)
@@ -3428,8 +3438,8 @@ yyreduce:
 #line 951 "go.y"
     {
                // conversion
-               (yyval.node) = nod(OCALL, (yyvsp[(1) - (4)].node), N);
-               (yyval.node)->list = list1((yyvsp[(3) - (4)].node));
+               (yyval.node) = nod(OCALL, (yyvsp[(1) - (5)].node), N);
+               (yyval.node)->list = list1((yyvsp[(3) - (5)].node));
        }
     break;
 
@@ -4827,7 +4837,7 @@ yyreduce:
 
 
 /* Line 1267 of yacc.c.  */
-#line 4832 "y.tab.c"
+#line 4842 "y.tab.c"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
index e7d357f7cab08dc7e89e8f4000c474900b521d8c..e7eb6516cc73bfb0a571a482ec6a11b3a39956ad 100644 (file)
@@ -26,7 +26,7 @@ static struct {
        237, ';',
        "unexpected semicolon or newline before {",
 
-       474, LBODY,
+       475, LBODY,
        "unexpected semicolon or newline before {",
 
        22, '{',
@@ -44,7 +44,7 @@ static struct {
        37, ',',
        "unexpected comma in channel type",
 
-       437, LELSE,
+       438, LELSE,
        "unexpected semicolon or newline before else",
 
        257, ',',
@@ -65,12 +65,12 @@ static struct {
        425, ';',
        "need trailing comma before newline in composite literal",
        
-       435, ';',
+       436, ';',
        "need trailing comma before newline in composite literal",
        
        112, LNAME,
        "nested func not allowed",
 
-       641, ';',
+       642, ';',
        "else must be followed by if or statement block"
 };
diff --git a/test/fixedbugs/issue4162.go b/test/fixedbugs/issue4162.go
new file mode 100644 (file)
index 0000000..c2a8338
--- /dev/null
@@ -0,0 +1,17 @@
+// compile
+
+// Copyright 2013 The Go Authors.  All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 4162. Trailing commas now allowed in conversions.
+
+package p
+
+// All these are valid now.
+var (
+       _ = int(1.0,)      // comma was always permitted (like function call)
+       _ = []byte("foo",) // was syntax error: unexpected comma
+       _ = chan int(nil,) // was syntax error: unexpected comma
+       _ = (func())(nil,) // was syntax error: unexpected comma
+)