diff --git a/Parser/Gmsh.l b/Parser/Gmsh.l
index be16cf5a4b2acd57f2cdb7b4c62a1655ac770f80..01175cc9308032201151cfbe69b395a4b7dc1cd7 100644
--- a/Parser/Gmsh.l
+++ b/Parser/Gmsh.l
@@ -1,4 +1,4 @@
-%{ /* $Id: Gmsh.l,v 1.11 2000-12-07 00:55:16 geuzaine Exp $ */
+%{ /* $Id: Gmsh.l,v 1.12 2000-12-07 08:46:27 geuzaine Exp $ */
 
 #include <stdio.h>
 #include <stdlib.h>
@@ -142,7 +142,6 @@ Modulo                  return tModulo ;
 Nurbs			return tNurbs;
 
 Order			return tOrder;
-Options                 return tOptions;
 
 Physical                return tPhysical;
 Pi                      return tPi;
diff --git a/Parser/Gmsh.tab.cpp b/Parser/Gmsh.tab.cpp
index f562882d85a1592cb59b188ead8a8c8b6b19fe60..f4c569d539d42c6e6942c26df9a58a47d4092476 100644
--- a/Parser/Gmsh.tab.cpp
+++ b/Parser/Gmsh.tab.cpp
@@ -1,90 +1,90 @@
 
 /*  A Bison parser, made from Gmsh.y
-    by GNU Bison version 1.28  */
+ by  GNU Bison version 1.25
+  */
 
 #define YYBISON 1  /* Identify Bison output.  */
 
-#define	tDOUBLE	257
-#define	tSTRING	258
-#define	tBIGSTR	259
-#define	tEND	260
-#define	tAFFECT	261
-#define	tDOTS	262
-#define	tPi	263
-#define	tExp	264
-#define	tLog	265
-#define	tLog10	266
-#define	tSqrt	267
-#define	tSin	268
-#define	tAsin	269
-#define	tCos	270
-#define	tAcos	271
-#define	tTan	272
-#define	tAtan	273
-#define	tAtan2	274
-#define	tSinh	275
-#define	tCosh	276
-#define	tTanh	277
-#define	tFabs	278
-#define	tFloor	279
-#define	tCeil	280
-#define	tFmod	281
-#define	tModulo	282
-#define	tHypot	283
-#define	tPrintf	284
-#define	tPoint	285
-#define	tCircle	286
-#define	tEllipsis	287
-#define	tLine	288
-#define	tSurface	289
-#define	tSpline	290
-#define	tVolume	291
-#define	tCharacteristic	292
-#define	tLength	293
-#define	tParametric	294
-#define	tElliptic	295
-#define	tPlane	296
-#define	tRuled	297
-#define	tTransfinite	298
-#define	tComplex	299
-#define	tPhysical	300
-#define	tUsing	301
-#define	tBump	302
-#define	tProgression	303
-#define	tRotate	304
-#define	tTranslate	305
-#define	tSymmetry	306
-#define	tDilate	307
-#define	tExtrude	308
-#define	tDuplicata	309
-#define	tLoop	310
-#define	tInclude	311
-#define	tRecombine	312
-#define	tDelete	313
-#define	tCoherence	314
-#define	tView	315
-#define	tAttractor	316
-#define	tLayers	317
-#define	tScalarTetrahedron	318
-#define	tVectorTetrahedron	319
-#define	tTensorTetrahedron	320
-#define	tScalarTriangle	321
-#define	tVectorTriangle	322
-#define	tTensorTriangle	323
-#define	tScalarLine	324
-#define	tVectorLine	325
-#define	tTensorLine	326
-#define	tScalarPoint	327
-#define	tVectorPoint	328
-#define	tTensorPoint	329
-#define	tBSpline	330
-#define	tNurbs	331
-#define	tOrder	332
-#define	tWith	333
-#define	tBounds	334
-#define	tKnots	335
-#define	tColor	336
-#define	tOptions	337
+#define	tDOUBLE	258
+#define	tSTRING	259
+#define	tBIGSTR	260
+#define	tEND	261
+#define	tAFFECT	262
+#define	tDOTS	263
+#define	tPi	264
+#define	tExp	265
+#define	tLog	266
+#define	tLog10	267
+#define	tSqrt	268
+#define	tSin	269
+#define	tAsin	270
+#define	tCos	271
+#define	tAcos	272
+#define	tTan	273
+#define	tAtan	274
+#define	tAtan2	275
+#define	tSinh	276
+#define	tCosh	277
+#define	tTanh	278
+#define	tFabs	279
+#define	tFloor	280
+#define	tCeil	281
+#define	tFmod	282
+#define	tModulo	283
+#define	tHypot	284
+#define	tPrintf	285
+#define	tPoint	286
+#define	tCircle	287
+#define	tEllipsis	288
+#define	tLine	289
+#define	tSurface	290
+#define	tSpline	291
+#define	tVolume	292
+#define	tCharacteristic	293
+#define	tLength	294
+#define	tParametric	295
+#define	tElliptic	296
+#define	tPlane	297
+#define	tRuled	298
+#define	tTransfinite	299
+#define	tComplex	300
+#define	tPhysical	301
+#define	tUsing	302
+#define	tBump	303
+#define	tProgression	304
+#define	tRotate	305
+#define	tTranslate	306
+#define	tSymmetry	307
+#define	tDilate	308
+#define	tExtrude	309
+#define	tDuplicata	310
+#define	tLoop	311
+#define	tInclude	312
+#define	tRecombine	313
+#define	tDelete	314
+#define	tCoherence	315
+#define	tView	316
+#define	tAttractor	317
+#define	tLayers	318
+#define	tScalarTetrahedron	319
+#define	tVectorTetrahedron	320
+#define	tTensorTetrahedron	321
+#define	tScalarTriangle	322
+#define	tVectorTriangle	323
+#define	tTensorTriangle	324
+#define	tScalarLine	325
+#define	tVectorLine	326
+#define	tTensorLine	327
+#define	tScalarPoint	328
+#define	tVectorPoint	329
+#define	tTensorPoint	330
+#define	tBSpline	331
+#define	tNurbs	332
+#define	tOrder	333
+#define	tWith	334
+#define	tBounds	335
+#define	tKnots	336
+#define	tColor	337
 #define	tFor	338
 #define	tEndFor	339
 #define	tScript	340
@@ -160,7 +160,7 @@
 #define	tMINUSMINUS	410
 
 #line 1 "Gmsh.y"
- /* $Id: Gmsh.tab.cpp,v 1.23 2000-12-07 01:14:30 geuzaine Exp $ */
+ /* $Id: Gmsh.tab.cpp,v 1.24 2000-12-07 08:46:27 geuzaine Exp $ */
 
 #include <stdarg.h>
 
@@ -237,26 +237,26 @@ typedef union {
 
 
 
-#define	YYFINAL		1493
+#define	YYFINAL		1479
 #define	YYFLAG		-32768
-#define	YYNTBASE	175
+#define	YYNTBASE	174
 
-#define YYTRANSLATE(x) ((unsigned)(x) <= 410 ? yytranslate[x] : 255)
+#define YYTRANSLATE(x) ((unsigned)(x) <= 410 ? yytranslate[x] : 250)
 
 static const short yytranslate[] = {     0,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,   163,     2,     2,     2,   160,     2,     2,   167,
-   169,   158,   156,   168,   157,   172,   159,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     2,   152,
-     2,   153,   142,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,   162,     2,     2,     2,   159,     2,     2,   166,
+   168,   157,   155,   167,   156,   171,   158,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,   151,
+     2,   152,   141,     2,     2,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-   173,     2,   174,   164,     2,     2,     2,     2,     2,     2,
+   172,     2,   173,   163,     2,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,   170,     2,   171,     2,     2,     2,     2,     2,
+     2,     2,   169,     2,   170,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -269,22 +269,22 @@ static const short yytranslate[] = {     0,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     1,     3,     4,     5,     6,
-     7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
-    17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
-    27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
-    37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
-    47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
-    57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
-    67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
-    77,    78,    79,    80,    81,    82,    83,    84,    85,    86,
-    87,    88,    89,    90,    91,    92,    93,    94,    95,    96,
-    97,    98,    99,   100,   101,   102,   103,   104,   105,   106,
-   107,   108,   109,   110,   111,   112,   113,   114,   115,   116,
-   117,   118,   119,   120,   121,   122,   123,   124,   125,   126,
-   127,   128,   129,   130,   131,   132,   133,   134,   135,   136,
-   137,   138,   139,   140,   141,   143,   144,   145,   146,   147,
-   148,   149,   150,   151,   154,   155,   161,   162,   165,   166
+     2,     2,     2,     2,     2,     1,     2,     3,     4,     5,
+     6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
+    16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+    26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
+    36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
+    46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
+    56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
+    66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
+    76,    77,    78,    79,    80,    81,    82,    83,    84,    85,
+    86,    87,    88,    89,    90,    91,    92,    93,    94,    95,
+    96,    97,    98,    99,   100,   101,   102,   103,   104,   105,
+   106,   107,   108,   109,   110,   111,   112,   113,   114,   115,
+   116,   117,   118,   119,   120,   121,   122,   123,   124,   125,
+   126,   127,   128,   129,   130,   131,   132,   133,   134,   135,
+   136,   137,   138,   139,   140,   142,   143,   144,   145,   146,
+   147,   148,   149,   150,   153,   154,   160,   161,   164,   165
 };
 
 #if YYDEBUG != 0
@@ -295,253 +295,250 @@ static const short yyprhs[] = {     0,
    248,   260,   274,   284,   294,   306,   316,   328,   338,   350,
    364,   378,   390,   404,   422,   432,   444,   456,   470,   482,
    492,   493,   496,   498,   500,   502,   504,   506,   508,   510,
-   512,   514,   516,   518,   520,   522,   527,   532,   535,   543,
-   550,   559,   560,   563,   566,   569,   572,   575,   578,   581,
-   584,   587,   590,   593,   596,   598,   602,   603,   617,   619,
-   623,   624,   638,   640,   644,   645,   659,   661,   665,   666,
-   686,   688,   692,   693,   713,   715,   719,   720,   740,   742,
-   746,   747,   773,   775,   779,   780,   806,   808,   812,   813,
-   839,   841,   845,   846,   878,   880,   884,   885,   917,   919,
-   923,   924,   956,   961,   965,   969,   974,   979,   984,   989,
-   997,  1006,  1019,  1026,  1032,  1040,  1048,  1061,  1069,  1079,
-  1097,  1105,  1114,  1123,  1131,  1143,  1149,  1158,  1168,  1177,
-  1200,  1221,  1230,  1239,  1245,  1254,  1262,  1271,  1277,  1289,
-  1295,  1305,  1307,  1309,  1311,  1312,  1315,  1320,  1325,  1329,
-  1333,  1336,  1340,  1347,  1356,  1358,  1367,  1380,  1389,  1402,
-  1411,  1424,  1436,  1452,  1454,  1457,  1467,  1470,  1477,  1487,
-  1497,  1506,  1515,  1524,  1531,  1536,  1539,  1540,  1543,  1545,
-  1552,  1564,  1571,  1583,  1590,  1602,  1609,  1621,  1628,  1640,
-  1647,  1659,  1665,  1677,  1683,  1695,  1702,  1714,  1721,  1733,
-  1740,  1752,  1761,  1762,  1765,  1767,  1769,  1771,  1773,  1775,
-  1777,  1779,  1783,  1786,  1789,  1792,  1796,  1800,  1804,  1808,
-  1812,  1816,  1820,  1824,  1828,  1832,  1836,  1840,  1844,  1848,
-  1854,  1859,  1864,  1869,  1874,  1879,  1884,  1889,  1894,  1899,
-  1904,  1911,  1916,  1921,  1926,  1931,  1936,  1941,  1948,  1955,
-  1962,  1964,  1966,  1968,  1972,  1981,  1986,  1996,  2001,  2011,
-  2015,  2021,  2023,  2026,  2029,  2033,  2037,  2049,  2059,  2067,
-  2075,  2079,  2088,  2089,  2093,  2095,  2099,  2100,  2104,  2108,
-  2110,  2114,  2115,  2117,  2121,  2123,  2125,  2129,  2133,  2143,
-  2151,  2157,  2159
+   512,   514,   516,   518,   520,   522,   525,   533,   540,   549,
+   550,   553,   556,   559,   562,   565,   568,   571,   574,   577,
+   580,   583,   586,   588,   592,   593,   607,   609,   613,   614,
+   628,   630,   634,   635,   649,   651,   655,   656,   676,   678,
+   682,   683,   703,   705,   709,   710,   730,   732,   736,   737,
+   763,   765,   769,   770,   796,   798,   802,   803,   829,   831,
+   835,   836,   868,   870,   874,   875,   907,   909,   913,   914,
+   946,   951,   955,   959,   964,   969,   974,   979,   986,   998,
+  1005,  1017,  1024,  1036,  1043,  1055,  1062,  1074,  1081,  1093,
+  1099,  1111,  1117,  1129,  1136,  1148,  1155,  1167,  1174,  1186,
+  1195,  1203,  1212,  1225,  1232,  1238,  1246,  1254,  1267,  1275,
+  1285,  1303,  1311,  1320,  1329,  1337,  1349,  1355,  1364,  1374,
+  1383,  1406,  1427,  1436,  1445,  1451,  1460,  1468,  1477,  1483,
+  1495,  1501,  1511,  1513,  1515,  1517,  1518,  1521,  1526,  1531,
+  1535,  1539,  1542,  1546,  1553,  1562,  1564,  1573,  1586,  1595,
+  1608,  1617,  1630,  1642,  1658,  1660,  1663,  1673,  1676,  1683,
+  1693,  1703,  1712,  1721,  1730,  1737,  1742,  1745,  1747,  1749,
+  1751,  1753,  1755,  1757,  1761,  1764,  1767,  1770,  1774,  1778,
+  1782,  1786,  1790,  1794,  1798,  1802,  1806,  1810,  1814,  1818,
+  1822,  1826,  1832,  1837,  1842,  1847,  1852,  1857,  1862,  1867,
+  1872,  1877,  1882,  1889,  1894,  1899,  1904,  1909,  1914,  1919,
+  1926,  1933,  1940,  1942,  1944,  1946,  1950,  1959,  1964,  1974,
+  1979,  1989,  1993,  1999,  2001,  2004,  2007,  2011,  2015,  2027,
+  2037,  2045,  2053,  2057,  2066,  2067,  2071,  2073,  2077,  2078,
+  2082,  2086,  2088,  2092,  2093,  2095,  2099,  2101,  2103,  2107,
+  2111,  2121,  2129,  2135,  2137
 };
 
-static const short yyrhs[] = {   177,
-     0,   176,     0,   182,     0,   133,     0,   136,   137,   243,
-   243,   243,   138,   139,   135,   243,   243,   243,   135,   243,
-   243,   243,   135,   243,   243,   243,   140,   141,     0,   134,
-     0,     0,   177,   178,     0,   179,     0,   181,     0,   180,
-     0,     1,     6,     0,   107,     6,     0,   108,     6,     0,
-   110,     6,     0,   109,     6,     0,   111,     6,     0,   112,
-   167,   248,   168,     5,   169,     6,     0,   113,   167,   248,
-   169,     6,     0,   114,   167,     5,   168,     5,   168,   248,
-   168,   248,   168,     5,   168,     5,   168,     5,   169,     6,
-     0,     3,     7,    91,   167,     5,   168,   246,   169,     6,
-     0,     3,     7,    90,   167,     5,   168,   243,   168,   252,
-   168,   242,   168,   242,   168,   242,   168,   252,   168,   252,
-   168,   242,   169,     6,     0,     3,     7,    89,   167,     5,
-   168,   243,   168,   243,   168,   250,   168,   242,   168,   242,
-   168,   242,   168,   242,   168,   252,   168,   252,   168,   252,
-   168,   252,   168,   242,   169,     6,     0,     3,     7,    97,
-   167,     5,   168,     3,   168,     3,   168,     3,   168,   242,
-   169,     6,     0,     3,     7,   101,   167,     5,   168,     3,
-   168,   242,   169,     6,     0,     3,     7,   118,   167,     5,
-   168,     3,   168,   242,   169,     6,     0,     3,     7,    99,
-   167,     5,   168,   158,   168,   158,   168,   243,   168,   242,
-   169,     6,     0,     3,     7,   102,   167,     5,   168,   252,
-   169,     6,     0,     3,     7,   103,   167,     5,   168,   252,
-   168,     3,   168,   242,   169,     6,     0,     3,     7,    98,
-   167,     5,   168,     3,   169,     6,     0,     3,     7,   104,
-   167,     5,   168,     3,   168,   243,   169,     6,     0,     3,
-     7,   106,   167,     5,   168,     3,   168,     3,   168,     3,
-   169,     6,     0,     3,     7,   105,   167,     5,   168,   246,
-   169,     6,     0,     3,     7,   100,   167,     5,   168,     3,
-   169,     6,     0,     3,     7,    34,   167,     5,   168,     3,
-   168,     3,   169,     6,     0,     3,     7,   116,   167,     5,
-   168,   252,   169,     6,     0,     3,     7,   117,   167,     5,
-   168,   252,   168,     3,   169,     6,     0,     3,     7,   115,
-   167,     5,   168,     3,   169,     6,     0,     3,     7,   119,
-   167,     5,   168,     3,   168,   243,   169,     6,     0,     3,
-     7,   120,   167,     5,   168,     3,   168,   243,   168,   243,
-   169,     6,     0,     3,     7,   127,   167,     5,   168,     3,
-   168,   243,   168,   243,   169,     6,     0,     3,     7,   121,
-   167,     5,   168,     3,   168,   243,   169,     6,     0,     3,
-     7,   131,   167,     5,   168,     3,   168,   243,   168,   243,
-   169,     6,     0,     3,     7,   122,   167,     5,   168,     3,
-   168,   252,   168,   252,   168,   242,   168,   242,   169,     6,
-     0,     3,     7,   123,   167,     5,   168,   252,   169,     6,
-     0,     3,     7,   124,   167,   125,   168,   242,   168,     3,
-   169,     6,     0,     3,     7,   126,   167,     5,   168,   252,
-   168,   242,   169,     6,     0,     3,     7,   128,   167,     5,
-   168,     5,   168,     3,   168,     3,   169,     6,     0,     3,
-     7,   129,   167,     5,   168,     5,   168,     3,   169,     6,
-     0,     3,     7,   130,   167,     3,   168,     3,   169,     6,
-     0,     0,   182,   183,     0,   185,     0,   184,     0,   223,
-     0,   224,     0,   225,     0,   228,     0,   229,     0,   233,
-     0,   236,     0,   237,     0,   230,     0,   232,     0,   231,
-     0,    83,   170,   238,   171,     0,    86,   170,   240,   171,
-     0,     1,     6,     0,    30,   167,     5,   168,   243,   169,
-     6,     0,    61,     5,   170,   186,   171,     6,     0,    61,
-     5,     4,   246,   170,   186,   171,     6,     0,     0,   186,
-   188,     0,   186,   191,     0,   186,   194,     0,   186,   197,
-     0,   186,   200,     0,   186,   203,     0,   186,   206,     0,
-   186,   209,     0,   186,   212,     0,   186,   215,     0,   186,
-   218,     0,   186,   221,     0,   243,     0,   187,   168,   243,
-     0,     0,    73,   167,   243,   168,   243,   168,   243,   169,
-   189,   170,   187,   171,     6,     0,   243,     0,   190,   168,
-   243,     0,     0,    74,   167,   243,   168,   243,   168,   243,
-   169,   192,   170,   190,   171,     6,     0,   243,     0,   193,
-   168,   243,     0,     0,    75,   167,   243,   168,   243,   168,
-   243,   169,   195,   170,   193,   171,     6,     0,   243,     0,
-   196,   168,   243,     0,     0,    70,   167,   243,   168,   243,
-   168,   243,   168,   243,   168,   243,   168,   243,   169,   198,
-   170,   196,   171,     6,     0,   243,     0,   199,   168,   243,
-     0,     0,    71,   167,   243,   168,   243,   168,   243,   168,
-   243,   168,   243,   168,   243,   169,   201,   170,   199,   171,
-     6,     0,   243,     0,   202,   168,   243,     0,     0,    72,
-   167,   243,   168,   243,   168,   243,   168,   243,   168,   243,
-   168,   243,   169,   204,   170,   202,   171,     6,     0,   243,
-     0,   205,   168,   243,     0,     0,    67,   167,   243,   168,
-   243,   168,   243,   168,   243,   168,   243,   168,   243,   168,
-   243,   168,   243,   168,   243,   169,   207,   170,   205,   171,
-     6,     0,   243,     0,   208,   168,   243,     0,     0,    68,
-   167,   243,   168,   243,   168,   243,   168,   243,   168,   243,
-   168,   243,   168,   243,   168,   243,   168,   243,   169,   210,
-   170,   208,   171,     6,     0,   243,     0,   211,   168,   243,
-     0,     0,    69,   167,   243,   168,   243,   168,   243,   168,
-   243,   168,   243,   168,   243,   168,   243,   168,   243,   168,
-   243,   169,   213,   170,   211,   171,     6,     0,   243,     0,
-   214,   168,   243,     0,     0,    64,   167,   243,   168,   243,
-   168,   243,   168,   243,   168,   243,   168,   243,   168,   243,
-   168,   243,   168,   243,   168,   243,   168,   243,   168,   243,
-   169,   216,   170,   214,   171,     6,     0,   243,     0,   217,
-   168,   243,     0,     0,    65,   167,   243,   168,   243,   168,
-   243,   168,   243,   168,   243,   168,   243,   168,   243,   168,
-   243,   168,   243,   168,   243,   168,   243,   168,   243,   169,
-   219,   170,   217,   171,     6,     0,   243,     0,   220,   168,
-   243,     0,     0,    66,   167,   243,   168,   243,   168,   243,
-   168,   243,   168,   243,   168,   243,   168,   243,   168,   243,
-   168,   243,   168,   243,   168,   243,   168,   243,   169,   222,
-   170,   220,   171,     6,     0,     4,     7,   243,     6,     0,
-     4,   165,     6,     0,     4,   166,     6,     0,     4,   148,
-   243,     6,     0,     4,   149,   243,     6,     0,     4,   150,
-   243,     6,     0,     4,   151,   243,     6,     0,    31,   167,
-   243,   169,     7,   246,     6,     0,    46,    31,   167,   243,
-   169,     7,   252,     6,     0,    62,    31,   252,     7,   170,
-   243,   168,   243,   168,   243,   171,     6,     0,    38,    39,
-   252,     7,   243,     6,     0,    31,   170,   243,   171,     6,
-     0,    34,   167,   243,   169,     7,   252,     6,     0,    36,
-   167,   243,   169,     7,   252,     6,     0,    62,    34,   252,
-     7,   170,   243,   168,   243,   168,   243,   171,     6,     0,
-    32,   167,   243,   169,     7,   252,     6,     0,    32,   167,
-   243,   169,     7,   252,    42,   246,     6,     0,    40,   167,
-   243,   169,     7,   170,   243,   168,   243,   168,     5,   168,
-     5,   168,     5,   171,     6,     0,    33,   167,   243,   169,
-     7,   252,     6,     0,    46,    34,   167,   243,   169,     7,
-   252,     6,     0,    34,    56,   167,   243,   169,     7,   252,
-     6,     0,    76,   167,   243,   169,     7,   252,     6,     0,
-    77,   167,   243,   169,     7,   252,    81,   252,    78,   243,
-     6,     0,    34,   170,   243,   171,     6,     0,    42,    35,
-   167,   243,   169,     7,   252,     6,     0,   132,    35,   167,
-   243,   169,     7,   243,   252,     6,     0,    43,    35,   167,
-   243,   169,     7,   252,     6,     0,    77,    35,    79,    80,
-   167,   243,   169,     7,   250,    81,   170,   252,   168,   252,
-   171,    78,   170,   243,   168,   243,   171,     6,     0,    77,
-    35,   167,   243,   169,     7,   250,    81,   170,   252,   168,
-   252,   171,    78,   170,   243,   168,   243,   171,     6,     0,
-    46,    35,   167,   243,   169,     7,   252,     6,     0,    35,
-    56,   167,   243,   169,     7,   252,     6,     0,    35,   170,
-   243,   171,     6,     0,    45,    37,   167,   243,   169,     7,
-   252,     6,     0,    37,   167,   243,   169,     7,   252,     6,
-     0,    46,    37,   167,   243,   169,     7,   252,     6,     0,
-    51,   246,   170,   226,   171,     0,    50,   170,   246,   168,
-   246,   168,   243,   171,   170,   226,   171,     0,    52,   246,
-   170,   226,   171,     0,    53,   170,   246,   168,   243,   171,
-   170,   226,   171,     0,   228,     0,   227,     0,   225,     0,
-     0,   227,   224,     0,    55,   170,   227,   171,     0,    59,
-   170,   227,   171,     0,    57,     5,     6,     0,    30,     5,
-     6,     0,    87,     6,     0,    88,     5,     6,     0,    84,
-   167,   243,     8,   243,   169,     0,    84,   167,   243,     8,
-   243,     8,   243,   169,     0,    85,     0,    54,    31,   170,
-   243,   168,   246,   171,     6,     0,    54,    31,   170,   243,
-   168,   246,   168,   246,   168,   243,   171,     6,     0,    54,
-    34,   170,   243,   168,   246,   171,     6,     0,    54,    34,
-   170,   243,   168,   246,   168,   246,   168,   243,   171,     6,
-     0,    54,    35,   170,   243,   168,   246,   171,     6,     0,
-    54,    35,   170,   243,   168,   246,   168,   246,   168,   243,
-   171,     6,     0,    54,    35,   170,   243,   168,   246,   171,
-   170,   234,   171,     6,     0,    54,    35,   170,   243,   168,
-   246,   168,   246,   168,   243,   171,   170,   234,   171,     6,
-     0,   235,     0,   234,   235,     0,    63,   170,   252,   168,
-   252,   168,   252,   171,     6,     0,    58,     6,     0,    44,
-    34,   252,     7,   243,     6,     0,    44,    34,   252,     7,
-   243,    47,    49,   243,     6,     0,    44,    34,   252,     7,
-   243,    47,    48,   243,     6,     0,    44,    35,   170,   243,
-   171,     7,   252,     6,     0,    41,    35,   170,   243,   171,
-     7,   252,     6,     0,    44,    37,   170,   243,   171,     7,
-   252,     6,     0,    58,    35,   252,     7,   243,     6,     0,
-    58,    35,   252,     6,     0,    60,     6,     0,     0,   238,
-   239,     0,   184,     0,     4,   172,     4,     7,     5,     6,
-     0,     4,   172,    61,   173,   243,   174,   172,     4,     7,
-     5,     6,     0,     4,   172,     4,     7,   243,     6,     0,
-     4,   172,    61,   173,   243,   174,   172,     4,     7,   243,
-     6,     0,     4,   172,     4,   148,   243,     6,     0,     4,
-   172,    61,   173,   243,   174,   172,     4,   148,   243,     6,
-     0,     4,   172,     4,   149,   243,     6,     0,     4,   172,
-    61,   173,   243,   174,   172,     4,   149,   243,     6,     0,
-     4,   172,     4,   150,   243,     6,     0,     4,   172,    61,
-   173,   243,   174,   172,     4,   150,   243,     6,     0,     4,
-   172,     4,   151,   243,     6,     0,     4,   172,    61,   173,
-   243,   174,   172,     4,   151,   243,     6,     0,     4,   172,
-     4,   165,     6,     0,     4,   172,    61,   173,   243,   174,
-   172,     4,   165,   243,     6,     0,     4,   172,     4,   166,
-     6,     0,     4,   172,    61,   173,   243,   174,   172,     4,
-   166,   243,     6,     0,     4,   172,     4,     7,   246,     6,
-     0,     4,   172,    61,   173,   243,   174,   172,     4,     7,
-   246,     6,     0,     4,   172,     4,   148,   246,     6,     0,
-     4,   172,    61,   173,   243,   174,   172,     4,   148,   246,
-     6,     0,     4,   172,     4,   149,   246,     6,     0,     4,
-   172,    61,   173,   243,   174,   172,     4,   149,   246,     6,
-     0,     4,   172,    82,   172,     4,     7,   254,     6,     0,
-     0,   240,   241,     0,   239,     0,    92,     0,    93,     0,
-    94,     0,    95,     0,    96,     0,   244,     0,   167,   243,
-   169,     0,   157,   243,     0,   156,   243,     0,   163,   243,
-     0,   243,   157,   243,     0,   243,   156,   243,     0,   243,
-   158,   243,     0,   243,   159,   243,     0,   243,   160,   243,
-     0,   243,   164,   243,     0,   243,   152,   243,     0,   243,
-   153,   243,     0,   243,   154,   243,     0,   243,   155,   243,
-     0,   243,   146,   243,     0,   243,   145,   243,     0,   243,
-   143,   243,     0,   243,   144,   243,     0,   243,   142,   243,
-     8,   243,     0,    10,   167,   243,   169,     0,    11,   167,
-   243,   169,     0,    12,   167,   243,   169,     0,    13,   167,
-   243,   169,     0,    14,   167,   243,   169,     0,    15,   167,
-   243,   169,     0,    16,   167,   243,   169,     0,    17,   167,
-   243,   169,     0,    18,   167,   243,   169,     0,    19,   167,
-   243,   169,     0,    20,   167,   243,   168,   243,   169,     0,
-    21,   167,   243,   169,     0,    22,   167,   243,   169,     0,
-    23,   167,   243,   169,     0,    24,   167,   243,   169,     0,
-    25,   167,   243,   169,     0,    26,   167,   243,   169,     0,
-    27,   167,   243,   168,   243,   169,     0,    28,   167,   243,
-   168,   243,   169,     0,    29,   167,   243,   168,   243,   169,
-     0,     3,     0,     9,     0,     4,     0,     4,   172,     4,
-     0,     4,   172,    61,   173,   243,   174,   172,     4,     0,
-     4,   172,     4,   165,     0,     4,   172,    61,   173,   243,
-   174,   172,     4,   165,     0,     4,   172,     4,   166,     0,
-     4,   172,    61,   173,   243,   174,   172,     4,   166,     0,
-   243,     8,   243,     0,   243,     8,   243,     8,   243,     0,
-   247,     0,   157,   246,     0,   156,   246,     0,   246,   157,
-   246,     0,   246,   156,   246,     0,   170,   243,   168,   243,
-   168,   243,   168,   243,   168,   243,   171,     0,   170,   243,
-   168,   243,   168,   243,   168,   243,   171,     0,   170,   243,
-   168,   243,   168,   243,   171,     0,   167,   243,   168,   243,
-   168,   243,   169,     0,     4,   172,     4,     0,     4,   172,
-    61,   173,   243,   174,   172,     4,     0,     0,   167,   249,
-   169,     0,     5,     0,   249,   168,     5,     0,     0,   170,
-   251,   171,     0,   167,   251,   169,     0,   252,     0,   251,
-   168,   252,     0,     0,   243,     0,   170,   253,   171,     0,
-   243,     0,   245,     0,   253,   168,   243,     0,   253,   168,
-   245,     0,   170,   243,   168,   243,   168,   243,   168,   243,
-   171,     0,   170,   243,   168,   243,   168,   243,   171,     0,
-   170,     4,   168,   243,   171,     0,     4,     0,     4,   172,
-    82,   172,     4,     0
+static const short yyrhs[] = {   176,
+     0,   175,     0,   181,     0,   132,     0,   135,   136,   238,
+   238,   238,   137,   138,   134,   238,   238,   238,   134,   238,
+   238,   238,   134,   238,   238,   238,   139,   140,     0,   133,
+     0,     0,   176,   177,     0,   178,     0,   180,     0,   179,
+     0,     1,     6,     0,   106,     6,     0,   107,     6,     0,
+   109,     6,     0,   108,     6,     0,   110,     6,     0,   111,
+   166,   243,   167,     5,   168,     6,     0,   112,   166,   243,
+   168,     6,     0,   113,   166,     5,   167,     5,   167,   243,
+   167,   243,   167,     5,   167,     5,   167,     5,   168,     6,
+     0,     3,     7,    90,   166,     5,   167,   241,   168,     6,
+     0,     3,     7,    89,   166,     5,   167,   238,   167,   247,
+   167,   237,   167,   237,   167,   237,   167,   247,   167,   247,
+   167,   237,   168,     6,     0,     3,     7,    88,   166,     5,
+   167,   238,   167,   238,   167,   245,   167,   237,   167,   237,
+   167,   237,   167,   237,   167,   247,   167,   247,   167,   247,
+   167,   247,   167,   237,   168,     6,     0,     3,     7,    96,
+   166,     5,   167,     3,   167,     3,   167,     3,   167,   237,
+   168,     6,     0,     3,     7,   100,   166,     5,   167,     3,
+   167,   237,   168,     6,     0,     3,     7,   117,   166,     5,
+   167,     3,   167,   237,   168,     6,     0,     3,     7,    98,
+   166,     5,   167,   157,   167,   157,   167,   238,   167,   237,
+   168,     6,     0,     3,     7,   101,   166,     5,   167,   247,
+   168,     6,     0,     3,     7,   102,   166,     5,   167,   247,
+   167,     3,   167,   237,   168,     6,     0,     3,     7,    97,
+   166,     5,   167,     3,   168,     6,     0,     3,     7,   103,
+   166,     5,   167,     3,   167,   238,   168,     6,     0,     3,
+     7,   105,   166,     5,   167,     3,   167,     3,   167,     3,
+   168,     6,     0,     3,     7,   104,   166,     5,   167,   241,
+   168,     6,     0,     3,     7,    99,   166,     5,   167,     3,
+   168,     6,     0,     3,     7,    34,   166,     5,   167,     3,
+   167,     3,   168,     6,     0,     3,     7,   115,   166,     5,
+   167,   247,   168,     6,     0,     3,     7,   116,   166,     5,
+   167,   247,   167,     3,   168,     6,     0,     3,     7,   114,
+   166,     5,   167,     3,   168,     6,     0,     3,     7,   118,
+   166,     5,   167,     3,   167,   238,   168,     6,     0,     3,
+     7,   119,   166,     5,   167,     3,   167,   238,   167,   238,
+   168,     6,     0,     3,     7,   126,   166,     5,   167,     3,
+   167,   238,   167,   238,   168,     6,     0,     3,     7,   120,
+   166,     5,   167,     3,   167,   238,   168,     6,     0,     3,
+     7,   130,   166,     5,   167,     3,   167,   238,   167,   238,
+   168,     6,     0,     3,     7,   121,   166,     5,   167,     3,
+   167,   247,   167,   247,   167,   237,   167,   237,   168,     6,
+     0,     3,     7,   122,   166,     5,   167,   247,   168,     6,
+     0,     3,     7,   123,   166,   124,   167,   237,   167,     3,
+   168,     6,     0,     3,     7,   125,   166,     5,   167,   247,
+   167,   237,   168,     6,     0,     3,     7,   127,   166,     5,
+   167,     5,   167,     3,   167,     3,   168,     6,     0,     3,
+     7,   128,   166,     5,   167,     5,   167,     3,   168,     6,
+     0,     3,     7,   129,   166,     3,   167,     3,   168,     6,
+     0,     0,   181,   182,     0,   184,     0,   183,     0,   222,
+     0,   223,     0,   224,     0,   227,     0,   228,     0,   232,
+     0,   235,     0,   236,     0,   229,     0,   231,     0,   230,
+     0,     1,     6,     0,    30,   166,     5,   167,   238,   168,
+     6,     0,    61,     5,   169,   185,   170,     6,     0,    61,
+     5,     4,   241,   169,   185,   170,     6,     0,     0,   185,
+   187,     0,   185,   190,     0,   185,   193,     0,   185,   196,
+     0,   185,   199,     0,   185,   202,     0,   185,   205,     0,
+   185,   208,     0,   185,   211,     0,   185,   214,     0,   185,
+   217,     0,   185,   220,     0,   238,     0,   186,   167,   238,
+     0,     0,    73,   166,   238,   167,   238,   167,   238,   168,
+   188,   169,   186,   170,     6,     0,   238,     0,   189,   167,
+   238,     0,     0,    74,   166,   238,   167,   238,   167,   238,
+   168,   191,   169,   189,   170,     6,     0,   238,     0,   192,
+   167,   238,     0,     0,    75,   166,   238,   167,   238,   167,
+   238,   168,   194,   169,   192,   170,     6,     0,   238,     0,
+   195,   167,   238,     0,     0,    70,   166,   238,   167,   238,
+   167,   238,   167,   238,   167,   238,   167,   238,   168,   197,
+   169,   195,   170,     6,     0,   238,     0,   198,   167,   238,
+     0,     0,    71,   166,   238,   167,   238,   167,   238,   167,
+   238,   167,   238,   167,   238,   168,   200,   169,   198,   170,
+     6,     0,   238,     0,   201,   167,   238,     0,     0,    72,
+   166,   238,   167,   238,   167,   238,   167,   238,   167,   238,
+   167,   238,   168,   203,   169,   201,   170,     6,     0,   238,
+     0,   204,   167,   238,     0,     0,    67,   166,   238,   167,
+   238,   167,   238,   167,   238,   167,   238,   167,   238,   167,
+   238,   167,   238,   167,   238,   168,   206,   169,   204,   170,
+     6,     0,   238,     0,   207,   167,   238,     0,     0,    68,
+   166,   238,   167,   238,   167,   238,   167,   238,   167,   238,
+   167,   238,   167,   238,   167,   238,   167,   238,   168,   209,
+   169,   207,   170,     6,     0,   238,     0,   210,   167,   238,
+     0,     0,    69,   166,   238,   167,   238,   167,   238,   167,
+   238,   167,   238,   167,   238,   167,   238,   167,   238,   167,
+   238,   168,   212,   169,   210,   170,     6,     0,   238,     0,
+   213,   167,   238,     0,     0,    64,   166,   238,   167,   238,
+   167,   238,   167,   238,   167,   238,   167,   238,   167,   238,
+   167,   238,   167,   238,   167,   238,   167,   238,   167,   238,
+   168,   215,   169,   213,   170,     6,     0,   238,     0,   216,
+   167,   238,     0,     0,    65,   166,   238,   167,   238,   167,
+   238,   167,   238,   167,   238,   167,   238,   167,   238,   167,
+   238,   167,   238,   167,   238,   167,   238,   167,   238,   168,
+   218,   169,   216,   170,     6,     0,   238,     0,   219,   167,
+   238,     0,     0,    66,   166,   238,   167,   238,   167,   238,
+   167,   238,   167,   238,   167,   238,   167,   238,   167,   238,
+   167,   238,   167,   238,   167,   238,   167,   238,   168,   221,
+   169,   219,   170,     6,     0,     4,     7,   238,     6,     0,
+     4,   164,     6,     0,     4,   165,     6,     0,     4,   147,
+   238,     6,     0,     4,   148,   238,     6,     0,     4,   149,
+   238,     6,     0,     4,   150,   238,     6,     0,     4,   171,
+     4,     7,     5,     6,     0,     4,   171,    61,   172,   238,
+   173,   171,     4,     7,     5,     6,     0,     4,   171,     4,
+     7,   238,     6,     0,     4,   171,    61,   172,   238,   173,
+   171,     4,     7,   238,     6,     0,     4,   171,     4,   147,
+   238,     6,     0,     4,   171,    61,   172,   238,   173,   171,
+     4,   147,   238,     6,     0,     4,   171,     4,   148,   238,
+     6,     0,     4,   171,    61,   172,   238,   173,   171,     4,
+   148,   238,     6,     0,     4,   171,     4,   149,   238,     6,
+     0,     4,   171,    61,   172,   238,   173,   171,     4,   149,
+   238,     6,     0,     4,   171,     4,   150,   238,     6,     0,
+     4,   171,    61,   172,   238,   173,   171,     4,   150,   238,
+     6,     0,     4,   171,     4,   164,     6,     0,     4,   171,
+    61,   172,   238,   173,   171,     4,   164,   238,     6,     0,
+     4,   171,     4,   165,     6,     0,     4,   171,    61,   172,
+   238,   173,   171,     4,   165,   238,     6,     0,     4,   171,
+     4,     7,   241,     6,     0,     4,   171,    61,   172,   238,
+   173,   171,     4,     7,   241,     6,     0,     4,   171,     4,
+   147,   241,     6,     0,     4,   171,    61,   172,   238,   173,
+   171,     4,   147,   241,     6,     0,     4,   171,     4,   148,
+   241,     6,     0,     4,   171,    61,   172,   238,   173,   171,
+     4,   148,   241,     6,     0,     4,   171,    82,   171,     4,
+     7,   249,     6,     0,    31,   166,   238,   168,     7,   241,
+     6,     0,    46,    31,   166,   238,   168,     7,   247,     6,
+     0,    62,    31,   247,     7,   169,   238,   167,   238,   167,
+   238,   170,     6,     0,    38,    39,   247,     7,   238,     6,
+     0,    31,   169,   238,   170,     6,     0,    34,   166,   238,
+   168,     7,   247,     6,     0,    36,   166,   238,   168,     7,
+   247,     6,     0,    62,    34,   247,     7,   169,   238,   167,
+   238,   167,   238,   170,     6,     0,    32,   166,   238,   168,
+     7,   247,     6,     0,    32,   166,   238,   168,     7,   247,
+    42,   241,     6,     0,    40,   166,   238,   168,     7,   169,
+   238,   167,   238,   167,     5,   167,     5,   167,     5,   170,
+     6,     0,    33,   166,   238,   168,     7,   247,     6,     0,
+    46,    34,   166,   238,   168,     7,   247,     6,     0,    34,
+    56,   166,   238,   168,     7,   247,     6,     0,    76,   166,
+   238,   168,     7,   247,     6,     0,    77,   166,   238,   168,
+     7,   247,    81,   247,    78,   238,     6,     0,    34,   169,
+   238,   170,     6,     0,    42,    35,   166,   238,   168,     7,
+   247,     6,     0,   131,    35,   166,   238,   168,     7,   238,
+   247,     6,     0,    43,    35,   166,   238,   168,     7,   247,
+     6,     0,    77,    35,    79,    80,   166,   238,   168,     7,
+   245,    81,   169,   247,   167,   247,   170,    78,   169,   238,
+   167,   238,   170,     6,     0,    77,    35,   166,   238,   168,
+     7,   245,    81,   169,   247,   167,   247,   170,    78,   169,
+   238,   167,   238,   170,     6,     0,    46,    35,   166,   238,
+   168,     7,   247,     6,     0,    35,    56,   166,   238,   168,
+     7,   247,     6,     0,    35,   169,   238,   170,     6,     0,
+    45,    37,   166,   238,   168,     7,   247,     6,     0,    37,
+   166,   238,   168,     7,   247,     6,     0,    46,    37,   166,
+   238,   168,     7,   247,     6,     0,    51,   241,   169,   225,
+   170,     0,    50,   169,   241,   167,   241,   167,   238,   170,
+   169,   225,   170,     0,    52,   241,   169,   225,   170,     0,
+    53,   169,   241,   167,   238,   170,   169,   225,   170,     0,
+   227,     0,   226,     0,   224,     0,     0,   226,   223,     0,
+    55,   169,   226,   170,     0,    59,   169,   226,   170,     0,
+    57,     5,     6,     0,    30,     5,     6,     0,    86,     6,
+     0,    87,     5,     6,     0,    83,   166,   238,     8,   238,
+   168,     0,    83,   166,   238,     8,   238,     8,   238,   168,
+     0,    84,     0,    54,    31,   169,   238,   167,   241,   170,
+     6,     0,    54,    31,   169,   238,   167,   241,   167,   241,
+   167,   238,   170,     6,     0,    54,    34,   169,   238,   167,
+   241,   170,     6,     0,    54,    34,   169,   238,   167,   241,
+   167,   241,   167,   238,   170,     6,     0,    54,    35,   169,
+   238,   167,   241,   170,     6,     0,    54,    35,   169,   238,
+   167,   241,   167,   241,   167,   238,   170,     6,     0,    54,
+    35,   169,   238,   167,   241,   170,   169,   233,   170,     6,
+     0,    54,    35,   169,   238,   167,   241,   167,   241,   167,
+   238,   170,   169,   233,   170,     6,     0,   234,     0,   233,
+   234,     0,    63,   169,   247,   167,   247,   167,   247,   170,
+     6,     0,    58,     6,     0,    44,    34,   247,     7,   238,
+     6,     0,    44,    34,   247,     7,   238,    47,    49,   238,
+     6,     0,    44,    34,   247,     7,   238,    47,    48,   238,
+     6,     0,    44,    35,   169,   238,   170,     7,   247,     6,
+     0,    41,    35,   169,   238,   170,     7,   247,     6,     0,
+    44,    37,   169,   238,   170,     7,   247,     6,     0,    58,
+    35,   247,     7,   238,     6,     0,    58,    35,   247,     6,
+     0,    60,     6,     0,    91,     0,    92,     0,    93,     0,
+    94,     0,    95,     0,   239,     0,   166,   238,   168,     0,
+   156,   238,     0,   155,   238,     0,   162,   238,     0,   238,
+   156,   238,     0,   238,   155,   238,     0,   238,   157,   238,
+     0,   238,   158,   238,     0,   238,   159,   238,     0,   238,
+   163,   238,     0,   238,   151,   238,     0,   238,   152,   238,
+     0,   238,   153,   238,     0,   238,   154,   238,     0,   238,
+   145,   238,     0,   238,   144,   238,     0,   238,   142,   238,
+     0,   238,   143,   238,     0,   238,   141,   238,     8,   238,
+     0,    10,   166,   238,   168,     0,    11,   166,   238,   168,
+     0,    12,   166,   238,   168,     0,    13,   166,   238,   168,
+     0,    14,   166,   238,   168,     0,    15,   166,   238,   168,
+     0,    16,   166,   238,   168,     0,    17,   166,   238,   168,
+     0,    18,   166,   238,   168,     0,    19,   166,   238,   168,
+     0,    20,   166,   238,   167,   238,   168,     0,    21,   166,
+   238,   168,     0,    22,   166,   238,   168,     0,    23,   166,
+   238,   168,     0,    24,   166,   238,   168,     0,    25,   166,
+   238,   168,     0,    26,   166,   238,   168,     0,    27,   166,
+   238,   167,   238,   168,     0,    28,   166,   238,   167,   238,
+   168,     0,    29,   166,   238,   167,   238,   168,     0,     3,
+     0,     9,     0,     4,     0,     4,   171,     4,     0,     4,
+   171,    61,   172,   238,   173,   171,     4,     0,     4,   171,
+     4,   164,     0,     4,   171,    61,   172,   238,   173,   171,
+     4,   164,     0,     4,   171,     4,   165,     0,     4,   171,
+    61,   172,   238,   173,   171,     4,   165,     0,   238,     8,
+   238,     0,   238,     8,   238,     8,   238,     0,   242,     0,
+   156,   241,     0,   155,   241,     0,   241,   156,   241,     0,
+   241,   155,   241,     0,   169,   238,   167,   238,   167,   238,
+   167,   238,   167,   238,   170,     0,   169,   238,   167,   238,
+   167,   238,   167,   238,   170,     0,   169,   238,   167,   238,
+   167,   238,   170,     0,   166,   238,   167,   238,   167,   238,
+   168,     0,     4,   171,     4,     0,     4,   171,    61,   172,
+   238,   173,   171,     4,     0,     0,   166,   244,   168,     0,
+     5,     0,   244,   167,     5,     0,     0,   169,   246,   170,
+     0,   166,   246,   168,     0,   247,     0,   246,   167,   247,
+     0,     0,   238,     0,   169,   248,   170,     0,   238,     0,
+   240,     0,   248,   167,   238,     0,   248,   167,   240,     0,
+   169,   238,   167,   238,   167,   238,   167,   238,   170,     0,
+   169,   238,   167,   238,   167,   238,   170,     0,   169,     4,
+   167,   238,   170,     0,     4,     0,     4,   171,    82,   171,
+     4,     0
 };
 
 #endif
@@ -554,33 +551,32 @@ static const short yyrline[] = { 0,
    275,   278,   283,   287,   291,   295,   300,   304,   307,   311,
    315,   319,   323,   327,   331,   334,   338,   341,   345,   348,
    357,   361,   367,   369,   370,   371,   372,   373,   374,   375,
-   376,   377,   378,   379,   381,   382,   383,   384,   387,   398,
-   403,   409,   414,   415,   416,   417,   418,   419,   420,   421,
-   422,   423,   424,   425,   428,   431,   435,   441,   447,   450,
-   454,   460,   466,   469,   473,   479,   485,   488,   492,   500,
-   506,   509,   513,   521,   527,   530,   534,   542,   548,   551,
-   555,   567,   573,   576,   580,   592,   598,   601,   605,   617,
-   623,   626,   630,   643,   649,   652,   656,   669,   675,   678,
-   682,   695,   707,   714,   722,   730,   738,   746,   754,   769,
-   780,   786,   805,   816,   824,   830,   836,   855,   861,   877,
-   884,   890,   896,   902,   908,   927,   939,   945,   964,   985,
-   993,   999,  1005,  1011,  1023,  1029,  1035,  1047,  1053,  1058,
-  1063,  1070,  1072,  1073,  1076,  1081,  1092,  1110,  1125,  1153,
-  1184,  1188,  1200,  1215,  1228,  1266,  1272,  1278,  1282,  1286,
-  1290,  1294,  1299,  1306,  1310,  1315,  1333,  1343,  1361,  1378,
-  1395,  1416,  1436,  1456,  1473,  1497,  1508,  1510,  1513,  1520,
-  1533,  1551,  1568,  1589,  1606,  1627,  1644,  1665,  1682,  1703,
-  1720,  1741,  1758,  1779,  1796,  1819,  1844,  1873,  1898,  1927,
-  1952,  1983,  2002,  2004,  2007,  2022,  2024,  2025,  2026,  2027,
-  2030,  2032,  2033,  2034,  2035,  2036,  2037,  2038,  2039,  2040,
-  2041,  2042,  2043,  2044,  2045,  2046,  2047,  2048,  2049,  2050,
-  2051,  2052,  2053,  2054,  2055,  2056,  2057,  2058,  2059,  2060,
-  2061,  2062,  2063,  2064,  2065,  2066,  2067,  2068,  2069,  2070,
-  2073,  2075,  2076,  2085,  2102,  2123,  2140,  2161,  2178,  2200,
-  2207,  2220,  2225,  2229,  2233,  2237,  2242,  2247,  2251,  2255,
-  2259,  2285,  2317,  2321,  2326,  2330,  2335,  2339,  2343,  2349,
-  2355,  2361,  2365,  2371,  2378,  2384,  2393,  2397,  2407,  2412,
-  2416,  2421,  2426
+   376,   377,   378,   379,   381,   382,   385,   396,   401,   407,
+   412,   413,   414,   415,   416,   417,   418,   419,   420,   421,
+   422,   423,   426,   429,   433,   439,   445,   448,   452,   458,
+   464,   467,   471,   477,   483,   486,   490,   498,   504,   507,
+   511,   519,   525,   528,   532,   540,   546,   549,   553,   565,
+   571,   574,   578,   590,   596,   599,   603,   615,   621,   624,
+   628,   641,   647,   650,   654,   667,   673,   676,   680,   693,
+   705,   715,   723,   731,   739,   747,   755,   766,   779,   797,
+   814,   835,   852,   873,   890,   911,   928,   949,   966,   987,
+  1004,  1025,  1042,  1065,  1090,  1119,  1144,  1173,  1198,  1229,
+  1249,  1260,  1266,  1285,  1296,  1304,  1310,  1316,  1335,  1341,
+  1357,  1364,  1370,  1376,  1382,  1388,  1407,  1419,  1425,  1444,
+  1465,  1473,  1479,  1485,  1491,  1503,  1509,  1515,  1527,  1533,
+  1538,  1543,  1550,  1552,  1553,  1556,  1561,  1572,  1590,  1605,
+  1633,  1664,  1668,  1680,  1695,  1708,  1746,  1752,  1758,  1762,
+  1766,  1770,  1774,  1779,  1786,  1790,  1795,  1813,  1823,  1841,
+  1858,  1875,  1896,  1916,  1936,  1953,  1977,  1990,  1992,  1993,
+  1994,  1995,  1998,  2000,  2001,  2002,  2003,  2004,  2005,  2006,
+  2007,  2008,  2009,  2010,  2011,  2012,  2013,  2014,  2015,  2016,
+  2017,  2018,  2019,  2020,  2021,  2022,  2023,  2024,  2025,  2026,
+  2027,  2028,  2029,  2030,  2031,  2032,  2033,  2034,  2035,  2036,
+  2037,  2038,  2041,  2043,  2044,  2053,  2070,  2091,  2108,  2129,
+  2146,  2168,  2175,  2188,  2193,  2197,  2201,  2205,  2210,  2215,
+  2219,  2223,  2227,  2253,  2285,  2289,  2294,  2298,  2303,  2307,
+  2311,  2317,  2323,  2329,  2333,  2339,  2346,  2352,  2361,  2365,
+  2375,  2380,  2384,  2389,  2394
 };
 #endif
 
@@ -598,72 +594,70 @@ static const char * const yytname[] = {   "$","error","$undefined.","tDOUBLE",
 "tView","tAttractor","tLayers","tScalarTetrahedron","tVectorTetrahedron","tTensorTetrahedron",
 "tScalarTriangle","tVectorTriangle","tTensorTriangle","tScalarLine","tVectorLine",
 "tTensorLine","tScalarPoint","tVectorPoint","tTensorPoint","tBSpline","tNurbs",
-"tOrder","tWith","tBounds","tKnots","tColor","tOptions","tFor","tEndFor","tScript",
-"tExit","tMerge","tB_SPLINE_SURFACE_WITH_KNOTS","tB_SPLINE_CURVE_WITH_KNOTS",
-"tCARTESIAN_POINT","tTRUE","tFALSE","tUNSPECIFIED","tU","tV","tEDGE_CURVE","tVERTEX_POINT",
-"tORIENTED_EDGE","tPLANE","tFACE_OUTER_BOUND","tEDGE_LOOP","tADVANCED_FACE",
-"tVECTOR","tDIRECTION","tAXIS2_PLACEMENT_3D","tISO","tENDISO","tENDSEC","tDATA",
-"tHEADER","tFILE_DESCRIPTION","tFILE_SCHEMA","tFILE_NAME","tMANIFOLD_SOLID_BREP",
-"tCLOSED_SHELL","tADVANCED_BREP_SHAPE_REPRESENTATION","tFACE_BOUND","tCYLINDRICAL_SURFACE",
-"tCONICAL_SURFACE","tCIRCLE","tTRIMMED_CURVE","tGEOMETRIC_SET","tCOMPOSITE_CURVE_SEGMENT",
-"tCONTINUOUS","tCOMPOSITE_CURVE","tTOROIDAL_SURFACE","tPRODUCT_DEFINITION","tPRODUCT_DEFINITION_SHAPE",
-"tSHAPE_DEFINITION_REPRESENTATION","tELLIPSE","tTrimmed","tSolid","tEndSolid",
-"tVertex","tFacet","tNormal","tOuter","tLoopSTL","tEndLoop","tEndFacet","'?'",
-"tAND","tOR","tNOTEQUAL","tEQUAL","tAPPROXEQUAL","tAFFECTPLUS","tAFFECTMINUS",
-"tAFFECTTIMES","tAFFECTDIVIDE","'<'","'>'","tLESSOREQUAL","tGREATEROREQUAL",
-"'+'","'-'","'*'","'/'","'%'","tCROSSPRODUCT","UNARYPREC","'!'","'^'","tPLUSPLUS",
-"tMINUSMINUS","'('","','","')'","'{'","'}'","'.'","'['","']'","All","STLFormatItem",
-"StepFormatItems","StepFormatItem","StepSpecial","StepHeaderItem","StepDataItem",
-"GeomFormatList","GeomFormat","Printf","View","Views","ScalarPointValues","ScalarPoint",
-"@1","VectorPointValues","VectorPoint","@2","TensorPointValues","TensorPoint",
-"@3","ScalarLineValues","ScalarLine","@4","VectorLineValues","VectorLine","@5",
-"TensorLineValues","TensorLine","@6","ScalarTriangleValues","ScalarTriangle",
-"@7","VectorTriangleValues","VectorTriangle","@8","TensorTriangleValues","TensorTriangle",
-"@9","ScalarTetrahedronValues","ScalarTetrahedron","@10","VectorTetrahedronValues",
-"VectorTetrahedron","@11","TensorTetrahedronValues","TensorTetrahedron","@12",
-"Affectation","Shape","Transform","MultipleShape","ListOfShapes","Duplicata",
-"Delete","Macro","Command","Loop","Extrude","ExtrudeParameters","ExtrudeParameter",
-"Transfini","Coherence","Options","Option","Scripts","Script","BoolExpr","FExpr",
-"FExpr_Single","FExpr_Range","VExpr","VExpr_Single","ListOfStrings","RecursiveListOfStrings",
-"ListOfListOfDouble","RecursiveListOfListOfDouble","ListOfDouble","RecursiveListOfDouble",
-"Color", NULL
+"tOrder","tWith","tBounds","tKnots","tColor","tFor","tEndFor","tScript","tExit",
+"tMerge","tB_SPLINE_SURFACE_WITH_KNOTS","tB_SPLINE_CURVE_WITH_KNOTS","tCARTESIAN_POINT",
+"tTRUE","tFALSE","tUNSPECIFIED","tU","tV","tEDGE_CURVE","tVERTEX_POINT","tORIENTED_EDGE",
+"tPLANE","tFACE_OUTER_BOUND","tEDGE_LOOP","tADVANCED_FACE","tVECTOR","tDIRECTION",
+"tAXIS2_PLACEMENT_3D","tISO","tENDISO","tENDSEC","tDATA","tHEADER","tFILE_DESCRIPTION",
+"tFILE_SCHEMA","tFILE_NAME","tMANIFOLD_SOLID_BREP","tCLOSED_SHELL","tADVANCED_BREP_SHAPE_REPRESENTATION",
+"tFACE_BOUND","tCYLINDRICAL_SURFACE","tCONICAL_SURFACE","tCIRCLE","tTRIMMED_CURVE",
+"tGEOMETRIC_SET","tCOMPOSITE_CURVE_SEGMENT","tCONTINUOUS","tCOMPOSITE_CURVE",
+"tTOROIDAL_SURFACE","tPRODUCT_DEFINITION","tPRODUCT_DEFINITION_SHAPE","tSHAPE_DEFINITION_REPRESENTATION",
+"tELLIPSE","tTrimmed","tSolid","tEndSolid","tVertex","tFacet","tNormal","tOuter",
+"tLoopSTL","tEndLoop","tEndFacet","'?'","tAND","tOR","tNOTEQUAL","tEQUAL","tAPPROXEQUAL",
+"tAFFECTPLUS","tAFFECTMINUS","tAFFECTTIMES","tAFFECTDIVIDE","'<'","'>'","tLESSOREQUAL",
+"tGREATEROREQUAL","'+'","'-'","'*'","'/'","'%'","tCROSSPRODUCT","UNARYPREC",
+"'!'","'^'","tPLUSPLUS","tMINUSMINUS","'('","','","')'","'{'","'}'","'.'","'['",
+"']'","All","STLFormatItem","StepFormatItems","StepFormatItem","StepSpecial",
+"StepHeaderItem","StepDataItem","GeomFormatList","GeomFormat","Printf","View",
+"Views","ScalarPointValues","ScalarPoint","@1","VectorPointValues","VectorPoint",
+"@2","TensorPointValues","TensorPoint","@3","ScalarLineValues","ScalarLine",
+"@4","VectorLineValues","VectorLine","@5","TensorLineValues","TensorLine","@6",
+"ScalarTriangleValues","ScalarTriangle","@7","VectorTriangleValues","VectorTriangle",
+"@8","TensorTriangleValues","TensorTriangle","@9","ScalarTetrahedronValues",
+"ScalarTetrahedron","@10","VectorTetrahedronValues","VectorTetrahedron","@11",
+"TensorTetrahedronValues","TensorTetrahedron","@12","Affectation","Shape","Transform",
+"MultipleShape","ListOfShapes","Duplicata","Delete","Macro","Command","Loop",
+"Extrude","ExtrudeParameters","ExtrudeParameter","Transfini","Coherence","BoolExpr",
+"FExpr","FExpr_Single","FExpr_Range","VExpr","VExpr_Single","ListOfStrings",
+"RecursiveListOfStrings","ListOfListOfDouble","RecursiveListOfListOfDouble",
+"ListOfDouble","RecursiveListOfDouble","Color", NULL
 };
 #endif
 
 static const short yyr1[] = {     0,
-   175,   175,   175,   176,   176,   176,   177,   177,   178,   178,
-   178,   178,   179,   179,   179,   179,   179,   180,   180,   180,
-   181,   181,   181,   181,   181,   181,   181,   181,   181,   181,
-   181,   181,   181,   181,   181,   181,   181,   181,   181,   181,
-   181,   181,   181,   181,   181,   181,   181,   181,   181,   181,
-   182,   182,   183,   183,   183,   183,   183,   183,   183,   183,
-   183,   183,   183,   183,   183,   183,   183,   183,   184,   185,
-   185,   186,   186,   186,   186,   186,   186,   186,   186,   186,
-   186,   186,   186,   186,   187,   187,   189,   188,   190,   190,
-   192,   191,   193,   193,   195,   194,   196,   196,   198,   197,
-   199,   199,   201,   200,   202,   202,   204,   203,   205,   205,
-   207,   206,   208,   208,   210,   209,   211,   211,   213,   212,
-   214,   214,   216,   215,   217,   217,   219,   218,   220,   220,
-   222,   221,   223,   223,   223,   223,   223,   223,   223,   224,
-   224,   224,   224,   224,   224,   224,   224,   224,   224,   224,
-   224,   224,   224,   224,   224,   224,   224,   224,   224,   224,
-   224,   224,   224,   224,   224,   224,   224,   225,   225,   225,
-   225,   226,   226,   226,   227,   227,   228,   229,   230,   231,
-   231,   231,   232,   232,   232,   233,   233,   233,   233,   233,
-   233,   233,   233,   234,   234,   235,   235,   236,   236,   236,
-   236,   236,   236,   236,   236,   237,   238,   238,   239,   239,
-   239,   239,   239,   239,   239,   239,   239,   239,   239,   239,
-   239,   239,   239,   239,   239,   239,   239,   239,   239,   239,
-   239,   239,   240,   240,   241,   242,   242,   242,   242,   242,
-   243,   243,   243,   243,   243,   243,   243,   243,   243,   243,
-   243,   243,   243,   243,   243,   243,   243,   243,   243,   243,
-   243,   243,   243,   243,   243,   243,   243,   243,   243,   243,
-   243,   243,   243,   243,   243,   243,   243,   243,   243,   243,
-   244,   244,   244,   244,   244,   244,   244,   244,   244,   245,
-   245,   246,   246,   246,   246,   246,   247,   247,   247,   247,
-   247,   247,   248,   248,   249,   249,   250,   250,   250,   251,
-   251,   252,   252,   252,   253,   253,   253,   253,   254,   254,
-   254,   254,   254
+   174,   174,   174,   175,   175,   175,   176,   176,   177,   177,
+   177,   177,   178,   178,   178,   178,   178,   179,   179,   179,
+   180,   180,   180,   180,   180,   180,   180,   180,   180,   180,
+   180,   180,   180,   180,   180,   180,   180,   180,   180,   180,
+   180,   180,   180,   180,   180,   180,   180,   180,   180,   180,
+   181,   181,   182,   182,   182,   182,   182,   182,   182,   182,
+   182,   182,   182,   182,   182,   182,   183,   184,   184,   185,
+   185,   185,   185,   185,   185,   185,   185,   185,   185,   185,
+   185,   185,   186,   186,   188,   187,   189,   189,   191,   190,
+   192,   192,   194,   193,   195,   195,   197,   196,   198,   198,
+   200,   199,   201,   201,   203,   202,   204,   204,   206,   205,
+   207,   207,   209,   208,   210,   210,   212,   211,   213,   213,
+   215,   214,   216,   216,   218,   217,   219,   219,   221,   220,
+   222,   222,   222,   222,   222,   222,   222,   222,   222,   222,
+   222,   222,   222,   222,   222,   222,   222,   222,   222,   222,
+   222,   222,   222,   222,   222,   222,   222,   222,   222,   222,
+   223,   223,   223,   223,   223,   223,   223,   223,   223,   223,
+   223,   223,   223,   223,   223,   223,   223,   223,   223,   223,
+   223,   223,   223,   223,   223,   223,   223,   223,   224,   224,
+   224,   224,   225,   225,   225,   226,   226,   227,   228,   229,
+   230,   230,   230,   231,   231,   231,   232,   232,   232,   232,
+   232,   232,   232,   232,   233,   233,   234,   234,   235,   235,
+   235,   235,   235,   235,   235,   235,   236,   237,   237,   237,
+   237,   237,   238,   238,   238,   238,   238,   238,   238,   238,
+   238,   238,   238,   238,   238,   238,   238,   238,   238,   238,
+   238,   238,   238,   238,   238,   238,   238,   238,   238,   238,
+   238,   238,   238,   238,   238,   238,   238,   238,   238,   238,
+   238,   238,   239,   239,   239,   239,   239,   239,   239,   239,
+   239,   240,   240,   241,   241,   241,   241,   241,   242,   242,
+   242,   242,   242,   242,   243,   243,   244,   244,   245,   245,
+   245,   246,   246,   247,   247,   247,   248,   248,   248,   248,
+   249,   249,   249,   249,   249
 };
 
 static const short yyr2[] = {     0,
@@ -673,33 +667,32 @@ static const short yyr2[] = {     0,
     11,    13,     9,     9,    11,     9,    11,     9,    11,    13,
     13,    11,    13,    17,     9,    11,    11,    13,    11,     9,
      0,     2,     1,     1,     1,     1,     1,     1,     1,     1,
-     1,     1,     1,     1,     1,     4,     4,     2,     7,     6,
-     8,     0,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     1,     3,     0,    13,     1,     3,
-     0,    13,     1,     3,     0,    13,     1,     3,     0,    19,
-     1,     3,     0,    19,     1,     3,     0,    19,     1,     3,
-     0,    25,     1,     3,     0,    25,     1,     3,     0,    25,
-     1,     3,     0,    31,     1,     3,     0,    31,     1,     3,
-     0,    31,     4,     3,     3,     4,     4,     4,     4,     7,
-     8,    12,     6,     5,     7,     7,    12,     7,     9,    17,
-     7,     8,     8,     7,    11,     5,     8,     9,     8,    22,
-    20,     8,     8,     5,     8,     7,     8,     5,    11,     5,
-     9,     1,     1,     1,     0,     2,     4,     4,     3,     3,
-     2,     3,     6,     8,     1,     8,    12,     8,    12,     8,
-    12,    11,    15,     1,     2,     9,     2,     6,     9,     9,
-     8,     8,     8,     6,     4,     2,     0,     2,     1,     6,
-    11,     6,    11,     6,    11,     6,    11,     6,    11,     6,
-    11,     5,    11,     5,    11,     6,    11,     6,    11,     6,
-    11,     8,     0,     2,     1,     1,     1,     1,     1,     1,
-     1,     3,     2,     2,     2,     3,     3,     3,     3,     3,
-     3,     3,     3,     3,     3,     3,     3,     3,     3,     5,
-     4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
-     6,     4,     4,     4,     4,     4,     4,     6,     6,     6,
-     1,     1,     1,     3,     8,     4,     9,     4,     9,     3,
-     5,     1,     2,     2,     3,     3,    11,     9,     7,     7,
-     3,     8,     0,     3,     1,     3,     0,     3,     3,     1,
-     3,     0,     1,     3,     1,     1,     3,     3,     9,     7,
-     5,     1,     5
+     1,     1,     1,     1,     1,     2,     7,     6,     8,     0,
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     1,     3,     0,    13,     1,     3,     0,    13,
+     1,     3,     0,    13,     1,     3,     0,    19,     1,     3,
+     0,    19,     1,     3,     0,    19,     1,     3,     0,    25,
+     1,     3,     0,    25,     1,     3,     0,    25,     1,     3,
+     0,    31,     1,     3,     0,    31,     1,     3,     0,    31,
+     4,     3,     3,     4,     4,     4,     4,     6,    11,     6,
+    11,     6,    11,     6,    11,     6,    11,     6,    11,     5,
+    11,     5,    11,     6,    11,     6,    11,     6,    11,     8,
+     7,     8,    12,     6,     5,     7,     7,    12,     7,     9,
+    17,     7,     8,     8,     7,    11,     5,     8,     9,     8,
+    22,    20,     8,     8,     5,     8,     7,     8,     5,    11,
+     5,     9,     1,     1,     1,     0,     2,     4,     4,     3,
+     3,     2,     3,     6,     8,     1,     8,    12,     8,    12,
+     8,    12,    11,    15,     1,     2,     9,     2,     6,     9,
+     9,     8,     8,     8,     6,     4,     2,     1,     1,     1,
+     1,     1,     1,     3,     2,     2,     2,     3,     3,     3,
+     3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
+     3,     5,     4,     4,     4,     4,     4,     4,     4,     4,
+     4,     4,     6,     4,     4,     4,     4,     4,     4,     6,
+     6,     6,     1,     1,     1,     3,     8,     4,     9,     4,
+     9,     3,     5,     1,     2,     2,     3,     3,    11,     9,
+     7,     7,     3,     8,     0,     3,     1,     3,     0,     3,
+     3,     1,     3,     0,     1,     3,     1,     1,     3,     3,
+     9,     7,     5,     1,     5
 };
 
 static const short yydefact[] = {    51,
@@ -708,1874 +701,1859 @@ static const short yydefact[] = {    51,
     10,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,   185,     0,     0,     0,     0,
-    52,    54,    53,    55,    56,    57,    58,    59,    63,    65,
-    64,    60,    61,    62,   281,   283,   282,     0,     0,     0,
+     0,     0,     0,     0,   206,     0,     0,     0,    52,    54,
+    53,    55,    56,    57,    58,    59,    63,    65,    64,    60,
+    61,    62,   273,   275,   274,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,   241,    12,     0,    13,    14,    16,    15,    17,
-   303,   303,     0,    68,     0,     0,     0,     0,     0,     0,
+   233,    12,     0,    13,    14,    16,    15,    17,   295,   295,
+     0,    66,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,   312,     0,     0,     0,     0,   312,
+     0,     0,     0,   304,     0,     0,     0,     0,   304,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,   292,     0,     0,     0,     0,     0,
-   175,     0,   312,   175,   206,     0,   312,   312,     0,     0,
-     0,   207,     0,   233,   181,     0,     0,     0,     0,     0,
+     0,     0,     0,   284,     0,     0,     0,     0,     0,   196,
+     0,   304,   196,   227,     0,   304,   304,     0,     0,     0,
+     0,   202,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,   244,   243,
-   245,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,   236,   235,   237,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,   134,   135,   180,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,   313,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,   294,
-   293,     0,     0,     0,     0,   175,   175,     0,     0,     0,
-     0,     0,   179,     0,     0,     0,    72,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,   182,     0,   284,     0,
+     0,     0,     0,     0,   132,   133,     0,     0,     0,   201,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,   305,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,   286,
+   285,     0,     0,     0,     0,   196,   196,     0,     0,     0,
+     0,     0,   200,     0,     0,     0,    70,     0,     0,     0,
+     0,     0,     0,     0,   203,     0,   276,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,   242,     0,   258,   259,   257,   256,   252,   253,
-   254,   255,   244,   243,   248,   249,   250,   251,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+   234,     0,   250,   251,   249,   248,   244,   245,   246,   247,
+   236,   235,   240,   241,   242,   243,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,   305,
-     0,     0,     0,     0,   133,   136,   137,   138,   139,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,   315,   316,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,   301,     0,
-     0,     0,   296,   295,   174,     0,   173,   172,     0,     0,
-     0,     0,     0,   177,   176,   205,     0,   178,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,    66,   209,
-   208,     0,    67,   235,   234,     0,   286,   288,     0,   261,
-   262,   263,   264,   265,   266,   267,   268,   269,   270,     0,
-   272,   273,   274,   275,   276,   277,     0,     0,     0,   247,
-   246,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,   297,     0,     0,
+     0,     0,   131,   134,   135,   136,   137,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,   307,   308,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,   304,     0,    19,     0,     0,     0,
-   144,   312,   312,     0,   312,   156,     0,   164,   312,   312,
-     0,     0,   314,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,   293,     0,     0,     0,   288,
+   287,   195,     0,   194,   193,     0,     0,     0,     0,     0,
+   198,   197,   226,     0,   199,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,   278,   280,     0,   253,   254,
+   255,   256,   257,   258,   259,   260,   261,   262,     0,   264,
+   265,   266,   267,   268,   269,     0,     0,     0,   239,   238,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-   168,   170,     0,     0,     0,     0,     0,    72,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,    73,    74,    75,    76,    77,    78,    79,    80,    81,
-    82,    83,    84,     0,     0,   312,     0,     0,   312,     0,
-     0,     0,     0,     0,     0,     0,     0,   260,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,   312,   312,
-     0,     0,     0,     0,   312,   312,     0,     0,     0,     0,
-     0,   312,     0,   312,     0,     0,     0,     0,     0,   306,
-     0,   303,     0,     0,     0,     0,   312,     0,   312,     0,
-     0,   290,   317,   318,   143,     0,   312,   312,   312,   198,
-     0,   312,   312,   312,   312,   312,   312,   312,     0,     0,
-     0,     0,     0,     0,     0,     0,   204,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-    70,     0,     0,     0,     0,   307,     0,     0,     0,     0,
-     0,   183,     0,     0,   271,   278,   279,   280,     0,     0,
+     0,     0,     0,   296,     0,    19,     0,   275,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+   150,   152,     0,     0,     0,     0,   165,   304,   304,     0,
+   304,   177,     0,   185,   304,   304,     0,     0,   306,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,   236,   237,   238,   239,   240,     0,     0,     0,
-     0,     0,     0,     0,    18,     0,    69,   140,   148,     0,
-   151,     0,   145,     0,   146,   166,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,   189,   191,     0,     0,
+     0,     0,     0,    70,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,    71,    72,    73,
+    74,    75,    76,    77,    78,    79,    80,    81,    82,     0,
+     0,   304,     0,     0,   304,     0,     0,     0,     0,     0,
+     0,     0,   252,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,   304,   304,     0,     0,     0,     0,   304,
+   304,     0,     0,     0,     0,     0,   304,     0,   304,     0,
+     0,     0,     0,     0,   298,     0,   295,     0,   138,     0,
+   140,   154,   142,   156,   144,   158,   146,   148,     0,     0,
+     0,     0,     0,     0,   304,     0,   304,     0,     0,   282,
+   309,   310,   164,     0,   304,   304,   304,   219,     0,   304,
+   304,   304,   304,   304,   304,   304,     0,     0,     0,     0,
+     0,     0,     0,     0,   225,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,    68,     0,
+     0,     0,     0,   299,     0,     0,   204,     0,     0,   263,
+   270,   271,   272,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,   175,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,   228,   229,   230,
+   231,   232,     0,     0,     0,     0,     0,     0,     0,    18,
+     0,   276,     0,     0,   314,     0,     0,    67,   161,   169,
+     0,   172,     0,   166,     0,   167,   187,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,   154,     0,   312,   312,
-     0,   312,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,   312,     0,     0,     0,     0,   312,     0,     0,
+     0,     0,     0,     0,     0,   196,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,   175,     0,   304,
+   304,     0,   304,     0,   304,     0,     0,     0,     0,   304,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,   304,     0,
+     0,     0,     0,     0,     0,     0,     0,   295,     0,     0,
+     0,   275,     0,   160,     0,   174,   184,   283,     0,   223,
+   178,   180,     0,     0,   222,   224,   186,   162,   173,   183,
+   188,     0,     0,   292,     0,   291,     0,     0,   207,     0,
+   209,     0,   211,     0,    69,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,   299,
+     0,   302,     0,     0,     0,   205,     0,   277,     0,     0,
+     0,     0,    21,     0,    30,     0,    34,     0,    28,     0,
+     0,    33,     0,    38,    36,     0,     0,     0,     0,     0,
+     0,    45,     0,     0,     0,     0,     0,    50,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,   170,     0,   221,   220,   196,   294,     0,   192,     0,
+     0,     0,     0,     0,     0,   215,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,   312,     0,     0,     0,
-     0,     0,     0,     0,     0,   303,     0,   153,   163,   291,
-     0,   202,   157,   159,     0,     0,   201,   203,   165,   141,
-   152,   162,   167,     0,     0,   300,     0,   299,     0,     0,
-   186,     0,   188,     0,   190,     0,    71,     0,     0,     0,
+     0,   304,   301,   300,   304,     0,   179,   279,   281,     0,
+     0,   299,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,   304,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,   307,     0,   310,     0,     0,     0,   283,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-   222,   224,     0,     0,   184,     0,   285,     0,     0,     0,
-     0,    21,     0,    30,     0,    34,     0,    28,     0,     0,
-    33,     0,    38,    36,     0,     0,     0,     0,     0,     0,
-    45,     0,     0,     0,     0,     0,    50,     0,     0,   149,
-     0,   200,   199,   175,   302,     0,   171,     0,     0,     0,
-     0,     0,     0,   194,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,   312,
-   309,   308,   312,     0,     0,   210,     0,   212,   226,   214,
-   228,   216,   230,   218,   220,     0,     0,   158,   287,   289,
-     0,     0,   307,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,   312,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,   298,     0,     0,     0,
-   197,   312,     0,   195,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,   311,
-     0,     0,   284,     0,     0,   322,     0,     0,     0,    35,
-     0,     0,     0,     0,    25,     0,    31,     0,    37,    26,
-    39,     0,    42,     0,    46,    47,     0,     0,    49,     0,
-     0,     0,   169,     0,     0,     0,     0,     0,   192,     0,
+   290,     0,     0,     0,   218,   304,     0,   216,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,   312,   312,   155,     0,     0,     0,   283,
-     0,   232,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,   297,   187,   189,   191,
+     0,     0,     0,   303,     0,     0,     0,    35,     0,     0,
+     0,     0,    25,     0,    31,     0,    37,    26,    39,     0,
+    42,     0,    46,    47,     0,     0,    49,     0,     0,     0,
+   139,   141,   155,   143,   157,   145,   159,   147,   149,   151,
+   153,   315,   313,     0,     0,   190,     0,     0,     0,     0,
+     0,   213,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,   304,   304,   176,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,   277,     0,     0,   289,   208,   210,   212,     0,
+   304,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+    85,    89,    93,   163,   168,     0,     0,     0,     0,     0,
+     0,     0,    29,    32,    40,     0,    41,    48,    43,     0,
      0,   312,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,    87,    91,    95,   142,   147,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,   304,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,   304,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,    29,    32,    40,     0,    41,    48,
-    43,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,   312,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,    24,    27,     0,
+     0,   311,     0,   214,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,    83,     0,    87,     0,    91,
+     0,     0,     0,     0,   304,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,    44,
+    20,   171,   217,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,    84,    86,    88,    90,    92,    94,     0,     0,
+     0,     0,   304,     0,     0,     0,     0,     0,     0,    97,
+   101,   105,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     5,   304,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,   312,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,   211,
-   213,   227,   215,   229,   217,   231,   219,   221,   223,   225,
-   323,   321,     0,     0,     0,     0,    24,    27,     0,     0,
-     0,   193,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,    85,     0,    89,     0,    93,     0,     0,
-   285,     0,     0,     0,   312,     0,     0,     0,     0,     0,
+     0,   182,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,    95,     0,    99,     0,   103,     0,   304,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,   320,     0,     0,
-     0,    44,    20,   150,   196,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,    86,    88,    90,    92,    94,    96,
-     0,     0,     0,     0,     0,   312,     0,     0,     0,     0,
-     0,     0,    99,   103,   107,     0,     0,   319,     0,     0,
+     0,   181,     0,    22,     0,     0,     0,     0,     0,     0,
+    96,    98,   100,   102,   104,   106,   304,     0,     0,     0,
+   109,   113,   117,     0,     0,     0,     0,     0,     0,     0,
+   304,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,   107,     0,   111,     0,   115,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     5,   312,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,   161,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,    97,     0,   101,     0,   105,
-     0,   312,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,   160,     0,    22,     0,     0,
-     0,     0,     0,     0,    98,   100,   102,   104,   106,   108,
-   312,     0,     0,     0,   111,   115,   119,     0,     0,     0,
-     0,     0,     0,     0,   312,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,   109,     0,   113,     0,
-   117,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,   110,   112,   114,   116,   118,
-   120,     0,   123,   127,   131,    23,     0,     0,     0,     0,
-     0,     0,     0,   121,     0,   125,     0,   129,     0,     0,
-     0,     0,     0,     0,   122,   124,   126,   128,   130,   132,
-     0,     0,     0
+     0,   108,   110,   112,   114,   116,   118,     0,   121,   125,
+   129,    23,     0,     0,     0,     0,     0,     0,     0,   119,
+     0,   123,     0,   127,     0,     0,     0,     0,     0,     0,
+   120,   122,   124,   126,   128,   130,     0,     0,     0
 };
 
-static const short yydefgoto[] = {  1491,
-     4,     5,    18,    19,    20,    21,     6,    61,   460,    63,
-   450,  1263,   582,  1185,  1265,   583,  1186,  1267,   584,  1187,
-  1375,   585,  1348,  1377,   586,  1349,  1379,   587,  1350,  1436,
-   588,  1422,  1438,   589,  1423,  1440,   590,  1424,  1473,   591,
-  1467,  1475,   592,  1468,  1477,   593,  1469,    64,   445,   435,
-   436,   437,   438,    68,    69,    70,    71,    72,   963,   964,
-    73,    74,   314,   461,   316,   465,   738,   274,   103,   413,
-   290,   155,   250,   391,   801,   893,   894,   414,  1058
+static const short yydefgoto[] = {  1477,
+     4,     5,    18,    19,    20,    21,     6,    59,    60,    61,
+   457,  1255,   598,  1205,  1257,   599,  1206,  1259,   600,  1207,
+  1361,   601,  1334,  1363,   602,  1335,  1365,   603,  1336,  1422,
+   604,  1408,  1424,   605,  1409,  1426,   606,  1410,  1459,   607,
+  1453,  1461,   608,  1454,  1463,   609,  1455,    62,   452,   442,
+   443,   444,   445,    66,    67,    68,    69,    70,   985,   986,
+    71,    72,   763,   274,   101,   420,   290,   154,   247,   389,
+   832,   921,   922,   421,   777
 };
 
-static const short yypact[] = {   414,
--32768,-32768,  -103,-32768,   287,  2139,   909,    38,    65,    76,
-    81,    90,   107,   122,  -106,   -61,   -14,-32768,-32768,-32768,
--32768,   155,   153,    28,   -15,    56,   106,   -19,   -21,   128,
-   130,   250,   145,   134,   232,   282,   100,   309,   105,   166,
-    93,    93,   240,   230,   242,   399,   332,   251,   405,   426,
-   317,   253,    48,   271,   275,-32768,   273,   447,   449,   424,
+static const short yypact[] = {  1243,
+-32768,-32768,  -116,-32768,   696,  2145,  1516,    38,    39,    58,
+    60,    62,    74,    81,   -64,   -53,   -27,-32768,-32768,-32768,
+-32768,   123,    92,    25,   -81,    -4,    26,   -39,   -49,   125,
+   129,   208,   131,   223,   267,   280,    77,   293,   269,   167,
+    82,    82,   172,   300,   178,   350,   322,   198,   368,   382,
+   100,   231,   -25,   235,-32768,   406,   409,   384,-32768,-32768,
 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,   303,-32768,   316,   322,   324,
-   351,   352,   386,   403,   418,   422,   425,   427,   430,   431,
-   432,   433,   434,   435,   439,   442,   443,   909,   909,   909,
-   909,  1476,-32768,-32768,  2178,-32768,-32768,-32768,-32768,-32768,
-   444,   444,   474,-32768,   909,   909,   909,   909,   909,   559,
-   575,   576,   588,   909,   909,   909,   909,   467,   909,   909,
-   468,   909,   909,   909,   604,   909,   466,   470,   471,   604,
-   472,   473,   477,   478,   480,   481,   484,    93,   469,    93,
-    93,   909,   909,   -94,-32768,   -71,    93,   482,   485,   486,
--32768,   648,   604,-32768,-32768,    46,   604,   604,   909,   -43,
-   909,-32768,   909,-32768,-32768,   651,   492,    53,   909,   909,
-   909,   909,   909,   909,   909,   909,   909,   909,   909,   909,
-   909,   909,   909,   909,   909,   909,   909,   909,   496,   496,
-   496,  2829,   909,   909,   909,   909,   909,   909,   909,   909,
-   909,   909,   909,   909,   909,   909,   909,  1476,   494,   499,
-   500,   501,   502,   503,   504,   517,   518,   519,   520,   521,
-   522,   523,   524,   525,   526,   528,   532,   533,   534,   557,
-   558,   560,   561,   562,   563,   564,   565,   566,   721,   568,
-   569,   571,   959,  1012,  1153,  1364,  1392,-32768,-32768,-32768,
-   573,  2857,  2327,  2885,  2913,   909,  2941,  2350,   909,  2373,
-  2969,  2997,   909,  7501,   727,  3025,   909,   909,   909,   730,
-   909,   909,   909,   909,   909,   909,   909,   -78,    54,-32768,
--32768,  4593,  4620,    93,    93,   377,   377,   -24,   909,   909,
-   909,   307,-32768,   276,  2089,    93,-32768,   735,   736,  3053,
-   664,   909,  3081,    41,   744,    43,-32768,   909,   163,   572,
-  3109,  3137,  3165,  3193,  3221,  3249,  3277,  3305,  3333,  3361,
-  4647,  3389,  3417,  3445,  3473,  3501,  3529,  4674,  4701,  4728,
-   909,   909,-32768,  1904,   312,   312,   420,   420,   380,   380,
-   380,   380,  -116,   -66,   496,   496,   496,   496,  4755,   741,
-   742,   743,   746,   748,   749,   752,   753,   754,   757,   758,
-   759,   760,   764,   767,   768,   770,   771,   772,   773,   774,
-   775,   776,   624,   777,   778,   779,   780,   783,   782,-32768,
-   189,   785,   786,   796,-32768,-32768,-32768,-32768,-32768,   909,
-   784,   798,   795,   799,  3557,   800,   803,  3585,   805,   806,
-   807,  1927,-32768,   188,   909,   808,  2396,  3613,  3641,   909,
-  2419,  2442,  3669,  3697,  3725,  3753,  3781,    93,-32768,   632,
-   909,   909,-32768,-32768,-32768,   641,  2197,-32768,   645,   909,
-  4778,  4805,  4832,-32768,-32768,-32768,   909,-32768,   -68,   875,
-   647,   649,   811,   654,  3809,   815,   652,   656,-32768,-32768,
--32768,   909,-32768,-32768,-32768,  3837,-32768,-32768,   909,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   909,
--32768,-32768,-32768,-32768,-32768,-32768,   909,   909,   909,   162,
-   162,   909,   686,   658,   662,   663,   665,   667,   668,   669,
-   671,   672,   673,   675,   677,   678,   679,   680,   681,   684,
-   685,   687,   688,   690,   691,   695,   697,   698,   699,   700,
-   701,   702,   716,   827,-32768,   693,-32768,   717,  3865,    93,
--32768,   604,   604,   847,   604,-32768,   885,-32768,   604,   604,
-   909,   909,-32768,  1419,   737,   898,   899,   902,   836,   903,
-   907,   908,   910,   947,   948,   949,   142,   909,  4859,  4886,
--32768,-32768,  2465,    93,    93,    93,  1442,-32768,   790,   791,
-   792,   797,   802,   809,   816,   817,   818,   819,   820,   830,
-   956,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,   909,   909,   604,   909,   965,   604,    39,
-   292,   966,  2004,  3893,  3921,  3949,  3977,  7501,   781,   963,
-   909,   909,    93,   971,   972,   840,   998,   999,   604,   604,
-  1000,    93,  1001,  1002,   604,   604,  1003,  1005,  1006,  1007,
-  1008,   604,   421,   604,  1010,  1009,  1011,  1014,  1017,-32768,
-  1015,   444,  1016,     2,    32,  1019,   604,  1020,   604,  1034,
-  1035,  1955,  1927,-32768,-32768,   909,   604,   604,   604,-32768,
-   331,   604,   604,   604,   604,   604,   604,   604,   909,  2168,
-   909,   909,   853,  -104,   -91,   -87,-32768,  1187,   909,   909,
-   909,   909,   909,   909,   909,   909,   909,   909,   909,   909,
--32768,  4913,  4940,  1036,  4005,   249,   962,   158,   871,   873,
-   909,-32768,   909,   877,-32768,-32768,-32768,-32768,   909,   883,
-  4967,  4994,   -26,   887,   888,   890,   892,   891,   894,   896,
-   900,   112,   901,   904,   905,   911,   912,   913,   914,   915,
-   916,   919,-32768,-32768,-32768,-32768,-32768,   921,   929,   930,
-   931,   939,   940,   942,-32768,   952,-32768,-32768,-32768,    93,
--32768,  1050,-32768,  1061,-32768,-32768,   909,  5021,  1064,  1065,
-  1072,   909,   909,  1102,  1115,  1116,  1118,  1119,  1129,  1130,
-  2488,   967,  4033,  2237,   377,    93,  1131,    93,  1132,    93,
-     1,  1144,  5048,  5075,  5102,  5129,  5156,  5183,  5210,  5237,
-  5264,  5291,  5318,  5345,   909,   909,-32768,  1154,   604,   604,
-  1079,   604,     0,   694,   694,   909,   909,  1156,  1157,   909,
-  1171,  4061,   218,  1173,  1476,  1175,   909,   604,  1194,  1198,
-  1196,  1045,  1199,   421,  1200,  1201,   909,  1214,  1204,  1215,
-  1216,  1220,   421,   909,   909,   909,   604,  1218,  1222,   421,
-   909,  1223,  1224,  1225,   909,   444,    36,-32768,-32768,  7501,
-   909,-32768,-32768,-32768,  1505,  1533,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,  1058,  1228,-32768,   909,-32768,  1062,   157,
--32768,   159,-32768,   198,-32768,   228,-32768,   909,   909,   909,
-   909,   909,   909,   909,   909,   909,   909,   909,   909,  5372,
-  5399,   249,   234,-32768,   197,  1059,  1160,  1063,  1233,   694,
-   694,   909,  1562,    62,  1585,    69,  1617,    95,  1647,  1674,
--32768,-32768,  2191,  1227,-32768,  1234,   221,  1476,  1073,  5426,
-  1075,-32768,  1076,-32768,  1077,-32768,  1078,-32768,  1080,  4089,
--32768,  1081,-32768,-32768,  1095,  1098,  4117,  5453,  4145,  1082,
--32768,  1099,  1100,  5480,  1103,  1101,-32768,  5507,  1104,-32768,
-  5534,-32768,-32768,   377,-32768,  2267,-32768,   909,   909,   909,
-  1277,  1117,   -17,-32768,  5561,  5588,  5615,  5642,  5669,  5696,
-  5723,  5750,  5777,  5804,  5831,  5858,   909,   909,  1207,   604,
--32768,-32768,   604,   909,    55,-32768,  2801,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,  1113,    47,-32768,-32768,-32768,
-  2518,  1283,   249,   421,  1288,   909,  1287,   421,  1294,  1291,
-  1295,  1296,  1297,   909,  1298,   604,  1310,  1312,   909,  1316,
-  1322,   909,  1324,  1325,  1161,   909,-32768,  2541,  2564,  2587,
--32768,   604,  1328,-32768,   909,   909,   909,   909,   909,   909,
-   909,   909,   909,   909,   909,   909,  2610,  2633,  1165,-32768,
-  1163,  1703,   163,  1166,  1332,  1168,  1170,  1335,   909,-32768,
-  1174,  1177,  1178,  5885,-32768,  1169,-32768,  1179,-32768,-32768,
--32768,  4173,-32768,  1191,-32768,-32768,  4201,  1192,-32768,  4229,
-  1195,  1197,-32768,  2656,  1337,  1341,    24,  1203,-32768,  5912,
-  5939,  5966,  5993,  6020,  6047,  6074,  6101,  6128,  4257,  4285,
-  4313,  1354,  1356,   604,   604,-32768,   909,   241,  1282,   237,
-  6155,-32768,  1476,   421,   421,   421,   421,  1360,  1361,  1362,
-   421,  1363,  1366,  1367,  1369,  1370,-32768,-32768,-32768,-32768,
-   228,   604,   909,   909,   909,   909,   909,   909,   909,   909,
-   909,-32768,-32768,-32768,-32768,-32768,  1208,  1213,  2214,   483,
-   694,   694,   909,   909,   909,   909,  1217,   909,   909,  1476,
-  1226,  1229,  1219,  1221,-32768,-32768,-32768,  1231,-32768,-32768,
--32768,  1232,  1235,    -3,  1236,  6182,  6209,  6236,  6263,  6290,
-  6317,  6344,  6371,  6398,  1239,  1240,  1242,   604,  1308,  1230,
-  1385,  1726,    97,  1749,    99,  1772,   101,  1802,  1829,  1858,
-  1881,  1388,  2679,  6425,  2709,   421,   421,  1387,  1389,   421,
-  1391,  1396,  1407,   604,   909,   909,   909,   909,   909,   909,
-   909,   909,   909,   909,   909,   909,  1243,  1245,  1412,-32768,
+-32768,-32768,-32768,   268,-32768,   272,   275,   276,   277,   278,
+   279,   282,   283,   284,   285,   292,   305,   307,   309,   310,
+   312,   316,   317,   319,   320,  1516,  1516,  1516,  1516,  1489,
+-32768,-32768,  2181,-32768,-32768,-32768,-32768,-32768,   326,   326,
+   412,-32768,  1516,  1516,  1516,  1516,  1516,   429,   440,    14,
+   453,   472,  1516,  1516,  1516,  1516,   327,  1516,  1516,   328,
+  1516,  1516,  1516,   916,  1516,   337,   329,   330,   916,   338,
+   341,   347,   349,   369,   373,   374,    82,   370,    82,    82,
+  1516,  1516,  -117,-32768,  -102,    82,   343,   378,   380,-32768,
+   555,   916,-32768,-32768,    20,   916,   916,  1516,   -65,  1516,
+  1516,-32768,   556,   397,     8,  1516,  1516,  1516,  1516,  1516,
+  1516,  1516,  1516,  1516,  1516,  1516,  1516,  1516,  1516,  1516,
+  1516,  1516,  1516,  1516,  1516,   402,   402,   402,  2779,  1516,
+  1516,  1516,  1516,  1516,  1516,  1516,  1516,  1516,  1516,  1516,
+  1516,  1516,  1516,  1516,  1489,   400,   403,   407,   408,   413,
+   414,   415,   439,   441,   442,   456,   457,   459,   460,   462,
+   463,   467,   468,   469,   496,   497,   498,   499,   500,   512,
+   514,   517,   518,   519,   520,   563,   515,   521,   524,   311,
+   516,   670,   724,   825,-32768,-32768,     1,   522,   404,-32768,
+   528,  2807,  2307,  2835,  2863,  1516,  2891,  2330,  1516,  2353,
+  2919,  2947,  1516,  7451,   680,  2975,  1516,  1516,  1516,   681,
+  1516,  1516,  1516,  1516,  1516,  1516,  1516,   -93,    11,-32768,
+-32768,  4543,  4570,    82,    82,   261,   261,   -72,  1516,  1516,
+  1516,  1282,-32768,    72,  2096,    82,-32768,   691,   705,  3003,
+   633,  1516,  3031,   401,-32768,  1516,   -67,   542,  3059,  3087,
+  3115,  3143,  3171,  3199,  3227,  3255,  3283,  3311,  4597,  3339,
+  3367,  3395,  3423,  3451,  3479,  4624,  4651,  4678,  1516,  1516,
+-32768,  1915,   961,   961,   458,   458,   247,   247,   247,   247,
+  -114,   -92,   402,   402,   402,   402,  4705,   710,   711,   712,
+   713,   715,   717,   718,   719,   720,   721,   726,   728,   729,
+   731,   733,   735,   736,   738,   739,   740,   753,   756,   757,
+   639,   761,   762,   763,   765,   769,   768,-32768,   -15,   770,
+   771,   773,-32768,-32768,-32768,-32768,-32768,   573,  1460,  1460,
+  1516,  1516,   774,   778,  1516,   772,  1516,   767,   779,   781,
+   783,  3507,   784,   786,  3535,   788,   791,   793,  1940,-32768,
+    85,  1516,   803,  2376,  3563,  3591,  1516,  2399,  2422,  3619,
+  3647,  3675,  3703,  3731,    82,-32768,   607,  1516,  1516,-32768,
+-32768,-32768,   625,  1004,-32768,   646,  1516,  4728,  4755,  4782,
+-32768,-32768,-32768,  1516,-32768,   -99,   254,   648,   649,   827,
+   669,  3759,   829,  1516,  3787,-32768,-32768,  1516,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,  1516,-32768,
+-32768,-32768,-32768,-32768,-32768,  1516,  1516,  1516,   110,   110,
+  1516,   699,   671,   672,   673,   674,   676,   677,   678,   679,
+   686,   687,   688,   690,   692,   694,   697,   703,   704,   706,
+   707,   722,   723,   725,   727,   730,   744,   745,   746,   747,
+   748,   749,   842,-32768,   695,-32768,   750,   714,   852,  1460,
+  1460,  1516,   945,     0,   985,     3,  1023,    59,  1433,  1574,
+-32768,-32768,  2011,   841,  3815,    82,-32768,   916,   916,   877,
+   916,-32768,   879,-32768,   916,   916,  1516,  1516,-32768,  1598,
+   752,   884,   886,   888,   375,   889,   891,   911,   917,   939,
+   940,   941,   -20,  1516,  4809,  4836,-32768,-32768,  2445,    82,
+    82,    82,  1621,-32768,   796,   799,   805,   806,   819,   820,
+   821,   823,   824,   828,   830,   831,   943,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,  1516,
+  1516,   916,  1516,   988,   916,   346,   991,  2092,  3843,  3871,
+  3899,  3927,  7451,   789,   947,  1516,  1516,    82,   997,   998,
+   845,  1000,  1001,   916,   916,  1002,    82,  1003,  1006,   916,
+   916,  1007,  1008,  1009,  1010,  1011,   916,   291,   916,  1012,
+  1013,  1014,  1017,  1019,-32768,  1020,   326,    15,-32768,  2751,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   836,    21,
+  1021,    94,    17,  1022,   916,  1024,   916,  1025,  1026,  1963,
+  1940,-32768,-32768,  1516,   916,   916,   916,-32768,   259,   916,
+   916,   916,   916,   916,   916,   916,  1516,  2171,  1516,  1516,
+   848,  -127,  -122,  -120,-32768,   682,  1516,  1516,  1516,  1516,
+  1516,  1516,  1516,  1516,  1516,  1516,  1516,  1516,-32768,  4863,
+  4890,  1027,  3955,    -9,   942,  1516,-32768,  1516,   854,-32768,
+-32768,-32768,-32768,  1516,   867,  4917,  4944,   -95,   878,   880,
+   897,   883,   898,   899,   901,   902,   -74,   906,   907,   908,
+   910,   912,   924,   925,   926,   927,   915,-32768,-32768,-32768,
+-32768,-32768,   928,   944,   954,   955,   956,   957,   964,-32768,
+   965,   -67,   937,  1070,   913,  1543,  1104,-32768,-32768,-32768,
+    82,-32768,  1128,-32768,  1139,-32768,-32768,  1516,  4971,  1144,
+  1145,  1146,  1516,  1516,  1163,  1164,  1166,  1167,  1179,  1181,
+  1182,  2468,  1018,  3983,  2217,   261,    82,  1189,    82,  1190,
+    82,    -2,  1191,  4998,  5025,  5052,  5079,  5106,  5133,  5160,
+  5187,  5214,  5241,  5268,  5295,  1516,  1516,-32768,  1192,   916,
+   916,  1117,   916,  4011,   207,  1205,  1489,  1208,  1516,   916,
+  1220,  1224,  1223,  1073,  1225,   291,  1228,  1232,  1516,  1230,
+  1234,  1235,  1236,  1237,   291,  1516,  1516,  1516,   916,  1242,
+  1246,   291,  1516,  1247,  1248,  1251,  1516,   326,  1516,    96,
+  1170,  -130,  5322,-32768,    98,-32768,-32768,  7451,  1516,-32768,
+-32768,-32768,  1644,  1668,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,  1084,  1250,-32768,  1516,-32768,  1088,   -13,-32768,   134,
+-32768,   143,-32768,   -36,-32768,  1516,  1516,  1516,  1516,  1516,
+  1516,  1516,  1516,  1516,  1516,  1516,  1516,  5349,  5376,    -9,
+   211,-32768,   116,  1090,  1183,-32768,  1254,   264,  1489,  1094,
+  5403,  1110,-32768,  1111,-32768,  1112,-32768,  1113,-32768,  1115,
+  4039,-32768,  1119,-32768,-32768,  1127,  1129,  4067,  5430,  4095,
+  1120,-32768,  1130,  1131,  5457,  1133,  1136,-32768,  5484,  1134,
+  2194,   627,  1460,  1460,  1516,  1516,  1516,  1516,  1125,  1516,
+  1516,-32768,  5511,-32768,-32768,   261,-32768,  2247,-32768,  1516,
+  1516,  1516,  1299,  1137,   -47,-32768,  5538,  5565,  5592,  5619,
+  5646,  5673,  5700,  5727,  5754,  5781,  5808,  5835,  1516,  1516,
+  1240,   916,-32768,-32768,   916,  1516,-32768,-32768,-32768,  1049,
+  1317,    -9,   291,  1323,  1516,  1325,   291,  1326,  1330,  1328,
+  1339,  1340,  1516,  1341,   916,  1342,  1351,  1516,  1357,  1355,
+  1516,  1324,  1199,  1356,  1691,   109,  1714,   126,  1738,   132,
+  1761,  1788,  1831,  1869,  1368,  2491,  5862,  1369,  1207,  1516,
+-32768,  2514,  2537,  2560,-32768,   916,  1373,-32768,  1516,  1516,
+  1516,  1516,  1516,  1516,  1516,  1516,  1516,  1516,  1516,  1516,
+  2583,  2606,  1211,-32768,  1214,  1892,  1516,-32768,  1215,  1216,
+  1217,  5889,-32768,  1218,-32768,  1219,-32768,-32768,-32768,  4123,
+-32768,  1221,-32768,-32768,  4151,  1222,-32768,  4179,  1227,  1381,
 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,   909,   909,  1249,  1250,-32768,-32768,  1257,  1258,
-  1259,-32768,  1260,  6452,  6479,  6506,  6533,  6560,  6587,  6614,
-  6641,  6668,   306,  7501,   361,  7501,   362,  7501,  1350,   909,
-   221,  2297,  1476,   421,   604,  1423,  1426,  1427,  1428,   909,
-   909,   909,   909,   909,   909,   909,   909,   909,   909,  1429,
-   909,  1434,   909,  1436,  1275,  6695,   909,-32768,  1476,  1278,
-  1279,-32768,-32768,-32768,-32768,  6722,  6749,  6776,  6803,  6830,
-  6857,  4341,  4369,  4397,  7501,-32768,  7501,-32768,  7501,-32768,
-   909,   909,  2732,  7478,   421,   604,   909,   909,   909,   909,
-   909,   909,-32768,-32768,-32768,  6884,  2755,-32768,  1309,  1281,
-  1284,  6911,  6938,  6965,  6992,  7019,  7046,  1285,  1286,  1289,
-   909,  1445,-32768,   604,   421,   909,   909,   909,   909,   909,
-   909,   909,   909,   909,  2778,-32768,  1290,  1292,  7073,  7100,
-  7127,  7154,  7181,  7208,   374,  7501,   375,  7501,   381,  7501,
-  1447,   604,  1448,   909,   909,   909,   909,   909,   909,   909,
-  1451,   909,  1456,   909,  1460,-32768,  1299,-32768,  7235,  7262,
-  7289,  4425,  4453,  4481,  7501,-32768,  7501,-32768,  7501,-32768,
-   604,   909,   909,   909,-32768,-32768,-32768,  1300,  7316,  7343,
-  7370,  1301,  1303,  1305,   604,   909,   909,   909,   909,   909,
-   909,  1302,  7397,  7424,  7451,   389,  7501,   390,  7501,   391,
-  7501,   421,   909,   909,   909,   909,  1463,   909,  1471,   909,
-  1472,  1313,  4509,  4537,  4565,  7501,-32768,  7501,-32768,  7501,
--32768,  1475,-32768,-32768,-32768,-32768,  1314,  1342,  1343,   909,
-   909,   909,   396,  7501,   398,  7501,   415,  7501,   909,  1477,
-   909,  1508,   909,  1509,  7501,-32768,  7501,-32768,  7501,-32768,
-  1525,  1526,-32768
+-32768,-32768,-32768,  1516,  1229,-32768,  2629,  1383,  1389,    -1,
+  1231,-32768,  5916,  5943,  5970,  5997,  6024,  6051,  6078,  6105,
+  6132,  4207,  4235,  4263,  1391,  1393,   916,   916,-32768,  1489,
+   291,   291,   291,   291,  1394,  1395,  1396,   291,  1397,  1398,
+  1405,  1407,   264,  2277,  1409,-32768,-32768,-32768,-32768,   -36,
+   916,  1516,  1516,  1516,  1516,  1516,  1516,  1516,  1516,  1516,
+-32768,-32768,-32768,-32768,-32768,  1249,  1245,  1489,  1252,  1253,
+  1258,  1260,-32768,-32768,-32768,  1263,-32768,-32768,-32768,  1265,
+  1516,-32768,  1267,   -37,  1268,  6159,  6186,  6213,  6240,  6267,
+  6294,  6321,  6348,  6375,  1271,  1272,  1273,   916,  1343,  2659,
+   291,   291,  1411,  1412,   291,  1431,  2682,  1432,  1437,   916,
+  1516,  1516,  1516,  1516,  1516,  1516,  1516,  1516,  1516,  1516,
+  1516,  1516,  1274,  1276,  1516,  1279,  1280,-32768,-32768,  1285,
+  1286,-32768,  1278,-32768,  1289,  6402,  6429,  6456,  6483,  6510,
+  6537,  6564,  6591,  6618,   175,  7451,   176,  7451,   186,  7451,
+  1377,  1516,  1489,   291,   916,  1450,  1455,  1459,  1461,  1516,
+  1516,  1516,  1516,  1516,  1516,  1516,  1516,  1516,  1516,  1462,
+  1516,  1484,  1516,  1485,  1297,  6645,  1489,  1327,  1329,-32768,
+-32768,-32768,-32768,  6672,  6699,  6726,  6753,  6780,  6807,  4291,
+  4319,  4347,  7451,-32768,  7451,-32768,  7451,-32768,  1516,  1516,
+  7428,   291,   916,  1516,  1516,  1516,  1516,  1516,  1516,-32768,
+-32768,-32768,  6834,  2705,  1382,  1354,  1384,  6861,  6888,  6915,
+  6942,  6969,  6996,  1379,  1380,  1404,  1516,  1491,-32768,   916,
+   291,  1516,  1516,  1516,  1516,  1516,  1516,  1516,  1516,  1516,
+  2728,-32768,  1414,  1415,  7023,  7050,  7077,  7104,  7131,  7158,
+   201,  7451,   205,  7451,   210,  7451,  1517,   916,  1518,  1516,
+  1516,  1516,  1516,  1516,  1516,  1516,  1544,  1516,  1573,  1516,
+  1576,-32768,  1426,-32768,  7185,  7212,  7239,  4375,  4403,  4431,
+  7451,-32768,  7451,-32768,  7451,-32768,   916,  1516,  1516,  1516,
+-32768,-32768,-32768,  1427,  7266,  7293,  7320,  1428,  1429,  1430,
+   916,  1516,  1516,  1516,  1516,  1516,  1516,  1434,  7347,  7374,
+  7401,   229,  7451,   246,  7451,   251,  7451,   291,  1516,  1516,
+  1516,  1516,  1589,  1516,  1596,  1516,  1599,  1438,  4459,  4487,
+  4515,  7451,-32768,  7451,-32768,  7451,-32768,  1601,-32768,-32768,
+-32768,-32768,  1439,  1440,  1441,  1516,  1516,  1516,   256,  7451,
+   260,  7451,   266,  7451,  1516,  1605,  1516,  1606,  1516,  1607,
+  7451,-32768,  7451,-32768,  7451,-32768,  1495,  1614,-32768
 };
 
 static const short yypgoto[] = {-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,  1521,-32768,
-   961,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+  1033,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,  1524,  1534,
-  -291,   299,  1535,-32768,-32768,-32768,-32768,-32768,   400,  -961,
--32768,-32768,-32768,  1237,-32768,-32768,  -784,    -7,-32768,  1013,
-   -10,-32768,  -111,-32768,  -853,   766,   428,-32768,-32768
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,  1612,  1613,
+  -295,   274,  1615,-32768,-32768,-32768,-32768,-32768,   464,  -982,
+-32768,-32768,  -804,    -7,-32768,  1062,   -10,-32768,  -109,-32768,
+  -907,   794,   598,-32768,-32768
 };
 
 
-#define	YYLAST		7665
-
-
-static const short yytable[] = {   102,
-   251,  1034,    75,   898,   899,   439,   875,   748,    77,    78,
-    79,    80,    81,    82,    83,    84,    85,    86,    87,    88,
-    89,    90,    91,    92,    93,    94,    95,    96,    97,  1130,
-   154,   156,   122,     7,   131,   311,   128,   749,   979,   927,
-   961,   950,   698,   104,   457,   962,   457,   217,   936,   306,
-  1056,   294,   295,  -247,   961,   943,   319,   429,  1053,   962,
-   111,   294,   295,   776,   294,   295,   777,   989,   294,   295,
-   458,   105,   458,   750,   991,   296,   778,   294,   295,   779,
-   780,   106,   170,   781,   294,   295,   107,   294,   295,   428,
-   199,   200,   201,   202,   218,   108,   149,   217,   297,   699,
-   993,   568,  1232,  -246,  1234,   112,  1236,   253,   254,   255,
-   256,   257,   109,   320,   430,  1054,   262,   263,   264,   265,
-   700,   267,   268,   312,   270,   271,   272,   110,   276,   294,
-   295,   294,   295,   140,   141,   144,   142,   288,   145,   146,
-   291,   147,   819,   440,   292,   293,   298,   129,   132,  1061,
-   130,   124,   113,  1033,   125,   900,   901,   294,   295,   115,
-   114,   310,   100,   313,   803,   315,   902,  1213,   137,   153,
-   876,   321,   322,   323,   324,   325,   326,   327,   328,   329,
-   330,   331,   332,   333,   334,   335,   336,   337,   338,   339,
-   340,   294,   295,  1131,   123,   344,   345,   346,   347,   348,
-   349,   350,   351,   352,   353,   354,   355,   356,   357,   358,
-   359,   459,  1034,   463,   171,   307,  1057,   294,   295,  1062,
-    75,    76,   126,  1066,   294,   295,    77,    78,    79,    80,
-    81,    82,    83,    84,    85,    86,    87,    88,    89,    90,
-    91,    92,    93,    94,    95,    96,    97,  1150,   150,   151,
-   294,   295,   294,   295,   294,   295,   294,   295,   405,   152,
-   158,   408,   153,   159,   160,   412,   138,   294,   295,   417,
-   418,   419,   127,   421,   422,   423,   424,   425,   426,   427,
-   828,   446,   447,   433,   434,   961,    -1,     8,   135,     9,
-   962,   441,   442,   443,   133,   449,   134,   294,   295,   701,
-   116,   117,   118,   119,   455,   804,   805,   806,   807,   669,
-   466,   136,   294,   295,   294,   295,   139,   120,   121,   214,
-   215,   216,   808,   809,   958,   217,   959,   467,   468,  1161,
-  1162,  1163,  1164,   490,   491,   148,  1168,    25,    26,    27,
-    28,    29,    30,    31,    32,   143,    33,   167,    35,    36,
-   168,    38,    39,   294,   295,   542,   524,   525,   543,   203,
-   204,   205,   206,   207,   980,   960,   163,   982,    51,   208,
-   209,   210,   211,   212,   213,   214,   215,   216,   762,   763,
-   100,   217,    52,    53,   101,   999,  1000,   273,  1151,  1152,
-  1153,  1154,   529,    10,    11,    12,    13,    14,    15,    16,
-    17,   980,   981,   162,  1158,  1155,  1156,   544,   178,   157,
-   165,   161,   549,    -7,    -7,   799,    -7,   557,   800,   169,
-   164,  1245,  1246,   559,   560,  1249,    40,    41,    42,    43,
-   166,    45,   563,   203,   204,   205,   206,   207,    60,   567,
-   172,   173,   174,   208,   209,   210,   211,   341,   342,   214,
-   215,   216,   175,   176,   601,   217,   206,   207,   177,   302,
-   702,   603,   305,   208,   209,   210,   211,   341,   342,   214,
-   215,   216,   604,  1289,   178,   217,  1290,   444,   252,   605,
-   606,   607,   179,   869,   608,    75,   898,  1191,   180,  1300,
-   181,    77,    78,    79,    80,    81,    82,    83,    84,    85,
-    86,    87,    88,    89,    90,    91,    92,    93,    94,    95,
-    96,    97,   733,   734,   735,   736,   737,   182,   183,   644,
-    -7,    -7,    -7,    -7,    -7,    -7,    -7,    -7,  1291,  1293,
-   746,  1292,  1294,   652,   653,   341,   342,   214,   215,   216,
-  1340,  1390,  1392,   217,  1391,  1393,     1,     2,  1394,     3,
-   670,  1395,   184,   674,   675,   676,  1446,  1448,  1450,  1447,
-  1449,  1451,   275,  1479,   258,  1481,  1480,   280,  1482,   185,
-  1368,   208,   209,   210,   211,   341,   342,   214,   215,   216,
-   259,   260,  1483,   217,   186,  1484,   692,   693,   187,   695,
-   304,   188,   261,   189,   308,   309,   190,   191,   192,   193,
-   194,   195,   713,   711,   712,   196,    75,    76,   197,   198,
-   249,   722,    77,    78,    79,    80,    81,    82,    83,    84,
-    85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
-    95,    96,    97,   266,   269,   277,   278,   279,   900,   901,
-   289,   281,   282,   283,   284,   100,   285,   286,   758,   902,
-   287,   299,   153,   303,   300,   301,   317,  1452,   318,   217,
-   360,   771,  1025,   773,   774,   361,   362,   363,   364,   365,
-   366,   783,   784,   785,   786,   787,   788,   789,   790,   791,
-   792,   793,   794,   367,   368,   369,   370,   371,   372,   373,
-   374,   375,   376,   812,   377,   813,    75,   898,   378,   379,
-   380,   815,    77,    78,    79,    80,    81,    82,    83,    84,
-    85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
-    95,    96,    97,   381,   382,   390,   383,   384,   385,   386,
-   387,   388,   389,   415,   949,   392,   420,   393,   394,   847,
-   400,   451,   452,   454,   469,   494,   495,   496,   517,   850,
-   497,   462,   498,   499,   855,   856,   500,   501,   502,    98,
-    99,   503,   504,   505,   506,   870,   100,   872,   507,   874,
-   101,   508,   509,   273,   510,   511,   512,   513,   514,   515,
-   516,   518,   519,   520,   521,   522,   523,   890,   891,   526,
-   530,   527,   904,   906,   908,   903,   905,   907,   909,   910,
-   528,   532,   913,   531,   558,   533,   535,   918,   536,   920,
-   538,   561,   539,   540,   545,   562,   594,   596,   595,   930,
-   597,   599,   123,   600,   609,   610,   937,   938,   939,   611,
-   612,   640,   613,   944,   614,   615,   616,   948,   617,   618,
-   619,   660,   620,   951,   621,   622,   623,   624,   625,   900,
-   901,   626,   627,   647,   628,   629,   100,   630,   631,   956,
-   902,   641,   632,   153,   633,   634,   635,   636,   637,   638,
-   965,   966,   967,   968,   969,   970,   971,   972,   973,   974,
-   975,   976,   661,   639,   642,   203,   204,   205,   206,   207,
-   291,   649,   199,   200,   987,   208,   209,   210,   211,   341,
-   342,   214,   215,   216,   657,   658,   656,   217,   659,   662,
-  1001,    75,    76,   663,   664,   709,   665,    77,    78,    79,
+#define	YYLAST		7614
+
+
+static const short yytable[] = {   100,
+   248,   446,  1058,   903,  1159,   662,   130,   398,   664,   169,
+   983,   317,  1001,   311,   436,   984,   127,   257,   772,     7,
+   983,   983,   780,   306,   775,   984,   984,   294,   295,   121,
+   153,   155,   294,   295,   294,   295,   970,   294,   295,   807,
+   175,   938,   808,   102,   809,   103,   811,   810,   214,   812,
+   947,   296,   294,   295,  -239,   294,   295,   954,   781,   294,
+   295,   294,   295,   104,   666,   105,   297,   106,   318,   584,
+   214,   437,   841,   435,   258,   773,  -238,   453,   454,   107,
+   294,   295,   294,   295,   123,   148,   108,   124,   196,   197,
+   198,   199,   215,   850,   447,   259,   466,   467,   113,   779,
+   312,   109,   962,   972,  1079,   250,   251,   252,   253,   254,
+   139,   140,   110,   141,  1103,   262,   263,   264,   265,   131,
+   267,   268,  1057,   270,   271,   272,   128,   276,   112,   129,
+   166,  1105,  1219,   167,   294,   295,   288,  1107,   111,   291,
+   170,   294,   295,   292,   293,   298,   697,   399,   400,   401,
+   402,   523,   524,   980,   294,   295,   830,   294,   295,   831,
+   310,   125,   313,   314,   403,   404,   904,  1160,   319,   320,
+   321,   322,   323,   324,   325,   326,   327,   328,   329,   330,
+   331,   332,   333,   334,   335,   336,   337,   338,   307,   776,
+   122,   126,   342,   343,   344,   345,   346,   347,   348,   349,
+   350,   351,   352,   353,   354,   355,   356,   357,  1080,    73,
+    74,  1058,  1084,   294,   295,    75,    76,    77,    78,    79,
+    80,    81,    82,    83,    84,    85,    86,    87,    88,    89,
+    90,    91,    92,    93,    94,    95,   149,   150,   114,   115,
+   116,   117,   963,   964,   965,   966,   134,   151,   294,   295,
+   152,   558,   294,   295,   559,   118,   119,   136,   412,   967,
+   968,   415,   120,   294,   295,   419,   211,   212,   213,   424,
+   425,   426,   214,   428,   429,   430,   431,   432,   433,   434,
+   294,   295,  1002,   440,   441,  1004,   294,   295,   294,   295,
+   132,   448,   449,   450,   133,   456,   135,   294,   295,   143,
+   981,   137,   144,   145,   462,   146,   793,   794,   465,   982,
+    40,    41,    42,    43,   138,    45,   393,   585,   586,   587,
+   588,   589,   590,   591,   592,   593,   594,   595,   596,   142,
+   157,   489,   490,   158,   159,   147,  1179,  1180,  1181,  1182,
+   156,  1279,  1281,  1186,  1280,  1282,   160,   200,   201,   202,
+   203,   204,  1283,   726,   161,  1284,   162,   205,   206,   207,
+   208,   209,   210,   211,   212,   213,   163,  1376,    98,   214,
+  1377,  1378,    99,   164,  1379,   273,  1380,  1002,  1003,  1381,
+   688,   758,   759,   760,   761,   762,   165,   534,   536,   538,
+   533,   535,   537,   539,   540,  1432,   168,   543,  1433,   545,
+   171,   339,   340,   211,   212,   213,  1236,  1237,   464,   214,
+  1240,   172,  1434,   173,   560,  1435,   249,  1436,   174,   565,
+  1437,   689,  1465,   597,   573,  1466,  1467,  1008,  1009,  1468,
+   575,   576,  1469,   302,   255,  1470,   305,   176,   175,   579,
+   177,   178,   179,   180,   181,   256,   583,   182,   183,   184,
+   185,   200,   201,   202,   203,   204,   616,   186,   260,  1288,
+   618,   205,   206,   207,   208,   339,   340,   211,   212,   213,
+   187,   619,   188,   214,   189,   190,   261,   191,   620,   621,
+   622,   192,   193,   623,   194,   195,   200,   201,   202,   203,
+   204,   246,   266,   269,   278,   279,   205,   206,   207,   208,
+   339,   340,   211,   212,   213,   277,   281,  1326,   214,   282,
+   897,   299,   283,   727,   284,   200,   201,   202,   203,   204,
+   291,   394,   196,   197,   660,   205,   206,   207,   208,   339,
+   340,   211,   212,   213,   285,   672,  1354,   214,   286,   287,
+   289,   200,   201,   202,   203,   204,   300,   771,   301,   680,
+   681,   205,   206,   207,   208,   339,   340,   211,   212,   213,
+   303,   315,   316,   214,   214,   358,   698,   388,   359,   702,
+   703,   704,   360,   361,   406,    73,   528,   529,   362,   363,
+   364,    75,    76,    77,    78,    79,    80,    81,    82,    83,
+    84,    85,    86,    87,    88,    89,    90,    91,    92,    93,
+    94,    95,   720,   721,   365,   723,   366,   367,   205,   206,
+   207,   208,   339,   340,   211,   212,   213,   738,   736,   737,
+   214,   368,   369,  1438,   370,   371,   747,   372,   373,    73,
+   528,  1034,   374,   375,   376,    75,    76,    77,    78,    79,
     80,    81,    82,    83,    84,    85,    86,    87,    88,    89,
-    90,    91,    92,    93,    94,    95,    96,    97,   569,   570,
-   571,   572,   573,   574,   575,   576,   577,   578,   579,   580,
-  1028,  1029,  1030,   666,   667,   668,   679,   680,   681,   645,
-   646,   691,   648,   682,   395,   710,   650,   651,   683,  1047,
-  1048,   696,   703,   714,   715,   684,  1052,   203,   204,   205,
-   206,   207,   685,   686,   687,   688,   689,   208,   209,   210,
-   211,   341,   342,   214,   215,   216,   690,   716,  1064,   217,
-   717,   718,   721,   723,   724,   727,  1072,   728,   729,   730,
-   731,  1077,   740,   741,  1080,   742,   743,   396,  1084,   744,
-   745,   747,   775,   694,   751,   753,   697,  1090,  1091,  1092,
-  1093,  1094,  1095,  1096,  1097,  1098,  1099,  1100,  1101,   755,
-   756,   797,   802,   810,   811,   581,   719,   720,   814,  1111,
-   816,  1113,   725,   726,   820,   848,   821,   822,   824,   732,
-   823,   739,   825,   826,    98,    99,   849,   827,   829,   852,
-   853,   100,   830,   831,   752,   101,   754,   854,   832,   833,
-   834,   835,   836,   837,   759,   760,   761,   838,   839,   764,
-   765,   766,   767,   768,   769,   770,   840,   841,   842,  1149,
-   203,   204,   205,   206,   207,  1160,   843,   857,   844,   845,
-   208,   209,   210,   211,   341,   342,   214,   215,   216,   846,
-   858,   859,   217,   860,   861,  1176,  1177,  1178,  1179,  1180,
-  1181,  1182,  1183,  1184,   862,   863,   871,   873,   865,  1193,
-  1195,  1197,  1192,  1194,  1196,  1198,  1199,  1200,  1201,   877,
-  1203,  1204,  1205,   203,   204,   205,   206,   207,   397,   896,
-   892,   911,   912,   208,   209,   210,   211,   341,   342,   214,
-   215,   216,    75,  1110,   914,   217,   917,   919,    77,    78,
-    79,    80,    81,    82,    83,    84,    85,    86,    87,    88,
-    89,    90,    91,    92,    93,    94,    95,    96,    97,   922,
-   923,   924,   925,   929,   926,   928,   932,  1254,  1255,  1256,
-  1257,  1258,  1259,  1260,  1261,  1262,  1264,  1266,  1268,   931,
-   933,   934,   935,   941,   942,   945,   946,   954,   983,   897,
-   947,   955,   957,   997,   985,  1272,  1273,   984,   986,   998,
-   916,  1002,  1004,  1005,  1006,   921,  1007,  1008,  1010,  1016,
-   569,   570,   571,   572,   573,   574,   575,   576,   577,   578,
-   579,   580,  1296,  1011,   940,  1299,  1012,  1017,  1018,  1021,
-  1020,  1023,  1306,  1307,  1308,  1309,  1310,  1311,  1312,  1313,
-  1314,  1315,  1031,  1317,  1055,  1319,  1032,  1049,  1060,  1323,
-  1063,  1324,  1065,  1068,   203,   204,   205,   206,   207,  1067,
-  1069,  1070,  1071,  1073,   208,   209,   210,   211,   341,   342,
-   214,   215,   216,  1336,  1337,  1075,   217,  1076,  1078,  1342,
-  1343,  1344,  1345,  1346,  1347,    98,    99,  1079,  1081,  1082,
-  1105,  1083,   100,  1089,  1104,  1108,   101,  1118,  1107,  1109,
-  1112,  1114,  1128,  1365,  1115,  1116,  1129,  1119,  1369,  1370,
-  1371,  1372,  1373,  1374,  1376,  1378,  1380,   782,  1121,  1145,
-  1123,  1146,  1125,  1157,  1126,  1165,  1166,  1167,  1169,   398,
-  1132,  1170,  1171,  1172,  1173,  1188,  1399,  1400,  1401,  1402,
-  1403,  1404,  1405,  1189,  1407,  1228,  1409,  1208,  1202,  1209,
-  1230,  1241,  1247,  1206,  1248,  1250,  1207,   399,  1210,  1211,
-  1251,  1229,  1212,  1214,  1419,  1420,  1421,  1050,  1224,  1225,
-  1051,  1226,  1252,  1269,  1270,  1271,  1274,  1275,  1433,  1434,
-  1435,  1437,  1439,  1441,   655,  1276,  1277,  1295,  1302,  1278,
-  1279,  1303,  1304,  1305,  1316,  1453,  1454,  1455,  1456,  1318,
-  1458,  1320,  1460,  1074,  1321,  1325,  1326,   677,  1354,  1353,
-  1366,  1355,  1396,  1398,  1362,  1363,  1406,  1382,  1364,  1088,
-  1383,  1408,  1474,  1476,  1478,  1410,  1411,  1425,  1457,  1442,
-  1429,  1485,  1430,  1487,  1431,  1489,  1459,  1461,    75,    76,
-  1466,  1462,  1486,  1470,    77,    78,    79,    80,    81,    82,
-    83,    84,    85,    86,    87,    88,    89,    90,    91,    92,
-    93,    94,    95,    96,    97,   203,   204,   205,   206,   207,
-   952,  1471,  1472,  1488,  1490,   208,   209,   210,   211,   341,
-   342,   214,   215,   216,  1492,  1493,    62,   217,   678,    65,
-  1174,  1147,  1148,   203,   204,   205,   206,   207,   953,    66,
-    67,     0,     0,   208,   209,   210,   211,   341,   342,   214,
-   215,   216,   464,     0,   654,   217,     0,     0,     0,  1175,
-   203,   204,   205,   206,   207,   895,     0,   988,     0,     0,
-   208,   209,   210,   211,   341,   342,   214,   215,   216,     0,
-     0,     0,   217,   203,   204,   205,   206,   207,     0,     0,
-   990,     0,     0,   208,   209,   210,   211,   341,   342,   214,
-   215,   216,     0,     0,     0,   217,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,  1227,     0,   203,   204,   205,
-   206,   207,   992,     0,     0,     0,     0,   208,   209,   210,
-   211,   212,   213,   214,   215,   216,     0,     0,   100,   217,
-     0,  1253,   101,     0,     0,     0,   203,   204,   205,   206,
-   207,     0,   994,     0,     0,     0,   208,   209,   210,   211,
-   341,   342,   214,   215,   216,     0,     0,     0,   217,     0,
-     0,     0,     0,     0,   203,   204,   205,   206,   207,   995,
-     0,     0,     0,     0,   208,   209,   210,   211,   341,   342,
-   214,   215,   216,     0,     0,     0,   217,     0,     0,     0,
-     0,     0,  1301,   203,   204,   205,   206,   207,  1106,     0,
-     0,     0,     0,   208,   209,   210,   211,   341,   342,   214,
-   215,   216,     0,     0,     0,   217,   203,   204,   205,   206,
-   207,  1231,     0,     0,     0,     0,   208,   209,   210,   211,
-   341,   342,   214,   215,   216,     0,     0,     0,   217,     0,
-     0,     0,     0,  1341,  1233,     0,     0,     0,   203,   204,
-   205,   206,   207,     0,     0,     0,     0,     0,   208,   209,
-   210,   211,   341,   342,   214,   215,   216,  1235,     0,     0,
-   217,  1367,     0,     0,     0,     0,     0,     0,   203,   204,
-   205,   206,   207,     0,     0,     0,     0,     0,   208,   209,
-   210,   211,   341,   342,   214,   215,   216,  1237,     0,  1397,
-   217,     0,     0,     0,     0,   203,   204,   205,   206,   207,
-     0,     0,     0,     0,     0,   208,   209,   210,   211,   341,
-   342,   214,   215,   216,  1238,     0,     0,   217,  1418,     0,
-     0,     0,     0,     0,   203,   204,   205,   206,   207,     0,
-     0,     0,  1432,     0,   208,   209,   210,   211,   341,   342,
-   214,   215,   216,  1239,     0,     0,   217,   203,   204,   205,
-   206,   207,     0,     0,     0,     0,     0,   208,   209,   210,
-   211,   341,   342,   214,   215,   216,  1240,     0,     0,   217,
-   203,   204,   205,   206,   207,     0,     0,     0,     0,     0,
-   208,   209,   210,   211,   341,   342,   214,   215,   216,     0,
-     0,   492,   217,   203,   204,   205,   206,   207,     0,     0,
-     0,     0,     0,   208,   209,   210,   211,   341,   342,   214,
-   215,   216,     0,     0,   541,   217,     0,     0,     0,     0,
-     0,     0,     0,   203,   204,   205,   206,   207,     0,     0,
-     0,     0,     0,   208,   209,   210,   211,   341,   342,   214,
-   215,   216,   757,     0,     0,   217,     0,     0,     0,     0,
-   203,   204,   205,   206,   207,     0,     0,     0,     0,     0,
-   208,   209,   210,   211,   341,   342,   214,   215,   216,     0,
-     0,     0,   217,     0,     0,     0,     0,     0,     0,   203,
-   204,   205,   206,   207,     0,     0,     0,     0,     0,   208,
-   209,   210,   211,   341,   342,   214,   215,   216,     0,     0,
-     0,   217,   203,   204,   205,   206,   207,     0,     0,     0,
-     0,     0,   208,   209,   210,   211,   341,   342,   214,   215,
-   216,     0,     0,     0,   217,   203,   204,   205,   206,   207,
-     0,     0,     0,     0,     0,   208,   209,   210,   211,   341,
-   342,   214,   215,   216,     0,     0,     0,   217,   203,   204,
-   205,   206,   207,     0,     0,     0,     0,     0,   208,   209,
-   210,   211,   341,   342,   214,   215,   216,     0,     0,     0,
-   217,     0,     0,     0,     0,     0,   203,   204,   205,   206,
-   207,     0,     0,     0,     0,     0,   208,   209,   210,   211,
-   341,   342,   214,   215,   216,     0,     0,     0,   217,    25,
-    26,    27,    28,    29,    30,    31,    32,     0,    33,     0,
-    35,    36,     0,    38,    39,     0,     0,     0,    -3,    22,
-     0,     0,    23,     0,     0,   203,   204,   205,   206,   207,
-    51,     0,     0,     0,     0,   208,   209,   210,   211,   341,
-   342,   214,   215,   216,    52,    53,     0,   217,    24,    25,
-    26,    27,    28,    29,    30,    31,    32,   704,    33,    34,
-    35,    36,    37,    38,    39,     0,     0,     0,    40,    41,
-    42,    43,    44,    45,     0,    46,    47,    48,    49,    50,
-    51,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,   219,     0,     0,    52,    53,     0,     0,     0,     0,
-    60,    54,    55,    56,    57,    58,    59,    25,    26,    27,
-    28,    29,    30,    31,    32,     0,    33,     0,    35,    36,
-     0,    38,    39,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,    51,   448,
-     0,     0,     0,     0,     0,     0,   220,   221,   222,     0,
-    60,     0,    52,    53,   223,   224,   225,   226,   227,   228,
-   229,   230,   231,   232,     0,     0,     0,     0,     0,     0,
-     0,     0,   233,   234,   235,   236,   237,   238,   239,   240,
-   241,   242,     0,   243,   244,   245,   246,   247,   248,   203,
-   204,   205,   206,   207,     0,     0,     0,     0,     0,   208,
-   209,   210,   211,   341,   342,   214,   215,   216,    60,     0,
-     0,   217,   203,   204,   205,   206,   207,     0,     0,     0,
-     0,   772,   208,   209,   210,   211,   341,   342,   214,   215,
-   216,     0,     0,     0,   217,   203,   204,   205,   206,   207,
-     0,     0,     0,     0,   996,   208,   209,   210,   211,   341,
-   342,   214,   215,   216,     0,     0,     0,   217,   203,   204,
-   205,   206,   207,     0,     0,     0,     0,  1190,   208,   209,
-   210,   211,   341,   342,   214,   215,   216,     0,     0,     0,
-   217,     0,     0,     0,   867,     0,     0,   868,   203,   204,
-   205,   206,   207,     0,     0,     0,     0,     0,   208,   209,
-   210,   211,   341,   342,   214,   215,   216,     0,     0,     0,
-   217,     0,     0,     0,  1026,     0,     0,  1027,   203,   204,
-   205,   206,   207,     0,     0,     0,     0,     0,   208,   209,
-   210,   211,   341,   342,   214,   215,   216,     0,     0,     0,
-   217,     0,     0,     0,  1297,     0,     0,  1298,   203,   204,
-   205,   206,   207,     0,     0,     0,     0,     0,   208,   209,
-   210,   211,   341,   342,   214,   215,   216,     0,     0,     0,
-   217,   203,   204,   205,   206,   207,     0,   402,     0,     0,
-     0,   208,   209,   210,   211,   341,   342,   214,   215,   216,
-     0,     0,     0,   217,   203,   204,   205,   206,   207,     0,
-   407,     0,     0,     0,   208,   209,   210,   211,   341,   342,
-   214,   215,   216,     0,     0,     0,   217,   203,   204,   205,
-   206,   207,     0,   409,     0,     0,     0,   208,   209,   210,
-   211,   341,   342,   214,   215,   216,     0,     0,     0,   217,
-   203,   204,   205,   206,   207,     0,   546,     0,     0,     0,
-   208,   209,   210,   211,   341,   342,   214,   215,   216,     0,
-     0,     0,   217,   203,   204,   205,   206,   207,     0,   550,
-     0,     0,     0,   208,   209,   210,   211,   341,   342,   214,
-   215,   216,     0,     0,     0,   217,   203,   204,   205,   206,
-   207,     0,   551,     0,     0,     0,   208,   209,   210,   211,
-   341,   342,   214,   215,   216,     0,     0,     0,   217,   203,
-   204,   205,   206,   207,     0,   673,     0,     0,     0,   208,
-   209,   210,   211,   341,   342,   214,   215,   216,     0,     0,
-     0,   217,  1059,     0,     0,     0,     0,     0,   864,   203,
-   204,   205,   206,   207,     0,     0,     0,     0,     0,   208,
-   209,   210,   211,   341,   342,   214,   215,   216,     0,     0,
-     0,   217,   203,   204,   205,   206,   207,     0,     0,     0,
-     0,     0,   208,   209,   210,   211,   341,   342,   214,   215,
-   216,     0,     0,     0,   217,   203,   204,   205,   206,   207,
-     0,  1085,     0,     0,     0,   208,   209,   210,   211,   341,
-   342,   214,   215,   216,     0,     0,     0,   217,   203,   204,
-   205,   206,   207,     0,  1086,     0,     0,     0,   208,   209,
-   210,   211,   341,   342,   214,   215,   216,     0,     0,     0,
-   217,   203,   204,   205,   206,   207,     0,  1087,     0,     0,
-     0,   208,   209,   210,   211,   341,   342,   214,   215,   216,
-     0,     0,     0,   217,   203,   204,   205,   206,   207,     0,
-  1102,     0,     0,     0,   208,   209,   210,   211,   341,   342,
-   214,   215,   216,     0,     0,     0,   217,   203,   204,   205,
-   206,   207,     0,  1103,     0,     0,     0,   208,   209,   210,
-   211,   341,   342,   214,   215,   216,     0,     0,     0,   217,
-   203,   204,   205,   206,   207,     0,  1127,     0,     0,     0,
-   208,   209,   210,   211,   341,   342,   214,   215,   216,     0,
-     0,     0,   217,  1244,     0,     0,     0,     0,     0,  1242,
-   203,   204,   205,   206,   207,     0,     0,     0,     0,     0,
-   208,   209,   210,   211,   341,   342,   214,   215,   216,     0,
-     0,     0,   217,   203,   204,   205,   206,   207,     0,     0,
-     0,     0,     0,   208,   209,   210,   211,   341,   342,   214,
-   215,   216,     0,     0,     0,   217,   203,   204,   205,   206,
-   207,     0,  1338,     0,     0,     0,   208,   209,   210,   211,
-   341,   342,   214,   215,   216,     0,     0,     0,   217,   203,
-   204,   205,   206,   207,     0,  1352,     0,     0,     0,   208,
-   209,   210,   211,   341,   342,   214,   215,   216,     0,     0,
-     0,   217,   203,   204,   205,   206,   207,     0,  1381,     0,
-     0,     0,   208,   209,   210,   211,   341,   342,   214,   215,
-   216,     0,     0,     0,   217,     0,     0,     0,   431,   343,
-   203,   204,   205,   206,   207,     0,     0,     0,     0,     0,
-   208,   209,   210,   211,   341,   342,   214,   215,   216,     0,
-     0,     0,   217,     0,     0,     0,     0,   343,   203,   204,
-   205,   206,   207,     0,     0,     0,     0,     0,   208,   209,
-   210,   211,   341,   342,   214,   215,   216,     0,     0,     0,
-   217,     0,     0,     0,     0,   401,   203,   204,   205,   206,
-   207,     0,     0,     0,     0,     0,   208,   209,   210,   211,
-   341,   342,   214,   215,   216,     0,     0,     0,   217,     0,
-     0,     0,     0,   403,   203,   204,   205,   206,   207,     0,
-     0,     0,     0,     0,   208,   209,   210,   211,   341,   342,
-   214,   215,   216,     0,     0,     0,   217,     0,     0,     0,
-     0,   404,   203,   204,   205,   206,   207,     0,     0,     0,
-     0,     0,   208,   209,   210,   211,   341,   342,   214,   215,
-   216,     0,     0,     0,   217,     0,     0,     0,     0,   406,
-   203,   204,   205,   206,   207,     0,     0,     0,     0,     0,
-   208,   209,   210,   211,   341,   342,   214,   215,   216,     0,
-     0,     0,   217,     0,     0,     0,     0,   410,   203,   204,
-   205,   206,   207,     0,     0,     0,     0,     0,   208,   209,
-   210,   211,   341,   342,   214,   215,   216,     0,     0,     0,
-   217,     0,     0,     0,     0,   411,   203,   204,   205,   206,
-   207,     0,     0,     0,     0,     0,   208,   209,   210,   211,
-   341,   342,   214,   215,   216,     0,     0,     0,   217,     0,
-     0,     0,     0,   416,   203,   204,   205,   206,   207,     0,
-     0,     0,     0,     0,   208,   209,   210,   211,   341,   342,
-   214,   215,   216,     0,     0,     0,   217,     0,     0,     0,
-     0,   453,   203,   204,   205,   206,   207,     0,     0,     0,
-     0,     0,   208,   209,   210,   211,   341,   342,   214,   215,
-   216,     0,     0,     0,   217,     0,     0,     0,     0,   456,
-   203,   204,   205,   206,   207,     0,     0,     0,     0,     0,
-   208,   209,   210,   211,   341,   342,   214,   215,   216,     0,
-     0,     0,   217,     0,     0,     0,     0,   470,   203,   204,
-   205,   206,   207,     0,     0,     0,     0,     0,   208,   209,
-   210,   211,   341,   342,   214,   215,   216,     0,     0,     0,
-   217,     0,     0,     0,     0,   471,   203,   204,   205,   206,
-   207,     0,     0,     0,     0,     0,   208,   209,   210,   211,
-   341,   342,   214,   215,   216,     0,     0,     0,   217,     0,
-     0,     0,     0,   472,   203,   204,   205,   206,   207,     0,
-     0,     0,     0,     0,   208,   209,   210,   211,   341,   342,
-   214,   215,   216,     0,     0,     0,   217,     0,     0,     0,
-     0,   473,   203,   204,   205,   206,   207,     0,     0,     0,
-     0,     0,   208,   209,   210,   211,   341,   342,   214,   215,
-   216,     0,     0,     0,   217,     0,     0,     0,     0,   474,
-   203,   204,   205,   206,   207,     0,     0,     0,     0,     0,
-   208,   209,   210,   211,   341,   342,   214,   215,   216,     0,
-     0,     0,   217,     0,     0,     0,     0,   475,   203,   204,
-   205,   206,   207,     0,     0,     0,     0,     0,   208,   209,
-   210,   211,   341,   342,   214,   215,   216,     0,     0,     0,
-   217,     0,     0,     0,     0,   476,   203,   204,   205,   206,
-   207,     0,     0,     0,     0,     0,   208,   209,   210,   211,
-   341,   342,   214,   215,   216,     0,     0,     0,   217,     0,
-     0,     0,     0,   477,   203,   204,   205,   206,   207,     0,
-     0,     0,     0,     0,   208,   209,   210,   211,   341,   342,
-   214,   215,   216,     0,     0,     0,   217,     0,     0,     0,
-     0,   478,   203,   204,   205,   206,   207,     0,     0,     0,
-     0,     0,   208,   209,   210,   211,   341,   342,   214,   215,
-   216,     0,     0,     0,   217,     0,     0,     0,     0,   479,
-   203,   204,   205,   206,   207,     0,     0,     0,     0,     0,
-   208,   209,   210,   211,   341,   342,   214,   215,   216,     0,
-     0,     0,   217,     0,     0,     0,     0,   481,   203,   204,
-   205,   206,   207,     0,     0,     0,     0,     0,   208,   209,
-   210,   211,   341,   342,   214,   215,   216,     0,     0,     0,
-   217,     0,     0,     0,     0,   482,   203,   204,   205,   206,
-   207,     0,     0,     0,     0,     0,   208,   209,   210,   211,
-   341,   342,   214,   215,   216,     0,     0,     0,   217,     0,
-     0,     0,     0,   483,   203,   204,   205,   206,   207,     0,
-     0,     0,     0,     0,   208,   209,   210,   211,   341,   342,
-   214,   215,   216,     0,     0,     0,   217,     0,     0,     0,
-     0,   484,   203,   204,   205,   206,   207,     0,     0,     0,
-     0,     0,   208,   209,   210,   211,   341,   342,   214,   215,
-   216,     0,     0,     0,   217,     0,     0,     0,     0,   485,
-   203,   204,   205,   206,   207,     0,     0,     0,     0,     0,
-   208,   209,   210,   211,   341,   342,   214,   215,   216,     0,
-     0,     0,   217,     0,     0,     0,     0,   486,   203,   204,
-   205,   206,   207,     0,     0,     0,     0,     0,   208,   209,
-   210,   211,   341,   342,   214,   215,   216,     0,     0,     0,
-   217,     0,     0,     0,     0,   534,   203,   204,   205,   206,
-   207,     0,     0,     0,     0,     0,   208,   209,   210,   211,
-   341,   342,   214,   215,   216,     0,     0,     0,   217,     0,
-     0,     0,     0,   537,   203,   204,   205,   206,   207,     0,
-     0,     0,     0,     0,   208,   209,   210,   211,   341,   342,
-   214,   215,   216,     0,     0,     0,   217,     0,     0,     0,
-     0,   547,   203,   204,   205,   206,   207,     0,     0,     0,
-     0,     0,   208,   209,   210,   211,   341,   342,   214,   215,
-   216,     0,     0,     0,   217,     0,     0,     0,     0,   548,
-   203,   204,   205,   206,   207,     0,     0,     0,     0,     0,
-   208,   209,   210,   211,   341,   342,   214,   215,   216,     0,
-     0,     0,   217,     0,     0,     0,     0,   552,   203,   204,
-   205,   206,   207,     0,     0,     0,     0,     0,   208,   209,
-   210,   211,   341,   342,   214,   215,   216,     0,     0,     0,
-   217,     0,     0,     0,     0,   553,   203,   204,   205,   206,
-   207,     0,     0,     0,     0,     0,   208,   209,   210,   211,
-   341,   342,   214,   215,   216,     0,     0,     0,   217,     0,
-     0,     0,     0,   554,   203,   204,   205,   206,   207,     0,
-     0,     0,     0,     0,   208,   209,   210,   211,   341,   342,
-   214,   215,   216,     0,     0,     0,   217,     0,     0,     0,
-     0,   555,   203,   204,   205,   206,   207,     0,     0,     0,
-     0,     0,   208,   209,   210,   211,   341,   342,   214,   215,
-   216,     0,     0,     0,   217,     0,     0,     0,     0,   556,
-   203,   204,   205,   206,   207,     0,     0,     0,     0,     0,
-   208,   209,   210,   211,   341,   342,   214,   215,   216,     0,
-     0,     0,   217,     0,     0,     0,     0,   598,   203,   204,
-   205,   206,   207,     0,     0,     0,     0,     0,   208,   209,
-   210,   211,   341,   342,   214,   215,   216,     0,     0,     0,
-   217,     0,     0,     0,     0,   602,   203,   204,   205,   206,
-   207,     0,     0,     0,     0,     0,   208,   209,   210,   211,
-   341,   342,   214,   215,   216,     0,     0,     0,   217,     0,
-     0,     0,     0,   643,   203,   204,   205,   206,   207,     0,
-     0,     0,     0,     0,   208,   209,   210,   211,   341,   342,
-   214,   215,   216,     0,     0,     0,   217,     0,     0,     0,
-     0,   705,   203,   204,   205,   206,   207,     0,     0,     0,
-     0,     0,   208,   209,   210,   211,   341,   342,   214,   215,
-   216,     0,     0,     0,   217,     0,     0,     0,     0,   706,
-   203,   204,   205,   206,   207,     0,     0,     0,     0,     0,
-   208,   209,   210,   211,   341,   342,   214,   215,   216,     0,
-     0,     0,   217,     0,     0,     0,     0,   707,   203,   204,
-   205,   206,   207,     0,     0,     0,     0,     0,   208,   209,
-   210,   211,   341,   342,   214,   215,   216,     0,     0,     0,
-   217,     0,     0,     0,     0,   708,   203,   204,   205,   206,
-   207,     0,     0,     0,     0,     0,   208,   209,   210,   211,
-   341,   342,   214,   215,   216,     0,     0,     0,   217,     0,
-     0,     0,     0,   798,   203,   204,   205,   206,   207,     0,
-     0,     0,     0,     0,   208,   209,   210,   211,   341,   342,
-   214,   215,   216,     0,     0,     0,   217,     0,     0,     0,
-     0,   866,   203,   204,   205,   206,   207,     0,     0,     0,
-     0,     0,   208,   209,   210,   211,   341,   342,   214,   215,
-   216,     0,     0,     0,   217,     0,     0,     0,     0,   915,
-   203,   204,   205,   206,   207,     0,     0,     0,     0,     0,
-   208,   209,   210,   211,   341,   342,   214,   215,   216,     0,
-     0,     0,   217,     0,     0,     0,     0,  1009,   203,   204,
-   205,   206,   207,     0,     0,     0,     0,     0,   208,   209,
-   210,   211,   341,   342,   214,   215,   216,     0,     0,     0,
-   217,     0,     0,     0,     0,  1013,   203,   204,   205,   206,
-   207,     0,     0,     0,     0,     0,   208,   209,   210,   211,
-   341,   342,   214,   215,   216,     0,     0,     0,   217,     0,
-     0,     0,     0,  1015,   203,   204,   205,   206,   207,     0,
-     0,     0,     0,     0,   208,   209,   210,   211,   341,   342,
-   214,   215,   216,     0,     0,     0,   217,     0,     0,     0,
-     0,  1120,   203,   204,   205,   206,   207,     0,     0,     0,
-     0,     0,   208,   209,   210,   211,   341,   342,   214,   215,
-   216,     0,     0,     0,   217,     0,     0,     0,     0,  1122,
-   203,   204,   205,   206,   207,     0,     0,     0,     0,     0,
-   208,   209,   210,   211,   341,   342,   214,   215,   216,     0,
-     0,     0,   217,     0,     0,     0,     0,  1124,   203,   204,
-   205,   206,   207,     0,     0,     0,     0,     0,   208,   209,
-   210,   211,   341,   342,   214,   215,   216,     0,     0,     0,
-   217,     0,     0,     0,     0,  1142,   203,   204,   205,   206,
-   207,     0,     0,     0,     0,     0,   208,   209,   210,   211,
-   341,   342,   214,   215,   216,     0,     0,     0,   217,     0,
-     0,     0,     0,  1143,   203,   204,   205,   206,   207,     0,
-     0,     0,     0,     0,   208,   209,   210,   211,   341,   342,
-   214,   215,   216,     0,     0,     0,   217,     0,     0,     0,
-     0,  1144,   203,   204,   205,   206,   207,     0,     0,     0,
-     0,     0,   208,   209,   210,   211,   341,   342,   214,   215,
-   216,     0,     0,     0,   217,     0,     0,     0,     0,  1333,
-   203,   204,   205,   206,   207,     0,     0,     0,     0,     0,
-   208,   209,   210,   211,   341,   342,   214,   215,   216,     0,
-     0,     0,   217,     0,     0,     0,     0,  1334,   203,   204,
-   205,   206,   207,     0,     0,     0,     0,     0,   208,   209,
-   210,   211,   341,   342,   214,   215,   216,     0,     0,     0,
-   217,     0,     0,     0,     0,  1335,   203,   204,   205,   206,
-   207,     0,     0,     0,     0,     0,   208,   209,   210,   211,
-   341,   342,   214,   215,   216,     0,     0,     0,   217,     0,
-     0,     0,     0,  1415,   203,   204,   205,   206,   207,     0,
-     0,     0,     0,     0,   208,   209,   210,   211,   341,   342,
-   214,   215,   216,     0,     0,     0,   217,     0,     0,     0,
-     0,  1416,   203,   204,   205,   206,   207,     0,     0,     0,
-     0,     0,   208,   209,   210,   211,   341,   342,   214,   215,
-   216,     0,     0,     0,   217,     0,     0,     0,     0,  1417,
-   203,   204,   205,   206,   207,     0,     0,     0,     0,     0,
-   208,   209,   210,   211,   341,   342,   214,   215,   216,     0,
-     0,     0,   217,     0,     0,     0,     0,  1463,   203,   204,
-   205,   206,   207,     0,     0,     0,     0,     0,   208,   209,
-   210,   211,   341,   342,   214,   215,   216,     0,     0,     0,
-   217,     0,     0,     0,     0,  1464,   203,   204,   205,   206,
-   207,     0,     0,     0,     0,     0,   208,   209,   210,   211,
-   341,   342,   214,   215,   216,     0,     0,     0,   217,     0,
-     0,     0,     0,  1465,   203,   204,   205,   206,   207,     0,
-     0,     0,     0,     0,   208,   209,   210,   211,   341,   342,
-   214,   215,   216,     0,     0,     0,   217,     0,     0,     0,
-   431,   203,   204,   205,   206,   207,     0,     0,     0,     0,
-     0,   208,   209,   210,   211,   341,   342,   214,   215,   216,
-     0,     0,     0,   217,     0,     0,     0,   432,   203,   204,
-   205,   206,   207,     0,     0,     0,     0,     0,   208,   209,
-   210,   211,   341,   342,   214,   215,   216,     0,     0,     0,
-   217,     0,     0,     0,   480,   203,   204,   205,   206,   207,
-     0,     0,     0,     0,     0,   208,   209,   210,   211,   341,
-   342,   214,   215,   216,     0,     0,     0,   217,     0,     0,
-     0,   487,   203,   204,   205,   206,   207,     0,     0,     0,
-     0,     0,   208,   209,   210,   211,   341,   342,   214,   215,
-   216,     0,     0,     0,   217,     0,     0,     0,   488,   203,
-   204,   205,   206,   207,     0,     0,     0,     0,     0,   208,
-   209,   210,   211,   341,   342,   214,   215,   216,     0,     0,
-     0,   217,   493,     0,     0,   489,   203,   204,   205,   206,
-   207,     0,     0,     0,     0,     0,   208,   209,   210,   211,
-   341,   342,   214,   215,   216,     0,     0,     0,   217,   203,
-   204,   205,   206,   207,     0,     0,     0,     0,     0,   208,
-   209,   210,   211,   341,   342,   214,   215,   216,     0,     0,
-     0,   217,     0,     0,     0,   564,   203,   204,   205,   206,
-   207,     0,     0,     0,     0,     0,   208,   209,   210,   211,
-   341,   342,   214,   215,   216,     0,     0,     0,   217,     0,
-     0,     0,   565,   203,   204,   205,   206,   207,     0,     0,
-     0,     0,     0,   208,   209,   210,   211,   341,   342,   214,
-   215,   216,     0,     0,     0,   217,     0,     0,     0,   566,
-   203,   204,   205,   206,   207,     0,     0,     0,     0,     0,
-   208,   209,   210,   211,   341,   342,   214,   215,   216,     0,
-     0,     0,   217,     0,     0,     0,   671,   203,   204,   205,
-   206,   207,     0,     0,     0,     0,     0,   208,   209,   210,
-   211,   341,   342,   214,   215,   216,     0,     0,     0,   217,
-     0,     0,     0,   672,   203,   204,   205,   206,   207,     0,
-     0,     0,     0,     0,   208,   209,   210,   211,   341,   342,
-   214,   215,   216,     0,     0,     0,   217,     0,     0,     0,
-   795,   203,   204,   205,   206,   207,     0,     0,     0,     0,
-     0,   208,   209,   210,   211,   341,   342,   214,   215,   216,
-     0,     0,     0,   217,     0,     0,     0,   796,   203,   204,
-   205,   206,   207,     0,     0,     0,     0,     0,   208,   209,
-   210,   211,   341,   342,   214,   215,   216,     0,     0,     0,
-   217,     0,     0,     0,   817,   203,   204,   205,   206,   207,
-     0,     0,     0,     0,     0,   208,   209,   210,   211,   341,
-   342,   214,   215,   216,     0,     0,     0,   217,     0,     0,
-     0,   818,   203,   204,   205,   206,   207,     0,     0,     0,
-     0,     0,   208,   209,   210,   211,   341,   342,   214,   215,
-   216,     0,     0,     0,   217,     0,     0,     0,   851,   203,
-   204,   205,   206,   207,     0,     0,     0,     0,     0,   208,
-   209,   210,   211,   341,   342,   214,   215,   216,     0,     0,
-     0,   217,     0,     0,     0,   878,   203,   204,   205,   206,
-   207,     0,     0,     0,     0,     0,   208,   209,   210,   211,
-   341,   342,   214,   215,   216,     0,     0,     0,   217,     0,
-     0,     0,   879,   203,   204,   205,   206,   207,     0,     0,
-     0,     0,     0,   208,   209,   210,   211,   341,   342,   214,
-   215,   216,     0,     0,     0,   217,     0,     0,     0,   880,
-   203,   204,   205,   206,   207,     0,     0,     0,     0,     0,
-   208,   209,   210,   211,   341,   342,   214,   215,   216,     0,
-     0,     0,   217,     0,     0,     0,   881,   203,   204,   205,
-   206,   207,     0,     0,     0,     0,     0,   208,   209,   210,
-   211,   341,   342,   214,   215,   216,     0,     0,     0,   217,
-     0,     0,     0,   882,   203,   204,   205,   206,   207,     0,
-     0,     0,     0,     0,   208,   209,   210,   211,   341,   342,
-   214,   215,   216,     0,     0,     0,   217,     0,     0,     0,
-   883,   203,   204,   205,   206,   207,     0,     0,     0,     0,
-     0,   208,   209,   210,   211,   341,   342,   214,   215,   216,
-     0,     0,     0,   217,     0,     0,     0,   884,   203,   204,
-   205,   206,   207,     0,     0,     0,     0,     0,   208,   209,
-   210,   211,   341,   342,   214,   215,   216,     0,     0,     0,
-   217,     0,     0,     0,   885,   203,   204,   205,   206,   207,
-     0,     0,     0,     0,     0,   208,   209,   210,   211,   341,
-   342,   214,   215,   216,     0,     0,     0,   217,     0,     0,
-     0,   886,   203,   204,   205,   206,   207,     0,     0,     0,
-     0,     0,   208,   209,   210,   211,   341,   342,   214,   215,
-   216,     0,     0,     0,   217,     0,     0,     0,   887,   203,
-   204,   205,   206,   207,     0,     0,     0,     0,     0,   208,
-   209,   210,   211,   341,   342,   214,   215,   216,     0,     0,
-     0,   217,     0,     0,     0,   888,   203,   204,   205,   206,
-   207,     0,     0,     0,     0,     0,   208,   209,   210,   211,
-   341,   342,   214,   215,   216,     0,     0,     0,   217,     0,
-     0,     0,   889,   203,   204,   205,   206,   207,     0,     0,
-     0,     0,     0,   208,   209,   210,   211,   341,   342,   214,
-   215,   216,     0,     0,     0,   217,     0,     0,     0,   977,
-   203,   204,   205,   206,   207,     0,     0,     0,     0,     0,
-   208,   209,   210,   211,   341,   342,   214,   215,   216,     0,
-     0,     0,   217,     0,     0,     0,   978,   203,   204,   205,
-   206,   207,     0,     0,     0,     0,     0,   208,   209,   210,
-   211,   341,   342,   214,   215,   216,     0,     0,     0,   217,
-     0,     0,     0,  1003,   203,   204,   205,   206,   207,     0,
-     0,     0,     0,     0,   208,   209,   210,   211,   341,   342,
-   214,   215,   216,     0,     0,     0,   217,     0,     0,     0,
-  1014,   203,   204,   205,   206,   207,     0,     0,     0,     0,
-     0,   208,   209,   210,   211,   341,   342,   214,   215,   216,
-     0,     0,     0,   217,     0,     0,     0,  1019,   203,   204,
-   205,   206,   207,     0,     0,     0,     0,     0,   208,   209,
-   210,   211,   341,   342,   214,   215,   216,     0,     0,     0,
-   217,     0,     0,     0,  1022,   203,   204,   205,   206,   207,
-     0,     0,     0,     0,     0,   208,   209,   210,   211,   341,
-   342,   214,   215,   216,     0,     0,     0,   217,     0,     0,
-     0,  1024,   203,   204,   205,   206,   207,     0,     0,     0,
-     0,     0,   208,   209,   210,   211,   341,   342,   214,   215,
-   216,     0,     0,     0,   217,     0,     0,     0,  1035,   203,
-   204,   205,   206,   207,     0,     0,     0,     0,     0,   208,
-   209,   210,   211,   341,   342,   214,   215,   216,     0,     0,
-     0,   217,     0,     0,     0,  1036,   203,   204,   205,   206,
-   207,     0,     0,     0,     0,     0,   208,   209,   210,   211,
-   341,   342,   214,   215,   216,     0,     0,     0,   217,     0,
-     0,     0,  1037,   203,   204,   205,   206,   207,     0,     0,
-     0,     0,     0,   208,   209,   210,   211,   341,   342,   214,
-   215,   216,     0,     0,     0,   217,     0,     0,     0,  1038,
-   203,   204,   205,   206,   207,     0,     0,     0,     0,     0,
-   208,   209,   210,   211,   341,   342,   214,   215,   216,     0,
-     0,     0,   217,     0,     0,     0,  1039,   203,   204,   205,
-   206,   207,     0,     0,     0,     0,     0,   208,   209,   210,
-   211,   341,   342,   214,   215,   216,     0,     0,     0,   217,
-     0,     0,     0,  1040,   203,   204,   205,   206,   207,     0,
-     0,     0,     0,     0,   208,   209,   210,   211,   341,   342,
-   214,   215,   216,     0,     0,     0,   217,     0,     0,     0,
-  1041,   203,   204,   205,   206,   207,     0,     0,     0,     0,
-     0,   208,   209,   210,   211,   341,   342,   214,   215,   216,
-     0,     0,     0,   217,     0,     0,     0,  1042,   203,   204,
-   205,   206,   207,     0,     0,     0,     0,     0,   208,   209,
-   210,   211,   341,   342,   214,   215,   216,     0,     0,     0,
-   217,     0,     0,     0,  1043,   203,   204,   205,   206,   207,
-     0,     0,     0,     0,     0,   208,   209,   210,   211,   341,
-   342,   214,   215,   216,     0,     0,     0,   217,     0,     0,
-     0,  1044,   203,   204,   205,   206,   207,     0,     0,     0,
-     0,     0,   208,   209,   210,   211,   341,   342,   214,   215,
-   216,     0,     0,     0,   217,     0,     0,     0,  1045,   203,
-   204,   205,   206,   207,     0,     0,     0,     0,     0,   208,
-   209,   210,   211,   341,   342,   214,   215,   216,     0,     0,
-     0,   217,     0,     0,     0,  1046,   203,   204,   205,   206,
-   207,     0,     0,     0,     0,     0,   208,   209,   210,   211,
-   341,   342,   214,   215,   216,     0,     0,     0,   217,     0,
-     0,     0,  1117,   203,   204,   205,   206,   207,     0,     0,
-     0,     0,     0,   208,   209,   210,   211,   341,   342,   214,
-   215,   216,     0,     0,     0,   217,     0,     0,     0,  1133,
-   203,   204,   205,   206,   207,     0,     0,     0,     0,     0,
-   208,   209,   210,   211,   341,   342,   214,   215,   216,     0,
-     0,     0,   217,     0,     0,     0,  1134,   203,   204,   205,
-   206,   207,     0,     0,     0,     0,     0,   208,   209,   210,
-   211,   341,   342,   214,   215,   216,     0,     0,     0,   217,
-     0,     0,     0,  1135,   203,   204,   205,   206,   207,     0,
-     0,     0,     0,     0,   208,   209,   210,   211,   341,   342,
-   214,   215,   216,     0,     0,     0,   217,     0,     0,     0,
-  1136,   203,   204,   205,   206,   207,     0,     0,     0,     0,
-     0,   208,   209,   210,   211,   341,   342,   214,   215,   216,
-     0,     0,     0,   217,     0,     0,     0,  1137,   203,   204,
-   205,   206,   207,     0,     0,     0,     0,     0,   208,   209,
-   210,   211,   341,   342,   214,   215,   216,     0,     0,     0,
-   217,     0,     0,     0,  1138,   203,   204,   205,   206,   207,
-     0,     0,     0,     0,     0,   208,   209,   210,   211,   341,
-   342,   214,   215,   216,     0,     0,     0,   217,     0,     0,
-     0,  1139,   203,   204,   205,   206,   207,     0,     0,     0,
-     0,     0,   208,   209,   210,   211,   341,   342,   214,   215,
-   216,     0,     0,     0,   217,     0,     0,     0,  1140,   203,
-   204,   205,   206,   207,     0,     0,     0,     0,     0,   208,
-   209,   210,   211,   341,   342,   214,   215,   216,     0,     0,
-     0,   217,     0,     0,     0,  1141,   203,   204,   205,   206,
-   207,     0,     0,     0,     0,     0,   208,   209,   210,   211,
-   341,   342,   214,   215,   216,     0,     0,     0,   217,     0,
-     0,     0,  1159,   203,   204,   205,   206,   207,     0,     0,
-     0,     0,     0,   208,   209,   210,   211,   341,   342,   214,
-   215,   216,     0,     0,     0,   217,     0,     0,     0,  1215,
-   203,   204,   205,   206,   207,     0,     0,     0,     0,     0,
-   208,   209,   210,   211,   341,   342,   214,   215,   216,     0,
-     0,     0,   217,     0,     0,     0,  1216,   203,   204,   205,
-   206,   207,     0,     0,     0,     0,     0,   208,   209,   210,
-   211,   341,   342,   214,   215,   216,     0,     0,     0,   217,
-     0,     0,     0,  1217,   203,   204,   205,   206,   207,     0,
-     0,     0,     0,     0,   208,   209,   210,   211,   341,   342,
-   214,   215,   216,     0,     0,     0,   217,     0,     0,     0,
-  1218,   203,   204,   205,   206,   207,     0,     0,     0,     0,
-     0,   208,   209,   210,   211,   341,   342,   214,   215,   216,
-     0,     0,     0,   217,     0,     0,     0,  1219,   203,   204,
-   205,   206,   207,     0,     0,     0,     0,     0,   208,   209,
-   210,   211,   341,   342,   214,   215,   216,     0,     0,     0,
-   217,     0,     0,     0,  1220,   203,   204,   205,   206,   207,
-     0,     0,     0,     0,     0,   208,   209,   210,   211,   341,
-   342,   214,   215,   216,     0,     0,     0,   217,     0,     0,
-     0,  1221,   203,   204,   205,   206,   207,     0,     0,     0,
-     0,     0,   208,   209,   210,   211,   341,   342,   214,   215,
-   216,     0,     0,     0,   217,     0,     0,     0,  1222,   203,
-   204,   205,   206,   207,     0,     0,     0,     0,     0,   208,
-   209,   210,   211,   341,   342,   214,   215,   216,     0,     0,
-     0,   217,     0,     0,     0,  1223,   203,   204,   205,   206,
-   207,     0,     0,     0,     0,     0,   208,   209,   210,   211,
-   341,   342,   214,   215,   216,     0,     0,     0,   217,     0,
-     0,     0,  1243,   203,   204,   205,   206,   207,     0,     0,
-     0,     0,     0,   208,   209,   210,   211,   341,   342,   214,
-   215,   216,     0,     0,     0,   217,     0,     0,     0,  1280,
-   203,   204,   205,   206,   207,     0,     0,     0,     0,     0,
-   208,   209,   210,   211,   341,   342,   214,   215,   216,     0,
-     0,     0,   217,     0,     0,     0,  1281,   203,   204,   205,
-   206,   207,     0,     0,     0,     0,     0,   208,   209,   210,
-   211,   341,   342,   214,   215,   216,     0,     0,     0,   217,
-     0,     0,     0,  1282,   203,   204,   205,   206,   207,     0,
-     0,     0,     0,     0,   208,   209,   210,   211,   341,   342,
-   214,   215,   216,     0,     0,     0,   217,     0,     0,     0,
-  1283,   203,   204,   205,   206,   207,     0,     0,     0,     0,
-     0,   208,   209,   210,   211,   341,   342,   214,   215,   216,
-     0,     0,     0,   217,     0,     0,     0,  1284,   203,   204,
-   205,   206,   207,     0,     0,     0,     0,     0,   208,   209,
-   210,   211,   341,   342,   214,   215,   216,     0,     0,     0,
-   217,     0,     0,     0,  1285,   203,   204,   205,   206,   207,
-     0,     0,     0,     0,     0,   208,   209,   210,   211,   341,
-   342,   214,   215,   216,     0,     0,     0,   217,     0,     0,
-     0,  1286,   203,   204,   205,   206,   207,     0,     0,     0,
-     0,     0,   208,   209,   210,   211,   341,   342,   214,   215,
-   216,     0,     0,     0,   217,     0,     0,     0,  1287,   203,
-   204,   205,   206,   207,     0,     0,     0,     0,     0,   208,
-   209,   210,   211,   341,   342,   214,   215,   216,     0,     0,
-     0,   217,     0,     0,     0,  1288,   203,   204,   205,   206,
-   207,     0,     0,     0,     0,     0,   208,   209,   210,   211,
-   341,   342,   214,   215,   216,     0,     0,     0,   217,     0,
-     0,     0,  1322,   203,   204,   205,   206,   207,     0,     0,
-     0,     0,     0,   208,   209,   210,   211,   341,   342,   214,
-   215,   216,     0,     0,     0,   217,     0,     0,     0,  1327,
-   203,   204,   205,   206,   207,     0,     0,     0,     0,     0,
-   208,   209,   210,   211,   341,   342,   214,   215,   216,     0,
-     0,     0,   217,     0,     0,     0,  1328,   203,   204,   205,
-   206,   207,     0,     0,     0,     0,     0,   208,   209,   210,
-   211,   341,   342,   214,   215,   216,     0,     0,     0,   217,
-     0,     0,     0,  1329,   203,   204,   205,   206,   207,     0,
-     0,     0,     0,     0,   208,   209,   210,   211,   341,   342,
-   214,   215,   216,     0,     0,     0,   217,     0,     0,     0,
-  1330,   203,   204,   205,   206,   207,     0,     0,     0,     0,
-     0,   208,   209,   210,   211,   341,   342,   214,   215,   216,
-     0,     0,     0,   217,     0,     0,     0,  1331,   203,   204,
-   205,   206,   207,     0,     0,     0,     0,     0,   208,   209,
-   210,   211,   341,   342,   214,   215,   216,     0,     0,     0,
-   217,     0,     0,     0,  1332,   203,   204,   205,   206,   207,
-     0,     0,     0,     0,     0,   208,   209,   210,   211,   341,
-   342,   214,   215,   216,     0,     0,     0,   217,     0,     0,
-     0,  1351,   203,   204,   205,   206,   207,     0,     0,     0,
-     0,     0,   208,   209,   210,   211,   341,   342,   214,   215,
-   216,     0,     0,     0,   217,     0,     0,     0,  1356,   203,
-   204,   205,   206,   207,     0,     0,     0,     0,     0,   208,
-   209,   210,   211,   341,   342,   214,   215,   216,     0,     0,
-     0,   217,     0,     0,     0,  1357,   203,   204,   205,   206,
-   207,     0,     0,     0,     0,     0,   208,   209,   210,   211,
-   341,   342,   214,   215,   216,     0,     0,     0,   217,     0,
-     0,     0,  1358,   203,   204,   205,   206,   207,     0,     0,
-     0,     0,     0,   208,   209,   210,   211,   341,   342,   214,
-   215,   216,     0,     0,     0,   217,     0,     0,     0,  1359,
-   203,   204,   205,   206,   207,     0,     0,     0,     0,     0,
-   208,   209,   210,   211,   341,   342,   214,   215,   216,     0,
-     0,     0,   217,     0,     0,     0,  1360,   203,   204,   205,
-   206,   207,     0,     0,     0,     0,     0,   208,   209,   210,
-   211,   341,   342,   214,   215,   216,     0,     0,     0,   217,
-     0,     0,     0,  1361,   203,   204,   205,   206,   207,     0,
-     0,     0,     0,     0,   208,   209,   210,   211,   341,   342,
-   214,   215,   216,     0,     0,     0,   217,     0,     0,     0,
-  1384,   203,   204,   205,   206,   207,     0,     0,     0,     0,
-     0,   208,   209,   210,   211,   341,   342,   214,   215,   216,
-     0,     0,     0,   217,     0,     0,     0,  1385,   203,   204,
-   205,   206,   207,     0,     0,     0,     0,     0,   208,   209,
-   210,   211,   341,   342,   214,   215,   216,     0,     0,     0,
-   217,     0,     0,     0,  1386,   203,   204,   205,   206,   207,
-     0,     0,     0,     0,     0,   208,   209,   210,   211,   341,
-   342,   214,   215,   216,     0,     0,     0,   217,     0,     0,
-     0,  1387,   203,   204,   205,   206,   207,     0,     0,     0,
-     0,     0,   208,   209,   210,   211,   341,   342,   214,   215,
-   216,     0,     0,     0,   217,     0,     0,     0,  1388,   203,
-   204,   205,   206,   207,     0,     0,     0,     0,     0,   208,
-   209,   210,   211,   341,   342,   214,   215,   216,     0,     0,
-     0,   217,     0,     0,     0,  1389,   203,   204,   205,   206,
-   207,     0,     0,     0,     0,     0,   208,   209,   210,   211,
-   341,   342,   214,   215,   216,     0,     0,     0,   217,     0,
-     0,     0,  1412,   203,   204,   205,   206,   207,     0,     0,
-     0,     0,     0,   208,   209,   210,   211,   341,   342,   214,
-   215,   216,     0,     0,     0,   217,     0,     0,     0,  1413,
-   203,   204,   205,   206,   207,     0,     0,     0,     0,     0,
-   208,   209,   210,   211,   341,   342,   214,   215,   216,     0,
-     0,     0,   217,     0,     0,     0,  1414,   203,   204,   205,
-   206,   207,     0,     0,     0,     0,     0,   208,   209,   210,
-   211,   341,   342,   214,   215,   216,     0,     0,     0,   217,
-     0,     0,     0,  1426,   203,   204,   205,   206,   207,     0,
-     0,     0,     0,     0,   208,   209,   210,   211,   341,   342,
-   214,   215,   216,     0,     0,     0,   217,     0,     0,     0,
-  1427,   203,   204,   205,   206,   207,     0,     0,     0,     0,
-     0,   208,   209,   210,   211,   341,   342,   214,   215,   216,
-     0,     0,     0,   217,     0,     0,     0,  1428,   203,   204,
-   205,   206,   207,     0,     0,     0,     0,     0,   208,   209,
-   210,   211,   341,   342,   214,   215,   216,     0,     0,     0,
-   217,     0,     0,     0,  1443,   203,   204,   205,   206,   207,
-     0,     0,     0,     0,     0,   208,   209,   210,   211,   341,
-   342,   214,   215,   216,     0,     0,     0,   217,     0,     0,
-     0,  1444,   203,   204,   205,   206,   207,     0,     0,     0,
-     0,     0,   208,   209,   210,   211,   341,   342,   214,   215,
-   216,     0,     0,     0,   217,     0,     0,  1339,  1445,   203,
-   204,   205,   206,   207,     0,     0,     0,     0,     0,   208,
-   209,   210,   211,   341,   342,   214,   215,   216,     0,     0,
-     0,   217,   203,   204,   205,   206,   207,     0,     0,     0,
-     0,     0,   208,   209,   210,   211,   341,   342,   214,   215,
-   216,     0,     0,     0,   217
+    90,    91,    92,    93,    94,    95,   200,   201,   202,   203,
+   204,   377,   378,   379,   380,   381,   205,   206,   207,   208,
+   339,   340,   211,   212,   213,   395,   789,   382,   214,   383,
+  1049,   390,   384,   385,   386,   387,   422,   427,   391,   802,
+   392,   804,   805,   405,   407,    -1,     8,   458,     9,   814,
+   815,   816,   817,   818,   819,   820,   821,   822,   823,   824,
+   825,   459,   461,   468,   493,   494,   495,   496,   834,   497,
+   835,   498,   499,   500,   501,   502,   837,   530,   531,   396,
+   503,   275,   504,   505,    98,   506,   280,   507,   532,   508,
+   509,   152,   510,   511,   512,   585,   586,   587,   588,   589,
+   590,   591,   592,   593,   594,   595,   596,   513,   960,   304,
+   514,   515,   516,   308,   309,   517,   518,   519,   873,   520,
+   875,   521,   522,   546,   525,   544,   526,   527,   574,   541,
+   878,   530,   531,   542,   547,   883,   884,   548,    98,   549,
+   551,   552,   532,   554,   577,   152,   898,   555,   900,   556,
+   902,    10,    11,    12,    13,    14,    15,    16,    17,   561,
+   200,   201,   202,   203,   204,   578,   610,   611,   918,   919,
+   205,   206,   207,   208,   339,   340,   211,   212,   213,   929,
+   397,   931,   214,   612,   613,   615,   624,   625,   626,   627,
+   628,   941,   629,   630,   631,   632,   655,   670,   948,   949,
+   950,   813,   633,   634,   635,   955,   636,   659,   637,   959,
+   638,   961,   656,   639,   200,   201,   202,   203,   204,   640,
+   641,   973,   642,   643,   205,   206,   207,   208,   339,   340,
+   211,   212,   213,   675,   658,   677,   214,   978,   644,   645,
+   685,   646,   686,   647,   687,   690,   648,   691,   987,   988,
+   989,   990,   991,   992,   993,   994,   995,   996,   997,   998,
+   649,   650,   651,   652,   653,   654,   657,   692,    73,    74,
+   684,  1010,   734,   693,    75,    76,    77,    78,    79,    80,
+    81,    82,    83,    84,    85,    86,    87,    88,    89,    90,
+    91,    92,    93,    94,    95,   694,   695,   696,   719,   735,
+   661,  1036,  1038,  1040,  1035,  1037,  1039,  1041,  1042,  1043,
+  1044,   707,  1046,  1047,   708,   200,   201,   202,   203,   204,
+   709,   710,  1052,  1053,  1054,   205,   206,   207,   208,   339,
+   340,   211,   212,   213,   711,   712,   713,   214,   714,   715,
+   663,  1071,  1072,   716,   724,   717,   718,   728,  1076,   739,
+   740,   741,   742,   743,   746,   748,   774,  1082,   749,   752,
+   753,   754,   755,   756,   765,  1090,   806,   766,   767,   768,
+  1095,   769,   833,  1098,   836,   770,   778,   782,   665,   784,
+   786,   787,   828,   838,    25,    26,    27,    28,    29,    30,
+    31,    32,  1117,    33,   842,    35,    36,   843,    38,    39,
+   845,  1123,  1124,  1125,  1126,  1127,  1128,  1129,  1130,  1131,
+  1132,  1133,  1134,   844,   846,    51,   847,   848,   849,  1140,
+    96,    97,   851,   870,   852,   853,   854,    98,   855,    52,
+    53,    99,   860,   871,   273,   200,   201,   202,   203,   204,
+   856,   857,   858,   859,   861,   205,   206,   207,   208,   339,
+   340,   211,   212,   213,   203,   204,  1154,   214,   869,   874,
+   862,   205,   206,   207,   208,   339,   340,   211,   212,   213,
+   863,   864,   865,   214,   866,   200,   201,   202,   203,   204,
+   867,   868,  1178,   876,    58,   205,   206,   207,   208,   339,
+   340,   211,   212,   213,   877,   673,   674,   214,   676,   880,
+   881,   882,   678,   679,  1196,  1197,  1198,  1199,  1200,  1201,
+  1202,  1203,  1204,   200,   201,   202,   203,   204,   885,   886,
+  1210,   887,   888,   205,   206,   207,   208,   339,   340,   211,
+   212,   213,  1077,  1217,   889,   214,   890,   891,   893,   200,
+   201,   202,   203,   204,   899,   901,   905,   924,   920,   205,
+   206,   207,   208,   339,   340,   211,   212,   213,   928,   722,
+   930,   214,   725,  1246,  1247,  1248,  1249,  1250,  1251,  1252,
+  1253,  1254,  1256,  1258,  1260,   933,   934,  1263,   935,   936,
+   937,   744,   745,   939,   940,   942,   943,   750,   751,   946,
+   944,   945,    -7,    -7,   757,    -7,   764,   952,   953,   956,
+   957,   969,   976,   977,  1286,  1287,   958,   979,  1005,  1007,
+  1006,  1011,  1294,  1295,  1296,  1297,  1298,  1299,  1300,  1301,
+  1302,  1303,   783,  1305,   785,  1307,  1013,  1014,  1015,  1311,
+  1016,  1017,   790,   791,   792,  1019,  1025,   795,   796,   797,
+   798,   799,   800,   801,  1020,  1045,  1021,  1026,  1027,  1029,
+  1032,  1323,  1324,  1030,  1055,  1056,  1328,  1329,  1330,  1331,
+  1332,  1333,    25,    26,    27,    28,    29,    30,    31,    32,
+  1073,    33,  1078,    35,    36,  1081,    38,    39,  1099,  1351,
+  1083,  1085,  1086,  1087,  1355,  1356,  1357,  1358,  1359,  1360,
+  1362,  1364,  1366,    51,  1088,  1089,  1091,  1093,    -7,    -7,
+    -7,    -7,    -7,    -7,    -7,    -7,  1094,    52,    53,  1096,
+  1097,  1101,  1385,  1386,  1387,  1388,  1389,  1390,  1391,  1100,
+  1393,  1112,  1395,  1115,     1,     2,  1116,     3,  1122,  1137,
+  1138,  1141,  1142,  1143,  1153,  1145,  1146,  1148,  1157,  1150,
+  1405,  1406,  1407,  1152,  1158,  1155,  1174,  1161,  1175,  1183,
+  1184,  1185,  1187,  1188,  1419,  1420,  1421,  1423,  1425,  1427,
+  1189,  1190,    58,  1193,  1209,  1208,  1238,  1239,  1211,  1212,
+  1234,  1439,  1440,  1441,  1442,  1213,  1444,  1214,  1446,  1215,
+   925,  1216,   927,  1218,  1220,  1241,  1243,   932,   667,  1230,
+  1231,  1232,  1244,  1261,  1262,  1264,  1265,  1268,  1460,  1462,
+  1464,   451,  1266,  1267,  1285,  1290,   951,  1471,  1269,  1473,
+  1291,  1475,    73,   528,  1292,  1309,  1293,  1304,    75,    76,
+    77,    78,    79,    80,    81,    82,    83,    84,    85,    86,
+    87,    88,    89,    90,    91,    92,    93,    94,    95,  1306,
+  1308,    73,    74,  1312,  1478,  1313,  1352,    75,    76,    77,
+    78,    79,    80,    81,    82,    83,    84,    85,    86,    87,
+    88,    89,    90,    91,    92,    93,    94,    95,    73,    74,
+  1340,  1339,  1382,  1384,    75,    76,    77,    78,    79,    80,
+    81,    82,    83,    84,    85,    86,    87,    88,    89,    90,
+    91,    92,    93,    94,    95,    73,   872,  1348,  1349,  1392,
+  1341,    75,    76,    77,    78,    79,    80,    81,    82,    83,
+    84,    85,    86,    87,    88,    89,    90,    91,    92,    93,
+    94,    95,  1350,   200,   201,   202,   203,   204,  1394,   668,
+  1368,  1396,  1369,   205,   206,   207,   208,   339,   340,   211,
+   212,   213,  1397,  1411,  1443,   214,  1415,  1416,  1417,  1074,
+  1428,  1445,  1075,   683,  1447,  1448,  1452,  1456,  1457,  1458,
+  1472,  1474,  1476,  1479,   530,   531,   706,    63,    64,   682,
+    65,    98,  1092,  1194,   923,   532,   705,     0,   152,   200,
+   201,   202,   203,   204,     0,     0,     0,     0,     0,   205,
+   206,   207,   208,   209,   210,   211,   212,   213,     0,   974,
+    98,   214,     0,  1121,    99,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+    96,    97,     0,   975,     0,     0,     0,    98,     0,     0,
+     0,    99,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,  1102,    96,    97,     0,
+     0,     0,     0,     0,    98,     0,     0,     0,    99,     0,
+     0,     0,     0,     0,   200,   201,   202,   203,   204,  1104,
+     0,     0,     0,     0,   205,   206,   207,   208,   339,   340,
+   211,   212,   213,     0,  1176,  1177,   214,     0,   200,   201,
+   202,   203,   204,  1106,     0,     0,     0,     0,   205,   206,
+   207,   208,   339,   340,   211,   212,   213,     0,  1195,     0,
+   214,   200,   201,   202,   203,   204,  1108,     0,     0,     0,
+     0,   205,   206,   207,   208,   339,   340,   211,   212,   213,
+     0,     0,     0,   214,   200,   201,   202,   203,   204,     0,
+     0,     0,     0,  1109,   205,   206,   207,   208,   339,   340,
+   211,   212,   213,     0,     0,  1233,   214,     0,   200,   201,
+   202,   203,   204,     0,     0,     0,     0,  1245,   205,   206,
+   207,   208,   339,   340,   211,   212,   213,     0,     0,     0,
+   214,   200,   201,   202,   203,   204,  1110,     0,     0,     0,
+     0,   205,   206,   207,   208,   339,   340,   211,   212,   213,
+     0,     0,     0,   214,   200,   201,   202,   203,   204,     0,
+     0,     0,  1289,     0,   205,   206,   207,   208,   339,   340,
+   211,   212,   213,     0,  1111,     0,   214,     0,   200,   201,
+   202,   203,   204,     0,     0,     0,     0,     0,   205,   206,
+   207,   208,   339,   340,   211,   212,   213,  1139,     0,     0,
+   214,   200,   201,   202,   203,   204,     0,     0,     0,     0,
+  1327,   205,   206,   207,   208,   339,   340,   211,   212,   213,
+     0,     0,   491,   214,     0,     0,     0,     0,   200,   201,
+   202,   203,   204,     0,     0,     0,     0,  1353,   205,   206,
+   207,   208,   339,   340,   211,   212,   213,   557,     0,     0,
+   214,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,  1383,     0,     0,     0,     0,
+   788,   200,   201,   202,   203,   204,     0,     0,     0,     0,
+     0,   205,   206,   207,   208,   339,   340,   211,   212,   213,
+     0,     0,     0,   214,  1404,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,  1418,   200,
+   201,   202,   203,   204,     0,     0,     0,     0,     0,   205,
+   206,   207,   208,   339,   340,   211,   212,   213,     0,     0,
+     0,   214,   200,   201,   202,   203,   204,     0,     0,     0,
+     0,     0,   205,   206,   207,   208,   339,   340,   211,   212,
+   213,     0,     0,     0,   214,   200,   201,   202,   203,   204,
+     0,     0,     0,     0,     0,   205,   206,   207,   208,   339,
+   340,   211,   212,   213,     0,     0,     0,   214,     0,     0,
+   200,   201,   202,   203,   204,     0,     0,     0,     0,     0,
+   205,   206,   207,   208,   339,   340,   211,   212,   213,     0,
+     0,     0,   214,   200,   201,   202,   203,   204,     0,     0,
+     0,     0,     0,   205,   206,   207,   208,   339,   340,   211,
+   212,   213,     0,     0,     0,   214,    25,    26,    27,    28,
+    29,    30,    31,    32,     0,    33,     0,    35,    36,     0,
+    38,    39,     0,     0,    -3,    22,     0,     0,    23,     0,
+     0,   200,   201,   202,   203,   204,     0,    51,     0,     0,
+     0,   205,   206,   207,   208,   339,   340,   211,   212,   213,
+     0,    52,    53,   214,    24,    25,    26,    27,    28,    29,
+    30,    31,    32,   669,    33,    34,    35,    36,    37,    38,
+    39,     0,     0,     0,    40,    41,    42,    43,    44,    45,
+     0,    46,    47,    48,    49,    50,    51,     0,     0,     0,
+     0,     0,     0,     0,   216,     0,     0,     0,     0,     0,
+    52,    53,     0,     0,     0,     0,    58,    54,    55,     0,
+    56,    57,   200,   201,   202,   203,   204,     0,     0,     0,
+     0,     0,   205,   206,   207,   208,   339,   340,   211,   212,
+   213,     0,     0,     0,   214,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,   729,   455,     0,     0,   217,   218,
+   219,     0,     0,     0,     0,    58,   220,   221,   222,   223,
+   224,   225,   226,   227,   228,   229,     0,     0,     0,     0,
+     0,     0,     0,     0,   230,   231,   232,   233,   234,   235,
+   236,   237,   238,   239,     0,   240,   241,   242,   243,   244,
+   245,   200,   201,   202,   203,   204,     0,     0,     0,     0,
+     0,   205,   206,   207,   208,   339,   340,   211,   212,   213,
+     0,     0,     0,   214,   200,   201,   202,   203,   204,     0,
+     0,     0,     0,   803,   205,   206,   207,   208,   339,   340,
+   211,   212,   213,     0,     0,     0,   214,   200,   201,   202,
+   203,   204,     0,     0,     0,     0,  1033,   205,   206,   207,
+   208,   339,   340,   211,   212,   213,     0,     0,     0,   214,
+     0,     0,     0,   895,     0,     0,   896,   200,   201,   202,
+   203,   204,     0,     0,     0,     0,     0,   205,   206,   207,
+   208,   339,   340,   211,   212,   213,     0,     0,     0,   214,
+     0,     0,     0,  1050,     0,     0,  1051,   200,   201,   202,
+   203,   204,     0,     0,     0,     0,     0,   205,   206,   207,
+   208,   339,   340,   211,   212,   213,     0,     0,     0,   214,
+     0,     0,     0,  1191,     0,     0,  1192,   200,   201,   202,
+   203,   204,     0,     0,     0,     0,     0,   205,   206,   207,
+   208,   339,   340,   211,   212,   213,     0,     0,     0,   214,
+   200,   201,   202,   203,   204,     0,   409,     0,     0,     0,
+   205,   206,   207,   208,   339,   340,   211,   212,   213,     0,
+     0,     0,   214,   200,   201,   202,   203,   204,     0,   414,
+     0,     0,     0,   205,   206,   207,   208,   339,   340,   211,
+   212,   213,     0,     0,     0,   214,   200,   201,   202,   203,
+   204,     0,   416,     0,     0,     0,   205,   206,   207,   208,
+   339,   340,   211,   212,   213,     0,     0,     0,   214,   200,
+   201,   202,   203,   204,     0,   562,     0,     0,     0,   205,
+   206,   207,   208,   339,   340,   211,   212,   213,     0,     0,
+     0,   214,   200,   201,   202,   203,   204,     0,   566,     0,
+     0,     0,   205,   206,   207,   208,   339,   340,   211,   212,
+   213,     0,     0,     0,   214,   200,   201,   202,   203,   204,
+     0,   567,     0,     0,     0,   205,   206,   207,   208,   339,
+   340,   211,   212,   213,     0,     0,     0,   214,   200,   201,
+   202,   203,   204,     0,   701,     0,     0,     0,   205,   206,
+   207,   208,   339,   340,   211,   212,   213,     0,     0,     0,
+   214,   200,   201,   202,   203,   204,     0,   892,     0,     0,
+     0,   205,   206,   207,   208,   339,   340,   211,   212,   213,
+     0,     0,     0,   214,   200,   201,   202,   203,   204,     0,
+  1113,     0,     0,     0,   205,   206,   207,   208,   339,   340,
+   211,   212,   213,     0,     0,     0,   214,   200,   201,   202,
+   203,   204,     0,  1118,     0,     0,     0,   205,   206,   207,
+   208,   339,   340,   211,   212,   213,     0,     0,     0,   214,
+   200,   201,   202,   203,   204,     0,  1119,     0,     0,     0,
+   205,   206,   207,   208,   339,   340,   211,   212,   213,     0,
+     0,     0,   214,   200,   201,   202,   203,   204,     0,  1120,
+     0,     0,     0,   205,   206,   207,   208,   339,   340,   211,
+   212,   213,     0,     0,     0,   214,   200,   201,   202,   203,
+   204,     0,  1135,     0,     0,     0,   205,   206,   207,   208,
+   339,   340,   211,   212,   213,     0,     0,     0,   214,   200,
+   201,   202,   203,   204,     0,  1136,     0,     0,     0,   205,
+   206,   207,   208,   339,   340,   211,   212,   213,     0,     0,
+     0,   214,  1235,     0,     0,     0,     0,     0,  1156,   200,
+   201,   202,   203,   204,     0,     0,     0,     0,     0,   205,
+   206,   207,   208,   339,   340,   211,   212,   213,     0,     0,
+     0,   214,   200,   201,   202,   203,   204,     0,     0,     0,
+     0,     0,   205,   206,   207,   208,   339,   340,   211,   212,
+   213,     0,     0,     0,   214,   200,   201,   202,   203,   204,
+     0,  1242,     0,     0,     0,   205,   206,   207,   208,   339,
+   340,   211,   212,   213,     0,     0,     0,   214,   200,   201,
+   202,   203,   204,     0,  1338,     0,     0,     0,   205,   206,
+   207,   208,   339,   340,   211,   212,   213,     0,     0,     0,
+   214,   200,   201,   202,   203,   204,     0,  1367,     0,     0,
+     0,   205,   206,   207,   208,   339,   340,   211,   212,   213,
+     0,     0,     0,   214,     0,     0,     0,   438,   341,   200,
+   201,   202,   203,   204,     0,     0,     0,     0,     0,   205,
+   206,   207,   208,   339,   340,   211,   212,   213,     0,     0,
+     0,   214,     0,     0,     0,     0,   341,   200,   201,   202,
+   203,   204,     0,     0,     0,     0,     0,   205,   206,   207,
+   208,   339,   340,   211,   212,   213,     0,     0,     0,   214,
+     0,     0,     0,     0,   408,   200,   201,   202,   203,   204,
+     0,     0,     0,     0,     0,   205,   206,   207,   208,   339,
+   340,   211,   212,   213,     0,     0,     0,   214,     0,     0,
+     0,     0,   410,   200,   201,   202,   203,   204,     0,     0,
+     0,     0,     0,   205,   206,   207,   208,   339,   340,   211,
+   212,   213,     0,     0,     0,   214,     0,     0,     0,     0,
+   411,   200,   201,   202,   203,   204,     0,     0,     0,     0,
+     0,   205,   206,   207,   208,   339,   340,   211,   212,   213,
+     0,     0,     0,   214,     0,     0,     0,     0,   413,   200,
+   201,   202,   203,   204,     0,     0,     0,     0,     0,   205,
+   206,   207,   208,   339,   340,   211,   212,   213,     0,     0,
+     0,   214,     0,     0,     0,     0,   417,   200,   201,   202,
+   203,   204,     0,     0,     0,     0,     0,   205,   206,   207,
+   208,   339,   340,   211,   212,   213,     0,     0,     0,   214,
+     0,     0,     0,     0,   418,   200,   201,   202,   203,   204,
+     0,     0,     0,     0,     0,   205,   206,   207,   208,   339,
+   340,   211,   212,   213,     0,     0,     0,   214,     0,     0,
+     0,     0,   423,   200,   201,   202,   203,   204,     0,     0,
+     0,     0,     0,   205,   206,   207,   208,   339,   340,   211,
+   212,   213,     0,     0,     0,   214,     0,     0,     0,     0,
+   460,   200,   201,   202,   203,   204,     0,     0,     0,     0,
+     0,   205,   206,   207,   208,   339,   340,   211,   212,   213,
+     0,     0,     0,   214,     0,     0,     0,     0,   463,   200,
+   201,   202,   203,   204,     0,     0,     0,     0,     0,   205,
+   206,   207,   208,   339,   340,   211,   212,   213,     0,     0,
+     0,   214,     0,     0,     0,     0,   469,   200,   201,   202,
+   203,   204,     0,     0,     0,     0,     0,   205,   206,   207,
+   208,   339,   340,   211,   212,   213,     0,     0,     0,   214,
+     0,     0,     0,     0,   470,   200,   201,   202,   203,   204,
+     0,     0,     0,     0,     0,   205,   206,   207,   208,   339,
+   340,   211,   212,   213,     0,     0,     0,   214,     0,     0,
+     0,     0,   471,   200,   201,   202,   203,   204,     0,     0,
+     0,     0,     0,   205,   206,   207,   208,   339,   340,   211,
+   212,   213,     0,     0,     0,   214,     0,     0,     0,     0,
+   472,   200,   201,   202,   203,   204,     0,     0,     0,     0,
+     0,   205,   206,   207,   208,   339,   340,   211,   212,   213,
+     0,     0,     0,   214,     0,     0,     0,     0,   473,   200,
+   201,   202,   203,   204,     0,     0,     0,     0,     0,   205,
+   206,   207,   208,   339,   340,   211,   212,   213,     0,     0,
+     0,   214,     0,     0,     0,     0,   474,   200,   201,   202,
+   203,   204,     0,     0,     0,     0,     0,   205,   206,   207,
+   208,   339,   340,   211,   212,   213,     0,     0,     0,   214,
+     0,     0,     0,     0,   475,   200,   201,   202,   203,   204,
+     0,     0,     0,     0,     0,   205,   206,   207,   208,   339,
+   340,   211,   212,   213,     0,     0,     0,   214,     0,     0,
+     0,     0,   476,   200,   201,   202,   203,   204,     0,     0,
+     0,     0,     0,   205,   206,   207,   208,   339,   340,   211,
+   212,   213,     0,     0,     0,   214,     0,     0,     0,     0,
+   477,   200,   201,   202,   203,   204,     0,     0,     0,     0,
+     0,   205,   206,   207,   208,   339,   340,   211,   212,   213,
+     0,     0,     0,   214,     0,     0,     0,     0,   478,   200,
+   201,   202,   203,   204,     0,     0,     0,     0,     0,   205,
+   206,   207,   208,   339,   340,   211,   212,   213,     0,     0,
+     0,   214,     0,     0,     0,     0,   480,   200,   201,   202,
+   203,   204,     0,     0,     0,     0,     0,   205,   206,   207,
+   208,   339,   340,   211,   212,   213,     0,     0,     0,   214,
+     0,     0,     0,     0,   481,   200,   201,   202,   203,   204,
+     0,     0,     0,     0,     0,   205,   206,   207,   208,   339,
+   340,   211,   212,   213,     0,     0,     0,   214,     0,     0,
+     0,     0,   482,   200,   201,   202,   203,   204,     0,     0,
+     0,     0,     0,   205,   206,   207,   208,   339,   340,   211,
+   212,   213,     0,     0,     0,   214,     0,     0,     0,     0,
+   483,   200,   201,   202,   203,   204,     0,     0,     0,     0,
+     0,   205,   206,   207,   208,   339,   340,   211,   212,   213,
+     0,     0,     0,   214,     0,     0,     0,     0,   484,   200,
+   201,   202,   203,   204,     0,     0,     0,     0,     0,   205,
+   206,   207,   208,   339,   340,   211,   212,   213,     0,     0,
+     0,   214,     0,     0,     0,     0,   485,   200,   201,   202,
+   203,   204,     0,     0,     0,     0,     0,   205,   206,   207,
+   208,   339,   340,   211,   212,   213,     0,     0,     0,   214,
+     0,     0,     0,     0,   550,   200,   201,   202,   203,   204,
+     0,     0,     0,     0,     0,   205,   206,   207,   208,   339,
+   340,   211,   212,   213,     0,     0,     0,   214,     0,     0,
+     0,     0,   553,   200,   201,   202,   203,   204,     0,     0,
+     0,     0,     0,   205,   206,   207,   208,   339,   340,   211,
+   212,   213,     0,     0,     0,   214,     0,     0,     0,     0,
+   563,   200,   201,   202,   203,   204,     0,     0,     0,     0,
+     0,   205,   206,   207,   208,   339,   340,   211,   212,   213,
+     0,     0,     0,   214,     0,     0,     0,     0,   564,   200,
+   201,   202,   203,   204,     0,     0,     0,     0,     0,   205,
+   206,   207,   208,   339,   340,   211,   212,   213,     0,     0,
+     0,   214,     0,     0,     0,     0,   568,   200,   201,   202,
+   203,   204,     0,     0,     0,     0,     0,   205,   206,   207,
+   208,   339,   340,   211,   212,   213,     0,     0,     0,   214,
+     0,     0,     0,     0,   569,   200,   201,   202,   203,   204,
+     0,     0,     0,     0,     0,   205,   206,   207,   208,   339,
+   340,   211,   212,   213,     0,     0,     0,   214,     0,     0,
+     0,     0,   570,   200,   201,   202,   203,   204,     0,     0,
+     0,     0,     0,   205,   206,   207,   208,   339,   340,   211,
+   212,   213,     0,     0,     0,   214,     0,     0,     0,     0,
+   571,   200,   201,   202,   203,   204,     0,     0,     0,     0,
+     0,   205,   206,   207,   208,   339,   340,   211,   212,   213,
+     0,     0,     0,   214,     0,     0,     0,     0,   572,   200,
+   201,   202,   203,   204,     0,     0,     0,     0,     0,   205,
+   206,   207,   208,   339,   340,   211,   212,   213,     0,     0,
+     0,   214,     0,     0,     0,     0,   614,   200,   201,   202,
+   203,   204,     0,     0,     0,     0,     0,   205,   206,   207,
+   208,   339,   340,   211,   212,   213,     0,     0,     0,   214,
+     0,     0,     0,     0,   617,   200,   201,   202,   203,   204,
+     0,     0,     0,     0,     0,   205,   206,   207,   208,   339,
+   340,   211,   212,   213,     0,     0,     0,   214,     0,     0,
+     0,     0,   671,   200,   201,   202,   203,   204,     0,     0,
+     0,     0,     0,   205,   206,   207,   208,   339,   340,   211,
+   212,   213,     0,     0,     0,   214,     0,     0,     0,     0,
+   730,   200,   201,   202,   203,   204,     0,     0,     0,     0,
+     0,   205,   206,   207,   208,   339,   340,   211,   212,   213,
+     0,     0,     0,   214,     0,     0,     0,     0,   731,   200,
+   201,   202,   203,   204,     0,     0,     0,     0,     0,   205,
+   206,   207,   208,   339,   340,   211,   212,   213,     0,     0,
+     0,   214,     0,     0,     0,     0,   732,   200,   201,   202,
+   203,   204,     0,     0,     0,     0,     0,   205,   206,   207,
+   208,   339,   340,   211,   212,   213,     0,     0,     0,   214,
+     0,     0,     0,     0,   733,   200,   201,   202,   203,   204,
+     0,     0,     0,     0,     0,   205,   206,   207,   208,   339,
+   340,   211,   212,   213,     0,     0,     0,   214,     0,     0,
+     0,     0,   829,   200,   201,   202,   203,   204,     0,     0,
+     0,     0,     0,   205,   206,   207,   208,   339,   340,   211,
+   212,   213,     0,     0,     0,   214,     0,     0,     0,     0,
+   894,   200,   201,   202,   203,   204,     0,     0,     0,     0,
+     0,   205,   206,   207,   208,   339,   340,   211,   212,   213,
+     0,     0,     0,   214,     0,     0,     0,     0,   926,   200,
+   201,   202,   203,   204,     0,     0,     0,     0,     0,   205,
+   206,   207,   208,   339,   340,   211,   212,   213,     0,     0,
+     0,   214,     0,     0,     0,     0,  1018,   200,   201,   202,
+   203,   204,     0,     0,     0,     0,     0,   205,   206,   207,
+   208,   339,   340,   211,   212,   213,     0,     0,     0,   214,
+     0,     0,     0,     0,  1022,   200,   201,   202,   203,   204,
+     0,     0,     0,     0,     0,   205,   206,   207,   208,   339,
+   340,   211,   212,   213,     0,     0,     0,   214,     0,     0,
+     0,     0,  1024,   200,   201,   202,   203,   204,     0,     0,
+     0,     0,     0,   205,   206,   207,   208,   339,   340,   211,
+   212,   213,     0,     0,     0,   214,     0,     0,     0,     0,
+  1147,   200,   201,   202,   203,   204,     0,     0,     0,     0,
+     0,   205,   206,   207,   208,   339,   340,   211,   212,   213,
+     0,     0,     0,   214,     0,     0,     0,     0,  1149,   200,
+   201,   202,   203,   204,     0,     0,     0,     0,     0,   205,
+   206,   207,   208,   339,   340,   211,   212,   213,     0,     0,
+     0,   214,     0,     0,     0,     0,  1151,   200,   201,   202,
+   203,   204,     0,     0,     0,     0,     0,   205,   206,   207,
+   208,   339,   340,   211,   212,   213,     0,     0,     0,   214,
+     0,     0,     0,     0,  1171,   200,   201,   202,   203,   204,
+     0,     0,     0,     0,     0,   205,   206,   207,   208,   339,
+   340,   211,   212,   213,     0,     0,     0,   214,     0,     0,
+     0,     0,  1172,   200,   201,   202,   203,   204,     0,     0,
+     0,     0,     0,   205,   206,   207,   208,   339,   340,   211,
+   212,   213,     0,     0,     0,   214,     0,     0,     0,     0,
+  1173,   200,   201,   202,   203,   204,     0,     0,     0,     0,
+     0,   205,   206,   207,   208,   339,   340,   211,   212,   213,
+     0,     0,     0,   214,     0,     0,     0,     0,  1320,   200,
+   201,   202,   203,   204,     0,     0,     0,     0,     0,   205,
+   206,   207,   208,   339,   340,   211,   212,   213,     0,     0,
+     0,   214,     0,     0,     0,     0,  1321,   200,   201,   202,
+   203,   204,     0,     0,     0,     0,     0,   205,   206,   207,
+   208,   339,   340,   211,   212,   213,     0,     0,     0,   214,
+     0,     0,     0,     0,  1322,   200,   201,   202,   203,   204,
+     0,     0,     0,     0,     0,   205,   206,   207,   208,   339,
+   340,   211,   212,   213,     0,     0,     0,   214,     0,     0,
+     0,     0,  1401,   200,   201,   202,   203,   204,     0,     0,
+     0,     0,     0,   205,   206,   207,   208,   339,   340,   211,
+   212,   213,     0,     0,     0,   214,     0,     0,     0,     0,
+  1402,   200,   201,   202,   203,   204,     0,     0,     0,     0,
+     0,   205,   206,   207,   208,   339,   340,   211,   212,   213,
+     0,     0,     0,   214,     0,     0,     0,     0,  1403,   200,
+   201,   202,   203,   204,     0,     0,     0,     0,     0,   205,
+   206,   207,   208,   339,   340,   211,   212,   213,     0,     0,
+     0,   214,     0,     0,     0,     0,  1449,   200,   201,   202,
+   203,   204,     0,     0,     0,     0,     0,   205,   206,   207,
+   208,   339,   340,   211,   212,   213,     0,     0,     0,   214,
+     0,     0,     0,     0,  1450,   200,   201,   202,   203,   204,
+     0,     0,     0,     0,     0,   205,   206,   207,   208,   339,
+   340,   211,   212,   213,     0,     0,     0,   214,     0,     0,
+     0,     0,  1451,   200,   201,   202,   203,   204,     0,     0,
+     0,     0,     0,   205,   206,   207,   208,   339,   340,   211,
+   212,   213,     0,     0,     0,   214,     0,     0,     0,   438,
+   200,   201,   202,   203,   204,     0,     0,     0,     0,     0,
+   205,   206,   207,   208,   339,   340,   211,   212,   213,     0,
+     0,     0,   214,     0,     0,     0,   439,   200,   201,   202,
+   203,   204,     0,     0,     0,     0,     0,   205,   206,   207,
+   208,   339,   340,   211,   212,   213,     0,     0,     0,   214,
+     0,     0,     0,   479,   200,   201,   202,   203,   204,     0,
+     0,     0,     0,     0,   205,   206,   207,   208,   339,   340,
+   211,   212,   213,     0,     0,     0,   214,     0,     0,     0,
+   486,   200,   201,   202,   203,   204,     0,     0,     0,     0,
+     0,   205,   206,   207,   208,   339,   340,   211,   212,   213,
+     0,     0,     0,   214,     0,     0,     0,   487,   200,   201,
+   202,   203,   204,     0,     0,     0,     0,     0,   205,   206,
+   207,   208,   339,   340,   211,   212,   213,     0,     0,     0,
+   214,   492,     0,     0,   488,   200,   201,   202,   203,   204,
+     0,     0,     0,     0,     0,   205,   206,   207,   208,   339,
+   340,   211,   212,   213,     0,     0,     0,   214,   200,   201,
+   202,   203,   204,     0,     0,     0,     0,     0,   205,   206,
+   207,   208,   339,   340,   211,   212,   213,     0,     0,     0,
+   214,     0,     0,     0,   580,   200,   201,   202,   203,   204,
+     0,     0,     0,     0,     0,   205,   206,   207,   208,   339,
+   340,   211,   212,   213,     0,     0,     0,   214,     0,     0,
+     0,   581,   200,   201,   202,   203,   204,     0,     0,     0,
+     0,     0,   205,   206,   207,   208,   339,   340,   211,   212,
+   213,     0,     0,     0,   214,     0,     0,     0,   582,   200,
+   201,   202,   203,   204,     0,     0,     0,     0,     0,   205,
+   206,   207,   208,   339,   340,   211,   212,   213,     0,     0,
+     0,   214,     0,     0,     0,   699,   200,   201,   202,   203,
+   204,     0,     0,     0,     0,     0,   205,   206,   207,   208,
+   339,   340,   211,   212,   213,     0,     0,     0,   214,     0,
+     0,     0,   700,   200,   201,   202,   203,   204,     0,     0,
+     0,     0,     0,   205,   206,   207,   208,   339,   340,   211,
+   212,   213,     0,     0,     0,   214,     0,     0,     0,   826,
+   200,   201,   202,   203,   204,     0,     0,     0,     0,     0,
+   205,   206,   207,   208,   339,   340,   211,   212,   213,     0,
+     0,     0,   214,     0,     0,     0,   827,   200,   201,   202,
+   203,   204,     0,     0,     0,     0,     0,   205,   206,   207,
+   208,   339,   340,   211,   212,   213,     0,     0,     0,   214,
+     0,     0,     0,   839,   200,   201,   202,   203,   204,     0,
+     0,     0,     0,     0,   205,   206,   207,   208,   339,   340,
+   211,   212,   213,     0,     0,     0,   214,     0,     0,     0,
+   840,   200,   201,   202,   203,   204,     0,     0,     0,     0,
+     0,   205,   206,   207,   208,   339,   340,   211,   212,   213,
+     0,     0,     0,   214,     0,     0,     0,   879,   200,   201,
+   202,   203,   204,     0,     0,     0,     0,     0,   205,   206,
+   207,   208,   339,   340,   211,   212,   213,     0,     0,     0,
+   214,     0,     0,     0,   906,   200,   201,   202,   203,   204,
+     0,     0,     0,     0,     0,   205,   206,   207,   208,   339,
+   340,   211,   212,   213,     0,     0,     0,   214,     0,     0,
+     0,   907,   200,   201,   202,   203,   204,     0,     0,     0,
+     0,     0,   205,   206,   207,   208,   339,   340,   211,   212,
+   213,     0,     0,     0,   214,     0,     0,     0,   908,   200,
+   201,   202,   203,   204,     0,     0,     0,     0,     0,   205,
+   206,   207,   208,   339,   340,   211,   212,   213,     0,     0,
+     0,   214,     0,     0,     0,   909,   200,   201,   202,   203,
+   204,     0,     0,     0,     0,     0,   205,   206,   207,   208,
+   339,   340,   211,   212,   213,     0,     0,     0,   214,     0,
+     0,     0,   910,   200,   201,   202,   203,   204,     0,     0,
+     0,     0,     0,   205,   206,   207,   208,   339,   340,   211,
+   212,   213,     0,     0,     0,   214,     0,     0,     0,   911,
+   200,   201,   202,   203,   204,     0,     0,     0,     0,     0,
+   205,   206,   207,   208,   339,   340,   211,   212,   213,     0,
+     0,     0,   214,     0,     0,     0,   912,   200,   201,   202,
+   203,   204,     0,     0,     0,     0,     0,   205,   206,   207,
+   208,   339,   340,   211,   212,   213,     0,     0,     0,   214,
+     0,     0,     0,   913,   200,   201,   202,   203,   204,     0,
+     0,     0,     0,     0,   205,   206,   207,   208,   339,   340,
+   211,   212,   213,     0,     0,     0,   214,     0,     0,     0,
+   914,   200,   201,   202,   203,   204,     0,     0,     0,     0,
+     0,   205,   206,   207,   208,   339,   340,   211,   212,   213,
+     0,     0,     0,   214,     0,     0,     0,   915,   200,   201,
+   202,   203,   204,     0,     0,     0,     0,     0,   205,   206,
+   207,   208,   339,   340,   211,   212,   213,     0,     0,     0,
+   214,     0,     0,     0,   916,   200,   201,   202,   203,   204,
+     0,     0,     0,     0,     0,   205,   206,   207,   208,   339,
+   340,   211,   212,   213,     0,     0,     0,   214,     0,     0,
+     0,   917,   200,   201,   202,   203,   204,     0,     0,     0,
+     0,     0,   205,   206,   207,   208,   339,   340,   211,   212,
+   213,     0,     0,     0,   214,     0,     0,     0,   971,   200,
+   201,   202,   203,   204,     0,     0,     0,     0,     0,   205,
+   206,   207,   208,   339,   340,   211,   212,   213,     0,     0,
+     0,   214,     0,     0,     0,   999,   200,   201,   202,   203,
+   204,     0,     0,     0,     0,     0,   205,   206,   207,   208,
+   339,   340,   211,   212,   213,     0,     0,     0,   214,     0,
+     0,     0,  1000,   200,   201,   202,   203,   204,     0,     0,
+     0,     0,     0,   205,   206,   207,   208,   339,   340,   211,
+   212,   213,     0,     0,     0,   214,     0,     0,     0,  1012,
+   200,   201,   202,   203,   204,     0,     0,     0,     0,     0,
+   205,   206,   207,   208,   339,   340,   211,   212,   213,     0,
+     0,     0,   214,     0,     0,     0,  1023,   200,   201,   202,
+   203,   204,     0,     0,     0,     0,     0,   205,   206,   207,
+   208,   339,   340,   211,   212,   213,     0,     0,     0,   214,
+     0,     0,     0,  1028,   200,   201,   202,   203,   204,     0,
+     0,     0,     0,     0,   205,   206,   207,   208,   339,   340,
+   211,   212,   213,     0,     0,     0,   214,     0,     0,     0,
+  1031,   200,   201,   202,   203,   204,     0,     0,     0,     0,
+     0,   205,   206,   207,   208,   339,   340,   211,   212,   213,
+     0,     0,     0,   214,     0,     0,     0,  1048,   200,   201,
+   202,   203,   204,     0,     0,     0,     0,     0,   205,   206,
+   207,   208,   339,   340,   211,   212,   213,     0,     0,     0,
+   214,     0,     0,     0,  1059,   200,   201,   202,   203,   204,
+     0,     0,     0,     0,     0,   205,   206,   207,   208,   339,
+   340,   211,   212,   213,     0,     0,     0,   214,     0,     0,
+     0,  1060,   200,   201,   202,   203,   204,     0,     0,     0,
+     0,     0,   205,   206,   207,   208,   339,   340,   211,   212,
+   213,     0,     0,     0,   214,     0,     0,     0,  1061,   200,
+   201,   202,   203,   204,     0,     0,     0,     0,     0,   205,
+   206,   207,   208,   339,   340,   211,   212,   213,     0,     0,
+     0,   214,     0,     0,     0,  1062,   200,   201,   202,   203,
+   204,     0,     0,     0,     0,     0,   205,   206,   207,   208,
+   339,   340,   211,   212,   213,     0,     0,     0,   214,     0,
+     0,     0,  1063,   200,   201,   202,   203,   204,     0,     0,
+     0,     0,     0,   205,   206,   207,   208,   339,   340,   211,
+   212,   213,     0,     0,     0,   214,     0,     0,     0,  1064,
+   200,   201,   202,   203,   204,     0,     0,     0,     0,     0,
+   205,   206,   207,   208,   339,   340,   211,   212,   213,     0,
+     0,     0,   214,     0,     0,     0,  1065,   200,   201,   202,
+   203,   204,     0,     0,     0,     0,     0,   205,   206,   207,
+   208,   339,   340,   211,   212,   213,     0,     0,     0,   214,
+     0,     0,     0,  1066,   200,   201,   202,   203,   204,     0,
+     0,     0,     0,     0,   205,   206,   207,   208,   339,   340,
+   211,   212,   213,     0,     0,     0,   214,     0,     0,     0,
+  1067,   200,   201,   202,   203,   204,     0,     0,     0,     0,
+     0,   205,   206,   207,   208,   339,   340,   211,   212,   213,
+     0,     0,     0,   214,     0,     0,     0,  1068,   200,   201,
+   202,   203,   204,     0,     0,     0,     0,     0,   205,   206,
+   207,   208,   339,   340,   211,   212,   213,     0,     0,     0,
+   214,     0,     0,     0,  1069,   200,   201,   202,   203,   204,
+     0,     0,     0,     0,     0,   205,   206,   207,   208,   339,
+   340,   211,   212,   213,     0,     0,     0,   214,     0,     0,
+     0,  1070,   200,   201,   202,   203,   204,     0,     0,     0,
+     0,     0,   205,   206,   207,   208,   339,   340,   211,   212,
+   213,     0,     0,     0,   214,     0,     0,     0,  1114,   200,
+   201,   202,   203,   204,     0,     0,     0,     0,     0,   205,
+   206,   207,   208,   339,   340,   211,   212,   213,     0,     0,
+     0,   214,     0,     0,     0,  1144,   200,   201,   202,   203,
+   204,     0,     0,     0,     0,     0,   205,   206,   207,   208,
+   339,   340,   211,   212,   213,     0,     0,     0,   214,     0,
+     0,     0,  1162,   200,   201,   202,   203,   204,     0,     0,
+     0,     0,     0,   205,   206,   207,   208,   339,   340,   211,
+   212,   213,     0,     0,     0,   214,     0,     0,     0,  1163,
+   200,   201,   202,   203,   204,     0,     0,     0,     0,     0,
+   205,   206,   207,   208,   339,   340,   211,   212,   213,     0,
+     0,     0,   214,     0,     0,     0,  1164,   200,   201,   202,
+   203,   204,     0,     0,     0,     0,     0,   205,   206,   207,
+   208,   339,   340,   211,   212,   213,     0,     0,     0,   214,
+     0,     0,     0,  1165,   200,   201,   202,   203,   204,     0,
+     0,     0,     0,     0,   205,   206,   207,   208,   339,   340,
+   211,   212,   213,     0,     0,     0,   214,     0,     0,     0,
+  1166,   200,   201,   202,   203,   204,     0,     0,     0,     0,
+     0,   205,   206,   207,   208,   339,   340,   211,   212,   213,
+     0,     0,     0,   214,     0,     0,     0,  1167,   200,   201,
+   202,   203,   204,     0,     0,     0,     0,     0,   205,   206,
+   207,   208,   339,   340,   211,   212,   213,     0,     0,     0,
+   214,     0,     0,     0,  1168,   200,   201,   202,   203,   204,
+     0,     0,     0,     0,     0,   205,   206,   207,   208,   339,
+   340,   211,   212,   213,     0,     0,     0,   214,     0,     0,
+     0,  1169,   200,   201,   202,   203,   204,     0,     0,     0,
+     0,     0,   205,   206,   207,   208,   339,   340,   211,   212,
+   213,     0,     0,     0,   214,     0,     0,     0,  1170,   200,
+   201,   202,   203,   204,     0,     0,     0,     0,     0,   205,
+   206,   207,   208,   339,   340,   211,   212,   213,     0,     0,
+     0,   214,     0,     0,     0,  1221,   200,   201,   202,   203,
+   204,     0,     0,     0,     0,     0,   205,   206,   207,   208,
+   339,   340,   211,   212,   213,     0,     0,     0,   214,     0,
+     0,     0,  1222,   200,   201,   202,   203,   204,     0,     0,
+     0,     0,     0,   205,   206,   207,   208,   339,   340,   211,
+   212,   213,     0,     0,     0,   214,     0,     0,     0,  1223,
+   200,   201,   202,   203,   204,     0,     0,     0,     0,     0,
+   205,   206,   207,   208,   339,   340,   211,   212,   213,     0,
+     0,     0,   214,     0,     0,     0,  1224,   200,   201,   202,
+   203,   204,     0,     0,     0,     0,     0,   205,   206,   207,
+   208,   339,   340,   211,   212,   213,     0,     0,     0,   214,
+     0,     0,     0,  1225,   200,   201,   202,   203,   204,     0,
+     0,     0,     0,     0,   205,   206,   207,   208,   339,   340,
+   211,   212,   213,     0,     0,     0,   214,     0,     0,     0,
+  1226,   200,   201,   202,   203,   204,     0,     0,     0,     0,
+     0,   205,   206,   207,   208,   339,   340,   211,   212,   213,
+     0,     0,     0,   214,     0,     0,     0,  1227,   200,   201,
+   202,   203,   204,     0,     0,     0,     0,     0,   205,   206,
+   207,   208,   339,   340,   211,   212,   213,     0,     0,     0,
+   214,     0,     0,     0,  1228,   200,   201,   202,   203,   204,
+     0,     0,     0,     0,     0,   205,   206,   207,   208,   339,
+   340,   211,   212,   213,     0,     0,     0,   214,     0,     0,
+     0,  1229,   200,   201,   202,   203,   204,     0,     0,     0,
+     0,     0,   205,   206,   207,   208,   339,   340,   211,   212,
+   213,     0,     0,     0,   214,     0,     0,     0,  1270,   200,
+   201,   202,   203,   204,     0,     0,     0,     0,     0,   205,
+   206,   207,   208,   339,   340,   211,   212,   213,     0,     0,
+     0,   214,     0,     0,     0,  1271,   200,   201,   202,   203,
+   204,     0,     0,     0,     0,     0,   205,   206,   207,   208,
+   339,   340,   211,   212,   213,     0,     0,     0,   214,     0,
+     0,     0,  1272,   200,   201,   202,   203,   204,     0,     0,
+     0,     0,     0,   205,   206,   207,   208,   339,   340,   211,
+   212,   213,     0,     0,     0,   214,     0,     0,     0,  1273,
+   200,   201,   202,   203,   204,     0,     0,     0,     0,     0,
+   205,   206,   207,   208,   339,   340,   211,   212,   213,     0,
+     0,     0,   214,     0,     0,     0,  1274,   200,   201,   202,
+   203,   204,     0,     0,     0,     0,     0,   205,   206,   207,
+   208,   339,   340,   211,   212,   213,     0,     0,     0,   214,
+     0,     0,     0,  1275,   200,   201,   202,   203,   204,     0,
+     0,     0,     0,     0,   205,   206,   207,   208,   339,   340,
+   211,   212,   213,     0,     0,     0,   214,     0,     0,     0,
+  1276,   200,   201,   202,   203,   204,     0,     0,     0,     0,
+     0,   205,   206,   207,   208,   339,   340,   211,   212,   213,
+     0,     0,     0,   214,     0,     0,     0,  1277,   200,   201,
+   202,   203,   204,     0,     0,     0,     0,     0,   205,   206,
+   207,   208,   339,   340,   211,   212,   213,     0,     0,     0,
+   214,     0,     0,     0,  1278,   200,   201,   202,   203,   204,
+     0,     0,     0,     0,     0,   205,   206,   207,   208,   339,
+   340,   211,   212,   213,     0,     0,     0,   214,     0,     0,
+     0,  1310,   200,   201,   202,   203,   204,     0,     0,     0,
+     0,     0,   205,   206,   207,   208,   339,   340,   211,   212,
+   213,     0,     0,     0,   214,     0,     0,     0,  1314,   200,
+   201,   202,   203,   204,     0,     0,     0,     0,     0,   205,
+   206,   207,   208,   339,   340,   211,   212,   213,     0,     0,
+     0,   214,     0,     0,     0,  1315,   200,   201,   202,   203,
+   204,     0,     0,     0,     0,     0,   205,   206,   207,   208,
+   339,   340,   211,   212,   213,     0,     0,     0,   214,     0,
+     0,     0,  1316,   200,   201,   202,   203,   204,     0,     0,
+     0,     0,     0,   205,   206,   207,   208,   339,   340,   211,
+   212,   213,     0,     0,     0,   214,     0,     0,     0,  1317,
+   200,   201,   202,   203,   204,     0,     0,     0,     0,     0,
+   205,   206,   207,   208,   339,   340,   211,   212,   213,     0,
+     0,     0,   214,     0,     0,     0,  1318,   200,   201,   202,
+   203,   204,     0,     0,     0,     0,     0,   205,   206,   207,
+   208,   339,   340,   211,   212,   213,     0,     0,     0,   214,
+     0,     0,     0,  1319,   200,   201,   202,   203,   204,     0,
+     0,     0,     0,     0,   205,   206,   207,   208,   339,   340,
+   211,   212,   213,     0,     0,     0,   214,     0,     0,     0,
+  1337,   200,   201,   202,   203,   204,     0,     0,     0,     0,
+     0,   205,   206,   207,   208,   339,   340,   211,   212,   213,
+     0,     0,     0,   214,     0,     0,     0,  1342,   200,   201,
+   202,   203,   204,     0,     0,     0,     0,     0,   205,   206,
+   207,   208,   339,   340,   211,   212,   213,     0,     0,     0,
+   214,     0,     0,     0,  1343,   200,   201,   202,   203,   204,
+     0,     0,     0,     0,     0,   205,   206,   207,   208,   339,
+   340,   211,   212,   213,     0,     0,     0,   214,     0,     0,
+     0,  1344,   200,   201,   202,   203,   204,     0,     0,     0,
+     0,     0,   205,   206,   207,   208,   339,   340,   211,   212,
+   213,     0,     0,     0,   214,     0,     0,     0,  1345,   200,
+   201,   202,   203,   204,     0,     0,     0,     0,     0,   205,
+   206,   207,   208,   339,   340,   211,   212,   213,     0,     0,
+     0,   214,     0,     0,     0,  1346,   200,   201,   202,   203,
+   204,     0,     0,     0,     0,     0,   205,   206,   207,   208,
+   339,   340,   211,   212,   213,     0,     0,     0,   214,     0,
+     0,     0,  1347,   200,   201,   202,   203,   204,     0,     0,
+     0,     0,     0,   205,   206,   207,   208,   339,   340,   211,
+   212,   213,     0,     0,     0,   214,     0,     0,     0,  1370,
+   200,   201,   202,   203,   204,     0,     0,     0,     0,     0,
+   205,   206,   207,   208,   339,   340,   211,   212,   213,     0,
+     0,     0,   214,     0,     0,     0,  1371,   200,   201,   202,
+   203,   204,     0,     0,     0,     0,     0,   205,   206,   207,
+   208,   339,   340,   211,   212,   213,     0,     0,     0,   214,
+     0,     0,     0,  1372,   200,   201,   202,   203,   204,     0,
+     0,     0,     0,     0,   205,   206,   207,   208,   339,   340,
+   211,   212,   213,     0,     0,     0,   214,     0,     0,     0,
+  1373,   200,   201,   202,   203,   204,     0,     0,     0,     0,
+     0,   205,   206,   207,   208,   339,   340,   211,   212,   213,
+     0,     0,     0,   214,     0,     0,     0,  1374,   200,   201,
+   202,   203,   204,     0,     0,     0,     0,     0,   205,   206,
+   207,   208,   339,   340,   211,   212,   213,     0,     0,     0,
+   214,     0,     0,     0,  1375,   200,   201,   202,   203,   204,
+     0,     0,     0,     0,     0,   205,   206,   207,   208,   339,
+   340,   211,   212,   213,     0,     0,     0,   214,     0,     0,
+     0,  1398,   200,   201,   202,   203,   204,     0,     0,     0,
+     0,     0,   205,   206,   207,   208,   339,   340,   211,   212,
+   213,     0,     0,     0,   214,     0,     0,     0,  1399,   200,
+   201,   202,   203,   204,     0,     0,     0,     0,     0,   205,
+   206,   207,   208,   339,   340,   211,   212,   213,     0,     0,
+     0,   214,     0,     0,     0,  1400,   200,   201,   202,   203,
+   204,     0,     0,     0,     0,     0,   205,   206,   207,   208,
+   339,   340,   211,   212,   213,     0,     0,     0,   214,     0,
+     0,     0,  1412,   200,   201,   202,   203,   204,     0,     0,
+     0,     0,     0,   205,   206,   207,   208,   339,   340,   211,
+   212,   213,     0,     0,     0,   214,     0,     0,     0,  1413,
+   200,   201,   202,   203,   204,     0,     0,     0,     0,     0,
+   205,   206,   207,   208,   339,   340,   211,   212,   213,     0,
+     0,     0,   214,     0,     0,     0,  1414,   200,   201,   202,
+   203,   204,     0,     0,     0,     0,     0,   205,   206,   207,
+   208,   339,   340,   211,   212,   213,     0,     0,     0,   214,
+     0,     0,     0,  1429,   200,   201,   202,   203,   204,     0,
+     0,     0,     0,     0,   205,   206,   207,   208,   339,   340,
+   211,   212,   213,     0,     0,     0,   214,     0,     0,     0,
+  1430,   200,   201,   202,   203,   204,     0,     0,     0,     0,
+     0,   205,   206,   207,   208,   339,   340,   211,   212,   213,
+     0,     0,     0,   214,     0,     0,  1325,  1431,   200,   201,
+   202,   203,   204,     0,     0,     0,     0,     0,   205,   206,
+   207,   208,   339,   340,   211,   212,   213,     0,     0,     0,
+   214,   200,   201,   202,   203,   204,     0,     0,     0,     0,
+     0,   205,   206,   207,   208,   339,   340,   211,   212,   213,
+     0,     0,     0,   214
 };
 
 static const short yycheck[] = {     7,
-   112,   963,     3,     4,     5,   297,     6,     6,     9,    10,
-    11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-    21,    22,    23,    24,    25,    26,    27,    28,    29,     6,
-    41,    42,     5,   137,    56,    79,    56,     6,   892,   824,
-    58,     6,     4,     6,     4,    63,     4,   164,   833,     4,
-     4,   156,   157,   170,    58,   840,     4,     4,     4,    63,
-   167,   156,   157,   168,   156,   157,   171,     6,   156,   157,
-    30,     7,    30,    42,     6,   170,   168,   156,   157,   171,
-   168,     6,    35,   171,   156,   157,     6,   156,   157,   168,
-    98,    99,   100,   101,   102,     6,     4,   164,   170,    61,
-     6,   170,     6,   170,     6,   167,     6,   115,   116,   117,
-   118,   119,     6,    61,    61,    61,   124,   125,   126,   127,
-    82,   129,   130,   167,   132,   133,   134,     6,   136,   156,
-   157,   156,   157,    34,    35,    31,    37,   148,    34,    35,
-   151,    37,   169,   168,   152,   153,   157,   167,   170,  1003,
-   170,   167,   167,   171,   170,   156,   157,   156,   157,     7,
-     6,   169,   163,   171,     7,   173,   167,   171,    35,   170,
-   170,   179,   180,   181,   182,   183,   184,   185,   186,   187,
-   188,   189,   190,   191,   192,   193,   194,   195,   196,   197,
-   198,   156,   157,   170,   167,   203,   204,   205,   206,   207,
-   208,   209,   210,   211,   212,   213,   214,   215,   216,   217,
-   218,   171,  1174,   171,   167,   170,   170,   156,   157,  1004,
-     3,     4,   167,  1008,   156,   157,     9,    10,    11,    12,
-    13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-    23,    24,    25,    26,    27,    28,    29,     7,   156,   157,
-   156,   157,   156,   157,   156,   157,   156,   157,   266,   167,
-    31,   269,   170,    34,    35,   273,    35,   156,   157,   277,
-   278,   279,   167,   281,   282,   283,   284,   285,   286,   287,
-   169,     6,     7,   294,   295,    58,     0,     1,    39,     3,
-    63,   299,   300,   301,   167,   306,   167,   156,   157,     8,
-   148,   149,   150,   151,   312,   148,   149,   150,   151,   168,
-   318,   167,   156,   157,   156,   157,    35,   165,   166,   158,
-   159,   160,   165,   166,   168,   164,   168,   165,   166,  1114,
-  1115,  1116,  1117,   341,   342,   170,  1121,    31,    32,    33,
-    34,    35,    36,    37,    38,    37,    40,    31,    42,    43,
-    34,    45,    46,   156,   157,   168,   168,   169,   171,   142,
-   143,   144,   145,   146,   168,   168,    35,   171,    62,   152,
-   153,   154,   155,   156,   157,   158,   159,   160,    48,    49,
-   163,   164,    76,    77,   167,   165,   166,   170,   148,   149,
-   150,   151,   400,   107,   108,   109,   110,   111,   112,   113,
-   114,   168,   169,     5,   168,   165,   166,   415,   172,   170,
-     6,   170,   420,     0,     1,   167,     3,   428,   170,   167,
-   170,  1206,  1207,   431,   432,  1210,    50,    51,    52,    53,
-     5,    55,   440,   142,   143,   144,   145,   146,   132,   447,
-   170,   167,   170,   152,   153,   154,   155,   156,   157,   158,
-   159,   160,     6,     5,   462,   164,   145,   146,    35,   161,
-   169,   469,   164,   152,   153,   154,   155,   156,   157,   158,
-   159,   160,   480,   168,   172,   164,   171,   171,     5,   487,
-   488,   489,   167,   775,   492,     3,     4,     5,   167,  1274,
-   167,     9,    10,    11,    12,    13,    14,    15,    16,    17,
+   110,   297,   985,     6,     6,     6,    56,     7,     6,    35,
+    58,     4,   920,    79,     4,    63,    56,     4,     4,   136,
+    58,    58,     6,     4,     4,    63,    63,   155,   156,     5,
+    41,    42,   155,   156,   155,   156,   167,   155,   156,   167,
+   171,   846,   170,     6,   167,     7,   167,   170,   163,   170,
+   855,   169,   155,   156,   169,   155,   156,   862,    42,   155,
+   156,   155,   156,     6,     6,     6,   169,     6,    61,   169,
+   163,    61,   168,   167,    61,    61,   169,     6,     7,     6,
+   155,   156,   155,   156,   166,     4,     6,   169,    96,    97,
+    98,    99,   100,   168,   167,    82,   164,   165,     7,     6,
+   166,   166,     7,     6,  1012,   113,   114,   115,   116,   117,
+    34,    35,   166,    37,     6,   123,   124,   125,   126,   169,
+   128,   129,   170,   131,   132,   133,   166,   135,     6,   169,
+    31,     6,   170,    34,   155,   156,   147,     6,   166,   150,
+   166,   155,   156,   151,   152,   156,   167,   147,   148,   149,
+   150,   167,   168,   167,   155,   156,   166,   155,   156,   169,
+   168,   166,   170,   171,   164,   165,   169,   169,   176,   177,
+   178,   179,   180,   181,   182,   183,   184,   185,   186,   187,
+   188,   189,   190,   191,   192,   193,   194,   195,   169,   169,
+   166,   166,   200,   201,   202,   203,   204,   205,   206,   207,
+   208,   209,   210,   211,   212,   213,   214,   215,  1013,     3,
+     4,  1194,  1017,   155,   156,     9,    10,    11,    12,    13,
+    14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+    24,    25,    26,    27,    28,    29,   155,   156,   147,   148,
+   149,   150,   147,   148,   149,   150,    39,   166,   155,   156,
+   169,   167,   155,   156,   170,   164,   165,    35,   266,   164,
+   165,   269,   171,   155,   156,   273,   157,   158,   159,   277,
+   278,   279,   163,   281,   282,   283,   284,   285,   286,   287,
+   155,   156,   167,   294,   295,   170,   155,   156,   155,   156,
+   166,   299,   300,   301,   166,   306,   166,   155,   156,    31,
+   167,    35,    34,    35,   312,    37,    48,    49,   316,   167,
+    50,    51,    52,    53,    35,    55,     6,    64,    65,    66,
+    67,    68,    69,    70,    71,    72,    73,    74,    75,    37,
+    31,   339,   340,    34,    35,   169,  1141,  1142,  1143,  1144,
+   169,   167,   167,  1148,   170,   170,   169,   141,   142,   143,
+   144,   145,   167,     8,     5,   170,    35,   151,   152,   153,
+   154,   155,   156,   157,   158,   159,   169,   167,   162,   163,
+   170,   167,   166,     6,   170,   169,   167,   167,   168,   170,
+     6,    91,    92,    93,    94,    95,     5,   398,   399,   400,
+   398,   399,   400,   401,   402,   167,   166,   405,   170,   407,
+   166,   155,   156,   157,   158,   159,  1211,  1212,     8,   163,
+  1215,     6,   167,     5,   422,   170,     5,   167,    35,   427,
+   170,    47,   167,   170,   435,   170,   167,   164,   165,   170,
+   438,   439,   167,   160,     6,   170,   163,   166,   171,   447,
+   166,   166,   166,   166,   166,     6,   454,   166,   166,   166,
+   166,   141,   142,   143,   144,   145,   464,   166,     6,  1264,
+   468,   151,   152,   153,   154,   155,   156,   157,   158,   159,
+   166,   479,   166,   163,   166,   166,     5,   166,   486,   487,
+   488,   166,   166,   491,   166,   166,   141,   142,   143,   144,
+   145,   166,   166,   166,   166,   166,   151,   152,   153,   154,
+   155,   156,   157,   158,   159,   169,   169,  1312,   163,   169,
+   806,   169,   166,   168,   166,   141,   142,   143,   144,   145,
+   531,     6,   530,   531,   532,   151,   152,   153,   154,   155,
+   156,   157,   158,   159,   166,   546,  1341,   163,   166,   166,
+   171,   141,   142,   143,   144,   145,   169,   657,   169,   557,
+   558,   151,   152,   153,   154,   155,   156,   157,   158,   159,
+     6,     6,   166,   163,   163,   166,   574,     5,   166,   580,
+   581,   582,   166,   166,   171,     3,     4,     5,   166,   166,
+   166,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
-    28,    29,    92,    93,    94,    95,    96,   167,   167,   530,
-   107,   108,   109,   110,   111,   112,   113,   114,   168,   168,
-   642,   171,   171,   541,   542,   156,   157,   158,   159,   160,
-  1325,   168,   168,   164,   171,   171,   133,   134,   168,   136,
-   558,   171,   167,   564,   565,   566,   168,   168,   168,   171,
-   171,   171,   135,   168,     6,   168,   171,   140,   171,   167,
-  1355,   152,   153,   154,   155,   156,   157,   158,   159,   160,
-     6,     6,   168,   164,   167,   171,   594,   595,   167,   597,
-   163,   167,     5,   167,   167,   168,   167,   167,   167,   167,
-   167,   167,   613,   611,   612,   167,     3,     4,   167,   167,
-   167,   622,     9,    10,    11,    12,    13,    14,    15,    16,
-    17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
-    27,    28,    29,   167,   167,   170,   167,   167,   156,   157,
-   172,   170,   170,   167,   167,   163,   167,   167,   656,   167,
-   167,   170,   170,     6,   170,   170,     6,  1442,   167,   164,
-   167,   669,   954,   671,   672,   167,   167,   167,   167,   167,
-   167,   679,   680,   681,   682,   683,   684,   685,   686,   687,
-   688,   689,   690,   167,   167,   167,   167,   167,   167,   167,
-   167,   167,   167,   701,   167,   703,     3,     4,   167,   167,
-   167,   709,     9,    10,    11,    12,    13,    14,    15,    16,
-    17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
-    27,    28,    29,   167,   167,     5,   167,   167,   167,   167,
-   167,   167,   167,     7,   846,   168,     7,   169,   168,   750,
-   168,     7,     7,    80,   173,     5,     5,     5,   125,   757,
-     5,     8,     5,     5,   762,   763,     5,     5,     5,   156,
-   157,     5,     5,     5,     5,   776,   163,   778,     5,   780,
-   167,     5,     5,   170,     5,     5,     5,     5,     5,     5,
-     5,     5,     5,     5,     5,     3,     5,   795,   796,     5,
-     7,     6,   803,   804,   805,   803,   804,   805,   806,   807,
-     5,     7,   810,     6,   173,     7,     7,   815,     6,   817,
-     6,   171,     7,     7,     7,   171,   170,     7,   170,   827,
-   167,     7,   167,   172,   139,   168,   834,   835,   836,   168,
-   168,     5,   168,   841,   168,   168,   168,   845,   168,   168,
-   168,     6,   168,   851,   168,   168,   168,   168,   168,   156,
-   157,   168,   168,     7,   168,   168,   163,   168,   168,   867,
-   167,   169,   168,   170,   168,   168,   168,   168,   168,   168,
-   878,   879,   880,   881,   882,   883,   884,   885,   886,   887,
-   888,   889,    47,   168,   168,   142,   143,   144,   145,   146,
-   901,     7,   900,   901,   902,   152,   153,   154,   155,   156,
-   157,   158,   159,   160,     7,     7,   170,   164,     7,     7,
-   918,     3,     4,     7,     7,   135,     7,     9,    10,    11,
-    12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-    22,    23,    24,    25,    26,    27,    28,    29,    64,    65,
-    66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
-   958,   959,   960,     7,     7,     7,   167,   167,   167,   532,
-   533,     6,   535,   167,     6,     3,   539,   540,   167,   977,
-   978,     7,     7,     3,     3,   167,   984,   142,   143,   144,
-   145,   146,   167,   167,   167,   167,   167,   152,   153,   154,
-   155,   156,   157,   158,   159,   160,   167,   158,  1006,   164,
-     3,     3,     3,     3,     3,     3,  1014,     3,     3,     3,
-     3,  1019,     3,     5,  1022,     5,     3,     6,  1026,     3,
-     6,     6,   170,   596,     6,     6,   599,  1035,  1036,  1037,
-  1038,  1039,  1040,  1041,  1042,  1043,  1044,  1045,  1046,     6,
-     6,     6,    81,   173,   172,   171,   619,   620,   172,  1057,
-   168,  1059,   625,   626,   168,     6,   169,   168,   168,   632,
-   169,   634,   169,   168,   156,   157,     6,   168,   168,     6,
-     6,   163,   169,   169,   647,   167,   649,     6,   168,   168,
-   168,   168,   168,   168,   657,   658,   659,   169,   168,   662,
-   663,   664,   665,   666,   667,   668,   168,   168,   168,  1107,
-   142,   143,   144,   145,   146,  1113,   168,     6,   169,   168,
-   152,   153,   154,   155,   156,   157,   158,   159,   160,   168,
-     6,     6,   164,     6,     6,  1133,  1134,  1135,  1136,  1137,
-  1138,  1139,  1140,  1141,     6,     6,     6,     6,   172,  1150,
-  1151,  1152,  1150,  1151,  1152,  1153,  1154,  1155,  1156,     6,
-  1158,  1159,  1160,   142,   143,   144,   145,   146,     6,    81,
-     7,     6,     6,   152,   153,   154,   155,   156,   157,   158,
-   159,   160,     3,     4,     4,   164,     4,     3,     9,    10,
+    28,    29,   610,   611,   166,   613,   166,   166,   151,   152,
+   153,   154,   155,   156,   157,   158,   159,   628,   626,   627,
+   163,   166,   166,  1428,   166,   166,   637,   166,   166,     3,
+     4,     5,   166,   166,   166,     9,    10,    11,    12,    13,
+    14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+    24,    25,    26,    27,    28,    29,   141,   142,   143,   144,
+   145,   166,   166,   166,   166,   166,   151,   152,   153,   154,
+   155,   156,   157,   158,   159,     6,   684,   166,   163,   166,
+   976,   167,   166,   166,   166,   166,     7,     7,   168,   697,
+   167,   699,   700,   172,   167,     0,     1,     7,     3,   707,
+   708,   709,   710,   711,   712,   713,   714,   715,   716,   717,
+   718,     7,    80,   172,     5,     5,     5,     5,   726,     5,
+   728,     5,     5,     5,     5,     5,   734,   155,   156,     6,
+     5,   134,     5,     5,   162,     5,   139,     5,   166,     5,
+     5,   169,     5,     5,     5,    64,    65,    66,    67,    68,
+    69,    70,    71,    72,    73,    74,    75,     5,   868,   162,
+     5,     5,   124,   166,   167,     5,     5,     5,   776,     5,
+   781,     3,     5,     7,     5,     4,     6,     5,   172,     6,
+   788,   155,   156,     6,     6,   793,   794,     7,   162,     7,
+     7,     6,   166,     6,   170,   169,   807,     7,   809,     7,
+   811,   106,   107,   108,   109,   110,   111,   112,   113,     7,
+   141,   142,   143,   144,   145,   170,   169,   169,   826,   827,
+   151,   152,   153,   154,   155,   156,   157,   158,   159,   837,
+     6,   839,   163,     7,   166,     7,   138,   167,   167,   167,
+   167,   849,   167,   167,   167,   167,     5,     7,   856,   857,
+   858,   170,   167,   167,   167,   863,   167,     6,   167,   867,
+   167,   869,   168,   167,   141,   142,   143,   144,   145,   167,
+   167,   879,   167,   167,   151,   152,   153,   154,   155,   156,
+   157,   158,   159,     7,   171,     7,   163,   895,   167,   167,
+     7,   167,     7,   167,     7,     7,   167,     7,   906,   907,
+   908,   909,   910,   911,   912,   913,   914,   915,   916,   917,
+   167,   167,   167,   167,   167,   167,   167,     7,     3,     4,
+   169,   929,   134,     7,     9,    10,    11,    12,    13,    14,
+    15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+    25,    26,    27,    28,    29,     7,     7,     7,     6,     3,
+     6,   962,   963,   964,   962,   963,   964,   965,   966,   967,
+   968,   166,   970,   971,   166,   141,   142,   143,   144,   145,
+   166,   166,   980,   981,   982,   151,   152,   153,   154,   155,
+   156,   157,   158,   159,   166,   166,   166,   163,   166,   166,
+     6,   999,  1000,   166,     7,   166,   166,     7,  1006,     3,
+     3,   157,     3,     3,     3,     3,   171,  1015,     3,     3,
+     3,     3,     3,     3,     3,  1023,   169,     5,     5,     3,
+  1028,     3,    81,  1031,   171,     6,     6,     6,     6,     6,
+     6,     6,     6,   167,    31,    32,    33,    34,    35,    36,
+    37,    38,  1050,    40,   167,    42,    43,   168,    45,    46,
+   168,  1059,  1060,  1061,  1062,  1063,  1064,  1065,  1066,  1067,
+  1068,  1069,  1070,   167,   167,    62,   168,   167,   167,  1077,
+   155,   156,   167,     4,   168,   168,   167,   162,   167,    76,
+    77,   166,   168,   171,   169,   141,   142,   143,   144,   145,
+   167,   167,   167,   167,   167,   151,   152,   153,   154,   155,
+   156,   157,   158,   159,   144,   145,  1114,   163,   172,     6,
+   167,   151,   152,   153,   154,   155,   156,   157,   158,   159,
+   167,   167,   167,   163,   168,   141,   142,   143,   144,   145,
+   167,   167,  1140,     6,   131,   151,   152,   153,   154,   155,
+   156,   157,   158,   159,     6,   548,   549,   163,   551,     6,
+     6,     6,   555,   556,  1162,  1163,  1164,  1165,  1166,  1167,
+  1168,  1169,  1170,   141,   142,   143,   144,   145,     6,     6,
+  1178,     6,     6,   151,   152,   153,   154,   155,   156,   157,
+   158,   159,   134,  1191,     6,   163,     6,     6,   171,   141,
+   142,   143,   144,   145,     6,     6,     6,    81,     7,   151,
+   152,   153,   154,   155,   156,   157,   158,   159,     4,   612,
+     3,   163,   615,  1221,  1222,  1223,  1224,  1225,  1226,  1227,
+  1228,  1229,  1230,  1231,  1232,     6,     3,  1235,     6,   157,
+     6,   634,   635,     6,     3,     6,     3,   640,   641,     3,
+     6,     6,     0,     1,   647,     3,   649,     6,     3,     3,
+     3,    82,   169,     4,  1262,  1263,     6,   170,   169,     6,
+    78,   168,  1270,  1271,  1272,  1273,  1274,  1275,  1276,  1277,
+  1278,  1279,   675,  1281,   677,  1283,   167,   167,   167,  1287,
+   168,   167,   685,   686,   687,   167,   167,   690,   691,   692,
+   693,   694,   695,   696,   168,   171,   168,   168,   168,   167,
+   167,  1309,  1310,   168,     6,   169,  1314,  1315,  1316,  1317,
+  1318,  1319,    31,    32,    33,    34,    35,    36,    37,    38,
+    81,    40,     6,    42,    43,     3,    45,    46,     5,  1337,
+     6,     6,     3,     6,  1342,  1343,  1344,  1345,  1346,  1347,
+  1348,  1349,  1350,    62,     6,     6,     6,     6,   106,   107,
+   108,   109,   110,   111,   112,   113,     6,    76,    77,     3,
+     6,     6,  1370,  1371,  1372,  1373,  1374,  1375,  1376,   171,
+  1378,     4,  1380,     5,   132,   133,   170,   135,     6,   169,
+   167,   167,   167,   167,     4,   168,   168,   167,     6,   168,
+  1398,  1399,  1400,   167,     6,   167,     6,   167,     6,     6,
+     6,     6,     6,     6,  1412,  1413,  1414,  1415,  1416,  1417,
+     6,     5,   131,     5,   170,   167,     6,     6,   167,   167,
+    78,  1429,  1430,  1431,  1432,   168,  1434,   168,  1436,   167,
+   833,   167,   835,   167,   167,     5,     5,   840,     6,   169,
+   169,   169,     6,   170,   169,   167,   167,   170,  1456,  1457,
+  1458,   170,   168,   168,    78,     6,   859,  1465,   170,  1467,
+     6,  1469,     3,     4,     6,   169,     6,     6,     9,    10,
     11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     21,    22,    23,    24,    25,    26,    27,    28,    29,     6,
-     3,     6,   158,     3,     6,     6,     3,  1215,  1216,  1217,
-  1218,  1219,  1220,  1221,  1222,  1223,  1224,  1225,  1226,     6,
-     6,     6,     3,     6,     3,     3,     3,   170,   170,   802,
-     6,     4,   171,     7,   172,  1243,  1244,    78,     6,     6,
-   813,   169,   168,   168,   168,   818,   169,   168,   168,   168,
-    64,    65,    66,    67,    68,    69,    70,    71,    72,    73,
-    74,    75,  1270,   169,   837,  1273,   169,   169,   169,   169,
-   168,   168,  1280,  1281,  1282,  1283,  1284,  1285,  1286,  1287,
-  1288,  1289,     6,  1291,   172,  1293,   170,    81,     6,  1297,
-     3,  1299,     6,     3,   142,   143,   144,   145,   146,     6,
-     6,     6,     6,     6,   152,   153,   154,   155,   156,   157,
-   158,   159,   160,  1321,  1322,     6,   164,     6,     3,  1327,
-  1328,  1329,  1330,  1331,  1332,   156,   157,     6,     5,     5,
-   168,   171,   163,     6,   170,     4,   167,   169,   173,   172,
-     6,   168,     6,  1351,   168,   168,     6,   169,  1356,  1357,
-  1358,  1359,  1360,  1361,  1362,  1363,  1364,   171,   168,     6,
-   169,     6,   168,    82,   168,     6,     6,     6,     6,     6,
-   168,     6,     6,     5,     5,   168,  1384,  1385,  1386,  1387,
-  1388,  1389,  1390,   171,  1392,    78,  1394,   169,   172,   169,
-     6,     4,     6,   168,     6,     5,   168,     6,   168,   168,
-     5,   172,   168,   168,  1412,  1413,  1414,   980,   170,   170,
-   983,   170,     6,   171,   170,     4,   168,   168,  1426,  1427,
-  1428,  1429,  1430,  1431,     6,   169,   169,    78,     6,   171,
-   171,     6,     6,     6,     6,  1443,  1444,  1445,  1446,     6,
-  1448,     6,  1450,  1016,   170,   168,   168,     6,   168,   141,
-     6,   168,     6,     6,   170,   170,     6,   168,   170,  1032,
-   169,     6,  1470,  1471,  1472,     6,   168,   168,     6,   168,
-   170,  1479,   170,  1481,   170,  1483,     6,     6,     3,     4,
-     6,   169,     6,   170,     9,    10,    11,    12,    13,    14,
+     6,     3,     4,   167,     0,   167,     6,     9,    10,    11,
+    12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+    22,    23,    24,    25,    26,    27,    28,    29,     3,     4,
+   167,   140,     6,     6,     9,    10,    11,    12,    13,    14,
     15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-    25,    26,    27,    28,    29,   142,   143,   144,   145,   146,
-     6,   170,   170,     6,     6,   152,   153,   154,   155,   156,
-   157,   158,   159,   160,     0,     0,     6,   164,   568,     6,
-  1131,  1104,  1105,   142,   143,   144,   145,   146,     6,     6,
-     6,    -1,    -1,   152,   153,   154,   155,   156,   157,   158,
-   159,   160,   316,    -1,   542,   164,    -1,    -1,    -1,  1132,
-   142,   143,   144,   145,   146,   800,    -1,     6,    -1,    -1,
-   152,   153,   154,   155,   156,   157,   158,   159,   160,    -1,
-    -1,    -1,   164,   142,   143,   144,   145,   146,    -1,    -1,
-     6,    -1,    -1,   152,   153,   154,   155,   156,   157,   158,
-   159,   160,    -1,    -1,    -1,   164,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,  1188,    -1,   142,   143,   144,
-   145,   146,     6,    -1,    -1,    -1,    -1,   152,   153,   154,
-   155,   156,   157,   158,   159,   160,    -1,    -1,   163,   164,
-    -1,  1214,   167,    -1,    -1,    -1,   142,   143,   144,   145,
-   146,    -1,     6,    -1,    -1,    -1,   152,   153,   154,   155,
-   156,   157,   158,   159,   160,    -1,    -1,    -1,   164,    -1,
-    -1,    -1,    -1,    -1,   142,   143,   144,   145,   146,     6,
-    -1,    -1,    -1,    -1,   152,   153,   154,   155,   156,   157,
-   158,   159,   160,    -1,    -1,    -1,   164,    -1,    -1,    -1,
-    -1,    -1,  1275,   142,   143,   144,   145,   146,     6,    -1,
-    -1,    -1,    -1,   152,   153,   154,   155,   156,   157,   158,
-   159,   160,    -1,    -1,    -1,   164,   142,   143,   144,   145,
-   146,     6,    -1,    -1,    -1,    -1,   152,   153,   154,   155,
-   156,   157,   158,   159,   160,    -1,    -1,    -1,   164,    -1,
-    -1,    -1,    -1,  1326,     6,    -1,    -1,    -1,   142,   143,
-   144,   145,   146,    -1,    -1,    -1,    -1,    -1,   152,   153,
-   154,   155,   156,   157,   158,   159,   160,     6,    -1,    -1,
-   164,  1354,    -1,    -1,    -1,    -1,    -1,    -1,   142,   143,
-   144,   145,   146,    -1,    -1,    -1,    -1,    -1,   152,   153,
-   154,   155,   156,   157,   158,   159,   160,     6,    -1,  1382,
-   164,    -1,    -1,    -1,    -1,   142,   143,   144,   145,   146,
-    -1,    -1,    -1,    -1,    -1,   152,   153,   154,   155,   156,
-   157,   158,   159,   160,     6,    -1,    -1,   164,  1411,    -1,
-    -1,    -1,    -1,    -1,   142,   143,   144,   145,   146,    -1,
-    -1,    -1,  1425,    -1,   152,   153,   154,   155,   156,   157,
-   158,   159,   160,     6,    -1,    -1,   164,   142,   143,   144,
-   145,   146,    -1,    -1,    -1,    -1,    -1,   152,   153,   154,
-   155,   156,   157,   158,   159,   160,     6,    -1,    -1,   164,
-   142,   143,   144,   145,   146,    -1,    -1,    -1,    -1,    -1,
-   152,   153,   154,   155,   156,   157,   158,   159,   160,    -1,
-    -1,     8,   164,   142,   143,   144,   145,   146,    -1,    -1,
-    -1,    -1,    -1,   152,   153,   154,   155,   156,   157,   158,
-   159,   160,    -1,    -1,     8,   164,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,   142,   143,   144,   145,   146,    -1,    -1,
-    -1,    -1,    -1,   152,   153,   154,   155,   156,   157,   158,
-   159,   160,     8,    -1,    -1,   164,    -1,    -1,    -1,    -1,
-   142,   143,   144,   145,   146,    -1,    -1,    -1,    -1,    -1,
-   152,   153,   154,   155,   156,   157,   158,   159,   160,    -1,
-    -1,    -1,   164,    -1,    -1,    -1,    -1,    -1,    -1,   142,
-   143,   144,   145,   146,    -1,    -1,    -1,    -1,    -1,   152,
-   153,   154,   155,   156,   157,   158,   159,   160,    -1,    -1,
-    -1,   164,   142,   143,   144,   145,   146,    -1,    -1,    -1,
-    -1,    -1,   152,   153,   154,   155,   156,   157,   158,   159,
-   160,    -1,    -1,    -1,   164,   142,   143,   144,   145,   146,
-    -1,    -1,    -1,    -1,    -1,   152,   153,   154,   155,   156,
-   157,   158,   159,   160,    -1,    -1,    -1,   164,   142,   143,
-   144,   145,   146,    -1,    -1,    -1,    -1,    -1,   152,   153,
-   154,   155,   156,   157,   158,   159,   160,    -1,    -1,    -1,
-   164,    -1,    -1,    -1,    -1,    -1,   142,   143,   144,   145,
-   146,    -1,    -1,    -1,    -1,    -1,   152,   153,   154,   155,
-   156,   157,   158,   159,   160,    -1,    -1,    -1,   164,    31,
-    32,    33,    34,    35,    36,    37,    38,    -1,    40,    -1,
-    42,    43,    -1,    45,    46,    -1,    -1,    -1,     0,     1,
-    -1,    -1,     4,    -1,    -1,   142,   143,   144,   145,   146,
-    62,    -1,    -1,    -1,    -1,   152,   153,   154,   155,   156,
-   157,   158,   159,   160,    76,    77,    -1,   164,    30,    31,
-    32,    33,    34,    35,    36,    37,    38,   174,    40,    41,
-    42,    43,    44,    45,    46,    -1,    -1,    -1,    50,    51,
-    52,    53,    54,    55,    -1,    57,    58,    59,    60,    61,
-    62,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    34,    -1,    -1,    76,    77,    -1,    -1,    -1,    -1,
-   132,    83,    84,    85,    86,    87,    88,    31,    32,    33,
-    34,    35,    36,    37,    38,    -1,    40,    -1,    42,    43,
-    -1,    45,    46,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    62,   171,
-    -1,    -1,    -1,    -1,    -1,    -1,    89,    90,    91,    -1,
-   132,    -1,    76,    77,    97,    98,    99,   100,   101,   102,
-   103,   104,   105,   106,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,   115,   116,   117,   118,   119,   120,   121,   122,
-   123,   124,    -1,   126,   127,   128,   129,   130,   131,   142,
-   143,   144,   145,   146,    -1,    -1,    -1,    -1,    -1,   152,
-   153,   154,   155,   156,   157,   158,   159,   160,   132,    -1,
-    -1,   164,   142,   143,   144,   145,   146,    -1,    -1,    -1,
-    -1,   174,   152,   153,   154,   155,   156,   157,   158,   159,
-   160,    -1,    -1,    -1,   164,   142,   143,   144,   145,   146,
-    -1,    -1,    -1,    -1,   174,   152,   153,   154,   155,   156,
-   157,   158,   159,   160,    -1,    -1,    -1,   164,   142,   143,
-   144,   145,   146,    -1,    -1,    -1,    -1,   174,   152,   153,
-   154,   155,   156,   157,   158,   159,   160,    -1,    -1,    -1,
-   164,    -1,    -1,    -1,   168,    -1,    -1,   171,   142,   143,
-   144,   145,   146,    -1,    -1,    -1,    -1,    -1,   152,   153,
-   154,   155,   156,   157,   158,   159,   160,    -1,    -1,    -1,
-   164,    -1,    -1,    -1,   168,    -1,    -1,   171,   142,   143,
-   144,   145,   146,    -1,    -1,    -1,    -1,    -1,   152,   153,
-   154,   155,   156,   157,   158,   159,   160,    -1,    -1,    -1,
-   164,    -1,    -1,    -1,   168,    -1,    -1,   171,   142,   143,
-   144,   145,   146,    -1,    -1,    -1,    -1,    -1,   152,   153,
-   154,   155,   156,   157,   158,   159,   160,    -1,    -1,    -1,
-   164,   142,   143,   144,   145,   146,    -1,   171,    -1,    -1,
-    -1,   152,   153,   154,   155,   156,   157,   158,   159,   160,
-    -1,    -1,    -1,   164,   142,   143,   144,   145,   146,    -1,
-   171,    -1,    -1,    -1,   152,   153,   154,   155,   156,   157,
-   158,   159,   160,    -1,    -1,    -1,   164,   142,   143,   144,
-   145,   146,    -1,   171,    -1,    -1,    -1,   152,   153,   154,
-   155,   156,   157,   158,   159,   160,    -1,    -1,    -1,   164,
-   142,   143,   144,   145,   146,    -1,   171,    -1,    -1,    -1,
-   152,   153,   154,   155,   156,   157,   158,   159,   160,    -1,
-    -1,    -1,   164,   142,   143,   144,   145,   146,    -1,   171,
-    -1,    -1,    -1,   152,   153,   154,   155,   156,   157,   158,
-   159,   160,    -1,    -1,    -1,   164,   142,   143,   144,   145,
-   146,    -1,   171,    -1,    -1,    -1,   152,   153,   154,   155,
-   156,   157,   158,   159,   160,    -1,    -1,    -1,   164,   142,
-   143,   144,   145,   146,    -1,   171,    -1,    -1,    -1,   152,
-   153,   154,   155,   156,   157,   158,   159,   160,    -1,    -1,
-    -1,   164,   135,    -1,    -1,    -1,    -1,    -1,   171,   142,
-   143,   144,   145,   146,    -1,    -1,    -1,    -1,    -1,   152,
-   153,   154,   155,   156,   157,   158,   159,   160,    -1,    -1,
-    -1,   164,   142,   143,   144,   145,   146,    -1,    -1,    -1,
-    -1,    -1,   152,   153,   154,   155,   156,   157,   158,   159,
-   160,    -1,    -1,    -1,   164,   142,   143,   144,   145,   146,
-    -1,   171,    -1,    -1,    -1,   152,   153,   154,   155,   156,
-   157,   158,   159,   160,    -1,    -1,    -1,   164,   142,   143,
-   144,   145,   146,    -1,   171,    -1,    -1,    -1,   152,   153,
-   154,   155,   156,   157,   158,   159,   160,    -1,    -1,    -1,
-   164,   142,   143,   144,   145,   146,    -1,   171,    -1,    -1,
-    -1,   152,   153,   154,   155,   156,   157,   158,   159,   160,
-    -1,    -1,    -1,   164,   142,   143,   144,   145,   146,    -1,
-   171,    -1,    -1,    -1,   152,   153,   154,   155,   156,   157,
-   158,   159,   160,    -1,    -1,    -1,   164,   142,   143,   144,
-   145,   146,    -1,   171,    -1,    -1,    -1,   152,   153,   154,
-   155,   156,   157,   158,   159,   160,    -1,    -1,    -1,   164,
-   142,   143,   144,   145,   146,    -1,   171,    -1,    -1,    -1,
-   152,   153,   154,   155,   156,   157,   158,   159,   160,    -1,
-    -1,    -1,   164,   135,    -1,    -1,    -1,    -1,    -1,   171,
-   142,   143,   144,   145,   146,    -1,    -1,    -1,    -1,    -1,
-   152,   153,   154,   155,   156,   157,   158,   159,   160,    -1,
-    -1,    -1,   164,   142,   143,   144,   145,   146,    -1,    -1,
-    -1,    -1,    -1,   152,   153,   154,   155,   156,   157,   158,
-   159,   160,    -1,    -1,    -1,   164,   142,   143,   144,   145,
-   146,    -1,   171,    -1,    -1,    -1,   152,   153,   154,   155,
-   156,   157,   158,   159,   160,    -1,    -1,    -1,   164,   142,
-   143,   144,   145,   146,    -1,   171,    -1,    -1,    -1,   152,
-   153,   154,   155,   156,   157,   158,   159,   160,    -1,    -1,
-    -1,   164,   142,   143,   144,   145,   146,    -1,   171,    -1,
-    -1,    -1,   152,   153,   154,   155,   156,   157,   158,   159,
-   160,    -1,    -1,    -1,   164,    -1,    -1,    -1,   168,   169,
-   142,   143,   144,   145,   146,    -1,    -1,    -1,    -1,    -1,
-   152,   153,   154,   155,   156,   157,   158,   159,   160,    -1,
-    -1,    -1,   164,    -1,    -1,    -1,    -1,   169,   142,   143,
-   144,   145,   146,    -1,    -1,    -1,    -1,    -1,   152,   153,
-   154,   155,   156,   157,   158,   159,   160,    -1,    -1,    -1,
-   164,    -1,    -1,    -1,    -1,   169,   142,   143,   144,   145,
-   146,    -1,    -1,    -1,    -1,    -1,   152,   153,   154,   155,
-   156,   157,   158,   159,   160,    -1,    -1,    -1,   164,    -1,
-    -1,    -1,    -1,   169,   142,   143,   144,   145,   146,    -1,
-    -1,    -1,    -1,    -1,   152,   153,   154,   155,   156,   157,
-   158,   159,   160,    -1,    -1,    -1,   164,    -1,    -1,    -1,
-    -1,   169,   142,   143,   144,   145,   146,    -1,    -1,    -1,
-    -1,    -1,   152,   153,   154,   155,   156,   157,   158,   159,
-   160,    -1,    -1,    -1,   164,    -1,    -1,    -1,    -1,   169,
-   142,   143,   144,   145,   146,    -1,    -1,    -1,    -1,    -1,
-   152,   153,   154,   155,   156,   157,   158,   159,   160,    -1,
-    -1,    -1,   164,    -1,    -1,    -1,    -1,   169,   142,   143,
-   144,   145,   146,    -1,    -1,    -1,    -1,    -1,   152,   153,
-   154,   155,   156,   157,   158,   159,   160,    -1,    -1,    -1,
-   164,    -1,    -1,    -1,    -1,   169,   142,   143,   144,   145,
-   146,    -1,    -1,    -1,    -1,    -1,   152,   153,   154,   155,
-   156,   157,   158,   159,   160,    -1,    -1,    -1,   164,    -1,
-    -1,    -1,    -1,   169,   142,   143,   144,   145,   146,    -1,
-    -1,    -1,    -1,    -1,   152,   153,   154,   155,   156,   157,
-   158,   159,   160,    -1,    -1,    -1,   164,    -1,    -1,    -1,
-    -1,   169,   142,   143,   144,   145,   146,    -1,    -1,    -1,
-    -1,    -1,   152,   153,   154,   155,   156,   157,   158,   159,
-   160,    -1,    -1,    -1,   164,    -1,    -1,    -1,    -1,   169,
-   142,   143,   144,   145,   146,    -1,    -1,    -1,    -1,    -1,
-   152,   153,   154,   155,   156,   157,   158,   159,   160,    -1,
-    -1,    -1,   164,    -1,    -1,    -1,    -1,   169,   142,   143,
-   144,   145,   146,    -1,    -1,    -1,    -1,    -1,   152,   153,
-   154,   155,   156,   157,   158,   159,   160,    -1,    -1,    -1,
-   164,    -1,    -1,    -1,    -1,   169,   142,   143,   144,   145,
-   146,    -1,    -1,    -1,    -1,    -1,   152,   153,   154,   155,
-   156,   157,   158,   159,   160,    -1,    -1,    -1,   164,    -1,
-    -1,    -1,    -1,   169,   142,   143,   144,   145,   146,    -1,
-    -1,    -1,    -1,    -1,   152,   153,   154,   155,   156,   157,
-   158,   159,   160,    -1,    -1,    -1,   164,    -1,    -1,    -1,
-    -1,   169,   142,   143,   144,   145,   146,    -1,    -1,    -1,
-    -1,    -1,   152,   153,   154,   155,   156,   157,   158,   159,
-   160,    -1,    -1,    -1,   164,    -1,    -1,    -1,    -1,   169,
-   142,   143,   144,   145,   146,    -1,    -1,    -1,    -1,    -1,
-   152,   153,   154,   155,   156,   157,   158,   159,   160,    -1,
-    -1,    -1,   164,    -1,    -1,    -1,    -1,   169,   142,   143,
-   144,   145,   146,    -1,    -1,    -1,    -1,    -1,   152,   153,
-   154,   155,   156,   157,   158,   159,   160,    -1,    -1,    -1,
-   164,    -1,    -1,    -1,    -1,   169,   142,   143,   144,   145,
-   146,    -1,    -1,    -1,    -1,    -1,   152,   153,   154,   155,
-   156,   157,   158,   159,   160,    -1,    -1,    -1,   164,    -1,
-    -1,    -1,    -1,   169,   142,   143,   144,   145,   146,    -1,
-    -1,    -1,    -1,    -1,   152,   153,   154,   155,   156,   157,
-   158,   159,   160,    -1,    -1,    -1,   164,    -1,    -1,    -1,
-    -1,   169,   142,   143,   144,   145,   146,    -1,    -1,    -1,
-    -1,    -1,   152,   153,   154,   155,   156,   157,   158,   159,
-   160,    -1,    -1,    -1,   164,    -1,    -1,    -1,    -1,   169,
-   142,   143,   144,   145,   146,    -1,    -1,    -1,    -1,    -1,
-   152,   153,   154,   155,   156,   157,   158,   159,   160,    -1,
-    -1,    -1,   164,    -1,    -1,    -1,    -1,   169,   142,   143,
-   144,   145,   146,    -1,    -1,    -1,    -1,    -1,   152,   153,
-   154,   155,   156,   157,   158,   159,   160,    -1,    -1,    -1,
-   164,    -1,    -1,    -1,    -1,   169,   142,   143,   144,   145,
-   146,    -1,    -1,    -1,    -1,    -1,   152,   153,   154,   155,
-   156,   157,   158,   159,   160,    -1,    -1,    -1,   164,    -1,
-    -1,    -1,    -1,   169,   142,   143,   144,   145,   146,    -1,
-    -1,    -1,    -1,    -1,   152,   153,   154,   155,   156,   157,
-   158,   159,   160,    -1,    -1,    -1,   164,    -1,    -1,    -1,
-    -1,   169,   142,   143,   144,   145,   146,    -1,    -1,    -1,
-    -1,    -1,   152,   153,   154,   155,   156,   157,   158,   159,
-   160,    -1,    -1,    -1,   164,    -1,    -1,    -1,    -1,   169,
-   142,   143,   144,   145,   146,    -1,    -1,    -1,    -1,    -1,
-   152,   153,   154,   155,   156,   157,   158,   159,   160,    -1,
-    -1,    -1,   164,    -1,    -1,    -1,    -1,   169,   142,   143,
-   144,   145,   146,    -1,    -1,    -1,    -1,    -1,   152,   153,
-   154,   155,   156,   157,   158,   159,   160,    -1,    -1,    -1,
-   164,    -1,    -1,    -1,    -1,   169,   142,   143,   144,   145,
-   146,    -1,    -1,    -1,    -1,    -1,   152,   153,   154,   155,
-   156,   157,   158,   159,   160,    -1,    -1,    -1,   164,    -1,
-    -1,    -1,    -1,   169,   142,   143,   144,   145,   146,    -1,
-    -1,    -1,    -1,    -1,   152,   153,   154,   155,   156,   157,
-   158,   159,   160,    -1,    -1,    -1,   164,    -1,    -1,    -1,
-    -1,   169,   142,   143,   144,   145,   146,    -1,    -1,    -1,
-    -1,    -1,   152,   153,   154,   155,   156,   157,   158,   159,
-   160,    -1,    -1,    -1,   164,    -1,    -1,    -1,    -1,   169,
-   142,   143,   144,   145,   146,    -1,    -1,    -1,    -1,    -1,
-   152,   153,   154,   155,   156,   157,   158,   159,   160,    -1,
-    -1,    -1,   164,    -1,    -1,    -1,    -1,   169,   142,   143,
-   144,   145,   146,    -1,    -1,    -1,    -1,    -1,   152,   153,
-   154,   155,   156,   157,   158,   159,   160,    -1,    -1,    -1,
-   164,    -1,    -1,    -1,    -1,   169,   142,   143,   144,   145,
-   146,    -1,    -1,    -1,    -1,    -1,   152,   153,   154,   155,
-   156,   157,   158,   159,   160,    -1,    -1,    -1,   164,    -1,
-    -1,    -1,    -1,   169,   142,   143,   144,   145,   146,    -1,
-    -1,    -1,    -1,    -1,   152,   153,   154,   155,   156,   157,
-   158,   159,   160,    -1,    -1,    -1,   164,    -1,    -1,    -1,
-    -1,   169,   142,   143,   144,   145,   146,    -1,    -1,    -1,
-    -1,    -1,   152,   153,   154,   155,   156,   157,   158,   159,
-   160,    -1,    -1,    -1,   164,    -1,    -1,    -1,    -1,   169,
-   142,   143,   144,   145,   146,    -1,    -1,    -1,    -1,    -1,
-   152,   153,   154,   155,   156,   157,   158,   159,   160,    -1,
-    -1,    -1,   164,    -1,    -1,    -1,    -1,   169,   142,   143,
-   144,   145,   146,    -1,    -1,    -1,    -1,    -1,   152,   153,
-   154,   155,   156,   157,   158,   159,   160,    -1,    -1,    -1,
-   164,    -1,    -1,    -1,    -1,   169,   142,   143,   144,   145,
-   146,    -1,    -1,    -1,    -1,    -1,   152,   153,   154,   155,
-   156,   157,   158,   159,   160,    -1,    -1,    -1,   164,    -1,
-    -1,    -1,    -1,   169,   142,   143,   144,   145,   146,    -1,
-    -1,    -1,    -1,    -1,   152,   153,   154,   155,   156,   157,
-   158,   159,   160,    -1,    -1,    -1,   164,    -1,    -1,    -1,
-    -1,   169,   142,   143,   144,   145,   146,    -1,    -1,    -1,
-    -1,    -1,   152,   153,   154,   155,   156,   157,   158,   159,
-   160,    -1,    -1,    -1,   164,    -1,    -1,    -1,    -1,   169,
-   142,   143,   144,   145,   146,    -1,    -1,    -1,    -1,    -1,
-   152,   153,   154,   155,   156,   157,   158,   159,   160,    -1,
-    -1,    -1,   164,    -1,    -1,    -1,    -1,   169,   142,   143,
-   144,   145,   146,    -1,    -1,    -1,    -1,    -1,   152,   153,
-   154,   155,   156,   157,   158,   159,   160,    -1,    -1,    -1,
-   164,    -1,    -1,    -1,    -1,   169,   142,   143,   144,   145,
-   146,    -1,    -1,    -1,    -1,    -1,   152,   153,   154,   155,
-   156,   157,   158,   159,   160,    -1,    -1,    -1,   164,    -1,
-    -1,    -1,    -1,   169,   142,   143,   144,   145,   146,    -1,
-    -1,    -1,    -1,    -1,   152,   153,   154,   155,   156,   157,
-   158,   159,   160,    -1,    -1,    -1,   164,    -1,    -1,    -1,
-    -1,   169,   142,   143,   144,   145,   146,    -1,    -1,    -1,
-    -1,    -1,   152,   153,   154,   155,   156,   157,   158,   159,
-   160,    -1,    -1,    -1,   164,    -1,    -1,    -1,    -1,   169,
-   142,   143,   144,   145,   146,    -1,    -1,    -1,    -1,    -1,
-   152,   153,   154,   155,   156,   157,   158,   159,   160,    -1,
-    -1,    -1,   164,    -1,    -1,    -1,    -1,   169,   142,   143,
-   144,   145,   146,    -1,    -1,    -1,    -1,    -1,   152,   153,
-   154,   155,   156,   157,   158,   159,   160,    -1,    -1,    -1,
-   164,    -1,    -1,    -1,    -1,   169,   142,   143,   144,   145,
-   146,    -1,    -1,    -1,    -1,    -1,   152,   153,   154,   155,
-   156,   157,   158,   159,   160,    -1,    -1,    -1,   164,    -1,
-    -1,    -1,    -1,   169,   142,   143,   144,   145,   146,    -1,
-    -1,    -1,    -1,    -1,   152,   153,   154,   155,   156,   157,
-   158,   159,   160,    -1,    -1,    -1,   164,    -1,    -1,    -1,
-    -1,   169,   142,   143,   144,   145,   146,    -1,    -1,    -1,
-    -1,    -1,   152,   153,   154,   155,   156,   157,   158,   159,
-   160,    -1,    -1,    -1,   164,    -1,    -1,    -1,    -1,   169,
-   142,   143,   144,   145,   146,    -1,    -1,    -1,    -1,    -1,
-   152,   153,   154,   155,   156,   157,   158,   159,   160,    -1,
-    -1,    -1,   164,    -1,    -1,    -1,    -1,   169,   142,   143,
-   144,   145,   146,    -1,    -1,    -1,    -1,    -1,   152,   153,
-   154,   155,   156,   157,   158,   159,   160,    -1,    -1,    -1,
-   164,    -1,    -1,    -1,    -1,   169,   142,   143,   144,   145,
-   146,    -1,    -1,    -1,    -1,    -1,   152,   153,   154,   155,
-   156,   157,   158,   159,   160,    -1,    -1,    -1,   164,    -1,
-    -1,    -1,    -1,   169,   142,   143,   144,   145,   146,    -1,
-    -1,    -1,    -1,    -1,   152,   153,   154,   155,   156,   157,
-   158,   159,   160,    -1,    -1,    -1,   164,    -1,    -1,    -1,
-    -1,   169,   142,   143,   144,   145,   146,    -1,    -1,    -1,
-    -1,    -1,   152,   153,   154,   155,   156,   157,   158,   159,
-   160,    -1,    -1,    -1,   164,    -1,    -1,    -1,    -1,   169,
-   142,   143,   144,   145,   146,    -1,    -1,    -1,    -1,    -1,
-   152,   153,   154,   155,   156,   157,   158,   159,   160,    -1,
-    -1,    -1,   164,    -1,    -1,    -1,    -1,   169,   142,   143,
-   144,   145,   146,    -1,    -1,    -1,    -1,    -1,   152,   153,
-   154,   155,   156,   157,   158,   159,   160,    -1,    -1,    -1,
-   164,    -1,    -1,    -1,    -1,   169,   142,   143,   144,   145,
-   146,    -1,    -1,    -1,    -1,    -1,   152,   153,   154,   155,
-   156,   157,   158,   159,   160,    -1,    -1,    -1,   164,    -1,
-    -1,    -1,    -1,   169,   142,   143,   144,   145,   146,    -1,
-    -1,    -1,    -1,    -1,   152,   153,   154,   155,   156,   157,
-   158,   159,   160,    -1,    -1,    -1,   164,    -1,    -1,    -1,
-    -1,   169,   142,   143,   144,   145,   146,    -1,    -1,    -1,
-    -1,    -1,   152,   153,   154,   155,   156,   157,   158,   159,
-   160,    -1,    -1,    -1,   164,    -1,    -1,    -1,    -1,   169,
-   142,   143,   144,   145,   146,    -1,    -1,    -1,    -1,    -1,
-   152,   153,   154,   155,   156,   157,   158,   159,   160,    -1,
-    -1,    -1,   164,    -1,    -1,    -1,    -1,   169,   142,   143,
-   144,   145,   146,    -1,    -1,    -1,    -1,    -1,   152,   153,
-   154,   155,   156,   157,   158,   159,   160,    -1,    -1,    -1,
-   164,    -1,    -1,    -1,    -1,   169,   142,   143,   144,   145,
-   146,    -1,    -1,    -1,    -1,    -1,   152,   153,   154,   155,
-   156,   157,   158,   159,   160,    -1,    -1,    -1,   164,    -1,
-    -1,    -1,    -1,   169,   142,   143,   144,   145,   146,    -1,
-    -1,    -1,    -1,    -1,   152,   153,   154,   155,   156,   157,
-   158,   159,   160,    -1,    -1,    -1,   164,    -1,    -1,    -1,
-   168,   142,   143,   144,   145,   146,    -1,    -1,    -1,    -1,
-    -1,   152,   153,   154,   155,   156,   157,   158,   159,   160,
-    -1,    -1,    -1,   164,    -1,    -1,    -1,   168,   142,   143,
-   144,   145,   146,    -1,    -1,    -1,    -1,    -1,   152,   153,
-   154,   155,   156,   157,   158,   159,   160,    -1,    -1,    -1,
-   164,    -1,    -1,    -1,   168,   142,   143,   144,   145,   146,
-    -1,    -1,    -1,    -1,    -1,   152,   153,   154,   155,   156,
-   157,   158,   159,   160,    -1,    -1,    -1,   164,    -1,    -1,
-    -1,   168,   142,   143,   144,   145,   146,    -1,    -1,    -1,
-    -1,    -1,   152,   153,   154,   155,   156,   157,   158,   159,
-   160,    -1,    -1,    -1,   164,    -1,    -1,    -1,   168,   142,
-   143,   144,   145,   146,    -1,    -1,    -1,    -1,    -1,   152,
-   153,   154,   155,   156,   157,   158,   159,   160,    -1,    -1,
-    -1,   164,   138,    -1,    -1,   168,   142,   143,   144,   145,
-   146,    -1,    -1,    -1,    -1,    -1,   152,   153,   154,   155,
-   156,   157,   158,   159,   160,    -1,    -1,    -1,   164,   142,
-   143,   144,   145,   146,    -1,    -1,    -1,    -1,    -1,   152,
-   153,   154,   155,   156,   157,   158,   159,   160,    -1,    -1,
-    -1,   164,    -1,    -1,    -1,   168,   142,   143,   144,   145,
-   146,    -1,    -1,    -1,    -1,    -1,   152,   153,   154,   155,
-   156,   157,   158,   159,   160,    -1,    -1,    -1,   164,    -1,
-    -1,    -1,   168,   142,   143,   144,   145,   146,    -1,    -1,
-    -1,    -1,    -1,   152,   153,   154,   155,   156,   157,   158,
-   159,   160,    -1,    -1,    -1,   164,    -1,    -1,    -1,   168,
-   142,   143,   144,   145,   146,    -1,    -1,    -1,    -1,    -1,
-   152,   153,   154,   155,   156,   157,   158,   159,   160,    -1,
-    -1,    -1,   164,    -1,    -1,    -1,   168,   142,   143,   144,
-   145,   146,    -1,    -1,    -1,    -1,    -1,   152,   153,   154,
-   155,   156,   157,   158,   159,   160,    -1,    -1,    -1,   164,
-    -1,    -1,    -1,   168,   142,   143,   144,   145,   146,    -1,
-    -1,    -1,    -1,    -1,   152,   153,   154,   155,   156,   157,
-   158,   159,   160,    -1,    -1,    -1,   164,    -1,    -1,    -1,
-   168,   142,   143,   144,   145,   146,    -1,    -1,    -1,    -1,
-    -1,   152,   153,   154,   155,   156,   157,   158,   159,   160,
-    -1,    -1,    -1,   164,    -1,    -1,    -1,   168,   142,   143,
-   144,   145,   146,    -1,    -1,    -1,    -1,    -1,   152,   153,
-   154,   155,   156,   157,   158,   159,   160,    -1,    -1,    -1,
-   164,    -1,    -1,    -1,   168,   142,   143,   144,   145,   146,
-    -1,    -1,    -1,    -1,    -1,   152,   153,   154,   155,   156,
-   157,   158,   159,   160,    -1,    -1,    -1,   164,    -1,    -1,
-    -1,   168,   142,   143,   144,   145,   146,    -1,    -1,    -1,
-    -1,    -1,   152,   153,   154,   155,   156,   157,   158,   159,
-   160,    -1,    -1,    -1,   164,    -1,    -1,    -1,   168,   142,
-   143,   144,   145,   146,    -1,    -1,    -1,    -1,    -1,   152,
-   153,   154,   155,   156,   157,   158,   159,   160,    -1,    -1,
-    -1,   164,    -1,    -1,    -1,   168,   142,   143,   144,   145,
-   146,    -1,    -1,    -1,    -1,    -1,   152,   153,   154,   155,
-   156,   157,   158,   159,   160,    -1,    -1,    -1,   164,    -1,
-    -1,    -1,   168,   142,   143,   144,   145,   146,    -1,    -1,
-    -1,    -1,    -1,   152,   153,   154,   155,   156,   157,   158,
-   159,   160,    -1,    -1,    -1,   164,    -1,    -1,    -1,   168,
-   142,   143,   144,   145,   146,    -1,    -1,    -1,    -1,    -1,
-   152,   153,   154,   155,   156,   157,   158,   159,   160,    -1,
-    -1,    -1,   164,    -1,    -1,    -1,   168,   142,   143,   144,
-   145,   146,    -1,    -1,    -1,    -1,    -1,   152,   153,   154,
-   155,   156,   157,   158,   159,   160,    -1,    -1,    -1,   164,
-    -1,    -1,    -1,   168,   142,   143,   144,   145,   146,    -1,
-    -1,    -1,    -1,    -1,   152,   153,   154,   155,   156,   157,
-   158,   159,   160,    -1,    -1,    -1,   164,    -1,    -1,    -1,
-   168,   142,   143,   144,   145,   146,    -1,    -1,    -1,    -1,
-    -1,   152,   153,   154,   155,   156,   157,   158,   159,   160,
-    -1,    -1,    -1,   164,    -1,    -1,    -1,   168,   142,   143,
-   144,   145,   146,    -1,    -1,    -1,    -1,    -1,   152,   153,
-   154,   155,   156,   157,   158,   159,   160,    -1,    -1,    -1,
-   164,    -1,    -1,    -1,   168,   142,   143,   144,   145,   146,
-    -1,    -1,    -1,    -1,    -1,   152,   153,   154,   155,   156,
-   157,   158,   159,   160,    -1,    -1,    -1,   164,    -1,    -1,
-    -1,   168,   142,   143,   144,   145,   146,    -1,    -1,    -1,
-    -1,    -1,   152,   153,   154,   155,   156,   157,   158,   159,
-   160,    -1,    -1,    -1,   164,    -1,    -1,    -1,   168,   142,
-   143,   144,   145,   146,    -1,    -1,    -1,    -1,    -1,   152,
-   153,   154,   155,   156,   157,   158,   159,   160,    -1,    -1,
-    -1,   164,    -1,    -1,    -1,   168,   142,   143,   144,   145,
-   146,    -1,    -1,    -1,    -1,    -1,   152,   153,   154,   155,
-   156,   157,   158,   159,   160,    -1,    -1,    -1,   164,    -1,
-    -1,    -1,   168,   142,   143,   144,   145,   146,    -1,    -1,
-    -1,    -1,    -1,   152,   153,   154,   155,   156,   157,   158,
-   159,   160,    -1,    -1,    -1,   164,    -1,    -1,    -1,   168,
-   142,   143,   144,   145,   146,    -1,    -1,    -1,    -1,    -1,
-   152,   153,   154,   155,   156,   157,   158,   159,   160,    -1,
-    -1,    -1,   164,    -1,    -1,    -1,   168,   142,   143,   144,
-   145,   146,    -1,    -1,    -1,    -1,    -1,   152,   153,   154,
-   155,   156,   157,   158,   159,   160,    -1,    -1,    -1,   164,
-    -1,    -1,    -1,   168,   142,   143,   144,   145,   146,    -1,
-    -1,    -1,    -1,    -1,   152,   153,   154,   155,   156,   157,
-   158,   159,   160,    -1,    -1,    -1,   164,    -1,    -1,    -1,
-   168,   142,   143,   144,   145,   146,    -1,    -1,    -1,    -1,
-    -1,   152,   153,   154,   155,   156,   157,   158,   159,   160,
-    -1,    -1,    -1,   164,    -1,    -1,    -1,   168,   142,   143,
-   144,   145,   146,    -1,    -1,    -1,    -1,    -1,   152,   153,
-   154,   155,   156,   157,   158,   159,   160,    -1,    -1,    -1,
-   164,    -1,    -1,    -1,   168,   142,   143,   144,   145,   146,
-    -1,    -1,    -1,    -1,    -1,   152,   153,   154,   155,   156,
-   157,   158,   159,   160,    -1,    -1,    -1,   164,    -1,    -1,
-    -1,   168,   142,   143,   144,   145,   146,    -1,    -1,    -1,
-    -1,    -1,   152,   153,   154,   155,   156,   157,   158,   159,
-   160,    -1,    -1,    -1,   164,    -1,    -1,    -1,   168,   142,
-   143,   144,   145,   146,    -1,    -1,    -1,    -1,    -1,   152,
-   153,   154,   155,   156,   157,   158,   159,   160,    -1,    -1,
-    -1,   164,    -1,    -1,    -1,   168,   142,   143,   144,   145,
-   146,    -1,    -1,    -1,    -1,    -1,   152,   153,   154,   155,
-   156,   157,   158,   159,   160,    -1,    -1,    -1,   164,    -1,
-    -1,    -1,   168,   142,   143,   144,   145,   146,    -1,    -1,
-    -1,    -1,    -1,   152,   153,   154,   155,   156,   157,   158,
-   159,   160,    -1,    -1,    -1,   164,    -1,    -1,    -1,   168,
-   142,   143,   144,   145,   146,    -1,    -1,    -1,    -1,    -1,
-   152,   153,   154,   155,   156,   157,   158,   159,   160,    -1,
-    -1,    -1,   164,    -1,    -1,    -1,   168,   142,   143,   144,
-   145,   146,    -1,    -1,    -1,    -1,    -1,   152,   153,   154,
-   155,   156,   157,   158,   159,   160,    -1,    -1,    -1,   164,
-    -1,    -1,    -1,   168,   142,   143,   144,   145,   146,    -1,
-    -1,    -1,    -1,    -1,   152,   153,   154,   155,   156,   157,
-   158,   159,   160,    -1,    -1,    -1,   164,    -1,    -1,    -1,
-   168,   142,   143,   144,   145,   146,    -1,    -1,    -1,    -1,
-    -1,   152,   153,   154,   155,   156,   157,   158,   159,   160,
-    -1,    -1,    -1,   164,    -1,    -1,    -1,   168,   142,   143,
-   144,   145,   146,    -1,    -1,    -1,    -1,    -1,   152,   153,
-   154,   155,   156,   157,   158,   159,   160,    -1,    -1,    -1,
-   164,    -1,    -1,    -1,   168,   142,   143,   144,   145,   146,
-    -1,    -1,    -1,    -1,    -1,   152,   153,   154,   155,   156,
-   157,   158,   159,   160,    -1,    -1,    -1,   164,    -1,    -1,
-    -1,   168,   142,   143,   144,   145,   146,    -1,    -1,    -1,
-    -1,    -1,   152,   153,   154,   155,   156,   157,   158,   159,
-   160,    -1,    -1,    -1,   164,    -1,    -1,    -1,   168,   142,
-   143,   144,   145,   146,    -1,    -1,    -1,    -1,    -1,   152,
-   153,   154,   155,   156,   157,   158,   159,   160,    -1,    -1,
-    -1,   164,    -1,    -1,    -1,   168,   142,   143,   144,   145,
-   146,    -1,    -1,    -1,    -1,    -1,   152,   153,   154,   155,
-   156,   157,   158,   159,   160,    -1,    -1,    -1,   164,    -1,
-    -1,    -1,   168,   142,   143,   144,   145,   146,    -1,    -1,
-    -1,    -1,    -1,   152,   153,   154,   155,   156,   157,   158,
-   159,   160,    -1,    -1,    -1,   164,    -1,    -1,    -1,   168,
-   142,   143,   144,   145,   146,    -1,    -1,    -1,    -1,    -1,
-   152,   153,   154,   155,   156,   157,   158,   159,   160,    -1,
-    -1,    -1,   164,    -1,    -1,    -1,   168,   142,   143,   144,
-   145,   146,    -1,    -1,    -1,    -1,    -1,   152,   153,   154,
-   155,   156,   157,   158,   159,   160,    -1,    -1,    -1,   164,
-    -1,    -1,    -1,   168,   142,   143,   144,   145,   146,    -1,
-    -1,    -1,    -1,    -1,   152,   153,   154,   155,   156,   157,
-   158,   159,   160,    -1,    -1,    -1,   164,    -1,    -1,    -1,
-   168,   142,   143,   144,   145,   146,    -1,    -1,    -1,    -1,
-    -1,   152,   153,   154,   155,   156,   157,   158,   159,   160,
-    -1,    -1,    -1,   164,    -1,    -1,    -1,   168,   142,   143,
-   144,   145,   146,    -1,    -1,    -1,    -1,    -1,   152,   153,
-   154,   155,   156,   157,   158,   159,   160,    -1,    -1,    -1,
-   164,    -1,    -1,    -1,   168,   142,   143,   144,   145,   146,
-    -1,    -1,    -1,    -1,    -1,   152,   153,   154,   155,   156,
-   157,   158,   159,   160,    -1,    -1,    -1,   164,    -1,    -1,
-    -1,   168,   142,   143,   144,   145,   146,    -1,    -1,    -1,
-    -1,    -1,   152,   153,   154,   155,   156,   157,   158,   159,
-   160,    -1,    -1,    -1,   164,    -1,    -1,    -1,   168,   142,
-   143,   144,   145,   146,    -1,    -1,    -1,    -1,    -1,   152,
-   153,   154,   155,   156,   157,   158,   159,   160,    -1,    -1,
-    -1,   164,    -1,    -1,    -1,   168,   142,   143,   144,   145,
-   146,    -1,    -1,    -1,    -1,    -1,   152,   153,   154,   155,
-   156,   157,   158,   159,   160,    -1,    -1,    -1,   164,    -1,
-    -1,    -1,   168,   142,   143,   144,   145,   146,    -1,    -1,
-    -1,    -1,    -1,   152,   153,   154,   155,   156,   157,   158,
-   159,   160,    -1,    -1,    -1,   164,    -1,    -1,    -1,   168,
-   142,   143,   144,   145,   146,    -1,    -1,    -1,    -1,    -1,
-   152,   153,   154,   155,   156,   157,   158,   159,   160,    -1,
-    -1,    -1,   164,    -1,    -1,    -1,   168,   142,   143,   144,
-   145,   146,    -1,    -1,    -1,    -1,    -1,   152,   153,   154,
-   155,   156,   157,   158,   159,   160,    -1,    -1,    -1,   164,
-    -1,    -1,    -1,   168,   142,   143,   144,   145,   146,    -1,
-    -1,    -1,    -1,    -1,   152,   153,   154,   155,   156,   157,
-   158,   159,   160,    -1,    -1,    -1,   164,    -1,    -1,    -1,
-   168,   142,   143,   144,   145,   146,    -1,    -1,    -1,    -1,
-    -1,   152,   153,   154,   155,   156,   157,   158,   159,   160,
-    -1,    -1,    -1,   164,    -1,    -1,    -1,   168,   142,   143,
-   144,   145,   146,    -1,    -1,    -1,    -1,    -1,   152,   153,
-   154,   155,   156,   157,   158,   159,   160,    -1,    -1,    -1,
-   164,    -1,    -1,    -1,   168,   142,   143,   144,   145,   146,
-    -1,    -1,    -1,    -1,    -1,   152,   153,   154,   155,   156,
-   157,   158,   159,   160,    -1,    -1,    -1,   164,    -1,    -1,
-    -1,   168,   142,   143,   144,   145,   146,    -1,    -1,    -1,
-    -1,    -1,   152,   153,   154,   155,   156,   157,   158,   159,
-   160,    -1,    -1,    -1,   164,    -1,    -1,    -1,   168,   142,
-   143,   144,   145,   146,    -1,    -1,    -1,    -1,    -1,   152,
-   153,   154,   155,   156,   157,   158,   159,   160,    -1,    -1,
-    -1,   164,    -1,    -1,    -1,   168,   142,   143,   144,   145,
-   146,    -1,    -1,    -1,    -1,    -1,   152,   153,   154,   155,
-   156,   157,   158,   159,   160,    -1,    -1,    -1,   164,    -1,
-    -1,    -1,   168,   142,   143,   144,   145,   146,    -1,    -1,
-    -1,    -1,    -1,   152,   153,   154,   155,   156,   157,   158,
-   159,   160,    -1,    -1,    -1,   164,    -1,    -1,    -1,   168,
-   142,   143,   144,   145,   146,    -1,    -1,    -1,    -1,    -1,
-   152,   153,   154,   155,   156,   157,   158,   159,   160,    -1,
-    -1,    -1,   164,    -1,    -1,    -1,   168,   142,   143,   144,
-   145,   146,    -1,    -1,    -1,    -1,    -1,   152,   153,   154,
-   155,   156,   157,   158,   159,   160,    -1,    -1,    -1,   164,
-    -1,    -1,    -1,   168,   142,   143,   144,   145,   146,    -1,
-    -1,    -1,    -1,    -1,   152,   153,   154,   155,   156,   157,
-   158,   159,   160,    -1,    -1,    -1,   164,    -1,    -1,    -1,
-   168,   142,   143,   144,   145,   146,    -1,    -1,    -1,    -1,
-    -1,   152,   153,   154,   155,   156,   157,   158,   159,   160,
-    -1,    -1,    -1,   164,    -1,    -1,    -1,   168,   142,   143,
-   144,   145,   146,    -1,    -1,    -1,    -1,    -1,   152,   153,
-   154,   155,   156,   157,   158,   159,   160,    -1,    -1,    -1,
-   164,    -1,    -1,    -1,   168,   142,   143,   144,   145,   146,
-    -1,    -1,    -1,    -1,    -1,   152,   153,   154,   155,   156,
-   157,   158,   159,   160,    -1,    -1,    -1,   164,    -1,    -1,
-    -1,   168,   142,   143,   144,   145,   146,    -1,    -1,    -1,
-    -1,    -1,   152,   153,   154,   155,   156,   157,   158,   159,
-   160,    -1,    -1,    -1,   164,    -1,    -1,    -1,   168,   142,
-   143,   144,   145,   146,    -1,    -1,    -1,    -1,    -1,   152,
-   153,   154,   155,   156,   157,   158,   159,   160,    -1,    -1,
-    -1,   164,    -1,    -1,    -1,   168,   142,   143,   144,   145,
-   146,    -1,    -1,    -1,    -1,    -1,   152,   153,   154,   155,
-   156,   157,   158,   159,   160,    -1,    -1,    -1,   164,    -1,
-    -1,    -1,   168,   142,   143,   144,   145,   146,    -1,    -1,
-    -1,    -1,    -1,   152,   153,   154,   155,   156,   157,   158,
-   159,   160,    -1,    -1,    -1,   164,    -1,    -1,    -1,   168,
-   142,   143,   144,   145,   146,    -1,    -1,    -1,    -1,    -1,
-   152,   153,   154,   155,   156,   157,   158,   159,   160,    -1,
-    -1,    -1,   164,    -1,    -1,    -1,   168,   142,   143,   144,
-   145,   146,    -1,    -1,    -1,    -1,    -1,   152,   153,   154,
-   155,   156,   157,   158,   159,   160,    -1,    -1,    -1,   164,
-    -1,    -1,    -1,   168,   142,   143,   144,   145,   146,    -1,
-    -1,    -1,    -1,    -1,   152,   153,   154,   155,   156,   157,
-   158,   159,   160,    -1,    -1,    -1,   164,    -1,    -1,    -1,
-   168,   142,   143,   144,   145,   146,    -1,    -1,    -1,    -1,
-    -1,   152,   153,   154,   155,   156,   157,   158,   159,   160,
-    -1,    -1,    -1,   164,    -1,    -1,    -1,   168,   142,   143,
-   144,   145,   146,    -1,    -1,    -1,    -1,    -1,   152,   153,
-   154,   155,   156,   157,   158,   159,   160,    -1,    -1,    -1,
-   164,    -1,    -1,    -1,   168,   142,   143,   144,   145,   146,
-    -1,    -1,    -1,    -1,    -1,   152,   153,   154,   155,   156,
-   157,   158,   159,   160,    -1,    -1,    -1,   164,    -1,    -1,
-    -1,   168,   142,   143,   144,   145,   146,    -1,    -1,    -1,
-    -1,    -1,   152,   153,   154,   155,   156,   157,   158,   159,
-   160,    -1,    -1,    -1,   164,    -1,    -1,    -1,   168,   142,
-   143,   144,   145,   146,    -1,    -1,    -1,    -1,    -1,   152,
-   153,   154,   155,   156,   157,   158,   159,   160,    -1,    -1,
-    -1,   164,    -1,    -1,    -1,   168,   142,   143,   144,   145,
-   146,    -1,    -1,    -1,    -1,    -1,   152,   153,   154,   155,
-   156,   157,   158,   159,   160,    -1,    -1,    -1,   164,    -1,
-    -1,    -1,   168,   142,   143,   144,   145,   146,    -1,    -1,
-    -1,    -1,    -1,   152,   153,   154,   155,   156,   157,   158,
-   159,   160,    -1,    -1,    -1,   164,    -1,    -1,    -1,   168,
-   142,   143,   144,   145,   146,    -1,    -1,    -1,    -1,    -1,
-   152,   153,   154,   155,   156,   157,   158,   159,   160,    -1,
-    -1,    -1,   164,    -1,    -1,    -1,   168,   142,   143,   144,
-   145,   146,    -1,    -1,    -1,    -1,    -1,   152,   153,   154,
-   155,   156,   157,   158,   159,   160,    -1,    -1,    -1,   164,
-    -1,    -1,    -1,   168,   142,   143,   144,   145,   146,    -1,
-    -1,    -1,    -1,    -1,   152,   153,   154,   155,   156,   157,
-   158,   159,   160,    -1,    -1,    -1,   164,    -1,    -1,    -1,
-   168,   142,   143,   144,   145,   146,    -1,    -1,    -1,    -1,
-    -1,   152,   153,   154,   155,   156,   157,   158,   159,   160,
-    -1,    -1,    -1,   164,    -1,    -1,    -1,   168,   142,   143,
-   144,   145,   146,    -1,    -1,    -1,    -1,    -1,   152,   153,
-   154,   155,   156,   157,   158,   159,   160,    -1,    -1,    -1,
-   164,    -1,    -1,    -1,   168,   142,   143,   144,   145,   146,
-    -1,    -1,    -1,    -1,    -1,   152,   153,   154,   155,   156,
-   157,   158,   159,   160,    -1,    -1,    -1,   164,    -1,    -1,
-    -1,   168,   142,   143,   144,   145,   146,    -1,    -1,    -1,
-    -1,    -1,   152,   153,   154,   155,   156,   157,   158,   159,
-   160,    -1,    -1,    -1,   164,    -1,    -1,    -1,   168,   142,
-   143,   144,   145,   146,    -1,    -1,    -1,    -1,    -1,   152,
-   153,   154,   155,   156,   157,   158,   159,   160,    -1,    -1,
-    -1,   164,    -1,    -1,    -1,   168,   142,   143,   144,   145,
-   146,    -1,    -1,    -1,    -1,    -1,   152,   153,   154,   155,
-   156,   157,   158,   159,   160,    -1,    -1,    -1,   164,    -1,
-    -1,    -1,   168,   142,   143,   144,   145,   146,    -1,    -1,
-    -1,    -1,    -1,   152,   153,   154,   155,   156,   157,   158,
-   159,   160,    -1,    -1,    -1,   164,    -1,    -1,    -1,   168,
-   142,   143,   144,   145,   146,    -1,    -1,    -1,    -1,    -1,
-   152,   153,   154,   155,   156,   157,   158,   159,   160,    -1,
-    -1,    -1,   164,    -1,    -1,    -1,   168,   142,   143,   144,
-   145,   146,    -1,    -1,    -1,    -1,    -1,   152,   153,   154,
-   155,   156,   157,   158,   159,   160,    -1,    -1,    -1,   164,
-    -1,    -1,    -1,   168,   142,   143,   144,   145,   146,    -1,
-    -1,    -1,    -1,    -1,   152,   153,   154,   155,   156,   157,
-   158,   159,   160,    -1,    -1,    -1,   164,    -1,    -1,    -1,
-   168,   142,   143,   144,   145,   146,    -1,    -1,    -1,    -1,
-    -1,   152,   153,   154,   155,   156,   157,   158,   159,   160,
-    -1,    -1,    -1,   164,    -1,    -1,    -1,   168,   142,   143,
-   144,   145,   146,    -1,    -1,    -1,    -1,    -1,   152,   153,
-   154,   155,   156,   157,   158,   159,   160,    -1,    -1,    -1,
-   164,    -1,    -1,    -1,   168,   142,   143,   144,   145,   146,
-    -1,    -1,    -1,    -1,    -1,   152,   153,   154,   155,   156,
-   157,   158,   159,   160,    -1,    -1,    -1,   164,    -1,    -1,
-    -1,   168,   142,   143,   144,   145,   146,    -1,    -1,    -1,
-    -1,    -1,   152,   153,   154,   155,   156,   157,   158,   159,
-   160,    -1,    -1,    -1,   164,    -1,    -1,   140,   168,   142,
-   143,   144,   145,   146,    -1,    -1,    -1,    -1,    -1,   152,
-   153,   154,   155,   156,   157,   158,   159,   160,    -1,    -1,
-    -1,   164,   142,   143,   144,   145,   146,    -1,    -1,    -1,
-    -1,    -1,   152,   153,   154,   155,   156,   157,   158,   159,
-   160,    -1,    -1,    -1,   164
+    25,    26,    27,    28,    29,     3,     4,   169,   169,     6,
+   167,     9,    10,    11,    12,    13,    14,    15,    16,    17,
+    18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
+    28,    29,   169,   141,   142,   143,   144,   145,     6,     6,
+   167,     6,   168,   151,   152,   153,   154,   155,   156,   157,
+   158,   159,   167,   167,     6,   163,   169,   169,   169,  1002,
+   167,     6,  1005,     6,     6,   168,     6,   169,   169,   169,
+     6,     6,     6,     0,   155,   156,   584,     6,     6,   558,
+     6,   162,  1025,  1160,   831,   166,     6,    -1,   169,   141,
+   142,   143,   144,   145,    -1,    -1,    -1,    -1,    -1,   151,
+   152,   153,   154,   155,   156,   157,   158,   159,    -1,     6,
+   162,   163,    -1,  1056,   166,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+   155,   156,    -1,     6,    -1,    -1,    -1,   162,    -1,    -1,
+    -1,   166,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,     6,   155,   156,    -1,
+    -1,    -1,    -1,    -1,   162,    -1,    -1,    -1,   166,    -1,
+    -1,    -1,    -1,    -1,   141,   142,   143,   144,   145,     6,
+    -1,    -1,    -1,    -1,   151,   152,   153,   154,   155,   156,
+   157,   158,   159,    -1,  1137,  1138,   163,    -1,   141,   142,
+   143,   144,   145,     6,    -1,    -1,    -1,    -1,   151,   152,
+   153,   154,   155,   156,   157,   158,   159,    -1,  1161,    -1,
+   163,   141,   142,   143,   144,   145,     6,    -1,    -1,    -1,
+    -1,   151,   152,   153,   154,   155,   156,   157,   158,   159,
+    -1,    -1,    -1,   163,   141,   142,   143,   144,   145,    -1,
+    -1,    -1,    -1,     6,   151,   152,   153,   154,   155,   156,
+   157,   158,   159,    -1,    -1,  1208,   163,    -1,   141,   142,
+   143,   144,   145,    -1,    -1,    -1,    -1,  1220,   151,   152,
+   153,   154,   155,   156,   157,   158,   159,    -1,    -1,    -1,
+   163,   141,   142,   143,   144,   145,     6,    -1,    -1,    -1,
+    -1,   151,   152,   153,   154,   155,   156,   157,   158,   159,
+    -1,    -1,    -1,   163,   141,   142,   143,   144,   145,    -1,
+    -1,    -1,  1265,    -1,   151,   152,   153,   154,   155,   156,
+   157,   158,   159,    -1,     6,    -1,   163,    -1,   141,   142,
+   143,   144,   145,    -1,    -1,    -1,    -1,    -1,   151,   152,
+   153,   154,   155,   156,   157,   158,   159,     6,    -1,    -1,
+   163,   141,   142,   143,   144,   145,    -1,    -1,    -1,    -1,
+  1313,   151,   152,   153,   154,   155,   156,   157,   158,   159,
+    -1,    -1,     8,   163,    -1,    -1,    -1,    -1,   141,   142,
+   143,   144,   145,    -1,    -1,    -1,    -1,  1340,   151,   152,
+   153,   154,   155,   156,   157,   158,   159,     8,    -1,    -1,
+   163,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,  1368,    -1,    -1,    -1,    -1,
+     8,   141,   142,   143,   144,   145,    -1,    -1,    -1,    -1,
+    -1,   151,   152,   153,   154,   155,   156,   157,   158,   159,
+    -1,    -1,    -1,   163,  1397,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1411,   141,
+   142,   143,   144,   145,    -1,    -1,    -1,    -1,    -1,   151,
+   152,   153,   154,   155,   156,   157,   158,   159,    -1,    -1,
+    -1,   163,   141,   142,   143,   144,   145,    -1,    -1,    -1,
+    -1,    -1,   151,   152,   153,   154,   155,   156,   157,   158,
+   159,    -1,    -1,    -1,   163,   141,   142,   143,   144,   145,
+    -1,    -1,    -1,    -1,    -1,   151,   152,   153,   154,   155,
+   156,   157,   158,   159,    -1,    -1,    -1,   163,    -1,    -1,
+   141,   142,   143,   144,   145,    -1,    -1,    -1,    -1,    -1,
+   151,   152,   153,   154,   155,   156,   157,   158,   159,    -1,
+    -1,    -1,   163,   141,   142,   143,   144,   145,    -1,    -1,
+    -1,    -1,    -1,   151,   152,   153,   154,   155,   156,   157,
+   158,   159,    -1,    -1,    -1,   163,    31,    32,    33,    34,
+    35,    36,    37,    38,    -1,    40,    -1,    42,    43,    -1,
+    45,    46,    -1,    -1,     0,     1,    -1,    -1,     4,    -1,
+    -1,   141,   142,   143,   144,   145,    -1,    62,    -1,    -1,
+    -1,   151,   152,   153,   154,   155,   156,   157,   158,   159,
+    -1,    76,    77,   163,    30,    31,    32,    33,    34,    35,
+    36,    37,    38,   173,    40,    41,    42,    43,    44,    45,
+    46,    -1,    -1,    -1,    50,    51,    52,    53,    54,    55,
+    -1,    57,    58,    59,    60,    61,    62,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    34,    -1,    -1,    -1,    -1,    -1,
+    76,    77,    -1,    -1,    -1,    -1,   131,    83,    84,    -1,
+    86,    87,   141,   142,   143,   144,   145,    -1,    -1,    -1,
+    -1,    -1,   151,   152,   153,   154,   155,   156,   157,   158,
+   159,    -1,    -1,    -1,   163,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,   173,   170,    -1,    -1,    88,    89,
+    90,    -1,    -1,    -1,    -1,   131,    96,    97,    98,    99,
+   100,   101,   102,   103,   104,   105,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,   114,   115,   116,   117,   118,   119,
+   120,   121,   122,   123,    -1,   125,   126,   127,   128,   129,
+   130,   141,   142,   143,   144,   145,    -1,    -1,    -1,    -1,
+    -1,   151,   152,   153,   154,   155,   156,   157,   158,   159,
+    -1,    -1,    -1,   163,   141,   142,   143,   144,   145,    -1,
+    -1,    -1,    -1,   173,   151,   152,   153,   154,   155,   156,
+   157,   158,   159,    -1,    -1,    -1,   163,   141,   142,   143,
+   144,   145,    -1,    -1,    -1,    -1,   173,   151,   152,   153,
+   154,   155,   156,   157,   158,   159,    -1,    -1,    -1,   163,
+    -1,    -1,    -1,   167,    -1,    -1,   170,   141,   142,   143,
+   144,   145,    -1,    -1,    -1,    -1,    -1,   151,   152,   153,
+   154,   155,   156,   157,   158,   159,    -1,    -1,    -1,   163,
+    -1,    -1,    -1,   167,    -1,    -1,   170,   141,   142,   143,
+   144,   145,    -1,    -1,    -1,    -1,    -1,   151,   152,   153,
+   154,   155,   156,   157,   158,   159,    -1,    -1,    -1,   163,
+    -1,    -1,    -1,   167,    -1,    -1,   170,   141,   142,   143,
+   144,   145,    -1,    -1,    -1,    -1,    -1,   151,   152,   153,
+   154,   155,   156,   157,   158,   159,    -1,    -1,    -1,   163,
+   141,   142,   143,   144,   145,    -1,   170,    -1,    -1,    -1,
+   151,   152,   153,   154,   155,   156,   157,   158,   159,    -1,
+    -1,    -1,   163,   141,   142,   143,   144,   145,    -1,   170,
+    -1,    -1,    -1,   151,   152,   153,   154,   155,   156,   157,
+   158,   159,    -1,    -1,    -1,   163,   141,   142,   143,   144,
+   145,    -1,   170,    -1,    -1,    -1,   151,   152,   153,   154,
+   155,   156,   157,   158,   159,    -1,    -1,    -1,   163,   141,
+   142,   143,   144,   145,    -1,   170,    -1,    -1,    -1,   151,
+   152,   153,   154,   155,   156,   157,   158,   159,    -1,    -1,
+    -1,   163,   141,   142,   143,   144,   145,    -1,   170,    -1,
+    -1,    -1,   151,   152,   153,   154,   155,   156,   157,   158,
+   159,    -1,    -1,    -1,   163,   141,   142,   143,   144,   145,
+    -1,   170,    -1,    -1,    -1,   151,   152,   153,   154,   155,
+   156,   157,   158,   159,    -1,    -1,    -1,   163,   141,   142,
+   143,   144,   145,    -1,   170,    -1,    -1,    -1,   151,   152,
+   153,   154,   155,   156,   157,   158,   159,    -1,    -1,    -1,
+   163,   141,   142,   143,   144,   145,    -1,   170,    -1,    -1,
+    -1,   151,   152,   153,   154,   155,   156,   157,   158,   159,
+    -1,    -1,    -1,   163,   141,   142,   143,   144,   145,    -1,
+   170,    -1,    -1,    -1,   151,   152,   153,   154,   155,   156,
+   157,   158,   159,    -1,    -1,    -1,   163,   141,   142,   143,
+   144,   145,    -1,   170,    -1,    -1,    -1,   151,   152,   153,
+   154,   155,   156,   157,   158,   159,    -1,    -1,    -1,   163,
+   141,   142,   143,   144,   145,    -1,   170,    -1,    -1,    -1,
+   151,   152,   153,   154,   155,   156,   157,   158,   159,    -1,
+    -1,    -1,   163,   141,   142,   143,   144,   145,    -1,   170,
+    -1,    -1,    -1,   151,   152,   153,   154,   155,   156,   157,
+   158,   159,    -1,    -1,    -1,   163,   141,   142,   143,   144,
+   145,    -1,   170,    -1,    -1,    -1,   151,   152,   153,   154,
+   155,   156,   157,   158,   159,    -1,    -1,    -1,   163,   141,
+   142,   143,   144,   145,    -1,   170,    -1,    -1,    -1,   151,
+   152,   153,   154,   155,   156,   157,   158,   159,    -1,    -1,
+    -1,   163,   134,    -1,    -1,    -1,    -1,    -1,   170,   141,
+   142,   143,   144,   145,    -1,    -1,    -1,    -1,    -1,   151,
+   152,   153,   154,   155,   156,   157,   158,   159,    -1,    -1,
+    -1,   163,   141,   142,   143,   144,   145,    -1,    -1,    -1,
+    -1,    -1,   151,   152,   153,   154,   155,   156,   157,   158,
+   159,    -1,    -1,    -1,   163,   141,   142,   143,   144,   145,
+    -1,   170,    -1,    -1,    -1,   151,   152,   153,   154,   155,
+   156,   157,   158,   159,    -1,    -1,    -1,   163,   141,   142,
+   143,   144,   145,    -1,   170,    -1,    -1,    -1,   151,   152,
+   153,   154,   155,   156,   157,   158,   159,    -1,    -1,    -1,
+   163,   141,   142,   143,   144,   145,    -1,   170,    -1,    -1,
+    -1,   151,   152,   153,   154,   155,   156,   157,   158,   159,
+    -1,    -1,    -1,   163,    -1,    -1,    -1,   167,   168,   141,
+   142,   143,   144,   145,    -1,    -1,    -1,    -1,    -1,   151,
+   152,   153,   154,   155,   156,   157,   158,   159,    -1,    -1,
+    -1,   163,    -1,    -1,    -1,    -1,   168,   141,   142,   143,
+   144,   145,    -1,    -1,    -1,    -1,    -1,   151,   152,   153,
+   154,   155,   156,   157,   158,   159,    -1,    -1,    -1,   163,
+    -1,    -1,    -1,    -1,   168,   141,   142,   143,   144,   145,
+    -1,    -1,    -1,    -1,    -1,   151,   152,   153,   154,   155,
+   156,   157,   158,   159,    -1,    -1,    -1,   163,    -1,    -1,
+    -1,    -1,   168,   141,   142,   143,   144,   145,    -1,    -1,
+    -1,    -1,    -1,   151,   152,   153,   154,   155,   156,   157,
+   158,   159,    -1,    -1,    -1,   163,    -1,    -1,    -1,    -1,
+   168,   141,   142,   143,   144,   145,    -1,    -1,    -1,    -1,
+    -1,   151,   152,   153,   154,   155,   156,   157,   158,   159,
+    -1,    -1,    -1,   163,    -1,    -1,    -1,    -1,   168,   141,
+   142,   143,   144,   145,    -1,    -1,    -1,    -1,    -1,   151,
+   152,   153,   154,   155,   156,   157,   158,   159,    -1,    -1,
+    -1,   163,    -1,    -1,    -1,    -1,   168,   141,   142,   143,
+   144,   145,    -1,    -1,    -1,    -1,    -1,   151,   152,   153,
+   154,   155,   156,   157,   158,   159,    -1,    -1,    -1,   163,
+    -1,    -1,    -1,    -1,   168,   141,   142,   143,   144,   145,
+    -1,    -1,    -1,    -1,    -1,   151,   152,   153,   154,   155,
+   156,   157,   158,   159,    -1,    -1,    -1,   163,    -1,    -1,
+    -1,    -1,   168,   141,   142,   143,   144,   145,    -1,    -1,
+    -1,    -1,    -1,   151,   152,   153,   154,   155,   156,   157,
+   158,   159,    -1,    -1,    -1,   163,    -1,    -1,    -1,    -1,
+   168,   141,   142,   143,   144,   145,    -1,    -1,    -1,    -1,
+    -1,   151,   152,   153,   154,   155,   156,   157,   158,   159,
+    -1,    -1,    -1,   163,    -1,    -1,    -1,    -1,   168,   141,
+   142,   143,   144,   145,    -1,    -1,    -1,    -1,    -1,   151,
+   152,   153,   154,   155,   156,   157,   158,   159,    -1,    -1,
+    -1,   163,    -1,    -1,    -1,    -1,   168,   141,   142,   143,
+   144,   145,    -1,    -1,    -1,    -1,    -1,   151,   152,   153,
+   154,   155,   156,   157,   158,   159,    -1,    -1,    -1,   163,
+    -1,    -1,    -1,    -1,   168,   141,   142,   143,   144,   145,
+    -1,    -1,    -1,    -1,    -1,   151,   152,   153,   154,   155,
+   156,   157,   158,   159,    -1,    -1,    -1,   163,    -1,    -1,
+    -1,    -1,   168,   141,   142,   143,   144,   145,    -1,    -1,
+    -1,    -1,    -1,   151,   152,   153,   154,   155,   156,   157,
+   158,   159,    -1,    -1,    -1,   163,    -1,    -1,    -1,    -1,
+   168,   141,   142,   143,   144,   145,    -1,    -1,    -1,    -1,
+    -1,   151,   152,   153,   154,   155,   156,   157,   158,   159,
+    -1,    -1,    -1,   163,    -1,    -1,    -1,    -1,   168,   141,
+   142,   143,   144,   145,    -1,    -1,    -1,    -1,    -1,   151,
+   152,   153,   154,   155,   156,   157,   158,   159,    -1,    -1,
+    -1,   163,    -1,    -1,    -1,    -1,   168,   141,   142,   143,
+   144,   145,    -1,    -1,    -1,    -1,    -1,   151,   152,   153,
+   154,   155,   156,   157,   158,   159,    -1,    -1,    -1,   163,
+    -1,    -1,    -1,    -1,   168,   141,   142,   143,   144,   145,
+    -1,    -1,    -1,    -1,    -1,   151,   152,   153,   154,   155,
+   156,   157,   158,   159,    -1,    -1,    -1,   163,    -1,    -1,
+    -1,    -1,   168,   141,   142,   143,   144,   145,    -1,    -1,
+    -1,    -1,    -1,   151,   152,   153,   154,   155,   156,   157,
+   158,   159,    -1,    -1,    -1,   163,    -1,    -1,    -1,    -1,
+   168,   141,   142,   143,   144,   145,    -1,    -1,    -1,    -1,
+    -1,   151,   152,   153,   154,   155,   156,   157,   158,   159,
+    -1,    -1,    -1,   163,    -1,    -1,    -1,    -1,   168,   141,
+   142,   143,   144,   145,    -1,    -1,    -1,    -1,    -1,   151,
+   152,   153,   154,   155,   156,   157,   158,   159,    -1,    -1,
+    -1,   163,    -1,    -1,    -1,    -1,   168,   141,   142,   143,
+   144,   145,    -1,    -1,    -1,    -1,    -1,   151,   152,   153,
+   154,   155,   156,   157,   158,   159,    -1,    -1,    -1,   163,
+    -1,    -1,    -1,    -1,   168,   141,   142,   143,   144,   145,
+    -1,    -1,    -1,    -1,    -1,   151,   152,   153,   154,   155,
+   156,   157,   158,   159,    -1,    -1,    -1,   163,    -1,    -1,
+    -1,    -1,   168,   141,   142,   143,   144,   145,    -1,    -1,
+    -1,    -1,    -1,   151,   152,   153,   154,   155,   156,   157,
+   158,   159,    -1,    -1,    -1,   163,    -1,    -1,    -1,    -1,
+   168,   141,   142,   143,   144,   145,    -1,    -1,    -1,    -1,
+    -1,   151,   152,   153,   154,   155,   156,   157,   158,   159,
+    -1,    -1,    -1,   163,    -1,    -1,    -1,    -1,   168,   141,
+   142,   143,   144,   145,    -1,    -1,    -1,    -1,    -1,   151,
+   152,   153,   154,   155,   156,   157,   158,   159,    -1,    -1,
+    -1,   163,    -1,    -1,    -1,    -1,   168,   141,   142,   143,
+   144,   145,    -1,    -1,    -1,    -1,    -1,   151,   152,   153,
+   154,   155,   156,   157,   158,   159,    -1,    -1,    -1,   163,
+    -1,    -1,    -1,    -1,   168,   141,   142,   143,   144,   145,
+    -1,    -1,    -1,    -1,    -1,   151,   152,   153,   154,   155,
+   156,   157,   158,   159,    -1,    -1,    -1,   163,    -1,    -1,
+    -1,    -1,   168,   141,   142,   143,   144,   145,    -1,    -1,
+    -1,    -1,    -1,   151,   152,   153,   154,   155,   156,   157,
+   158,   159,    -1,    -1,    -1,   163,    -1,    -1,    -1,    -1,
+   168,   141,   142,   143,   144,   145,    -1,    -1,    -1,    -1,
+    -1,   151,   152,   153,   154,   155,   156,   157,   158,   159,
+    -1,    -1,    -1,   163,    -1,    -1,    -1,    -1,   168,   141,
+   142,   143,   144,   145,    -1,    -1,    -1,    -1,    -1,   151,
+   152,   153,   154,   155,   156,   157,   158,   159,    -1,    -1,
+    -1,   163,    -1,    -1,    -1,    -1,   168,   141,   142,   143,
+   144,   145,    -1,    -1,    -1,    -1,    -1,   151,   152,   153,
+   154,   155,   156,   157,   158,   159,    -1,    -1,    -1,   163,
+    -1,    -1,    -1,    -1,   168,   141,   142,   143,   144,   145,
+    -1,    -1,    -1,    -1,    -1,   151,   152,   153,   154,   155,
+   156,   157,   158,   159,    -1,    -1,    -1,   163,    -1,    -1,
+    -1,    -1,   168,   141,   142,   143,   144,   145,    -1,    -1,
+    -1,    -1,    -1,   151,   152,   153,   154,   155,   156,   157,
+   158,   159,    -1,    -1,    -1,   163,    -1,    -1,    -1,    -1,
+   168,   141,   142,   143,   144,   145,    -1,    -1,    -1,    -1,
+    -1,   151,   152,   153,   154,   155,   156,   157,   158,   159,
+    -1,    -1,    -1,   163,    -1,    -1,    -1,    -1,   168,   141,
+   142,   143,   144,   145,    -1,    -1,    -1,    -1,    -1,   151,
+   152,   153,   154,   155,   156,   157,   158,   159,    -1,    -1,
+    -1,   163,    -1,    -1,    -1,    -1,   168,   141,   142,   143,
+   144,   145,    -1,    -1,    -1,    -1,    -1,   151,   152,   153,
+   154,   155,   156,   157,   158,   159,    -1,    -1,    -1,   163,
+    -1,    -1,    -1,    -1,   168,   141,   142,   143,   144,   145,
+    -1,    -1,    -1,    -1,    -1,   151,   152,   153,   154,   155,
+   156,   157,   158,   159,    -1,    -1,    -1,   163,    -1,    -1,
+    -1,    -1,   168,   141,   142,   143,   144,   145,    -1,    -1,
+    -1,    -1,    -1,   151,   152,   153,   154,   155,   156,   157,
+   158,   159,    -1,    -1,    -1,   163,    -1,    -1,    -1,    -1,
+   168,   141,   142,   143,   144,   145,    -1,    -1,    -1,    -1,
+    -1,   151,   152,   153,   154,   155,   156,   157,   158,   159,
+    -1,    -1,    -1,   163,    -1,    -1,    -1,    -1,   168,   141,
+   142,   143,   144,   145,    -1,    -1,    -1,    -1,    -1,   151,
+   152,   153,   154,   155,   156,   157,   158,   159,    -1,    -1,
+    -1,   163,    -1,    -1,    -1,    -1,   168,   141,   142,   143,
+   144,   145,    -1,    -1,    -1,    -1,    -1,   151,   152,   153,
+   154,   155,   156,   157,   158,   159,    -1,    -1,    -1,   163,
+    -1,    -1,    -1,    -1,   168,   141,   142,   143,   144,   145,
+    -1,    -1,    -1,    -1,    -1,   151,   152,   153,   154,   155,
+   156,   157,   158,   159,    -1,    -1,    -1,   163,    -1,    -1,
+    -1,    -1,   168,   141,   142,   143,   144,   145,    -1,    -1,
+    -1,    -1,    -1,   151,   152,   153,   154,   155,   156,   157,
+   158,   159,    -1,    -1,    -1,   163,    -1,    -1,    -1,    -1,
+   168,   141,   142,   143,   144,   145,    -1,    -1,    -1,    -1,
+    -1,   151,   152,   153,   154,   155,   156,   157,   158,   159,
+    -1,    -1,    -1,   163,    -1,    -1,    -1,    -1,   168,   141,
+   142,   143,   144,   145,    -1,    -1,    -1,    -1,    -1,   151,
+   152,   153,   154,   155,   156,   157,   158,   159,    -1,    -1,
+    -1,   163,    -1,    -1,    -1,    -1,   168,   141,   142,   143,
+   144,   145,    -1,    -1,    -1,    -1,    -1,   151,   152,   153,
+   154,   155,   156,   157,   158,   159,    -1,    -1,    -1,   163,
+    -1,    -1,    -1,    -1,   168,   141,   142,   143,   144,   145,
+    -1,    -1,    -1,    -1,    -1,   151,   152,   153,   154,   155,
+   156,   157,   158,   159,    -1,    -1,    -1,   163,    -1,    -1,
+    -1,    -1,   168,   141,   142,   143,   144,   145,    -1,    -1,
+    -1,    -1,    -1,   151,   152,   153,   154,   155,   156,   157,
+   158,   159,    -1,    -1,    -1,   163,    -1,    -1,    -1,    -1,
+   168,   141,   142,   143,   144,   145,    -1,    -1,    -1,    -1,
+    -1,   151,   152,   153,   154,   155,   156,   157,   158,   159,
+    -1,    -1,    -1,   163,    -1,    -1,    -1,    -1,   168,   141,
+   142,   143,   144,   145,    -1,    -1,    -1,    -1,    -1,   151,
+   152,   153,   154,   155,   156,   157,   158,   159,    -1,    -1,
+    -1,   163,    -1,    -1,    -1,    -1,   168,   141,   142,   143,
+   144,   145,    -1,    -1,    -1,    -1,    -1,   151,   152,   153,
+   154,   155,   156,   157,   158,   159,    -1,    -1,    -1,   163,
+    -1,    -1,    -1,    -1,   168,   141,   142,   143,   144,   145,
+    -1,    -1,    -1,    -1,    -1,   151,   152,   153,   154,   155,
+   156,   157,   158,   159,    -1,    -1,    -1,   163,    -1,    -1,
+    -1,    -1,   168,   141,   142,   143,   144,   145,    -1,    -1,
+    -1,    -1,    -1,   151,   152,   153,   154,   155,   156,   157,
+   158,   159,    -1,    -1,    -1,   163,    -1,    -1,    -1,    -1,
+   168,   141,   142,   143,   144,   145,    -1,    -1,    -1,    -1,
+    -1,   151,   152,   153,   154,   155,   156,   157,   158,   159,
+    -1,    -1,    -1,   163,    -1,    -1,    -1,    -1,   168,   141,
+   142,   143,   144,   145,    -1,    -1,    -1,    -1,    -1,   151,
+   152,   153,   154,   155,   156,   157,   158,   159,    -1,    -1,
+    -1,   163,    -1,    -1,    -1,    -1,   168,   141,   142,   143,
+   144,   145,    -1,    -1,    -1,    -1,    -1,   151,   152,   153,
+   154,   155,   156,   157,   158,   159,    -1,    -1,    -1,   163,
+    -1,    -1,    -1,    -1,   168,   141,   142,   143,   144,   145,
+    -1,    -1,    -1,    -1,    -1,   151,   152,   153,   154,   155,
+   156,   157,   158,   159,    -1,    -1,    -1,   163,    -1,    -1,
+    -1,    -1,   168,   141,   142,   143,   144,   145,    -1,    -1,
+    -1,    -1,    -1,   151,   152,   153,   154,   155,   156,   157,
+   158,   159,    -1,    -1,    -1,   163,    -1,    -1,    -1,    -1,
+   168,   141,   142,   143,   144,   145,    -1,    -1,    -1,    -1,
+    -1,   151,   152,   153,   154,   155,   156,   157,   158,   159,
+    -1,    -1,    -1,   163,    -1,    -1,    -1,    -1,   168,   141,
+   142,   143,   144,   145,    -1,    -1,    -1,    -1,    -1,   151,
+   152,   153,   154,   155,   156,   157,   158,   159,    -1,    -1,
+    -1,   163,    -1,    -1,    -1,    -1,   168,   141,   142,   143,
+   144,   145,    -1,    -1,    -1,    -1,    -1,   151,   152,   153,
+   154,   155,   156,   157,   158,   159,    -1,    -1,    -1,   163,
+    -1,    -1,    -1,    -1,   168,   141,   142,   143,   144,   145,
+    -1,    -1,    -1,    -1,    -1,   151,   152,   153,   154,   155,
+   156,   157,   158,   159,    -1,    -1,    -1,   163,    -1,    -1,
+    -1,    -1,   168,   141,   142,   143,   144,   145,    -1,    -1,
+    -1,    -1,    -1,   151,   152,   153,   154,   155,   156,   157,
+   158,   159,    -1,    -1,    -1,   163,    -1,    -1,    -1,   167,
+   141,   142,   143,   144,   145,    -1,    -1,    -1,    -1,    -1,
+   151,   152,   153,   154,   155,   156,   157,   158,   159,    -1,
+    -1,    -1,   163,    -1,    -1,    -1,   167,   141,   142,   143,
+   144,   145,    -1,    -1,    -1,    -1,    -1,   151,   152,   153,
+   154,   155,   156,   157,   158,   159,    -1,    -1,    -1,   163,
+    -1,    -1,    -1,   167,   141,   142,   143,   144,   145,    -1,
+    -1,    -1,    -1,    -1,   151,   152,   153,   154,   155,   156,
+   157,   158,   159,    -1,    -1,    -1,   163,    -1,    -1,    -1,
+   167,   141,   142,   143,   144,   145,    -1,    -1,    -1,    -1,
+    -1,   151,   152,   153,   154,   155,   156,   157,   158,   159,
+    -1,    -1,    -1,   163,    -1,    -1,    -1,   167,   141,   142,
+   143,   144,   145,    -1,    -1,    -1,    -1,    -1,   151,   152,
+   153,   154,   155,   156,   157,   158,   159,    -1,    -1,    -1,
+   163,   137,    -1,    -1,   167,   141,   142,   143,   144,   145,
+    -1,    -1,    -1,    -1,    -1,   151,   152,   153,   154,   155,
+   156,   157,   158,   159,    -1,    -1,    -1,   163,   141,   142,
+   143,   144,   145,    -1,    -1,    -1,    -1,    -1,   151,   152,
+   153,   154,   155,   156,   157,   158,   159,    -1,    -1,    -1,
+   163,    -1,    -1,    -1,   167,   141,   142,   143,   144,   145,
+    -1,    -1,    -1,    -1,    -1,   151,   152,   153,   154,   155,
+   156,   157,   158,   159,    -1,    -1,    -1,   163,    -1,    -1,
+    -1,   167,   141,   142,   143,   144,   145,    -1,    -1,    -1,
+    -1,    -1,   151,   152,   153,   154,   155,   156,   157,   158,
+   159,    -1,    -1,    -1,   163,    -1,    -1,    -1,   167,   141,
+   142,   143,   144,   145,    -1,    -1,    -1,    -1,    -1,   151,
+   152,   153,   154,   155,   156,   157,   158,   159,    -1,    -1,
+    -1,   163,    -1,    -1,    -1,   167,   141,   142,   143,   144,
+   145,    -1,    -1,    -1,    -1,    -1,   151,   152,   153,   154,
+   155,   156,   157,   158,   159,    -1,    -1,    -1,   163,    -1,
+    -1,    -1,   167,   141,   142,   143,   144,   145,    -1,    -1,
+    -1,    -1,    -1,   151,   152,   153,   154,   155,   156,   157,
+   158,   159,    -1,    -1,    -1,   163,    -1,    -1,    -1,   167,
+   141,   142,   143,   144,   145,    -1,    -1,    -1,    -1,    -1,
+   151,   152,   153,   154,   155,   156,   157,   158,   159,    -1,
+    -1,    -1,   163,    -1,    -1,    -1,   167,   141,   142,   143,
+   144,   145,    -1,    -1,    -1,    -1,    -1,   151,   152,   153,
+   154,   155,   156,   157,   158,   159,    -1,    -1,    -1,   163,
+    -1,    -1,    -1,   167,   141,   142,   143,   144,   145,    -1,
+    -1,    -1,    -1,    -1,   151,   152,   153,   154,   155,   156,
+   157,   158,   159,    -1,    -1,    -1,   163,    -1,    -1,    -1,
+   167,   141,   142,   143,   144,   145,    -1,    -1,    -1,    -1,
+    -1,   151,   152,   153,   154,   155,   156,   157,   158,   159,
+    -1,    -1,    -1,   163,    -1,    -1,    -1,   167,   141,   142,
+   143,   144,   145,    -1,    -1,    -1,    -1,    -1,   151,   152,
+   153,   154,   155,   156,   157,   158,   159,    -1,    -1,    -1,
+   163,    -1,    -1,    -1,   167,   141,   142,   143,   144,   145,
+    -1,    -1,    -1,    -1,    -1,   151,   152,   153,   154,   155,
+   156,   157,   158,   159,    -1,    -1,    -1,   163,    -1,    -1,
+    -1,   167,   141,   142,   143,   144,   145,    -1,    -1,    -1,
+    -1,    -1,   151,   152,   153,   154,   155,   156,   157,   158,
+   159,    -1,    -1,    -1,   163,    -1,    -1,    -1,   167,   141,
+   142,   143,   144,   145,    -1,    -1,    -1,    -1,    -1,   151,
+   152,   153,   154,   155,   156,   157,   158,   159,    -1,    -1,
+    -1,   163,    -1,    -1,    -1,   167,   141,   142,   143,   144,
+   145,    -1,    -1,    -1,    -1,    -1,   151,   152,   153,   154,
+   155,   156,   157,   158,   159,    -1,    -1,    -1,   163,    -1,
+    -1,    -1,   167,   141,   142,   143,   144,   145,    -1,    -1,
+    -1,    -1,    -1,   151,   152,   153,   154,   155,   156,   157,
+   158,   159,    -1,    -1,    -1,   163,    -1,    -1,    -1,   167,
+   141,   142,   143,   144,   145,    -1,    -1,    -1,    -1,    -1,
+   151,   152,   153,   154,   155,   156,   157,   158,   159,    -1,
+    -1,    -1,   163,    -1,    -1,    -1,   167,   141,   142,   143,
+   144,   145,    -1,    -1,    -1,    -1,    -1,   151,   152,   153,
+   154,   155,   156,   157,   158,   159,    -1,    -1,    -1,   163,
+    -1,    -1,    -1,   167,   141,   142,   143,   144,   145,    -1,
+    -1,    -1,    -1,    -1,   151,   152,   153,   154,   155,   156,
+   157,   158,   159,    -1,    -1,    -1,   163,    -1,    -1,    -1,
+   167,   141,   142,   143,   144,   145,    -1,    -1,    -1,    -1,
+    -1,   151,   152,   153,   154,   155,   156,   157,   158,   159,
+    -1,    -1,    -1,   163,    -1,    -1,    -1,   167,   141,   142,
+   143,   144,   145,    -1,    -1,    -1,    -1,    -1,   151,   152,
+   153,   154,   155,   156,   157,   158,   159,    -1,    -1,    -1,
+   163,    -1,    -1,    -1,   167,   141,   142,   143,   144,   145,
+    -1,    -1,    -1,    -1,    -1,   151,   152,   153,   154,   155,
+   156,   157,   158,   159,    -1,    -1,    -1,   163,    -1,    -1,
+    -1,   167,   141,   142,   143,   144,   145,    -1,    -1,    -1,
+    -1,    -1,   151,   152,   153,   154,   155,   156,   157,   158,
+   159,    -1,    -1,    -1,   163,    -1,    -1,    -1,   167,   141,
+   142,   143,   144,   145,    -1,    -1,    -1,    -1,    -1,   151,
+   152,   153,   154,   155,   156,   157,   158,   159,    -1,    -1,
+    -1,   163,    -1,    -1,    -1,   167,   141,   142,   143,   144,
+   145,    -1,    -1,    -1,    -1,    -1,   151,   152,   153,   154,
+   155,   156,   157,   158,   159,    -1,    -1,    -1,   163,    -1,
+    -1,    -1,   167,   141,   142,   143,   144,   145,    -1,    -1,
+    -1,    -1,    -1,   151,   152,   153,   154,   155,   156,   157,
+   158,   159,    -1,    -1,    -1,   163,    -1,    -1,    -1,   167,
+   141,   142,   143,   144,   145,    -1,    -1,    -1,    -1,    -1,
+   151,   152,   153,   154,   155,   156,   157,   158,   159,    -1,
+    -1,    -1,   163,    -1,    -1,    -1,   167,   141,   142,   143,
+   144,   145,    -1,    -1,    -1,    -1,    -1,   151,   152,   153,
+   154,   155,   156,   157,   158,   159,    -1,    -1,    -1,   163,
+    -1,    -1,    -1,   167,   141,   142,   143,   144,   145,    -1,
+    -1,    -1,    -1,    -1,   151,   152,   153,   154,   155,   156,
+   157,   158,   159,    -1,    -1,    -1,   163,    -1,    -1,    -1,
+   167,   141,   142,   143,   144,   145,    -1,    -1,    -1,    -1,
+    -1,   151,   152,   153,   154,   155,   156,   157,   158,   159,
+    -1,    -1,    -1,   163,    -1,    -1,    -1,   167,   141,   142,
+   143,   144,   145,    -1,    -1,    -1,    -1,    -1,   151,   152,
+   153,   154,   155,   156,   157,   158,   159,    -1,    -1,    -1,
+   163,    -1,    -1,    -1,   167,   141,   142,   143,   144,   145,
+    -1,    -1,    -1,    -1,    -1,   151,   152,   153,   154,   155,
+   156,   157,   158,   159,    -1,    -1,    -1,   163,    -1,    -1,
+    -1,   167,   141,   142,   143,   144,   145,    -1,    -1,    -1,
+    -1,    -1,   151,   152,   153,   154,   155,   156,   157,   158,
+   159,    -1,    -1,    -1,   163,    -1,    -1,    -1,   167,   141,
+   142,   143,   144,   145,    -1,    -1,    -1,    -1,    -1,   151,
+   152,   153,   154,   155,   156,   157,   158,   159,    -1,    -1,
+    -1,   163,    -1,    -1,    -1,   167,   141,   142,   143,   144,
+   145,    -1,    -1,    -1,    -1,    -1,   151,   152,   153,   154,
+   155,   156,   157,   158,   159,    -1,    -1,    -1,   163,    -1,
+    -1,    -1,   167,   141,   142,   143,   144,   145,    -1,    -1,
+    -1,    -1,    -1,   151,   152,   153,   154,   155,   156,   157,
+   158,   159,    -1,    -1,    -1,   163,    -1,    -1,    -1,   167,
+   141,   142,   143,   144,   145,    -1,    -1,    -1,    -1,    -1,
+   151,   152,   153,   154,   155,   156,   157,   158,   159,    -1,
+    -1,    -1,   163,    -1,    -1,    -1,   167,   141,   142,   143,
+   144,   145,    -1,    -1,    -1,    -1,    -1,   151,   152,   153,
+   154,   155,   156,   157,   158,   159,    -1,    -1,    -1,   163,
+    -1,    -1,    -1,   167,   141,   142,   143,   144,   145,    -1,
+    -1,    -1,    -1,    -1,   151,   152,   153,   154,   155,   156,
+   157,   158,   159,    -1,    -1,    -1,   163,    -1,    -1,    -1,
+   167,   141,   142,   143,   144,   145,    -1,    -1,    -1,    -1,
+    -1,   151,   152,   153,   154,   155,   156,   157,   158,   159,
+    -1,    -1,    -1,   163,    -1,    -1,    -1,   167,   141,   142,
+   143,   144,   145,    -1,    -1,    -1,    -1,    -1,   151,   152,
+   153,   154,   155,   156,   157,   158,   159,    -1,    -1,    -1,
+   163,    -1,    -1,    -1,   167,   141,   142,   143,   144,   145,
+    -1,    -1,    -1,    -1,    -1,   151,   152,   153,   154,   155,
+   156,   157,   158,   159,    -1,    -1,    -1,   163,    -1,    -1,
+    -1,   167,   141,   142,   143,   144,   145,    -1,    -1,    -1,
+    -1,    -1,   151,   152,   153,   154,   155,   156,   157,   158,
+   159,    -1,    -1,    -1,   163,    -1,    -1,    -1,   167,   141,
+   142,   143,   144,   145,    -1,    -1,    -1,    -1,    -1,   151,
+   152,   153,   154,   155,   156,   157,   158,   159,    -1,    -1,
+    -1,   163,    -1,    -1,    -1,   167,   141,   142,   143,   144,
+   145,    -1,    -1,    -1,    -1,    -1,   151,   152,   153,   154,
+   155,   156,   157,   158,   159,    -1,    -1,    -1,   163,    -1,
+    -1,    -1,   167,   141,   142,   143,   144,   145,    -1,    -1,
+    -1,    -1,    -1,   151,   152,   153,   154,   155,   156,   157,
+   158,   159,    -1,    -1,    -1,   163,    -1,    -1,    -1,   167,
+   141,   142,   143,   144,   145,    -1,    -1,    -1,    -1,    -1,
+   151,   152,   153,   154,   155,   156,   157,   158,   159,    -1,
+    -1,    -1,   163,    -1,    -1,    -1,   167,   141,   142,   143,
+   144,   145,    -1,    -1,    -1,    -1,    -1,   151,   152,   153,
+   154,   155,   156,   157,   158,   159,    -1,    -1,    -1,   163,
+    -1,    -1,    -1,   167,   141,   142,   143,   144,   145,    -1,
+    -1,    -1,    -1,    -1,   151,   152,   153,   154,   155,   156,
+   157,   158,   159,    -1,    -1,    -1,   163,    -1,    -1,    -1,
+   167,   141,   142,   143,   144,   145,    -1,    -1,    -1,    -1,
+    -1,   151,   152,   153,   154,   155,   156,   157,   158,   159,
+    -1,    -1,    -1,   163,    -1,    -1,    -1,   167,   141,   142,
+   143,   144,   145,    -1,    -1,    -1,    -1,    -1,   151,   152,
+   153,   154,   155,   156,   157,   158,   159,    -1,    -1,    -1,
+   163,    -1,    -1,    -1,   167,   141,   142,   143,   144,   145,
+    -1,    -1,    -1,    -1,    -1,   151,   152,   153,   154,   155,
+   156,   157,   158,   159,    -1,    -1,    -1,   163,    -1,    -1,
+    -1,   167,   141,   142,   143,   144,   145,    -1,    -1,    -1,
+    -1,    -1,   151,   152,   153,   154,   155,   156,   157,   158,
+   159,    -1,    -1,    -1,   163,    -1,    -1,    -1,   167,   141,
+   142,   143,   144,   145,    -1,    -1,    -1,    -1,    -1,   151,
+   152,   153,   154,   155,   156,   157,   158,   159,    -1,    -1,
+    -1,   163,    -1,    -1,    -1,   167,   141,   142,   143,   144,
+   145,    -1,    -1,    -1,    -1,    -1,   151,   152,   153,   154,
+   155,   156,   157,   158,   159,    -1,    -1,    -1,   163,    -1,
+    -1,    -1,   167,   141,   142,   143,   144,   145,    -1,    -1,
+    -1,    -1,    -1,   151,   152,   153,   154,   155,   156,   157,
+   158,   159,    -1,    -1,    -1,   163,    -1,    -1,    -1,   167,
+   141,   142,   143,   144,   145,    -1,    -1,    -1,    -1,    -1,
+   151,   152,   153,   154,   155,   156,   157,   158,   159,    -1,
+    -1,    -1,   163,    -1,    -1,    -1,   167,   141,   142,   143,
+   144,   145,    -1,    -1,    -1,    -1,    -1,   151,   152,   153,
+   154,   155,   156,   157,   158,   159,    -1,    -1,    -1,   163,
+    -1,    -1,    -1,   167,   141,   142,   143,   144,   145,    -1,
+    -1,    -1,    -1,    -1,   151,   152,   153,   154,   155,   156,
+   157,   158,   159,    -1,    -1,    -1,   163,    -1,    -1,    -1,
+   167,   141,   142,   143,   144,   145,    -1,    -1,    -1,    -1,
+    -1,   151,   152,   153,   154,   155,   156,   157,   158,   159,
+    -1,    -1,    -1,   163,    -1,    -1,    -1,   167,   141,   142,
+   143,   144,   145,    -1,    -1,    -1,    -1,    -1,   151,   152,
+   153,   154,   155,   156,   157,   158,   159,    -1,    -1,    -1,
+   163,    -1,    -1,    -1,   167,   141,   142,   143,   144,   145,
+    -1,    -1,    -1,    -1,    -1,   151,   152,   153,   154,   155,
+   156,   157,   158,   159,    -1,    -1,    -1,   163,    -1,    -1,
+    -1,   167,   141,   142,   143,   144,   145,    -1,    -1,    -1,
+    -1,    -1,   151,   152,   153,   154,   155,   156,   157,   158,
+   159,    -1,    -1,    -1,   163,    -1,    -1,    -1,   167,   141,
+   142,   143,   144,   145,    -1,    -1,    -1,    -1,    -1,   151,
+   152,   153,   154,   155,   156,   157,   158,   159,    -1,    -1,
+    -1,   163,    -1,    -1,    -1,   167,   141,   142,   143,   144,
+   145,    -1,    -1,    -1,    -1,    -1,   151,   152,   153,   154,
+   155,   156,   157,   158,   159,    -1,    -1,    -1,   163,    -1,
+    -1,    -1,   167,   141,   142,   143,   144,   145,    -1,    -1,
+    -1,    -1,    -1,   151,   152,   153,   154,   155,   156,   157,
+   158,   159,    -1,    -1,    -1,   163,    -1,    -1,    -1,   167,
+   141,   142,   143,   144,   145,    -1,    -1,    -1,    -1,    -1,
+   151,   152,   153,   154,   155,   156,   157,   158,   159,    -1,
+    -1,    -1,   163,    -1,    -1,    -1,   167,   141,   142,   143,
+   144,   145,    -1,    -1,    -1,    -1,    -1,   151,   152,   153,
+   154,   155,   156,   157,   158,   159,    -1,    -1,    -1,   163,
+    -1,    -1,    -1,   167,   141,   142,   143,   144,   145,    -1,
+    -1,    -1,    -1,    -1,   151,   152,   153,   154,   155,   156,
+   157,   158,   159,    -1,    -1,    -1,   163,    -1,    -1,    -1,
+   167,   141,   142,   143,   144,   145,    -1,    -1,    -1,    -1,
+    -1,   151,   152,   153,   154,   155,   156,   157,   158,   159,
+    -1,    -1,    -1,   163,    -1,    -1,    -1,   167,   141,   142,
+   143,   144,   145,    -1,    -1,    -1,    -1,    -1,   151,   152,
+   153,   154,   155,   156,   157,   158,   159,    -1,    -1,    -1,
+   163,    -1,    -1,    -1,   167,   141,   142,   143,   144,   145,
+    -1,    -1,    -1,    -1,    -1,   151,   152,   153,   154,   155,
+   156,   157,   158,   159,    -1,    -1,    -1,   163,    -1,    -1,
+    -1,   167,   141,   142,   143,   144,   145,    -1,    -1,    -1,
+    -1,    -1,   151,   152,   153,   154,   155,   156,   157,   158,
+   159,    -1,    -1,    -1,   163,    -1,    -1,    -1,   167,   141,
+   142,   143,   144,   145,    -1,    -1,    -1,    -1,    -1,   151,
+   152,   153,   154,   155,   156,   157,   158,   159,    -1,    -1,
+    -1,   163,    -1,    -1,    -1,   167,   141,   142,   143,   144,
+   145,    -1,    -1,    -1,    -1,    -1,   151,   152,   153,   154,
+   155,   156,   157,   158,   159,    -1,    -1,    -1,   163,    -1,
+    -1,    -1,   167,   141,   142,   143,   144,   145,    -1,    -1,
+    -1,    -1,    -1,   151,   152,   153,   154,   155,   156,   157,
+   158,   159,    -1,    -1,    -1,   163,    -1,    -1,    -1,   167,
+   141,   142,   143,   144,   145,    -1,    -1,    -1,    -1,    -1,
+   151,   152,   153,   154,   155,   156,   157,   158,   159,    -1,
+    -1,    -1,   163,    -1,    -1,    -1,   167,   141,   142,   143,
+   144,   145,    -1,    -1,    -1,    -1,    -1,   151,   152,   153,
+   154,   155,   156,   157,   158,   159,    -1,    -1,    -1,   163,
+    -1,    -1,    -1,   167,   141,   142,   143,   144,   145,    -1,
+    -1,    -1,    -1,    -1,   151,   152,   153,   154,   155,   156,
+   157,   158,   159,    -1,    -1,    -1,   163,    -1,    -1,    -1,
+   167,   141,   142,   143,   144,   145,    -1,    -1,    -1,    -1,
+    -1,   151,   152,   153,   154,   155,   156,   157,   158,   159,
+    -1,    -1,    -1,   163,    -1,    -1,    -1,   167,   141,   142,
+   143,   144,   145,    -1,    -1,    -1,    -1,    -1,   151,   152,
+   153,   154,   155,   156,   157,   158,   159,    -1,    -1,    -1,
+   163,    -1,    -1,    -1,   167,   141,   142,   143,   144,   145,
+    -1,    -1,    -1,    -1,    -1,   151,   152,   153,   154,   155,
+   156,   157,   158,   159,    -1,    -1,    -1,   163,    -1,    -1,
+    -1,   167,   141,   142,   143,   144,   145,    -1,    -1,    -1,
+    -1,    -1,   151,   152,   153,   154,   155,   156,   157,   158,
+   159,    -1,    -1,    -1,   163,    -1,    -1,    -1,   167,   141,
+   142,   143,   144,   145,    -1,    -1,    -1,    -1,    -1,   151,
+   152,   153,   154,   155,   156,   157,   158,   159,    -1,    -1,
+    -1,   163,    -1,    -1,    -1,   167,   141,   142,   143,   144,
+   145,    -1,    -1,    -1,    -1,    -1,   151,   152,   153,   154,
+   155,   156,   157,   158,   159,    -1,    -1,    -1,   163,    -1,
+    -1,    -1,   167,   141,   142,   143,   144,   145,    -1,    -1,
+    -1,    -1,    -1,   151,   152,   153,   154,   155,   156,   157,
+   158,   159,    -1,    -1,    -1,   163,    -1,    -1,    -1,   167,
+   141,   142,   143,   144,   145,    -1,    -1,    -1,    -1,    -1,
+   151,   152,   153,   154,   155,   156,   157,   158,   159,    -1,
+    -1,    -1,   163,    -1,    -1,    -1,   167,   141,   142,   143,
+   144,   145,    -1,    -1,    -1,    -1,    -1,   151,   152,   153,
+   154,   155,   156,   157,   158,   159,    -1,    -1,    -1,   163,
+    -1,    -1,    -1,   167,   141,   142,   143,   144,   145,    -1,
+    -1,    -1,    -1,    -1,   151,   152,   153,   154,   155,   156,
+   157,   158,   159,    -1,    -1,    -1,   163,    -1,    -1,    -1,
+   167,   141,   142,   143,   144,   145,    -1,    -1,    -1,    -1,
+    -1,   151,   152,   153,   154,   155,   156,   157,   158,   159,
+    -1,    -1,    -1,   163,    -1,    -1,    -1,   167,   141,   142,
+   143,   144,   145,    -1,    -1,    -1,    -1,    -1,   151,   152,
+   153,   154,   155,   156,   157,   158,   159,    -1,    -1,    -1,
+   163,    -1,    -1,    -1,   167,   141,   142,   143,   144,   145,
+    -1,    -1,    -1,    -1,    -1,   151,   152,   153,   154,   155,
+   156,   157,   158,   159,    -1,    -1,    -1,   163,    -1,    -1,
+    -1,   167,   141,   142,   143,   144,   145,    -1,    -1,    -1,
+    -1,    -1,   151,   152,   153,   154,   155,   156,   157,   158,
+   159,    -1,    -1,    -1,   163,    -1,    -1,    -1,   167,   141,
+   142,   143,   144,   145,    -1,    -1,    -1,    -1,    -1,   151,
+   152,   153,   154,   155,   156,   157,   158,   159,    -1,    -1,
+    -1,   163,    -1,    -1,    -1,   167,   141,   142,   143,   144,
+   145,    -1,    -1,    -1,    -1,    -1,   151,   152,   153,   154,
+   155,   156,   157,   158,   159,    -1,    -1,    -1,   163,    -1,
+    -1,    -1,   167,   141,   142,   143,   144,   145,    -1,    -1,
+    -1,    -1,    -1,   151,   152,   153,   154,   155,   156,   157,
+   158,   159,    -1,    -1,    -1,   163,    -1,    -1,    -1,   167,
+   141,   142,   143,   144,   145,    -1,    -1,    -1,    -1,    -1,
+   151,   152,   153,   154,   155,   156,   157,   158,   159,    -1,
+    -1,    -1,   163,    -1,    -1,    -1,   167,   141,   142,   143,
+   144,   145,    -1,    -1,    -1,    -1,    -1,   151,   152,   153,
+   154,   155,   156,   157,   158,   159,    -1,    -1,    -1,   163,
+    -1,    -1,    -1,   167,   141,   142,   143,   144,   145,    -1,
+    -1,    -1,    -1,    -1,   151,   152,   153,   154,   155,   156,
+   157,   158,   159,    -1,    -1,    -1,   163,    -1,    -1,    -1,
+   167,   141,   142,   143,   144,   145,    -1,    -1,    -1,    -1,
+    -1,   151,   152,   153,   154,   155,   156,   157,   158,   159,
+    -1,    -1,    -1,   163,    -1,    -1,   139,   167,   141,   142,
+   143,   144,   145,    -1,    -1,    -1,    -1,    -1,   151,   152,
+   153,   154,   155,   156,   157,   158,   159,    -1,    -1,    -1,
+   163,   141,   142,   143,   144,   145,    -1,    -1,    -1,    -1,
+    -1,   151,   152,   153,   154,   155,   156,   157,   158,   159,
+    -1,    -1,    -1,   163
 };
 /* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
-#line 3 "/usr/lib/bison.simple"
-/* This file comes from bison-1.28.  */
+#line 3 "/usr/local/share/bison.simple"
 
 /* Skeleton output parser for bison,
    Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.
@@ -2592,66 +2570,46 @@ static const short yycheck[] = {     7,
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
-   Foundation, Inc., 59 Temple Place - Suite 330,
-   Boston, MA 02111-1307, USA.  */
+   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 
 /* As a special exception, when this file is copied by Bison into a
    Bison output file, you may use that output file without restriction.
    This special exception was added by the Free Software Foundation
    in version 1.24 of Bison.  */
 
-/* This is the parser code that is written into each bison parser
-  when the %semantic_parser declaration is not specified in the grammar.
-  It was written by Richard Stallman by simplifying the hairy parser
-  used when %semantic_parser is specified.  */
-
-#ifndef YYSTACK_USE_ALLOCA
-#ifdef alloca
-#define YYSTACK_USE_ALLOCA
-#else /* alloca not defined */
+#ifndef alloca
 #ifdef __GNUC__
-#define YYSTACK_USE_ALLOCA
 #define alloca __builtin_alloca
 #else /* not GNU C.  */
-#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386))
-#define YYSTACK_USE_ALLOCA
+#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi)
 #include <alloca.h>
 #else /* not sparc */
-/* We think this test detects Watcom and Microsoft C.  */
-/* This used to test MSDOS, but that is a bad idea
-   since that symbol is in the user namespace.  */
-#if (defined (_MSDOS) || defined (_MSDOS_)) && !defined (__TURBOC__)
-#if 0 /* No need for malloc.h, which pollutes the namespace;
-	 instead, just don't use alloca.  */
+#if defined (MSDOS) && !defined (__TURBOC__)
 #include <malloc.h>
-#endif
 #else /* not MSDOS, or __TURBOC__ */
 #if defined(_AIX)
-/* I don't know what this was needed for, but it pollutes the namespace.
-   So I turned it off.   rms, 2 May 1997.  */
-/* #include <malloc.h>  */
+#include <malloc.h>
  #pragma alloca
-#define YYSTACK_USE_ALLOCA
-#else /* not MSDOS, or __TURBOC__, or _AIX */
-#if 0
-#ifdef __hpux /* haible@ilog.fr says this works for HPUX 9.05 and up,
-		 and on HPUX 10.  Eventually we can turn this on.  */
-#define YYSTACK_USE_ALLOCA
-#define alloca __builtin_alloca
+#else /* not MSDOS, __TURBOC__, or _AIX */
+#ifdef __hpux
+#ifdef __cplusplus
+extern "C" {
+void *alloca (unsigned int);
+};
+#else /* not __cplusplus */
+void *alloca ();
+#endif /* not __cplusplus */
 #endif /* __hpux */
-#endif
 #endif /* not _AIX */
 #endif /* not MSDOS, or __TURBOC__ */
-#endif /* not sparc */
-#endif /* not GNU C */
-#endif /* alloca not defined */
-#endif /* YYSTACK_USE_ALLOCA not defined */
+#endif /* not sparc.  */
+#endif /* not GNU C.  */
+#endif /* alloca not defined.  */
 
-#ifdef YYSTACK_USE_ALLOCA
-#define YYSTACK_ALLOC alloca
-#else
-#define YYSTACK_ALLOC malloc
-#endif
+/* This is the parser code that is written into each bison parser
+  when the %semantic_parser declaration is not specified in the grammar.
+  It was written by Richard Stallman by simplifying the hairy parser
+  used when %semantic_parser is specified.  */
 
 /* Note: there must be only one dollar sign in this file.
    It is replaced by the list of actions, each action
@@ -2661,8 +2619,8 @@ static const short yycheck[] = {     7,
 #define yyclearin	(yychar = YYEMPTY)
 #define YYEMPTY		-2
 #define YYEOF		0
-#define YYACCEPT	goto yyacceptlab
-#define YYABORT 	goto yyabortlab
+#define YYACCEPT	return(0)
+#define YYABORT 	return(1)
 #define YYERROR		goto yyerrlab1
 /* Like YYERROR except do call yyerror.
    This remains here temporarily to ease the
@@ -2743,12 +2701,12 @@ int yydebug;			/*  nonzero means print parse trace	*/
 #ifndef YYMAXDEPTH
 #define YYMAXDEPTH 10000
 #endif
-
-/* Define __yy_memcpy.  Note that the size argument
-   should be passed with type unsigned int, because that is what the non-GCC
-   definitions require.  With GCC, __builtin_memcpy takes an arg
-   of type size_t, but it can handle unsigned int.  */
 
+/* Prevent warning if -Wstrict-prototypes.  */
+#ifdef __GNUC__
+int yyparse (void);
+#endif
+
 #if __GNUC__ > 1		/* GNU C and GNU C++ define this.  */
 #define __yy_memcpy(TO,FROM,COUNT)	__builtin_memcpy(TO,FROM,COUNT)
 #else				/* not GNU C or C++ */
@@ -2760,7 +2718,7 @@ static void
 __yy_memcpy (to, from, count)
      char *to;
      char *from;
-     unsigned int count;
+     int count;
 {
   register char *f = from;
   register char *t = to;
@@ -2775,10 +2733,10 @@ __yy_memcpy (to, from, count)
 /* This is the most reliable way to avoid incompatibilities
    in available built-in functions on various systems.  */
 static void
-__yy_memcpy (char *to, char *from, unsigned int count)
+__yy_memcpy (char *to, char *from, int count)
 {
-  register char *t = to;
   register char *f = from;
+  register char *t = to;
   register int i = count;
 
   while (i-- > 0)
@@ -2788,7 +2746,7 @@ __yy_memcpy (char *to, char *from, unsigned int count)
 #endif
 #endif
 
-#line 217 "/usr/lib/bison.simple"
+#line 196 "/usr/local/share/bison.simple"
 
 /* The user can define YYPARSE_PARAM as the name of an argument to be passed
    into yyparse.  The argument should have type void *.
@@ -2809,15 +2767,6 @@ __yy_memcpy (char *to, char *from, unsigned int count)
 #define YYPARSE_PARAM_DECL
 #endif /* not YYPARSE_PARAM */
 
-/* Prevent warning if -Wstrict-prototypes.  */
-#ifdef __GNUC__
-#ifdef YYPARSE_PARAM
-int yyparse (void *);
-#else
-int yyparse (void);
-#endif
-#endif
-
 int
 yyparse(YYPARSE_PARAM_ARG)
      YYPARSE_PARAM_DECL
@@ -2846,7 +2795,6 @@ yyparse(YYPARSE_PARAM_ARG)
 #endif
 
   int yystacksize = YYINITDEPTH;
-  int yyfree_stacks = 0;
 
 #ifdef YYPURE
   int yychar;
@@ -2931,32 +2879,18 @@ yynewstate:
       if (yystacksize >= YYMAXDEPTH)
 	{
 	  yyerror("parser stack overflow");
-	  if (yyfree_stacks)
-	    {
-	      free (yyss);
-	      free (yyvs);
-#ifdef YYLSP_NEEDED
-	      free (yyls);
-#endif
-	    }
 	  return 2;
 	}
       yystacksize *= 2;
       if (yystacksize > YYMAXDEPTH)
 	yystacksize = YYMAXDEPTH;
-#ifndef YYSTACK_USE_ALLOCA
-      yyfree_stacks = 1;
-#endif
-      yyss = (short *) YYSTACK_ALLOC (yystacksize * sizeof (*yyssp));
-      __yy_memcpy ((char *)yyss, (char *)yyss1,
-		   size * (unsigned int) sizeof (*yyssp));
-      yyvs = (YYSTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yyvsp));
-      __yy_memcpy ((char *)yyvs, (char *)yyvs1,
-		   size * (unsigned int) sizeof (*yyvsp));
+      yyss = (short *) alloca (yystacksize * sizeof (*yyssp));
+      __yy_memcpy ((char *)yyss, (char *)yyss1, size * sizeof (*yyssp));
+      yyvs = (YYSTYPE *) alloca (yystacksize * sizeof (*yyvsp));
+      __yy_memcpy ((char *)yyvs, (char *)yyvs1, size * sizeof (*yyvsp));
 #ifdef YYLSP_NEEDED
-      yyls = (YYLTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yylsp));
-      __yy_memcpy ((char *)yyls, (char *)yyls1,
-		   size * (unsigned int) sizeof (*yylsp));
+      yyls = (YYLTYPE *) alloca (yystacksize * sizeof (*yylsp));
+      __yy_memcpy ((char *)yyls, (char *)yyls1, size * sizeof (*yylsp));
 #endif
 #endif /* no yyoverflow */
 
@@ -3426,179 +3360,171 @@ case 65:
     break;}
 case 66:
 #line 382 "Gmsh.y"
-{ return 1; ;
-    break;}
-case 67:
-#line 383 "Gmsh.y"
-{ return 1; ;
-    break;}
-case 68:
-#line 384 "Gmsh.y"
 { yyerrok; return 1;;
     break;}
-case 69:
-#line 389 "Gmsh.y"
+case 67:
+#line 387 "Gmsh.y"
 {
       Msg(PARSER_INFO, yyvsp[-4].c, yyvsp[-2].d); 
     ;
     break;}
-case 70:
-#line 400 "Gmsh.y"
+case 68:
+#line 398 "Gmsh.y"
 { 
       EndView(1, Force_ViewNumber,yyname,yyvsp[-4].c,0.,0.,0.); 
     ;
     break;}
-case 71:
-#line 404 "Gmsh.y"
+case 69:
+#line 402 "Gmsh.y"
 {
       EndView(1, Force_ViewNumber,yyname,yyvsp[-6].c,yyvsp[-4].v[0],yyvsp[-4].v[1],yyvsp[-4].v[2]);
     ;
     break;}
-case 72:
-#line 411 "Gmsh.y"
+case 70:
+#line 409 "Gmsh.y"
 {
       BeginView(1); 
     ;
     break;}
-case 85:
-#line 430 "Gmsh.y"
+case 83:
+#line 428 "Gmsh.y"
 { List_Add(ActualView->SP, &yyvsp[0].d) ; ;
     break;}
-case 86:
-#line 432 "Gmsh.y"
+case 84:
+#line 430 "Gmsh.y"
 { List_Add(ActualView->SP, &yyvsp[0].d) ; ;
     break;}
-case 87:
-#line 437 "Gmsh.y"
+case 85:
+#line 435 "Gmsh.y"
 { 
       List_Add(ActualView->SP, &yyvsp[-5].d); List_Add(ActualView->SP, &yyvsp[-3].d);
       List_Add(ActualView->SP, &yyvsp[-1].d);
     ;
     break;}
-case 88:
-#line 442 "Gmsh.y"
+case 86:
+#line 440 "Gmsh.y"
 {
       ActualView->NbSP++ ;
     ;
     break;}
-case 89:
-#line 449 "Gmsh.y"
+case 87:
+#line 447 "Gmsh.y"
 { List_Add(ActualView->VP, &yyvsp[0].d) ; ;
     break;}
-case 90:
-#line 451 "Gmsh.y"
+case 88:
+#line 449 "Gmsh.y"
 { List_Add(ActualView->VP, &yyvsp[0].d) ; ;
     break;}
-case 91:
-#line 456 "Gmsh.y"
+case 89:
+#line 454 "Gmsh.y"
 { 
       List_Add(ActualView->VP, &yyvsp[-5].d); List_Add(ActualView->VP, &yyvsp[-3].d);
       List_Add(ActualView->VP, &yyvsp[-1].d); 
     ;
     break;}
-case 92:
-#line 461 "Gmsh.y"
+case 90:
+#line 459 "Gmsh.y"
 {
       ActualView->NbVP++ ;
     ;
     break;}
-case 93:
-#line 468 "Gmsh.y"
+case 91:
+#line 466 "Gmsh.y"
 { List_Add(ActualView->TP, &yyvsp[0].d) ; ;
     break;}
-case 94:
-#line 470 "Gmsh.y"
+case 92:
+#line 468 "Gmsh.y"
 { List_Add(ActualView->TP, &yyvsp[0].d) ; ;
     break;}
-case 95:
-#line 475 "Gmsh.y"
+case 93:
+#line 473 "Gmsh.y"
 { 
       List_Add(ActualView->TP, &yyvsp[-5].d); List_Add(ActualView->TP, &yyvsp[-3].d);
       List_Add(ActualView->TP, &yyvsp[-1].d);
     ;
     break;}
-case 96:
-#line 480 "Gmsh.y"
+case 94:
+#line 478 "Gmsh.y"
 {
       ActualView->NbTP++ ;
     ;
     break;}
-case 97:
-#line 487 "Gmsh.y"
+case 95:
+#line 485 "Gmsh.y"
 { List_Add(ActualView->SL, &yyvsp[0].d) ; ;
     break;}
-case 98:
-#line 489 "Gmsh.y"
+case 96:
+#line 487 "Gmsh.y"
 { List_Add(ActualView->SL, &yyvsp[0].d) ; ;
     break;}
-case 99:
-#line 495 "Gmsh.y"
+case 97:
+#line 493 "Gmsh.y"
 { 
       List_Add(ActualView->SL, &yyvsp[-11].d); List_Add(ActualView->SL, &yyvsp[-5].d);
       List_Add(ActualView->SL, &yyvsp[-9].d); List_Add(ActualView->SL, &yyvsp[-3].d);
       List_Add(ActualView->SL, &yyvsp[-7].d); List_Add(ActualView->SL, &yyvsp[-1].d);
     ;
     break;}
-case 100:
-#line 501 "Gmsh.y"
+case 98:
+#line 499 "Gmsh.y"
 {
       ActualView->NbSL++ ;
     ;
     break;}
-case 101:
-#line 508 "Gmsh.y"
+case 99:
+#line 506 "Gmsh.y"
 { List_Add(ActualView->VL, &yyvsp[0].d) ; ;
     break;}
-case 102:
-#line 510 "Gmsh.y"
+case 100:
+#line 508 "Gmsh.y"
 { List_Add(ActualView->VL, &yyvsp[0].d) ; ;
     break;}
-case 103:
-#line 516 "Gmsh.y"
+case 101:
+#line 514 "Gmsh.y"
 { 
       List_Add(ActualView->SL, &yyvsp[-11].d); List_Add(ActualView->SL, &yyvsp[-5].d);
       List_Add(ActualView->SL, &yyvsp[-9].d); List_Add(ActualView->SL, &yyvsp[-3].d);
       List_Add(ActualView->SL, &yyvsp[-7].d); List_Add(ActualView->SL, &yyvsp[-1].d);
     ;
     break;}
-case 104:
-#line 522 "Gmsh.y"
+case 102:
+#line 520 "Gmsh.y"
 {
       ActualView->NbVL++ ;
     ;
     break;}
-case 105:
-#line 529 "Gmsh.y"
+case 103:
+#line 527 "Gmsh.y"
 { List_Add(ActualView->TL, &yyvsp[0].d) ; ;
     break;}
-case 106:
-#line 531 "Gmsh.y"
+case 104:
+#line 529 "Gmsh.y"
 { List_Add(ActualView->TL, &yyvsp[0].d) ; ;
     break;}
-case 107:
-#line 537 "Gmsh.y"
+case 105:
+#line 535 "Gmsh.y"
 { 
       List_Add(ActualView->SL, &yyvsp[-11].d); List_Add(ActualView->SL, &yyvsp[-5].d);
       List_Add(ActualView->SL, &yyvsp[-9].d); List_Add(ActualView->SL, &yyvsp[-3].d);
       List_Add(ActualView->SL, &yyvsp[-7].d); List_Add(ActualView->SL, &yyvsp[-1].d);
     ;
     break;}
-case 108:
-#line 543 "Gmsh.y"
+case 106:
+#line 541 "Gmsh.y"
 {
       ActualView->NbTL++ ;
     ;
     break;}
-case 109:
-#line 550 "Gmsh.y"
+case 107:
+#line 548 "Gmsh.y"
 { List_Add(ActualView->ST, &yyvsp[0].d) ; ;
     break;}
-case 110:
-#line 552 "Gmsh.y"
+case 108:
+#line 550 "Gmsh.y"
 { List_Add(ActualView->ST, &yyvsp[0].d) ; ;
     break;}
-case 111:
-#line 559 "Gmsh.y"
+case 109:
+#line 557 "Gmsh.y"
 { 
       List_Add(ActualView->ST, &yyvsp[-17].d); List_Add(ActualView->ST, &yyvsp[-11].d);
       List_Add(ActualView->ST, &yyvsp[-5].d);
@@ -3608,22 +3534,22 @@ case 111:
       List_Add(ActualView->ST, &yyvsp[-1].d);
     ;
     break;}
-case 112:
-#line 568 "Gmsh.y"
+case 110:
+#line 566 "Gmsh.y"
 {
       ActualView->NbST++ ;
     ;
     break;}
-case 113:
-#line 575 "Gmsh.y"
+case 111:
+#line 573 "Gmsh.y"
 { List_Add(ActualView->VT, &yyvsp[0].d) ; ;
     break;}
-case 114:
-#line 577 "Gmsh.y"
+case 112:
+#line 575 "Gmsh.y"
 { List_Add(ActualView->VT, &yyvsp[0].d) ; ;
     break;}
-case 115:
-#line 584 "Gmsh.y"
+case 113:
+#line 582 "Gmsh.y"
 { 
       List_Add(ActualView->VT, &yyvsp[-17].d); List_Add(ActualView->VT, &yyvsp[-11].d);
       List_Add(ActualView->VT, &yyvsp[-5].d);
@@ -3633,22 +3559,22 @@ case 115:
       List_Add(ActualView->VT, &yyvsp[-1].d);
     ;
     break;}
-case 116:
-#line 593 "Gmsh.y"
+case 114:
+#line 591 "Gmsh.y"
 {
       ActualView->NbVT++ ;
     ;
     break;}
-case 117:
-#line 600 "Gmsh.y"
+case 115:
+#line 598 "Gmsh.y"
 { List_Add(ActualView->TT, &yyvsp[0].d) ; ;
     break;}
-case 118:
-#line 602 "Gmsh.y"
+case 116:
+#line 600 "Gmsh.y"
 { List_Add(ActualView->TT, &yyvsp[0].d) ; ;
     break;}
-case 119:
-#line 609 "Gmsh.y"
+case 117:
+#line 607 "Gmsh.y"
 { 
       List_Add(ActualView->TT, &yyvsp[-17].d); List_Add(ActualView->TT, &yyvsp[-11].d);
       List_Add(ActualView->TT, &yyvsp[-5].d);
@@ -3658,22 +3584,22 @@ case 119:
       List_Add(ActualView->TT, &yyvsp[-1].d);
     ;
     break;}
-case 120:
-#line 618 "Gmsh.y"
+case 118:
+#line 616 "Gmsh.y"
 {
       ActualView->NbTT++ ;
     ;
     break;}
-case 121:
-#line 625 "Gmsh.y"
+case 119:
+#line 623 "Gmsh.y"
 { List_Add(ActualView->SS, &yyvsp[0].d) ; ;
     break;}
-case 122:
-#line 627 "Gmsh.y"
+case 120:
+#line 625 "Gmsh.y"
 { List_Add(ActualView->SS, &yyvsp[0].d) ; ;
     break;}
-case 123:
-#line 635 "Gmsh.y"
+case 121:
+#line 633 "Gmsh.y"
 { 
       List_Add(ActualView->SS, &yyvsp[-23].d);  List_Add(ActualView->SS, &yyvsp[-17].d);
       List_Add(ActualView->SS, &yyvsp[-11].d); List_Add(ActualView->SS, &yyvsp[-5].d);
@@ -3683,22 +3609,22 @@ case 123:
       List_Add(ActualView->SS, &yyvsp[-7].d); List_Add(ActualView->SS, &yyvsp[-1].d);
     ;
     break;}
-case 124:
-#line 644 "Gmsh.y"
+case 122:
+#line 642 "Gmsh.y"
 {
       ActualView->NbSS++ ;
     ;
     break;}
-case 125:
-#line 651 "Gmsh.y"
+case 123:
+#line 649 "Gmsh.y"
 { List_Add(ActualView->VS, &yyvsp[0].d) ; ;
     break;}
-case 126:
-#line 653 "Gmsh.y"
+case 124:
+#line 651 "Gmsh.y"
 { List_Add(ActualView->VS, &yyvsp[0].d) ; ;
     break;}
-case 127:
-#line 661 "Gmsh.y"
+case 125:
+#line 659 "Gmsh.y"
 { 
       List_Add(ActualView->VS, &yyvsp[-23].d);  List_Add(ActualView->VS, &yyvsp[-17].d);
       List_Add(ActualView->VS, &yyvsp[-11].d); List_Add(ActualView->VS, &yyvsp[-5].d);
@@ -3708,22 +3634,22 @@ case 127:
       List_Add(ActualView->VS, &yyvsp[-7].d); List_Add(ActualView->VS, &yyvsp[-1].d);
     ;
     break;}
-case 128:
-#line 670 "Gmsh.y"
+case 126:
+#line 668 "Gmsh.y"
 {
       ActualView->NbVS++ ;
     ;
     break;}
-case 129:
-#line 677 "Gmsh.y"
+case 127:
+#line 675 "Gmsh.y"
 { List_Add(ActualView->TS, &yyvsp[0].d) ; ;
     break;}
-case 130:
-#line 679 "Gmsh.y"
+case 128:
+#line 677 "Gmsh.y"
 { List_Add(ActualView->TS, &yyvsp[0].d) ; ;
     break;}
-case 131:
-#line 687 "Gmsh.y"
+case 129:
+#line 685 "Gmsh.y"
 { 
       List_Add(ActualView->TS, &yyvsp[-23].d);  List_Add(ActualView->TS, &yyvsp[-17].d);
       List_Add(ActualView->TS, &yyvsp[-11].d); List_Add(ActualView->TS, &yyvsp[-5].d);
@@ -3733,22 +3659,22 @@ case 131:
       List_Add(ActualView->TS, &yyvsp[-7].d); List_Add(ActualView->TS, &yyvsp[-1].d);
     ;
     break;}
-case 132:
-#line 696 "Gmsh.y"
+case 130:
+#line 694 "Gmsh.y"
 {
       ActualView->NbTS++ ;
     ;
     break;}
-case 133:
-#line 709 "Gmsh.y"
+case 131:
+#line 710 "Gmsh.y"
 {
       TheSymbol.Name = yyvsp[-3].c;
       TheSymbol.val  = yyvsp[-1].d;
       List_Replace(Symbol_L,&TheSymbol,CompareSymbols);
     ;
     break;}
-case 134:
-#line 715 "Gmsh.y"
+case 132:
+#line 716 "Gmsh.y"
 {
       TheSymbol.Name = yyvsp[-2].c ;
       if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols)))
@@ -3757,8 +3683,8 @@ case 134:
 	pSymbol->val += 1. ;
     ;
     break;}
-case 135:
-#line 723 "Gmsh.y"
+case 133:
+#line 724 "Gmsh.y"
 {
       TheSymbol.Name = yyvsp[-2].c ;
       if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols)))
@@ -3767,8 +3693,8 @@ case 135:
 	pSymbol->val -= 1. ;
     ;
     break;}
-case 136:
-#line 731 "Gmsh.y"
+case 134:
+#line 732 "Gmsh.y"
 {
       TheSymbol.Name = yyvsp[-3].c ;
       if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols)))
@@ -3777,8 +3703,8 @@ case 136:
 	pSymbol->val += yyvsp[-1].d ;
     ;
     break;}
-case 137:
-#line 739 "Gmsh.y"
+case 135:
+#line 740 "Gmsh.y"
 {
       TheSymbol.Name = yyvsp[-3].c ;
       if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols)))
@@ -3787,8 +3713,8 @@ case 137:
 	pSymbol->val -= yyvsp[-1].d ;
     ;
     break;}
-case 138:
-#line 747 "Gmsh.y"
+case 136:
+#line 748 "Gmsh.y"
 {
       TheSymbol.Name = yyvsp[-3].c ;
       if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols)))
@@ -3797,8 +3723,8 @@ case 138:
 	pSymbol->val *= yyvsp[-1].d ;
     ;
     break;}
-case 139:
-#line 755 "Gmsh.y"
+case 137:
+#line 756 "Gmsh.y"
 {
       TheSymbol.Name = yyvsp[-3].c ;
       if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols)))
@@ -3807,478 +3733,981 @@ case 139:
 	pSymbol->val /= yyvsp[-1].d ;
     ;
     break;}
-case 140:
-#line 774 "Gmsh.y"
-{
-      Cdbpts101((int)yyvsp[-4].d,yyvsp[-1].v[0],yyvsp[-1].v[1],yyvsp[-1].v[2],yyvsp[-1].v[3],yyvsp[-1].v[4]);
-      yyval.s.Type = MSH_POINT;
-      yyval.s.Num  = (int)yyvsp[-4].d;
+case 138:
+#line 767 "Gmsh.y"
+{ 
+      if(!(pStrCat = Get_StringOptionCategory(yyvsp[-5].c)))
+	vyyerror("Unknown String Option Class '%s'", yyvsp[-5].c);
+      else{
+	if(!(pStrOpt = Get_StringOption(yyvsp[-3].c, pStrCat)))
+	  vyyerror("Unknown String Option '%s.%s'", yyvsp[-5].c, yyvsp[-3].c);
+	else{
+	  *pStrOpt = yyvsp[-1].c ;
+	}
+      }
     ;
     break;}
-case 141:
-#line 781 "Gmsh.y"
+case 139:
+#line 780 "Gmsh.y"
 {
-      Cdbz101((int)yyvsp[-4].d,MSH_PHYSICAL_POINT,0,0,0,0,0,NULL,yyvsp[-1].l,NULL);
-      yyval.s.Type = MSH_PHYSICAL_POINT;
-      yyval.s.Num  = (int)yyvsp[-4].d;
+      if(strcmp(yyvsp[-10].c, "Post"))
+	vyyerror("Unknown View Option Class '%s'", yyvsp[-10].c);
+      else{
+	if(!(pStrOpt = Get_StringViewOption((int)yyvsp[-6].d, yyvsp[-3].c, &i))){
+	  if(i < 0) vyyerror("PostProcessing View %d does not Exist", (int)yyvsp[-6].d);
+	  else	    vyyerror("Unknown String Option '%s.View[%d].%s'", 
+			     yyvsp[-10].c, (int)yyvsp[-6].d, yyvsp[-3].c);
+	}
+	else{
+	  *pStrOpt = yyvsp[-1].c ;
+	}
+      }
     ;
     break;}
-case 142:
-#line 787 "Gmsh.y"
+case 140:
+#line 798 "Gmsh.y"
 {
-      Vertex *v;
-      Attractor *a;
-      double p;
-      int ip;
-      for(int i=0;i<List_Nbr(yyvsp[-9].l);i++){
-      	List_Read(yyvsp[-9].l,i,&p);
-        ip = (int)p;
-        v = FindVertex(ip,THEM);
-        if(!v)
-	  vyyerror("Unkown Point %d", ip);
+      if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-5].c)))
+	vyyerror("Unknown Numeric Option Class '%s'", yyvsp[-5].c);
+      else{
+	if(!(pNumOpt = Get_NumberOption(yyvsp[-3].c, pNumCat, &i)))
+	  vyyerror("Unknown Numeric Option '%s.%s'", yyvsp[-5].c, yyvsp[-3].c);
 	else{
-	  a = Create_Attractor(List_Nbr(THEM->Metric->Attractors)+1,
-			       yyvsp[-6].d,yyvsp[-4].d,yyvsp[-2].d,v,NULL,NULL);
-	  List_Add(THEM->Metric->Attractors,&a);
-        }
+	  switch(i){
+	  case GMSH_DOUBLE : *(double*)pNumOpt = yyvsp[-1].d ; break ;
+	  case GMSH_FLOAT : *(float*)pNumOpt = (float)yyvsp[-1].d ; break ;
+	  case GMSH_LONG : *(long*)pNumOpt = (long)yyvsp[-1].d ; break ;
+	  case GMSH_INT : *(int*)pNumOpt = (int)yyvsp[-1].d ; break ;
+	  }
+	}
+      }
+    ;
+    break;}
+case 141:
+#line 815 "Gmsh.y"
+{
+      if(strcmp(yyvsp[-10].c, "Post"))
+	vyyerror("Unknown View Option Class '%s'", yyvsp[-10].c);
+      else{
+	if(!(pNumOpt = Get_NumberViewOption((int)yyvsp[-6].d, yyvsp[-3].c, &i))){
+	  if(i < 0) vyyerror("PostProcessing View %d does not Exist", (int)yyvsp[-6].d);
+	  else	    vyyerror("Unknown Numeric Option '%s.View[%d].%s'", 
+			     yyvsp[-10].c, (int)yyvsp[-6].d, yyvsp[-3].c);
+	}
+	else{
+	  switch(i){
+	  case GMSH_DOUBLE : *(double*)pNumOpt = yyvsp[-1].d ; break ;
+	  case GMSH_FLOAT : *(float*)pNumOpt = (float)yyvsp[-1].d ; break ;
+	  case GMSH_LONG : *(long*)pNumOpt = (long)yyvsp[-1].d ; break ;
+	  case GMSH_INT : *(int*)pNumOpt = (int)yyvsp[-1].d ; break ;
+	  }
+	}
+      }
+    ;
+    break;}
+case 142:
+#line 836 "Gmsh.y"
+{
+      if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-5].c)))
+	vyyerror("Unknown Numeric Option Class '%s'", yyvsp[-5].c);
+      else{
+	if(!(pNumOpt = Get_NumberOption(yyvsp[-3].c, pNumCat, &i)))
+	  vyyerror("Unknown Numeric Option '%s.%s'", yyvsp[-5].c, yyvsp[-3].c);
+	else{
+	  switch(i){
+	  case GMSH_DOUBLE : *(double*)pNumOpt += yyvsp[-1].d ; break ;
+	  case GMSH_FLOAT : *(float*)pNumOpt += (float)yyvsp[-1].d ; break ;
+	  case GMSH_LONG : *(long*)pNumOpt += (long)yyvsp[-1].d ; break ;
+	  case GMSH_INT : *(int*)pNumOpt += (int)yyvsp[-1].d ; break ;
+	  }
+	}
       }
     ;
     break;}
 case 143:
-#line 806 "Gmsh.y"
+#line 853 "Gmsh.y"
 {
-      for(i=0;i<List_Nbr(yyvsp[-3].l);i++){
-	List_Read(yyvsp[-3].l,i,&d);
-	Vertex *v = FindVertex((int)d,THEM);
-	if(!v)
-	  vyyerror("Unkown Point %d", (int)d);
-	else
-	  v->lc = yyvsp[-1].d;
+      if(strcmp(yyvsp[-10].c, "Post"))
+	vyyerror("Unknown View Option Class '%s'", yyvsp[-10].c);
+      else{
+	if(!(pNumOpt = Get_NumberViewOption((int)yyvsp[-6].d, yyvsp[-3].c, &i))){
+	  if(i < 0) vyyerror("PostProcessing View %d does not Exist", (int)yyvsp[-6].d);
+	  else	    vyyerror("Unknown Numeric Option '%s.View[%d].%s'", 
+			     yyvsp[-10].c, (int)yyvsp[-6].d, yyvsp[-3].c);
+	}
+	else{
+	  switch(i){
+	  case GMSH_DOUBLE : *(double*)pNumOpt += yyvsp[-1].d ; break ;
+	  case GMSH_FLOAT : *(float*)pNumOpt += (float)yyvsp[-1].d ; break ;
+	  case GMSH_LONG : *(long*)pNumOpt += (long)yyvsp[-1].d ; break ;
+	  case GMSH_INT : *(int*)pNumOpt += (int)yyvsp[-1].d ; break ;
+	  }
+	}
       }
     ;
     break;}
 case 144:
-#line 817 "Gmsh.y"
+#line 874 "Gmsh.y"
 {
-      yyval.s.Type = MSH_POINT;
-      yyval.s.Num  = (int)yyvsp[-2].d;
+      if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-5].c)))
+	vyyerror("Unknown Numeric Option Class '%s'", yyvsp[-5].c);
+      else{
+	if(!(pNumOpt = Get_NumberOption(yyvsp[-3].c, pNumCat, &i)))
+	  vyyerror("Unknown Numeric Option '%s.%s'", yyvsp[-5].c, yyvsp[-3].c);
+	else{
+	  switch(i){
+	  case GMSH_DOUBLE : *(double*)pNumOpt -= yyvsp[-1].d ; break ;
+	  case GMSH_FLOAT : *(float*)pNumOpt -= (float)yyvsp[-1].d ; break ;
+	  case GMSH_LONG : *(long*)pNumOpt -= (long)yyvsp[-1].d ; break ;
+	  case GMSH_INT : *(int*)pNumOpt -= (int)yyvsp[-1].d ; break ;
+	  }
+	}
+      }
     ;
     break;}
 case 145:
-#line 825 "Gmsh.y"
+#line 891 "Gmsh.y"
 {
-      Cdbseg101((int)yyvsp[-4].d,MSH_SEGM_LINE,1,yyvsp[-1].l,NULL,-1,-1,0.,1.,NULL,NULL,NULL);
-      yyval.s.Type = MSH_SEGM_LINE;
-      yyval.s.Num  = (int)yyvsp[-4].d;
+      if(strcmp(yyvsp[-10].c, "Post"))
+	vyyerror("Unknown View Option Class '%s'", yyvsp[-10].c);
+      else{
+	if(!(pNumOpt = Get_NumberViewOption((int)yyvsp[-6].d, yyvsp[-3].c, &i))){
+	  if(i < 0) vyyerror("PostProcessing View %d does not Exist", (int)yyvsp[-6].d);
+	  else	    vyyerror("Unknown Numeric Option '%s.View[%d].%s'", 
+			     yyvsp[-10].c, (int)yyvsp[-6].d, yyvsp[-3].c);
+	}
+	else{
+	  switch(i){
+	  case GMSH_DOUBLE : *(double*)pNumOpt -= yyvsp[-1].d ; break ;
+	  case GMSH_FLOAT : *(float*)pNumOpt -= (float)yyvsp[-1].d ; break ;
+	  case GMSH_LONG : *(long*)pNumOpt -= (long)yyvsp[-1].d ; break ;
+	  case GMSH_INT : *(int*)pNumOpt -= (int)yyvsp[-1].d ; break ;
+	  }
+	}
+      }
     ;
     break;}
 case 146:
-#line 831 "Gmsh.y"
+#line 912 "Gmsh.y"
 {
-      Cdbseg101((int)yyvsp[-4].d,MSH_SEGM_SPLN,3,yyvsp[-1].l,NULL,-1,-1,0.,1.,NULL,NULL,NULL);
-      yyval.s.Type = MSH_SEGM_SPLN;
-      yyval.s.Num  = (int)yyvsp[-4].d;
+      if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-5].c)))
+	vyyerror("Unknown Numeric Option Class '%s'", yyvsp[-5].c);
+      else{
+	if(!(pNumOpt = Get_NumberOption(yyvsp[-3].c, pNumCat, &i)))
+	  vyyerror("Unknown Numeric Option '%s.%s'", yyvsp[-5].c, yyvsp[-3].c);
+	else{
+	  switch(i){
+	  case GMSH_DOUBLE : *(double*)pNumOpt *= yyvsp[-1].d ; break ;
+	  case GMSH_FLOAT : *(float*)pNumOpt *= (float)yyvsp[-1].d ; break ;
+	  case GMSH_LONG : *(long*)pNumOpt *= (long)yyvsp[-1].d ; break ;
+	  case GMSH_INT : *(int*)pNumOpt *= (int)yyvsp[-1].d ; break ;
+	  }
+	}
+      }
     ;
     break;}
 case 147:
-#line 837 "Gmsh.y"
+#line 929 "Gmsh.y"
 {
-      Curve *c;
-      Attractor *a;
-      double p;
-      int ip;
-      for(int i=0;i<List_Nbr(yyvsp[-9].l);i++){
-      	List_Read(yyvsp[-9].l,i,&p);
-        ip = (int)p;
-        c = FindCurve(ip,THEM);
-        if(!c)
-	  vyyerror("Unkown Curve %d", ip);
+      if(strcmp(yyvsp[-10].c, "Post"))
+	vyyerror("Unknown View Option Class '%s'", yyvsp[-10].c);
+      else{
+	if(!(pNumOpt = Get_NumberViewOption((int)yyvsp[-6].d, yyvsp[-3].c, &i))){
+	  if(i < 0) vyyerror("PostProcessing View %d does not Exist", (int)yyvsp[-6].d);
+	  else	    vyyerror("Unknown Numeric Option '%s.View[%d].%s'", 
+			     yyvsp[-10].c, (int)yyvsp[-6].d, yyvsp[-3].c);
+	}
 	else{
-	  a = Create_Attractor(List_Nbr(THEM->Metric->Attractors)+1,
-			       yyvsp[-6].d,yyvsp[-4].d,yyvsp[-2].d,NULL,c,NULL);
-	  List_Add(THEM->Metric->Attractors,&a);
-        }
+	  switch(i){
+	  case GMSH_DOUBLE : *(double*)pNumOpt *= yyvsp[-1].d ; break ;
+	  case GMSH_FLOAT : *(float*)pNumOpt *= (float)yyvsp[-1].d ; break ;
+	  case GMSH_LONG : *(long*)pNumOpt *= (long)yyvsp[-1].d ; break ;
+	  case GMSH_INT : *(int*)pNumOpt *= (int)yyvsp[-1].d ; break ;
+	  }
+	}
       }
     ;
     break;}
 case 148:
-#line 856 "Gmsh.y"
+#line 950 "Gmsh.y"
 {
-      Cdbseg101((int)yyvsp[-4].d,MSH_SEGM_CIRC,2,yyvsp[-1].l,NULL,-1,-1,0.,1.,NULL,NULL,NULL);
-      yyval.s.Type = MSH_SEGM_CIRC ;
-      yyval.s.Num  = (int)yyvsp[-4].d;
+      if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-5].c)))
+	vyyerror("Unknown Numeric Option Class '%s'", yyvsp[-5].c);
+      else{
+	if(!(pNumOpt = Get_NumberOption(yyvsp[-3].c, pNumCat, &i)))
+	  vyyerror("Unknown Numeric Option '%s.%s'", yyvsp[-5].c, yyvsp[-3].c);
+	else{
+	  switch(i){
+	  case GMSH_DOUBLE : *(double*)pNumOpt /= yyvsp[-1].d ; break ;
+	  case GMSH_FLOAT : *(float*)pNumOpt /= (float)yyvsp[-1].d ; break ;
+	  case GMSH_LONG : *(long*)pNumOpt /= (long)yyvsp[-1].d ; break ;
+	  case GMSH_INT : *(int*)pNumOpt /= (int)yyvsp[-1].d ; break ;
+	  }
+	}
+      }
     ;
     break;}
 case 149:
-#line 862 "Gmsh.y"
+#line 967 "Gmsh.y"
 {
-      List_T *temp;
-      int i,j;
-      double d;
-      temp = List_Create(List_Nbr(yyvsp[-3].l),1,sizeof(int));
-      for(i=0;i<List_Nbr(yyvsp[-3].l);i++){
-      	List_Read(yyvsp[-3].l,i,&d);
-        j = (int)d;
-        List_Add(temp,&j);
+      if(strcmp(yyvsp[-10].c, "Post"))
+	vyyerror("Unknown View Option Class '%s'", yyvsp[-10].c);
+      else{
+	if(!(pNumOpt = Get_NumberViewOption((int)yyvsp[-6].d, yyvsp[-3].c, &i))){
+	  if(i < 0) vyyerror("PostProcessing View %d does not Exist", (int)yyvsp[-6].d);
+	  else	    vyyerror("Unknown Numeric Option '%s.View[%d].%s'", 
+			     yyvsp[-10].c, (int)yyvsp[-6].d, yyvsp[-3].c);
+	}
+	else{
+	  switch(i){
+	  case GMSH_DOUBLE : *(double*)pNumOpt /= yyvsp[-1].d ; break ;
+	  case GMSH_FLOAT : *(float*)pNumOpt /= (float)yyvsp[-1].d ; break ;
+	  case GMSH_LONG : *(long*)pNumOpt /= (long)yyvsp[-1].d ; break ;
+	  case GMSH_INT : *(int*)pNumOpt /= (int)yyvsp[-1].d ; break ;
+	  }
+	}
       }
-      AddCircleInDataBase ((int) yyvsp[-6].d, MSH_SEGM_CIRC, temp, yyvsp[-1].v);
-      List_Delete(temp);
-      yyval.s.Type = MSH_SEGM_CIRC ;
-      yyval.s.Num  = (int)yyvsp[-6].d;
     ;
     break;}
 case 150:
-#line 879 "Gmsh.y"
+#line 988 "Gmsh.y"
 {
-      Cdbseg101((int)yyvsp[-14].d,MSH_SEGM_PARAMETRIC,2,NULL,NULL,-1,-1,yyvsp[-10].d,yyvsp[-8].d,yyvsp[-6].c,yyvsp[-4].c,yyvsp[-2].c);
-      yyval.s.Type = MSH_SEGM_PARAMETRIC ;
-      yyval.s.Num  = (int)yyvsp[-14].d;
+      if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-4].c)))
+	vyyerror("Unknown Numeric Option Class '%s'", yyvsp[-4].c);
+      else{
+	if(!(pNumOpt = Get_NumberOption(yyvsp[-2].c, pNumCat, &i)))
+	  vyyerror("Unknown Numeric Option '%s.%s'", yyvsp[-4].c, yyvsp[-2].c);
+	else{
+	  switch(i){
+	  case GMSH_DOUBLE : *(double*)pNumOpt += 1. ; break ;
+	  case GMSH_FLOAT : *(float*)pNumOpt += 1. ; break ;
+	  case GMSH_LONG : *(long*)pNumOpt += 1 ; break ;
+	  case GMSH_INT : *(int*)pNumOpt += 1 ; break ;
+	  }
+	}
+      }
     ;
     break;}
 case 151:
-#line 885 "Gmsh.y"
+#line 1005 "Gmsh.y"
 {
-      Cdbseg101((int)yyvsp[-4].d,MSH_SEGM_ELLI,2,yyvsp[-1].l,NULL,-1,-1,0.,1.,NULL,NULL,NULL);
-      yyval.s.Type = MSH_SEGM_ELLI ;
-      yyval.s.Num  = (int)yyvsp[-4].d;
+      if(strcmp(yyvsp[-10].c, "Post"))
+	vyyerror("Unknown View Option Class '%s'", yyvsp[-10].c);
+      else{
+	if(!(pNumOpt = Get_NumberViewOption((int)yyvsp[-6].d, yyvsp[-3].c, &i))){
+	  if(i < 0) vyyerror("PostProcessing View %d does not Exist", (int)yyvsp[-6].d);
+	  else	    vyyerror("Unknown Numeric Option '%s.View[%d].%s'", 
+			     yyvsp[-10].c, (int)yyvsp[-6].d, yyvsp[-3].c);
+	}
+	else{
+	  switch(i){
+	  case GMSH_DOUBLE : *(double*)pNumOpt += 1. ; break ;
+	  case GMSH_FLOAT : *(float*)pNumOpt += 1. ; break ;
+	  case GMSH_LONG : *(long*)pNumOpt += 1 ; break ;
+	  case GMSH_INT : *(int*)pNumOpt += 1 ; break ;
+	  }
+	}
+      }
     ;
     break;}
 case 152:
-#line 891 "Gmsh.y"
-{
-      Cdbz101((int)yyvsp[-4].d,MSH_PHYSICAL_LINE,0,0,0,0,0,NULL,yyvsp[-1].l,NULL);
-      yyval.s.Type = MSH_PHYSICAL_LINE;
-      yyval.s.Num  = (int)yyvsp[-4].d;
-    ;
-    break;}
-case 153:
-#line 897 "Gmsh.y"
+#line 1026 "Gmsh.y"
 {
-      yyval.s.Type = MSH_SEGM_LOOP;
-      Cdbz101((int)yyvsp[-4].d,yyval.s.Type,0,0,0,0,0,NULL,yyvsp[-1].l,NULL);
-      yyval.s.Num = (int)yyvsp[-4].d;
+      if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-4].c)))
+	vyyerror("Unknown Numeric Option Class '%s'", yyvsp[-4].c);
+      else{
+	if(!(pNumOpt = Get_NumberOption(yyvsp[-2].c, pNumCat, &i)))
+	  vyyerror("Unknown Numeric Option '%s.%s'", yyvsp[-4].c, yyvsp[-2].c);
+	else{
+	  switch(i){
+	  case GMSH_DOUBLE : *(double*)pNumOpt -= 1. ; break ;
+	  case GMSH_FLOAT : *(float*)pNumOpt -= 1. ; break ;
+	  case GMSH_LONG : *(long*)pNumOpt -= 1 ; break ;
+	  case GMSH_INT : *(int*)pNumOpt -= 1 ; break ;
+	  }
+	}
+      }
+    ;
+    break;}
+case 153:
+#line 1043 "Gmsh.y"
+{
+      if(strcmp(yyvsp[-10].c, "Post"))
+	vyyerror("Unknown View Option Class '%s'", yyvsp[-10].c);
+      else{
+	if(!(pNumOpt = Get_NumberViewOption((int)yyvsp[-6].d, yyvsp[-3].c, &i))){
+	  if(i < 0) vyyerror("PostProcessing View %d does not Exist", (int)yyvsp[-6].d);
+	  else	    vyyerror("Unknown Numeric Option '%s.View[%d].%s'", 
+			     yyvsp[-10].c, (int)yyvsp[-6].d, yyvsp[-3].c);
+	}
+	else{
+	  switch(i){
+	  case GMSH_DOUBLE : *(double*)pNumOpt -= 1. ; break ;
+	  case GMSH_FLOAT : *(float*)pNumOpt -= 1. ; break ;
+	  case GMSH_LONG : *(long*)pNumOpt -= 1 ; break ;
+	  case GMSH_INT : *(int*)pNumOpt -= 1 ; break ;
+	  }
+	}
+      }
     ;
     break;}
 case 154:
-#line 903 "Gmsh.y"
+#line 1066 "Gmsh.y"
 {
-      Cdbseg101((int)yyvsp[-4].d,MSH_SEGM_BSPLN,2,yyvsp[-1].l,NULL,-1,-1,0.,1.,NULL,NULL,NULL);
-      yyval.s.Type = MSH_SEGM_BSPLN;
-      yyval.s.Num  = (int)yyvsp[-4].d;
+      if(!(pArrCat = Get_ArrayOptionCategory(yyvsp[-5].c)))
+	vyyerror("Unknown Array Option Class '%s'", yyvsp[-5].c);
+      else{
+	if(!(pArrOpt = Get_ArrayOption(yyvsp[-3].c, pArrCat, &i)))
+	  vyyerror("Unknown Array Option '%s.%s'", yyvsp[-5].c, yyvsp[-3].c);
+	else{
+	  switch(i){
+	  case GMSH_DOUBLE :
+	    for(j=0 ; j<4; j++) ((double*)pArrOpt)[j] = yyvsp[-1].v[j] ;
+	    break ;
+	  case GMSH_FLOAT :
+	    for(j=0 ; j<4; j++) ((float*)pArrOpt)[j] = (float)yyvsp[-1].v[j] ;
+	    break ;
+	  case GMSH_LONG :
+	    for(j=0 ; j<4; j++) ((long*)pArrOpt)[j] = (long)yyvsp[-1].v[j] ;
+	    break ;
+	  case GMSH_INT :
+	    for(j=0 ; j<4; j++) ((int*)pArrOpt)[j] = (int)yyvsp[-1].v[j] ;
+	    break ;
+	  }
+	}
+      }
     ;
     break;}
 case 155:
-#line 909 "Gmsh.y"
+#line 1091 "Gmsh.y"
 {
-      List_T *Temp;
-      int i;
-      double d;
-      if((int)yyvsp[-1].d + 1 + List_Nbr(yyvsp[-5].l) != List_Nbr(yyvsp[-3].l)){
-	vyyerror("Wrong Definition of Nurbs Curve %d: "
-		"[Degree]%d + 1 + [NbPts]%d != [NbKnots]%d",
-		(int)yyvsp[-8].d, (int)yyvsp[-1].d, List_Nbr(yyvsp[-5].l), List_Nbr(yyvsp[-3].l));
-      }
-      Temp = List_Create(List_Nbr(yyvsp[-5].l),1,sizeof(int));
-      for(i=0;i<List_Nbr(yyvsp[-5].l);i++) {
-      	List_Read(yyvsp[-5].l,i,&d);
-        j = (int)d;
-        List_Add(Temp,&j);
+      if(strcmp(yyvsp[-10].c, "Post"))
+	vyyerror("Unknown View Option Class '%s'", yyvsp[-10].c);
+      else{
+	if(!(pArrOpt = Get_ArrayViewOption((int)yyvsp[-6].d, yyvsp[-3].c, &i))){
+	  if(i < 0) vyyerror("PostProcessing View %d does not Exist", (int)yyvsp[-6].d);
+	  else	    vyyerror("Unknown Array Option '%s.View[%d].%s'", 
+			     yyvsp[-10].c, (int)yyvsp[-6].d, yyvsp[-3].c);
+	}
+	else{
+	  switch(i){
+	  case GMSH_DOUBLE :
+	    for(j=0 ; j<3; j++) ((double*)pArrOpt)[j] = yyvsp[-1].v[j] ;
+	    break ;
+	  case GMSH_FLOAT :
+	    for(j=0 ; j<3; j++) ((float*)pArrOpt)[j] = (float)yyvsp[-1].v[j] ;
+	    break ;
+	  case GMSH_LONG :
+	    for(j=0 ; j<3; j++) ((long*)pArrOpt)[j] = (long)yyvsp[-1].v[j] ;
+	    break ;
+	  case GMSH_INT :
+	    for(j=0 ; j<3; j++) ((int*)pArrOpt)[j] = (int)yyvsp[-1].v[j] ;
+	    break ;
+	  }
+	}
       }
-      AddCurveInDataBase ((int)yyvsp[-8].d,MSH_SEGM_NURBS,(int)yyvsp[-1].d,Temp,yyvsp[-3].l,-1,-1,0.,1.);
-      List_Delete(Temp);
     ;
     break;}
 case 156:
-#line 928 "Gmsh.y"
+#line 1120 "Gmsh.y"
 {
-      yyval.s.Num = (int)yyvsp[-2].d;
-      Curve *c = FindCurve(yyval.s.Num,THEM);
-      if(!c)
-	vyyerror("Unkown Curve %d", yyval.s.Num);
-      else
-	yyval.s.Type = c->Typ;
+      if(!(pArrCat = Get_ArrayOptionCategory(yyvsp[-5].c)))
+	vyyerror("Unknown Array Option Class '%s'", yyvsp[-5].c);
+      else{
+	if(!(pArrOpt = Get_ArrayOption(yyvsp[-3].c, pArrCat, &i)))
+	  vyyerror("Unknown Array Option '%s.%s'", yyvsp[-5].c, yyvsp[-3].c);
+	else{
+	  switch(i){
+	  case GMSH_DOUBLE :
+	    for(j=0 ; j<4; j++) ((double*)pArrOpt)[j] += yyvsp[-1].v[j] ;
+	    break ;
+	  case GMSH_FLOAT :
+	    for(j=0 ; j<4; j++) ((float*)pArrOpt)[j] += (float)yyvsp[-1].v[j] ;
+	    break ;
+	  case GMSH_LONG :
+	    for(j=0 ; j<4; j++) ((long*)pArrOpt)[j] += (long)yyvsp[-1].v[j] ;
+	    break ;
+	  case GMSH_INT :
+	    for(j=0 ; j<4; j++) ((int*)pArrOpt)[j] += (int)yyvsp[-1].v[j] ;
+	    break ;
+	  }
+	}
+      }
     ;
     break;}
 case 157:
-#line 940 "Gmsh.y"
+#line 1145 "Gmsh.y"
 {
-      Cdbz101((int)yyvsp[-4].d,MSH_SURF_PLAN,0,0,0,0,0,NULL,yyvsp[-1].l,NULL);
-      yyval.s.Type = MSH_SURF_PLAN;
-      yyval.s.Num  = (int)yyvsp[-4].d;
+      if(strcmp(yyvsp[-10].c, "Post"))
+	vyyerror("Unknown View Option Class '%s'", yyvsp[-10].c);
+      else{
+	if(!(pArrOpt = Get_ArrayViewOption((int)yyvsp[-6].d, yyvsp[-3].c, &i))){
+	  if(i < 0) vyyerror("PostProcessing View %d does not Exist", (int)yyvsp[-6].d);
+	  else	    vyyerror("Unknown Array Option '%s.View[%d].%s'", 
+			     yyvsp[-10].c, (int)yyvsp[-6].d, yyvsp[-3].c);
+	}
+	else{
+	  switch(i){
+	  case GMSH_DOUBLE :
+	    for(j=0 ; j<3; j++) ((double*)pArrOpt)[j] += yyvsp[-1].v[j] ;
+	    break ;
+	  case GMSH_FLOAT :
+	    for(j=0 ; j<3; j++) ((float*)pArrOpt)[j] += (float)yyvsp[-1].v[j] ;
+	    break ;
+	  case GMSH_LONG :
+	    for(j=0 ; j<3; j++) ((long*)pArrOpt)[j] += (long)yyvsp[-1].v[j] ;
+	    break ;
+	  case GMSH_INT :
+	    for(j=0 ; j<3; j++) ((int*)pArrOpt)[j] += (int)yyvsp[-1].v[j] ;
+	    break ;
+	  }
+	}
+      }
     ;
     break;}
 case 158:
-#line 946 "Gmsh.y"
+#line 1174 "Gmsh.y"
 {
-      Surface *s,*support;
-      support = FindSurface((int)yyvsp[-2].d,THEM);
-      if(!support)
-	vyyerror("Unkown Surface %d", (int)yyvsp[-2].d);
+      if(!(pArrCat = Get_ArrayOptionCategory(yyvsp[-5].c)))
+	vyyerror("Unknown Array Option Class '%s'", yyvsp[-5].c);
       else{
-	Cdbz101((int)yyvsp[-5].d,MSH_SURF_PLAN,0,0,0,0,0,NULL,yyvsp[-1].l,NULL);
-	s = FindSurface((int)yyvsp[-5].d,THEM);
-	if(!s)
-	  vyyerror("Unkown Surface %d", (int)yyvsp[-5].d);
+	if(!(pArrOpt = Get_ArrayOption(yyvsp[-3].c, pArrCat, &i)))
+	  vyyerror("Unknown Array Option '%s.%s'", yyvsp[-5].c, yyvsp[-3].c);
 	else{
-	  s->Typ =  MSH_SURF_TRIMMED;
-	  s->Support = support;
-	  yyval.s.Type = MSH_SURF_TRIMMED;
-	  yyval.s.Num  = (int)yyvsp[-5].d;
+	  switch(i){
+	  case GMSH_DOUBLE :
+	    for(j=0 ; j<4; j++) ((double*)pArrOpt)[j] -= yyvsp[-1].v[j] ;
+	    break ;
+	  case GMSH_FLOAT :
+	    for(j=0 ; j<4; j++) ((float*)pArrOpt)[j] -= (float)yyvsp[-1].v[j] ;
+	    break ;
+	  case GMSH_LONG :
+	    for(j=0 ; j<4; j++) ((long*)pArrOpt)[j] -= (long)yyvsp[-1].v[j] ;
+	    break ;
+	  case GMSH_INT :
+	    for(j=0 ; j<4; j++) ((int*)pArrOpt)[j] -= (int)yyvsp[-1].v[j] ;
+	    break ;
+	  }
 	}
       }
     ;
     break;}
 case 159:
-#line 965 "Gmsh.y"
+#line 1199 "Gmsh.y"
 {
-      List_Read(yyvsp[-1].l,0,&d);
-      i = (int)d;
-      EdgeLoop *el = FindEdgeLoop(i,THEM);
-      if(!el)
-	vyyerror("Unkown Loop %d", i);
+      if(strcmp(yyvsp[-10].c, "Post"))
+	vyyerror("Unknown View Option Class '%s'", yyvsp[-10].c);
       else{
-	j = List_Nbr(el->Curves);
-	if(j==4)
-	  yyval.s.Type = MSH_SURF_REGL;
-	else if(j==3)
-	  yyval.s.Type  = MSH_SURF_TRIC;
-	else
-	  vyyerror("Wrong Definition of Ruled Surface %d: "
-		   "%d Borders Instead of 3 or 4", 
-		   (int)yyvsp[-4].d, j);
-	Cdbz101((int)yyvsp[-4].d,yyval.s.Type,0,0,0,0,0,NULL,yyvsp[-1].l,NULL);
-	yyval.s.Num = (int)yyvsp[-4].d;
+	if(!(pArrOpt = Get_ArrayViewOption((int)yyvsp[-6].d, yyvsp[-3].c, &i))){
+	  if(i < 0) vyyerror("PostProcessing View %d does not Exist", (int)yyvsp[-6].d);
+	  else	    vyyerror("Unknown Array Option '%s.View[%d].%s'", 
+			     yyvsp[-10].c, (int)yyvsp[-6].d, yyvsp[-3].c);
+	}
+	else{
+	  switch(i){
+	  case GMSH_DOUBLE :
+	    for(j=0 ; j<3; j++) ((double*)pArrOpt)[j] -= yyvsp[-1].v[j] ;
+	    break ;
+	  case GMSH_FLOAT :
+	    for(j=0 ; j<3; j++) ((float*)pArrOpt)[j] -= (float)yyvsp[-1].v[j] ;
+	    break ;
+	  case GMSH_LONG :
+	    for(j=0 ; j<3; j++) ((long*)pArrOpt)[j] -= (long)yyvsp[-1].v[j] ;
+	    break ;
+	  case GMSH_INT :
+	    for(j=0 ; j<3; j++) ((int*)pArrOpt)[j] -= (int)yyvsp[-1].v[j] ;
+	    break ;
+	  }
+	}
       }
     ;
     break;}
 case 160:
-#line 988 "Gmsh.y"
+#line 1230 "Gmsh.y"
 {
-      CreateNurbsSurface ( (int) yyvsp[-16].d , (int)yyvsp[-4].d , (int)yyvsp[-2].d  , yyvsp[-13].l, yyvsp[-10].l, yyvsp[-8].l);
-      yyval.s.Type  = MSH_SURF_NURBS;
-      yyval.s.Num = (int)yyvsp[-16].d;
+      if(!(pColCat = Get_ColorOptionCategory(yyvsp[-7].c)))
+	vyyerror("Unknown Color Option Class '%s'", yyvsp[-7].c);
+      else{
+	if(!(pColOpt = Get_ColorOption(yyvsp[-3].c, pColCat)))
+	  vyyerror("Unknown Color Option '%s.%s'", yyvsp[-7].c, yyvsp[-3].c);
+	else{
+	  *pColOpt = yyvsp[-1].u ;
+	}
+      }
     ;
     break;}
 case 161:
-#line 996 "Gmsh.y"
+#line 1254 "Gmsh.y"
 {
-      CreateNurbsSurfaceSupport ((int)yyvsp[-16].d, (int) yyvsp[-4].d , (int) yyvsp[-2].d , yyvsp[-13].l, yyvsp[-10].l, yyvsp[-8].l);
+      Cdbpts101((int)yyvsp[-4].d,yyvsp[-1].v[0],yyvsp[-1].v[1],yyvsp[-1].v[2],yyvsp[-1].v[3],yyvsp[-1].v[4]);
+      yyval.s.Type = MSH_POINT;
+      yyval.s.Num  = (int)yyvsp[-4].d;
     ;
     break;}
 case 162:
-#line 1000 "Gmsh.y"
+#line 1261 "Gmsh.y"
 {
-      Cdbz101((int)yyvsp[-4].d,MSH_PHYSICAL_SURFACE,0,0,0,0,0,NULL,yyvsp[-1].l,NULL);
-      yyval.s.Type = MSH_PHYSICAL_SURFACE;
+      Cdbz101((int)yyvsp[-4].d,MSH_PHYSICAL_POINT,0,0,0,0,0,NULL,yyvsp[-1].l,NULL);
+      yyval.s.Type = MSH_PHYSICAL_POINT;
       yyval.s.Num  = (int)yyvsp[-4].d;
     ;
     break;}
 case 163:
-#line 1006 "Gmsh.y"
-{
-      Cdbz101((int)yyvsp[-4].d,MSH_SURF_LOOP,0,0,0,0,0,NULL,yyvsp[-1].l,NULL);
-      yyval.s.Type = MSH_SURF_LOOP;
-      yyval.s.Num  = (int)yyvsp[-4].d;
-    ;
-    break;}
-case 164:
-#line 1012 "Gmsh.y"
+#line 1267 "Gmsh.y"
 {
-      yyval.s.Num = (int)yyvsp[-2].d;
-      Surface *s = FindSurface(yyval.s.Num,THEM);
-      if(!s)
-	vyyerror("Unknown Surface %d", yyval.s.Num);
-      else
-	yyval.s.Type = s->Typ;
-     ;
+      Vertex *v;
+      Attractor *a;
+      double p;
+      int ip;
+      for(int i=0;i<List_Nbr(yyvsp[-9].l);i++){
+      	List_Read(yyvsp[-9].l,i,&p);
+        ip = (int)p;
+        v = FindVertex(ip,THEM);
+        if(!v)
+	  vyyerror("Unkown Point %d", ip);
+	else{
+	  a = Create_Attractor(List_Nbr(THEM->Metric->Attractors)+1,
+			       yyvsp[-6].d,yyvsp[-4].d,yyvsp[-2].d,v,NULL,NULL);
+	  List_Add(THEM->Metric->Attractors,&a);
+        }
+      }
+    ;
+    break;}
+case 164:
+#line 1286 "Gmsh.y"
+{
+      for(i=0;i<List_Nbr(yyvsp[-3].l);i++){
+	List_Read(yyvsp[-3].l,i,&d);
+	Vertex *v = FindVertex((int)d,THEM);
+	if(!v)
+	  vyyerror("Unkown Point %d", (int)d);
+	else
+	  v->lc = yyvsp[-1].d;
+      }
+    ;
     break;}
 case 165:
-#line 1024 "Gmsh.y"
+#line 1297 "Gmsh.y"
 {
-      Cdbz101((int)yyvsp[-4].d,MSH_VOLUME,0,0,0,0,0,NULL,yyvsp[-1].l,NULL);
-      yyval.s.Type = MSH_VOLUME;
-      yyval.s.Num  = (int)yyvsp[-4].d;      
+      yyval.s.Type = MSH_POINT;
+      yyval.s.Num  = (int)yyvsp[-2].d;
     ;
     break;}
 case 166:
-#line 1030 "Gmsh.y"
+#line 1305 "Gmsh.y"
 {
-      Cdbz101((int)yyvsp[-4].d,MSH_VOLUME,0,0,0,0,0,NULL,yyvsp[-1].l,NULL);
-      yyval.s.Type = MSH_VOLUME;
+      Cdbseg101((int)yyvsp[-4].d,MSH_SEGM_LINE,1,yyvsp[-1].l,NULL,-1,-1,0.,1.,NULL,NULL,NULL);
+      yyval.s.Type = MSH_SEGM_LINE;
       yyval.s.Num  = (int)yyvsp[-4].d;
     ;
     break;}
 case 167:
-#line 1036 "Gmsh.y"
+#line 1311 "Gmsh.y"
 {
-      Cdbz101((int)yyvsp[-4].d,MSH_PHYSICAL_VOLUME,0,0,0,0,0,NULL,yyvsp[-1].l,NULL);
-      yyval.s.Type = MSH_PHYSICAL_VOLUME;
+      Cdbseg101((int)yyvsp[-4].d,MSH_SEGM_SPLN,3,yyvsp[-1].l,NULL,-1,-1,0.,1.,NULL,NULL,NULL);
+      yyval.s.Type = MSH_SEGM_SPLN;
       yyval.s.Num  = (int)yyvsp[-4].d;
     ;
     break;}
 case 168:
-#line 1049 "Gmsh.y"
+#line 1317 "Gmsh.y"
 {
-      TranslateShapes (yyvsp[-3].v[0],yyvsp[-3].v[1],yyvsp[-3].v[2],yyvsp[-1].l,1);
-      yyval.l = yyvsp[-1].l;
+      Curve *c;
+      Attractor *a;
+      double p;
+      int ip;
+      for(int i=0;i<List_Nbr(yyvsp[-9].l);i++){
+      	List_Read(yyvsp[-9].l,i,&p);
+        ip = (int)p;
+        c = FindCurve(ip,THEM);
+        if(!c)
+	  vyyerror("Unkown Curve %d", ip);
+	else{
+	  a = Create_Attractor(List_Nbr(THEM->Metric->Attractors)+1,
+			       yyvsp[-6].d,yyvsp[-4].d,yyvsp[-2].d,NULL,c,NULL);
+	  List_Add(THEM->Metric->Attractors,&a);
+        }
+      }
     ;
     break;}
 case 169:
-#line 1054 "Gmsh.y"
+#line 1336 "Gmsh.y"
 {
-      RotateShapes(yyvsp[-8].v[0],yyvsp[-8].v[1],yyvsp[-8].v[2],yyvsp[-6].v[0],yyvsp[-6].v[1],yyvsp[-6].v[2],yyvsp[-4].d,yyvsp[-1].l);
-      yyval.l = yyvsp[-1].l;
+      Cdbseg101((int)yyvsp[-4].d,MSH_SEGM_CIRC,2,yyvsp[-1].l,NULL,-1,-1,0.,1.,NULL,NULL,NULL);
+      yyval.s.Type = MSH_SEGM_CIRC ;
+      yyval.s.Num  = (int)yyvsp[-4].d;
     ;
     break;}
 case 170:
-#line 1059 "Gmsh.y"
+#line 1342 "Gmsh.y"
 {
-      SymmetryShapes(yyvsp[-3].v[0],yyvsp[-3].v[1],yyvsp[-3].v[2],yyvsp[-3].v[3],yyvsp[-1].l,1);
-      yyval.l = yyvsp[-1].l;
+      List_T *temp;
+      int i,j;
+      double d;
+      temp = List_Create(List_Nbr(yyvsp[-3].l),1,sizeof(int));
+      for(i=0;i<List_Nbr(yyvsp[-3].l);i++){
+      	List_Read(yyvsp[-3].l,i,&d);
+        j = (int)d;
+        List_Add(temp,&j);
+      }
+      AddCircleInDataBase ((int) yyvsp[-6].d, MSH_SEGM_CIRC, temp, yyvsp[-1].v);
+      List_Delete(temp);
+      yyval.s.Type = MSH_SEGM_CIRC ;
+      yyval.s.Num  = (int)yyvsp[-6].d;
     ;
     break;}
 case 171:
-#line 1064 "Gmsh.y"
+#line 1359 "Gmsh.y"
 {
-      DilatShapes(yyvsp[-6].v[0],yyvsp[-6].v[1],yyvsp[-6].v[2],yyvsp[-4].d,yyvsp[-1].l,1);
-      yyval.l = yyvsp[-1].l;
+      Cdbseg101((int)yyvsp[-14].d,MSH_SEGM_PARAMETRIC,2,NULL,NULL,-1,-1,yyvsp[-10].d,yyvsp[-8].d,yyvsp[-6].c,yyvsp[-4].c,yyvsp[-2].c);
+      yyval.s.Type = MSH_SEGM_PARAMETRIC ;
+      yyval.s.Num  = (int)yyvsp[-14].d;
     ;
     break;}
 case 172:
-#line 1071 "Gmsh.y"
-{ yyval.l = yyvsp[0].l; ;
+#line 1365 "Gmsh.y"
+{
+      Cdbseg101((int)yyvsp[-4].d,MSH_SEGM_ELLI,2,yyvsp[-1].l,NULL,-1,-1,0.,1.,NULL,NULL,NULL);
+      yyval.s.Type = MSH_SEGM_ELLI ;
+      yyval.s.Num  = (int)yyvsp[-4].d;
+    ;
     break;}
 case 173:
-#line 1072 "Gmsh.y"
-{ yyval.l = yyvsp[0].l; ;
+#line 1371 "Gmsh.y"
+{
+      Cdbz101((int)yyvsp[-4].d,MSH_PHYSICAL_LINE,0,0,0,0,0,NULL,yyvsp[-1].l,NULL);
+      yyval.s.Type = MSH_PHYSICAL_LINE;
+      yyval.s.Num  = (int)yyvsp[-4].d;
+    ;
     break;}
 case 174:
-#line 1073 "Gmsh.y"
-{ yyval.l = yyvsp[0].l; ;
+#line 1377 "Gmsh.y"
+{
+      yyval.s.Type = MSH_SEGM_LOOP;
+      Cdbz101((int)yyvsp[-4].d,yyval.s.Type,0,0,0,0,0,NULL,yyvsp[-1].l,NULL);
+      yyval.s.Num = (int)yyvsp[-4].d;
+    ;
     break;}
 case 175:
-#line 1078 "Gmsh.y"
+#line 1383 "Gmsh.y"
 {
-      yyval.l = List_Create(3,3,sizeof(Shape));
+      Cdbseg101((int)yyvsp[-4].d,MSH_SEGM_BSPLN,2,yyvsp[-1].l,NULL,-1,-1,0.,1.,NULL,NULL,NULL);
+      yyval.s.Type = MSH_SEGM_BSPLN;
+      yyval.s.Num  = (int)yyvsp[-4].d;
     ;
     break;}
 case 176:
-#line 1082 "Gmsh.y"
+#line 1389 "Gmsh.y"
 {
-      List_Add(yyval.l,&yyvsp[0].s);
-      yyval.l = yyvsp[-1].l;
+      List_T *Temp;
+      int i;
+      double d;
+      if((int)yyvsp[-1].d + 1 + List_Nbr(yyvsp[-5].l) != List_Nbr(yyvsp[-3].l)){
+	vyyerror("Wrong Definition of Nurbs Curve %d: "
+		"[Degree]%d + 1 + [NbPts]%d != [NbKnots]%d",
+		(int)yyvsp[-8].d, (int)yyvsp[-1].d, List_Nbr(yyvsp[-5].l), List_Nbr(yyvsp[-3].l));
+      }
+      Temp = List_Create(List_Nbr(yyvsp[-5].l),1,sizeof(int));
+      for(i=0;i<List_Nbr(yyvsp[-5].l);i++) {
+      	List_Read(yyvsp[-5].l,i,&d);
+        j = (int)d;
+        List_Add(Temp,&j);
+      }
+      AddCurveInDataBase ((int)yyvsp[-8].d,MSH_SEGM_NURBS,(int)yyvsp[-1].d,Temp,yyvsp[-3].l,-1,-1,0.,1.);
+      List_Delete(Temp);
     ;
     break;}
 case 177:
-#line 1094 "Gmsh.y"
+#line 1408 "Gmsh.y"
 {
-      yyval.l = List_Create(3,3,sizeof(Shape));
-      for(i=0;i<List_Nbr(yyvsp[-1].l);i++){
-	List_Read (yyvsp[-1].l,i,&TheShape);
-	CopyShape(TheShape.Type,TheShape.Num,&j);
-	TheShape.Num = j;
-	List_Add(yyval.l,&TheShape);
-      }
+      yyval.s.Num = (int)yyvsp[-2].d;
+      Curve *c = FindCurve(yyval.s.Num,THEM);
+      if(!c)
+	vyyerror("Unkown Curve %d", yyval.s.Num);
+      else
+	yyval.s.Type = c->Typ;
     ;
     break;}
 case 178:
-#line 1112 "Gmsh.y"
+#line 1420 "Gmsh.y"
 {
-      for(i=0;i<List_Nbr(yyvsp[-1].l);i++){
-	List_Read (yyvsp[-1].l,i,&TheShape);
-	DeleteShape(TheShape.Type,TheShape.Num);
-      }
+      Cdbz101((int)yyvsp[-4].d,MSH_SURF_PLAN,0,0,0,0,0,NULL,yyvsp[-1].l,NULL);
+      yyval.s.Type = MSH_SURF_PLAN;
+      yyval.s.Num  = (int)yyvsp[-4].d;
     ;
     break;}
 case 179:
-#line 1127 "Gmsh.y"
+#line 1426 "Gmsh.y"
 {
-      yyinTab[RecursionLevel++] = yyin;
-      strcpy(tmpstring, ThePathForIncludes);
-      if((yyin = fopen(strcat(tmpstring,yyvsp[-1].c),"r"))){
-	strcpy(yynameTab[RecursionLevel-1],yyname);
-	yylinenoTab[RecursionLevel-1]=yylineno;
-	yylineno=1;
-	strcpy(yyname,yyvsp[-1].c);
-	while(!feof(yyin)){
-	  yyparse();
-	}
-	fclose(yyin);
-	yyin = yyinTab[--RecursionLevel];
-	strcpy(yyname,yynameTab[RecursionLevel]);
-	yylineno = yylinenoTab[RecursionLevel];
-      }
+      Surface *s,*support;
+      support = FindSurface((int)yyvsp[-2].d,THEM);
+      if(!support)
+	vyyerror("Unkown Surface %d", (int)yyvsp[-2].d);
       else{
-	vyyerror("Unknown File '%s'", yyvsp[-1].c) ;  
-	yyin = yyinTab[--RecursionLevel];
+	Cdbz101((int)yyvsp[-5].d,MSH_SURF_PLAN,0,0,0,0,0,NULL,yyvsp[-1].l,NULL);
+	s = FindSurface((int)yyvsp[-5].d,THEM);
+	if(!s)
+	  vyyerror("Unkown Surface %d", (int)yyvsp[-5].d);
+	else{
+	  s->Typ =  MSH_SURF_TRIMMED;
+	  s->Support = support;
+	  yyval.s.Type = MSH_SURF_TRIMMED;
+	  yyval.s.Num  = (int)yyvsp[-5].d;
+	}
       }
     ;
     break;}
 case 180:
-#line 1155 "Gmsh.y"
+#line 1445 "Gmsh.y"
 {
-     char ext[6];
-     strcpy(ext,yyvsp[-1].c+(strlen(yyvsp[-1].c)-4));
-     Replot();
-     extern void CreateImage (FILE *fp);
-     FILE *fp = 0;
-     if(!strcmp(ext,".gif"))
-       {
-	 fp = fopen(yyvsp[-1].c,"wb");
-	 CTX.print.type = PRINT_GL2GIF;
-       }
-     else if(!strcmp(ext,".eps"))
-       {
-	 fp = fopen(yyvsp[-1].c,"w");
-	 CTX.print.type =  PRINT_GL2PS_RECURSIVE;
-       } 
-     else if(!strcmp(ext,".xpm"))
-       {
-	 fp = fopen(yyvsp[-1].c,"wb");
-	 CTX.print.type =  PRINT_XDUMP;
-	 CTX.print.format = FORMAT_XPM;
-       } 
-
-     if(fp)
-       {
-	 CreateImage(fp);
-	 fclose(fp);
-       }
-   ;
+      List_Read(yyvsp[-1].l,0,&d);
+      i = (int)d;
+      EdgeLoop *el = FindEdgeLoop(i,THEM);
+      if(!el)
+	vyyerror("Unkown Loop %d", i);
+      else{
+	j = List_Nbr(el->Curves);
+	if(j==4)
+	  yyval.s.Type = MSH_SURF_REGL;
+	else if(j==3)
+	  yyval.s.Type  = MSH_SURF_TRIC;
+	else
+	  vyyerror("Wrong Definition of Ruled Surface %d: "
+		   "%d Borders Instead of 3 or 4", 
+		   (int)yyvsp[-4].d, j);
+	Cdbz101((int)yyvsp[-4].d,yyval.s.Type,0,0,0,0,0,NULL,yyvsp[-1].l,NULL);
+	yyval.s.Num = (int)yyvsp[-4].d;
+      }
+    ;
     break;}
 case 181:
-#line 1185 "Gmsh.y"
+#line 1468 "Gmsh.y"
 {
-     exit(0);
-   ;
+      CreateNurbsSurface ( (int) yyvsp[-16].d , (int)yyvsp[-4].d , (int)yyvsp[-2].d  , yyvsp[-13].l, yyvsp[-10].l, yyvsp[-8].l);
+      yyval.s.Type  = MSH_SURF_NURBS;
+      yyval.s.Num = (int)yyvsp[-16].d;
+    ;
     break;}
 case 182:
-#line 1189 "Gmsh.y"
+#line 1476 "Gmsh.y"
 {
-     FILE *ff = yyin;
-     MergeProblem(yyvsp[-1].c);
-     yyin = ff;
-   ;
+      CreateNurbsSurfaceSupport ((int)yyvsp[-16].d, (int) yyvsp[-4].d , (int) yyvsp[-2].d , yyvsp[-13].l, yyvsp[-10].l, yyvsp[-8].l);
+    ;
     break;}
 case 183:
-#line 1203 "Gmsh.y"
+#line 1480 "Gmsh.y"
 {
-    FILE* ff;
-    if(RecursionLevel)
-      ff = yyinTab[RecursionLevel-1];
-    else
-      ff = yyin;
-    // here, we seek remember the position in yyin
-    LoopControlVariablesTab[ImbricatedLoop][0] = (int)yyvsp[-3].d ;
-    LoopControlVariablesTab[ImbricatedLoop][1] = (int)yyvsp[-1].d ;
-    LoopControlVariablesTab[ImbricatedLoop][2] = 1 ;
-    fgetpos( ff, &yyposImbricatedLoopsTab[ImbricatedLoop++]);
-  ;
+      Cdbz101((int)yyvsp[-4].d,MSH_PHYSICAL_SURFACE,0,0,0,0,0,NULL,yyvsp[-1].l,NULL);
+      yyval.s.Type = MSH_PHYSICAL_SURFACE;
+      yyval.s.Num  = (int)yyvsp[-4].d;
+    ;
     break;}
 case 184:
-#line 1216 "Gmsh.y"
+#line 1486 "Gmsh.y"
 {
-    FILE* ff;
+      Cdbz101((int)yyvsp[-4].d,MSH_SURF_LOOP,0,0,0,0,0,NULL,yyvsp[-1].l,NULL);
+      yyval.s.Type = MSH_SURF_LOOP;
+      yyval.s.Num  = (int)yyvsp[-4].d;
+    ;
+    break;}
+case 185:
+#line 1492 "Gmsh.y"
+{
+      yyval.s.Num = (int)yyvsp[-2].d;
+      Surface *s = FindSurface(yyval.s.Num,THEM);
+      if(!s)
+	vyyerror("Unknown Surface %d", yyval.s.Num);
+      else
+	yyval.s.Type = s->Typ;
+     ;
+    break;}
+case 186:
+#line 1504 "Gmsh.y"
+{
+      Cdbz101((int)yyvsp[-4].d,MSH_VOLUME,0,0,0,0,0,NULL,yyvsp[-1].l,NULL);
+      yyval.s.Type = MSH_VOLUME;
+      yyval.s.Num  = (int)yyvsp[-4].d;      
+    ;
+    break;}
+case 187:
+#line 1510 "Gmsh.y"
+{
+      Cdbz101((int)yyvsp[-4].d,MSH_VOLUME,0,0,0,0,0,NULL,yyvsp[-1].l,NULL);
+      yyval.s.Type = MSH_VOLUME;
+      yyval.s.Num  = (int)yyvsp[-4].d;
+    ;
+    break;}
+case 188:
+#line 1516 "Gmsh.y"
+{
+      Cdbz101((int)yyvsp[-4].d,MSH_PHYSICAL_VOLUME,0,0,0,0,0,NULL,yyvsp[-1].l,NULL);
+      yyval.s.Type = MSH_PHYSICAL_VOLUME;
+      yyval.s.Num  = (int)yyvsp[-4].d;
+    ;
+    break;}
+case 189:
+#line 1529 "Gmsh.y"
+{
+      TranslateShapes (yyvsp[-3].v[0],yyvsp[-3].v[1],yyvsp[-3].v[2],yyvsp[-1].l,1);
+      yyval.l = yyvsp[-1].l;
+    ;
+    break;}
+case 190:
+#line 1534 "Gmsh.y"
+{
+      RotateShapes(yyvsp[-8].v[0],yyvsp[-8].v[1],yyvsp[-8].v[2],yyvsp[-6].v[0],yyvsp[-6].v[1],yyvsp[-6].v[2],yyvsp[-4].d,yyvsp[-1].l);
+      yyval.l = yyvsp[-1].l;
+    ;
+    break;}
+case 191:
+#line 1539 "Gmsh.y"
+{
+      SymmetryShapes(yyvsp[-3].v[0],yyvsp[-3].v[1],yyvsp[-3].v[2],yyvsp[-3].v[3],yyvsp[-1].l,1);
+      yyval.l = yyvsp[-1].l;
+    ;
+    break;}
+case 192:
+#line 1544 "Gmsh.y"
+{
+      DilatShapes(yyvsp[-6].v[0],yyvsp[-6].v[1],yyvsp[-6].v[2],yyvsp[-4].d,yyvsp[-1].l,1);
+      yyval.l = yyvsp[-1].l;
+    ;
+    break;}
+case 193:
+#line 1551 "Gmsh.y"
+{ yyval.l = yyvsp[0].l; ;
+    break;}
+case 194:
+#line 1552 "Gmsh.y"
+{ yyval.l = yyvsp[0].l; ;
+    break;}
+case 195:
+#line 1553 "Gmsh.y"
+{ yyval.l = yyvsp[0].l; ;
+    break;}
+case 196:
+#line 1558 "Gmsh.y"
+{
+      yyval.l = List_Create(3,3,sizeof(Shape));
+    ;
+    break;}
+case 197:
+#line 1562 "Gmsh.y"
+{
+      List_Add(yyval.l,&yyvsp[0].s);
+      yyval.l = yyvsp[-1].l;
+    ;
+    break;}
+case 198:
+#line 1574 "Gmsh.y"
+{
+      yyval.l = List_Create(3,3,sizeof(Shape));
+      for(i=0;i<List_Nbr(yyvsp[-1].l);i++){
+	List_Read (yyvsp[-1].l,i,&TheShape);
+	CopyShape(TheShape.Type,TheShape.Num,&j);
+	TheShape.Num = j;
+	List_Add(yyval.l,&TheShape);
+      }
+    ;
+    break;}
+case 199:
+#line 1592 "Gmsh.y"
+{
+      for(i=0;i<List_Nbr(yyvsp[-1].l);i++){
+	List_Read (yyvsp[-1].l,i,&TheShape);
+	DeleteShape(TheShape.Type,TheShape.Num);
+      }
+    ;
+    break;}
+case 200:
+#line 1607 "Gmsh.y"
+{
+      yyinTab[RecursionLevel++] = yyin;
+      strcpy(tmpstring, ThePathForIncludes);
+      if((yyin = fopen(strcat(tmpstring,yyvsp[-1].c),"r"))){
+	strcpy(yynameTab[RecursionLevel-1],yyname);
+	yylinenoTab[RecursionLevel-1]=yylineno;
+	yylineno=1;
+	strcpy(yyname,yyvsp[-1].c);
+	while(!feof(yyin)){
+	  yyparse();
+	}
+	fclose(yyin);
+	yyin = yyinTab[--RecursionLevel];
+	strcpy(yyname,yynameTab[RecursionLevel]);
+	yylineno = yylinenoTab[RecursionLevel];
+      }
+      else{
+	vyyerror("Unknown File '%s'", yyvsp[-1].c) ;  
+	yyin = yyinTab[--RecursionLevel];
+      }
+    ;
+    break;}
+case 201:
+#line 1635 "Gmsh.y"
+{
+     char ext[6];
+     strcpy(ext,yyvsp[-1].c+(strlen(yyvsp[-1].c)-4));
+     Replot();
+     extern void CreateImage (FILE *fp);
+     FILE *fp = 0;
+     if(!strcmp(ext,".gif"))
+       {
+	 fp = fopen(yyvsp[-1].c,"wb");
+	 CTX.print.type = PRINT_GL2GIF;
+       }
+     else if(!strcmp(ext,".eps"))
+       {
+	 fp = fopen(yyvsp[-1].c,"w");
+	 CTX.print.type =  PRINT_GL2PS_RECURSIVE;
+       } 
+     else if(!strcmp(ext,".xpm"))
+       {
+	 fp = fopen(yyvsp[-1].c,"wb");
+	 CTX.print.type =  PRINT_XDUMP;
+	 CTX.print.format = FORMAT_XPM;
+       } 
+
+     if(fp)
+       {
+	 CreateImage(fp);
+	 fclose(fp);
+       }
+   ;
+    break;}
+case 202:
+#line 1665 "Gmsh.y"
+{
+     exit(0);
+   ;
+    break;}
+case 203:
+#line 1669 "Gmsh.y"
+{
+     FILE *ff = yyin;
+     MergeProblem(yyvsp[-1].c);
+     yyin = ff;
+   ;
+    break;}
+case 204:
+#line 1683 "Gmsh.y"
+{
+    FILE* ff;
+    if(RecursionLevel)
+      ff = yyinTab[RecursionLevel-1];
+    else
+      ff = yyin;
+    // here, we seek remember the position in yyin
+    LoopControlVariablesTab[ImbricatedLoop][0] = (int)yyvsp[-3].d ;
+    LoopControlVariablesTab[ImbricatedLoop][1] = (int)yyvsp[-1].d ;
+    LoopControlVariablesTab[ImbricatedLoop][2] = 1 ;
+    fgetpos( ff, &yyposImbricatedLoopsTab[ImbricatedLoop++]);
+  ;
+    break;}
+case 205:
+#line 1696 "Gmsh.y"
+{
+    FILE* ff;
     if(RecursionLevel)
       ff = yyinTab[RecursionLevel-1];
     else
@@ -4290,8 +4719,8 @@ case 184:
     fgetpos( ff, &yyposImbricatedLoopsTab[ImbricatedLoop++]);
   ;
     break;}
-case 185:
-#line 1229 "Gmsh.y"
+case 206:
+#line 1709 "Gmsh.y"
 {
     if(LoopControlVariablesTab[ImbricatedLoop-1][1] >  
        LoopControlVariablesTab[ImbricatedLoop-1][0])
@@ -4311,960 +4740,452 @@ case 185:
       }
   ;
     break;}
-case 186:
-#line 1268 "Gmsh.y"
+case 207:
+#line 1748 "Gmsh.y"
 {
       Curve *pc, *prc;
       Extrude_ProtudePoint(1,(int)yyvsp[-4].d,yyvsp[-2].v[0],yyvsp[-2].v[1],yyvsp[-2].v[2],0.,0.,0.,0.,&pc,&prc,NULL);
     ;
     break;}
-case 187:
-#line 1273 "Gmsh.y"
+case 208:
+#line 1753 "Gmsh.y"
 {
       Curve *pc, *prc;
       Extrude_ProtudePoint(0,(int)yyvsp[-8].d,yyvsp[-6].v[0],yyvsp[-6].v[1],yyvsp[-6].v[2],yyvsp[-4].v[0],yyvsp[-4].v[1],yyvsp[-4].v[2],yyvsp[-2].d,
 			   &pc,&prc,NULL);
     ;
     break;}
-case 188:
-#line 1279 "Gmsh.y"
+case 209:
+#line 1759 "Gmsh.y"
 {
       Extrude_ProtudeCurve(1,(int)yyvsp[-4].d,yyvsp[-2].v[0],yyvsp[-2].v[1],yyvsp[-2].v[2],0.,0.,0.,0.,NULL);
     ;
     break;}
-case 189:
-#line 1283 "Gmsh.y"
+case 210:
+#line 1763 "Gmsh.y"
 {
       Extrude_ProtudeCurve(0,(int)yyvsp[-8].d,yyvsp[-6].v[0],yyvsp[-6].v[1],yyvsp[-6].v[2],yyvsp[-4].v[0],yyvsp[-4].v[1],yyvsp[-4].v[2],yyvsp[-2].d,NULL);
     ;
     break;}
-case 190:
-#line 1287 "Gmsh.y"
+case 211:
+#line 1767 "Gmsh.y"
 {
       Extrude_ProtudeSurface(1,(int)yyvsp[-4].d,yyvsp[-2].v[0],yyvsp[-2].v[1],yyvsp[-2].v[2],0.,0.,0.,0.,0,NULL);
     ;
     break;}
-case 191:
-#line 1291 "Gmsh.y"
+case 212:
+#line 1771 "Gmsh.y"
 {
       Extrude_ProtudeSurface(0,(int)yyvsp[-8].d,yyvsp[-6].v[0],yyvsp[-6].v[1],yyvsp[-6].v[2],yyvsp[-4].v[0],yyvsp[-4].v[1],yyvsp[-4].v[2],yyvsp[-2].d,0,NULL);
     ;
     break;}
-case 192:
-#line 1295 "Gmsh.y"
+case 213:
+#line 1775 "Gmsh.y"
 {
     int vol = NEWREG();
     Extrude_ProtudeSurface(1,(int)yyvsp[-7].d,yyvsp[-5].v[0],yyvsp[-5].v[1],yyvsp[-5].v[2],0.,0.,0.,0.,vol,&extr);
   ;
     break;}
-case 193:
-#line 1300 "Gmsh.y"
+case 214:
+#line 1780 "Gmsh.y"
 {
     int vol = NEWREG();
     Extrude_ProtudeSurface(0,(int)yyvsp[-11].d,yyvsp[-9].v[0],yyvsp[-9].v[1],yyvsp[-9].v[2],yyvsp[-7].v[0],yyvsp[-7].v[1],yyvsp[-7].v[2],yyvsp[-5].d,vol,&extr);
   ;
     break;}
-case 194:
-#line 1308 "Gmsh.y"
-{
-    ;
-    break;}
-case 195:
-#line 1311 "Gmsh.y"
-{
-    ;
-    break;}
-case 196:
-#line 1317 "Gmsh.y"
-{
-      double d;
-      int j;
-      extr.mesh.NbLayer = List_Nbr(yyvsp[-6].l);
-      extr.mesh.ExtrudeMesh = true;
-      for(int i=0;i<List_Nbr(yyvsp[-6].l);i++){
-	List_Read(yyvsp[-6].l,i,&d);
-	j = (int)d;
-	extr.mesh.NbElmLayer[i] = j;
-	List_Read(yyvsp[-4].l,i,&d);
-	j = (int)d;
-	extr.mesh.ZonLayer[i] = j;
-	List_Read(yyvsp[-2].l,i,&d);
-	extr.mesh.hLayer[i] = d;
-      }
-    ;
-    break;}
-case 197:
-#line 1334 "Gmsh.y"
+case 215:
+#line 1788 "Gmsh.y"
 {
-      extr.mesh.Recombine = true;
     ;
     break;}
-case 198:
-#line 1345 "Gmsh.y"
+case 216:
+#line 1791 "Gmsh.y"
 {
-      Curve *c;
-      for(i=0;i<List_Nbr(yyvsp[-3].l);i++){
-	List_Read(yyvsp[-3].l,i,&d);
-	j = (int)fabs(d);
-        c = FindCurve(j,THEM);
-	if(!c)
-	  vyyerror("Unkown Curve %d", j);
-	else{
-	  c->Method = TRANSFINI;
-	  c->ipar[0] = (int)yyvsp[-1].d;
-	  c->ipar[1] = sign(d);
-	  c->dpar[0] = 1.0;
-	}
-      }
     ;
     break;}
-case 199:
-#line 1362 "Gmsh.y"
-{
-      Curve *c;
-      for(i=0;i<List_Nbr(yyvsp[-6].l);i++){
-	List_Read(yyvsp[-6].l,i,&d);
-	j = (int)fabs(d);
-        c = FindCurve(j,THEM);
-	if(!c)
-	  vyyerror("Unkown Curve %d", j);
-	else{
-	  c->Method = TRANSFINI;
-	  c->ipar[0] = (int)yyvsp[-4].d;
-	  c->ipar[1] = sign(d); /* Progresion : code 1 ou -1 */
-	  c->dpar[0] = fabs(yyvsp[-1].d);
-	}
-      }
-    ;
-    break;}
-case 200:
-#line 1379 "Gmsh.y"
-{
-      Curve *c;
-      for(i=0;i<List_Nbr(yyvsp[-6].l);i++){
-	List_Read(yyvsp[-6].l,i,&d);
-	j = (int)fabs(d);
-        c = FindCurve(j,THEM);
-	if(!c)
-	  vyyerror("Unkown Curve %d", j);
-	else{
-	  c->Method = TRANSFINI;
-	  c->ipar[0] = (int)yyvsp[-4].d;
-	  c->ipar[1] = 2*sign(d); /* Bump : code 2 ou -2 */
-	  c->dpar[0] = fabs(yyvsp[-1].d);
-	}
-      }
-    ;
-    break;}
-case 201:
-#line 1396 "Gmsh.y"
-{
-      Surface *s = FindSurface((int)yyvsp[-4].d,THEM);
-      if(!s)
-	vyyerror("Unkown Surface %d", (int)yyvsp[-4].d);
-      else{
-	s->Method = TRANSFINI;
-	k = List_Nbr(yyvsp[-1].l);
-	if(k!=3 && k!=4){
-	  vyyerror("Wrong Definition of Transfinite Surface %d: "
-		   "%d Points Instead of 3 or 4" , yyvsp[-4].d, k) ;
-	}
-	else{
-	  for(i=0;i<k;i++){
-	    List_Read(yyvsp[-1].l,i,&d);
-	    j = (int)fabs(d);
-	    s->ipar[i] = j;
-	  }
-	}
-      }
-    ;
-    break;}
-case 202:
-#line 1417 "Gmsh.y"
-{
-      Surface *s = FindSurface((int)yyvsp[-4].d,THEM);
-      if(!s)
-	vyyerror("Unkown Surface %d", (int)yyvsp[-4].d);
-      else{
-        s->Method = ELLIPTIC;
-        k = List_Nbr(yyvsp[-1].l);
-        if(k != 4)
-	  vyyerror("Wrong Definition of Elliptic Surface %d: "
-		   "%d Points Instead of 4" , yyvsp[-4].d, k) ;
-        else{
-	  for(i=0;i<k;i++){
-	    List_Read(yyvsp[-1].l,i,&d);
-	    j = (int)fabs(d);
-	    s->ipar[i] = j;
-	  }
-	}
-      }
-    ;
-    break;}
-case 203:
-#line 1437 "Gmsh.y"
-{
-      Volume *v = FindVolume((int)yyvsp[-4].d,THEM);
-      if(!v)
-	vyyerror("Unkown Volume %d", (int)yyvsp[-4].d);
-      else{
-	v->Method = TRANSFINI;
-	k = List_Nbr(yyvsp[-1].l);
-	if(k!=6 && k!=8)
-	  vyyerror("Wrong Definition of Transfinite Volume %d: "
-		   "%d Points Instead of 6 or 8" , yyvsp[-4].d, k) ;
-	else{
-	  for(i=0;i<k;i++){
-	    List_Read(yyvsp[-1].l,i,&d);
-	    j = (int)fabs(d);
-	    v->ipar[i] = j;
-	  }
-	}
-      }
-    ;
-    break;}
-case 204:
-#line 1457 "Gmsh.y"
-{
-      Surface *s;
-      for(i=0;i<List_Nbr(yyvsp[-3].l);i++){
-	List_Read(yyvsp[-3].l,i,&d);
-	j = (int)d;
-	s = FindSurface(j,THEM);
-	if(!s){
-	  /* Allow generic lists, even if the surfaces don't exist
-	     vyyerror("Unkown Surface %d", j); */
-	}
-	else{
-	  s->Recombine = 1;
-	  s->RecombineAngle = yyvsp[-1].d;
-	}
-      }
-    ;
-    break;}
-case 205:
-#line 1474 "Gmsh.y"
-{
-      Surface *s;
-      for(i=0;i<List_Nbr(yyvsp[-1].l);i++){
-	List_Read(yyvsp[-1].l,i,&d);
-	j = (int)d;
-        s = FindSurface(j,THEM);
-	if(!s){
-	  /* Allow generic lists, even if the surfaces don't exist
-	     vyyerror("Unkown Surface %d", j); */
-	}
-	else{
-	  s->Recombine = 1;
-	  s->RecombineAngle = 30.;
-        }
-      }
-    ;
-    break;}
-case 206:
-#line 1499 "Gmsh.y"
-{ 
-      Coherence_PS();
-    ;
-    break;}
-case 209:
-#line 1515 "Gmsh.y"
-{
-    ;
-    break;}
-case 210:
-#line 1521 "Gmsh.y"
-{ 
-      if(!(pStrCat = Get_StringOptionCategory(yyvsp[-5].c)))
-	vyyerror("Unknown String Option Class '%s'", yyvsp[-5].c);
-      else{
-	if(!(pStrOpt = Get_StringOption(yyvsp[-3].c, pStrCat)))
-	  vyyerror("Unknown String Option '%s.%s'", yyvsp[-5].c, yyvsp[-3].c);
-	else{
-	  *pStrOpt = yyvsp[-1].c ;
-	}
-      }
-    ;
-    break;}
-case 211:
-#line 1534 "Gmsh.y"
-{
-      if(strcmp(yyvsp[-10].c, "Post"))
-	vyyerror("Unknown View Option Class '%s'", yyvsp[-10].c);
-      else{
-	if(!(pStrOpt = Get_StringViewOption((int)yyvsp[-6].d, yyvsp[-3].c, &i))){
-	  if(i < 0) vyyerror("PostProcessing View %d does not Exist", (int)yyvsp[-6].d);
-	  else	    vyyerror("Unknown String Option '%s.View[%d].%s'", 
-			     yyvsp[-10].c, (int)yyvsp[-6].d, yyvsp[-3].c);
-	}
-	else{
-	  *pStrOpt = yyvsp[-1].c ;
-	}
-      }
-    ;
-    break;}
-case 212:
-#line 1552 "Gmsh.y"
-{
-      if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-5].c)))
-	vyyerror("Unknown Numeric Option Class '%s'", yyvsp[-5].c);
-      else{
-	if(!(pNumOpt = Get_NumberOption(yyvsp[-3].c, pNumCat, &i)))
-	  vyyerror("Unknown Numeric Option '%s.%s'", yyvsp[-5].c, yyvsp[-3].c);
-	else{
-	  switch(i){
-	  case GMSH_DOUBLE : *(double*)pNumOpt = yyvsp[-1].d ; break ;
-	  case GMSH_FLOAT : *(float*)pNumOpt = (float)yyvsp[-1].d ; break ;
-	  case GMSH_LONG : *(long*)pNumOpt = (long)yyvsp[-1].d ; break ;
-	  case GMSH_INT : *(int*)pNumOpt = (int)yyvsp[-1].d ; break ;
-	  }
-	}
-      }
-    ;
-    break;}
-case 213:
-#line 1569 "Gmsh.y"
-{
-      if(strcmp(yyvsp[-10].c, "Post"))
-	vyyerror("Unknown View Option Class '%s'", yyvsp[-10].c);
-      else{
-	if(!(pNumOpt = Get_NumberViewOption((int)yyvsp[-6].d, yyvsp[-3].c, &i))){
-	  if(i < 0) vyyerror("PostProcessing View %d does not Exist", (int)yyvsp[-6].d);
-	  else	    vyyerror("Unknown Numeric Option '%s.View[%d].%s'", 
-			     yyvsp[-10].c, (int)yyvsp[-6].d, yyvsp[-3].c);
-	}
-	else{
-	  switch(i){
-	  case GMSH_DOUBLE : *(double*)pNumOpt = yyvsp[-1].d ; break ;
-	  case GMSH_FLOAT : *(float*)pNumOpt = (float)yyvsp[-1].d ; break ;
-	  case GMSH_LONG : *(long*)pNumOpt = (long)yyvsp[-1].d ; break ;
-	  case GMSH_INT : *(int*)pNumOpt = (int)yyvsp[-1].d ; break ;
-	  }
-	}
-      }
-    ;
-    break;}
-case 214:
-#line 1590 "Gmsh.y"
-{
-      if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-5].c)))
-	vyyerror("Unknown Numeric Option Class '%s'", yyvsp[-5].c);
-      else{
-	if(!(pNumOpt = Get_NumberOption(yyvsp[-3].c, pNumCat, &i)))
-	  vyyerror("Unknown Numeric Option '%s.%s'", yyvsp[-5].c, yyvsp[-3].c);
-	else{
-	  switch(i){
-	  case GMSH_DOUBLE : *(double*)pNumOpt += yyvsp[-1].d ; break ;
-	  case GMSH_FLOAT : *(float*)pNumOpt += (float)yyvsp[-1].d ; break ;
-	  case GMSH_LONG : *(long*)pNumOpt += (long)yyvsp[-1].d ; break ;
-	  case GMSH_INT : *(int*)pNumOpt += (int)yyvsp[-1].d ; break ;
-	  }
-	}
-      }
-    ;
-    break;}
-case 215:
-#line 1607 "Gmsh.y"
-{
-      if(strcmp(yyvsp[-10].c, "Post"))
-	vyyerror("Unknown View Option Class '%s'", yyvsp[-10].c);
-      else{
-	if(!(pNumOpt = Get_NumberViewOption((int)yyvsp[-6].d, yyvsp[-3].c, &i))){
-	  if(i < 0) vyyerror("PostProcessing View %d does not Exist", (int)yyvsp[-6].d);
-	  else	    vyyerror("Unknown Numeric Option '%s.View[%d].%s'", 
-			     yyvsp[-10].c, (int)yyvsp[-6].d, yyvsp[-3].c);
-	}
-	else{
-	  switch(i){
-	  case GMSH_DOUBLE : *(double*)pNumOpt += yyvsp[-1].d ; break ;
-	  case GMSH_FLOAT : *(float*)pNumOpt += (float)yyvsp[-1].d ; break ;
-	  case GMSH_LONG : *(long*)pNumOpt += (long)yyvsp[-1].d ; break ;
-	  case GMSH_INT : *(int*)pNumOpt += (int)yyvsp[-1].d ; break ;
-	  }
-	}
-      }
-    ;
-    break;}
-case 216:
-#line 1628 "Gmsh.y"
-{
-      if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-5].c)))
-	vyyerror("Unknown Numeric Option Class '%s'", yyvsp[-5].c);
-      else{
-	if(!(pNumOpt = Get_NumberOption(yyvsp[-3].c, pNumCat, &i)))
-	  vyyerror("Unknown Numeric Option '%s.%s'", yyvsp[-5].c, yyvsp[-3].c);
-	else{
-	  switch(i){
-	  case GMSH_DOUBLE : *(double*)pNumOpt -= yyvsp[-1].d ; break ;
-	  case GMSH_FLOAT : *(float*)pNumOpt -= (float)yyvsp[-1].d ; break ;
-	  case GMSH_LONG : *(long*)pNumOpt -= (long)yyvsp[-1].d ; break ;
-	  case GMSH_INT : *(int*)pNumOpt -= (int)yyvsp[-1].d ; break ;
-	  }
-	}
-      }
-    ;
-    break;}
-case 217:
-#line 1645 "Gmsh.y"
-{
-      if(strcmp(yyvsp[-10].c, "Post"))
-	vyyerror("Unknown View Option Class '%s'", yyvsp[-10].c);
-      else{
-	if(!(pNumOpt = Get_NumberViewOption((int)yyvsp[-6].d, yyvsp[-3].c, &i))){
-	  if(i < 0) vyyerror("PostProcessing View %d does not Exist", (int)yyvsp[-6].d);
-	  else	    vyyerror("Unknown Numeric Option '%s.View[%d].%s'", 
-			     yyvsp[-10].c, (int)yyvsp[-6].d, yyvsp[-3].c);
-	}
-	else{
-	  switch(i){
-	  case GMSH_DOUBLE : *(double*)pNumOpt -= yyvsp[-1].d ; break ;
-	  case GMSH_FLOAT : *(float*)pNumOpt -= (float)yyvsp[-1].d ; break ;
-	  case GMSH_LONG : *(long*)pNumOpt -= (long)yyvsp[-1].d ; break ;
-	  case GMSH_INT : *(int*)pNumOpt -= (int)yyvsp[-1].d ; break ;
-	  }
-	}
-      }
-    ;
-    break;}
-case 218:
-#line 1666 "Gmsh.y"
-{
-      if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-5].c)))
-	vyyerror("Unknown Numeric Option Class '%s'", yyvsp[-5].c);
-      else{
-	if(!(pNumOpt = Get_NumberOption(yyvsp[-3].c, pNumCat, &i)))
-	  vyyerror("Unknown Numeric Option '%s.%s'", yyvsp[-5].c, yyvsp[-3].c);
-	else{
-	  switch(i){
-	  case GMSH_DOUBLE : *(double*)pNumOpt *= yyvsp[-1].d ; break ;
-	  case GMSH_FLOAT : *(float*)pNumOpt *= (float)yyvsp[-1].d ; break ;
-	  case GMSH_LONG : *(long*)pNumOpt *= (long)yyvsp[-1].d ; break ;
-	  case GMSH_INT : *(int*)pNumOpt *= (int)yyvsp[-1].d ; break ;
-	  }
-	}
-      }
-    ;
-    break;}
-case 219:
-#line 1683 "Gmsh.y"
-{
-      if(strcmp(yyvsp[-10].c, "Post"))
-	vyyerror("Unknown View Option Class '%s'", yyvsp[-10].c);
-      else{
-	if(!(pNumOpt = Get_NumberViewOption((int)yyvsp[-6].d, yyvsp[-3].c, &i))){
-	  if(i < 0) vyyerror("PostProcessing View %d does not Exist", (int)yyvsp[-6].d);
-	  else	    vyyerror("Unknown Numeric Option '%s.View[%d].%s'", 
-			     yyvsp[-10].c, (int)yyvsp[-6].d, yyvsp[-3].c);
-	}
-	else{
-	  switch(i){
-	  case GMSH_DOUBLE : *(double*)pNumOpt *= yyvsp[-1].d ; break ;
-	  case GMSH_FLOAT : *(float*)pNumOpt *= (float)yyvsp[-1].d ; break ;
-	  case GMSH_LONG : *(long*)pNumOpt *= (long)yyvsp[-1].d ; break ;
-	  case GMSH_INT : *(int*)pNumOpt *= (int)yyvsp[-1].d ; break ;
-	  }
-	}
-      }
-    ;
-    break;}
-case 220:
-#line 1704 "Gmsh.y"
-{
-      if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-5].c)))
-	vyyerror("Unknown Numeric Option Class '%s'", yyvsp[-5].c);
-      else{
-	if(!(pNumOpt = Get_NumberOption(yyvsp[-3].c, pNumCat, &i)))
-	  vyyerror("Unknown Numeric Option '%s.%s'", yyvsp[-5].c, yyvsp[-3].c);
-	else{
-	  switch(i){
-	  case GMSH_DOUBLE : *(double*)pNumOpt /= yyvsp[-1].d ; break ;
-	  case GMSH_FLOAT : *(float*)pNumOpt /= (float)yyvsp[-1].d ; break ;
-	  case GMSH_LONG : *(long*)pNumOpt /= (long)yyvsp[-1].d ; break ;
-	  case GMSH_INT : *(int*)pNumOpt /= (int)yyvsp[-1].d ; break ;
-	  }
-	}
-      }
-    ;
-    break;}
-case 221:
-#line 1721 "Gmsh.y"
-{
-      if(strcmp(yyvsp[-10].c, "Post"))
-	vyyerror("Unknown View Option Class '%s'", yyvsp[-10].c);
-      else{
-	if(!(pNumOpt = Get_NumberViewOption((int)yyvsp[-6].d, yyvsp[-3].c, &i))){
-	  if(i < 0) vyyerror("PostProcessing View %d does not Exist", (int)yyvsp[-6].d);
-	  else	    vyyerror("Unknown Numeric Option '%s.View[%d].%s'", 
-			     yyvsp[-10].c, (int)yyvsp[-6].d, yyvsp[-3].c);
-	}
-	else{
-	  switch(i){
-	  case GMSH_DOUBLE : *(double*)pNumOpt /= yyvsp[-1].d ; break ;
-	  case GMSH_FLOAT : *(float*)pNumOpt /= (float)yyvsp[-1].d ; break ;
-	  case GMSH_LONG : *(long*)pNumOpt /= (long)yyvsp[-1].d ; break ;
-	  case GMSH_INT : *(int*)pNumOpt /= (int)yyvsp[-1].d ; break ;
-	  }
-	}
-      }
-    ;
-    break;}
-case 222:
-#line 1742 "Gmsh.y"
-{
-      if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-4].c)))
-	vyyerror("Unknown Numeric Option Class '%s'", yyvsp[-4].c);
-      else{
-	if(!(pNumOpt = Get_NumberOption(yyvsp[-2].c, pNumCat, &i)))
-	  vyyerror("Unknown Numeric Option '%s.%s'", yyvsp[-4].c, yyvsp[-2].c);
-	else{
-	  switch(i){
-	  case GMSH_DOUBLE : *(double*)pNumOpt += 1. ; break ;
-	  case GMSH_FLOAT : *(float*)pNumOpt += 1. ; break ;
-	  case GMSH_LONG : *(long*)pNumOpt += 1 ; break ;
-	  case GMSH_INT : *(int*)pNumOpt += 1 ; break ;
-	  }
-	}
-      }
-    ;
-    break;}
-case 223:
-#line 1759 "Gmsh.y"
-{
-      if(strcmp(yyvsp[-10].c, "Post"))
-	vyyerror("Unknown View Option Class '%s'", yyvsp[-10].c);
-      else{
-	if(!(pNumOpt = Get_NumberViewOption((int)yyvsp[-6].d, yyvsp[-3].c, &i))){
-	  if(i < 0) vyyerror("PostProcessing View %d does not Exist", (int)yyvsp[-6].d);
-	  else	    vyyerror("Unknown Numeric Option '%s.View[%d].%s'", 
-			     yyvsp[-10].c, (int)yyvsp[-6].d, yyvsp[-3].c);
-	}
-	else{
-	  switch(i){
-	  case GMSH_DOUBLE : *(double*)pNumOpt += 1. ; break ;
-	  case GMSH_FLOAT : *(float*)pNumOpt += 1. ; break ;
-	  case GMSH_LONG : *(long*)pNumOpt += 1 ; break ;
-	  case GMSH_INT : *(int*)pNumOpt += 1 ; break ;
-	  }
-	}
+case 217:
+#line 1797 "Gmsh.y"
+{
+      double d;
+      int j;
+      extr.mesh.NbLayer = List_Nbr(yyvsp[-6].l);
+      extr.mesh.ExtrudeMesh = true;
+      for(int i=0;i<List_Nbr(yyvsp[-6].l);i++){
+	List_Read(yyvsp[-6].l,i,&d);
+	j = (int)d;
+	extr.mesh.NbElmLayer[i] = j;
+	List_Read(yyvsp[-4].l,i,&d);
+	j = (int)d;
+	extr.mesh.ZonLayer[i] = j;
+	List_Read(yyvsp[-2].l,i,&d);
+	extr.mesh.hLayer[i] = d;
       }
     ;
     break;}
-case 224:
-#line 1780 "Gmsh.y"
+case 218:
+#line 1814 "Gmsh.y"
 {
-      if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-4].c)))
-	vyyerror("Unknown Numeric Option Class '%s'", yyvsp[-4].c);
-      else{
-	if(!(pNumOpt = Get_NumberOption(yyvsp[-2].c, pNumCat, &i)))
-	  vyyerror("Unknown Numeric Option '%s.%s'", yyvsp[-4].c, yyvsp[-2].c);
-	else{
-	  switch(i){
-	  case GMSH_DOUBLE : *(double*)pNumOpt -= 1. ; break ;
-	  case GMSH_FLOAT : *(float*)pNumOpt -= 1. ; break ;
-	  case GMSH_LONG : *(long*)pNumOpt -= 1 ; break ;
-	  case GMSH_INT : *(int*)pNumOpt -= 1 ; break ;
-	  }
-	}
-      }
+      extr.mesh.Recombine = true;
     ;
     break;}
-case 225:
-#line 1797 "Gmsh.y"
+case 219:
+#line 1825 "Gmsh.y"
 {
-      if(strcmp(yyvsp[-10].c, "Post"))
-	vyyerror("Unknown View Option Class '%s'", yyvsp[-10].c);
-      else{
-	if(!(pNumOpt = Get_NumberViewOption((int)yyvsp[-6].d, yyvsp[-3].c, &i))){
-	  if(i < 0) vyyerror("PostProcessing View %d does not Exist", (int)yyvsp[-6].d);
-	  else	    vyyerror("Unknown Numeric Option '%s.View[%d].%s'", 
-			     yyvsp[-10].c, (int)yyvsp[-6].d, yyvsp[-3].c);
-	}
+      Curve *c;
+      for(i=0;i<List_Nbr(yyvsp[-3].l);i++){
+	List_Read(yyvsp[-3].l,i,&d);
+	j = (int)fabs(d);
+        c = FindCurve(j,THEM);
+	if(!c)
+	  vyyerror("Unkown Curve %d", j);
 	else{
-	  switch(i){
-	  case GMSH_DOUBLE : *(double*)pNumOpt -= 1. ; break ;
-	  case GMSH_FLOAT : *(float*)pNumOpt -= 1. ; break ;
-	  case GMSH_LONG : *(long*)pNumOpt -= 1 ; break ;
-	  case GMSH_INT : *(int*)pNumOpt -= 1 ; break ;
-	  }
+	  c->Method = TRANSFINI;
+	  c->ipar[0] = (int)yyvsp[-1].d;
+	  c->ipar[1] = sign(d);
+	  c->dpar[0] = 1.0;
 	}
       }
     ;
     break;}
-case 226:
-#line 1820 "Gmsh.y"
+case 220:
+#line 1842 "Gmsh.y"
 {
-      if(!(pArrCat = Get_ArrayOptionCategory(yyvsp[-5].c)))
-	vyyerror("Unknown Array Option Class '%s'", yyvsp[-5].c);
-      else{
-	if(!(pArrOpt = Get_ArrayOption(yyvsp[-3].c, pArrCat, &i)))
-	  vyyerror("Unknown Array Option '%s.%s'", yyvsp[-5].c, yyvsp[-3].c);
+      Curve *c;
+      for(i=0;i<List_Nbr(yyvsp[-6].l);i++){
+	List_Read(yyvsp[-6].l,i,&d);
+	j = (int)fabs(d);
+        c = FindCurve(j,THEM);
+	if(!c)
+	  vyyerror("Unkown Curve %d", j);
 	else{
-	  switch(i){
-	  case GMSH_DOUBLE :
-	    for(j=0 ; j<4; j++) ((double*)pArrOpt)[j] = yyvsp[-1].v[j] ;
-	    break ;
-	  case GMSH_FLOAT :
-	    for(j=0 ; j<4; j++) ((float*)pArrOpt)[j] = (float)yyvsp[-1].v[j] ;
-	    break ;
-	  case GMSH_LONG :
-	    for(j=0 ; j<4; j++) ((long*)pArrOpt)[j] = (long)yyvsp[-1].v[j] ;
-	    break ;
-	  case GMSH_INT :
-	    for(j=0 ; j<4; j++) ((int*)pArrOpt)[j] = (int)yyvsp[-1].v[j] ;
-	    break ;
-	  }
+	  c->Method = TRANSFINI;
+	  c->ipar[0] = (int)yyvsp[-4].d;
+	  c->ipar[1] = sign(d); /* Progresion : code 1 ou -1 */
+	  c->dpar[0] = fabs(yyvsp[-1].d);
 	}
       }
     ;
     break;}
-case 227:
-#line 1845 "Gmsh.y"
+case 221:
+#line 1859 "Gmsh.y"
 {
-      if(strcmp(yyvsp[-10].c, "Post"))
-	vyyerror("Unknown View Option Class '%s'", yyvsp[-10].c);
-      else{
-	if(!(pArrOpt = Get_ArrayViewOption((int)yyvsp[-6].d, yyvsp[-3].c, &i))){
-	  if(i < 0) vyyerror("PostProcessing View %d does not Exist", (int)yyvsp[-6].d);
-	  else	    vyyerror("Unknown Array Option '%s.View[%d].%s'", 
-			     yyvsp[-10].c, (int)yyvsp[-6].d, yyvsp[-3].c);
-	}
+      Curve *c;
+      for(i=0;i<List_Nbr(yyvsp[-6].l);i++){
+	List_Read(yyvsp[-6].l,i,&d);
+	j = (int)fabs(d);
+        c = FindCurve(j,THEM);
+	if(!c)
+	  vyyerror("Unkown Curve %d", j);
 	else{
-	  switch(i){
-	  case GMSH_DOUBLE :
-	    for(j=0 ; j<3; j++) ((double*)pArrOpt)[j] = yyvsp[-1].v[j] ;
-	    break ;
-	  case GMSH_FLOAT :
-	    for(j=0 ; j<3; j++) ((float*)pArrOpt)[j] = (float)yyvsp[-1].v[j] ;
-	    break ;
-	  case GMSH_LONG :
-	    for(j=0 ; j<3; j++) ((long*)pArrOpt)[j] = (long)yyvsp[-1].v[j] ;
-	    break ;
-	  case GMSH_INT :
-	    for(j=0 ; j<3; j++) ((int*)pArrOpt)[j] = (int)yyvsp[-1].v[j] ;
-	    break ;
-	  }
+	  c->Method = TRANSFINI;
+	  c->ipar[0] = (int)yyvsp[-4].d;
+	  c->ipar[1] = 2*sign(d); /* Bump : code 2 ou -2 */
+	  c->dpar[0] = fabs(yyvsp[-1].d);
 	}
       }
     ;
     break;}
-case 228:
-#line 1874 "Gmsh.y"
+case 222:
+#line 1876 "Gmsh.y"
 {
-      if(!(pArrCat = Get_ArrayOptionCategory(yyvsp[-5].c)))
-	vyyerror("Unknown Array Option Class '%s'", yyvsp[-5].c);
+      Surface *s = FindSurface((int)yyvsp[-4].d,THEM);
+      if(!s)
+	vyyerror("Unkown Surface %d", (int)yyvsp[-4].d);
       else{
-	if(!(pArrOpt = Get_ArrayOption(yyvsp[-3].c, pArrCat, &i)))
-	  vyyerror("Unknown Array Option '%s.%s'", yyvsp[-5].c, yyvsp[-3].c);
+	s->Method = TRANSFINI;
+	k = List_Nbr(yyvsp[-1].l);
+	if(k!=3 && k!=4){
+	  vyyerror("Wrong Definition of Transfinite Surface %d: "
+		   "%d Points Instead of 3 or 4" , yyvsp[-4].d, k) ;
+	}
 	else{
-	  switch(i){
-	  case GMSH_DOUBLE :
-	    for(j=0 ; j<4; j++) ((double*)pArrOpt)[j] += yyvsp[-1].v[j] ;
-	    break ;
-	  case GMSH_FLOAT :
-	    for(j=0 ; j<4; j++) ((float*)pArrOpt)[j] += (float)yyvsp[-1].v[j] ;
-	    break ;
-	  case GMSH_LONG :
-	    for(j=0 ; j<4; j++) ((long*)pArrOpt)[j] += (long)yyvsp[-1].v[j] ;
-	    break ;
-	  case GMSH_INT :
-	    for(j=0 ; j<4; j++) ((int*)pArrOpt)[j] += (int)yyvsp[-1].v[j] ;
-	    break ;
+	  for(i=0;i<k;i++){
+	    List_Read(yyvsp[-1].l,i,&d);
+	    j = (int)fabs(d);
+	    s->ipar[i] = j;
 	  }
 	}
       }
     ;
     break;}
-case 229:
-#line 1899 "Gmsh.y"
+case 223:
+#line 1897 "Gmsh.y"
 {
-      if(strcmp(yyvsp[-10].c, "Post"))
-	vyyerror("Unknown View Option Class '%s'", yyvsp[-10].c);
+      Surface *s = FindSurface((int)yyvsp[-4].d,THEM);
+      if(!s)
+	vyyerror("Unkown Surface %d", (int)yyvsp[-4].d);
       else{
-	if(!(pArrOpt = Get_ArrayViewOption((int)yyvsp[-6].d, yyvsp[-3].c, &i))){
-	  if(i < 0) vyyerror("PostProcessing View %d does not Exist", (int)yyvsp[-6].d);
-	  else	    vyyerror("Unknown Array Option '%s.View[%d].%s'", 
-			     yyvsp[-10].c, (int)yyvsp[-6].d, yyvsp[-3].c);
-	}
-	else{
-	  switch(i){
-	  case GMSH_DOUBLE :
-	    for(j=0 ; j<3; j++) ((double*)pArrOpt)[j] += yyvsp[-1].v[j] ;
-	    break ;
-	  case GMSH_FLOAT :
-	    for(j=0 ; j<3; j++) ((float*)pArrOpt)[j] += (float)yyvsp[-1].v[j] ;
-	    break ;
-	  case GMSH_LONG :
-	    for(j=0 ; j<3; j++) ((long*)pArrOpt)[j] += (long)yyvsp[-1].v[j] ;
-	    break ;
-	  case GMSH_INT :
-	    for(j=0 ; j<3; j++) ((int*)pArrOpt)[j] += (int)yyvsp[-1].v[j] ;
-	    break ;
+        s->Method = ELLIPTIC;
+        k = List_Nbr(yyvsp[-1].l);
+        if(k != 4)
+	  vyyerror("Wrong Definition of Elliptic Surface %d: "
+		   "%d Points Instead of 4" , yyvsp[-4].d, k) ;
+        else{
+	  for(i=0;i<k;i++){
+	    List_Read(yyvsp[-1].l,i,&d);
+	    j = (int)fabs(d);
+	    s->ipar[i] = j;
 	  }
 	}
       }
     ;
     break;}
-case 230:
-#line 1928 "Gmsh.y"
+case 224:
+#line 1917 "Gmsh.y"
 {
-      if(!(pArrCat = Get_ArrayOptionCategory(yyvsp[-5].c)))
-	vyyerror("Unknown Array Option Class '%s'", yyvsp[-5].c);
+      Volume *v = FindVolume((int)yyvsp[-4].d,THEM);
+      if(!v)
+	vyyerror("Unkown Volume %d", (int)yyvsp[-4].d);
       else{
-	if(!(pArrOpt = Get_ArrayOption(yyvsp[-3].c, pArrCat, &i)))
-	  vyyerror("Unknown Array Option '%s.%s'", yyvsp[-5].c, yyvsp[-3].c);
+	v->Method = TRANSFINI;
+	k = List_Nbr(yyvsp[-1].l);
+	if(k!=6 && k!=8)
+	  vyyerror("Wrong Definition of Transfinite Volume %d: "
+		   "%d Points Instead of 6 or 8" , yyvsp[-4].d, k) ;
 	else{
-	  switch(i){
-	  case GMSH_DOUBLE :
-	    for(j=0 ; j<4; j++) ((double*)pArrOpt)[j] -= yyvsp[-1].v[j] ;
-	    break ;
-	  case GMSH_FLOAT :
-	    for(j=0 ; j<4; j++) ((float*)pArrOpt)[j] -= (float)yyvsp[-1].v[j] ;
-	    break ;
-	  case GMSH_LONG :
-	    for(j=0 ; j<4; j++) ((long*)pArrOpt)[j] -= (long)yyvsp[-1].v[j] ;
-	    break ;
-	  case GMSH_INT :
-	    for(j=0 ; j<4; j++) ((int*)pArrOpt)[j] -= (int)yyvsp[-1].v[j] ;
-	    break ;
+	  for(i=0;i<k;i++){
+	    List_Read(yyvsp[-1].l,i,&d);
+	    j = (int)fabs(d);
+	    v->ipar[i] = j;
 	  }
 	}
       }
     ;
     break;}
-case 231:
-#line 1953 "Gmsh.y"
+case 225:
+#line 1937 "Gmsh.y"
 {
-      if(strcmp(yyvsp[-10].c, "Post"))
-	vyyerror("Unknown View Option Class '%s'", yyvsp[-10].c);
-      else{
-	if(!(pArrOpt = Get_ArrayViewOption((int)yyvsp[-6].d, yyvsp[-3].c, &i))){
-	  if(i < 0) vyyerror("PostProcessing View %d does not Exist", (int)yyvsp[-6].d);
-	  else	    vyyerror("Unknown Array Option '%s.View[%d].%s'", 
-			     yyvsp[-10].c, (int)yyvsp[-6].d, yyvsp[-3].c);
-	}
-	else{
-	  switch(i){
-	  case GMSH_DOUBLE :
-	    for(j=0 ; j<3; j++) ((double*)pArrOpt)[j] -= yyvsp[-1].v[j] ;
-	    break ;
-	  case GMSH_FLOAT :
-	    for(j=0 ; j<3; j++) ((float*)pArrOpt)[j] -= (float)yyvsp[-1].v[j] ;
-	    break ;
-	  case GMSH_LONG :
-	    for(j=0 ; j<3; j++) ((long*)pArrOpt)[j] -= (long)yyvsp[-1].v[j] ;
-	    break ;
-	  case GMSH_INT :
-	    for(j=0 ; j<3; j++) ((int*)pArrOpt)[j] -= (int)yyvsp[-1].v[j] ;
-	    break ;
-	  }
+      Surface *s;
+      for(i=0;i<List_Nbr(yyvsp[-3].l);i++){
+	List_Read(yyvsp[-3].l,i,&d);
+	j = (int)d;
+	s = FindSurface(j,THEM);
+	if(!s){
+	  /* Allow generic lists, even if the surfaces don't exist
+	     vyyerror("Unkown Surface %d", j); */
+	}
+	else{
+	  s->Recombine = 1;
+	  s->RecombineAngle = yyvsp[-1].d;
 	}
       }
     ;
     break;}
-case 232:
-#line 1984 "Gmsh.y"
+case 226:
+#line 1954 "Gmsh.y"
 {
-      if(!(pColCat = Get_ColorOptionCategory(yyvsp[-7].c)))
-	vyyerror("Unknown Color Option Class '%s'", yyvsp[-7].c);
-      else{
-	if(!(pColOpt = Get_ColorOption(yyvsp[-3].c, pColCat)))
-	  vyyerror("Unknown Color Option '%s.%s'", yyvsp[-7].c, yyvsp[-3].c);
-	else{
-	  *pColOpt = yyvsp[-1].u ;
+      Surface *s;
+      for(i=0;i<List_Nbr(yyvsp[-1].l);i++){
+	List_Read(yyvsp[-1].l,i,&d);
+	j = (int)d;
+        s = FindSurface(j,THEM);
+	if(!s){
+	  /* Allow generic lists, even if the surfaces don't exist
+	     vyyerror("Unkown Surface %d", j); */
 	}
+	else{
+	  s->Recombine = 1;
+	  s->RecombineAngle = 30.;
+        }
       }
     ;
     break;}
-case 236:
-#line 2023 "Gmsh.y"
+case 227:
+#line 1979 "Gmsh.y"
+{ 
+      Coherence_PS();
+    ;
+    break;}
+case 228:
+#line 1991 "Gmsh.y"
 {yyval.i = 1;;
     break;}
-case 237:
-#line 2024 "Gmsh.y"
+case 229:
+#line 1992 "Gmsh.y"
 {yyval.i = 0;;
     break;}
-case 238:
-#line 2025 "Gmsh.y"
+case 230:
+#line 1993 "Gmsh.y"
 {yyval.i = -1;;
     break;}
-case 239:
-#line 2026 "Gmsh.y"
+case 231:
+#line 1994 "Gmsh.y"
 {yyval.i = -1;;
     break;}
-case 240:
-#line 2027 "Gmsh.y"
+case 232:
+#line 1995 "Gmsh.y"
 {yyval.i = -1;;
     break;}
-case 241:
-#line 2031 "Gmsh.y"
+case 233:
+#line 1999 "Gmsh.y"
 { yyval.d = yyvsp[0].d;           ;
     break;}
-case 242:
-#line 2032 "Gmsh.y"
+case 234:
+#line 2000 "Gmsh.y"
 { yyval.d = yyvsp[-1].d ;          ;
     break;}
-case 243:
-#line 2033 "Gmsh.y"
+case 235:
+#line 2001 "Gmsh.y"
 { yyval.d = -yyvsp[0].d ;         ;
     break;}
-case 244:
-#line 2034 "Gmsh.y"
+case 236:
+#line 2002 "Gmsh.y"
 { yyval.d = yyvsp[0].d;           ;
     break;}
-case 245:
-#line 2035 "Gmsh.y"
+case 237:
+#line 2003 "Gmsh.y"
 { yyval.d = !yyvsp[0].d ;         ;
     break;}
-case 246:
-#line 2036 "Gmsh.y"
+case 238:
+#line 2004 "Gmsh.y"
 { yyval.d = yyvsp[-2].d - yyvsp[0].d ;     ;
     break;}
-case 247:
-#line 2037 "Gmsh.y"
+case 239:
+#line 2005 "Gmsh.y"
 { yyval.d = yyvsp[-2].d + yyvsp[0].d ;     ;
     break;}
-case 248:
-#line 2038 "Gmsh.y"
+case 240:
+#line 2006 "Gmsh.y"
 { yyval.d = yyvsp[-2].d * yyvsp[0].d ;     ;
     break;}
-case 249:
-#line 2039 "Gmsh.y"
+case 241:
+#line 2007 "Gmsh.y"
 { yyval.d = yyvsp[-2].d / yyvsp[0].d ;     ;
     break;}
-case 250:
-#line 2040 "Gmsh.y"
+case 242:
+#line 2008 "Gmsh.y"
 { yyval.d = (int)yyvsp[-2].d % (int)yyvsp[0].d ;  ;
     break;}
-case 251:
-#line 2041 "Gmsh.y"
+case 243:
+#line 2009 "Gmsh.y"
 { yyval.d = pow(yyvsp[-2].d,yyvsp[0].d) ;  ;
     break;}
-case 252:
-#line 2042 "Gmsh.y"
+case 244:
+#line 2010 "Gmsh.y"
 { yyval.d = yyvsp[-2].d < yyvsp[0].d ;     ;
     break;}
-case 253:
-#line 2043 "Gmsh.y"
+case 245:
+#line 2011 "Gmsh.y"
 { yyval.d = yyvsp[-2].d > yyvsp[0].d ;     ;
     break;}
-case 254:
-#line 2044 "Gmsh.y"
+case 246:
+#line 2012 "Gmsh.y"
 { yyval.d = yyvsp[-2].d <= yyvsp[0].d ;    ;
     break;}
-case 255:
-#line 2045 "Gmsh.y"
+case 247:
+#line 2013 "Gmsh.y"
 { yyval.d = yyvsp[-2].d >= yyvsp[0].d ;    ;
     break;}
-case 256:
-#line 2046 "Gmsh.y"
+case 248:
+#line 2014 "Gmsh.y"
 { yyval.d = yyvsp[-2].d == yyvsp[0].d ;    ;
     break;}
-case 257:
-#line 2047 "Gmsh.y"
+case 249:
+#line 2015 "Gmsh.y"
 { yyval.d = yyvsp[-2].d != yyvsp[0].d ;    ;
     break;}
-case 258:
-#line 2048 "Gmsh.y"
+case 250:
+#line 2016 "Gmsh.y"
 { yyval.d = yyvsp[-2].d && yyvsp[0].d ;    ;
     break;}
-case 259:
-#line 2049 "Gmsh.y"
+case 251:
+#line 2017 "Gmsh.y"
 { yyval.d = yyvsp[-2].d || yyvsp[0].d ;    ;
     break;}
-case 260:
-#line 2050 "Gmsh.y"
+case 252:
+#line 2018 "Gmsh.y"
 { yyval.d = yyvsp[-4].d? yyvsp[-2].d : yyvsp[0].d ; ;
     break;}
-case 261:
-#line 2051 "Gmsh.y"
+case 253:
+#line 2019 "Gmsh.y"
 { yyval.d = exp(yyvsp[-1].d);      ;
     break;}
-case 262:
-#line 2052 "Gmsh.y"
+case 254:
+#line 2020 "Gmsh.y"
 { yyval.d = log(yyvsp[-1].d);      ;
     break;}
-case 263:
-#line 2053 "Gmsh.y"
+case 255:
+#line 2021 "Gmsh.y"
 { yyval.d = log10(yyvsp[-1].d);    ;
     break;}
-case 264:
-#line 2054 "Gmsh.y"
+case 256:
+#line 2022 "Gmsh.y"
 { yyval.d = sqrt(yyvsp[-1].d);     ;
     break;}
-case 265:
-#line 2055 "Gmsh.y"
+case 257:
+#line 2023 "Gmsh.y"
 { yyval.d = sin(yyvsp[-1].d);      ;
     break;}
-case 266:
-#line 2056 "Gmsh.y"
+case 258:
+#line 2024 "Gmsh.y"
 { yyval.d = asin(yyvsp[-1].d);     ;
     break;}
-case 267:
-#line 2057 "Gmsh.y"
+case 259:
+#line 2025 "Gmsh.y"
 { yyval.d = cos(yyvsp[-1].d);      ;
     break;}
-case 268:
-#line 2058 "Gmsh.y"
+case 260:
+#line 2026 "Gmsh.y"
 { yyval.d = acos(yyvsp[-1].d);     ;
     break;}
-case 269:
-#line 2059 "Gmsh.y"
+case 261:
+#line 2027 "Gmsh.y"
 { yyval.d = tan(yyvsp[-1].d);      ;
     break;}
-case 270:
-#line 2060 "Gmsh.y"
+case 262:
+#line 2028 "Gmsh.y"
 { yyval.d = atan(yyvsp[-1].d);     ;
     break;}
-case 271:
-#line 2061 "Gmsh.y"
+case 263:
+#line 2029 "Gmsh.y"
 { yyval.d = atan2(yyvsp[-3].d,yyvsp[-1].d); ;
     break;}
-case 272:
-#line 2062 "Gmsh.y"
+case 264:
+#line 2030 "Gmsh.y"
 { yyval.d = sinh(yyvsp[-1].d);     ;
     break;}
-case 273:
-#line 2063 "Gmsh.y"
+case 265:
+#line 2031 "Gmsh.y"
 { yyval.d = cosh(yyvsp[-1].d);     ;
     break;}
-case 274:
-#line 2064 "Gmsh.y"
+case 266:
+#line 2032 "Gmsh.y"
 { yyval.d = tanh(yyvsp[-1].d);     ;
     break;}
-case 275:
-#line 2065 "Gmsh.y"
+case 267:
+#line 2033 "Gmsh.y"
 { yyval.d = fabs(yyvsp[-1].d);     ;
     break;}
-case 276:
-#line 2066 "Gmsh.y"
+case 268:
+#line 2034 "Gmsh.y"
 { yyval.d = floor(yyvsp[-1].d);    ;
     break;}
-case 277:
-#line 2067 "Gmsh.y"
+case 269:
+#line 2035 "Gmsh.y"
 { yyval.d = ceil(yyvsp[-1].d);     ;
     break;}
-case 278:
-#line 2068 "Gmsh.y"
+case 270:
+#line 2036 "Gmsh.y"
 { yyval.d = fmod(yyvsp[-3].d,yyvsp[-1].d);  ;
     break;}
-case 279:
-#line 2069 "Gmsh.y"
+case 271:
+#line 2037 "Gmsh.y"
 { yyval.d = fmod(yyvsp[-3].d,yyvsp[-1].d);  ;
     break;}
-case 280:
-#line 2070 "Gmsh.y"
+case 272:
+#line 2038 "Gmsh.y"
 { yyval.d = sqrt(yyvsp[-3].d*yyvsp[-3].d+yyvsp[-1].d*yyvsp[-1].d);  ;
     break;}
-case 281:
-#line 2074 "Gmsh.y"
+case 273:
+#line 2042 "Gmsh.y"
 { yyval.d = yyvsp[0].d; ;
     break;}
-case 282:
-#line 2075 "Gmsh.y"
+case 274:
+#line 2043 "Gmsh.y"
 { yyval.d = 3.141592653589793; ;
     break;}
-case 283:
-#line 2077 "Gmsh.y"
+case 275:
+#line 2045 "Gmsh.y"
 {
       TheSymbol.Name = yyvsp[0].c ;
       if (!List_Query(Symbol_L, &TheSymbol, CompareSymbols)) {
@@ -5274,8 +5195,8 @@ case 283:
       Free(yyvsp[0].c);
     ;
     break;}
-case 284:
-#line 2086 "Gmsh.y"
+case 276:
+#line 2054 "Gmsh.y"
 {
       if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-2].c)))
 	vyyerror("Unknown Numeric Option Class '%s'", yyvsp[-2].c);
@@ -5293,8 +5214,8 @@ case 284:
       }
     ;
     break;}
-case 285:
-#line 2103 "Gmsh.y"
+case 277:
+#line 2071 "Gmsh.y"
 {
       if(strcmp(yyvsp[-7].c, "Post"))
 	vyyerror("Unknown View Option Class '%s'", yyvsp[-7].c);
@@ -5315,8 +5236,8 @@ case 285:
       }
     ;
     break;}
-case 286:
-#line 2124 "Gmsh.y"
+case 278:
+#line 2092 "Gmsh.y"
 {
       if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-3].c)))
 	vyyerror("Unknown Numeric Option Class '%s'", yyvsp[-3].c);
@@ -5334,8 +5255,8 @@ case 286:
       }
     ;
     break;}
-case 287:
-#line 2141 "Gmsh.y"
+case 279:
+#line 2109 "Gmsh.y"
 {
       if(strcmp(yyvsp[-8].c, "Post"))
 	vyyerror("Unknown View Option Class '%s'", yyvsp[-8].c);
@@ -5356,8 +5277,8 @@ case 287:
       }
     ;
     break;}
-case 288:
-#line 2162 "Gmsh.y"
+case 280:
+#line 2130 "Gmsh.y"
 {
       if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-3].c)))
 	vyyerror("Unknown Numeric Option Class '%s'", yyvsp[-3].c);
@@ -5375,8 +5296,8 @@ case 288:
       }
     ;
     break;}
-case 289:
-#line 2179 "Gmsh.y"
+case 281:
+#line 2147 "Gmsh.y"
 {
       if(strcmp(yyvsp[-8].c, "Post"))
 	vyyerror("Unknown View Option Class '%s'", yyvsp[-8].c);
@@ -5397,16 +5318,16 @@ case 289:
       }
     ;
     break;}
-case 290:
-#line 2202 "Gmsh.y"
+case 282:
+#line 2170 "Gmsh.y"
 { 
       ListOfDouble2_L = List_Create(2,1,sizeof(double)) ; 
       for(d=yyvsp[-2].d ; (yyvsp[-2].d<yyvsp[0].d)?(d<=yyvsp[0].d):(d>=yyvsp[0].d) ; (yyvsp[-2].d<yyvsp[0].d)?(d+=1.):(d-=1.)) 
 	List_Add(ListOfDouble2_L, &d) ;
     ;
     break;}
-case 291:
-#line 2208 "Gmsh.y"
+case 283:
+#line 2176 "Gmsh.y"
 {
       ListOfDouble2_L = List_Create(2,1,sizeof(double)) ; 
       if(!yyvsp[0].d || (yyvsp[-4].d<yyvsp[-2].d && yyvsp[0].d<0) || (yyvsp[-4].d>yyvsp[-2].d && yyvsp[0].d>0)){
@@ -5418,62 +5339,62 @@ case 291:
 	  List_Add(ListOfDouble2_L, &d) ;
    ;
     break;}
-case 292:
-#line 2222 "Gmsh.y"
+case 284:
+#line 2190 "Gmsh.y"
 {
       yyval.v = yyvsp[0].v;
     ;
     break;}
-case 293:
-#line 2226 "Gmsh.y"
+case 285:
+#line 2194 "Gmsh.y"
 {
       for(i=0 ; i<6 ; i++) yyval.v[i] = -yyvsp[0].v[i] ;
     ;
     break;}
-case 294:
-#line 2230 "Gmsh.y"
+case 286:
+#line 2198 "Gmsh.y"
 { 
       yyval.v = yyvsp[0].v;
     ;
     break;}
-case 295:
-#line 2234 "Gmsh.y"
+case 287:
+#line 2202 "Gmsh.y"
 { 
       for(i=0 ; i<6 ; i++) yyval.v[i] = yyvsp[-2].v[i] - yyvsp[0].v[i] ;
     ;
     break;}
-case 296:
-#line 2238 "Gmsh.y"
+case 288:
+#line 2206 "Gmsh.y"
 {
       for(i=0 ; i<6 ; i++) yyval.v[i] = yyvsp[-2].v[i] + yyvsp[0].v[i] ;
     ;
     break;}
-case 297:
-#line 2244 "Gmsh.y"
+case 289:
+#line 2212 "Gmsh.y"
 { 
       yyval.v[0]=yyvsp[-9].d;  yyval.v[1]=yyvsp[-7].d;  yyval.v[2]=yyvsp[-5].d;  yyval.v[3]=yyvsp[-3].d; yyval.v[4]=yyvsp[-1].d;
     ;
     break;}
-case 298:
-#line 2248 "Gmsh.y"
+case 290:
+#line 2216 "Gmsh.y"
 { 
       yyval.v[0]=yyvsp[-7].d;  yyval.v[1]=yyvsp[-5].d;  yyval.v[2]=yyvsp[-3].d;  yyval.v[3]=yyvsp[-1].d; yyval.v[4]=1.0;
     ;
     break;}
-case 299:
-#line 2252 "Gmsh.y"
+case 291:
+#line 2220 "Gmsh.y"
 {
       yyval.v[0]=yyvsp[-5].d;  yyval.v[1]=yyvsp[-3].d;  yyval.v[2]=yyvsp[-1].d;  yyval.v[3]=0.0; yyval.v[4]=1.0;
     ;
     break;}
-case 300:
-#line 2256 "Gmsh.y"
+case 292:
+#line 2224 "Gmsh.y"
 {
       yyval.v[0]=yyvsp[-5].d;  yyval.v[1]=yyvsp[-3].d;  yyval.v[2]=yyvsp[-1].d;  yyval.v[3]=0.0; yyval.v[4]=1.0;
     ;
     break;}
-case 301:
-#line 2260 "Gmsh.y"
+case 293:
+#line 2228 "Gmsh.y"
 {
       if(!(pArrCat = Get_ArrayOptionCategory(yyvsp[-2].c)))
 	vyyerror("Unknown Array Option Class '%s'", yyvsp[-2].c);
@@ -5500,8 +5421,8 @@ case 301:
       }
     ;
     break;}
-case 302:
-#line 2286 "Gmsh.y"
+case 294:
+#line 2254 "Gmsh.y"
 {
       if(strcmp(yyvsp[-7].c, "Post"))
 	vyyerror("Unknown View Option Class '%s'", yyvsp[-7].c);
@@ -5532,84 +5453,84 @@ case 302:
       }
     ;
     break;}
-case 303:
-#line 2319 "Gmsh.y"
+case 295:
+#line 2287 "Gmsh.y"
 {
     ;
     break;}
-case 304:
-#line 2322 "Gmsh.y"
+case 296:
+#line 2290 "Gmsh.y"
 {
     ;
     break;}
-case 305:
-#line 2328 "Gmsh.y"
+case 297:
+#line 2296 "Gmsh.y"
 {
     ;
     break;}
-case 306:
-#line 2331 "Gmsh.y"
+case 298:
+#line 2299 "Gmsh.y"
 {
     ;
     break;}
-case 307:
-#line 2337 "Gmsh.y"
+case 299:
+#line 2305 "Gmsh.y"
 {
     ;
     break;}
-case 308:
-#line 2340 "Gmsh.y"
+case 300:
+#line 2308 "Gmsh.y"
 {
        yyval.l=ListOfListOfDouble_L;
     ;
     break;}
-case 309:
-#line 2344 "Gmsh.y"
+case 301:
+#line 2312 "Gmsh.y"
 {
        yyval.l=ListOfListOfDouble_L;
     ;
     break;}
-case 310:
-#line 2351 "Gmsh.y"
+case 302:
+#line 2319 "Gmsh.y"
 {
       ListOfListOfDouble_L = List_Create(2,1,sizeof(List_T*)) ;
       List_Add(ListOfListOfDouble_L, &(yyvsp[0].l)) ;
     ;
     break;}
-case 311:
-#line 2356 "Gmsh.y"
+case 303:
+#line 2324 "Gmsh.y"
 {
       List_Add(ListOfListOfDouble_L, &(yyvsp[0].l)) ;
     ;
     break;}
-case 312:
-#line 2363 "Gmsh.y"
+case 304:
+#line 2331 "Gmsh.y"
 {
     ;
     break;}
-case 313:
-#line 2366 "Gmsh.y"
+case 305:
+#line 2334 "Gmsh.y"
 {
       ListOfDouble_L = List_Create(2,1,sizeof(double)) ;
       List_Add(ListOfDouble_L, &(yyvsp[0].d)) ;
       yyval.l=ListOfDouble_L;
     ;
     break;}
-case 314:
-#line 2372 "Gmsh.y"
+case 306:
+#line 2340 "Gmsh.y"
 {
       yyval.l=ListOfDouble_L;
     ;
     break;}
-case 315:
-#line 2380 "Gmsh.y"
+case 307:
+#line 2348 "Gmsh.y"
 {
       ListOfDouble_L = List_Create(2,1,sizeof(double)) ;
       List_Add(ListOfDouble_L, &(yyvsp[0].d)) ;
     ;
     break;}
-case 316:
-#line 2385 "Gmsh.y"
+case 308:
+#line 2353 "Gmsh.y"
 { 
       ListOfDouble_L = List_Create(2,1,sizeof(double)) ;
       for(i=0 ; i<List_Nbr(ListOfDouble2_L) ; i++){
@@ -5619,14 +5540,14 @@ case 316:
       List_Delete(ListOfDouble2_L);
     ;
     break;}
-case 317:
-#line 2394 "Gmsh.y"
+case 309:
+#line 2362 "Gmsh.y"
 {
       List_Add(ListOfDouble_L, &(yyvsp[0].d)) ;
     ;
     break;}
-case 318:
-#line 2398 "Gmsh.y"
+case 310:
+#line 2366 "Gmsh.y"
 {
       for(i=0 ; i<List_Nbr(ListOfDouble2_L) ; i++){
 	List_Read(ListOfDouble2_L, i, &d) ;
@@ -5635,34 +5556,34 @@ case 318:
       List_Delete(ListOfDouble2_L);
     ;
     break;}
-case 319:
-#line 2409 "Gmsh.y"
+case 311:
+#line 2377 "Gmsh.y"
 {
       yyval.u = PACK_COLOR((int)yyvsp[-7].d, (int)yyvsp[-5].d, (int)yyvsp[-3].d, (int)yyvsp[-1].d);
     ;
     break;}
-case 320:
-#line 2413 "Gmsh.y"
+case 312:
+#line 2381 "Gmsh.y"
 {
       yyval.u = PACK_COLOR((int)yyvsp[-5].d, (int)yyvsp[-3].d, (int)yyvsp[-1].d, 255);
     ;
     break;}
-case 321:
-#line 2417 "Gmsh.y"
+case 313:
+#line 2385 "Gmsh.y"
 {
       yyval.u = Get_ColorForString(ColorString, (int)yyvsp[-1].d, yyvsp[-3].c, &flag);
       if(flag) vyyerror("Unknown Color '%s'", yyvsp[-3].c);
     ;
     break;}
-case 322:
-#line 2422 "Gmsh.y"
+case 314:
+#line 2390 "Gmsh.y"
 {
       yyval.u = Get_ColorForString(ColorString, -1, yyvsp[0].c, &flag);
       if(flag) vyyerror("Unknown Color '%s'", yyvsp[0].c);
     ;
     break;}
-case 323:
-#line 2427 "Gmsh.y"
+case 315:
+#line 2395 "Gmsh.y"
 {
       if(!(pColCat = Get_ColorOptionCategory(yyvsp[-4].c)))
 	vyyerror("Unknown Color Option Class '%s'", yyvsp[-4].c);
@@ -5677,7 +5598,7 @@ case 323:
     break;}
 }
    /* the action file gets copied in in place of this dollarsign */
-#line 543 "/usr/lib/bison.simple"
+#line 498 "/usr/local/share/bison.simple"
 
   yyvsp -= yylen;
   yyssp -= yylen;
@@ -5872,32 +5793,8 @@ yyerrhandle:
 
   yystate = yyn;
   goto yynewstate;
-
- yyacceptlab:
-  /* YYACCEPT comes here.  */
-  if (yyfree_stacks)
-    {
-      free (yyss);
-      free (yyvs);
-#ifdef YYLSP_NEEDED
-      free (yyls);
-#endif
-    }
-  return 0;
-
- yyabortlab:
-  /* YYABORT comes here.  */
-  if (yyfree_stacks)
-    {
-      free (yyss);
-      free (yyvs);
-#ifdef YYLSP_NEEDED
-      free (yyls);
-#endif
-    }
-  return 1;
 }
-#line 2440 "Gmsh.y"
+#line 2408 "Gmsh.y"
 
 
 void InitSymbols(void){
diff --git a/Parser/Gmsh.tab.cpp.h b/Parser/Gmsh.tab.cpp.h
index f6cf1a21f94ea99712e4a87d4c07535e11e910a4..3049927d665ed6d02da9d4763ae59d38b5c1891b 100644
--- a/Parser/Gmsh.tab.cpp.h
+++ b/Parser/Gmsh.tab.cpp.h
@@ -7,87 +7,86 @@ typedef union {
   Shape    s;
   List_T  *l;
 } YYSTYPE;
-#define	tDOUBLE	257
-#define	tSTRING	258
-#define	tBIGSTR	259
-#define	tEND	260
-#define	tAFFECT	261
-#define	tDOTS	262
-#define	tPi	263
-#define	tExp	264
-#define	tLog	265
-#define	tLog10	266
-#define	tSqrt	267
-#define	tSin	268
-#define	tAsin	269
-#define	tCos	270
-#define	tAcos	271
-#define	tTan	272
-#define	tAtan	273
-#define	tAtan2	274
-#define	tSinh	275
-#define	tCosh	276
-#define	tTanh	277
-#define	tFabs	278
-#define	tFloor	279
-#define	tCeil	280
-#define	tFmod	281
-#define	tModulo	282
-#define	tHypot	283
-#define	tPrintf	284
-#define	tPoint	285
-#define	tCircle	286
-#define	tEllipsis	287
-#define	tLine	288
-#define	tSurface	289
-#define	tSpline	290
-#define	tVolume	291
-#define	tCharacteristic	292
-#define	tLength	293
-#define	tParametric	294
-#define	tElliptic	295
-#define	tPlane	296
-#define	tRuled	297
-#define	tTransfinite	298
-#define	tComplex	299
-#define	tPhysical	300
-#define	tUsing	301
-#define	tBump	302
-#define	tProgression	303
-#define	tRotate	304
-#define	tTranslate	305
-#define	tSymmetry	306
-#define	tDilate	307
-#define	tExtrude	308
-#define	tDuplicata	309
-#define	tLoop	310
-#define	tInclude	311
-#define	tRecombine	312
-#define	tDelete	313
-#define	tCoherence	314
-#define	tView	315
-#define	tAttractor	316
-#define	tLayers	317
-#define	tScalarTetrahedron	318
-#define	tVectorTetrahedron	319
-#define	tTensorTetrahedron	320
-#define	tScalarTriangle	321
-#define	tVectorTriangle	322
-#define	tTensorTriangle	323
-#define	tScalarLine	324
-#define	tVectorLine	325
-#define	tTensorLine	326
-#define	tScalarPoint	327
-#define	tVectorPoint	328
-#define	tTensorPoint	329
-#define	tBSpline	330
-#define	tNurbs	331
-#define	tOrder	332
-#define	tWith	333
-#define	tBounds	334
-#define	tKnots	335
-#define	tColor	336
-#define	tOptions	337
+#define	tDOUBLE	258
+#define	tSTRING	259
+#define	tBIGSTR	260
+#define	tEND	261
+#define	tAFFECT	262
+#define	tDOTS	263
+#define	tPi	264
+#define	tExp	265
+#define	tLog	266
+#define	tLog10	267
+#define	tSqrt	268
+#define	tSin	269
+#define	tAsin	270
+#define	tCos	271
+#define	tAcos	272
+#define	tTan	273
+#define	tAtan	274
+#define	tAtan2	275
+#define	tSinh	276
+#define	tCosh	277
+#define	tTanh	278
+#define	tFabs	279
+#define	tFloor	280
+#define	tCeil	281
+#define	tFmod	282
+#define	tModulo	283
+#define	tHypot	284
+#define	tPrintf	285
+#define	tPoint	286
+#define	tCircle	287
+#define	tEllipsis	288
+#define	tLine	289
+#define	tSurface	290
+#define	tSpline	291
+#define	tVolume	292
+#define	tCharacteristic	293
+#define	tLength	294
+#define	tParametric	295
+#define	tElliptic	296
+#define	tPlane	297
+#define	tRuled	298
+#define	tTransfinite	299
+#define	tComplex	300
+#define	tPhysical	301
+#define	tUsing	302
+#define	tBump	303
+#define	tProgression	304
+#define	tRotate	305
+#define	tTranslate	306
+#define	tSymmetry	307
+#define	tDilate	308
+#define	tExtrude	309
+#define	tDuplicata	310
+#define	tLoop	311
+#define	tInclude	312
+#define	tRecombine	313
+#define	tDelete	314
+#define	tCoherence	315
+#define	tView	316
+#define	tAttractor	317
+#define	tLayers	318
+#define	tScalarTetrahedron	319
+#define	tVectorTetrahedron	320
+#define	tTensorTetrahedron	321
+#define	tScalarTriangle	322
+#define	tVectorTriangle	323
+#define	tTensorTriangle	324
+#define	tScalarLine	325
+#define	tVectorLine	326
+#define	tTensorLine	327
+#define	tScalarPoint	328
+#define	tVectorPoint	329
+#define	tTensorPoint	330
+#define	tBSpline	331
+#define	tNurbs	332
+#define	tOrder	333
+#define	tWith	334
+#define	tBounds	335
+#define	tKnots	336
+#define	tColor	337
 #define	tFor	338
 #define	tEndFor	339
 #define	tScript	340
diff --git a/Parser/Gmsh.y b/Parser/Gmsh.y
index a21215822595433e0ecb3e25a9f1e1c0c6af7068..66dc1de507e9c12c9c78d47d8a25ce57aedda1ab 100644
--- a/Parser/Gmsh.y
+++ b/Parser/Gmsh.y
@@ -1,4 +1,4 @@
-%{ /* $Id: Gmsh.y,v 1.23 2000-12-07 01:14:30 geuzaine Exp $ */
+%{ /* $Id: Gmsh.y,v 1.24 2000-12-07 08:46:27 geuzaine Exp $ */
 
 #include <stdarg.h>
 
@@ -85,7 +85,7 @@ void  vyyerror (char *fmt, ...);
 %token tScalarLine tVectorLine tTensorLine
 %token tScalarPoint tVectorPoint tTensorPoint
 %token tBSpline tNurbs tOrder tWith tBounds tKnots
-%token tColor tOptions tFor tEndFor tScript tExit tMerge
+%token tColor tFor tEndFor tScript tExit tMerge
 
 %token tB_SPLINE_SURFACE_WITH_KNOTS
 %token tB_SPLINE_CURVE_WITH_KNOTS
@@ -379,8 +379,6 @@ GeomFormat :
   | Loop        {return 1;}
 /*  | Script      { return 1; }*/
   | Command     { return 1; }
-  | tOptions '{' Options '}' { return 1; }
-  | tScript  '{' Scripts '}' { return 1; }
   | error tEND  { yyerrok; return 1;}
 ;
 
@@ -705,6 +703,9 @@ TensorTetrahedron :
    ----------------------- */
 
 Affectation :
+
+  /* -------- Variables -------- */ 
+
     tSTRING tAFFECT FExpr tEND
     {
       TheSymbol.Name = $1;
@@ -759,1258 +760,1225 @@ Affectation :
       else
 	pSymbol->val /= $3 ;
     }
-;
-
-
-/* -----------
-    S H A P E
-   ----------- */
 
-Shape :
-
-  /* -------- Points -------- */ 
+  /* -------- Option Strings -------- */ 
 
-    tPoint '(' FExpr ')' tAFFECT VExpr tEND
-    {
-      Cdbpts101((int)$3,$6[0],$6[1],$6[2],$6[3],$6[4]);
-      $$.Type = MSH_POINT;
-      $$.Num  = (int)$3;
+  | tSTRING '.' tSTRING tAFFECT tBIGSTR tEND 
+    { 
+      if(!(pStrCat = Get_StringOptionCategory($1)))
+	vyyerror("Unknown String Option Class '%s'", $1);
+      else{
+	if(!(pStrOpt = Get_StringOption($3, pStrCat)))
+	  vyyerror("Unknown String Option '%s.%s'", $1, $3);
+	else{
+	  *pStrOpt = $5 ;
+	}
+      }
     }
 
-  | tPhysical tPoint '(' FExpr ')' tAFFECT ListOfDouble tEND
+  | tSTRING '.' tView '[' FExpr ']' '.' tSTRING tAFFECT tBIGSTR tEND 
     {
-      Cdbz101((int)$4,MSH_PHYSICAL_POINT,0,0,0,0,0,NULL,$7,NULL);
-      $$.Type = MSH_PHYSICAL_POINT;
-      $$.Num  = (int)$4;
+      if(strcmp($1, "Post"))
+	vyyerror("Unknown View Option Class '%s'", $1);
+      else{
+	if(!(pStrOpt = Get_StringViewOption((int)$5, $8, &i))){
+	  if(i < 0) vyyerror("PostProcessing View %d does not Exist", (int)$5);
+	  else	    vyyerror("Unknown String Option '%s.View[%d].%s'", 
+			     $1, (int)$5, $8);
+	}
+	else{
+	  *pStrOpt = $10 ;
+	}
+      }
     }
-  | tAttractor tPoint ListOfDouble tAFFECT '{' FExpr ',' FExpr ',' FExpr '}'  tEND
+
+  /* -------- Option Numbers -------- */ 
+
+  | tSTRING '.' tSTRING tAFFECT FExpr tEND 
     {
-      Vertex *v;
-      Attractor *a;
-      double p;
-      int ip;
-      for(int i=0;i<List_Nbr($3);i++){
-      	List_Read($3,i,&p);
-        ip = (int)p;
-        v = FindVertex(ip,THEM);
-        if(!v)
-	  vyyerror("Unkown Point %d", ip);
+      if(!(pNumCat = Get_NumberOptionCategory($1)))
+	vyyerror("Unknown Numeric Option Class '%s'", $1);
+      else{
+	if(!(pNumOpt = Get_NumberOption($3, pNumCat, &i)))
+	  vyyerror("Unknown Numeric Option '%s.%s'", $1, $3);
 	else{
-	  a = Create_Attractor(List_Nbr(THEM->Metric->Attractors)+1,
-			       $6,$8,$10,v,NULL,NULL);
-	  List_Add(THEM->Metric->Attractors,&a);
-        }
+	  switch(i){
+	  case GMSH_DOUBLE : *(double*)pNumOpt = $5 ; break ;
+	  case GMSH_FLOAT : *(float*)pNumOpt = (float)$5 ; break ;
+	  case GMSH_LONG : *(long*)pNumOpt = (long)$5 ; break ;
+	  case GMSH_INT : *(int*)pNumOpt = (int)$5 ; break ;
+	  }
+	}
       }
     }
-  | tCharacteristic tLength ListOfDouble tAFFECT FExpr tEND
+  | tSTRING '.' tView '[' FExpr ']' '.' tSTRING tAFFECT FExpr tEND 
     {
-      for(i=0;i<List_Nbr($3);i++){
-	List_Read($3,i,&d);
-	Vertex *v = FindVertex((int)d,THEM);
-	if(!v)
-	  vyyerror("Unkown Point %d", (int)d);
-	else
-	  v->lc = $5;
+      if(strcmp($1, "Post"))
+	vyyerror("Unknown View Option Class '%s'", $1);
+      else{
+	if(!(pNumOpt = Get_NumberViewOption((int)$5, $8, &i))){
+	  if(i < 0) vyyerror("PostProcessing View %d does not Exist", (int)$5);
+	  else	    vyyerror("Unknown Numeric Option '%s.View[%d].%s'", 
+			     $1, (int)$5, $8);
+	}
+	else{
+	  switch(i){
+	  case GMSH_DOUBLE : *(double*)pNumOpt = $10 ; break ;
+	  case GMSH_FLOAT : *(float*)pNumOpt = (float)$10 ; break ;
+	  case GMSH_LONG : *(long*)pNumOpt = (long)$10 ; break ;
+	  case GMSH_INT : *(int*)pNumOpt = (int)$10 ; break ;
+	  }
+	}
       }
-    }  
-  | tPoint '{' FExpr '}' tEND
-    {
-      $$.Type = MSH_POINT;
-      $$.Num  = (int)$3;
     }
 
-  /* -------- Lines -------- */ 
-
-  | tLine '(' FExpr ')' tAFFECT ListOfDouble tEND
+  | tSTRING '.' tSTRING tAFFECTPLUS FExpr tEND 
     {
-      Cdbseg101((int)$3,MSH_SEGM_LINE,1,$6,NULL,-1,-1,0.,1.,NULL,NULL,NULL);
-      $$.Type = MSH_SEGM_LINE;
-      $$.Num  = (int)$3;
+      if(!(pNumCat = Get_NumberOptionCategory($1)))
+	vyyerror("Unknown Numeric Option Class '%s'", $1);
+      else{
+	if(!(pNumOpt = Get_NumberOption($3, pNumCat, &i)))
+	  vyyerror("Unknown Numeric Option '%s.%s'", $1, $3);
+	else{
+	  switch(i){
+	  case GMSH_DOUBLE : *(double*)pNumOpt += $5 ; break ;
+	  case GMSH_FLOAT : *(float*)pNumOpt += (float)$5 ; break ;
+	  case GMSH_LONG : *(long*)pNumOpt += (long)$5 ; break ;
+	  case GMSH_INT : *(int*)pNumOpt += (int)$5 ; break ;
+	  }
+	}
+      }
     }
-  | tSpline '(' FExpr ')' tAFFECT ListOfDouble tEND
+  | tSTRING '.' tView '[' FExpr ']' '.' tSTRING tAFFECTPLUS FExpr tEND 
     {
-      Cdbseg101((int)$3,MSH_SEGM_SPLN,3,$6,NULL,-1,-1,0.,1.,NULL,NULL,NULL);
-      $$.Type = MSH_SEGM_SPLN;
-      $$.Num  = (int)$3;
+      if(strcmp($1, "Post"))
+	vyyerror("Unknown View Option Class '%s'", $1);
+      else{
+	if(!(pNumOpt = Get_NumberViewOption((int)$5, $8, &i))){
+	  if(i < 0) vyyerror("PostProcessing View %d does not Exist", (int)$5);
+	  else	    vyyerror("Unknown Numeric Option '%s.View[%d].%s'", 
+			     $1, (int)$5, $8);
+	}
+	else{
+	  switch(i){
+	  case GMSH_DOUBLE : *(double*)pNumOpt += $10 ; break ;
+	  case GMSH_FLOAT : *(float*)pNumOpt += (float)$10 ; break ;
+	  case GMSH_LONG : *(long*)pNumOpt += (long)$10 ; break ;
+	  case GMSH_INT : *(int*)pNumOpt += (int)$10 ; break ;
+	  }
+	}
+      }
     }
-  | tAttractor tLine ListOfDouble tAFFECT '{' FExpr ',' FExpr ',' FExpr '}'  tEND
+
+  | tSTRING '.' tSTRING tAFFECTMINUS FExpr tEND 
     {
-      Curve *c;
-      Attractor *a;
-      double p;
-      int ip;
-      for(int i=0;i<List_Nbr($3);i++){
-      	List_Read($3,i,&p);
-        ip = (int)p;
-        c = FindCurve(ip,THEM);
-        if(!c)
-	  vyyerror("Unkown Curve %d", ip);
+      if(!(pNumCat = Get_NumberOptionCategory($1)))
+	vyyerror("Unknown Numeric Option Class '%s'", $1);
+      else{
+	if(!(pNumOpt = Get_NumberOption($3, pNumCat, &i)))
+	  vyyerror("Unknown Numeric Option '%s.%s'", $1, $3);
 	else{
-	  a = Create_Attractor(List_Nbr(THEM->Metric->Attractors)+1,
-			       $6,$8,$10,NULL,c,NULL);
-	  List_Add(THEM->Metric->Attractors,&a);
-        }
+	  switch(i){
+	  case GMSH_DOUBLE : *(double*)pNumOpt -= $5 ; break ;
+	  case GMSH_FLOAT : *(float*)pNumOpt -= (float)$5 ; break ;
+	  case GMSH_LONG : *(long*)pNumOpt -= (long)$5 ; break ;
+	  case GMSH_INT : *(int*)pNumOpt -= (int)$5 ; break ;
+	  }
+	}
       }
     }
-  | tCircle '(' FExpr ')'  tAFFECT ListOfDouble tEND
+  | tSTRING '.' tView '[' FExpr ']' '.' tSTRING tAFFECTMINUS FExpr tEND 
     {
-      Cdbseg101((int)$3,MSH_SEGM_CIRC,2,$6,NULL,-1,-1,0.,1.,NULL,NULL,NULL);
-      $$.Type = MSH_SEGM_CIRC ;
-      $$.Num  = (int)$3;
+      if(strcmp($1, "Post"))
+	vyyerror("Unknown View Option Class '%s'", $1);
+      else{
+	if(!(pNumOpt = Get_NumberViewOption((int)$5, $8, &i))){
+	  if(i < 0) vyyerror("PostProcessing View %d does not Exist", (int)$5);
+	  else	    vyyerror("Unknown Numeric Option '%s.View[%d].%s'", 
+			     $1, (int)$5, $8);
+	}
+	else{
+	  switch(i){
+	  case GMSH_DOUBLE : *(double*)pNumOpt -= $10 ; break ;
+	  case GMSH_FLOAT : *(float*)pNumOpt -= (float)$10 ; break ;
+	  case GMSH_LONG : *(long*)pNumOpt -= (long)$10 ; break ;
+	  case GMSH_INT : *(int*)pNumOpt -= (int)$10 ; break ;
+	  }
+	}
+      }
     }
-  | tCircle '(' FExpr ')'  tAFFECT ListOfDouble tPlane VExpr tEND
+
+  | tSTRING '.' tSTRING tAFFECTTIMES FExpr tEND 
     {
-      List_T *temp;
-      int i,j;
-      double d;
-      temp = List_Create(List_Nbr($6),1,sizeof(int));
-      for(i=0;i<List_Nbr($6);i++){
-      	List_Read($6,i,&d);
-        j = (int)d;
-        List_Add(temp,&j);
+      if(!(pNumCat = Get_NumberOptionCategory($1)))
+	vyyerror("Unknown Numeric Option Class '%s'", $1);
+      else{
+	if(!(pNumOpt = Get_NumberOption($3, pNumCat, &i)))
+	  vyyerror("Unknown Numeric Option '%s.%s'", $1, $3);
+	else{
+	  switch(i){
+	  case GMSH_DOUBLE : *(double*)pNumOpt *= $5 ; break ;
+	  case GMSH_FLOAT : *(float*)pNumOpt *= (float)$5 ; break ;
+	  case GMSH_LONG : *(long*)pNumOpt *= (long)$5 ; break ;
+	  case GMSH_INT : *(int*)pNumOpt *= (int)$5 ; break ;
+	  }
+	}
       }
-      AddCircleInDataBase ((int) $3, MSH_SEGM_CIRC, temp, $8);
-      List_Delete(temp);
-      $$.Type = MSH_SEGM_CIRC ;
-      $$.Num  = (int)$3;
     }
-  | tParametric '(' FExpr ')' tAFFECT 
-      '{' FExpr ',' FExpr ',' tBIGSTR ',' tBIGSTR ',' tBIGSTR '}' tEND
+  | tSTRING '.' tView '[' FExpr ']' '.' tSTRING tAFFECTTIMES FExpr tEND 
     {
-      Cdbseg101((int)$3,MSH_SEGM_PARAMETRIC,2,NULL,NULL,-1,-1,$7,$9,$11,$13,$15);
-      $$.Type = MSH_SEGM_PARAMETRIC ;
-      $$.Num  = (int)$3;
+      if(strcmp($1, "Post"))
+	vyyerror("Unknown View Option Class '%s'", $1);
+      else{
+	if(!(pNumOpt = Get_NumberViewOption((int)$5, $8, &i))){
+	  if(i < 0) vyyerror("PostProcessing View %d does not Exist", (int)$5);
+	  else	    vyyerror("Unknown Numeric Option '%s.View[%d].%s'", 
+			     $1, (int)$5, $8);
+	}
+	else{
+	  switch(i){
+	  case GMSH_DOUBLE : *(double*)pNumOpt *= $10 ; break ;
+	  case GMSH_FLOAT : *(float*)pNumOpt *= (float)$10 ; break ;
+	  case GMSH_LONG : *(long*)pNumOpt *= (long)$10 ; break ;
+	  case GMSH_INT : *(int*)pNumOpt *= (int)$10 ; break ;
+	  }
+	}
+      }
     }
-  | tEllipsis '(' FExpr ')'  tAFFECT ListOfDouble tEND
+
+  | tSTRING '.' tSTRING tAFFECTDIVIDE FExpr tEND 
     {
-      Cdbseg101((int)$3,MSH_SEGM_ELLI,2,$6,NULL,-1,-1,0.,1.,NULL,NULL,NULL);
-      $$.Type = MSH_SEGM_ELLI ;
-      $$.Num  = (int)$3;
-    }
-  | tPhysical tLine '(' FExpr ')' tAFFECT ListOfDouble tEND
-    {
-      Cdbz101((int)$4,MSH_PHYSICAL_LINE,0,0,0,0,0,NULL,$7,NULL);
-      $$.Type = MSH_PHYSICAL_LINE;
-      $$.Num  = (int)$4;
-    }
-  | tLine tLoop '(' FExpr ')' tAFFECT ListOfDouble tEND
-    {
-      $$.Type = MSH_SEGM_LOOP;
-      Cdbz101((int)$4,$$.Type,0,0,0,0,0,NULL,$7,NULL);
-      $$.Num = (int)$4;
-    }
-  | tBSpline '(' FExpr ')' tAFFECT ListOfDouble tEND
-    {
-      Cdbseg101((int)$3,MSH_SEGM_BSPLN,2,$6,NULL,-1,-1,0.,1.,NULL,NULL,NULL);
-      $$.Type = MSH_SEGM_BSPLN;
-      $$.Num  = (int)$3;
-    }
-  | tNurbs  '(' FExpr ')' tAFFECT ListOfDouble tKnots ListOfDouble tOrder FExpr tEND
-    {
-      List_T *Temp;
-      int i;
-      double d;
-      if((int)$10 + 1 + List_Nbr($6) != List_Nbr($8)){
-	vyyerror("Wrong Definition of Nurbs Curve %d: "
-		"[Degree]%d + 1 + [NbPts]%d != [NbKnots]%d",
-		(int)$3, (int)$10, List_Nbr($6), List_Nbr($8));
-      }
-      Temp = List_Create(List_Nbr($6),1,sizeof(int));
-      for(i=0;i<List_Nbr($6);i++) {
-      	List_Read($6,i,&d);
-        j = (int)d;
-        List_Add(Temp,&j);
+      if(!(pNumCat = Get_NumberOptionCategory($1)))
+	vyyerror("Unknown Numeric Option Class '%s'", $1);
+      else{
+	if(!(pNumOpt = Get_NumberOption($3, pNumCat, &i)))
+	  vyyerror("Unknown Numeric Option '%s.%s'", $1, $3);
+	else{
+	  switch(i){
+	  case GMSH_DOUBLE : *(double*)pNumOpt /= $5 ; break ;
+	  case GMSH_FLOAT : *(float*)pNumOpt /= (float)$5 ; break ;
+	  case GMSH_LONG : *(long*)pNumOpt /= (long)$5 ; break ;
+	  case GMSH_INT : *(int*)pNumOpt /= (int)$5 ; break ;
+	  }
+	}
       }
-      AddCurveInDataBase ((int)$3,MSH_SEGM_NURBS,(int)$10,Temp,$8,-1,-1,0.,1.);
-      List_Delete(Temp);
     }
-  | tLine '{' FExpr '}' tEND
+  | tSTRING '.' tView '[' FExpr ']' '.' tSTRING tAFFECTDIVIDE FExpr tEND 
     {
-      $$.Num = (int)$3;
-      Curve *c = FindCurve($$.Num,THEM);
-      if(!c)
-	vyyerror("Unkown Curve %d", $$.Num);
-      else
-	$$.Type = c->Typ;
+      if(strcmp($1, "Post"))
+	vyyerror("Unknown View Option Class '%s'", $1);
+      else{
+	if(!(pNumOpt = Get_NumberViewOption((int)$5, $8, &i))){
+	  if(i < 0) vyyerror("PostProcessing View %d does not Exist", (int)$5);
+	  else	    vyyerror("Unknown Numeric Option '%s.View[%d].%s'", 
+			     $1, (int)$5, $8);
+	}
+	else{
+	  switch(i){
+	  case GMSH_DOUBLE : *(double*)pNumOpt /= $10 ; break ;
+	  case GMSH_FLOAT : *(float*)pNumOpt /= (float)$10 ; break ;
+	  case GMSH_LONG : *(long*)pNumOpt /= (long)$10 ; break ;
+	  case GMSH_INT : *(int*)pNumOpt /= (int)$10 ; break ;
+	  }
+	}
+      }
     }
 
-  /* -------- Surfaces -------- */ 
-
-  | tPlane tSurface '(' FExpr ')' tAFFECT ListOfDouble tEND
-    {
-      Cdbz101((int)$4,MSH_SURF_PLAN,0,0,0,0,0,NULL,$7,NULL);
-      $$.Type = MSH_SURF_PLAN;
-      $$.Num  = (int)$4;
-    }
-  | tTrimmed tSurface '(' FExpr ')' tAFFECT FExpr ListOfDouble tEND
+  | tSTRING '.' tSTRING tPLUSPLUS tEND 
     {
-      Surface *s,*support;
-      support = FindSurface((int)$7,THEM);
-      if(!support)
-	vyyerror("Unkown Surface %d", (int)$7);
+      if(!(pNumCat = Get_NumberOptionCategory($1)))
+	vyyerror("Unknown Numeric Option Class '%s'", $1);
       else{
-	Cdbz101((int)$4,MSH_SURF_PLAN,0,0,0,0,0,NULL,$8,NULL);
-	s = FindSurface((int)$4,THEM);
-	if(!s)
-	  vyyerror("Unkown Surface %d", (int)$4);
+	if(!(pNumOpt = Get_NumberOption($3, pNumCat, &i)))
+	  vyyerror("Unknown Numeric Option '%s.%s'", $1, $3);
 	else{
-	  s->Typ =  MSH_SURF_TRIMMED;
-	  s->Support = support;
-	  $$.Type = MSH_SURF_TRIMMED;
-	  $$.Num  = (int)$4;
+	  switch(i){
+	  case GMSH_DOUBLE : *(double*)pNumOpt += 1. ; break ;
+	  case GMSH_FLOAT : *(float*)pNumOpt += 1. ; break ;
+	  case GMSH_LONG : *(long*)pNumOpt += 1 ; break ;
+	  case GMSH_INT : *(int*)pNumOpt += 1 ; break ;
+	  }
 	}
       }
     }
-  | tRuled tSurface '(' FExpr ')' tAFFECT ListOfDouble tEND
+  | tSTRING '.' tView '[' FExpr ']' '.' tSTRING tPLUSPLUS FExpr tEND 
     {
-      List_Read($7,0,&d);
-      i = (int)d;
-      EdgeLoop *el = FindEdgeLoop(i,THEM);
-      if(!el)
-	vyyerror("Unkown Loop %d", i);
+      if(strcmp($1, "Post"))
+	vyyerror("Unknown View Option Class '%s'", $1);
       else{
-	j = List_Nbr(el->Curves);
-	if(j==4)
-	  $$.Type = MSH_SURF_REGL;
-	else if(j==3)
-	  $$.Type  = MSH_SURF_TRIC;
-	else
-	  vyyerror("Wrong Definition of Ruled Surface %d: "
-		   "%d Borders Instead of 3 or 4", 
-		   (int)$4, j);
-	Cdbz101((int)$4,$$.Type,0,0,0,0,0,NULL,$7,NULL);
-	$$.Num = (int)$4;
+	if(!(pNumOpt = Get_NumberViewOption((int)$5, $8, &i))){
+	  if(i < 0) vyyerror("PostProcessing View %d does not Exist", (int)$5);
+	  else	    vyyerror("Unknown Numeric Option '%s.View[%d].%s'", 
+			     $1, (int)$5, $8);
+	}
+	else{
+	  switch(i){
+	  case GMSH_DOUBLE : *(double*)pNumOpt += 1. ; break ;
+	  case GMSH_FLOAT : *(float*)pNumOpt += 1. ; break ;
+	  case GMSH_LONG : *(long*)pNumOpt += 1 ; break ;
+	  case GMSH_INT : *(int*)pNumOpt += 1 ; break ;
+	  }
+	}
       }
     }
-  | tNurbs tSurface tWith tBounds '(' FExpr ')' tAFFECT 
-    ListOfListOfDouble tKnots  '{' ListOfDouble ',' ListOfDouble '}'
-    tOrder '{' FExpr ',' FExpr '}' tEND
-    {
-      CreateNurbsSurface ( (int) $6 , (int)$18 , (int)$20  , $9, $12, $14);
-      $$.Type  = MSH_SURF_NURBS;
-      $$.Num = (int)$6;
-    }
-  | tNurbs  tSurface '(' FExpr ')' tAFFECT 
-    ListOfListOfDouble tKnots  '{' ListOfDouble ',' ListOfDouble '}'
-    tOrder '{' FExpr ',' FExpr '}' tEND
-    {
-      CreateNurbsSurfaceSupport ((int)$4, (int) $16 , (int) $18 , $7, $10, $12);
-    }
-  | tPhysical tSurface '(' FExpr ')' tAFFECT ListOfDouble tEND
-    {
-      Cdbz101((int)$4,MSH_PHYSICAL_SURFACE,0,0,0,0,0,NULL,$7,NULL);
-      $$.Type = MSH_PHYSICAL_SURFACE;
-      $$.Num  = (int)$4;
-    }
-  | tSurface tLoop '(' FExpr ')' tAFFECT ListOfDouble tEND
-    {
-      Cdbz101((int)$4,MSH_SURF_LOOP,0,0,0,0,0,NULL,$7,NULL);
-      $$.Type = MSH_SURF_LOOP;
-      $$.Num  = (int)$4;
-    }
-  | tSurface '{' FExpr '}' tEND
-    {
-      $$.Num = (int)$3;
-      Surface *s = FindSurface($$.Num,THEM);
-      if(!s)
-	vyyerror("Unknown Surface %d", $$.Num);
-      else
-	$$.Type = s->Typ;
-     }
 
-  /* -------- Volumes -------- */ 
-
-  | tComplex tVolume '(' FExpr ')' tAFFECT ListOfDouble tEND
-    {
-      Cdbz101((int)$4,MSH_VOLUME,0,0,0,0,0,NULL,$7,NULL);
-      $$.Type = MSH_VOLUME;
-      $$.Num  = (int)$4;      
-    }
-  | tVolume '(' FExpr ')' tAFFECT ListOfDouble tEND
+  | tSTRING '.' tSTRING tMINUSMINUS tEND 
     {
-      Cdbz101((int)$3,MSH_VOLUME,0,0,0,0,0,NULL,$6,NULL);
-      $$.Type = MSH_VOLUME;
-      $$.Num  = (int)$3;
+      if(!(pNumCat = Get_NumberOptionCategory($1)))
+	vyyerror("Unknown Numeric Option Class '%s'", $1);
+      else{
+	if(!(pNumOpt = Get_NumberOption($3, pNumCat, &i)))
+	  vyyerror("Unknown Numeric Option '%s.%s'", $1, $3);
+	else{
+	  switch(i){
+	  case GMSH_DOUBLE : *(double*)pNumOpt -= 1. ; break ;
+	  case GMSH_FLOAT : *(float*)pNumOpt -= 1. ; break ;
+	  case GMSH_LONG : *(long*)pNumOpt -= 1 ; break ;
+	  case GMSH_INT : *(int*)pNumOpt -= 1 ; break ;
+	  }
+	}
+      }
     }
-  | tPhysical tVolume '(' FExpr ')' tAFFECT ListOfDouble tEND
+  | tSTRING '.' tView '[' FExpr ']' '.' tSTRING tMINUSMINUS FExpr tEND 
     {
-      Cdbz101((int)$4,MSH_PHYSICAL_VOLUME,0,0,0,0,0,NULL,$7,NULL);
-      $$.Type = MSH_PHYSICAL_VOLUME;
-      $$.Num  = (int)$4;
+      if(strcmp($1, "Post"))
+	vyyerror("Unknown View Option Class '%s'", $1);
+      else{
+	if(!(pNumOpt = Get_NumberViewOption((int)$5, $8, &i))){
+	  if(i < 0) vyyerror("PostProcessing View %d does not Exist", (int)$5);
+	  else	    vyyerror("Unknown Numeric Option '%s.View[%d].%s'", 
+			     $1, (int)$5, $8);
+	}
+	else{
+	  switch(i){
+	  case GMSH_DOUBLE : *(double*)pNumOpt -= 1. ; break ;
+	  case GMSH_FLOAT : *(float*)pNumOpt -= 1. ; break ;
+	  case GMSH_LONG : *(long*)pNumOpt -= 1 ; break ;
+	  case GMSH_INT : *(int*)pNumOpt -= 1 ; break ;
+	  }
+	}
+      }
     }
-;
 
-/* -------------------
-    T R A N S F O R M
-   ------------------- */
+  /* -------- Option Arrays -------- */ 
 
-Transform :
-    tTranslate VExpr '{' MultipleShape '}'
-    {
-      TranslateShapes ($2[0],$2[1],$2[2],$4,1);
-      $$ = $4;
-    }
-  | tRotate '{' VExpr ',' VExpr ',' FExpr '}' '{' MultipleShape '}'
-    {
-      RotateShapes($3[0],$3[1],$3[2],$5[0],$5[1],$5[2],$7,$10);
-      $$ = $10;
-    }
-  | tSymmetry  VExpr   '{' MultipleShape '}'
+  | tSTRING '.' tSTRING tAFFECT VExpr tEND 
     {
-      SymmetryShapes($2[0],$2[1],$2[2],$2[3],$4,1);
-      $$ = $4;
+      if(!(pArrCat = Get_ArrayOptionCategory($1)))
+	vyyerror("Unknown Array Option Class '%s'", $1);
+      else{
+	if(!(pArrOpt = Get_ArrayOption($3, pArrCat, &i)))
+	  vyyerror("Unknown Array Option '%s.%s'", $1, $3);
+	else{
+	  switch(i){
+	  case GMSH_DOUBLE :
+	    for(j=0 ; j<4; j++) ((double*)pArrOpt)[j] = $5[j] ;
+	    break ;
+	  case GMSH_FLOAT :
+	    for(j=0 ; j<4; j++) ((float*)pArrOpt)[j] = (float)$5[j] ;
+	    break ;
+	  case GMSH_LONG :
+	    for(j=0 ; j<4; j++) ((long*)pArrOpt)[j] = (long)$5[j] ;
+	    break ;
+	  case GMSH_INT :
+	    for(j=0 ; j<4; j++) ((int*)pArrOpt)[j] = (int)$5[j] ;
+	    break ;
+	  }
+	}
+      }
     }
-  | tDilate '{' VExpr ',' FExpr '}'  '{' MultipleShape '}'
+  | tSTRING '.' tView '[' FExpr ']' '.' tSTRING tAFFECT VExpr tEND 
     {
-      DilatShapes($3[0],$3[1],$3[2],$5,$8,1);
-      $$ = $8;
+      if(strcmp($1, "Post"))
+	vyyerror("Unknown View Option Class '%s'", $1);
+      else{
+	if(!(pArrOpt = Get_ArrayViewOption((int)$5, $8, &i))){
+	  if(i < 0) vyyerror("PostProcessing View %d does not Exist", (int)$5);
+	  else	    vyyerror("Unknown Array Option '%s.View[%d].%s'", 
+			     $1, (int)$5, $8);
+	}
+	else{
+	  switch(i){
+	  case GMSH_DOUBLE :
+	    for(j=0 ; j<3; j++) ((double*)pArrOpt)[j] = $10[j] ;
+	    break ;
+	  case GMSH_FLOAT :
+	    for(j=0 ; j<3; j++) ((float*)pArrOpt)[j] = (float)$10[j] ;
+	    break ;
+	  case GMSH_LONG :
+	    for(j=0 ; j<3; j++) ((long*)pArrOpt)[j] = (long)$10[j] ;
+	    break ;
+	  case GMSH_INT :
+	    for(j=0 ; j<3; j++) ((int*)pArrOpt)[j] = (int)$10[j] ;
+	    break ;
+	  }
+	}
+      }
     }
-;
 
-MultipleShape : 
-    Duplicata     { $$ = $1; }
-  | ListOfShapes  { $$ = $1; }
-  | Transform     { $$ = $1; }
-;
-
-ListOfShapes : 
-    /* none */
+  | tSTRING '.' tSTRING tAFFECTPLUS VExpr tEND 
     {
-      $$ = List_Create(3,3,sizeof(Shape));
-    }   
-  | ListOfShapes Shape
+      if(!(pArrCat = Get_ArrayOptionCategory($1)))
+	vyyerror("Unknown Array Option Class '%s'", $1);
+      else{
+	if(!(pArrOpt = Get_ArrayOption($3, pArrCat, &i)))
+	  vyyerror("Unknown Array Option '%s.%s'", $1, $3);
+	else{
+	  switch(i){
+	  case GMSH_DOUBLE :
+	    for(j=0 ; j<4; j++) ((double*)pArrOpt)[j] += $5[j] ;
+	    break ;
+	  case GMSH_FLOAT :
+	    for(j=0 ; j<4; j++) ((float*)pArrOpt)[j] += (float)$5[j] ;
+	    break ;
+	  case GMSH_LONG :
+	    for(j=0 ; j<4; j++) ((long*)pArrOpt)[j] += (long)$5[j] ;
+	    break ;
+	  case GMSH_INT :
+	    for(j=0 ; j<4; j++) ((int*)pArrOpt)[j] += (int)$5[j] ;
+	    break ;
+	  }
+	}
+      }
+    }
+  | tSTRING '.' tView '[' FExpr ']' '.' tSTRING tAFFECTPLUS VExpr tEND 
     {
-      List_Add($$,&$2);
-      $$ = $1;
+      if(strcmp($1, "Post"))
+	vyyerror("Unknown View Option Class '%s'", $1);
+      else{
+	if(!(pArrOpt = Get_ArrayViewOption((int)$5, $8, &i))){
+	  if(i < 0) vyyerror("PostProcessing View %d does not Exist", (int)$5);
+	  else	    vyyerror("Unknown Array Option '%s.View[%d].%s'", 
+			     $1, (int)$5, $8);
+	}
+	else{
+	  switch(i){
+	  case GMSH_DOUBLE :
+	    for(j=0 ; j<3; j++) ((double*)pArrOpt)[j] += $10[j] ;
+	    break ;
+	  case GMSH_FLOAT :
+	    for(j=0 ; j<3; j++) ((float*)pArrOpt)[j] += (float)$10[j] ;
+	    break ;
+	  case GMSH_LONG :
+	    for(j=0 ; j<3; j++) ((long*)pArrOpt)[j] += (long)$10[j] ;
+	    break ;
+	  case GMSH_INT :
+	    for(j=0 ; j<3; j++) ((int*)pArrOpt)[j] += (int)$10[j] ;
+	    break ;
+	  }
+	}
+      }
     }
-;
 
-/* -------------------
-    D U P L I C A T A
-   ------------------- */
-
-Duplicata :
-    tDuplicata '{' ListOfShapes '}'
+  | tSTRING '.' tSTRING tAFFECTMINUS VExpr tEND 
     {
-      $$ = List_Create(3,3,sizeof(Shape));
-      for(i=0;i<List_Nbr($3);i++){
-	List_Read ($3,i,&TheShape);
-	CopyShape(TheShape.Type,TheShape.Num,&j);
-	TheShape.Num = j;
-	List_Add($$,&TheShape);
+      if(!(pArrCat = Get_ArrayOptionCategory($1)))
+	vyyerror("Unknown Array Option Class '%s'", $1);
+      else{
+	if(!(pArrOpt = Get_ArrayOption($3, pArrCat, &i)))
+	  vyyerror("Unknown Array Option '%s.%s'", $1, $3);
+	else{
+	  switch(i){
+	  case GMSH_DOUBLE :
+	    for(j=0 ; j<4; j++) ((double*)pArrOpt)[j] -= $5[j] ;
+	    break ;
+	  case GMSH_FLOAT :
+	    for(j=0 ; j<4; j++) ((float*)pArrOpt)[j] -= (float)$5[j] ;
+	    break ;
+	  case GMSH_LONG :
+	    for(j=0 ; j<4; j++) ((long*)pArrOpt)[j] -= (long)$5[j] ;
+	    break ;
+	  case GMSH_INT :
+	    for(j=0 ; j<4; j++) ((int*)pArrOpt)[j] -= (int)$5[j] ;
+	    break ;
+	  }
+	}
       }
     }
-;
-
-
-/* -------------
-    D E L E T E 
-   ------------- */
-
-Delete :
-    tDelete '{' ListOfShapes '}'
+  | tSTRING '.' tView '[' FExpr ']' '.' tSTRING tAFFECTMINUS VExpr tEND 
     {
-      for(i=0;i<List_Nbr($3);i++){
-	List_Read ($3,i,&TheShape);
-	DeleteShape(TheShape.Type,TheShape.Num);
+      if(strcmp($1, "Post"))
+	vyyerror("Unknown View Option Class '%s'", $1);
+      else{
+	if(!(pArrOpt = Get_ArrayViewOption((int)$5, $8, &i))){
+	  if(i < 0) vyyerror("PostProcessing View %d does not Exist", (int)$5);
+	  else	    vyyerror("Unknown Array Option '%s.View[%d].%s'", 
+			     $1, (int)$5, $8);
+	}
+	else{
+	  switch(i){
+	  case GMSH_DOUBLE :
+	    for(j=0 ; j<3; j++) ((double*)pArrOpt)[j] -= $10[j] ;
+	    break ;
+	  case GMSH_FLOAT :
+	    for(j=0 ; j<3; j++) ((float*)pArrOpt)[j] -= (float)$10[j] ;
+	    break ;
+	  case GMSH_LONG :
+	    for(j=0 ; j<3; j++) ((long*)pArrOpt)[j] -= (long)$10[j] ;
+	    break ;
+	  case GMSH_INT :
+	    for(j=0 ; j<3; j++) ((int*)pArrOpt)[j] -= (int)$10[j] ;
+	    break ;
+	  }
+	}
       }
     }
-;
 
+  /* -------- Option Colors -------- */ 
 
-/* -----------
-    M A C R O
-   ----------- */
-
-Macro : 
-    tInclude tBIGSTR tEND
+  | tSTRING '.' tColor '.' tSTRING tAFFECT Color tEND 
     {
-      yyinTab[RecursionLevel++] = yyin;
-      strcpy(tmpstring, ThePathForIncludes);
-      if((yyin = fopen(strcat(tmpstring,$2),"r"))){
-	strcpy(yynameTab[RecursionLevel-1],yyname);
-	yylinenoTab[RecursionLevel-1]=yylineno;
-	yylineno=1;
-	strcpy(yyname,$2);
-	while(!feof(yyin)){
-	  yyparse();
-	}
-	fclose(yyin);
-	yyin = yyinTab[--RecursionLevel];
-	strcpy(yyname,yynameTab[RecursionLevel]);
-	yylineno = yylinenoTab[RecursionLevel];
-      }
+      if(!(pColCat = Get_ColorOptionCategory($1)))
+	vyyerror("Unknown Color Option Class '%s'", $1);
       else{
-	vyyerror("Unknown File '%s'", $2) ;  
-	yyin = yyinTab[--RecursionLevel];
+	if(!(pColOpt = Get_ColorOption($5, pColCat)))
+	  vyyerror("Unknown Color Option '%s.%s'", $1, $5);
+	else{
+	  *pColOpt = $7 ;
+	}
       }
     }
-;
-/* -----------------
-    C O M M A N D  
-   ----------------- */
-
-Command :
-   tPrintf tBIGSTR tEND
-   {
-     char ext[6];
-     strcpy(ext,$2+(strlen($2)-4));
-     Replot();
-     extern void CreateImage (FILE *fp);
-     FILE *fp = 0;
-     if(!strcmp(ext,".gif"))
-       {
-	 fp = fopen($2,"wb");
-	 CTX.print.type = PRINT_GL2GIF;
-       }
-     else if(!strcmp(ext,".eps"))
-       {
-	 fp = fopen($2,"w");
-	 CTX.print.type =  PRINT_GL2PS_RECURSIVE;
-       } 
-     else if(!strcmp(ext,".xpm"))
-       {
-	 fp = fopen($2,"wb");
-	 CTX.print.type =  PRINT_XDUMP;
-	 CTX.print.format = FORMAT_XPM;
-       } 
 
-     if(fp)
-       {
-	 CreateImage(fp);
-	 fclose(fp);
-       }
-   } 
-   | tExit tEND
-   {
-     exit(0);
-   } 
-   | tMerge tBIGSTR tEND
-   {
-     FILE *ff = yyin;
-     MergeProblem($2);
-     yyin = ff;
-   }
 ;
 
-/* ---------------
-    L O O P  
-   --------------- */
 
-Loop :   
+/* -----------
+    S H A P E
+   ----------- */
 
-  tFor '(' FExpr tDOTS FExpr ')' 
-  {
-    FILE* ff;
-    if(RecursionLevel)
-      ff = yyinTab[RecursionLevel-1];
-    else
-      ff = yyin;
-    // here, we seek remember the position in yyin
-    LoopControlVariablesTab[ImbricatedLoop][0] = (int)$3 ;
-    LoopControlVariablesTab[ImbricatedLoop][1] = (int)$5 ;
-    LoopControlVariablesTab[ImbricatedLoop][2] = 1 ;
-    fgetpos( ff, &yyposImbricatedLoopsTab[ImbricatedLoop++]);
-  }
-  | tFor '(' FExpr tDOTS FExpr tDOTS FExpr ')' 
-  {
-    FILE* ff;
-    if(RecursionLevel)
-      ff = yyinTab[RecursionLevel-1];
-    else
-      ff = yyin;
-    // here, we seek remember the position in yyin
-    LoopControlVariablesTab[ImbricatedLoop][0] = (int)$3 ;
-    LoopControlVariablesTab[ImbricatedLoop][1] = (int)$5 ;
-    LoopControlVariablesTab[ImbricatedLoop][2] = (int)$7 ;
-    fgetpos( ff, &yyposImbricatedLoopsTab[ImbricatedLoop++]);
-  }
-  | tEndFor 
-  {
-    if(LoopControlVariablesTab[ImbricatedLoop-1][1] >  
-       LoopControlVariablesTab[ImbricatedLoop-1][0])
-      {
-	FILE* ff;
-	if(RecursionLevel)
-	  ff = yyinTab[RecursionLevel-1];
-	else
-	  ff = yyin;
-        LoopControlVariablesTab[ImbricatedLoop-1][0] +=
-	  LoopControlVariablesTab[ImbricatedLoop-1][2];
-        fsetpos( yyin, &yyposImbricatedLoopsTab[ImbricatedLoop-1]);
-      }
-    else
-      {
-	ImbricatedLoop--;
-      }
-  }
+Shape :
 
-/* ---------------
-    S C R I P T 
-   --------------- 
+  /* -------- Points -------- */ 
 
-Script :
-  tScript '(' FExpr ')' '{' GeomFormatList '}' tEND
-   {
-     // here put something to close the script which 
-     // number is (int) $3
-   }
-;
-*/
+    tPoint '(' FExpr ')' tAFFECT VExpr tEND
+    {
+      Cdbpts101((int)$3,$6[0],$6[1],$6[2],$6[3],$6[4]);
+      $$.Type = MSH_POINT;
+      $$.Num  = (int)$3;
+    }
 
+  | tPhysical tPoint '(' FExpr ')' tAFFECT ListOfDouble tEND
+    {
+      Cdbz101((int)$4,MSH_PHYSICAL_POINT,0,0,0,0,0,NULL,$7,NULL);
+      $$.Type = MSH_PHYSICAL_POINT;
+      $$.Num  = (int)$4;
+    }
+  | tAttractor tPoint ListOfDouble tAFFECT '{' FExpr ',' FExpr ',' FExpr '}'  tEND
+    {
+      Vertex *v;
+      Attractor *a;
+      double p;
+      int ip;
+      for(int i=0;i<List_Nbr($3);i++){
+      	List_Read($3,i,&p);
+        ip = (int)p;
+        v = FindVertex(ip,THEM);
+        if(!v)
+	  vyyerror("Unkown Point %d", ip);
+	else{
+	  a = Create_Attractor(List_Nbr(THEM->Metric->Attractors)+1,
+			       $6,$8,$10,v,NULL,NULL);
+	  List_Add(THEM->Metric->Attractors,&a);
+        }
+      }
+    }
+  | tCharacteristic tLength ListOfDouble tAFFECT FExpr tEND
+    {
+      for(i=0;i<List_Nbr($3);i++){
+	List_Read($3,i,&d);
+	Vertex *v = FindVertex((int)d,THEM);
+	if(!v)
+	  vyyerror("Unkown Point %d", (int)d);
+	else
+	  v->lc = $5;
+      }
+    }  
+  | tPoint '{' FExpr '}' tEND
+    {
+      $$.Type = MSH_POINT;
+      $$.Num  = (int)$3;
+    }
 
-/* ---------------
-    E X T R U D E 
-   --------------- */
+  /* -------- Lines -------- */ 
 
-Extrude :
-    tExtrude tPoint '{' FExpr ',' VExpr '}' tEND
+  | tLine '(' FExpr ')' tAFFECT ListOfDouble tEND
     {
-      Curve *pc, *prc;
-      Extrude_ProtudePoint(1,(int)$4,$6[0],$6[1],$6[2],0.,0.,0.,0.,&pc,&prc,NULL);
+      Cdbseg101((int)$3,MSH_SEGM_LINE,1,$6,NULL,-1,-1,0.,1.,NULL,NULL,NULL);
+      $$.Type = MSH_SEGM_LINE;
+      $$.Num  = (int)$3;
     }
-  | tExtrude tPoint '{' FExpr ',' VExpr ',' VExpr ',' FExpr '}' tEND
+  | tSpline '(' FExpr ')' tAFFECT ListOfDouble tEND
     {
-      Curve *pc, *prc;
-      Extrude_ProtudePoint(0,(int)$4,$6[0],$6[1],$6[2],$8[0],$8[1],$8[2],$10,
-			   &pc,&prc,NULL);
+      Cdbseg101((int)$3,MSH_SEGM_SPLN,3,$6,NULL,-1,-1,0.,1.,NULL,NULL,NULL);
+      $$.Type = MSH_SEGM_SPLN;
+      $$.Num  = (int)$3;
     }
-  | tExtrude tLine'{' FExpr ',' VExpr '}' tEND
+  | tAttractor tLine ListOfDouble tAFFECT '{' FExpr ',' FExpr ',' FExpr '}'  tEND
     {
-      Extrude_ProtudeCurve(1,(int)$4,$6[0],$6[1],$6[2],0.,0.,0.,0.,NULL);
+      Curve *c;
+      Attractor *a;
+      double p;
+      int ip;
+      for(int i=0;i<List_Nbr($3);i++){
+      	List_Read($3,i,&p);
+        ip = (int)p;
+        c = FindCurve(ip,THEM);
+        if(!c)
+	  vyyerror("Unkown Curve %d", ip);
+	else{
+	  a = Create_Attractor(List_Nbr(THEM->Metric->Attractors)+1,
+			       $6,$8,$10,NULL,c,NULL);
+	  List_Add(THEM->Metric->Attractors,&a);
+        }
+      }
     }
-  | tExtrude tLine'{' FExpr ',' VExpr ',' VExpr ',' FExpr '}' tEND
+  | tCircle '(' FExpr ')'  tAFFECT ListOfDouble tEND
     {
-      Extrude_ProtudeCurve(0,(int)$4,$6[0],$6[1],$6[2],$8[0],$8[1],$8[2],$10,NULL);
+      Cdbseg101((int)$3,MSH_SEGM_CIRC,2,$6,NULL,-1,-1,0.,1.,NULL,NULL,NULL);
+      $$.Type = MSH_SEGM_CIRC ;
+      $$.Num  = (int)$3;
     }
-  |  tExtrude tSurface '{' FExpr ',' VExpr '}' tEND
+  | tCircle '(' FExpr ')'  tAFFECT ListOfDouble tPlane VExpr tEND
     {
-      Extrude_ProtudeSurface(1,(int)$4,$6[0],$6[1],$6[2],0.,0.,0.,0.,0,NULL);
+      List_T *temp;
+      int i,j;
+      double d;
+      temp = List_Create(List_Nbr($6),1,sizeof(int));
+      for(i=0;i<List_Nbr($6);i++){
+      	List_Read($6,i,&d);
+        j = (int)d;
+        List_Add(temp,&j);
+      }
+      AddCircleInDataBase ((int) $3, MSH_SEGM_CIRC, temp, $8);
+      List_Delete(temp);
+      $$.Type = MSH_SEGM_CIRC ;
+      $$.Num  = (int)$3;
     }
-  | tExtrude tSurface '{' FExpr ',' VExpr ',' VExpr ',' FExpr '}' tEND
+  | tParametric '(' FExpr ')' tAFFECT 
+      '{' FExpr ',' FExpr ',' tBIGSTR ',' tBIGSTR ',' tBIGSTR '}' tEND
     {
-      Extrude_ProtudeSurface(0,(int)$4,$6[0],$6[1],$6[2],$8[0],$8[1],$8[2],$10,0,NULL);
+      Cdbseg101((int)$3,MSH_SEGM_PARAMETRIC,2,NULL,NULL,-1,-1,$7,$9,$11,$13,$15);
+      $$.Type = MSH_SEGM_PARAMETRIC ;
+      $$.Num  = (int)$3;
     }
-  | tExtrude tSurface '{' FExpr ',' VExpr '}' '{' ExtrudeParameters '}' tEND
-  {
-    int vol = NEWREG();
-    Extrude_ProtudeSurface(1,(int)$4,$6[0],$6[1],$6[2],0.,0.,0.,0.,vol,&extr);
-  }
-  | tExtrude tSurface '{' FExpr ',' VExpr ',' VExpr ',' FExpr '}' '{' ExtrudeParameters '}'tEND
-  {
-    int vol = NEWREG();
-    Extrude_ProtudeSurface(0,(int)$4,$6[0],$6[1],$6[2],$8[0],$8[1],$8[2],$10,vol,&extr);
-  }
-;
-
-ExtrudeParameters :
-    ExtrudeParameter
+  | tEllipsis '(' FExpr ')'  tAFFECT ListOfDouble tEND
     {
+      Cdbseg101((int)$3,MSH_SEGM_ELLI,2,$6,NULL,-1,-1,0.,1.,NULL,NULL,NULL);
+      $$.Type = MSH_SEGM_ELLI ;
+      $$.Num  = (int)$3;
     }
-  | ExtrudeParameters ExtrudeParameter
+  | tPhysical tLine '(' FExpr ')' tAFFECT ListOfDouble tEND
+    {
+      Cdbz101((int)$4,MSH_PHYSICAL_LINE,0,0,0,0,0,NULL,$7,NULL);
+      $$.Type = MSH_PHYSICAL_LINE;
+      $$.Num  = (int)$4;
+    }
+  | tLine tLoop '(' FExpr ')' tAFFECT ListOfDouble tEND
+    {
+      $$.Type = MSH_SEGM_LOOP;
+      Cdbz101((int)$4,$$.Type,0,0,0,0,0,NULL,$7,NULL);
+      $$.Num = (int)$4;
+    }
+  | tBSpline '(' FExpr ')' tAFFECT ListOfDouble tEND
     {
+      Cdbseg101((int)$3,MSH_SEGM_BSPLN,2,$6,NULL,-1,-1,0.,1.,NULL,NULL,NULL);
+      $$.Type = MSH_SEGM_BSPLN;
+      $$.Num  = (int)$3;
     }
-;
-
-ExtrudeParameter :
-    tLayers '{' ListOfDouble ',' ListOfDouble ',' ListOfDouble '}' tEND
+  | tNurbs  '(' FExpr ')' tAFFECT ListOfDouble tKnots ListOfDouble tOrder FExpr tEND
     {
+      List_T *Temp;
+      int i;
       double d;
-      int j;
-      extr.mesh.NbLayer = List_Nbr($3);
-      extr.mesh.ExtrudeMesh = true;
-      for(int i=0;i<List_Nbr($3);i++){
-	List_Read($3,i,&d);
-	j = (int)d;
-	extr.mesh.NbElmLayer[i] = j;
-	List_Read($5,i,&d);
-	j = (int)d;
-	extr.mesh.ZonLayer[i] = j;
-	List_Read($7,i,&d);
-	extr.mesh.hLayer[i] = d;
+      if((int)$10 + 1 + List_Nbr($6) != List_Nbr($8)){
+	vyyerror("Wrong Definition of Nurbs Curve %d: "
+		"[Degree]%d + 1 + [NbPts]%d != [NbKnots]%d",
+		(int)$3, (int)$10, List_Nbr($6), List_Nbr($8));
+      }
+      Temp = List_Create(List_Nbr($6),1,sizeof(int));
+      for(i=0;i<List_Nbr($6);i++) {
+      	List_Read($6,i,&d);
+        j = (int)d;
+        List_Add(Temp,&j);
       }
+      AddCurveInDataBase ((int)$3,MSH_SEGM_NURBS,(int)$10,Temp,$8,-1,-1,0.,1.);
+      List_Delete(Temp);
     }
-  | tRecombine tEND
+  | tLine '{' FExpr '}' tEND
     {
-      extr.mesh.Recombine = true;
+      $$.Num = (int)$3;
+      Curve *c = FindCurve($$.Num,THEM);
+      if(!c)
+	vyyerror("Unkown Curve %d", $$.Num);
+      else
+	$$.Type = c->Typ;
     }
-;
 
-/* -------------------
-    T R A N S F I N I
-   ------------------- */
+  /* -------- Surfaces -------- */ 
 
-Transfini : 
-    tTransfinite tLine ListOfDouble tAFFECT FExpr tEND
+  | tPlane tSurface '(' FExpr ')' tAFFECT ListOfDouble tEND
     {
-      Curve *c;
-      for(i=0;i<List_Nbr($3);i++){
-	List_Read($3,i,&d);
-	j = (int)fabs(d);
-        c = FindCurve(j,THEM);
-	if(!c)
-	  vyyerror("Unkown Curve %d", j);
-	else{
-	  c->Method = TRANSFINI;
-	  c->ipar[0] = (int)$5;
-	  c->ipar[1] = sign(d);
-	  c->dpar[0] = 1.0;
-	}
-      }
+      Cdbz101((int)$4,MSH_SURF_PLAN,0,0,0,0,0,NULL,$7,NULL);
+      $$.Type = MSH_SURF_PLAN;
+      $$.Num  = (int)$4;
     }
-  | tTransfinite tLine ListOfDouble tAFFECT FExpr tUsing tProgression FExpr tEND
+  | tTrimmed tSurface '(' FExpr ')' tAFFECT FExpr ListOfDouble tEND
     {
-      Curve *c;
-      for(i=0;i<List_Nbr($3);i++){
-	List_Read($3,i,&d);
-	j = (int)fabs(d);
-        c = FindCurve(j,THEM);
-	if(!c)
-	  vyyerror("Unkown Curve %d", j);
+      Surface *s,*support;
+      support = FindSurface((int)$7,THEM);
+      if(!support)
+	vyyerror("Unkown Surface %d", (int)$7);
+      else{
+	Cdbz101((int)$4,MSH_SURF_PLAN,0,0,0,0,0,NULL,$8,NULL);
+	s = FindSurface((int)$4,THEM);
+	if(!s)
+	  vyyerror("Unkown Surface %d", (int)$4);
 	else{
-	  c->Method = TRANSFINI;
-	  c->ipar[0] = (int)$5;
-	  c->ipar[1] = sign(d); /* Progresion : code 1 ou -1 */
-	  c->dpar[0] = fabs($8);
+	  s->Typ =  MSH_SURF_TRIMMED;
+	  s->Support = support;
+	  $$.Type = MSH_SURF_TRIMMED;
+	  $$.Num  = (int)$4;
 	}
       }
     }
-  | tTransfinite tLine ListOfDouble tAFFECT FExpr tUsing tBump FExpr tEND
+  | tRuled tSurface '(' FExpr ')' tAFFECT ListOfDouble tEND
     {
-      Curve *c;
-      for(i=0;i<List_Nbr($3);i++){
-	List_Read($3,i,&d);
-	j = (int)fabs(d);
-        c = FindCurve(j,THEM);
-	if(!c)
-	  vyyerror("Unkown Curve %d", j);
-	else{
-	  c->Method = TRANSFINI;
-	  c->ipar[0] = (int)$5;
-	  c->ipar[1] = 2*sign(d); /* Bump : code 2 ou -2 */
-	  c->dpar[0] = fabs($8);
-	}
+      List_Read($7,0,&d);
+      i = (int)d;
+      EdgeLoop *el = FindEdgeLoop(i,THEM);
+      if(!el)
+	vyyerror("Unkown Loop %d", i);
+      else{
+	j = List_Nbr(el->Curves);
+	if(j==4)
+	  $$.Type = MSH_SURF_REGL;
+	else if(j==3)
+	  $$.Type  = MSH_SURF_TRIC;
+	else
+	  vyyerror("Wrong Definition of Ruled Surface %d: "
+		   "%d Borders Instead of 3 or 4", 
+		   (int)$4, j);
+	Cdbz101((int)$4,$$.Type,0,0,0,0,0,NULL,$7,NULL);
+	$$.Num = (int)$4;
       }
     }
-  | tTransfinite tSurface '{' FExpr '}' tAFFECT ListOfDouble tEND
+  | tNurbs tSurface tWith tBounds '(' FExpr ')' tAFFECT 
+    ListOfListOfDouble tKnots  '{' ListOfDouble ',' ListOfDouble '}'
+    tOrder '{' FExpr ',' FExpr '}' tEND
     {
-      Surface *s = FindSurface((int)$4,THEM);
-      if(!s)
-	vyyerror("Unkown Surface %d", (int)$4);
-      else{
-	s->Method = TRANSFINI;
-	k = List_Nbr($7);
-	if(k!=3 && k!=4){
-	  vyyerror("Wrong Definition of Transfinite Surface %d: "
-		   "%d Points Instead of 3 or 4" , $4, k) ;
-	}
-	else{
-	  for(i=0;i<k;i++){
-	    List_Read($7,i,&d);
-	    j = (int)fabs(d);
-	    s->ipar[i] = j;
-	  }
-	}
-      }
+      CreateNurbsSurface ( (int) $6 , (int)$18 , (int)$20  , $9, $12, $14);
+      $$.Type  = MSH_SURF_NURBS;
+      $$.Num = (int)$6;
     }
-  | tElliptic tSurface '{' FExpr '}' tAFFECT ListOfDouble tEND
+  | tNurbs  tSurface '(' FExpr ')' tAFFECT 
+    ListOfListOfDouble tKnots  '{' ListOfDouble ',' ListOfDouble '}'
+    tOrder '{' FExpr ',' FExpr '}' tEND
     {
-      Surface *s = FindSurface((int)$4,THEM);
-      if(!s)
-	vyyerror("Unkown Surface %d", (int)$4);
-      else{
-        s->Method = ELLIPTIC;
-        k = List_Nbr($7);
-        if(k != 4)
-	  vyyerror("Wrong Definition of Elliptic Surface %d: "
-		   "%d Points Instead of 4" , $4, k) ;
-        else{
-	  for(i=0;i<k;i++){
-	    List_Read($7,i,&d);
-	    j = (int)fabs(d);
-	    s->ipar[i] = j;
-	  }
-	}
-      }
+      CreateNurbsSurfaceSupport ((int)$4, (int) $16 , (int) $18 , $7, $10, $12);
     }
-  | tTransfinite tVolume '{' FExpr '}' tAFFECT ListOfDouble tEND
+  | tPhysical tSurface '(' FExpr ')' tAFFECT ListOfDouble tEND
     {
-      Volume *v = FindVolume((int)$4,THEM);
-      if(!v)
-	vyyerror("Unkown Volume %d", (int)$4);
-      else{
-	v->Method = TRANSFINI;
-	k = List_Nbr($7);
-	if(k!=6 && k!=8)
-	  vyyerror("Wrong Definition of Transfinite Volume %d: "
-		   "%d Points Instead of 6 or 8" , $4, k) ;
-	else{
-	  for(i=0;i<k;i++){
-	    List_Read($7,i,&d);
-	    j = (int)fabs(d);
-	    v->ipar[i] = j;
-	  }
-	}
-      }
+      Cdbz101((int)$4,MSH_PHYSICAL_SURFACE,0,0,0,0,0,NULL,$7,NULL);
+      $$.Type = MSH_PHYSICAL_SURFACE;
+      $$.Num  = (int)$4;
     }
-  | tRecombine tSurface ListOfDouble tAFFECT FExpr tEND
+  | tSurface tLoop '(' FExpr ')' tAFFECT ListOfDouble tEND
     {
-      Surface *s;
-      for(i=0;i<List_Nbr($3);i++){
-	List_Read($3,i,&d);
-	j = (int)d;
-	s = FindSurface(j,THEM);
-	if(!s){
-	  /* Allow generic lists, even if the surfaces don't exist
-	     vyyerror("Unkown Surface %d", j); */
-	}
-	else{
-	  s->Recombine = 1;
-	  s->RecombineAngle = $5;
-	}
-      }
+      Cdbz101((int)$4,MSH_SURF_LOOP,0,0,0,0,0,NULL,$7,NULL);
+      $$.Type = MSH_SURF_LOOP;
+      $$.Num  = (int)$4;
     }
-  | tRecombine tSurface ListOfDouble tEND
+  | tSurface '{' FExpr '}' tEND
     {
-      Surface *s;
-      for(i=0;i<List_Nbr($3);i++){
-	List_Read($3,i,&d);
-	j = (int)d;
-        s = FindSurface(j,THEM);
-	if(!s){
-	  /* Allow generic lists, even if the surfaces don't exist
-	     vyyerror("Unkown Surface %d", j); */
-	}
-	else{
-	  s->Recombine = 1;
-	  s->RecombineAngle = 30.;
-        }
-      }
-    }  
+      $$.Num = (int)$3;
+      Surface *s = FindSurface($$.Num,THEM);
+      if(!s)
+	vyyerror("Unknown Surface %d", $$.Num);
+      else
+	$$.Type = s->Typ;
+     }
+
+  /* -------- Volumes -------- */ 
+
+  | tComplex tVolume '(' FExpr ')' tAFFECT ListOfDouble tEND
+    {
+      Cdbz101((int)$4,MSH_VOLUME,0,0,0,0,0,NULL,$7,NULL);
+      $$.Type = MSH_VOLUME;
+      $$.Num  = (int)$4;      
+    }
+  | tVolume '(' FExpr ')' tAFFECT ListOfDouble tEND
+    {
+      Cdbz101((int)$3,MSH_VOLUME,0,0,0,0,0,NULL,$6,NULL);
+      $$.Type = MSH_VOLUME;
+      $$.Num  = (int)$3;
+    }
+  | tPhysical tVolume '(' FExpr ')' tAFFECT ListOfDouble tEND
+    {
+      Cdbz101((int)$4,MSH_PHYSICAL_VOLUME,0,0,0,0,0,NULL,$7,NULL);
+      $$.Type = MSH_PHYSICAL_VOLUME;
+      $$.Num  = (int)$4;
+    }
 ;
 
-
 /* -------------------
-    C O H E R E N C E
+    T R A N S F O R M
    ------------------- */
 
-Coherence : 
-    tCoherence tEND
-    { 
-      Coherence_PS();
+Transform :
+    tTranslate VExpr '{' MultipleShape '}'
+    {
+      TranslateShapes ($2[0],$2[1],$2[2],$4,1);
+      $$ = $4;
+    }
+  | tRotate '{' VExpr ',' VExpr ',' FExpr '}' '{' MultipleShape '}'
+    {
+      RotateShapes($3[0],$3[1],$3[2],$5[0],$5[1],$5[2],$7,$10);
+      $$ = $10;
+    }
+  | tSymmetry  VExpr   '{' MultipleShape '}'
+    {
+      SymmetryShapes($2[0],$2[1],$2[2],$2[3],$4,1);
+      $$ = $4;
+    }
+  | tDilate '{' VExpr ',' FExpr '}'  '{' MultipleShape '}'
+    {
+      DilatShapes($3[0],$3[1],$3[2],$5,$8,1);
+      $$ = $8;
     }
 ;
 
-/* ---------------
-    O P T I O N S 
-   --------------- */
-
-Options :
-  /* empty */
-  | Options Option
+MultipleShape : 
+    Duplicata     { $$ = $1; }
+  | ListOfShapes  { $$ = $1; }
+  | Transform     { $$ = $1; }
 ;
 
-Option :
-    Printf 
+ListOfShapes : 
+    /* none */
     {
+      $$ = List_Create(3,3,sizeof(Shape));
+    }   
+  | ListOfShapes Shape
+    {
+      List_Add($$,&$2);
+      $$ = $1;
     }
+;
 
-  /* -------- Strings -------- */ 
+/* -------------------
+    D U P L I C A T A
+   ------------------- */
 
-  | tSTRING '.' tSTRING tAFFECT tBIGSTR tEND 
-    { 
-      if(!(pStrCat = Get_StringOptionCategory($1)))
-	vyyerror("Unknown String Option Class '%s'", $1);
-      else{
-	if(!(pStrOpt = Get_StringOption($3, pStrCat)))
-	  vyyerror("Unknown String Option '%s.%s'", $1, $3);
-	else{
-	  *pStrOpt = $5 ;
-	}
+Duplicata :
+    tDuplicata '{' ListOfShapes '}'
+    {
+      $$ = List_Create(3,3,sizeof(Shape));
+      for(i=0;i<List_Nbr($3);i++){
+	List_Read ($3,i,&TheShape);
+	CopyShape(TheShape.Type,TheShape.Num,&j);
+	TheShape.Num = j;
+	List_Add($$,&TheShape);
       }
     }
+;
 
-  | tSTRING '.' tView '[' FExpr ']' '.' tSTRING tAFFECT tBIGSTR tEND 
+
+/* -------------
+    D E L E T E 
+   ------------- */
+
+Delete :
+    tDelete '{' ListOfShapes '}'
     {
-      if(strcmp($1, "Post"))
-	vyyerror("Unknown View Option Class '%s'", $1);
-      else{
-	if(!(pStrOpt = Get_StringViewOption((int)$5, $8, &i))){
-	  if(i < 0) vyyerror("PostProcessing View %d does not Exist", (int)$5);
-	  else	    vyyerror("Unknown String Option '%s.View[%d].%s'", 
-			     $1, (int)$5, $8);
-	}
-	else{
-	  *pStrOpt = $10 ;
-	}
+      for(i=0;i<List_Nbr($3);i++){
+	List_Read ($3,i,&TheShape);
+	DeleteShape(TheShape.Type,TheShape.Num);
       }
     }
+;
 
-  /* -------- Numbers -------- */ 
 
-  | tSTRING '.' tSTRING tAFFECT FExpr tEND 
+/* -----------
+    M A C R O
+   ----------- */
+
+Macro : 
+    tInclude tBIGSTR tEND
     {
-      if(!(pNumCat = Get_NumberOptionCategory($1)))
-	vyyerror("Unknown Numeric Option Class '%s'", $1);
-      else{
-	if(!(pNumOpt = Get_NumberOption($3, pNumCat, &i)))
-	  vyyerror("Unknown Numeric Option '%s.%s'", $1, $3);
-	else{
-	  switch(i){
-	  case GMSH_DOUBLE : *(double*)pNumOpt = $5 ; break ;
-	  case GMSH_FLOAT : *(float*)pNumOpt = (float)$5 ; break ;
-	  case GMSH_LONG : *(long*)pNumOpt = (long)$5 ; break ;
-	  case GMSH_INT : *(int*)pNumOpt = (int)$5 ; break ;
-	  }
+      yyinTab[RecursionLevel++] = yyin;
+      strcpy(tmpstring, ThePathForIncludes);
+      if((yyin = fopen(strcat(tmpstring,$2),"r"))){
+	strcpy(yynameTab[RecursionLevel-1],yyname);
+	yylinenoTab[RecursionLevel-1]=yylineno;
+	yylineno=1;
+	strcpy(yyname,$2);
+	while(!feof(yyin)){
+	  yyparse();
 	}
+	fclose(yyin);
+	yyin = yyinTab[--RecursionLevel];
+	strcpy(yyname,yynameTab[RecursionLevel]);
+	yylineno = yylinenoTab[RecursionLevel];
       }
-    }
-  | tSTRING '.' tView '[' FExpr ']' '.' tSTRING tAFFECT FExpr tEND 
-    {
-      if(strcmp($1, "Post"))
-	vyyerror("Unknown View Option Class '%s'", $1);
       else{
-	if(!(pNumOpt = Get_NumberViewOption((int)$5, $8, &i))){
-	  if(i < 0) vyyerror("PostProcessing View %d does not Exist", (int)$5);
-	  else	    vyyerror("Unknown Numeric Option '%s.View[%d].%s'", 
-			     $1, (int)$5, $8);
-	}
-	else{
-	  switch(i){
-	  case GMSH_DOUBLE : *(double*)pNumOpt = $10 ; break ;
-	  case GMSH_FLOAT : *(float*)pNumOpt = (float)$10 ; break ;
-	  case GMSH_LONG : *(long*)pNumOpt = (long)$10 ; break ;
-	  case GMSH_INT : *(int*)pNumOpt = (int)$10 ; break ;
-	  }
-	}
+	vyyerror("Unknown File '%s'", $2) ;  
+	yyin = yyinTab[--RecursionLevel];
       }
     }
+;
+/* -----------------
+    C O M M A N D  
+   ----------------- */
+
+Command :
+   tPrintf tBIGSTR tEND
+   {
+     char ext[6];
+     strcpy(ext,$2+(strlen($2)-4));
+     Replot();
+     extern void CreateImage (FILE *fp);
+     FILE *fp = 0;
+     if(!strcmp(ext,".gif"))
+       {
+	 fp = fopen($2,"wb");
+	 CTX.print.type = PRINT_GL2GIF;
+       }
+     else if(!strcmp(ext,".eps"))
+       {
+	 fp = fopen($2,"w");
+	 CTX.print.type =  PRINT_GL2PS_RECURSIVE;
+       } 
+     else if(!strcmp(ext,".xpm"))
+       {
+	 fp = fopen($2,"wb");
+	 CTX.print.type =  PRINT_XDUMP;
+	 CTX.print.format = FORMAT_XPM;
+       } 
+
+     if(fp)
+       {
+	 CreateImage(fp);
+	 fclose(fp);
+       }
+   } 
+   | tExit tEND
+   {
+     exit(0);
+   } 
+   | tMerge tBIGSTR tEND
+   {
+     FILE *ff = yyin;
+     MergeProblem($2);
+     yyin = ff;
+   }
+;
+
+/* ---------------
+    L O O P  
+   --------------- */
+
+Loop :   
+
+  tFor '(' FExpr tDOTS FExpr ')' 
+  {
+    FILE* ff;
+    if(RecursionLevel)
+      ff = yyinTab[RecursionLevel-1];
+    else
+      ff = yyin;
+    // here, we seek remember the position in yyin
+    LoopControlVariablesTab[ImbricatedLoop][0] = (int)$3 ;
+    LoopControlVariablesTab[ImbricatedLoop][1] = (int)$5 ;
+    LoopControlVariablesTab[ImbricatedLoop][2] = 1 ;
+    fgetpos( ff, &yyposImbricatedLoopsTab[ImbricatedLoop++]);
+  }
+  | tFor '(' FExpr tDOTS FExpr tDOTS FExpr ')' 
+  {
+    FILE* ff;
+    if(RecursionLevel)
+      ff = yyinTab[RecursionLevel-1];
+    else
+      ff = yyin;
+    // here, we seek remember the position in yyin
+    LoopControlVariablesTab[ImbricatedLoop][0] = (int)$3 ;
+    LoopControlVariablesTab[ImbricatedLoop][1] = (int)$5 ;
+    LoopControlVariablesTab[ImbricatedLoop][2] = (int)$7 ;
+    fgetpos( ff, &yyposImbricatedLoopsTab[ImbricatedLoop++]);
+  }
+  | tEndFor 
+  {
+    if(LoopControlVariablesTab[ImbricatedLoop-1][1] >  
+       LoopControlVariablesTab[ImbricatedLoop-1][0])
+      {
+	FILE* ff;
+	if(RecursionLevel)
+	  ff = yyinTab[RecursionLevel-1];
+	else
+	  ff = yyin;
+        LoopControlVariablesTab[ImbricatedLoop-1][0] +=
+	  LoopControlVariablesTab[ImbricatedLoop-1][2];
+        fsetpos( yyin, &yyposImbricatedLoopsTab[ImbricatedLoop-1]);
+      }
+    else
+      {
+	ImbricatedLoop--;
+      }
+  }
+
+/* ---------------
+    S C R I P T 
+   --------------- 
+
+Script :
+  tScript '(' FExpr ')' '{' GeomFormatList '}' tEND
+   {
+     // here put something to close the script which 
+     // number is (int) $3
+   }
+;
+*/
 
-  | tSTRING '.' tSTRING tAFFECTPLUS FExpr tEND 
+
+/* ---------------
+    E X T R U D E 
+   --------------- */
+
+Extrude :
+    tExtrude tPoint '{' FExpr ',' VExpr '}' tEND
     {
-      if(!(pNumCat = Get_NumberOptionCategory($1)))
-	vyyerror("Unknown Numeric Option Class '%s'", $1);
-      else{
-	if(!(pNumOpt = Get_NumberOption($3, pNumCat, &i)))
-	  vyyerror("Unknown Numeric Option '%s.%s'", $1, $3);
-	else{
-	  switch(i){
-	  case GMSH_DOUBLE : *(double*)pNumOpt += $5 ; break ;
-	  case GMSH_FLOAT : *(float*)pNumOpt += (float)$5 ; break ;
-	  case GMSH_LONG : *(long*)pNumOpt += (long)$5 ; break ;
-	  case GMSH_INT : *(int*)pNumOpt += (int)$5 ; break ;
-	  }
-	}
-      }
+      Curve *pc, *prc;
+      Extrude_ProtudePoint(1,(int)$4,$6[0],$6[1],$6[2],0.,0.,0.,0.,&pc,&prc,NULL);
     }
-  | tSTRING '.' tView '[' FExpr ']' '.' tSTRING tAFFECTPLUS FExpr tEND 
+  | tExtrude tPoint '{' FExpr ',' VExpr ',' VExpr ',' FExpr '}' tEND
     {
-      if(strcmp($1, "Post"))
-	vyyerror("Unknown View Option Class '%s'", $1);
-      else{
-	if(!(pNumOpt = Get_NumberViewOption((int)$5, $8, &i))){
-	  if(i < 0) vyyerror("PostProcessing View %d does not Exist", (int)$5);
-	  else	    vyyerror("Unknown Numeric Option '%s.View[%d].%s'", 
-			     $1, (int)$5, $8);
-	}
-	else{
-	  switch(i){
-	  case GMSH_DOUBLE : *(double*)pNumOpt += $10 ; break ;
-	  case GMSH_FLOAT : *(float*)pNumOpt += (float)$10 ; break ;
-	  case GMSH_LONG : *(long*)pNumOpt += (long)$10 ; break ;
-	  case GMSH_INT : *(int*)pNumOpt += (int)$10 ; break ;
-	  }
-	}
-      }
+      Curve *pc, *prc;
+      Extrude_ProtudePoint(0,(int)$4,$6[0],$6[1],$6[2],$8[0],$8[1],$8[2],$10,
+			   &pc,&prc,NULL);
     }
-
-  | tSTRING '.' tSTRING tAFFECTMINUS FExpr tEND 
+  | tExtrude tLine'{' FExpr ',' VExpr '}' tEND
     {
-      if(!(pNumCat = Get_NumberOptionCategory($1)))
-	vyyerror("Unknown Numeric Option Class '%s'", $1);
-      else{
-	if(!(pNumOpt = Get_NumberOption($3, pNumCat, &i)))
-	  vyyerror("Unknown Numeric Option '%s.%s'", $1, $3);
-	else{
-	  switch(i){
-	  case GMSH_DOUBLE : *(double*)pNumOpt -= $5 ; break ;
-	  case GMSH_FLOAT : *(float*)pNumOpt -= (float)$5 ; break ;
-	  case GMSH_LONG : *(long*)pNumOpt -= (long)$5 ; break ;
-	  case GMSH_INT : *(int*)pNumOpt -= (int)$5 ; break ;
-	  }
-	}
-      }
+      Extrude_ProtudeCurve(1,(int)$4,$6[0],$6[1],$6[2],0.,0.,0.,0.,NULL);
     }
-  | tSTRING '.' tView '[' FExpr ']' '.' tSTRING tAFFECTMINUS FExpr tEND 
+  | tExtrude tLine'{' FExpr ',' VExpr ',' VExpr ',' FExpr '}' tEND
     {
-      if(strcmp($1, "Post"))
-	vyyerror("Unknown View Option Class '%s'", $1);
-      else{
-	if(!(pNumOpt = Get_NumberViewOption((int)$5, $8, &i))){
-	  if(i < 0) vyyerror("PostProcessing View %d does not Exist", (int)$5);
-	  else	    vyyerror("Unknown Numeric Option '%s.View[%d].%s'", 
-			     $1, (int)$5, $8);
-	}
-	else{
-	  switch(i){
-	  case GMSH_DOUBLE : *(double*)pNumOpt -= $10 ; break ;
-	  case GMSH_FLOAT : *(float*)pNumOpt -= (float)$10 ; break ;
-	  case GMSH_LONG : *(long*)pNumOpt -= (long)$10 ; break ;
-	  case GMSH_INT : *(int*)pNumOpt -= (int)$10 ; break ;
-	  }
-	}
-      }
+      Extrude_ProtudeCurve(0,(int)$4,$6[0],$6[1],$6[2],$8[0],$8[1],$8[2],$10,NULL);
     }
-
-  | tSTRING '.' tSTRING tAFFECTTIMES FExpr tEND 
+  |  tExtrude tSurface '{' FExpr ',' VExpr '}' tEND
     {
-      if(!(pNumCat = Get_NumberOptionCategory($1)))
-	vyyerror("Unknown Numeric Option Class '%s'", $1);
-      else{
-	if(!(pNumOpt = Get_NumberOption($3, pNumCat, &i)))
-	  vyyerror("Unknown Numeric Option '%s.%s'", $1, $3);
-	else{
-	  switch(i){
-	  case GMSH_DOUBLE : *(double*)pNumOpt *= $5 ; break ;
-	  case GMSH_FLOAT : *(float*)pNumOpt *= (float)$5 ; break ;
-	  case GMSH_LONG : *(long*)pNumOpt *= (long)$5 ; break ;
-	  case GMSH_INT : *(int*)pNumOpt *= (int)$5 ; break ;
-	  }
-	}
-      }
+      Extrude_ProtudeSurface(1,(int)$4,$6[0],$6[1],$6[2],0.,0.,0.,0.,0,NULL);
     }
-  | tSTRING '.' tView '[' FExpr ']' '.' tSTRING tAFFECTTIMES FExpr tEND 
+  | tExtrude tSurface '{' FExpr ',' VExpr ',' VExpr ',' FExpr '}' tEND
     {
-      if(strcmp($1, "Post"))
-	vyyerror("Unknown View Option Class '%s'", $1);
-      else{
-	if(!(pNumOpt = Get_NumberViewOption((int)$5, $8, &i))){
-	  if(i < 0) vyyerror("PostProcessing View %d does not Exist", (int)$5);
-	  else	    vyyerror("Unknown Numeric Option '%s.View[%d].%s'", 
-			     $1, (int)$5, $8);
-	}
-	else{
-	  switch(i){
-	  case GMSH_DOUBLE : *(double*)pNumOpt *= $10 ; break ;
-	  case GMSH_FLOAT : *(float*)pNumOpt *= (float)$10 ; break ;
-	  case GMSH_LONG : *(long*)pNumOpt *= (long)$10 ; break ;
-	  case GMSH_INT : *(int*)pNumOpt *= (int)$10 ; break ;
-	  }
-	}
-      }
+      Extrude_ProtudeSurface(0,(int)$4,$6[0],$6[1],$6[2],$8[0],$8[1],$8[2],$10,0,NULL);
     }
+  | tExtrude tSurface '{' FExpr ',' VExpr '}' '{' ExtrudeParameters '}' tEND
+  {
+    int vol = NEWREG();
+    Extrude_ProtudeSurface(1,(int)$4,$6[0],$6[1],$6[2],0.,0.,0.,0.,vol,&extr);
+  }
+  | tExtrude tSurface '{' FExpr ',' VExpr ',' VExpr ',' FExpr '}' '{' ExtrudeParameters '}'tEND
+  {
+    int vol = NEWREG();
+    Extrude_ProtudeSurface(0,(int)$4,$6[0],$6[1],$6[2],$8[0],$8[1],$8[2],$10,vol,&extr);
+  }
+;
 
-  | tSTRING '.' tSTRING tAFFECTDIVIDE FExpr tEND 
+ExtrudeParameters :
+    ExtrudeParameter
     {
-      if(!(pNumCat = Get_NumberOptionCategory($1)))
-	vyyerror("Unknown Numeric Option Class '%s'", $1);
-      else{
-	if(!(pNumOpt = Get_NumberOption($3, pNumCat, &i)))
-	  vyyerror("Unknown Numeric Option '%s.%s'", $1, $3);
-	else{
-	  switch(i){
-	  case GMSH_DOUBLE : *(double*)pNumOpt /= $5 ; break ;
-	  case GMSH_FLOAT : *(float*)pNumOpt /= (float)$5 ; break ;
-	  case GMSH_LONG : *(long*)pNumOpt /= (long)$5 ; break ;
-	  case GMSH_INT : *(int*)pNumOpt /= (int)$5 ; break ;
-	  }
-	}
-      }
     }
-  | tSTRING '.' tView '[' FExpr ']' '.' tSTRING tAFFECTDIVIDE FExpr tEND 
+  | ExtrudeParameters ExtrudeParameter
     {
-      if(strcmp($1, "Post"))
-	vyyerror("Unknown View Option Class '%s'", $1);
-      else{
-	if(!(pNumOpt = Get_NumberViewOption((int)$5, $8, &i))){
-	  if(i < 0) vyyerror("PostProcessing View %d does not Exist", (int)$5);
-	  else	    vyyerror("Unknown Numeric Option '%s.View[%d].%s'", 
-			     $1, (int)$5, $8);
-	}
-	else{
-	  switch(i){
-	  case GMSH_DOUBLE : *(double*)pNumOpt /= $10 ; break ;
-	  case GMSH_FLOAT : *(float*)pNumOpt /= (float)$10 ; break ;
-	  case GMSH_LONG : *(long*)pNumOpt /= (long)$10 ; break ;
-	  case GMSH_INT : *(int*)pNumOpt /= (int)$10 ; break ;
-	  }
-	}
-      }
     }
+;
 
-  | tSTRING '.' tSTRING tPLUSPLUS tEND 
+ExtrudeParameter :
+    tLayers '{' ListOfDouble ',' ListOfDouble ',' ListOfDouble '}' tEND
     {
-      if(!(pNumCat = Get_NumberOptionCategory($1)))
-	vyyerror("Unknown Numeric Option Class '%s'", $1);
-      else{
-	if(!(pNumOpt = Get_NumberOption($3, pNumCat, &i)))
-	  vyyerror("Unknown Numeric Option '%s.%s'", $1, $3);
-	else{
-	  switch(i){
-	  case GMSH_DOUBLE : *(double*)pNumOpt += 1. ; break ;
-	  case GMSH_FLOAT : *(float*)pNumOpt += 1. ; break ;
-	  case GMSH_LONG : *(long*)pNumOpt += 1 ; break ;
-	  case GMSH_INT : *(int*)pNumOpt += 1 ; break ;
-	  }
-	}
+      double d;
+      int j;
+      extr.mesh.NbLayer = List_Nbr($3);
+      extr.mesh.ExtrudeMesh = true;
+      for(int i=0;i<List_Nbr($3);i++){
+	List_Read($3,i,&d);
+	j = (int)d;
+	extr.mesh.NbElmLayer[i] = j;
+	List_Read($5,i,&d);
+	j = (int)d;
+	extr.mesh.ZonLayer[i] = j;
+	List_Read($7,i,&d);
+	extr.mesh.hLayer[i] = d;
       }
     }
-  | tSTRING '.' tView '[' FExpr ']' '.' tSTRING tPLUSPLUS FExpr tEND 
+  | tRecombine tEND
     {
-      if(strcmp($1, "Post"))
-	vyyerror("Unknown View Option Class '%s'", $1);
-      else{
-	if(!(pNumOpt = Get_NumberViewOption((int)$5, $8, &i))){
-	  if(i < 0) vyyerror("PostProcessing View %d does not Exist", (int)$5);
-	  else	    vyyerror("Unknown Numeric Option '%s.View[%d].%s'", 
-			     $1, (int)$5, $8);
-	}
-	else{
-	  switch(i){
-	  case GMSH_DOUBLE : *(double*)pNumOpt += 1. ; break ;
-	  case GMSH_FLOAT : *(float*)pNumOpt += 1. ; break ;
-	  case GMSH_LONG : *(long*)pNumOpt += 1 ; break ;
-	  case GMSH_INT : *(int*)pNumOpt += 1 ; break ;
-	  }
-	}
-      }
+      extr.mesh.Recombine = true;
     }
+;
 
-  | tSTRING '.' tSTRING tMINUSMINUS tEND 
-    {
-      if(!(pNumCat = Get_NumberOptionCategory($1)))
-	vyyerror("Unknown Numeric Option Class '%s'", $1);
-      else{
-	if(!(pNumOpt = Get_NumberOption($3, pNumCat, &i)))
-	  vyyerror("Unknown Numeric Option '%s.%s'", $1, $3);
-	else{
-	  switch(i){
-	  case GMSH_DOUBLE : *(double*)pNumOpt -= 1. ; break ;
-	  case GMSH_FLOAT : *(float*)pNumOpt -= 1. ; break ;
-	  case GMSH_LONG : *(long*)pNumOpt -= 1 ; break ;
-	  case GMSH_INT : *(int*)pNumOpt -= 1 ; break ;
-	  }
-	}
-      }
-    }
-  | tSTRING '.' tView '[' FExpr ']' '.' tSTRING tMINUSMINUS FExpr tEND 
+/* -------------------
+    T R A N S F I N I
+   ------------------- */
+
+Transfini : 
+    tTransfinite tLine ListOfDouble tAFFECT FExpr tEND
     {
-      if(strcmp($1, "Post"))
-	vyyerror("Unknown View Option Class '%s'", $1);
-      else{
-	if(!(pNumOpt = Get_NumberViewOption((int)$5, $8, &i))){
-	  if(i < 0) vyyerror("PostProcessing View %d does not Exist", (int)$5);
-	  else	    vyyerror("Unknown Numeric Option '%s.View[%d].%s'", 
-			     $1, (int)$5, $8);
-	}
+      Curve *c;
+      for(i=0;i<List_Nbr($3);i++){
+	List_Read($3,i,&d);
+	j = (int)fabs(d);
+        c = FindCurve(j,THEM);
+	if(!c)
+	  vyyerror("Unkown Curve %d", j);
 	else{
-	  switch(i){
-	  case GMSH_DOUBLE : *(double*)pNumOpt -= 1. ; break ;
-	  case GMSH_FLOAT : *(float*)pNumOpt -= 1. ; break ;
-	  case GMSH_LONG : *(long*)pNumOpt -= 1 ; break ;
-	  case GMSH_INT : *(int*)pNumOpt -= 1 ; break ;
-	  }
+	  c->Method = TRANSFINI;
+	  c->ipar[0] = (int)$5;
+	  c->ipar[1] = sign(d);
+	  c->dpar[0] = 1.0;
 	}
       }
     }
-
-  /* -------- Arrays -------- */ 
-
-  | tSTRING '.' tSTRING tAFFECT VExpr tEND 
+  | tTransfinite tLine ListOfDouble tAFFECT FExpr tUsing tProgression FExpr tEND
     {
-      if(!(pArrCat = Get_ArrayOptionCategory($1)))
-	vyyerror("Unknown Array Option Class '%s'", $1);
-      else{
-	if(!(pArrOpt = Get_ArrayOption($3, pArrCat, &i)))
-	  vyyerror("Unknown Array Option '%s.%s'", $1, $3);
+      Curve *c;
+      for(i=0;i<List_Nbr($3);i++){
+	List_Read($3,i,&d);
+	j = (int)fabs(d);
+        c = FindCurve(j,THEM);
+	if(!c)
+	  vyyerror("Unkown Curve %d", j);
 	else{
-	  switch(i){
-	  case GMSH_DOUBLE :
-	    for(j=0 ; j<4; j++) ((double*)pArrOpt)[j] = $5[j] ;
-	    break ;
-	  case GMSH_FLOAT :
-	    for(j=0 ; j<4; j++) ((float*)pArrOpt)[j] = (float)$5[j] ;
-	    break ;
-	  case GMSH_LONG :
-	    for(j=0 ; j<4; j++) ((long*)pArrOpt)[j] = (long)$5[j] ;
-	    break ;
-	  case GMSH_INT :
-	    for(j=0 ; j<4; j++) ((int*)pArrOpt)[j] = (int)$5[j] ;
-	    break ;
-	  }
+	  c->Method = TRANSFINI;
+	  c->ipar[0] = (int)$5;
+	  c->ipar[1] = sign(d); /* Progresion : code 1 ou -1 */
+	  c->dpar[0] = fabs($8);
 	}
       }
     }
-  | tSTRING '.' tView '[' FExpr ']' '.' tSTRING tAFFECT VExpr tEND 
+  | tTransfinite tLine ListOfDouble tAFFECT FExpr tUsing tBump FExpr tEND
     {
-      if(strcmp($1, "Post"))
-	vyyerror("Unknown View Option Class '%s'", $1);
-      else{
-	if(!(pArrOpt = Get_ArrayViewOption((int)$5, $8, &i))){
-	  if(i < 0) vyyerror("PostProcessing View %d does not Exist", (int)$5);
-	  else	    vyyerror("Unknown Array Option '%s.View[%d].%s'", 
-			     $1, (int)$5, $8);
-	}
+      Curve *c;
+      for(i=0;i<List_Nbr($3);i++){
+	List_Read($3,i,&d);
+	j = (int)fabs(d);
+        c = FindCurve(j,THEM);
+	if(!c)
+	  vyyerror("Unkown Curve %d", j);
 	else{
-	  switch(i){
-	  case GMSH_DOUBLE :
-	    for(j=0 ; j<3; j++) ((double*)pArrOpt)[j] = $10[j] ;
-	    break ;
-	  case GMSH_FLOAT :
-	    for(j=0 ; j<3; j++) ((float*)pArrOpt)[j] = (float)$10[j] ;
-	    break ;
-	  case GMSH_LONG :
-	    for(j=0 ; j<3; j++) ((long*)pArrOpt)[j] = (long)$10[j] ;
-	    break ;
-	  case GMSH_INT :
-	    for(j=0 ; j<3; j++) ((int*)pArrOpt)[j] = (int)$10[j] ;
-	    break ;
-	  }
+	  c->Method = TRANSFINI;
+	  c->ipar[0] = (int)$5;
+	  c->ipar[1] = 2*sign(d); /* Bump : code 2 ou -2 */
+	  c->dpar[0] = fabs($8);
 	}
       }
     }
-
-  | tSTRING '.' tSTRING tAFFECTPLUS VExpr tEND 
+  | tTransfinite tSurface '{' FExpr '}' tAFFECT ListOfDouble tEND
     {
-      if(!(pArrCat = Get_ArrayOptionCategory($1)))
-	vyyerror("Unknown Array Option Class '%s'", $1);
+      Surface *s = FindSurface((int)$4,THEM);
+      if(!s)
+	vyyerror("Unkown Surface %d", (int)$4);
       else{
-	if(!(pArrOpt = Get_ArrayOption($3, pArrCat, &i)))
-	  vyyerror("Unknown Array Option '%s.%s'", $1, $3);
+	s->Method = TRANSFINI;
+	k = List_Nbr($7);
+	if(k!=3 && k!=4){
+	  vyyerror("Wrong Definition of Transfinite Surface %d: "
+		   "%d Points Instead of 3 or 4" , $4, k) ;
+	}
 	else{
-	  switch(i){
-	  case GMSH_DOUBLE :
-	    for(j=0 ; j<4; j++) ((double*)pArrOpt)[j] += $5[j] ;
-	    break ;
-	  case GMSH_FLOAT :
-	    for(j=0 ; j<4; j++) ((float*)pArrOpt)[j] += (float)$5[j] ;
-	    break ;
-	  case GMSH_LONG :
-	    for(j=0 ; j<4; j++) ((long*)pArrOpt)[j] += (long)$5[j] ;
-	    break ;
-	  case GMSH_INT :
-	    for(j=0 ; j<4; j++) ((int*)pArrOpt)[j] += (int)$5[j] ;
-	    break ;
+	  for(i=0;i<k;i++){
+	    List_Read($7,i,&d);
+	    j = (int)fabs(d);
+	    s->ipar[i] = j;
 	  }
 	}
       }
     }
-  | tSTRING '.' tView '[' FExpr ']' '.' tSTRING tAFFECTPLUS VExpr tEND 
+  | tElliptic tSurface '{' FExpr '}' tAFFECT ListOfDouble tEND
     {
-      if(strcmp($1, "Post"))
-	vyyerror("Unknown View Option Class '%s'", $1);
+      Surface *s = FindSurface((int)$4,THEM);
+      if(!s)
+	vyyerror("Unkown Surface %d", (int)$4);
       else{
-	if(!(pArrOpt = Get_ArrayViewOption((int)$5, $8, &i))){
-	  if(i < 0) vyyerror("PostProcessing View %d does not Exist", (int)$5);
-	  else	    vyyerror("Unknown Array Option '%s.View[%d].%s'", 
-			     $1, (int)$5, $8);
-	}
-	else{
-	  switch(i){
-	  case GMSH_DOUBLE :
-	    for(j=0 ; j<3; j++) ((double*)pArrOpt)[j] += $10[j] ;
-	    break ;
-	  case GMSH_FLOAT :
-	    for(j=0 ; j<3; j++) ((float*)pArrOpt)[j] += (float)$10[j] ;
-	    break ;
-	  case GMSH_LONG :
-	    for(j=0 ; j<3; j++) ((long*)pArrOpt)[j] += (long)$10[j] ;
-	    break ;
-	  case GMSH_INT :
-	    for(j=0 ; j<3; j++) ((int*)pArrOpt)[j] += (int)$10[j] ;
-	    break ;
+        s->Method = ELLIPTIC;
+        k = List_Nbr($7);
+        if(k != 4)
+	  vyyerror("Wrong Definition of Elliptic Surface %d: "
+		   "%d Points Instead of 4" , $4, k) ;
+        else{
+	  for(i=0;i<k;i++){
+	    List_Read($7,i,&d);
+	    j = (int)fabs(d);
+	    s->ipar[i] = j;
 	  }
 	}
       }
     }
-
-  | tSTRING '.' tSTRING tAFFECTMINUS VExpr tEND 
+  | tTransfinite tVolume '{' FExpr '}' tAFFECT ListOfDouble tEND
     {
-      if(!(pArrCat = Get_ArrayOptionCategory($1)))
-	vyyerror("Unknown Array Option Class '%s'", $1);
+      Volume *v = FindVolume((int)$4,THEM);
+      if(!v)
+	vyyerror("Unkown Volume %d", (int)$4);
       else{
-	if(!(pArrOpt = Get_ArrayOption($3, pArrCat, &i)))
-	  vyyerror("Unknown Array Option '%s.%s'", $1, $3);
+	v->Method = TRANSFINI;
+	k = List_Nbr($7);
+	if(k!=6 && k!=8)
+	  vyyerror("Wrong Definition of Transfinite Volume %d: "
+		   "%d Points Instead of 6 or 8" , $4, k) ;
 	else{
-	  switch(i){
-	  case GMSH_DOUBLE :
-	    for(j=0 ; j<4; j++) ((double*)pArrOpt)[j] -= $5[j] ;
-	    break ;
-	  case GMSH_FLOAT :
-	    for(j=0 ; j<4; j++) ((float*)pArrOpt)[j] -= (float)$5[j] ;
-	    break ;
-	  case GMSH_LONG :
-	    for(j=0 ; j<4; j++) ((long*)pArrOpt)[j] -= (long)$5[j] ;
-	    break ;
-	  case GMSH_INT :
-	    for(j=0 ; j<4; j++) ((int*)pArrOpt)[j] -= (int)$5[j] ;
-	    break ;
+	  for(i=0;i<k;i++){
+	    List_Read($7,i,&d);
+	    j = (int)fabs(d);
+	    v->ipar[i] = j;
 	  }
 	}
       }
     }
-  | tSTRING '.' tView '[' FExpr ']' '.' tSTRING tAFFECTMINUS VExpr tEND 
+  | tRecombine tSurface ListOfDouble tAFFECT FExpr tEND
     {
-      if(strcmp($1, "Post"))
-	vyyerror("Unknown View Option Class '%s'", $1);
-      else{
-	if(!(pArrOpt = Get_ArrayViewOption((int)$5, $8, &i))){
-	  if(i < 0) vyyerror("PostProcessing View %d does not Exist", (int)$5);
-	  else	    vyyerror("Unknown Array Option '%s.View[%d].%s'", 
-			     $1, (int)$5, $8);
+      Surface *s;
+      for(i=0;i<List_Nbr($3);i++){
+	List_Read($3,i,&d);
+	j = (int)d;
+	s = FindSurface(j,THEM);
+	if(!s){
+	  /* Allow generic lists, even if the surfaces don't exist
+	     vyyerror("Unkown Surface %d", j); */
 	}
 	else{
-	  switch(i){
-	  case GMSH_DOUBLE :
-	    for(j=0 ; j<3; j++) ((double*)pArrOpt)[j] -= $10[j] ;
-	    break ;
-	  case GMSH_FLOAT :
-	    for(j=0 ; j<3; j++) ((float*)pArrOpt)[j] -= (float)$10[j] ;
-	    break ;
-	  case GMSH_LONG :
-	    for(j=0 ; j<3; j++) ((long*)pArrOpt)[j] -= (long)$10[j] ;
-	    break ;
-	  case GMSH_INT :
-	    for(j=0 ; j<3; j++) ((int*)pArrOpt)[j] -= (int)$10[j] ;
-	    break ;
-	  }
+	  s->Recombine = 1;
+	  s->RecombineAngle = $5;
 	}
       }
     }
-
-  /* -------- Colors -------- */ 
-
-  | tSTRING '.' tColor '.' tSTRING tAFFECT Color tEND 
+  | tRecombine tSurface ListOfDouble tEND
     {
-      if(!(pColCat = Get_ColorOptionCategory($1)))
-	vyyerror("Unknown Color Option Class '%s'", $1);
-      else{
-	if(!(pColOpt = Get_ColorOption($5, pColCat)))
-	  vyyerror("Unknown Color Option '%s.%s'", $1, $5);
-	else{
-	  *pColOpt = $7 ;
+      Surface *s;
+      for(i=0;i<List_Nbr($3);i++){
+	List_Read($3,i,&d);
+	j = (int)d;
+        s = FindSurface(j,THEM);
+	if(!s){
+	  /* Allow generic lists, even if the surfaces don't exist
+	     vyyerror("Unkown Surface %d", j); */
 	}
+	else{
+	  s->Recombine = 1;
+	  s->RecombineAngle = 30.;
+        }
       }
-    }
-
+    }  
 ;
 
-/* ---------------
-    S C R I P T S 
-   --------------- */
 
-Scripts :
-  /* empty */
-  | Scripts Script
-;
+/* -------------------
+    C O H E R E N C E
+   ------------------- */
 
-Script :
-    Option 
-/*
-  | Action
-  | Loop
-  | Test
-*/
+Coherence : 
+    tCoherence tEND
+    { 
+      Coherence_PS();
+    }
 ;
 
 
diff --git a/Parser/Gmsh.yy.cpp b/Parser/Gmsh.yy.cpp
index 497f52a469fed6e81eb6372a31707ed09b9e34c0..b88c05f4d035fdd3cb054efbc758d3d04067cab2 100644
--- a/Parser/Gmsh.yy.cpp
+++ b/Parser/Gmsh.yy.cpp
@@ -2,7 +2,7 @@
 /* A lexical scanner generated by flex */
 
 /* Scanner skeleton version:
- * $Header: /cvsroot/gmsh/Parser/Gmsh.yy.cpp,v 1.23 2000-12-07 01:14:30 geuzaine Exp $
+ * $Header: /cvsroot/gmsh/Parser/Gmsh.yy.cpp,v 1.24 2000-12-07 08:46:27 geuzaine Exp $
  */
 
 #define FLEX_SCANNER
@@ -283,116 +283,115 @@ static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
 	*yy_cp = '\0'; \
 	yy_c_buf_p = yy_cp;
 
-#define YY_NUM_RULES 175
-#define YY_END_OF_BUFFER 176
-static yyconst short int yy_accept[965] =
+#define YY_NUM_RULES 174
+#define YY_END_OF_BUFFER 175
+static yyconst short int yy_accept[959] =
     {   0,
-        0,    0,  176,  174,    1,    1,  174,    5,  168,  174,
-        6,  174,  174,  174,  174,  174,  169,   14,    2,  174,
-        9,  174,  173,  173,  173,  173,  173,  173,  173,  173,
-      173,  173,  173,  173,  173,  173,  173,  173,  173,  173,
-      173,  173,  173,  173,  173,  173,  173,  173,  173,  173,
-      173,  174,  174,    0,    0,   22,  168,   18,   12,   19,
-       10,   20,   11,    0,  171,    0,    0,    0,    0,    3,
-        4,   13,   16,  170,  169,    0,   24,   21,   25,  173,
-      173,  173,  173,  173,  173,  173,  173,  173,  173,  173,
-      173,  173,  173,  173,  173,  173,  173,  173,  173,  173,
-
-      173,  173,  173,  173,  173,  173,  173,  173,  173,  173,
-      173,  173,  173,  173,  173,  173,  173,  173,  173,  173,
-      173,  173,  173,  173,  173,  173,  173,  173,  173,  173,
-      173,  173,  173,  173,  173,  173,  173,  173,  173,  173,
-      173,   72,  173,  173,  173,  173,  173,  173,  173,  110,
-      113,  104,  107,  173,  173,  173,  173,  173,  173,  173,
-      112,  173,  115,  173,  106,  109,  173,  173,  173,  173,
-      111,  114,  105,  108,  173,  173,  173,  173,  173,  173,
-      173,  173,  173,  173,  173,   17,   23,    0,    0,   15,
-        0,  121,  122,  123,  124,  170,    0,    0,  172,  173,
-
-      173,  173,  173,  173,  173,  173,  173,  173,  173,  173,
-      173,  173,  173,  173,  173,  173,  173,  173,  173,  173,
-      173,  173,  173,  173,  173,   40,  173,  173,  173,  173,
-      173,  173,  173,  173,  173,  173,  173,   50,  173,  173,
-      173,  173,  173,  173,   99,  173,  173,  173,  173,  173,
-      173,  173,  173,  173,  173,   64,  173,  173,  173,  173,
-      173,  173,  173,  173,  173,  173,  173,  173,  173,  173,
-      173,  173,  173,  173,  173,  173,  173,  173,  173,   83,
-      173,  173,  173,  173,  173,  173,   93,  173,  173,  173,
-      173,  173,  173,  173,  173,  173,  173,  173,  173,  173,
-
-      173,  173,  173,    0,    0,    0,  171,    0,    0,  170,
-      173,   26,  173,  173,  173,  173,  173,  173,   28,   30,
-      173,  173,  173,  173,   35,  173,  173,  173,  173,  173,
-      173,  173,   38,  173,  173,  173,  173,  173,   39,  138,
-      173,  173,  173,  173,  173,  173,    0,  173,  173,  173,
-      102,  173,  173,  173,   55,  173,   57,  173,  173,  173,
-        0,  173,  173,  132,  173,  173,   62,  173,   63,  173,
-      173,  173,  173,  173,  173,  173,  173,  173,  173,  173,
-      173,  173,  173,  173,  173,  173,  173,  173,  173,   85,
-      173,   84,  173,   82,  173,  173,  173,  173,   92,  173,
-
-      173,  173,  173,  173,   96,  173,   98,  173,  173,  173,
-      173,  163,    8,  173,  173,  173,  173,  173,    0,    0,
-        0,  170,  173,  173,  173,  173,  173,  173,  173,   32,
-      173,  173,  173,  173,  173,  173,  173,  173,  173,  173,
-      173,  173,  173,  173,   45,  173,  173,  173,  173,  173,
-      173,  173,    0,  173,  173,  173,  173,  173,  173,   56,
-      173,  173,   58,    0,  173,   60,  173,  173,   65,  173,
-      103,  173,   68,  173,  173,   69,  136,  173,  173,  173,
-       73,   74,   75,  173,  173,  173,  173,   81,  173,  173,
-      173,  173,  173,  173,  173,  173,  173,   95,  173,  173,
-
-      173,  173,  173,  173,  160,  173,  173,  162,  167,  173,
-        0,    0,  173,  173,  173,  173,   27,   29,   31,  173,
-      173,  173,   37,  173,  151,  173,  173,  173,  173,  173,
-      173,   42,  173,  173,  173,   47,   48,  173,  173,  173,
-      173,    0,  144,  173,  173,  100,  173,  173,  173,  173,
-      173,  173,  173,  137,    0,  173,   66,   61,  173,   67,
-      173,  173,  173,  173,  173,   78,  173,  173,   80,  173,
-       89,   86,  173,  173,  173,  173,  173,  173,  173,  133,
-      173,   97,  173,  173,  173,    7,  161,  159,    0,    0,
-      173,  173,  173,  173,   33,  173,   36,  173,  173,  173,
-
-      173,  173,  173,  173,  173,  173,   44,  173,  173,  173,
-      173,   54,    0,  173,  173,   52,  173,  173,  173,  173,
-      173,  173,    0,   59,  173,  173,   70,  173,  173,  173,
-      173,  173,  173,   87,  173,  173,  173,  173,  173,   94,
-      173,  173,  164,  173,    0,    0,  173,  173,  173,  173,
-      173,  173,  173,  173,  173,  173,  173,  173,  173,  173,
-      173,  173,  173,  173,    0,   51,   53,  173,  173,  173,
-      173,  173,  173,    0,  173,  173,  173,  173,   71,  173,
-      173,  173,   88,  173,  173,  173,  173,  173,  165,  166,
-        0,    0,  173,  173,  173,  173,   34,  173,  173,  173,
-
-      173,  173,  173,  173,  173,   43,  134,   49,  173,  127,
-        0,  173,  173,  173,  140,  173,  173,    0,  173,  173,
-      173,  173,  173,   79,  173,  173,  173,  173,   91,  173,
-        0,    0,  173,  173,  173,  173,  173,  173,  173,  173,
-      173,  173,  173,  173,   46,  173,  126,    0,  130,  173,
-      173,  173,  173,    0,  173,  173,  173,   77,  173,  173,
-      173,  173,  173,  173,    0,    0,  173,  173,  173,  173,
-      173,  173,  173,  173,  173,  173,  173,  173,  173,    0,
-      173,  173,  139,  173,    0,  173,  173,  173,   76,  173,
-      173,  173,   90,  173,  120,    0,  120,  173,  173,  173,
-
-      173,  173,  173,  173,  145,  173,  173,  173,  173,    0,
-      173,  173,  173,  142,  173,  173,  173,  173,  173,  173,
-      128,  119,  173,  131,  119,  173,  173,  173,  173,  173,
-      173,  173,  173,    0,  173,  173,  153,  173,  125,  173,
-      173,  173,  152,  173,  173,  173,  173,  173,  173,  173,
-      173,   41,    0,  173,  173,  173,  173,  173,  173,  173,
-      173,  173,  173,  116,  155,  149,  173,    0,  173,  173,
-      173,  173,  173,  173,  173,  173,  173,  173,  173,  173,
-      143,  129,  141,  173,  173,  173,  150,  173,  173,  173,
-      173,  173,  173,  173,  173,  173,  173,  135,  173,  173,
-
-      173,  173,  173,  156,  173,  173,  173,  173,  173,  148,
-      147,  173,  173,  173,  173,  173,  173,  173,  173,  173,
-      173,  173,  173,  173,  173,  173,  173,  173,  173,  173,
-      173,  173,  173,  173,  154,  173,  173,  173,  173,  173,
-      157,  173,  173,  118,  173,  173,  173,  173,  173,  173,
-      117,  173,  173,  173,  173,  173,  173,  173,  173,  158,
-      173,  173,  146,    0
+        0,    0,  175,  173,    1,    1,  173,    5,  167,  173,
+        6,  173,  173,  173,  173,  173,  168,   14,    2,  173,
+        9,  173,  172,  172,  172,  172,  172,  172,  172,  172,
+      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
+      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
+      172,  173,  173,    0,    0,   22,  167,   18,   12,   19,
+       10,   20,   11,    0,  170,    0,    0,    0,    0,    3,
+        4,   13,   16,  169,  168,    0,   24,   21,   25,  172,
+      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
+      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
+
+      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
+      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
+      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
+      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
+       71,  172,  172,  172,  172,  172,  172,  172,  109,  112,
+      103,  106,  172,  172,  172,  172,  172,  172,  172,  111,
+      172,  114,  172,  105,  108,  172,  172,  172,  172,  110,
+      113,  104,  107,  172,  172,  172,  172,  172,  172,  172,
+      172,  172,  172,  172,   17,   23,    0,    0,   15,    0,
+      120,  121,  122,  123,  169,    0,    0,  171,  172,  172,
+
+      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
+      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
+      172,  172,  172,  172,   40,  172,  172,  172,  172,  172,
+      172,  172,  172,  172,  172,  172,   50,  172,  172,  172,
+      172,  172,  172,   98,  172,  172,  172,  172,  172,  172,
+      172,  172,  172,  172,   64,  172,  172,  172,  172,  172,
+      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
+      172,  172,  172,  172,  172,  172,  172,   82,  172,  172,
+      172,  172,  172,  172,   92,  172,  172,  172,  172,  172,
+      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
+
+      172,    0,    0,    0,  170,    0,    0,  169,  172,   26,
+      172,  172,  172,  172,  172,  172,   28,   30,  172,  172,
+      172,  172,   35,  172,  172,  172,  172,  172,  172,  172,
+       38,  172,  172,  172,  172,  172,   39,  137,  172,  172,
+      172,  172,  172,  172,    0,  172,  172,  172,  101,  172,
+      172,  172,   55,  172,   57,  172,  172,  172,    0,  172,
+      172,  131,  172,  172,   62,  172,   63,  172,  172,  172,
+      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
+      172,  172,  172,  172,  172,  172,   84,  172,   83,  172,
+       81,  172,  172,  172,  172,   91,  172,  172,  172,  172,
+
+      172,   95,  172,   97,  172,  172,  172,  172,  162,    8,
+      172,  172,  172,  172,  172,    0,    0,    0,  169,  172,
+      172,  172,  172,  172,  172,  172,   32,  172,  172,  172,
+      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
+      172,   45,  172,  172,  172,  172,  172,  172,  172,    0,
+      172,  172,  172,  172,  172,  172,   56,  172,  172,   58,
+        0,  172,   60,  172,  172,   65,  172,  102,  172,   68,
+      172,   69,  135,  172,  172,  172,   72,   73,   74,  172,
+      172,  172,  172,   80,  172,  172,  172,  172,  172,  172,
+      172,  172,  172,   94,  172,  172,  172,  172,  172,  172,
+
+      159,  172,  172,  161,  166,  172,    0,    0,  172,  172,
+      172,  172,   27,   29,   31,  172,  172,  172,   37,  172,
+      150,  172,  172,  172,  172,  172,  172,   42,  172,  172,
+      172,   47,   48,  172,  172,  172,  172,    0,  143,  172,
+      172,   99,  172,  172,  172,  172,  172,  172,  172,  136,
+        0,  172,   66,   61,  172,   67,  172,  172,  172,  172,
+       77,  172,  172,   79,  172,   88,   85,  172,  172,  172,
+      172,  172,  172,  172,  132,  172,   96,  172,  172,  172,
+        7,  160,  158,    0,    0,  172,  172,  172,  172,   33,
+      172,   36,  172,  172,  172,  172,  172,  172,  172,  172,
+
+      172,   44,  172,  172,  172,  172,   54,    0,  172,  172,
+       52,  172,  172,  172,  172,  172,  172,    0,   59,  172,
+      172,  172,  172,  172,  172,  172,  172,   86,  172,  172,
+      172,  172,  172,   93,  172,  172,  163,  172,    0,    0,
+      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
+      172,  172,  172,  172,  172,  172,  172,  172,    0,   51,
+       53,  172,  172,  172,  172,  172,  172,    0,  172,  172,
+      172,  172,   70,  172,  172,  172,   87,  172,  172,  172,
+      172,  172,  164,  165,    0,    0,  172,  172,  172,  172,
+       34,  172,  172,  172,  172,  172,  172,  172,  172,   43,
+
+      133,   49,  172,  126,    0,  172,  172,  172,  139,  172,
+      172,    0,  172,  172,  172,  172,  172,   78,  172,  172,
+      172,  172,   90,  172,    0,    0,  172,  172,  172,  172,
+      172,  172,  172,  172,  172,  172,  172,  172,   46,  172,
+      125,    0,  129,  172,  172,  172,  172,    0,  172,  172,
+      172,   76,  172,  172,  172,  172,  172,  172,    0,    0,
+      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
+      172,  172,  172,    0,  172,  172,  138,  172,    0,  172,
+      172,  172,   75,  172,  172,  172,   89,  172,  119,    0,
+      119,  172,  172,  172,  172,  172,  172,  172,  144,  172,
+
+      172,  172,  172,    0,  172,  172,  172,  141,  172,  172,
+      172,  172,  172,  172,  127,  118,  172,  130,  118,  172,
+      172,  172,  172,  172,  172,  172,  172,    0,  172,  172,
+      152,  172,  124,  172,  172,  172,  151,  172,  172,  172,
+      172,  172,  172,  172,  172,   41,    0,  172,  172,  172,
+      172,  172,  172,  172,  172,  172,  172,  115,  154,  148,
+      172,    0,  172,  172,  172,  172,  172,  172,  172,  172,
+      172,  172,  172,  172,  142,  128,  140,  172,  172,  172,
+      149,  172,  172,  172,  172,  172,  172,  172,  172,  172,
+      172,  134,  172,  172,  172,  172,  172,  155,  172,  172,
+
+      172,  172,  172,  147,  146,  172,  172,  172,  172,  172,
+      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
+      172,  172,  172,  172,  172,  172,  172,  172,  153,  172,
+      172,  172,  172,  172,  156,  172,  172,  117,  172,  172,
+      172,  172,  172,  172,  116,  172,  172,  172,  172,  172,
+      172,  172,  172,  157,  172,  172,  145,    0
     } ;
 
 static yyconst int yy_ec[256] =
@@ -439,227 +438,227 @@ static yyconst int yy_meta[75] =
         3,    3,    1,    1
     } ;
 
-static yyconst short int yy_base[970] =
+static yyconst short int yy_base[964] =
     {   0,
-        0,    0, 1226,   49,   50, 1227,   55,   52,   68,   73,
+        0,    0, 1220,   49,   50, 1221,   55,   52,   68,   73,
        53,   65,   78,   79,  111,   93,  130,   71,   77,   87,
       109,  117,  123,  131,  176,  138,  178,  135,  175,  181,
-      184,   81,  125,  209,  218,  186,  222,  234,  214,  274,
-      309,  232,  269,  221,  240,  264,  260,  302,  293,  263,
-      314,  315,  317, 1187, 1187, 1227,  355, 1227, 1227, 1227,
-     1227, 1227, 1227, 1211,  361, 1210, 1209,  126, 1208, 1227,
-     1227, 1227, 1227,  366,  381,  390, 1227, 1227, 1227,    0,
-       72, 1175, 1181, 1185, 1164, 1157,  115, 1176, 1150, 1171,
-     1143, 1150, 1169, 1168, 1169,   81, 1171, 1138, 1146, 1153,
-
-     1137,  353, 1159, 1160, 1140, 1139, 1134, 1166, 1160, 1167,
-     1134, 1139,  188, 1165, 1155, 1138, 1126, 1125, 1121, 1147,
-     1160, 1120, 1144, 1129, 1118, 1142, 1106, 1116, 1115,  115,
-     1138, 1109, 1120, 1107, 1139, 1103, 1116, 1144, 1129, 1101,
-     1093,    0, 1114,  117,  121, 1111, 1095, 1102, 1136,    0,
-        0,    0,    0, 1090, 1093, 1096, 1097, 1090, 1089, 1093,
-        0, 1112,    0, 1119,    0,    0, 1089,  170, 1091,  191,
-        0,    0,    0,    0, 1094, 1088, 1079, 1092, 1092, 1081,
-     1072, 1076, 1073, 1080, 1073, 1227, 1227, 1100, 1095, 1227,
-      407, 1227, 1227, 1227, 1227,  412,  427,  432,  437, 1098,
-
-     1068, 1109, 1091, 1090,  292, 1069, 1068, 1063, 1068, 1087,
-     1064, 1061, 1081, 1096, 1080, 1081, 1087, 1086, 1057, 1057,
-     1050, 1062, 1059, 1050, 1048, 1053, 1085, 1080, 1053, 1056,
-     1046, 1076, 1071,  232, 1044, 1072, 1033,    0, 1034, 1070,
-     1069, 1030, 1033, 1041,    0, 1057, 1065, 1029, 1079, 1030,
-     1021, 1059, 1032, 1029, 1030, 1068, 1019, 1049, 1024, 1011,
-     1027, 1049, 1018, 1021, 1037, 1046, 1022, 1005, 1009, 1008,
-     1014, 1006, 1010, 1003, 1014, 1009, 1023, 1007, 1002, 1002,
-     1000,  990, 1001,  995, 1016, 1017,  995,  990,  990,  988,
-     1006, 1005,  976,  977,  987,  401,  989,  979,  258,  981,
-
-      986,  981,  971,  995,  997,  447,  454,  463,  468,  473,
-      993,    0,  997,  994, 1016,  969,  972,  979,    0, 1012,
-      977,  968,  990,  971,    0,  995,  987,  993,  982,  993,
-      981,  949,    0,  966,  956,  949,  948,  953,    0,    0,
-      985,  943,  942,  950,  958,  967,  973,  976,  940,  940,
-        0,  933,  951,  950,    0,  933,    0,  969,  968,  928,
-      979,  925,  926,    0,  926,  923,    0,  975,    0,  959,
-      933,  927,  919,  947,  921,  917,  953,  937,  919,  920,
-      923,  909,  910,  907,  908,  912,  904,  917,  941,    0,
-      905,    0,  906,    0,  916,  911,  932,  927,    0,  896,
-
-      901,  904,  921,  930,    0,  897,    0,  906,  893,  892,
-      886,    0,    0,  898,  901,  885,  896,  894,  915,  918,
-      478,  483,  913,  918,  915,  893,  875,  879,  878,    0,
-      886,  876,  904,  869,  893,  905,  905,  890,  906,  902,
-      869,  875,  872,  871,    0,  870,  881,  868,  867,  868,
-      294,  878,  877,  891,   66,  851,  862,  256,  195,    0,
-      872,  873,    0,  898,  858,    0,  844,  852,    0,  870,
-        0,  845,    0,  864,  844,    0,    0,  878,  849,  850,
-        0,    0,    0,  846,  846,  848,  844,    0,  848,  829,
-      841,  842,  826,  865,  863,  307,  836,    0,  849,  842,
-
-      833,  834,  823,  825,    0,  827,  823,    0,    0,  810,
-      843,  853,  841,  849,  850,  836,    0,    0,  858,  806,
-      818,  834,    0,  838,    0,  820,  836,  832,  826,  806,
-      797,    0,  802,  791,  829,    0,    0,  810,  816,  820,
-      829,  818,    0,  797,  796,    0,  799,  814,  808,  822,
-      825,  822,  807,    0,  829,  791,    0,    0,  809,    0,
-      815,  776,  799,  773,  789,    0,  772,  779,    0,  809,
-        0,    0,  781,  769,  809,  805,  773,  780,  776,    0,
-      779,    0,  773,  763,  767,    0,    0,    0,  781,  791,
-      779,  794,  788,  784,    0,  756,    0,  789,  792,  774,
-
-      772,  764,  780,  771,  756,  757,    0,  770,  740,  766,
-      767,    0,  793,  737,  750,    0,  758,  758,  758,  762,
-      766,  764,  781,    0,  767,  766,    0,  743,  726,  731,
-      723,  727,  759,    0,  714,  750,  735,  722,  715,    0,
-      742,  713,    0,  726,  740,  748,  738,  726,  745,  749,
-      707,  722,  733,  738,  740,  726,  740,  703,  699,  709,
-      725,  711,  716,  720,  743,    0,    0,  720,  728,  729,
-      726,  725,  726,  734,  701,  700,  721,  689,    0,  688,
-      691,  715,    0,  694,  716,  683,  686,  701,    0,    0,
-      695,  705,  693,  338,  703,  708,    0,  150,  684,  704,
-
-      681,  684,  700,  661,   31,    0,    0,    0,   84,    0,
-      184,  189,  210,  216,    0,  234,  229,  277,  261,  302,
-      325,  302,  293,    0,  333,  344,  343,  320,    0,  358,
-      350,  364,  361,  363,  387,  386,  388,  388,  389,  394,
-      399,  410,  399,  422,    0,  392,    0,  442,    0,  426,
-      444,  478,  462,  488,  467,  479,  478,    0,  447,  472,
-      467,  471,  458,  476,    0,  487,  514,  489,  502,  502,
-      494,  491,  492,  500,  504,  497,  512,  493,  476,  530,
-      520,  507,    0,  519,  533,  514,  520,  519,    0,  520,
-      513,  510,    0,  513, 1227,    0,    0,  517,  529,  588,
-
-      530,  515,  531,  529,    0,  523,  540,  524,  508,  550,
-      530,  527,  528, 1227,  539,  544,  536,  532,  546,  548,
-        0, 1227,  528,    0,    0,  541,  551,  556,  544,  538,
-      557,  541,  533,  575,  548,  570,    0,  576,    0,  572,
-      573,  582,    0,  571,  571,  565,  589,  574,  589,  590,
-      579,    0,  604,  584,  584,  574,  582,  587,  600,  596,
-      579,  584,  602,    0,  582,    0,  603,  618,  607,  598,
-      612,  606,  602,  612,  617,  625,  611,  595,  604,  622,
-     1227,    0,    0,  607,  610,  600,    0,  611,  624,  610,
-      608,  626,  629,  628,  620,  618,  631,    0,  629,  631,
-
-      634,  637,  627,  618,  640,  620,  621,  629,  636,    0,
-        0,  632,  635,  635,  642,  646,  650,  648,  640,  653,
-      645,  634,  647,  661,  658,  648,  650,  655,  648,  652,
-      651,  653,  652,  658,    0,  668,  669,  670,  658,  662,
-        0,  664,  661,    0,  661,  662,  677,  665,  683,  671,
-        0,  667,  668,  679,  688,  675,  672,  678,  684,    0,
-      679,  681,    0, 1227,  716,  719,  722,  725,  728
+      184,   81,  125,  209,  218,  186,  217,  238,  222,  278,
+      313,  225,  273,  236,  232,  279,  240,  244,  243,  281,
+      284,  297,  323, 1181, 1181, 1221,  343, 1221, 1221, 1221,
+     1221, 1221, 1221, 1205,  357, 1204, 1203,  126, 1202, 1221,
+     1221, 1221, 1221,  365,  372,  381, 1221, 1221, 1221,    0,
+       72, 1169, 1175, 1179, 1158, 1151,  115, 1170, 1144, 1165,
+     1137, 1144, 1163, 1162, 1163,   81, 1165, 1132, 1140, 1147,
+
+     1131,  344, 1153, 1154, 1134, 1133, 1128, 1160, 1154, 1161,
+     1128, 1133,  173, 1159, 1149, 1132, 1120, 1119, 1115, 1141,
+     1154, 1114, 1138, 1123, 1112, 1136, 1100, 1110, 1109,  115,
+     1132, 1103, 1114, 1101, 1133, 1111, 1139, 1124, 1096, 1088,
+        0, 1109,  117,  121, 1106, 1090, 1097, 1131,    0,    0,
+        0,    0, 1085, 1088, 1091, 1092, 1085, 1084, 1088,    0,
+     1107,    0, 1114,    0,    0, 1084,  170, 1086,  206,    0,
+        0,    0,    0, 1089, 1083, 1074, 1087, 1087, 1076, 1067,
+     1071, 1068, 1075, 1068, 1221, 1221, 1095, 1090, 1221,  398,
+     1221, 1221, 1221, 1221,  406,  421,  426,  431, 1093, 1063,
+
+     1104, 1086, 1085,  292, 1064, 1063, 1058, 1063, 1082, 1059,
+     1056, 1076, 1091, 1075, 1076, 1082, 1081, 1052, 1052, 1045,
+     1057, 1054, 1045, 1043, 1048, 1080, 1075, 1048, 1051, 1041,
+     1071, 1066,  206, 1039, 1067, 1028,    0, 1029, 1065, 1064,
+     1025, 1028, 1036,    0, 1052, 1060, 1024, 1074, 1025, 1016,
+     1054, 1027, 1024, 1025, 1063, 1014, 1044, 1019, 1006, 1022,
+     1044, 1017, 1033, 1042, 1018, 1001, 1005, 1004, 1010, 1002,
+     1006,  999, 1010, 1005, 1019, 1003,  998,  998,  996,  986,
+      997,  991, 1012, 1013,  991,  986,  986,  984, 1002, 1001,
+      972,  973,  983,  310,  985,  975,  299,  977,  982,  977,
+
+      967,  991,  993,  436,  441,  451,  456,  461,  989,    0,
+      993,  990, 1012,  965,  968,  975,    0, 1008,  973,  964,
+      986,  967,    0,  991,  983,  989,  978,  989,  977,  945,
+        0,  962,  952,  945,  944,  949,    0,    0,  981,  939,
+      938,  946,  954,  963,  969,  972,  936,  936,    0,  929,
+      947,  946,    0,  929,    0,  965,  964,  924,  975,  921,
+      922,    0,  922,  919,    0,  971,    0,  955,  929,  923,
+      915,  943,  914,  950,  934,  916,  917,  920,  906,  907,
+      904,  905,  909,  901,  914,  938,    0,  902,    0,  903,
+        0,  913,  908,  929,  924,    0,  893,  898,  901,  918,
+
+      927,    0,  894,    0,  903,  890,  889,  883,    0,    0,
+      895,  898,  882,  893,  891,  912,  915,  466,  471,  910,
+      915,  912,  890,  872,  876,  875,    0,  883,  873,  901,
+      866,  890,  902,  902,  887,  903,  899,  866,  872,  869,
+      868,    0,  867,  878,  865,  864,  865,  342,  875,  874,
+      888,   66,  848,  859,  369,  463,    0,  869,  870,    0,
+      895,  855,    0,  841,  849,    0,  867,    0,  842,    0,
+      861,    0,    0,  876,  847,  848,    0,    0,    0,  844,
+      844,  846,  842,    0,  846,  827,  839,  840,  824,  863,
+      861,  230,  834,    0,  847,  840,  831,  832,  821,  823,
+
+        0,  825,  821,    0,    0,  808,  841,  851,  839,  847,
+      848,  834,    0,    0,  856,  804,  816,  832,    0,  836,
+        0,  818,  834,  830,  824,  804,  795,    0,  800,  789,
+      827,    0,    0,  808,  814,  818,  827,  816,    0,  795,
+      794,    0,  797,  812,  806,  820,  823,  820,  805,    0,
+      827,  789,    0,    0,  807,    0,  813,  798,  772,  788,
+        0,  771,  778,    0,  808,    0,    0,  780,  768,  808,
+      804,  772,  779,  775,    0,  778,    0,  772,  762,  766,
+        0,    0,    0,  780,  790,  778,  793,  787,  783,    0,
+      755,    0,  788,  791,  773,  771,  763,  779,  770,  755,
+
+      756,    0,  769,  739,  765,  766,    0,  792,  736,  749,
+        0,  757,  757,  757,  761,  765,  763,  780,    0,  766,
+      765,  742,  725,  730,  722,  726,  758,    0,  713,  749,
+      734,  721,  714,    0,  741,  712,    0,  725,  739,  747,
+      737,  725,  744,  748,  706,  721,  732,  737,  739,  725,
+      739,  702,  698,  708,  724,  710,  715,  719,  742,    0,
+        0,  719,  727,  728,  725,  724,  725,  733,  700,  699,
+      720,  688,    0,  687,  690,  714,    0,  693,  715,  682,
+      685,  700,    0,    0,  694,  704,  692,  377,  702,  707,
+        0,  150,  683,  703,  681,  686,  704,  667,  668,    0,
+
+        0,    0,  696,    0,  707,  691,  675,   49,    0,   76,
+      149,  205,  181,  222,  227,  204,  212,    0,  245,  251,
+      282,  259,    0,  300,  296,  316,  306,  327,  381,  389,
+      390,  382,  384,  389,  394,  404,  393,  428,    0,  398,
+        0,  474,    0,  443,  461,  470,  454,  480,  459,  471,
+      470,    0,  440,  465,  460,  465,  452,  470,    0,  481,
+      508,  483,  496,  496,  488,  485,  486,  494,  498,  491,
+      506,  487,  470,  524,  514,  501,    0,  513,  527,  508,
+      514,  513,    0,  514,  507,  504,    0,  507, 1221,    0,
+        0,  511,  523,  582,  524,  509,  525,  523,    0,  517,
+
+      534,  518,  502,  544,  524,  521,  522, 1221,  533,  538,
+      530,  526,  540,  542,    0, 1221,  522,    0,    0,  535,
+      545,  550,  538,  532,  551,  535,  527,  569,  542,  564,
+        0,  570,    0,  566,  567,  576,    0,  565,  565,  559,
+      583,  568,  583,  584,  573,    0,  598,  578,  578,  568,
+      576,  581,  594,  590,  573,  578,  596,    0,  576,    0,
+      597,  612,  601,  592,  606,  600,  596,  606,  611,  619,
+      605,  589,  598,  616, 1221,    0,    0,  601,  604,  594,
+        0,  605,  618,  604,  602,  620,  623,  622,  614,  612,
+      625,    0,  623,  625,  628,  631,  621,  612,  634,  614,
+
+      615,  623,  630,    0,    0,  626,  629,  629,  636,  640,
+      644,  642,  634,  647,  639,  628,  641,  655,  652,  642,
+      644,  649,  642,  646,  645,  647,  646,  652,    0,  662,
+      663,  664,  652,  656,    0,  658,  655,    0,  655,  656,
+      671,  659,  677,  665,    0,  661,  662,  673,  682,  669,
+      666,  672,  678,    0,  673,  675,    0, 1221,  710,  713,
+      716,  719,  722
     } ;
 
-static yyconst short int yy_def[970] =
+static yyconst short int yy_def[964] =
     {   0,
-      964,    1,  964,  964,  964,  964,  964,  964,  964,  964,
-      964,  964,  964,  964,  964,  964,  964,  964,  964,  964,
-      964,  964,  965,  965,  965,  965,  965,  965,  965,  965,
-      965,  965,  965,  965,  965,  965,  965,  965,  965,  965,
-      965,  965,  965,  965,  965,  965,  965,  965,  965,  965,
-      965,  964,  964,  964,  964,  964,  964,  964,  964,  964,
-      964,  964,  964,  964,  964,  964,  964,  964,  964,  964,
-      964,  964,  964,  964,  964,  964,  964,  964,  964,  965,
-      965,  965,  965,  965,  965,  965,  965,  965,  965,  965,
-      965,  965,  965,  965,  965,  965,  965,  965,  965,  965,
-
-      965,  965,  965,  965,  965,  965,  965,  965,  965,  965,
-      965,  965,  965,  965,  965,  965,  965,  965,  965,  965,
-      965,  965,  965,  965,  965,  965,  965,  965,  965,  965,
-      965,  965,  965,  965,  965,  965,  965,  965,  965,  965,
-      965,  965,  965,  965,  965,  965,  965,  965,  965,  965,
-      965,  965,  965,  965,  965,  965,  965,  965,  965,  965,
-      965,  965,  965,  965,  965,  965,  965,  965,  965,  965,
-      965,  965,  965,  965,  965,  965,  965,  965,  965,  965,
-      965,  965,  965,  965,  965,  964,  964,  964,  964,  964,
-      964,  964,  964,  964,  964,  964,  964,  964,  964,  965,
-
-      965,  965,  965,  965,  965,  965,  965,  965,  965,  965,
-      965,  965,  965,  965,  965,  965,  965,  965,  965,  965,
-      965,  965,  965,  965,  965,  965,  965,  965,  965,  965,
-      965,  965,  965,  965,  965,  965,  965,  965,  965,  965,
-      965,  965,  965,  965,  965,  965,  965,  965,  965,  965,
-      965,  965,  965,  965,  965,  965,  965,  965,  965,  965,
-      965,  965,  965,  965,  965,  965,  965,  965,  965,  965,
-      965,  965,  965,  965,  965,  965,  965,  965,  965,  965,
-      965,  965,  965,  965,  965,  965,  965,  965,  965,  965,
-      965,  965,  965,  965,  965,  965,  965,  965,  965,  965,
-
-      965,  965,  965,  964,  964,  964,  964,  964,  964,  964,
-      965,  965,  965,  965,  965,  965,  965,  965,  965,  965,
-      965,  965,  965,  965,  965,  965,  965,  965,  965,  965,
-      965,  965,  965,  965,  965,  965,  965,  965,  965,  965,
-      965,  965,  965,  965,  965,  965,  964,  965,  965,  965,
-      965,  965,  965,  965,  965,  965,  965,  965,  965,  965,
-      964,  965,  965,  965,  965,  965,  965,  965,  965,  965,
-      965,  965,  965,  965,  965,  965,  965,  965,  965,  965,
-      965,  965,  965,  965,  965,  965,  965,  965,  965,  965,
-      965,  965,  965,  965,  965,  965,  965,  965,  965,  965,
-
-      965,  965,  965,  965,  965,  965,  965,  965,  965,  965,
-      965,  965,  965,  965,  965,  965,  965,  965,  964,  964,
-      964,  964,  965,  965,  965,  965,  965,  965,  965,  965,
-      965,  965,  965,  965,  965,  965,  965,  965,  965,  965,
-      965,  965,  965,  965,  965,  965,  965,  965,  965,  965,
-      965,  965,  964,  965,  965,  965,  965,  965,  965,  965,
-      965,  965,  965,  964,  965,  965,  965,  965,  965,  965,
-      965,  965,  965,  965,  965,  965,  965,  965,  965,  965,
-      965,  965,  965,  965,  965,  965,  965,  965,  965,  965,
-      965,  965,  965,  965,  965,  965,  965,  965,  965,  965,
-
-      965,  965,  965,  965,  965,  965,  965,  965,  965,  965,
-      964,  964,  965,  965,  965,  965,  965,  965,  965,  965,
-      965,  965,  965,  965,  965,  965,  965,  965,  965,  965,
-      965,  965,  965,  965,  965,  965,  965,  965,  965,  965,
-      965,  964,  965,  965,  965,  965,  965,  965,  965,  965,
-      965,  965,  965,  965,  964,  965,  965,  965,  965,  965,
-      965,  965,  965,  965,  965,  965,  965,  965,  965,  965,
-      965,  965,  965,  965,  965,  965,  965,  965,  965,  965,
-      965,  965,  965,  965,  965,  965,  965,  965,  964,  964,
-      965,  965,  965,  965,  965,  965,  965,  965,  965,  965,
-
-      965,  965,  965,  965,  965,  965,  965,  965,  965,  965,
-      965,  965,  964,  965,  965,  965,  965,  965,  965,  965,
-      965,  965,  964,  965,  965,  965,  965,  965,  965,  965,
-      965,  965,  965,  965,  965,  965,  965,  965,  965,  965,
-      965,  965,  965,  965,  964,  964,  965,  965,  965,  965,
-      965,  965,  965,  965,  965,  965,  965,  965,  965,  965,
-      965,  965,  965,  965,  964,  965,  965,  965,  965,  965,
-      965,  965,  965,  964,  965,  965,  965,  965,  965,  965,
-      965,  965,  965,  965,  965,  965,  965,  965,  965,  965,
-      964,  964,  965,  965,  965,  965,  965,  965,  965,  965,
-
-      965,  965,  965,  965,  965,  965,  965,  965,  965,  965,
-      964,  965,  965,  965,  965,  965,  965,  964,  965,  965,
-      965,  965,  965,  965,  965,  965,  965,  965,  965,  965,
-      964,  964,  965,  965,  965,  965,  965,  965,  965,  965,
-      965,  965,  965,  965,  965,  965,  965,  964,  965,  965,
-      965,  965,  965,  964,  965,  965,  965,  965,  965,  965,
-      965,  965,  965,  965,  966,  964,  967,  965,  965,  965,
-      965,  965,  965,  965,  965,  965,  965,  965,  965,  964,
-      965,  965,  965,  965,  964,  965,  965,  965,  965,  965,
-      965,  965,  965,  965,  964,  968,  965,  965,  965,  969,
-
-      965,  965,  965,  965,  965,  965,  965,  965,  965,  964,
-      965,  965,  965,  964,  965,  965,  965,  965,  965,  965,
-      965,  964,  965,  965,  965,  965,  965,  965,  965,  965,
-      965,  965,  965,  964,  965,  965,  965,  965,  965,  965,
-      965,  965,  965,  965,  965,  965,  965,  965,  965,  965,
-      965,  965,  964,  965,  965,  965,  965,  965,  965,  965,
-      965,  965,  965,  965,  965,  965,  965,  964,  965,  965,
-      965,  965,  965,  965,  965,  965,  965,  965,  965,  965,
-      964,  965,  965,  965,  965,  965,  965,  965,  965,  965,
-      965,  965,  965,  965,  965,  965,  965,  965,  965,  965,
-
-      965,  965,  965,  965,  965,  965,  965,  965,  965,  965,
-      965,  965,  965,  965,  965,  965,  965,  965,  965,  965,
-      965,  965,  965,  965,  965,  965,  965,  965,  965,  965,
-      965,  965,  965,  965,  965,  965,  965,  965,  965,  965,
-      965,  965,  965,  965,  965,  965,  965,  965,  965,  965,
-      965,  965,  965,  965,  965,  965,  965,  965,  965,  965,
-      965,  965,  965,    0,  964,  964,  964,  964,  964
+      958,    1,  958,  958,  958,  958,  958,  958,  958,  958,
+      958,  958,  958,  958,  958,  958,  958,  958,  958,  958,
+      958,  958,  959,  959,  959,  959,  959,  959,  959,  959,
+      959,  959,  959,  959,  959,  959,  959,  959,  959,  959,
+      959,  959,  959,  959,  959,  959,  959,  959,  959,  959,
+      959,  958,  958,  958,  958,  958,  958,  958,  958,  958,
+      958,  958,  958,  958,  958,  958,  958,  958,  958,  958,
+      958,  958,  958,  958,  958,  958,  958,  958,  958,  959,
+      959,  959,  959,  959,  959,  959,  959,  959,  959,  959,
+      959,  959,  959,  959,  959,  959,  959,  959,  959,  959,
+
+      959,  959,  959,  959,  959,  959,  959,  959,  959,  959,
+      959,  959,  959,  959,  959,  959,  959,  959,  959,  959,
+      959,  959,  959,  959,  959,  959,  959,  959,  959,  959,
+      959,  959,  959,  959,  959,  959,  959,  959,  959,  959,
+      959,  959,  959,  959,  959,  959,  959,  959,  959,  959,
+      959,  959,  959,  959,  959,  959,  959,  959,  959,  959,
+      959,  959,  959,  959,  959,  959,  959,  959,  959,  959,
+      959,  959,  959,  959,  959,  959,  959,  959,  959,  959,
+      959,  959,  959,  959,  958,  958,  958,  958,  958,  958,
+      958,  958,  958,  958,  958,  958,  958,  958,  959,  959,
+
+      959,  959,  959,  959,  959,  959,  959,  959,  959,  959,
+      959,  959,  959,  959,  959,  959,  959,  959,  959,  959,
+      959,  959,  959,  959,  959,  959,  959,  959,  959,  959,
+      959,  959,  959,  959,  959,  959,  959,  959,  959,  959,
+      959,  959,  959,  959,  959,  959,  959,  959,  959,  959,
+      959,  959,  959,  959,  959,  959,  959,  959,  959,  959,
+      959,  959,  959,  959,  959,  959,  959,  959,  959,  959,
+      959,  959,  959,  959,  959,  959,  959,  959,  959,  959,
+      959,  959,  959,  959,  959,  959,  959,  959,  959,  959,
+      959,  959,  959,  959,  959,  959,  959,  959,  959,  959,
+
+      959,  958,  958,  958,  958,  958,  958,  958,  959,  959,
+      959,  959,  959,  959,  959,  959,  959,  959,  959,  959,
+      959,  959,  959,  959,  959,  959,  959,  959,  959,  959,
+      959,  959,  959,  959,  959,  959,  959,  959,  959,  959,
+      959,  959,  959,  959,  958,  959,  959,  959,  959,  959,
+      959,  959,  959,  959,  959,  959,  959,  959,  958,  959,
+      959,  959,  959,  959,  959,  959,  959,  959,  959,  959,
+      959,  959,  959,  959,  959,  959,  959,  959,  959,  959,
+      959,  959,  959,  959,  959,  959,  959,  959,  959,  959,
+      959,  959,  959,  959,  959,  959,  959,  959,  959,  959,
+
+      959,  959,  959,  959,  959,  959,  959,  959,  959,  959,
+      959,  959,  959,  959,  959,  958,  958,  958,  958,  959,
+      959,  959,  959,  959,  959,  959,  959,  959,  959,  959,
+      959,  959,  959,  959,  959,  959,  959,  959,  959,  959,
+      959,  959,  959,  959,  959,  959,  959,  959,  959,  958,
+      959,  959,  959,  959,  959,  959,  959,  959,  959,  959,
+      958,  959,  959,  959,  959,  959,  959,  959,  959,  959,
+      959,  959,  959,  959,  959,  959,  959,  959,  959,  959,
+      959,  959,  959,  959,  959,  959,  959,  959,  959,  959,
+      959,  959,  959,  959,  959,  959,  959,  959,  959,  959,
+
+      959,  959,  959,  959,  959,  959,  958,  958,  959,  959,
+      959,  959,  959,  959,  959,  959,  959,  959,  959,  959,
+      959,  959,  959,  959,  959,  959,  959,  959,  959,  959,
+      959,  959,  959,  959,  959,  959,  959,  958,  959,  959,
+      959,  959,  959,  959,  959,  959,  959,  959,  959,  959,
+      958,  959,  959,  959,  959,  959,  959,  959,  959,  959,
+      959,  959,  959,  959,  959,  959,  959,  959,  959,  959,
+      959,  959,  959,  959,  959,  959,  959,  959,  959,  959,
+      959,  959,  959,  958,  958,  959,  959,  959,  959,  959,
+      959,  959,  959,  959,  959,  959,  959,  959,  959,  959,
+
+      959,  959,  959,  959,  959,  959,  959,  958,  959,  959,
+      959,  959,  959,  959,  959,  959,  959,  958,  959,  959,
+      959,  959,  959,  959,  959,  959,  959,  959,  959,  959,
+      959,  959,  959,  959,  959,  959,  959,  959,  958,  958,
+      959,  959,  959,  959,  959,  959,  959,  959,  959,  959,
+      959,  959,  959,  959,  959,  959,  959,  959,  958,  959,
+      959,  959,  959,  959,  959,  959,  959,  958,  959,  959,
+      959,  959,  959,  959,  959,  959,  959,  959,  959,  959,
+      959,  959,  959,  959,  958,  958,  959,  959,  959,  959,
+      959,  959,  959,  959,  959,  959,  959,  959,  959,  959,
+
+      959,  959,  959,  959,  958,  959,  959,  959,  959,  959,
+      959,  958,  959,  959,  959,  959,  959,  959,  959,  959,
+      959,  959,  959,  959,  958,  958,  959,  959,  959,  959,
+      959,  959,  959,  959,  959,  959,  959,  959,  959,  959,
+      959,  958,  959,  959,  959,  959,  959,  958,  959,  959,
+      959,  959,  959,  959,  959,  959,  959,  959,  960,  958,
+      961,  959,  959,  959,  959,  959,  959,  959,  959,  959,
+      959,  959,  959,  958,  959,  959,  959,  959,  958,  959,
+      959,  959,  959,  959,  959,  959,  959,  959,  958,  962,
+      959,  959,  959,  963,  959,  959,  959,  959,  959,  959,
+
+      959,  959,  959,  958,  959,  959,  959,  958,  959,  959,
+      959,  959,  959,  959,  959,  958,  959,  959,  959,  959,
+      959,  959,  959,  959,  959,  959,  959,  958,  959,  959,
+      959,  959,  959,  959,  959,  959,  959,  959,  959,  959,
+      959,  959,  959,  959,  959,  959,  958,  959,  959,  959,
+      959,  959,  959,  959,  959,  959,  959,  959,  959,  959,
+      959,  958,  959,  959,  959,  959,  959,  959,  959,  959,
+      959,  959,  959,  959,  958,  959,  959,  959,  959,  959,
+      959,  959,  959,  959,  959,  959,  959,  959,  959,  959,
+      959,  959,  959,  959,  959,  959,  959,  959,  959,  959,
+
+      959,  959,  959,  959,  959,  959,  959,  959,  959,  959,
+      959,  959,  959,  959,  959,  959,  959,  959,  959,  959,
+      959,  959,  959,  959,  959,  959,  959,  959,  959,  959,
+      959,  959,  959,  959,  959,  959,  959,  959,  959,  959,
+      959,  959,  959,  959,  959,  959,  959,  959,  959,  959,
+      959,  959,  959,  959,  959,  959,  959,    0,  958,  958,
+      958,  958,  958
     } ;
 
-static yyconst short int yy_nxt[1302] =
+static yyconst short int yy_nxt[1296] =
     {   0,
         4,    5,    6,    7,    8,    9,   10,   11,   12,   13,
        14,   15,   16,   17,   17,   17,   17,   17,   18,   19,
@@ -669,145 +668,144 @@ static yyconst short int yy_nxt[1302] =
        32,   32,   32,   45,   46,   32,   32,   32,   47,   32,
        48,   49,   32,   32,   32,   50,   32,   32,   51,   32,
        32,   32,   52,   53,   54,   54,   56,   54,   54,   58,
-       54,   57,   57,   57,   57,   57,   59,   60,  746,   62,
+       54,   57,   57,   57,   57,   57,   59,   60,  745,   62,
        54,   55,   55,   54,   55,   55,   54,   55,   54,   61,
 
-       63,   70,   54,   54,   54,   71,   88,   55,   77,  200,
-       55,  747,   54,   55,   72,   55,  216,  217,   54,   55,
+       63,   70,   54,   54,   54,   71,   88,   55,   77,  199,
+       55,  746,   54,   55,   72,   55,  215,  216,   54,   55,
        55,   55,   64,   83,   65,   65,   65,   65,   65,   55,
-       78,  544,  545,  201,   54,   55,   54,  194,   79,   66,
+       78,  540,  541,  200,   54,   55,   54,  193,   79,   66,
        73,   74,   54,   75,   75,   75,   75,   75,   81,   82,
        88,   55,   67,   68,   69,   54,   88,   76,  114,   55,
-       88,  103,  189,   88,  207,   83,  115,   83,   84,  104,
-      256,   89,   55,   83,  270,  738,  257,   83,  272,   90,
-       83,  208,  273,   76,  116,  125,  271,   85,   86,   87,
-      739,  105,   91,  117,  118,  106,  119,  748,   92,   93,
+       88,  103,  188,   88,  206,   83,  115,   83,   84,  104,
+      255,   89,   55,   83,  268,  732,  256,   83,  270,   90,
+       83,  207,  271,   76,  116,  125,  269,   85,   86,   87,
+      733,  105,   91,  117,  118,  106,  119,  747,   92,   93,
 
        88,   88,  120,   88,  108,  107,   88,   94,  121,   88,
-       95,   88,  109,   96,  110,  749,  291,   83,   83,  288,
-       83,  550,   97,   83,  123,   98,   83,  289,   83,   99,
-      292,  551,  100,  101,   88,  552,  111,  102,  112,   88,
-      126,  131,  347,   88,  124,  237,   88,   88,  113,  750,
-      238,   83,  122,  134,  239,  751,   83,   88,  127,   88,
-       83,  135,  128,   83,   83,   88,  129,  146,  138,  752,
-      130,  132,  348,  139,   83,  147,   83,  753,  177,  133,
-      548,  148,   83,  140,  136,   88,  137,  754,   88,   88,
-      141,  142,  143,  549,   88,  144,  170,  169,  145,   88,
-
-      178,  755,   83,  171,  149,   83,   83,  172,  150,  173,
-      174,   83,  151,  179,  152,  153,   83,  316,   88,  539,
-      413,  180,  414,  154,  184,  155,  175,   88,  540,  756,
-      176,  156,  317,  318,   88,   83,  157,  158,  187,   88,
-       54,  159,   54,  161,   83,  160,  162,  163,  164,  165,
-      166,   83,  757,  758,  759,  181,   83,   55,  167,   55,
-      183,  577,  734,  182,  760,  578,  735,  185,   57,   57,
-       57,   57,   57,  168,   65,   65,   65,   65,   65,  196,
-      196,  196,  196,  196,  761,  762,  763,  186,  191,  764,
-      765,  766,   74,  197,   75,   75,   75,   75,   75,  198,
-
-      198,  767,  768,  199,  199,  199,  199,  199,   76,  223,
-      769,  224,  225,  770,  191,  771,  306,  306,  226,  197,
-      307,  307,  307,  307,  307,  196,  196,  196,  196,  196,
-      772,  773,  774,  775,   76,  776,  309,  309,  777,  308,
-      310,  310,  310,  310,  310,  199,  199,  199,  199,  199,
-      199,  199,  199,  199,  199,  408,  778,  779,  780,  409,
-      307,  307,  307,  307,  307,  308,  410,  307,  307,  307,
-      307,  307,  421,  421,  781,  782,  422,  422,  422,  422,
-      422,  310,  310,  310,  310,  310,  310,  310,  310,  310,
-      310,  422,  422,  422,  422,  422,  422,  422,  422,  422,
-
-      422,  783,  784,  785,  786,  787,  788,  789,  790,  791,
-      792,  793,  794,  796,  795,  795,  798,  795,  795,  795,
-      795,  795,  795,  795,  795,  795,  795,  799,  800,  801,
-      802,  803,  795,  795,  795,  795,  795,  804,  805,  806,
-      807,  808,  809,  810,  811,  812,  813,  814,  815,  816,
-      817,  818,  819,  820,  821,  823,  824,  826,  827,  828,
-      829,  795,  830,  831,  832,  833,  834,  835,  836,  837,
+       95,   88,  109,   96,  110,  748,  345,   83,   83,  286,
+       83,  749,   97,   83,  123,   98,   83,  287,   83,   99,
+      236,  289,  100,  101,   88,  237,  111,  102,  112,  238,
+      126,  131,   88,   88,  124,  290,  346,   88,  113,  750,
+       88,   83,  122,  134,  751,  752,  135,   88,  127,   83,
+       83,   88,  128,   88,   83,   88,  129,   83,   88,   88,
+      130,  132,  137,  753,   83,  145,  754,  138,   83,  133,
+       83,  136,   83,  146,  572,   83,   83,  139,  573,  147,
+      168,  755,  177,  176,  140,  141,  142,  180,   88,  143,
+
+      169,  179,  144,   88,   88,  181,   88,  170,  148,   88,
+      182,  171,  149,  172,  173,   83,  150,  314,  151,  152,
+       83,   83,   54,   83,  756,  757,   83,  153,  178,  154,
+      174,  758,  315,  316,  175,  155,  759,  184,   88,   55,
+      156,  157,  183,  760,  186,  158,  761,  160,   54,  159,
+      161,  162,  163,  164,  165,   83,   57,   57,   57,   57,
+       57,  410,  166,  411,  405,   55,  762,  535,  406,  185,
+       65,   65,   65,   65,   65,  407,  536,  167,  195,  195,
+      195,  195,  195,   74,  190,   75,   75,   75,   75,   75,
+      197,  197,  196,  544,  198,  198,  198,  198,  198,   76,
+
+      222,  728,  223,  224,  763,  729,  545,  304,  304,  225,
+      190,  305,  305,  305,  305,  305,  764,  765,  196,  195,
+      195,  195,  195,  195,  766,   76,  767,  768,  769,  770,
+      307,  307,  771,  306,  308,  308,  308,  308,  308,  198,
+      198,  198,  198,  198,  198,  198,  198,  198,  198,  305,
+      305,  305,  305,  305,  305,  305,  305,  305,  305,  306,
+      418,  418,  772,  773,  419,  419,  419,  419,  419,  308,
+      308,  308,  308,  308,  308,  308,  308,  308,  308,  419,
+      419,  419,  419,  419,  419,  419,  419,  419,  419,  546,
+      774,  775,  776,  777,  778,  779,  780,  781,  782,  547,
+
+      783,  784,  785,  548,  786,  787,  788,  790,  789,  789,
+      792,  789,  789,  789,  789,  789,  789,  789,  789,  789,
+      789,  793,  794,  795,  796,  797,  789,  789,  789,  789,
+      789,  798,  799,  800,  801,  802,  803,  804,  805,  806,
+      807,  808,  809,  810,  811,  812,  813,  814,  815,  817,
+      818,  820,  821,  822,  823,  789,  824,  825,  826,  827,
+      828,  829,  830,  831,  832,  833,  834,  835,  836,  837,
       838,  839,  840,  841,  842,  843,  844,  845,  846,  847,
-      848,  849,  850,  851,  852,  853,  795,  795,  822,  822,
-      854,  822,  822,  822,  822,  822,  822,  822,  822,  822,
+      789,  789,  816,  816,  848,  816,  816,  816,  816,  816,
+      816,  816,  816,  816,  816,  849,  850,  851,  852,  853,
 
-      822,  855,  856,  857,  858,  859,  822,  822,  822,  822,
-      822,  860,  861,  862,  863,  864,  865,  866,  867,  868,
-      869,  870,  871,  872,  873,  874,  875,  876,  877,  878,
-      879,  880,  881,  882,  883,  822,  884,  885,  886,  887,
+      816,  816,  816,  816,  816,  854,  855,  856,  857,  858,
+      859,  860,  861,  862,  863,  864,  865,  866,  867,  868,
+      869,  870,  871,  872,  873,  874,  875,  876,  877,  816,
+      878,  879,  880,  881,  882,  883,  884,  885,  886,  887,
       888,  889,  890,  891,  892,  893,  894,  895,  896,  897,
-      898,  899,  900,  901,  902,  903,  904,  905,  906,  907,
-      822,  822,  908,  909,  910,  911,  912,  913,  914,  915,
+      898,  899,  900,  901,  816,  816,  902,  903,  904,  905,
+      906,  907,  908,  909,  910,  911,  912,  913,  914,  915,
       916,  917,  918,  919,  920,  921,  922,  923,  924,  925,
       926,  927,  928,  929,  930,  931,  932,  933,  934,  935,
       936,  937,  938,  939,  940,  941,  942,  943,  944,  945,
 
       946,  947,  948,  949,  950,  951,  952,  953,  954,  955,
-      956,  957,  958,  959,  960,  961,  962,  963,   80,  795,
-      745,  795,  797,  744,  797,  822,  743,  822,  825,  742,
-      825,  741,  740,  737,  736,  733,  732,  731,  730,  729,
-      728,  727,  726,  725,  724,  723,  722,  721,  720,  719,
-      718,  717,  716,  715,  714,  713,  712,  711,  710,  709,
-      708,  707,  706,  705,  704,  703,  702,  701,  700,  699,
-      698,  697,  696,  695,  694,  693,  692,  691,  690,  689,
-      688,  687,  686,  685,  684,  683,  682,  681,  680,  679,
-      678,  677,  676,  675,  674,  673,  672,  671,  670,  669,
-
-      668,  667,  666,  665,  664,  663,  662,  661,  660,  659,
-      658,  657,  656,  655,  654,  653,  652,  651,  650,  649,
-      648,  647,  646,  645,  644,  643,  642,  641,  640,  639,
-      638,  637,  636,  635,  634,  633,  632,  631,  630,  629,
-      628,  627,  626,  625,  624,  623,  622,  621,  620,  619,
-      618,  617,  616,  615,  614,  613,  612,  611,  610,  609,
-      608,  607,  606,  605,  604,  603,  602,  601,  600,  599,
-      598,  597,  596,  595,  594,  593,  592,  591,  590,  589,
-      588,  587,  586,  585,  584,  583,  582,  581,  580,  579,
-      576,  575,  574,  573,  572,  571,  570,  569,  568,  567,
-
-      566,  565,  564,  563,  562,  561,  560,  559,  558,  557,
-      556,  555,  554,  553,  547,  546,  543,  542,  541,  538,
-      537,  536,  535,  534,  533,  532,  531,  530,  529,  528,
-      527,  526,  525,  524,  523,  522,  521,  520,  519,  518,
-      517,  516,  515,  514,  513,  512,  511,  510,  509,  508,
-      507,  506,  505,  504,  503,  502,  501,  500,  499,  498,
-      497,  496,  495,  494,  493,  492,  491,  490,  489,  488,
-      487,  486,  485,  484,  483,  482,  481,  480,  479,  478,
-      477,  476,  475,  474,  473,  472,  471,  470,  469,  468,
-      467,  466,  465,  464,  463,  462,  461,  460,  459,  458,
-
-      457,  456,  455,  454,  453,  452,  451,  450,  449,  448,
-      447,  446,  445,  444,  443,  442,  441,  440,  439,  438,
-      437,  436,  435,  434,  433,  432,  431,  430,  429,  428,
-      427,  426,  425,  424,  423,  420,  419,  418,  417,  416,
-      415,  412,  411,  407,  406,  405,  404,  403,  402,  401,
-      400,  399,  398,  397,  396,  395,  394,  393,  392,  391,
-      390,  389,  388,  387,  386,  385,  384,  383,  382,  381,
-      380,  379,  378,  377,  376,  375,  374,  373,  372,  371,
-      370,  369,  368,  367,  366,  365,  364,  363,  362,  361,
-      360,  359,  358,  357,  356,  355,  354,  353,  352,  351,
-
-      350,  349,  346,  345,  344,  343,  342,  341,  340,  339,
-      338,  337,  336,  335,  334,  333,  332,  331,  330,  329,
-      328,  327,  326,  325,  324,  323,  322,  321,  320,  319,
-      315,  314,  313,  312,  311,  305,  304,  303,  302,  301,
-      300,  299,  298,  297,  296,  295,  294,  293,  290,  287,
-      286,  285,  284,  283,  282,  281,  280,  279,  278,  277,
-      276,  275,  274,  269,  268,  267,  266,  265,  264,  263,
-      262,  261,  260,  259,  258,  255,  254,  253,  252,  251,
-      250,  249,  248,  247,  246,  245,  244,  243,  242,  241,
-      240,  236,  235,  234,  233,  232,  231,  230,  229,  228,
-
-      227,  222,  221,  220,  219,  218,  215,  214,  213,  212,
-      211,  210,  209,  200,  206,  205,  204,  203,  202,  195,
-      193,  192,  190,  189,  188,  964,    3,  964,  964,  964,
-      964,  964,  964,  964,  964,  964,  964,  964,  964,  964,
-      964,  964,  964,  964,  964,  964,  964,  964,  964,  964,
-      964,  964,  964,  964,  964,  964,  964,  964,  964,  964,
-      964,  964,  964,  964,  964,  964,  964,  964,  964,  964,
-      964,  964,  964,  964,  964,  964,  964,  964,  964,  964,
-      964,  964,  964,  964,  964,  964,  964,  964,  964,  964,
-      964,  964,  964,  964,  964,  964,  964,  964,  964,  964,
-
-      964
+      956,  957,   80,  789,  744,  789,  791,  743,  791,  816,
+      742,  816,  819,  741,  819,  740,  739,  738,  737,  736,
+      735,  734,  731,  730,  727,  726,  725,  724,  723,  722,
+      721,  720,  719,  718,  717,  716,  715,  714,  713,  712,
+      711,  710,  709,  708,  707,  706,  705,  704,  703,  702,
+      701,  700,  699,  698,  697,  696,  695,  694,  693,  692,
+      691,  690,  689,  688,  687,  686,  685,  684,  683,  682,
+      681,  680,  679,  678,  677,  676,  675,  674,  673,  672,
+      671,  670,  669,  668,  667,  666,  665,  664,  663,  662,
+
+      661,  660,  659,  658,  657,  656,  655,  654,  653,  652,
+      651,  650,  649,  648,  647,  646,  645,  644,  643,  642,
+      641,  640,  639,  638,  637,  636,  635,  634,  633,  632,
+      631,  630,  629,  628,  627,  626,  625,  624,  623,  622,
+      621,  620,  619,  618,  617,  616,  615,  614,  613,  612,
+      611,  610,  609,  608,  607,  606,  605,  604,  603,  602,
+      601,  600,  599,  598,  597,  596,  595,  594,  593,  592,
+      591,  590,  589,  588,  587,  586,  585,  584,  583,  582,
+      581,  580,  579,  578,  577,  576,  575,  574,  571,  570,
+      569,  568,  567,  566,  565,  564,  563,  562,  561,  560,
+
+      559,  558,  557,  556,  555,  554,  553,  552,  551,  550,
+      549,  543,  542,  539,  538,  537,  534,  533,  532,  531,
+      530,  529,  528,  527,  526,  525,  524,  523,  522,  521,
+      520,  519,  518,  517,  516,  515,  514,  513,  512,  511,
+      510,  509,  508,  507,  506,  505,  504,  503,  502,  501,
+      500,  499,  498,  497,  496,  495,  494,  493,  492,  491,
+      490,  489,  488,  487,  486,  485,  484,  483,  482,  481,
+      480,  479,  478,  477,  476,  475,  474,  473,  472,  471,
+      470,  469,  468,  467,  466,  465,  464,  463,  462,  461,
+      460,  459,  458,  457,  456,  455,  454,  453,  452,  451,
+
+      450,  449,  448,  447,  446,  445,  444,  443,  442,  441,
+      440,  439,  438,  437,  436,  435,  434,  433,  432,  431,
+      430,  429,  428,  427,  426,  425,  424,  423,  422,  421,
+      420,  417,  416,  415,  414,  413,  412,  409,  408,  404,
+      403,  402,  401,  400,  399,  398,  397,  396,  395,  394,
+      393,  392,  391,  390,  389,  388,  387,  386,  385,  384,
+      383,  382,  381,  380,  379,  378,  377,  376,  375,  374,
+      373,  372,  371,  370,  369,  368,  367,  366,  365,  364,
+      363,  362,  361,  360,  359,  358,  357,  356,  355,  354,
+      353,  352,  351,  350,  349,  348,  347,  344,  343,  342,
+
+      341,  340,  339,  338,  337,  336,  335,  334,  333,  332,
+      331,  330,  329,  328,  327,  326,  325,  324,  323,  322,
+      321,  320,  319,  318,  317,  313,  312,  311,  310,  309,
+      303,  302,  301,  300,  299,  298,  297,  296,  295,  294,
+      293,  292,  291,  288,  285,  284,  283,  282,  281,  280,
+      279,  278,  277,  276,  275,  274,  273,  272,  267,  266,
+      265,  264,  263,  262,  261,  260,  259,  258,  257,  254,
+      253,  252,  251,  250,  249,  248,  247,  246,  245,  244,
+      243,  242,  241,  240,  239,  235,  234,  233,  232,  231,
+      230,  229,  228,  227,  226,  221,  220,  219,  218,  217,
+
+      214,  213,  212,  211,  210,  209,  208,  199,  205,  204,
+      203,  202,  201,  194,  192,  191,  189,  188,  187,  958,
+        3,  958,  958,  958,  958,  958,  958,  958,  958,  958,
+      958,  958,  958,  958,  958,  958,  958,  958,  958,  958,
+      958,  958,  958,  958,  958,  958,  958,  958,  958,  958,
+      958,  958,  958,  958,  958,  958,  958,  958,  958,  958,
+      958,  958,  958,  958,  958,  958,  958,  958,  958,  958,
+      958,  958,  958,  958,  958,  958,  958,  958,  958,  958,
+      958,  958,  958,  958,  958,  958,  958,  958,  958,  958,
+      958,  958,  958,  958,  958
+
     } ;
 
-static yyconst short int yy_chk[1302] =
+static yyconst short int yy_chk[1296] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -817,142 +815,141 @@ static yyconst short int yy_chk[1302] =
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    4,    5,    7,    8,   11,   10,
-        7,    9,    9,    9,    9,    9,   12,   13,  705,   14,
+        7,    9,    9,    9,    9,    9,   12,   13,  708,   14,
        12,    4,    5,    9,    8,   11,   18,    7,   10,   13,
 
        14,   16,   19,   13,   14,   16,   32,   12,   20,   81,
-        9,  709,   20,   18,   16,   10,   96,   96,   16,   19,
+        9,  710,   20,   18,   16,   10,   96,   96,   16,   19,
        13,   14,   15,   32,   15,   15,   15,   15,   15,   20,
-       21,  455,  455,   81,   21,   16,   15,   68,   22,   15,
+       21,  452,  452,   81,   21,   16,   15,   68,   22,   15,
        16,   17,   22,   17,   17,   17,   17,   17,   23,   23,
        33,   21,   15,   15,   15,   17,   24,   17,   28,   22,
        28,   26,   68,   26,   87,   23,   28,   33,   23,   26,
-      130,   24,   17,   24,  144,  698,  130,   28,  145,   24,
-       26,   87,  145,   17,   28,   33,  144,   23,   23,   23,
-      698,   26,   24,   28,   28,   26,   28,  711,   24,   25,
+      130,   24,   17,   24,  143,  692,  130,   28,  144,   24,
+       26,   87,  144,   17,   28,   33,  143,   23,   23,   23,
+      692,   26,   24,   28,   28,   26,   28,  711,   24,   25,
 
        29,   25,   29,   27,   27,   26,   30,   25,   30,   31,
-       25,   36,   27,   25,   27,  712,  170,   29,   25,  168,
-       27,  459,   25,   30,   31,   25,   31,  168,   36,   25,
-      170,  459,   25,   25,   34,  459,   27,   25,   27,   39,
-       34,   35,  234,   35,   31,  113,   44,   37,   27,  713,
-      113,   34,   30,   36,  113,  714,   39,   42,   34,   38,
-       35,   37,   34,   44,   37,   45,   34,   39,   38,  716,
-       34,   35,  234,   38,   42,   39,   38,  717,   44,   35,
-      458,   39,   45,   38,   37,   47,   37,  718,   50,   46,
-       38,   38,   38,  458,   43,   38,   43,   42,   38,   40,
-
-       45,  719,   47,   43,   40,   50,   46,   43,   40,   43,
-       43,   43,   40,   46,   40,   40,   40,  205,   49,  451,
-      299,   47,  299,   40,   50,   40,   43,   48,  451,  720,
-       43,   40,  205,  205,   41,   49,   40,   40,   53,   51,
-       52,   40,   53,   41,   48,   40,   41,   41,   41,   41,
-       41,   41,  721,  722,  723,   48,   51,   52,   41,   53,
-       49,  496,  694,   48,  725,  496,  694,   51,   57,   57,
-       57,   57,   57,   41,   65,   65,   65,   65,   65,   74,
-       74,   74,   74,   74,  726,  727,  728,   52,   65,  730,
-      731,  732,   75,   74,   75,   75,   75,   75,   75,   76,
-
-       76,  733,  734,   76,   76,   76,   76,   76,   75,  102,
-      735,  102,  102,  736,   65,  737,  191,  191,  102,   74,
-      191,  191,  191,  191,  191,  196,  196,  196,  196,  196,
-      738,  739,  740,  741,   75,  742,  197,  197,  743,  196,
-      197,  197,  197,  197,  197,  198,  198,  198,  198,  198,
-      199,  199,  199,  199,  199,  296,  744,  746,  748,  296,
-      306,  306,  306,  306,  306,  196,  296,  307,  307,  307,
-      307,  307,  308,  308,  750,  751,  308,  308,  308,  308,
-      308,  309,  309,  309,  309,  309,  310,  310,  310,  310,
-      310,  421,  421,  421,  421,  421,  422,  422,  422,  422,
-
-      422,  752,  753,  754,  755,  756,  757,  759,  760,  761,
-      762,  763,  764,  766,  767,  767,  768,  767,  767,  767,
-      767,  767,  767,  767,  767,  767,  767,  769,  770,  771,
-      772,  773,  767,  767,  767,  767,  767,  774,  775,  776,
-      777,  778,  779,  780,  781,  782,  784,  785,  786,  787,
-      788,  790,  791,  792,  794,  798,  799,  801,  802,  803,
-      804,  767,  806,  807,  808,  809,  810,  811,  812,  813,
-      815,  816,  817,  818,  819,  820,  823,  826,  827,  828,
-      829,  830,  831,  832,  833,  834,  767,  767,  800,  800,
-      835,  800,  800,  800,  800,  800,  800,  800,  800,  800,
-
-      800,  836,  838,  840,  841,  842,  800,  800,  800,  800,
-      800,  844,  845,  846,  847,  848,  849,  850,  851,  853,
-      854,  855,  856,  857,  858,  859,  860,  861,  862,  863,
-      865,  867,  868,  869,  870,  800,  871,  872,  873,  874,
-      875,  876,  877,  878,  879,  880,  884,  885,  886,  888,
-      889,  890,  891,  892,  893,  894,  895,  896,  897,  899,
-      800,  800,  900,  901,  902,  903,  904,  905,  906,  907,
-      908,  909,  912,  913,  914,  915,  916,  917,  918,  919,
-      920,  921,  922,  923,  924,  925,  926,  927,  928,  929,
-      930,  931,  932,  933,  934,  936,  937,  938,  939,  940,
-
-      942,  943,  945,  946,  947,  948,  949,  950,  952,  953,
-      954,  955,  956,  957,  958,  959,  961,  962,  965,  966,
-      704,  966,  967,  703,  967,  968,  702,  968,  969,  701,
-      969,  700,  699,  696,  695,  693,  692,  691,  688,  687,
-      686,  685,  684,  682,  681,  680,  678,  677,  676,  675,
-      674,  673,  672,  671,  670,  669,  668,  665,  664,  663,
-      662,  661,  660,  659,  658,  657,  656,  655,  654,  653,
-      652,  651,  650,  649,  648,  647,  646,  645,  644,  642,
-      641,  639,  638,  637,  636,  635,  633,  632,  631,  630,
-      629,  628,  626,  625,  623,  622,  621,  620,  619,  618,
-
-      617,  615,  614,  613,  611,  610,  609,  608,  606,  605,
-      604,  603,  602,  601,  600,  599,  598,  596,  594,  593,
-      592,  591,  590,  589,  585,  584,  583,  581,  579,  578,
-      577,  576,  575,  574,  573,  570,  568,  567,  565,  564,
-      563,  562,  561,  559,  556,  555,  553,  552,  551,  550,
-      549,  548,  547,  545,  544,  542,  541,  540,  539,  538,
-      535,  534,  533,  531,  530,  529,  528,  527,  526,  524,
-      522,  521,  520,  519,  516,  515,  514,  513,  512,  511,
-      510,  507,  506,  504,  503,  502,  501,  500,  499,  497,
-      495,  494,  493,  492,  491,  490,  489,  487,  486,  485,
-
-      484,  480,  479,  478,  475,  474,  472,  470,  468,  467,
-      465,  464,  462,  461,  457,  456,  454,  453,  452,  450,
-      449,  448,  447,  446,  444,  443,  442,  441,  440,  439,
-      438,  437,  436,  435,  434,  433,  432,  431,  429,  428,
-      427,  426,  425,  424,  423,  420,  419,  418,  417,  416,
-      415,  414,  411,  410,  409,  408,  406,  404,  403,  402,
-      401,  400,  398,  397,  396,  395,  393,  391,  389,  388,
-      387,  386,  385,  384,  383,  382,  381,  380,  379,  378,
-      377,  376,  375,  374,  373,  372,  371,  370,  368,  366,
-      365,  363,  362,  361,  360,  359,  358,  356,  354,  353,
-
-      352,  350,  349,  348,  347,  346,  345,  344,  343,  342,
-      341,  338,  337,  336,  335,  334,  332,  331,  330,  329,
-      328,  327,  326,  324,  323,  322,  321,  320,  318,  317,
-      316,  315,  314,  313,  311,  305,  304,  303,  302,  301,
-      300,  298,  297,  295,  294,  293,  292,  291,  290,  289,
-      288,  287,  286,  285,  284,  283,  282,  281,  280,  279,
-      278,  277,  276,  275,  274,  273,  272,  271,  270,  269,
-      268,  267,  266,  265,  264,  263,  262,  261,  260,  259,
-      258,  257,  256,  255,  254,  253,  252,  251,  250,  249,
-      248,  247,  246,  244,  243,  242,  241,  240,  239,  237,
-
-      236,  235,  233,  232,  231,  230,  229,  228,  227,  226,
-      225,  224,  223,  222,  221,  220,  219,  218,  217,  216,
-      215,  214,  213,  212,  211,  210,  209,  208,  207,  206,
-      204,  203,  202,  201,  200,  189,  188,  185,  184,  183,
-      182,  181,  180,  179,  178,  177,  176,  175,  169,  167,
-      164,  162,  160,  159,  158,  157,  156,  155,  154,  149,
-      148,  147,  146,  143,  141,  140,  139,  138,  137,  136,
-      135,  134,  133,  132,  131,  129,  128,  127,  126,  125,
-      124,  123,  122,  121,  120,  119,  118,  117,  116,  115,
-      114,  112,  111,  110,  109,  108,  107,  106,  105,  104,
-
-      103,  101,  100,   99,   98,   97,   95,   94,   93,   92,
-       91,   90,   89,   88,   86,   85,   84,   83,   82,   69,
-       67,   66,   64,   55,   54,    3,  964,  964,  964,  964,
-      964,  964,  964,  964,  964,  964,  964,  964,  964,  964,
-      964,  964,  964,  964,  964,  964,  964,  964,  964,  964,
-      964,  964,  964,  964,  964,  964,  964,  964,  964,  964,
-      964,  964,  964,  964,  964,  964,  964,  964,  964,  964,
-      964,  964,  964,  964,  964,  964,  964,  964,  964,  964,
-      964,  964,  964,  964,  964,  964,  964,  964,  964,  964,
-      964,  964,  964,  964,  964,  964,  964,  964,  964,  964,
-
-      964
+       25,   36,   27,   25,   27,  712,  233,   29,   25,  167,
+       27,  713,   25,   30,   31,   25,   31,  167,   36,   25,
+      113,  169,   25,   25,   34,  113,   27,   25,   27,  113,
+       34,   35,   37,   35,   31,  169,  233,   39,   27,  714,
+       42,   34,   30,   36,  715,  716,   37,   45,   34,   37,
+       35,   44,   34,   38,   39,   47,   34,   42,   49,   48,
+       34,   35,   38,  717,   45,   39,  719,   38,   44,   35,
+       38,   37,   47,   39,  492,   49,   48,   38,  492,   39,
+       42,  720,   45,   44,   38,   38,   38,   48,   43,   38,
+
+       43,   47,   38,   40,   46,   48,   50,   43,   40,   51,
+       49,   43,   40,   43,   43,   43,   40,  204,   40,   40,
+       40,   46,   52,   50,  721,  722,   51,   40,   46,   40,
+       43,  724,  204,  204,   43,   40,  725,   51,   41,   52,
+       40,   40,   50,  726,   53,   40,  727,   41,   53,   40,
+       41,   41,   41,   41,   41,   41,   57,   57,   57,   57,
+       57,  297,   41,  297,  294,   53,  728,  448,  294,   52,
+       65,   65,   65,   65,   65,  294,  448,   41,   74,   74,
+       74,   74,   74,   75,   65,   75,   75,   75,   75,   75,
+       76,   76,   74,  455,   76,   76,   76,   76,   76,   75,
+
+      102,  688,  102,  102,  729,  688,  455,  190,  190,  102,
+       65,  190,  190,  190,  190,  190,  730,  731,   74,  195,
+      195,  195,  195,  195,  732,   75,  733,  734,  735,  736,
+      196,  196,  737,  195,  196,  196,  196,  196,  196,  197,
+      197,  197,  197,  197,  198,  198,  198,  198,  198,  304,
+      304,  304,  304,  304,  305,  305,  305,  305,  305,  195,
+      306,  306,  738,  740,  306,  306,  306,  306,  306,  307,
+      307,  307,  307,  307,  308,  308,  308,  308,  308,  418,
+      418,  418,  418,  418,  419,  419,  419,  419,  419,  456,
+      742,  744,  745,  746,  747,  748,  749,  750,  751,  456,
+
+      753,  754,  755,  456,  756,  757,  758,  760,  761,  761,
+      762,  761,  761,  761,  761,  761,  761,  761,  761,  761,
+      761,  763,  764,  765,  766,  767,  761,  761,  761,  761,
+      761,  768,  769,  770,  771,  772,  773,  774,  775,  776,
+      778,  779,  780,  781,  782,  784,  785,  786,  788,  792,
+      793,  795,  796,  797,  798,  761,  800,  801,  802,  803,
+      804,  805,  806,  807,  809,  810,  811,  812,  813,  814,
+      817,  820,  821,  822,  823,  824,  825,  826,  827,  828,
+      761,  761,  794,  794,  829,  794,  794,  794,  794,  794,
+      794,  794,  794,  794,  794,  830,  832,  834,  835,  836,
+
+      794,  794,  794,  794,  794,  838,  839,  840,  841,  842,
+      843,  844,  845,  847,  848,  849,  850,  851,  852,  853,
+      854,  855,  856,  857,  859,  861,  862,  863,  864,  794,
+      865,  866,  867,  868,  869,  870,  871,  872,  873,  874,
+      878,  879,  880,  882,  883,  884,  885,  886,  887,  888,
+      889,  890,  891,  893,  794,  794,  894,  895,  896,  897,
+      898,  899,  900,  901,  902,  903,  906,  907,  908,  909,
+      910,  911,  912,  913,  914,  915,  916,  917,  918,  919,
+      920,  921,  922,  923,  924,  925,  926,  927,  928,  930,
+      931,  932,  933,  934,  936,  937,  939,  940,  941,  942,
+
+      943,  944,  946,  947,  948,  949,  950,  951,  952,  953,
+      955,  956,  959,  960,  707,  960,  961,  706,  961,  962,
+      705,  962,  963,  703,  963,  699,  698,  697,  696,  695,
+      694,  693,  690,  689,  687,  686,  685,  682,  681,  680,
+      679,  678,  676,  675,  674,  672,  671,  670,  669,  668,
+      667,  666,  665,  664,  663,  662,  659,  658,  657,  656,
+      655,  654,  653,  652,  651,  650,  649,  648,  647,  646,
+      645,  644,  643,  642,  641,  640,  639,  638,  636,  635,
+      633,  632,  631,  630,  629,  627,  626,  625,  624,  623,
+      622,  621,  620,  618,  617,  616,  615,  614,  613,  612,
+
+      610,  609,  608,  606,  605,  604,  603,  601,  600,  599,
+      598,  597,  596,  595,  594,  593,  591,  589,  588,  587,
+      586,  585,  584,  580,  579,  578,  576,  574,  573,  572,
+      571,  570,  569,  568,  565,  563,  562,  560,  559,  558,
+      557,  555,  552,  551,  549,  548,  547,  546,  545,  544,
+      543,  541,  540,  538,  537,  536,  535,  534,  531,  530,
+      529,  527,  526,  525,  524,  523,  522,  520,  518,  517,
+      516,  515,  512,  511,  510,  509,  508,  507,  506,  503,
+      502,  500,  499,  498,  497,  496,  495,  493,  491,  490,
+      489,  488,  487,  486,  485,  483,  482,  481,  480,  476,
+
+      475,  474,  471,  469,  467,  465,  464,  462,  461,  459,
+      458,  454,  453,  451,  450,  449,  447,  446,  445,  444,
+      443,  441,  440,  439,  438,  437,  436,  435,  434,  433,
+      432,  431,  430,  429,  428,  426,  425,  424,  423,  422,
+      421,  420,  417,  416,  415,  414,  413,  412,  411,  408,
+      407,  406,  405,  403,  401,  400,  399,  398,  397,  395,
+      394,  393,  392,  390,  388,  386,  385,  384,  383,  382,
+      381,  380,  379,  378,  377,  376,  375,  374,  373,  372,
+      371,  370,  369,  368,  366,  364,  363,  361,  360,  359,
+      358,  357,  356,  354,  352,  351,  350,  348,  347,  346,
+
+      345,  344,  343,  342,  341,  340,  339,  336,  335,  334,
+      333,  332,  330,  329,  328,  327,  326,  325,  324,  322,
+      321,  320,  319,  318,  316,  315,  314,  313,  312,  311,
+      309,  303,  302,  301,  300,  299,  298,  296,  295,  293,
+      292,  291,  290,  289,  288,  287,  286,  285,  284,  283,
+      282,  281,  280,  279,  278,  277,  276,  275,  274,  273,
+      272,  271,  270,  269,  268,  267,  266,  265,  264,  263,
+      262,  261,  260,  259,  258,  257,  256,  255,  254,  253,
+      252,  251,  250,  249,  248,  247,  246,  245,  243,  242,
+      241,  240,  239,  238,  236,  235,  234,  232,  231,  230,
+
+      229,  228,  227,  226,  225,  224,  223,  222,  221,  220,
+      219,  218,  217,  216,  215,  214,  213,  212,  211,  210,
+      209,  208,  207,  206,  205,  203,  202,  201,  200,  199,
+      188,  187,  184,  183,  182,  181,  180,  179,  178,  177,
+      176,  175,  174,  168,  166,  163,  161,  159,  158,  157,
+      156,  155,  154,  153,  148,  147,  146,  145,  142,  140,
+      139,  138,  137,  136,  135,  134,  133,  132,  131,  129,
+      128,  127,  126,  125,  124,  123,  122,  121,  120,  119,
+      118,  117,  116,  115,  114,  112,  111,  110,  109,  108,
+      107,  106,  105,  104,  103,  101,  100,   99,   98,   97,
+
+       95,   94,   93,   92,   91,   90,   89,   88,   86,   85,
+       84,   83,   82,   69,   67,   66,   64,   55,   54,    3,
+      958,  958,  958,  958,  958,  958,  958,  958,  958,  958,
+      958,  958,  958,  958,  958,  958,  958,  958,  958,  958,
+      958,  958,  958,  958,  958,  958,  958,  958,  958,  958,
+      958,  958,  958,  958,  958,  958,  958,  958,  958,  958,
+      958,  958,  958,  958,  958,  958,  958,  958,  958,  958,
+      958,  958,  958,  958,  958,  958,  958,  958,  958,  958,
+      958,  958,  958,  958,  958,  958,  958,  958,  958,  958,
+      958,  958,  958,  958,  958
+
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -1010,7 +1007,7 @@ void   skipline(void);
 	     && ferror( yyin ) )					\
      YY_FATAL_ERROR( "input in flex scanner failed" );
 
-#line 1014 "Gmsh.yy.cpp"
+#line 1011 "Gmsh.yy.cpp"
 
 /* Macros after this point can all be overridden by user definitions in
  * section 1.
@@ -1158,13 +1155,13 @@ YY_MALLOC_DECL
 YY_DECL
 	{
 	register yy_state_type yy_current_state;
-	register char *yy_cp = NULL, *yy_bp = NULL;
+	register char *yy_cp, *yy_bp;
 	register int yy_act;
 
 #line 60 "Gmsh.l"
 
 
-#line 1168 "Gmsh.yy.cpp"
+#line 1165 "Gmsh.yy.cpp"
 
 	if ( yy_init )
 		{
@@ -1215,13 +1212,13 @@ yy_match:
 			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 				{
 				yy_current_state = (int) yy_def[yy_current_state];
-				if ( yy_current_state >= 965 )
+				if ( yy_current_state >= 959 )
 					yy_c = yy_meta[(unsigned int) yy_c];
 				}
 			yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
 			++yy_cp;
 			}
-		while ( yy_base[yy_current_state] != 1227 );
+		while ( yy_base[yy_current_state] != 1221 );
 
 yy_find_action:
 		yy_act = yy_accept[yy_current_state];
@@ -1594,28 +1591,28 @@ return tOrder;
 	YY_BREAK
 case 70:
 YY_RULE_SETUP
-#line 145 "Gmsh.l"
-return tOptions;
+#line 146 "Gmsh.l"
+return tPhysical;
 	YY_BREAK
 case 71:
 YY_RULE_SETUP
 #line 147 "Gmsh.l"
-return tPhysical;
+return tPi;
 	YY_BREAK
 case 72:
 YY_RULE_SETUP
 #line 148 "Gmsh.l"
-return tPi;
+return tPlane;
 	YY_BREAK
 case 73:
 YY_RULE_SETUP
 #line 149 "Gmsh.l"
-return tPlane;
+return tPoint;
 	YY_BREAK
 case 74:
 YY_RULE_SETUP
 #line 150 "Gmsh.l"
-return tPoint;
+return tProgression;
 	YY_BREAK
 case 75:
 YY_RULE_SETUP
@@ -1625,495 +1622,490 @@ return tProgression;
 case 76:
 YY_RULE_SETUP
 #line 152 "Gmsh.l"
-return tProgression;
+return tParametric;
 	YY_BREAK
 case 77:
 YY_RULE_SETUP
 #line 153 "Gmsh.l"
-return tParametric;
+return tPrintf ;
 	YY_BREAK
 case 78:
 YY_RULE_SETUP
-#line 154 "Gmsh.l"
-return tPrintf ;
+#line 155 "Gmsh.l"
+return tRecombine;
 	YY_BREAK
 case 79:
 YY_RULE_SETUP
 #line 156 "Gmsh.l"
-return tRecombine;
+return tRotate;
 	YY_BREAK
 case 80:
 YY_RULE_SETUP
 #line 157 "Gmsh.l"
-return tRotate;
+return tRuled;
 	YY_BREAK
 case 81:
 YY_RULE_SETUP
-#line 158 "Gmsh.l"
-return tRuled;
+#line 159 "Gmsh.l"
+return tSqrt ;
 	YY_BREAK
 case 82:
 YY_RULE_SETUP
 #line 160 "Gmsh.l"
-return tSqrt ;
+return tSin ;
 	YY_BREAK
 case 83:
 YY_RULE_SETUP
 #line 161 "Gmsh.l"
-return tSin ;
+return tSinh ;
 	YY_BREAK
 case 84:
 YY_RULE_SETUP
 #line 162 "Gmsh.l"
-return tSinh ;
+return tPhysical;
 	YY_BREAK
 case 85:
 YY_RULE_SETUP
 #line 163 "Gmsh.l"
-return tPhysical;
+return tSpline;
 	YY_BREAK
 case 86:
 YY_RULE_SETUP
 #line 164 "Gmsh.l"
-return tSpline;
+return tSurface;
 	YY_BREAK
 case 87:
 YY_RULE_SETUP
 #line 165 "Gmsh.l"
-return tSurface;
+return tSymmetry;
 	YY_BREAK
 case 88:
 YY_RULE_SETUP
 #line 166 "Gmsh.l"
-return tSymmetry;
+return tScript;
 	YY_BREAK
 case 89:
 YY_RULE_SETUP
-#line 167 "Gmsh.l"
-return tScript;
+#line 168 "Gmsh.l"
+return tTransfinite;
 	YY_BREAK
 case 90:
 YY_RULE_SETUP
 #line 169 "Gmsh.l"
-return tTransfinite;
+return tTranslate;
 	YY_BREAK
 case 91:
 YY_RULE_SETUP
 #line 170 "Gmsh.l"
-return tTranslate;
+return tTanh ;
 	YY_BREAK
 case 92:
 YY_RULE_SETUP
 #line 171 "Gmsh.l"
-return tTanh ;
+return tTan;
 	YY_BREAK
 case 93:
 YY_RULE_SETUP
 #line 172 "Gmsh.l"
-return tTan;
+return tTrimmed;
 	YY_BREAK
 case 94:
 YY_RULE_SETUP
-#line 173 "Gmsh.l"
-return tTrimmed;
+#line 174 "Gmsh.l"
+return tUsing;
 	YY_BREAK
 case 95:
 YY_RULE_SETUP
-#line 175 "Gmsh.l"
-return tUsing;
+#line 176 "Gmsh.l"
+return tView;
 	YY_BREAK
 case 96:
 YY_RULE_SETUP
 #line 177 "Gmsh.l"
-return tView;
+return tVolume;
 	YY_BREAK
 case 97:
 YY_RULE_SETUP
-#line 178 "Gmsh.l"
-return tVolume;
+#line 179 "Gmsh.l"
+return tWith;
 	YY_BREAK
 case 98:
 YY_RULE_SETUP
-#line 180 "Gmsh.l"
-return tWith;
+#line 181 "Gmsh.l"
+return tFor;
 	YY_BREAK
 case 99:
 YY_RULE_SETUP
 #line 182 "Gmsh.l"
-return tFor;
+return tEndFor;
 	YY_BREAK
 case 100:
 YY_RULE_SETUP
 #line 183 "Gmsh.l"
-return tEndFor;
+return tScript;
 	YY_BREAK
 case 101:
 YY_RULE_SETUP
 #line 184 "Gmsh.l"
-return tScript;
+return tExit;
 	YY_BREAK
 case 102:
 YY_RULE_SETUP
 #line 185 "Gmsh.l"
-return tExit;
+return tMerge;
 	YY_BREAK
 case 103:
 YY_RULE_SETUP
-#line 186 "Gmsh.l"
-return tMerge;
+#line 187 "Gmsh.l"
+return tScalarTetrahedron;
 	YY_BREAK
 case 104:
 YY_RULE_SETUP
 #line 188 "Gmsh.l"
-return tScalarTetrahedron;
+return tVectorTetrahedron;
 	YY_BREAK
 case 105:
 YY_RULE_SETUP
 #line 189 "Gmsh.l"
-return tVectorTetrahedron;
+return tTensorTetrahedron;
 	YY_BREAK
 case 106:
 YY_RULE_SETUP
 #line 190 "Gmsh.l"
-return tTensorTetrahedron;
+return tScalarTriangle;
 	YY_BREAK
 case 107:
 YY_RULE_SETUP
 #line 191 "Gmsh.l"
-return tScalarTriangle;
+return tVectorTriangle;
 	YY_BREAK
 case 108:
 YY_RULE_SETUP
 #line 192 "Gmsh.l"
-return tVectorTriangle;
+return tTensorTriangle;
 	YY_BREAK
 case 109:
 YY_RULE_SETUP
 #line 193 "Gmsh.l"
-return tTensorTriangle;
+return tScalarLine;
 	YY_BREAK
 case 110:
 YY_RULE_SETUP
 #line 194 "Gmsh.l"
-return tScalarLine;
+return tVectorLine;
 	YY_BREAK
 case 111:
 YY_RULE_SETUP
 #line 195 "Gmsh.l"
-return tVectorLine;
+return tTensorLine;
 	YY_BREAK
 case 112:
 YY_RULE_SETUP
 #line 196 "Gmsh.l"
-return tTensorLine;
+return tScalarPoint;
 	YY_BREAK
 case 113:
 YY_RULE_SETUP
 #line 197 "Gmsh.l"
-return tScalarPoint;
+return tVectorPoint;
 	YY_BREAK
 case 114:
 YY_RULE_SETUP
 #line 198 "Gmsh.l"
-return tVectorPoint;
+return tTensorPoint;
 	YY_BREAK
 case 115:
 YY_RULE_SETUP
-#line 199 "Gmsh.l"
-return tTensorPoint;
+#line 201 "Gmsh.l"
+return tCARTESIAN_POINT;
 	YY_BREAK
 case 116:
 YY_RULE_SETUP
 #line 202 "Gmsh.l"
-return tCARTESIAN_POINT;
+return tB_SPLINE_SURFACE_WITH_KNOTS;
 	YY_BREAK
 case 117:
 YY_RULE_SETUP
 #line 203 "Gmsh.l"
-return tB_SPLINE_SURFACE_WITH_KNOTS;
+return tB_SPLINE_CURVE_WITH_KNOTS;
 	YY_BREAK
 case 118:
 YY_RULE_SETUP
 #line 204 "Gmsh.l"
-return tB_SPLINE_CURVE_WITH_KNOTS;
+return tUNSPECIFIED;
 	YY_BREAK
 case 119:
 YY_RULE_SETUP
 #line 205 "Gmsh.l"
-return tUNSPECIFIED;
+return tCONTINUOUS;
 	YY_BREAK
 case 120:
 YY_RULE_SETUP
 #line 206 "Gmsh.l"
-return tCONTINUOUS;
+return tFALSE;
 	YY_BREAK
 case 121:
 YY_RULE_SETUP
 #line 207 "Gmsh.l"
-return tFALSE;
+return tTRUE;
 	YY_BREAK
 case 122:
 YY_RULE_SETUP
 #line 208 "Gmsh.l"
-return tTRUE;
+return tU;
 	YY_BREAK
 case 123:
 YY_RULE_SETUP
 #line 209 "Gmsh.l"
-return tU;
+return tV;
 	YY_BREAK
 case 124:
 YY_RULE_SETUP
 #line 210 "Gmsh.l"
-return tV;
+return tORIENTED_EDGE;
 	YY_BREAK
 case 125:
 YY_RULE_SETUP
 #line 211 "Gmsh.l"
-return tORIENTED_EDGE;
+return tEDGE_CURVE;
 	YY_BREAK
 case 126:
 YY_RULE_SETUP
 #line 212 "Gmsh.l"
-return tEDGE_CURVE;
+return tEDGE_LOOP;
 	YY_BREAK
 case 127:
 YY_RULE_SETUP
 #line 213 "Gmsh.l"
-return tEDGE_LOOP;
+return tVERTEX_POINT;
 	YY_BREAK
 case 128:
 YY_RULE_SETUP
 #line 214 "Gmsh.l"
-return tVERTEX_POINT;
+return tFACE_OUTER_BOUND;
 	YY_BREAK
 case 129:
 YY_RULE_SETUP
 #line 215 "Gmsh.l"
-return tFACE_OUTER_BOUND;
+return tFACE_BOUND;
 	YY_BREAK
 case 130:
 YY_RULE_SETUP
 #line 216 "Gmsh.l"
-return tFACE_BOUND;
+return tADVANCED_FACE;
 	YY_BREAK
 case 131:
 YY_RULE_SETUP
 #line 217 "Gmsh.l"
-return tADVANCED_FACE;
+return tLine;
 	YY_BREAK
 case 132:
 YY_RULE_SETUP
 #line 218 "Gmsh.l"
-return tLine;
+return tVECTOR;
 	YY_BREAK
 case 133:
 YY_RULE_SETUP
 #line 219 "Gmsh.l"
-return tVECTOR;
+return tDIRECTION;
 	YY_BREAK
 case 134:
 YY_RULE_SETUP
 #line 220 "Gmsh.l"
-return tDIRECTION;
+return tAXIS2_PLACEMENT_3D;
 	YY_BREAK
 case 135:
 YY_RULE_SETUP
 #line 221 "Gmsh.l"
-return tAXIS2_PLACEMENT_3D;
+return tPLANE;
 	YY_BREAK
 case 136:
 YY_RULE_SETUP
 #line 222 "Gmsh.l"
-return tPLANE;
+return tHEADER;
 	YY_BREAK
 case 137:
 YY_RULE_SETUP
 #line 223 "Gmsh.l"
-return tHEADER;
+return tDATA;
 	YY_BREAK
 case 138:
 YY_RULE_SETUP
 #line 224 "Gmsh.l"
-return tDATA;
+return tFILE_SCHEMA;
 	YY_BREAK
 case 139:
 YY_RULE_SETUP
 #line 225 "Gmsh.l"
-return tFILE_SCHEMA;
+return tFILE_NAME;
 	YY_BREAK
 case 140:
 YY_RULE_SETUP
 #line 226 "Gmsh.l"
-return tFILE_NAME;
+return tFILE_DESCRIPTION;
 	YY_BREAK
 case 141:
 YY_RULE_SETUP
 #line 227 "Gmsh.l"
-return tFILE_DESCRIPTION;
+return tISO;
 	YY_BREAK
 case 142:
 YY_RULE_SETUP
 #line 228 "Gmsh.l"
-return tISO;
+return tENDISO;
 	YY_BREAK
 case 143:
 YY_RULE_SETUP
 #line 229 "Gmsh.l"
-return tENDISO;
+return tENDSEC;
 	YY_BREAK
 case 144:
 YY_RULE_SETUP
 #line 230 "Gmsh.l"
-return tENDSEC;
+return tCLOSED_SHELL;
 	YY_BREAK
 case 145:
 YY_RULE_SETUP
 #line 231 "Gmsh.l"
-return tCLOSED_SHELL;
+return  tADVANCED_BREP_SHAPE_REPRESENTATION;
 	YY_BREAK
 case 146:
 YY_RULE_SETUP
 #line 232 "Gmsh.l"
-return  tADVANCED_BREP_SHAPE_REPRESENTATION;
+return tMANIFOLD_SOLID_BREP;
 	YY_BREAK
 case 147:
 YY_RULE_SETUP
 #line 233 "Gmsh.l"
-return tMANIFOLD_SOLID_BREP;
+return tCYLINDRICAL_SURFACE;
 	YY_BREAK
 case 148:
 YY_RULE_SETUP
 #line 234 "Gmsh.l"
-return tCYLINDRICAL_SURFACE;
+return tCONICAL_SURFACE;
 	YY_BREAK
 case 149:
 YY_RULE_SETUP
 #line 235 "Gmsh.l"
-return tCONICAL_SURFACE;
+return tTOROIDAL_SURFACE;
 	YY_BREAK
 case 150:
 YY_RULE_SETUP
 #line 236 "Gmsh.l"
-return tTOROIDAL_SURFACE;
+return tCIRCLE;
 	YY_BREAK
 case 151:
 YY_RULE_SETUP
 #line 237 "Gmsh.l"
-return tCIRCLE;
+return tTRIMMED_CURVE;
 	YY_BREAK
 case 152:
 YY_RULE_SETUP
 #line 238 "Gmsh.l"
-return tTRIMMED_CURVE;
+return tGEOMETRIC_SET;
 	YY_BREAK
 case 153:
 YY_RULE_SETUP
 #line 239 "Gmsh.l"
-return tGEOMETRIC_SET;
+return tCOMPOSITE_CURVE_SEGMENT;
 	YY_BREAK
 case 154:
 YY_RULE_SETUP
 #line 240 "Gmsh.l"
-return tCOMPOSITE_CURVE_SEGMENT;
+return tCOMPOSITE_CURVE;
 	YY_BREAK
 case 155:
 YY_RULE_SETUP
 #line 241 "Gmsh.l"
-return tCOMPOSITE_CURVE;
+return tPRODUCT_DEFINITION;
 	YY_BREAK
 case 156:
 YY_RULE_SETUP
 #line 242 "Gmsh.l"
-return tPRODUCT_DEFINITION;
+return tPRODUCT_DEFINITION_SHAPE;
 	YY_BREAK
 case 157:
 YY_RULE_SETUP
 #line 243 "Gmsh.l"
-return tPRODUCT_DEFINITION_SHAPE;
+return tSHAPE_DEFINITION_REPRESENTATION;
 	YY_BREAK
 case 158:
 YY_RULE_SETUP
-#line 244 "Gmsh.l"
-return tSHAPE_DEFINITION_REPRESENTATION;
+#line 245 "Gmsh.l"
+return tVertex;
 	YY_BREAK
 case 159:
 YY_RULE_SETUP
 #line 246 "Gmsh.l"
-return tVertex;
+return tFacet;
 	YY_BREAK
 case 160:
 YY_RULE_SETUP
 #line 247 "Gmsh.l"
-return tFacet;
+return tNormal;
 	YY_BREAK
 case 161:
 YY_RULE_SETUP
 #line 248 "Gmsh.l"
-return tNormal;
+return tOuter;
 	YY_BREAK
 case 162:
 YY_RULE_SETUP
 #line 249 "Gmsh.l"
-return tOuter;
+return tLoopSTL;
 	YY_BREAK
 case 163:
 YY_RULE_SETUP
 #line 250 "Gmsh.l"
-return tLoopSTL;
+return tEndLoop;
 	YY_BREAK
 case 164:
 YY_RULE_SETUP
 #line 251 "Gmsh.l"
-return tEndLoop;
+return tEndFacet;
 	YY_BREAK
 case 165:
 YY_RULE_SETUP
 #line 252 "Gmsh.l"
-return tEndFacet;
+{skipline();return tEndSolid;}
 	YY_BREAK
 case 166:
 YY_RULE_SETUP
 #line 253 "Gmsh.l"
-{skipline();return tEndSolid;}
-	YY_BREAK
-case 167:
-YY_RULE_SETUP
-#line 254 "Gmsh.l"
 {skipline();return tSolid;}
 	YY_BREAK
-case 168:
+case 167:
 YY_RULE_SETUP
-#line 256 "Gmsh.l"
+#line 255 "Gmsh.l"
 {yylval.d = (double)atoi((char*)(yytext+1)); return tDOUBLE;}
 	YY_BREAK
+case 168:
+#line 258 "Gmsh.l"
 case 169:
 #line 259 "Gmsh.l"
 case 170:
 #line 260 "Gmsh.l"
 case 171:
-#line 261 "Gmsh.l"
-case 172:
 YY_RULE_SETUP
-#line 261 "Gmsh.l"
+#line 260 "Gmsh.l"
 {yylval.d = atof((char *)yytext); return tDOUBLE;}
 	YY_BREAK
-case 173:
+case 172:
 YY_RULE_SETUP
-#line 263 "Gmsh.l"
+#line 262 "Gmsh.l"
 {yylval.c = strsave((char*)yytext); return tSTRING;}
 	YY_BREAK
-case 174:
+case 173:
 YY_RULE_SETUP
-#line 265 "Gmsh.l"
+#line 264 "Gmsh.l"
 return yytext[0];
 	YY_BREAK
-case 175:
+case 174:
 YY_RULE_SETUP
-#line 267 "Gmsh.l"
+#line 266 "Gmsh.l"
 ECHO;
 	YY_BREAK
-#line 2117 "Gmsh.yy.cpp"
+#line 2109 "Gmsh.yy.cpp"
 case YY_STATE_EOF(INITIAL):
 	yyterminate();
 
@@ -2405,7 +2397,7 @@ static yy_state_type yy_get_previous_state()
 		while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 			{
 			yy_current_state = (int) yy_def[yy_current_state];
-			if ( yy_current_state >= 965 )
+			if ( yy_current_state >= 959 )
 				yy_c = yy_meta[(unsigned int) yy_c];
 			}
 		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -2440,11 +2432,11 @@ yy_state_type yy_current_state;
 	while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 		{
 		yy_current_state = (int) yy_def[yy_current_state];
-		if ( yy_current_state >= 965 )
+		if ( yy_current_state >= 959 )
 			yy_c = yy_meta[(unsigned int) yy_c];
 		}
 	yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-	yy_is_jam = (yy_current_state == 964);
+	yy_is_jam = (yy_current_state == 958);
 
 	return yy_is_jam ? 0 : yy_current_state;
 	}
@@ -2999,7 +2991,7 @@ int main()
 	return 0;
 	}
 #endif
-#line 267 "Gmsh.l"
+#line 266 "Gmsh.l"
 
 
 #undef yywrap
diff --git a/Parser/Makefile b/Parser/Makefile
index ccb63be0240790362c3b5a79047832a8a84f9ded..434428ecd1f1b01e63f95e199f26e98f6b61fa88 100644
--- a/Parser/Makefile
+++ b/Parser/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.5 2000-12-05 15:23:57 geuzaine Exp $
+# $Id: Makefile,v 1.6 2000-12-07 08:46:27 geuzaine Exp $
 #
 # Makefile for "libParser.a"
 #
@@ -68,4 +68,4 @@ Gmsh.tab.o: Gmsh.tab.cpp ../Common/Gmsh.h ../Common/Message.h \
  ../Geo/ExtrudeParams.h ../Mesh/Metric.h ../Geo/DataBase.h \
  ../Mesh/Create.h ../Common/Views.h ../Graphics/ColorTable.h \
  ../Geo/StepGeomDatabase.h ../Common/Options.h ../Graphics/Draw.h \
- ../Common/Colors.h Parser.h
+ ../Common/Colors.h Parser.h ../Unix/Main.h
diff --git a/demos/demo-02.geo b/demos/demo-02.geo
index 0e0bb11100757c5ae448f4d66ff490960d50cc1c..43011af4cffb62d3b6df1e5e523fcaf501806529 100644
--- a/demos/demo-02.geo
+++ b/demos/demo-02.geo
@@ -41,9 +41,7 @@ Physical Volume (1) = {41} ;
    main window, print the file in 'geo' format, or add '-0' on the command
    line to get the full list of available options. */
 
-Options{
-  General.Rotation0 = 10;
-  General.Color.Background = Red;
-  Geometry.Color.Points = Orange;
-}
+General.Rotation0 = 10;
+General.Color.Background = Red;
+Geometry.Color.Points = Orange;
 
diff --git a/demos/demo-06.geo b/demos/demo-06.geo
index a026f4ac98d71b9ee8b1c6bea9f47a36fee374a3..827e854ad34ee9e9159c3c51b10060ba3c403a61 100644
--- a/demos/demo-06.geo
+++ b/demos/demo-06.geo
@@ -160,45 +160,32 @@ Physical Surface (711) = {66} ;
    widget). GUI colors and fonts can be changed in a standard X
    resource file (.gmshrc in your home directory). */
 
-Options{
-  General{
-    Color{
-      Background = {39, 64, 139} ;
-      Axes =  OrangeRed1; // Color names are the classical X11 names
-      SmallAxes = LightGray;
-      Text = Gray88 ;
-    }
-  }
-  Geometry{
-    Color{
-      Points = Yellow;
-      Lines = {255, 255, 255, 128} ; // semi-transparent white
-      Surfaces = {Orange, 60} ; // almost transparent orange
-      Volumes = Green ;
-      PointsSelect = White ;
-      LinesSelect = White ;
-      SurfacesSelect = White ;
-    }
-  }
-  Mesh{
-    Color{
-      Points = Black;
-      PointsSupp = Orchid;
-      Lines = Black;
-      // Color cycle for volume mesh
-      One = Gray10 ;
-      Two = Gray20 ;
-      Three = Gray30 ;
-      Four = Gray40 ;
-      Five = Gray50 ;
-      Six = Gray60 ;
-      Seven = Gray70 ;
-      Eight = Gray80 ;
-      Nine = Gray90 ;
-      Ten = Black ;
-    }
-  }
-}
+General.Color.Background = {39, 64, 139} ;
+General.Color.Axes =  OrangeRed1; // Color names are the classical X11 names
+General.Color.SmallAxes = LightGray;
+General.Color.Text = Gray88 ;
+
+Geometry.Color.Points = Yellow;
+Geometry.Color.Lines = {255, 255, 255, 128} ; // semi-transparent white
+Geometry.Color.Surfaces = {Orange, 60} ; // almost transparent orange
+Geometry.Color.Volumes = Green ;
+Geometry.Color.PointsSelect = White ;
+Geometry.Color.LinesSelect = White ;
+Geometry.Color.SurfacesSelect = White ;
+
+Mesh.Color.Points = Black;
+Mesh.Color.PointsSupp = Orchid;
+Mesh.Color.Lines = Black;
+Mesh.Color.One = Gray10 ;
+Mesh.Color.Two = Gray20 ;
+Mesh.Color.Three = Gray30 ;
+Mesh.Color.Four = Gray40 ;
+Mesh.Color.Five = Gray50 ;
+Mesh.Color.Six = Gray60 ;
+Mesh.Color.Seven = Gray70 ;
+Mesh.Color.Eight = Gray80 ;
+Mesh.Color.Nine = Gray90 ;
+Mesh.Color.Ten = Black ;
 
 /* README: X resources can be specified in a '.gmshrc' in your home
    directory or app-defaults directory, or in your .Xdefaults file.