diff --git a/Box/Box.cpp b/Box/Box.cpp
index 9249fcb401a7f8dc421271f2d9dc00acb8717f72..19914abedc8c82f29755a4723a5ec31defd0c820 100644
--- a/Box/Box.cpp
+++ b/Box/Box.cpp
@@ -13,7 +13,9 @@
 
 #include "Static.h"
 
-int VERBOSE = 0 ;
+char *TheFileNameTab[MAX_OPEN_FILES];
+char *ThePathForIncludes=NULL, *TheBgmFileName=NULL;
+int   VERBOSE = 0 ;
 
 char progname[]  = "This is Gmsh (non-interactive)" ;
 char copyright[] = "Copyright (C) 1997-2000 C. Geuzaine, J.-F. Remacle" ;
@@ -27,7 +29,6 @@ char clargs[]    =
   "  -format msh|unv|gref  mesh format (default: msh)\n"
   "  -algo iso|aniso       mesh algorithm (default: iso)\n"
   "  -scale float          scaling factor (default: 1.0)\n"
-  "  -recombine            recombine extruded meshes\n"
   "  -bgm file             load backround mesh from file\n"
   "Other options:\n"	  
   "  -v                    print debug information\n"
@@ -74,7 +75,6 @@ void OpenProblem(char *name){
   
   InitSymbols();
   Init_Mesh(&M, 1);
-  BD_EXISTS = 1;
 
   strncpy(TheFileName,name,NAME_STR_L);
   strncpy(TheBaseFileName,name,NAME_STR_L);
@@ -107,12 +107,13 @@ void OpenProblem(char *name){
 /*  G e t _ O p t i o n s                                                   */
 /* ------------------------------------------------------------------------ */
 
-void Get_Options (int argc, char *argv[]) {
+void Get_Options (int argc, char *argv[], int *nbfiles) {
   int i=1;
 
   if(argc < 2) Info(0,argv[0]);
 
-  strncpy(TheFileNameTab[0], "unnamed.geo",NAME_STR_L);
+  TheFileNameTab[0] = "unnamed.geo" ;
+  *nbfiles = 0;
   
   while (i < argc) {
     
@@ -135,20 +136,15 @@ void Get_Options (int argc, char *argv[]) {
       }
       else if(!strcmp(argv[i]+1, "path")){ 
 	i++;
-	if(argv[i] != NULL){
-	  strncpy(ThePathForIncludes,argv[i++],NAME_STR_L);
-	}
+	if(argv[i] != NULL) ThePathForIncludes = argv[i++];
       }
       else if(!strcmp(argv[i]+1, "bgm")){ 
 	i++;
-	if(argv[i] != NULL){
-	  strncpy(TheBgmFileName,argv[i++],NAME_STR_L);
-	  INITIALBGMESH = ONFILE;
-	}
+	if(argv[i] != NULL) TheBgmFileName = argv[i++];
       }
       else if(!strcmp(argv[i]+1, "smooth")){ 
 	i++;
-	LISSAGE = atoi(argv[i]); i++;
+	CTX.mesh.nb_smoothing = atoi(argv[i]); i++;
       }
       else if(!strcmp(argv[i]+1, "scale")){
 	i++;
@@ -222,8 +218,8 @@ void Get_Options (int argc, char *argv[]) {
     }
 
     else {
-      if(NbFileName<MAX_OPEN_FILES){
-	strncpy(TheFileNameTab[NbFileName++], argv[i++], NAME_STR_L); 
+      if(*nbfiles < MAX_OPEN_FILES){
+	TheFileNameTab[(*nbfiles)++] = argv[i++]; 
       }
       else{
 	fprintf(stderr, "Error: Too many input files\n");
@@ -242,10 +238,10 @@ void Get_Options (int argc, char *argv[]) {
 /* ------------------------------------------------------------------------ */
 
 int main(int argc, char *argv[]){
-  int     i;
+  int     i, nbf;
 
   InitContext(&CTX);
-  Get_Options(argc, argv);
+  Get_Options(argc, argv, &nbf);
 
   signal(SIGINT,  Signal); 
   signal(SIGSEGV, Signal);
@@ -255,10 +251,10 @@ int main(int argc, char *argv[]){
   if(yyerrorstate)
     exit(1);
   else{
-    if(NbFileName>1){
-      for(i=1;i<NbFileName;i++) MergeProblem(TheFileNameTab[i]);
+    if(nbf>1){
+      for(i=1;i<nbf;i++) MergeProblem(TheFileNameTab[i]);
     }
-    if(INITIALBGMESH == ONFILE){
+    if(TheBgmFileName){
       MergeProblem(TheBgmFileName);
       if(List_Nbr(Post_ViewList)){
 	BGMWithView((Post_View*)List_Pointer(Post_ViewList, List_Nbr(Post_ViewList)-1));
diff --git a/Common/Context.cpp b/Common/Context.cpp
index 86ac187a633126fb30803a0b6666d355b051b370..b91abc811dfd309147a04d8d3c263c055da6b122 100644
--- a/Common/Context.cpp
+++ b/Common/Context.cpp
@@ -128,6 +128,7 @@ void InitColors(rgbacolors * col, int num){
 void InitContext(Context_T *ctx){
 
   ctx->interactive       = 0 ;
+  ctx->expose            = 0 ;
 
   ctx->r[0]              = 0.0 ;
   ctx->r[1]              = 0.0 ;
@@ -220,11 +221,14 @@ void InitContext(Context_T *ctx){
   ctx->mesh.format       = FORMAT_MSH ;
   ctx->mesh.nb_smoothing = 0 ;
   ctx->mesh.algo         = DELAUNAY_OLDALGO ;
+  ctx->mesh.point_insertion = CENTER_CIRCCIRC;
+  ctx->mesh.speed_max    = 0 ;
   ctx->mesh.degree       = 1 ;
-  ctx->mesh.is_limit_gamma = 0 ;
-  ctx->mesh.limit_gamma  = 0.1 ;
+  ctx->mesh.limit_gamma  = 0.0 ;
+  ctx->mesh.limit_eta    = 0.0 ;
+  ctx->mesh.limit_rho    = 0.0 ;
   ctx->mesh.dual         = 0 ;
-  ctx->mesh.reco_extrude = 0 ;
+  ctx->mesh.interactive  = 0 ;
 
   ctx->post.draw         = 1 ;
   ctx->post.scales       = 1 ;
@@ -236,13 +240,8 @@ void InitContext(Context_T *ctx){
   ctx->post.initial_nbiso = 15 ;
   ctx->post.anim_delay    = 0 ;
 
-#ifdef _UNIX
   ctx->print.type        = GLPRPAINTER ;
   ctx->print.format      = FORMAT_EPS ;
-#else
-  ctx->print.type        = -1 ;
-  ctx->print.format      = -1 ;
-#endif
 
   ctx->color.id = -1;
   InitColors(&ctx->color, 0) ;
diff --git a/Common/Context.h b/Common/Context.h
index 0f8140ee0ef32f9cb407e138b51acce69139279f..aa2f0657e9f429342823c4a13d13c9ef210540a8 100644
--- a/Common/Context.h
+++ b/Common/Context.h
@@ -50,6 +50,7 @@ typedef struct{
 typedef struct {
 
   int interactive;		/* 0=full gfx; -1=just parse; 1,2,3=batch mesh */
+  int expose;                   /* 1 if everything is ready to expose and draw */
 
   double r[3], t[3], s[3];	/* current rotation, translation and scale */
   int rlock[3], tlock[3], slock[3];	/* locks for r, t and s */
@@ -103,11 +104,11 @@ typedef struct {
     int draw;
     int points, lines, surfaces, volumes;
     int points_num, lines_num, surfaces_num, volumes_num;
-    int is_limit_gamma, dual;
-    double limit_gamma;
+    double limit_gamma, limit_eta, limit_rho;
+    int dual, interactive;
     int hidden, shade;
     int format, nb_smoothing, algo, degree;
-    int reco_extrude;
+    int point_insertion, speed_max;
     double normals, tangents, explode;
   } mesh;
 
diff --git a/Common/GmshUI.h b/Common/GmshUI.h
index f759c73139f49248bea044cea81d51da30caefd7..b69fa62f430477fa8b814c8172a438ea2b6cf632 100644
--- a/Common/GmshUI.h
+++ b/Common/GmshUI.h
@@ -8,7 +8,7 @@
 #include <GL/gl.h>
 #include <GL/glu.h>
 #include <GL/glx.h>
-#include <GL/GLwMDrawA.h>
+#include <GLwMDrawA.h>
 
 #else
 
diff --git a/Common/Static.h b/Common/Static.h
index 1cf77d9a3638d7adb8d39c12ed8e7b4e5b39e46e..5c3a00e52577261dc432fa59be1939653ffb5e35 100644
--- a/Common/Static.h
+++ b/Common/Static.h
@@ -1,6 +1,9 @@
 #ifndef _STATIC_H_
 #define _STATIC_H_
 
+/* This file defines the static structures for Gmsh. It should be
+   included only once, in any 'main' file */
+
 #include "Version.h"
 
 char gmsh_progname[]  = "This is Gmsh" ;
@@ -15,38 +18,23 @@ char gmsh_email[]     = "E-Mail           : "
 char gmsh_url[]       = "URL              : http://www.geuz.org/gmsh/";
 
 
-char  yyname[NAME_STR_L];
-int   yyerrorstate;
-
-char  TheFileNameTab[MAX_OPEN_FILES][NAME_STR_L], TheFileName[NAME_STR_L];
-char  TheBaseFileName[NAME_STR_L], TheMshFileName[NAME_STR_L], TheBgmFileName[NAME_STR_L];
-char  ThePathForIncludes[NAME_STR_L] = "";
+char TheFileName[NAME_STR_L], TheBaseFileName[NAME_STR_L];
+char yyname[NAME_STR_L];
+int  yyerrorstate;
 
 Context_T   CTX ;
 Mesh        M, *THEM, *LOCAL;
-Simplex     Boundary;
-
+int         CurrentNodeNumber, CurrentSimplexNumber;
 Tree_T     *EntitesVisibles = NULL;
-List_T     *TrsfVolNum = NULL;
 List_T     *Post_ViewList = NULL;
 
-double      LC, MiddleLC, FACTEUR_MULTIPLICATIF=1.0;
+double      LC, MiddleLC ;
 int         LC_ORDER;
-double      RANDOM_FACTOR=1.0, GLOBALSCALINGFACTOR=1.0;
-
-char       *TextBuffer, TextAbout[1024];
-
-int  NbFileName=0;
-int  EXPOSE = 0 ;
-int  WARNING_OVERRIDE=0;
-int  ACTUAL_ENTITY, SHOW_ALL;
-int  LocalNewPoint= CENTER_CIRCCIRC, FindQualityMethod=FEM_INTERPOLATION;
-int  Alerte_Point_Scabreux, Alerte_Point_Exterieur, Highlight_Selection=0;
-int  SPEED_MAX=0 ;
-int  LISSAGE=3; 
-int  INITIALBGMESH=NONE, TYPBGMESH=WITHPOINTS;
-int  CurrentNodeNumber, CurrentSimplexNumber;
-int  NbComplexVolumes=0, BD_EXISTS=0;
+double      FACTEUR_MULTIPLICATIF=1.0, GLOBALSCALINGFACTOR=1.0;
+
+/* Some garbage */
+
+int  TYPBGMESH=WITHPOINTS;
 int  FLAG_OLD_CIRCLE = 0 ; /* Pour David : cercles > Pi */
 
 
diff --git a/Common/Version.h b/Common/Version.h
index 05d5af1bcb0b8ab34f1ebd6e57ea97e9276b5ebd..b53f1bd87aee40766d68a703607a1fb8da610147 100644
--- a/Common/Version.h
+++ b/Common/Version.h
@@ -1,5 +1,5 @@
 #define GMSH_VERSION  0.995
-#define GMSH_DATE     "Thu Nov 23 00:50:59 CET 2000"
-#define GMSH_HOST     "geuz.montefiore.ulg.ac.be"
+#define GMSH_DATE     "Thu Nov 23 14:48:03 MET 2000"
+#define GMSH_HOST     "elap57.montefiore.ulg.ac.be"
 #define GMSH_PACKAGER "geuzaine"
-#define GMSH_OS       "Linux 2.2.16-22"
+#define GMSH_OS       "OSF1 V4.0"
diff --git a/Geo/ExtrudeParams.cpp b/Geo/ExtrudeParams.cpp
index ed9f19451d1eb4ea11fbe3145b7ee03dbb5dc8fb..47e61faa1f3e42c49713f56df95eb6ad3539dcdc 100644
--- a/Geo/ExtrudeParams.cpp
+++ b/Geo/ExtrudeParams.cpp
@@ -19,6 +19,7 @@ ExtrudeParams :: ExtrudeParams (int ModeEx){
   mesh.ExtrudeMesh = false;
   geo.Mode = ModeEx;
   mesh.Simplexes = true;
+  mesh.Recombine = false;
 }
 
 
diff --git a/Geo/ExtrudeParams.h b/Geo/ExtrudeParams.h
index 555451341a882191fc54c825dc36373343345acd..06e17fe7e2f548fdb4d34fa1149abe943d8c098d 100644
--- a/Geo/ExtrudeParams.h
+++ b/Geo/ExtrudeParams.h
@@ -7,9 +7,9 @@
 #define COPIED_ENTITY 2
 
 class ExtrudeParams{
-  public :
 
-    ExtrudeParams(int Mode = EXTRUDED_ENTITY);
+public :
+  ExtrudeParams(int Mode = EXTRUDED_ENTITY);
   void fill (int ep,double A, double B, double C,
 	     double X, double Y, double Z, double angle);
   void Extrude (  int iLayer, int iElemLayer,
@@ -18,7 +18,7 @@ class ExtrudeParams{
   void Rotate(double matr[3][3]);
   struct{
     bool    ExtrudeMesh;
-    bool    Simplexes;
+    bool    Simplexes, Recombine;
     int     NbLayer;
     int     NbElmLayer [NB_LAYER_MAX];
     int     ZonLayer   [NB_LAYER_MAX];
@@ -32,6 +32,7 @@ class ExtrudeParams{
     double pt[3];
     double angle;
   }geo;
+
 };
 
 #endif
diff --git a/Graphics/Draw.cpp b/Graphics/Draw.cpp
index 81b4ac75b0d6f65b630dd1526a13640426c0955c..6edee008674d7a2094b2885d211ce9a8ce55194d 100644
--- a/Graphics/Draw.cpp
+++ b/Graphics/Draw.cpp
@@ -7,6 +7,8 @@
 #include "Context.h"
 #include "MinMax.h"
 
+#include "CbGeneral.h"
+
 #ifdef _UNIX
 #include "Widgets.h"
 #include "XContext.h"
@@ -14,15 +16,10 @@ extern XContext_T   XCTX ;
 extern Widgets_T    WID ;
 #endif
 
-void set_r(int i, double val);
-void set_t(int i, double val);
-void set_s(int i, double val);
-
 extern Context_T    CTX ;
 extern GLdouble     vxmin, vxmax, vymin, vymax;
 extern Mesh         M;
 extern double       LC;
-extern int          BD_EXISTS, EXPOSE;
 extern List_T      *Post_ViewList;
 
 /* ------------------------------------------------------------------------ */
@@ -440,7 +437,7 @@ void ExposeCb(Widget w,XtPointer client_data, GLwDrawingAreaCallbackStruct *cb){
     return;
   }
 
-  if(!BD_EXISTS || !EXPOSE) return;
+  if(!CTX.expose) return;
   Init();
   Draw(); 
 
diff --git a/Graphics/Mesh.cpp b/Graphics/Mesh.cpp
index 208eb6f4391072d37cf0e3ace32f97dd33d11f60..79ca607fef9196aca599daddc341a85febc01555 100644
--- a/Graphics/Mesh.cpp
+++ b/Graphics/Mesh.cpp
@@ -190,12 +190,15 @@ void Draw_Simplex_Volume (void *a, void *b){
 
   if(!(*s)->V[3]) return;
 
-  /*
-  if(CTX.mesh.is_limit_gamma)
-  {
-        if((*s)->GammaShapeMeasure() > CTX.mesh.limit_gamma)return;
+  if(CTX.mesh.limit_gamma){
+    if((*s)->GammaShapeMeasure() > CTX.mesh.limit_gamma) return;
+  }
+  if(CTX.mesh.limit_eta){
+    if((*s)->EtaShapeMeasure() > CTX.mesh.limit_eta) return;
+  }
+  if(CTX.mesh.limit_rho){
+    if((*s)->RhoShapeMeasure() > CTX.mesh.limit_rho) return;
   }
-  */
 
   ColorSwitch((*s)->iEnt+1);
 
diff --git a/Mesh/2D_Mesh.cpp b/Mesh/2D_Mesh.cpp
index ec0b1d00fc6d3c0e73f026e62ac25a0705e6ed1f..b42bc5aaf30186922e3310958a42c332a811e794 100644
--- a/Mesh/2D_Mesh.cpp
+++ b/Mesh/2D_Mesh.cpp
@@ -25,9 +25,11 @@
 
 extern Mesh       *THEM;
 extern Context_T   CTX;
-extern int         CurrentNodeNumber, LocalNewPoint;
+extern int         CurrentNodeNumber;
 extern double      LC, FACTEUR_MULTIPLICATIF;
 
+int LocalNewPoint;
+
 PointRecord   *gPointArray;
 DocRecord     *BGMESH, *FGMESH;
 double         qual, newqual, L;
@@ -861,11 +863,8 @@ void Maillage_Automatique_VieuxCode (Surface * pS, Mesh * m, int ori){
     liste[i] = cp;
   }
 
-  if (pS->Method){
-    /* lets force this, since it's the only one that works... */
-    LocalNewPoint = CENTER_CIRCCIRC;
+  if (pS->Method)
     mesh_domain (liste, List_Nbr (pS->Contours), &M, &N, NULL, 0);
-  }
 
   for (i = 0; i < M.numpoints; i++){
     if (gPointArray[i].initial < 0){
@@ -1013,6 +1012,8 @@ void Maillage_Surface (void *data, void *dum){
   THESUPPORT = s->Support;
   THESURFACE = s;
 
+  LocalNewPoint = CTX.mesh.point_insertion;
+
   if (Tree_Nbr (s->Simplexes))
     Tree_Delete (s->Simplexes);
   s->Simplexes = Tree_Create (sizeof (Simplex *), compareQuality);
diff --git a/Mesh/2D_Mesh_Aniso.cpp b/Mesh/2D_Mesh_Aniso.cpp
index cc0e5435a3160ee1c3e50680f632d259c90d075a..d34e3c4bb2c99a15b5c301c924e591ecb177d756 100644
--- a/Mesh/2D_Mesh_Aniso.cpp
+++ b/Mesh/2D_Mesh_Aniso.cpp
@@ -31,7 +31,6 @@ MeshParameters:: MeshParameters ():
 
 extern Simplex MyNewBoundary;
 extern Mesh *THEM;
-extern int SPEED_MAX;
 extern int CurrentNodeNumber;
 extern double MAXIMUM_LC_FOR_SURFACE, LC, FACTEUR_MULTIPLICATIF;
 extern int Alerte_Point_Scabreux;
@@ -588,7 +587,7 @@ bool Bowyer_Watson_2D (Surface * sur, Vertex * v, Simplex * S, int force){
 
   /* calcul des volumes des simplexes crees */
 
-  if (Alerte_Point_Scabreux || !SPEED_MAX){
+  if (Alerte_Point_Scabreux || !CTX.mesh.speed_max){
     volume = 0.0;
     for (i = 0; i < List_Nbr (Simplexes_Destroyed); i++){
       VSIM_2D (List_Pointer (Simplexes_Destroyed, i), NULL);
@@ -977,7 +976,6 @@ int AlgorithmeMaillage2DAnisotropeModeJF (Surface * s){
   FACE_DIMENSION = 1;
 
   SURF = s;
-  SPEED_MAX = 0;
   LOCAL = NULL;
 
   if (s->Typ == MSH_SURF_PLAN || s->Typ == MSH_SURF_REGL || s->Typ == MSH_SURF_TRIC)
diff --git a/Mesh/2D_Util.cpp b/Mesh/2D_Util.cpp
index bc4b99190ddb591d0464d51ee6b8b6c2339887de..ab00d83bf99882887753961d7a2ba2163a1d86d0 100644
--- a/Mesh/2D_Util.cpp
+++ b/Mesh/2D_Util.cpp
@@ -4,7 +4,7 @@
 #include "Mesh.h"
 #include "2D_Mesh.h"
 
-extern int           LocalNewPoint, FindQualityMethod;
+extern int           LocalNewPoint;
 extern PointRecord  *gPointArray;
 extern Mesh         *THEM;
 
diff --git a/Mesh/3D_BGMesh.cpp b/Mesh/3D_BGMesh.cpp
index 6bce95e3f0237b035b3e1a11122298fb03776a4d..30248238aca3f4eb537fffc384a1f2fd8e2be9f3 100644
--- a/Mesh/3D_BGMesh.cpp
+++ b/Mesh/3D_BGMesh.cpp
@@ -7,7 +7,6 @@
 #include "Views.h"
 #include "Numeric.h"
 
-extern int Alerte_Point_Exterieur;
 extern double FACTEUR_MULTIPLICATIF;
 
 static Mesh m;
@@ -104,7 +103,7 @@ double Lc_XYZ (double X, double Y, double Z, Mesh * m){
     else if (Pt_In_Volume (X, Y, Z, m, &l, 0.2));
     else if (Pt_In_Volume (X, Y, Z, m, &l, 0.5));
     else{
-      Alerte_Point_Exterieur = 1;
+      Msg(WARNING, "Exterior Point");
       l = 1.e-25;
     }
     break;
diff --git a/Mesh/3D_Extrude.cpp b/Mesh/3D_Extrude.cpp
index db75cca95cf2517ef60193051ef3eadf67c7a427..7ea26a558e5f2d44bfde57a5ddb79081ba599918 100644
--- a/Mesh/3D_Extrude.cpp
+++ b/Mesh/3D_Extrude.cpp
@@ -8,15 +8,12 @@
 #include "Create.h"
 
 extern Mesh      *THEM;
-extern Context_T  CTX;
 extern int        CurrentNodeNumber;
 
 static Tree_T *Tree_Ares = NULL, *Tree_Swaps = NULL;
-
-Surface *THES;
-Volume *THEV;
-int TEST_IS_ALL_OK;
-
+static int TEST_IS_ALL_OK;
+static Surface *THES;
+static Volume *THEV;
 static ExtrudeParams *ep;
 
 typedef struct{
@@ -112,7 +109,7 @@ void Extrude_Simplex_Phase3 (void *data, void *dum){
   pS = (Simplex **) data;
   s = *pS;
 
-  if(s->V[3] && !CTX.mesh.reco_extrude){
+  if(s->V[3] && !ep->mesh.Recombine){
     Msg(ERROR, "Use '-recombine' to extrude with quadrangles");
   }
 
@@ -142,7 +139,7 @@ void Extrude_Simplex_Phase3 (void *data, void *dum){
       k++;
       if (ep->mesh.ZonLayer[i]){
 
-	if(CTX.mesh.reco_extrude){
+	if(ep->mesh.Recombine){
 	  if(s->V[3]){
 	    newh = Create_Hexahedron(v1,v2,v3,v4,v5,v6,v7,v8);
 	    newh->iEnt = ep->mesh.ZonLayer[i];
@@ -349,7 +346,7 @@ void Extrude_Vertex (void *data, void *dum){
 void Extrude_Surface1 (Surface * s){
   THES = s;
   Tree_Action (s->Vertices, Extrude_Vertex);
-  if(!CTX.mesh.reco_extrude) Tree_Action (s->Simplexes, Extrude_Simplex_Phase1);
+  if(!ep->mesh.Recombine) Tree_Action (s->Simplexes, Extrude_Simplex_Phase1);
 }
 
 void Extrude_Surface2 (Surface * s){
@@ -376,7 +373,7 @@ void Extrude_Seg (Vertex * V1, Vertex * V2){
       List_Read (V2->Extruded_Points, k, &v2);
       List_Read (V1->Extruded_Points, k + 1, &v3);
       List_Read (V2->Extruded_Points, k + 1, &v4);
-      if(CTX.mesh.reco_extrude){
+      if(ep->mesh.Recombine){
 	s = Create_Quadrangle(v1,v2,v4,v3);
 	s->iEnt = THES->Num;
 	Tree_Add(THES->Simplexes,&s);
@@ -628,7 +625,7 @@ int Extrude_Mesh (Volume * v){
     List_Delete (list);
     Extrude_Surface1 (s);
     
-    if(!CTX.mesh.reco_extrude){
+    if(!ep->mesh.Recombine){
       j = TEST_IS_ALL_OK;
       do{
 	TEST_IS_ALL_OK = 0;
diff --git a/Mesh/3D_Mesh.cpp b/Mesh/3D_Mesh.cpp
index 15d8e5bccd3e535af2c9a47c7c80d7f23a72a5dd..30f08b9c261d69cc46982def6b6d0317f06e713b 100644
--- a/Mesh/3D_Mesh.cpp
+++ b/Mesh/3D_Mesh.cpp
@@ -22,25 +22,22 @@
 #include "Numeric.h"
 #include "Context.h"
 
-extern Mesh *THEM, *LOCAL;
-extern Context_T CTX;
-extern int TYPBGMESH, SPEED_MAX;
-extern int CurrentNodeNumber;
-extern int Alerte_Point_Scabreux;
-extern int NbComplexVolumes, FACE_DIMENSION;
-extern double LC;
+extern Mesh       *THEM, *LOCAL;
+extern Context_T   CTX;
+extern int         TYPBGMESH, CurrentNodeNumber, FACE_DIMENSION;
+extern double      LC;
 
 static Tree_T *Tsd, *Sim_Sur_Le_Bord, *POINTS_TREE;
 static List_T *Simplexes_Destroyed, *Simplexes_New, *Suppress;
 static List_T *LLL, *POINTS;
 static Simplex *THES;
 static Vertex *THEV;
-
 static Tree_T *SimXFac;
 static double volume;
 static int ZONEELIMINEE, Methode = 0;
 
-Simplex MyNewBoundary;
+Simplex  MyNewBoundary;
+int      Alerte_Point_Scabreux;
 
 void DebugSimplexe (Simplex * s){
   int i;
@@ -513,7 +510,7 @@ bool Bowyer_Watson (Mesh * m, Vertex * v, Simplex * S, int force){
 
   /* calcul des volumes des simplexes crees */
 
-  if (Alerte_Point_Scabreux || !SPEED_MAX){
+  if (Alerte_Point_Scabreux || !CTX.mesh.speed_max){
     volume = 0.0;
     for (i = 0; i < List_Nbr (Simplexes_Destroyed); i++){
       VSIM (List_Pointer (Simplexes_Destroyed, i), NULL);
diff --git a/Mesh/Create.cpp b/Mesh/Create.cpp
index 13173d35ee8a9ad78c04c810d926489c3f30f6b8..18223c3ca1c5c13c5801b2685bdc6f658521ea9e 100644
--- a/Mesh/Create.cpp
+++ b/Mesh/Create.cpp
@@ -7,8 +7,7 @@
 #include "Numeric.h"
 
 extern Mesh *THEM;
-extern int Alerte_Point_Scabreux;
-extern int CurrentSimplexNumber;
+extern int CurrentSimplexNumber, FLAG_OLD_CIRCLE;
 
 //static double CIRC_GRAN = 2.2;
 
@@ -262,19 +261,19 @@ void End_Curve (Curve * c){
     mat[0][1] = Curve->Circle.invmat[1][0] = dir12[1];
     mat[0][2] = Curve->Circle.invmat[2][0] = dir12[2];
     
-    /*
+    if(FLAG_OLD_CIRCLE){
       if(n[0] == 0.0 && n[1] == 0.0){
-      mat[2][0] = Curve->Circle.invmat[0][2] = 0;
-      mat[2][1] = Curve->Circle.invmat[1][2] = 0;
-      mat[2][2] = Curve->Circle.invmat[2][2] = 1;
-      mat[1][0] = Curve->Circle.invmat[0][1] = 0;
-      mat[1][1] = Curve->Circle.invmat[1][1] = 1;
-      mat[1][2] = Curve->Circle.invmat[2][1] = 0;
-      mat[0][0] = Curve->Circle.invmat[0][0] = 1;
-      mat[0][1] = Curve->Circle.invmat[1][0] = 0;
-      mat[0][2] = Curve->Circle.invmat[2][0] = 0;
+	mat[2][0] = Curve->Circle.invmat[0][2] = 0;
+	mat[2][1] = Curve->Circle.invmat[1][2] = 0;
+	mat[2][2] = Curve->Circle.invmat[2][2] = 1;
+	mat[1][0] = Curve->Circle.invmat[0][1] = 0;
+	mat[1][1] = Curve->Circle.invmat[1][1] = 1;
+	mat[1][2] = Curve->Circle.invmat[2][1] = 0;
+	mat[0][0] = Curve->Circle.invmat[0][0] = 1;
+	mat[0][1] = Curve->Circle.invmat[1][0] = 0;
+	mat[0][2] = Curve->Circle.invmat[2][0] = 0;
       }
-    */
+    }
 
     Projette (&v1, mat);
     Projette (&v3, mat);
diff --git a/Mesh/Generator.cpp b/Mesh/Generator.cpp
index 9bdaeed63a23c1db19c7c1b275075f6d1c2f2d3f..8db55a46f64668406aae85124601cd4a1947a406 100644
--- a/Mesh/Generator.cpp
+++ b/Mesh/Generator.cpp
@@ -8,8 +8,7 @@
 
 extern Mesh     *THEM;
 extern Context_T CTX;
-extern int TYPBGMESH,LocalNewPoint;
-extern int Alerte_Point_Exterieur;
+extern int TYPBGMESH;
 extern int CurrentNodeNumber, CurrentSimplexNumber;
 
 static List_T *Curves;
@@ -155,15 +154,12 @@ void Init_Mesh (Mesh * M, int all){
   M->Metric = new GMSHMetric;
   M->BGM.bgm = NULL;
 
-  /* Dirt */
-
-  LocalNewPoint = CENTER_CIRCCIRC;
-  Alerte_Point_Exterieur = 0;
   CurrentNodeNumber = 1;
   CurrentSimplexNumber = 0;
 
   M->MeshParams.DelaunayAlgorithm = CTX.mesh.algo ;
   M->MeshParams.NbSmoothing = CTX.mesh.nb_smoothing ;
+  M->MeshParams.InteractiveDelaunay = CTX.mesh.interactive ;
   M->status = 0;
 }
 
diff --git a/Mesh/Mesh.h b/Mesh/Mesh.h
index 54dbc528e149f5ea5289e344f93e6e8f06228d54..23298bf05c713cadb19bf61394c563ac4d005a7c 100644
--- a/Mesh/Mesh.h
+++ b/Mesh/Mesh.h
@@ -12,9 +12,6 @@
 
 #define CONV_VALUE    0.8
 
-#define GREEN_INTERPOLATION 1
-#define FEM_INTERPOLATION   2
-
 #define NOTTOLINK 1
 #define TOLINK    2
 
diff --git a/Parser/Gmsh.tab.cpp b/Parser/Gmsh.tab.cpp
index 6831e1452840358e79820ab9f0f6183e37c5dac6..dc1cf43fb5078696017ad288e604045c49a18d26 100644
--- a/Parser/Gmsh.tab.cpp
+++ b/Parser/Gmsh.tab.cpp
@@ -1,148 +1,149 @@
 
 /*  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	tPoint	284
-#define	tCircle	285
-#define	tEllipsis	286
-#define	tLine	287
-#define	tSurface	288
-#define	tSpline	289
-#define	tVolume	290
-#define	tCharacteristic	291
-#define	tLength	292
-#define	tParametric	293
-#define	tElliptic	294
-#define	tPlane	295
-#define	tRuled	296
-#define	tTransfinite	297
-#define	tComplex	298
-#define	tPhysical	299
-#define	tUsing	300
-#define	tPower	301
-#define	tBump	302
-#define	tProgression	303
-#define	tAssociation	304
-#define	tRotate	305
-#define	tTranslate	306
-#define	tSymetry	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	tOffset	317
-#define	tAttractor	318
-#define	tLayers	319
-#define	tScalarSimplex	320
-#define	tVectorSimplex	321
-#define	tTensorSimplex	322
-#define	tScalarTriangle	323
-#define	tVectorTriangle	324
-#define	tTensorTriangle	325
-#define	tScalarLine	326
-#define	tVectorLine	327
-#define	tTensorLine	328
-#define	tScalarPoint	329
-#define	tVectorPoint	330
-#define	tTensorPoint	331
-#define	tBSpline	332
-#define	tNurbs	333
-#define	tOrder	334
-#define	tWith	335
-#define	tBounds	336
-#define	tKnots	337
-#define	tColor	338
-#define	tGeneral	339
-#define	tGeometry	340
-#define	tMesh	341
-#define	tB_SPLINE_SURFACE_WITH_KNOTS	342
-#define	tB_SPLINE_CURVE_WITH_KNOTS	343
-#define	tCARTESIAN_POINT	344
-#define	tTRUE	345
-#define	tFALSE	346
-#define	tUNSPECIFIED	347
-#define	tU	348
-#define	tV	349
-#define	tEDGE_CURVE	350
-#define	tVERTEX_POINT	351
-#define	tORIENTED_EDGE	352
-#define	tPLANE	353
-#define	tFACE_OUTER_BOUND	354
-#define	tEDGE_LOOP	355
-#define	tADVANCED_FACE	356
-#define	tVECTOR	357
-#define	tDIRECTION	358
-#define	tAXIS2_PLACEMENT_3D	359
-#define	tISO	360
-#define	tENDISO	361
-#define	tENDSEC	362
-#define	tDATA	363
-#define	tHEADER	364
-#define	tFILE_DESCRIPTION	365
-#define	tFILE_SCHEMA	366
-#define	tFILE_NAME	367
-#define	tMANIFOLD_SOLID_BREP	368
-#define	tCLOSED_SHELL	369
-#define	tADVANCED_BREP_SHAPE_REPRESENTATION	370
-#define	tFACE_BOUND	371
-#define	tCYLINDRICAL_SURFACE	372
-#define	tCONICAL_SURFACE	373
-#define	tCIRCLE	374
-#define	tTRIMMED_CURVE	375
-#define	tGEOMETRIC_SET	376
-#define	tCOMPOSITE_CURVE_SEGMENT	377
-#define	tCONTINUOUS	378
-#define	tCOMPOSITE_CURVE	379
-#define	tTOROIDAL_SURFACE	380
-#define	tPRODUCT_DEFINITION	381
-#define	tPRODUCT_DEFINITION_SHAPE	382
-#define	tSHAPE_DEFINITION_REPRESENTATION	383
-#define	tELLIPSE	384
-#define	tTrimmed	385
-#define	tSolid	386
-#define	tEndSolid	387
-#define	tVertex	388
-#define	tFacet	389
-#define	tNormal	390
-#define	tOuter	391
-#define	tLoopSTL	392
-#define	tEndLoop	393
-#define	tEndFacet	394
-#define	UMINUS	395
+#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	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	tPower	302
+#define	tBump	303
+#define	tProgression	304
+#define	tAssociation	305
+#define	tRotate	306
+#define	tTranslate	307
+#define	tSymetry	308
+#define	tDilate	309
+#define	tExtrude	310
+#define	tDuplicata	311
+#define	tLoop	312
+#define	tInclude	313
+#define	tRecombine	314
+#define	tDelete	315
+#define	tCoherence	316
+#define	tView	317
+#define	tOffset	318
+#define	tAttractor	319
+#define	tLayers	320
+#define	tScalarSimplex	321
+#define	tVectorSimplex	322
+#define	tTensorSimplex	323
+#define	tScalarTriangle	324
+#define	tVectorTriangle	325
+#define	tTensorTriangle	326
+#define	tScalarLine	327
+#define	tVectorLine	328
+#define	tTensorLine	329
+#define	tScalarPoint	330
+#define	tVectorPoint	331
+#define	tTensorPoint	332
+#define	tBSpline	333
+#define	tNurbs	334
+#define	tOrder	335
+#define	tWith	336
+#define	tBounds	337
+#define	tKnots	338
+#define	tColor	339
+#define	tGeneral	340
+#define	tGeometry	341
+#define	tMesh	342
+#define	tB_SPLINE_SURFACE_WITH_KNOTS	343
+#define	tB_SPLINE_CURVE_WITH_KNOTS	344
+#define	tCARTESIAN_POINT	345
+#define	tTRUE	346
+#define	tFALSE	347
+#define	tUNSPECIFIED	348
+#define	tU	349
+#define	tV	350
+#define	tEDGE_CURVE	351
+#define	tVERTEX_POINT	352
+#define	tORIENTED_EDGE	353
+#define	tPLANE	354
+#define	tFACE_OUTER_BOUND	355
+#define	tEDGE_LOOP	356
+#define	tADVANCED_FACE	357
+#define	tVECTOR	358
+#define	tDIRECTION	359
+#define	tAXIS2_PLACEMENT_3D	360
+#define	tISO	361
+#define	tENDISO	362
+#define	tENDSEC	363
+#define	tDATA	364
+#define	tHEADER	365
+#define	tFILE_DESCRIPTION	366
+#define	tFILE_SCHEMA	367
+#define	tFILE_NAME	368
+#define	tMANIFOLD_SOLID_BREP	369
+#define	tCLOSED_SHELL	370
+#define	tADVANCED_BREP_SHAPE_REPRESENTATION	371
+#define	tFACE_BOUND	372
+#define	tCYLINDRICAL_SURFACE	373
+#define	tCONICAL_SURFACE	374
+#define	tCIRCLE	375
+#define	tTRIMMED_CURVE	376
+#define	tGEOMETRIC_SET	377
+#define	tCOMPOSITE_CURVE_SEGMENT	378
+#define	tCONTINUOUS	379
+#define	tCOMPOSITE_CURVE	380
+#define	tTOROIDAL_SURFACE	381
+#define	tPRODUCT_DEFINITION	382
+#define	tPRODUCT_DEFINITION_SHAPE	383
+#define	tSHAPE_DEFINITION_REPRESENTATION	384
+#define	tELLIPSE	385
+#define	tTrimmed	386
+#define	tSolid	387
+#define	tEndSolid	388
+#define	tVertex	389
+#define	tFacet	390
+#define	tNormal	391
+#define	tOuter	392
+#define	tLoopSTL	393
+#define	tEndLoop	394
+#define	tEndFacet	395
+#define	UMINUS	396
 
 #line 1 "Gmsh.y"
 
@@ -162,12 +163,12 @@
 #include "Parser.h"
 
 extern Mesh    *THEM;
-extern char     ThePathForIncludes[NAME_STR_L];
+extern char    *ThePathForIncludes;
 
-FILE           *yyinTab[20];
-int             yylinenoTab[20];
-char            yynameTab[20][256];
-char            tmpstring[256];
+FILE           *yyinTab[MAX_OPEN_FILES];
+int             yylinenoTab[MAX_OPEN_FILES];
+char            yynameTab[MAX_OPEN_FILES][NAME_STR_L];
+char            tmpstring[NAME_STR_L];
 Symbol          TheSymbol;
 Surface        *STL_Surf;
 Shape           TheShape;
@@ -207,11 +208,11 @@ typedef union {
 
 
 
-#define	YYFINAL		1273
+#define	YYFINAL		1275
 #define	YYFLAG		-32768
 #define	YYNTBASE	157
 
-#define YYTRANSLATE(x) ((unsigned)(x) <= 395 ? yytranslate[x] : 213)
+#define YYTRANSLATE(x) ((unsigned)(x) <= 396 ? yytranslate[x] : 213)
 
 static const short yytranslate[] = {     0,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -239,21 +240,21 @@ 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,   148
+     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,   148
 };
 
 #if YYDEBUG != 0
@@ -272,16 +273,16 @@ static const short yyprhs[] = {     0,
    988,   998,  1007,  1030,  1051,  1060,  1069,  1075,  1084,  1092,
   1101,  1109,  1121,  1129,  1139,  1141,  1143,  1145,  1146,  1149,
   1154,  1159,  1163,  1171,  1180,  1192,  1205,  1218,  1227,  1240,
-  1249,  1261,  1277,  1279,  1282,  1292,  1299,  1309,  1319,  1329,
-  1338,  1347,  1356,  1363,  1368,  1377,  1380,  1385,  1386,  1389,
-  1390,  1396,  1397,  1403,  1404,  1410,  1411,  1414,  1419,  1428,
-  1433,  1443,  1451,  1453,  1455,  1457,  1459,  1461,  1463,  1467,
-  1471,  1475,  1479,  1483,  1487,  1490,  1493,  1498,  1503,  1508,
-  1513,  1518,  1523,  1528,  1533,  1538,  1543,  1550,  1555,  1560,
-  1565,  1570,  1575,  1580,  1587,  1594,  1601,  1603,  1605,  1607,
-  1611,  1618,  1630,  1640,  1648,  1656,  1657,  1661,  1663,  1667,
-  1668,  1672,  1676,  1678,  1682,  1683,  1685,  1689,  1691,  1693,
-  1697
+  1249,  1261,  1277,  1279,  1282,  1292,  1295,  1302,  1312,  1322,
+  1332,  1341,  1350,  1359,  1366,  1371,  1380,  1383,  1388,  1389,
+  1392,  1393,  1399,  1400,  1406,  1407,  1413,  1414,  1417,  1422,
+  1431,  1436,  1446,  1454,  1456,  1458,  1460,  1462,  1464,  1466,
+  1470,  1474,  1478,  1482,  1486,  1490,  1493,  1496,  1501,  1506,
+  1511,  1516,  1521,  1526,  1531,  1536,  1541,  1546,  1553,  1558,
+  1563,  1568,  1573,  1578,  1583,  1590,  1597,  1604,  1606,  1608,
+  1610,  1614,  1621,  1633,  1643,  1651,  1659,  1660,  1664,  1666,
+  1670,  1671,  1675,  1679,  1681,  1685,  1686,  1688,  1692,  1694,
+  1696,  1700
 };
 
 static const short yyrhs[] = {   164,
@@ -414,47 +415,48 @@ static const short yyrhs[] = {   164,
     55,    34,   150,   203,   151,   206,   151,   206,   151,   203,
    152,   153,   189,   154,     6,     0,   190,     0,   189,   190,
      0,    65,   153,   211,   151,   211,   151,   211,   154,     6,
-     0,    43,    33,   211,     7,   203,     6,     0,    43,    33,
-   211,     7,   203,    46,    47,   203,     6,     0,    43,    33,
-   211,     7,   203,    46,    48,   203,     6,     0,    43,    33,
-   211,     7,   203,    46,    49,   203,     6,     0,    43,    34,
-   153,   203,   154,     7,   211,     6,     0,    40,    34,   153,
-   203,   154,     7,   211,     6,     0,    43,    36,   153,   203,
-   154,     7,   211,     6,     0,    59,    34,   211,     7,   203,
-     6,     0,    59,    34,   211,     6,     0,    45,    50,   150,
-   203,   152,     7,   211,     6,     0,    61,     6,     0,    84,
-   153,   194,   154,     0,     0,   194,   195,     0,     0,    85,
-   196,   153,   199,   154,     0,     0,    86,   197,   153,   199,
-   154,     0,     0,    87,   198,   153,   199,   154,     0,     0,
-   200,   199,     0,     4,     7,     4,     6,     0,     4,     7,
-   153,     4,   151,   203,   154,     6,     0,     4,     7,   201,
-     6,     0,   153,   203,   151,   203,   151,   203,   151,   203,
+     0,    59,     6,     0,    43,    33,   211,     7,   203,     6,
+     0,    43,    33,   211,     7,   203,    46,    47,   203,     6,
+     0,    43,    33,   211,     7,   203,    46,    48,   203,     6,
+     0,    43,    33,   211,     7,   203,    46,    49,   203,     6,
+     0,    43,    34,   153,   203,   154,     7,   211,     6,     0,
+    40,    34,   153,   203,   154,     7,   211,     6,     0,    43,
+    36,   153,   203,   154,     7,   211,     6,     0,    59,    34,
+   211,     7,   203,     6,     0,    59,    34,   211,     6,     0,
+    45,    50,   150,   203,   152,     7,   211,     6,     0,    61,
+     6,     0,    84,   153,   194,   154,     0,     0,   194,   195,
+     0,     0,    85,   196,   153,   199,   154,     0,     0,    86,
+   197,   153,   199,   154,     0,     0,    87,   198,   153,   199,
+   154,     0,     0,   200,   199,     0,     4,     7,     4,     6,
+     0,     4,     7,   153,     4,   151,   203,   154,     6,     0,
+     4,     7,   201,     6,     0,   153,   203,   151,   203,   151,
+   203,   151,   203,   154,     0,   153,   203,   151,   203,   151,
+   203,   154,     0,    91,     0,    92,     0,    93,     0,    94,
+     0,    95,     0,   204,     0,   150,   203,   152,     0,   203,
+   144,   203,     0,   203,   143,   203,     0,   203,   145,   203,
+     0,   203,   146,   203,     0,   203,   149,   203,     0,   144,
+   203,     0,   143,   203,     0,    10,   150,   203,   152,     0,
+    11,   150,   203,   152,     0,    12,   150,   203,   152,     0,
+    13,   150,   203,   152,     0,    14,   150,   203,   152,     0,
+    15,   150,   203,   152,     0,    16,   150,   203,   152,     0,
+    17,   150,   203,   152,     0,    18,   150,   203,   152,     0,
+    19,   150,   203,   152,     0,    20,   150,   203,   151,   203,
+   152,     0,    21,   150,   203,   152,     0,    22,   150,   203,
+   152,     0,    23,   150,   203,   152,     0,    24,   150,   203,
+   152,     0,    25,   150,   203,   152,     0,    26,   150,   203,
+   152,     0,    27,   150,   203,   151,   203,   152,     0,    28,
+   150,   203,   151,   203,   152,     0,    29,   150,   203,   151,
+   203,   152,     0,     3,     0,     9,     0,     4,     0,   203,
+     8,   203,     0,   203,     8,   155,   203,   156,   203,     0,
+   153,   203,   151,   203,   151,   203,   151,   203,   151,   203,
+   154,     0,   153,   203,   151,   203,   151,   203,   151,   203,
    154,     0,   153,   203,   151,   203,   151,   203,   154,     0,
-    91,     0,    92,     0,    93,     0,    94,     0,    95,     0,
-   204,     0,   150,   203,   152,     0,   203,   144,   203,     0,
-   203,   143,   203,     0,   203,   145,   203,     0,   203,   146,
-   203,     0,   203,   149,   203,     0,   144,   203,     0,   143,
-   203,     0,    10,   150,   203,   152,     0,    11,   150,   203,
-   152,     0,    12,   150,   203,   152,     0,    13,   150,   203,
-   152,     0,    14,   150,   203,   152,     0,    15,   150,   203,
-   152,     0,    16,   150,   203,   152,     0,    17,   150,   203,
-   152,     0,    18,   150,   203,   152,     0,    19,   150,   203,
-   152,     0,    20,   150,   203,   151,   203,   152,     0,    21,
-   150,   203,   152,     0,    22,   150,   203,   152,     0,    23,
-   150,   203,   152,     0,    24,   150,   203,   152,     0,    25,
-   150,   203,   152,     0,    26,   150,   203,   152,     0,    27,
-   150,   203,   151,   203,   152,     0,    28,   150,   203,   151,
-   203,   152,     0,    29,   150,   203,   151,   203,   152,     0,
-     3,     0,     9,     0,     4,     0,   203,     8,   203,     0,
-   203,     8,   155,   203,   156,   203,     0,   153,   203,   151,
-   203,   151,   203,   151,   203,   151,   203,   154,     0,   153,
-   203,   151,   203,   151,   203,   151,   203,   154,     0,   153,
-   203,   151,   203,   151,   203,   154,     0,   150,   203,   151,
-   203,   151,   203,   152,     0,     0,   150,   208,   152,     0,
-     5,     0,   208,   151,     5,     0,     0,   153,   210,   154,
-     0,   150,   210,   152,     0,   211,     0,   210,   151,   211,
-     0,     0,   203,     0,   153,   212,   154,     0,   203,     0,
-   205,     0,   212,   151,   203,     0,   212,   151,   205,     0
+   150,   203,   151,   203,   151,   203,   152,     0,     0,   150,
+   208,   152,     0,     5,     0,   208,   151,     5,     0,     0,
+   153,   210,   154,     0,   150,   210,   152,     0,   211,     0,
+   210,   151,   211,     0,     0,   203,     0,   153,   212,   154,
+     0,   203,     0,   205,     0,   212,   151,   203,     0,   212,
+   151,   205,     0
 };
 
 #endif
@@ -475,16 +477,16 @@ static const short yyrline[] = { 0,
    674,   693,   712,   720,   726,   732,   738,   750,   756,   762,
    774,   780,   785,   790,   797,   799,   800,   803,   808,   819,
    837,   852,   883,   888,   892,   896,   900,   906,   911,   915,
-   919,   924,   932,   936,   941,   965,   983,  1000,  1017,  1034,
-  1054,  1073,  1092,  1107,  1122,  1133,  1144,  1148,  1150,  1153,
-  1156,  1157,  1159,  1160,  1162,  1165,  1167,  1170,  1181,  1191,
-  1201,  1209,  1285,  1287,  1288,  1289,  1290,  1293,  1295,  1296,
-  1297,  1298,  1299,  1300,  1301,  1302,  1303,  1304,  1305,  1306,
-  1307,  1308,  1309,  1310,  1311,  1312,  1313,  1314,  1315,  1316,
-  1317,  1318,  1319,  1320,  1321,  1322,  1325,  1327,  1328,  1339,
-  1346,  1359,  1368,  1376,  1384,  1394,  1398,  1403,  1407,  1412,
-  1416,  1420,  1426,  1432,  1438,  1442,  1448,  1461,  1467,  1476,
-  1480
+   919,   924,   932,   936,   941,   959,   969,   987,  1004,  1021,
+  1038,  1058,  1077,  1096,  1111,  1126,  1137,  1148,  1152,  1154,
+  1157,  1160,  1161,  1163,  1164,  1166,  1169,  1171,  1174,  1185,
+  1195,  1205,  1213,  1289,  1291,  1292,  1293,  1294,  1297,  1299,
+  1300,  1301,  1302,  1303,  1304,  1305,  1306,  1307,  1308,  1309,
+  1310,  1311,  1312,  1313,  1314,  1315,  1316,  1317,  1318,  1319,
+  1320,  1321,  1322,  1323,  1324,  1325,  1326,  1329,  1331,  1332,
+  1343,  1350,  1363,  1372,  1380,  1388,  1398,  1402,  1407,  1411,
+  1416,  1420,  1424,  1430,  1436,  1442,  1446,  1452,  1465,  1471,
+  1480,  1484
 };
 #endif
 
@@ -541,16 +543,16 @@ static const short yyr1[] = {     0,
    181,   181,   181,   181,   181,   181,   181,   181,   181,   181,
    182,   182,   182,   182,   183,   183,   183,   184,   184,   185,
    186,   187,   188,   188,   188,   188,   188,   188,   188,   188,
-   188,   188,   189,   189,   190,   191,   191,   191,   191,   191,
-   191,   191,   191,   191,   191,   192,   193,   194,   194,   196,
-   195,   197,   195,   198,   195,   199,   199,   200,   200,   200,
-   201,   201,   202,   202,   202,   202,   202,   203,   203,   203,
+   188,   188,   189,   189,   190,   190,   191,   191,   191,   191,
+   191,   191,   191,   191,   191,   191,   192,   193,   194,   194,
+   196,   195,   197,   195,   198,   195,   199,   199,   200,   200,
+   200,   201,   201,   202,   202,   202,   202,   202,   203,   203,
    203,   203,   203,   203,   203,   203,   203,   203,   203,   203,
    203,   203,   203,   203,   203,   203,   203,   203,   203,   203,
-   203,   203,   203,   203,   203,   203,   204,   204,   204,   205,
-   205,   206,   206,   206,   206,   207,   207,   208,   208,   209,
-   209,   209,   210,   210,   211,   211,   211,   212,   212,   212,
-   212
+   203,   203,   203,   203,   203,   203,   203,   204,   204,   204,
+   205,   205,   206,   206,   206,   206,   207,   207,   208,   208,
+   209,   209,   209,   210,   210,   211,   211,   211,   212,   212,
+   212,   212
 };
 
 static const short yyr2[] = {     0,
@@ -568,16 +570,16 @@ static const short yyr2[] = {     0,
      9,     8,    22,    20,     8,     8,     5,     8,     7,     8,
      7,    11,     7,     9,     1,     1,     1,     0,     2,     4,
      4,     3,     7,     8,    11,    12,    12,     8,    12,     8,
-    11,    15,     1,     2,     9,     6,     9,     9,     9,     8,
-     8,     8,     6,     4,     8,     2,     4,     0,     2,     0,
-     5,     0,     5,     0,     5,     0,     2,     4,     8,     4,
-     9,     7,     1,     1,     1,     1,     1,     1,     3,     3,
-     3,     3,     3,     3,     2,     2,     4,     4,     4,     4,
-     4,     4,     4,     4,     4,     4,     6,     4,     4,     4,
-     4,     4,     4,     6,     6,     6,     1,     1,     1,     3,
-     6,    11,     9,     7,     7,     0,     3,     1,     3,     0,
-     3,     3,     1,     3,     0,     1,     3,     1,     1,     3,
-     3
+    11,    15,     1,     2,     9,     2,     6,     9,     9,     9,
+     8,     8,     8,     6,     4,     8,     2,     4,     0,     2,
+     0,     5,     0,     5,     0,     5,     0,     2,     4,     8,
+     4,     9,     7,     1,     1,     1,     1,     1,     1,     3,
+     3,     3,     3,     3,     3,     2,     2,     4,     4,     4,
+     4,     4,     4,     4,     4,     4,     4,     6,     4,     4,
+     4,     4,     4,     4,     6,     6,     6,     1,     1,     1,
+     3,     6,    11,     9,     7,     7,     0,     3,     1,     3,
+     0,     3,     3,     1,     3,     0,     1,     3,     1,     1,
+     3,     3
 };
 
 static const short yydefact[] = {    51,
@@ -588,745 +590,747 @@ static const short yydefact[] = {    51,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,    52,    53,    54,    55,    56,    57,
     58,    62,    59,    60,    61,    63,     0,    12,     0,    13,
-    14,    16,    15,    17,   216,   216,     0,    64,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,   225,     0,
-     0,     0,     0,   225,     0,     0,     0,     0,     0,     0,
+    14,    16,    15,    17,   217,   217,     0,    64,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,   226,     0,
+     0,     0,     0,   226,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-   128,     0,   225,   128,   156,     0,     0,     0,     0,     0,
-     0,   158,     0,     0,     0,     0,     0,     0,     0,     0,
+   128,     0,   226,   128,   157,     0,     0,     0,     0,     0,
+     0,   159,     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,   207,   209,
-   208,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,   208,   210,
+   209,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,   178,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,   226,     0,     0,     0,
+     0,     0,     0,     0,     0,   179,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,   227,     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,   132,     0,     0,     0,    67,     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,   218,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,   219,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,   186,   185,     0,    92,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,   228,
-   229,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,   187,   186,     0,    92,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,   229,
+   230,     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,   130,   129,   154,
+     0,     0,     0,     0,     0,     0,     0,   130,   129,   155,
      0,   131,     0,     0,     0,     0,     0,     0,     0,     0,
-   160,   162,   164,   157,   159,     0,     0,     0,     0,     0,
+   161,   163,   165,   158,   160,     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,   217,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,   218,     0,
     19,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,   179,   181,   180,   182,   183,   184,    97,     0,
-   225,   225,     0,   107,   225,     0,   117,   225,   225,     0,
-     0,   227,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,   180,   182,   181,   183,   184,   185,    97,     0,
+   226,   226,     0,   107,   226,     0,   117,   226,   226,     0,
+     0,   228,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,   128,
    128,     0,     0,     0,     0,     0,     0,    67,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,    68,    69,    70,    71,    72,    73,    74,    75,    76,
-    77,    78,    79,     0,     0,   225,     0,     0,   225,     0,
+    77,    78,    79,     0,     0,   226,     0,     0,   226,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,   225,   225,     0,     0,     0,     0,   225,
-   225,     0,     0,     0,     0,     0,   225,     0,   225,     0,
-     0,     0,     0,     0,   219,     0,   216,   187,   188,   189,
-   190,   191,   192,   193,   194,   195,   196,     0,   198,   199,
-   200,   201,   202,   203,     0,     0,     0,     0,     0,     0,
-   225,     0,   225,     0,     0,     0,   210,   230,   231,    96,
-     0,   225,   225,   225,   146,     0,   225,   225,   225,   225,
-   225,   225,   225,   225,     0,     0,     0,   127,     0,   126,
-   125,     0,     0,     0,     0,     0,     0,     0,   153,     0,
+     0,     0,     0,   226,   226,     0,     0,     0,     0,   226,
+   226,     0,     0,     0,     0,     0,   226,     0,   226,     0,
+     0,     0,     0,     0,   220,     0,   217,   188,   189,   190,
+   191,   192,   193,   194,   195,   196,   197,     0,   199,   200,
+   201,   202,   203,   204,     0,     0,     0,     0,     0,     0,
+   226,     0,   226,     0,     0,     0,   211,   231,   232,    96,
+     0,   226,   226,   226,   147,     0,   226,   226,   226,   226,
+   226,   226,   226,   226,     0,     0,     0,   127,     0,   126,
+   125,     0,     0,     0,     0,     0,     0,     0,   154,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,    65,     0,     0,     0,     0,   220,     0,   166,
-   166,   166,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,    65,     0,     0,     0,     0,   221,     0,   167,
+   167,   167,     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,   173,   174,   175,
-   176,   177,     0,     0,     0,     0,     0,     0,     0,    18,
+     0,     0,     0,     0,     0,     0,     0,   174,   175,   176,
+   177,   178,     0,     0,     0,     0,     0,     0,     0,    18,
      0,     0,     0,     0,     0,    93,   101,     0,   104,     0,
     98,     0,    99,   119,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,   121,   123,   128,     0,     0,     0,     0,
      0,     0,     0,   133,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,   108,
-     0,   225,   225,     0,   225,     0,     0,   166,     0,     0,
-   225,     0,     0,     0,   225,     0,     0,     0,     0,     0,
+     0,   226,   226,     0,   226,     0,     0,   167,     0,     0,
+   226,     0,     0,     0,   226,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,   225,     0,     0,     0,     0,     0,     0,
-     0,     0,   216,   197,   204,   205,   206,     0,   106,   116,
-     0,     0,   151,   110,   112,     0,     0,     0,   150,   152,
-   118,    94,   105,   115,   120,   155,     0,     0,     0,     0,
+     0,     0,     0,   226,     0,     0,     0,     0,     0,     0,
+     0,     0,   217,   198,   205,   206,   207,     0,   106,   116,
+     0,     0,   152,   110,   112,     0,     0,     0,   151,   153,
+   118,    94,   105,   115,   120,   156,     0,     0,     0,     0,
      0,   138,     0,   140,     0,   134,     0,     0,    66,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,   220,     0,   223,     0,     0,     0,     0,
-   161,   167,   163,   165,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,   221,     0,   224,     0,     0,     0,     0,
+   162,   168,   164,   166,     0,     0,     0,     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,   102,
-   211,     0,   147,   148,   149,   215,     0,   214,   128,   124,
-     0,     0,     0,     0,     0,   143,     0,     0,     0,     0,
+   212,     0,   148,   149,   150,   216,     0,   215,   128,   124,
+     0,     0,     0,     0,     0,     0,   143,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,   225,   222,   221,   225,     0,     0,     0,     0,
-   181,   180,   111,     0,     0,   220,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,   225,     0,
+     0,     0,     0,   226,   223,   222,   226,     0,     0,     0,
+     0,   182,   181,   111,     0,     0,   221,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,   226,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,   225,     0,   144,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,   225,   225,
-     0,   224,     0,     0,   168,   209,     0,   170,     0,    35,
-     0,     0,     0,     0,    25,     0,    31,     0,    37,    26,
-    39,     0,    42,     0,    46,    47,     0,     0,    49,     0,
-     0,     0,     0,   213,   122,     0,     0,     0,     0,   141,
-   135,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,   225,   225,   109,     0,     0,
+     0,     0,     0,   146,   226,     0,   144,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,   137,   139,   136,     0,   225,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,   225,
-   225,   225,    95,   100,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,    29,    32,    40,     0,    41,    48,    43,
-     0,     0,   212,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,   225,     0,     0,
+   226,   226,     0,   225,     0,     0,   169,   210,     0,   171,
+     0,    35,     0,     0,     0,     0,    25,     0,    31,     0,
+    37,    26,    39,     0,    42,     0,    46,    47,     0,     0,
+    49,     0,     0,     0,     0,   214,   122,     0,     0,     0,
+     0,   141,   135,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,   226,   226,   109,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-   225,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-    89,    90,    91,     0,     0,   169,     0,     0,     0,     0,
-    24,    27,     0,     0,     0,   142,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,   172,
-     0,     0,   225,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,   137,   139,   136,
+     0,   226,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,   226,   226,   226,    95,   100,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,    29,    32,    40,     0,    41,
+    48,    43,     0,     0,   213,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,   226,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,    44,    20,   103,   145,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,   171,     0,     0,
-   225,     0,     0,     0,     0,     0,     0,   225,   225,   225,
+     0,     0,   226,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,    89,    90,    91,     0,     0,   170,     0,     0,
+     0,     0,    24,    27,     0,     0,     0,   142,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     5,   225,     0,     0,
-     0,     0,     0,     0,     0,    86,    87,    88,     0,   114,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,   225,
-     0,     0,     0,     0,     0,     0,     0,   113,     0,    22,
-     0,     0,     0,     0,     0,     0,   225,     0,     0,     0,
-   225,   225,   225,     0,     0,     0,     0,     0,     0,     0,
-   225,     0,     0,     0,    83,    84,    85,     0,     0,     0,
+     0,   173,     0,     0,   226,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,    44,    20,   103,   145,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,   172,
+     0,     0,   226,     0,     0,     0,     0,     0,     0,   226,
+   226,   226,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     5,   226,
+     0,     0,     0,     0,     0,     0,     0,    86,    87,    88,
+     0,   114,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,   226,     0,     0,     0,     0,     0,     0,     0,   113,
+     0,    22,     0,     0,     0,     0,     0,     0,   226,     0,
+     0,     0,   226,   226,   226,     0,     0,     0,     0,     0,
+     0,     0,   226,     0,     0,     0,    83,    84,    85,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-   225,   225,   225,    23,     0,     0,     0,    80,    81,    82,
-     0,     0,     0
+     0,     0,   226,   226,   226,    23,     0,     0,     0,    80,
+    81,    82,     0,     0,     0
 };
 
-static const short yydefgoto[] = {  1271,
+static const short yydefgoto[] = {  1273,
      4,     5,    18,    19,    20,    21,     6,    55,    56,   344,
    472,   473,   474,   475,   476,   477,   478,   479,   480,   481,
    482,   483,    57,   339,   578,   579,   580,   581,    61,    62,
-    63,   865,   866,    64,    65,    66,   234,   355,   490,   491,
-   492,   717,   718,   890,   643,   197,   186,   311,   214,   156,
+    63,   866,   867,    64,    65,    66,   234,   355,   490,   491,
+   492,   717,   718,   891,   643,   197,   186,   311,   214,   156,
    268,   714,   805,   806,   312
 };
 
-static const short yypact[] = {   472,
--32768,-32768,  -109,-32768,   525,  1180,    33,    67,   105,    73,
-   108,   114,   208,   222,    85,    87,    94,-32768,-32768,-32768,
--32768,   224,   263,   110,   154,   182,   -34,   -31,   191,   199,
-   243,   225,   340,   350,   351,   323,   355,   379,   242,   245,
-   250,   251,   -14,   233,   389,   370,   257,   405,   414,    -1,
-   270,   -12,   268,   392,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,   424,-32768,  1172,-32768,
--32768,-32768,-32768,-32768,   285,   285,   432,-32768,    40,    40,
-    40,    40,   297,    40,   301,    40,    40,    40,   296,    40,
-   305,   302,   304,   296,   311,   316,   306,   321,   324,   326,
-   328,   329,    39,    39,    39,    39,   330,   331,   345,    40,
--32768,   491,   296,-32768,-32768,   -38,   349,   374,    40,   -40,
-    40,-32768,   377,   526,   382,   385,   407,   412,   420,   422,
-   423,   425,   426,   427,   436,   439,   440,   444,   445,   447,
-   449,   451,   456,   458,   467,   469,   475,   476,   477,   478,
-   489,   490,   492,   494,   560,   471,   495,   501,-32768,-32768,
--32768,   496,   503,   510,   511,   515,   516,   517,   518,   522,
-   524,   528,   529,   530,   534,   535,   536,   537,   538,   539,
-   548,    40,    40,    40,    42,-32768,   120,   657,   669,    40,
-   680,    40,   694,   717,   727,    40,   885,   567,   737,    40,
-    40,    40,   634,    40,    40,    40,    40,    40,    40,    40,
-    40,    40,    40,   549,   523,   551,   555,    40,    40,    40,
-   287,   303,-32768,    65,   579,    39,-32768,    40,    40,   761,
-   594,    40,   773,   -48,    40,   570,   703,   718,   720,   721,
-   722,   723,   729,   740,   741,   748,   755,   762,   769,   771,
-   772,   774,   776,   780,   785,   793,   800,   802,   806,   692,
-   812,   814,   817,   822,   827,   826,-32768,   -44,   829,   835,
-   830,    40,    40,    40,    40,    40,    40,    40,    40,    40,
-    40,    40,    40,    40,    40,    40,    40,    40,    40,    40,
-    40,   693,   693,   783,-32768,    40,    40,    40,    40,    40,
-   236,   837,   838,   809,   282,   821,   841,   857,   858,   279,
--32768,   100,    40,   860,   586,   831,   869,    40,   598,   605,
-   915,   927,   946,   956,   974,   996,   851,  1352,    39,   715,
-   724,    40,  1553,  1685,  1694,    39,    44,-32768,-32768,-32768,
-    40,-32768,   725,   417,  1703,  1712,   867,   734,  1009,   868,
--32768,-32768,-32768,-32768,-32768,  1042,   747,   736,   739,   742,
-   746,   749,   750,   757,   758,   760,   763,   764,   779,   782,
-   786,   787,   788,   789,   790,   805,   808,   811,   818,   820,
-   836,   839,   847,   848,   850,   865,   866,   883,-32768,   784,
--32768,   871,  1057,  1102,  1160,  1170,  1181,  1191,  1201,  1218,
-  1228,  1241,  1721,  1255,  1266,  1276,  1286,  1296,  1306,  1730,
-  1739,  1748,-32768,   122,   122,   693,   693,   693,-32768,    39,
-   296,   296,   884,-32768,   296,   891,-32768,   296,   296,    72,
-    40,-32768,   103,   781,   905,   916,   917,   227,   944,   950,
-   961,   965,   975,   979,   981,   982,    40,    40,   872,   409,
-   409,  1316,    39,    39,    39,     3,   112,-32768,   870,   874,
-   876,   882,   912,   913,   918,   919,   924,   925,   930,   931,
-   886,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,    40,    40,   296,    40,  1012,   296,   828,
-   880,   929,  1028,   932,  1062,    40,    40,    39,  1090,  1091,
-   951,  1094,  1100,   296,   296,  1101,    39,  1104,  1106,   296,
-   296,  1107,  1118,  1119,  1121,  1122,   296,    53,   296,  1124,
-  1123,  1125,  1126,  1128,-32768,   928,   285,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,    40,-32768,-32768,
--32768,-32768,-32768,-32768,    40,    40,    40,  1137,    29,  1138,
-   296,  1140,   296,  1141,  1150,    40,   885,   279,-32768,-32768,
-    40,   296,   296,   296,-32768,    -2,   296,   296,   296,   296,
-   296,   296,   296,   296,  1757,  1766,    40,-32768,   978,   660,
--32768,  1003,  1006,   144,   151,   209,    39,  1154,-32768,   434,
-    40,    40,    40,    40,    40,    40,    40,    40,    40,    40,
-    40,    40,-32768,  1775,  1784,  1156,  1329,   178,  1083,  1163,
-  1163,  1163,    40,  1165,  1018,  1793,  1802,  1019,  1021,  1025,
-  1022,  1026,  1031,  1027,  1032,  1039,  1040,  1045,  1041,  1046,
-  1053,  1056,  1075,  1076,  1077,  1078,  1085,-32768,-32768,-32768,
--32768,-32768,  1079,  1092,  1098,  1099,  1105,  1103,  1112,-32768,
-  1114,  1339,  1364,  1374,  1384,-32768,-32768,    39,-32768,  1164,
--32768,  1202,-32768,-32768,    80,  1811,  1246,  1247,  1251,    40,
-    40,    40,  1260,  1261,  1272,  1273,  1274,  1275,  1277,  1278,
-    40,    40,  1394,-32768,-32768,   409,    39,  1279,    39,  1290,
-    39,    27,  1131,-32768,  1301,  1820,  1829,  1838,  1847,  1856,
-  1865,  1874,  1883,  1892,  1901,  1910,  1919,    40,    40,-32768,
-  1190,   296,   296,  1225,   296,  1303,  1166,  1163,  1167,  1169,
-   148,  1314,  1315,    40,   296,  1322,  1326,  1325,  1187,  1332,
-    53,  1333,  1338,    40,  1336,  1345,  1343,  1346,  1348,    53,
-    40,    40,    40,   296,  1349,  1351,    53,    40,  1353,  1355,
-  1359,    40,   285,-32768,-32768,-32768,-32768,  1360,-32768,-32768,
-    40,    40,-32768,-32768,-32768,   131,   234,   244,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,  1404,   299,  1206,  1214,
-  1224,-32768,  1227,-32768,  1230,-32768,  1304,    40,-32768,    40,
-    40,    40,    40,    40,    40,    40,    40,    40,    40,    40,
-    40,  1414,  1424,   178,   214,-32768,   192,  1223,  1299,    26,
--32768,-32768,-32768,-32768,    40,    40,  1376,  1385,  1237,  1928,
-  1240,-32768,  1243,-32768,  1244,-32768,  1250,-32768,  1245,  1434,
--32768,  1252,-32768,-32768,  1253,  1254,  1444,  1937,  1455,  1257,
--32768,  1264,  1265,  1946,  1282,  1271,-32768,  1955,  1283,-32768,
-   885,  1964,-32768,-32768,-32768,-32768,    40,-32768,   409,-32768,
-    40,    40,    40,  1239,    77,-32768,  1465,  1973,  1982,  1991,
-  2000,  2009,  2018,  2027,  2036,  2045,  2054,  2063,  2072,  1417,
-  1419,  1344,   296,-32768,-32768,   296,    40,  1430,   527,  1431,
-   133,   181,-32768,  1309,  1438,   178,    53,  1443,    40,  1441,
-    53,  1447,  1451,  1450,  1457,  1458,    40,  1460,   296,  1461,
-  1463,    40,  1454,  1470,    40,  1472,  1474,   415,  1335,  1475,
-  1485,  1502,   296,  1480,-32768,  1481,    40,    40,    40,    40,
-    40,    40,    40,    40,    40,    40,    40,    40,   296,   296,
-  1327,-32768,  1341,   253,-32768,  1342,  2081,-32768,  1487,-32768,
-  1361,  1363,  1370,  2090,-32768,  1347,-32768,  1350,-32768,-32768,
--32768,  1512,-32768,  1371,-32768,-32768,  1522,  1372,-32768,  1533,
-  1380,  1381,    40,-32768,-32768,  1494,  1505,    28,  1383,-32768,
--32768,  2099,  2108,  2117,  2126,  2135,  2144,  2153,  2162,  2171,
-  1543,  1565,  1575,  1509,  1519,   296,   296,-32768,    40,    40,
-  1532,    53,    53,    53,    53,  1535,  1538,  1539,    53,  1545,
-  1546,  1548,  1556,  1557,   612,-32768,-32768,-32768,  1304,   296,
-    40,    40,    40,    40,    40,    40,    40,    40,    40,   296,
-   296,   296,-32768,-32768,  1413,  1411,   619,  2180,  1568,  1421,
-  1423,  1429,  1432,-32768,-32768,-32768,  1440,-32768,-32768,-32768,
-  1452,  1462,-32768,    78,  1464,  2189,  2198,  2207,  2216,  2225,
-  2234,  2243,  2252,  2261,  1569,  1576,  1579,   296,  1514,  1586,
-    40,  1468,    53,    53,  1589,  1599,    53,  1601,  1607,  1610,
-   296,    40,    40,    40,    40,    40,    40,    40,    40,    40,
--32768,-32768,-32768,  1469,  1473,-32768,   505,  1619,  1482,  1488,
--32768,-32768,  1484,  1486,  1489,-32768,  1471,  2270,  2279,  2288,
-  2297,  2306,  2315,  2324,  2333,  2342,  1552,    40,    40,-32768,
-  1637,    53,   296,  1643,  1644,  1646,  1647,    40,    40,    40,
-    40,    40,    40,    40,    40,    40,  1506,  2351,   626,  1657,
-  1518,  1521,-32768,-32768,-32768,-32768,  2360,  2369,  2378,  2387,
-  2396,  2405,  1595,  1605,  1615,    40,    40,-32768,  1524,    53,
-   296,    40,    40,    40,    40,    40,    40,   296,   296,   296,
-  2414,   643,  1530,  1529,  1540,  2423,  2432,  2441,  2450,  2459,
-  2468,  1667,  1669,  1677,    40,  1684,-32768,   296,    53,    40,
-    40,    40,    40,    40,    40,-32768,-32768,-32768,   650,-32768,
-  1542,  1551,  2477,  2486,  2495,  2504,  2513,  2522,  1688,   296,
-  1706,    40,    40,    40,    40,    40,    40,-32768,  1549,-32768,
-  2531,  2540,  2549,  1625,  1635,  1645,   296,    40,    40,    40,
-   296,   296,   296,  1562,  2558,  2567,  2576,  1710,  1716,  1717,
-   296,    40,    40,    40,-32768,-32768,-32768,  1574,  2585,  2594,
-  2603,    53,    40,    40,    40,  1577,  1655,  1665,  1675,  1720,
-   296,   296,   296,-32768,  1722,  1724,  1725,-32768,-32768,-32768,
-  1681,  1732,-32768
+static const short yypact[] = {   451,
+-32768,-32768,  -111,-32768,   157,  1182,    31,    23,    34,    59,
+    66,   108,   110,   114,   -26,   -13,    -6,-32768,-32768,-32768,
+-32768,   168,   184,    64,    74,    78,     9,    12,    80,    92,
+   206,   141,   226,   246,   248,    37,   280,   193,   178,   217,
+   236,   241,   -12,   239,   393,   365,   249,   395,   399,    82,
+   263,    -7,   267,   385,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,   418,-32768,  1174,-32768,
+-32768,-32768,-32768,-32768,   273,   273,   419,-32768,   321,   321,
+   321,   321,   275,   321,   276,   321,   321,   321,    72,   321,
+   278,   282,   285,    72,   283,   286,   288,   290,   296,   297,
+   306,   307,   101,   101,   101,   101,   310,   311,   312,   321,
+-32768,   443,    72,-32768,-32768,   -43,   313,   319,   321,   -48,
+   321,-32768,   326,   455,   330,   345,   347,   361,   374,   375,
+   416,   422,   423,   428,   429,   438,   440,   444,   445,   447,
+   449,   462,   464,   467,   474,   475,   482,   487,   498,   499,
+   500,   504,   510,   515,   563,   328,   495,   430,-32768,-32768,
+-32768,   516,   517,   518,   522,   524,   525,   526,   528,   529,
+   530,   539,   540,   541,   550,   552,   558,   560,   573,   575,
+   577,   321,   321,   321,   103,-32768,     2,   329,   383,   321,
+   586,   321,   622,   719,   729,   321,    43,   562,   739,   321,
+   321,   321,   594,   321,   321,   321,   321,   321,   321,   321,
+   321,   321,   321,   582,   572,   587,   583,   321,   321,   321,
+   853,   574,-32768,   265,   662,   101,-32768,   321,   321,   763,
+   545,   321,   775,    21,   321,   613,   747,   750,   757,   758,
+   765,   767,   768,   770,   772,   774,   776,   780,   789,   790,
+   791,   793,   798,   799,   801,   802,   803,   812,   814,   696,
+   817,   826,   827,   828,   777,   831,-32768,   -73,   837,   822,
+   840,   321,   321,   321,   321,   321,   321,   321,   321,   321,
+   321,   321,   321,   321,   321,   321,   321,   321,   321,   321,
+   321,   697,   697,   785,-32768,   321,   321,   321,   321,   321,
+   308,   841,   859,   811,   315,   823,   861,   862,   863,   251,
+-32768,     1,   321,   869,   490,   833,   871,   321,   497,   615,
+   917,   929,   948,   958,   976,   998,  1557,  1669,   101,   694,
+   724,   321,  1678,  1687,  1696,   101,   323,-32768,-32768,-32768,
+   321,-32768,   726,   417,  1705,  1714,   873,   736,  1011,   880,
+-32768,-32768,-32768,-32768,-32768,  1044,   751,   741,   742,   743,
+   744,   748,   749,   752,   759,   760,   762,   766,   781,   782,
+   784,   787,   788,   792,   807,   808,   810,   813,   819,   820,
+   832,   838,   839,   849,   850,   852,   867,   885,-32768,   764,
+-32768,   868,  1059,  1104,  1162,  1172,  1183,  1193,  1203,  1213,
+  1223,  1233,  1723,  1244,  1254,  1264,  1276,  1286,  1296,  1732,
+  1741,  1750,-32768,    27,    27,   697,   697,   697,-32768,   101,
+    72,    72,   895,-32768,    72,   907,-32768,    72,    72,    35,
+   321,-32768,   112,   786,   918,   919,   933,    22,   934,   935,
+   946,   966,   967,   977,   981,   984,   321,   321,   870,   605,
+   605,  1306,   101,   101,   101,    85,   130,-32768,   842,   872,
+   874,   875,   876,   878,   881,   882,   883,   884,   886,   887,
+  1024,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,   321,   321,    72,   321,  1028,    72,   911,
+   912,   914,  1061,   936,  1068,   321,   321,   101,  1073,  1074,
+   937,  1080,  1081,    72,    72,  1092,   101,  1093,  1095,    72,
+    72,  1096,  1102,  1103,  1106,  1108,    72,   593,    72,  1109,
+  1118,  1119,  1123,  1124,-32768,  1125,   273,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,   321,-32768,-32768,
+-32768,-32768,-32768,-32768,   321,   321,   321,  1126,    26,  1127,
+    72,  1128,    72,  1139,  1140,   321,    43,   251,-32768,-32768,
+   321,    72,    72,    72,-32768,   135,    72,    72,    72,    72,
+    72,    72,    72,    72,  1759,  1768,   321,-32768,   975,   712,
+-32768,   994,   996,   175,   209,   214,   101,  1152,-32768,   433,
+   321,   321,   321,   321,   321,   321,   321,   321,   321,   321,
+   321,   321,-32768,  1777,  1786,  1153,  1316,   139,  1047,  1157,
+  1157,  1157,   321,  1159,  1013,  1795,  1804,  1016,  1018,  1019,
+  1021,  1022,  1029,  1023,  1030,  1033,  1027,  1034,  1040,  1042,
+  1048,  1049,  1055,  1058,  1077,  1078,  1043,-32768,-32768,-32768,
+-32768,-32768,  1079,  1088,  1094,  1100,  1101,  1046,  1107,-32768,
+  1114,  1327,  1337,  1347,  1368,-32768,-32768,   101,-32768,  1164,
+-32768,  1167,-32768,-32768,   266,  1813,  1204,  1225,  1226,   321,
+   321,   321,  1248,  1249,  1251,  1253,  1261,  1262,  1263,  1274,
+   321,   321,  1378,-32768,-32768,   605,   101,  1275,   101,  1277,
+   101,    10,  1131,-32768,  1278,  1822,  1831,  1840,  1849,  1858,
+  1867,  1876,  1885,  1894,  1903,  1912,  1921,   321,   321,-32768,
+  1279,    72,    72,  1202,    72,  1280,  1144,  1157,  1155,  1156,
+   284,  1309,  1317,   321,    72,  1313,  1319,  1324,  1178,  1325,
+   593,  1328,  1322,   321,  1334,  1330,  1335,  1338,  1340,   593,
+   321,   321,   321,    72,  1344,  1348,   593,   321,  1350,  1351,
+  1355,   321,   273,-32768,-32768,-32768,-32768,  1358,-32768,-32768,
+   321,   321,-32768,-32768,-32768,   174,   227,   234,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,  1388,   299,  1217,  1219,
+  1220,-32768,  1229,-32768,  1230,-32768,   -22,   321,-32768,   321,
+   321,   321,   321,   321,   321,   321,   321,   321,   321,   321,
+   321,  1398,  1408,   139,   223,-32768,   230,  1221,  1303,     8,
+-32768,-32768,-32768,-32768,   321,   321,  1385,  1381,  1240,  1930,
+  1243,-32768,  1260,-32768,  1272,-32768,  1250,-32768,  1273,  1418,
+-32768,  1282,-32768,-32768,  1252,  1284,  1428,  1939,  1438,  1283,
+-32768,  1285,  1291,  1948,  1293,  1294,-32768,  1957,  1302,-32768,
+    43,  1966,-32768,-32768,-32768,-32768,   321,-32768,   605,-32768,
+   321,   321,   321,  1389,  1259,   -35,-32768,  1448,  1975,  1984,
+  1993,  2002,  2011,  2020,  2029,  2038,  2047,  2056,  2065,  2074,
+  1407,  1419,  1332,    72,-32768,-32768,    72,   321,  1399,   527,
+  1421,    86,   132,-32768,  1320,  1441,   139,   593,  1453,   321,
+  1451,   593,  1457,  1461,  1460,  1463,  1471,   321,  1472,    72,
+  1478,  1481,   321,  1464,  1482,   321,  1480,  1490,   431,  1343,
+  1459,  1469,  1479,-32768,    72,  1488,-32768,  1494,   321,   321,
+   321,   321,   321,   321,   321,   321,   321,   321,   321,   321,
+    72,    72,  1349,-32768,  1352,   244,-32768,  1353,  2083,-32768,
+  1498,-32768,  1354,  1356,  1364,  2092,-32768,  1366,-32768,  1367,
+-32768,-32768,-32768,  1489,-32768,  1365,-32768,-32768,  1506,  1373,
+-32768,  1516,  1375,  1377,   321,-32768,-32768,  1500,  1523,    11,
+  1384,-32768,-32768,  2101,  2110,  2119,  2128,  2137,  2146,  2155,
+  2164,  2173,  1526,  1537,  1547,  1530,  1532,    72,    72,-32768,
+   321,   321,  1536,   593,   593,   593,   593,  1539,  1542,  1543,
+   593,  1549,  1550,  1552,  1560,  1561,   643,-32768,-32768,-32768,
+   -22,    72,   321,   321,   321,   321,   321,   321,   321,   321,
+   321,    72,    72,    72,-32768,-32768,  1417,  1415,   656,  2182,
+  1572,  1425,  1427,  1433,  1434,-32768,-32768,-32768,  1437,-32768,
+-32768,-32768,  1444,  1445,-32768,    15,  1447,  2191,  2200,  2209,
+  2218,  2227,  2236,  2245,  2254,  2263,  1573,  1583,  1593,    72,
+  1527,  1600,   321,  1475,   593,   593,  1604,  1610,   593,  1612,
+  1614,  1620,    72,   321,   321,   321,   321,   321,   321,   321,
+   321,   321,-32768,-32768,-32768,  1466,  1474,-32768,   477,  1626,
+  1485,  1486,-32768,-32768,  1491,  1492,  1493,-32768,  1476,  2272,
+  2281,  2290,  2299,  2308,  2317,  2326,  2335,  2344,  1562,   321,
+   321,-32768,  1637,   593,    72,  1647,  1648,  1650,  1651,   321,
+   321,   321,   321,   321,   321,   321,   321,   321,  1510,  2353,
+   669,  1661,  1522,  1525,-32768,-32768,-32768,-32768,  2362,  2371,
+  2380,  2389,  2398,  2407,  1569,  1579,  1599,   321,   321,-32768,
+  1528,   593,    72,   321,   321,   321,   321,   321,   321,    72,
+    72,    72,  2416,   681,  1534,  1533,  1544,  2425,  2434,  2443,
+  2452,  2461,  2470,  1671,  1673,  1679,   321,  1681,-32768,    72,
+   593,   321,   321,   321,   321,   321,   321,-32768,-32768,-32768,
+   695,-32768,  1546,  1555,  2479,  2488,  2497,  2506,  2515,  2524,
+  1688,    72,  1692,   321,   321,   321,   321,   321,   321,-32768,
+  1553,-32768,  2533,  2542,  2551,  1609,  1619,  1629,    72,   321,
+   321,   321,    72,    72,    72,  1565,  2560,  2569,  2578,  1711,
+  1720,  1721,    72,   321,   321,   321,-32768,-32768,-32768,  1578,
+  2587,  2596,  2605,   593,   321,   321,   321,  1568,  1639,  1649,
+  1659,  1724,    72,    72,    72,-32768,  1726,  1727,  1728,-32768,
+-32768,-32768,  1735,  1736,-32768
 };
 
 static const short yypgoto[] = {-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,  1284,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,  1288,
 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,  1727,  1728,  -445,   239,  1737,-32768,-32768,
--32768,   726,  -841,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,  -594,-32768,-32768,  -719,   -79,-32768,  1321,   -91,   -72,
--32768,  -794,  1033,   474,-32768
+-32768,-32768,-32768,  1731,  1743,  -445,   271,  1744,-32768,-32768,
+-32768,   717,  -843,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,  -576,-32768,-32768,  -721,   -79,-32768,  1326,   -91,   -72,
+-32768,  -727,  1053,   476,-32768
 };
 
 
-#define	YYLAST		2754
+#define	YYLAST		2756
 
 
 static const short yytable[] = {   185,
-   187,   188,   189,   157,   191,   582,   193,   194,   195,   882,
-   199,   827,   215,   216,   217,   107,   719,   720,   108,   109,
-   836,   120,    83,   925,   226,    85,     7,   843,   117,   888,
-   221,   118,   786,  1018,   657,    67,   351,   352,   353,   230,
-   231,   233,   159,   160,   670,   671,   672,   295,   161,   162,
-   163,   164,   165,   166,   167,   168,   169,   170,   171,   172,
-   173,   174,   175,   176,   177,   178,   179,   180,   181,   658,
-   340,   341,    68,    98,   159,   160,    99,   100,    70,   101,
+   187,   188,   189,   157,   191,   582,   193,   194,   195,   827,
+   199,   889,   215,   216,   217,   786,  1020,   107,   836,   226,
+   108,   109,   927,   864,     7,   843,   120,   565,    68,   865,
+   221,   657,   231,    67,   719,   720,   864,   159,   160,   230,
+    69,   233,   865,   161,   162,   163,   164,   165,   166,   167,
+   168,   169,   170,   171,   172,   173,   174,   175,   176,   177,
+   178,   179,   180,   181,    70,    83,   658,   566,    85,    94,
+    95,    71,    96,   864,   159,   160,   883,   388,   389,   865,
    161,   162,   163,   164,   165,   166,   167,   168,   169,   170,
    171,   172,   173,   174,   175,   176,   177,   178,   179,   180,
-   181,   951,   292,   293,   294,   354,   388,   389,   560,   232,
-   304,    69,   306,    71,   227,    84,   310,   589,    86,    72,
-   315,   316,   317,   812,   319,   320,   321,   322,   323,   324,
-   325,   326,   327,   328,   343,   110,   853,   121,   333,   334,
-   335,   864,   864,   638,   639,   640,   641,   642,   345,   346,
-   159,   160,   349,   587,   588,   356,   161,   162,   163,   164,
-   165,   166,   167,   168,   169,   170,   171,   172,   173,   174,
-   175,   176,   177,   178,   179,   180,   181,   952,   889,   787,
-  1019,   956,   182,   183,   296,   297,   298,   299,   212,   184,
-   300,   213,   393,   394,   395,   396,   397,   398,   399,   400,
+   181,   232,   292,   293,   294,   351,   352,   353,   295,   227,
+   304,   117,   306,    72,   118,    73,   310,   560,   926,    74,
+   315,   316,   317,    75,   319,   320,   321,   322,   323,   324,
+   325,   326,   327,   328,   343,   589,    76,   110,   333,   334,
+   335,   812,   121,    77,   296,   297,   298,   299,   345,   346,
+   300,   431,   349,   301,   432,   356,    -2,     8,    84,     9,
+   890,    86,   787,  1021,   296,   297,   298,   299,  1082,   953,
+   300,   298,   299,    78,   354,   300,   954,   182,   183,   853,
+   958,   670,   671,   672,   184,   296,   297,   298,   299,   556,
+    79,   300,   393,   394,   395,   396,   397,   398,   399,   400,
    401,   402,   403,   404,   405,   406,   407,   408,   409,   410,
-   411,   412,   925,    73,   182,   183,   414,   415,   416,   417,
-   418,   184,   296,   297,   298,   299,   556,    74,   300,    78,
-   924,  1080,   565,   433,    75,   761,    76,   449,   438,   854,
-   780,   419,   420,    77,   456,   296,   297,   298,   299,   855,
-   431,   300,   452,   432,   296,   297,   298,   299,   998,    80,
-   300,   457,   296,   297,   298,   299,   298,   299,   300,    79,
-   300,   301,   566,   296,   297,   298,   299,  -186,  -186,   300,
-    89,   300,  1040,  1041,  1042,  1043,   430,   424,   425,  1047,
-   815,   816,   298,   299,   687,   688,   300,   184,   159,   160,
-   196,   689,   690,    81,   161,   162,   163,   164,   165,   166,
-   167,   168,   169,   170,   171,   172,   173,   174,   175,   176,
-   177,   178,   179,   180,   181,  -185,  -185,   712,   548,   300,
-   713,    82,    24,    25,    26,    27,    28,    29,    30,    31,
-    87,    32,   883,    34,    35,   885,    37,   337,    88,   222,
-   557,   558,   225,  1099,  1100,    94,    95,  1103,    96,   691,
-   692,   584,   585,   586,   883,   884,    50,   575,   576,   296,
-   297,   298,   299,    91,    90,   300,   296,   297,   298,   299,
-    51,    52,   300,    92,    93,   111,   296,   297,   298,   299,
-    97,   103,   300,   112,   104,   296,   297,   298,   299,   105,
-   106,   300,  1141,   113,   604,   605,   618,   607,    98,   114,
-   115,    99,   100,   919,   101,   627,   616,   617,   116,   119,
-   122,   296,   297,   298,   299,   123,   124,   300,   102,   296,
-   297,   298,   299,    54,   155,   300,   158,   336,   182,   183,
-  1174,   296,   297,   298,   299,   184,   190,   300,   196,   857,
-   192,   201,   858,   202,   651,   206,   338,   200,   652,    39,
-    40,    41,    42,   204,    44,   653,   654,   655,   205,  1202,
-   207,    -7,    -7,   208,    -7,   209,   665,   210,   211,   218,
-   219,   666,   459,   460,   461,   462,   463,   464,   465,   466,
-   467,   468,   469,   470,   220,   693,   223,   683,   228,   459,
-   460,   461,   462,   463,   464,   465,   466,   467,   468,   469,
-   470,   696,   697,   698,   699,   700,   701,   702,   703,   704,
-   705,   706,   707,   229,    -2,     8,   235,     9,   236,   159,
-   946,   237,  1256,   721,   238,   161,   162,   163,   164,   165,
+   411,   412,   927,    80,   182,   183,   414,   415,   416,   417,
+   418,   184,    98,    81,   196,    99,   100,    82,   101,    87,
+  -187,  -187,   854,   433,   300,   587,   588,   449,   438,   855,
+   780,    88,   102,    89,   456,   296,   297,   298,   299,  1000,
+   212,   300,   452,   213,   296,   297,   298,   299,   430,    91,
+   300,   457,    10,    11,    12,    13,    14,    15,    16,    17,
+   340,   341,   296,   297,   298,   299,  -186,  -186,   300,    92,
+   300,    93,  1042,  1043,  1044,  1045,   159,   160,   712,  1049,
+    90,   713,   161,   162,   163,   164,   165,   166,   167,   168,
+   169,   170,   171,   172,   173,   174,   175,   176,   177,   178,
+   179,   180,   181,   419,   420,    97,   296,   297,   298,   299,
+   424,   425,   300,   159,   160,   687,   688,   103,   548,   161,
+   162,   163,   164,   165,   166,   167,   168,   169,   170,   171,
+   172,   173,   174,   175,   176,   177,   178,   179,   180,   181,
+   557,   558,    98,  1101,  1102,    99,   100,  1105,   101,   689,
+   690,   584,   585,   586,   691,   692,   104,   575,   576,   296,
+   297,   298,   299,   884,   885,   300,   296,   297,   298,   299,
+   884,   222,   300,   886,   225,   105,   296,   297,   298,   299,
+   106,   111,   300,   296,   297,   298,   299,   112,   113,   300,
+   115,   114,  1143,   116,   604,   605,   618,   607,   296,   297,
+   298,   299,   119,   920,   300,   627,   616,   617,   123,   122,
+   124,   761,   155,   158,   190,   192,   815,   816,   298,   299,
+   200,   201,   300,   184,   202,   204,   196,   206,   205,   207,
+  1176,   296,   297,   298,   299,   208,   209,   300,   223,   857,
+    -7,    -7,   858,    -7,   651,   210,   211,   236,   652,   218,
+   219,   220,   228,   182,   183,   653,   654,   655,   229,  1204,
+   184,   296,   297,   298,   299,   235,   665,   300,   269,   237,
+   302,   666,   459,   460,   461,   462,   463,   464,   465,   466,
+   467,   468,   469,   470,   238,   693,   239,   683,   459,   460,
+   461,   462,   463,   464,   465,   466,   467,   468,   469,   470,
+   240,   696,   697,   698,   699,   700,   701,   702,   703,   704,
+   705,   706,   707,   241,   242,   296,   297,   298,   299,   159,
+   948,   300,  1258,   721,   303,   161,   162,   163,   164,   165,
    166,   167,   168,   169,   170,   171,   172,   173,   174,   175,
-   176,   177,   178,   179,   180,   181,   239,   296,   297,   298,
-   299,   240,   198,   300,   267,   973,   758,   203,   974,   241,
-   471,   242,   243,   313,   244,   245,   246,    -7,    -7,    -7,
-    -7,    -7,    -7,    -7,    -7,   247,   224,   695,   248,   249,
+   176,   177,   178,   179,   180,   181,    -7,    -7,    -7,    -7,
+    -7,    -7,    -7,    -7,   198,   243,   758,   267,   313,   203,
+   471,   244,   245,   296,   297,   298,   299,   246,   247,   300,
+   271,   975,     1,     2,   976,     3,   695,   248,   224,   249,
    766,   767,   768,   250,   251,   781,   252,   783,   253,   785,
-   254,   777,   778,     1,     2,   255,     3,   256,    24,    25,
-    26,    27,    28,    29,    30,    31,   257,    32,   258,    34,
-    35,   269,    37,   337,   259,   260,   261,   262,   802,   803,
-    10,    11,    12,    13,    14,    15,    16,    17,   263,   264,
-   318,   265,    50,   266,   820,   272,   270,   296,   297,   298,
-   299,   271,   273,   300,   830,  1119,    51,    52,  1120,   274,
-   275,   837,   838,   839,   276,   277,   278,   279,   844,   182,
-   183,   280,   848,   281,   330,   348,   184,   282,   283,   284,
-   849,   851,   852,   285,   286,   287,   288,   289,   290,    24,
-    25,    26,    27,    28,    29,    30,    31,   291,    32,   329,
-    34,    35,   331,    37,   337,   332,   357,   358,   867,    54,
-   868,   869,   870,   871,   872,   873,   874,   875,   876,   877,
-   878,   879,   359,    50,   360,   361,   362,   363,   296,   297,
-   298,   299,   342,   364,   300,   891,   892,    51,    52,   435,
-   296,   297,   298,   299,   365,   366,   300,   296,   297,   298,
-   299,   439,   367,   300,   296,   297,   298,   299,   440,   368,
-   300,   296,   297,   298,   299,  1053,   369,   300,   296,   297,
-   298,   299,  1070,   370,   300,   371,   372,   918,   373,  1158,
-   374,   920,   921,   922,   375,   296,   297,   298,   299,   376,
-    54,   300,   296,   297,   298,   299,  1186,   377,   300,   296,
-   297,   298,   299,  1209,   378,   300,   379,   944,   302,   947,
-   380,   296,   297,   298,   299,   381,   382,   300,   383,   954,
-   303,   384,   296,   297,   298,   299,   385,   962,   300,   386,
-   387,   305,   967,   390,   392,   970,   296,   297,   298,   299,
-   391,   300,   300,   421,   422,   307,   427,   982,   983,   984,
-   985,   986,   987,   988,   989,   990,   991,   992,   993,   296,
-   297,   298,   299,   428,   429,   300,   434,   450,   308,   296,
-   297,   298,   299,   486,   489,   300,   451,   458,   309,   296,
-   297,   298,   299,   487,   494,   300,   495,   525,   314,   496,
-   551,   603,   497,  1015,   549,   550,   498,   553,   552,   499,
-   500,   554,   555,   296,   297,   298,   299,   501,   502,   300,
-   503,   562,   347,   504,   505,   296,   297,   298,   299,  1037,
-  1038,   300,   563,   564,   350,   296,   297,   298,   299,   506,
-   561,   300,   507,   650,   413,   526,   508,   509,   510,   511,
-   512,  1056,  1057,  1058,  1059,  1060,  1061,  1062,  1063,  1064,
-   567,   296,   297,   298,   299,   513,   568,   300,   514,   606,
-   423,   515,   609,   296,   297,   298,   299,   569,   516,   300,
-   517,   570,   426,   296,   297,   298,   299,   624,   625,   300,
-   610,   571,   436,   630,   631,   572,   518,   573,   574,   519,
-   637,  1097,   644,   296,   297,   298,   299,   520,   521,   300,
-   522,   447,  1108,  1109,  1110,  1111,  1112,  1113,  1114,  1115,
-  1116,   296,   297,   298,   299,   523,   524,   300,   608,   591,
-   437,   527,   577,   592,   660,   593,   662,   296,   297,   298,
-   299,   594,   611,   300,   613,   667,   668,   669,  1138,  1139,
-   673,   674,   675,   676,   677,   678,   679,   680,  1147,  1148,
-  1149,  1150,  1151,  1152,  1153,  1154,  1155,   296,   297,   298,
-   299,   595,   596,   300,   615,   614,   441,   597,   598,   296,
-   297,   298,   299,   599,   600,   300,  1171,  1172,   442,   601,
-   602,   612,  1176,  1177,  1178,  1179,  1180,  1181,   296,   297,
-   298,   299,   619,   620,   300,   621,   622,   443,   296,   297,
-   298,   299,   623,   626,   300,  1199,   628,   444,   629,   632,
-  1203,  1204,  1205,  1206,  1207,  1208,   296,   297,   298,   299,
-   633,   634,   300,   635,   636,   445,   645,   646,   648,   647,
-   649,   684,  1221,  1222,  1223,  1224,  1225,  1226,   296,   297,
-   298,   299,   656,   659,   300,   661,   663,   446,  1235,  1236,
-  1237,   296,   297,   298,   299,   664,   685,   300,   686,   694,
-   488,   710,  1249,  1250,  1251,   715,   716,   722,   723,   759,
-   726,   727,   729,  1257,  1258,  1259,   728,   730,   732,    -1,
-    22,   731,   733,    23,   296,   297,   298,   299,   809,   734,
-   300,   735,   737,   493,   817,   736,   804,   738,   821,   296,
-   297,   298,   299,   739,   125,   300,   740,   760,   528,    24,
-    25,    26,    27,    28,    29,    30,    31,   840,    32,    33,
-    34,    35,    36,    37,    38,   741,   742,   743,   744,   746,
-    39,    40,    41,    42,    43,    44,   745,    45,    46,    47,
-    48,    49,   747,    50,   296,   297,   298,   299,   748,   749,
-   300,   763,   764,   529,   751,   750,   765,    51,    52,   126,
-   127,   128,   752,    53,   753,   769,   770,   129,   130,   131,
-   132,   133,   134,   135,   136,   137,   138,   771,   772,   773,
-   774,   788,   775,   776,   782,   139,   140,   141,   142,   143,
-   144,   145,   146,   147,   148,   784,   149,   150,   151,   152,
-   153,   154,   296,   297,   298,   299,   789,   808,   300,   810,
-    54,   530,   296,   297,   298,   299,   818,   819,   300,   811,
-   813,   531,   814,   296,   297,   298,   299,   822,   823,   300,
-   824,   825,   532,   296,   297,   298,   299,   826,   828,   300,
-   829,   831,   533,   296,   297,   298,   299,   832,   833,   300,
-   835,   834,   534,   842,   841,   845,   942,   846,   859,   943,
-   296,   297,   298,   299,   847,   850,   300,   860,   864,   535,
-   296,   297,   298,   299,   861,   886,   300,   862,   887,   536,
-   863,   893,   964,   296,   297,   298,   299,   894,   895,   300,
-   897,   923,   537,   898,   899,   901,   979,   296,   297,   298,
-   299,   900,   903,   300,   904,   905,   539,   909,   296,   297,
-   298,   299,   994,   995,   300,   910,   911,   540,   296,   297,
-   298,   299,   914,   939,   300,   940,   941,   541,   296,   297,
-   298,   299,   913,   916,   300,   945,   948,   542,   296,   297,
-   298,   299,   949,   950,   300,   953,   955,   543,   296,   297,
-   298,   299,   957,   958,   300,   959,   968,   544,   296,   297,
-   298,   299,   960,   961,   300,   963,   965,   583,   966,  1035,
-  1036,   296,   297,   298,   299,   969,   971,   300,   972,   996,
-   711,   296,   297,   298,   299,   980,   981,   300,   975,  1001,
-   754,   997,   999,  1055,   296,   297,   298,   299,  1006,  1016,
-   300,  1007,   448,  1065,  1066,  1067,   296,   297,   298,   299,
-  1017,  1002,   300,  1003,  1033,   755,   296,   297,   298,   299,
-  1004,  1009,   300,  1011,  1034,   756,   296,   297,   298,   299,
-  1013,  1014,   300,  1020,  1039,   757,   296,   297,   298,   299,
-  1044,  1094,   300,  1045,  1046,   779,   296,   297,   298,   299,
-  1048,  1049,   300,  1050,  1107,   856,   296,   297,   298,   299,
-  1051,  1052,   300,  1068,  1069,   880,   296,   297,   298,   299,
-  1072,  1073,   300,  1074,  1091,   881,   296,   297,   298,   299,
-  1075,  1092,   300,  1076,  1093,   902,   296,   297,   298,   299,
-  1077,  1096,   300,  1095,  1101,   906,  1142,   296,   297,   298,
-   299,  1098,  1078,   300,  1102,  1104,   908,   296,   297,   298,
-   299,  1105,  1079,   300,  1081,  1106,   926,   296,   297,   298,
-   299,  1121,  1117,   300,  1127,  1118,   976,   296,   297,   298,
-   299,  1137,  1122,   300,  1175,  1124,   977,  1125,  1123,  1140,
-  1126,  1182,  1183,  1184,   296,   297,   298,   299,  1143,  1144,
-   300,  1145,  1146,   978,   296,   297,   298,   299,  1156,  1159,
-   300,  1201,  1173,  1008,   296,   297,   298,   299,  1160,  1187,
-   300,  1161,  1196,  1010,  1197,   296,   297,   298,   299,  1188,
-  1272,   300,  1198,  1219,  1012,   296,   297,   298,   299,  1200,
-  1189,   300,  1210,  1218,  1030,   296,   297,   298,   299,  1227,
-  1234,   300,  1211,   453,  1238,  1239,  1240,   296,   297,   298,
-   299,  1220,  1241,   300,  1248,  1245,  1031,   296,   297,   298,
-   299,  1246,  1247,   300,  1252,  1264,  1032,  1268,  1260,  1269,
-  1270,  1273,    58,    59,  1265,  1266,  1267,   296,   297,   298,
-   299,   590,    60,   300,  1054,   807,  1168,   296,   297,   298,
-   299,   559,     0,   300,     0,     0,  1169,   296,   297,   298,
-   299,     0,     0,   300,     0,     0,  1170,   296,   297,   298,
-   299,     0,     0,   300,     0,     0,  1231,   296,   297,   298,
-   299,     0,     0,   300,     0,     0,  1232,   296,   297,   298,
-   299,     0,     0,   300,     0,     0,  1233,   296,   297,   298,
-   299,     0,     0,   300,     0,     0,  1261,   296,   297,   298,
-   299,     0,     0,   300,     0,     0,  1262,   296,   297,   298,
-   299,     0,     0,   300,     0,     0,  1263,   296,   297,   298,
-   299,     0,     0,   300,     0,   454,   296,   297,   298,   299,
-     0,     0,   300,     0,   455,   296,   297,   298,   299,     0,
-     0,   300,     0,   484,   296,   297,   298,   299,     0,     0,
-   300,     0,   485,   296,   297,   298,   299,     0,     0,   300,
-     0,   538,   296,   297,   298,   299,     0,     0,   300,     0,
-   545,   296,   297,   298,   299,     0,     0,   300,     0,   546,
-   296,   297,   298,   299,     0,     0,   300,     0,   547,   296,
-   297,   298,   299,     0,     0,   300,     0,   681,   296,   297,
-   298,   299,     0,     0,   300,     0,   682,   296,   297,   298,
-   299,     0,     0,   300,     0,   708,   296,   297,   298,   299,
-     0,     0,   300,     0,   709,   296,   297,   298,   299,     0,
-     0,   300,     0,   724,   296,   297,   298,   299,     0,     0,
-   300,     0,   725,   296,   297,   298,   299,     0,     0,   300,
-     0,   762,   296,   297,   298,   299,     0,     0,   300,     0,
-   790,   296,   297,   298,   299,     0,     0,   300,     0,   791,
-   296,   297,   298,   299,     0,     0,   300,     0,   792,   296,
-   297,   298,   299,     0,     0,   300,     0,   793,   296,   297,
-   298,   299,     0,     0,   300,     0,   794,   296,   297,   298,
-   299,     0,     0,   300,     0,   795,   296,   297,   298,   299,
-     0,     0,   300,     0,   796,   296,   297,   298,   299,     0,
-     0,   300,     0,   797,   296,   297,   298,   299,     0,     0,
-   300,     0,   798,   296,   297,   298,   299,     0,     0,   300,
-     0,   799,   296,   297,   298,   299,     0,     0,   300,     0,
-   800,   296,   297,   298,   299,     0,     0,   300,     0,   801,
-   296,   297,   298,   299,     0,     0,   300,     0,   896,   296,
-   297,   298,   299,     0,     0,   300,     0,   907,   296,   297,
-   298,   299,     0,     0,   300,     0,   912,   296,   297,   298,
-   299,     0,     0,   300,     0,   915,   296,   297,   298,   299,
-     0,     0,   300,     0,   917,   296,   297,   298,   299,     0,
-     0,   300,     0,   927,   296,   297,   298,   299,     0,     0,
-   300,     0,   928,   296,   297,   298,   299,     0,     0,   300,
-     0,   929,   296,   297,   298,   299,     0,     0,   300,     0,
-   930,   296,   297,   298,   299,     0,     0,   300,     0,   931,
-   296,   297,   298,   299,     0,     0,   300,     0,   932,   296,
-   297,   298,   299,     0,     0,   300,     0,   933,   296,   297,
-   298,   299,     0,     0,   300,     0,   934,   296,   297,   298,
-   299,     0,     0,   300,     0,   935,   296,   297,   298,   299,
-     0,     0,   300,     0,   936,   296,   297,   298,   299,     0,
-     0,   300,     0,   937,   296,   297,   298,   299,     0,     0,
-   300,     0,   938,   296,   297,   298,   299,     0,     0,   300,
-     0,  1000,   296,   297,   298,   299,     0,     0,   300,     0,
-  1005,   296,   297,   298,   299,     0,     0,   300,     0,  1021,
-   296,   297,   298,   299,     0,     0,   300,     0,  1022,   296,
-   297,   298,   299,     0,     0,   300,     0,  1023,   296,   297,
-   298,   299,     0,     0,   300,     0,  1024,   296,   297,   298,
-   299,     0,     0,   300,     0,  1025,   296,   297,   298,   299,
-     0,     0,   300,     0,  1026,   296,   297,   298,   299,     0,
-     0,   300,     0,  1027,   296,   297,   298,   299,     0,     0,
-   300,     0,  1028,   296,   297,   298,   299,     0,     0,   300,
-     0,  1029,   296,   297,   298,   299,     0,     0,   300,     0,
-  1071,   296,   297,   298,   299,     0,     0,   300,     0,  1082,
-   296,   297,   298,   299,     0,     0,   300,     0,  1083,   296,
-   297,   298,   299,     0,     0,   300,     0,  1084,   296,   297,
-   298,   299,     0,     0,   300,     0,  1085,   296,   297,   298,
-   299,     0,     0,   300,     0,  1086,   296,   297,   298,   299,
-     0,     0,   300,     0,  1087,   296,   297,   298,   299,     0,
-     0,   300,     0,  1088,   296,   297,   298,   299,     0,     0,
-   300,     0,  1089,   296,   297,   298,   299,     0,     0,   300,
-     0,  1090,   296,   297,   298,   299,     0,     0,   300,     0,
-  1128,   296,   297,   298,   299,     0,     0,   300,     0,  1129,
-   296,   297,   298,   299,     0,     0,   300,     0,  1130,   296,
-   297,   298,   299,     0,     0,   300,     0,  1131,   296,   297,
-   298,   299,     0,     0,   300,     0,  1132,   296,   297,   298,
-   299,     0,     0,   300,     0,  1133,   296,   297,   298,   299,
-     0,     0,   300,     0,  1134,   296,   297,   298,   299,     0,
-     0,   300,     0,  1135,   296,   297,   298,   299,     0,     0,
-   300,     0,  1136,   296,   297,   298,   299,     0,     0,   300,
-     0,  1157,   296,   297,   298,   299,     0,     0,   300,     0,
-  1162,   296,   297,   298,   299,     0,     0,   300,     0,  1163,
-   296,   297,   298,   299,     0,     0,   300,     0,  1164,   296,
-   297,   298,   299,     0,     0,   300,     0,  1165,   296,   297,
-   298,   299,     0,     0,   300,     0,  1166,   296,   297,   298,
-   299,     0,     0,   300,     0,  1167,   296,   297,   298,   299,
-     0,     0,   300,     0,  1185,   296,   297,   298,   299,     0,
-     0,   300,     0,  1190,   296,   297,   298,   299,     0,     0,
-   300,     0,  1191,   296,   297,   298,   299,     0,     0,   300,
-     0,  1192,   296,   297,   298,   299,     0,     0,   300,     0,
-  1193,   296,   297,   298,   299,     0,     0,   300,     0,  1194,
-   296,   297,   298,   299,     0,     0,   300,     0,  1195,   296,
-   297,   298,   299,     0,     0,   300,     0,  1212,   296,   297,
-   298,   299,     0,     0,   300,     0,  1213,   296,   297,   298,
-   299,     0,     0,   300,     0,  1214,   296,   297,   298,   299,
-     0,     0,   300,     0,  1215,   296,   297,   298,   299,     0,
-     0,   300,     0,  1216,   296,   297,   298,   299,     0,     0,
-   300,     0,  1217,   296,   297,   298,   299,     0,     0,   300,
-     0,  1228,   296,   297,   298,   299,     0,     0,   300,     0,
-  1229,   296,   297,   298,   299,     0,     0,   300,     0,  1230,
-   296,   297,   298,   299,     0,     0,   300,     0,  1242,   296,
-   297,   298,   299,     0,     0,   300,     0,  1243,   296,   297,
-   298,   299,     0,     0,   300,     0,  1244,   296,   297,   298,
-   299,     0,     0,   300,     0,  1253,   296,   297,   298,   299,
-     0,     0,   300,     0,  1254,   296,   297,   298,   299,     0,
-     0,   300,     0,  1255
+   318,   777,   778,    24,    25,    26,    27,    28,    29,    30,
+    31,   254,    32,   255,    34,    35,   256,    37,   337,   296,
+   297,   298,   299,   257,   258,   300,   348,  1121,   802,   803,
+  1122,   259,   296,   297,   298,   299,   260,    50,   300,   296,
+   297,   298,   299,   435,   820,   300,   270,   261,   262,   263,
+   439,    51,    52,   264,   830,    39,    40,    41,    42,   265,
+    44,   837,   838,   839,   266,   272,   273,   274,   844,   182,
+   183,   275,   848,   276,   277,   278,   184,   279,   280,   281,
+   849,   851,   852,   638,   639,   640,   641,   642,   282,   283,
+   284,    24,    25,    26,    27,    28,    29,    30,    31,   285,
+    32,   286,    34,    35,    54,    37,   337,   287,   868,   288,
+   869,   870,   871,   872,   873,   874,   875,   876,   877,   878,
+   879,   880,   289,   330,   290,    50,   291,   338,   296,   297,
+   298,   299,   329,   332,   300,   892,   893,   305,   331,    51,
+    52,    24,    25,    26,    27,    28,    29,    30,    31,   357,
+    32,   358,    34,    35,   359,    37,   337,   296,   297,   298,
+   299,   360,   361,   300,   296,   297,   298,   299,   440,   362,
+   300,   363,   364,   307,   365,    50,   366,   919,   367,   386,
+   368,   921,   922,   923,   369,   296,   297,   298,   299,    51,
+    52,   300,    54,   370,   371,   372,  1055,   373,   296,   297,
+   298,   299,   374,   375,   300,   376,   377,   378,   946,  1072,
+   949,   296,   297,   298,   299,   342,   379,   300,   380,   381,
+   956,   382,  1160,   296,   297,   298,   299,   391,   964,   300,
+   383,   384,   385,   969,  1188,   387,   972,   296,   297,   298,
+   299,   390,    54,   300,   392,   300,   450,   421,  1211,   984,
+   985,   986,   987,   988,   989,   990,   991,   992,   993,   994,
+   995,   296,   297,   298,   299,   422,   427,   300,   428,   429,
+   308,   296,   297,   298,   299,   434,   451,   300,   458,   486,
+   309,   296,   297,   298,   299,   487,   489,   300,   494,   525,
+   314,   495,   496,   497,   498,  1017,   549,   550,   499,   500,
+   552,   551,   501,   554,   555,   296,   297,   298,   299,   502,
+   503,   300,   504,   553,   347,   526,   505,   296,   297,   298,
+   299,  1039,  1040,   300,   562,   563,   350,   296,   297,   298,
+   299,   506,   507,   300,   508,   561,   413,   509,   510,   564,
+   567,   568,   511,  1058,  1059,  1060,  1061,  1062,  1063,  1064,
+  1065,  1066,   569,   296,   297,   298,   299,   512,   513,   300,
+   514,   606,   423,   515,   609,   296,   297,   298,   299,   516,
+   517,   300,   570,   571,   426,   296,   297,   298,   299,   624,
+   625,   300,   518,   572,   436,   630,   631,   573,   519,   520,
+   574,   591,   637,  1099,   644,   296,   297,   298,   299,   521,
+   522,   300,   523,   336,  1110,  1111,  1112,  1113,  1114,  1115,
+  1116,  1117,  1118,   296,   297,   298,   299,   524,   527,   300,
+   577,   592,   437,   593,   594,   595,   660,   596,   662,   603,
+   597,   598,   599,   600,   608,   601,   602,   667,   668,   669,
+  1140,  1141,   673,   674,   675,   676,   677,   678,   679,   680,
+  1149,  1150,  1151,  1152,  1153,  1154,  1155,  1156,  1157,   296,
+   297,   298,   299,   610,   611,   300,   612,   613,   441,   614,
+   615,   296,   297,   298,   299,   619,   620,   300,  1173,  1174,
+   442,   621,   622,   623,  1178,  1179,  1180,  1181,  1182,  1183,
+   296,   297,   298,   299,   626,   628,   300,   629,   632,   443,
+   296,   297,   298,   299,   633,   634,   300,  1201,   635,   444,
+   636,   645,  1205,  1206,  1207,  1208,  1209,  1210,   296,   297,
+   298,   299,   646,   647,   300,   648,   649,   445,   684,   715,
+   650,   656,   659,   661,  1223,  1224,  1225,  1226,  1227,  1228,
+   296,   297,   298,   299,   663,   664,   300,   685,   686,   446,
+  1237,  1238,  1239,   296,   297,   298,   299,   694,   710,   300,
+   716,   722,   488,   723,  1251,  1252,  1253,   726,   727,   759,
+   728,   729,   760,   730,   732,  1259,  1260,  1261,   735,   731,
+   733,    -1,    22,   734,   736,    23,   296,   297,   298,   299,
+   809,   737,   300,   738,   745,   493,   817,   751,   739,   740,
+   821,   296,   297,   298,   299,   741,   125,   300,   742,   763,
+   528,    24,    25,    26,    27,    28,    29,    30,    31,   840,
+    32,    33,    34,    35,    36,    37,    38,   743,   744,   746,
+   764,   765,    39,    40,    41,    42,    43,    44,   747,    45,
+    46,    47,    48,    49,   748,    50,   296,   297,   298,   299,
+   749,   750,   300,   769,   770,   529,   771,   752,   772,    51,
+    52,   126,   127,   128,   753,    53,   773,   774,   775,   129,
+   130,   131,   132,   133,   134,   135,   136,   137,   138,   776,
+   782,   788,   784,   789,   808,   804,   810,   139,   140,   141,
+   142,   143,   144,   145,   146,   147,   148,   811,   149,   150,
+   151,   152,   153,   154,   296,   297,   298,   299,   813,   814,
+   300,   818,    54,   530,   296,   297,   298,   299,   822,   819,
+   300,   823,   825,   531,   829,   296,   297,   298,   299,   824,
+   826,   300,   832,   828,   532,   296,   297,   298,   299,   831,
+   833,   300,   835,   834,   533,   296,   297,   298,   299,   841,
+   842,   300,   845,   846,   534,   296,   297,   298,   299,   944,
+   847,   300,   945,   850,   535,   296,   297,   298,   299,   859,
+   861,   300,   860,   887,   536,   296,   297,   298,   299,   862,
+   863,   300,   888,   895,   537,   966,   296,   297,   298,   299,
+   894,   896,   300,   898,   924,   539,   296,   297,   298,   299,
+   981,   901,   300,   905,   947,   540,   296,   297,   298,   299,
+   899,   925,   300,   941,   943,   541,   996,   997,   296,   297,
+   298,   299,   900,   902,   300,   942,   950,   542,   296,   297,
+   298,   299,   904,   910,   300,   906,   911,   543,   296,   297,
+   298,   299,   912,   914,   300,   915,   952,   544,   296,   297,
+   298,   299,   917,   951,   300,   955,   957,   583,   296,   297,
+   298,   299,   959,   960,   300,   961,   970,   711,   962,   296,
+   297,   298,   299,  1037,  1038,   300,   963,   965,   754,   296,
+   297,   298,   299,   967,   973,   300,   968,   971,   755,   296,
+   297,   298,   299,   982,   974,   300,   977,  1057,   756,   983,
+  1003,   998,   999,  1001,  1004,  1018,  1005,  1067,  1068,  1069,
+   296,   297,   298,   299,  1006,  1011,   300,  1008,  1009,   757,
+   296,   297,   298,   299,  1013,  1015,   300,  1016,  1019,   779,
+   296,   297,   298,   299,  1022,  1035,   300,  1036,  1041,   856,
+   296,   297,   298,   299,  1046,  1096,   300,  1047,  1048,   881,
+   296,   297,   298,   299,  1050,  1051,   300,  1052,  1109,   882,
+   296,   297,   298,   299,  1053,  1054,   300,  1070,  1071,   903,
+   296,   297,   298,   299,  1074,  1075,   300,  1076,  1093,   907,
+   296,   297,   298,   299,  1077,  1078,   300,  1079,  1094,   909,
+   296,   297,   298,   299,  1080,  1081,   300,  1083,  1095,   928,
+  1144,   296,   297,   298,   299,  1098,  1097,   300,  1100,  1103,
+   978,   296,   297,   298,   299,  1104,  1106,   300,  1107,  1119,
+   979,   296,   297,   298,   299,  1108,  1120,   300,  1123,  1129,
+   980,   296,   297,   298,   299,  1124,  1125,   300,  1177,  1142,
+  1010,  1139,  1126,  1127,  1128,  1184,  1185,  1186,   296,   297,
+   298,   299,  1145,  1146,   300,  1147,  1148,  1012,   296,   297,
+   298,   299,  1158,  1161,   300,  1203,  1175,  1014,   296,   297,
+   298,   299,  1162,  1189,   300,  1163,  1198,  1032,  1199,   296,
+   297,   298,   299,  1190,  1200,   300,  1202,  1221,  1033,   296,
+   297,   298,   299,  1220,  1191,   300,  1212,  1222,  1034,   296,
+   297,   298,   299,  1229,  1236,   300,  1213,   447,  1240,  1241,
+  1242,   296,   297,   298,   299,  1243,  1247,   300,  1250,  1262,
+  1170,   296,   297,   298,   299,  1248,  1249,   300,  1254,  1266,
+  1171,  1270,  1271,  1272,  1274,  1275,    58,  1056,  1267,  1268,
+  1269,   296,   297,   298,   299,   590,     0,   300,    59,    60,
+  1172,   296,   297,   298,   299,     0,   559,   300,     0,     0,
+  1233,   296,   297,   298,   299,   807,     0,   300,     0,     0,
+  1234,   296,   297,   298,   299,     0,     0,   300,     0,     0,
+  1235,   296,   297,   298,   299,     0,     0,   300,     0,     0,
+  1263,   296,   297,   298,   299,     0,     0,   300,     0,     0,
+  1264,   296,   297,   298,   299,     0,     0,   300,     0,     0,
+  1265,   296,   297,   298,   299,     0,     0,   300,     0,   448,
+   296,   297,   298,   299,     0,     0,   300,     0,   453,   296,
+   297,   298,   299,     0,     0,   300,     0,   454,   296,   297,
+   298,   299,     0,     0,   300,     0,   455,   296,   297,   298,
+   299,     0,     0,   300,     0,   484,   296,   297,   298,   299,
+     0,     0,   300,     0,   485,   296,   297,   298,   299,     0,
+     0,   300,     0,   538,   296,   297,   298,   299,     0,     0,
+   300,     0,   545,   296,   297,   298,   299,     0,     0,   300,
+     0,   546,   296,   297,   298,   299,     0,     0,   300,     0,
+   547,   296,   297,   298,   299,     0,     0,   300,     0,   681,
+   296,   297,   298,   299,     0,     0,   300,     0,   682,   296,
+   297,   298,   299,     0,     0,   300,     0,   708,   296,   297,
+   298,   299,     0,     0,   300,     0,   709,   296,   297,   298,
+   299,     0,     0,   300,     0,   724,   296,   297,   298,   299,
+     0,     0,   300,     0,   725,   296,   297,   298,   299,     0,
+     0,   300,     0,   762,   296,   297,   298,   299,     0,     0,
+   300,     0,   790,   296,   297,   298,   299,     0,     0,   300,
+     0,   791,   296,   297,   298,   299,     0,     0,   300,     0,
+   792,   296,   297,   298,   299,     0,     0,   300,     0,   793,
+   296,   297,   298,   299,     0,     0,   300,     0,   794,   296,
+   297,   298,   299,     0,     0,   300,     0,   795,   296,   297,
+   298,   299,     0,     0,   300,     0,   796,   296,   297,   298,
+   299,     0,     0,   300,     0,   797,   296,   297,   298,   299,
+     0,     0,   300,     0,   798,   296,   297,   298,   299,     0,
+     0,   300,     0,   799,   296,   297,   298,   299,     0,     0,
+   300,     0,   800,   296,   297,   298,   299,     0,     0,   300,
+     0,   801,   296,   297,   298,   299,     0,     0,   300,     0,
+   897,   296,   297,   298,   299,     0,     0,   300,     0,   908,
+   296,   297,   298,   299,     0,     0,   300,     0,   913,   296,
+   297,   298,   299,     0,     0,   300,     0,   916,   296,   297,
+   298,   299,     0,     0,   300,     0,   918,   296,   297,   298,
+   299,     0,     0,   300,     0,   929,   296,   297,   298,   299,
+     0,     0,   300,     0,   930,   296,   297,   298,   299,     0,
+     0,   300,     0,   931,   296,   297,   298,   299,     0,     0,
+   300,     0,   932,   296,   297,   298,   299,     0,     0,   300,
+     0,   933,   296,   297,   298,   299,     0,     0,   300,     0,
+   934,   296,   297,   298,   299,     0,     0,   300,     0,   935,
+   296,   297,   298,   299,     0,     0,   300,     0,   936,   296,
+   297,   298,   299,     0,     0,   300,     0,   937,   296,   297,
+   298,   299,     0,     0,   300,     0,   938,   296,   297,   298,
+   299,     0,     0,   300,     0,   939,   296,   297,   298,   299,
+     0,     0,   300,     0,   940,   296,   297,   298,   299,     0,
+     0,   300,     0,  1002,   296,   297,   298,   299,     0,     0,
+   300,     0,  1007,   296,   297,   298,   299,     0,     0,   300,
+     0,  1023,   296,   297,   298,   299,     0,     0,   300,     0,
+  1024,   296,   297,   298,   299,     0,     0,   300,     0,  1025,
+   296,   297,   298,   299,     0,     0,   300,     0,  1026,   296,
+   297,   298,   299,     0,     0,   300,     0,  1027,   296,   297,
+   298,   299,     0,     0,   300,     0,  1028,   296,   297,   298,
+   299,     0,     0,   300,     0,  1029,   296,   297,   298,   299,
+     0,     0,   300,     0,  1030,   296,   297,   298,   299,     0,
+     0,   300,     0,  1031,   296,   297,   298,   299,     0,     0,
+   300,     0,  1073,   296,   297,   298,   299,     0,     0,   300,
+     0,  1084,   296,   297,   298,   299,     0,     0,   300,     0,
+  1085,   296,   297,   298,   299,     0,     0,   300,     0,  1086,
+   296,   297,   298,   299,     0,     0,   300,     0,  1087,   296,
+   297,   298,   299,     0,     0,   300,     0,  1088,   296,   297,
+   298,   299,     0,     0,   300,     0,  1089,   296,   297,   298,
+   299,     0,     0,   300,     0,  1090,   296,   297,   298,   299,
+     0,     0,   300,     0,  1091,   296,   297,   298,   299,     0,
+     0,   300,     0,  1092,   296,   297,   298,   299,     0,     0,
+   300,     0,  1130,   296,   297,   298,   299,     0,     0,   300,
+     0,  1131,   296,   297,   298,   299,     0,     0,   300,     0,
+  1132,   296,   297,   298,   299,     0,     0,   300,     0,  1133,
+   296,   297,   298,   299,     0,     0,   300,     0,  1134,   296,
+   297,   298,   299,     0,     0,   300,     0,  1135,   296,   297,
+   298,   299,     0,     0,   300,     0,  1136,   296,   297,   298,
+   299,     0,     0,   300,     0,  1137,   296,   297,   298,   299,
+     0,     0,   300,     0,  1138,   296,   297,   298,   299,     0,
+     0,   300,     0,  1159,   296,   297,   298,   299,     0,     0,
+   300,     0,  1164,   296,   297,   298,   299,     0,     0,   300,
+     0,  1165,   296,   297,   298,   299,     0,     0,   300,     0,
+  1166,   296,   297,   298,   299,     0,     0,   300,     0,  1167,
+   296,   297,   298,   299,     0,     0,   300,     0,  1168,   296,
+   297,   298,   299,     0,     0,   300,     0,  1169,   296,   297,
+   298,   299,     0,     0,   300,     0,  1187,   296,   297,   298,
+   299,     0,     0,   300,     0,  1192,   296,   297,   298,   299,
+     0,     0,   300,     0,  1193,   296,   297,   298,   299,     0,
+     0,   300,     0,  1194,   296,   297,   298,   299,     0,     0,
+   300,     0,  1195,   296,   297,   298,   299,     0,     0,   300,
+     0,  1196,   296,   297,   298,   299,     0,     0,   300,     0,
+  1197,   296,   297,   298,   299,     0,     0,   300,     0,  1214,
+   296,   297,   298,   299,     0,     0,   300,     0,  1215,   296,
+   297,   298,   299,     0,     0,   300,     0,  1216,   296,   297,
+   298,   299,     0,     0,   300,     0,  1217,   296,   297,   298,
+   299,     0,     0,   300,     0,  1218,   296,   297,   298,   299,
+     0,     0,   300,     0,  1219,   296,   297,   298,   299,     0,
+     0,   300,     0,  1230,   296,   297,   298,   299,     0,     0,
+   300,     0,  1231,   296,   297,   298,   299,     0,     0,   300,
+     0,  1232,   296,   297,   298,   299,     0,     0,   300,     0,
+  1244,   296,   297,   298,   299,     0,     0,   300,     0,  1245,
+   296,   297,   298,   299,     0,     0,   300,     0,  1246,   296,
+   297,   298,   299,     0,     0,   300,     0,  1255,   296,   297,
+   298,   299,     0,     0,   300,     0,  1256,   296,   297,   298,
+   299,     0,     0,   300,     0,  1257
 };
 
 static const short yycheck[] = {    79,
-    80,    81,    82,    76,    84,   451,    86,    87,    88,   804,
-    90,   731,   104,   105,   106,    30,   611,   612,    33,    34,
-   740,    34,    57,   865,    63,    57,   136,   747,    30,     4,
-   110,    33,     6,     6,     6,     3,    85,    86,    87,   119,
-    81,   121,     3,     4,    47,    48,    49,     6,     9,    10,
-    11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-    21,    22,    23,    24,    25,    26,    27,    28,    29,    41,
-     6,     7,     6,    30,     3,     4,    33,    34,     6,    36,
+    80,    81,    82,    76,    84,   451,    86,    87,    88,   731,
+    90,     4,   104,   105,   106,     6,     6,    30,   740,    63,
+    33,    34,   866,    59,   136,   747,    34,     6,     6,    65,
+   110,     6,    81,     3,   611,   612,    59,     3,     4,   119,
+     7,   121,    65,     9,    10,    11,    12,    13,    14,    15,
+    16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+    26,    27,    28,    29,     6,    57,    41,    46,    57,    33,
+    34,     6,    36,    59,     3,     4,   804,   151,   152,    65,
      9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
-    29,   896,   182,   183,   184,   154,   151,   152,     6,   150,
-   190,     7,   192,     6,   153,   150,   196,     6,   150,     6,
-   200,   201,   202,   718,   204,   205,   206,   207,   208,   209,
-   210,   211,   212,   213,   226,   150,     6,   150,   218,   219,
-   220,    65,    65,    91,    92,    93,    94,    95,   228,   229,
-     3,     4,   232,   151,   152,   235,     9,    10,    11,    12,
-    13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-    23,    24,    25,    26,    27,    28,    29,   897,   153,   153,
-   153,   901,   143,   144,   143,   144,   145,   146,   150,   150,
-   149,   153,   272,   273,   274,   275,   276,   277,   278,   279,
+    29,   150,   182,   183,   184,    85,    86,    87,     6,   153,
+   190,    30,   192,     6,    33,     6,   196,     6,   154,     6,
+   200,   201,   202,   150,   204,   205,   206,   207,   208,   209,
+   210,   211,   212,   213,   226,     6,   150,   150,   218,   219,
+   220,   718,   150,   150,   143,   144,   145,   146,   228,   229,
+   149,   151,   232,   152,   154,   235,     0,     1,   150,     3,
+   153,   150,   153,   153,   143,   144,   145,   146,   154,   897,
+   149,   145,   146,     6,   154,   149,   898,   143,   144,     6,
+   902,    47,    48,    49,   150,   143,   144,   145,   146,   155,
+     7,   149,   272,   273,   274,   275,   276,   277,   278,   279,
    280,   281,   282,   283,   284,   285,   286,   287,   288,   289,
-   290,   291,  1054,     6,   143,   144,   296,   297,   298,   299,
-   300,   150,   143,   144,   145,   146,   155,     6,   149,     6,
-   154,   154,     6,   313,   150,   156,   150,   329,   318,     6,
-   686,     6,     7,   150,   336,   143,   144,   145,   146,     6,
-   151,   149,   332,   154,   143,   144,   145,   146,     6,   150,
-   149,   341,   143,   144,   145,   146,   145,   146,   149,     7,
-   149,   152,    46,   143,   144,   145,   146,   145,   146,   149,
-    38,   149,  1002,  1003,  1004,  1005,     8,     6,     7,  1009,
-   143,   144,   145,   146,   151,   152,   149,   150,     3,     4,
-   153,   151,   152,   150,     9,    10,    11,    12,    13,    14,
-    15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-    25,    26,    27,    28,    29,   145,   146,   150,   420,   149,
-   153,   150,    30,    31,    32,    33,    34,    35,    36,    37,
-   150,    39,   151,    41,    42,   154,    44,    45,   150,   111,
-   430,   431,   114,  1073,  1074,    33,    34,  1077,    36,   151,
-   152,   453,   454,   455,   151,   152,    64,   447,   448,   143,
-   144,   145,   146,    34,   150,   149,   143,   144,   145,   146,
-    78,    79,   149,    34,    34,   153,   143,   144,   145,   146,
-    36,   150,   149,     5,   150,   143,   144,   145,   146,   150,
-   150,   149,  1122,    34,   484,   485,   498,   487,    30,   153,
-     6,    33,    34,   859,    36,   507,   496,   497,     5,   150,
-   153,   143,   144,   145,   146,    34,     3,   149,    50,   143,
-   144,   145,   146,   131,   150,   149,     5,   151,   143,   144,
-  1160,   143,   144,   145,   146,   150,   150,   149,   153,   151,
-   150,   150,   154,   150,   527,   150,   154,   153,   538,    51,
-    52,    53,    54,   153,    56,   545,   546,   547,   153,  1189,
-   150,     0,     1,   150,     3,   150,   556,   150,   150,   150,
-   150,   561,    66,    67,    68,    69,    70,    71,    72,    73,
-    74,    75,    76,    77,   150,   587,     6,   577,   150,    66,
-    67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
-    77,   591,   592,   593,   594,   595,   596,   597,   598,   599,
-   600,   601,   602,   150,     0,     1,   150,     3,     3,     3,
-     4,   150,  1252,   613,   150,     9,    10,    11,    12,    13,
+   290,   291,  1056,   150,   143,   144,   296,   297,   298,   299,
+   300,   150,    30,   150,   153,    33,    34,   150,    36,   150,
+   145,   146,     6,   313,   149,   151,   152,   329,   318,     6,
+   686,   150,    50,    38,   336,   143,   144,   145,   146,     6,
+   150,   149,   332,   153,   143,   144,   145,   146,     8,    34,
+   149,   341,   106,   107,   108,   109,   110,   111,   112,   113,
+     6,     7,   143,   144,   145,   146,   145,   146,   149,    34,
+   149,    34,  1004,  1005,  1006,  1007,     3,     4,   150,  1011,
+   150,   153,     9,    10,    11,    12,    13,    14,    15,    16,
+    17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
+    27,    28,    29,     6,     7,    36,   143,   144,   145,   146,
+     6,     7,   149,     3,     4,   151,   152,   150,   420,     9,
+    10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+    20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
+   430,   431,    30,  1075,  1076,    33,    34,  1079,    36,   151,
+   152,   453,   454,   455,   151,   152,   150,   447,   448,   143,
+   144,   145,   146,   151,   152,   149,   143,   144,   145,   146,
+   151,   111,   149,   154,   114,   150,   143,   144,   145,   146,
+   150,   153,   149,   143,   144,   145,   146,     5,    34,   149,
+     6,   153,  1124,     5,   484,   485,   498,   487,   143,   144,
+   145,   146,   150,   859,   149,   507,   496,   497,    34,   153,
+     3,   156,   150,     5,   150,   150,   143,   144,   145,   146,
+   153,   150,   149,   150,   150,   153,   153,   150,   153,   150,
+  1162,   143,   144,   145,   146,   150,   150,   149,     6,   151,
+     0,     1,   154,     3,   527,   150,   150,     3,   538,   150,
+   150,   150,   150,   143,   144,   545,   546,   547,   150,  1191,
+   150,   143,   144,   145,   146,   150,   556,   149,   151,   150,
+   152,   561,    66,    67,    68,    69,    70,    71,    72,    73,
+    74,    75,    76,    77,   150,   587,   150,   577,    66,    67,
+    68,    69,    70,    71,    72,    73,    74,    75,    76,    77,
+   150,   591,   592,   593,   594,   595,   596,   597,   598,   599,
+   600,   601,   602,   150,   150,   143,   144,   145,   146,     3,
+     4,   149,  1254,   613,   152,     9,    10,    11,    12,    13,
     14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-    24,    25,    26,    27,    28,    29,   150,   143,   144,   145,
-   146,   150,    89,   149,     5,   151,   658,    94,   154,   150,
-   154,   150,   150,     7,   150,   150,   150,   106,   107,   108,
-   109,   110,   111,   112,   113,   150,   113,   154,   150,   150,
+    24,    25,    26,    27,    28,    29,   106,   107,   108,   109,
+   110,   111,   112,   113,    89,   150,   658,     5,     7,    94,
+   154,   150,   150,   143,   144,   145,   146,   150,   150,   149,
+   151,   151,   132,   133,   154,   135,   154,   150,   113,   150,
    670,   671,   672,   150,   150,   687,   150,   689,   150,   691,
-   150,   681,   682,   132,   133,   150,   135,   150,    30,    31,
-    32,    33,    34,    35,    36,    37,   150,    39,   150,    41,
-    42,   151,    44,    45,   150,   150,   150,   150,   708,   709,
-   106,   107,   108,   109,   110,   111,   112,   113,   150,   150,
-     7,   150,    64,   150,   724,   150,   152,   143,   144,   145,
-   146,   151,   150,   149,   734,   151,    78,    79,   154,   150,
-   150,   741,   742,   743,   150,   150,   150,   150,   748,   143,
-   144,   150,   752,   150,   152,    82,   150,   150,   150,   150,
-   753,   761,   762,   150,   150,   150,   150,   150,   150,    30,
-    31,    32,    33,    34,    35,    36,    37,   150,    39,   151,
-    41,    42,   152,    44,    45,   151,   137,     5,   788,   131,
+     7,   681,   682,    30,    31,    32,    33,    34,    35,    36,
+    37,   150,    39,   150,    41,    42,   150,    44,    45,   143,
+   144,   145,   146,   150,   150,   149,    82,   151,   708,   709,
+   154,   150,   143,   144,   145,   146,   150,    64,   149,   143,
+   144,   145,   146,   154,   724,   149,   152,   150,   150,   150,
+   154,    78,    79,   150,   734,    51,    52,    53,    54,   150,
+    56,   741,   742,   743,   150,   150,   150,   150,   748,   143,
+   144,   150,   752,   150,   150,   150,   150,   150,   150,   150,
+   753,   761,   762,    91,    92,    93,    94,    95,   150,   150,
+   150,    30,    31,    32,    33,    34,    35,    36,    37,   150,
+    39,   150,    41,    42,   131,    44,    45,   150,   788,   150,
    790,   791,   792,   793,   794,   795,   796,   797,   798,   799,
-   800,   801,     5,    64,     5,     5,     5,     5,   143,   144,
-   145,   146,   154,     5,   149,   815,   816,    78,    79,   154,
-   143,   144,   145,   146,     5,     5,   149,   143,   144,   145,
-   146,   154,     5,   149,   143,   144,   145,   146,   154,     5,
-   149,   143,   144,   145,   146,   154,     5,   149,   143,   144,
-   145,   146,   154,     5,   149,     5,     5,   857,     5,   154,
-     5,   861,   862,   863,     5,   143,   144,   145,   146,     5,
-   131,   149,   143,   144,   145,   146,   154,     5,   149,   143,
-   144,   145,   146,   154,     5,   149,     5,   887,   152,   889,
-     5,   143,   144,   145,   146,   124,     5,   149,     5,   899,
-   152,     5,   143,   144,   145,   146,     5,   907,   149,     3,
-     5,   152,   912,     5,     5,   915,   143,   144,   145,   146,
-     6,   149,   149,     7,     7,   152,     6,   927,   928,   929,
-   930,   931,   932,   933,   934,   935,   936,   937,   938,   143,
-   144,   145,   146,     7,     7,   149,     7,   153,   152,   143,
-   144,   145,   146,     7,     7,   149,   153,   153,   152,   143,
-   144,   145,   146,   150,   138,   149,   151,     5,   152,   151,
-     7,     6,   151,   973,   421,   422,   151,     7,   425,   151,
-   151,   428,   429,   143,   144,   145,   146,   151,   151,   149,
-   151,     7,   152,   151,   151,   143,   144,   145,   146,   999,
-  1000,   149,     7,     7,   152,   143,   144,   145,   146,   151,
-   150,   149,   151,     6,   152,   152,   151,   151,   151,   151,
-   151,  1021,  1022,  1023,  1024,  1025,  1026,  1027,  1028,  1029,
-     7,   143,   144,   145,   146,   151,     7,   149,   151,   486,
-   152,   151,   489,   143,   144,   145,   146,     7,   151,   149,
-   151,     7,   152,   143,   144,   145,   146,   504,   505,   149,
-   153,     7,   152,   510,   511,     7,   151,     7,     7,   151,
-   517,  1071,   519,   143,   144,   145,   146,   151,   151,   149,
-   151,   151,  1082,  1083,  1084,  1085,  1086,  1087,  1088,  1089,
-  1090,   143,   144,   145,   146,   151,   151,   149,     7,   150,
-   152,   151,   151,   150,   551,   150,   553,   143,   144,   145,
-   146,   150,   153,   149,     7,   562,   563,   564,  1118,  1119,
-   567,   568,   569,   570,   571,   572,   573,   574,  1128,  1129,
-  1130,  1131,  1132,  1133,  1134,  1135,  1136,   143,   144,   145,
-   146,   150,   150,   149,     3,   134,   152,   150,   150,   143,
-   144,   145,   146,   150,   150,   149,  1156,  1157,   152,   150,
-   150,   153,  1162,  1163,  1164,  1165,  1166,  1167,   143,   144,
-   145,   146,     3,     3,   149,   145,     3,   152,   143,   144,
-   145,   146,     3,     3,   149,  1185,     3,   152,     3,     3,
-  1190,  1191,  1192,  1193,  1194,  1195,   143,   144,   145,   146,
-     3,     3,   149,     3,     3,   152,     3,     5,     3,     5,
-     3,   154,  1212,  1213,  1214,  1215,  1216,  1217,   143,   144,
-   145,   146,     6,     6,   149,     6,     6,   152,  1228,  1229,
-  1230,   143,   144,   145,   146,     6,   154,   149,   153,     6,
-   152,     6,  1242,  1243,  1244,    83,     4,     3,   151,     6,
-   152,   151,   151,  1253,  1254,  1255,   152,   152,   152,     0,
-     1,   151,   151,     4,   143,   144,   145,   146,   715,   151,
-   149,   152,   152,   152,   721,   151,     7,   152,   725,   143,
-   144,   145,   146,   151,    33,   149,   151,     6,   152,    30,
-    31,    32,    33,    34,    35,    36,    37,   744,    39,    40,
-    41,    42,    43,    44,    45,   151,   151,   151,   151,   151,
-    51,    52,    53,    54,    55,    56,   152,    58,    59,    60,
-    61,    62,   151,    64,   143,   144,   145,   146,   151,   151,
-   149,     6,     6,   152,   152,   151,     6,    78,    79,    88,
-    89,    90,   151,    84,   151,     6,     6,    96,    97,    98,
-    99,   100,   101,   102,   103,   104,   105,     6,     6,     6,
-     6,   151,     6,     6,     6,   114,   115,   116,   117,   118,
-   119,   120,   121,   122,   123,     6,   125,   126,   127,   128,
-   129,   130,   143,   144,   145,   146,     6,    83,   149,     7,
-   131,   152,   143,   144,   145,   146,     3,     3,   149,   154,
-   154,   152,   154,   143,   144,   145,   146,     6,     3,   149,
-     6,   145,   152,   143,   144,   145,   146,     6,     6,   149,
-     3,     6,   152,   143,   144,   145,   146,     3,     6,   149,
-     3,     6,   152,     3,     6,     3,   883,     3,   153,   886,
-   143,   144,   145,   146,     6,     6,   149,   154,    65,   152,
-   143,   144,   145,   146,   151,   153,   149,   151,    80,   152,
-   151,     6,   909,   143,   144,   145,   146,     3,   152,   149,
-   151,   153,   152,   151,   151,   151,   923,   143,   144,   145,
-   146,   152,   151,   149,   152,   152,   152,   151,   143,   144,
-   145,   146,   939,   940,   149,   152,   152,   152,   143,   144,
-   145,   146,   152,     7,   149,     7,    83,   152,   143,   144,
-   145,   146,   151,   151,   149,     6,     6,   152,   143,   144,
-   145,   146,   134,     6,   149,     3,     6,   152,   143,   144,
-   145,   146,     6,     3,   149,     6,     3,   152,   143,   144,
-   145,   146,     6,     6,   149,     6,     6,   152,     6,   996,
-   997,   143,   144,   145,   146,     6,     5,   149,     5,   153,
-   152,   143,   144,   145,   146,     6,     6,   149,   154,     3,
-   152,   151,   151,  1020,   143,   144,   145,   146,   152,     6,
-   149,   152,   151,  1030,  1031,  1032,   143,   144,   145,   146,
-     6,   151,   149,   151,     6,   152,   143,   144,   145,   146,
-   151,   151,   149,   152,     6,   152,   143,   144,   145,   146,
-   151,   151,   149,   151,     3,   152,   143,   144,   145,   146,
-     6,  1068,   149,     6,     6,   152,   143,   144,   145,   146,
-     6,     6,   149,     6,  1081,   152,   143,   144,   145,   146,
-     5,     5,   149,   151,   154,   152,   143,   144,   145,   146,
-     3,   151,   149,   151,     6,   152,   143,   144,   145,   146,
-   152,     6,   149,   152,     6,   152,   143,   144,   145,   146,
-   151,     6,   149,    80,     6,   152,  1123,   143,   144,   145,
-   146,   134,   151,   149,     6,     5,   152,   143,   144,   145,
-   146,     5,   151,   149,   151,     6,   152,   143,   144,   145,
-   146,     3,   154,   149,   154,   153,   152,   143,   144,   145,
-   146,    80,   151,   149,  1161,   152,   152,   152,   151,     3,
-   152,  1168,  1169,  1170,   143,   144,   145,   146,     6,     6,
-   149,     6,     6,   152,   143,   144,   145,   146,   153,     3,
-   149,  1188,   139,   152,   143,   144,   145,   146,   151,   140,
-   149,   151,     6,   152,     6,   143,   144,   145,   146,   151,
-     0,   149,     6,  1210,   152,   143,   144,   145,   146,     6,
-   151,   149,   151,     6,   152,   143,   144,   145,   146,   151,
-  1227,   149,   152,   151,  1231,  1232,  1233,   143,   144,   145,
-   146,     6,   151,   149,  1241,     6,   152,   143,   144,   145,
-   146,     6,     6,   149,   151,     6,   152,     6,   152,     6,
-     6,     0,     6,     6,  1261,  1262,  1263,   143,   144,   145,
-   146,   458,     6,   149,  1019,   713,   152,   143,   144,   145,
-   146,   431,    -1,   149,    -1,    -1,   152,   143,   144,   145,
-   146,    -1,    -1,   149,    -1,    -1,   152,   143,   144,   145,
-   146,    -1,    -1,   149,    -1,    -1,   152,   143,   144,   145,
-   146,    -1,    -1,   149,    -1,    -1,   152,   143,   144,   145,
-   146,    -1,    -1,   149,    -1,    -1,   152,   143,   144,   145,
-   146,    -1,    -1,   149,    -1,    -1,   152,   143,   144,   145,
-   146,    -1,    -1,   149,    -1,    -1,   152,   143,   144,   145,
-   146,    -1,    -1,   149,    -1,    -1,   152,   143,   144,   145,
+   800,   801,   150,   152,   150,    64,   150,   154,   143,   144,
+   145,   146,   151,   151,   149,   815,   816,   152,   152,    78,
+    79,    30,    31,    32,    33,    34,    35,    36,    37,   137,
+    39,     5,    41,    42,     5,    44,    45,   143,   144,   145,
+   146,     5,     5,   149,   143,   144,   145,   146,   154,     5,
+   149,     5,     5,   152,     5,    64,     5,   857,     5,     3,
+     5,   861,   862,   863,     5,   143,   144,   145,   146,    78,
+    79,   149,   131,     5,     5,     5,   154,     5,   143,   144,
+   145,   146,     5,     5,   149,     5,     5,     5,   888,   154,
+   890,   143,   144,   145,   146,   154,     5,   149,     5,   124,
+   900,     5,   154,   143,   144,   145,   146,     6,   908,   149,
+     5,     5,     5,   913,   154,     5,   916,   143,   144,   145,
+   146,     5,   131,   149,     5,   149,   153,     7,   154,   929,
+   930,   931,   932,   933,   934,   935,   936,   937,   938,   939,
+   940,   143,   144,   145,   146,     7,     6,   149,     7,     7,
+   152,   143,   144,   145,   146,     7,   153,   149,   153,     7,
+   152,   143,   144,   145,   146,   150,     7,   149,   138,     5,
+   152,   151,   151,   151,   151,   975,   421,   422,   151,   151,
+   425,     7,   151,   428,   429,   143,   144,   145,   146,   151,
+   151,   149,   151,     7,   152,   152,   151,   143,   144,   145,
+   146,  1001,  1002,   149,     7,     7,   152,   143,   144,   145,
+   146,   151,   151,   149,   151,   150,   152,   151,   151,     7,
+     7,     7,   151,  1023,  1024,  1025,  1026,  1027,  1028,  1029,
+  1030,  1031,     7,   143,   144,   145,   146,   151,   151,   149,
+   151,   486,   152,   151,   489,   143,   144,   145,   146,   151,
+   151,   149,     7,     7,   152,   143,   144,   145,   146,   504,
+   505,   149,   151,     7,   152,   510,   511,     7,   151,   151,
+     7,   150,   517,  1073,   519,   143,   144,   145,   146,   151,
+   151,   149,   151,   151,  1084,  1085,  1086,  1087,  1088,  1089,
+  1090,  1091,  1092,   143,   144,   145,   146,   151,   151,   149,
+   151,   150,   152,   150,   150,   150,   551,   150,   553,     6,
+   150,   150,   150,   150,     7,   150,   150,   562,   563,   564,
+  1120,  1121,   567,   568,   569,   570,   571,   572,   573,   574,
+  1130,  1131,  1132,  1133,  1134,  1135,  1136,  1137,  1138,   143,
+   144,   145,   146,   153,   153,   149,   153,     7,   152,   134,
+     3,   143,   144,   145,   146,     3,     3,   149,  1158,  1159,
+   152,   145,     3,     3,  1164,  1165,  1166,  1167,  1168,  1169,
+   143,   144,   145,   146,     3,     3,   149,     3,     3,   152,
+   143,   144,   145,   146,     3,     3,   149,  1187,     3,   152,
+     3,     3,  1192,  1193,  1194,  1195,  1196,  1197,   143,   144,
+   145,   146,     5,     5,   149,     3,     3,   152,   154,    83,
+     6,     6,     6,     6,  1214,  1215,  1216,  1217,  1218,  1219,
+   143,   144,   145,   146,     6,     6,   149,   154,   153,   152,
+  1230,  1231,  1232,   143,   144,   145,   146,     6,     6,   149,
+     4,     3,   152,   151,  1244,  1245,  1246,   152,   151,     6,
+   152,   151,     6,   152,   152,  1255,  1256,  1257,   152,   151,
+   151,     0,     1,   151,   151,     4,   143,   144,   145,   146,
+   715,   152,   149,   152,   152,   152,   721,   152,   151,   151,
+   725,   143,   144,   145,   146,   151,    33,   149,   151,     6,
+   152,    30,    31,    32,    33,    34,    35,    36,    37,   744,
+    39,    40,    41,    42,    43,    44,    45,   151,   151,   151,
+     6,     6,    51,    52,    53,    54,    55,    56,   151,    58,
+    59,    60,    61,    62,   151,    64,   143,   144,   145,   146,
+   151,   151,   149,     6,     6,   152,     6,   151,     6,    78,
+    79,    88,    89,    90,   151,    84,     6,     6,     6,    96,
+    97,    98,    99,   100,   101,   102,   103,   104,   105,     6,
+     6,   151,     6,     6,    83,     7,     7,   114,   115,   116,
+   117,   118,   119,   120,   121,   122,   123,   154,   125,   126,
+   127,   128,   129,   130,   143,   144,   145,   146,   154,   154,
+   149,     3,   131,   152,   143,   144,   145,   146,     6,     3,
+   149,     3,   145,   152,     3,   143,   144,   145,   146,     6,
+     6,   149,     3,     6,   152,   143,   144,   145,   146,     6,
+     6,   149,     3,     6,   152,   143,   144,   145,   146,     6,
+     3,   149,     3,     3,   152,   143,   144,   145,   146,   884,
+     6,   149,   887,     6,   152,   143,   144,   145,   146,   153,
+   151,   149,   154,   153,   152,   143,   144,   145,   146,   151,
+   151,   149,    80,     3,   152,   910,   143,   144,   145,   146,
+     6,   152,   149,   151,     6,   152,   143,   144,   145,   146,
+   925,   152,   149,   152,     6,   152,   143,   144,   145,   146,
+   151,   153,   149,     7,    83,   152,   941,   942,   143,   144,
+   145,   146,   151,   151,   149,     7,     6,   152,   143,   144,
+   145,   146,   151,   151,   149,   152,   152,   152,   143,   144,
+   145,   146,   152,   151,   149,   152,     6,   152,   143,   144,
+   145,   146,   151,   134,   149,     3,     6,   152,   143,   144,
+   145,   146,     6,     3,   149,     6,     3,   152,     6,   143,
+   144,   145,   146,   998,   999,   149,     6,     6,   152,   143,
+   144,   145,   146,     6,     5,   149,     6,     6,   152,   143,
+   144,   145,   146,     6,     5,   149,   154,  1022,   152,     6,
+     3,   153,   151,   151,   151,     6,   151,  1032,  1033,  1034,
+   143,   144,   145,   146,   151,   151,   149,   152,   152,   152,
+   143,   144,   145,   146,   152,   151,   149,   151,     6,   152,
+   143,   144,   145,   146,   151,     6,   149,     6,     3,   152,
+   143,   144,   145,   146,     6,  1070,   149,     6,     6,   152,
+   143,   144,   145,   146,     6,     6,   149,     6,  1083,   152,
+   143,   144,   145,   146,     5,     5,   149,   151,   154,   152,
+   143,   144,   145,   146,     3,   151,   149,   151,     6,   152,
+   143,   144,   145,   146,   152,   152,   149,   151,     6,   152,
+   143,   144,   145,   146,   151,   151,   149,   151,     6,   152,
+  1125,   143,   144,   145,   146,     6,    80,   149,   134,     6,
+   152,   143,   144,   145,   146,     6,     5,   149,     5,   154,
+   152,   143,   144,   145,   146,     6,   153,   149,     3,   154,
+   152,   143,   144,   145,   146,   151,   151,   149,  1163,     3,
+   152,    80,   152,   152,   152,  1170,  1171,  1172,   143,   144,
+   145,   146,     6,     6,   149,     6,     6,   152,   143,   144,
+   145,   146,   153,     3,   149,  1190,   139,   152,   143,   144,
+   145,   146,   151,   140,   149,   151,     6,   152,     6,   143,
+   144,   145,   146,   151,     6,   149,     6,  1212,   152,   143,
+   144,   145,   146,     6,   151,   149,   151,     6,   152,   143,
+   144,   145,   146,   151,  1229,   149,   152,   151,  1233,  1234,
+  1235,   143,   144,   145,   146,   151,     6,   149,  1243,   152,
+   152,   143,   144,   145,   146,     6,     6,   149,   151,     6,
+   152,     6,     6,     6,     0,     0,     6,  1021,  1263,  1264,
+  1265,   143,   144,   145,   146,   458,    -1,   149,     6,     6,
+   152,   143,   144,   145,   146,    -1,   431,   149,    -1,    -1,
+   152,   143,   144,   145,   146,   713,    -1,   149,    -1,    -1,
+   152,   143,   144,   145,   146,    -1,    -1,   149,    -1,    -1,
+   152,   143,   144,   145,   146,    -1,    -1,   149,    -1,    -1,
+   152,   143,   144,   145,   146,    -1,    -1,   149,    -1,    -1,
+   152,   143,   144,   145,   146,    -1,    -1,   149,    -1,    -1,
+   152,   143,   144,   145,   146,    -1,    -1,   149,    -1,   151,
+   143,   144,   145,   146,    -1,    -1,   149,    -1,   151,   143,
+   144,   145,   146,    -1,    -1,   149,    -1,   151,   143,   144,
+   145,   146,    -1,    -1,   149,    -1,   151,   143,   144,   145,
    146,    -1,    -1,   149,    -1,   151,   143,   144,   145,   146,
     -1,    -1,   149,    -1,   151,   143,   144,   145,   146,    -1,
     -1,   149,    -1,   151,   143,   144,   145,   146,    -1,    -1,
@@ -1417,13 +1421,10 @@ static const short yycheck[] = {    79,
    143,   144,   145,   146,    -1,    -1,   149,    -1,   151,   143,
    144,   145,   146,    -1,    -1,   149,    -1,   151,   143,   144,
    145,   146,    -1,    -1,   149,    -1,   151,   143,   144,   145,
-   146,    -1,    -1,   149,    -1,   151,   143,   144,   145,   146,
-    -1,    -1,   149,    -1,   151,   143,   144,   145,   146,    -1,
-    -1,   149,    -1,   151
+   146,    -1,    -1,   149,    -1,   151
 };
 /* -*-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.
@@ -1440,66 +1441,46 @@ static const short yycheck[] = {    79,
 
    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
@@ -1509,8 +1490,8 @@ static const short yycheck[] = {    79,
 #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
@@ -1591,12 +1572,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++ */
@@ -1608,7 +1589,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;
@@ -1623,10 +1604,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)
@@ -1636,7 +1617,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 *.
@@ -1657,15 +1638,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
@@ -1694,7 +1666,6 @@ yyparse(YYPARSE_PARAM_ARG)
 #endif
 
   int yystacksize = YYINITDEPTH;
-  int yyfree_stacks = 0;
 
 #ifdef YYPURE
   int yychar;
@@ -1779,32 +1750,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 */
 
@@ -2859,7 +2816,13 @@ case 145:
     ;
     break;}
 case 146:
-#line 967 "Gmsh.y"
+#line 960 "Gmsh.y"
+{
+      extr.mesh.Recombine = true;
+    ;
+    break;}
+case 147:
+#line 971 "Gmsh.y"
 {
       Curve *c;
       for(i=0;i<List_Nbr(yyvsp[-3].l);i++){
@@ -2877,8 +2840,8 @@ case 146:
       }
     ;
     break;}
-case 147:
-#line 984 "Gmsh.y"
+case 148:
+#line 988 "Gmsh.y"
 {
       Curve *c;
       for(i=0;i<List_Nbr(yyvsp[-6].l);i++){
@@ -2896,8 +2859,8 @@ case 147:
       }
     ;
     break;}
-case 148:
-#line 1001 "Gmsh.y"
+case 149:
+#line 1005 "Gmsh.y"
 {
       Curve *c;
       for(i=0;i<List_Nbr(yyvsp[-6].l);i++){
@@ -2915,8 +2878,8 @@ case 148:
       }
     ;
     break;}
-case 149:
-#line 1018 "Gmsh.y"
+case 150:
+#line 1022 "Gmsh.y"
 {
       Curve *c;
       for(i=0;i<List_Nbr(yyvsp[-6].l);i++){
@@ -2934,8 +2897,8 @@ case 149:
       }
     ;
     break;}
-case 150:
-#line 1035 "Gmsh.y"
+case 151:
+#line 1039 "Gmsh.y"
 {
       Surface *s = FindSurface((int)yyvsp[-4].d,THEM);
       if(!s)
@@ -2956,8 +2919,8 @@ case 150:
       }
     ;
     break;}
-case 151:
-#line 1055 "Gmsh.y"
+case 152:
+#line 1059 "Gmsh.y"
 {
       Surface *s = FindSurface((int)yyvsp[-4].d,THEM);
       if(!s)
@@ -2977,8 +2940,8 @@ case 151:
       }
     ;
     break;}
-case 152:
-#line 1074 "Gmsh.y"
+case 153:
+#line 1078 "Gmsh.y"
 {
       Volume *v = FindVolume((int)yyvsp[-4].d,THEM);
       if(!v)
@@ -2998,8 +2961,8 @@ case 152:
       }
     ;
     break;}
-case 153:
-#line 1093 "Gmsh.y"
+case 154:
+#line 1097 "Gmsh.y"
 {
       Surface *s;
       for(i=0;i<List_Nbr(yyvsp[-3].l);i++){
@@ -3015,8 +2978,8 @@ case 153:
       }
     ;
     break;}
-case 154:
-#line 1108 "Gmsh.y"
+case 155:
+#line 1112 "Gmsh.y"
 {
       Surface *s;
       for(i=0;i<List_Nbr(yyvsp[-1].l);i++){
@@ -3032,32 +2995,32 @@ case 154:
       }
     ;
     break;}
-case 155:
-#line 1123 "Gmsh.y"
+case 156:
+#line 1127 "Gmsh.y"
 {
       Msg(PARSER_ERROR, "Physical Associations do not exist anymore!");
     ;
     break;}
-case 156:
-#line 1135 "Gmsh.y"
+case 157:
+#line 1139 "Gmsh.y"
 { 
       Coherence_PS();
     ;
     break;}
-case 160:
-#line 1155 "Gmsh.y"
+case 161:
+#line 1159 "Gmsh.y"
 { ColorField = ColorGeneral; ;
     break;}
-case 162:
-#line 1158 "Gmsh.y"
+case 163:
+#line 1162 "Gmsh.y"
 { ColorField = ColorGeometry; ;
     break;}
-case 164:
-#line 1161 "Gmsh.y"
+case 165:
+#line 1165 "Gmsh.y"
 { ColorField = ColorMesh; ;
     break;}
-case 168:
-#line 1172 "Gmsh.y"
+case 169:
+#line 1176 "Gmsh.y"
 {
       i = Get_ColorForString(ColorString, -1, yyvsp[-1].c, &flag);
       if(flag) vyyerror("Unknown Color: %s", yyvsp[-1].c);
@@ -3068,8 +3031,8 @@ case 168:
 	*ptr = i ;
     ;
     break;}
-case 169:
-#line 1182 "Gmsh.y"
+case 170:
+#line 1186 "Gmsh.y"
 {
       i = Get_ColorForString(ColorString, (int)yyvsp[-2].d, yyvsp[-4].c, &flag);
       if(flag) vyyerror("Unknown Color: %s", yyvsp[-4].c);
@@ -3080,8 +3043,8 @@ case 169:
 	*ptr = i ;
     ;
     break;}
-case 170:
-#line 1192 "Gmsh.y"
+case 171:
+#line 1196 "Gmsh.y"
 {
       Get_ColorPointerForString(ColorField, yyvsp[-3].c, &flag, &ptr);
       if(flag)
@@ -3090,8 +3053,8 @@ case 170:
 	*ptr = PACK_COLOR((int)yyvsp[-1].v[0], (int)yyvsp[-1].v[1], (int)yyvsp[-1].v[2], (int)yyvsp[-1].v[3]);
     ;
     break;}
-case 171:
-#line 1203 "Gmsh.y"
+case 172:
+#line 1207 "Gmsh.y"
 {
       yyval.v[0]=yyvsp[-7].d;
       yyval.v[1]=yyvsp[-5].d;
@@ -3099,8 +3062,8 @@ case 171:
       yyval.v[3]=yyvsp[-1].d;
     ;
     break;}
-case 172:
-#line 1210 "Gmsh.y"
+case 173:
+#line 1214 "Gmsh.y"
 {
       yyval.v[0]=yyvsp[-5].d;
       yyval.v[1]=yyvsp[-3].d;
@@ -3108,152 +3071,152 @@ case 172:
       yyval.v[3]=255.;
     ;
     break;}
-case 173:
-#line 1286 "Gmsh.y"
-{yyval.i = 1;;
-    break;}
 case 174:
-#line 1287 "Gmsh.y"
-{yyval.i = 0;;
+#line 1290 "Gmsh.y"
+{yyval.i = 1;;
     break;}
 case 175:
-#line 1288 "Gmsh.y"
-{yyval.i = -1;;
+#line 1291 "Gmsh.y"
+{yyval.i = 0;;
     break;}
 case 176:
-#line 1289 "Gmsh.y"
+#line 1292 "Gmsh.y"
 {yyval.i = -1;;
     break;}
 case 177:
-#line 1290 "Gmsh.y"
+#line 1293 "Gmsh.y"
 {yyval.i = -1;;
     break;}
 case 178:
 #line 1294 "Gmsh.y"
-{ yyval.d = yyvsp[0].d; ;
+{yyval.i = -1;;
     break;}
 case 179:
-#line 1295 "Gmsh.y"
-{ yyval.d = yyvsp[-1].d; ;
+#line 1298 "Gmsh.y"
+{ yyval.d = yyvsp[0].d; ;
     break;}
 case 180:
-#line 1296 "Gmsh.y"
-{ yyval.d = yyvsp[-2].d - yyvsp[0].d; ;
+#line 1299 "Gmsh.y"
+{ yyval.d = yyvsp[-1].d; ;
     break;}
 case 181:
-#line 1297 "Gmsh.y"
-{ yyval.d = yyvsp[-2].d + yyvsp[0].d; ;
+#line 1300 "Gmsh.y"
+{ yyval.d = yyvsp[-2].d - yyvsp[0].d; ;
     break;}
 case 182:
-#line 1298 "Gmsh.y"
-{ yyval.d = yyvsp[-2].d * yyvsp[0].d; ;
+#line 1301 "Gmsh.y"
+{ yyval.d = yyvsp[-2].d + yyvsp[0].d; ;
     break;}
 case 183:
-#line 1299 "Gmsh.y"
-{ yyval.d = yyvsp[-2].d / yyvsp[0].d; ;
+#line 1302 "Gmsh.y"
+{ yyval.d = yyvsp[-2].d * yyvsp[0].d; ;
     break;}
 case 184:
-#line 1300 "Gmsh.y"
-{ yyval.d = pow(yyvsp[-2].d, yyvsp[0].d); ;
+#line 1303 "Gmsh.y"
+{ yyval.d = yyvsp[-2].d / yyvsp[0].d; ;
     break;}
 case 185:
-#line 1301 "Gmsh.y"
-{ yyval.d = - yyvsp[0].d; ;
+#line 1304 "Gmsh.y"
+{ yyval.d = pow(yyvsp[-2].d, yyvsp[0].d); ;
     break;}
 case 186:
-#line 1302 "Gmsh.y"
-{ yyval.d = yyvsp[0].d; ;
+#line 1305 "Gmsh.y"
+{ yyval.d = - yyvsp[0].d; ;
     break;}
 case 187:
-#line 1303 "Gmsh.y"
-{ yyval.d = exp(yyvsp[-1].d);      ;
+#line 1306 "Gmsh.y"
+{ yyval.d = yyvsp[0].d; ;
     break;}
 case 188:
-#line 1304 "Gmsh.y"
-{ yyval.d = log(yyvsp[-1].d);      ;
+#line 1307 "Gmsh.y"
+{ yyval.d = exp(yyvsp[-1].d);      ;
     break;}
 case 189:
-#line 1305 "Gmsh.y"
-{ yyval.d = log10(yyvsp[-1].d);    ;
+#line 1308 "Gmsh.y"
+{ yyval.d = log(yyvsp[-1].d);      ;
     break;}
 case 190:
-#line 1306 "Gmsh.y"
-{ yyval.d = sqrt(yyvsp[-1].d);     ;
+#line 1309 "Gmsh.y"
+{ yyval.d = log10(yyvsp[-1].d);    ;
     break;}
 case 191:
-#line 1307 "Gmsh.y"
-{ yyval.d = sin(yyvsp[-1].d);      ;
+#line 1310 "Gmsh.y"
+{ yyval.d = sqrt(yyvsp[-1].d);     ;
     break;}
 case 192:
-#line 1308 "Gmsh.y"
-{ yyval.d = asin(yyvsp[-1].d);     ;
+#line 1311 "Gmsh.y"
+{ yyval.d = sin(yyvsp[-1].d);      ;
     break;}
 case 193:
-#line 1309 "Gmsh.y"
-{ yyval.d = cos(yyvsp[-1].d);      ;
+#line 1312 "Gmsh.y"
+{ yyval.d = asin(yyvsp[-1].d);     ;
     break;}
 case 194:
-#line 1310 "Gmsh.y"
-{ yyval.d = acos(yyvsp[-1].d);     ;
+#line 1313 "Gmsh.y"
+{ yyval.d = cos(yyvsp[-1].d);      ;
     break;}
 case 195:
-#line 1311 "Gmsh.y"
-{ yyval.d = tan(yyvsp[-1].d);      ;
+#line 1314 "Gmsh.y"
+{ yyval.d = acos(yyvsp[-1].d);     ;
     break;}
 case 196:
-#line 1312 "Gmsh.y"
-{ yyval.d = atan(yyvsp[-1].d);     ;
+#line 1315 "Gmsh.y"
+{ yyval.d = tan(yyvsp[-1].d);      ;
     break;}
 case 197:
-#line 1313 "Gmsh.y"
-{ yyval.d = atan2(yyvsp[-3].d,yyvsp[-1].d); ;
+#line 1316 "Gmsh.y"
+{ yyval.d = atan(yyvsp[-1].d);     ;
     break;}
 case 198:
-#line 1314 "Gmsh.y"
-{ yyval.d = sinh(yyvsp[-1].d);     ;
+#line 1317 "Gmsh.y"
+{ yyval.d = atan2(yyvsp[-3].d,yyvsp[-1].d); ;
     break;}
 case 199:
-#line 1315 "Gmsh.y"
-{ yyval.d = cosh(yyvsp[-1].d);     ;
+#line 1318 "Gmsh.y"
+{ yyval.d = sinh(yyvsp[-1].d);     ;
     break;}
 case 200:
-#line 1316 "Gmsh.y"
-{ yyval.d = tanh(yyvsp[-1].d);     ;
+#line 1319 "Gmsh.y"
+{ yyval.d = cosh(yyvsp[-1].d);     ;
     break;}
 case 201:
-#line 1317 "Gmsh.y"
-{ yyval.d = fabs(yyvsp[-1].d);     ;
+#line 1320 "Gmsh.y"
+{ yyval.d = tanh(yyvsp[-1].d);     ;
     break;}
 case 202:
-#line 1318 "Gmsh.y"
-{ yyval.d = floor(yyvsp[-1].d);    ;
+#line 1321 "Gmsh.y"
+{ yyval.d = fabs(yyvsp[-1].d);     ;
     break;}
 case 203:
-#line 1319 "Gmsh.y"
-{ yyval.d = ceil(yyvsp[-1].d);     ;
+#line 1322 "Gmsh.y"
+{ yyval.d = floor(yyvsp[-1].d);    ;
     break;}
 case 204:
-#line 1320 "Gmsh.y"
-{ yyval.d = fmod(yyvsp[-3].d,yyvsp[-1].d);  ;
+#line 1323 "Gmsh.y"
+{ yyval.d = ceil(yyvsp[-1].d);     ;
     break;}
 case 205:
-#line 1321 "Gmsh.y"
+#line 1324 "Gmsh.y"
 { yyval.d = fmod(yyvsp[-3].d,yyvsp[-1].d);  ;
     break;}
 case 206:
-#line 1322 "Gmsh.y"
-{ yyval.d = sqrt(yyvsp[-3].d*yyvsp[-3].d+yyvsp[-1].d*yyvsp[-1].d);  ;
+#line 1325 "Gmsh.y"
+{ yyval.d = fmod(yyvsp[-3].d,yyvsp[-1].d);  ;
     break;}
 case 207:
 #line 1326 "Gmsh.y"
-{ yyval.d = yyvsp[0].d; ;
+{ yyval.d = sqrt(yyvsp[-3].d*yyvsp[-3].d+yyvsp[-1].d*yyvsp[-1].d);  ;
     break;}
 case 208:
-#line 1327 "Gmsh.y"
-{ yyval.d = 3.141592653589793; ;
+#line 1330 "Gmsh.y"
+{ yyval.d = yyvsp[0].d; ;
     break;}
 case 209:
-#line 1329 "Gmsh.y"
+#line 1331 "Gmsh.y"
+{ yyval.d = 3.141592653589793; ;
+    break;}
+case 210:
+#line 1333 "Gmsh.y"
 {
       TheSymbol.Name = yyvsp[0].c ;
       if (!List_Query(Symbol_L, &TheSymbol, CompareSymbols)) {
@@ -3263,16 +3226,16 @@ case 209:
       Free(yyvsp[0].c);
     ;
     break;}
-case 210:
-#line 1341 "Gmsh.y"
+case 211:
+#line 1345 "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 211:
-#line 1347 "Gmsh.y"
+case 212:
+#line 1351 "Gmsh.y"
 {
       ListOfDouble2_L = List_Create(2,1,sizeof(double)) ; 
       if(!yyvsp[-2].d || (yyvsp[-5].d<yyvsp[0].d && yyvsp[-2].d<0) || (yyvsp[-5].d>yyvsp[0].d && yyvsp[-2].d>0)){
@@ -3284,8 +3247,8 @@ case 211:
 	  List_Add(ListOfDouble2_L, &d) ;
    ;
     break;}
-case 212:
-#line 1361 "Gmsh.y"
+case 213:
+#line 1365 "Gmsh.y"
 {
       yyval.v[0]=yyvsp[-9].d;
       yyval.v[1]=yyvsp[-7].d;
@@ -3294,8 +3257,8 @@ case 212:
       yyval.v[4]=yyvsp[-1].d;
     ;
     break;}
-case 213:
-#line 1369 "Gmsh.y"
+case 214:
+#line 1373 "Gmsh.y"
 {
       yyval.v[0]=yyvsp[-7].d;
       yyval.v[1]=yyvsp[-5].d;
@@ -3304,8 +3267,8 @@ case 213:
       yyval.v[4]=1.0;
     ;
     break;}
-case 214:
-#line 1377 "Gmsh.y"
+case 215:
+#line 1381 "Gmsh.y"
 {
       yyval.v[0]=yyvsp[-5].d;
       yyval.v[1]=yyvsp[-3].d;
@@ -3314,8 +3277,8 @@ case 214:
       yyval.v[4]=1.0;
     ;
     break;}
-case 215:
-#line 1385 "Gmsh.y"
+case 216:
+#line 1389 "Gmsh.y"
 {
       yyval.v[0]=yyvsp[-5].d;
       yyval.v[1]=yyvsp[-3].d;
@@ -3324,35 +3287,29 @@ case 215:
       yyval.v[4]=1.0;
     ;
     break;}
-case 216:
-#line 1396 "Gmsh.y"
-{
-    ;
-    break;}
 case 217:
-#line 1399 "Gmsh.y"
+#line 1400 "Gmsh.y"
 {
     ;
     break;}
 case 218:
-#line 1405 "Gmsh.y"
+#line 1403 "Gmsh.y"
 {
     ;
     break;}
 case 219:
-#line 1408 "Gmsh.y"
+#line 1409 "Gmsh.y"
 {
     ;
     break;}
 case 220:
-#line 1414 "Gmsh.y"
+#line 1412 "Gmsh.y"
 {
     ;
     break;}
 case 221:
-#line 1417 "Gmsh.y"
+#line 1418 "Gmsh.y"
 {
-       yyval.l=ListOfListOfDouble_L;
     ;
     break;}
 case 222:
@@ -3362,46 +3319,52 @@ case 222:
     ;
     break;}
 case 223:
-#line 1428 "Gmsh.y"
+#line 1425 "Gmsh.y"
 {
-      ListOfListOfDouble_L = List_Create(2,1,sizeof(List_T*)) ;
-      List_Add(ListOfListOfDouble_L, &(yyvsp[0].l)) ;
+       yyval.l=ListOfListOfDouble_L;
     ;
     break;}
 case 224:
-#line 1433 "Gmsh.y"
+#line 1432 "Gmsh.y"
 {
+      ListOfListOfDouble_L = List_Create(2,1,sizeof(List_T*)) ;
       List_Add(ListOfListOfDouble_L, &(yyvsp[0].l)) ;
     ;
     break;}
 case 225:
-#line 1440 "Gmsh.y"
+#line 1437 "Gmsh.y"
 {
+      List_Add(ListOfListOfDouble_L, &(yyvsp[0].l)) ;
     ;
     break;}
 case 226:
-#line 1443 "Gmsh.y"
+#line 1444 "Gmsh.y"
+{
+    ;
+    break;}
+case 227:
+#line 1447 "Gmsh.y"
 {
       ListOfDouble_L = List_Create(2,1,sizeof(double)) ;
       List_Add(ListOfDouble_L, &(yyvsp[0].d)) ;
       yyval.l=ListOfDouble_L;
     ;
     break;}
-case 227:
-#line 1449 "Gmsh.y"
+case 228:
+#line 1453 "Gmsh.y"
 {
       yyval.l=ListOfDouble_L;
     ;
     break;}
-case 228:
-#line 1463 "Gmsh.y"
+case 229:
+#line 1467 "Gmsh.y"
 {
       ListOfDouble_L = List_Create(2,1,sizeof(double)) ;
       List_Add(ListOfDouble_L, &(yyvsp[0].d)) ;
     ;
     break;}
-case 229:
-#line 1468 "Gmsh.y"
+case 230:
+#line 1472 "Gmsh.y"
 { 
       ListOfDouble_L = List_Create(2,1,sizeof(double)) ;
       for(i=0 ; i<List_Nbr(ListOfDouble2_L) ; i++){
@@ -3411,14 +3374,14 @@ case 229:
       List_Delete(ListOfDouble2_L);
     ;
     break;}
-case 230:
-#line 1477 "Gmsh.y"
+case 231:
+#line 1481 "Gmsh.y"
 {
       List_Add(ListOfDouble_L, &(yyvsp[0].d)) ;
     ;
     break;}
-case 231:
-#line 1481 "Gmsh.y"
+case 232:
+#line 1485 "Gmsh.y"
 {
       for(i=0 ; i<List_Nbr(ListOfDouble2_L) ; i++){
 	List_Read(ListOfDouble2_L, i, &d) ;
@@ -3429,7 +3392,7 @@ case 231:
     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;
@@ -3624,32 +3587,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 1491 "Gmsh.y"
+#line 1495 "Gmsh.y"
 
 
 void InitSymbols(void){
diff --git a/Parser/Gmsh.tab.cpp.h b/Parser/Gmsh.tab.cpp.h
index 50f123565a41e0740b22759660fa47a20efafebe..6e6866a3384ff1d519f39159d714c2254bdd69eb 100644
--- a/Parser/Gmsh.tab.cpp.h
+++ b/Parser/Gmsh.tab.cpp.h
@@ -6,145 +6,145 @@ 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	tPoint	284
-#define	tCircle	285
-#define	tEllipsis	286
-#define	tLine	287
-#define	tSurface	288
-#define	tSpline	289
-#define	tVolume	290
-#define	tCharacteristic	291
-#define	tLength	292
-#define	tParametric	293
-#define	tElliptic	294
-#define	tPlane	295
-#define	tRuled	296
-#define	tTransfinite	297
-#define	tComplex	298
-#define	tPhysical	299
-#define	tUsing	300
-#define	tPower	301
-#define	tBump	302
-#define	tProgression	303
-#define	tAssociation	304
-#define	tRotate	305
-#define	tTranslate	306
-#define	tSymetry	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	tOffset	317
-#define	tAttractor	318
-#define	tLayers	319
-#define	tScalarSimplex	320
-#define	tVectorSimplex	321
-#define	tTensorSimplex	322
-#define	tScalarTriangle	323
-#define	tVectorTriangle	324
-#define	tTensorTriangle	325
-#define	tScalarLine	326
-#define	tVectorLine	327
-#define	tTensorLine	328
-#define	tScalarPoint	329
-#define	tVectorPoint	330
-#define	tTensorPoint	331
-#define	tBSpline	332
-#define	tNurbs	333
-#define	tOrder	334
-#define	tWith	335
-#define	tBounds	336
-#define	tKnots	337
-#define	tColor	338
-#define	tGeneral	339
-#define	tGeometry	340
-#define	tMesh	341
-#define	tB_SPLINE_SURFACE_WITH_KNOTS	342
-#define	tB_SPLINE_CURVE_WITH_KNOTS	343
-#define	tCARTESIAN_POINT	344
-#define	tTRUE	345
-#define	tFALSE	346
-#define	tUNSPECIFIED	347
-#define	tU	348
-#define	tV	349
-#define	tEDGE_CURVE	350
-#define	tVERTEX_POINT	351
-#define	tORIENTED_EDGE	352
-#define	tPLANE	353
-#define	tFACE_OUTER_BOUND	354
-#define	tEDGE_LOOP	355
-#define	tADVANCED_FACE	356
-#define	tVECTOR	357
-#define	tDIRECTION	358
-#define	tAXIS2_PLACEMENT_3D	359
-#define	tISO	360
-#define	tENDISO	361
-#define	tENDSEC	362
-#define	tDATA	363
-#define	tHEADER	364
-#define	tFILE_DESCRIPTION	365
-#define	tFILE_SCHEMA	366
-#define	tFILE_NAME	367
-#define	tMANIFOLD_SOLID_BREP	368
-#define	tCLOSED_SHELL	369
-#define	tADVANCED_BREP_SHAPE_REPRESENTATION	370
-#define	tFACE_BOUND	371
-#define	tCYLINDRICAL_SURFACE	372
-#define	tCONICAL_SURFACE	373
-#define	tCIRCLE	374
-#define	tTRIMMED_CURVE	375
-#define	tGEOMETRIC_SET	376
-#define	tCOMPOSITE_CURVE_SEGMENT	377
-#define	tCONTINUOUS	378
-#define	tCOMPOSITE_CURVE	379
-#define	tTOROIDAL_SURFACE	380
-#define	tPRODUCT_DEFINITION	381
-#define	tPRODUCT_DEFINITION_SHAPE	382
-#define	tSHAPE_DEFINITION_REPRESENTATION	383
-#define	tELLIPSE	384
-#define	tTrimmed	385
-#define	tSolid	386
-#define	tEndSolid	387
-#define	tVertex	388
-#define	tFacet	389
-#define	tNormal	390
-#define	tOuter	391
-#define	tLoopSTL	392
-#define	tEndLoop	393
-#define	tEndFacet	394
-#define	UMINUS	395
+#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	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	tPower	302
+#define	tBump	303
+#define	tProgression	304
+#define	tAssociation	305
+#define	tRotate	306
+#define	tTranslate	307
+#define	tSymetry	308
+#define	tDilate	309
+#define	tExtrude	310
+#define	tDuplicata	311
+#define	tLoop	312
+#define	tInclude	313
+#define	tRecombine	314
+#define	tDelete	315
+#define	tCoherence	316
+#define	tView	317
+#define	tOffset	318
+#define	tAttractor	319
+#define	tLayers	320
+#define	tScalarSimplex	321
+#define	tVectorSimplex	322
+#define	tTensorSimplex	323
+#define	tScalarTriangle	324
+#define	tVectorTriangle	325
+#define	tTensorTriangle	326
+#define	tScalarLine	327
+#define	tVectorLine	328
+#define	tTensorLine	329
+#define	tScalarPoint	330
+#define	tVectorPoint	331
+#define	tTensorPoint	332
+#define	tBSpline	333
+#define	tNurbs	334
+#define	tOrder	335
+#define	tWith	336
+#define	tBounds	337
+#define	tKnots	338
+#define	tColor	339
+#define	tGeneral	340
+#define	tGeometry	341
+#define	tMesh	342
+#define	tB_SPLINE_SURFACE_WITH_KNOTS	343
+#define	tB_SPLINE_CURVE_WITH_KNOTS	344
+#define	tCARTESIAN_POINT	345
+#define	tTRUE	346
+#define	tFALSE	347
+#define	tUNSPECIFIED	348
+#define	tU	349
+#define	tV	350
+#define	tEDGE_CURVE	351
+#define	tVERTEX_POINT	352
+#define	tORIENTED_EDGE	353
+#define	tPLANE	354
+#define	tFACE_OUTER_BOUND	355
+#define	tEDGE_LOOP	356
+#define	tADVANCED_FACE	357
+#define	tVECTOR	358
+#define	tDIRECTION	359
+#define	tAXIS2_PLACEMENT_3D	360
+#define	tISO	361
+#define	tENDISO	362
+#define	tENDSEC	363
+#define	tDATA	364
+#define	tHEADER	365
+#define	tFILE_DESCRIPTION	366
+#define	tFILE_SCHEMA	367
+#define	tFILE_NAME	368
+#define	tMANIFOLD_SOLID_BREP	369
+#define	tCLOSED_SHELL	370
+#define	tADVANCED_BREP_SHAPE_REPRESENTATION	371
+#define	tFACE_BOUND	372
+#define	tCYLINDRICAL_SURFACE	373
+#define	tCONICAL_SURFACE	374
+#define	tCIRCLE	375
+#define	tTRIMMED_CURVE	376
+#define	tGEOMETRIC_SET	377
+#define	tCOMPOSITE_CURVE_SEGMENT	378
+#define	tCONTINUOUS	379
+#define	tCOMPOSITE_CURVE	380
+#define	tTOROIDAL_SURFACE	381
+#define	tPRODUCT_DEFINITION	382
+#define	tPRODUCT_DEFINITION_SHAPE	383
+#define	tSHAPE_DEFINITION_REPRESENTATION	384
+#define	tELLIPSE	385
+#define	tTrimmed	386
+#define	tSolid	387
+#define	tEndSolid	388
+#define	tVertex	389
+#define	tFacet	390
+#define	tNormal	391
+#define	tOuter	392
+#define	tLoopSTL	393
+#define	tEndLoop	394
+#define	tEndFacet	395
+#define	UMINUS	396
 
 
 extern YYSTYPE yylval;
diff --git a/Parser/Gmsh.y b/Parser/Gmsh.y
index 236e2dd8c6626e193694d4880e2d32ca7b851e5f..edad4c8b4d0efc9fc14cb03d3b0b9128ca8302c6 100644
--- a/Parser/Gmsh.y
+++ b/Parser/Gmsh.y
@@ -15,12 +15,12 @@
 #include "Parser.h"
 
 extern Mesh    *THEM;
-extern char     ThePathForIncludes[NAME_STR_L];
+extern char    *ThePathForIncludes;
 
-FILE           *yyinTab[20];
-int             yylinenoTab[20];
-char            yynameTab[20][256];
-char            tmpstring[256];
+FILE           *yyinTab[MAX_OPEN_FILES];
+int             yylinenoTab[MAX_OPEN_FILES];
+char            yynameTab[MAX_OPEN_FILES][NAME_STR_L];
+char            tmpstring[NAME_STR_L];
 Symbol          TheSymbol;
 Surface        *STL_Surf;
 Shape           TheShape;
@@ -956,6 +956,10 @@ ExtrudeParameter :
 	extr.mesh.hLayer[i] = d;
       }
     }
+  | tRecombine tEND
+    {
+      extr.mesh.Recombine = true;
+    }
 ;
 
 /* -------------------
diff --git a/Parser/Gmsh.yy.cpp b/Parser/Gmsh.yy.cpp
index 11248c6662222803b5f42a2be7bb509588b428a6..487c3b81e7e1d9353f92c444bed1e8caa34ba2b7 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.1.1.1 2000-11-23 09:22:47 geuzaine Exp $
+ * $Header: /cvsroot/gmsh/Parser/Gmsh.yy.cpp,v 1.2 2000-11-23 14:08:47 geuzaine Exp $
  */
 
 #define FLEX_SCANNER
@@ -1133,7 +1133,7 @@ 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 59 "Gmsh.l"
diff --git a/Parser/Parser.h b/Parser/Parser.h
index e571192aa6697824fe9b3c560c455d1258c04d1a..82cdc06f10d0d5b1ed5b55ecf5159a6ec2ac1272 100644
--- a/Parser/Parser.h
+++ b/Parser/Parser.h
@@ -17,7 +17,7 @@ int yylex ();
 
 extern FILE   *yyin;
 extern int     yylineno;
-extern char    yyname[256];
+extern char    yyname[NAME_STR_L];
 extern char   *yytext;
 extern int     yyerrorstate;
 
diff --git a/Unix/CbFile.cpp b/Unix/CbFile.cpp
index 64b2f51a3734d4cb090f0347953dbf36efc5d72b..ad3b777cdfc7f75a336e3bfb1f1536d7978b533e 100644
--- a/Unix/CbFile.cpp
+++ b/Unix/CbFile.cpp
@@ -22,14 +22,14 @@ extern Context_T   CTX;
 extern XContext_T  XCTX;
 extern Widgets_T   WID;
 extern Mesh        M;
-extern int         WARNING_OVERRIDE;
+
+static int WARNING_OVERRIDE = 0;
+static char KeepFileName[256];
 
 /* ------------------------------------------------------------------------ */
 /*  C r e a t e I m a g e                                                   */
 /* ------------------------------------------------------------------------ */
 
-static char KeepFileName[256];
-
 void SaveToDisk (char *FileName, Widget warning, 
 		 void (*function)(FILE *file)){
   FILE    *fp ;
diff --git a/Unix/CbOptions.cpp b/Unix/CbOptions.cpp
index ef771d3cfb7c8559d2e3f48a87ebdacdd983b14d..e112fd4b25cbb47a2362287f957347878b88e70d 100644
--- a/Unix/CbOptions.cpp
+++ b/Unix/CbOptions.cpp
@@ -27,9 +27,10 @@ extern Pixmaps_T  PIX;
 extern Mesh       M;
 extern Tree_T    *EntitesVisibles;
 extern double   LC;
-extern int      ACTUAL_ENTITY, SHOW_ALL;
 
-static int stop_anim ;
+int SHOW_ALL_ENTITIES ;
+
+static int  stop_anim ;
 static long anim_time ;
 
 /* ------------------------------------------------------------------------ 
@@ -214,6 +215,8 @@ void OptionsCb (Widget w, XtPointer client_data, XtPointer call_data){
     (CTX.mesh.algo==DELAUNAY_OLDALGO) ?
       CTX.mesh.algo=DELAUNAY_NEWALGO :
 	CTX.mesh.algo=DELAUNAY_OLDALGO; break ;
+  case OPTIONS_MESH_INTERACTIVE : 
+    CTX.mesh.interactive = !CTX.mesh.interactive; break ;
   case OPTIONS_MESH_SMOOTHING_SCALE : 
     XmScaleGetValue(WID.OD.meshSmoothingScale, &e); CTX.mesh.nb_smoothing = e ;  
     sprintf(label,"%d",CTX.mesh.nb_smoothing);   
@@ -288,19 +291,19 @@ void OptionsCb (Widget w, XtPointer client_data, XtPointer call_data){
   case OPTIONS_MESH_HIDE_SHOW :  
     c = XmTextGetString(w); 
     if (!strcmp(c,"all") || !strcmp(c,"*")){
-      if(SHOW_ALL){ 
-	RemplirEntitesVisibles(0); SHOW_ALL = 0; 
+      if(SHOW_ALL_ENTITIES){ 
+	RemplirEntitesVisibles(0); SHOW_ALL_ENTITIES = 0; 
       }
       else { 
-	RemplirEntitesVisibles(1); SHOW_ALL = 1; 
+	RemplirEntitesVisibles(1); SHOW_ALL_ENTITIES = 1; 
       }
     }
     else{
-      ACTUAL_ENTITY = atoi(c);
-      if(EntiteEstElleVisible(ACTUAL_ENTITY))
-	ToutesLesEntitesRelatives(ACTUAL_ENTITY,EntitesVisibles,0);
+      i = atoi(c);
+      if(EntiteEstElleVisible(i))
+	ToutesLesEntitesRelatives(i,EntitesVisibles,0);
       else
-	ToutesLesEntitesRelatives(ACTUAL_ENTITY,EntitesVisibles,1);
+	ToutesLesEntitesRelatives(i,EntitesVisibles,1);
     }
     break;
 
diff --git a/Unix/CbOptions.h b/Unix/CbOptions.h
index e30741453e3a4cafa5acc8d8a54dfa395050fce1..4d4af3bd146d87ecfc4a45de8b81f80318e1b83f 100644
--- a/Unix/CbOptions.h
+++ b/Unix/CbOptions.h
@@ -79,8 +79,9 @@
 #define  OPTIONS_MESH_SMOOTHING_TEXT            219
 #define  OPTIONS_MESH_DEGRE2                    220
 #define  OPTIONS_MESH_ANISOTROPIC               221
-#define  OPTIONS_MESH_VISIBILITY_ENTITY         222
-#define  OPTIONS_MESH_VISIBILITY_NUMBER         223
+#define  OPTIONS_MESH_INTERACTIVE               222
+#define  OPTIONS_MESH_VISIBILITY_ENTITY         223
+#define  OPTIONS_MESH_VISIBILITY_NUMBER         224
 
 /* options post */
 
diff --git a/Unix/Main.cpp b/Unix/Main.cpp
index ad3b9ee75ff9420013500643310a39ce9eeb48b6..c1f03b4e4fdb3727b330676e8a159c05c8b45a18 100644
--- a/Unix/Main.cpp
+++ b/Unix/Main.cpp
@@ -27,6 +27,9 @@
 #include "Static.h"
 #include "XStatic.h"
 
+char *TheFileNameTab[MAX_OPEN_FILES];
+char *ThePathForIncludes=NULL, *TheBgmFileName=NULL;
+
 /* ------------------------------------------------------------------------ */
 /*  P a r s e                                                               */
 /* ------------------------------------------------------------------------ */
@@ -68,6 +71,8 @@ void ParseFile(char *f){
   fclose(yyin);
 }
 
+extern int SHOW_ALL_ENTITIES ;
+
 void MergeProblem(char *name){
   Msg(INFOS, "Merging %s",name); 
 
@@ -76,7 +81,7 @@ void MergeProblem(char *name){
 
   if (!EntitesVisibles) {
     RemplirEntitesVisibles(1);
-    SHOW_ALL=1;
+    SHOW_ALL_ENTITIES = 1;
   }
 }
 
@@ -85,7 +90,6 @@ void OpenProblem(char *name){
   
   InitSymbols();
   Init_Mesh(&M, 1);
-  BD_EXISTS = 1;
 
   strncpy(TheFileName,name,NAME_STR_L);
   strncpy(TheBaseFileName,name,NAME_STR_L);
@@ -120,7 +124,7 @@ void OpenProblem(char *name){
   CalculateMinMax(THEM->Points);  
   if (!EntitesVisibles) {
     RemplirEntitesVisibles(1);
-    SHOW_ALL=1;
+    SHOW_ALL_ENTITIES = 1;
   }
 
 }
@@ -130,10 +134,11 @@ void OpenProblem(char *name){
 /*  G e t _ O p t i o n s                                                   */
 /* ------------------------------------------------------------------------ */
 
-void Get_Options (int argc, char *argv[]) {
+void Get_Options (int argc, char *argv[], int *nbfiles) {
   int i=1;
   
-  strncpy(TheFileNameTab[0], "unnamed.geo",NAME_STR_L);
+  TheFileNameTab[0] = "unnamed.geo" ;
+  *nbfiles = 0;
   
   while (i < argc) {
     
@@ -153,16 +158,11 @@ void Get_Options (int argc, char *argv[]) {
       }
       else if(!strcmp(argv[i]+1, "path")){ 
 	i++;
-	if(argv[i] != NULL){
-	  strncpy(ThePathForIncludes,argv[i++],NAME_STR_L);
-	}
+	if(argv[i] != NULL) ThePathForIncludes = argv[i++];
       }
       else if(!strcmp(argv[i]+1, "bgm")){ 
 	i++;
-	if(argv[i] != NULL){
-	  strncpy(TheBgmFileName,argv[i++],NAME_STR_L);
-	  INITIALBGMESH = ONFILE;
-	}
+	if(argv[i] != NULL) TheBgmFileName = argv[i++];
       }
       else if(!strcmp(argv[i]+1, "alpha")){ 
 	CTX.alpha = 1; i++;
@@ -176,9 +176,6 @@ void Get_Options (int argc, char *argv[]) {
       else if(!strcmp(argv[i]+1, "dual")){ 
 	CTX.mesh.dual = 1; i++;
       }
-      else if(!strcmp(argv[i]+1, "recombine")){
-	CTX.mesh.reco_extrude = 1; i++;
-      }
       else if(!strcmp(argv[i]+1, "samevisual")){ 
 	CTX.same_visual = 1; i++;
       }
@@ -186,17 +183,20 @@ void Get_Options (int argc, char *argv[]) {
 	i++;
 	FACTEUR_MULTIPLICATIF = atof(argv[i]); i++;
       }
+      else if(!strcmp(argv[i]+1, "interactive")){ 
+	CTX.mesh.interactive = 1; i++;
+      }
       else if(!strcmp(argv[i]+1, "scale") ||
 	      !strcmp(argv[i]+1, "scaling")){
 	i++;
 	GLOBALSCALINGFACTOR = atof(argv[i]); i++;
       }
       else if(!strcmp(argv[i]+1, "raw")){ 
-	LISSAGE = 0; i++;
+	CTX.mesh.nb_smoothing = 0; i++;
       }
       else if(!strcmp(argv[i]+1, "smooth")){ 
 	i++;
-	LISSAGE = atoi(argv[i]); i++;
+	CTX.mesh.nb_smoothing = atoi(argv[i]); i++;
       }
       else if(!strcmp(argv[i]+1, "degree")){  
 	i++;
@@ -246,9 +246,9 @@ void Get_Options (int argc, char *argv[]) {
 	i++;
 	if(argv[i]!=NULL){
 	  if(!strcmp(argv[i],"iso"))
-	    CTX.mesh.algo = DELAUNAT_OLDALGO ;
+	    CTX.mesh.algo = DELAUNAY_OLDALGO ;
 	  else if(!strcmp(argv[i],"aniso"))
-	    CTX.mesh.algo = DELAUNAT_NEWALGO ;
+	    CTX.mesh.algo = DELAUNAY_NEWALGO ;
 	  else{
 	    fprintf(stderr, "Error: Unknown mesh algorithm\n");
 	    exit(1);
@@ -354,9 +354,8 @@ void Get_Options (int argc, char *argv[]) {
     }
 
     else {
-      if(NbFileName<MAX_OPEN_FILES){
-	strncpy(TheFileNameTab[NbFileName++], argv[i++], NAME_STR_L); 
-      }
+      if(*nbfiles < MAX_OPEN_FILES)
+	TheFileNameTab[(*nbfiles)++] = argv[i++]; 
       else{
 	fprintf(stderr, "Error: Too many input files\n");
 	exit(1);
@@ -384,16 +383,17 @@ char* ShowVisualClass(int cls){
 /* ------------------------------------------------------------------------ */
 
 int main(int argc, char *argv[]){
-  int     i;
+  int     i, nbf;
   XColor  ov_color_def, ov_color_exact;
-  
+  extern char  *TextBuffer, TextAbout[1024];
+ 
   /* Gmsh default context options */
   
   InitContext(&CTX);
 
   /* Command line options */
 
-  Get_Options(argc, argv);
+  Get_Options(argc, argv, &nbf);
 
   /* Initialize the static Mesh */
 
@@ -422,10 +422,10 @@ int main(int argc, char *argv[]){
     if(yyerrorstate)
       exit(1);
     else{
-      if(NbFileName>1){
-	for(i=1;i<NbFileName;i++) MergeProblem(TheFileNameTab[i]);
+      if(nbf > 1){
+	for(i=1;i<nbf;i++) MergeProblem(TheFileNameTab[i]);
       }
-      if(INITIALBGMESH == ONFILE){
+      if(TheBgmFileName){
 	MergeProblem(TheBgmFileName);
 	if(List_Nbr(Post_ViewList)){
 	  BGMWithView((Post_View*)List_Pointer(Post_ViewList, List_Nbr(Post_ViewList)-1));
@@ -556,7 +556,7 @@ int main(int argc, char *argv[]){
 #endif
 
   if(CTX.overlay){
-    Msg(INFO,"Overlay Visual id=%lx depth=%d screen=%d bits/rgb=%d class=%s\n",
+    Msg(INFO,"Overlay Visual id=%lx depth=%d screen=%d bits/rgb=%d class=%s",
 	XCTX.glo.visinfo->visualid, XCTX.glo.visinfo->depth, 
 	XCTX.glo.visinfo->screen, XCTX.glo.visinfo->bits_per_rgb, 
 #if defined(__cplusplus) || defined(c_plusplus)
@@ -722,8 +722,8 @@ int main(int argc, char *argv[]){
 
   /* Merge all Input Files if any, then init first context (geometry or post) */
 
-  if(NbFileName>1){
-    for(i=1;i<NbFileName;i++) MergeProblem(TheFileNameTab[i]);
+  if(nbf > 1){
+    for(i=1;i<nbf;i++) MergeProblem(TheFileNameTab[i]);
     ActualizeContextCb (NULL,(XtPointer)CONTEXT_POST,NULL); 
   }
   else {
@@ -732,7 +732,7 @@ int main(int argc, char *argv[]){
 
   /* Read background mesh on disk if any */ 
 
-  if(INITIALBGMESH == ONFILE){
+  if(TheBgmFileName){
     MergeProblem(TheBgmFileName);
     if(List_Nbr(Post_ViewList)){
       BGMWithView((Post_View*)List_Pointer(Post_ViewList, List_Nbr(Post_ViewList)-1));
@@ -745,7 +745,7 @@ int main(int argc, char *argv[]){
   }
   
   /* Compute viewport and Draw */
-  EXPOSE = 1;
+  CTX.expose = 1 ;
   Init();
   Draw();
   
diff --git a/Unix/Message.cpp b/Unix/Message.cpp
index 52543d16e9c05dcc8bbefdec9ee6c70eb0897adc..d088829fad25125822db2c9a232860318f83a21a 100644
--- a/Unix/Message.cpp
+++ b/Unix/Message.cpp
@@ -26,11 +26,11 @@ char clargs[]    =
   "  -1, -2, -3            batch 1-, 2- or 3-dimensional mesh\n"
   "  -format msh|unv       mesh format (default: msh)\n"
   "  -algo iso|aniso       mesh algorithm (default: iso)\n"
-  "  -smooth int           mesh smoothing (default: 3)\n"
+  "  -smooth int           mesh smoothing (default: 0)\n"
   "  -degree int           mesh degree (default: 1)\n"
   "  -scale float          scaling factor (default: 1.0)\n"
   "  -bgm file             load backround mesh from file\n"
-  "  -recombine            recombine extruded meshes\n"
+  "  -interactive          display the mesh construction\n"
   "Post Processing options:\n"
   "  -dl                   enable display lists\n"
   "  -noview               hide all views at startup\n"
@@ -104,7 +104,7 @@ void Signal (int sig_num){
 /*  M s g                                                                   */
 /* ------------------------------------------------------------------------ */
 
-extern char      *TextBuffer;
+char *TextBuffer;
 
 #define PUT_IN_COMMAND_WIN						\
   vsprintf(TextBuffer, fmt, args);					\
diff --git a/Unix/Register.cpp b/Unix/Register.cpp
index a4bccb36ddaa6516860d580ea7877cea69c4eeca..7c9756a7ff50a0e00836cbd895b7695a08094c50 100644
--- a/Unix/Register.cpp
+++ b/Unix/Register.cpp
@@ -182,6 +182,7 @@ void RegisterCallbacks_OD(Widgets_T *w){
   register_cancel_cb  (w->OD.meshDialog,         ManageCb,   w->OD.meshDialog); 
   register_valchg_cb  (w->OD.meshAlgoButt[0],    OptionsCb,  OPTIONS_MESH_DEGRE2);
   register_valchg_cb  (w->OD.meshAlgoButt[1],    OptionsCb,  OPTIONS_MESH_ANISOTROPIC);
+  register_valchg_cb  (w->OD.meshAlgoButt[2],    OptionsCb,  OPTIONS_MESH_INTERACTIVE);
   register_valchg_cb  (w->OD.meshSmoothingScale, OptionsCb,  OPTIONS_MESH_SMOOTHING_SCALE);
   register_drag_cb    (w->OD.meshSmoothingScale, OptionsCb,  OPTIONS_MESH_SMOOTHING_SCALE);
   register_activate_cb(w->OD.meshSmoothingText,  OptionsCb,  OPTIONS_MESH_SMOOTHING_TEXT);
diff --git a/Unix/Widgets.cpp b/Unix/Widgets.cpp
index c2614bb008b3f36b67f9e65c9e892ab348129716..c066d44adf54b43fc24e4456dbcd1fbbe534fcb8 100644
--- a/Unix/Widgets.cpp
+++ b/Unix/Widgets.cpp
@@ -954,6 +954,12 @@ void CreateWidgets_OD(Widgets_T *w){
   w->OD.meshAlgoButt[1] = XmCreateToggleButton(w->OD.meshAlgoCheck, "ODmeshAlgoButt1", arg, i);
   XtManageChild(w->OD.meshAlgoButt[1]);
 
+  i=0;
+  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Interactive")); i++;
+  XtSetArg(arg[i], XmNset, CTX.mesh.interactive?True:False); i++;
+  w->OD.meshAlgoButt[2] = XmCreateToggleButton(w->OD.meshAlgoCheck, "ODmeshAlgoButt2", arg, i);
+  XtManageChild(w->OD.meshAlgoButt[2]);
+
   /* Mesh - smoothing */
 
   i=0;
@@ -1703,7 +1709,7 @@ void CreateWidgets_OD(Widgets_T *w){
     HELP DIALOGS
    ------------------------------------------------------------------------ */
 
-extern char TextAbout[1024];
+char TextAbout[1024];
 
 void CreateWidgets_HD(Widgets_T *w){
   int     i;
diff --git a/benchmarks/3d/Cube-01-ExtrMesh.geo b/benchmarks/3d/Cube-01-ExtrMesh.geo
index 167d77eed86f903e6e50e5c8442de606849da0b4..026b0a261bed3c3ffa867cab7b4ea6907262faa1 100644
--- a/benchmarks/3d/Cube-01-ExtrMesh.geo
+++ b/benchmarks/3d/Cube-01-ExtrMesh.geo
@@ -14,6 +14,9 @@ Line Loop(5) = {2,3,4,1};
 Plane Surface(6) = {5};                                          
 Extrude Surface (6, {0,0.0,1})                               
 {                               
-      Layers {{10,5,10},{100,200,300},{.1,.9,1.}};                                  
-} ;                              
+  Layers {{10,5,10},{100,200,300},{.1,.9,1.}};                                  
+  Recombine;
+} ;
+
+
      
diff --git a/demos/ex10.geo b/demos/ex10.geo
index fd65390d5df3d3abc22e6df16bd400ed26f21eba..7237e6b095ed3593e24d7fdc21cda323466138db 100644
--- a/demos/ex10.geo
+++ b/demos/ex10.geo
@@ -105,9 +105,6 @@ Coherence;
 Extrude(31, {0,0,hg} );
 Coherence;
 
-Surface Loop(127) = {60,-27,-43,61,46,49,52,55,58};
-Complex Volume(128) = {127};
-
 Extrude (105, {0,0,hcav-hg} );
 Coherence;
 
@@ -116,12 +113,6 @@ Coherence;
 
 Characteristic Length {58,71} = 0.01; 
 
-Surface Loop(196) = {31,-115,-117,-96,-99,-102,-104,-173,-184,-186,-165,-168,-171,-195};
-Complex Volume(197) = {196};
-
-Surface Loop(198) = {93,-29,-76,104,173,-144,174,-147,-60,-81,-150,-153,-84,-87,-156,-159,-90,162,165,96,99,102,171,168};
-
-Complex Volume(199) = {198};
 
 GO      = 1 ;
 CAV     = 2 ;
@@ -135,5 +126,3 @@ Physical Volume (DIS)    = 197;
 Physical Volume (CLDSRC) = 46;
 Physical Volume (CLD)    = {61,49,27,52,55,58,81,150,147,84,153,87,156,90,159,29,31,174,195};
 
-
-Point(85) = {0.0,0.0,0.0,1.0};